AlmaLinux byl vydán v nové stabilní verzi 9.4 (Mastodon, 𝕏). S kódovým názvem Seafoam Ocelot. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.
Před 50 lety, 5. května 1974 v žurnálu IEEE Transactions on Communications, Vint Cerf a Bob Kahn popsali protokol TCP (pdf).
Bylo vydáno do češtiny přeložené číslo 717 týdeníku WeeklyOSM přinášející zprávy ze světa OpenStreetMap.
Byla vydána (Mastodon, 𝕏) nová stabilní verze 2.10.38 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.
Google zveřejnil seznam 1220 projektů od 195 organizací (Debian, GNU, openSUSE, Linux Foundation, Haiku, Python, …) přijatých do letošního, již dvacátého, Google Summer of Code.
Na základě DMCA požadavku bylo na konci dubna z GitHubu odstraněno 8535 repozitářů se zdrojovými kódy open source emulátoru přenosné herní konzole Nintendo Switch yuzu.
Webový prohlížeč Dillo (Wikipedie) byl vydán ve verzi 3.1.0. Po devíti letech od vydání předchozí verze 3.0.5. Doména dillo.org již nepatří vývojářům Dilla.
O víkendu probíhá v Bostonu, a také virtuálně, konference LibrePlanet 2024 organizovaná nadací Free Software Foundation (FSF).
Nová vývojová verze Wine 9.8 řeší mimo jiné chybu #3689 při instalaci Microsoft Office 97 nahlášenou v roce 2005.
Coppwr, tj. GUI nástroj pro nízkoúrovňové ovládání PipeWire, byl vydán v nové verzi 1.6.0. Zdrojové kódy jsou k dispozici na GitHubu. Instalovat lze také z Flathubu.
*
a nakonec o topic proměnné $_
a jejím nepsání.
-> $a, @b, :$x, :$y, *@positional, *%named { dd $a, $b, $x, $y, @positional, %named }kde
$a, @b
jsou poziční parametry a @positional
je slurp pole ostatních pozičních parametrů a podobně $x, $y
jsou jmenné parametry a %named
je slurp hash ostatních jmených parametrů.
Tento blok můžeme definovat, ale i pomocí zástupných proměnných
{ dd $^a, @^b, $:x, $:y, @_, %_ } #u pozičních parametrů záleží na lexikografickém uspořádání. Ukažme několik příkladů:
{ dd ($^a, @^b, $:x, $:y, @_, %_) }( 1, (2, 3), 4, :32x, :12z, :1y ); #(1, (2, 3), 32, 1, [4], {:z(12)}) say (^5)».&{ $^a + 1 }; #(1 2 3 4 5) — voláme podpogram jako metodu, pamatujete první kapitolu say (^5).map: { $^a + 1 }; #(1 2 3 4 5) — přibližně totéž co výše for (^6) { #0 2 1 say "$^a $^c $^b"; #3 5 4 }; for (<a b c> Z ^3+1).flat { #(1 a) say ($^number, $^letter) #(2 b) — number je lexikograficky větší než letter }; #(3 c)Všimněte si jak
for
předá počet hodnot, podle toho kolik je v bloku zástupných (pozičních) parametrů.
*
*
.
Příklady:
say ( *.chars + * )("ahoj", 2); #6 my &multiply_three_numbers = * * * * *; #1. 3. a 5. * jsou parametry say multiply_three_numbers 2, 3, 2; #12 #2. a 4. * je binární operátor násobení say (^5)».&( * + 1 ); #(1 2 3 4 5) — kulaté závorky místo hranatých say (^5).map: * + 1 ; #(1 2 3 4 5) — zápis map bez závorek say (^5).&( ** + 1 ); #(1 2 3 4 5) — ** je tzv. hyperwhateverHvězdičku můžeme použít jako zástupný znak i v jiných případech, většinou když chceme něco bez omezení nebo ve významu co možná nejvíc. Některé příklady využití whatever:
my @matrix = ( (1, 2, 3), ('a', 'b', 'c'), ('x', 'y', 'z') ); say @matrix[*]; #((1 2 3) (a b c) (x y z)) say @matrix[*-1;*]; #(x y z) — poslední řádek say @matrix[*;2]; #(3 c z) — druhý sloupec my @e=@matrix[*;*]; say @e[*]; #(1 2 3 a b c x y z) say @e[2 .. *]; #(3 a b c x y z) say @e[0 .. *-4]; #(1 2 3 a b c) say @e.pick(*); #(3 x c y a z 1 b 2) — náhodné pořadí for 21 .. * Z~ '×' xx * Z~ @e { #27×x say $^a if $^a ~~ '27×x' ff *; #28×y } #29×z
$_
$_
. Topic proměnná je zapisovatelná. Používají ji různé příkazy a často není potřeba ani psát. Především pro každou metodu jde zapsat .metoda
jako zkrácený zápis pro $_.metoda
, for
a given
nastavují $_
. Topic proměnnou lze použít jako zástupnou proměnou v bloku. when
porovnává s touto proměnou, s///
resp. m//
implicitně nahrazuje resp. hledá v této proměnné atd. Raději místo dalšího vypisování uvedu pár příkladů:
$_="ahoj"; say .chars; say ( $OUTER::_, $_ for ^2 ); #((ahoj 0) (ahoj 1)) — tady nelze použít $^a před for není blok s/aho/čau /; .say; #čau j my ( $a, $b, $c ) = 0, 1, 2; for $a, $b, $c { #0 say .++; #1 }; #2 say "$a $b $c"; #1 2 3 my @a = < abba kolo oko vede >; say grep { True when .flip }, @a; #(abba oko) for 21 .. * Z~ '×' xx * Z~ @e { #27×x — srovnejte s předešlou kapitolou .say if '27×x' ff *; #28×y } #29×z my @b = < ahoj jak se vede >; say @b.first({ .=chop; .chars > 2 }); #s say @b; #[aho ja s vede]
Tiskni Sdílej:
vyjádřili přímo v tomto vlákněTo by platilo tak pred rokmi, dnes musíš ľudí dokopať, aby mali jednoduchú možnosť voľby :) Je pravda, že aj ja som migroval kvôli jednoduchosti na PHP, pretože to fungovalo Out of the box a ostatné jazyky mali úplne kulové, teda jediné naozaj použiteľné boli len Perl, PHP a mne ostatné jazyky prídu aj dnes viac náročné na spojazdnenie a správnu konfiguráciu.
my &multiply_three_numbers = * * * * *;
dava uplne nove moznosti pro opravdu poradne obfuscovany kod. Nechapu, kdo mohl neco takoveho vymyslet. Funkcionalita to je zajimava, ale mohli pouzit aspon nejaky jiny znak.
*
opatrně, &multiply_three_numbers
jsem uvedl jako zajímavost. Někde mi, především u jednoduchých map, grep, …
, připadá ten zápis přirozený .grep: * > 3;
, .sort: *.chars;
atd. A nebál bych se ani čitelnosti u něčeho takového .map: * * 1.328;
.
for 21 .. * Z~ '×' xx * Z~ @e { #27×x say $^a if $^a ~~ '27×x' ff *; #28×y }