V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.
Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.
Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.
Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
T-Mobile od 15. září zpřístupňuje RCS (Rich Communication Services) zprávy i pro iPhone.
Společnost ARM představila platformu Arm Lumex s Arm C1 CPU Cluster a Arm Mali G1-Ultra GPU pro vlajkové chytré telefony a počítače nové generace.
Unicode Consortium, nezisková organizace koordinující rozvoj standardu Unicode, oznámila vydání Unicode 17.0. Přidáno bylo 4 803 nových znaků. Celkově jich je 159 801. Přibylo 7 nových Emoji.
Apple představil (YouTube) telefony iPhone 17 Pro a iPhone 17 Pro Max, iPhone 17 a iPhone Air, sluchátka AirPods Pro 3 a hodinky Watch Series 11, Watch SE 3 a Watch Ultra 3.
Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.6.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze již instalovat také ze Snapcraftu a Flathubu.
$touch Ahoj\ svete.
. Nebo pokud mas v adresar soubory "a", "a a", "a b". Pri doplnovani se doplni pouze na a. Mezeru je opet treba zadat escapovane. Zkuste si to je to dobre videt.
Proste mezera je v cli peknej opruz.
#!/bin/bash if [ $# -eq 0 ];then echo "Usage: $0 directory ..." else while [ $# -gt 0 ];do if [ -d "$1" ];then find "$1" -mindepth 1 -maxdepth 1 | while read name;do nname="$( echo "$name" | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ' | tr 'A-Z' 'a-z' | tr -cs '-0-9a-z_.' '_' | tr -s '-_' '-_' | sed 's/^[-_]\+//;s/[-_]*-[-_]*/-/g;s/[-_]\+\.\/./g;s/\.[-_]\+/./g;' )" if [ "$name" != "$nname" ];then mv -v "$name" "$nname";fi find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0" done shift else echo "Directory $1 does not exist" fi done fi
#!/usr/bin/perl if (scalar(@ARGV)==0) { print "Usage: $0 directory ...\n"; } else { @dirs=@ARGV; while ($dir=shift @dirs) { if (-d $dir) { if (opendir D,"$dir") { @names=readdir D; closedir D; for ($i=0;$i<scalar(@names);$i++) { push @dirs,"$dir/$names[$i]" if (-d "$dir/$names[$i]); $nname=$names[$i]; $nname=~tr/ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż\x9D\x9A\x9E\x8D\x8A\x8E/AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ/; $nname=~tr/A-Z/a-z/; $nname=~tr/-0-9a-z_./_/cs; $nname=~tr/-_/-_/s; $nname=~s/^[-_]+//; $nname=~s/[-_]*-[-_]*/_/g; $nname=~s/[-_]+\././g; $nname=~s/\.[-_]+/./g; if ($nname ne $names[$i]) { print STDERR "Error in rename: $!\n" unless rename "$dir/$names[$i]","$dir/$nname"; } } } else { print STDERR "Unable to open directory $dir: $!\n"; } } else { print STDERR "Directory $dir does not exist\n"; } } }P.S.: Jeste ze fungujou tagy pre, znacky code fungujou nejak podivne a po prvni prazdne radce se asi sami vypnou.
K tomu bashu: cely ten brutal riadok by siel spravit jednym sedom, a usetrit 10 procesov spustanych pre kazdy subor, co by bolo sakra poznat, pri premenovavani velkeho stromu suborov.Jojo, to mas recht. V tomhle pohledu bude urcite ten perl i ten python privetivejsi. Jinak ten "y" (alias tr) v sedu by se pouzit uricte dal, zalezi jaky akceptuje parametry, ale pokud by umoznoval "c" (complement) a "s" (squeeze-repeats), a kdyby sed bral sekvence \x9D, tak by ten radek mohl snad vypadat nejak takhle
nname="$( echo "$name" | sed 'y/ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż\x9D\x9A\x9E\x8D\x8A\x8E/AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ/;y/A-Z/a-z/;y/-0-9a-z_./_/cs;y/-_/-_/s;s/^[-_]\+//;s/[-_]*-[-_]*/-/g;s/[-_]\+\.\/./g;s/\.[-_]\+/./g;' )"Tak ted jsem to overoval a zda se, ze muj sed (GNU sed version 4.1.5) umi \x9D, ale bohuzel neumi y/// s ruznyma dylkama a navic tudiz nelze zapsat nahrazeni complement seznamu a navic y/// nebere parametry, cili selhava prikaz
y/-0-9a-z_./_/cs"strings for `y' command are different lengths" a po smazani pak selhava i
y/-_/-_/s;"extra characters after command". Takze na jednoduchy zmeny to y/// v sedu staci, na slozitejsi je lepsi perl nebo tr.
Na druhej strane, to rekurentne volanie sa mi fakt paci a asi ho tiez zacnem pouzivatKazdej den se neco novyho ucime
y/-0-9a-z_./_/csby slo spravit prikazom (pri ERE, ale to je jedno, je to iba kvoli nazornosti)
s/[^-0-9a-z_.]+/_/ga
y/-_/-_/sby slo spravit cez
s/([-_])\1*/\1/g(BTW prikaz
tr -s '-_' '-_'
mi nefacha a musim pouzit tr -s -- '-_' '-_'
ale moze to byt verziou tr)
cmp1(renamer, u'ůěščřžýáíé', u'uescrzyaie') cmp1(renamer, u'úďťňó', u'udtno') cmp1(renamer, u'ĚŠČŘŽÝÁÍÉ', u'ESCRZYAIE') cmp1(renamer, u'ÚĎŤŇÓ', u'UDTNO')ad 3) hmmm, nevim, me ten bash i perl skript pripada jednodussi, zadny objekty , proste za sebou par tr a s prikazu s jednoduchou syntaxi ad 4) hmmm, pravda, python jsem na woknech nezkousel, ale perl na woknech urcite funguje a bash taky (at uz pod celym cygwinem, nebo pouze s vybrakovanym cygwin DLL a prislusnyma balickama, nebo taky jako v projektu gnuwin32.sf.net) Ale jeste jsem ted mrknul na tu tridu a celkove objektovej navrh a rekl bych, ze by bylo lepsi, kdybys tu tridu udelal jako podtridu tridy String (napr. UntidyFileName) a v ni definoval metodu cleanName a pak to volala jako newname=oldname.cleanName. Protoze volani renamer.cleanName(oldName) je podle me presne ta prasarna, kterou splodi clovek zvyklej na programovani s funkceme, kterej zrovna presel na nejakej jazyk s objektama. A proto se mi taky nelibi Python, protoze self.re_invalid_stuff = re.compile(r"[^a-zA-Z0-9_\.-]+") a self.re_invalid_stuff.sub("_", fileName) nepovazuju za objektovej pristup a cekal bych spis fileName.subst(r"^[-_]+","_"). Jak se to (a) zkratilo, a (b) zprehlednilo, co? Dokud proste bude jazyk kombinovat funkce a operatory s metodama, tak to nebude poradnej OO jazyk (tim samozrejme myslim i Javu, Perl a dalsi pseudo OO jazyky
#!/bin/bash # prejmenovat.sh srcenc=latin2 while [ -n "$1" ] do n="$(iconv -f "$srcenc" -t "ascii//TRANSLIT" <<< "$1" )" mv "$1" "$n" rename 's/ +/_/g;y/A-Z/a-z/' "$n" shift 1 done
find . -depth | xargs prejmenovat.shJoo, je to trošku neefektivní a ty regexpy u rename budou chtít trošku doladit, ale v zásadě by to fungovat mělo... ps: Netestoval jsem to.
NAME rename - Rename files SYNOPSIS rename from to file... DESCRIPTION rename will rename the specified files by replacing the first occurrence of from in their name by to. For example, given the files foo1, ..., foo9, foo10, ..., foo278, the commands rename foo foo0 foo? rename foo foo0 foo?? will turn them into foo001, ..., foo009, foo010, ..., foo278. And rename .htm .html *.htm will fix the extension of your html files.Takze to bude asi ciste na string-to-string konverzi, zadny regulary. Nebo mas jinou verzi? Ja mam "rename from util-linux-2.12r" (kterej manas to do CZ prelozil jako "rename na util-linux-2.12r"???) Jinak tech regexpu ti tam jeste par chybi
document.getElementById("dlcounter").innerHTML = 'Please wait <b>'+x1786+'</b> seconds'a URL na stahovanej soubor se tvori pomoci JS funkci, napr.
document.getElementById("download_html").innerHTML = '<a href="Array" class="downloadhtml" onclick="loadingdownload();">Click here to download</font></a>'; var a = String.fromCharCode(Math.abs(-101)); var d = '5' + String.fromCharCode(Math.sqrt(3249)); document.getElementById("dlbutton").innerHTML = '<a href="http://www41.megaupload.com/files/2a9f31' + d + a + 'afac798acff4e54a6c927d7/ANTOINE DE SAINT-EXUPÉRY - Malý Princ.pdf" onclick="loadingdownload();"><IMG SRC="" WIDTH="165" HEIGHT="39" BORDER="0" ALT="" id="dlimage" onmouseover="dlimg.src=this.src;this.src=dlimgover.src;" onmouseout="this.src=dlimg.src;"></a>';document.getElementById('dlcounter').style.display = 'none';document.getElementById('dlcounterimg').style.display = 'none';document.getElementById('dlimage').src = dlimg.src;Takze jsem na to udelal jednoduchej JS parser a interpret
size="x576" for i in *.jpg *JPG do echo "$i" convert -sample $size $i nahledy/$i doneSam pouzivam v tomto skriptu size="800x800>", coz mi zmensi vsechny obrazky, aby vetsi rozmer nebyl pres 800px.
pic-1.jpg JPEG 2304x1728 2304x1728+0+0 DirectClass 8-bit 902.07kb pic-2.jpg[1] JPEG 1728x2304 1728x2304+0+0 DirectClass 8-bit 1.20726mb 0.360u 0:02 $ convert -verbose pic-1.jpg -resize x600 pic-1-a.jpg pic-1.jpg JPEG 2304x1728 2304x1728+0+0 DirectClass 8-bit 902.07kb pic-1.jpg=>pic-1-a.jpg JPEG 2304x1728=>800x600 800x600+0+0 DirectClass 16-bit 97.8203kb 0.810u 0:02 $ convert -verbose pic-2.jpg -resize x600 pic-2-a.jpg pic-2.jpg JPEG 1728x2304 1728x2304+0+0 DirectClass 8-bit 1.20726mb pic-2.jpg=>pic-2-a.jpg JPEG 1728x2304=>450x600 450x600+0+0 DirectClass 16-bit 102.682kb 0.620u 0:02Je to to, co jsi potreboval?
pisnicka.mp3
a písnička.mp3
?
Jinak pro samotné zbavení se diakritiky se dá použít v příkazové řádce příkaz unaccent (1)
.
#!/bin/bash if [ $# -eq 0 ];then echo "Usage: $0 directory ..." else while [ $# -gt 0 ];do if [ -d "$1" ];then find "$1" -mindepth 1 -maxdepth 1 | while read name;do nname="$( echo "$name" | tr 'ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż' 'AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ' | tr 'A-Z' 'a-z' | tr -cs -- '-0-9a-z_.' '_' | tr -s -- '-_' '-_' | sed 's/^[-_]\+//;s/[-_]*-[-_]*/-/g;s/[-_]\+\.\/./g;s/\.[-_]\+/./g;' )" if [ "$name" != "$nname" ];then if [ -e "$nname" ];then i=0 oname="$nname" while [ -e "$nname" ];do nname="$( printf "%s.%05i" "$oname" $i )";i=$[$i+1];done fi mv -v "$name" "$nname" fi find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0" done shift else echo "Directory $1 does not exist" fi done fi
#!/usr/bin/perl if (scalar(@ARGV)==0) { print "Usage: $0 directory ...\n"; } else { @dirs=@ARGV; while ($dir=shift @dirs) { if (-d $dir) { if (opendir D,"$dir") { @names=readdir D; closedir D; for ($i=0;$i<scalar(@names);$i++) { push @dirs,"$dir/$names[$i]" if (-d "$dir/$names[$i]); $nname=$names[$i]; $nname=~tr/ĄąÁÂĂÄáâăäĆÇČćçčĎĐďđÉĘËĚéęëěÍÎíłľĹĺŃŇńňÓÔŐÖóôőöŔŕŘřŚŠŞśšşŤťŢţŮÚŰÜůúűüÝýŹŽŻźžż\x9D\x9A\x9E\x8D\x8A\x8E/AaAAAAaaaaCCCcccDDddEEEEeeeeIIiiLLllLlNNnnOOOOooooRrRrSSSsssTtTtUUUUuuuuYyZZZzzztszTSZ/; $nname=~tr/A-Z/a-z/; $nname=~tr/-0-9a-z_./_/cs; $nname=~tr/-_/-_/s; $nname=~s/^[-_]+//; $nname=~s/[-_]*-[-_]*/_/g; $nname=~s/[-_]+\././g; $nname=~s/\.[-_]+/./g; if ($nname ne $names[$i]) { if (-e $nname) { $i=0; $oname=$nname; while (-e $nname) { $nname=sprintf("%s.%05i",$oname,$i++); } } print STDERR "Error in rename: $!\n" unless rename "$dir/$names[$i]","$dir/$nname"; } } } else { print STDERR "Unable to open directory $dir: $!\n"; } } else { print STDERR "Directory $dir does not exist\n"; } } }
tr
už zmíněný unaccent
a perl by snad měl umět rozložit akcentovaný znak na kombinující akcent a samotný znak a poté akcenty vyříznout.
Potřeboval jsem to rozjet pod winxp a cygwinem (tr nefungoval). Výsledek vypadá následovně. PS: Je tam opravena chybka viz druhé find. Filtruji .svn adresáře. Změna kalkulace i+1, původní pod bas v cygwin nefungovala. S unaccent viz dále v diskusi by to bylo asi výrazně rychlejší. IFS je asi zbytečné měnit.
#!/bin/bash
srcenc=cp1250
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
if [ $# -eq 0 ];then
echo "Usage: $0 directory ..."
else
while [ $# -gt 0 ];do
if [ -d "$1" ];then
find "$1" -mindepth 1 -maxdepth 1 -type f | grep -v ".svn" | while read name;do
echo "INFO: Filename - $name"
nname="$(iconv -f "$srcenc" -t "ascii//TRANSLIT" <<< "$name" )"
nname="$(echo "$nname" | sed -e "s/'//g" )"
if [ "$name" != "$nname" ];then
if [ -e "$nname" ];then
echo "WARNING: Filename already exist - $nname"
i=0
oname="$nname"
while [ -e "$nname" ];do nname="$( printf "%s.%05i" "$oname" $i )";i=$(($i+1));done
fi
svn rename "$name" "$nname"
fi
done
find "$1" -mindepth 1 -maxdepth 1 -type d -print0 | xargs -0r "$0" | sed -e "s:[-a-zA-Z0-9_/. \]*.svn ::g"
shift
else
echo "Directory $1 does not exist"
fi
done
fi
# restore $IFS
IFS=$SAVEIFS
Cannot rename: ./spole�ensk� 48.txt , exceptions.UnicodeDecodeErrorNavic mi unika, jak dosahnout vycisteni podadresaru a jak pustit skript na jiny adresar, nez ve kterem je .py umisten.
Readonly directory: ././Smaž mnei kdyz jsou volna prava pro vsechny. Stejne dopadne spusteni scriptu pod rootem, to uz nechapu, zrejme nebude chyba v pravech adresare.
drwxrwxrwx 2 dan dan 4,0K 2007-12-03 18:03 Smaž mneDiky za pomoc.
pri zpracovani zahlasiJsi prvni, kdo tu chybu opravdu zaznamenal (vsichni diskutuji, ale nikdo si to nevyzkousi). Ja jsem ji nasel az po zverejneni clanku a uz jsem ji tam opravil. Na konci clanku jsem zalozil seznam chyb, aby slo sledovat zmeny. Zkusim se podivat, kde vlastne pada ta konverze a co s tim, ale neslibuji, ze to bude hned.Readonly directory: ././Smaž mnei kdyz jsou volna prava pro vsechny.
vycisti.py -c cp1250a melo by to spravne prejmenovat, mne to funguje, a to mam nejspis identicky system. Zkopiruj si stavajici verzi, predtim tam bylo vic chyb. Obecne se da rict, ze pokud mas adresar, u ktereho jsi si jisty, ze je tam blbe (asi windows) kodovani, tak spust skript nejdriv tak, jak jsem uvedl vyse. Jsou totiz znaky, ktere se daji nejakou nahodou prevest do unicode, ale skript je nakonec zrusi a nahradi podtrzitkem (vysledek by treba mohl byt 'spole_ensk_kronika_48.txt'), takze bys pak musel jeste rucne nahrazovat podtrzitka.
Tiskni
Sdílej: