Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (30)

Наибольший вклад в теги

Все теги (154)

Лучшие ответы пользователя

Все ответы (206)
  • Отвечать ли на старые неотвеченные вопросы в QA?

    Stdit
    @Stdit
    Отвечать. Даже если автору уже не нужно, другим читателям может быть полезно, включая тех которые нагуглят этот вопрос.
    Ответ написан
    2 комментария
  • Почему отсканированное зеркало - черное пятно?

    Stdit
    @Stdit
    Потому что от бумаги свет отражается во всех направлениях, а от зеркала в одном, которое «не видит» сенсор.
    Ответ написан
    1 комментарий
  • Как стать программистом?

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

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

    Конечно, я не одобряю велосипеды в профессиональном программировании, но для обучения и саморазвития, по-моему, нет ничего лучше.
    Ответ написан
    1 комментарий
  • Node.js в качестве server-side для enterprise приложения?

    Stdit
    @Stdit
    По моему опыту, nodejs — удобная, стабильная и быстрая штука, имеющая отличное сообщество и много хороших библиотек в npm. Преимущества можно перечислять долго, лучше сразу перейти к проблемам.

    — Сложно найти готовых к работе толковых программистов, даже среди фронтендщиков. Но можно обучить. На обучение и понимание среды nodejs, API, асинхронности, замыканий, калбэков, событий, функционального подхода — уходит примерно месяц-два.
    — Библиотеки из форнтендов использовать можно, но только если они грамотно написаны и оптимизированы для перманентной работы. Иначе есть риск, что они сожрут всю память или повесятся.
    — Сервер nodejs обычно однопоточный, со всеми вытекающими. Имеется возможность форкать и открывать дочерные процессы, на это нужны дополнительные затраты труда. Но это требуется только в исключительных случаях.
    — Код пишется в основном легко, если следовать чёткому стандарту, который обычно навязывается используемым фреймворком. Однако javascript, ввиду своей нестрогости, неустойчив к коррозии, в спешке или по неопытности можно наделать рака и превратить жизнь своей команды в ад.
    — При сложной логике со множеством вызовов можно без злого умысла нагородить «лестниц» из калбеков. Однако, проблема решается разными вариантами библиотек управления задачами (async, Q, и т.д.). Вообще лучше делать максимальную декомпозицию кода, создавать бесчисленные функции внутри функций — не очень хорошая практика.

    По поводу камней:
    — Обычно, всякие руководства и мануалы типа «hello world» используют один сокет для соединения с БД. На практике оказалось, что если этот сокет зависает под тяжёлым запросом, то все остальные запросы прилежно ждут его освобождения. Поэтому первое, что нужно сделать в новом проекте — это подключить database connection pool.
    — Случилось так, что количество одновременных подключений к серверу перевалило за тысячу, и внезапно возникли необъяснимые аномалии и отказы. Как выяснилось, страшного ничего не произошло, и нужно было просто в операционной системе разрешить открывать на порядок больше файловых/сокетных дескрипторов.
    — Память для nodejs лучше ограничивать ключами запуска и отдавать больше для БД (если они на одной машине). В противном случае nodejs не спешит запусктать сборщик мусора (это ведь затратная операция) и разрастается.
    — Перезагрузки nodejs из-за внезапных падений от багов решаются специальными библиотеками, например forever.
    — Чтобы nodejs не вылетал из-за исключений, нужно ставить глобальный обработчик uncaughtException, который пишет их в лог или сразу шлёт на мыло ответственному лицу.
    — Нужно не забывать отвязыватсь обработчики от событий по окончании работы подписанного на событие объекта (removeListener()).

    По поводу фреймворков, используем express, потому что он красивый, простой и мы к нему привыкли.
    Ответ написан
    2 комментария
  • Игра для ребёнка?

    Stdit
    @Stdit
    Симуляторы вождения для изучающих ПДД. И драйв, и польза.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (4)