Ответы пользователя по тегу PHP
  • Где и как искать разработчиков в Астане?

    dali
    @dali
    Я в июне (или в конце мая) ходил в Евразийский на ярмарку вакансий. В общем и целом, все очень плохо. Мимо меня прошло человек 200, я просмотрел резюме 30-40, поговорил с 8-10 примерно. Двух девочек можно было взять на аналитиков, только из-за их мозгов, пришлось бы учить самим. Одного парня на джуниора. Все. Так что и вырастить сейчас проблематично.
    Ответ написан
    2 комментария
  • Полнотекстовый поиск

    dali
    @dali
    Если говорить про Sphinx, то ему в качестве источника данных нужна БД (чтобы он с помощью sql вытащил данные) или xml (xml-pipes). То есть перед тем, как настраивать сфинкс, вам надо будет все ваши документы или записать в БД, или переконвертировать в xml. Тут можно несколько вариантов решения придумать, смотря что вам надо. Предположим, вам не нужен полнотекстовый поиск по документам, вы можете каждому документу назначить ключевые слова, тогда в xml вы можете записать ключевые слова и название документа, поиск осуществляется по ключевым словам, выдается документ. Ну или полностью вытаскивать текст из документов, ложить в БД (придумав структуру перед этим), осуществлять полнотекстовый поиск.
    Про объемы: 100-150 ГБ это конечно много, хотя возможно, когда вы вытащите текст из документов, объем подсократится, но не факт. Но учтите, что Sphinx строит индексы, а они займут минимум раза в три больше места. Поэтому диска нужно будет минимум террабайт и по возможности побыстрее.
    По железу: у меня есть поиск по 1ГБ таблице спокойно(и очень шустро) работает на 512 метрах оперативы на 1 ядре на хостинге под дебианом 5.5. Индексер можно ограничить потребление памяти, тогда он будет индексировать медленней. Но можно настроить, чтобы индексировал только то, что надо.

    А способов реализации много, но все зависит от того, что вам надо на выходе получить, как искать и что.
    Ответ написан
    2 комментария
  • Как реализовать защиту от многократного голосования?

    dali
    @dali
    Вообще говоря, никак.
    1. Лайки с соц сетей. Да, потом можно ручками или скриптом найти и удалить дубликаты, но если очень захочется будут создавать фейковые аккаунты, которые отличить сможет только человек, да и то не факт.
    2. Куки чистятся, ip часто за одним ip может сидеть офис или общежитие с 2000 студентов.
    3. Можно сделать ввод почты, но тоже если очень хочется, будут создавать сотни нормальных с виду почтовых адресов.
    4. Можно анализировать голосование, смотреть откуда берутся пики, пытаться анализировать траффик.

    Но если человек захочет, он будет с рандомной частотой голосовать за своего кандидата меняя ip, очищая куки или создавая фейковые электронные адреса/акаунты в соц сетях.
    Ответ написан
    2 комментария
  • Как вносить изменения в базу последовательно, т.е. выстраивать в очередь в определенном моменте?

    dali
    @dali
    эм. вы что делаете SELECT rating FROM users WHERE userid = :id, потом делаете rating++, потом делаете UPDATE users SET rating=:rating WHERE userid=:id? Во-первых, вы можете просто делать UPDATE users SET rating=rating+1 WHERE userid=:userid. Во-вторых, можете выстроить очередь. При изменении рейтинга в очередь ложить действие (+ или -), :userid, потом обработчик очереди сам сделает + или — над рейтингом очереди, но тогда пользователь не увидит мгновенного изменения рейтинга. В-третьих можно рейтинги пользователей держать в кэше, делать +- в кэше, показывать из кэша, а кэш синхронизировать с базой несколько раз в день или по какому-нибудь событию.
    Ответ написан
    1 комментарий
  • Пару вопров к ZCE?

    dali
    @dali
    1. см 1 коммент
    2. см 1 коммент
    3. сдал 19.08, сертификат пришел 13.09
    4. см 1 коммент

    я давал удостоверение личности и права.
    Ответ написан
    Комментировать
  • Организация внутреннего API

    dali
    @dali
    если смотреть с точки зрения SOA service oriented architecture, то все модули должны общаться между собой с помощью API.
    То есть, ответ на первый вопрос: «В принципе, это нормальное решение. Можете написать модуль работы с БД, и для начала пусть с ним работает asterisk. Потом вы можете вдохновиться идеями SOA, и полностью все модули так переделаете».
    По второму можно много чего насоветовать. Делайте RESTfull интерфейсы, самое простое по-моему для начала
    Ответ написан
    1 комментарий
  • SimpleXML, пространства имён и атрибуты тегов?

    dali
    @dali
    получить этот тег в $tag, затем попробовать так:

    $attr = $tag->attributes("lj", 1);
    $dc = $attr["dateCreated"];
    
    Ответ написан
    2 комментария
  • File_get_contents не получает страницу полностью?

    dali
    @dali
    не мучайтесь с file_get_contents, используйте cURL для получения страницы, у меня он даже быстрее отрабатывает чем file_get_contents. Перешел на cURL после ошибок вида PHP Warning: file_get_contents('...'): failed to open stream: Connection timed out in /var/www/…
    Ответ написан
    1 комментарий
  • события для данных в базе, какие есть способы?

    dali
    @dali
    как часто обновляется таблица с заданиями? после каждого обновления можно запускать php скрипт, который будет брать время заданий, отнимать 5 минут, писать в crontab задачи: время выполнения, послать на почту уведомление о задании. Если к кронтабу доступ не хотите давать, можно записывать в sh файл, а его подключить к крону.
    Это если сразу так навскидку. Сейчас еще подумаю )
    Ответ написан
    2 комментария
  • Ищу книгу Профессиональное программирование на PHP, Джорджа Шлосснейгла

    dali
    @dali
    Мне эта книга оказалась полезной только на начальном этапе моего программистского опыта. В дальнейшем больше пригодились «PHP 5. Профессиональное программирование» Э. Гутманс, Баккен С., Ретанс Д. и «PHP: объекты, шаблоны и методики программирования» Мэтт Зандстра
    Ответ написан
    8 комментариев