Size: a a a

2019 May 31
oleg_log
У меня уже пару недель крутится назойливая мысль, и сейчас появился еще один повод её озвучить.

Надо делать чаще 'kill -9'-like по своим сервисам. Все.

В чем соль? Конечно же не надо убивать БД, кеши(?), очереди и ЛБ, ну давайте честно, не каждый согласится на такой chaos testing (хотя вещь полезная и нужная).
Но в большинстве случаев/сервисов их надо не бояться дропать и рестартовать.
Многие это делают неохотно, часто даже с паникой в глазах это выслушивают, но на самом деле, все важные данные уже лежат в других (желательно) неубиванмых местах (бд, очередь, и иногда кеш).

Любой сервис, которые занимается только обработкой не имеет аргумента быть долгоживучим.
Если есть graceful restart, нет супер требований на низкий латенси и кеш-хит (го честно, не все пишут такие вещи), то убить и запустить сервис вопрос желания.

В одном проекте текут файлдескрипторы, и проще сделать рестарт раз в неделю, чем разбираться что там (хотя и написано хорошо все).
У одного из друзей течет память, не сильно, но за пару дней заметно боявляется +50 мб. Бах и проблемы нет, pagetduty молчит, а тасочка на будущее висит.
Или тот же гуру хайлоада на жаве Martin Thompson, они свои сервисы биржи убивают вечером и запускают по новой. Сомневаться в качестве его кода я не решусь, но это практику они применяют.

Короч в личных проектах, перед выходом на рид прод, я определенно потрачу полтора дня, чтобы можно было кильнуть любой компонент продукта.
Должно будет когда-то помочь. Change my mind.
источник
oleg_log
источник
2019 June 01
oleg_log
По поводу private[this]. Это 'access qualifiers' в скалочке.

То есть можно дать доступ к полю, только для самого инстанса объекта. Эдакий ООП на максималках:
class Foo {
   private[this] def isFoo = true

   def doFoo(other: Foo) {
       if (other.isFoo) {  // this line won't compile
           // ...
       }
   }
}


Больше примеров https://www.jesperdj.com/2016/01/08/scala-access-modifiers-and-qualifiers-in-detail/

Кстати, в каких языках еще такое есть? 🤔
источник
oleg_log
ААААААААА
Я ПРОПУСТИЛ НОВЫЕ СИНГЛЫ BLACK KEYS

Оказывается еще и новый альбом в конце июня!

И да, уже 5 лет пролетело с последнего альбома, боюсь ретроспективу своей жизни делать за этот период.

Хм, а поскидывайте музыку, которая вам нравится, чего таить -> @olegkovalov

(название песни и мое вероисповедание - чистое совпадение, я не троль)
https://www.youtube.com/watch?v=TCYsY5B8hcQ
источник
oleg_log
источник
2019 June 02
oleg_log
Воскресенье начинается с тулзы для обработки логов нгинх (хотя и не только).

Tailor provides the functionality of tailing nginx access log under logrotate. Tailor will follow a selected log file and reopen it if it's been rotated.

Вертится в реальном хайлоаде 100к+ рпс и все работает шустро. Я это подтверждаю 👌

https://github.com/un000/tailor
источник
oleg_log
Я так прикинул, а ведь сколько еще таких полезных штуковин написано в мире, но которые не дошли до публичности? 🤔

Тип:
- эээ, ну оно писалось только под мои нуждны
- нет тестов (сам этим грешу и не паблишу много чего)
- эээ надо еще ридми написать
- so on

Было бы круто, если бы Github, Digitalocean etc на Хактоберфест не просто просили делать патчи, а еще поощряли бы паблишинг каких-то тулз/либ/приложений.

Правда набегут боты и позаливают форки друг-друга. Еще и в лучшем случае. Беда. Но тему стоит запомнить.
источник
oleg_log
Такс, в одном чате подсмотрел диалог и теперь спрошу у вас: а каким вы видите идеальное образование?

Как правильно строить обучение? как проверять знания? что стоит добавить, а что точно не стоит?

В основном интересно айти(мда)(да и публика из этой же области), но если можете сказать за другие - рад выслушать.

Всех ректоров и завучей прошу сюда -> @olegkovalov
источник
oleg_log
Cloudflare опять радуют, запускают Workers в воскресенье, как раз повод покодить.

Если вы где-то там зимой регались на workers.dev то теперь ваш сабдомен доступен, 30 воркер-скриптов, 100к запросов в день бесплатно. И в бонус новые доки и тутриалы.

Лимиты в 50мс и 128МБ за выполнение так и остались :(
И да, теперь не только JS, но и Rust, в полноценном виде.

Налетай https://workers.cloudflare.com
источник
oleg_log
источник
2019 June 03
oleg_log
источник
oleg_log
Пролистал 365 каналов из раздела технологий https://tlgrm.ru/channels/tech и...стало грустно.

Репосты-репостов новостей, мемы с реддита или паблов в вк и частные "блоги" рекламирующие курсы.

Соооовсем мало оригинальности и авторства. А жаль.
источник
oleg_log
Как раз тут про опенсурс говорили и вспомнилось (в контексте гитхаб-спонсоров).
Как всегда технологии опережают головы людей.
источник
oleg_log
Microservices.gif
источник
oleg_log
Когда делал этот мем - плакал
источник
oleg_log
источник
oleg_log
Тут Александр (https://t.me/defront/135) запостил ссыль на хабр, о CI в Яндексе, и внезапно оказывается что монорепа это сложно. Особенно огромная на 25гб кода.

Меня заинтересовала последовательность шагов билда: configure -> build -> style -> test. Почему стиль после билда? Проверка стиля ведь намного быстрее будет. Странно 🤔

И прикольное решение с флакки/магиющими тестами. Если я не ошибаюсь, то в одном баре чел из гугла говорил, что они еще и собирают детальную стату по тестам. С историей и всеми почти МЛ штуковинами.
Telegram
Defront — про фронтенд-разработку и не только
Прочитал интересную статью Алексея Круглова "Continuous integration в Яндексе".

В статье рассказывается о том, как происходит работа над проектами в Яндексе. Есть единый монорепозиторий. В нём содержится очень много кода (25Гб), над которым работают более 2000 разработчиков. Использование монорепозитория позволяет снизить издержки на систему CI/CD, предотвращает вероятность появления библиотек с похожей функциональностью (так как всё на виду) и снижает порог для внесения исправлений в смежные проекты (используется общий стек для работы с кодом).

На каждый коммит запускается прогон тестов. Запускаются только те тесты, которые необходимы. Чтобы обнаружить нестабильно работающие тесты, они прогоняются два раза. Если какие-то тесты начинают "моргать", то владельцы этих тестов начинают получать уведомления с проблемой. Также используются diff-тесты, которые могут однозначно определить проблемный коммит, который вызвал поломку тестов.

В общем, советую почитать, если хотите узнать больше подробностей про причины…
источник
oleg_log
Ах да, любимые комментарии из серии: слышу звон и больше ничего слышать не хочу я тут специалист в фиолетовых штанах.

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

Один чел в коментах сказал, что за велосипед можно получить по шапке. Могу только посовувствовать, но тянуть на всех свою сову, как минимум смешно.

И да, я отдельно люблю монолиты, что в них видно весь код (кроме сесурити/патентных вещей).

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