Category: Блогинки

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.

27.12.2023 – Георги Господинов и коледните чудеса

Не, не, не съм се побъркал, в историята няма да има библейски лиготии и подобни. Но ще е малко borderline, защото може би единствените две изключения, което позволявах около мен да говорят за религия и вяра бяха баба и Георги Господинов. Баба си отиде, но Г. Г. остава и не веднъж ми е давал утеха, когато ми е било тежко, започвайки от първите ми срещи с него с “И всичко стана луна”, после през “Естествен роман”, през “Времеубежище” (за което писах и успя да ме разреве повече пъти отколкото искам да споделя), “Физика на тъгата” и сгитайки до “Там, където не сме” и “Невидимите кризи”. Г. Г. е нещо, което може би не оценяваме достатъчно, един жив класик, който с всяка нова книга натиска различна струна в душите и сърцата ни.

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

Та имам своя си традиция датираща вечеотнезнамколкогодини (7-8 може би?) да споделям един от най-любимите ми негови стохове, част от “Там, където не сме“, който ще споделя и тук:

Тихо утро, свято утро… Честито Рождество!

Коледа, Груневалд

Оставихме трапезата невдигната,

ни чистили, ни мели,

дали са идвали тук снощи нашите умрели,

небето се отваря тази вечер,

ще дойдат гладни, няма да им пречим.

Небето се отваря, дали ще ни намерят,

далеч сме, мястото е друго

(виж пламъкът трепери).

Мястото е друго, но небето не e.

На сутринта ще прекосим през стаята уплашени,

ще мернем крадешком дали са празни чашите

(защото той си падаше).

Дали не липсва нещо от сармите,

тя толкова обичаше сарми, стафиди…

Дали бих искал да ги видя,

или да си остане тайна, страх…

Свещта е догоряла,

чиниите с остатъци по тях…

Вземи си ръкавиците, да си разходим мислите,

да дишаме студа, какво пречистено

небе, пречистен сняг, новородено слънце.

След рождеството всички спят до късно.

Тихо утро, свято утро…

Една жена излиза и отваря пощенската си кутия,

ще трябва да е нещо важно щом е тъй нетърпелива.

Родил се е, ще кажем и отминем,

но не казваме…

Кутията е празна.

Георги господинов

Та без да влизам в лирически философии и размишления ще ви плъзна по пързалката, която поех аз вчера. Снощи след 1-2 интензивни часа в битки с чудовища, дреки, върколаци и подобни (God of War Ragnarok Valhalla DLC, да не си помислите, че съм на наркотици :D ) си легнах пребит от деня, но естествено не заспах моментално и си отворих facebook-а. И там моя позната беше споделила разказ на Г. Г., който се казваше “История с чудо“. Както казах и по-горе при Г. Г. bullshit detector-а ми е по-намален, защото знам какви съкровища мога да изтърва и се радвам, че и този път направих така. Споделям тук текста за да остане дори ако той по някаква причина си изтрие поста.

Приятно четене.

Когато дъщеря ми се роди през една зима, майка ми и баща ми веднага се вдигнаха от своето югоизточно градче и дойдоха да видят бебето. Хванаха първия влак следобед и пристигнаха на другата сутрин. Влязоха, измиха се и застанаха на прага на бебешката стая. Бяха пътували с бавните камили на българските влакове цяла нощ, като влъхвите. И носеха дарове, разбира се. Не точно злато, ливан и смирна, макар че майка ми беше свалила златните си обеци, които нейната майка ѝ била дала, и ги носеше в една кутийка. И някаква сребърна пара. Баща ми носеше сурвачка, която сам беше направил от първия дрян.

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

Майка ми и баща ми стояха смутени и щастливи, като влъхви, на прага на детската стая, с огромно страхопочитание пред бебето. Не знам дали това е точната дума, но почитание имаше. А бебето беше малко като запетайка, ревящо, с още неотминала жълтеница. Те сведоха глава и направиха нещо, което не очаквах, поискаха да му целунат ръка. В патриархална култура като българската обикновено е тъкмо обратното. Младият целува ръка на стария, младият се покланя и дължи почит. Но ето как Рождеството обръща всичко. Пристъпиха плахо, с такова страхопочитание, все едно се покланят на човек, дошъл от друг свят. (А то, казано между нас, наистина е дошло от друг свят. Пътувало е девет месеца, за да стигне.)

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

Всеки, и най-бедният измежду нас, има спомен от някоя своя Коледа в детството, дори да е била скришна. Баба ми, като сираче и хранениче (дадена за отглеждане при други хора), разправяше, че на Бъдни вечер отивала в саята при овцете, прегръщала някое новородено агне и плачела. И пак плачеше, като ми го разказваше, и никога нямаше да забрави агнето. Тя, без да си дава сметка, ми разказваше библейска сцена.

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

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

Тези чудеса са малки и лични. Всички чудеса са малки и лични.

Има един ден, в който ние, дето през останалото време сме всичко останало – шефове, подчинени, работници, журналисти, недооценени, обидени, обиждащи, крещящи и навикани, юнаци и патриоти, българи и европейци, можем да събуем и оставим всичко това в коридора. Да станем деца на родителите си и родители на децата си. Затова този празник е хубав. Защото празнуваме идването на едно дете. А като има дете – всички се превръщаме в деца. И в бащи и майки. Всеки е Исус, всеки е Йосиф, всеки е Мария. И това не е светотатство, то е смисълът и то е чудото на живота.

А чудото е много лична работа.

Георги господинов

Decommission-вам nasam.be след почти 15 години

Въздъх. Преди години, още в университета имах идеята за нещо социално – тогава беше много модерно да правим “нещо като фейсбук”, но и форумите още бяха в разгара си (макар и тръгнали към своя залез вече). Реших да взема нещо по-забавно, че всички бяха много сериозни и регистрирах nasam.be. Taм си вдигнах първия блог-like сайт, който беше нещо като списък със статии по-скоро с нещата, които ме интересуваха, но с времето след като от Joomla решиха, че няма да имат съвместим ъпдейт от 1.5.х към 2.х стоя известно време и го спрях. От тогава насам си ги плащах като поп цели почти 15 години като повечето време го използвах за разни ресурси, които използвах само аз и ми трябваше просто да имам домейн за да не помня IP-та. Е, днес след като получих поредния напомнящ мейл от superhosting.bg реших, че е дошло времето да се разделим с моя белгийски приятел (oт .be ТЛД-то или Белгия).

Малко статистики:

nasam.be was registered on:

Tuesday 27th of January 2009

14 years, 10 months and 24 days

or 5441 days

Можете да ми видите тинейджърските ми писания в wayback machine датиращи от 2009 г.

Е, време беше. So long, my friend :D

13.11.2013

Явно преоткривам Таралежков, защото откакто залепнах на Вятъре не съм спрял да я въртя до вчера, когато преоткрих “Нефтохим”. Като я слушах за пръв път явно не съм ѝ дал шанс, защото ми се стори слаба, но ето, че си сменям мнението на 360 градуса (както казваше една учителка в основното ми училище).

Представям ви великолепната любовна история на “Нефтохим”:

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

припев: Ах, как ухае на Нефтохим!

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

Ах, как ухае на Нефтохим!

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

Ах, как ухае на Нефтохим!

Порастнаха и си купиха
в десети блок апартамент.
Той оператор в Нефтохима,
тя лаборант.
Ожениха се народиха си
много деца
и заживяха щастливо
сред тапети на цветя.

Ах, как ухае на Нефтохим!

Таралежков – Нефтохим

09.11.2023

Още не мога да приема, че сме 11 месец! И съм на втория Потър, ех, ех.

Бтв говорейки за книги според GoodReads съм близо до 30-те книги за 2023 г. – остават ми още 5 като чета/слушам в момента три. Нямам шанс да стигна 42-те книги от 2022, но пак смятам, че се справям добре – средно по 2.5 книги на месец не е малко, особено с две деца.

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

E, не съм като Васил, който гони 100 книги в GoodReads, но пак съм доволен.

бтв вчера Теди ми каза, че последната книга на Гарлбрайт за Корморан Страйк и Робин Елакот – “Отприщен гроб” е в пчетат на български и е само 1016 страници :D Чакам я с нетърпение в Сторител.

03.11.2023

На обущаря обувките били най-скъсани, нали?
Е, мислих да сменя архитектурата на блога отдолу и тръгнах да го правя, но много други неща ме спряха. Реших да си оставя блога малко down за да мога да получа пак желание да пиша в него. Сигурно звучи малко тъпо за вас, но е много трудно човек да пише ежедневно, какъвто е и моя план.

Та накратко – Оги беше рожденик скоро, Борко и той – детски рождени дни, торти, забавления. В офиса нещата са жестоки – колегите са топ, проектите – също.

Скоро запрятам ръкави с малко повече писане тук.

Поздрави на тези на които съм липсвал.

19.06.2023

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

И съответно впечатленията ми за някоя песен/група/конкретно изпълнение си остават често за мен.

Но богу, Ren ми е откритието ПОНЕ за 2023. Самоиздат (както обичат да казват старите хора), поет, музикант, невероятно дълбоко проникващи текстове. Самият той е болен от много години, както казва в Hi Ren – “I spend half my life ill” (btw kudos за ill вместо sick, много ми харесва) – автоимунно заболяване има, страда от психоза, лекарите му поставят грешна диагноза – депресия, биполярно разстройство и синдром на хроничната умора, а по-късно и с лаймска болест. Общо взето последният да затвори вратата.

Та аз открих Ren от random Spotify playlist, който той ми приготви. И още в първата минута знаех, че това ще е важно. И исусе (нарочно с малка буква) – беше. Само ще ви кажа, че съм научил на 80% текста и не съм спрял да я въртя в колата и в офиса.

Та ето, че идва нещо ново, негово и аз съм – Please don’t fuck this one. Песента се казва Su!cIde и започва много разочароващо. Едно поп такова. Изслушах я на заден фон докато правих други неща и като свъши си казвах – ок е, но не е masterpiece. Тъкмо щях да затварям таба и се оказа, че песента не е свършила. Подобно на Ren накрая има стих, който е потресаващо болезнен, великолепен и няма да ви излъжа ако ви кажа, че накрая ме разплака.
Когато бяхме малки (13-14 да речем) имаше едно момиче от нашата приятелска група, която реши, че няма да живее повече. Разбиха ѝ сърцето, а тя скочи. От тогава минаха 20 години и още се сещам понякога за деня в който всички научихме.

Сещам се и за Орлин, който си замина преди около 6 години. И за него се сещам сравнително често.

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

Представям ви Ren – Suicide

20.06.2023

Късно е, всички спят. Аз се прозявам през няколко минути, но вътрешно кипя. Утре ще ходя да направя първите си 100 км. от месец насам и ме сърбят ръцете по няколко повода, основните два са:

  • Днес си взех Garmin 530 заменяйки сегашния ми Garmin 130 plus. Не мигрирах към 540 по много причини, но основно защото нямаше game changers в нещата, които търсих
  • Ще се опитам да карам над 80% в HR зона 2.

В общи линии е общоприето heart rate зоните да се разделят на 5 основни такива. Така се сегментира базовото натоварване и дават добра ориентация колко си къса гъза човек. Процентите са на основа максимален пулс (моят за ориентация е 183 удара в минута) Без да навлизам в много подробности петте зони са:

Зона 0 – натоварване под 50%, обикновено се приема за почивка

Зона 1 – 50%-60% или warm-up/cool-down стадии, обикновено много леко натоварване

Зона 2 – 60-70% – създаване на основна усойчивост при дълги натоварвания, оптимапен момент за топене на мазнини, обикновено трябва да се целим идеалния таргет при поддържане на големи разстояния. Нищо, че е зона 2 от 5 това си е доста тежко предвид, че човек се движи обикновено на ръба на 70% от максималните си възможности

Зона 3 – 70-80% – подобрява значително аеробната кондиция (по дяволите, трудно ми е да превеждам такива термини, искам да кажа aerobic fitness)

Зона 4 – 80-90% – подобрява анаеробния праг (това означава, че натрупването и елиминирането на лактат са в максимално равновесие)

Зона 5 – не искате да сте там. Зона 5 е за подобряване еластичността на бързоподвижните мускули, което подобрява спринтовете ни.

Първо – прочетох си превода по-горе – отвратителен е, ако някой има по-добри и адекватни предложения съм целия в слух. Второ – за хората, които си казват – 60% не е много мога да ви поканя за час на тренажора. И аз не смятах, че ще е толкова трудно.
А като си правих FTP тестовете (това дори няма да се опитвам да го преведа) трябваше поетапно да покачам до абсолютния си максимум в който мога да въртя за да си определя колко са ми максималните ватове. Та там много лесно човек може да изпадне в агония за много кратко време. Както изпаднах и аз. Не ми остана една капка сила, беше невероятно трудно.

