Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Fesor

Сергей Протько

Full-stack developer (Symfony, Angular)
  • 4183
    вклад
  • 61
    вопрос
  • 4659
    ответов
  • 36%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Angular2 - присваивание в конструкторе в TypeScript как это работает?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    private _http: Http;
    
    constructor(http: Http) {
        this._http = http;
    }


    Подход - Inversion of Control и Dependency Injection как реализация подхода

    Как работает ассайн пропертей из конструктора и почему так делать удобнее: https://www.stevefenton.co.uk/2013/04/stop-manuall...
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Как плюсы и минусы от размещения БД на удаленном сервере?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Понимаю, что канал моего домашнего интернета сильно отличается от канала ДЦ, но все же.


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

    В общем, напишите, пожалуйста, плюсы и минусы такого подхода.


    Плюсы:
    - база данных на отдельном сервере, появляется возможность вертикального масштабирования сервера базы данных.
    - горизонтальное масштабирование (репликация, read-only реплики например для ускорения чтения)
    - два средних сервера обычно стоят дешевле одного мощного.

    Минусы:
    - Ну это нужно делать, настраивать, тюнить...
    - Дополнительные расходы на дополнительные сервера. Причем скорее всего вам захочется иметь еще один сервер "в качестве запасного аэродрома".
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как изолировать active record в laravel5?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    www.martinfowler.com/eaaCatalog/rowDataGateway.html
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Зачем Ruby нужен fiber?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    затем же зачем в erlang нужны микропотоки и в golang горутины.
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Организация доступа к API?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Ведь js же может по идее подхватить название вызываемого метода и сделать внутри ajax запрос


    И да и нет: https://developer.mozilla.org/en-US/docs/Web/JavaS...

    В целом я конечно одобряю здоровую лень, но вот это уже нездоровая лень. Во Первых потому что restful api это не RPC (хотя любое RPC можно организовать как restful api). Во вторых, будет сложнее обрабатывать ошибки. В третьих напишите под вашу апишку такой вот клиент и используйте, спрятав все нюансы работы с http внутрь.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как удалить из строки ненужное?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    php.net/manual/en/book.dom.php
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему скрипт запущенным браузером выдает таймаут, а из консоли работает отлично?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    потому что у web сервера (nginx/apache) есть свои таймауты. Для вашей задачи вооружитесь очередями (beanstalkd, gearman, etc).
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Интерфейсы и устройства ввода-вывода тормозят развитие технологий?

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

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


    А вы вообще проводили ресерч на эту тему? Вот вам варианты интересные которые существенно увеличивают скорость набора.

    https://en.wikipedia.org/wiki/DataHand
    orbitouch.com

    Так же есть куча раскладок, вроде дворак замест традиционной querty.

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


    Мозги человека пока плохо приспособлены к восприятию информации в 3D. Вспомите эти славные иллюзии.

    а для трёхмерного по-прежнему неудобны.


    www.cgchannel.com/2010/11/axsotic-releases-intrigu...
    www.3dconnexion.com/products/spacemouse/spacemouse...

    ну и были еще кучи прототипов и т.д. Проблема в том что при работе с 3D большинство работают с проекциями, нам так удобнее.

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


    Работы в сторону нейроинтерфейсов ведутся, но я лично знаю только об успешной midi клавиатуре на 8 клавиш которыми можно управлять силой мысли. Вводить же информацию напрямую в мозг мы пока не научились вовсе.
    Ответ написан более трёх лет назад
    8 комментариев
    8 комментариев
  • Как организовать деплой на кучу проектов на одном ядре?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    composer для того чтобы обновлять "ядро" (со своим приватным репозиторием возможно). "автоматизировать" - различные штуки от обычного bash скрипта до инструментов аля ansible. А еще docker клевая тема для подобных вещей. Если "это работает в контейнере то скорее всего будет работать на любом другом сервере".
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Перевод на зимнее время, как правильно прописать?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Как правильно


    Не делать этого. Если вы указываете время в UTC и потом добавляете часовой пояс - все уже будет учитываться за вас.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как послать ответ на определенный порт?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    отправить ответ (echo 'Ответ';) на другой порт получателю, а не тот от которого пришел запрос.


    для этого между сервером и клиентом должно быть установлено соединение. Так работает TCP. Причем сервер не может выступать инициатором.

    А если у вас есть два соединения между клиентом и сервером - то никаких проблем.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как запретить изменение переменных из консоли?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    вынесите формирование этого массива на сервер, а для уменьшения расходов на транспортировку данными, используйте websockets.

    Альтернатива - забить.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как добиться такого эффекта?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    эм.... сделать отдельные столбцы.

    https://philipwalton.github.io/solved-by-flexbox/d...
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как правильно организовать параллельную работу в js?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    промисы.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Чем отличаются интеграционное, unit и e2e тестирование на frontend?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Как в юнит тестах тестить нажатие на кнопку? Или мы можем тестить только функцию-обработчик?


    В юнит тестах вы можете тестировать контроллер компонента, что мол он нужное состояние выставляет. DOM проверять не нужно. Механизм биндингов и так хорошо покрыт юнит тестами на уровне фреймворка. Чаще юнитами покрывают сервисы, ресолверы и прочее. Ими проверяют логику работы отдельных маленьких кусочков.

    в интеграционных можно уже потихоньку проверять DOM отдельных компонентов. Просто потому что вы могли опечататься при написании биндингов. Ну то есть цель интеграционных тестов - проверить что в сборке компоненты работают.

    В e2e (end to end) вы загружаете все приложение целиком и имитируете действия пользователей. Причем взаимодействие происходит насквозь. От кнопочки в браузере до запросов в базе данных на сервере (если есть бэкэнд). Это самый медленный вид тестирования и им стоит покрывать только позитивные сценарии.

    Читать про пирамиду тестирования.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Парсинг url по шаблону в PHP?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Учите регулярные выражения.

    p.s. А еще лучше - возьмите готовый компонент для маршрутизации.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как добавить ассеты в NG6-starter?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Все никак не дойдут руки причесать его. На сегодняшний день этот стартер чутка устарел.

    1. Не поддерживается. Рекомендую вооружиться webpack-copy-plugin и вперед.
    2. Нельзя. Для этого вам стоит смотреть в сторону system.js + http2.
    3. Читайте документацию к webpack.
    Ответ написан более трёх лет назад
    7 комментариев
    7 комментариев
  • Как оптимизировать функцию обработки полей формы?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Но перед записью эти данные нужно обработать


    не нужно. Вот вам и решение проблемы. prepared statements для sql и экранирование при выводе.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как происходит передача события в вебсокет канал с сервер?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    1. Поскольку я сомневаюсь что вы написали свое приложение на reactphp (ну то есть это не то же приложение что сокеты слушает), то вам нужно будет организовать общение этих процессов. Тут подойдет какая-нибудь штука вроде zeromq.

    В этом случае мы можем по какому-то событию в одном процессе, формировать сообщение и кидать его через pub/sub другому процессу. Другой процесс принимает сообщение и делает то что нужно, то есть находит нужного пользователя в массиве и кидает ему событие.

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

    p.s. Я не рекомендую вам связываться с websockets на php, проще развернуть примитивный сервер на socket-io и через тот же zeromq передавать нужные сообщения между node и php. Проблем меньше будет как для клиента (socket-io намного проще с точки зрения клиента) так и сервера (socket-io намного более надежное решение).
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Какие есть варианты разработки базы данных?

    Fesor
    Сергей Протько @Fesor
    Full-stack developer (Symfony, Angular)
    Не мне судить о самом подходе, так что остановлюсь лишь на предложения об оптимизации ваших процессов.

    Что можно сделать - так это автоматизировать процесс формирования миграций между версиями. Например через apgdiff.

    Мол идея такая. У вас и так организовано все так как вам удобно. Потому мы можем просто написать простенький скриптик который заливает новую схему, и потом генерит миграцию на основании различий между предыдущей версией. Это позволит вам уменьшить количество рутины.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • pindschik
    pindschik
    • 5 ответов
    • 0 вопросов
  • yarkov
    Алексей Ярков
    • 5 ответов
    • 0 вопросов
  • saboteur_kiev
    Saboteur
    • 5 ответов
    • 0 вопросов
  • Drno
    • 5 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 5 ответов
    • 0 вопросов
  • seoforfood
    Станислав Шарапов
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации