Odborníci z Penn State University zkoumají způsob ukládání informací na lepicí pásku. Principiálně by podle nich bylo možné kombinací odlepení a zpětného přilepení dosáhnout uložení informace, kterou opětovným odlepením dokážou přečíst. Výhodou je, že způsob uložení i přečtení je čistě mechanický. Zde o tom referují ve volně dostupném článku. Zajímavé bude sledovat zda se jim v rámci výzkumu podaří prokázat použitelnost i v jiné než
… více »Na GitHubu byl publikován reprodukovatelný návod, jak rozchodit Adobe Lightroom CC na Linuxu a Wine. Návod byl vytvořený pomocí AI Claude Code.
Pokud by někdo potřeboval Wayland kompozitor uvnitř počítačové hry Minecraft, aby mohl zobrazovat okna desktopových aplikací přímo v herním prostředí, může sáhnout po Waylandcraftu. Ukázka na YouTube.
Uroš Popović v krátkém článku vysvětluje, co jsou emulátor terminálu, TTY a shell a jaké jsou mezi nimi rozdíly. Jde o první díl seriálu na jeho novém webu Linux Field Guide věnovaném nízkoúrovňové práci s linuxovými systémy.
Byl vydán Debian 13.5, tj. pátá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.14, tj. čtrnáctá opravná verze Debianu 12 s kódovým názvem Bookworm. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
CiviCRM (Wikipedie) bylo vydáno v nové verzi 6.14.0. Podrobnosti o nových funkcích a opravách najdete na release stránce. CiviCRM je robustní open-source CRM systém navržený speciálně pro neziskové organizace, spolky a občanské iniciativy. Projekt je napsán v jazyce PHP a licencován pod GNU Affero General Public License (AGPLv3). Český překlad má nyní 45 % přeložených řetězců a přibližuje se milníku 50 %. Potřebujeme vaši pomoc, abychom se dostali dál. Pokud máte chuť přispět překladem nebo korekturou, přidejte se na platformu Transifex.
Další lokální zranitelností Linuxu je ssh-keysign-pwn. Uživatel si může přečíst obsah souborů, ke kterým má právo ke čtení pouze root, například soubory s SSH klíči nebo /etc/shadow. V upstreamu již opraveno [oss-security mailing list].
Singularity (YouTube) je nejnovější otevřený film od Blender Studia. Jedná se o jejich první 4K HDR film.
Vyšla hra Život Není Krásný: Poslední Exekuce (Steam, ProtonDB). Kreslená point & click adventura ze staré školy plná černého humoru a nekorektního násilí. Vžijte se do role zpustlého exekutora Vladimíra Brehowského a projděte s ním jeho poslední pracovní den. Hra volně navazuje na sérii Život Není Krásný.
Společnost Red Hat představila Fedora Hummingbird, tj. linuxovou distribuci s nativním kontejnerovým designem určenou pro vývojáře využívající AI agenty.
Použité zdrojáky.
Zatiaľ mám akurát gist na githube. Proxy modely nad ListModelom majú hnusné API, ktoré by som najradšej prekopal. Vlastne je tam tých škaredých vecí, ktoré by som najradšej od základu prepísal viacej. Po stabilizácii API vytvorím repozitár.
Trochu offtopic .. pri programovaní v JS ma prekvapila jedna vec. Skoro všetko, čo píšem je rýchlejšie vo firefoxe, ale cudzie knižnice sú naopak zvyčajne rýchlejšie v chrome.
Ale vreckový firefox (fenec) je skutočný vreckový lišiak ;)
UI komponenta je funkce, ktera na vstup dostane stav a vrati HTML. Kdyz chci provest nejakou zmenu v UI, na DOM nesaham, ale upravim stav a reknu o tom Reactu. Ten se pak postra o update UI.
To je blbosť. Pôvodne som mal napísaný vlastný šablónovací jazyk (pôvodne fork t.js, ale akosi sa na to nabalilo automatické escapovanie, filtre atď), komponenty generujúce html pri zmene stavu ... ale celé som to zahodil. Je jednoduchšíe veľkú časť 10kB knižnice než je to u 500kB knižnice. To, že je to blbosť som už zistil na vlastnej koži keď to síce fungovalo pekne, rýchlo, ale robil som chatovaciu aplikáciu a akosi som potreboval aby sa zoznam užívateľov (select s optionmi) negeneroval vždy znovu keď niekto príde / odíde z chatu. Jednoducho to bolo blbé keď som si vyberal príjemcu a zrazu sa select vymazal a vytvoril na tom istom mieste, zmizol selection a celkovo je to nepríjemné keď počas výberu zmizne menu. Preto react.js potrebuje pri generovaní listu key, ktorý sa následne využíva na diffovanie listu. Ja takéto implicitné magické hodnoty nemám rád, preto to isté u mňa zabezpečuje dvojica ListModel a ListView. ListModel je v podstate obyčajný obalený zoznam ktorý má operáciu vloženia na určené miesto, odstránenia z určitého miesta a presun. Ďalej má 2 signály - inserted a removed (move sa dá rozložiť na tieto 2). ListView sa jednoducho zahákne na ListModel a vytvára / maže komponenty. Komponenty musia byť obalené do widgetu, čo je ľahká vrstva ktorá má ešte na starosti aktualizáciu jednotlivých položiek. Takže ListView nerobí nič iné len reaguje na vloženie / vymazanie, widget sa pri zmene modelu (napr. zmena mena užívateľa) mení sám. Samozrejme inicializovať sa to musí explicitne (funkcia createList), ale zvyšok už je rovnako pohodlný ako s reactom.
Iný príbeh je ak si list neskladám sám, ale chcem ho trebarz aktualizovať z nejakej restovej služby. Na to mám triedu AutoListModel (v podstate je to len proxy na ListModel) a tá funguje takto:
var todoList = new Reactor.AutoListModel();
new Reactor.ListView(
element,
todoList,
widget
);
var zoznam = [];
todoList.setData(zoznam);
zoznam.push({id: 1, ...});
todoList.setData(zoznam);
AutoListModel si už automaticky urobí diff podľa id a do modelu správne pridá / odstráni / presunie / upraví prvky. V podstate robí to isté čo react.js, ale musím ho inicializovať ručne, takže môj kód je o pár riadkov dlhší (< 10%).
Ešte aby to nebolo zle pochopené .. nie som spokojný ako je u mňa implementovaný ListView, ListModel ... ale je to prvé riešenie, ktoré ma napadlo pri poslednom projekte. Predchádzajúce riešenia som nezverejňoval, lebo to bolo už dávno implementované lepšie v iných knižniciach. Automatická efektívna zmena DOM podľa modelu ako to mám implementované v súčasnosti prináša výkon porovnateľný s vanilla js. Preto som sa rozhodol zverejniť fragmenty kódu práve teraz. Kým to bude ako-tak učesané tak to ešte zopár projektov potrvá.
Nepochopil jsem co presne je blbost.
Blbosť je generovať html. Môj kód tak nefunguje, react.js tak nefunguje, len sa navonok tak tvári.
Kouzlo Reactu je, ze nemusim pouzivat specialni tridy jako ListView, ListModel nebo AutoListModel.
To je vec ktorá sa mi na reacte nepáči. Namiesto pohodlného ListView-u, ku ktorému mám nejaké API musím v react.js pracovať so surovým array-om. Je to vecou preferencií, keby sa mi páčil prístup react.js nemám dôvod písať niečo iné.
Ano, neni to vzdy stejne rychle jako vanilla JS, ale porad rychlejsi (nekdy radove) nez Angular a Ember.
Angular a Ember sú katastrofa. Obojstranné bindingy nemám rád. Rýchlosť je mizerná. Je to obrovské, monštrózne zložité a ako bonus celý angular prepísali.
react.js tak nefunguje, len sa navonok tak tváriAno, tak jsem to myslel, ze React generuje reprezentaci html.
Vzdy staci funkce, ktera prevede stav na HTML - neni treba psat kod pro upravu takro vygenerovaneho HTML, o vse se postara React.To funguje, pokud máte malá data. Pokud budete mít milióny položek, tak to nebude zrovna efektivní.
<div data-ov="mojeview/view">
Counter:
<span data-ov="counter"><strong data-ov=".num">1</strong> <span data-ov=".unit">meter</span></span>
</div>
JS:
var model = oswin.model({
url: { get: '/some/url' },
data: { // Udava strukturu dat modelu a vychozi hodnoty
counter: {
num: 3,
unit: 'meters'
}
},
members: {
ctor: function() {
console.log('This is a constructor');
},
// Tady je mozne definovat dalsi vlastni promenne a funkce modelu, etc...
}
});
var instance = model.make(); // Nova instance modelu
instance.view('mojeview'); // Automaticky si najde v DOM element oznaceny data-ov="mojeview/view"
// a navaze ostatni elementy pod nim podle jejich znacek na svoje data
instance.get(); // Nacte data z get URL
instance.data.counter.units = "potatoes"; // Zmeni data. Zmena se automaticky projevi i v DOM
Model má spoustu šikovných vlastností, jako eventy (pokud uživatel změní třeba hodnotu v textovém poli, změní se automaticky i data v modelu a vyvolá se event, který může být na něco navázaný), přístup k jQuery funkcím (třeba v příkladů výše instance.$('counter.num') vrátí jQuery kolekci, která reprezentuje data.counter.num ve view, čili to je ten <strong> element), controller (opět pomocí podobných značek v HTML - nemusí se nikdy vázat ručně žádné callbacky), "kolekce" - tj. třeba vypysování různých seznamů, které jsou opět definované čistě v HTML, dále knihovna obsahuje minimalistický router a pár utilit. Má to asi 8kb gzipped.
Osobně se mi moc nezamlouvá, když musím psát HTML v JS nebo nějak vytvářet DOM z JS.
Ani mne ;) ReactJS to má vyriešené dá sa povedať pekne, ale strašne hnusne
. V podstate renderovať react šablóny na serveri je možné len pomocou node kvôli tesnej závislosti s javascriptom. Ich šablóny vyzerajú ako zápis DOM, ale nie je to zápis DOM
Nie je možné zapísať class="trieda", namiesto toho sa musí zapísať className="trieda" čo znemožňuje 1:1 mapovanie medzi atribútmi šablóny a DOM atribútmi. Ja si dovolím namiesto šetrenia pár nanosekúnd volať priamo setAttribute. V budúcnosti asi napíšem preprocesor na html s pár značkami na vloženie obsahu z kontextu, ktorý mi vygeneruje príslušný js kód a serverový renderer, ktorý mi umožní renderovať šablóny na serveri v ľubovoľnom jazyku (bez ntnosti mať node na serveri) a odosielať ich ako fallback pre crawlery, alebo browsery s vypnutým js. Keď tak nad tým rozmýšľam možno by nebolo zlé dovoliť použitie ListViewu priamo v šablóne čím by sa zredukoval duplicitný zliepací kód na serveri (fallback rendering) a u klienta.
přístup k jQuery
Inak pozor na jquery a prístup k data. V prípadoch keď používateľ môže nastaviť data je správanie jQuery dosť nebezpečné. Stačí napríklad v tomto kóde zmeniť použivateľské meno na false a hrabnuť zlým spôsobom na length a hneď všetky zoznamy userov, v ktorých sa vyskytuje užívateľ false prestanú fungovať:
$('<div data-username="false"></div>').data('username').length
Od istej doby sa v rozsiahlejších projektoch vyhýbam jQuery kde sa dá. U malých projektov kde chce klient rýchlo niečo zbúchať je mi to jedno.
Volil jsem ten přístup, že napíšu vše komplet v HTMLja to delam presne obracene, pouzivam SmartClient a vsecho co delam je JS. Jako kdybych psal pred 20 lety ve VisualBasicu
Nechcel som tam dávať to isté HTML 2x, takže sa tam má includnúť súbor podľa toho, či sa použije reactor alebo react. Asi som v prvom scripte zabudol bodku 
Tiskni
Sdílej: