• Программирование RoR для создания сайтов, в каком порядке осваивать?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    1. Выкиньте из списка RoR. Да, быстро, но только умирает технология. Этот фреймворк сделал много для развития других языков, но комьюнити не стало расти и вакансий/специалистов в итоге мало
    2. Если вам нужна скорость и лёгкость в освоении - PHP: Yii, Laravel, Symfony (в порядке возрастания уровня вхождения)
    3. Python и Node вам на закуску. Смотрите на них если хотите потом уехать в облачные технологии, serverless, или Big Data (python)
    Ответ написан
  • Как исправить ошибку "failed to open stream: No route to host"?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Попробуйте использовать curl за место file_get_contents. Узнаете много нового об обращении к этому ресурсу и получите больше контроля над операцией
    Ответ написан
  • Как правильно аннулировать действия при прерывании создания записей?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    И ничего плохого в этом нет. Более того, вы получаете информацию о доходимости пользователя до цели (и без всяких метрик и т.п.)

    Компании, которые обладают огромными объемами (петабатами) данных имеют так называемый Data Lifecycle Management. Данные периодически проверяются на качество и чистятся по необходимости. Достаточно рядовая операция.
    Ответ написан
    Комментировать
  • Как можно защитить ключ от ТГ бота?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Храните деньги в сберегательной кассе токены на сервере, делайте запросы к серверу по API, в API пускайте только авторизованных пользователей по личным токенам, например JWT :-)
    Ответ написан
  • Какой можете посоветовать сайт для глаз?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Да, есть прекрасный вариант - вы выходите на улицу и смотрите вдаль, на людей, вокруг. И делаете это при дневном свете. #sarcasm
    Ответ написан
    Комментировать
  • Как лучше распараллелить вычисления php?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    По вашему описанию пока что выглядит как типовая задача для RMQ + Work queues Consumers, но! Меня очень смущает то что вы написали о коэффициентах, которые меняются раз в секунду в базе. Основная цель коэффициентов быть статическими значениями уравнения расчета.

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

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Это еще и изоляция окружения, а так же безопасность
    Ответ написан
    Комментировать
  • Как правильно загружать файлы на AWS S3?

    inoise
    @inoise Куратор тега Amazon Web Services
    Solution Architect, AWS Certified, Serverless
    Мы можете генерировать разовые policy для загрузки прямо в S3. Таким образом клиент сможет загрузить данные прямо в bucket. Обязательно нужно будет настроить CORS на бакете, разрешающий PUT.

    Есть очень хороший урок на этот счёт от A Cloud Guru:
    https://acloud.guru/learn/serverless-for-beginners

    Советую сразу настроить Cloudfront Distribution (Transfer Acceleration)
    Ответ написан
    Комментировать
  • Ошибка 403 при парсинге?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    403 Access Denied если точнее. Ресурс защищен от парсинга и не удивлюсь если далеко не одним способом. Успехов в изучении, но, думаю что разработчики и сисадмины ресурса там поработали на славу
    Ответ написан
  • Доступность бюджетного ультра-ноутбука - сентябрь/2018?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Сижу на макбуках уже много лет и не пожалел. Даже того что купил 6 лет назад для твоих задач вполне хватит, но лучше, конечно, прошка. Если не забивать диск фильмами до отказа то и 256-512Gb hdd с головой. У самого 13" и до ретины это маловато. Но на ретине уже все хорошо, больше и не надо.

    Ну и не забываем про удобство bash, против консоли в win
    Ответ написан
    1 комментарий
  • Как реализовать Double Submit Cookie?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Сross Site Request Forgery - да вот зачем. В идеале этот токен генерируется каждый раз для отдельной формы. Он нужен для проверки не бот ли приехал, а если и бот то заходил ли на страницу. В общем, несколько сомнительная версия CORS, но от любознательных новичков спасает
    Ответ написан
    3 комментария
  • Масштабирование web-сервиса на арендованных выделенных серверах с администрированием от хостера?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    1. О сессиях есть - такая вещь как Sticky Sessions
    2. О балансировке - вам необходимы полностью Stateless сервисы. State должен находиться где-то ещё: Cache, Database, ... Но тогда и они должны быть масштабированы. То же и про хранилище. Стоит подумать про SOA архитектуру
    3. Cloud Computing. Облака наше все: AWS, Azure... Но тут нужен специалист, который имеет хотябы минимальный опыт ибо этот мир несколько отличается от того к чему вы привыкли
    Ответ написан
    Комментировать
  • Как решить проблему с кэшированием во время работы воркера?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    1. Разделяем понятия генерации пула на уведомление и отправитель уведомлений.
    2. Допустим произошло событие Х. В систему падает событие "Х произошел, вот данные(например)"
    3. События из п.2 попадают в очень (Rabbit MQ, Kafka). Их слушает генератор уведомлений.
    4. Генератор уведомлений получает пул пользователей для именно этого события (он может его кэшировать на короткий период, например memcached) и создаёт задания в очередь "уведомить пользователя А о событии Х"
    5. Уведомлятор просто выполняет задачи из п.4

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

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Любой серверный язык программирования и в принципе любая база данных. В Phpstorm вы можете пользоваться breakpoint, никаких сложностей.

    При выборе ЯП и БД в самом начале все опираются на свои предпочтения. Не уверен что у вас действительно большие объемы данных (пока там нет хотябы 1Tb и миллиарда записей), поэтому скажу что php + mysql это довольно классический простой старт. Есть связка node + mongo, но вы можете несколько потеряться в асинхронности, хотя она хороша, конечно.

    Компилируемые языки программирования для новичка куда сложнее, но выбор, несомненно, за вами
    Ответ написан
    Комментировать
  • Как построить запросы с помощью swagger?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Swagger это инструмент для проектирования протокола взаимодействия (API). Он не реализует логику ни клиента, ни сервера. Просто соглашение, которое уже отдается в разработку. Что клиент, что сервер должны быть реализованы. Если вы построили свой API на базе Swagger то программируете обе части. Если вам предоставили спецификацию Swagger к готовому API то ваша цель написать клиента.

    Для помощи Swagger показывает какие запросы строит в режиме песочницы.
    Ответ написан
    3 комментария
  • Как правильно хранить оценки для постов, но быстро сортировать посты по средней оценке?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Как уже правильно было сказано должно быть:
    • таблица с постами
    • таблица с оценками
    • таблица с рейтингом

    Прим. Не обязательно таблица, не обязательно база реляционная - для задачи это не играет никакой роли

    Эти 3 сущности напрямую ни через одну логику влиять друг на друга не должны, ибо может привести к довольно печальным последствиям.

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

    Для того чтобы сделать все красиво существуют Message Brokers (RabbitMQ, Kafka, ... да какой угодно в принципе - выбор зависит от требований к системе).
    Архитектура такая:
    1. пользователь оставляет оценку к посту
    2. оценка сохраняется в базе оценок
    3. после сохранения в брокера падает сообщение "у поста 12345 новая оценка" (сама оценка для этого кейса не важна, но ее можно тоже указать)
    4. клиент счастливо идет дальше серфить интернеты, не ожидая обработки всякой логики, которую задумал программист
    5. на той стороне брокера сидит маленький демон и слушает эти события
    6. при появлении события демон моментально пересчитывает рейтинг поста и обновляет его в отдельной таблице
    7. при росте нагрузки на демона ничего страшного не происходит - все сообщения встают в очередь и ждут обработки
    8. ну, если хочется совсем все быстро обрабатывать - запускаем ХХХ этих демонов чтобы пережевывали за раз больше информации


    Вот так. Надеюсь вам поможет такой маленький пример их мира энтерпрайз-разработки
    Ответ написан
    4 комментария
  • Аутентификация через REST API прямым запросом?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Use JWT, только помните что это не аутентификация, а просто формат токенов, обеспечивающий определенный уровень доверия. И не в get query string, a headers.

    Специально для тех кто советует POST - почитайте что такое REST Verbs, зачем они нужны и про кэширование. Кэшировать GET критически важно для API, в если использовать POST для получения данных, а не для записи это уже не REST.
    Ответ написан
    1 комментарий
  • Node js однопоточен, а php многопоточен?

    inoise
    @inoise Куратор тега PHP
    Solution Architect, AWS Certified, Serverless
    Не путайте параллелизм и асинхронную модель. PHP из коробки однопоточен и параллелизм достигается через воркеров вебсервера. В Nodejs используются кластеры или же так же несколько воркеров на разных портах как бэкэнд для вебсервера. Ограничение по Nodejs - 1 процесс на ядро по понятным причинам.

    Асинхронная модель есть и там и там, но в nodejs с ней попроще по тому как процесс умирает после обработки (если это не написанный демон)

    Плюс nodejs в том что процесс запускается один раз, поэтому, пока процесс на PHP просыпается, Nodejs уже перешёл к следующему клиенту.

    Про ручной деплой (писали выше) чушь. Давно уже существует тонна ci/cd систем, не говоря уже о мощностях serverless в AWS и Azure
    Ответ написан
    Комментировать