V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.
Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.
Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.
Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.
def epakty_j(g) x = ((g-1)*11)%30 return x endmít jen:
def epakty_j(g) ((g - 1) * 11) % 30 endDále se mrkni, jakým způsobem se v Ruby používá case. Tvá metoda epakta_jj je krásným adeptem:
def epakta_jj(h) case h when 1 then 11 when 2 then 22 ... end endA metody celkově by neměly být příliš dlouhé a obsahovat příliš mnoho přiřazení. Vyzkoušej například nástroj reek, který se snaží hledat code smells. U věcí, které ti nahlásí jako problematické, to chce zkusit se trochu zamyslet, jestli to nejde vyřešit lépe. Mnohokrát to totiž opravdu lépe jde.
Máš tam třeba metodu nedelni_pismeno_g, která má 127 řádků, to je hrozně moc. Když se na ni jen tak zběžně koukám, nebylo by lepší brát informace z nějaké interní datové struktury a tu metodu použít jen na její interpretaci?
NEDELNI_PISMENA = [ [1583..1699, { 'A' => 'D', 'B' => 'E', ... }],
[1700..1799, { 'A' => 'E', 'B' => 'F', ... },
... ]
def nedelni_pismeno_g(c, d)
range = NEDELNI_PISMENA.find { |x| x.first.include?(d) }
return 'Neni' if range.nil?
range.last[c]
end
Navíc je fajn dávat proměnným rozumná jména, lépe se to pak čte. Předpokládám, že u té poslední metody (nedelni_pismeno_g) je například proměnná d rok.
Neznám tu tvou doménovou oblast, takže je možné, že některé ty věci lze řešit elegantněji nějak algoritmicky, ale to já už takhle na první pohled těžko posoudím.
Ovšem tak nějak tuším, že vymyslet to, co už mám nebylo zdaleka tak hrozný jako to upravit...Každopádně děkuji, přijdu zas
nedelni_pismeno_j by šlo napsat například jako
NEDELNI_PISMENO=%w[A GF E D C BA G F E DC B A G FE D C B AG F E D CB A G F ED C B A] def nedelni_pismeno_j(b) return NEDELNI_PISMENO[b] enddále tam je příliš mnoho "magických proměnných" např.
19 znamená, co? a těch 19 ve velikonoce_j a ve zlate_cislo je totéž?
Proto je zvykem definovat konstantu s vysvětlujícím názvem a pak ji používat místo toho čísla.
a taky bych změnil úvodní komentář (pokud nejste Marcus Scalpere) :)
CYKLUS_OPAKOVANI_FAZE_MESICE=19 a pak používal tuhle konstantu (v dobrém editoru to nebude žádné zdržení při používání dlouhých jmen konstant)
a zvýší to srozumitelnost
tady je návrh úpravy subrutiny nedelni_pismeno_g
def nedelni_pismeno_g(c, d)
pismena_h={
'A' => 6,
'B' => 5,
'C' => 4,
'D' => 3,
'E' => 2,
'F' => 1,
'G' => 0,
}
#pismena_a=pismena_h.keys.sort! {|a,b| pismena_h[a] <=> pismena_h[b]}
pismena_a=%w[G F E D C B A]
if d <= 1582 or d >= 2100
return "Neni"
end
posun = d <= 1699 ? 3 :
d <= 1799 ? 4 :
d <= 1899 ? 5 :
d <= 2099 ? 6 : 0
if c.length == 1
return pismena_a[pismena_h[c] - posun % pismena_a.length]
else
return nedelni_pismeno_g(c[0],d)+nedelni_pismeno_g(c[1],d)
end
end
opět potřeba brát s rezervou píši, co mě právě napadlo a na co jsem narazil v manuálu Ruby :)
case-like" konstrukce je poměrně novinkou :))
Navíc se dopouštím toho, co předtím kritizuji, že používám "magická čísla".
Zkrátka nelze mnou navržené řešení brát jako hotovou věc, ale spíš směr, kudy by se ty úpravy mohli ubírat.
rozdil_e(j) je chyba v algoritmu. Rozdíl ve dnech mezi julianským a gregorianským kalendářem se mění ne při změně letopočtu, ale až při přestupném dni. Vše je již vypočteno na Jaký je dnes den dle juliánského kalendáře.
1..n, tak bych použil pole
např.
def epakta_jj(h) return [ 0, 11, 22, 3, 14, 25, 6, 17, 28, 9, 10, 1, 12, 23, 9, 15, 26, 7, 18, 29 ][h] endpak tam je často něco jako pokud je rok pod 1700 vrať tohle číslo, pokud je pod 1800 tak tohle atd. tak to by se dalo napsat do subrutiny, používal bych nějakou untilitu, která do kódu správně doplní mezery (tidy)
def zlate_cislo(rok) x = (rok + 1) % 19 x == 0 ? 19 : x endU metody velikonoce_g si hlídáš, aby fungovala až pro roky větší než 1582. U takto jednoduchých výrazů je v Ruby konvence dávat podmínku až za výraz:
return 'neni' if x <= 1582.
Jinak u metod velikonoce_j a velikonoce_g máš jeden vstupní argument, jednou se jmenuje x, podruhé l. Tohle je matoucí, musel jsem se podívat, jak ty metody voláš z insert_text, abych zjistil, v čem je tam rozdíl. A rozdíl tam není. Oba ty parametry pojmenuje rok anebo year, abys ulehčil čtení kódu ostatním a vlastně i sobě, až se k tomu skriptu v budoucnu vrátíš a už ho nebudeš mít celý v hlavě.
K těm metodám bych měl ještě jednu poznámku. Jako vstup pro ně máš rok a výstup například "22. dubna". Snaž se dělat metody tak, aby plnily vždy jen jednu úlohu. Tady už máš smíchané dvě věci dohromady: výpočet dne velikonoc a naformátování datumu na český řetězec. Navrhoval bych, aby metody velikonoce_j a velikonoce_g vracely instanci třídy Date a dodělej si metodu, která ti naformátuje Date na české datum. Jako výhodu to má například to, že všechny tři ty metody budou snadněji znovupoužitelné v budoucnu.
Tiskni
Sdílej: