Посты | OTUS
Запланируйте обучение с выгодой в Otus!
-15% на все курсы до 27.11 Забрать скидку! →
Выбрать курс
Ansible: формируем переменные на всех хостах с Custom facts

DevOps_Deep_21.08_site.png

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

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

Иногда фреймворк не нужен

JS_Deep_4-5020-e2c992.10_site.png

Однажды я открыл веб-студию и чуть не прогорел. Я уже неплохо знал React и Node.js, но другие фрилансеры всегда были на шаг впереди меня — они делали то же самое, но быстрее и дешевле. Первое правило коммерческой разработки — выбирай подходящий инструмент для задачи.

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

Конечно, бывает ещё 1000 вариантов посередине. Надо сделать сайт? Выбрасывайте фреймворк!

Server Sent Events в Java EE

JavaEE_Deep_20.08_site.png

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

То есть для поддержки актуального состояния данных, клиент должен постоянно опрашивать сервер для получения обновлённых данных. Такой подход не всегда удобен, так как требует дополнительных накладных расходов и действий со стороны клиента (если обновление данных на сервере не произошло, сеть нагружается впустую). Устранить некоторые недостатки поллинга помогают его разновидности, тот же Long polling.

Модуль setup и Gathers facts в Ansible

DevOps_Deep_17.08_Site.png

В системе управления конфигурациями Ansible есть специальный модуль setup. Он выполняется первым, собирая информацию (Gathers facts) обо всех подключённых узлах (нодах). При выполнении модуля на хосте он собирает разные факты, включая дисковое пространство, версию и тип операционной системы, hostname машины, количество доступной памяти, архитектуру процессора, IP-адреса, сетевые интерфейсы и их состояние.

Timer API в Enterprise Java Beans

JavaEE_Deep_17.08_Site.png

Timer API — полезный инструмент Enterprise Java Beans, позволяющий легко создавать задачи, выполняющиеся с задержкой по времени или требующие выполнения по расписанию. Например, можно в строго определённый час запускать формирование ежедневных отчётов, собирая сводную статистику. Для работы на выбор разработчику предоставляются два типа таймеров.

Сделайте «снимок» кода С++, посмотрим что у вас!

С___Deep_9-5020-7511bd.10_site.png

Современный C++ породил странный страх сделать что-то недостаточно эффективно. По этой причине в коде часто можно встретить std::move совершенно не к месту. Или какие-то сложные телодвижения, нацеленные на избавление от копирования возвращаемого значения.

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

Лучевой поиск для seq2seq модели

DS_Deep_16.08_Site.png

В задачах машинного перевода часто используется модель seq2seq (sequence-to-sequence). Данная модель в режиме тестирования последовательно выдаёт распределения по вероятностям слов на текущем шаге t. Более подробно можно прочитать в предыдущей заметке. Далее я буду предполагать знакомство с этой моделью.

Редактируем User-модель в Django с помощью класса AbstractUser

Python_Deep_14.08_SIte.png

При работе с Django часто приходят задачи по изменению стандартного поведения юзера. В большинстве случаев, это заканчивается расширением полей, которое все привыкли делать через 1-1 и отказываются реализовывать по-другому. Но начиная с версии 1.7, Django предоставляет новые механизмы по работе с этим. Их два – AbstractUser и AbstractBaseUser.

Копилка с дыркой: что такое опыт и стоит ли хранить всё?

Cplus_Deep_11.3_site-5020-6776fc.png

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

Откуда методы у типов number, string и boolean в JS?

JS_Deep_10-5020-ba80b4.10_site.png

Прочитав эту заметку, вы никогда не захотите писать на JavaScript. Но подождите! В работе эти проблемы не всплывают почти никогда. Я специально для вас залезу в этот тёмный подвал JS, чтобы поведать о том, как работает (255).toString(16) и ('me: hello').substr(4) и откуда у примитивных типов number, string и boolean методы?

Популярное
Сегодня тут пусто
Черная пятница в Otus! ⚡️
Скидка 15% на все курсы до 27.11 →