journalctl -u micro
93 subscribers
2.19K photos
210 videos
287 files
1.45K links
Esperienze e consigli di uno sviluppatore tech−unenthusiast

creation — 2021-04-29
owner — @Microeinstein

networks
@sigma_hub Σ
@ageiroumena
Download Telegram
Per chi non conoscesse,
un'estensione che si appoggia a ublock origin per "cliccare" appositamente tutti gli ads bloccati (e fare data poisoning)
https://adnauseam.io/

Un altra invece impedisce alle pagine di sapere se avete cambiato scheda (non ci sono release comode)
https://github.com/marvinschopf/disable-page-visibility-api

Grazie Mike
Nel frattempo Gemini scansionerà tutti i vostri messaggi attraverso le notifiche, anche se l'avete disattivato.

Tuttavia come è stato fatto notare nei commenti, anche se bloccate tutto dal vostro lato rimarrete comunque vulnerabili attraverso le notifiche delle altre persone...

https://www.youtube.com/watch?v=-CAfVOujQIM
🤮3👍1
"tf u mean tomorrow"
Parametri AES di SQLyog per cifrare le password salvate su disco

kind  aes128 ctr
key 2923BE84E16CD6AE529049F1C9BB218F
iv B3A6DB3C870C3E99245E0D1C06B747DE


Link comodo CyberChef

Non sono definite nei sorgenti, quindi ho scaricato l'eseguibile ufficiale community e sono andato di Okteta, poi Ghidra cercando quel table64 e guardando i valori adiacenti

https://github.com/webyog/sqlyog-community/blob/e30fffa4b7d28528ef5e7aecc794d15f55ae1dbd/src/CommonHelper.cpp#L78

https://github.com/webyog/sqlyog-community/blob/master/src/CommonHelper.cpp#L4426
🔥1
journalctl -u micro
Un linguaggio, senza gli strumenti adatti ai suoi scopi [e ad un network effect], è un linguaggio morto. Oltre • alle scelte di design • al lexer • al parser • al modello • all'interprete • e alla libreria standard, toccherà scrivere anche • una documentazione…
In pratica avevo iniziato a sviluppare questo nuovo linguaggio in LuaJIT. Stavo scrivendo a mano
sia un lexer - tramite regex,
sia un parser - in modalità miste LL per le keyword e LR per le espressioni infisse di cui non è possibile conoscere il termine in anticipo (1 + 2 + 3 ...?),
sia un modello e interprete.

Nel frattempo ho provato a sviluppare una prima estensione VSCode per supportare il linguaggio, ma richiedeva una grammatica tutta sua (sintassi TextMate), allora ho realizzato che tutta questa scrittura manuale non poteva scalare.

🧵
💔2
journalctl -u micro
In pratica avevo iniziato a sviluppare questo nuovo linguaggio in LuaJIT. Stavo scrivendo a mano sia un lexer - tramite regex, sia un parser - in modalità miste LL per le keyword e LR per le espressioni infisse di cui non è possibile conoscere il termine in…
Peccato che non esistano generatori di lexer & parser per Lua (tipo ANTLR4, lex, yacc - no non userò PEG / packrat)... quindi mi sono inventato di scriverne uno io.

Mi sono dovuto inventare anche una sintassi per le stesse grammatiche, in modo da esprimere derivabili, terminali, stringhe custom (così da non ripetere gli stessi id 913 volte) ecc

🧵
🗿1
journalctl -u micro
Peccato che non esistano generatori di lexer & parser per Lua (tipo ANTLR4, lex, yacc - no non userò PEG / packrat)... quindi mi sono inventato di scriverne uno io. Mi sono dovuto inventare anche una sintassi per le stesse grammatiche, in modo da esprimere…
Poi mi sono detto
"proviamo ad eseguire un benchmark". Ho misurato il tempo di 1000 parsing della stessa grammatica, e solo il parsing.

4 secondi

Hmm, mi sembra un po' tanto per una grammatica così piccola. Non oso immaginare come sarà il parsing di 1000 file sorgenti con un linguaggio più maturo. Facciamo un po' di profiling...

30% solo ad eseguire il mega-regex tramite lrexlib/pcre2 che uso come tokenizer. Ho sperimentato in vari modi ma non c'era verso di ridurne il tempo.

Allora mi sono messo a fare il mio engine di regex perl-compatible, in LuaJIT, con blackjack e squillo di lusso. Essendoci una compilazione JIT, posso trasformare il regex richiesto in codice Lua, che sarà a sua volta automaticamente trasformato in assembly per quell'architettura, e così ho fatto.

🧵
journalctl -u micro
Poi mi sono detto "proviamo ad eseguire un benchmark". Ho misurato il tempo di 1000 parsing della stessa grammatica, e solo il parsing. 4 secondi Hmm, mi sembra un po' tanto per una grammatica così piccola. Non oso immaginare come sarà il parsing di 1000…
Ecco i tempi di benchmark + profiling
1. con lrexlib

2. con la mia libreria poco ottimizzata... ma non mi sono dato per vinto

3. salvati 9sec facendo il backtracking su variabili dedicate e non un array condiviso stile push/pop

4. salvati altri 9sec evitando il lookup degli oggetti (perché sì, in Lua sono tutti dizionari)

🧵
journalctl -u micro
Ecco i tempi di benchmark + profiling 1. con lrexlib 2. con la mia libreria poco ottimizzata... ma non mi sono dato per vinto 3. salvati 9sec facendo il backtracking su variabili dedicate e non un array condiviso stile push/pop 4. salvati altri 9sec evitando…
Mancano alcune funzionalità quali \b àncora word-boundary, \1 backreference e sostituzioni di testo, ma il resto c'è e potrei ottimizzare ancora (facendo ad esempio una fattorizzazione a sinistra e un mapping caratteri-gruppo alternativo).
journalctl -u micro
il mio engine di regex perl-compatible, in LuaJIT
__gen_xvvcgcatupyuxclj430.lua
12.9 KB
Questo il codice Lua generato dal seguente mega-regex

 (?<SKIP>[\ \t\r\n]+|//.*$)
|(?<derivable>[a-z_][0-9a-z_]*)
|(?<terminal>[A-Z_][0-9A-Z_]*)
|(?<string>"(?<_dquot>(?:[^\\\n"]+|\\.)*)"|'(?<_squot>(?:[^\\\n']+|\\.)*)')
|(?<dlabel>\#[\ \t]+(?<_dlbl>[A-Za-z_][0-9A-Za-z_]*)[\ \t]*$)
|(?<action>\{[\ \t]*(?<_act>[A-Za-z_][0-9A-Za-z_]*)[\ \t]*\})
|(?<symbols>[:;|()\[\]{}*+?!"'\-<=>\\/%^$.@&~#]+)
|(?<number>[0-9]*)
😱2
journalctl -u micro
__gen_xvvcgcatupyuxclj430.lua
PS. Ho usato dei bitmap a 32bit perché... in Lua tutto è float... e nonostante LuaJIT supporti il ctype unsigned long long (64bit) questo va comunque più lento
Cage — un compositor Wayland che gira su X11 (l'opposto di xwayland)
https://www.hjdskes.nl/projects/cage/

Con questo è possibile eseguire Waydroid senza wayland e senza problemi
🔥1