Author: Недко

Author, writer, cyclist and a passionate DevOps/QA engineer that love to share his knowledge with everyone.

12.08.2024

Вчера им върнаха колелото от ремонт. След 2 дни борене като диви прасета момчетата успяха да го докарат в може би най-добрата му форма в която е било до този момент. Детайли за ъпгрейдите и цялосния сетъп – скоро.

Ще ви разкажа за снощното им каране – излязох да тествам промените по колелото, защото те не са малко (от нови компоненти, през поправени такива и до микроскопични настройки, които имат доста голямо значение след 700 км на колелото). И излизам аз и реших да карам бавно за да мога да емулирам карането си и на Дунав Ултра – спокойно темпо, смяна на позиции, следене на метрики (скорост/каданс/HR zone и т.н.). Плюс това изпробвах и нова електролитна напитка. Еми не успях. Фейлнах грандиозно. В момента в който излязох от града и настъпах малко и си викам – “Айде малко темпо, колко му е”, после малко повече, после още повече, после – на абсолютния си максимум. Направо се разбих (от кеф и от каране). Ето и трака ако на някой му е интересно.

И още нещо – в някакъв момент свалих слушалките и раздиращият глас на Кори Тейлър секна и остави шумът на природата да ме обгради и да влезе в мен. Хиляди щурци пееха своята песен, птички си говориха някакви непонятни за мен неща, а как миришеше … ах как миришеше – на гореща земя, на слама, на прах и на живот. Мисля следващия път да намаля още повече времето, което прекарвам със слушалките и да дишам и слушам тази симфония на природа, моят дъх и звуците на веригата на колелото в синхрон с тихите прищраквания на командите.

Ех, Добруджа, моя любов.

Днес ако мога ще направя още едно каране. Време е вече да “кажа” на тялото си, че скоро ни чака много, ама много бой и трябва и двамата да сме подготвени. :D

Георги Господинов с нова книга съвсем скоро

Преди малко видях, че Г.Г. ще пуска съвсем скоро новата си книга с името “Градинарят и смъртта”.

Това са великолепни новини, защото както той пише във FB – “Макар че всичките ми книга са лични, тази май е най-личната след „Естествен роман“. Надявам се сама да намери пътя до следобедите на своите читатели.”

Тук ще оставя и частта, която той е решил да сподели с нас. Вече съм си пуснал preorder и нямам ама абсолютно никакво търпение да ми падне в ръчичките:

Баща ми беше градинар. Сега е градина.

Тази книга няма лесен жанр, трябва сама да си го изобрети. Както смъртта няма жанр. Както животът. Както градината. Роман елегия, роман градина – има ли значение за ботаниката на тъгата.

История за отиващите си бащи в един отиващ си свят. За тези трагични пушачи, често отсъстващи, вкопчени в шнорхела на цигарата, плуващи в други води и облаци. За баща ми, който крепеше на раменете си тонове минало и не спираше да го разказва. Тази Шехерезада – баща ми. Сега миналото се пропуква тихо и започва да се срутва над мен с всичките си следобеди.

Не книга за смъртта, а за тъгата по живота, който си отива. Има разлика.

Г. Г.

Preorder от тук.

09.08.2024

Часът е някъде около 1 сутринта и слушам Димо от ПИФ.

Скоро се срещнах случайно с Гери, която ми беше sister in crime когато Димо идваше на концерти във Варна. Тя ме запозна с мееега много хора и двамата имаме супер много спомени от там.

Нещо се случи и минаха много години преди да се засечем случайно отново. Припомнихме си Димо и с удоволствие установих, че и за двама ни страстта към неговата музика изобщо не е намаляла (както да речем беше навремето с изпълнители, които като приключат по една или друга причина просто биват забравени).
Хубаво е човек да си спомня за минали неща (понякога). А на ПИФ им помня всяка дума от песните с паузите и акустичните варианти.

Ех, Димо, жалко, че така те загубихме.

Edit – май ще е добра идея да подготвя един плейлист с най-доброто за мен от ПИФ има неща, които съм забравил като например Понякога.

05.08.2024

Мамоу – първо след поста ми за това, че ще съм лектор в QA:ChallengeAccepted в LinkedIn имам почти 100 лайка, което се равнява на един газлион във фейсбук. Второ – TinQin постнаха също анонс, че ще съм там.

Сега ще е много забавно когато тръгна да си пиша постовете, които съм планирал за фестивали и концерти, за тежка музика и подобни.

Но никой не е умрял от слушане на малко Dimmu Borgir.

Освен това ще завъртя и един въпростник за това на кой какво ще му е интересно по темата, защото (както никой път) започвам да си правя презентацията от рано.

Изключително съм благодарен на хората, които ми писаха, оказа се, че блогът има повече от 2-3 читателя, което ме накара да се усмихна, а това, особено последно време, си е рядкост.

А да – освен това за първа година от незнамколковреме не празнувам деня на системния администратор, което също е тъжно.

Ще бъда лектор на QA Challenge Accepted 10.0

TLDR – умря циганката та да се похваля – отново, за четвърти път (!!!), ще бъда лектор на юбилейното издание на QA: Challenge Accepted .

Преди стотина години (или по-точно 2018 г.) когато работих като QA в Немечек един ден когато бях в софийския офис Съби ме попита – “Недко, чувал ли си за QA: Challenge Accepted?”. Разбира се, че бях чувал и освен това много ми се искаше да отида. Тогава още не познавах нито Петър, нито Виктор, нито Милен нито още един куп хора, но бях чувал за тях и много исках да се видя, да науча каквото мога от тях.

Та Съби като един лидер ме погледна в очите и каза – “А искаш ли да споделиш твоя опит с останалите?”. Ако бях в латиноамерикански сериал щях да се хвана с обратното на дланта си за челото и да припадна на забавен кадър. Как така ще ходя да говоря ПРЕД ВСИЧКИТЕ ТЕЗИ ХОРА??? Не, не, отказах му любезно и той беше – “Ок, каквото те кара да се чувстваш щастлив”.

Да, обаче примамката беше пусната и само след няколко седмици препрочитайки всичко каквото мога за събитието и изгледайки всички възможни видеа (или поне по-важнте, айде да не преувеличавам) пак бях в София и му казах – “Правим го”. Успях да вляза в рамките на call for lectures и пуснах това, което ми беше интересно тогава – performance testing. Взеха, че ми харесаха идеята (аз бях в шок) и ето, че няколко месеца по-късно подпухнал от една седмица пиене с колегите излизам на сцената. Казах 1-2 вица, споделих няколко идеи и като цяло се чувствах добре на сцената.

2019 г. не пропуснах да се запиша с другата си страст и говорих за сигурност – “Security Testing – Fast Forward”.

2021 г. – мина време, ковиди, роди ми се първото дете – отново излязох на сцена и тогава изпитах нещо съвсем ново пред 700-те човека на живо и незнамсиколко онлайн гледайки стрийма. Тогава за пръв път получих паник атака на сцена докато говоря за това “Как да (не) говорим по конференции”. Иронично, м?

2022 г. пак кандидатствах и ме одобриха с темата с която ще говоря тази година, НО малкият ми син реши да се деплойне по-рано с няколко седмици и нямаше как да пътувам до София, дори и за ден.

Та ето ни 2024 г. и десетото, юбилейно издание – ще си говорим за QA, за DevOps, за моето приключение (нецензурирано зад – “всичко е страхотно” и е “цветя и рози”, а искрено и без ненужна полемика). Ще си поговорим защо реших да сменя професията си на 33 години и ще си говорим за това как QA ми помогна много за да мина на съседния бряг и да хвана DevOps за ушите с пълна сила.

Ще ви разкажа и как затрих една preprod база в първите си седмици, как на едно демо (пред 50-тина колеги в Немечек) си съборих целия клет VPS (който неиронично се нарича marvin от Пътеводителя (знаете защо)) и купчина истории за това кое ми е помогнало и как за да мога да се чувствам комфортно в позицията си на DevOps (и QA по душа) в TINQIN към този момент.

Това май трябваше да е епизод от подкаста, защото имам още 50 истории за разказване, но да не прекалявам.

Ще се видим на 28 септември на, около и под сцената на QA: Challenge Accepted , а тези, които искат да направим TCP handshake трябва да носят поне една бира за да има поне ACK (това от онзи дик джоук, който няма никакъв шанс да видите на лекцията).

Вместо край

Вдишвам, издишвам, вдишвам, издишвам.

Навън е тъмно, новолуние е и не се вижда нищо освен бегли спомени от форми в далечината.

Главата ми е пълна до горе. Беше гаден месец, гадни месеци по-скоро. И в момента имам толкова много тежест имам в главата, че я усещам празна. Празна, но някак празна по правилния начин, тук в този момент.

И натискам колкото мога. Застанал съм на лакти, едно малко велкро ми продира лявото бедро, но не спирам.
Усещам мускулите си просто като парче месо, нищо повече. Не усещам нищо. Нито вече парещият ми дроб, нито краката, нито ръцете, нито това, че усещам вече вкус на кръв в устата си.

Усещам обаче въздуха, ароматите на билки наоколо, усещам себе си, усещам че съм там, където искам да бъда. Усещам, че съм аз.

Мисля постоянно за децата и се сещам за пухкавите им крачета, за “Тати, тати, може ли да ми скъсаш праскова” на Борко или “Таааати?” на Оги.

И знам, че ако нещо се случи с мен и дойде краят точно в този момент бих го приел без възражения. Ще бъда в мир със себе си, макар и без последно “Довиждане”.

Идват десетте километра и времето да обърна посоката. Малки буболечки се блъскат в главата ми, а Кори Тейлър пее сърцераздирателната Snuff, очите ми са пълни и идва време за прибиране вкъщи.

Призраците на бегли пропорции кръжат около мен, тъмно е, някои ще кажат – “като в кучи гъз”, а аз – “Като в душа”. Главата ми се накланя настрани, но без да искам това. Изморен съм, празен съм отвътре, искам пак да видя децата и не знам дали искам да се прибирам повече. Може би ако имам късмет и се случи нещо по пътя на обратно…

Не се случва.

Прибирам се и си лягам в празното легло, в тихата стая, сам, прегърнал любимата играчка на Борко.

И сълзите започват да текат, както всяка вечер от вече седмици насам.

Празно е, тихо и боли. По-добре няма да стане.
И се усещам, че си мисля дали следващия път няма да имам късмет и просто да не се прибера? Инциденти се случват на всеки.

LEENA / ТАХОМА / ГЕНА – БЛАГОДАТ

Някой пак е палил пало санто
и витая в небесата – ало! ало!
Само две чертички
върху листа бял
аз смятам, че е плюс, а ти че кръст – не ми се вярва

Първата ти чакра – да почнем от нея
да разтърсим и храма на твоя бог водолея
потъвам във вина, но не ходя ръце да мия,
бърша си мустака в бедро и треперя.

Случайна ли беше нашата среща
или някой друг диктува кое и как да бъде точно.
Аз вярвам от мен зависи какво да си сготвя,
не и как лунен лъч светва във хола.

Далеч не мисля всичко важно е в главата ми,
но как да преборя силното желание за пълен мир.
Ще седна на килима в поредния опит
отвътре някак да усетя спокойствие.

Не бой се!
Знам един в дианабад, дето лее
коршуми и май, че не е шарлатан голям.
Се’ш се – пращам хора, квартали, мунициите, схемите.
Да личи отдалече, че съм паднал от Марс.
Всичко е игра на зар – дюшеш, картите таро слушаме.
Паля цигара, чуй ме – креват от лилав пушек.
Телата – пожар адов, вселена нагорещена
и пламва оставя само пепел, легенда нема.