Дейба, трябва да поработя малко върху писането си. Първо, може би не трябва да пиша посред нощите и второ – да пиша по-често. Че иначе стават такива бълбочи.

Как да е – утре ще е едно много забавно каране от Варна до Балчик (бензиностанция Лафи, тези мои приятели с които сме се карали двуцифрени пъти, един път не ме пуснаха в една виелица да вляза да си взема кафе, какви неща им чуха ушите не можете да се представите) и обратно. Тъкмо ще разцъкам и Garmin-а да видим дали ще ми оправдае очакванията (едно от което е батерия, която държи 20 часа според производителя).

Ако на някой му се кара утре рано може да пише, ще си гледам комуникациите.

29.05.2023 – нов обектив

Малко background за хората, които не ме познават покрай фотографския ми период. Преди 14-15 години някъде се зарибих жестоко по фотографията и си взех Пентакс к100д с китовия му 18-55. Страхотен апарат със стабилизация в тялото и потвърждение на фокуса на стари ръчнофокусни обективи. Тогава съдбата ме срещна с може би най-доброто стъкло с което съм снимал – Pentax 50/1.7 (произвеждан между 1977 и 1984 г.). Какво великолепно цветопредаване имаше този обектив направо не е истина. А бокето? Пф. Велико.

Но се разделих с Пентакса преди доста време, после изкарах още много без техника, а после си взех Canon 1, който е бил възможно най-високия филмов клас навремето и с него имам също невероятни спомени, но в този свят няма как да нямаш и цифрово тяло. Та доста години време карах с една абсолютна класика – Canon 350d с китов 18-55 и няколко ръчнофокусни. Преди 3 години реших да взема един 50/1.8 (имах до преди това 50/1.8, но ръчнофокусен, а без “глухарче”, което да потвърждава фокуса е трудна работа), но излезе оферта за малко повече за Canon 450d.


Разбирам объркването ви, но се дръжте, скоро приключвам.

Та мина се някакво време и Марто, мой приятел, ми даде своя Canon 5D със Sigma 17-50/2.8. Еми ебахти и обектива бих казал. Страхотна динамика, бърз автофокус, аберации и винетиране няма в day-to-day снимките ми, плюс покрива много важен диапазон – такъв са снимане на деца вкъщи – хем широк (Борко много обича като ме види, че ще го снимам и да се навре в мен), хем светлосилен.
Та ходих скоро да снимам изписването на малката Лора и Марто ми даде обектива си и това беше последната капка. Казах си, че ако не взема нещо такова по-добре да си запаля техниката и никога повече да не снимам с нищо по-различно от пребития ми телефон.

Отне ми 2-3 дни да намеря нещо читаво в лицето на 90% идентичния със Сигмата – Tamron SP AF 17-50mm f/2.8 XR Di II VC LD IF. И за да не съм голословен ще ви разчета абревиатюрите вместо да търсите:

  • SP – “Super Performance.” или част от по-високия клас на Тамрон обективите
  • AF – Очевидно е Auto Focus
  • 17-50mm е фокалната дължина на обектива
  • f/2.8 е апертурата му или това колко светлина може да поеме. Колкото по-малко е числото толкова по-добре
  • XR – Extra Refractive Index – технология на Тамрон за намаляне на размера и теглото на обектива, абсолютно ненужно ако питате мен
  • Di II – Digitally Integrated Design II – тоест обектива е с дизайн специално за crop (APS-C) тела
  • VC значи, че има стабилизация
  • LD – Low Dispersion – технология за намаляне на хроматичната аберация, особено при по-широкия край на обектива
  • IF – хитринка, която я има във (всички?) съвременни обективи – при фокус обектива не ходи физически напред или назад, а дейстивето се извършва в него самия.

Та след 20 минути ресърч за да не ви подведа докато писах горните редове идвам да кажа, че с две думи обектива е китов, но на стероиди. Не е от елитната L серия на Canon да речем, но със сигурност е по-добър от китака. Като цяло аз за момента разцъквам само в нас и на високо ИСО, но това, което съм видял е супер. Скоро време ще го изкарам навън да видим как се справя.

Спирам да пиша, че в тези късни доби сигурно ще се изпусна и ще разкажа как снимахме цици на една стробистка (знам, знам, но не е маструбистка) среща в Добрич преди поне 15 години, хъхъ.