• Как использовать Doctrine вне Symfony?

    padlyuck
    @padlyuck
    Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode, null, null, false);
    для доктрины до версии 3.0(в третьей версии вроде бы сделают по нормальному). Скорее всего проблема в том, что в проекте на Symfony вы в аннотациях пишете что-то вроде @ORM\Entity, а для этого чистой доктрине нужно подсунуть нормальны AnnotationReader, а не Simple который по дефолту создается.
    Ответ написан
    1 комментарий
  • Как пиринговые сети побмениваются данными?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    уж про биткоин-то можно было найти, или про торрент

    все узлы передают ип и инфу друг другу (синхронизуются) через самый первый, самый первый (их несколько) - вшит в клиент
    Ответ написан
    Комментировать
  • Как сравнить два текста в JS?

    @davidnum95
    Вот есть еще такая библиотека fuzzy-search
    Ответ написан
    Комментировать
  • Как сравнить два текста в JS?

    Young_khv
    @Young_khv
    ASP.NET Developer
    Можно попробовать парсить фразы на слова, сортировать в одном направлении, слить результат обратно в одну строку, затем вычислять расстояние Левеншейна и его уже сравнивать с каким-то пороговым значением
    Ответ написан
    Комментировать
  • Как сравнить два текста в JS?

    @RidgeA
    вот есть пакет для анализа натуральных языков
    https://www.npmjs.com/package/natural
    В т. ч. там есть ряд функция для анализа схожести строк (то же расстояние Левенштейна и другие). Надо подбирать что лучше подходит, возможно комбинация разных метрик.
    Ответ написан
    Комментировать
  • Как получить информацию по ID из другой таблицы в одном запросе?

    @chronic86
    Ruby on Rails junior
    Select p.id, p.title,b.name
    From products p
    Join buyers b ON p.buyer_id = b.id
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    @SV999Z
    По религиозным причинам, так же, как и С++.
    Считайте, что это пункты ТЗ, сформулированного не вами, а вы - тупой наёмник, инструмент. Спустят требования - будете использовать и материться через строчку, это да.
    Ответ написан
    Комментировать
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    @Pafnutyi
    Хуже ООП-а может быть только ООП < : o)
    Самый главный недостаток такой методики, не в том что у него много кода, а в том что нутро такой программы вывернуто с ног наголову. Приходится привлекать специально обученных хУру чтобы они придумали особенный способ описания боли (архитектура/объектная модель/фреймворк/свой термин) и избавили обезьянок от черезмерных страданий.

    Когда поймёте как запихнуть придумку своей программы в это прокурустово ложе, тогда может быть сможете худо бедно использовать методологию ООП. А лучше всего с ООП поможет разобраться ... функциональное программирование, именно разобраться, писать на нём вам не позволит костлявая рука рынка - сдохните с голоду ;) После "просветления" вы будете страдать и есть кактус дальше - добро пожаловать в чудесный мир :D почитать 1 почитать 2

    //Типо ООП
    $user->delete; // пользователь сам себя убивает - где здравый смысл ???

    //Типо функция процедурная
    delete($user); // функция убийства выполняет операцию над пользователем - уже логичнее

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

    PS. В функциональном программировании, библиотеки и фреймворки народ в свои программки цепляет по каждому чиху легко и без сомнений, а причина одна - в них очень просто разобраться и использовать абсолютно не задумываясь как они устроенны, вопросов изучения сложности просто не возникает.
    Ответ написан
    4 комментария
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я понимаю, о чем вы пишите и почему. Ваш код работает, т.к. решает поставленные задачи и удовлетворяет потребности ваших клиентов. Имеет ли он право на жизнь? Да, но только в вашем отдельно взятом случае.

    Дело в том, что ваш код не гибок, в нем отсутствует масштабируемость, его невозможно поддерживать.

    Что если вам потребуется сделать блог, в котором нужно иметь комментарии, которые обновляются в режиме реального времени? И комментарии могут содержать HTML, но такой, чтобы ваш сайт не могли взломать?
    А еще комментарии короче 2000 символов по воскресеньям платные. Оплата через Яндекс.Деньги.
    Вы все это делаете, все работает.
    Затем заказчик вам говорит, я хочу запустить такую же систему другу, но с оплатой по понедельникам через WebMoney.
    Вы копируете сайт, переписываете функцию оплаты.
    Дальше ваш заказчик видит, что у друга больше денег, он просит добавить WebMoney к себе.
    Вы опять переписываете код. Добавляете условия.
    Потом к вам приходит друг заказчика и хочет другое оформление. Вы переписываете его функции.
    Затем он просит добавить поиск по названиям записей к себе на сайт. Вы делаете. Буквально на следующий день к вам приходит заказчик и тоже просит поиск, но не только по названиями, но и по телу статей и по комментариям. Вы делаете.
    Затем ваш заказчик видит, что дела у него идут в гору и он просит отменить платные комментарии и сделать просто платные аккаунты для всех. Вы переписываете.
    Тем временем друг просит вас сделать все тоже самое, но с его оформлением.
    Дела у заказчика идут в гору и сайт начинает тормозить. Вы делаете кэширование.
    Внезапно сайт заказчика попадает в топ и нагрузка резко увеличиваете настолько, что один сервер уже не справляется. Вы переносите все на самый мощный, но он его тоже мало.
    Нужно делать горизонтальное масштабирование.
    Для этого нужно переписать все функции, которые работают с базой данных. А их уже больше двухсот. И просто замена не подходит.
    Сайт открывается через раз, заказчик звонит вам каждые 2 часа и спрашивает, как там прогресс.
    И тут вам присылает письмо друг заказчика и говорит, что хочет перейти с MySQL на PostgreSQL.
    И вы понимаете, что вам надо будет переписать еще 300 функций, но на другом сайте. Вы его посылаете, поскольку вы и так в мыле.
    Друг жалуется на вас заказчику. Заказчик, не ставя вас в известность, нанимает другого исполнителя, у которого отваливается челюсть от того, что творится в системе. Он объясняет, что ему нужно будет потратить полгода, чтобы вникнуть в то, чтобы понять ваш код, но он может сделать все тоже самое за 4 месяца, причем для заказчика и его друга так, что это будет расширяемо и поддерживаемо не только им.
    Тем временем, спустя двое суток жизни на кофеине вы героически переписываете все функции заказчика и идете отсыпаться. После суток сна вы обнаруживаете на автоответчике сообщение, что вы уволены. А все потому, что забыли проверить функцию логина.

    А теперь разберем эту историю по частям. Почему же вас уволили?

    Незнание абстракций и шаблонов проектирования привело к тому, что вы вынуждены были поддерживать 2 разных проекта с практически одинаковой логикой.
    Например ORM смог вам помочь поддерживать 2 разные базы данных без каких-либо усилий. Сменить одну базу на другую стоило бы исправления конфигурации, а не переписывания 300 функций.
    Использование фреймворков позволило бы сократить время на реализацию подключений платежных систем. Многие из них имеют готовые реализации.
    Опять же в современных фреймворках, например в той же Doctrine реализован шардинг. В большинстве случаев ваши проблемы свелись к изменению настроек.
    Но даже если бы вы накосячили, то интеграционные тесты не позволили бы попасть говну в продакшен. А если бы оно и попало, ну накосячили вы с тестами тоже, то проблема была бы обнаружена на раннем этапе благодаря "сине-зеленому" развертыванию и она бы не затронула всех пользователей.
    И да, ваш код не прошел внешний аудит.

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

    Когда пишете свой код, почаще задавайте себе вопрос: А если бы это был код для моего кардиостимулятора? Это поможет.
    Это вам для общего развития.
    Ответ написан
    5 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    @huwesu
    Зачем тратят тучу часов на создание классов для функций, которые легко понятны и описываются 1-2 строками. Зачем подключают к проекту мастодонтов не используя и половины их функций. Как и зачем используют движки для сайтов под уникальные сервисы, это же дикий геморрой когда нужно кроме написания приложения ещё и понять как его присоединить к чужому коду (аля сервисы на dle,wordpress и т.д).


    1. Если ты этого не понимаешь - значит ты не имел дело с действительно серьезными системами. Так как "написать 1-2 строчки для замены мастодонта" - это что то уж совсем примитивное делать.

    2. Возможно, они действительно используют мастодонтов там где не надо. Компьютерное железо нынче недорого. Почему бы и не переложить на него свою работу.

    3. Быть ПРО это не значит НЕ ИСПОЛЬЗОВАТЬ или ИСПОЛЬЗОВАТЬ "мастодонтов". А быть ПРО - это значит правильно выбирать инструмент под конкретную задачу. Где то правильным будет выбор мастодонта. Где то - написать две строчки с нуля.

    а то я очень комплексую, что просто быстро пишу работающий код, а все вокруг говорят о чём-то мне совершенно чуждом..


    Пока вы пишете "одноразовые" вещи - это не страшно.
    Как только перейдете к проектам сложным - там уже так делать будет неверным. Такой подход в сложных проектах затрудняет существенно и вам модификацию/развитие и работу коллегам.
    Ответ написан
    9 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

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

    Поэтому: максимально исключается написание с нуля, используются свои и чужие наработки, отлаженные куски кода, библиотеки классов, фреймворки, готовые движки, ошибки отлавливаются прогоном тестов (а не руками)... и т.д., и.т.д.
    Ответ написан
    6 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    @shaqster
    Symfony3 Guru
    Плохо ли создавать проекты с нуля?

    За такое нужно прибивать достоинством к дереву и выставлять на публичный позор
    Ответ написан
    6 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    И вот никак не могу понять, зачем писать ООП классы для, например, изменения группы пользователя, когда это делается 1 строчкой?


    Пишутся не классы. Пишутся объекты. И объект пишется не под изменение какого-либо свойства. Объект описывает пользователя всевозможными свойствами и методами. И в эту обёртку помещается метод изменения группы конкретного пользователя.


    //Типо ООП
    $user->delete;
    //Типо функция процедурная
    delete($user);
    //Один хрен же, нет?


    Так то оно один хрен, да только не один. Абстрактный пример.
    У вас, кроме $user, есть еще $group, $catalogue, $order и еще с десяток объектов, с которые вам нужно будет работать. Теперь представим, что вам нужно будет удалить объекты. В ооп стиле вам нужно будет просто вызвать метод ->delete для каждого объекта. А в процедурном вы будете писать 10 функций delete с разными названиями? Или одна, но внутри вы будете писать 10 проверок, что бы понять, какие данные к вам пришли и как их правильно обработать. А если таких объектов будет 100?

    В ооп есть свои + и -. И ни в коем случае ООП не является панацеей ото всех бед. Где-то процедурный стиль выиграет, где-то ооп. Как мне кажется, профессионал обязан понимать, когда и зачем использовать ту или иную технику или инструмент.

    UPD
    нужно проводить тесты над кодом

    И вы, вероятно, путаете понятия "тестировщик" и TDD
    Ответ написан
    7 комментариев
  • Как перекрёстно сгрупировать выдачу через GROUP BY в MYSQL?

    NikitaTratorov
    @NikitaTratorov
    CTO
    Вы хотите невозможного. Думаю, что у Вас проблема в алгоритме или логике, поэтому и задача возникла. Подумайте еще.
    Что касается Вашего запроса, то подобная группировка уже не сработает на MySQL 5.7 из-за более строгих правил sql_mode.
    Вам никак не получить строку, которую Вы нарисовали, потому что text = Хорошо) написал не 3, а 1.
    Но уж если ооочень хочется, то переложите желаемую группировку на приложение, вычисляя, с кем разговаривал 1. Отстаньте от БД - сэкономите свое время и ресурсы СУБД.
    Или, я уже говорил - меняйте логику.
    Ответ написан
    Комментировать
  • Есть ли внешний надёжный хостинг для хранения избражений?

    Amazon Web Services: S3, CloudFront.
    Ответ написан
    Комментировать
  • Apache не может найти страницу, что делать?

    Immortal_pony
    @Immortal_pony
    Я уверен, что вы идете неправильным путем, так urlencode был придуман именно для того, чтобы не возникало подобных коллизий, но все же попробую помочь.
    В .htaccess или в настройках vurtual host'а добавьте:
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    ... это перенаправит все запросы на index.php.
    Ну и в самом index.php уже анализируйте переменную $_SERVER['REQUEST_URI'] и указывайте, какой файл подключать/отдавать.
    Ответ написан
    Комментировать
  • Как изменить статус VK группы?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вам нужен ключ доступа сообщества: https://vk.com/dev/authcode_flow_group Проходите все шаги постепенно, особо ничего сложного нет, нужно просто знать специфигу контактного API.
    Ответ написан
    3 комментария
  • Как редактировать изображение через PHP?

    @LiguidCool
    ImageMagick
    Ответ написан
    Комментировать
  • Как редактировать изображение через PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Как преобразовать параметры из адресной строки (GET)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Включить на апаче мод_реврайт (если не включен)
    2) Настроить хтаксесс на чпу
    3) Настроить единую точку входа, если до сих пор не настроена, а не **аться с test.php и прочими извращениями.
    Ответ написан
    Комментировать