Úřad pro ochranu hospodářské soutěže zahajuje sektorové šetření v oblasti mobilních telekomunikačních služeb poskytovaných domácnostem v České republice. Z poznatků získaných na základě prvotní analýzy provedené ve spolupráci s Českým telekomunikačním úřadem (ČTÚ) ÚOHS zjistil, že vzájemné vztahy mezi operátory je zapotřebí detailněji prověřit kvůli možné nefunkčnosti některých aspektů konkurence na trzích, na nichž roste tržní podíl klíčových hráčů a naopak klesá význam nezávislých virtuálních operátorů.
Různé audity bezpečnostních systémů pařížského muzea Louvre odhalily závažné problémy v oblasti kybernetické bezpečnosti a tyto problémy přetrvávaly déle než deset let. Jeden z těchto auditů, který v roce 2014 provedla francouzská národní agentura pro kybernetickou bezpečnost, například ukázal, že heslo do kamerového systému muzea bylo „Louvre“. 😀
Z upstreamu GNOME Mutter byl zcela odstraněn backend X11. GNOME 50 tedy poběží už pouze nad Waylandem. Aplikace pro X11 budou využívat XWayland.
Byl publikován plán na odstranění XSLT z webových prohlížečů Chrome a Chromium. S odstraněním XSLT souhlasí také vývojáři Firefoxu a WebKit. Důvodem jsou bezpečnostní rizika a klesající využití v moderním webovém vývoji.
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.3.0. Přehled novinek v poznámkách k vydání.
Organizace Open Container Initiative (OCI) (Wikipedie), projekt nadace Linux Foundation, vydala Runtime Specification 1.3 (pdf), tj. novou verzi specifikace kontejnerového běhového prostředí. Hlavní novinkou je podpora FreeBSD.
Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Letos je pro vás otevře 26. listopadu v 16 hodin v pražském Karlíně. Vítáni jsou všichni, kdo se chtějí dozvědět více o práci vývojářů, prostředí ve kterém pracují a o místní firemní kultuře. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem inženýři v Praze pracují, jak spolupracují se zákazníky, partnery i studenty, proč mají rádi open source a co
… více »Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).
Už několikrát se mi stalo, že jsem potřeboval v adresářovém podstromu zrušit diakritiku, popř. nahradit mezery v názvech znakem "_". Nepodařilo se mi najít nějaký program, který je k tomu určený a "ruční" přejmenovávání mě už přestalo bavit. Proto, ač nejsem zkušený programátor v shellu, jsem si zkusil udělat skript, který výše zmíněné zvládne. Nevím, na kolik je moje řešení "čisté", nicméně jsem to zkoušel a k mé radosti skript udělal, co jsem od něj očekával. Proto jsem se rozhodl dát si ho do blogu jako svůj první zápis. :o) Zároveň budu rád, když mě ti zkušenější z vás třeba upozorní na mou chybu nebo možnost lepšího řešení.
Tak tedy: Skript je rozdělen do dvou souborů. První soubor s názvem start obsahuje jen příkaz find, který prohledává aktuální adresář a pro každou položku spouští skript diakritika s parametrem názvu položky:
#!/bin/bash
find ./ -exec ./diakritika {} \;
Skript diakritika vypadá nějak následovně.
#!/bin/bash
if test -w "$1"
then
echo "-----------------------------------------------------------------"
echo "Prejmenovavam soubor $1"
JMENO=`echo $1 | sed 's/ě/e/g' | sed 's/š/s/g' | sed 's/č/c/g'| sed 's/ř/r/g'`
JMENO=`echo $JMENO | sed 's/ž/z/g' | sed 's/ý/y/g' | sed 's/á/a/g' | sed 's/í/i/g'`
JMENO=`echo $JMENO | sed 's/é/e/g' | sed 's/ú/u/g' | sed 's/ů/u/g' | sed 's/ó/o/g'`
JMENO=`echo $JMENO | sed 's/ď/d/g' | sed 's/ť/t/g' | sed 's/ň/n/g'`
JMENO=`echo $JMENO | sed 's/Ě/E/g' | sed 's/Š/S/g' | sed 's/Č/C/g'| sed 's/Ř/R/g'`
JMENO=`echo $JMENO | sed 's/Ž/Z/g' | sed 's/Ý/Y/g' | sed 's/Á/A/g' | sed 's/Í/I/g'`
JMENO=`echo $JMENO | sed 's/É/E/g' | sed 's/Ú/U/g' | sed 's/Ů/U/g' | sed 's/Ó/O/g'`
JMENO=`echo $JMENO | sed 's/Ď/D/g' | sed 's/Ť/T/g' | sed 's/Ň/N/g'`
JMENO=`echo $JMENO | sed 's/ /_/g'`
echo "Na soubor:"
echo $JMENO
if [ "X$JMENO" != "X$1" ]
then
mv -f "$1" "$JMENO"
if test -d "$JMENO"
then
find ./ -exec diakritika {} \;
fi
fi
else
echo "Nemas prava menit soubor/adresář!"
echo "-----------------------------------------------------------------"
fi
Na začátku skript otestuje, zda je povolen soubor/adresář pro zápis. Pokud ano, odstraní háčky a čárky (náhradí se písmenem bez háčku/čárky), mezeru nahradí podtržítkem. Pokud je nový název různý od starého (soubor obsahoval diakritiku) přejmenuje soubor/adresář na nové jméno. Na problém jsem narazil, když měněnou položkou byl adresář. U adresáře, který obsahoval diakritiku, se diakrikika odstranila, ale skript už dál neprocházel jeho podstrom. To vyřešil poslední test -- je-li měněnou položkou adresář, je v podstatě znovu spuštěn start. Řádky začínající echo pouze vypisují, s čím skript pracuje a jejich smazáním by se možná urychlil (nevím, možná ne).
Ještě bych dodal, že skript samozřejmě nenahrazuje veškerou diakritiku, ale jen tu běžně používanou v češtině (snad jsem na něco nezapomněl). Další náhrady by se ale daly dopsat. Skript jsem testoval jen na malém podstromu asi o třech úrovních, takže nevím, jak bude pracovat při složitějších strukturách.
Pro použití skriptu stačí oba soubory nahrát do adresáře, v jehož podstromu chceme odstranit diakritiku a spustit ./start
Budu rád za vaše náměty na lepší řešení. Bude-li někdo skript zkoušet -- doporučuji nejprve na neškodných datech. Jak jsem psal v úvodu, nejsem v žádném případě zkušený programátor v shellu, a proto nevím, zda nemůže mít tento skript "vedlejší účinky"...
Tiskni
Sdílej:
... nicméně pak jsem si vzpomněl, jak jsme to řešili s kámošem, a že asi nejlepší je použít program recode (aneb proč opisovat do tr půlku kódové tabulky, když už to udělal někdo za mě a flexibilněji, mohu překódovat z více různých sad; pravda, trošku kanón na vrabce
)
řešení s findem je imho blbost, stejně jako používat na to dva skripty; máme to vyřešené pomocí rekursivní funkce
bohužel teď nemám po ruce příslušný zdroják, takže jenom nastíním ideu: procházení se děje pomocí for *, testuje se, zda jde o adresář, a pokud ano, tak funkce zavolá sama sebe na ten adresář, potom dojde k přejmenování (tzn. adresář se přejmenuje, až se z něj vyleze ven, nedojde k nekonsistenci)
p.s. a odstraňování diakritiky považuju za pěknou blbost - zrušením všech ne-ASCII (7bit) znaků bych uvedl do absolutního chaosu např. svoje veškeré ruské písničky - pojmenované samozřejmě v azbuce, od čeho máme UTF8
p.p.s. taky vás tak štvou lidi, co v angličtině (i jinde) místo apostrofu píšou čárku nad písmenem, takže místo ASCII se na jejich věc (obvykle právě jméno souboru) použije nejbližší sada, která tento "spacing modifier" obsahuje, a tudíž prudce klesá strojová zpracovatelnost (objevuje se problém s překódováním a především to, že čárka není apostrof - třeba konverze ohraničení apostrofy na korektní uvozovky)?
#!/bin/bash
function strip_diak {
echo "$1" | tr 'ěščřž ..' 'escrz_..'
}
function diak {
new_name="$( strip_diak "$1" )"
mv -f "$1" "$new_name" || return 1
cd "$new_name" || return 1
for fajl in *; do
if [[ -d "$fajl" ]]; then
diak "$fajl"
else
new_name="$( strip_diak "$fajl" )"
if [[ "$new_name" != "$fajl" ]]; then
mv -f "$fajl" "$new_name" || echo "mv error" && return 1
fi
fi
done
return 0
}
diak "${1:-$PWD}" || exit 1
exit 0
echo "$1" | tr 'ěščřž ..' 'escrz_..'zapsat, ze chci prelozit patricne unikodove znaky jako jsou äåöõü atd.
find -print nedokaze korektne vyporadat s whitespaces v nazvech souboru - nebylo by lepsi pouzit find -print0 | xargs --null?
Tak jak tak: diky za prispevek, podle me je cennejsi komplet zdrbnout tvuj kod a vymyslet lepsi, nez mlcet a nechat vsechny, at znovu vynalezaji kolo! B-)
-f je špatné, špatné, špatné ...
... mamííí, ploč ťam má ťeň páň -f míšto -i?