Wayback byl vydán ve verzi 0.1. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.
Byla vydána nová verze 6.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově se lze k síti Tor připojit pomocí mostu WebTunnel. Tor Browser byl povýšen na verzi 14.5.5. Thunderbird na verzi 128.12.0. Další změny v příslušném seznamu.
Meta představila prototyp náramku, který snímá elektrickou aktivity svalů (povrchová elektromyografie, EMG) a umožňuje jemnými gesty ruky a prstů ovládat počítač nebo různá zařízení. Získané datové sady emg2qwerty a emg2pose jsou open source.
Byla vydána (𝕏) nová verze 25.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 25.7 je Visionary Viper. Přehled novinek v příspěvku na fóru.
Před 40 lety, 23. července 1985, společnost Commodore představila první počítač Amiga. Jednalo se o počítač "Amiga od Commodore", jenž byl později pojmenován Amiga 1000. Mělo se jednat o přímou konkurenci počítače Apple Macintosh uvedeného na trh v lednu 1984.
T‑Mobile USA ve spolupráci se Starlinkem spustil službu T-Satellite. Uživatelé služby mohou v odlehlých oblastech bez mobilního signálu aktuálně využívat satelitní síť s více než 650 satelity pro posílání a příjem zpráv, sdílení polohy, posílání zpráv na 911 a příjem upozornění, posílání obrázků a krátkých hlasových zpráv pomocí aplikace Zprávy Google. V plánu jsou také satelitní data.
Společnost Proxmox Server Solutions stojící za virtualizační platformou Proxmox Virtual Environment věnovala 10 000 eur nadaci The Perl and Raku Foundation (TPRF).
Byla vydána nová verze 2.4.65 svobodného multiplatformního webového serveru Apache (httpd). Řešena je bezpečnostní chyba CVE-2025-54090.
Společnost Proton AG stojící za Proton Mailem a dalšími službami přidala do svého portfolia AI asistenta Lumo.
Amazon koupil společnost Bee zaměřenou na nositelnou osobní AI aktuálně nabízející náramek Pioneer (YouTube) s mikrofony zaznamenávající vše kolem [𝕏, LinkedIn].
Tiskni
Sdílej:
<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.