IKEA představila 3 senzory pro chytrou domácnost: senzor na dveře a okna PARASOLL, bezdrátový pohybový senzor VALLHORN a senzor úniku vody BADRING. Budou kompatibilní s Home Assistant?
Weston, referenční implementace kompozitoru pro Wayland, byl vydán ve verzi 13.0.0. Přehled novinek v oznámení.
Laboratoře CZ.NIC vydaly novou verzi 4.23.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Přidána byla podpora pro velkoobjemové datové zprávy (VoDZ) a pro typy datových schránek PFO_ARCH, PFO_AIAT a PFO_AZI. Další novinkou je pamatování velikosti dialogových oken, pozice ovládacích prvků, šířek sloupců a řazení položek
… více »Distribuce Tails specializující se ochranu online soukromí uživatele byla vydána ve verzi 5.20. Mimo jiné aktualizuje Tor Browser (13.0.4) a Thunderbird (115.5), opravuje několik chyb.
Bylo rozhodnuto, že Red Hat Enterprise Linux 10, jehož vydání je plánováno na první pololetí 2025, bude už bez X serverů. Zůstane pouze Xwayland.
Mobilní Datovka, tj. svobodná aplikace pro přístup k datovým schránkám pro zařízení s operačním systémem iOS a Android, byla minulá týden vydána v nové verzi 2.0.0. Zásadně bylo zmodernizováno uživatelské rozhraní. Přibyla možnost přepínat aplikaci mezi světlým a tmavým režimem. Současně byl publikován rozhovor QaA: Projekt Datovka očima vývojářů.
Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení obrazovky i audia připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 2.3.
Včera skončila upstream podpora PHP 8.0. Podporované verze jsou 8.1, 8.2 a 8.3.
Představen byl herní notebook TUXEDO Sirius 16 - Gen1 s 16,1palcovým displejem s rozlišením 2560 x 1440 pixelů, 8jádrovým CPU AMD Ryzen 7 7840HS a GPU AMD Radeon RX 7600M XT 8 GB. V konfiguraci si lze vybrat až 96 GB RAM. Hmotnost notebooku je 2,3 kg. Koupit jej lze s nainstalovaným TUXEDO OS nebo Ubuntu 22.04 LTS. Cena začíná na 1 699 eurech (41 500 korun).
Multimediální server a user space API PipeWire (Wikipedie) poskytující PulseAudio, JACK, ALSA a GStreamer rozhraní dospěl do verze 1.0.0.
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.
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] endNaví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.
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 endopě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: