Вскрываем дамп NodeJS процесса с llnode

Научиться дебаггить дампы .net core процессов на Linux при помощи lldb и SOS плагина оказалось очень приятным опытом. Всё-таки «дамп процесса» звучит как нечто крайне низкоуровневое, а тут можно и на управляемые потоки посмотреть, и в памяти покопаться. В общем, приятное колдунство. И между прочим, lldb плагины были не только для .NET. Я видел ещё и для Python, и для Java.  Интересно, а есть ли что-нибудь похожее для NodeJS и JavaScript? Хе,

Of Course!

То есть «конечно», по-буржуйски. Есть плагин под названием llnode, который как раз с NodeJS и работает. Сегодня я не буду копать в нём слишком уж глубоко, всё-таки со скриптом в последнее время практически не работаю. Но посмотреть, как это вообще делается, интересно. Так что приступим. Читать далее Вскрываем дамп NodeJS процесса с llnode

Парад граблей и европейская Беларусь

Грабли

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

Тайна «Debug adapter process has terminated unexpectedly»

vs code

Любопытная история приключилась со мной намедни. Моя основная C# IDE на никсовых системах — Visual Studio Code — внезапно приказала долго жить. Не целиком, а самая полезная её часть — дебаггер. Стоило мне поставить брейкпоинт где-нибудь в коде и запустить проект, как редактор останавливал праздник интеллекта с ошибкой «Debug adapter process has terminated unexpectedly»:

Debug adapter process has terminated unexpectedly

A вот раньше всё работало просто прекрасно. Так как незадолго до проблемы я устанавливал на Убунту сразу несколько новых связанных с дебаггингом утилит (lldbperf и lttng), то естественно подумал, что проблема пришла от них. Но ни их удаление, ни переустановка VS Code целиком не изменили ровным счётом ничего.

В довесок к этому единственная внятная альтернатива VS Code для работы с C# на Linux — JetBrains Rider — тоже косячит. Какие-то проекты она может запустить и дебаггить, какие-то — нет. Те, что мне нужны, например, она даже запустить не может. В общем, не оставалось ничего другого кроме как начать разбираться, кто убил VS Code. Читать далее Тайна «Debug adapter process has terminated unexpectedly»

Один дома и свидетельство на возвращение в Беларусь

Один дома

А мы едем в Беларусь! Вот прямо сейчас — опубликую пост, и буду вызывать такси. Это уже вторая поездка на Родину после переезда в Канаду в 2015-м, и, хотя она точно так же странно переживается внутри как и первая, есть несколько новых интересных моментов. Один с кодовым названием «канадец», а второй — «один дома». Начну, пожалуй, с него и издалека. Читать далее Один дома и свидетельство на возвращение в Беларусь

Отправляем .NET Core метрики в Graphite через StatsD

.NET Core StatsD

Уже прошло больше года с тех пор, как я подключил кусок JavaScript к collectd плагину и начал собирать данные мониторинга с нашей CI, чтобы потом хранить их в Graphite. И знаете что? Оно до сих пор работает. Даже JavaScript’овая часть. Но настали времена, когда мне нужно будет собирать метрики с .NET Core сервисов, и, чувствую, связкой JavaScript + collectd я уже не отделаюсь.

По идее, проблем быть не должно. В Graphite ведь можно отправлять данные хоть по TCP в виде текста, так что сервисы вполне могут заняться этим самостоятельно. Но можно сделать даже ещё проще. Читать далее Отправляем .NET Core метрики в Graphite через StatsD

Вторая мышиная война

Научный подход

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

Тестирование серверов и контейнеров с goss

тестирование серверовНедавно почитывал последний выпуск Technology Radar и нашёл вот какую интересную штуку в разделе новых техник программирования: «разработка контейнеров по TDD». Мдя. Ментально я пока ещё не могу провести соединительную линию между Докером и TDD, но инструменты, которые там упомянуты, оказались достаточно интересными.

Первый — serverspec. С его помощью можно прогонять локальные и удалённые сервера-контейнеры по набору BDD-подобных юнит-тестов. Тулза выглядит вполне зрелой и продуманной, поддерживает не только Linux, и всё было бы хорошо, если бы один огромный косяк (возможно, только для меня): serverspec написан на Ruby, и значит, что он абсолютно не совместим со стеком, в котором я обычно работаю.

Вторая тулза — goss — оставляет впечатление небольшого швейцарского ножика. Вроде и то немного умеет, и это. Обычно я к таким инструментам отношусь настороженно, но… goss какой-то странно прикольный, так что на него хочется посмотреть поближе. Читать далее Тестирование серверов и контейнеров с goss

Про канадские пенсии

Канадские пенсии

Среди обилия плюшек, которыми нас подкармливают на конторе, с начала этого года появилась ещё одна: на каждый доллар, положенный в мою пенсионную копилку, контора доложит ещё один от себя. До определённого предела, конечно, но и предел такой вполне ничего.

Так делают не только наши. Хватает и американских, и местных канадских контор, в которых подпитка пролетарского пенсионного фонда — один из основных бенефитов. Единственное, что меня смущает, так это то, что я вообще не представляю, как работают пенсии и старость в Канаде. Нужно ли откладывать на неё? Хватает ли пенсии на жизнь, или стоит заранее озаботиться огородиком у хайвея? И вообще, в 34 уже стоит задумываться об этом, или можно отложить до полтинника?

Знающие люди говорят, что озаботиться стоит, и чем раньше, тем выгоднее, поэтому я на всякий случай полез в гугл. А заодно посмотрел, как вообще отстоят с этим дела в Беларуси. Вдруг зря уезжал. Читать далее Про канадские пенсии

Профайлинг .NET Core приложения в Linux

flamegraphА тем временем я продолжаю разбираться в том, как дебагить .NET Core приложения в Linux. Теперь я уже более или менее представляю, как анализировать проблемы с памятью, но таких на самом деле у нас не так уж и много. Самая распространённая проблема — загрузка процессора под 100%, и тогда очень, очень хочется понять, чем же это приложение таким занимается.

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

Логи и трейсы, разумеется, существуют и на Linux, но мне было интересно, можно ли на нём профайлить .NET Core примерно так же, как и на Windows. Как оказалось, инструментов почти куча, но применительно к .NET Core основными выглядят три: утилиты perf, lttng  и perfcollect. Вот на них мы сейчас и посмотрим. Читать далее Профайлинг .NET Core приложения в Linux

Мой мини-рейд по очень классическим книгам

Клинопись

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

Вопрос, какую именно «древность» выбрать, решился очень легко. В далёких семидесятых, расстраиваясь от беспросветной тупости своих студентов, товарищ Иосиф Бродский составил список книг, который, по его мнению, обязан прочитать каждый претендующий на обременённость интеллектом индивид. Список легко гуглится, и я просто тыкнул наугад в пару пунктов, залил их в читалку и начал вникать. Читать далее Мой мини-рейд по очень классическим книгам

Размышления об эмиграции, жизни, и вообще