Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.
Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si
… více »Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.
Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).
Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.
V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.
Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.
Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.
Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Momentalne tunim jednu aplikaci na vykon a presto, ze jsem pri posledni aplikaci, co jsem psal v Basicu nadaval jak spacek. Postesklo se mne po jedne uzasne basicove konstrukci -- ON <cislo> GOTO <adresa1>, <adresa2>...
Jelikoz instrukce goto se v nekterych kruzich nesmi ani vyslovit, bude asi velke rouhani uvazovat o jeji parametrizaci.
Predstavte si, ze mate smycku typu (viz nize) a tato smycka, probiha v aplikaci miliardkrat.
while (podminka) { int operace = getOperace(); switch (operace) { case 0: delej_neco(); break; case 1: delej_neco_jineho(); break; ... } }Vypada to docela efektivne. Problem je, ze pri kazdem pruchodu se testujji vsechny moznosti, dokud se ta spravna nenajde -- slozitost O(n) k poctu moznosti. Pri poctu milard pruchodu, uz to prestane byt zanedbatelne. Jedno reseni je usporadat hodnoty podle pravdepodobnosti. Ale to nebyva zrovna elegantni. Dalsi reseni je prasit...
Pri hledani informaci o inlinovani funkci, jsem objevil zajimave rozsireni GCC. Diky operatoru && muzete pristupovat k jednotlivym labelum jako k hodnotam.
Pozor -- toto funguje jenom v gcc, jestli je to dobre nebo spatne nevim, kazdopadne melo by se to pouzivat pouze pokud tusite co delate.
void *ptr; if (a == 1) ptr = &&nejaky_label1; else ptr = &&nejaky_label2; ... goto *ptr; ... nejaky_label1: nejaky_label2:
Neni to sice nejlepsi priklad, ale kdyz si vezmeme ten priklad se switch, uz to muze byt uzitecnejsi
void * op_table[] = { &&case_0, &&case_1, &&case_2, ...} while (podminka) { goto *op_table[getoperace]; case_0: delej_neco(); goto complete; case_1: delej_neco_jineho(); goto complete; ... complete: }
Je to sice malinko hardcore, ale obcas to dava i lepsi vysledky, jelikoz to ma konstantni slozitost vzhledem k poctu moznosti.
Tiskni
Sdílej:
static SenseOfIrony i = new SenseOfIrony();
error: conversion from ‘SenseOfIrony*’ to non-scalar type ‘SenseOfIrony’ requested
#include <stdio.h> #include <stdlib.h> void akce0() { printf("Akce 0\n"); } void akce1() { printf("Akce 1\n"); } void akce2() { printf("Akce 2\n"); } void test(int akce) { void (*op_table[])() = { akce0, akce1, akce2 }; if (akce >= 0 && akce <= 2) op_table[akce](); else printf("Akce mimo rozsah.\n"); } int main(int argc, char *argv[]) { char *p; int akce; if (argc < 2) { printf("syntax: test číslo akce\n"); return 1; } akce = strtol(argv[1], &p, 0); if (p == NULL || *p != '\0') { printf("Chybné zadání.\n"); return 0; } printf("Volám akci...\n"); test(akce); return 0; }
goto complete;
mi přijde jako zbytečnost - break
udělá to samé.
(Hm, takže je to vlastně jedno goto
naprogramoval jednou průvodce v Turbo Pascalu.
anicka@bia:/usr/src/linux> grep -r goto . | wc -l
37852
grep -cr
na rozvětvený adresářový strom? 14:47:10 ganymede:/usr/src/linux$ time find . -type f| xargs cat | grep -c goto 37926 real 2m1.915s user 0m1.612s sys 0m5.500s 14:51:11 ganymede:/usr/src/linux$ time grep -r goto . | wc -l grep: varování: ./debian/linux-image-2.6.17.4/lib/modules/2.6.17.4/source: smyčka pro rekurzivní průchod grep: varování: ./debian/linux-image-2.6.17.4/lib/modules/2.6.17.4/build: smyčka pro rekurzivní průchod 37918 real 1m43.943s user 0m1.828s sys 0m3.848sjen by me zajimalo proc se vysledky lisi :/
Že je goto hřích se říkalo v dobách, kdy se přecházelo z Basicu a kdekdo cpal goto úplně všude. goto má svůj význam, a např. v linuxovém jádru se vyskytuje celkem hustě.Nicméně já mam velmi rád objektové programování, takže mě se goto a podobné konstrukce taky rozhodně nelíbí
Paušální odsouzení obvykle nejsou k ničemu. Vzpomínám si na člověka, který nás učil programování na gymplu. Ten mi byl schopen tvrdit, že když používám v Turbo Pascalu Exit
(předčasný návrat z procedury nebo funkce, tj. obdoba céčkového return
), stává se tím můj program nepřehledným a že přehlednější by bylo vnořit do sebe deset if
ů…
Takže je potřeba si uvědomit, proč tam to goto
je a zda přispívá k přehlednosti a srozumitelnosti kódu nebo ho naopak zatemňuje. Koneckonců vyšší jazyky běžně mají konstrukce, které jsou jen jinak pojmenované goto
- v C je to třeba return
, break
nebo continue
. A nebo třeba celý mechanismus výjimek, to je také jen maskované goto
.
goto
i v implementacích Pascalu, které neměly s Borlandem nic společného.
return
(předčasný), break
nebo continue
a společně ukazují, že při řešení chybových stavů může narušení toho ideálu vést naopak ke značnému zpřehlednění programu.
goto
hluboký smysl kvůli přehlednosti kódu. V některých funkcích jsou někdy i desítky míst, kde něco může selhat. Protože se většinou musí provést nějaký úklid (něco odregistrovat, snížit počet referencí, uvolnit paměť apod.), nelze jen tak z funkce vyskočit. Proto by to jinak vedlo buď na mnoho vnořených podmínek nebo (při rozkladu na více funkcí) na celou kaskádu volání, ve kterých by se nikdo nevyznal. Proto se používá goto
- při vhodně pojmenovaných návěštích je takový kód přehledný a srozumitelný.
až na to, že volání metody je computed call/computed goto
…volání virtuální metody…
on ... goto
' není zdaleka nejúžasnější basicová vymoženost. Třeba na Spectru tahle konstrukce nebyla, ale zato argumentem goto
mohl být výraz… :-)
GOTO SIN(I)
... EINE: EINE Is Not EMACS. :)
ZWEI: ZWEI Was EINE Initially. :D
Co to je proboha za patičku?