Архив рубрики: О программировании

3 способа перенести Node.js приложение в Docker контейнер

dockerizeДопустим, у нас есть Node.js приложение, которое по каким-то причинам нужно перенести в Docker контейнер и запустить. Может, просто хочется проверить, как оно поведет себя на ‘чистой’ машине. Или выпендриться перед заказчиком. Причины ведь разные бывают.

Для определенности, пускай это будет вэб сервер hello.js, который всем отвечает «Hello World». Такой вот он приветливый.

Localhost: hello

Итак, как перенести его в Docker контейнер и запустить?

Дисклаймер: всё написанное ниже предполагает базовое понимание того, что такое Docker, и зачем он может кому-то пригодиться. Где-то даже была статья про это.

Читать далее 3 способа перенести Node.js приложение в Docker контейнер

Краткое введение в Docker

Что это такое.

dockerDocker очень похож на очередную виртуальную машину: можно взять образ Ubuntu с каким-нибудь hello-world внутри, набрать  docker run ubuntu hello-world, и «привет-мир» запустится, искренне полагая, что живёт в убунте, а вокруг — никого.

Но на самом деле Docker — не виртуальная машина, не менеджер виртуальных машин, и даже не гипервизор. Docker — это платформа для создания, запуска и управления контейнерами, которые, хотя и выглядят как маленькие виртуальные машинки, на самом деле работают как высокий забор с колючей проволокой. Приложению наружу не выйти, но и незваных гостей оттуда не дождёшься — то, что нужно для продакшен серверов. Из-за того, что контейнерам не нужно заниматься эмуляцией железа и носить в себе гостевую OS, они работают со скоростью, которая виртуальным машинам и не снилась. Читать далее Краткое введение в Docker

Эксперименты с микросервисами

Недавно на работе меня попросили сделать мини-проект: динамическую страницу со слайдами для одного из настенных проекторов. Они развешаны по всему офису, и показывают на стенах разную актуальную информацию: статистики по клиентам, задержки при передаче пакетов от одного сервера к другому, кто над чем работает, и т. п. Мне же нужно было добавить статистику по релизам и билдам: сколько времени занимает билд, какие тесты упали, какие нестабильные, и что там еще может мотивировать разработчиков на подвиг. Вся эта информация лежит в Google BigQuery, и её нужно просто собрать и грамотно представить. Ничего сложного. Читать далее Эксперименты с микросервисами

О работе в канадской продуктовой компании

product-company

Я уже писал про то, чем занимаюсь на своей канадской работе — халявная кола, раздавленное чувство собственной важности, и программисты-пенсионеры. Но с тех пор прошёл почти год, я поднакопил наблюдений, заматерел, получил беджик Senior девелопера и новых поводов материться. Итак, чем же отличается работа на канадскую продуктовую контору от работы в аутсорсинге в Минске? Читать далее О работе в канадской продуктовой компании

Immutable данные и немного JavaScript

HanSolo

Обычно чаще, чем реже, мы объявляем переменные из расчёта, что их значение будет меняться: счётчики будут увеличиваться, массивы дополняться, объект типа Person поменяет богопротивное имя Джон на Аркадий, и т.д. Всё меняется, а  const  и   readonly нужны только жмотам и студентам, начитавшимся Макконела. Читать далее Immutable данные и немного JavaScript

Семь языков за семь недель

 Вавилонская башняДочитал давеча «семь языков за семь недель«. Языков программирования, разумеется. Ruby, IO, Prolog, Scala, Erlang, Clojure и Haskell. Прекрасное чтиво. Ни один из них в резюме я, конечно, не добавлю, но прогнать через себя за раз столько языков с разными парадигмами — как в стронциевый душ зайти: бодрит, и голова светится.

Читать далее Семь языков за семь недель

IO — добрый брат-близнец JavaScript

Seven languages in seven weeks: Ruby, IO, Prolog, Scala, Erlang, Closure, Haskell

Читаю прелюбопытнейшую книжку — «Семь языков за семь недель«. Языков программирования, разумеется. Читаю и пребываю в перманентном восторге. По списку идут Ruby, IO, Prolog, Scala, Closure, Erlang и Haskell, и я только-только добрался до Scala. Prolog, разумеется, здорово прошелся по психике в шипастых сапожищах, но больше всего в душу запал IO. Читать далее IO — добрый брат-близнец JavaScript

В чем прелесть test-driven development

Test-Driven Development

Как я уже писал раньше, одно из первых болезненных откровений по прибытию на канадскую контору было то, что я пишу отвратительный и никому не понятный код. С тех пор прошло некоторое время, я прочитал стопку профессиональной литературы, и.. продолжил писать отвратительный и никому не понятный код. В чем засада? Читать далее В чем прелесть test-driven development

Почему тесты должны быть быстрыми

snailНемного о программировании.

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

— А еще, когда я задачу доделаю, наши тесты должны стать заметно быстрее.

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

— А мне не важно, чтобы они были быстрыми. Мне важно, чтобы они были надежными. Читать далее Почему тесты должны быть быстрыми

Типизированные массивы в JavaScript

Typed arraysРешил собрать волю в кулак и прочитать-таки документацию про ArrayBuffer, Uint8Array, DataView и всех их родственников. Оказалось, что типизированные массивы это милая и широко-используемая штука по всему фронту JS/HTML5, и я — последний человек на земле, который ими не пользуется.

Читать далее Типизированные массивы в JavaScript