Ответы пользователя по тегу PHP
  • Самый быстрый алгоритм определения страны по номеру телефона

    @kmike
    Вариант со словарем — хороший. Можно попробовать выжать еще крохи: не делать несколько запросов в хэш-таблицу (причем, скорее всего, в цикле на питоне) для определения кодов стран, а вместо этого мэппинг «код страны» -> «страна» хранить в Trie (или DAWG).

    В github.com/kmike/datrie есть метод longest_prefix_item, которым можно получить самый длинный префикс данного номера и соответствующий ему объект. Записываем в datrie.Trie мэппинг «префикс-страна», вызываем longest_prefix_item и готово.

    Вполне может оказаться быстрее (главным образом за счет того, что итерация будет вынесена в C-расширение и не нужно будет создавать копии строк длины 1, 2, 3 и тд). Гарантировать, что будет быстрее, не могу, но, в любом случае, с Trie из питона должно как минимум 1млн номеров/сек получаться.
    Ответ написан
    Комментировать
  • Как работает memcache?

    @kmike
    memcached — простая штука: это словарь (примерно как array в php или dict в python) ограниченного объема, висящий в памяти отдельным процессом с несложным протоколом доступа, который могут использовать другие процессы.

    Если в него записать суммарно больше, чем выставленное ограничение на размер, то старые данные (которые дольше всех не использовались) затрутся.

    Думайте об этом примерно как $a['vasia'] = 'petya', но как будто данные в переменной $a сохраняются между вызовами, доступны не только конкретному скрипту + сохранность этих данные не гарантирована.

    По поводу ограничений на размер значений стоит почитать тут.

    Вы на данном этапе хотите записывать десятки тысяч больших объектов (кстати, не понял, каких объектов — то это 6М текста, то что-то про youtube) в оперативную память, чтобы обеспечивать быстрый доступ к ним. Не знаю, та ли это задача, которую хотите решить. Тут потребуется перекомпиляция memcached и большое количество оперативной памяти.
    Ответ написан
    Комментировать
  • Где бы найти преподавателя по PHP?

    @kmike
    В программировании все меняется очень быстро, и если нет навыка самостоятельно разбираться в технологиях, в специальности делать просто нечего, т.к. знания будут устаревать влет. А получить такой навык можно одним способом — самостоятельно в этих технологиях разбираться. Не бегая на форум по каждому вопросу, кстати.

    Поэтому учиться лучше самому. Причем, что самое важное, учиться учиться.
    Ответ написан
    9 комментариев
  • Куда идти после php? Ruby или Python?

    @kmike
    Учите питон.

    Он сделает Вас более хорошим программистом, т.к. python

    a) не приветствует трюкачество
    b) учит принимать самые простые (KISS) решения, не усложнять ничего

    образовательный аспект в python очень явно выражен — всегда есть 1 правильный способ сделать что-то. Очень полезная «промывка мозгов» получается, не встречал такого ни в одном другом языке. Учишься смотреть на код «свысока», думаешь больше о том, как его организовать, а не как его написать. После питона на других языках начинаешь писать лучше, т.к. в голове остаются полезные идеи и принципы.

    Ruby несколько «мощнее» как язык, дает больше свободы, позволяет делать больше разных трюков и не имеет такой выраженной идеологии. Мне кажется, что выучить ruby тоже полезно и практично, это хороший язык, но python учить полезнее из-за того, что он учит правильным вещам (например, избегать трюков всеми силами).

    Еще вариант — выучить javascript. Именно хорошо выучить, чтобы понимать все ФП-фишки языка и его нестандартную объектную модель. Гуру js мало, толпы умеют сделать свистелку на jQuery и не более того. С хорошим знанием js можно довольно просто писать всякие супер-быстрые асинхронные realtime-штуки на node.js. По «мощности» язык вполне адекватен Ruby и Python'у, разве что имеет несколько менее приятный синтаксис и меньше библиотек для серверной части.

    Библиотек и для python, и для ruby полно. Imho их больше, чем для php, и способы распространения у них лучше. В питоне есть стандартная библиотека на все случаи жизни с кучей полезностей. Коммьюнити очень разное — в ruby-коммьюнити вы увидите красивые сайты, рекламирующие те или иные библиотеки, кучу эпитетов awesome, каждый второй будет rock-star-programmer и тд, в python-коммьюнити вы увидите, скорее всего, скучноватых суровых инженеров. Я, понятное дело, преувеличиваю)

    Области применения у языков похожие, скорость похожая, возможности похожие. Основной критерий тут — нравится/не нравится.
    Ответ написан
    9 комментариев