Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Od března bydlím v pronajatém bytě v Praze ve Stodůlkách a v květnu nastupuju do nové práce.
Tuhle jsem tu psal, že jsem sekl se školou a usoudil jsem, že 3 roky VŠ studia mi prozatím stačí, přestože jsem byl přijal do dalšího studia. Začal jsem se ubírat jiným směrem, který mi vyhovuje výrazně víc.
S přítelkyní jsme si pronajali prostornej 2+kk byt ve Stodůlkách kousíček od metra, kde bydlíme s kočkou a kocourem. Rychle jsme se tam zabydleli a všechno si zařídili podle našich představ. Toto je pro mě velice významná událost; konečně mám zase svůj domov (pač třeba koleji jsem tak říkat nemohl). Byl to docela fofr, nakonec jsme prohlédli pouze dva byty a hned po druhém jsme chňapli. Přesně takhle jsem chtěl, aby to bylo a "věděl", že to tak nebude, ale naštěstí jsem se mýlil.
Další novinka, kterou jsem měl v dlouhodobém plánu, ale nakonec přišla dřív než jsem čekal, je změna mého hlavního zdroje příjmů. Jen ze zvědavosti jsem odpověděl na zprávu na LinkedIn a po pár vyměněných emailech a dvou pohovorech jsem se stal zaměstnancem AVAST Software. Živnost se tedy posouvá na druhou příčku a já pomalu rozšiřuju svůj slovník o slovo "dovolená".
Teď už jen zbývá zbavit se Vectry a pořídit si lepší auto, dohnat tátu v běhu (což je v tuhle chvíli velmi ambiciózní cíl), procestovat svět a vyšvihnout se v IT co nejvíc zvládnu Milníkem v IT bude pro začátek třeba patch ve vanilla Linux kernelu.
PS: A taky jsem si hrozně oblíbil Python. Dříve jsem na něj držkoval, ale musím uznat, že je to geniální jazyk. Nedávno jsem potřeboval na skriptování něco trochu chytřejšího než je Bash (zejména kvůli práci s databází) a byl jsem šokován tím s jak okrajovou znalostí Pythonu dokážu napsat to, co potřebuju, aniž bych musel nějak výrazně studovat dokumentaci. Intuitivnější jazyk neznám. (Akorát teda místo urllib preferuju Requests, protože urllib je výjimkou a je vše, jenom ne intuitivní.)
Tiskni
Sdílej:
Stále hrdo vládneš moja milovaná Praha, ale budeš čeliť svojej poslednej hodine. Praha, moja milovaná Praha, dostane sa ti nezvyčajného a hrozného konca. Závan sa bude šíriť tvojimi uličkami, ako aj sladkavosť a teplo; prekvapení ľudia to pocítia. S hrozne skrivenými tvárami, tisíce sa budú snažiť ukryť, ale skrze teplo stuhnú. Koniec sa blíži. Desať hrdzavých zvonov posledného kostola bije vo vzduchu. Pomalé a špinavé prúdy Vltavy sa budú valiť, ako keď hrozný hurikán pustoší krajinu, mesto. Žlto-zelený prach a ťažké jedovaté mraky zoberú život ľuďom aj dobytku (chemické zbrane). Hradčany budú v ohni, mestské hradby budú praskať. Všetko bude v besniacom ohni. Zem sa bude triasť, bude sa ohýbať mohutným zemetrasením. Veľké jamy sa otvoria a pohltia ako mŕtvych, tak aj živých. Hroby sa otvoria ako vyplienené rukami duchov a kostry sa budú smiať krutým smiechom. Všetko sa ponorí do bezmedznej čiernej ničoty.
Z Vyšehradu (štvrť v Prahe) sa obrovská žeravá guľa (atómová alebo vodíková bomba) rozšíri všade navôkol, kamene budú letieť vzduchom a všade naokolo bude žiariť more ohňa. Všetko čo človek postavil bude ležať v sutinách a prachu. Možno počuť len hrozný hukot búrky. Život sa vytratí. Vidím len trosky a mŕtvoly. Pomaličky sa mrak vytratí tam, kde sa hrdo týčila katedrála. Vidím krvavo-červenú ohnivú guľu. Je koniec! Praha, tvoj osud bol naplnený! Prečo ponuré prílivy zaplavia nábrežia opustených planín? Škaredé červy budú obžierať telá aj duše s hroznými účinkami. Buriny a zrúcaniny a jedovatý mrak bude charakterizovať krajinu. Toto je to, čo si ľudia zasiali?“
Sybila pražská, 1658Skrz Zebedea, svého sluhu. A tu se roznesou zvěsti o věcech, jež sešly na zcestí. I nastane veliké zmatení v tom, kde ony věco vskutku jsou. A nikdo opravdu nebude vědět, kdeže vězí ony malé věcičky na takové té rafiové bázi s odtokem a v onen čas ztratí přítel příteli kladivo a mladí nebudou věděti, kde uloženy věci otců jejich, jež tam byli uloženy teprve včera zvečera, zhruba v osm hodin. V oné době bude psáno v knize Zbyliáš...Life of Brian, 1979
snip
Ale prdlajs. Taky to nemusíš hned brát jako sprosté slovo, když to sprosté slovo není.
Ostatně, také bych chtěl být konformistou, jak jsem naznačil hned v druhém komentáři. Aspoň bych si pak nekladl podobné otázky jako Jardík.
Konformita nebo konformismus (z lat. con-formis, shodného tvaru, podoby) je přizpůsobení se převažujícím či dominantním názorům, požadavkům, normám skupiny či společnosti, v níž člověk žije, a potlačení projevů vlastních. Různí autoři se shodují v tom, že určitá míra konformity je jedním z logických důsledků socializace a je podmínkou pro bezkonfliktní fungování společnosti.
Ano, jsou tam i ty další věty, které jsem už nezkopíroval.
Ona je i většina lidí zřejmě předprogramována tak, aby nic potlačovat nemusela a zapadla do společnosti. Ne všichni... třeba idealisti. Jako RMS. Nebo Jardík.
Myslim, ze srovnavas nesrovnatelne. Copak RMS zije u chudych rodicu a nechava se od nich zivit? Za RMS je videt spousta prace a cinnosti. Nevim, co je videt za Jardikem.
Díváš se špatným směrem. Mohli bychom začít tím, že RMS nepoužívá fíbíčko, nenosí telefon, platí v hotovosti a pravděpodobně si ani nekupuje auto. Zásadní otázka zní: proč?
Zrovna tady je to celkem jedno, protože auto je stejně ve většině států (ve všech?) potřeba na někoho registrovat.
"nepoužívá fíbíčko, nenosí telefon, platí v hotovosti a pravděpodobně si ani nekupuje auto"
Také běžně nenosím/(jsem nenosil telefon)/to samé co na začátku, a to ostatní také vcelku odpovídá. Otázka zní proč?
Philip Glass didn't earn a living from his music, in fact, until he was 42. Until then, he drove cabs, shifted furniture and worked as a plumber. "I was careful," he explains, "to take a job that couldn't have any possible meaning for me." Stories of famous-composer-actually-working-man-shock from that period abound. The art critic Robert Hughes was astonished to find the avant garde composer mending his dishwasher. On another occasion, a woman tapped on the side of his cab and told him that he had the same name as a "very famous composer".Hodne zdaru v nove praci!
"buď pracuju a vydělávám nebo dělám věci, které mne baví a které podle mne mají smysl"Jasne! Nakonec i ja mluvim treba o praci u neziskovek nebo praci pro FLOSS, ktere jsou prace a muzou vydelavat, jen nejspis ne vydelavat tolik. Jini lide maji urcite uplne jine priority. Na druhou stranu jsou v mem okoli lide, kteri na vysce milovali strojove uceni, analyzu textu atd., a ted pracuji v dobre platici mezinarodni firme ... a spravuji tam ukladani a rozesilani SMS. V takovych pripadech, pokud toho cloveka znate dobre, tak se da podle mne hovorit o ceste nejmensiho odporu. Skutecne rozhodnout, jestli clovek uz "sesycha" nebo ne, dovede jen jedinec sam. Je treba posoudit, nakolik je to, co prave dela, opravdu jeho poslanim, a nakolik v nem zapracovala adaptace na nove prostredi.
Nakonec i ja mluvim treba o praci u neziskovek nebo praci pro FLOSS, ktere jsou prace a muzou vydelavat, jen nejspis ne vydelavat tolik.
Určitě. Je mi jasné, že kdybych se rozhodl "zaprodat duši", mohl bych pravděpodobně vydělávat výrazně víc než vydělávám teď.
Na druhou stranu jsou v mem okoli lide, kteri na vysce milovali strojove uceni, analyzu textu atd., a ted pracuji v dobre platici mezinarodni firme ... a spravuji tam ukladani a rozesilani SMS.
To je samozřejmě smutné. Ale myslím, že pokud člověk opravdu umí, dá se dneska slušně vydělávat i prací na těch zajímavých tématech. Takovou volnost jako na univerzitě asi mít nebude, ale IMHO to bude pořád výrazně lepší než zcela netvůrčí práce.
Prostě chci říct, že se podle mne dá najít rozumná střední cesta mezi "nechat se semlít" a "žít v chudobě".
Myslis si ale, ze opravdu spravuje a okopava?
To na principu nic nemění. Dneska si lidi velmi často pořizují děti jako de facto domácí mazlíčky, hobby, možnost realizovat se. Zní to nechutně, ale obávám se, že je to tak. Takže pokud by to byl tenhle případ, stačí naplnit očekávání v tomto směru. Prostě dneska už rodina není ve většině případů ekonomická jednotka a ani to pokračování rodu nemá takovou prioritu.
Bydlet u rodicu je v jeho veku proste ostudne.
To je dost subjektivní. Historicky to dávalo smysl (např. dědění gruntu) a dneska to dává smysl i ekonomicky (třeba v té slavné Émerice se soukromým školstvím se absolventi velmi často stěhují aspoň dočasně k rodičům).
Já taky uvádím, že "bydlím u rodičů". S tím, jak se společnost modernizuje, už mě ale není potřeba na to, abych: sázel ručně lán brambor, okopával ty brambory, pomáhal při sklizni obilí ze zahrady, dělal od rána dovečera, když ten den přišel, u samovazu mlátičky jako pomocná síla, ohýbal po celý den hřbet při sběru borůvek, stál po několik dní na žebříku, abych natrha několik metráků třešní, abych vytahoval na podzim řepu, a pomáhal ji skládat do sklepa, trhal hodiny šípky do sběrny atd. Prostě se ty činnosti postupem doby vytratily. Buď se toto už nedělá, plodiny se nepěstují, anebo nastoupila mechanizace. Radost si tak akorát udělám, když natrhám ze dva metráky jablek, anebo vytočím med, když obrátím seno a složím je do kopek, a pak je pomůžu dostat na hůru. zalévání zeleniny je taky fajn.
Ale odpoved na mou otazku je kde?
V tom našem "kapitalismu" se člověk obvykle "má dobře" ve skutečnosti na úkor někoho jiného (typicky dopad na životní prostředí). Myslím, že to by v tomto kontextu mohlo něco naznačit.
ucitel ve sluzbach statuškoda, že si spoločnosť túto službu tak málo váži, možno by učili deti lepší češtinári (nie som slovenčinárka a s tou učkou je to už tiež zrejme pasé, rozhodla som sa ešte i v tomto veku zmeniť zamestnanie:))
S mym vzdelavanim v detstvi to bylo slozite a vyjmenovanna slova jsem se ucil az jako dospivajici jedinec, takze proto mi mozna obcas nejake to [iy] ujede.
Zjevně ti toho ujíždí trochu víc.
S mym vzdelavanim v detstvi to bylo slozite...ja som vás nechcela kritizovať kvôli pravopisu, len ma zlákajú vždy slovné hračky, tak sorráč...okrem toho to "žere jen bílí" môže mať ešte okrem iného aj ideovo - politický rozmer, takže ma to dvojnásobne pokúšalo:)
schopnost tuto praci delat dobre ma jen velmi malo lidimne v každom prípade bude asi smutno za tými nevychovanými výrastkami:), to je jediné, prečo sa mi ťažko odhodláva
Rozhodne ji nema vetsina tech, kteri se oznacuji za ucitelepozrite, mne za život stačili i dvaja - traja, čo za niečo stáli, možno neboli ani nijak zvlášť výnimoční, ale aspoň to boli ľudia, a nie nejakí úzkoprsí sebci... a to nielen v učiteľskom povolaní je dosť veľká vzácnosť
Loki se rovná Odin?To bylo snad jasné od začátku, ne?
Rozdil je v tomJako mezi čím konkrétně?
podivny eurosocialisticky hybridA lnete ke svému čistě dystopickému blouznění o individuálním boji za přežití a ještě tomu říkáte morálka... Děkuji pěkně, kterýkoliv den se zeptáte, zvolím "eurosocialistický hybrid". Stejně jako ho zvolím před amero- nebo ruskosocialistickým. Ostatně, ať se Vám to (Klausovi, Machovi, Randymu... a kdo ví komu a třeba každému jinak líbí nebo ne), ČR je stejně v Evropě a není jen tak to celé sbalit a odstěhovat za Kavkaz nebo na rovník. A postavit plot nestačí, nic to na poloze v Evropě nezmění.
Nevěřím, že život v takových panelákových kobkách v panelákovém ghetu nemůže poznamenat jednotlivé lidi a jejich osudy.jenom se zasklenym balkónem
Nevěřím, že život v takových panelákových kobkách v panelákovém ghetu nemůže poznamenat jednotlivé lidi a jejich osudy.Nevím co tu lidi mají za panelákové komplexy, ale já jsem vyrůstal v rodinném domku na venkově a s přechodem do paneláku (nejdřív kolej, pak přítelkyně a nyní můj byt) jsem neměl problém. Fakt mi to nevadí - důležitý pro mě je, že to je hezkej byt a je tam klid (sousedi nejsou úchylové).
Začal jsem se ubírat jiným směrem, který mi vyhovuje výrazně víc.Kam sa tak ponáhľate, chlapci, a kam to je, tým smerom? On vás ten smer tak či tak počká.
Nebo schválně, co se stane, když napíšu kód odsazený tabulátory a pak ho upraví někdo, kdo odsazuje mezerami?Jeho editor tam automaticky vloží tabulátory. Nežijeme přece ve středověku, kdy se k programování používaly hloupé textové editory. Druhá věc je, že se to používá k odsazení bloku. Můžeš tedy mixovat blok tabama a další blok mezerama, i když to samozřejmě je prasárna nejvyšší. Tohle se zdá jako problém, ale není problém si to nechat v editoru zobrazovat a linter na to začne nadávat (viz příloha), pokud teda nemáš plugin, který to automaticky převede na to v čem je většina dokumentu. Není to nic s čím by se měl člověk lámat hlavu, umí to každý slušný editor, včetně třeba
vim
u.
Já s tím mám problém z principu, prostě mi to přijde jako prasárna.On je opak pravdou, je to docela elegantní. Viděl jsem nepopsatelné horory C kódu, které se v pythonu prostě nestanou. Ono je stejně o hovně řešit ten nejmenší detail, jak když lidi nadávají na lisp, že má špatnou syntaxi a radši v tom preventivně programovat nebudou, protože co kdyby jim to uřklo děti a proklelo rodinu. Python má mnoho velmi dobrých vlastností, které člověka dělají produktivnějším a efektivnějším, co do schopnosti dosáhnout cíle s menší námahou. Zatracovat ho kvůli blokům definovaným odsazováním je jako vybrat si méně výkonný počítač o stejné ceně, jen proto, že se ti nelíbí tvar a barva case. Laikům to možná může přijít jako dobrý parametr podle kterého se rozhodovat ale většina těch kdo o tom něco vědí se rozhoduje podle vnitřností, ne vnějšího pozlátka. Ale jak jsem psal, je to tvoje volba. Nemá smysl ti něco vnucovat a pokud se ti to opravdu zdá jako nepřekonatelný problém, je to jen tvoje ztráta.
Jeho editor tam automaticky vloží tabulátory. Nežijeme přece ve středověku, kdy se k programování používaly hloupé textové editory.Pochopil jsem správně, že tvoje odpověď na mojí otázku je "některé editory to odchytí"? S podtitulkem, že pokud to editor neodchytí, tak to dělám špatně, protože mám používat Tvůj Oblíbený Editor?
Druhá věc je, že se to používá k odsazení bloku.Fajn, jenže když ten blok neodsadím, je to buď syntaktická chyba (někde chybí blok), nebo ten kód nebude fungovat správně.
Můžeš tedy mixovat blok tabama a další blok mezerama, i když to samozřejmě je prasárna nejvyšší.Já se ptám, co se stane, když stejný blok odsadím částečně tabem a částečně mezerami.
On je opak pravdou, je to docela elegantní. Viděl jsem nepopsatelné horory C kódu, které se v pythonu prostě nestanou.On je opak pravdou, je to docela nebezpečné... (dovolil jsem si zde vypůjčit argumentační styl.)
Python má mnoho velmi dobrých vlastností, které člověka dělají produktivnějším a efektivnějším, co do schopnosti dosáhnout cíle s menší námahou. Zatracovat ho kvůli blokům definovaným odsazováním je jako vybrat si méně výkonný počítač o stejné ceně, jen proto, že se ti nelíbí tvar a barva case.To přirovnání kulhá, protože tvar a barva case neovlivňují funkcionalitu. Dá se to vylepšit: méně výkonný počítač o stejné ceně jen proto, že se mi nelíbí, že case probíjí. A mimo jiné jsem taky psal, že preferuju Ruby - v tom přirovnání (přinejmešním) stejně výkonný počítač s case, který neprobíjí.
Já se ptám, co se stane, když stejný blok odsadím částečně tabem a částečně mezerami.Špatné odsazení v Pythonu pochopitelně způsobí, že se program nenaparsuje a tedy se nemůže spustit. Pokud si správně pamatuju, tak míchané odsazení se za špatné považuje automaticky. Doporučené odsazení jsou pokud vím čtyři mezery. Použití Pythonu předpokládá, že používáš editor, který umí psát mezery. Úprava projektu, který namísto doporučených mezer používá tabulátor předpokládá, že používáš editor, který umí psát tabulátor. To mi nepřijde jako nějak přehnané nároky. Samozřejmě pro větší pohodlí můžeš použít nějaký advanced editor, ale to už je tvoje věc.
Pokud si správně pamatuju, tak míchané odsazení se za špatné považuje automaticky.Ok, to by ještě šlo. Horší než chovat se k netisknutelným znakům normálně, ale lepší než podivné chyby způsobené tím, že parser vidí jiné odsazení než programátor.
Pochopil jsem správně, že tvoje odpověď na mojí otázku je "některé editory to odchytí"?Moje odpověď je: programátorské editory to odchytí. Lidi co programují v notepadu mají problém a musí to dělat ručně. Na základě mých zkušeností si troufám tvrdit, že to není problém, jelikož jsem tento problém nikdy řešit nemusel, ani s ním někomu pomáhat a to jsem s pythonem už pomáhal poměrně dost lidem.
S podtitulkem, že pokud to editor neodchytí, tak to dělám špatně, protože mám používat Tvůj Oblíbený Editor?Používej si co chceš, můj oblíbený editor stojí 70$, tak ti ho cpát nebudu. Psal jsem, že to zvládá i VIM, u emacsu není o čem diskutovat, ten zvládá všechno a u ostatních IDE záleží na pluginu.
Já se ptám, co se stane, když stejný blok odsadím částečně tabem a částečně mezerami.Jenže to není jednoznačně definovaná věta. Má totiž hned několik možných výkladů:
class x: [tab][mez]def metoda(): [tab][mez][tab][mez]pass(funguje) či:
class x: [mez]def metoda(): [tab][tab]pass(funguje) či
class x: [tabulátor]def metoda(): [mez][mez]pass(nefunguje, v editoru to vypadá hrozně)
class x: [tab]def metoda(): [mez][mez][mez][mez][mez][mez][mez][mez][mez]pass(funguje, python považuje tab za 8 znaků dlouhý) či
class x: [mez]def metoda(): [tab][tab]pass [mez][mez]pass(nefunguje) Blok musí být stejným stylem a je jedno, jestli je na jedné řádce sekvence tabů a mezer, ale musí tak být celý blok. Roli hraje počet, ne vizuální odsazení, protože tab je všude jinak dlouhý.
On je opak pravdou, je to docela nebezpečné... (dovolil jsem si zde vypůjčit argumentační styl.)Elegantní je to proto, že kód je potom pěkně odsazený, prostě vizuálně vypadá dobře a je to něco, co python vynucuje. Zároveň se tím pro interpretr řeší problém detekce bloku, neboť ho detekuje všude tam, kde vidí blok stejně jako lidi a nemusí k tomu zavádět speciální znaky, které se pak dají použít jinde (slovníky).
je to docela nebezpečnéPodstatně méně, než kód
if (podmínka) příkaz; else { ... }do kterého se někdo rozhodne přidat další příkazy do true větve podmínky. Tohle je na rozdíl od teoretického problému v pythonu problém reálný, se kterým jsem se potkal několirát a vznikl díky tomu i nedávný Apple SSL bug, který obletěl internet.
To přirovnání kulhá, protože tvar a barva case neovlivňují funkcionalitu. Dá se to vylepšit: méně výkonný počítač o stejné ceně jen proto, že se mi nelíbí, že case probíjí.S tím nesouhlasím, neboť máš pouze neodůvodněný pocit, že probíjí, aniž bys to ve skutečnosti vyzkoušel. Prodavač tvrdí, že neprobíjí, druhý prodavač tvrdí, že ten case používá 7 let a že nikdy neprobíjel, dokonce si díky němu vydělává na živobytí, sahá na něj prakticky každý den, někdy i deset hodin v kuse a nikdy neprobíjel. Jenže ty máš pocit, že probíjí, protože by od pohledu probíjet měl, protože to tak přece dává smysl a basta. Jako každá analogie, i tohle má určité nedostatky, ale imho už se blíže nedostaneme, aniž by to nezavlékalo nedostatky nové.
Moje odpověď je: programátorské editory to odchytí. Lidi co programují v notepadu mají problém a musí to dělat ručně. Na základě mých zkušeností si troufám tvrdit, že to není problém, jelikož jsem tento problém nikdy řešit nemusel, ani s ním někomu pomáhat a to jsem s pythonem už pomáhal poměrně dost lidem.Tohle se mě právě na pythonu nelíbí autoformátování klidně jo, ale ne se závislým jazykem. Funkcionalita by mohla být v pluginu a ne ve specifikaci jazyka.
neboť ho detekuje všude tam, kde vidí blok stejně jako lidi a nemusí k tomu zavádět speciální znaky, které se pak dají použít jinde (slovníky).No nevím i kdyby parsování zabralo o sekundu víc, tak to není kritický problém. Navíc stroje se mají přizpůsobovat lidem (i když ti píší jako prase
if (podmínka) příkaz; else { ... }Třeba perl tam ty závorky tuším vyžaduje.
Tohle se mě právě na pythonu nelíbí autoformátování klidně jo, ale ne se závislým jazykem. Funkcionalita by mohla být v pluginu a ne ve specifikaci jazyka.No, to je věc názoru. Osobně se mi to zdá jako velmi dobrý nápad už od začátku, protože prostě proč používat speciální znaky, či rovnou celé keywordy (nikdy nezapomenu na pascalovské
begin
a end
), když toho samého dosáhnu odsazením, které bych dělal tak jako tak. Dokonce to kdysi byla jedna z věcí, podle kterých jsem se rozhodl pro python na úkor ostatních jazyků.
No nevím i kdyby parsování zabralo o sekundu víc, tak to není kritický problém. Navíc stroje se mají přizpůsobovat lidem (i když ti píší jako praseTo jsi to špatně pochopil. Imho ten pythonní styl zabere nějaký čas navíc, zase to ale ušetří čas lidí, protože nemusí hledat závorky, stačí se jen podívat na blok.).
proč používat speciální znaky, či rovnou celé keywordy (nikdy nezapomenu na pascalovské begin a end)VHDL na tebe, to bys byl za "{" "}" ještě rád
To jsi to špatně pochopil. Imho ten pythonní styl zabere nějaký čas navíc, zase to ale ušetří čas lidí, protože nemusí hledat závorky, stačí se jen podívat na blok.Aha mea culpa. BTW (v pythonu jsem nedělal) byl by bez toho odsazování kód v pythonu nejednoznačný?
Nebo schválně, co se stane, když napíšu kód odsazený tabulátory a pak ho upraví někdo, kdo odsazuje mezerami?Nepřijmou mu patch. Jenže špatně odsazený patch často nepřijmou ani projekty v C.
Tak připisování "kreditů" na účet je dnes moderní proto, že většina těch peněz ani neexistuje, jen je to nějaké čísílko v počítači.Většina softwaru neexistuje a je jen čísílko v počítači. To ho nedělá o nic méně reálným.
Není to nic jiného než doznání, že ty peníze neexistují, že je banka nemá. Chceš důkaz, že to tak je i v ČR? Pojďme se, lide, domluvit, a všichni pojďme vybrat veškeré své účty v hotovosti. Banky se zeserou a budou se vymlouvat na kde co, jenom aby nemuseli vydávat.Důkaz nepotřebuju, tohle je všeobecně známá věc, že banka v hotovosti nemá celou částku, kterou do ní lidi vložili, neboť je různě investuje a točí, aby vydělávaly. Ostatně to je taky důvod, proč ti přičítá úrok. V každé společnosti se musí dřív nebo později vyskytnout určité archetypy lidí. Ty jsi prostě hypochondrický hipster troll, jehož údělem je parazitovat na ostatních. Jeden z těch, kdo vymyslí dvacet důvodů proč to nejde, než aby zkusili realizovat jeden, jak to může jít. Skoro by bylo na místě tě politovat, kdyby sis v tom tak moc neliboval a neužíval si to.
Ostatně to je taky důvod, proč ti přičítá úrok.
Teď tu o karkulce.
Banky sice přičítají mizivé úroky, ale kdyby držely vše v hotovosti, tak by nemohly dělat ani to – naopak bys jim musel za uskladnění bankovek ještě hodně platit.
Já skoro žádné neplatím a když už, tak to souvisí s kartou – takže ty peníze tečou buď karetní společnosti nebo padnou na provoz bankomatů.
Důkaz nepotřebuju, tohle je všeobecně známá věc, že banka v hotovosti nemá celou částku, kterou do ní lidi vložili, neboť je různě investuje a točí, aby vydělávaly. Ostatně to je taky důvod, proč ti přičítá úrok.Zjistěte si, jak skutečně bankovnictví funguje, místo papouškování výmyslů, kterými vás krmili ve škole. Pak to zkuste znovu.
... jehož údělem je parazitovat na ostatních ...Mrzí mě, že si to myslíte. Já se umím akorát vymlouvat na to, že mě nikdo nic nenaučil. Ve škole do vás cpou buď kýbl lží, nebo kýbl zbytečností, který musíte papouškovat pod výhružkami propadnutí apod., doma mě nikdo do ničeho nevedl, nikdo mi neukázal, jak třeba vytěžit železo, urobit hrníčky, stavit zeď, ... navíc i kdyby ano, tak vám to zákon zakazuje dělat kvůli jakési byrokratické povinnosti být vyučen v ovčárně. Co dokážu, to je zamést a vytřít podlahu, usmažit hranolky, vajíčko, udělat škvarkový placky, vyplejt záhonek, zalejt, nasekat dříví, zatopit ... a to je asi všechno. Prostě lempl, co nic neumí.
kdo vymyslí dvacet důvodů proč to nejde, než aby zkusili realizovat jeden, jak to může jítAno. Ale né proto, že nechci, ale protože to neumím, nebo je mi to zakazováno. Můžu stokrát říkat, že peníze jsou šmejďárna a modla, ale pokud si to neuvědomí víc lidí, tak tu pořád budou a mně se bude vyčítat, že mám na věc jiný názor.
kdyby sis v tom tak moc neliboval a neužíval si to.Já si v tom nelibuju, ani si to neužívám. Mně přijde líto, že mi lidi nevěří, že nesdílí mé názory, že je nechcou ani respektovat. Na druhou stranu to chápu, lidi jsou od školky cvičeni jako ovce, i já jsem byl.
Já se umím akorát vymlouvat na to, že mě nikdo nic nenaučil.
To je v době Internetu dost blbá výmluva.
Ve škole do vás cpou buď kýbl lží, nebo kýbl zbytečností, který musíte papouškovat pod výhružkami propadnutí apod.
Sakra, asi jsem navštěvoval nesprávné školy, když si vzpomínám jenom na lži dětem a nedostatek informací.
To je v době Internetu dost blbá výmluva.
Jeho trápi sledovacia direktíva.
Zjistěte si, jak skutečně bankovnictví funguje, místo papouškování výmyslů, kterými vás krmili ve škole. Pak to zkuste znovu.Mě ve škole nikdo nic o bankách neučil, nejsem ekonom. Tohle jsem zaznamenal z nesouvisejících knih, kde je v nějakém (pro tuhle diskuzi nepodstatném) kontextu zmiňován termín Run na banku.
Ano. Ale né proto, že nechci, ale protože to neumím, nebo je mi to zakazováno. Můžu stokrát říkat, že peníze jsou šmejďárna a modla, ale pokud si to neuvědomí víc lidí, tak tu pořád budou a mně se bude vyčítat, že mám na věc jiný názor.To jsou kecy. Pokud ti něco vadí, změň to. Když to nepůjde, rozbij to. Co je ti po názorech ostatních? Ohol si hlavu, vytetuj si na ní škrtnutou pyramidu s okem, a každýmu, komu to bude vadit rozmlať držku.
Já si v tom nelibuju, ani si to neužívám. Mně přijde líto, že mi lidi nevěří, že nesdílí mé názory, že je nechcou ani respektovat. Na druhou stranu to chápu, lidi jsou od školky cvičeni jako ovce, i já jsem byl.Lidem jsi ukradený. Proč by jim na tobě mělo vůbec záležet? Vždyť jsi podle toho co píšeš budižkničemu, který skončí jako bezďák, zatímco se bude celý život litovat a vinit ze svých problémů ostatní, nikdy však sebere ani špetku sebreflexe, aby se podíval do sebe a neco s tím udělal. Vadí ti, že neumíš dostat železo z červené hlíny? Tak se to nauč. Z tebe mám tak akorát pocit, že i kdybych k tobě dotáhl kováře, který ví co a jak, tak bys akorát začal hledat výmluvy, že dneska ne, že sis přeležel záda a vůbec, to počasí se nějak nezdá a možná zítra, ale tomu zase budou bránit zákony a illumináti a obama.
Zjistěte si, jak skutečně bankovnictví funguje, místo papouškování výmyslů, kterými vás krmili ve škole. Pak to zkuste znovu.
Ako chceš získať dôkaz o opaku keď sú podľa teba bežne používane informácie nesprávne.
Mrzí mě, že si to myslíte. Já se umím akorát vymlouvat na to, že mě nikdo nic nenaučil. Ve škole do vás cpou buď kýbl lží, nebo kýbl zbytečností, který musíte papouškovat pod výhružkami propadnutí apod., doma mě nikdo do ničeho nevedl, nikdo mi neukázal, jak třeba vytěžit železo, urobit hrníčky, stavit zeď, ... navíc i kdyby ano, tak vám to zákon zakazuje dělat kvůli jakési byrokratické povinnosti být vyučen v ovčárně. Co dokážu, to je zamést a vytřít podlahu, usmažit hranolky, vajíčko, udělat škvarkový placky, vyplejt záhonek, zalejt, nasekat dříví, zatopit ... a to je asi všechno. Prostě lempl, co nic neumí.
Definuj množstvo zbytočných informácii.Neviem prečo máš stále pocit, že všetko čo si počul videl je zbytočné. Ako by podľa teba vyzeral svet keby každý robil veci podľa seba. Podľa popisu činnosti by si bol vhodný na upratovacie pozície. Napríklad upratovať priestory firmy.
Ano. Ale né proto, že nechci, ale protože to neumím, nebo je mi to zakazováno. Můžu stokrát říkat, že peníze jsou šmejďárna a modla, ale pokud si to neuvědomí víc lidí, tak tu pořád budou a mně se bude vyčítat, že mám na věc jiný názor.
Keď to nevieš prečo si dané informácie nenajdeš alebo nezbieraš na nejakú svoju stránku. Zrejme ti vadi, že by musel registrovať doménu a existoval by záznam na tvoje meno na internete. To je asi proti tvojmu presvedčeniu. Keď myslíš, že všetko je zlé, tak prečo to jednoducho nenecháš tak. Nikto ťa teraz nenúti chodiť po internete.
Ostatně to je taky důvod, proč ti přičítá úrok.Bylo by lepší, kdyby se žádné mizivé úroky nepřipisovaly. Člověk tím nic nezíská, akorát to dělá bordel v penězích.
A ještě se z toho musí platit daně.
no jo, jenže na Ukrajině jim podobně „zmizel“ i plyn nebo obsah státní pokladny. Takže z toho brzo bude Kouzelnická republika Ukrajina, kde bude všechno zmizelé a naopak se jim přikouzlí nějaké dluhy od MMF. Tak se ani moc nedivím obyvatelům na východě země, že s tím nechtějí mít nic společného.
odsudzujes konvencie a sam sa podla nich hodnotisJardík to potřebuje lépe vysvětlit, nechápe. Např. vyměnit notebook za 2 papíry ... ještě za takové, na které nejde pořádně nic čitelně napsat. Jsou to bezhodnotné cáry papíru a lidé je uctívají jako bohy. Jsou z nich úplně mimo. A proč? Protože si hrstka vyvolených nadlidí vylobovala zákony, že náhrada škody bude v papírech, poplatky budou v papírech a abyste se nemohl náhodou vykroutit ze systému peněz, tak musíte odvádět daň z žití a pracování v papírech, daň z přijmutí daru v papírech, daň z vlastnění pozzemku v papírech, ... a když to neuděláte, stát udělá bububu a ukradne vám všechno, co máte, aby to vyměnil za pár cárů papíru, co si klidně mohl natisknout sám z ničeho, tak jako to z ničeho tisknou banksteři a ještě jim za to platí úrok a tedy sám sobě stát zabraňuje splatit svůj jakýsi uměle vytvořený dluh, který je jen bububu na lidi a ve skutečnosti neexistuje.
Nedávno jsem potřeboval na skriptování něco trochu chytřejšího než je BashPokud bys potřeboval i pracovat s programy na příkazové řádce, zkus modul sh. Je to skoro geniální věc, která dynamicky mapuje
příkaz --switch=3
na sh.příkaz(switch=3)
a z vykonaného příkazu vrátí výstup. Díky tomu je možné scriptovat s pythonem na podobné úrovni, jako s perlem. Umí to i roury a všelijaké vymoženosti poměrně dost intuitivně. Od doby co jsem to objevil prakticky nepoužívám bash.
Jen pro zajímavost: jak by v Pythonu vypadalo tohle?
#!/usr/bin/perl while (<>) { if (/^CREATE\s+ROLE\s+([^\s]+)\s+LOGIN\s+PASSWORD\s+'([^']+)'/) { print " <database> <name>$1</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>$1</userName> <password>$2</password> </database>\n"; } }
CREATE ROLE postfix LOGIN PASSWORD 'akszudfgkausdzgfv'; CREATE ROLE ejabberd LOGIN PASSWORD 'dgfvkasdgfvkasgda'; -- a další řádky s jinou strukturou. které přeskočíme
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys for line in sys.stdin: if "CREATE ROLE" in line and "LOGIN PASSWORD" in line: login = line.split()[2] password = line.split()[-1].split("'")[1] print """ <database> <name>%s</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>%s</userName> <password>%s</password> </database>\n""" % (login, login, password)V tomhle konkrétním případě jsou nejspíš lepší regulární výrazy, ale mě hodně nebaví je neustále zapomínat a učit se je stále dokola. To co jsem napsal jsem schopný napsat i kdyby mě někdo vzbudil o půlnoci do 5 minut.
Aha, takže je to nejen delší, ale i hůře čitelné
Na těch RegExpech se mi právě líbí, že máš v podstatě vzor, popisující, jak má vypadat vstup – kouknu na ten jeden řádek a jsem schopný vytvořit vstupní data. U toho tvého kódu bych musel dělat vlastně reverzní inženýrství těch tří řádků a nakonec bych stejně dospěl k méně jednoznačnému závěru, než u toho regulárního výrazu.
ale mě hodně nebaví je neustále zapomínat a učit se je stále dokola
Občas se do dokumentace kouknu, neznám všechny skupiny znaků z hlavy, ale tyhle základy jsou jednoduché a zrovna tenhle kód jsem o půlnoci psal Hlavně se to hodí i pro různé grepování nebo vyhledávání v textových editorech.
perl -ne 'print "$1\n" if (/^([^:]+):.*bash$/)' < /etc/passwd
Na těch RegExpech se mi právě líbí, že máš v podstatě vzor, popisující, jak má vypadat vstup – kouknu na ten jeden řádek a jsem schopný vytvořit vstupní data. U toho tvého kódu bych musel dělat vlastně reverzní inženýrství těch tří řádků a nakonec bych stejně dospěl k méně jednoznačnému závěru, než u toho regulárního výrazu.Ale jo, já je čas od času taky používám. Jen když se k tomu kódu vrátím za půl roku, tak nemám tušení, co to matchuje. Způsob dělení pole, dokud nevydělím konkrétní element není zrovna úplně nejčistší, ale postupnými iteracemi (tohle chtělo asi tak 2) se k tomu dostanu rychleji, než abych vymýšlel a testoval regulární výraz. Samozřejmě, že jsou věci, které se takhle dělat nedají a pak je lepší imho sáhnout po BNF, která to popíše čitelně, i když krapet dlouze.
Aha, takže je to nejen delší, ale i hůře čitelnéTak při porovnání s perlem je skoro jakýkoliv jazyk delší
Kdyby to bylo tak jednoduché jako v Perlu, tak bys ten příklad napsal stejně rychle jako tenhle komentář
Vždyť já jsem ten kód napsal, v Perlu. A ze zájmu jsem se chtěl dozvědět, jak řeší tuhle úlohu programátoři v Pythonu.
Já chápu, že jsi provokatér a manipulátorArgument urážkou?
Jestliže jsi v diskuzi ty tím, kdy má potřebu sobě nebo druhým něco dokazovatTy jsi tvrdil "skoro stejně". Nebylo by tedy od věci toto tvrzení podložit. A nebo být schopen uznat, že ho podložit nemůžeš. Teda pokud zase nebudeš tvrdit něco o tom, že ten tvůj otazník znamená, že ses jenom zeptal a že ve skutečnosti nevíš.
Argument urážkou?Omlouvám se, upravuju na: Chápu, že máš chuť provokovat a manipulovat...
Nebylo by tedy od věci toto tvrzení podložit.Je to názor, který si může každý po letmém pohledu do dokumentace potvrdit/vyvrátit sám.
A nebo být schopen uznat, že ho podložit nemůžeš.Vyzýváš mě k tomu abych lhal? Ne, díky.
Argument urážkou?
Nebylo by tedy od věci toto tvrzení podložit. A nebo být schopen uznat, že ho podložit nemůžeš.asi u dotyčného hlboko zakorenené zlozvyky v komunikácii:)
mnou zavinenými
* poznámka korektora
Regulární výrazy v Javě fungují velmi podobně jako ty v Perlu až na nějaký ten syntaktický cukr, kde je potřeba být v Javě explicitnější.
Třeba takhle. Určitě by to šlo i stručněji, ale ta perlovská mánie onelinerů mě nikdy nebrala. O čitelnosti si udělej úsudek sám.
import re import sys from string import Template repattern = re.compile("^CREATE\s+ROLE\s+([^\s]+)\s+LOGIN\s+PASSWORD\s+'([^']+)'") output_string = Template(""" <database> <name>$login</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>$login</userName> <password>$password</password> </database>""") for line in sys.stdin: last_search = repattern.match(line) if last_search: print(output_string.substitute(login=last_search.group(1), password=last_search.group(2)))Je to v Pythonu 3, proto ty drobné syntaktické odlišnosti od Bystroushaakovy verze.
#! /usr/bin/env python import re, sys for line in sys.stdin: match = re.compile("^CREATE\s+ROLE\s+([^\s]+)\s+LOGIN\s+PASSWORD\s+'([^']+)'").match(line) if match: print """ <database> <name>%(login)s</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>%(login)s</userName> <password>%(pass)s</password> </database>\n""" % {"login": match.group(1), "pass": match.group(2)}
To už vypadá líp. Ale je to víc než 2× pomalejší oproti tomu Perlu a když bych to měl psát z hlavy bez nějakého IDE, tak se mi ten Perl bude psát líp.
A není? Já se právě snažím přijít na to, co je na tom Pythonu tak úžasného, že ho tolik lidí vychvaluje, a pořád to nějak nevidím. Zatím mi stále vychází jako nejlepší na skriptování a „prasení“ Bash/Perl a na programování Java/C++.
Já se právě snažím přijít na to, co je na tom Pythonu tak úžasného, že ho tolik lidí vychvaluje, a pořád to nějak nevidím.Za mě jsou to vysokoúrovňové záležitosti (kombinace tří paradigmat [oop, imperativni a funkcionalni], iterátory, generátory, spousta knihoven by default), to že python je k programátorovi milý a snaží se mu usnadnit život a pak taky kultura a komunita, která je kolem. Ne že by neměl nevýhody a špatné vlastnosti (GIL, unicode pain, složité packages), jen ty dobré je silně převyšují.
Zatím mi stále vychází jako nejlepší na skriptování a „prasení“ Bash/Perl a na programování Java/C++.Na parsování logů ti stačí sed a awk. BTW: Zkoušel jsi testovat na rychlost i tu mojí verzi s dělením stringů? Mám takový pocit, že by mohla být lehce rychlejší, ale nemám to na čem ověřit.
$ time ./sql-dk.pl < 1000000.sql > /dev/null real 0m1.785s user 0m1.752s sys 0m0.032s
$ time ./sql-dk.py < 1000000.sql > /dev/null real 0m3.996s user 0m3.952s sys 0m0.047s
$ time ./sql-dk.compile.py < 1000000.sql > /dev/null real 0m2.901s user 0m2.869s sys 0m0.031s
$ time ./sql-dk.split.py < 1000000.sql > /dev/null real 0m2.296s user 0m2.261s sys 0m0.035s
# sed -nf thisfile.sed
s%^CREATE\s\s*ROLE\s\s*\(\S\S*\)\s\s*LOGIN\s\s*PASSWORD\s\s*'\([^'][^']*\)'.*% <database>\
<name>\1</name>\
<url>jdbc:postgresql://localhost:5432/postgres</url>\
<userName>\1</userName>\
<password>\2</password>\
</database>\n;%p;
BEGINNING-OF-PROGRAM
DEFINE turnright AS
BEGIN
turnleft
turnleft
turnleft
END
BEGINNING-OF-EXECUTION
ITERATE 3 TIMES
turnright
turnoff
END-OF-EXECUTION
END-OF-PROGRAM
cI_I $ time sed -f sql-dk.sed < 1000000.sql > /dev/null real 0m12.016s user 0m11.954s sys 0m0.056s
Pěkné
$ time ./a.out < 1000000.sql > /dev/null real 0m1.959s user 0m1.712s sys 0m0.247s
Sice to není rychlejší než Perl, ale jako přístup se mi to líbí. Na tuhle úlohu je to samozřejmě kanón na vrabce, ale jinak ten Ragel vypadá dobře. Díky.
ragel sql-dk.rl && g++ sql-dk.c? Dělal jsi nějaké ruční optimalizace?
ragel -C -G2 -o sql-dk.cpp sql-dk.rl && g++ -O2 sql-dk.cpp
$ ragel -C -G2 -o sql-dk.cpp sql-dk.rl && g++ -O2 sql-dk.cpp $ time ./a.out < 1000000.sql > /dev/null real 0m0.741s user 0m0.517s sys 0m0.224s $ time ./sql-dk.pl < 1000000.sql > /dev/null real 0m1.748s user 0m1.723s sys 0m0.024s
A není?
Já se právě snažím přijít na to, co je na tom Pythonu tak úžasného, že ho tolik lidí vychvaluje, a pořád to nějak nevidím. Zatím mi stále vychází jako nejlepší na skriptování a „prasení“ Bash/Perl a na programování Java/C++.
No já třeba ten kód, co jsi napsal v perlu, moc nechápal, dokud to někdo nepřepsal do čitelného jazyka </rejp>.
Jinak perl nebo python mi na tohle přijdou overkill (zejména ten python, u nějž text processing určitě není hlavní featurou), úplně by stačil sed nebo awk.
Jinak ovšem na tuhle diskusi jako prdel na hrnec sedí Master Foo and the Shell Tools
Ještě pro srovnání hezky vedle sebe:
Perl:
#!/usr/bin/perl while (<>) { if (/^CREATE\s+ROLE\s+([^\s]+)\s+LOGIN\s+PASSWORD\s+'([^']+)'/) { print " <database> <name>$1</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>$1</userName> <password>$2</password> </database>\n"; } }Python:
#! /usr/bin/env python import re, sys for line in sys.stdin: match = re.compile("^CREATE\s+ROLE\s+([^\s]+)\s+LOGIN\s+PASSWORD\s+'([^']+)'").match(line) if match: print """ <database> <name>%(login)s</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>%(login)s</userName> <password>%(pass)s</password> </database>\n""" % {"login": match.group(1), "pass": match.group(2)}
Když budu chtít volat metody/funkce a importovat balíky/moduly pro základní věci, tak to rovnou můžu psát v Javě – navíc budu mít dokonalé napovídání (+dokumentaci) v IDE. Ale na takové to „prasení“ je ten Perl prostě elegantní.
format()
můžeš ten slovník přímo aplikovat. Perl se ti zdá elegantnější, protože nemusíš dávat import re
, mně osobně se zdá elegantnější Python kvůli té další práci se stringy a větší přehlednosti kódu. Psal jsem v obojím, ale v Pythonu jsem toho z vlastní vůle napsal podstatně víc.
Jen pro pořádek: nejsem autorem toho skriptu v Pythonu.
#!/usr/bin/perl while (<>) { if (/^CREATE\s+ROLE\s+(?<jmeno>[^\s]+)\s+LOGIN\s+PASSWORD\s+'(?<heslo>[^']+)'/) { print " <database> <name>$+{jmeno}</name> <url>jdbc:postgresql://localhost:5432/postgres</url> <userName>$+{jmeno}</userName> <password>$+{heslo}</password> </database>\n"; } }
když bych to měl psát z hlavy bez nějakého IDE, tak se mi ten Perl bude psát líp.To proto, že v perlu se uplatňuje jazyková magie ($1 se v následujícím příkazu nahrazuje výsledky předchozího výrazu, regularni vyrazy v samotném jazyku, namísto v standalone knihově), v pythonu ne. To může být fajn, dokud v tom děláš malé scripty, jakmile se však dostaneš nad určitou velikost, tak to imho začne překážet, nehledě na to, že to klade určité limity na jazyk samotný (co se stane, když budeš chtít používat jinou syntaxi reg. výrazů?).
To může být fajn, dokud v tom děláš malé scripty
Souhlasím. Ta magie je trochu šílená a dřív mě to úplně rozčilovalo, jak se tam objevují proměnné $_, $1, $2, … které jsem si nikde nedeklaroval. Ale nějak jsem tomu přišel na chuť. Dělám v tom právě ty krátké skripty, aby se vešly na obrazovku, a nepoužívám žádné IDE, jen editor (ani ne nějaký speciální, spíš co je zrovna po ruce).
Někdo v Perlu píše i dost velké programy – to si nedovedu moc představit1, ale to je obecně úskalí dynamických jazyků. V tomhle se mi zase líbí Java, protože tam se můžu vždycky spolehlivě proklikat na definici metody nebo si najít všechny třídy implementující určité rozhraní nebo potomky atd.
co se stane, když budeš chtít používat jinou syntaxi reg. výrazů?
Nehledě na to, že PCRE jsou v podstatě standard, bude to stejné jako jinde. V Javě máš taky jednu výchozí implementaci a když chceš jinou, musíš si importovat jiné třídy a přepsat svůj program. Bohužel tu není taková abstrakce jako třeba u XML parserů nebo XSLT transformátorů, kde můžeš vyměňovat implementaci jen pomocí konfigurace a program mít pořád stejný. V tom Pythonu to bude stejné, ne? Musím taky napsat jiný import a používat jiné třídy/moduly? Nebo to jde nějak ovlivnit konfigurací, aby import re
načetl jinou implementaci regulárních výrazů?
Co tak koukám, tak další magie je, že to rovnou čte ze stdin a výrazy na vstupu to rovnou matchuje tim regulárním výrazem, zatímco python kód používá iterátor ze souborového objektu v sys.stdin.
Ta magie while (<>)
funguje dokonce tak, že může číst i soubor – prostě jeho název stačí zadat jako argument skriptu Ale i kdybys iteroval přes něco jiného, ten regulární výraz se vyhodnocuje proti proměnné
$_
obsahující aktuální položku. Nebo napíšeš něco jako:
if ($jinaPromenna =~ /regulární výraz/)
Ale ty magické $1, $2 atd. ti zůstanou tak jako tak.
[1] resp. chce to asi strašně moc disciplíny a hodně dobrý návrh už od začátku
P.S.
V tomhle se mi zase líbí Java, protože tam se můžu vždycky spolehlivě proklikat na definici metody nebo si najít všechny třídy implementující určité rozhraní nebo potomky atd.
A tohle považuji za hodně důležité, protože v praxi jsem se naučil, že většina oprav a i spousta úprav je třeba jen jeden řádek nebo i pár znaků (takže až tak nesejde na tom, jestli jich je pět nebo deset) ale nejvíc času člověk stráví hledáním, kde tuhle malou změnu udělat.
(<>)To je "smajlík" pro goatse?
perl -e 'print (("\m/_d^_^b_\m/" =~ /m(etal)?/) ? "ne" : "ano"); print "\n";'
Někdo v Perlu píše i dost velké programy – to si nedovedu moc představit, ale to je obecně úskalí dynamických jazykůNo, to bude jeden z hlavních rozdílů mezi Perlem a Pythonem. V Pythonu velký program není až takový problém. (I když záleží na definici slova "velký", že jo). Samozřejmě Java je v tomhle někde jinde.
sub stripspace($) { my ($checkstring) = @_; my $newstring = ""; for $t (0..(length($checkstring)-1)) { $digit = substr($checkstring,$t,1); if (($digit eq "a") || ($digit eq "b") || ($digit eq "c") || ($digit eq "d") || ($digit eq "e") || ($digit eq "f") || ($digit eq "g") || ($digit eq "h") || ($digit eq "i") || ($digit eq "j") || ($digit eq "k") || ($digit eq "l") || ($digit eq "m") || ($digit eq "n") || ($digit eq "o") || ($digit eq "p") || ($digit eq "q") || ($digit eq "r") || ($digit eq "s") || ($digit eq "t") || ($digit eq "u") || ($digit eq "v") || ($digit eq "w") || ($digit eq "x") || ($digit eq "y") || ($digit eq "z") || ($digit eq "A") || ($digit eq "B") || ($digit eq "C") || ($digit eq "D") || ($digit eq "E") || ($digit eq "F") || ($digit eq "G") || ($digit eq "H") || ($digit eq "I") || ($digit eq "J") || ($digit eq "K") || ($digit eq "L") || ($digit eq "M") || ($digit eq "N") || ($digit eq "O") || ($digit eq "P") || ($digit eq "Q") || ($digit eq "R") || ($digit eq "S") || ($digit eq "T") || ($digit eq "U") || ($digit eq "V") || ($digit eq "W") || ($digit eq "X") || ($digit eq "Y") || ($digit eq "Z") || ($digit eq "1") || ($digit eq "2") || ($digit eq "3") || ($digit eq "4") || ($digit eq "5") || ($digit eq "6") || ($digit eq "7") || ($digit eq "8") || ($digit eq "9") || ($digit eq "0") || ($digit eq ".") || ($digit eq ",") || ($digit eq "#") || ($digit eq "-") || ($digit eq "+") || ($digit eq "@") || ($digit eq "_")) { $newstring = $newstring . $digit; } } $newstring; }
Přes státní rozpočet protéká kolem bilionu ročně a taky je to pěkná sračka.
sub stripspace($) { my ($checkstring) = @_; my $newstring = ""; for $t (0..(length($checkstring)-1)) { $digit = substr($checkstring,$t,1); if (($digit eq "a") || ($digit eq "b") || ($digit eq "c") || ($digit eq "d") || ($digit eq "e") || ($digit eq "f") || ($digit eq "g") || ($digit eq "h") || ($digit eq "i") || ($digit eq "j") || ($digit eq "k") || ($digit eq "l") || ($digit eq "m") || ($digit eq "n") || ($digit eq "o") || ($digit eq "p") || ($digit eq "q") || ($digit eq "r") || ($digit eq "s") || ($digit eq "t") || ($digit eq "u") || ($digit eq "v") || ($digit eq "w") || ($digit eq "x") || ($digit eq "y") || ($digit eq "z") || ($digit eq "A") || ($digit eq "B") || ($digit eq "C") || ($digit eq "D") || ($digit eq "E") || ($digit eq "F") || ($digit eq "G") || ($digit eq "H") || ($digit eq "I") || ($digit eq "J") || ($digit eq "K") || ($digit eq "L") || ($digit eq "M") || ($digit eq "N") || ($digit eq "O") || ($digit eq "P") || ($digit eq "Q") || ($digit eq "R") || ($digit eq "S") || ($digit eq "T") || ($digit eq "U") || ($digit eq "V") || ($digit eq "W") || ($digit eq "X") || ($digit eq "Y") || ($digit eq "Z") || ($digit eq "1") || ($digit eq "2") || ($digit eq "3") || ($digit eq "4") || ($digit eq "5") || ($digit eq "6") || ($digit eq "7") || ($digit eq "8") || ($digit eq "9") || ($digit eq "0") || ($digit eq ".") || ($digit eq ",") || ($digit eq "#") || ($digit eq "-") || ($digit eq "+") || ($digit eq "@") || ($digit eq "_")) { $newstring = $newstring . $digit; } } $newstring; }