• Какая реализация дерева лучше?

    Ninazu
    @Ninazu
    Все зависит от того зачем вам это дерево.
    1. Это Adjacency List, он хорош когда вам нужно часто писать в дерево и редко его читать.
    2. Это Nested Set, он хорош когда вам нужно часто читать дерево и редко в него писать.

    Для того чтоб построить часть дерева по первому варианту вам нужно либо вытаскивать ВСЕ записи из базы, и потом рекурсивно проходится по ним и строить его, либо писать встроенную процедуру для того чтоб рекурсия была на стороне базы данных. Также нужно следить чтоб не возникало циклических зависимостей в айдишниках

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

    Лично я использую первый вариант для дерева комментариев, а второй для меню сайта. Хотя деревья всегда есть смысл кэшировать.
    Ответ написан
    Комментировать
  • Нужно ли учить Symfony, после Laravel?

    @AlexndrNovikov
    Solution Architect in Spiral Scout
    hovdev, ну тут на самом деле в постановке вопроса основной интерес.

    нужно ли знать Symfony для Senior PHP Developer если ты знаешь Laravel ?


    Дело, конечно, барское, как себя ограничивать в знаниях и компетенциях и делать ли это вообще.

    Кто-то останавливается на знании wordpress и wp api, но при этом считает себя senior wordpress developer, потому что может на wp любой сайт сделать в рамках конкретной фирмы.
    Кто-то учит один фреймворк от и до, принимая его практики как единственно верные, и считает себя senior {{ framework_name }} developer. Например, на yii на просторах СНГ таких людей много.
    Кто-то изучает несколько фреймворков, и конкретизации в умениях становится меньше, выбор подходящих инструментов и практик более осознанным и широким
    А в какой-то момент приходит понимание, что фреймворки - это просто инструменты, и можно выбрать и использовать оптимальный для задачи. Или фреймворк на самом деле даже и не нужен, и достаточно взять несколько библиотек, или микрофреймворк. Или просто написать свою библиотеку под задачу.
    А после этого приходит осознание, что в общем-то можно и не быть PHP Developer, а скорее Backend developer, потому что в сферу компетенций на самом деле входят задачи решаемые не фреймворками и PHP, а просто сервером. Где-то нужно на python что-то заскриптовать, где-то на lua модуль для nginx прилепить, где-то оптимизировать узкое место на go - и тд. Решать любые возникающие задачи одним Laravel-ем уже не получится.

    Если посмотреть, например, чем занимаются PHPшные монстры типа Badoo - то там о фреймворках вообще ни слова

    Поэтому,
    нужно ли знать Symfony для Senior PHP Developer
    - конечно не нужно, Сеньором в зависимости от фирмы можно быть даже делая сайты на Bitrix, и получать за это вполне себе хорошие деньги. Но действительно отличный разработчик должен иметь более широкий кругозор, разнообразный инструментарий и - главное - желание знать и уметь больше, чем просто один инструмент.
    Ответ написан
    1 комментарий
  • Какую защиту использовать от спам ботов?

    @egorinsk
    Повторяю способы защиты, выбирайте любой, который нравится:

    Начнем со случая, когад у вас маленький (меньше 100 тыс юников в день/1 млн зарегистрированных юзеров) сайт.

    1) Сделать невидимое поле с именем email. 98% ботов-дебилов его заполнят, дальше вы понимаете, что с ними делать и куда вносить их IP. Чтобы не палиться, не пишите style=display:none, а скройте его чуть хитрее.

    Этот способ у меня отсеивает практически всех ботов на одном сайте. Правда, там боты, не заточенные под сайт, а просто, которые ходят и заполняют все формы подряд своей рекламой. Типа Хрумера наверно.

    2) Заполняемое яваскриптом поле типа hidden. Куча ботов не выполняют яваскрипт. Куки, кстати, наоборот, большинство ботов исправно присылают. Реферер и юзер-агент тоже обычно у них правильный.

    3) Более радикальный подход — убрать кнопку submit, заменив ее на div, который по событию onclick собирает значения полей формы и отправляет их аяксом. Аттрибут action тега form сделать указывающим на скрипт-ловушку. Если бот не написан специально под ваш сайт, он тупо не сможет отправить такую форму.

    Ок, допустим, вам не повезло, и ваш сайт с миллионами пользователей атакуют спамеры специально написанными скриптами. Что мы можем вам предложить?

    4) Добавлять вычисляемые/расшифровываемые яваскриптом поля. Внезапная смена алгоритма шифрования в 2 часа ночи скорее всего сдаст тех ботов, которые смогли через нее пробиться, но не успели переписать алгоритм.

    5) Проверять поддержку клиентом Flash (загружать флешку и через нее подписывать форму кодом).

    6) Проверять соответствие User-Agent и уровня поддержки технологий HTML5/CSS3 (например, определенные версии браузеров не поддерживают border-radius, другие поддерживают, и тд.)

    Более серьезные возможности дают методы статистического анализа. Например, можно вычленять из сообщений несловарные слова (это будут ссылки например) и анализировать источники их отправки. Например, если 1000 пользователей начинает за час отправлять по 100 сообщений не-друзьям с одним и тем же словом super-shop — это явный признак спам-рассылки. Для таких систем надо собирать статистику и писать белые/черные правила, вводить негласные лимиты подозрительных действий, в общем. серьезная работа.

    Можно, как вконтакте, привязывать аккаунты к телефонам. это работает.

    Еще немного рассуждений на эту тему тут: habrahabr.ru/qa/16920/#answer_70019

    А использование капчи в формах говорит о лени/низкой квалификации/урезанном бюджете или непрофессионализме и причиняет неудобства пользователям.
    Ответ написан
    1 комментарий
  • Какое api использовать для получения города по ip?

    littleguga
    @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    3 комментария
  • Переход с постоянки на фриланс, стоит ли игра свеч?

    @McBernar
    У вас скромный рейт. Хотя, возможно, для Чехии это нормально.

    Я работал и работаю на фрилансе уже много лет. И в штате много лет тоже работаю.
    Поэтому могу кое-что сказать.

    Минусы

    1. Все байки про фриланс — правда.

    2. Нужно иметь железную дисциплину, чтобы работать в строго отведенные часы, а в другое время отдыхать. И чтобы вставать вовремя, а не спать до обеда.

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

    4. Очень много мудаков среди клиентов. Со временем научишься их определять с первых же слов в переписке. Но до этого придется некоторое количество раз обжечься.

    5. Клиенты имеют привычку тянуть с оплатой. С предоплатой никаких проблем, а вот чтобы забрать постоплату — частенько нужно задолбать клиента. И это вполне понятно — на фриланс приходят молодые бизнесы, и довольно часто у них бывают кассовые разрывы, дефицит бюджета, смена направление и много чего еще. Из-за этого у тебя у самого уже начинают возникать кассовые разрывы. Вроде, тебе и денег должны прилично, а когда их получишь — хз.

    6. Хорошее описание проекта, хороший продукт сам по себе — на фрилансе этого мало. Повезет, если получится удаленно вписаться в команду, которая делает или большой проект или делает много проектов на потоке. Если же это разовые проекты, то будь готов к задаче вида "ну мне вот сайт нужен с формой, сообщениями и робокассой, а ну вот еще там корзина, да".

    7. Забудь про стабильность. Сегодня ты заработал двойную зарплату, а в следующем месяце процентов 50. Нет никого, кто строго раз в две недели будет тебе перечислять деньги на карту.

    Плюсы

    1. Свобода в выборе задач и проектов. Это прям кайф.

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

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

    4. Есть возможность учиться. Не вечером после работы, днем, когда голова свежая.
    Офис эту возможность сильно ограничивает.

    5. Есть много времени и сил на свои проекты. То, до чего не доходили руки целый год офисной работы, может быть сделано довольно быстро.

    Где работать
    Попробуй везде. И на фл и на апворке есть свои плюсы и минусы.
    Но самые лучшие клиенты — это, конечно, которые приходят напрямую.
    Ответ написан
    3 комментария
  • Переход с постоянки на фриланс, стоит ли игра свеч?

    @artem78
    Смотрите только в сторону зарубежных бирж - upwork, guru.com, freelancer.com, а наши выбросьте из головы.
    Ответ написан
    6 комментариев