Луната ме съблече с лъчи
хладно ти е, с теб ме завий и
нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.
Луната ни съблече с лъчи,
телата ни са бели лъжи и нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.

Колко трудно е да си спазим оправданията?
Колко псувам тая карма, а не вярвам в тва.
Колко пусто е без вяра, но това съм аз!
За к’во се цупиш? Т’ва от моя зодиакален знак.

Да, гали ме по гривата – с пешка взимаш царицата
Остани по без нищо, без обеци и без ризница.
Уязвими взаимно, безсилни пред изкушението
Да намерим нещо повече от телесното, къде е то?

То е там, където има тишина,
Където мислите витаят, но не са ни господар
То бяга от излишния шум и тая пуста суета
като хипноза.

Все изгубени в мисли, избледняла сетивност.
Цялата форма започва да губи смисъл.
Вземи едно кълбо прежда, изплети ми душата си.
Усети ли? Къде си ти?

Изгумен в лабиринт на подсъзнанието,
Тъмен като в рог – мазохист съм и желая го
Страх ме е, но слушай моя страшен вой!
Слушай к’во ти ка’ам – безразсъдно е да предаваш тая разруха за сакрална!
Изгубени във вакуум се разсейваме с приказки.
Задръжки, предразсъдъци, претенции – събличам ги.
Световете ти вдишвам ги дълбоко в ямата
и ако не е завинаги, то в отсрочка е вярата.

Луната ме съблече с лъчи
хладно ти е, с теб ме завий и
нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.
Луната ни съблече с лъчи,
телата ни са бели лъжи и нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.

Чуй се, вкопчен си в материята
Неусетно пак ми кзваш за твоя път – земния, дар.
Не отричам и страстта е безгранична
Тръгвам, битката ми е лична.

Лице в лице изгубено его, което търси име.
После вещ, топлина, някой да го завие.
Това е само началото на едно от онези
непростими предстелства.

Луната ме съблече с лъчи
хладно ти е, с теб ме завий и
нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.
Луната ни съблече с лъчи,
телата ни са бели лъжи и нищо повече.
Отпусни се – падаш – вече не си
докосни ме без ръце и вземи
много повече.

How to view jar version with unzip

Набързо пиша са future self, че ако искам да видя каква версия на application-а съм деплойнал може да стане лесно с unzip и по-специално с:

# unzip -q -c example-app.jar META-INF/MANIFEST.MF
Manifest-Version: 1.0
Implementation-Title: example-app
Implementation-Version: 1.23.4
Start-Class: com.example.example.app.ExampleApp
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 3.2.1.RELEASE
Created-By: Maven Archiver 3.6.1
Implementation-Vendor: example
Main-Class: org.springframework.boot.loader.JarLauncher

И виждаме, че използваме версия 1.23.4. Супер удобно както в моя случай като администрирам доста различни Java сървиса и непременно в някакъв момент започват едни – кой какво е деплойнал, къде ,ама как, кога и подобни.

Можете да направите и в един oneliner връщайки само версията:

# unzip -q -c example-app.jar META-INF/MANIFEST.MF | grep 'Implementation-Version' | cut -d ':' -f 2
2.13.4

бтв докато писах последното изречение – ако се наложи да инспектирате например кога е направена последната промяна по някой конкретен файл или искате малко повече инфо можете да използвате stat:

# stat example-app.jar
  File: ‘example-app.jar’
  Size: 90837539        Blocks: 177424     IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 8669310     Links: 1
