• Чек-лист: идеальные рабочие условия для офиса. Воздух, звук, свет

    В случае, когда работодатель решил экстренно закрыть проект.

  • Киберполиция предложила СМИ установить скрипт для деанонимизации пользователей

    C Firefox Private Network не определяет.

  • Топік для пошуку менторів

  • Курс FullStack Developer — skillcrucial.com

    Еще забыл одну весьма важную печаль: github.com/...​ster/server/server.js#L75

    Она, отчасти, так же является бедой експреса и тех, кто его использует. Беда называется логика в обработчиках запросов. Ей там не место. Всё что можно сделать в обработчике запроса — это вытащить параметры, возможно их валидировать, вызвать функцию, которая уже будет имплементировать некую логику с нужными параметрами и обработать ошибку.

  • Курс FullStack Developer — skillcrucial.com

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

    По второму пункту — все очень просто.
    Первый признак «бекенда фронтендера» — это babel для бека. Использовать его сейчас для бекенд-приложений сравнимо с тем, если бы вы предлагали курсы по MEJN стеку, где J, как вы догадались — это jQuery. По сути babel не привносит в бекенд ничего кроме потенциальных проблем и дополнительных никому не нужных этапов сборки проекта.

    Второй признак «бекенда фронтендера» — это «express бекенда фронтендера». Из всех ныне существующих фреймворков для ноды express на данный момент один из худших вариантов, которые можно выбрать. Это обсуждать можно долго, но суть не в этом, а в том, что даже при выборе столь популярного фреймворка, который обсосан в 100500 бложиках у большинства получается что-то типа такого:
    github.com/...​b/master/server/server.js

    Это просто кладезь того как писать нельзя, даже самому юному джуну, даже если этот код никто никогда не увидит.
    Если коротко, то
    1) Сделали config, ну и х с ним, нафигачим еще пару строк, которые выгребают конфиги то там, то здесь. github.com/...​ster/server/server.js#L13
    2) Бог с ними, мидлварями, это в принципе не ваша вина — это то как «работает» експрес.
    3) github.com/...​ster/server/server.js#L33 sockjs в XXI веке... В принципе, если на сервере используется такое, то почему бы тогда и jQuery на фронте с Flash-ом не использовать в память о лихих 90-х. И это по вашему "

    — мы учим по последним трендам программирования;

    "?

    Может, конечно, github.com/ovasylenko не отражает то, что реально преподают на данных курсах, но что-то мне подсказывает, что там как раз будет подобное, что очень печально.

    Підтримали: Sergey Zapara, Oleksii Vasylenko
  • Курс FullStack Developer — skillcrucial.com

    Не знаю как в этих курсах на счет «R», но по всему остальному что касается «ME_N» — то есть нормальные бесплатные курсы с видео, заданиями, примерами и т.п.

    И судя по гитхабу, то по части «N» — тут будут обучать бекенду фронтендщика, который редко выходит за пределы pet-проектов и в редких исключениях может встречаться на галерах в легаси-проектах, которые отдали на саппорт.

  • Підбірка фан-відео від айтішників за 2019 рік

  • Чи є життя після macOS, або Як я переїхав на Linux десктоп і не шкодую

    Cinnamon чомусь вважає ок вішати на F10 системний хоткей (виклик меню). Довго не міг зрозуміти, чому в мене не закривається mc. Як відключити цю поведінку для всієї системи, не лише для терміналу, не знайшов.

    Это не только в Cinnamon, это во всем, что на основе Gnome сделано. Вот тут есть возможные решения askubuntu.com/...​me-terminal/128800#128800

  • «Полювання» на пам’ять. Практичні рекомендації щодо уникнення memory leaks на прикладі Node.js

    Ну десятка років ще точно немає (нода існує з 2011), але коли я ще починав працювати з проектом, то такої фічі не було.

    Первые версии ноды появились в 2009. И «max-old-space-size» был доступен с самого начала, ибо это флаг v8.
    news.ycombinator.com/item?id=3006608 (вот тут упоминания о нем в 2011)

    Цілком можливо, що обране рішення не оптимальне, і, маючи достатньо досвіду, можна обрати щось краще. Проте, модуль робить те, що від нього вимагається. Та й, зрештою, треба було працювати з тим що було. Заміна логера в такому об’ємному проекті не тривіальна задача.

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

    У Вас є якісь конкретні рекомендації щодо альтернатив?

    Самый простой и хороший вариант —

    console.*
    и простая обертка над ним (если нужно) для отключения вывода в зависимости от каких-то переменных по типу LOG_LEVEL.
    Так же можно взять pino и посмотреть как там организована работа с транспортами и обработчиками логов вне основного процесса.
  • «Полювання» на пам’ять. Практичні рекомендації щодо уникнення memory leaks на прикладі Node.js

    У ранніх версіях Node.js це обмеження зумовлено архітектурними причинами й залежно від розрядності інтерпретатора могло мати розмір до 1,5 Гбайт (1400 Мбайт для х64 та 700 Мбайт для х86).

    Сейчас оно работает практически точно так же: значения чуть другие (зависят от кол-ва памяти в системе)

    У нещодавніх версіях за бажанням максимальний розмір можна збільшити за допомогою параметрів командного рядку (див. —max-old-space-size)

    Это доступно с версий 0.Х.Х. В галактических рамках десяток лет это конечно же ничто, но все-таки.

    Але в нашому випадку саме журналювання «виїдало» доступну пам’ять й зумовило OOM.

    Не удивительно. Мало того, что в выбранном логгере куча абсолютно ненужного для журналирования кода, так оно еще и выполняется внутри основного процесса. В идеале в логгере не должно быть ничего лишнего и максимум, что он должен делать — это минимально форматировать переданные аргументы и выводить строку в stdout(err). Остальное должно быть вне основного процесса.

    Але чому ці проміси акуратно накопичуються в пам’яті й надалі не стираються звідти, не міг сказати ніхто.

    А все потому, что нельзя вот так просто брать, бездумно переопределять методы библиотеки без понимания того, что они вызывают в оригинале и потом ещё передавать туда переменную через замыкание (ладно с переменной, в теории она там «выживать» не должна, но все же городить такой огород...).

    Підтримали: Alexander Kachur, Dmitry
  • Emma — сервис на основе AI для проверки работ на плагиат

    Думаю научиться это продавать будет следующая задача «ИИ». И, вполне возможно, что в итоге «ИИ» научится монетизировать свои оценки. Заплатил денежку — не плагиат, или заплатил денежку и «ИИ» подобрал нужные синонимы и нет плагиата.

    Підтримав: Sergey Kapshuchenko
  • Станут ли микросервисы архитектурой будущего

    Сотрудники ThomasCook (бывшие) с вами бы не согласились :).

  • Станут ли микросервисы архитектурой будущего

    Я, признаться, думал над этим, но все же как-то не вяжется 200Мб/час с мегабаксами. Хотя там мегабайт — тут мегабакс. Может вы и правы.

    Підтримав: Igor Golodnitsky
  • Станут ли микросервисы архитектурой будущего

    Каждые 2 часа мы получаем и сохраняем до 400 мегабайт информации.

    Итак tl;dr;

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

    Микросервисы — архитектура будущего для украинских бодишопов, ибо так можно продать в разы больше джунов по цене сеньоров.

    PS: Читайте в следующих выпусках.
    * Весь наш зоопарк мы решили развернуть на высокопроизводительном кластере с использованием kubernetes. В итоге производительность поднялась до рекордных 250Мб в час.
    * Частичный переход на cloud-based решения, чтобы привлечь дополнительных специалистов на проект.

  • Кризис перепроизводства джунов

    Скорее всего тут, как в универе: для перехода на следующий уровень нужны публикации около- и псевдо-научных материалов в известных журналах.

  • Банкрутство Thomas Cook, клієнта Ciklum: чого чекати працівникам

    Зная качество кода и некоторых отдельно взятых «техлидов», которые работали на томаскуке, то «встять» это как раз то про томаскук.

  • В какую IT школу/академию/курсы пойти для изучения JS?

  • Паника при рабочем контакте с коллективом

    Описанная ситуация в современных реалиях «это норма» ©. Причем из опыта могу сказать, что это не только локальная проблема. На том же американском рынке хватает таких же говнокодеров и скрам-мастеров, для которых хуяк-хуяк и в продакшн. Но даже в таком подходе они еще умудряются выбирать такие либы, которые либо уже давно забыты, либо написаны такими же погромистами из говна и палок.

    — были ли примеры успешной адаптации в конвейер типажей схожих с моим

    Тут варианта два. Первый ходить по собеседованием, пока не поймете, что «вот оно».
    Второй — тоже ходить по собеседованиям (но момент про перфекционизм опускать). Принять первый подходящий офер и поработать немного отключив чувство прекрасного. Тут опять развилка. Простой вариант — продолжать ходить по собесам, но в режиме первого пункта. Либо же систематически доказывать, явно указывать на косяки коллег, чтобы начальство или заказчик это видел. Если среди последних будут адекватные люди, то они это заметят и будут положительные сдвиги. Если они скажут «ты не командный игрок» и т.п. — то значит они просто нанимают себе людей равных или менее преуспевших в умственном развитии (т.е. вы возвращаетесь к поиску).

    Можно конечно попытаться привить коллегам хорошие методики, практики. Но чтобы к вам прислушались нужен какой-никакой авторитет, который в случае если вы не какой-то «лид» надо зарабатывать тем, о чем написано выше — явно тыкать носом в говнокод «старшего» или в случае менеджмента указывать на их ошибки в планировании и прочем.

    — будет ли в моей ситуации выходом фриланс

    Может быть, но надо быть готовым по началу лепить говнокод, т.к. нужно набрать себе рейтинг. А заказчики, которые ищут исполнителей с низким рейтингом вряд ли рассчитывают платить за то, чтобы код их проекта писался девственниками и девственницами в виме на православном линуксе. Они хотят дешево и на вчера.
    Чтобы был хоть какой-то шанс побыстрее пройти этот этап, может помочь хороший гитхаб профиль, с общественно-полезными библиотеками, приложениями и т.п. (тудушки сюда не относятся).

    — может быть, стоит адаптироваться в среду win/ide (мне казалось что arch/vim профессиональнее)

    От ОС мало что зависит (если конечно вы не на C# пишите). В остальных случаях linux выигрывает, причем даже у мака. По IDE — дело вкуса. Заказчикам обычно побоку где код написан. Попробуйте несколько IDE или текстовых редакторов. Выберите что нравится, что проще вам использовать, где вам удобнее писать код.

    — может быть, в другом направлении будет проще адаптироваться (я знаю С на уровне struct-pointer)

    Непрофессионалов хватает везде. Не факт, что узкая малопопулярная специализация поможет. Если уж переквалифицироваться, то имхо, на какой-то более менее молодой язык либо некую надстройку над уже существующим языком. Как правило в самом начале туда «заходят» думающие специалисты, которые ищут решения проблем, с которыми они сталкиваются, например при использовании текущего языка, либо просто изучают новое для общего развития. А всякие формошлепы в это время продолжают ковырятся в носу и говнокодить. Из примеров — тот же rust. Хоть он уже не такой молодой, но все же там говнокодеры не так успели окопаться, как в том же go.

    Но можно пойти в противоположном направлении и выбрать технологию с наибольшим количеством вакансий. И там уже ходить по собеседованиям, пока не найдется «оно самое».

    PS: все вышеописанное воспринимать как дополнение к советам других, отписавшихся в теме.

    Підтримали: Yuriy Pitometsu, Artem Baidala
  • Переупаковка контейнера mpeg4 налету

    Ну в таком слечае надо разбивать файл на чанки сразу и отдавать Partial Content. Но в итоге вы изобретете hls.

  • Переупаковка контейнера mpeg4 налету

    Пересчитывать возвращаемый вес контейнера не надо. Если у вас таки

    запросе к нему например от html5 плеера

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

    Еще я подозреваю у вас mp4 как результирующий контейнер. Если так, то можно от него отказаться и посмотреть в сторону ts, mkv.

← Сtrl 1... 56789...37 Ctrl →