
Amiga Unicorn
7
Online53
Users515
Topics6.2k
PostsPosts
-
Su Judith Butler (e sul perche' il decostruttivismo fa male). -
Odifreddi e i politici MAGAuna semplice notte dei lunghi coltelli. I groyper accusano i maga come Kirk di essere troppo moderati e dialoganti.
-
Odifreddi e i politici MAGARoottobeetonale said in Odifreddi e i politici MAGA:
Un professore che ho conosciuto ai tempi andati, ex-68ino. Mi diceva che da giovane non si menavano coi fasci ma si menavano con chi non era abbastanza di sinistra.
Ha senso?Come diceva Nenni,
“c’e’ sempre il puro piu’ puro che ti epura”.
-
Odifreddi e i politici MAGAAethiss said in Odifreddi e i politici MAGA:
Pero’ gia’ adesso i sistemi di sicurezza sono di un certo livello.
Ma anche negli USA. Ma non esistono sistemi di sicurezza assoluti. Pensa a quando Berlusconi si becco’ una statuetta del Duomo di Milano in faccia. Poteva essere altro.
-
Odifreddi e i politici MAGAGoldo said in Odifreddi e i politici MAGA:
, ma perchè è stato un regolamento di conti interno al “MAGA”, che senso ha sparare per seccare “uno dei tuoi”…
Che senso aveva la notte dei lunghi coltelli?
-
Alien: Pianeta Terra.Non so se andro’ a vederlo, onestamente. Nel senso che ho un pregiudizio. Gli americani tendono a spiegare tutto, quando
fanno una serie. Ma proprio tutto. Eliminano il non detto, cioe’ il mistero, e questo toglie al film ogni aspetto di quella “magia” che trasforma il cinema in un’esperienza che vale la pena provare.Onestamente, sapere il nome ed il cognome degli Ingegneri, in che anno si sono laureati, e dove hanno fatto l’esame di stato,
come funziona esattamente uno xenomorfo, se e’ ancora in garanzia, in che bidone del rusco metterlo quando lo butti via, magari anche no.Hai presente quando nel prequel di Dune , il figlio di Frank Herbert scrive che le Bene Gesserit preparano la stanza del parto usando il Feng Shui? Ecco. Questo e’ l’effetto.
-
Odifreddi e i politici MAGA -
Nuove emozioni.era troppo avvincente. Specialmente le S-Bahn girls.
-
Millennials. Sempre loro. -
LMAOQuesta fa i video di reazione come vocal coach.
L’anno accusata di essere una fake e di non saper cantare davvero.
Cosi’ ha postato un video.
-
Nuove emozioni.Il pit stop in 7 secondi per cambiare le ruote lo vedo problematico, pero’.
-
Nuove emozioni. -
Reputazione. Come cresce.Allora, forse e’ meglio spiegare bene come funziona il meccanismo che da’ accesso al gruppo “Dudi”. Quando si raggiunge una certa reputazione, allora il sistema automaticamente vi infila nel gruppo. Se si abbassa troppo, allora potreste anche venire tolti dal gruppo, e finire in Bowlers.
Ma come cresce e come si abbassa la reputazione?
Sotto ogni post, a destra, ci sono due tasti:
Come vedete , c’e’una freccetta verso l’alto, e una verso il basso. Un pochino come il Like solo che c’e’ il dislike. Se pensate che quanto scritto non sia degno di un Dude, allora spingete sulla freccetta in basso (downvote). Se invece pensate che la persona parla da dude, allora spingete sulla freccetta in alto (upvote).
Se quindi non siete ancora nei dudi, e volete entrarci, andate in “Whatever, man”, e scrivete, lanciate topici, rispondete. In questo modo la vostra reputazione crescera’. No partecipazia, no reputazia.
In questo modo, il forum si amministra con il minimo sforzo da parte del moderatore.
E posso fingere di essere democratico, mentre sono solo pigro. -
LOL -
Problema con le immagini risolto.Si trattava, in fondo, di scrivere uno script di avvio per nodebb, che arriva con un container docker che non funziona di suo. (il contrario del concetto di container docker).
#!/bin/bash set -euo pipefail APP_DIR="/usr/src/app" cd "$APP_DIR" die(){ echo "❌ $*" >&2; exit 1; } need_tool(){ command -v "$1" >/dev/null 2>&1 || return 0 return 1 } # ── Tools minimi: se mancano, prova ad installarli (apt o apk), altrimenti abort ── MISSING=0 command -v redis-cli >/dev/null 2>&1 || MISSING=1 command -v jq >/dev/null 2>&1 || MISSING=1 if [[ "$MISSING" -eq 1 ]]; then if command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y --no-install-recommends redis-tools jq curl procps net-tools && apt-get clean elif command -v apk >/dev/null 2>&1; then apk add --no-cache redis jq curl procps-net iproute2 else die "redis-cli/jq mancanti e nessun package manager disponibile" fi fi # ── Leggi config SENZA default (null⇒vuoto). Se mancano host/port/db, abort ── CFG="$APP_DIR/config.json" [[ -f "$CFG" ]] || die "$CFG mancante" json_get(){ jq -r "try $1 catch \"\"" "$CFG" | sed -E 's/^(null|NULL)$//'; } DB_DRIVER=$(json_get '.database') [[ "$DB_DRIVER" == "redis" ]] || die "database='$DB_DRIVER' (serve 'redis')" REDIS_HOST=$(json_get '.redis.host') REDIS_PORT=$(json_get '.redis.port') REDIS_DB=$(json_get '.redis.database') REDIS_USER=$(json_get '.redis.username') REDIS_PASS=$(json_get '.redis.password') REDIS_PREFIX=$(json_get '.redis.prefix') REDIS_TLS=$(json_get '.redis.tls') [[ -n "$REDIS_HOST" && -n "$REDIS_PORT" && -n "$REDIS_DB" ]] || die "Redis host/port/database non impostati in config.json" # ── redis-cli wrapper: passa SOLO ciò che esiste; username senza password ≠ auth ── redis_cli(){ local scheme="redis"; [[ "$REDIS_TLS" == "true" ]] && scheme="rediss" if [[ -n "$REDIS_USER" && -n "$REDIS_PASS" ]]; then local u_enc p_enc u_enc=$(jq -rn --arg s "$REDIS_USER" '$s|@uri') p_enc=$(jq -rn --arg s "$REDIS_PASS" '$s|@uri') redis-cli -u "${scheme}://${u_enc}:${p_enc}@${REDIS_HOST}:${REDIS_PORT}/${REDIS_DB}" "$@" elif [[ -n "$REDIS_PASS" ]]; then redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -n "$REDIS_DB" -a "$REDIS_PASS" "$@" else redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" -n "$REDIS_DB" "$@" fi } echo "ℹ️ Redis: host='${REDIS_HOST}' port='${REDIS_PORT}' db='${REDIS_DB}' prefix='${REDIS_PREFIX:-}' user=$([[ -n "$REDIS_USER" ]]&&echo set||echo none) pass=$([[ -n "$REDIS_PASS" ]]&&echo set||echo none) tls=$([[ "$REDIS_TLS" == "true" ]]&&echo on||echo off)" # ── NPM: upgrade + audit PRIMA di usare npm (niente unsafe-perm) ── npm config set fund false progress false loglevel=warn || true before="$(npm -v || echo n/a)" npm install -g npm@latest || echo "⚠️ Upgrade npm fallito, continuo" after="$(npm -v || echo n/a)"; echo "ℹ️ npm: $before → $after" npm audit --omit=dev || true npm audit fix --omit=dev --force || true # ── Build check ── NEED_BUILD=0 [[ -f "$APP_DIR/build/manifest.json" && -f "$APP_DIR/build/public/src/client.js" ]] || NEED_BUILD=1 # ── Scopriamo la chiave plugins:active: prefix→nodebb:→none + SCAN fallback ── discover_plugins_key(){ local try=() [[ -n "$REDIS_PREFIX" ]] && try+=("${REDIS_PREFIX}:plugins:active") try+=("nodebb:plugins:active" "plugins:active") local k t for k in "${try[@]}"; do t="$(redis_cli TYPE "$k" 2>/dev/null || true)" [[ "$t" == "set" || "$t" == "zset" ]] && { echo "$k"; return 0; } done local hit hit="$(redis_cli --raw SCAN 0 MATCH '*:plugins:active' COUNT 200 2>/dev/null | awk '/:plugins:active$/ {print; exit}')" [[ -n "$hit" ]] && { echo "$hit"; return 0; } echo ""; return 1 } PLUG_KEY="$(discover_plugins_key || true)" [[ -n "$PLUG_KEY" ]] || echo "⚠️ Nessuna chiave plugins:active trovata; proseguo senza auto-install" # ── Leggi plugin attivi ── PLUGINS=() if [[ -n "$PLUG_KEY" ]]; then TYPE="$(redis_cli TYPE "$PLUG_KEY" 2>/dev/null || true)" case "$TYPE" in set) readarray -t PLUGINS < <(redis_cli SMEMBERS "$PLUG_KEY" | tr -d '\r');; zset) readarray -t PLUGINS < <(redis_cli ZRANGE "$PLUG_KEY" 0 -1 | tr -d '\r');; *) echo "⚠️ Tipo chiave non gestito: ${TYPE:-none}";; esac fi # ── Mapping pacchetto (placeholder emailer) ── plugin_pkg(){ case "$1" in nodebb-plugin-emailer) echo "nodebb-plugin-emailer-local" ;; # scegliamo il nostro emailer reale se diverso *) echo "$1" ;; esac } # ── Verifica, installa, attiva ── MISSING_PKGS=() TO_ACTIVATE=() for plugin in "${PLUGINS[@]}"; do [[ -z "$plugin" ]] && continue pkg="$(plugin_pkg "$plugin")" if [[ "$plugin" == "nodebb-plugin-emailer" ]]; then echo "❌ Placeholder emailer attivo → userò '$pkg'" ./nodebb deactivate "nodebb-plugin-emailer" >/dev/null 2>&1 || true [[ -d "$APP_DIR/node_modules/$pkg" ]] || { MISSING_PKGS+=("$pkg"); NEED_BUILD=1; } TO_ACTIVATE+=("$pkg") continue fi [[ -d "$APP_DIR/node_modules/$pkg" ]] || { echo "❌ Mancante: $plugin (pkg: $pkg)"; MISSING_PKGS+=("$pkg"); TO_ACTIVATE+=("$plugin"); NEED_BUILD=1; } done if [[ ${#MISSING_PKGS[@]} -gt 0 ]]; then echo "📦 npm install: ${MISSING_PKGS[*]}" npm install --omit=dev "${MISSING_PKGS[@]}" || echo "⚠️ Installazione plugin fallita (continuo)" fi if [[ ${#TO_ACTIVATE[@]} -gt 0 ]]; then echo "🔌 Attivo: ${TO_ACTIVATE[*]}" for p in "${TO_ACTIVATE[@]}"; do ./nodebb activate "$p" || echo "⚠️ Attivazione fallita: $p" done fi # Audit post plugin (best-effort) npm audit --omit=dev || true npm audit fix --omit=dev --force || true # ── Build se necessario ── if [[ "$NEED_BUILD" -eq 1 ]]; then echo "🔧 npm install (deps app) & ./nodebb build…" npm install --omit=dev || true ./nodebb build else echo "✅ Nessuna ricostruzione necessaria" fi # ── Avvio & log ── echo "🚀 Avvio NodeBB…" ./nodebb start # daemonizza echo "📜 Tail logs…" mkdir -p ./logs : > ./logs/output.log [ -e ./logs/error.log ] || : > ./logs/error.log exec tail -n +1 -F ./logs/output.log ./logs/error.log
-
Hate Bait: come si fabbrica un martire (e perché è una pessima idea) -
I'm considering setting up a home lab and truly self-hosting my own services. Unfortunately, my budget is limited to around $100-$150. I'm wondering if the HP Elitedesk mini PC is suitable for thisSi, ho provato a federare un forum. Ma alla fine, RSS rimane la via piu’ semplice ed efficace.
-
FYIgia’ fatto da solo: guarda quanti bei 302 …
10.0.12.122 - - [12/Sep/2025:20:28:09 +0000] “GET /post/3359 HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; BLEXBot/1.0; +https://help.seranking.com/en/blex-crawler)”
10.0.12.122 - - [12/Sep/2025:20:28:40 +0000] “GET /user/nachtflug@glasgow.social/controversial HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:28:53 +0000] “GET /topic/9c55eba0-1b89-453d-9578-b5dd83c28c94/a-rocky-rescue-request/16?page=1 HTTP/1.1” 302 145 “-” “Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot) Chrome/119.0.6045.214 Safari/537.36”
10.0.12.122 - - [12/Sep/2025:20:29:06 +0000] “GET /user/nachtflug@glasgow.social/best HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:16 +0000] “GET /tags/vapid.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:17 +0000] “GET /tags/strapon.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:30 +0000] “GET /tags/of.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:36 +0000] “GET /tags/most.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:45 +0000] “GET /user/der_kleine_herr_b@norden.social/controversial HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:46 +0000] “GET /tags/endless.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
10.0.12.122 - - [12/Sep/2025:20:29:49 +0000] “GET /tags/broligarchy.rss HTTP/1.1” 302 145 “-” “Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)”
-
One Year Selfhosting My Own Podcast -
I got hooked on browsing openalternative.co's "Most Popular" list