Evropská komise (EK) předběžně shledala čínskou sociální síť pro sdílení krátkých videí TikTok návykovým designem v rozporu s unijním nařízením o digitálních službách (DSA). Komise, která je exekutivním orgánem Evropské unie a má rozsáhlé pravomoci, o tom informovala v tiskovém sdělení. TikTok v reakci uvedl, že EK o platformě vykreslila podle něj zcela nepravdivý obraz, a proto se bude bránit.… více »
Offpunk byl vydán ve verzi 3.0. Jedná se o webový prohlížeč běžící v terminálu a podporující také protokoly Gemini, Gopher a RSS. Přibyl nástroj xkcdpunk pro zobrazení XKCD v terminálu.
Promethee je projekt, který implementuje UEFI (Unified Extensible Firmware Interface) bindingy pro JavaScript. Z bootovacího média načítá a spouští soubor 'script.js', který může používat UEFI služby. Cílem je vytvořit zavaděč, který lze přizpůsobit pomocí HTML/CSS/JS. Repozitář se zdrojovými kódy je na Codebergu.
Zpráva Justičního výboru Sněmovny reprezentantů upozorňuje na cenzurní kampaň Evropské komise, mířenou proti svobodě projevu na sociálních sítích. V dokumentu se uvádí, že se Evropská komise během posledních šesti let účastnila více než 100 uzavřených jednání, během nichž po platformách požadovala úpravy pravidel moderování obsahu, přičemž toto úsilí Komise zahrnovalo i cenzuru politických názorů a pravdivých informací. Výbor zdůrazňuje, že tento přístup Bruselu ohrožuje ústavou zaručená práva Američanů na svobodu projevu.
Linus Torvalds vydal jádro Linux 6.19. Podrobný výčet změn je ke zhlédnutí na stránce Kernel Newbies, stručné výběry v LWN (část první, druhá).
Do prodeje jde tichá bezdrátová herní myš Logitech PRO X2 SUPERSTRIKE s analogovými spínači s haptickou odezvou (HITS, Haptic Inductive Trigger System). Cena je 4 459 Kč.
Microsoft na GitHubu zveřejnil zdrojový kód projektu LiteBox, jedná se o 'knihovní operační systém' (library OS) zaměřený na bezpečnost, využívající systémovou architekturu LVBS k ochraně jádra před útoky z uživatelského prostoru. LiteBox je napsán v Rustu a uvolněný pod licencí MIT. Projekt je teprve v rané fázi vývoje.
BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.
Byl představen cross-assembler xa.sh, napsaný čistě v Bourne shell skriptu. Tento nástroj umožňuje zpracovávat assemblerový kód pro Intel 8080, přičemž je možné snadno přidat podporu i pro další architektury, například 6502 a 6809. Skript využívá pouze různé běžné unixové příkazy jako jsou awk, sed nebo printf. Skript si lze stáhnout z GitHubového repozitáře projektu.
Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.
A komponenty nás budou provázet taky celým článkem – pro začátek naše vlastní (Qt Components se bude podrobněji věnovat minimálně jeden celý díl seriálu) a výrazně nám usnadní tvorbu našich aplikací. Zpřehlední nám zdrojový kód, který by se jinak stal dlouhou nudlí skládající se z kopírování a vkládání kusů kódu. Tím se také tyto části kódu stanou znovupoužitelné pro použití jak v rámci aplikace, tak i dalších následujících projektů. V případě uvolnění pod open source licencí pak mohou posloužit i ostatním vývojářům v naší rozrůstající se komunitě. QML je jako jazyk navíc velmi vhodný k rychlému prototypování návrhu aplikace a následný refaktoring aplikace do komponent se udělá v podstatě skoro sám. Vývojáře tak k němu přímo vybízí a dochází k symbióze návrhu a implementace aplikace.
Komponenty můžeme nadefinovat jak ve vlastním souboru, tak i v rámci již existujícího QML zdrojového kódu. První případ je vlastně klasický QML dokument, který obsahuje vyžadované importy (minimálně QtQuick) a jeden prvek nejvyšší úrovně (často se jedná o element Item představený v předchozí části seriálu) s popisem vlastností a chování komponenty. Soubor s definicí komponenty musí začínat velkým písmenem s příponou .qml. Tímto jménem se pak následně ve zdrojovém kódu aplikace na komponentu odkazujeme. Druhou možností je pak vytvoření nové komponenty právě v rámci jiného QML dokumentu (či komponenty). Pro tento případ máme k dispozici element Component. Hojně se využívá pro oddělení menší části kódu do vlastní komponenty bez nutnosti vytvářet bokem nový soubor a to především pro opakující se prvky. Například jako delegát pro opakovače (repeatery) a ListView element, jak jsme si bez vědomí znalosti komponent ukázali v minulém dílu. Opět především z důvodu přehlednosti zdrojových kódů.
V následujícím příkladu si napíšeme dvě komponenty – čtverec a obdélník a ty následně vytvoříme pomocí elementu Loader do jednoho řádku (element Row), kde se taky zobrazí. Všimněte si, že obě komponenty mají vlastní id a to je taky jediná vlastnost, která jde v rámci elementu Component nejvyšší úrovně nastavit. O Loaderu a dalších možnostech, jak vytvářet komponenty dynamicky, si povíme v jednom z následujících dílů seriálu o pokročilých vlastnostech QML.import QtQuick 1.0
Rectangle {
width: 300
height: 100
Component {
id: ctverec
Rectangle { width: 100; height: 100; color: "blue" }
}
Component {
id: obdelnik
Rectangle { width: 200; height: 100; color: "red" }
}
Row {
anchors.fill: parent
Loader { sourceComponent: ctverec }
Loader { sourceComponent: obdelnik }
}
}
Využití v rámci delegátu si představíme na závěr článku v rámci naší první malé, ale skutečné aplikace. Jaká to bude, si zatím necháme jako tajemství. Nechte se překvapit!
K tvorbě skutečného uživatelského rozhraní jsou ovšem potřeba přece jenom složitější komponenty než jen výše předvedený čtverec a obdélník. Mají definované rozličné vlastnosti, složitější chování a případně i reagují na akce uživatele. A čisté Qt Quick nechává tuto práci na vývojářích. Protože kromě základních elementů představených v minulém dílu seriálu k jejich obvyklému překvapení neobsahuje žádné elementy/komponenty pro tvorbu uživatelských rozhraní. My si teď ukážeme jak takovou komponentu, která bude vypadat tak, jak jsme si popsali výše, vytvoříme. Tlačítko je jeden z nejzákladnějších prvků uživatelských rozhraní a bude tedy první komponentou, kterou si navrhneme.
Začneme vytvořením nového souboru (v Qt Creatoru buď pomocí menu File -> New File or Project nebo kliknutím pravého tlačítka ve stromové struktuře projektu a výběrem položky Add New, následně vybereme QML a QML File), který pojmenujeme Button.qml. Qt Creator nám pak předgeneruje šablonu, kterou budeme dále rozvíjet.
import QtQuick 1.1
Rectangle {
id: container
width: 100; height: 40; radius: 5
Pro naše tlačítko použijeme jako výchozí prvek klasický obdélník (Rectangle) a nastavíme si jeho id na container (bude sloužit jako kontejner pro další prvky). Pomocí vlastnosti radius pak naše tlačítko trošku zjemníme a zakulatíme jeho rohy.
property color buttonColor: "red"
property alias buttonText: label.text
signal clicked
V následující části kódu se dostáváme k první zajímavé a pro naše tlačítko nejdůležitější části. Definici jeho vlastností a signálu jako reakci na stisk tlačítka. Na prvním řádku je klasická definice vlastnosti – pomocí klíčového slova property, následovaného typem vlastnosti a názvem vlastnosti. Za dvojtečkou se nachází výchozí hodnota vlastnosti – v našem případě tedy (pokud neuvedeme jinou barvu) bude tlačítko červené. Druhá vlastnost je takzvaný alias na vlastnost jiného prvku. Místo typu se za klíčovým slovem property objevuje další klíčkové slovo alias a za dvojtečkou se pak nachází odkaz na zástupnou vlastnost jiného prvku. Čtení a zápis na takto zástupné vlastnosti se automaticky projeví na čtení a zápisu v odkazované vlastnosti daného prvku. V našem případě prvku label a jeho vlastnosti text (ten si nadefinujeme později).
Dále nás zajímá definice signálu – v našem případě bez parametrů, které je možné jinak uvést v závorce (každý parametr musí být nějakého typu).
gradient: Gradient {
GradientStop { position: 0.0; color: buttonColor }
GradientStop { position: 1.0; color: Qt.darker(buttonColor, 2.0) }
}
Pro pozadí tlačítka (tedy výplni prvku container) použijeme barevný přechod z barvy určené naší vlastností buttonColor na její tmavší variantu – za použítí vestavěné funkce darker objektu Qt. Pokud by nám stačila jednobarevná výplň, mohli bychom opět na barvu pozadí použít alias vlastnosti.
Text {
id: label
anchors.centerIn: parent; color: "white"
}
A dostáváme se k textu tlačítka, na který jsme si výše připravili alias buttonText. Pro naše účely tedy stačí nastavit id na stejnou hodnotu jako v aliasu (label). Všimněte si, že vůbec nenastavujeme hodnotu vlastnosti text. Ta se nastaví právě přes alias. Pouze vycentrujeme text na střed tlačítka a nastavíme jeho barvu na bílou.
MouseArea {
anchors.fill: parent
onClicked: container.clicked()
}
}
Zbývá poslední krok – naučit naše tlačítko naslouchat příkazům uživatele. Opět použijeme již představený element MouseArea, který roztáhneme na celé naše tlačítko (vlastnost anchors.fill). A nadefinujeme reakci na jeho signál onClicked. Tedy signál, který reaguje na stisk tlačítka myši (či dotek na dotykovém zařízení) a jako akci vyšleme náš vlastní signál clicked bez parametrů.
Tímto jsme si vytvořili naše první komponentu – tlačítko. Nezbývá než se potěšit výsledkem a tlačítko použít v aplikaci. První tlačítko bude ve výchozí podobě červené (vizte výchozí vlastnost) a druhému nastavíme vlastnost buttonColor na zelenou barvu a bude tedy zelené. Při kliknutí se do konzole vypíše buď „Ahoj“ nebo „Hi“ v závislosti na stisknutém tlačítku.
import QtQuick 1.1
Row {
width: 210; height: 40; spacing: 5
Button { buttonText: "Ahoj"; onClicked: console.log("Ahoj") }
Button { buttonText: "Hi"; buttonColor: "Green"; onClicked: console.log("Hi") }
}
V následujícím dílu seriálu se podíváme na funkcionalitu, která dělá moderní uživatelské rozhraní (a to někdy k nelibosti některých uživatelů) moderní – na animace. Ty nás pak přivedou ke stavům a přechodům.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
Ano, kdyz prestanou na Qt delat, tak bude asi pro komunitu tezke spravovat takovy obri balik, ale...To je v podstate to, co jsem myslel. Obavam se, ze ciste komunitne spravovane Qt bez podpory komercni firmy s placenymi vyvojari na pozadi, urcujici nejaky smer a garantujici predvidatelny rozvoj, bude uplne jiny projekt a rada firem kupujicich licencovanou verzi zacne hledat jinou cestu. Nemyslim, ze Nokia nebude Qt rozvijet, otazka zni jak rychle - tedy kolik do toho investuje - a kam to bude smerovat, pomaly nejisty rozvoj je ta nejhorsi cesta a uprimne pokud vlastnikem bude Nokia s nejasnou motivaci, bude tato otazka stale ve vzduchu. V soucasne dobe bych do noveho produktu postaveneho na Qt jiz nesel, lepsi napsat v cistem C++, platforme zavisle casti izolovat a resit nativne.
V soucasne dobe bych do noveho produktu postaveneho na Qt jiz nesel, lepsi napsat v cistem C++, platforme zavisle casti izolovat a resit nativne.Platforme zavisla cast je v dnesni dobe skoro vsechno, takze dobrou chut
Qt funguje skoro na všech majoritních platformách.To je ono, skoro funguje.
Tak komercni vyvoj dela Digia, necekam, 4.8.1 delali prakticky oni, vcetne release.Vim, mame od nich Qt Commercial SDK, pouzivany na Ångström, tam to budem pouzivat asi dal, ne vsak na desktopu.
Motivace Nokie jsou mobilni aplikaceA postavene na Qt?
Gtk 4 co jsem slysel hodne omezi podporu ne-linux platforem,Gtk4 ? Co se o tom vi?
Postavene na Qt - ano, proc jinak by to Nokia delala. Jinak by cele Qt dala pryc uz davno.Ze setrvacnosti, backup plan? I kdyz vim, ze to interne v Berline pouzivaji.
Nedavno dokonce rikal Lars Knoll (na FOSDEMu), ze je to kvuli footprintu jeste porad malo rozdelene.To chvalim, footprint a nutna velikost flashe byl zatim jeden z hlavnich duvodu proc Qt nepouzit.
Asi nezrusi uplne podporu, jen bude hodne osekana, pripadne bokem.No dobre .... ale zrusit GIMP pro Windows?! ...
Celé jsem to buď nepochopil, nebo furt nemůžu najít tu killer featuru, která dělá z QML něco použitelného...přesně tohle řeším už pekelně dlouho. Navíc mám pocit, že jakmile někde uvedou, že "s tímhle budou skvělě pracovat designéři", tak je to automaticky krok do slepé uličky - vizte např. Zope (DTML vs. TPL), všelijaké PHP templaty, Django templaty... vždycky se s tím serou stejní lidé jako předtím, akorát, že je tam vrstva navíc.
Ono mi to občas přijde celé takové podivné. Tlačí se technologie, která umí v základu zobrazit pár základních tvarů, byť "dobře" konfigurovatelných. Hlavně že to umí částicové efekty. To je fakt potřeba.Nevim no, videl jsi treba QtMediaHub? Pokud si delal nejake podobne UI v C/C++ tak asi vis jaky to je maras, nemluve o tom, jaky maras to je aby to dobre vypadalo a chovalo se to stejne na Win/Linux/OSX. Pomoci QML se da udelat celkem zabijacke UI skoro bez prace a vicemene ciste, temer bez chyb (chyby jsou vetsinou v C/C++ backendu, v UI minimum). Proto QML pouzivam a to UX bytostne nesnasim, konzole-ole! :) Ano, tento tutorial sice ukazuje zakladni kameny a neodkryva naplno moznosti QML, ale to je holt udel tutorialu. Kazdopadne kdo ma predstavivost, tak i z techto zakladu pochopi jak mocny nastroj QML je. Pokud ne, je to ciste jeho problem :)