Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
Příspěvek na blogu herního enginu Godot představuje aplikaci Xogot přinášející Godot na iPad a iPhone. Instalovat lze z App Storu. Za Xogotem stojí Miguel de Icaza (GitHub) a společnost Xibbon.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za březen (YouTube).
ESP-IDF (Espressif IoT Development Framework), tj. oficiální vývojový framework pro vývoj aplikací na mikrokontrolérech řady ESP32, byl vydán v nové verzi 6.0. Detaily na portálu pro vývojáře.
DeepMind (Alphabet) představila novou verzi svého multimodálního modelu, Gemma 4. Modely jsou volně k dispozici (Ollama, Hugging Face a další) ve velikostech 5-31 miliard parametrů, s kontextovým oknem 128k až 256k a v dense i MoE variantách. Modely zvládají text, obrázky a u menších verzí i audio. Modely jsou optimalizované pro běh na desktopových GPU i mobilních zařízeních, váhy všech těchto modelů jsou uvolněny pod licencí Apache 2.0. Návod na spuštění je už i na Unsloth.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 3. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Průkopnická firma FingerWorks kolem roku 2000 vyvinula vícedotykové trackpady s gesty a klávesnice jako TouchStream LP. V roce 2005 ji koupil Apple, výrobu těchto produktů ukončil a dotykové technologie využil při vývoji iPhone. Multiplatformní projekt Apple Magic TouchstreamLP nyní implementuje funkcionalitu TouchStream LP na současném Apple Magic Trackpad, resp. jejich dvojici. Diskuze k vydání probíhá na Redditu.
Byla vydána nová verze 10.3 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu bezpečnostních oprav, vylepšení funkcí a oprav chyb.
Cloudflare představil open source redakční systém EmDash. Jedná se o moderní náhradu WordPressu, která řeší bezpečnost pluginů. Administrátorské rozhraní lze vyzkoušet na EmDash Playground.
Bratislava OpenCamp 2026 zverejnil program a spustil registráciu. Štvrtý ročník komunitnej konferencie o otvorených technológiách prinesie 19 prednášok na rôzne technologické témy. Konferencia sa uskutoční v sobotu 25. apríla 2026 v priestoroch FIIT STU v Bratislave.
Bit offset ... 76 80 84 88 92 96 100 104 108 ...
Char boundaries | |-----1-----|-----2-----|-----3-----|-----4-----| |
Bits in byte order 0010 1010 0001 0111 0001 0011 0000 0011 0000 0010
Bits in bit field order 0101 0100 1110 1000 1100 1000 1100 0000 0100 0000
Char bits in byte order 0111 0010 0011 0001 0011 0001 0010 0000
Hex vals of char bits 7 2 3 1 3 1 2 0
Char val of char bits 'r' '1' '1' ' '
a makro, které to načtení provede : (taky jen odhaduju, co to vlastně dělá - nějaké bitové posuny, masky ale jen hádám )
#define read_bits(data,start,size) \
((*((uint64_t*) &(data)[(start) / 8]) >> ((start) & 7)) & (((uint64_t)1 << (size)) - 1))
Osvětlil by mi někdo, co to makro jako dělá ? Tedy tápu, proč je tam uint64_t a hvězdička u toho na začátku, možná je to vymezení typu, se kterým se bude to šibování provádět, ale jako jsem z toho mimo
Děkuji za výklad....
Řešení dotazu:
Ty explicitně napsané bitové operace vypadají složitější, než je nutné.
C i C++ mají bitfield (struct s dvojtečkami). Tím by se možná dalo něco zjednodušit. (Ne pokud tam je nějaká hodně netriviální transformace nebo komprese, nicméně pokud jde o extrakci / ukládání některých specifických bitů ve dlouhém řetězci bitů, tam bitfield opravdu hustě pomáhá.)
Co se Pythonu týká, asi bych tu funkci pro manipulaci s bity sesmolil v C nebo C++ a pak zpřístupnil přes SWIG v Pythonu.
def read_bits(data, start, size):
return ((int.from_bytes(data[start // 8:], 'big') >> (start % 8)) & ((1 << size) - 1))
Rather than describe everything in terms of byte offsets, I'm going to define the layout as a series of variable-length bit fields. This is a critical part of the item format, because the position of many of the fields can change depending on what comes before it. If I say a certain value is a 3-bit field starting at bit position 150, for example, this translates to bits 6 and 7 of the byte 18 and bit 0 of byte 19 in the data structure. You can read an arbitrary bit field programatically using the following code (in C): #define read_bits(start,size) \ ((*((unsigned long *) &data[(start) / 8]) >> ((start) & 7)) & ((1 << (size)) - 1))
17 18 19
........|......xx|x.......|...
->
(start) & 7 -- zjistim offset 8 & 7 = 0, 9 & 7 = 1 .. 150 & 7 = 6
........|......xx|x.......|...
-> 67|0
(&data[(start) / 8]) >> ((start) & 7) -- posunu se na zacatek
........|......xx|x.......|...
->67|0
((1 << (size)) - 1) -- pripravim si "masku" 1 << 3 = 8 - 1 = 7 0x00000111 - chci tri bity
........|......xx|x.......|...
->67|0
((&data[(start) / 8]) >> ((start) & 7)) & ((1 << (size)) - 1)) -- Vyctu tri bity.
Pytnon cte data po celych bytech a musel by si vyresit to "prekrivani" se hodnot..
Tiskni
Sdílej: