Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.
Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou
… více »Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).
Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.
U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.
Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.
Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).
Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
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: