Námět tohoto blogu je už několik let starý. Všechno už je několik let staré. I tento blog už rok nedostal nový obsah. Tak alespoň dostane starý obsah :-D. Rád sleduju YT videa, kde někdo šikovnější než já něco tvoří. Velmi často se dřevem nebo kovem. K tomu nemám přístup. Do sklepa by se mi soustruh nevešel. Ani hoblovačka. Ne, že bych to zkoušel. Mám tam osciloskopy. Multimetry. Zdroje. Počítače. Ne kecám, nemám je ve sklepě, mám je vedle v pokoji. Ve sklepě je … kde jsem to byl? Á to husitské hnutí…
Před pár lety se komentáře pod těmito videi začaly podezřele měnit. Místo dřívějšího mírného obdivu v mezích zákona, začaly houstnout komentáře typu: Proč to vyrábíš, když se to dá koupit? A tak nějak podobně. Naprosté nepochopení tématu. Fakt někdo nechápe, proč někdo jiný něco vyrábí? A potom přišlo něco ještě horšího. Horšího? No prostě jiného. Proč nemáš CNC stroj? Proč to děláš ručně? Víš, že existují 3D tiskárny? Prostě se toho nedotýkej, dělej všechno na počítači!
Takže truhlář se nesmí dotýkat dřeva, modelář se nesmí dotýkat modelů, zámečník má mít CNC stroj. Řidič má mít self driving car. :-D
Tento světonázor přišel i do IT. Takže čeho se nemáme dotýkat? Správně, počítačů. Vycházely články s titulky „pokud se přihlašujete na ssh, děláte to špatně“. Nebo tak nějak. Byla to reklama na školení vzdálené správy (všechny ty Chefy, Ansibly a co já vím. Vlastně ansible není tak špatnej. Stačí vám ssh přístup, python je stejně všude. Zkuste ho.). Ne, že by na vzdálené správě bylo něco vyloženě špatného, špatné je tím začínat. Nebo to mít jako cíl.
Ale to není dost cool. Je vůbec cool ještě cool? Trendem dneška je vytvářet vrstvy. Čím víc vrstev, tím víc (warning: ad blocked). Takže OS má sice dokonalé oddělení uživatelů a programů, ale tak to se zahodí tím, že budeme všechno dělat pod jedním uživatelem a v jednom programu. Ano, mluvím o browseru. Mluvím? Nemluvím, píšu. Takže veškerá dosavadní práce na zabezpečení OS, ochraně paměti, práv, priorit, limitů, capabilities se může zahodit. Teď je potřeba pracovat na ochranně tabů. V jednom programu. U jednoho uživatele. Na jednom počítači. Jedné říše. (?)
Něco podobného se stalo s balíčky. Nikdo nechce tvořit balíčky. Místo toho vytváří něco jiného, co je sice taky balíček, ale nesmí se tomu říkat balíček. Takže místo starého dobrého otáčky za minutu nebo deb (Na to jsem nic nevymyslel. Nic slušného.) tady máme ploštěnky (ploštice? plochozem?), které jsou ve skutečnosti jen squashfs image se soubory pro daný program. Ano, sice tyto soubory můžete úplně stejně strčit do rpm nebo deb, ale to by na vás bylo asi moc vtipné.
Ne, prostě se budeme balíčkům vyhýbat. Protože jsou dvacet let staré a cokoliv, co je dvacet let staré nemá právo existovat.
Další způsob, jak se vyhnout balíčkům je vytváření balíčků v podobě kontejnerů. Kontejner je nádoba na odpad. Do kontejneru dáte svůj odpad a tváříte se, že zmizel. Jenže co je pro jednoho odpad, je pro druhého poklad. Takže kontejner 1) naložíte na velrybu, 2) ? 3) profit!
Ano, kontejnery jsou super, jaily, lxc, nspawn, klidně i ten docker. Ale nezblázněte se z toho. Pamatujte, že je tady stále ten starý dobrý os se svým super zabezpečením. Spouštět normální procesy je sice old school, ale měla by to být první volba. Někteří se do tohoto modernismu zamotali tak, že i pro své golang výtvory vytvářejí kontejner s jednou binárkou. Hele, o dvě vrstvy níž máš OS, kde to můžeš rovnou spustit. Napiš si k tomu systemd unitu. Unita do /etc/systemd/system, binárka do /usr/local/bin, zabal to do .deb a voilà. Funguje install, update, start, stop, uninstall. Like magic.
A pokud trpíš ssh fóbií a strašně se bojíš, že ti terminál sežere duši (což není sranda), tak si napiš ve svém oblíbeném správci repositářů (pokud to zrovna náhodou není gitea) CI skript, který vygeneruje balíček, vstrčí jej do lokálního repositáře, na testovacím tester server targetu pustí apt update && apt install můjnejlepšíbalíčeknasvětě a je to. Potom po každém commitu máte čerstvý testovací tester k testování. Jestli je vhodné spouštět CI skript po každém commitu nechám schválně nezodpovězené.
No my starší tohle sice nepoužíváme, protože máme Makefile. I když syntaxe Makefile je strašná a nikdo by se na ni neměl dívat. No a my ještě starší (sakryš, kolik vás tady je? hele, běžte pryč, tohle už dopíšu sám, jo dík za pomoc a nazdar) se nebojíme ssh a pouštíme to ručně. Protože se rádi dotýkáme své práce.
Celkově: +1, díky za článek. Měl bys psát častěji.
Pár poznámek:
Ad „A potom přišlo něco ještě horšího. Horšího? No prostě jiného. Proč nemáš CNC stroj? Proč to děláš ručně?“
Já zase občas vídám opačné komentáře: někdo něco vyrobí, lidi to začnou chválit, pak se ukáže, že to vyrobil na CNC a najednou na to začnou koukat skrz prsty a je to pro ně bezcenné.
Nevím, nakolik je to statisticky významné a který trend zrovna převládá, ale to je asi jedno. V komentářích se vyskytují různé extrémní názory a člověk by si z toho neměl dělat těžkou hlavu.
A ono i vyrobit něco na CNC je práce, ať už člověk ten G-Code píše ručně nebo to nejdřív někde namodeluje (OpenSCAD, FreeCAD, SolveSpace…), je potřeba něco umět a hlavně mít nápad, co vyrobit.
Nemluvím o tom, když někdo jen stáhne hotový model z internetu a pošle ho do stroje (CNC, 3D tiskárna, laser…). Tam toho vlastního přínosu opravdu moc není.
Ad „pokud se přihlašujete na ssh, děláte to špatně“
Spousta lidí touží být „disruptivní“ a dělat jakousi „revoluci“ a říkat ostatním, co dělají špatně, být „nositelem pokroku“… nebo si prostě jen udělat reklamu na svoje školení či produkt.
Ad „Ale to není dost cool. Je vůbec cool ještě cool? Trendem dneška je vytvářet vrstvy. Čím víc vrstev, tím víc“
Bohužel. Zmiňoval jsem to ve svém seriálu o komplexitě. Neustále přibývají další a další vrstvy, které by měly práci usnadňovat, ale nějak se to nedaří, často ta komplexita a náročnost na obsluhu spíš narůstá.
S těmi balíčky, kontejnery a oddělením procesů taky souhlas. Přijde mi, že se lidi nenaučili využívat stávající prostředky a technologie a místo toho raději všechno zahodí a vymýšlejí něco nového. Evolučním vývojem a postupným zlepšováním bychom asi dosáhli většího užitku při stejných nákladech. Chápu, že občas je nějaká ta revoluce, změna paradigmatu nebo experimentování potřeba, ale na můj vkus se to děje častěji, než by bylo žádoucí. Kdyby byli všichni jen disruptivní a dělali revoluce, tak se lidstvo nikdy nikam nepohne.
Dík. :-)
Se přiznám, že to mám tak nějak taky. Prostě ruční práce má pro mě vyšší hodnotu. (Nevím jestli znáš YT kanál ClickSpring.) Pochopitelně je to trochu mylné, protože i na tom cnčku, pokud to ten člověk skutečně celé navrhne, je spousta kreativní práce.
Ostatně i na té 3D tiskárně, pokud si to někdo vymodeluje v Blenderu a potom se moří se slicerem tak klobouk dolů. Pointa byla právě v tomhle, že ti lidi to mají dělat, mají se dotýkat toho materiálu.
Já si nemyslím, že jde nutně o (záměrné) rozbíjení. Ostatně sám potom píšeš:
no, nejen že nenaučili, oni o nich často ani neví. A to je podle mě ta pravá příčina. A nemají snahu si to najít. Takže na základě této neznalosti potom vymyslí svoje řešení a to propagují.
Zajímavé je, že je to nenapadne ani po té, co jim někdo navrhne jiné funkční a časem prověřené řešení. Stále trvají na svém. Je to taková odnož not invented here syndromu.
Ale o tom by se dalo psát ještě hodiny. Zajímavé je třeba podívat se na to, jak dostupné nástroje ovlivňují výsledek. Už nevím co to bylo za produkt, ale nějaká DB záměrně exportovala jen funkce s O(1) složitostí. A pokud to někdo pochopil správně, tak získal velmi rychlé úložiště. Pokud to někdo nepochopil, tak to volal ve for cyklu a měl z toho O(n) a nadával, jak je to pomalé.
Stejně tak jsem byl zásadně proti snadné dostupnosti Restart=On-Failure v systemd. A stalo se, co jsem předpokládal, lidi to začali používat. Dokonce mi někdo vysvětloval, že je to tak správně, protože jinak by to tam přece nebylo… Takže místo snahy psát zdravé programy, které nepadají, se to vyřeší RestartOnFailure a je to.
Skvělý článek. Vzpoměl jsem si na docker image, která obsahovala jediný .sh skript jen z toho důvodu, aby se líp distribuovala. Skript byl ale jedinečný pro jeden konkrétní stroj. Tj. když leží v /opt (nebo v /usr/local), je to rychlejší a na serveru vůbec nemusí být nainstalovaný docker :-).
Dík :-)
Po mě někdo jednou chtěl nainstalovat docker na debian, protože tam potřeboval nainstalovat PostgreSQL. Jak to dopadlo nevím, nechal jsem to raději jiným.