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 »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
V Tiraně proběhl letošní Linux App Summit (LAS) (Mastodon). Zatím nesestříhané videozáznamy přednášek jsou k dispozici na YouTube.
$str = "abc"; $out = substr($str, 0, 1, ""); print "str: $str\nout: $out\n";Celou dobu jsem nedokázal pochopit, proč bude v proměnné $out znak "a". Pokud to dobře chápu, nejprve se provede
$out = substr($str, 0, 1)
a až poté se v proměnné $str nahradí první znak prázdným znakem? Člověk by řekl, že to bude prosté jako bulharská striptérka, ale mně to teda jasné není. A nebo už fakt přicházím o mozkové buňky.
Tiskni
Sdílej:
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 filtersTo 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
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ý.
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ě
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