• Нужно ли в javascript думать о private свойствах и методах?

    @bromzh
    Drugs-driven development
    В питоне вообще нет модификаторов доступа, и все поля доступны по прямому доступу. И ничего страшного в этом нет. В js такая же ситуация. Более того, все эти заморочки с private заставляют зачастую генерить кучу геттеров и сеттеров, которые будут нарушать инкапсуляцию. Так что заморачиваться не стоит, ведь даже в яве можно с помощью ухищрений добраться до приватных полей через рефлексию.

    Решение может быть таким: обозначать какие-то внутренние переменные и методы с символа подчёркивания. Они по-прежнему будут публичными, но для разработчика это знак, что такое поле не понадобится при использовании твоей библиотеки. А методы и переменные, необходимые только для одного публичного метода какого-нибудь класса можно делать локальными, чтобы не плодить кучу полей.
    Ответ написан
    1 комментарий
  • Нужен ли nginx для api, где нет статики?

    merryjane
    @merryjane
    Системный администратор
    Nginx асинхронный и сможет держать Вам пулл коннектов, пока бекенд их будет обрабатывать.
    Есть смысл ставить.
    Ответ написан
    2 комментария
  • Как грамотно полностью закрыть сайт от индексации?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    создать robots.txt в корне сайта с текстом
    User-agent: *
    Disallow: /
    Ответ написан
    2 комментария
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Как вы синхроннизируете файлы?

    egor_nullptr
    @egor_nullptr
    Git.
    Кто-то использует Dropbox или подобный сервис, кто-то просто ходит с ноутбуком.
    Ответ написан
    Комментировать
  • Синхронизация файловой системы

    @MrSelfDestruct
    Первое, что пришло в голову, это rsync, авторизацию по ключу ssh и скриптик в крон, но тут есть множество «но»…
    Ответ написан
    7 комментариев
  • 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 комментария
  • Технологию или оптимальный способ реализации?

    kirill89
    @kirill89
    Я для этой цели использую google docs. Там можно делать формы, таблицы и скрипты для них, а также есть управление доступом ко всему этому.
    Ответ написан
    Комментировать
  • Массовое пополнение сотовых через Яндекс API?

    pacificatore
    @pacificatore
    вот тут расписаны лимиты Я.Денег money.yandex.ru/doc.xml?id=523014

    К вашему случаю относятся следующие:
    Платеж за услуги операторов мобильной связи
    для идентифицированного пользователя: 15 000 рублей единовременно, 100 000 рублей в сутки, 300 000 рублей в календарный месяц
    для неидентифицированного пользователя: 5 000 рублей единовременно, 5 000 рублей в сутки, 15 000 рублей в календарный месяц
    Лимит именно по API — предельный лимит токена 500,000р на 3 года, после его исчерпания нужно просто выпустить новый.
    Ответ написан
    Комментировать
  • Как вы спасаете читалку от холода?

    VasG
    @VasG
    Кладу свой Kindle во внутренний карман куртки: и не стырят (в мороз очень активно крадут на улице, т.к. очень легко незаметно залезть рукой, скажем, в рюкзак), и греется об тело.
    Ответ написан
    1 комментарий
  • Как хранить общие данные в Spring?

    serso
    @serso
    Нет, не нормально (да и вообще в Spring'e хранить что-то статично — верх безумия — с его-то Dependency Injection).

    То что вы делаете называется кешированием данных. Оно бывает разное в зависимости от целей, в вашем случае оно на уровне приложения (т.е. один инстанс кеша на всё приложение). На сколько я помню в Spring'e есть механизм объявления бина (bean), при этом есть возможность задать его область видимости (scope). Так вот ваш случай — singleton или (если есть конечно) application bean.

    По поводу многопоточности — естественная проблема общих ресурсов. Тут, к сожалению, и Spring вам не поможет — нужно реализовывать самому используя конструкцию synchronized.
    Ответ написан
    Комментировать