V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."
Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.
Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.
Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.
… více »Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.
Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.
ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím
… více »ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.
Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.
Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).
replacement je volitelný čtvrtý parametr. Někdy potřebujete získat část řetězce podle indexů, někdy část řetězce podle indexů potřebujete nahradit – a Perl má funkci, která to podle způsobu použití umí obojí, případně i najednou. Řekl bych, že je to takové typicky perlovské řešení.
substr vrací podřetězec určený indexem a délkou (2. a 3. parametr). Čtvrtý parametr nijak neovlivňuje vracenou hodnotu, ale původní řetězec předaný jako 1. parametr.
V pseudokódu využívajícím trojparametrický substr() to dělá zhruba tohle:
$result = substr($string, $offset, $length); $string = substr($string, 0, $offset) + $replacement + substr($string, $length+$offset, strlen($string)-$length-1); return $resultPřičemž
$string není zkopírovaná hodnota, ale je to pořád ten „původní“, tj. funkce změní jeho hodnotu i z pohledu kódu, který funkci vyvolal.
Overview
perl Perl overview (this section)
perlintro Perl introduction for beginners
perltoc Perl documentation table of contents
Tutorials
perlreftut Perl references short introduction
perldsc Perl data structures intro
perllol Perl data structures: arrays of arrays
perlrequick Perl regular expressions quick start
perlretut Perl regular expressions tutorial
perlboot Perl OO tutorial for beginners
perltoot Perl OO tutorial, part 1
perltooc Perl OO tutorial, part 2
perlbot Perl OO tricks and examples
perlperf Perl Performance and Optimization Techniques
perlstyle Perl style guide
perlcheat Perl cheat sheet
perltrap Perl traps for the unwary
perldebtut Perl debugging tutorial
perlfaq Perl frequently asked questions
perlfaq1 General Questions About Perl
perlfaq2 Obtaining and Learning about Perl
perlfaq3 Programming Tools
perlfaq4 Data Manipulation
perlfaq5 Files and Formats
perlfaq6 Regexes
perlfaq7 Perl Language Issues
perlfaq8 System Interaction
Reference Manual
perlsyn Perl syntax
perldata Perl data structures
perlop Perl operators and precedence
perlsub Perl subroutines
perlfunc Perl built-in functions
perlopentut Perl open() tutorial
perlpacktut Perl pack() and unpack() tutorial
perlpod Perl plain old documentation
perlpodspec Perl plain old documentation format specification
perlrun Perl execution and options
perldiag Perl diagnostic messages
perllexwarn Perl warnings and their control
perldebug Perl debugging
perlvar Perl predefined variables
perlre Perl regular expressions, the rest of the story
perlrebackslash Perl regular expression backslash sequences
perlrecharclass Perl regular expression character classes
perlreref Perl regular expressions quick reference
perlref Perl references, the rest of the story
perlform Perl formats
perlobj Perl objects
perltie Perl objects hidden behind simple variables
perldbmfilter Perl DBM filters
To je opravdu tak tezky zadat man perlfunc a najit si, co presne substr dela???
Jednak, perl substr lze pouzit i jako lvalue, cili substr($var,X,Y) = "neco";. A kdyz si popis substr poradne prectete, tak zjistite, ze:
An alternative to using substr() as an lvalue is to specify the replacement string as the 4th argument. This allows you to replace parts of the EXPR and return what was there before in one operation, just as you can with splice().Pokud neovladate EN, urcite se daji tyhle man stranky najit i v CZ. Pokud nechapete vyznam, nezacinejte programovat a jdete delat neco jineho.
k cemu tam je ten ctvrty parametrnebo
Takze pri takomto pouziti ("") je tam zbytocnynebo
to je nejake divne, pripada me ze u takove funkce replacement neni potreba. Hledat v diskuzi spravnou odpoved by mel autor zapisku a pak opravit blog, aby to kazdy dalsi ctenar videl hned. Je blbost, aby kazdy ctenar pak prochazel diskuzi a hledal, jestli uz tam nekdo spravne reseni nenapsal. A kdyz jsem videl ty "vestecke" reakce (viz vyse), tak jsem nemel chut se tim dal hrabat, kdyz odpoved je primo v manu. Misto tehle zbytecnych uvah si kolegove diskutujici a autor mohli behem 5 minut v manu najit, proc je tam ctvrty parametr a co presne dela. Podobne nesnasim blogy stylu
Zjistil jsem, ze tohle nefunguje, dokud nezapnu tamten prepinac. Nevim proc, ale proste to tak je.A pak nakonec dotycny zjisti, ze mel proste neco v systemu spatne a proto to nefungovalo a ten jiny prepinac byla jen souhra nahod. Bohuzel, driv na Linuxu byli pouze odbornici, kteri se zajimalo, jak ta vec funguje. Dneska se do toho stoura kazdy, ale navody ctou jen nekteri.
perldoc -f substr
$a = 0; $b = ++$a; say "$a - $b"; # 1 - 1 $a = 0; $b = $a++; say "$a - $b"; # 1 - 0 $a = "abc"; $b = substr ($a, 0, 1) = "X"; say "$a - $b"; # Xbc - X $a = "abc"; $b = substr ($a, 0, 1, "X"); say "$a - $b"; # Xbc - a
V manuálu je to skutečně dobře (anglicky) podáno, budu rozhodně používat. Hledal jsem předtím i na webu, ale bohužel jsem narazil na ne příliš dobré stránky, které se funkcí substr() se 4 parametry příliš nezabývaly a vysvětlení chybělo, z toho plynula má frustrace. Teď je tedy chování funkce substr() v PERLu jasné. Uvidíme, na co zajímavého ještě v knize narazím.
Misto hledani jehly v kupce sena radeji prohledate cely stoh?Já při práci místo nesmyslných příměrů používám hlavu :).
perl -aF'/\s+/' -ne '$s{$F[0]}++;END{foreach $ip (keys(%s)) {print "$f $s{$f}\n";}' /var/log/apache/access.log. Moc dobre to nejde, vid?

cut -d' ' -f1 /var/log/access.log | uniq -c


perl -F'/\s/' -apple '$s{$F[0]}++}for(keys%s){$_.=" $s{$_}"'
Jinak, chtel jsem ten perl videt prepsanej v pythonu:)Nejsem si jistej jestli jsem dostatečně dobře pochopil co to dělá, ale:
python -c "print '\n'.join(set(map(lambda x: x.split()[0], open('/var/log/apache/access.log').readlines())))"
Log apache zrovna nemám po ruce, takže jsem to zkoušel na testovacím souboru..
python -c "d = map(lambda x: x.split()[0], open('/var/log/apache/access.log').readlines()); print '\n'.join([str(y) + ' ' + x for x, y in dict([[x, d.count(x)] for x in d]).items()])"
Je to už ale hnusně nepřehledné, napsal bych si na to radši klasický script nebo použil << EOF.
Dost možná bys došel úplně k jinému postupu a to, že bys to celé dělal v interaktivním pythonu, kde bysis seznam řádků postupně upravoval a vytáhl z něj naprosto libovolné výstupy.Tenhle postup jsem musel pracně vymýšlet, protože chtěl vidět ekvivalent svého perlového příkazu. Kdybych to dělal v interaktivním režimu, vypadalo by úplně, ale úplně jinak.
Tenhle postup jsem musel pracně vymýšlet, protože chtěl vidět ekvivalent svého perlového příkazu. Kdybych to dělal v interaktivním režimu, vypadalo by úplně, ale úplně jinak.Jasně, tak jsem to myslel. Jen jsem nevěděl, jestli s tím máš už nějaké zkušenosti.
python -c 'import sys, itertools; print "\n".join(("%s %s" % (k, c) for k, c in sorted(((len(list(g)), k) for k, g in itertools.groupby(sorted(l.split()[0] for l in open(sys.argv[1], "r")))), reverse=True)))' access.log
Zde je ještě indentovaná verze.
import sys, itertools
print "\n".join(
("%s %s" % (k, c) for k, c in
sorted(
( (len(list(g)), k) for k, g in
itertools.groupby(
sorted(l.split()[0] for l in open(sys.argv[1], "r")))), reverse=True)))
awk '$1 != prev {print $1; prev = $1;}' /var/log/access.log
No, zkus si odinstalovat perl u uvidis, kolik balicku se ti s tim odinstaluje, protoze bude perl zavislost. Mozna ti to ani nepujde, protoze perl bude systemova zavislost.Tak jsem to zkusil a dost by to bolelo :D 570 balíků by to vzalo s sebou a dalším ~200 by se nelíbyla nevyřešená závislost :S
Jinak, perl mi prijde lepsi - zkus si v pythonu udelat perl -aF'/\s+/' -ne '$s{$F[0]}++;END{foreach $ip (keys(%s)) {print "$f $s{$f}\n";}' /var/log/apache/access.log. Moc dobre to nejde, vid?Erm… na tohle svůj názor psát radši nebudu :D. P.S.: Používám perl, awk i python.
while ( $uinp = <> ) {
$tinp = chomp($uinp);
exit 1 if ( $uinp eq "quit" );
eval($uinp);
}
[pavlix@traveller ~]$ python3 Python 3.2 (r32:88445, Feb 21 2011, 21:11:06) [GCC 4.6.0 20110212 (Red Hat 4.6.0-0.7)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 3 + 4 7 >>> from fractions import Fraction >>> Fraction(3) / Fraction(4) Fraction(3, 4) >>> _ + Fraction(1, 2) Fraction(5, 4) >>> quit Use quit() or Ctrl-D (i.e. EOF) to exit >>> quit() [pavlix@traveller ~]$To jen abys věděl, o co se jedná. Další flame na toto téma je zbytečný.
Ja VIM, jak funguje interaktivni shell v Python, v Perl holt nemas holt interaktivni shell primo, ale pomuzes si evalem. Nepredpokladam, zes ten eval vubec zkousel, jinak bys vedel, ze tam muzes delat to same, cos predvedl s Pythonem, nacitat moduly, psat subrutiny....
Jestli hledas kamose na flejm, tak si vybral spatne
Hele clovece, jak ty muzes vest kurzy, tobe teda asertivita nic nerikaAž mi budeš platit, budu se k tobě chovat pozitivně i když budeš mlít kraviny :). Za daných okolností mi připadají moje reakce dostatečně asertivní. Btw, jdu změnit patičku, aby tě tam neprovokoval ten Python :). Chápu, že tě to může rušit :).
Ja VIM, jak funguje interaktivni shell v Python, v Perl holt nemas holt interaktivni shell primo, ale pomuzes si evalem. Nepredpokladam, zes ten eval vubec zkousel, jinak bys vedel, ze tam muzes delat to same, cos predvedl s Pythonem, nacitat moduly, psat subrutiny....„To samé“ to je asi tak jako když řekneš, že v assembleru jde dělat to samé jako v perlu. Technicky budeš mít samozřejmě pravdu v obou případech, ale použitelnost je značně odlišná.
Jestli hledas kamose na flejm, tak si vybral spatneTo sis vybral špatně
.
Jinak ale musim nabidku odmitnout - ne ze bych mel nejake vyhrady vuci tvym znalostem, ale mit v tymu nekoho, kdo takhle seka zobakem, to radsi ne... :-P
Btw, jdu změnit patičku, aby tě tam neprovokoval ten Python :). Chápu, že tě to může rušit :).
Z ceho tak usuzujes? Ja proti Pythonu celkem nic nemam, sice mi nesedi, ale respektuji, pokud se ho nekdo rozhodne pouzivat...
To sis vybral špatně
.
Hele, ty mas problem poznat odlehcenejsi ton diskuze? trochu mi prijde, ze beres vsechno strasne vazne, za kazdou vetou hledas narazku ci osobni utok... Ber to trochu s nadsazkou, ne kazdy, kdo prijde do diskuze, se chce hadat... I kdyz co tak v posledni dobe sleduju, tak se prevazna cast diskuzi zvrhne v hadku o nejakou blbost :(
Takze kdyz ti nekdo plati, tam mu lezes do pr...?Mezi lezením do prdele a korektním jednáním s blbcem je určitý rozdíl... ale musím říct, že ve své pracovní praxi s blbcem spolupracuju velmi zřídkakdy. Většinou se z toho dá nějak vyvlíknout nebo včas odmítnout.
Jinak ale musim nabidku odmitnout - ne ze bych mel nejake vyhrady vuci tvym znalostem, ale mit v tymu nekoho, kdo takhle seka zobakem, to radsi ne... :-PPokud jsi to pochopil jako nabídku, měl bys uvažovat o lepším parseru na sarkasmus či alespoň nadsázku :). Jinak mám drobné podezření, že v tvém týmu z principu bude minimálně jeden člověk, který bude mít nutkání vytvářet v týmu problém. Osobně bych se toho dost nerad účastnil :).
Hele, ty mas problem poznat odlehcenejsi ton diskuze?Myslel jsem, že ho máš ty :).
Ja nemam problem poznat odlehcenejsi ton. Ale ty by ses mel zamyslet na tim, ze neustale reagovat kousavymi komentari, urazkami a napadanim ti dobrou povest nezajisti. Jak jsem si vsiml v jinych dizkuzich, neni tohle zdaleka vyjimka...Nápodobně.
>
Mě přišlo, že píšu docela srozumitelně.Prave ze vubec, co se vam v debugeru nelibilo?
luky@ntb:~$ perl -debile_cti_man Loading DB routines from perl5db.pl version 1.32 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(-e:1): bile_cti_man DB<1> p 7 + 3 10 DB<2> use Number::Fraction DB<3> $a = new Number::Fraction(3) / new Number::Fraction(4) DB<4> p $a 3/4 DB<5> $a += 5 DB<6> p $a 23/4
Tiskni
Sdílej: