Platformy ChatGPT i Roblox by mohly být zařazeny na seznam mimořádně velkých on-line platforem nebo internetových vyhledávačů, na něž se vztahují zvláštní podmínky podle nařízení o digitálních službách (DSA). Vzhledem k tomu, že ChatGPT i Roblox oznámily počet uživatelů nad prahovou hodnotou DSA, je toto označení „rozhodně možné“ a mohlo by „přijít dříve či později“. On-line platformy a vyhledávače zařazené na seznamy DSA musejí
… více »Společnost Cloudflare představila Cloudflare OS (GitHub), tj. open source platformu navrženou pro integraci umělé inteligence (agentů) přímo do pracovních procesů organizací.
Byla vydána nová verze 5.13 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Vedle zdrojových kódů je k dispozici také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).
Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost NVIDIA.
Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.
Kermit, tj. protokol pro přenos souborů, vznikl před 45 lety. Při této příležitosti byla po 15 letech od vydání poslední stabilní verze 9.0.302 vydána nová stabilní verze 11 implementace C-Kermit. S podporou IPv6.
První verze konverzního nástroje Pandoc byla vydána před 20 lety. Jeho autor John MacFarlane při tomto výročí rekapituluje jednotlivé etapy vývoje a přidávání nových funkcí – rozšíření nejen Markdownu a podporu mnoha dalších formátů.
Srpen přinesl nejen další spalující vedro, ale také Virtuální Bastlírnu s neméně žhavými novinkami. Využijte tedy předpovědi na deštivý čtvrteční večer a od 20:00 se připojte online k tomuto neformálnímu setkání kutilů, techniků a vědců, kde se strahovskými bastlíři proberete nejzajímavější věci, na které jste narazili za poslední měsíc. Pokud jde o novinky, řeč zcela jistě přijde na systém INDX pro tiskárny Průša, který na konci
… více »Firma T-Mobile blokovala „dezinformační web“ AC24 bez toho, aniž by k tomu měla závazný pokyn orgánů veřejné moci. Píše to ve svém rozsudku Městský soud v Praze, který po čtyřech letech uzavřel kauzu blokace zmíněného webu. Operátor musí uhradit škodu ve výši 35 tisíc korun. Advokát společnosti T-Mobile se snažil i u odvolacího senátu argumentovat tím, že firma jednala v dobré víře, když na stránky omezila přístup poté, co ji k tomu vyzvalo
… více »Práve som vyhral súboj nad bashom. Kamarát potreboval prekódovať divný textový súbor. Divný bol preto, že používal dve kódovania iso-latin-1 a utf-16. A teraz si predstavte, že takýchto súborov potrebujete spracovať veľa a v práci mu tvrdili, že to v bashi nejde :) samozrejme, že sa to dá napísať v perle, ale ak sa to nedá, tak je to slušná výzva, nie?
Predstavte si súbor, ktorý je až na jeden riadok v iso latin 1. Ten jeden riadok má v UTF-16LE len reťazec v úvodzovkách, ktorý je potrebné vyparsovať. Keďže som typickým predstaviteľom lineárneho programovania (čítaj program píš postupne za seba; nemá to súvis s lineárnym programovaním vyučovanýn na univerzitách), tak som sa do toho pustil nasledovne. Najprv nájdi ako rozdeliť súbor na tri časti, takže som našiel číslo riadku na ktorom je UTF-16. Následne som cez head/tail našiel tie latin1 časti a vznikli mi tmp.head a tmp.tail.
Odborník si určite povie, že som blbý a je hlúposť hladať tento riadok cez for a grep, keď na to stačí grep sám. Áno dá sa použiť grep --binary-files=text -n PHRASE foo , ale bohužiaľ sa mi už z toho nepodarilo získať číslo riadku. UTF-16LE má totiž tú vlastnosť, že pred normálnym ASCII znakom máte ešte 8bitový s hodnotou nula a tým pádom z toho sed zmagorí.
Keď už máme požadovaný riadok, tak ho rozdelíme na časť pred úvodzkami, časť v UTF-16LE a časť za nimi. Opäť musíme riešiť problém, že štandardné nástroje nefungujú tak ako majú. A tak odstránime pred-úvodzovkú časť a získame reťazec začínajúci na UTF-16. Pozor nemôžeme ho uložiť do premennej shellu pretože stratíme tie nuly a už to nebude UTF-16 [kým som to zistil :(]. A necháme to prekódovať cez recode do latin2. Recode spadne za posledným UTF-16 znakom (na kombinácii medzera+cifra), ale to čo prešlo máme na štandardnom výstupe. To vezmeme a odstránime z neho diakritiku pomocou cstocs (iconv a recode je na toto nepoužiteľné) a teraz to uložíme do premennej (už to nie je utf-16). Prednú a zadnú časť nemôžeme vysedovať priamo, ale musíme celý riadok uložiť do premennej shellu, čím nám zmiznú tie nulové znaky a začne fungovať sed. Potom to je už bezproblémové. A len na konci zase reťazec z tých úvodzoviek prekódujeme do UTF-16LE (tentokrát je tam zakódovaný bez diakritiky).
A teraz na možné skracovanie ešte kód. Viem, že sa dá nahradiť bc za matematickú expanziu v shelli, ale tú si nikdy nepamätám, takže to by som až tak nebral. Nie je to formátované, je to tak ako som s tým pracoval ja :)
subor="line1014_col.lip"; IFS=$'\n'; (i=0; problem=0; for line in `cat $subor`; do if [ `echo $line | grep PHR &> /dev/null; echo $?` -eq '0' ]; then problem=$i; else i=`echo "$i+1" | bc`; fi ; done; head -n $problem < $subor > tmp.head; tail -n `echo \`wc -l $subor | sed 's/\(.*\) .*/\1/'\`-$problem-1 | bc ` $subor > tmp.tail; stred=`head -n \`echo $problem+1 | bc\` < $subor | tail -n 1 | sed 's/^\(PHRASE unicode [0-9]*\) \(".*\).*/\2/' | recode utf-16le..latin2 2> /dev/null | cstocs il2 ascii`; zaciatok=`head -n \`echo $problem+1 | bc\` < $subor | tail -n 1`; zac1=`echo $zaciatok | sed 's/^\(PHRASE unicode [0-9]*\) \(".*\).*/\1/'`; zac2=`echo $zaciatok | sed 's/^\(.*".*"\) \(.*\)$/\2/'`; cat tmp.head; echo -n "$zac1 "; echo -n $stred | recode ascii..utf-16le; echo " $zac2"; cat tmp.tail) > $subor.tmp
Tiskni
Sdílej:
int system(char*); int main(void) { return system("subor=\"line1014_col.lip\"; IFS=$'\\n'; (i=0; problem=0; for line in `cat $subor`; do if [ `echo $line | grep PHR &> /dev/null; echo $?` -eq '0' ]; then problem=$i; else i=`echo \"$i+1\" | bc`; fi ; done; head -n $problem < $subor > tmp.head; tail -n `echo \\`wc -l $subor | sed 's/\\(.*\\) .*/\\1/'\\`-$problem-1 | bc ` $subor > tmp.tail; stred=`head -n \\`echo $problem+1 | bc\\` < $subor | tail -n 1 | sed 's/^\\(PHRASE unicode [0-9]*\\) \\(\".*\\).*/\\2/' | recode utf-16le..latin2 2> /dev/null | cstocs il2 ascii`; zaciatok=`head -n \\`echo $problem+1 | bc\\` < $subor | tail -n 1`; zac1=`echo $zaciatok | sed 's/^\\(PHRASE unicode [0-9]*\\) \\(\".*\\).*/\\1/'`; zac2=`echo $zaciatok | sed 's/^\\(.*\".*\"\\) \\(.*\\)$/\\2/'`; cat tmp.head; echo -n \"$zac1 \"; echo -n $stred | recode ascii..utf-16le; echo \" $zac2\"; cat tmp.tail) > $subor.tmp"); }
for line in `cat $subor`; do ... done
while read line; do ... done <$subor
if [ `echo $line | grep PHR &> /dev/null; echo $?` -eq '0' ]
if [ "$line" == *PHR* ]
i=`echo "$i+1" | bc`
let i++
Ok, na procesy moje riešenie skutočne exceluje. Kebyže rátame procesy (réžiu), tak musí vyhrať Cčkové riešenie, to bude mať zrejme aj najmenšiu réžiu. Ja si pamätám len zopár vecí a tak ich používam dokola. Také bc má tú výhodu, že nemusíš rozmýšlať nad syntaxou pre konkrétny shell. Stačí ti pamätať ako sa priraďuje do premennej. A keďže zátvorkovanie a escape-ovanie je všade rôzne, tak sa snažím používať veci o ktorých viem, že fungujú.
A ako píšem veci o ktorých si myslím, že fungujú bez problémov sú často komplikovanejšie. Napr. to strácanie znakov zadaných do premennej, keby to skončilo pri prvej nule, tak si myslím, že by som tomu celkom rozumel. Takto bohužiaľ nie.