Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.
Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i
… více »QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.
Byla vydána nová verze 259 správce systému a služeb systemd (Wikipedie, GitHub).
Cloudflare Radar poskytuje aktuální informace o globálním internetovém provozu, útocích nebo trendech. Publikován byl celkový přehled za rok 2025. Globální internetový provoz vzrostl v roce 2025 o 19 %.
Správní rada americké mediální skupiny Warner Bros. Discovery (WBD) podle očekávání odmítla nepřátelskou nabídku na převzetí od firmy Paramount Skydance za 108,4 miliardy dolarů (2,25 bilionu Kč). Paramount podle ní neposkytl dostatečné finanční záruky. Akcionářům proto doporučuje nabídku od Netflixu.
Na WhatsAppu se šíří nový podvod, který ovšem vůbec nevypadá jako hackerský útok. Žádná krádež hesla. Žádné narušení zabezpečení. Žádné zjevné varovné signály. Místo toho jsou lidé trikem donuceni, aby útočníkům sami poskytli přístup, a to pouhým provedením toho, co vypadá jako běžný ověřovací krok. Bezpečnostní experti Avastu tento nový typ útoku nazývají ghostpairing, protože útočníci si při něm tiše vytvářejí „zařízení duchů“, které žije uvnitř vašeho účtu.
Český LibreOffice tým vydává aktualizaci překladu příručky LibreOffice Draw 25.8. Tato kniha se zabývá hlavními funkcemi programu Draw, vektorové grafické komponenty systému LibreOffice. Pomocí Draw lze vytvářet širokou škálu grafických obrázků. Příručka je ke stažení na stránce dokumentace a tým hledá dobrovolníky pro další překlady.
Anthony Enzor-DeMeo je novým CEO Mozilla Corporation. Mozillu převzal po dočasné CEO Lauře Chambers. Vybudovat chce nejdůvěryhodnější softwarovou společnost na světě. Firefox by se měl vyvinout v moderní AI prohlížeč.
Byla vydána nová verze 9.20 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 RustDesk Server pro vzdálený přístup.
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: