2017-12-13 разни

December 13th, 2017 by Vasil Kolev

И много неща на едно място, че все няма време за блогване.

Лабът организира голямо коледно LAN party, на 21.12, с всякакъв хардуер и игри.

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

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

А на мен ми се спи. Тия дни успявам да събера някакъв сън, но като цяло трудно събирам наистина почивни weekend-и, в които основно да спя и да си почивам, та трябва да измисля нещо по въпроса, самия openfest ужасно ме умори (там имах няколко седмици без никаква почивка). Наскоро имах и един ден, в който събрах два пъти по 8 часа работа (второто беше да подредя видео и подобната техника от феста в лаба, че имаше нужда и заемаше място на неправилните места).

В работата е забавно, всеки ден откривам нови неща, които не работят и странни бъгове и дизайн решения в компоненти, които уж хората са тествали, ползват и са ок. От по-пресните примери е как continuous queries на influxdb при достатъчно бази и данни просто никога не могат да наваксат, защото са в един thread, който се вика дявол знае кога. Успях да ги заместя с 200 реда код на python (и разпитвайки google, не само аз съм така).

На книжния фронт една от основните новини е, че авторът на Worm е приключил последния си проект (Twig) и се е хванал пак да пише в света на Worm (казва се Ward), което е страхотно за всички, обичащи книгите по 5000 страници.

Тоя weekend има хакатон във ФМИ, за който услужихме от лаба с малко странна техника. Има ли някой, който може да пробута идеята на отборите да декодират радиопредаванията, с които наливат данни на таблата по спирките? Има нужния хардуер, вероятно със съществуващите неща като gnuradio няма да е сложно да се демодулира, и дори няма нужда да се доправя частта, с която може да се подават произволни надписи за показване по тия табла…

Върви подготовката за FOSDEM. След последните тестове (които правихме на един хакатон там на място) моя код, дето ползва openpgm не retransmit-ва, и за един ден дебъгване (и вкарване на print-ове на разни места и опити да разбера какво точно искат да кажат тия хора, които в разни функции с имена “провери-нещо-си” променят по генералния state и които доста намразих) не успях да намеря що не сработва. Обмислям да се скрия някъде по празниците и да го дебъгвам, или да измисля решение с TCP най-накрая.
(как може никой да не е написал multicast TCP. Трябва да го дадем за задача на някой, дето не знае, че не е възможно и да видим какво ще излезе…)

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

2017-11-27 записи от OpenFest 2017

November 27th, 2017 by Vasil Kolev

И изкарахме записите от OpenFest 2017. Може да се намерят в архива и в youtube.

Нещата се забавиха най-вече заради намазани записи и нуждата да възстановяваме от резервните (накратко, да имаш 3 backup-а е полезно).

2017-11-06 задача

November 6th, 2017 by Vasil Kolev

(по-подробно за феста – като се наспя)

За OpenFest 2017 за щанда на StorPool бях написал една задача, та който я реши, да получи тениска. Задачата звучи измамно просто и аз също не съм се усетил, че не е лесно решима за 10 минути.

Задачата е следната – имате директория с някакво количество файлове, да видите кои от тях са MD5 и кои – SHA1 колизии, и да дадете първите букви от имената им (4 файла за md5 и 4 за sha1). Моето решение беше във временна директория да се направят файлове с имена MD5 (и после – SHA1) сумите, в които да се напишат имената и SHA256 сумите на файловете с тая MD5 сума, и после с един sort на всеки файл лесно се вижда в кой има различни файлове (трябва да са еднакви по принцип). Ако е просто да се види коя е md5 сумата, може да се броят уникалните sha256 суми във всички файлове, да се види къде са колизиите.

Интересно ще ми е наистина ли е толкова трудна задачата (доколкото знам, за два дни само един човек я е решил за 10 минути).

Също така ми е интересно дали някой не е решил да пита google какви са checksum-ите на демонстрационните sha1/md5 колизии и да види дали аз не съм си събрал файловете по тоя начин…

Кодът, който генерира задачата е качен на https://vasil.ludost.net/progs/storpool-of-task.tgz. Вътре има gen.sh, който трябва да се пипне малко къде да прави файловете и който при пускане създава малко файлове и ви дава отговора. Не съм сложил другите неща (това, което се прави на login shell и нещото, което праща отговорите по slack на проверяващия), но те не са толкова интересни.

2017-10-26 policy routing с Linux

October 26th, 2017 by Vasil Kolev

В последно време на няколко места по различни случаи ми се налага да подкарвам policy routing под Linux, та тук мисля да систематизирам защо и как.

1) Какво е policy routing

Съвсем просто, routing, който не се базира САМО на destination IP адрес. В linux това се реализира чрез правила (rules), които на база на нещо решават да се гледа друга routing таблица, не стандартната.

2) Защо ни трябва

Основният use case е когато имаме два или повече default route-а, и искаме да можем за трафик, който е дошъл от единия да излизаме навън пак през него. Примерът, който ще дам по-долу е с два internet доставчика, но при мен се налага като конфигурирам bgp с някой, да слагам policy routing за адресите, които са на самия link да си излизат от верния интерфейс, за да мога да вляза от там, ако нещо се е ошашкало по bgp-то.

3) Как се настройва за крайна машина

Примерът, който ще дам е какво правим, ако имаме два доставчика, които ще кръстя pesho и gosho (ако искате, PeshoNet и GoshoCom).

pesho ви е дал link, на който имате адрес 10.1.1.30/24 с default gw 10.1.1.1 и сте го вързали на eth0, gosho ви е дал 10.2.2.40/24 с default gw 10.2.2.254 и сте го вързали на eth1.

Давам настройките директно с команди, как да интегрирате това в настройките на дистрибуцията си варира твърде много (мога да кажа, че в debian с pre-up и down директиви в interfaces файла може да се направи цялото нещо).

Ако просто ги настроите директно, routing таблицата ще изглежда по следния начин:

~ # ip r
default via 10.1.1.1 dev eth0
default via 10.2.2.254 dev eth1
10.1.1.0/24 dev eth0  proto kernel  scope link  src 10.1.1.30
10.2.2.0/24 dev eth1  proto kernel  scope link  src 10.2.2.40

Това никаква работа не върши, понеже ако отвън дойде пакет за 10.1.1.30, може да излезе от другия link и обратно, а това доставчиците никак не го обичат и филтрират. За това просто в тая таблица оставяте само единия от двата default-а и продължаваме нататък.

Първо, харесваме си числата 1 и 2, даваме 1 на pesho, 2 на gosho, и ги описваме в /etc/iproute2/rt_tables (там има и други неща, това са редовете за добавяне):


...
1 pesho
2 gosho
...

Смисълът от това е, че можем да пишем неща като ip r show table pesho вместо ip r show table 1.

Имайки тези таблици, ги попълваме с каквито пътища имаме:

ip route add 10.1.1.0/24 dev eth0 table pesho
ip route add default via 10.1.1.1 table pesho
ip route add 10.2.2.0/24 dev eth1 table gosho
ip route add default via 10.2.2.254 table gosho

И след това пишем самите правила:

ip rule add from 10.1.1.30 iif lo table pesho
ip rule add from 10.2.2.40 iif lo table gosho

Тук има нужда от малко обяснение – “iif lo” означава “идващи от локалната машина”, останалото е в общи линии просто – ако source адресът е този, гледай конкретната таблица.

До тук е setup-а, ако имате просто една машина и нищо повече…

4) Как се настройва при NAT

Какво правим, ако имаме отзад една мрежичка, да кажем стандартната 192.168.0.0/24, на eth7?

Като за начало, трябва да добавим тази мрежа и в другите две таблици:

for t in pesho gosho; do ip route add 192.168.0.0/24 dev eth7 table $t; done

(някой би написа командите, но ми се е налагало да правя това за 10 таблици и почва да става досадно)

Съответно, да речем, че си имате едни прости правила за nat, които казват, че маскирате трафика навън:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

и някакво правило, че имате някакво web сървърче навътре на 192.168.0.100 порт 8080:

iptables -t nat -A PREROUTING -d 10.1.1.30/32 -i eth0 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.100:80
iptables -t nat -A PREROUTING -d 10.2.2.40/32 -i eth1 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.100:80

Тук за изходящите връзки, ако решите да смените през кой доставчик, съществуващите ще тръгнат да излизат през новия път (и няма да работят), а ако имате входящи от този, през който не ви е текущия default route, пак ще се опитват да излязат от грешното място, понеже маскирането се случва някъде след routing-а. Решението е т.нар. “CONNMARK”, с който може 1) да маркирате определени връзки, 2) маркировката да се пренася в/у пакетите, и после 3) по маркировката да решавате коя таблица да ползвате.

Това се случва в mangle:

iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-xmark 0x1/0xffffffff
iptables -t mangle -A PREROUTING -i eth1 -m conntrack --ctstate NEW -j CONNMARK --set-xmark 0x2/0xffffffff
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff

Тези неща се превеждат като “по единия интерфейс маркирай с 1, по другия с 2, на вход сипвай маркировката от connection-а в пакета (restore-mark), на изход сипвай от пакета на connection-а” (взех ги от един готов save-нат iptables, за това са с тия пълни маски, мисля, че по принцип не бяха нужни). Другото, което трябва е да добавим routing правила, които да взимат решение коя таблица се гледа:

ip rule add fwmark 0x1 table pesho
ip rule add fwmark 0x2 table gosho

5) Load balancing, failover, такива неща

Това е голяма гадост. Писал съм преди по темата за fail-over,като изключим gwping-а и може би една добавка ако той сменя връзката, понеже е умряла, да трепе всичкия state в conntrack-а, няма какво да добавя.

За load balancing бих препоръчал нещо сравнително статично, определени неща през единия доставчик и други през другия, с нещо, което ги трие, когато изпадне единия доставчик. Бях провеждал експеримент в initLab да правя 2 connection-а през единия доставчик и един през другия или някакви такива неща, резултатът беше доста неприятен.

2017-10-02 OpenFest-овски

October 2nd, 2017 by Vasil Kolev

И малко OpenFest-овски неща.

Имаме списък подадени лекции, от които да се направи програма. На програмния комитет му е полезно мнението на хората, та може да гласувате на vote.openfest.org какво би ви било интересно.

Събираме доброволци за всякаквите екипи. Може да дадете заявка директно тук, все ще ви намерим какво да вършите. Аз лично издирвам някакви хора да настроят малко IP телефони, че все не успявам да стигна до там…

Ще имаме отделен call for hardware, за разни неща, дето не ни достигат (за момента май основно по-големи телевизори и трябва да видя какво стана с радиостанциите).

(най-важния call – да дойдете и да се забавлявате мисля, че няма нужда да се обявява)

2017-09-05 апокрифи 2

September 5th, 2017 by Vasil Kolev

Насъбрали са се още апокрифи, та след първата част, ето и втора…

На един мобилен оператор му се строшило нещо по billing-а. Оказал се тежък проблем, и докато го решавали тумбата техничари, се оказало, че от другата страна нещата имат двучасов буфер за CDR-ите и почнали да се drop-ват. Последвали тайно обаждания “звъни където искаш, сега не се отчита”…

Случка, която най-вероятно е позната от личен опит на много хора – един админ щял да си ляга и написал “halt” на лаптопа си. Учудил се, след като 10на минути лаптопа не угаснал, погледнал и открил, че това го бил пуснал на един от сървърите. Последвало ходене в снега посред нощ да го включи обратно.

В древни ISP времена, едно ISP искало да пусне нов ADSL link нанякъде. Имали си един дебел телефонен кабел в мазето, който бил развързан частично на една глава. Та, обадили се те на БТК, дошъл някакъв ядосан чичко, той гледал 5 минути кабела, след което хванал един чифт, казал ядосано “На!” и си тръгнал. Имало 30-40 стърчащи чифта там…

Един друг древен интернет доставчик хванал един програмист да им напише dialer за техните услуги (някакво програмче, което да настрои модеми, account-и и т.н., та да не се мъчи крайния потребител). Та, приложението тръгвало с един wizard, в който първия въпрос бил на какъв език да работи, втория – “приоритет на thread-а”.

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

В още по-древни времена, когато стандартното набиране беше пулсово, един от админите на ISP си звъни на dialup-а и нещо не се връзва. Вдига телефона да чуе какво става и чува някакъв женски глас отсреща. Казва “ама аз очаквах да ми вдигне модем” и отговора отсреща бил “модем съм, модем съм, говори ми”. Бил се преплел със секс телефон…

Като пример, че хората не се научават, на ТРИ пъти DNS зоната на една фирма, host-вана в определено ISP спирала да работи за по няколко часа, защото тамошния админ я редактирал с notepad, записвал я с CR/LF редове, и не забелязвал как nameserver-а отказва да я разбира.

И за завършек, нещо от VFU:
Преди около година .bat + oracle-джийските програмисти от Софийската фирма Б.С. заминават в командировка до град Плевен за да сменят локалната компютърна система на една банка. Пристигат в града, влизат в местния офис на банката; казват, че идват от София; служителите съответно ги пускат; момчетата преконфигурират и преинсталират всичко; инструктират персонала как да работи с новия софтуер.
Каква била изненадата им, когато на излизане поглеждат нагоре и разбират, че са объркали банката!

pgmproxy

September 3rd, 2017 by Vasil Kolev

На FOSDEM 2016 видео потоците в локалната мрежа бяха носени през UDP, което при загуби по мрежата водеше до разни неприятни прекъсвания и обърквания на ffmpeg-а.

След разговори по темата за мрежа без загуби, пакети, пренасяни от еднорози и изграждане на infiniband мрежа в ULB, бях стигнал до идеята да търся или нещо с forward error correction, или някакъв reliable multicast. За FEC се оказа, че има някаква реализация от едно време за ffmpeg за PRO-MPEG, която не е била приета по някакви причини, за reliable multicast открих два протокола – PGM и NORM.

За PGM се оказа, че има хубава реализация, която 1) я има в Debian, 2) има прилични примери и 3) може да има средно ужасна документация, но source е сравнително четим и става за дебъгване. Измъкнах си старото ttee, разчистих кода от разни ненужни неща и си направих едно тривиално proxy, което да разнася пакети между UDP и PGM (и stdin/stdout за дебъгване). Може да се намери на https://github.com/krokodilerian/pgmproxy, като в момента е в proof-of-concept състояние и единственото, което мога да кажа е, че успявам да прекарам през него един FLAC през мрежата и да го слушам :) Следват тестове в мрежа със загуби (щото в моя локален wifi са доста малко) и доизчистване, че да го ползваме на FOSDEM.

OpenFest 2017 CfP

August 21st, 2017 by Vasil Kolev

Като новина за понеделник сутрин – може да подавате заявки за лекции и workshop-и за OpenFest 2017. Имаме огромно пространство за workshop-и, та ако искате да показвате нещо от типа на “запояване на челна стойка”, ще се радваме да го видим.

Sysadmin day 2017

July 26th, 2017 by Vasil Kolev

Петък (28.07), Кривото в мазето след 19:30.

2017-07-01 пренасяне

July 1st, 2017 by Vasil Kolev

Мисля да направя лекция по темата на какви неща ни учи организирането на OpenFest…

Преди 3 седмици получих mail, с който ми прекратиха договора за наем където бях. За 2 седмици си намерихме ново място, за още една си организирахме нещата и вчера се пренесох (с помощта на професионалисти, дето с два камиона ми пренесоха всичките дивотии, които включваха около половин тон книги и един rack). Имаше разни уморени моменти, и се налагаше да паузираме, че да се занимаваме с малкия звяр (известен в тоя блог като Ба’ал), но като цяло си се справихме.
(това е и една от основните причини през юни да не съм писал нищо)

Спокойно мога да кажа, че преживяването на кофа OpenFest-и направи преживяването (да се пренесеш с малко предизвестие и малко бебе в най-голямата жега) да изглежда като нещо управляемо, и даже го направи такова. Мисля си от това да направя един малък lightning talk за привличане на доброволци:)

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

Update: Дневна снимка на библиотеката и уред за приспиване на Ба’ал.

2017-05-28 панаир на книгата

May 28th, 2017 by Vasil Kolev

(Добре сме, всичко ни е наред, а аз съм огладил дрехи с площ колкото Република България)

Пролетен панаир на книгата. Очаквах нищо да не си харесам, но пак си напълних раницата:
– Два тома (предполагаем) дневник на Лаврентий Берия, с коментари от тоя, дето ги е намерил. В момента ги чете Велин, да видим дали стават.
– Двата тома “Чамкория” на Милен Русков, чакат за изчитане.
– “Двадесет и петият част” на К. Вирджил Георгиу – изчетох я за нула време, оказа се страхотен роман за времената около втората световна война и навлизането на тоталитаризмите. (Изобщо, не съм очаквал, че “Комунитас” – издателство основно за християнска литература – ще издава такива ценни неща, като тази книга, книгата на Стефан Бочев за Белене, новото издание на “Архипелага ГУЛАГ”…)
– “Граница” на Капка Касабова, която чета в момента.
– “Вицове за луди, садисти и канибали” на Анатол Анчев – изследовател от БАН – събрани всичките вицове по темата от разни места и източници. Изглежда доста забавно, вероятно е следващата за четене.
– “Махалото на Фуко” на Умберто Еко, понеже не знам да ми е моето копие.
– “Хайка за вълци” на Ивайло Петров – скоро я прочетох и реших, че си заслужава да се вземе на хартия.

