• Такая архитектура это нормально?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Разве не логичнее сразу, из первого приложения добавлять сообщение в rabbitmq


    Да, это логично. Но сохранение в БД я бы также оставил по простой причине - консистентность. А то на больших объемах кролик может терять данные + иногда есть необходимость повторной обработки (CQRS/Event Sourcing)
    Ответ написан
    4 комментария
  • Что такое кластер баз данных?

    bingo347
    @bingo347
    Crazy on performance...
    Попытаюсь объяснить на пальцах
    В большинстве случаев основная нагрузка идет на чтение БД, часто бывает, что одна машина не справляется с существующей нагрузкой, тогда поднимают кластер — запускают СУБД на нескольких машинах, одна из них объявляется мастером, остальные репликами
    Мастер занимается только записью и распространением готовых изменений по репликам
    А читаем мы только из реплик, балансируя нагрузку между ними, тем самым снижая нагрузку на каждую из них и уменьшая время отклика
    Ответ написан
    1 комментарий
  • Почему Git не добавляет файлы?

    @lykich
    Такое бывает если ниже по дереву есть еще один репозиторий git.
    Пример в корне
    git status
    изменено: vendor/friendsofsymfony/user-bundle (изменено содержимое)
    cd vendor/friendsofsymfony/user-bundle
    git status
    изменено: .gitattributes
    изменено: .github/ISSUE_TEMPLATE.md
    изменено: .gitignore
    изменено: .php_cs
    изменено: .travis.yml
    изменено: Changelog.md
    изменено: Command/ActivateUserCommand.php
    изменено: Command/ChangePasswordCommand.php
    изменено: Command/CreateUserCommand.php
    rm .git
    cd ../../../
    git add -A - ОК.
    Ответ написан
    Комментировать
  • Как начать использовать технологию WebSocket?

    @SilverSlice
    Проще всего будет начать с официального руководства по Ratchet. Также можете посмотреть видео, в котором тоже самое наглядно показано.
    Ответ написан
    Комментировать
  • Почему phpstorm не распознаёт один php файл?

    copist
    @copist
    Empower people to give
    1. Открой File -> Settings -> File Types
    2. Вот в этом диалоге найди свой файл
    3. Удали его из списка и сохрани настройки

    6135b1d7215fd203980755.png
    Ответ написан
    Комментировать
  • Почему phpstorm не распознаёт один php файл?

    Keksinautin
    @Keksinautin
    Software Engineer
    У меня была такая проблема. Суть в том, что файл (полное имя) прописался в паттерн к другому типу файлов.
    Открываете тот самый File -> Settings -> File Types,
    а там ищите свой файл в "Registered Patterns" среди других типов данных.

    Скорее всего он в "Files opened in associated applications" попал.
    Ответ написан
    4 комментария
  • Куда движется профессия системного администратора?

    athacker
    @athacker
    Выбирайте то, к чему душа больше лежит. IT Ops останутся навсегда, какие бы облака там не парили над нами. Всё равно полно организаций, которые не доверяют потусторонним конторам хранение своих данных и обслуживание своей IT-инфраструктуры (и правильно делают). Особенно в свете развития законов и методик оповещения об утечках и т. п.

    IT Ops, на мой взгляд, поинтереснее (сам такой потому что), так как задачи разнообразнее. Но в DevOps, например, денег больше платят. Хотя в IT Ops сейчас тоже много из DevOps наприлетало -- Infrastructure as a Code, ansible/chef/puppet, хранение конфигов/плейбуков в VCS, вот это вот всё. И это действительно приводит к тому, что нужно меньше людей, чтобы управлять существенно бОльшими по размеру инфраструктурами. Но и квалификация этих людей тоже должна быть выше, и программерский бэкграунд какой-то тоже нужен. Потому что даже в IT Ops очень много автоматизации, которую нужно писать руками на Shell, Powershell, Python, смотря где как принято.

    Отдельный денежный сегмент -- это DBA. Oracle, PostgreSQL, MariaDB -- прокачанных DBA мало, и стоят они дорого. С другой стороны, рынок, где требуются DBA -- довольно узок. И чтобы не было проблем с поиском работы -- квалификация должна быть высокой.

    Есть ещё NetOps, т. е. сетевые инженеры. Но там сейчас грустно -- несмотря на то, что для работ в операторских сетях, например, нужна нефиговая такая квалификация и знание особенностей кучи вендорского железа (редко кто строит гомогенные в смысла вендора сетевого железа сети, в основном сборная солянка - -Cisco/Juniper/Mikrotik/Dlink/Huawei), но зарплаты там (по Москве) -- 90-100 тысяч. При этом практикуются ночные/выходные дежурства и всё такое. Можно найти прекрасные места, где сетевой инженер будет зарабатывать бОльшую сумму, но в целом -- как-то так.

    Если резюмировать -- в IT Ops ниже порог вхождения в целом. Т. е. можно найти работу, где не требуется серьёзная квалификация, но и денег будет соответственно.

    DevOps -- порог вхождения выше, т. к. DevOps подразумевает выполнение вполне конкретного набора задач, и для их выполнения уже вряд ли возьмут человека с улицы, надеясь, что он "по ходу разберётся" (а вот в IT Ops или даже NetOps в мелких и средних конторах ещё может прокатывать). Квалификация требуется выше, но и денег больше.

    DBA -- всё ещё сложнее, чем с DevOps. Рынок узкий, квалификация нужна высокая, но зарплаты тоже высоки, повыше DevOps, по моим наблюдениям.

    В чистый NetOps сейчас уходить... Ну такоэ... Есть крупные конторы, где этим можно нормально зарабатывать, но всё равно, квалификация требуется высокая, а денег относительно требуемого объёма знаний платят не так уж много. Вот IT Ops + NetOps -- это да, тут можно найти хорошую работу. Но для этого книжек придётся прочитать в полтора раза больше, чем отдельно IT Ops и в два раза больше -- чем отдельно NetOps :-)
    Ответ написан
    4 комментария
  • Как работает DISTINCT ON?

    Melkij
    @Melkij
    PostgreSQL DBA
    Чем вам поможет ещё одно объяснение, если вы уже, как говорите, прочитали много других?

    distinct отвечает на вопрос "покажи уникальные комбинации таковых полей"
    distinct on расширяет стандартное поведение и отвечает на вопрос "покажи данные первой строки из каждой уникальной комбинации таковых полей". А для определения "первой строки" - делает обязательным использование order by.

    Используется когда вам нужно найти, например, данные по первому заказу каждого из покупателей в магазине.

    Note: postgresql на момент 13 версии не умеет loose index scan, потому distinct в лоб может быть в зависимости от распределения данных элегантен в написании, но не очень эффективен и объяснять более подходящий алгоритм придётся планировщику вручную.
    Ответ написан
    Комментировать
  • Как хранить общие модели и бизнес-логику для нескольких проектов?

    Bandicoot
    @Bandicoot
    Вась-программист
    Мы на работе сделали так. Все проекты у нас хранятся в одной папке на сервере, как на тестовом, так и на боевом. В ней же был создан отдельный проект с общими моделями и компонентами, настроены пространства имен:
    namespace common\models;
    В проекте, где нужны эти общие модели, мы прописываем соответствующий алиас для них:
    $config = [
      ...
      'aliases' => [
        '@common' => dirname(__DIR__) . '/../common'
      ]
      ...
    ];

    Далее их можно использовать.
    Ответ написан
    1 комментарий
  • Генерация CSRF токена или есть другие варианты на php?

    kimono
    @kimono
    Web developer
    Генерируете случайный токен, помещаете его в сессию / кеш / базу и отправляете на страницу в какой-нибудь метатег в head, например.
    При отправке POST запроса фронт берёт этот токен и отправляет на бэк.
    Бэк проверяет его наличие и срок его действия. Если токен был валидный, то в ответ генерируете новый и снова отправляете на страницу, если нет - заставляете пользователя обновить страницу. В обоих случаях токен инвалидируется и удаляется.
    Один раз в 10 / 100 / 1000 проверок токена запускаете чистильщик невалидных токенов с истёкшим сроком действия.
    Ответ написан
    1 комментарий
  • Дизайн REST API: Как сейчас принято передавать авторизационный токен?

    Ваши вопросы по порядку:
    1. Хорошей практикой считается передача http-заголовка Authorization (все известные мне методы: Basic auth, JWT token, Oauth2 предполагают его использование).
    2. Одно из преимуществ, которые я вижу, это возможность быстро проверить какие либо результаты прямо в браузере, т.к. при использовании авторизации через http-заголовок, нужно использовать какой-либо инструмент для тестирования API. Но я бы добавил это только как альтернативный вариант авторизации, например только на тестовом сервере/в локальной среде, и не использовал в продакшене.
    3. Никаких граблей со вторым вариантом не встречал, т.к. это стандартный заголовок. Предполагаю, что можно наткнуться на грабли с третьим вариантом, например нестандартные заголовки будут резаться какими-нибудь проксями, кешами.
    Ответ написан
    Комментировать
  • Как безопасно передать api token авторизованному пользователю для расширения браузера?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Раз
    2. Два
    Ответ написан
    Комментировать
  • Как справляться с рутинными задачами во фронт-енде?

    dmitry_pavlov
    @dmitry_pavlov
    World-class .NET freelance contractor (remotely)
    1) Поднимите стоимость своих услуг так, чтобы каждые полчаса, потраченные на рутину, приводили вас в восторг от полученной за это время прибыли :)
    2) Научитесь любить рутину. Обычно такая работа не слишком занимает мозг, включите аудиокнижку в параллели. И работу сделаете и приятно проведёте время.
    3) Берите только экстермально интересные проекты. Либо рутина уйдет, либо голод заставит пересмотреть свое отношение к обычной работе :)
    Ответ написан
    Комментировать
  • Какие http коды ошибок возвращать?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Есть 2 точки зрения.
    Классический REST говорит что надо отдавать ошибки в http кодах сервера.
    На практике занимались разработкой api под мобильные приложения несколько лет и столкнулись с тем, что многие библиотеки используемые для работы с апи на мобильных приложениях:
    а) хреново работают с любым заголовком отличным от 200
    b) хреново работают с любыми методами отличными от GET/POST

    В итоге пришли к следующему решению (кусок из внутренней документации):
    84e91208aadc415ea342aa6f822275ea.png
    где code 400 говорит о том что серверу не нравятся какие то данные в запросе, error_code говорит о том что именно не нравится (почта, пароль итд - список свой в каждом методе api)
    Ответ написан
    Комментировать
  • Как зарабатывают разработчики на бесплатных framework`ах?

    @feudor1
    скорее всего так и есть, фреймворк разрабатывают для личных нужд, например для упрощения собственной работы, потом делают его доступным для широкого круга лиц, и если он оказывается кому то полезен, то у него появляются дополнительные пользователи и разработчики, увеличивая тем самым функциональность. И финансирование разработки не ложится на плечи одного лица или компании. И плюс к этому есть люди которым нужна отсутствующая функциональность, но самостоятельно ее реализовать не могут, но могут заплатить за ее реализацию - примерно так много сложных вещей появляется.
    Ответ написан
    Комментировать
  • REST или Json-RPC для большого проекта?

    al_gon
    @al_gon
    По сути своей CRUD ресурсоориентированна.
    То что вы описываете подталкивает к REST. Допилите Вы её до абсолютной RESTful это другой вопрос.
    Если из несколько сотен методов будет >50% для реализации CRUD . Тогда точно REST.

    Аргументация от linkedin:
    https://www.linkedin.com/pulse/rest-vs-rpc-soa-sho...
    Ответ написан
    Комментировать
  • Как уже на собеседовании понять, какое в компании качество кода?

    @Kirill-Gorelov
    С ума с IT
    Тебе уже g_s_e подсказал, как правильно сделать.
    Задавать косвенные вопросы.
    К тому списку я бы добавил.
    За проект отвечает один программист или его могут делать несколько разных.
    Проводится ли код ревью.
    Ведется ли документация.
    Есть ли стандарт написания кода.
    Бывает ли необходимость работать после работы, в выходной, к примеру.
    Ну и что-то в этом дохе. Почему это важно? Так ты поймешь, если фирма уделяет этому внимание, то наверняка они и к коду относятся с почтением. А не делают спустя рукава.
    Ответ написан
    2 комментария
  • Как уже на собеседовании понять, какое в компании качество кода?

    @HellWalk
    Поймала себя на мысли, что на собеседовании хочется сказать работодателю: "Покажите пример вашего кода" :) Потому что зачастую понимаешь, во что вляпался, только когда уже устроился и видишь проект своими глазами.

    Так и сказать - "ваша компания мне нравится, но можно взглянуть на код проекта?"
    Обычно готовы показать.
    Ответ написан
    Комментировать
  • Как уже на собеседовании понять, какое в компании качество кода?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Как вариант, собеседоваться в компании, которые занимаются open-source продуктами
    Ответ написан
    Комментировать
  • Как уже на собеседовании понять, какое в компании качество кода?

    @g_s_e
    Ну вообще стоит начать с того, что Вы подразумеваете под говонокодом. Зачастую говнокод - это не только криво написаный метод/класс, это еще плохо оптимизированная бд, кривая архитектура приложения и неверно выбранные инструменты для решения задач поставленных перед проектом. В любом случае проект делают люди, которые меняться на проекте, посему нужно выяснить детали самого подхода разработки проектов в самой компании:
    - спросить сколько проект находится в разработке, степень покрытия тестами, если прокт древний и не покрыт, то плохо;
    - если проект древний, то узнать обновляются ли на нем версии инструментов/фреймворков на более новые, выяснить что с обратной совместимостью;
    - спросить как происходит процесс мерджа новых фич, если если через мерджреквесты на тимлида, которые он аппрувит или отклоняет, то уже не плохо, и Вам подскажут, проконтролируют, что не плохо. Eсли пуш в ветку девелопмент, то плохо;
    - если используют мерджреквесты на тимлида, то спросить используется ли git-flow, если да, то хорошо, это минимизирует варинт того, что Вы получите кучу крешей от того, что было запушино коллегами, если не используется, то плохо;
    - узнать что проиходит с CI на проекте, если есть тесты, то запускаются ли они при деплойменте, если да то хорошо, нет - плохо;
    - если это web проект, на котором используется бекенд и фронтенд фреймворки, то стоит спросить развернуты ли они на разных серверах, если да то хорошо, если нет то плохо;
    Выяснить это все иначе, чем по косвенным признакам, является маловероятным.
    Ответ написан
    Комментировать