Задать вопрос
  • Какой вариант логики запросов правилен?

    @egorinsk
    Только второй вариант. Не слушайте теоретиков. MySQL все эти джойны и аггрегацию никак не соптимизирует.
    Ответ написан
  • Где взять список домов на улице/в городе?

    @egorinsk
    В России есть официальный КЛАДР, может у вас что-то аналогичное есть?
    Ответ написан
    Комментировать
  • Стоит ли планировать поддержку игры для других платформ?

    @egorinsk
    1) Посчитать процент платежеспособных пользователей под другими платформами.
    2) Прикинуть затраты времени и средств на кроссплатформенность
    3) Сделать вывод.

    По мне, так не стоит.

    Если аудитория офисная, поддержка старого хлама в 100 раз важнее маков (которых не так и много) и линуксов (которым вообще никто не пользуется в масштабах страны). вот если вы в будущем захотите портировать на айфон — вот тут вам надо думать в сторону OpenGL, а если нет, то и не надо.
    Ответ написан
    1 комментарий
  • Как показать див встплываеющий как меню в диве с overflow:hidden?

    @egorinsk
    Убрать overflow:hidden. Назначение этого свойства — скрывать вылезающие за пределы дива (кроме AP в некоторых случаях) элементы. Почему-то некоторые особо криворукие товарищи пытаются лечить им баги своей кривой верстки, что неправильно.
    Ответ написан
    2 комментария
  • Какой User-Agent у бота вконтакте?

    @egorinsk
    У вас кривая система авторизации — вам ее исправлять надо, а не ботов различать. Например, как быстрое решение, вместо принудительного редиректа можно в ифрейме показывать форму авторизации.
    Ответ написан
    1 комментарий
  • Как писать данные из триггера Oracle в memcache?

    @egorinsk
    Разве не логичнее делать это в коде приложения?

    Хотя, я чувствую, у вас там и так нескучный код.
    Ответ написан
    1 комментарий
  • Как изучить программирование с нуля?

    @egorinsk
    Самая лучшая, подробная и полная книга (я бы сказал, энциклопедия) про программирование — это, несомненно, «искусство программирования для ЭВМ» Дональда Кнута. Не знаю ни одной более качественной и тщательной работы.

    Хотя, у меня все никак не найдется времени ее прочитат хотя бы по диагонали.
    Ответ написан
    1 комментарий
  • Существует ли уголовная ответственность программиста в случае гибели людей изза ошибки в коде?

    @egorinsk
    Нет.

    Потому современные программисты на редкость ленивы, безответственны и пишут глючащий, ненадежный, тяжелый, неэффективный, некачественный код. Особенно хорошо это удается у программистов на нестрогих и динамических языках (PHP, Javascript, Ruby).

    Увидеть, что код такой, как я написал, можно посмотрев исходники почти любого сайта или приложения.
    Ответ написан
    Комментировать
  • Стоит ли открыть исходный код ORM для PHP?

    @egorinsk
    Сам по себе ORM — банальная ничем не примечательная хрень. Это уже много раз делали в других фреймворках (например, RoR, Java) и описано в книгах про паттерны. Берешь, делаешь как в Руби и пользуешься хоть до посинения.

    Пример с User::create() неудачный: у реальных объектов бывает по 20 свойств и фукнция с 20 аргументами будет выглядеть дико. Функции с подчеркиванием в начале — уродливые. Передавать __CLASS__ и подобные магические методы тоже не очень как-то.

    Один из сложных моментов в проектировании ORM — оптимальная организация взаимодействия с хранилищем. Например, этот ваш пример:

    > foreach(UsersGroup::getPremiumMembers()->orderBy('registration_date')->limit(10) as $user){
    > echo $user->getCountry()->getCurrency()->getCode()."
    ";

    Сколько запросов сгенерирует при использовании SQL-хранилища? По идее, должно быть в районе 3-4, причем данные справочников еще бы и стоило кешировать (ибо валюты у стран меняются очень редко) и обойтись 1-2 запросами. Если у вас в цикле для каждого юзера делается запрос — хлам это, а не ORM.

    Второй момент — оверхед. Вы когда-нибудь считали, какая разница по времени выполнения запроса через ваш ORM и через mysqli_query() (включая время на загрузку и инициализацию классов ORM)? Посчитайте, наверняка у вас после этого вообще пропадет желание использовать ORMы.

    Третий момент — масштабирование. Можно ли, к примеру, сделав огромный сайт на вашем ORM, не переписывая кода, реализовать расшардивание базы на 100 серверов (чтобы справиться с нагрузкой). Можно ли на нем делать проекты уровня хотя бы игр для соцсетей или вконтакта?

    Если у вас есть решение хотя бы некоторых из описанных 3 проблем проектирования ORM, ваша статья на тему архитектурных решений и программистских хитростей была бы крайне интересна. Если нет решения — то такой орм любой школьник может сделать, как я уже сказал, прочтя мануал к рубионрейлс.
    Ответ написан
    3 комментария
  • Где можно глянуть классификации GUI-Элементов?

    @egorinsk
    Может Apple Human Interface Guidelines?
    Ответ написан
    Комментировать
  • Какие существуют методы защиты от спам регистраций?

    @egorinsk
    Способы, не мешающие пользователю: анализ IP запроса, проверка по черным спискам (регистарции с анонимных прокси и тора — блокируем, из стран типа Китая или IP датацентров — пропускаем, но помечаем как подозрительные). Особо стоит обратить внимание на мобильные IP и IP Оперы из Норвегии — их банить как раз не надо.

    Проверка поддержки JS и Flash на клиенте (если нет, скорее всего это бот).

    Анализ связей между аккаунтами (вход в разные аккаунты с одного IP с одной и той же кукой, или в похожее время например). Анализ числа регистраций во времени. Анализ поеведения пользователя после регистрации.

    Ботов также хорошо ловить на заполнении полей-ловушек.

    Надо понимать также, что боты бывают разные, есть такие, которые тупо ходят по всем сайтам и отправляют все найденные на них формы (эти отсекаются легко), а бывают специально разработанные под ваш сайт лучшими представителями темных шляп, с ними сложнее.

    Предложенные же вами способы либо бесполезны, либо мешают пользователю, но легко обходятся спамерами, либо вообще представляют собой эпический бред (про цифры в имени).

    А вообще, начните с вопроса, чем грозят вашему проекту «левые» регистрации. Почему их делают. Может, у вас требуется вход на сайт там, где можно обойтись без этого? Комментарии вполне можно оставлять без регистрации.

    Если вы делает систему управления блогом и боитесь спам-ссылок, сделайте систему репутации: непроверенный пользователь не может оставлять ссылки, прверенный (активно комментирующий или одобренный автором блога — может). Проверяйте домены ссылок по базам типа akismet.

    Если проект — соцсеть и вы боитесь массовой регистрации для спама, все гораздо хуже. Проекту уровня вконтакте реально помогла только привязка к телефонам, все остальные способы спамеры легко обходили. Впрочем, можно бороться со спамом, введя систему репутации, а также ограничивая взаимодействие между пользщователями-не-друзьями.
    Ответ написан
  • Как защитить Air-приложение от подмены API сервера?

    @egorinsk
    В чем тогда ценность вашего сервера (и нафиг он вообще нужен), если перехватывая трафик, можно легко сделать аналогичный?

    Способ примитивной проверки — использовать https и проверять отпечатки и путь сертифката, но даже в этом случае клиента можно декомпилировать и убрать проверку.
    Ответ написан
    Комментировать
  • Хочу попробовать себя в GameDev, куда податься?

    @egorinsk
    1) Перл сразу закапывайте.
    2) Java/C++ — это отличный язык для написания серверных компонент онлайн-игр. Но вот где найти, чтобы игра была еще и Open Source — загадка.

    Опенсурсные игры трудно развивать, так как нужны большие затраты труда: графика, дизайн уровней, сценарии, скриптование, движок, надо долго отлаживать код и подстраивать баланс игры — нелегко найти нужное число людей с такими способностями и большим количеством свободного времени.

    Если вы хотите в первую очередь развить навыки программирования игр, вам надо идти не в опенсурс, а в коммерческую компанию, которая ими занимается. Востребованы как опытные специалисты, так и неопытные, если они не боятся и не ленятся изучать новое. Часто эта работа и оплачивается неплохо.
    Ответ написан
    2 комментария
  • Как перевести комментарии в *.php файлах ?

    @egorinsk
    Хороший повод выучить китайский, не?
    Ответ написан
    Комментировать
  • Список (база) улиц Москвы и других крупных городов

    @egorinsk
    Есть официальный список под названием КЛАДР, выпускается госструктурами, скачивается бесплатно, БД в формате FoxPro (допотопная досовская СУБД) открывается либо OpenOffice, либо в PHP через какое-то расширение, которого нет под Windows и котрое надо руками компилировать.
    Ответ написан
    Комментировать
  • Стоит ли ставить на ПК Mac OS в качестве основной системы?

    @egorinsk
    Хакинтош — он как Линукс, то есть тормозит в произвольную минуту, дает пользователю радость поиска правильных драйверов (если они существуют) и ручного колдовства с консолью. Также, приходится скачивать непонятные программы типа flash, skype и менее известные, потому что многих функций из коробки не установлено. Сторонние программы часто плохо вписываются в среду МакОСи и ведут себя чужеродно. И неизвестно, сколько троянов прячется в этих программах.

    Также, у меня выход в интернет привязан к MAC-адресу, и через GUI его задать нельзя, приходится при каждой загрузке в консоли писать команды.

    У меня, например, на хорошем ноутбуке с интеловской видеокартой она работает без ускорения, то есть анимации неидеальны, видео в половине программ не воспроизводится, avi/mkv не воспроизводится. Mplayer не играет видео. Те видео, которые воспроизводятся, делают это немгновенно: несколько секунд приходится ждать запуска плеера QuickTime (в то время как в уиндоуз Mplayer стартует мгновенно).

    Также. в МакОСи почему-то 2 плеера: QuickTime и Quick Time 7. Так и не понял, в чем разница.

    В общем, намучаетесь вы… стоят ли прилизанные иконки того? Не лучше ли поставить старую добрую проверенную временем уиндоуз XP?
    Ответ написан
    1 комментарий
  • Как узнать текущий статус криптографических алгоритмов?

    @egorinsk
    Сделать «стартап», как сейчас можно говорить, отображающий на главной странице статус криптографических алгоритмов.
    Ответ написан
  • 2 блока с одинаковым line-height и разным font-size. У меньшего font-size появляется отступ сверху. Откуда?

    @egorinsk
    Хоть это уже 2 раза написали, напишу в третий. Всегда, когда вы пишете display: inline-block, добавляйте строчку vertical-align.
    Ответ написан
    Комментировать
  • Какой телефон выбрать?

    @egorinsk
    Говорят, айфон хороший телефон, хоть и без клавиатуры
    Ответ написан
  • Как лучше хранить данные в БД?

    @egorinsk
    Вариант 2 — если вам надо часто добавлять поля, то учтите, что добавление поля — это фактически создание второй копии таблицы (т.е. долго). Также, при большом числе полей растет объем таблицы, ухудшается время доступа.

    Что касается вариата 1, рассмотрите также вариант выбирать записи без JOIN, а 2 запросами — MySQL на джойнах может неэффективно работать (к сожалению, точнее сказать не могу, это надо проверять на практике).

    Я бы лично сделал вариант 1, но с кешированием в каком нибудь key-value storage.
    Ответ написан