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.
Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.
Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.
Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po
… více »Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.
Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.
V článku se popisuje jednovláknový embedded http server postavený nad knihovnou Qt. Originál článku včetně dokumentace vyšel na našem webu: Hobrasoft.cz
Http server, který zde popisuji, je založený na tomto projektu, autorem je Stefan Frings:
http://stefanfrings.de/qtwebapp/index-en.html.
Tímto bych rád autorovi poděkoval.
Koukněte se, jak to běhá
Dokumentace
Download
Pro jeden z našich projektů jsem hledal nějaký vhodný webový server. První nápad byl samozřejmě server QtWebapp, už s ním mám většinou dobré zkušenosti z jiného projektu: Fotobot. Ale už v prvním projektu jsem narazil na některé nepříjemné vlastnosti: parametry se v mnoha místech předávají jako reference (ač reference je skoro totéž, co odkaz, není to tak docela odkaz), server je vícevláknový a počet vláken je předem daný v konfiguračním souboru. Omezení počtu vláken dělalo občas problémy už v prvním projektu, v dalším projektu se daly očekávat problémy řádově horší.
Vyzkoušeli jsme i jiný http server, ale tam jsme na vícevláknovost a omezený počet vláken narazili taky.
Aby to nevypadalo, že mám něco proti vícevláknovým aplikacím - ne tak docela. Ale Qt je knihovna hodně orientovaná na událostní zpracování, a pokud je celá aplikace řízená událostmi, je vícevláknový web server zbytečná komplikace (je nutné začít zamykat a podobně).
Lidé na internetu opisují nápady jeden od druhého. Apache jednou ukázal cestu, které se nyní lidé drží zuby nehty, a když je Apache takto úspěšný, nelze přeci udělat chybu, když se pro další servery zvolí podobné řešení. Použitelný jednovláknový server jsme nenašli.
Naštěstí jsou tady servery jako je Nginx, Lightttpd a HobrasoftHttpd.
Spousta našich aplikací běží v prostředí malých ARM počítačů BeagleBone. Je nesmysl psát v C++ malinké rutiny pro bitové žonglování s jednotlivými vývody procesoru a pro publikaci výsledků pak použít kombajn typu Apache a PHP. I když Apache na BeagleBone samozřejmě chodí, chceme mít celé prostředí jednoduché, včetně instalace. Ideální instalace vypadá takto:
apt-get install fotobot
Nechce se mi psát sáhodlouhé návody "Apache nakonfigureje takto: 1. apt-get... 2. cd /etc/apache2/vhost.conf... 3. vi default_vhost.conf.... 99. /etc/init.d/apache restart".
Napsat podrobný návod na instalaci si dovedu představit, pokud je cílovou skupinou zkušený linuxový administrátor nebo můj vlastní zaměstanec. Ale nedovedu si představit, že bych vyráběl produkt, který by měl poskytovat nějaké informace přes HTTP rozhraní na Windows a nemohl bych použít embedded http server. Instalace na Windows spočívá v klikání na "Další... další... další..." a přes to vlak nejede.
Aplikace, které poslední dobou děláme, otevírají na každé stránce hned několik
spojení a nepouštějí je. Dokud je stránka v prohlížeči aktivní, je otevřené i
spojení. Deset vláken je málo - s deseti vlákny zablokuje webový server už
druhý uživatel. (Neomezený počet spojení mě samozřejmě přejde - hned jak mi
někdo položí server
V jednovláknové aplikaci chci používat jednovláknový http server. Více vláken vede k zamykání, kód se stává složitějším a náchylnějším k chybám - jeden chybějící mutex v kritickém místě dovede klidně shodit aplikaci, v horším případě pak i vyrobit nesmysly v datech.
Knihovna Qt je řízená událostmi. I když psaní vícevláknových aplikací je v Qt snadné, psaní aplikací řízených událostmi je snazší. Nechci se ubírat trnitými cestami, pokud existuje asfaltka.
Stačí-li vám servírovat pouze statický obsah, je použití serveru ve vašem vlastním kódu takto jednoduché:
#include <QCoreApplication>
#include "httpd.h"
using namespace HobrasoftHttpd;
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
new HttpServer(0); // Server can serve static file from current directory
return app.exec();
}
Konfigurace celého serveru je obsažená v samostatné třídě, načítá se z klasického objektu třídy QSettings. Pokud chcete použít jiný konfigurační soubor, můžete to udělat třeba takto:
QSettings qsettings("/etc/http.conf", QSettings::IniFormat);
HttpSettings settings(&qsettings, 0);
new HttpServer(&settings,0);
Pokud potřebujete, aby vaše aplikace generovala obsah dynamicky, musíte rozšířit třídu HttpServer a reimplementovat metodu HttpServer::requestHandler() tak, aby vracela ukazatel na váš vlastní request mapper:
#include "httpserver.h"
#include "httprequesthandler.h"
#include "myclass.h"
using namespace HobrasoftHttpd;
class RequestMapper : public HttpRequestHandler {
Q_OBJECT
public:
RequestMapper(HttpConnection *parent);
void service(HttpRequest *request, HttpResponse *response) {
if (request->path().startsWith("/my-function")) {
HttpRequestHandler controller = new MyClass(connection());
controller->service(request, response);
return;
}
// call default handler - static html pages, shtml pages, images, javascript, styles...
HttpRequestHandler::service(request, response);
}
};
class MyHttpd : public HttpServer {
Q_OBJECT
public:
Httpd(QObject *parent) : QObject(parent) { }
// The method returns pointer to new instance of your own request mapper
// The request mapper maps requests like "/my-function" to call your own classes
HttpRequestHandler *requestHandler(HttpConnection *connection) {
return new RequestMapper(connection);
}
};
Více se dočtete v dokumentaci: http://www.hobrasoft.cz/en/httpserver/doc/
Součástí balíku ke stažení je i zdokumentovaný příklad - doporučuji prostudovat třídu AbstractController a její použití. Tato třída vám dovolí snadno implementovat velmi častou třídu úloh:
Celá třída komunikuje přes JSON, změny se předávají přes HTML5 proudy událostí.
Tiskni
Sdílej:
Na embedded je to pomerne rýchle. Ja vyvíjam vo voľnom čase pre malé ARM dosky - ukážka virtuálnej klávesnice. Kompletný boot je pomerne rýchly (bootovať začína až od výpisu starting kernel, dovtedy je tam bootloader s nejakým timeoutom nech to môžem zastaviť a nabootovať zo siete keď niečo pokašlem). Obraz disku s meulátorom aj kompletným Qt a tonou zbytočností aby sa mi na tom dobre vyvíjalo má cca 40MB.