Access: (0500/-r-x------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:usr_t:s0
Access: 2024-01-10 10:53:52.964543333 +0100
Modify: 2024-01-10 10:53:33.700533240 +0100
Change: 2024-01-10 10:53:33.700533240 +0100
 Birth: -

No space left on device – моят най-голям враг

Човек и добре да живее все някога му свършва мястото на сървъра.
Освен marvin имам и един друг, много по-малък VPS на който се мъдри един WordPress. Та вчера UptimeRobot-а ми светна, че сайта е down, логвам се и:

user@xxx:~# tail -f /var/log-bash: cannot create temp file for here-document: No space left on device
-bash: cannot create temp file for here-document: No space left on device

Интересното е, че си имам конфигуриран logrotate, но файла се е пълнил прекалено бързо за под един ден, колкото му беше retention period-а и бам – успял да напълни диска.
Та как да е, сърбяха ме ръцете и се метнах с главата напред да дебъгвам. В крайна сметка се оказа, че ispconfig (това недоразумение, което не знам защо още търпя) е решило с последния ъпдейт да смени версията на php от 7.х до 8.х и оттам тръгват редица warning messages от този тип:

24.03.2024-18:34 - WARNING - There is already a lockfile set, but no process running with this pid (26905). Continuing.
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_init() in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php:83
Stack trace:

0 /usr/local/ispconfig/server/lib/app.inc.php(47): db->__construct()

1 /usr/local/ispconfig/server/lib/app.inc.php(216): app->__construct()

2 /usr/local/ispconfig/server/server.php(51): require('/usr/local/ispc…')

3 {main}

thrown in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 83
PHP Fatal error: Uncaught Error: Call to undefined function mysqli_init() in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php:83
Stack trace:

0 /usr/local/ispconfig/server/lib/app.inc.php(47): db->__construct()

1 /usr/local/ispconfig/server/lib/app.inc.php(216): app->__construct()

2 /usr/local/ispconfig/security/check.php(32): require('/usr/local/ispc…')

3 {main}

thrown in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 83

Ta така де – изпразних съдържанието на лог-а, което вече беше няколко гигабайта, смених версията на правилната такава с

sudo update-alternatives --config php

и всичко заспа. Ама пак трябваше на мен да се случва… :D

Note to my future self – мигрирай към latest Debian вместо да оправяш простотиите на ISPConfig.

07.01.2024 – Оги

На вашето внимание – Оги.

Отдавна не съм писал за него. Оги е обичлив, танцувален и обича да хапе (като побеснял пинчер). Обича да се гушка и не обича да му сменяме памперса в колата.

Преди седмица бяхме на гости на баба и дядо с Оги, Борко и Зуза и на връщане стана малка беля от памперсен тип. То хубаво, обаче Оги е като Армен Назарян през 2000 г. в Сидни – прилага ключове, избягва ловките ми опити да го хвана за краката да не се омаже целия и като цяло не е почитател на цялата тая работа със смяната на памперсите.
Да, обаче около с. Църква рецепторите ми блокират от нежния аромат на ядрено гориво и блато и трябва да отбием докато Борко спи, което си е хазарт от най-високо естество.
Вадим Огито навън, обаче понеже е жилаво копче ни е ясно, че в колата шанс нямаме. За това правим като всеки нормален родител – Златина държи Оги във въздуха, аз му махам панталонките, бодита, памперса, мислено припадам около 6 пъти, вадя морките кърпички и бам – те са се трансформирали на сухи такива. Какво ще правим сега? Еми чистим, не мога да го избърша в асфалта (помислих си, но не би било много ефективно). Чистя, а очите ми са пълни със тъга и горест, мухи започват да ни обикалят.
През това време минават около 5-6 коли и всички зяпат сцената в която все едно полагаме Оги на някое божество. Може и да са звъняли на ченгетата, но никой не ти потърси в последствие.
Оги е доволен, че е било смешно, а аз вътрешно съм сгърчен, защото знам, че Борко 100% е събудил, отварям врата и шок – човекОТ спи. Учудени сме аз, Злати, Оги и 5-6 мухи, които започнаха да ни обикалят. Айде турбо режима на поставяне на бебе в детско столче, Златина търси торбичка за да прибере памперся, тя отдавна е на някакво по-добро място в което пият кафе с Мат Диймън и си говорят за последните му филми. Мятам се в колата, първа, газ и … Борко се събуди 5 минути по-късно.