Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za duben (YouTube).
Provozovatel čínské sociální sítě TikTok dostal v Evropské unii pokutu 530 milionů eur (13,2 miliardy Kč) za nedostatky při ochraně osobních údajů. Ve svém oznámení to dnes uvedla irská Komise pro ochranu údajů (DPC), která jedná jménem EU. Zároveň TikToku nařídila, že pokud správu dat neuvede do šesti měsíců do souladu s požadavky, musí přestat posílat data o unijních uživatelích do Číny. TikTok uvedl, že se proti rozhodnutí odvolá.
Společnost JetBrains uvolnila Mellum, tj. svůj velký jazykový model (LLM) pro vývojáře, jako open source. Mellum podporuje programovací jazyky Java, Kotlin, Python, Go, PHP, C, C++, C#, JavaScript, TypeScript, CSS, HTML, Rust a Ruby.
Vývojáři Kali Linuxu upozorňují na nový klíč pro podepisování balíčků. K původnímu klíči ztratili přístup.
V březnu loňského roku přestal být Redis svobodný. Společnost Redis Labs jej přelicencovala z licence BSD na nesvobodné licence Redis Source Available License (RSALv2) a Server Side Public License (SSPLv1). Hned o pár dní později vznikly svobodné forky Redisu s názvy Valkey a Redict. Dnes bylo oznámeno, že Redis je opět svobodný. S nejnovější verzí 8 je k dispozici také pod licencí AGPLv3.
Oficiální ceny Raspberry Pi Compute Modulů 4 klesly o 5 dolarů (4 GB varianty), respektive o 10 dolarů (8 GB varianty).
Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Diskuse byla administrátory uzamčena.
značně populárního intalátoru GNU/Linuxové distribuce Fedora
Pobavilo
(a je tam překlep)
Ten nastroj na vybrani partitionu je opravdu strasny.Je doplním že je vypsaná diplomka/bakalářka na téma lepší vizualizace rozdelění disků v Anacondě. Nechce se toho někdo chopit ? :)
if (!FileUtils.test (real_path, FileTest.EXISTS)) { if (FileUtils.test (real_path + ".gz", FileTest.EXISTS)) real_path += ".gz"; else real_path = ""; }Opravdu?? Takovéhle konstrukce by v programu neměli co dělat. To je race-condition jak sviňa.
tak k chybam proste dochazi a vetsinou nema moc smysl se toho vyvarovat. V tomto pripade urcite staci smysluplne zarvat a skocit, coz zde chybi.Radostný svet užívateľov.
rozdělením na dva nástroje - jedním programem, který by onen obří XML "přežvýkal" do něčeho, co by bylo možné snadněji zpracovat
Nebo rovnou může vygenerovat kód v daném jazyce, který vytvoří patřičné objekty – a hezky propojené mezi sebou (místo aby sis někde přečetl textový řetězec a pak ho jinde hledal v nějaké mapě, tak to může být rovnou ukazatel/reference na ten objekt).
Nebo, pokud nechceme všechna data držet v paměti, může být výsledkem indexovaný binární soubor, ve kterém se bude snadno vyhledávat.
A jak tam zapíšeš ty reference? (abys toho při tvorbě dat musel napsat minimum, ale zároveň to bylo propojené, aby při běhu nebylo potřeba prohledávat nějaké mapy podle textových klíčů, ale měl jsi hned odkaz na další objekt)
elif name == u"name":
self._names[str(self._item_id)] = self._item_name
self._clear_item()
elif name == u"locale":
self._locales[str(self._item_id)] = int(self._item_rank)
self._clear_item()
elif name == u"territory":
self._territories[str(self._item_id)] = int(self._item_rank)
self._clear_item()
elif name == u"keyboard":
self._keyboards[str(self._item_id)] = int(self._item_rank)
self._clear_item()
elif name == u"consolefont":
self._consolefonts[str(self._item_id)] = int(self._item_rank)
self._clear_item()
elif name == u"timezone":
self._timezones[str(self._item_id)] = int(self._item_rank)
self._clear_item()
Toto je jasne opakovani se porad dokola, a to neni jediny pripad ...
Z toho co jsem videl, si myslim ze toto psal nekdo kdo je primarne C++/Vala programator, kde se programuje timto stylem, proto si dovolim rici, ze pokud chcete urychlit svuj program, tak by to chtelo vic abstrakci, a rozhodne mene radku kodu, Python script s 1300+ radky je spatne. Toto ma byt rozdelene do nekolika (mozna desitek) mensich scriptu v ramci jednoho modulu, nebo pouzivat vice standartnich knihoven ...
Prectete si ZEN Pythonu ....
Stejne tak se mi nelibi neco jako
if neco == None:
return
Znovu, ZEN Pythonu, explicit is better than implicit, zde ma byt return None, nebo False ... zkratka neco ..
Snazite si setrit si pismena na spatnych mistech ...
Nerikam ze jste spatni programatori, tak na me prosim nekricte, ale jelikoz ja delam v Pythonu kazdy den a vidivam casto Python kod od Cckaru, poznam jak to vypada ...
Z nejakeho duvodu maji Cckari tendenci psat strasne kodu .. :D
Mozna kdyby to napsal nekdo kdo dela Python uz par let, bylo by to rychlejsi, stejne tak jak kluci psali, zmenit XML na neco jineho je taky dobrej napad ..
A jeste poznamka k tvemu GIL v Pythonu, proc bys na cteni vicero souboru nemohl pouzit multiprocessing?? (vice ram, ja vim, ale jde to optimalizovat)
Cau
$ time python /dev/null real 0m0.014s user 0m0.010s sys 0m0.003sNa Atom D510 (CentOS 6.4):
$ time python /dev/null real 0m0.062s user 0m0.034s sys 0m0.020sTakze tu muzeme vsichni hazet cislama, jak chceme :)
$ time python /dev/null real 0m0.027s user 0m0.008s sys 0m0.012s $ time python3 /dev/null real 0m0.047s user 0m0.040s sys 0m0.004score duo 2 (6 GB ram) python3 mi 50 mS trvá taky, samozřejmě po opětovném spouštění, ať se python dostane z disku do cache.
$time python3 /dev/null real 0m0.121s user 0m0.107s sys 0m0.013s $time python2 /dev/null real 0m0.183s user 0m0.163s sys 0m0.013sNa Athlon X2 5200+ 2.6GHz, podtaktovaný na 1GHz
$time python3 /dev/null real 0m0.072s user 0m0.030s sys 0m0.003s $time python2 /dev/null real 0m0.028s user 0m0.017s sys 0m0.007s
[~]$ time python -c '' real 0m0.027s user 0m0.024s sys 0m0.003s [~]$ time perl -e '' real 0m0.004s user 0m0.001s sys 0m0.003s [~]$ time lua -e '' real 0m0.002s user 0m0.000s sys 0m0.001s
na skriptování (to volat to z něčeho jiného) to použitelné není27 milisekund není tak špatné, pokud to člověk nebude volat někde ve smyčce, tak mi to přijde docela použitelné.
python -S -c ''
? Prípadne by sa dal ešte zneužiť fork.
switch
.
Python není zrovna ideální na zpracování velkého množství XML dat
no můj názor je opačný, že na tohle je vhodný skriptovací jazyk s příslušnou knihovnou (např. napsanou v C) "téměř" ideální
ten regex by šel napsat (no zabralo mi nějaký čas, než jsem přišel na to, čemu vlastně má odpovídat)
my $local_regex = qr{ ^ #zacatek stringu raději bych použil \A (?P<language> [a-z]{2,3} #locale (?: _ (?P<script> [A-Z][a-z]{3} #script (optional) ) )? (?: _ (?P<territory> [A-Z]{2} #territory (optional) ) )? (?: #místo nasl 4 řádků bych mohl použít i to vaše (?: @ | $ ) @.* #options (optional) )? $ #konec stringu raději \z ) }xms;nebo ještě lépe
my $under_line = q{_}; my $at_sign = q{@}; my $locale_rs = '[a-z]{2,3}'; my $script_rs = '(?P<script> [A-Z][a-z]{3} )'; my $territory_rs = '(?P<territory> [A-Z]{2} )'; my $options_rs = q{.*}; my $local_re = qr{ \A (?P<language> $locale_rs (?: $under_line $script_rs )? (?: $under_line $territory_rs )? (?: $at_sign $options_rs )? ) \z }xms;PS. psáno pro Perl pro Valu si to prosím upravte
V první řadě díky za pokračování seriálu. Valu jsem zatím k ničemu nepoužil, ale už po ní zálibně koukám celkem dlouho
řádkem using Gee;, abychom se vyhnuli zbytečnému psaní prefixu Gee. na mnoha místech. Tento jmenný prostor s ničím, co je základní součástí Valy, nekoliduje
Lepší je importovat jen ty třídy, které používám, ne celý jmenný prostor. Alespoň tak to dělám v Javě.
Ta získané hodnoty ukládá na správná místa – informace o jazyce do aktuální instance třídy LanguagesDBitem a tuto instanci samotnou pak do "databáze" languages_db. Zároveň tato funkce nastavuje pole pro ukládání dočasných dat na výchozí hodnoty (prázdné řetězce, null, false), aby nebyla míchána data jednotlivých elementů, a indikaci, kam se mají ukládat příští data (driver.store_to) nastavuje na LanguageFields.NONE, tedy hodnotu značící, že nejsou očekávána žádná data.
SAX je určitě zlepšení, ale přijde mi to pořád hodně nízkoúrovňové. Mnohem elegantnější by bylo použít nějaké mapování z XML na objekty. Jak by to vypadalo v Javě: LangTable. Ale zase to (mapování) nemusí být optimální z hlediska výkonu – pak je otázka, jestli mít hezký stručný kód (pár řádků, holé struktury s pár anotacemi, žádné cykly ani switche) nebo výkonově optimalizovaný kód se spoustou ručně psaného balastu. Parsování keyboards.xml
na mém počítači zabralo 114 ms.
BTW: nechcete někdo tenhle kousek programu napsat v jiném jazyce, který by umožnil jednoduché mapování (deklarativní, bez zbytečného ručně psaného kódu) a zároveň by byl rychlejší než ta Java?
Jak tak koukám do těch datových souborů, jsou to struktury, kde všechno souvisí se vším. To se v XML sice namodelovat dá a pokud napíšeš slušně schéma, dá se v tom i udržet referenční integrita, ale není to úplně ono.1 Relační databáze by asi byla přirozenější a vhodnější než XML2. Navíc bys ani nemusel řešit to mapování na objekty – pomocí jednoduchého SQL dotazu by sis vytáhl přesně to, co potřebuješ. Jedinou nevýhodu vidím v horším verzování – chce to verzovat SQL skript místo binárních databázových souborů, takže je to krok navíc při kompilaci (ale to zas taková tragédie není).
[1] navíc současný stav (tři soubory) není dokonalý, přijde mi, že tam bude spousta duplicit a příležitostí pro vznik nekonzistence
[2] nebo jakýkoli podobný souborový formát – ne, INI, JSON, YAML atd. skutečně není řešením
Relační databáze by asi byla přirozenější a vhodnější než XML2. Navíc bys ani nemusel řešit to mapování na objekty – pomocí jednoduchého SQL dotazu by sis vytáhl přesně to, co potřebuješ. Jedinou nevýhodu vidím v horším verzování – chce to verzovat SQL skript místo binárních databázových souborů, takže je to krok navíc při kompilaci (ale to zas taková tragédie není)To je tak neunixove reseni az to boli.
Relační databáze by asi byla přirozenější a vhodnější než XML nebo jakýkoli podobný souborový formát – ne, INI, JSON, YAML atd. skutečně není řešením.A co tak pouzit vlastni jednoduchy DSL a parser si nechat vygenerovat treba Antlr?
To je tak neunixove reseni az to boli.
SQL skript je přece krásný textový konfigurák s jasnou syntaxí
Pak se akorát parsuje pomocí již hotového nástroje, uloží se efektivním způsobem a dá se k němu přistupovat pomocí určitého existujícího API.
A co tak pouzit vlastni jednoduchy DSL a parser si nechat vygenerovat treba Antlr?
To je taky možnost, ale nebude to pak další z mnoha různých syntaxí, které se uživatel musí učit? DSL mi přijde vhodné pro úlohy, které jsou sice specifické (obecný jazyk pro ně není ideální), ale přesto opakovatelné (používají se na víc místech, ve víc programech).
Šel bych na to asi buď cestou relační databáze (pokud se hodí silný dotazovací jazyk) nebo cestou předžvýkání – buď do binárního souboru (pokud to chceme mít na disku) nebo do kódu daného jazyka (pokud můžeme mít všechno v paměti).
SQL skript je přece krásný textový konfigurák s jasnou syntaxíNejsem si prilis jisty, jestli to myslis vazne nebo jako sverazny humor. Uz jsem videl ledacos...
To je taky možnost, ale nebude to pak další z mnoha různých syntaxí, které se uživatel musí učit?Naucit se novy format je intelektualne minimalne stejne tak narocne jako naucit se schema XML souboru.
Šel bych na to asi buď cestou relační databáze (pokud se hodí silný dotazovací jazyk) nebo cestou předžvýkání – buď do binárního souboru (pokud to chceme mít na disku) nebo do kódu daného jazyka (pokud můžeme mít všechno v paměti).V takovem pripade budes muset spravovat krome programu samotneho jeste dalsi nastroje na spravu jeho konfigurace. Koncepcne by to bylo nejlepsi udelat v LISPu nebo Schemu, diskuze, jestli je to lepsi realizovat jako data, program, DSL by uplne odpadla.
Naucit se novy format je intelektualne minimalne stejne tak narocne jako naucit se schema XML souboru.
Souhlasím, jenže při existenci XML schématu ti hodně pomůže editor – např. takový Emacs ti bude napovídat a kontrolovat syntaxi, aniž bys musel něco řešit – stačí když vedle editovaného souboru bude Relax NG schéma se stejným názvem. V případě nového formátu ti ani neobarví syntaxi, natož aby ti kontroloval správnost a hlásil chyby.
Koncepcne by to bylo nejlepsi udelat v LISPu nebo Schemu
Něříkám, že to nezní zajímavě Můžeš napsat příklad, jak by ta data (ty tři XML soubory) vypadala? Jak by se tam např. zapisovala vazba mezi jazykem a teritoriem a klávesnicí a teritoriem, kde teritorium je definované na jednom místě a má zase vazby na jazyky, klávesnice a další věci?
diskuze, jestli je to lepsi realizovat jako data, program, DSL by uplne odpadla.
A není pak riziko, že taková konfigurace bude příliš mocná a případná chyba nebo záměrná změna v ní může rozhodit celý program a změnit jeho chování? Trochu mi to připomíná situaci, kdy vezmeš data, o kterých někdo tvrdí, že jsou JSON, a zavoláš na nich eval()
. Něco podobného je ten SQL skript, ve kterém by mohly být kromě očekávaných INSERTů i příkazy DELETE, DROP TABLE atd. (i když tohle jde aspoň řešit přes vhodně nastavená práva v DB).
Souhlasím, jenže při existenci XML schématu ti hodně pomůže editorZase DSL muze byt tak jednoduchy, ze si vystacis i s notepadem. Kdyz si budes konfiguraci zapisovat v SQL, editor ti moc nepomuze.
Můžeš napsat příklad, jak by ta data (ty tři XML soubory) vypadala?Nechce se mi nad tim moc premyslet. Ale proc ne treba jako XML prepsane do S-vyrazu?
(languages (language :id aa :iso639-1 aa :iso639-2-t aar :iso639-2-b aar :names ((aa Qafar) (az afarca) ...)) (language ...))
A není pak riziko, že taková konfigurace bude příliš mocná a případná chyba nebo záměrná změna v ní může rozhodit celý program a změnit jeho chování?Tohle je hodne hloupy argument. Zakladem unixove filozofie je, ze uzivatel vi, co dela.
Trochu mi to připomíná situaci, kdy vezmeš data, o kterých někdo tvrdí, že jsou JSON, a zavoláš na nich eval().To je presne to proc tu pisu o LISPu. Protoze tak se na tu konfiguraci muzes divat jako na data, ale soucasne i na DSL, ktery ti muze overovat validitu dat, vytvaret objekty, atd. a soucasne by to odpovidalo predzvykani do konkretniho jazyka, jak navrhujes.
Něco podobného je ten SQL skript, ve kterém by mohly být kromě očekávaných INSERTů i příkazy DELETE, DROP TABLE atd.Ne, neni, viz ma predchozi poznamka.
to si fakt musim pre kazdy jeden ucet RUCNE nastavovat take prkotiny ako je server na prenos suborovNe, u verejne IP to neni potreba.
bud je treba studovat neumerne vela howto / tutorialov / manualov (ak existuju) na to, aby sa rozchodili trivialne featury, alebo je naopak cela vec tak brutalne zautomatizovana, ze do toho rucne nie je mozne vobec zasiahnut.
S čím to srovnáváš? Ono vždycky najdeš něco, co tě bude štvát, ale otázka je, jestli jinde je to lepší. U proprietárního softwaru jsem se nezřídka setkal s tím, že musíš strávit několik dní, jen aby sis rozchodil verzovací systém a vývojové prostředí. Naopak u svobodného softwaru se většinou klade důraz na snižování té vstupní bariéry (autoři chtějí, aby jim ostatní mohli přispět), zdrojáky si stáhneš nějakým obvyklým systémem (mercurial, git, svn, bzr, cvs) a dáš ./configure && make && make install
nebo něco podobného, případně přečteš README a doinstaluješ pár knihoven ze své distribuce.
Svobodný/otevřený software je čím dál úspěšnější a věnuje se mu čím dál víc lidí – s tím přirozeně souvisí i to, že se rozšiřuje rozpětí kvality: od perfektních kousků až po úplný brak.
A trochu tomu nahrávají i weby jako GitHub – pamatuji si jak dřív bylo potřeba žádat o schválení projektu na SourceForge nebo si vytvořit vlastní web a rozjet vlastní verzovací systém. Dneska stačí prsknout zdrojáky na hosting a je to – hodně lidí se pak ani neobtěžuje s tím, aby napsali aspoň abstrakt, k čemu že ten jejich program vlastně slouží.
Tiskni
Sdílej: