Byla vydána verze 1.91.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Ministerstvo průmyslu a obchodu vyhlásilo druhou veřejnou soutěž v programu TWIST, který podporuje výzkum, vývoj a využití umělé inteligence v podnikání. Firmy mohou získat až 30 milionů korun na jeden projekt zaměřený na nové produkty či inovaci podnikových procesů. Návrhy projektů lze podávat od 31. října do 17. prosince 2025. Celková alokace výzvy činí 800 milionů korun.
Google v srpnu oznámil, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Iniciativa Keep Android Open se to snaží zvrátit. Podepsat lze otevřený dopis adresovaný Googlu nebo petici na Change.org.
Byla vydána nová verze 18 integrovaného vývojového prostředí (IDE) Qt Creator. S podporou Development Containers. Podrobný přehled novinek v changelogu.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 2.0. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Google Chrome 142 byl prohlášen za stabilní. Nejnovější stabilní verze 142.0.7444.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 20 bezpečnostních chyb. Za nejvážnější z nich bylo vyplaceno 50 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.
Pro moddery Minecraftu: Java edice Minecraftu bude bez obfuskace.
Národní identitní autorita, tedy NIA ID, MeG a eOP jsou nedostupné. Na nápravě se pracuje [𝕏].
Americký výrobce čipů Nvidia se stal první firmou na světě, jejíž tržní hodnota dosáhla pěti bilionů USD (104,5 bilionu Kč). Nvidia stojí v čele světového trhu s čipy pro umělou inteligenci (AI) a výrazně těží z prudkého růstu zájmu o tuto technologii. Nvidia již byla první firmou, která překonala hranici čtyř bilionů USD, a to letos v červenci.
Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
Psal jsem dneska jednoduchou třídu pro animované sprajty v OpenGL. Abych nemusel texturovací souřadnice počítat při každé změně snímku, předpočítal jsem si je všechny předem do bufferu. Když pak dojde na kreslení snímku, texturovací souřadnice zadám jednoduše jako offset do tohohle bufferu. V principu velmi jednoduchý kód, ale stejně se mi v něm podařilo vyrobit chybu, kterou jsem pak dlouho a nespokojeně hledal. Je to klasický přehmat v ukazatelové aritmetice – býval bych řekl, že takovou chybu bych neudělal, no ale zjevně ano:
#include <stdio.h>
typedef struct { int a, b; } dint;
int main()
{
    dint foo[] = {{1, 2}, {3, 4}};
    printf("%i\n", *(foo + 1));
    return 0;
}
Program samozřejmě vypíše trojku, protože operátor plus přičítá násobky základního typu pole, nikoliv bajty. Tenhle post jsem napsal především proto, abych si to pořádně natloukl do hlavy a příště si podobné radosti ušetřil 
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    

printf("%i\n", *((int*)foo + 1));
 1.7.2009 20:44
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        1.7.2009 20:44
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        float *textureVertices;A za chvilku:
const int textureOffset = currentFrame * 4 * sizeof(float); glTexCoordPointer(2, GL_FLOAT, 0, textureVertices+textureOffset);No a
sizeof(float) bylo samozřejmě navíc, stačilo ho smazat.
            textureVertices jen tak pro zajímavost?
             2.7.2009 08:10
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        2.7.2009 08:10
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        int frameNo = 0, i = 0;
while (frameNo <= numFrames)
{
    textureVertices[i+0] = …;
    textureVertices[i+1] = …;
    textureVertices[i+2] = …;
    textureVertices[i+3] = …;
    i+=4; frameNo++;
}
            frameNo < numFrames než větší/rovno, protože frameNo inicializuješ frameNo = 0.* 4 než * sizeof(float).sizeof(float) != 4 a imho to nepůjde, nebo jo?
             2.7.2009 17:44
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        2.7.2009 17:44
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        while jde od nuly do frameNo včetně (⇒ N+1). A když chci offset prvního vrcholu snímku číslo X, musím přeskočit dva vrcholy na každý z předchozích snímků. Dva vrcholy = čtyři floaty, proto *4. Ta optimalizace je celkem zbytečná, ale podle mě není nijak zvlášť nepřehledná, tak jsem ji tam nechal.
             
             3.7.2009 12:58
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        3.7.2009 12:58
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
         2.7.2009 06:53
Petr Bravenec             | skóre: 43
             | blog: Bravenec
        2.7.2009 06:53
Petr Bravenec             | skóre: 43
             | blog: Bravenec
            
        
typedef struct { int a, b; } dint;
int main() {
    dint foo[] = {{1, 2}, {3, 4}};
    printf("%i\n", foo[1].a);
    return;
    }
Já bych si na konstrukci s ukazatelem v tom původním provedení netroufnul. Aniž bych si to uvědomoval, jistě by se mi už při prvním pohledu na strukturu dint mihla hlavou myšlenka "A v jakém vlastně pořadí jsou uložené složky a a b? Nemohl by se mi stát, že to bude potřeba přeložit na něčem, co zvolí pořadí opačné?" - A měl bych jasno.
Obecně známá pravda tvrdí, že ukazatele jsou rychlejší. Moje hlava tvrdí, že to je možné, ale ve většině případů to za ty komplikace nestojí a i potom se to dá udělat mnohem bezpečněji.
             2.7.2009 08:07
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        2.7.2009 08:07
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        Chce to méně spoléhat na obecně známé pravdy a více používat vlastní hlavu:To jsme si asi nerozuměli. Ten kód je jen ukázka, na které je dobře vidět chování operátoru + na ukazatelech. Samozřejmě, že bych se k
foo mohl chovat jako k poli, ale tím by to celé jaksi ztratilo pointu.
Obecně známá pravda tvrdí, že ukazatele jsou rychlejší. Moje hlava tvrdí, že to je možné, ale ve většině případů to za ty komplikace nestojí a i potom se to dá udělat mnohem bezpečněji.Ani v tom původním kódu jsem to nedělal kvůli rychlosti, prostě mi to tak přišlo nejpraktičtější. Asi bych si býval mohl napsat nějaké struktury a pracovat s tím kusem paměti trochu méně „naslepo“, bylo by to bezpečnější a čitelnější. To je fakt.
 2.7.2009 09:03
Petr Bravenec             | skóre: 43
             | blog: Bravenec
        2.7.2009 09:03
Petr Bravenec             | skóre: 43
             | blog: Bravenec
            
         
             2.7.2009 09:23
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        2.7.2009 09:23
zoul             | skóre: 43
             | blog: ☂
             | Boskovice
        p+1 a &(p[1]), už bych tak jednoznačně netvrdil, že je druhý zápis je přehlednější.