(панаирът свършва днес, ако не сте се сетили да идете, има още малко време)

2017-05-19

May 19th, 2017 by Vasil Kolev

Кратък status report.

Ба’ал^W^WИгнатчо е добре. Ние успяваме да поспим. Разни интересни факти:

– Бюрокрацията изглежда сравнително малко, поне за момента, или аз съм привикнал. Взех му вече акта за раждане (т.е. има си и ЕГН), официално си има личен лекар и можах да си подам молбата за отпуска по бащинство.
– Сравнително лесно се прави генератор за бял шум от преносима колонка, mp3 player и 5 часово mp3 с белия шум, взето от youtube. Някой ми спомена, че можело с някаква електроника, но аз поялнишките неща не ги разбирам. Bonus на mp3-то – мястото за повиване на малкия е точно до едната от колонките, вързани в desktop-а ми, съответно лесно се създава успокояващ фон :)
– Когато contraption-а не работи, може белия шум да се пуска и от таблета.
– Контролируема от таблет лампа помага да се пуска слаба светлина нощем за разни цели и изобщо за вършене на дейности без да се става от леглото.
– По подобен начин с едно приложение следим потребление на пелени, количество сън и такива неща. В началото се опитвах да ги записвам, ама определено не ми се получаваше.
– Видео-бебефонът също много помага – най-вече на мен, да знам кога да ходя да помагам в смяна на памперс.
– Много е сладък, като не реве.
– Има и други забавни моменти, например докато пълни звучно памперса да му викаш “Давай, сине!”
– Има и невероятно приспивно действие. Миналия ден, въпреки че се бяхме наспали, следобеда му ударихме и тримата една дрямка.

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

p.s. утре в initLab има BGP workshop, за който се интересува (аз нямам как да ида)

2017-05-09 bias-и и дебъгване

May 9th, 2017 by Vasil Kolev

Нещо странично.

Тия дни в офиса около някакви занимания обсъждахме следната задача:

“Имаме банда пирати (N на брой, капитан и N-1 останали членове), които искат да си разделят съкровище от 100 пари. Пиратите имат строга линейна йерархия (знае се кой след кой е). Разделянето става по следния начин – текущият капитан предлага разпределение, гласува се и ако събере половината или повече от гласовете се приема, ако не – убиват го и следващия по веригата предлага разпределение. Въпросът е какво трябва да предложи капитанът, така че всички да се съгласят, ако приемем, че всички в екипажа са перфектни логици. Също така пиратите са кръвожадни и ако при гласуване против има шанс да спечели и същите пари, пак ще предпочете да убие капитана. Също така всички са алчни и целта е капитанът да запази най-много за себе си.”
(задачата не идва от икономиката, въпреки че и там всички са перфектни логици и за това толкова много им се дънят теориите)

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

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

Какво следва, ако са трима? Казах – добре, тогава даваш на единия 1, на другия 2, и останалото за капитана, понеже ако останат само двама, последния няма да вземе нищо, капитанът гласува за себе си и втория и да е за и против, няма значение. Само че няма нужда да даваме нищо на средния, щото не ни пука за мнението му, така всъщност правилното разпределение идва 1, 0, 99. Тук пак си пролича bias-а, пак очаквах да има някаква пропорция.

Long story short, следващата итерация е 0, 1, 0, 99, понеже така ако не се съгласят, на следващия ход предпоследния ако не се съгласи няма да вземе нищо, и на другите двама мнението няма значение. Pattern-а мисля, че си личи :)

Лошото е колко много влияеше bias-а, който съм натрупал от четене за разпределения в реалния живот – какво са пиратите, как няма перфектни логици (и реално никой няма да смята по тоя начин, а ще се стремят към нещо, което им се вижда честно), как това тотално изключва политическата възможност N/2+1 от долната част да гласуват винаги против, докато не дойде всичкото до тях и после да си го разделят по равно и всякакви подобни варианти от реалния живот. Ако примерът беше с каквото и да е друго (например не включваше хора), вероятно щеше да е доста по-лесно да гледам абстрактно.

Което е още един довод в подкрепа на идеята ми, че много по-лесно се дебъгва нещо чуждо (често и което никога не си виждал), отколкото нещо, с което почти постоянно се занимаваш. Над 90% от проблемите (това не се базира на никаква статистика, а на усещане) са достатъчно прости, че да могат да се решат със стандартни методи и да не изискват много задълбочено познаване на системата (половината ми живот е минал в дебъгване на неща, които не разбирам, доста по-често успешно, отколкото не) и вероятно като/ако правя debug workshop-а (за който много хора ми натякват), ще е с проблеми, с които и аз не съм запознат, да е наистина забавно …

2017-05-08 раждане 3

May 8th, 2017 by Vasil Kolev

И толкова с post-овете за днес, май досега не бях пускал 3 в един ден.

Точни данни: роден в 07:11, 3450 г., 50 cm. Игнат(-Ба’ал) Василев Колев(-Дяволов). Родил се е с бая коса (като мен и Елена). Обича да спи – докато бях там за малко отвори очи, погледна ме, прозя се три пъти и пак заспа.
(ще излъжа, ако кажа, че не му завидях)

Сега следват няколко дни възстановяване за Елена и после прибиране вкъщи.

2017-05-08 раждане 2

May 8th, 2017 by Vasil Kolev

(смених и заглавието)

В 7:10 се е родил Игнат Василев Колев, 3.200 кг.
(въпреки голямото желание на Велин, не е Ба’ал Василев Колев, и въпреки моето не е Игнат Василев Колев-Дяволов (т.е. да звучи да коли дяволи), ама няма значение)

Освестявам се (пия кафе и т.н.) и отивам да го видя и занеса шоколад и други.

2017-05-08 раждане 1

May 8th, 2017 by Vasil Kolev

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

След известно време попиване на потоците, един телефонен разговор да пита майка си кога трябва да спре да тече и бързо вдигане на събрания багаж, с едно такси се добрахме до Майчин дом (хубавото на тия среднощни работи е, че няма движение). Нея директно я вкараха вътре, а аз почаках около половин час в чакалнята на спешното (където нямаше никой друг, явно хората са отишли да раждат извън София около празниците). След това Елена се появи с една докторка да ми кажат, че я приемат, че вероятно ще роди днес (8ми май), но няма да е особено скоро и да си ходя да спя.

Което смятам и да направя :)

2017-04-10 splitpatch

April 10th, 2017 by Vasil Kolev

Нов ценен tool – splitpatch (има го в debian, нищо, че е на ruby).

Трябваше да вкараме едно парче код (на perl) в главното ни repo, и след code review имаше забележки като за 11 промени. Вкарахме ги, тествах го и открих, че не работи – output-а беше много много различен от този в началото (който си се знаеше, че е верен).

Един вариант беше някой да гледа промените ред по ред и да се разбере какво е объркано. Вместо да се стига до такива крайни мерки, намерих tool, който може да сцепи patch-а на hunk-ове, и след това направих следното:

for i in ptch/* ; do patch -o test TOOL $i ; ./test debug > $i.output ; done

и след това с един прост for и diff видях кои съвпадат и кои се различават, и проблемния commit лъсна…

Имаше и варианта вместо да patch-вам оригинала, да махам по един patch от финалния, докато не изчезне проблема. При зависещи един от друг hunk-ове пък може да се направи нещо още по-забавно – да се направят всичките комбинации от patch-ове (като са 11 не са толкова много), да се изтества и пак да се хване разликата сравнително лесно (ако например два са виновни).

Изводът е, че човек може да дебъгва код на нещо в много случаи и без да знае езика…

2017-04-05 интервюта за админи

April 5th, 2017 by Vasil Kolev

Смених работата, но се оказва, че от интервютата бягане няма. Тоя път са за системни администратори.

За всеки нов вид интервюта си трябва доста време, за да се свикне и измисли хубав метод. Например, нямам fizzbuzz, доста по-трудно е да кажеш “покажи какво си писал”, а срещането на NDA, заради което не може да се говори какво е вършено не е чак толкова рядък случай. Да разбереш дали някой разбира в дълбочина някоя технология не винаги може да стане с 2-3 въпроса. Да не говорим, че докато не видиш как работи човека, няма как да го прецениш дали става…
(най-добрия вариант го правят в automattic, просто един месец ти плащат да работиш с екипа и ти дават задачи и гледат как се справяш. За съжаление не е лесно да се направи на друго място.)

Като за начало съм си сглобил малък админски тест, който да пращам на хората. Има даже дребен състезателен елемент и се чудя дали не мога да го разпъна до нещо escape-room-о-подобно :)

(in other news, бях седнал да си си разписвам escape room за админи, ако се намери достатъчно интерес може да я сглобя в лаба, има всякакви странни неща вътре)

(p.s. ако някой тия задачи са му лесни и си търси работа, лесно се разбира де да си прати CV-то…)

2017-03-30 Alexandra Zerner

March 30th, 2017 by Vasil Kolev

Тия дни Виткур спомена, че се занимава с нов музикален проект – Alexandra Zerner, и един техен запис ми прозвуча добре, та се замъкнах с жената в Joy station да ги чуя на живо.

Като за начало, оказа се, че Joy station е широко, има място де да седят бременни жени, има въздух, звукът им е много добър, като цяло неочаквано хубаво място, особено за в студентски град.

А музиката си беше великолепна. Инструментален метъл, но на коренно различно ниво, интересна, с много техника и много идеи. Някаква представа може да се придобие в youtube, но определено е друго да се чуят на живо. Взех си cd-тата ѝ и ще си ги въртя известно време :)

А как точно свири Александра Зернер е трудно да се обясни. Единствения ми паралел беше Чък Шулдинър…

2017-03-12 апокрифи

March 12th, 2017 by Vasil Kolev

От време на време докато пием се случва да си разказваме разни истории от едно време, кои апокрифни, кои истински, но всички заслужаващи да бъдат записани. Събрал съм няколко от спомени и участия, без имена (да предпазим виновните).

Една от най-любимите ми е за ISP-то (във времената на dial-up-а), на което един от админите по погрешка направил UPDATE на passwd таблицата без WHERE клауза и потрил всички пароли. Нямало backup (разбира се) или начин да се възстановят, за това си patch-нали radius-а ако един потребител три пъти напише същата парола, да я приеме и да я запише в базата. Така успели да възстановят почти всичко.

Един млад хакер една вечер в средно пияно състояние решил, че всичките internet доставчици в града му не струват и за да им отмъсти, написал един троянски кон, който правел безогледен flood по всичките им IP range-ове. В един момент се усетил как сам си е отрязял^Wзапушил клона, ама нямало какво да направи. След около седмица по различни начини (смяна на IP range-ове, филтри, черна магия) flood-ът бил спрян, но поне според някои хора още 10на години след това имало останал такъв трафик.

Администратор на ISP и известен irc сървър към него бил много приличен и мирен човек, който локалните хакери много тормозели. Накрая го пропили, и една вечер така след много пиене го питали “Абе, я си кажи root-ската парола”. Той просто се усмихнал и заспал на масата.

В един hosting имало shell скриптове, викани през sudo-подобна система за добавяне и триене на потребители. Скриптовете не били помислени достатъчно добре и когато един потребител си написал интервал в края на username-а, системата chown-нала ВСИЧКО на неговия потребител. Много неща спрели да работят, хората по навик рестартирали сървъра, и той повече не изгрял…
(тук не съм сигурен дали нямаше подобна случка и с rm при премахване на потребител, отнесло целия сървър)

В една фирма хората от нямане какво да правят си направили etherkiller (от едната страна RJ45, от другата щепсел). Забавлявали се, показвали го на хората, снимали го и го забравили. След няколко месеца се оказало, че щепселът бил останал включен в един контакт и само по чудо не била станала по-голяма беля.

В едно ISP младши админа написал rm /home/somewhere/something/ * (забележете интервала), докато се намирал в /usr/sbin. Понеже това било във времената преди не-ужасяващо-бавния интернет и пакетните системи в linux, отнело някакво време да се намери какво точно се е потрило и да се възстанови, поне една част от него.

В друго ISP на основния Cisco router изгоряло захранването (във времената на бавния интернет, малкото пари и никаквата резервираност). Въпреки знанията на хората по електротехника, не успели да се ориентират къде точно е проблема на захранването, та техни колеги от конкурентно ISP им дали под наем такъв router (НА ЧАС). Седнали с работещото и неработещото захранване отворени едно до друго и проследявали, докато намерят проблема (мотае ми се нещо като 10 часа).

Като си спомня още, ще ги опиша и тях :)