Знаехте ли, че повечето творби на Винсънт ван Гог ги има сканирани с добро качество на сайта на нидерлански музей – https://www.vangoghmuseum.nl/en/collection?Q=Vincent%20van%20gogh
v 0.7 | "Chaos is inevitable and somehow enjoyable"
Знаехте ли, че повечето творби на Винсънт ван Гог ги има сканирани с добро качество на сайта на нидерлански музей – https://www.vangoghmuseum.nl/en/collection?Q=Vincent%20van%20gogh
На тренажора съм от 45 минути въртейки познатите интервали – няколко минути загрявка и след това 5 минути в червеното, после 5 минути въртене в зона 1 и така 5 пъти.
Васът е точно 0:25, аз съм се заклел пред себе си, че ще съм в добра форма за Дунав Ултра 2025 и въртя на тренажора. Пот се стича на вадички, краката горят, усещам познатото изтръпване на ръцете – усеща се като нежна паяжинка и след час не си усещаме пръстите.
Минали са 45 минути от началото на тренировката, но главата ми не се е изпразнила както обикновено. Онзи в мен още спи. Остават 10 минути.
Пулсът ми вече е в червено, краката ми леко треперят.
Остават пет минути.
Ето го. Мдам. Винаги, винаги към края идва моя така нужен букет от адреналин и хормони, които да събудят най-първичното в мен, да ми изпразнят главата и да кажат – “Днес ще се мре”.
Остават 2 минути.
Ето я дозата, която търсих последните 58 минути. Краката ми се изпълват с енергия, гърдите с топлина, а ръцете хващат с всичка сила кормилото.
Остават десет секунди.
Девет.
Осем.
Моето dies Irae идва.
Седем.
Шест.
Вдишване, изпъване и ето ги 700-те вата в педалите. Затварям си очите. Това ще боли.
Пет секунди. Усещат се като 5 минути.
Четири секунди. 700 вата, консистентно. Усещат се като 10 минути.
Три секунди. 700 вата. Усещат се като 20 минути.
Две секунди. 700 вата, без отклонение. Седемстотин, хора. Се-дем-сто-тин. Усещат се като половин час.
Една секунда. 700 вата. Очите ми са пълни с пот, не издържам и извиквам пронизително. Краката ми горят. Ръцете ми треперят. Пред очите ми е почти черно.
Финал.
Поглеждам Garmin Connect и се пуля докато се опитвам да си поема въздух. PR при първите шест дисциплини:
| 1 sec | 1112w |
| 2 sec | 1101w |
| 5 sec | 1093w |
| 10 sec | 1027w |
| 20 sec | 899w |
| 30 sec | 631w |
Хиляда сто и дванадесет вата за една откачено дълга секунда.
Краката ми треперят. Дописвам този литературен бъркоч и влизам да се изкъпя. И да мисля върху цифрите. И върху това наистина ли съм толкова зле? И това след работен ден, дълги срещи в полунощ.
Пиша за бъдещото си аз (и бъдеща статия за дейбъг на k8s). Тук ми е списъка с малките радости в живота при дебъг и по-точно:
kubectl logs -f podname
2. За повече инфо около някой pod (особено когато вече е умрял и не можем да му видим логовете с горната команда) имаме:
kubectl describe pod
Имаме доооста информация включително и малко логове, имаме си и друга информация като volumes, портове, от къде се контролира (особено полезно ако като тепърва започвате с k8s и тръгнете да триете под и той след 5 секунди пак възкръсва като Марая Кери при падането на първата снежинка за годината) и още много.
3. Филтриране на подове и игра с output-а на kubectl. Ако искате да видите всички running pods какво правите? Мда, със сигурност не правите като мен – първичното решение да направите kubectl get pods и после да въртите разни bash тъпотии за да филтрирате. Можете обаче да използвате супер полезните field-selectors и да правите с output-а каквото си пожелаете. Нещо, което ми трябваше е да видя всички работещи pod-ове на кои node-ове живеят. Стана с една команда:
kubectl get pods --field-selector status.phase=Running -o wide
4. Какво става на клъстъра ми? Всеки се пита понякога, особено ако си хоствате сами k8s-а. Е, можете да намерите много информация с:
kubectl get events
Изсипва ви тонове с информация. Можете да сортирате по време с kubectl get events –sort-by=’.lastTimestamp’, но и нещо, което не знаех до момента в който не тръгнах да пиша тази статия. Можете да видите предишните stage-ове на вече умрели pod-ове! Което е супер полезно стига да им знаете името – kubectl get events podname
5. CPU/Memory usage per node/pod, особено както сега се боря като дебела женичка в добричка дискотека 2000 г.
kubectl top node nodename
kubectl top pod podname
6. Приключвам с най-верния ми приятел – kubectl exec, който ми позволява да се логна на pod-а и да видя логове и каквото друго ми е нужно. Тук е хубаво да отбележим, че докато работите по някой dockerfile, който е по-засукан можете да използвате root user-а. Не е стандартна, нито добра практика, но ще ни спести няколко билда. Като посвикне човек вече става интинктивно. Имайте предвид, че тук викаме bash, но ако ти каже, че няма използвайте sh:
kubectl exec -it podname -- bash
Също така можете да изпълнявте команди директно на пода, например искаме да видим всички env vars на pod-а:
kubectl exec -it podname -- env
7. Get k8s secrets directly (convert base64 secrets on the fly)
Когато работим със secrets или sealedSecrets ни се налага понякога да видим някой secret. Тяхната природа е да бъдат base64 кодирани и имаме още една стъпка в декриптирането. Е, с тази команда (забележете, че трябва да имате инсталиран jq):
kubectl get secrets some-secret -o jsonpath='{.data}' | jq -r 'to_entries[] | "\(.key): \(.value | @base64d)"'
7.1 Ако пък не искате да използвате горната команда (хинт – можете да си я сложите като alias) – можете да декодирате и кодирате стрингове по base64 директно в конзолата с:
~ echo "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | base64
aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1kUXc0dzlXZ1hjUQo=
~ echo "aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1kUXc0dzlXZ1hjUQo=" | base64 -d
https://www.youtube.com/watch?v=dQw4w9WgXcQ
Edit – мислих да кръстя статията “Debug Kubernetes like a pro”, но съм много далеч от pro та за това – shrimp.
Снощи Оги става 4 пъти, а аз – 6. Това ми осигури точно 4 часа сън. Днес денят беше дълъг и труден.
Но за друго пиша аз. Преди мноооого години, преди един цял живот, направих частично моето Голямо каране. Тогава бях със стоманената шосейка и мераци за това да направя за седмица няколкостотин километра. Беше бомбастично.
Но друго ми е сега в ума – през цялото време въртях OST-то на филма Into the Wild (който ми е в топ 10), което е на Eddie Vedder. Нямам думи да опиша великолепието на Еди и целия, це-ли-я албум. До ден днешен като чуя някоя от песните, особено Long nights ми замирисва на 6 сутринта, кафе на газово котлонче и чертаене на маршрута на деня.
От няколко години ми се върти в главата какво ли би станало ако десетина дни правя всеки ден по 100 км. и като цяло до къде би ми стигнала мотивацията. Ако намеря добра инициатива бих се включил, дори и от тренажора когато децата са с мен.
Един от най-големите ми quality of life improvements около моята ежедневна работа около VSCode е да направя така, че при отваряне на терминал той да бъде в директорията в която ми е редактора.
Защо?
Защото не харесвам visual git решенията и ми е много по-удобно да работя в терминал. Но добър пример е когато работя по няколко репота, но терминала отдолу ми е един. Така става, че работя по репо Х, но терминала ми е в репо Y. Трябва да обикалям по директории и да сменям за нещо елементарно като например един commit. И ето тук ни влиза в помощ един shortcut, който можете да намерите в Keyboard Shortcuts и потърсите за:
workbench.action.terminal.newWithCwd
Аз лично му сложиш command+T, защото вече ми е в muscle memory. Така ако правя нещо и искам да извърша някоя елементарна операция просто отварям нов терминал, върша си нещата и го затварям.
Това решение ми спестява тонова писане.
Мислих да запиша цял епизод за книгата, което и ще направя, но днес (вече вчера пишейки това в 0:04 часа на 07 Май) Георги Господинов сподели във фейсбук последната си страница на книгата.
И ме връхлетяха прекалено много спомени сещайки се за нея докато я слушах. Първо, че това стана малко след като си замина дядо, на който съм кръстен и второ, че периода сега, особено около развода, е чудовищно труден.
Но да се върнем на книгата. Никога през живота си не съм ревал на книга толкова, колкото на тази. Връзката, която Господинов има с читателя е феноменална. Всичките му романи са рефлекция на нашите собствени вътрешни светове, страхове и възгледи. Помня как веднъж стоях в едно заведение и пиех кафе и слушах книгата с великолепния глас на Владо Пенев и просто не мога да спра да рева. Спирах сигурно 3-4 пъти и то през всеки 5 изречения ново копие, което те раздира вътрешно и се сещаш за твоя си баща, за твоя дядо, за себе си ако щеш. И боли ли, боли.
Първите 50-60% са много трудни са четене/слушане, после може би става маааалко по-лесно, но пак си е трудна работа.
След седмици трудности от всякакви порядъци днес баш на празника реших, че е време да направя нещо за себе си и след три изпрани перални, сгънати дрешки и подреждане на цялата къща дойде време да се кача на колелото и да видим къде ще ме отведе.
Идеята беше първо да покарам стотина км, което са долу-горе до Балчик и обратно, но реших да спазвам идеите за малките навици и реших да не се самоунищожавам и да подходя малко по-рационално. Реших да завъртя 50-тина км. до Белослав, оттам с ферибота до Страшимирово и оттам обратно към Варна.
Не разбирам защо, но през половината време бях в топ форма, даже по-ското 65% от времето. На 4% изкачване карах с 13 км/ч, което за мен си е над средното.
Как да е, преди да видя табелата Варна бях със срена скорост от 23 км/ч, което за мен си е мечта.
През голяма част от времето карах като активно се опитвах да не мисля за нищо, защото иначе сигурно нямаше да мога да финиширам, а в ушите ми звучаха новооткритите французи Landmvrks (препоръчвам Creature, Sulfur, Blood Red и Funeral).
По времето в което бях на ферибота явно се поотпуснах малко и връщането съчетано с умерения насрещен вятър си казаха думата и чисто и просто си страдах. Но пък за това главата ми беше празна, за което съм благодарен. Това не се беше случвало от прекалено много години.
На връщане обаче реших да мина през най-трудния маршрут, а именно през Евксиноград (където скоро ще стане година откакто тече ремонт и едното платно е затворено) и през Аладжа Манастир. Там се и намиараше най-голямото изкачване през целия маршрут. Преди това има и още един няколокилометров баир. В общи линии последните баири с обща дължина от 8 км. изкарах на 150 пулс.
Болеше.
И то здраво. Краката се усещаха напомпани до пръсване, ноооо все пак липсата на тренировки си казва думата. Изкарах последния и най-зъл баир и исках да легна в тревата, но реших да не съм мелодраматичен и се прибрах вкъщи. Спусканията е излишно да казвам, че ги взимах в ТТ позиция, която да кажем, че … не е съвсем безопасна. Напъването беше на 100%.
И все пак никога след тренировка не съм се оплаквал, че съм излязал. Този път не е изключение.
Сега е време да потъна пак в скръбта, но днес, за малко над три часа имах свободата да бъда със себе си и да бъде тихо в главата ми.
Часът е 0:50, а аз след като съм нахранил, изкъпал (с косите, което си е екшън с Оги), прочел няколко приказки и приспал беше време да измия чиниите, да оправя малко и да приготвя раничките и на двамата за детска/ясла. Та от час и нещо push-вам, ръгам нашия dev k8s cluster и издевателствам над нещо по (не)обичайни начини.
И понеже на тихо живота започва да извира и да те кара да мислиш за неща, които не би искал да мислиш точно сега съм си надуй ей тия сладури, които много ми приличат на последните ми две мозъчни клетки преди да залепя буза на клавиатурата:
Има нещо сърцераздирателно в кавъра на Lenard Cohen на U2 – Tower of song.
Yeah, my friends are gone and my hair is gray
I ache in the places where I used to play
And I’m crazy for love but I’m not coming on
I’m just paying my rent every day in the Tower of Song
Leonard Cohen е вероятно единствения артист, който харесвам безкрайно много повече когато е прехвърлил своите 60 години отколкото в неговата младост.
HOLY SHIT – оказа се, че tower of song е оригинално на Leonard Cohen, а не на U2. Вълшебния свят на изкуството и copyright-а …
Днешната борба е с nodejs и Azure pipelines. Няколко неща, които знам, но забравям понякога:
cat package-lock.json | pbcopy После paste където си пожелаете, но ако искате по някаква причина да го направите през конзолата можете с pbpastenpm i --package-lock-only. Така няма да проверява node_modules и да тегли dependencies.npmrc.