Český telekomunikační úřad zveřejnil Výroční zprávu za rok 2024 (pdf), kde shrnuje své aktivity v loňském roce a přináší i základní popis situace na trhu. Celkový objem přenesených mobilních dat za rok 2024 dosáhl dle odhadu hodnoty přibližně 1,73 tis. PB a jeho meziroční nárůst činí zhruba 30 %. Průměrná měsíční spotřeba dat na datovou SIM kartu odhadem dosáhla 12,5 GB – v předchozím roce šlo o 9,8 GB.
Z novinek představených na Google I/O 2025: Přehledy od AI (AI Overviews) se rozšiřují do dalších zemí. Užitečné, syntetizované přehledy od generativní AI jsou nově k dispozici i českým uživatelům Vyhledávače.
Šestice firem označovaných jako „MAMAAN“ – tedy Meta (Facebook, Instagram), Alphabet (Google), Microsoft, Apple, Amazon a Netflix – je zodpovědná za více než padesát procent světového internetového provozu. Dalšími velkými hráči jsou TikTok a Disney+. Společně tak zásadně určují podobu digitálního prostředí, spotřebitelského chování i budoucích trendů v oblasti technologií. I přesto, že se podíl těchto gigantů od roku 2023 o něco snížil, jejich dominantní postavení zvyšuje volání po regulaci.
Evropská komise (EK) navrhuje zavést plošný poplatek ve výši dvou eur (zhruba 50 Kč) za každý malý balík vstupující do Evropské unie. Poplatek se má týkat balíků v hodnotě do 150 eur (zhruba 3700 Kč), které v EU nepodléhají clu. V loňském roce bylo do EU doručeno kolem 4,6 miliardy takovýchto balíků. Poplatek má krýt náklady na kontroly rostoucího počtu zásilek levného zboží, které pochází především z Číny.
Dnes a zítra probíhá vývojářská konference Google I/O 2025. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
V Bostonu probíhá konference Red Hat Summit 2025. Vybrané přednášky lze sledovat na YouTube. Dění lze sledovat na síti 𝕏 (#RHSummit).
Společnost Red Hat oficiálně oznámila vydání Red Hat Enterprise Linuxu 10. Vedle nových vlastností přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.
Tuto sobotu 24. května se koná historicky první komunitní den projektu Home Assistant. Zváni jsou všichni příznivci, nadšenci a uživatelé tohoto projektu. Pro účast je potřebná registrace. Odkazy na akce v Praze a v Bratislavě.
Troy Hunt představil Have I Been Pwned 2.0, tj. nový vylepšený web služby, kde si uživatelé mohou zkontrolovat, zda se jejich hesla a osobní údaje neobjevily v únicích dat a případně se nechat na další úniky upozorňovat.
Microsoft představil open source textový editor Edit bežící v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.
<objekt> <vlastnost-1 hodnota="hodnota 1"/> <vlastnost-123 hodnota="hodnota 123"/> <vlastnost-9999 hodnota="hodnota 9999"/> </objekt>Před
<vlastnost…
bude tabulátor a před hodnota="…
budou mezery.
*) osobně jsem spíš proti zarovnávání, protože při přidání nové (delší) položky je potřeba změnit všechny ostatní řádky a mj. to dělá bordel ve verzovacím systému.
if (a == 1) { System.out.println("a == 1"); System.exit(0); } else if (a == 0) { System.out.println("a == 0"); System.exit(1); }a jinde:
if (a == 1) { System.out.println("a == 1"); System.exit(0); } else if (a == 0) { System.out.println("a == 0"); System.exit(1); }a formátování se nerozbije, jen se přizpůsobí nastavení daného uživatele.
spravne odsazeni dodatecneho textu na radce asi rozumne udrzovat nejde jinak nez s pouzitim tabulatoru.Vzhledem k tomu, že to nejde ani s použitím tabu, tak je to dost irelevantní.
class MyClass ⇥: public MyOtherClass { public: ⇥MyClass() ⇥⇥: field(0) ⇥{} ⇥~MyClass(); ⇥MyClass& setField(int value, ⇥⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽⍽bool checkIfZero) ⇥{ ⇥⇥if (checkIfZero && value == 0) { ⇥⇥⇥throw std::exception("FIeld is not zero"); ⇥⇥} ⇥⇥this->field = value; ⇥} protected: ⇥int field; };
context[ conf-file-rule: [any[ newline | _comment | date-header | purl ] to end ] white: [#" " | #" "] _comment: [#"#" to newline] date-header: [ #"[" copy parsed-date to #"]" newline (parsed-date: to-date parsed-date) ] purl: [ [ thru #" " | thru #" "] copy parsed-url to newline ( parsed-url: to-url trim to-string parsed-url print rejoin [parsed-date " : " parsed-url] ) ] parse/all d conf-file-rule ]To by mě dřív ani nenapadlo. Pořád jsem ale nepřišel na to, jestli má smysl se rebol učit, nebo ne :)
Pokud to má přímo vestavěnou podporu pro BNF, tak to je zajímavá vlastnost, to se může občas hodit.Jo, parse.
O Rebolu jsem jednou už tuším slyšel, měl jsem toho pocit, že to je jeden z jazyků, které mají několik originálních nápadů, ale v praxi má smysl je používat jenom na relativně malou skupinu problémů :)No, já už o něm přečetl pár desítek článků a pár knih a pořád nevím, jestli jo, nebo ne :)
>-------switch(x) { >-------case 1: >------->-------q(); >------->-------... >-------case 2: >------->-------x >------->-------y >------->-------... >-------}V podstate me napadaji 2 reseni, ktere ale obe zbytecne pridavaji uroven zanoreni: 1:
>-------switch(x) { >------->-------case 1: { >------->------->-------int a; >------->------->-------qwe >------->-------} >------->-------case 2: >------->------->-------x >------->------->-------y >------->------->-------... >-------}
>-------switch(x) { >-------case 1: >------->-------{ >------->------->-------int a; >------->------->-------qwe >------->-------} >-------case 2: >------->-------x >------->-------y >------->-------... >-------}
case 1:
a case 2:
mi tam chybí. A odsazovat o 8 mi přijde moc – zkus nastavit šířku tabulátoru na 4 a nebude to tak „hluboké“.
class xyz { public: >-------... };nebo goto:
int process() { >-------... error: >-------... }Pokud jde o { na vlastnim radku, tak premyslel jsem i nad timhle:
>-------switch(x) { >-------case 1: { >------->------->-------int a; >------->------->-------qwe >------->-------}to je pokud jde o { konzistentejsi, ale zase radek s } neni odsazeny stejne jako radek s { takze je to taky mirne nekonzistentni. Taky jsem premyslel nad timhle, ale to by nemuselo vypadat dobre pri hodne kratkym tabulatoru:
>-------switch(x) { >-------case 1: { >--------------int a; >--------------qwe >------- }Zatim nejvic inklinuju k puvodni moznosti c 2. Musim se uz konecne rozhodnout a delat tohle konzistentne. Momentalne to mam pokazdy jinak jak se furt nemuzu rozhodnout
Líbí se mi první. U druhého nechápu, proč dáváš { } na nové řádky, když to jinak neděláš – IMHO zbytečnost.Podle mě } na nový řádek dává za všech okolností a { spojuje pouze s řídící konstrukcí, na kterou se vážou (i z hlediska jazyka).
>-------switch(x) {a tohle:
>-------case 1: >------->-------{mi nepřijde konsistentní.
>-------switch(x) { >-------case 1: { >------->-------x... >-------} >-------}tzn. prvni } by bylo odsazene stejne jako case. Proto me prijde lepsi byt trochu nekonzistentni a { dat na vlastni radek.
Chybně očekáváš, že se labely a řídící příkazy budou zapisovat stejně.Nemyslím, že je to chybný předpoklad, spíš logický. Ano, v kódu si můžu udělat blok { } jen tak, třeba abych omezil rozsah proměnných nebo si nějak „označil“ nějaké místo* a pak tu { nepřidávám na konec předešlého řádku, protože tam žádný takový není a i kdyby byl, nedávalo by to smysl. Ale když je to uvnitř switche, smysl to dává – logický význam a to, co tím kódem chce člověk říct, je podobné jako u IFu, proto by se to mělo i stejně odsazovat. Příklad:
if (a == 1) { … }obdobně:
switch(a) { case 1: { … }*) moc se to nepoužívá a lepší bude ten blok vyčlenit do samostatné metody/funkce/procedury
Nemyslím, že je to chybný předpoklad, spíš logický.Typicky se labely zapisují takto:
... hlavička funkce ... { ... goto konec; ... konec: ... }A bloky vložené do jiných bloků tuším typicky takto:
{ ... { ... } ... }Ale samozřejmě máš možnost to psát zcela libovolně narozdíl od Python apod.
switch(a) { case 1: x++; y++; { int i; ... } z++; ... }Kdyz z takoveho kodu ty prvni dva prikazy eliminuju, je konzistentni zachovat stejne odsazeni bloku:
switch(a) { case 1: { int i; ... } z++; ... }
int a = 0; switch (a) { case 0: { System.out.println("0"); } break; case 1: { System.out.println("1"); } break; default: { System.err.println("chyba"); } }Dokonce jsem i zjistil, že tohle je výchozí (automatické) formátování v Netbeans
} break;Asi nemá cenu zbytečně sklouzávat k osobním útokům…
Ty vtiskáváš do odsazení své nepřesné vnímání fukce prvků jazyka.Proč by to tak mělo být? Konvence pro psaní kódu jsou z významné části věcí estetiky a osobního vkusu (proto se o nich také vedou nekonečné flamewary). Kdybych chtěl být ošklivý, tak řeknu, že ty zase podléháš iluzi, že odsazování by mělo být odvozeno čistě z technické specifikace jazyka bez ohledu na lidi, kteří ten kód píší a čtou.
Zatím jsem to nikdy nepotřeboval, ale napsal bych to takhle:Já ne, už jen proto, že nemám ve zvyku přidávat hromadu složených závorek jen tak pro okrasu.
Asi nemá cenu zbytečně sklouzávat k osobním útokům…Nevím, jak jsi na to přišel, ale doufám, že se toho budeš držet :).
Proč by to tak mělo být?Těkžo se mi vysvětluje věc, která mi připadá tak jednoduchá a samozřejmá. Měl jsem za to, že se shodujem v tom, že ti nevyhovuje sémantika céčkovského switche a omezuješ ji na určitou podmnožinu (zjednodušuješ) a takto zjednodušeně ji vnímáš. A toto vnímání vtiskáváš i do formátování. Když mi pomůžeš specifikovat, co je na tom nejasné, tak zkusím nějak reagovat.
Kdybych chtěl být ošklivý, tak řeknu, že ty zase podléháš iluziAno, to už zní ošklivě. Máš důvod být ošklivý?
Netbeans? Bouchnu tabulátor, udělá se tabulátor. Dám backspace a maže to po jednom znaku místo celýho tabulátoru
Pokusim se to najít, myslel jsem že je to hardcoded feature
Rozhodně někdo smazal konfiguraci, takže to má celej ČVUT zase v defaultu
Přeformátovat odsazení cizího zdrojáku jde i při odsazování mezerami.Jenže to znamená zásah do souboru, změnu prakticky všech řádků…˙Šířka tabulátorů je oproti tomu čistě věc zobrazení a nemusím do souboru nijak zasahovat. Někdo odsazuje o 2, normální lidi o 4, extrémista i o 8… každému vyhovuje něco jiného (liší se i podle jazyka). S tabulátory si to každý nastaví podle svého a přitom můžou všichni editovat ten samý soubor. Když na to špatně uvidím, zvýším si šířku tabulátoru, udělám potřebné změny a odešlu je (měním jen některé řádky). Ale když dostanu po někom zdroják s odsazením o 2 mezery a bude se mi to špatně číst (záleží na jazyku, někde je to OK), tak to budu muset nějak přetrpět nebo to přeformátovat, ale pak budou v nové verzi změněné všechny řádky, což dělá jednak bordel ve verzovacím systému a jednak tím budu otravovat ty, kterým odsazení o 2 mezery vyhovovalo. Totéž platí pro 8 nebo 3 (i takoví exoti se najdou).
Odsazení, podle toho, jestli mi vyhovuje odsazení o 2,4, 8, či jiný počet udělám bez ohledu na to, zda je odsazováno mezerami nebo tabulátory.
To bude mať autor pôvodného kódu radosť, že mu niekto rozrýpal odsadzovanie aké jemu vyhovuje. Nehovoriac o následnom merge cez VCS, ktoré kvôli odsadeniu nebude fungovať, takže bude musieť mergovať ručne.
Tedy programátor odsazující tabelátory pracuje stylem „nevadí, že se víc nadřu bez jakéhokoli smyslu“.
Alebo nevadí mi, že pri zmenšení odsadenia musím 4x (alebo 2x, 3x, 8x, 6x ...) ťuknúť do backspace namiesto 1, že. Inak o zobrazovanie tabulátorov a medzier a ich správne mixovanie (taby na indent, medzery na zarovannie) by sa mal starať editor pokiaľ sa nemýlim (príloha).
Při luštění cizích zdrojáků jste nuceni překousnout tolika věcí, že odsazování je to nejmenší
Škoda, že neviem práve vyhrabať štúdiu, ktorá hovorí presný opak.
Alebo nevadí mi, že pri zmenšení odsadenia musím 4x (alebo 2x, 3x, 8x, 6x ...) ťuknúť do backspace namiesto 1, že.Většina editorů co jsem kdy v životě používal tohle implementuje pomocí shift+tab.
Škoda, že neviem práve vyhrabať štúdiu, ktorá hovorí presný opak.Tak si jí vycucej z prstu stejně jako kdokoli, kdo mohl takovou studii vyplodit (nejspíš, pokud to myslel vážně, tak se v ní píše úplně něco jiného, než n mezer odsazení je čitelných, zatímco m ne).
Výhoda tabulátora je práve v tom, že na odsadzovanie textu bol navrhnutý a vie zarovnať stĺpce.Vážně umí zarovnat sloupce? V některém z běžně používaných editorů? A vážně byl navržen na odsazování kódu? Tomu moc nevěřím.
Tiskni
Sdílej: