Skip to content

Commit

Permalink
Nuova pagina sitoctt internals, Fix misti di pagine, Ristrutturazione…
Browse files Browse the repository at this point in the history
… file
  • Loading branch information
octospacc committed Dec 8, 2024
1 parent c509fa6 commit 01e4470
Show file tree
Hide file tree
Showing 22 changed files with 114 additions and 49 deletions.
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 3 additions & 1 deletion Scripts/Dependencies.Runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion Scripts/Lib/Html2Markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -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));

Expand Down
2 changes: 1 addition & 1 deletion content/it/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ Ora c'è questa lista di tutti i miei ultimissimi articoli, e pagine sfuse che h

<!-- (Lavori in corso per ancora qualche giorno, quindi forse link rotti e pagine sformate, mi dispiace!!!) -->

<link rel="stylesheet" href="/desinenze-blink.css"/>
<link rel="stylesheet" href="/res/desinenze-blink.css"/>
Original file line number Diff line number Diff line change
Expand Up @@ -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...

<style>
.highlight.plaintext:first-of-type { max-height: 80vh; }
</style>

```
Dec 27 06:32:35 kernel: [27230.964650] INFO: task kworker/2:0:21874 blocked for more than 860 seconds.
Expand Down
8 changes: 7 additions & 1 deletion content/it/miscellanea/Open-Source-sitoctt.md
Original file line number Diff line number Diff line change
@@ -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 <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.it?ref=chooser-v1&title=%E2%9C%A8sitoctt%E2%9C%A8&href=https://sitoctt.octt.eu.org&creator=OctoSpacc" rel="noopener" target="_blank">"Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale" (CC BY-SA 4.0) (<span class="CCIcons"><img class="mw1" src="{{< assetsRoot >}}/Media/Icons/CC/CC.svg"/> <img class="mw1" src="{{< assetsRoot >}}/Media/Icons/CC/BY.svg"/> <img class="mw1" src="{{< assetsRoot >}}/Media/Icons/CC/SA.svg"/>)</span></a>, 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.
Expand Down
20 changes: 10 additions & 10 deletions content/it/miscellanea/Raccolta-Emblemi.md
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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.pethttps://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/88x31Buttonshttps://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:

Expand All @@ -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://eightyeightthirty.one>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.

5 changes: 3 additions & 2 deletions content/it/miscellanea/Raccolta-Videogiochi/Minesweeper.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<p markdown="1" style="background: #fde; padding: 0.5em;">...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...</p>
...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" >}}

Expand Down Expand Up @@ -109,4 +110,4 @@ Sto lavorando per rendere il gioco personalizzabile, per il momento si può solo
[^Windows_Vista_and_Windows_7]: <https://en.wikipedia.org/wiki/Microsoft_Minesweeper#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)

<script src="/MinesweeperEmbed.js"></script>
<script src="/res/MinesweeperEmbed.js"></script>
39 changes: 39 additions & 0 deletions content/it/miscellanea/sitoctt-Internals.md
Original file line number Diff line number Diff line change
@@ -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...

3 changes: 3 additions & 0 deletions layouts/partials/ImgButton.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@
{{- $html := $img -}}
{{- if $extended -}}
{{- $html = (printf "%s <span>%s</span>" $img .alt) | safeHTML -}}
{{- if .oc -}}
{{- $html = (printf "%s [OC]" $html) | safeHTML -}}
{{- end -}}
{{- end -}}
{{- if .href -}}
{{- $html = (partial "anchor.html" (dict
Expand Down
2 changes: 1 addition & 1 deletion layouts/partials/search-applet.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@
</section>
</div>
</div>
<script src="/site-search.js"></script>
<script src="/res/site-search.js"></script>
File renamed without changes.
56 changes: 34 additions & 22 deletions static/ajax-navigation.js → static/res/ajax-navigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
//}
Expand All @@ -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]))
Expand All @@ -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) {
Expand All @@ -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)) {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
14 changes: 7 additions & 7 deletions themes/ananke/layouts/partials/site-scripts.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
{{- end -}}
window.sitoctt.localStorage = (function localStorage(key, value){ return SpaccDotWeb.LocalStorage('org.eu.octt.sitoctt', key, value); });
</script>
<script src="/ajax-navigation.js"></script>
<script src="/local-file-tweaks.js"></script>
<script src="/res/ajax-navigation.js"></script>
<script src="/res/local-file-tweaks.js"></script>
<script src="/{{ .Lang }}/searchindex.js"></script>
<script src="/lib/fuse.min.js"></script>
<script src="/lib/SpaccDotWeb.Alt.min.js"></script>
<script src="/octt-runtime.js"></script>
<script src="/res/lib/fuse.min.js"></script>
<script src="/res/lib/SpaccDotWeb.Alt.min.js"></script>
<script src="/res/octt-runtime.js"></script>
{{ if hugo.IsProduction }}
<script src="/analytics.js"></script>
<script src="/res/analytics.js"></script>
{{ end }}
<script src="/markdown-editor.js"></script>
<script src="/res/markdown-editor.js"></script>

0 comments on commit 01e4470

Please sign in to comment.