Który fotel najlepszy?
1,2
3,4
I napisz w komentarzu dlaczego?
trzy regulacje zagłówka, wysokość oparcia pleców, opór odcinka lędźwiowego, odchylenie oparcia pleców z blokadą, siedzisko przód-tył, podnóżek, pięć regulacji podłokietnika, w tym składanie go, składanie całego fotela na pół, żeby np. móc schować pod biurko.
ma regulowany odcinek lędźwiowy, przód-tył siedziska, odchylenie, podłokietniki, sporo regulacji, gorsza regulacja zagłówka, brak podnóżka
ma regulowany odcinek lędźwiowy, dobrze regulowany zagłówek, podłokietniki, przód-tył siedziska ale brak odchylenia oparcia, brak podnóżka
podobne do Ergosolid całe plecy, zagłówek, regulacje plecy zagłówek, kauczukowe kółka, aluminium, nawet ładne podłokietniki, ale brak regulacji przód-tył siedziska, brak podnóżka
To że podłokietniki wychodzą od tyłu, a nie od dołu, to mi się podoba wizualnie.
Ma dużo regulacji.
Podnóżek też dobra rzecz.
Zastanawia mnie odchylenie i zagłówek.
Zagłówka nie da się przód-tył regulować, a jest dość płasko względem oparcia, niektóry fotele mają bardziej wyprofilowane oparcie, i wtedy zagłówek jest bardziej do przodu.
Nie wiem czy przy odchyleniu, zagłówek będzie wystarczająco wysunięty do przodu, żeby trzymać głowę, gdy się patrzy na ekran.
Ewentualnie mocno pod biurko wjadę fotelem, i ekran podreguluję do góry i pochylę w swoją stronę, bo da się tak moim monitorem.
L’ultimissimo miglioramento che ho in ogni caso poi fatto ad #MBViewer è stato l’aggiunta di una funzione per importare codice #CSS e #JavaScript, per modificare come i post possono essere visualizzati. Entrambi funzionano allo stesso modo, con i relativi parametri URL che accettano sia #URL esterni che data URI. Niente di particolare per gli stili, semplicemente importo nella pagina la qualunque cosa venga data lì, ma per gli #userscripts è stato leggermente più #complicato. 😕️
Il punto sta nel voler evitare che #script essenzialmente non affidabili siano iniettati nel contesto della pagina semplicemente da URL, perché potrebbero fare tante cosine cattive; prima fra tutte, rubare #dati dall’archiviazione del #browser del mio dominio, cosa che è un #problema, perché gli utenti inesperti che aprono la app da #link non andranno a cercare di investigare cosa accade dietro le quinte (e, molto probabilmente, non lo farei realisticamente nemmeno io, seguendo la logica del “i miei siti sono miei e li conosco, sui siti altrui ho le protezioni del browser attive“). E quindi inizio a scendere in un rabbithole… ☠️
#Iframe? Hmm… non so, non è il caso, sarebbero insicuri, ci sono alcuni modi in cui una pagina in frame può fare robe fastidiose. Non può essere assolutamente un’idea, proprio mai (foreshadowing). 🪟️
Trovo un bel po’ di #librerie vecchie che ricompilano codice #JS per rimuovere pericoli, o lo analizzano preventivamente per la presenza di operazioni dannose così che possa non essere mai eseguito… praticamente tutte abbandonate, qualcuna esplicitamente dichiarata insicura e non patchata, e per qualcun’altra lo possiamo dare per scontato. 🐛️
Forse questa libreria più recente, jailed, che sfrutta un iframe assieme ad un Web Worker per creare una sandbox forte e bloccare tutte le #API eccetto alcune che si decidono… No, l’ho provata e non va bene, non si riescono a passare alla sandbox oggetti complessi, tra cui i costruttori, è impossibile far funzionare API tipo quella del DOM. 🚧️
Sarebbe stata un’idea usare qualche reimplementazione del #DOM per NodeJS tramite browserify, tipo Cheerio, ma farla anche solo girare lì dentro è un altro casino allucinante. 🥴️
WASM tecnicamente è una #sandbox a sua volta, e non accede alle API del browser se non con codice colla, quindi magari… teoricamente ok, ma nella pratica non ho trovato nessuna soluzione già bella e pronta che potessi usare per questo specifico scopo. 🕳️
La #pazzia: PyScript… sarebbe quasi già pronto, ma avrei dovuto comunque modificarlo per bloccare tutte le API insicure (rimuovere #codice), e poi richiede 15+ MB di dipendenze di runtime… non ideale. 🗿️
Alla fine ci ho pensato meglio, e sono arrivata alla conclusione che è abbastanza sicuro far girare gli script in un iframe con proprietà src="data:[...]" e sandbox="allow-scripts" (che significa, “blocca tutte le proprietà sensibili eccetto gli script”)… voglio dire, nel visualizzare il contenuto dei siti, già permetto eventuali iframe provenienti dai post, e quelli teoricamente possono già fare quello che vogliono eccetto accedere ai dati della finestra root. Nella pratica, i programmini degli utenti quindi hanno accesso a (quasi) l’intera API JavaScript senza poter fare cose bruttissime. 🎉️
https://octospacc.altervista.org/wp-content/uploads/2024/02/image.pngEcco un esempio di tutto, alla fine: questo URL carica il mio MicroBlog, importa un foglio di #stile che mette questo font buffo, e uno script che colora le parole dei #messaggi in base a come si ripetono man mano (inutile, ma serve giusto per dare idea delle potenzialità)… <a href="https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org|platform=wordpress.org|includeStyle=data:text/css;utf8,@import%20url('https://fonts.googleapis.com/css2?family=Single+Day&display=swap');.MbPost{font-family:'Single%20Day',cursive;}|includeScript=data:text/javascript;utf8,function%20MbViewerFunction(data){const%20dom=new%20DOMParser().parseFromString(data.html,'text/html').body;const%20tokens=dom.textContent.split('%20');const%20words={};for(const%20i%20in%20tokens){const%20word%20=%20tokens[i];if(words[word])words[word]++;else%20words[word]=1;tokens[i]=%60%3Cspan%20style='color:${atob('Iw==')}${[0,'b58900','cb4b16','dc322f','d33682','6c71c4','268bd2','2aa198','859900'][words[word]]};'%3E${word}%3C/span%3E%60}data.html=tokens.join('%20').replaceAll('nn','%3Cbr%3E');for(const%20img%20of%20dom.querySelectorAll('img'))data.html+=img.outerHTML;MbViewerReturn(data)}">https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org|platform=wordpress.org|includeStyle=[...]|includeScript=[...]</a> (il link con tutta quella roba messa inline è una stringa di quasi 1 KB!). Userò tutta la cosa per rendere gli hashtag nel testo meno intrusivi per il mio sito anche lì, oltre che sul dominio originale. 👋️Finisco con dati ancora più tecnici, per chi non ha una vita: con questo #design, ogni #userscript deve provvedere ad esporre una funzione che, tramite la Channel Messaging API, viene richiamata dalla #app per ogni messaggio appena questo viene aggiunto al documento visibile; questa funzione riceve dati utili (per ora, solo l’HTML del contenuto; oltre a dati come l’id del messaggio nel flusso, che non sono granché utili all’utente ma devono essere restituiti alla app) e può rimandare nuovi dati indietro richiamando una funzione che è invece l’applicazione ad esporre allo script. Tutto questo ambaradan permetterebbe agli script di effettuare anche operazioni asincrone, comunque, non per forza di dover agire immediatamente alla chiamata. 🤓️
Z ostatniej chwili!
Jutro, tj. w środę 10.1.2024 o godz. 17:00 w Miejskim Domu Kultury „Koszutka” w Katowicach przy ul. Grażyńskiego 47 zagości Grzegorz Chudy malarz akwarelista, badacz kultury i historii Górnego Śląska, który z inspiracji córki oddemonizował beboka, postać z górnośląskiej demonologii, dotąd służącą do dyscyplinowania nieposłusznych dzieci. Doszło do tego, że beboki w sympatycznej wersji zaczęto stawiać w różnych miejscach niczym krasnale we Wrocławiu.
Moje ulubione wcielenie tego stwora, choć go jeszcze nie widziałam, to „Jurek” w dzielnicy Bogucice wspinający się po ścianie szkoły podstawowej, w której uczył się Jerzy Kukuczka.
"In this #paper, we introduce new #algorithms for #CSS selector matching, layout solving, and font rendering, which represent key components for a fast layout engine. Evaluation on popular sites shows speedups as high as 80x. We also formulate the layout problem with attribute grammars, enabling us to not only parallelize our algorithm but prove that it computes in O(log) time and without reflow."
Definitely the start of Winter now, wet and grey, but a good backdrop for the coloured lights of the Winter #DOM in #Hamburg which the children love. #Schmalzkuchen
@ada Quest browser 30.1 was shipped with experimental support for #WebXR's transient-pointer.
Go to chrome://flags, enable WebXR transient-pointer support and reboot to get the feature.
One more crippled paywall implementation, this time forbes.pl. Content is hidden and turning off #JavaScript doesn't help. Moreover, when inspecting #DOM elements, text is not there. But if you simply look at raw #HTML returned from the server... At least they put 40 blank lines between each <p> to hide it ;-)