diff --git a/.gitignore b/.gitignore index e9bfacb..65bafeb 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,6 @@ tmp.* .env .hugo_build.lock -/static/lib/SpaccDotWeb.Alt.min.js -/static/lib/toastui-editor-all.min.js -/static/lib/toastui-editor.min.css +/static/res/lib/SpaccDotWeb.Alt.min.js +/static/res/lib/toastui-editor-all.min.js +/static/res/lib/toastui-editor.min.css diff --git a/Scripts/Dependencies.Runtime.sh b/Scripts/Dependencies.Runtime.sh index f62ea05..7ee02f8 100755 --- a/Scripts/Dependencies.Runtime.sh +++ b/Scripts/Dependencies.Runtime.sh @@ -2,7 +2,9 @@ . "$(dirname "$(realpath "$0")")/Lib/Globals.sh" cd "${swd}/.." -cd ./static/lib +mkdir -p ./static/res/lib +cd ./static/res/lib + wget --continue "https://spaccinc.gitlab.io/SpaccDotWeb/SpaccDotWeb.Alt.min.js" wget --continue "https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js" wget --continue "https://uicdn.toast.com/editor/latest/toastui-editor.min.css" diff --git a/Scripts/Lib/Html2Markdown.js b/Scripts/Lib/Html2Markdown.js index b20a8aa..d7655fd 100644 --- a/Scripts/Lib/Html2Markdown.js +++ b/Scripts/Lib/Html2Markdown.js @@ -13,7 +13,7 @@ const markdownOptions = { const TurndownService = require('turndown'); const turndownService = (new TurndownService(markdownOptions)); -turndownService.keep(['span', 'small', 'sup', 'sub', 'dl', 'details', 'table', 'iframe', 'figure', 'video', 'audio', 'scripts']); +turndownService.keep(['span', 'small', 'sup', 'sub', 'dl', 'details', 'table', 'iframe', 'figure', 'video', 'audio', 'script', 'style']); Exp.Transform = (html) => fixFootnoteRefs(turndownService.turndown(html)); diff --git a/content/it/_index.md b/content/it/_index.md index 58f9ae3..6609e9c 100644 --- a/content/it/_index.md +++ b/content/it/_index.md @@ -13,4 +13,4 @@ Ora c'è questa lista di tutti i miei ultimissimi articoli, e pagine sfuse che h - + diff --git a/content/it/blog/2023-01-28-Problemi-Hardware-Diventano-Mentali.md b/content/it/blog/2023-01-28-Problemi-Hardware-Diventano-Mentali.md index 619c007..a67b3e3 100644 --- a/content/it/blog/2023-01-28-Problemi-Hardware-Diventano-Mentali.md +++ b/content/it/blog/2023-01-28-Problemi-Hardware-Diventano-Mentali.md @@ -34,7 +34,9 @@ Ormai, giusto **per disperazione**, ma non perché avevo capito ragionando fosse Il bello è che il giorno prima avevo fatto un controllo dei file system (ext4), sia della schedina che del mio HDD USB, ed era uscito tutto (circa) pulito, perciò avevo escluso problemi hardware a priori: "_se i file non sono corrotti..._" ho pensato. Circa nello stesso momento (il fato ha deciso che l'aiuto dovesse arrivare tardi!), comunque, una persona mi ha dato **una mano a capire** che cavolo dicessero quelle righe indecifrabili, che erano una roba tipo... + ``` Dec 27 06:32:35 kernel: [27230.964650] INFO: task kworker/2:0:21874 blocked for more than 860 seconds. diff --git a/content/it/miscellanea/Open-Source-sitoctt.md b/content/it/miscellanea/Open-Source-sitoctt.md index 92d25d7..5be4b43 100644 --- a/content/it/miscellanea/Open-Source-sitoctt.md +++ b/content/it/miscellanea/Open-Source-sitoctt.md @@ -1,9 +1,15 @@ +++ Title = "🔓️ Open Source" Categories = [ "Meta" ] -Lastmod = 2024-11-05 +Lastmod = 2024-12-08 +++ +Per quanto il sitoctt nasca principalmente con l'intento di essere un posto tutto bellino per la mia personale espressione digitale (non a caso [all'inizio si chiamava _postoctt_]({{< relref "/blog/2022-08-26-sitoctt-da-3-mesi-ad-oggi/#il-postoctt" >}})), l'ho concepito anche come bene pubblico e risorsa per tutti. + +Per garantire ciò (e perché, incidentalmente, il fatto di avere tutto così mi rende più facile la gestione tecnica), tutto il codice che fa funzionare il sito (dalla compilazione alla visualizzazione) è lasciato completamente aperto, e i contenuti vari sono di seguito dichiarati come liberi. + +## Licenze e Copyright + Tutto il contenuto presente su questo sito che ho creato io (i miei testi, media originali, e maggior parte del codice sorgente) è rilasciato sotto licenza "Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale" (CC BY-SA 4.0) ( ), una licenza libera che promuove la condivisione, e non intacca i legittimi diritti alla cultura e la collaborazione dell'umanità in generale. Sono presenti, però, anche contenuti non miei. diff --git a/content/it/miscellanea/Raccolta-Emblemi.md b/content/it/miscellanea/Raccolta-Emblemi.md index 24f90a9..8cf867e 100644 --- a/content/it/miscellanea/Raccolta-Emblemi.md +++ b/content/it/miscellanea/Raccolta-Emblemi.md @@ -1,7 +1,7 @@ +++ Title = "⚜️ Raccolta Emblemi" Categories = [ "Fritto-Misto" ] -Lastmod = 2024-12-02 +Lastmod = 2024-12-08 +++ Piastrellati sul sitoctt, così come sui siti di altre persone _che vivono nel mio computer_, ci sono queste immaginette colorate. A volte animate, a volte con qualcosa di sensato scritto dentro ed altre no, ed alcune che linkano ad altre pagine o comunque fanno qualcosa di utile. @@ -21,18 +21,18 @@ Ovviamente, ci sono sia siti che raccolgono e catalogano quantità industriali d * (11K+) _The 88x31 GIF Banner Database_: https://88x31db.com * (4K+) _The 88x31 GIF Collection_: https://cyber.dabamos.de/88x31/ * Mirror: https://www.deadnet.se/88x31/ -* (31K+) _THE 88×31 ARCHIVE_: https://hellnet.work/8831/ +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/hellnet_8831.gif) (31K+) _THE 88×31 ARCHIVE_: https://hellnet.work/8831/ * _88x31 Button Library_: https://lazerdart.uk/buttons * (27K+) _The 88x31 GIF Collection_: http://www.textfiles.com/underconstruction/88x31/ (attenzione: pagina pesantissima) * _kate's 88x31 button archive_: https://88x31.kate.pet — https://github.com/ktwrd/88x31 * ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/the-largest-88x31-collection-2.png) _the largest 88x31 collection on the internet_: https://capstasher.neocities.org/88x31collection-page1 * _A.N. Lucas's 88x31 button Collection_: https://anlucas.neocities.org/88x31Buttons — https://news.ycombinator.com/item?id=33793273 -* https://winter.entities.org.uk/buttons/ -* _Fustilugz's Button Collection_: https://fustilugz.neocities.org -* _My 88x31 Button Store_: https://88x31.nekoweb.org/ -* _88x31 (Now) Buttons_: https://dannarchy.com/now -* _Neko Buttons_: https://buttons.nekoweb.org -* _DOKODEMO Buttons_: https://dokode.moe/buttons +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/winter-self.png) https://winter.entities.org.uk/buttons/ +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/fustilugz-ME%20BUT%20SMALLer.gif) _Fustilugz's Button Collection_: https://fustilugz.neocities.org +* _My 88x31 Button Store_: https://88x31.nekoweb.org +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/dannarchy-d_now.gif) _88x31 (Now) Buttons_: https://dannarchy.com/now +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/nekobuttons.png) _Neko Buttons_: https://buttons.nekoweb.org +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/dokodemobutton3.gif) _DOKODEMO Buttons_: https://dokode.moe/buttons Ci sono anche strumenti di creazione e simili risorse, a proposito: @@ -42,8 +42,8 @@ Ci sono anche strumenti di creazione e simili risorse, a proposito: Ancora altre informazioni e risorse sull'argomento: -* _How2 - 88x31 Buttons | BMH Online_: https://bmh.neocities.org/how2/buttons — spiega ancora cose sui bottoni 88x31 +* ![]({{< assetsRoot >}}/Media/Buttons/88x31/Sites/bmhonline_button2.png) _How2 - 88x31 Buttons | BMH Online_: https://bmh.neocities.org/how2/buttons — spiega ancora cose sui bottoni 88x31 * — https://breq.dev/projects/eightyeightthirtyone — servizio che fa crawling di tutti i possibili siti seguendo i link dei bottoni 88x31, mostrando un grafico a rami -Consiglio: Gli emblemi usati sul mio sito sono tutti ri-hostati da me, e nel processo di ricaricarli mi assicuro di comprimerli con i migliori algoritmi lossless in circolazione, così che occupino il minor spazio possibile pur senza perdere alcun grado di qualità dell'immagine. Consiglio a tutti gli altri di adoperarsi per fare lo stesso, ci sono solo vantaggi. +Consiglio: Gli emblemi usati sul mio sito sono tutti ri-hostati da me, e nel processo di ricaricarli mi assicuro di comprimerli con i migliori algoritmi lossless in circolazione, qualora sia possibile (ad esempio, per i file PNG), così che occupino il minor spazio possibile pur senza perdere alcun grado di qualità dell'immagine. Consiglio a tutti gli altri di adoperarsi per fare lo stesso, ci sono solo vantaggi. diff --git a/content/it/miscellanea/Raccolta-Videogiochi/Minesweeper.md b/content/it/miscellanea/Raccolta-Videogiochi/Minesweeper.md index a216846..dd35abf 100644 --- a/content/it/miscellanea/Raccolta-Videogiochi/Minesweeper.md +++ b/content/it/miscellanea/Raccolta-Videogiochi/Minesweeper.md @@ -54,7 +54,8 @@ Accumulando quella singola o doppia partita giornaliera nelle settimane, nei mes Parafrasando ciò che scrive [un autore di PCGamesN](https://www.pcgamesn.com/minesweeper/get-free): **Campo minato è una delle forme di escapismo digitale più pure** di cui si possa fare esperienza, perché è la dimostrazione pratica di come un gioco, per essere profondamente immersivo, non ha un vitale bisogno di un _open world_ dettagliato, narrativa elaborata, o personaggi a cui affezionarsi. -

...Scusa, ci sono lavori in corso su questa pagina, sto piazzando le mine in giro per trollare le prossime persone che verranno qui a leggere e inciamperanno su qualche parola... se nel frattempo vuoi imparare a giocare leggiti [Wikipedia](https://it.wikipedia.org/Campo_minato_(videogioco)), vai va...

+...Scusa, ci sono lavori in corso su questa pagina, sto piazzando le mine in giro per trollare le prossime persone che verranno qui a leggere e inciamperanno su qualche parola... se nel frattempo vuoi imparare a giocare leggiti [Wikipedia](https://it.wikipedia.org/wiki/Campo_minato_(videogioco)), vai va... +{ style="background: #fde; padding: 0.5em;" } {{< embed ouCe9OTmTUs youtube "16:9" "LGR — Minesweeper is Hardcore Gaming" >}} @@ -109,4 +110,4 @@ Sto lavorando per rendere il gioco personalizzabile, per il momento si può solo [^Windows_Vista_and_Windows_7]: [^PageBg]: **Sfondo della Pagina**: [Fonte](https://www.techradar.com/news/gaming/the-most-successful-game-ever-a-history-of-minesweeper-596504) - + diff --git a/content/it/miscellanea/sitoctt-Internals.md b/content/it/miscellanea/sitoctt-Internals.md new file mode 100644 index 0000000..4314461 --- /dev/null +++ b/content/it/miscellanea/sitoctt-Internals.md @@ -0,0 +1,39 @@ ++++ +Title = "⚙️ sitoctt Internals" +Categories = [ "Meta" ] +Lastmod = 2024-12-08 ++++ + +Negli interminabili anni della sua esistenza, il sitoctt si è evoluto e continua ad evolversi, ottenendo funzionalità epiche ed in generale un'aura di magia... e chi vuole diventare come me potrebbe voler iniziare dal creare un proprio sito prendendo anche il mio come ispirazione. + +Per questo, credo sia carino tenere una raccolta dettagliata delle varie specialità tecniche del sito, illustrate per bene; magari spiegate in modo che siano comprensibili anche a coloro che hanno un po' di curiosità ma non sono addetti ai lavori. (Il tutto, poi, sarebbe utile persino a me per tenere nota di dettagli mistissimi, quindi non ho di che indugiare.) + +Il sitoctt è in ogni caso completamente libero e open-source; le note sul copyright, le licenze e la struttura completa dei sorgenti sono descritte alla pagina "[🔓️ Open Source]({{< relref "/miscellanea/Open-Source-sitoctt/" >}})"! + +_...In costruzione..._ + +## Generale + +Il sito è un cosidetto "sito statico", cioè una collezione di file HTML e risorse connesse senza un programma di backend server con logica e database. Questo comporta una manutenzione molto bassa e la possibilità di ospitare il sito praticamente ovunque, pure gratuitamente, nonché di distribuirlo senza troppe difficoltà in diversi formati. + +Nel mio caso, come ormai è usanza comune, le pagine statiche del sito sono compilate con un "generatore". Da maggio 2022 ad agosto 2024 ho tenuto il sito sotto _staticoso_, il mio generatore creato appositamente e poi deprecato, poiché il codice era diventato troppo [_spaghetti_](https://it.wikipedia.org/wiki/Spaghetti_code); da agosto 2024 ho migrato il sito ad [_Hugo_](https://gohugo.io). + +In passato, i template/temi del sito erano 3 molto semplici, non tecnicamente separabili da staticoso e creati da zero; dalla migrazione ad Hugo viene usato un tema personalizzato (con lievi modifiche a colori e layout) creato a partire da [_Ananke_](https://themes.gohugo.io/themes/gohugo-theme-ananke/), uno dei più consigliati per chi vuole fare modifiche. + +## Ricerca + +Il sitoctt integra un campo di ricerca testuale, con il quale si può raggiungere immediatamente qualsiasi altra pagina del sito. È implementato con due modalità: + +* **JavaScript (locale)**: Al caricamento di ogni pagina, viene caricato un indice (quello per la lingua corrente, visto che sono separati per tenere alte le prestazioni) con i metadati di tutte le pagine del sito, che viene poi gestito dallo [script `site-search.js`](https://gitlab.com/octtspacc/sitoctt/-/blob/sitoctt-next/static/res/site-search.js) e il template [`search-applet.html`](https://gitlab.com/octtspacc/sitoctt/-/blob/sitoctt-next/layouts/partials/search-applet.html); l'ho costruito prendendo il codice di ricerca dal tema [_Blowfish_](https://themes.gohugo.io/themes/blowfish/) per Hugo. (L'indice è in realtà un file JavaScript che inizializza un oggetto globale JSON, e non un file JSON puro, cosa che permette alla ricerca di funzionare anche quando il sito è navigato da file locali; è generato dal [template `index.searchindex.js`](https://gitlab.com/octtspacc/sitoctt/-/blob/sitoctt-next/layouts/index.searchindex.js).) +* **Fallback**: Nel caso JavaScript non possa essere eseguito nel browser, la casella di ricerca funziona in modo più classico e si appoggia alla [mia istanza YaCy](https://yacy.spacc.eu.org), che funziona esattamente come un motore di ricerca web normale (Google, DuckDuckGo, ecc...) ma indicizza meglio tutte le mie pagine (e quindi non sta solo per bellezza). + +## Multilingua + +La gestione di lingue multiple per le varie pagine del sito è gestita con funzionalità integrate in Hugo. + +Quasi tutte le pagine e i post sono tradotti automaticamente dall'italiano ad altre lingue, nella mia speranza di rendere il sito un pochino più utile, perché potenzialmente individuabile da più persone tramite motori di ricerca; questo lo faccio con [uno script Python creato proprio per questo](https://gitlab.com/octtspacc/sitoctt/-/blob/sitoctt-next/Scripts/Translate/Main.py), che sfrutta _Google Traduttore_ attraverso [lo script/libreria _Translate Shell_](https://memos.octt.eu.org/m/aC95aGEzJi7DvU2teM3eos). + +## Altro? + +Non lo so. Non sperate mi venga in mente altro da aggiungere dal nulla; piuttosto, lasciate un commento su questa pagina se qualcosa vi incuriosisce e volete maggiori dettagli, spiegati al di là del codice... + diff --git a/layouts/partials/ImgButton.html b/layouts/partials/ImgButton.html index 63c601c..bfab5f2 100644 --- a/layouts/partials/ImgButton.html +++ b/layouts/partials/ImgButton.html @@ -22,6 +22,9 @@ {{- $html := $img -}} {{- if $extended -}} {{- $html = (printf "%s %s" $img .alt) | safeHTML -}} + {{- if .oc -}} + {{- $html = (printf "%s [OC]" $html) | safeHTML -}} + {{- end -}} {{- end -}} {{- if .href -}} {{- $html = (partial "anchor.html" (dict diff --git a/layouts/partials/search-applet.html b/layouts/partials/search-applet.html index 5e81f41..46e2a29 100644 --- a/layouts/partials/search-applet.html +++ b/layouts/partials/search-applet.html @@ -35,4 +35,4 @@ - + diff --git a/static/MinesweeperEmbed.js b/static/res/MinesweeperEmbed.js similarity index 100% rename from static/MinesweeperEmbed.js rename to static/res/MinesweeperEmbed.js diff --git a/static/ajax-navigation.js b/static/res/ajax-navigation.js similarity index 65% rename from static/ajax-navigation.js rename to static/res/ajax-navigation.js index bf02aa8..d3e38ac 100644 --- a/static/ajax-navigation.js +++ b/static/res/ajax-navigation.js @@ -6,7 +6,7 @@ window.SiteInitOnLoad = []; var oldUrl = null; // TODO before deploying this: handle page-specific scripts (comments, etc...) -//if (location.protocol === 'file:') { +//if (location.protocol === 'file:' /* && !isSingleFileBuild */) { window.PatchAjaxNavigationAnchor = Void; return; // HTTP requests don't work on local files with default browser configuration //} @@ -22,7 +22,7 @@ function initPage () { } oldUrl = location.href; var langToken = ('/' + document.documentElement.lang + '/'); - var baseHref = (location.href.split(langToken)[0] + langToken); + var baseHref = (location.href.split(langToken)[0] + langToken); // we reload page on language change due to search index differences Array.from(document.querySelectorAll('a[href]')).filter(function(anchorEl){ //var tokens = href.split('/' + document.documentElement.lang + '/'); //if (location.href.slice(0, href[0])) @@ -31,26 +31,34 @@ function initPage () { }).forEach(PatchAjaxNavigationAnchor); } -function loadContent (url, push) { - function useFallback () { - location.href = url; +function setNewPage (html, pushUrl, fallbackTimeout) { + var domNew = (new DOMParser).parseFromString(html, 'text/html'); + if (pushUrl) { + history.pushState(null, null, pushUrl); } - var fallbackTimeout = setTimeout(useFallback, 3000); - fetch(url) - .then(function(request){ return request.text(); }) - .then(function(html){ - var domNew = (new DOMParser).parseFromString(html, 'text/html'); - if (push) { - history.pushState(null, null, url); - } - document.head.innerHTML = domNew.head.innerHTML; - document.body.innerHTML = domNew.body.innerHTML; - initPage(); - clearTimeout(fallbackTimeout); - }).catch(function(err){ - console.error(err); - useFallback(); - }); + document.head.innerHTML = domNew.head.innerHTML; + document.body.innerHTML = domNew.body.innerHTML; + initPage(); + clearTimeout(fallbackTimeout); +} + +function loadContent (url, push) { + //if (isSingleFileBuild) { // TODO + // setNewPage(html, (push && url), fallbackTimeout); + //} else { + function useFallback () { + location.href = url; + } + var fallbackTimeout = setTimeout(useFallback, 3000); + fetch(url) + .then(function(request){ return request.text(); }) + .then(function(html){ + setNewPage(html, (push && url), fallbackTimeout); + }).catch(function(err){ + console.error(err); + useFallback(); + }); + //} } window.PatchAjaxNavigationAnchor = (function PatchAjaxNavigationAnchor (anchorEl) { @@ -64,7 +72,11 @@ window.PatchAjaxNavigationAnchor = (function PatchAjaxNavigationAnchor (anchorEl } }); -window.addEventListener('DOMContentLoaded', initPage); +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initPage); +} else { + initPage(); +} window.addEventListener('popstate', (function(stateEvent){ if (toPathUrl(location.href) !== toPathUrl(oldUrl)) { diff --git a/static/analytics.js b/static/res/analytics.js similarity index 100% rename from static/analytics.js rename to static/res/analytics.js diff --git a/static/desinenze-blink.css b/static/res/desinenze-blink.css similarity index 100% rename from static/desinenze-blink.css rename to static/res/desinenze-blink.css diff --git a/static/lib/forge.min.js b/static/res/lib/forge.min.js similarity index 100% rename from static/lib/forge.min.js rename to static/res/lib/forge.min.js diff --git a/static/lib/fuse.min.js b/static/res/lib/fuse.min.js similarity index 100% rename from static/lib/fuse.min.js rename to static/res/lib/fuse.min.js diff --git a/static/local-file-tweaks.js b/static/res/local-file-tweaks.js similarity index 100% rename from static/local-file-tweaks.js rename to static/res/local-file-tweaks.js diff --git a/static/markdown-editor.js b/static/res/markdown-editor.js similarity index 100% rename from static/markdown-editor.js rename to static/res/markdown-editor.js diff --git a/static/octt-runtime.js b/static/res/octt-runtime.js similarity index 100% rename from static/octt-runtime.js rename to static/res/octt-runtime.js diff --git a/static/site-search.js b/static/res/site-search.js similarity index 100% rename from static/site-search.js rename to static/res/site-search.js diff --git a/themes/ananke/layouts/partials/site-scripts.html b/themes/ananke/layouts/partials/site-scripts.html index bb6ca42..705a981 100644 --- a/themes/ananke/layouts/partials/site-scripts.html +++ b/themes/ananke/layouts/partials/site-scripts.html @@ -8,13 +8,13 @@ window.Void = (function Void(){}); {{- end -}} window.sitoctt.localStorage = (function localStorage(key, value){ return SpaccDotWeb.LocalStorage('org.eu.octt.sitoctt', key, value); }); - - + + - - - + + + {{ if hugo.IsProduction }} - + {{ end }} - +