Ответы пользователя по тегу Программирование
  • Как правильней сделать быстрое выкатывание в продакшн?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    конфликты мерджей очень сильно тормозят

    1) Дробите задачи, делайте ветки короткоживущими
    2) Хорошая идея делать ребейз принятых веток
    3) Попробуйте адаптировать под себя git-flow, как альтернатива хорошо себя показывает feature-toggles вместо feature-branches

    Да и бд экспорт/импорт постоянно приходится делать.

    1) Миграции
    2) Старайтесь делать миграции так, что бы они не ломали предыдущие релизы. Ну мол если вам надо добавить колонку, хорошей мыслью будет в первом релизе сделать ее nullable что бы старая версия приложения еще могла работать с новой версией базы, и потом уже следующим релизом добивать этот кусок. Основная идея - желательно что бы две последние версии приложеньки могли работать с последней версией базы данных. Если у вас база нормализована нормально, то проблем с этим быть не должно.

    Если второй пункт соблюдается то вакатка новых релизов будет происходить по такому алгоритму:

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

    При таком сценарии даунтайм будет минимальным.

    вопрос с выкатыванием новых релизов

    Вот вам варианты в порядке сложности и мощности (от простого к сложному).
    - capistrano/capifony
    - ansible/puppet/chief/etc
    - docker + docker-machines + docker-compose

    Ну и да, тесты тесты тесты. Все самое критичное должно быть покрыто хотя бы интеграционными/функциональными тестами. В идеале же вся бизнес логика должна быть покрыта быстрыми юнит тестами и UI/инфраструктура функциональными (читать про пирамиду тестирования).
    Ответ написан
    5 комментариев
  • Сборник примеров по Verilog HDL?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Можете у Texas Instruments понакачать даташитов к каким-нибудь прикольными небольшими железкам (тип там, простенький UART ресивер) и реализовать их.
    Ответ написан
    Комментировать
  • Нормализация БД. Зло или добро?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Все зависит от контекста высказывания (задачи разные бывают). Бросаться в крайности это глупо (только ситхи все возводят в абсолют (с) Оби)

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

    p.s. уточните о чем был проект или скиньте ссылку, любопытно посмотреть на безумца или понять его хотя бы.
    Ответ написан
    Комментировать
  • Правильно ли я понял механизм авторизации?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Да, а приведенный вами код - аутентификация

    p.s. надеюсь вы используете password api для хэширования паролей а не какой-нибудь там md5.
    Ответ написан
  • Зачем использовать несколько Backend языков в одном проекте?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в node.js есть то чего нет в PHP

    Все там есть, просто чуть дольше и меньше решений адаптированных под асинхронную работу. Тот же reactphp может использовать libuv + libev что по сути основа ноды.

    Но Python для чего, он ведь мало отличается от PHP по функционалу?

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

    Так же, если разработчик освоил какой-то еще язык хотя бы на базовом уровне, например познакомился с чудестным миром python, это будет влиять и на то как он пишет код. Скажем в python/node.js более сильно развита парадигма функционального программирования, что в PHP мало кто практикует (хотя с каждым днем все больше).
    Ответ написан
    Комментировать
  • Какой самый быстрый язык программирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    скорость дается за счет:
    - грамотное построение алгоритмов
    - грамотное использование конвееризации процессора (устранение конфликтов по данным в циклах, развертка циклов вручную)
    - грамотное использование векторизации вычислений (SSE, AVX, или же опять же построение циклов таким образом, что бы небыло конфликтов по данным если вы хотите что бы компилятор вам это сам сделал).
    - использование всех доступных ресурсов (например применение GPGPU там где надо быстро посчитать много чего и не требуется высокая точность).
    Ответ написан
    Комментировать
  • Разница между экземпляром класса и классом C#?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    объект есть экземпляр класса (instance).
    Ответ написан
    5 комментариев
  • Что за должность такая, архитектор?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Когда-то, когда ватерфол разработка была в чести, были такие люди как архитекторы. Они проектировани модель предметной области на основе модели предоставляемой им бизнес аналитиками и архитектуру системы в целом, проектировани все это дело через UML и отдавали далее по конвееру девелоперам, которые по этим "чертежам" должны были уже закодить все. Обычно чуваки эти были бородаты и опытны, ибо ошибки на этой стадии могут встать бизнесу в много денег.

    Сейчас, когда Agile методологии и подходы разработки все больше захватывают умы людей, отдельная личность "архитектор" перестала быть необходимой. Все реже мелькает эта должность и скоро совсем их не останется. Теперь эти чуваки стали техлидами или просто девелоперами.
    Ответ написан
    4 комментария
  • Замещение, как основной способ создания собственных элементов объектов, как перефразировать вопрос?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    наследование? виртуальные методы?
    Ответ написан
    Комментировать
  • Переход с C# на C++?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    не закончив изучение шарпа

    Вы про синтаксис? CLR? Или про что?

    В целом большая часть знаний спокойно мигрирует туда-сюда.
    Ответ написан
    1 комментарий
  • Что такое статическое наследование в ООП?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    статическое наследование - наследование статических членов классов.
    Ответ написан
    Комментировать
  • Как оптимальней?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Оптимальнее хранить данные в мэпе и выдавать по ключу.
    Ответ написан
  • Куда податься с ТЗ для разработки MVP (аналоги myheritage.com, geni.com, familyspace.ru)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    денег на разработку нет

    Вы проиграли в этом месте. Если вы делаете проект просто так, идеи ради, выложите где идею на каком стартаб хабе или еще где тусуются всякие предпримчиые люди. А если же денег ради, то тогда идите в банк и получайте кридит, копите и т.д.

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Сколько часов спать и вообще как правильно спать?

    8 часов +- для каждого человека. Есть так же различные способы "оптимизации", типа 36-ти часовых суток, разделения сна и много веселых вещей.

    "золотой середины"

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

    В целом об этом всем довольно много написано. Но на эксепременты и подбор "своего" режима уйдет много времени.
    Ответ написан
    Комментировать
  • Зачем нужны монады?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Ух, просто не выйдет. Грубо говоря это альтернатива null-ам, но не только. Они в принципе обобщают много чего.

    Рекомендую почитать: habrahabr.ru/post/151703 + пробегитесь по комментам. Там и ссылки хорошие дают, и мысли высказывают неплохие.
    Ответ написан
    5 комментариев
  • Как проанализировать код PHP, по каким критериям?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    А в чем смысл подобного сравнения? И да, выбранные вами параметры весьма условны. Время написания уж точно выкиньте, это только ваша скорость и она не дает объективной оценки. Количество кода - так же весьма условная штука. наличие паттернов - они так и так будут, просто реализованы чуть подругому. Это так же не показатель.

    Показателями могут быть, соблюдается ли принцип подстановки барбары лискоу при написании модулей. принцип единой ответственности, принцип инверсии зависимости и т.д. Короче пройтись по SOLID. И стоит думать именно в том контексте, позволяют ли выбранные инструменты писать вам код так, что бы соблюдались эти принципы.

    Есть довольно распространенные практики по сбору метрик кода, оценивающих сложность и качество архитектуры, но они оценивают именно ваш код и плохо будут показывать насколько все плохо. Из инструментов по сбору этих метрик могу выделить только scrutinizer-ci.
    Ответ написан
  • Зачем писать в паттерне "декоратор" название конструктора?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    это не название, вы явно задаете конструктор но у прототипа, что интересно. Зачем - а вот тут не скажу. Сейчас модно вообще пользоваться Object.create.
    Ответ написан
    2 комментария
  • Возможно ли написание игр на Phonegap?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для игр лучше Xamarin, так как есть возможность работать с opengl. (webgl не везде поддерживается, даже учитывая решения типа Crosswalk)

    В целом же смотря какие игры.
    Ответ написан
    Комментировать
  • Как реализовать простой интерпретатор в JavaScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ну мы имеем простенький DSL с довольно простой структурой. Сначала мы должны распарсить строку. Ваш пример можно попробовать распарсить регулярками. Если регулярками сложно - можно попробовать написать посимвольный парсер. Ну и еще неплохой идеей будет воспользоваться генераторами парсеров: pegjs.org

    Из строки собираем детали задачи. Что-то в духе:

    var task = {
        site: 'http://site.ru',
        find: 'selector', // селектор у вас не стандартный, придется парсить и его еще отдельно ..
        result: '' // и описание результата тоже 
    }


    Ну а дальше уже выполнять таску.
    Ответ написан
    Комментировать