Wikisource:Domande tecniche/Archivio/2013

Da Wikisource.
Archivio delle domande tecniche del 2013

Portale progetti   Progetto qualità   Domande tecniche   Archivio   2013 

pagine utili per diventare bravi smanettoni collaborativi[modifica]

Segnalo alla lista queste pagine/guide utili:

--Aubrey McFato 14:25, 2 gen 2013 (CET)[rispondi]

Cassetti dal sito Wikimedia Foundation[modifica]

Io me ne intendo poco (pare che qui ci sia un accrocchio di jQuery, css, e codice mediawiki), ma mi piace molto questa pagina con i vari cassetti. Se riuscissimo a sostituire i nostri cassetti con questi, credo che come grafica miglioreremmo molto. http://wikimediafoundation.org/wiki/Template:Staff_and_contractors Aubrey McFato 12:23, 3 gen 2013 (CET)[rispondi]

Suggerisco di chiedere aiuto a Utente:Raoli: lui ne capisce. Io sono stato "rigettato" dall'accrocchio js+css+template, al primo tentativo; e mi sono dedicato ad altro. --Alex brollo (disc.) 15:58, 6 gen 2013 (CET)[rispondi]
Fra un po' rispondo. --Raoli (disc.) 20:42, 6 gen 2013 (CET)[rispondi]
Ecccomi! Il js utilizzato è un codice che quasi nessuno conosce poichè non c'è scritto da nessuna parte di usarlo. Questo è uno script globale proveniente dalla libreria JQuery. Vi potrei dare un sacco di spiegazioni, ma visto che ho creato una pagina che li spiega tutti ve la link da Quote. q:Utente:Raoli/Navigazione/Collassamento Trovate gli esempi in quella pagina e i codice da copiare nel js e css comune ad inizio sempre di quella pagina. Comunque i codici servono solo per alcune funzioni non per i cassetti che già funzionano qui, come in tutti i wiki di Wikimedia. In particolare qui vi mostro i tre esempi principali e speriamo vi piacciano.

Effetto elastico (fluido)[modifica]

Questo testo non è comprimibile, ma il successivo è collassabile e nascosto per impostazione predefinita:

Il codice per utilizzare questo cassetto è il seguente. Se volete potete anche imprigionarlo in un template.
<div class="toccolours mw-collapsible mw-collapsed" style="width:100%; border-radius:6px;">
Questo testo non è comprimibile, ma il successivo è collassabile e nascosto per impostazione predefinita:
<div class="mw-collapsible-content">
Il codice per utilizzare questo cassetto è il seguente. Se volete potete anche imprigionarlo in un template.
</div>
</div>

Utilizzo di cassetti con interruttore centralizzato[modifica]

Sono dei cassetti che potete controllare da un unico interruttore. Cliccando su quello potete aprire e chiudere insieme tutti i cassetti in un sol colpo. Potete comunque aprirli anche uno alla volta. Potete immaginare l'interruttore come il vostro interruttore generale di casa: dal punto della funzione che svolge non cambia. Questo cassetto funzionerà solo dopo aver installato i codici di quella pagina rispettivamente nei vostri common.js e common.css.

Esempio di un gruppo di sezioni[modifica]

Sezione 1

Questo testo è collassabile. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sezione 2

Questo testo è collassabile. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sezione 3

Questo testo è collassabile. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Il codice per fare apparire l'esempio sopra (prima di utilizzarli copiatevi i codici delle funzioni)-Codici
Il codice per utilizzare questo cassetto è il seguente. Se volete potete anche imprigionarlo in un template.
<div class="it-collapsible-group">
/* ↑↑↑ è la funzione che crea la funzione "gruppo" dove 'group' è in nome del raggruppamento o della c.d. suddivisione. */
==== <span class="it-collapsible-group-toogle">Esempio di un gruppo di sezioni</span> ====
/*
↑↑↑ Qui mi sono divertito a far diventare l'"interruttore" del gruppo il nome di una sezione. 
    Come si fa a capire che si tratta dell'interruttore? Basta che cerci la scritta "toggle".
*/
<div class="it-collapsible it-collapsed">
/* ↑↑↑ Questi sopra sono i codici per dire "Aho, creame un cassetto di tipo 'it-collapsible it-collapsed' qui". */
<h5 style="font-size: 1.1em; border: 0; margin-top: 0.6em; float: none;" class="it-collapsible-toggle">Sezione 1</h5>
/* ↑↑↑ Qui sopra ho inserito l'interruttore del singolo cassetto in una sezione. */
/* ↓↓↓ Qui sotto ho inserito il codice che specifica che qui c'è il contenuto del cassetto. */
<div class="it-collapsible-content" style="border: 1px solid #aaa; border-radius: 5px; margin: 0 18px; padding: 10px;">
Contenuto.
</div></div>
/* ↓↓↓ Qui sotto lo schema illustrato sopra si ripete 2 volte. */
<div class="it-collapsible it-collapsed">
<h5 style="font-size: 1.1em; border: 0; margin-top: 0.6em; float: none;" class="it-collapsible-toggle">Sezione 2</h5>
<div class="it-collapsible-content" style="border: 1px solid #aaa; border-radius: 5px; margin: 0 18px; padding: 10px;">
Contenuto.
</div></div>
<div class="it-collapsible it-collapsed">
<h5 style="font-size: 1.1em; border: 0; margin-top: 0.6em; float: none;" class="it-collapsible-toggle">Sezione 3</h5>
<div class="it-collapsible-content" style="border: 1px solid #aaa; border-radius: 5px; margin: 0 18px; padding: 10px;">
Contenuto.
</div>
</div>
</div>

Un esempio ancora più sintetico che mette in evidenza le caratteristiche

<div class="it-collapsible-group">

==== <span class="it-collapsible-group-toogle">Gruppo di sezioni</span> ====

<div class="it-collapsible it-collapsed">
<h5 class="it-collapsible-toggle">Sezione 1</h5>
<div class="it-collapsible-content">
Contenuto 1.
</div></div>

<div class="it-collapsible it-collapsed">
<h5 class="it-collapsible-toggle">Sezione 2</h5>
<div class="it-collapsible-content">
Contenuto 2.
</div></div>

<div class="it-collapsible it-collapsed">
<h5 class="it-collapsible-toggle">Sezione 3</h5>
<div class="it-collapsible-content">
Contenuto 3.
</div></div>

</div>
La logica dei gruppi è questa

Esiste un toggle in inglese che io chiamo sem.mente interruttore (perché ha proprio quella funzione): apre o chiude il/i riquadro/i con cui è stato connesso. Connesso naturalmente tramite l'utilizzo di un nome nel gruppo. Qui ho lasciato group, ma lo potete cambiare in quello che volete (nat.mente usate solo lettere e numeri normali).

Esempio di cassetti a comando a distanza[modifica]

Non potevano mancare gli interruttori a distanza: in pratica qualsiasi cosa che vedete e non vedete può fungere da comando a distanza.

Riporto qui l'esempio fatto in quella pagina:


Comprimibile a distanza 1 (div, leve multiple) @


@
Clicca qui o su una delle @ per visualizzare l'elemento nascosto.
title=Click me!
title=Click me!
⇐ @@Anche cliccando qui o sull'immagine della Chiocciola lo attiverai @@
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Div personalizzato espandibile 2 (tabella)


Clicca qui per comprimere la tabella.
Ciao Mondo
Contenuto Va
In Qui

Div personalizzato espandibile 3 (elenco)


Clicca qui per comprimere l'elenco.
  • A
  • B
  • C
  • D

Div personalizzato espandibile 4 (riga della tabella)


X Y Z
Sono l'mw-customtoggle per A, B e C. Fammi clic per visualizzare le tre righe di tabella in una volta! 20 11
Sono l'mw-customcollapsible della riga A 20 7
Sono l'mw-customcollapsible della riga B 21 11
Sono l'mw-customcollapsible della riga C 29 1
Questa è solo una cella di una tabella semplice030

Effetto di cambio testo al clic


  • La tabella è chiusa di default
  • La seconda riga contiene un'elenco espandibile
  • LA terza riga contiene un blocco espandibile con etichette personalizzate

Esempio Extra[modifica]

Questo l'ha creato Pietrodn su Wikipedia.

Espansione e compressione al passaggio del mouse

Capito tutto di questi codici
  • si (in realtà penso di si)
  • no
  • bho, me la devo rileggere.

Anche io la prima volta non ci aveva capito nulla, ma mi sono riletto la pagina e poi ha capito. Raoli (disc.) 23:45, 6 gen 2013 (CET)[rispondi]

Questo è tutto. P.s. Eh no Ema! Manca una cosa. Si, è vero, sul sito della WMF invece del semplice triangolino viene utilizzato questo simbolo . Non capisco poi perchè sul sito della WMF richiamano il Jquery intero quando creano il cassetto. Certo capire quel codice messo lì è impresa dura, forse non sanno esiste già il codice. Bho. Spero sia stato utile. :) Raoli (disc.) 23:45, 6 gen 2013 (CET)[rispondi]

Non sto seguendo questa discussione perchè sto su Wikivoyage. Perfavore se servo ancora scrivetemi o per e-mail o lì. Grazie ;) Raoli (disc.) 23:49, 6 gen 2013 (CET)[rispondi]
Raoli, sei stato incredibilmente esaustivo, non pensavo nemmeno ci potesse essere una complessità del genere! Grazie mille dello straordinario lavoro, che ti consiglierei di copincollare da qualche parte, anche solo Aiuto:Cassetto, dato che è una documentazione eccezionale. Secondo me se (con priorità bassa) come comunità scegliessimo un paio di soluzioni funzionali a noi sarebbe una gran roba per l'usabilità di Wikisource. Grazie davvero. Aubrey McFato 00:24, 7 gen 2013 (CET)[rispondi]

Posso procedere con l'installazione di questi sistemi e l'eventuale aggiustamento di bug con la versione precedente? Oppure devo prima chiedere al bar generale? Samuele 16:09, 9 gen 2013 (CET)[rispondi]

Direi che basta mettere in Bar generale un avviso che qui c'è una discussione in corso; dopodichè, adelante con juicio; implementati i sistemi, occorrerà un gran lavoro di template per rendere l'accesso abbastanza semplice e soprattutto discreto, in linea con lo stile source.
Alla fine ci sarà anche quel che serve per le "tabelle collassabili" tipo quella di Book su Commons vero? E' là che io ho gettato la spugna... --Alex brollo (disc.) 22:12, 9 gen 2013 (CET)[rispondi]
Si, anche meglio. Chi fa l'aggiunta di codice deve ricordarsi di cambiare l'immagine con se vuole farlo uguale a quello della Fondazione Wikimedia. --Raoli (disc.) 23:04, 9 gen 2013 (CET)[rispondi]

Faccio un tentativo. Vedrete se funziona. Scrivetemi in discussione preferibilmente per segnalare malfunzionamenti (ricevo una mail e posso rispondere subito, altrimenti mi dimentico) Samuele 22:31, 16 gen 2013 (CET)[rispondi]

Inserimento immagine[modifica]

Ciao a tutti, non sono un granché pratica con le immagini (anzi, proprio per niente). Ho visto che nella pagina Pagina:Una sfida al Polo.djvu/321 la parola Fine è circondata da una greca. Qualcuno mi riesce a dare una mano su come devo comportarmi? Dove si caricano etc.? Oppure mi date un'idea se c'è una guida sulle immagini? Grazie mille! Inskatolata (disc.) 21:52, 6 gen 2013 (CET)[rispondi]

Ho provveduto. Le immagini vanno caricate su commons e poi inserite come in un qualunque altro progetto wiki. Spesso l'immagine non è fondamentale, per questo esiste il template {{Immagine da inserire}}, per servire da promemoria per chi si volesse curare anche l'aspetto estetico. Nel caso specifico l'avevo volutamente omessa visto che era praticamente l'unica "immagine" del testo (le altre immagini presenti nel testo originale non ci sono perché ancora sotto copyright fino al 2018). Pagine di aiuto (decenti) specifiche per l'inserimento in source non ce ne sono, anche perché quando l'immagine è inserita nel testo spesso impatta su tutto il paragrafo e sulle pagine precedenti e successive. Più volte mi sono ripromesso di scrivere qualcosa, ma ho sempre rimandato. --Luigi62 (disc.) 10:35, 7 gen 2013 (CET)[rispondi]
Merci! ^_^ Inskatolata (disc.) 15:21, 7 gen 2013 (CET)[rispondi]

Html_Data[modifica]

Ho provato a inserire in Template:Autore/Sandbox e poi in Template:Autore questo codice:

<span id="dati" data-nome="{{{Nome}}}" data-cognome="{{{Cognome}}}" data-altroNome="{{{ Eventuale altro nome}}}" 
data-pseudonimo="{{{Eventuale pseudonimo}}}" data-nomeReale="{{{Eventuale nome reale}}}" 
data-giornoMeseNascita="{{{Giorno e mese di nascita}}}" data-annoNascita="{{{Anno di nascita}}}" 
data-giornoMeseMorte="{{{Giorno e mese di morte}}}" data-annoMorte="Anno di morte" 
data-secoloAttivita="{{{Secolo di attività}}}"  data-professioneNazionalita="{{{Professione e nazionalità}}}" 
data-wikipedia="{{{Nome della pagina su Wikipedia}}}" data-wikiquote="{{{Nome della pagina su Wikiquote}}}" 
data-wikinotizie="{{{Nome della pagina su Wikinotizie}}}" data-commons="{{{Nome della pagina su Commons}}}" 
data-immagine="{{{Nome dell'immagine}}}">

Il risultato è che viene caricato nella pagina Autore, in modalità view, uno "span invisibile contenitore di dati".

Se stando su una pagina Autore (esempio Autore:Giovanni di Brienne)dopo un purge andate in console js e scrivete:

$("#dati").data()

ottenete:

Object
altronome: "Re Giovanni"
annomorte: "Anno di morte"
annonascita: "1148 ca."
cognome: ""
commons: "Category:John of Brienne"
giornomesemorte: "23 marzo"
giornomesenascita: ""
immagine: "Maria of Montferrat Coronation.jpg"
nome: "Giovanni di Brienne"
nomereale: ""
professionenazionalita: "re di Gerusalemme, imperatore dell'Impero latino e poeta italiano"
pseudonimo: ""
secoloattivita: "XII secolo/XIII secolo"
wikinotizie: ""
wikipedia: "Giovanni di Brienne"
wikiquote: "Giovanni di Brienne"

che potete anche interrogare per singoli componenti. Scrivete:

$("#dati").data("commons")

e ottenete:

"Category:John of Brienne"

Questo può essere fatto per tutti i template tipo Infobox (Autore, Intestazione, ecc) , e semplifica molto la vita ai "cacciatori di dati". --Alex brollo (disc.) 15:43, 9 gen 2013 (CET)[rispondi]

Veloce e facile per l'utente che necessita dei dati.
Però, quando guardo questo e molti altri trucchi per trasportare dati mi chiedo: perchè? Perchè stiamo facendo "ste robe" che salviamo miriadi di dati sfruttando data- di HTML oppure nascondendo uno span con display:none? Perchè non esiste un database generale dove si può accedere ai metadati? Spero che WikiData possa rispondere alle mie domande. Samuele 16:05, 9 gen 2013 (CET)[rispondi]
La risposta è si senza dubbio. Ci stiamo arrivando un passo alla volta. In Wikidata occhio che ogni dato, dovrà avere una fonte. Se non ce l'ha verrà eliminato. Naturalmente si sta discutendo, anzi a dire il vero la discussione è stata archiviata, ma il consenso generale vuole una fonte per ogni dato. Per esempio se inserite la nazionalità di una persona dovrete dire da quale fonte è stata presa. Comunque grazie al gran lavoro di Alex di prendere più dati possibile non penso ci sarà tutta sta differenza tra Data e Source. Daje Wikifonte! Raoli (disc.) 17:14, 9 gen 2013 (CET)[rispondi]
Samuele, dal mio primo ingresso in wikipedia mi sono reso conto - da vecchio programmatore di database, con strumenti primordiali, ma i principi sono sempre quelli: coerenza attraverso l'eliminazione della ridondanza; meticolosa attenzione alla normalizzazione dei dati con le tre relazioni uno a uno, uno a molti, molti a molti - che wikipedia è schizofrenico; si appoggia a uno straordinario database, rispettandone tutte le regole al livello superiore alla pagina; ne viola tutte le regole, per quanto riguarda il contenuto delle pagine. Non solo le viola: sembra quasi progettata per rendere le cose difficili, molto difficili, a chi voglia occuparsene. Ogni volta che trovo un trucco, uno strumento, un accrocchio per superare queste difficoltà, sento una grande soddisfazione; e più sistemi accumulo, più la circolazione dei dati diventa possibile, la ridondanza cala e la coerenza cresce.
Avrei potuto aspettare - da quando ho cominciato a "fare sul serio" - anni e anni e anni in attesa che qualcosa cambiasse? Ma nemmeno per sogno. Qui su wikisource ho trovato l'ambiente ideale, le giuste dimensioni, la sufficiente "pulizia" e uniformità di dati per sperimentare; e continuerò, fino al giorno in cui veramente si attiveranno le potenzialità di Wikidata, che comincio a capire. Per ora Wikidata si occupa - giustamente - di "entità"; poi arriverà il momento in cui si occuperà di "entità costituite da collezioni di entità"; e allora tutto sarà diverso.
E adesso monto il meccanismo su Intestazione... :-) --Alex brollo (disc.) 21:17, 9 gen 2013 (CET)[rispondi]
✔ Fatto .... cosa di pochi minuti, adesso dovunque c'è Intestazione, purgando, c'è anche $("#dati").data(). --Alex brollo (disc.) 22:06, 9 gen 2013 (CET)[rispondi]
Samuele, Raoli, potresti mandarmi in privato la vostra mail? Vorrei rendervi partecipe di una lunga mail che sto per mandare a cui potreste essere interessati. @Samuele, posso consigliarti di guardare (parte di) questo? da quello che io so, Wikidata ci metterà un po' prima di gestire i metadati, e ci vorrà un po' prima che si mettano a lavorare per le Wikisource, e le wikisource minori. Intanto, che il buon Alex sperimenti è cosa buona e giusta, se e soprattutto se parallelamente seguirà il processo di Wikidata: potremmo arrivare al momento giusto con la giusta esperienza per cambiare le cose e farle bene. Io purtroppo a livello tecnico ci capisco molto poco, ma più gente ci sta dietro a queste cose meglio è. Aubrey McFato 12:54, 10 gen 2013 (CET)[rispondi]

Vicolo cieco[modifica]

Aimè. E' un vicolo cieco, il markup mediawiki (mal conformato) mi ha fregato di brutto. Ritiro la proposta con le pive nel sacco.

Il sistema funziona benissimo qui da noi, ma solo perchè (probabilmente grazie alla saggezza di IPork) siamo fra i pochissimi siti ad adottare il principio: i parametri degli infobox come Autore e Intestazione devono essere puliti, ossia privi di codice wiki. Questo non vale per Pedia, non vale per Commons, non vale nemmeno per i nostri fratelli en.source... non vale per nessuno. Se hanno un codice wiki tipo template, o tipo parametro di template, o codice link, il sistema si impalla.

Abbandono questa strada :-( , e riprendo lo sviluppo dei tool per la lettura AJAX interprogetto. --Alex brollo (disc.) 00:36, 12 gen 2013 (CET)[rispondi]

Ho letto in ritardo il tuo messaggio in talk. Mi dispiace si sia arrivati a un vicolo cieco, ma avrei suggerito di tentare comunque in una sandbox del Bio. Non ci resta altro che aspettare qualche altro mese ancora con Wikidata, temo. Sannita - L'admin (a piede) libero 12:41, 12 gen 2013 (CET)[rispondi]
Grazie di avermi rincorso Sannita, comunque stavo solo cercando un metodo semplice, accontentandosi di un metodo mediamente complesso la cosa è ben avanti. Già oggi, un tool in Commons "acchiappa" i parametri del template Bio di it.pedia, li trasforma nei valori adatti a Creator e li assembla con un completamento automatico del codice template vicino al 100%. E questa "vecchia via" ignora bellamente che i parametri siano "puliti" o "sporchi". Basta che siano giusti.... :-) --Alex brollo (disc.) 17:24, 12 gen 2013 (CET)[rispondi]
Mi correggo: anche da noi qualche volta i parametri dei template non sono "puliti" (ossia, contengono codice wiki o codice html). In questi casi, disastro (come da segnalazione mail di Aubrey). Disabilito l'ambaradan su Intestazione; lascio attivo per prova su Autore. --Alex brollo (disc.) 10:39, 19 gen 2013 (CET)[rispondi]
Trovate traccia della mia delusione in wikitech-l (Html comments into raw wiki code: can they be wrapped into parsed html?), dove avevo avuto il suggerimento di sfruttare i parametri data-,idea che mi aveva entusiasmato portandomi però per mano contro un muro di cemento armato.... :-( --Alex brollo (disc.) 06:55, 22 gen 2013 (CET)[rispondi]

ePub e caratteri "tossici"[modifica]

Nell'utilizzare un nostro ePub su un ebook-reader, ho individuato un carattere piuttosto usato che non viene correttamente letto. Si tratta di un trattino lungo. Il carattere che normalmente gli ocr inseriscono è questo: — (unicode & #8212;), ma ne esiste un altro, questo: ― (unicode & #8213;) che non viene correttamente visualizzato. Ma da dove viene questo trattino? Viene dalla nostra barra degli strumenti in fondo allo schermo, tra i caratteri inusuali. Propongo alcune cose da fare per ovviare al problema:

  1. cambiare il trattino tra i caratteri inusuali in fondo allo schermo (e già che ci siamo aggiungere il carattere "ú" che manca).
    1. ✔ Fatto
  2. far girare un bot che sostituisca tutti i trattini "tossici" già inseriti (almeno nelle pagine al 100%).
    1. In corso... previo scaricamento di dump e ricerca
  3. far sostituire un eventuale trattino sbagliato al momento del salvataggio della pagina (al momento del salvataggio già viene aggiunto d'ufficio uno spazio dopo il trattino lungo —).
    1. In corso... sarà modificata la funzione postOCR per sostituire il carattere tossico con quello commestibile
    2. ✔ Fatto; al primo click su postOCR tutti i trattini tossici dovrebbero sparire sostituiti dai trattini commestibili; nè potrebbero essere introdotti più con toolbox. Ma per favore verifica che funzi davvero...

Visto che non posso (e anche se potessi non ne sarei in grado) di fare queste cose, cedo il lavoro. :-)) --Luigi62 (disc.) 23:57, 25 gen 2013 (CET)[rispondi]

Grazie Luigi dell'indagine. --Alex brollo (disc.) 16:01, 28 gen 2013 (CET)[rispondi]

hOCR[modifica]

A seguito di una discussione con Aubrey, Federico Boschetti et al., ho "scoperto di nuovo" il formato hOCR. E' veramente interessante. Si tratta di un formato html che "annida", all'interno di un testo apparentemente normale, tutti i dati sulla struttura del testo e la collocazione delle parti di testo come risulta dall'OCR, in una gerarchia pagina - regione - paragrafo - linea - parola. Tutti questi dati sono annidati in ogni djvu con strato testo, ma non sono recuperabili via software mediawiki; non solo, ma l'estrazione dei dati con le routine djvuLibre non produce un hOCR ma un xml a struttura diversa e non adatto alla visualizzazione.

Il bello del formato hOCR è che, essendo html semplice e "pulito", può essere tranquillamente caricato qui e non crea alcun disturbo. Nella pagina Utente:Alex brollo/hOCR ne trovate un pezzetto da esplorare. In questo momento sto studiando le routine jQuery per estrarre da questo formato tutto ciò che si può estrarre; l'idea (audace) è quella di provare a mettere in Discussione pagina l'hOCR della pagina stessa, e usarlo come "deposito di dati" da cui attingere per la fase di editing; ma non solo. Le prospettive sono molto ampie e sorprendenti. --Alex brollo (disc.) 16:01, 28 gen 2013 (CET)[rispondi]

Passetto passetto, adesso a ciascuna parola associo un onclick per fare qualcosa (restituire le coordinate annidate nell'hOCR della parola); non manca molto per il "progetto Phe inverso", ossia: data una parola, restituire, in una piccola div, l'immagine di quella parola sulla pagina. All'inizio solo cliccando la visualizzazione dell'hOCR; forse in futuro, ma non è facile, anche selezionando una parola nel testo in editing. Dipende dal contesto.... ;-) --Alex brollo (disc.) 23:44, 28 gen 2013 (CET)[rispondi]
Pian piano.... adesso esiste uno script che causa una metamorfosi della pagina Pagina in edit, nascondendo tutti i form e sostituendoli una normale div, contenente l'html di hOCR. L'hORC ha una eccezionale proprietà: il testo sorgente coincide con il testo html visualizzato. Modificando, via jQuery,l'html visualizzato, ogni modifica può essere memorizzata tal quale nel testo sorgente. :-) Uno sporco trucco (semplicissimo!) permette di conservare la suddivisione originale in righe del testo.
Prossimo passo: creare due div, che contengano un clone dell'immagine pagina (quella che compare nella finestra di edit). Le due div saranno truccate in modo da contenere l'intera immagine della pagina, ma da essere dimensionate esattamente sulle dimensioni di una riga di testo, e rispettivamente su una parola. In pratica, l'immagine "scorrerà sotto" la piccola finestra posizionandosi in modo da lasciar vedere solo il rettangolo che interessa. Tenete conto che nella memoria del browser esiste una copia dell'immagine, già scaricata, a dimensioni originali (non alle dimensioni rimpicciolite per "farla stare" nel quadro destro della finestra di edit). A sua volta, le due div potranno essere posizionate dov'è più comodo per la correzione (io immagino, adiacenti alla riga/alla parola da correggere). Qui diventerà importantissimo sentire i suggerimenti degli utenti che proveranno in pratica il meccanismo. DP non ha nulla di simile a cui ispiratsi. L'editor hOCR di Firefox funziona solo a riga e non a parola.
Sarà quindi possibile, cliccando una parola qualsiasi dell'html, far "scorrere" il testo nelle due div e farlo posizionare esattamente sulla riga che contiene la parola, e sulla parola.
Il passo successivo (facilissimo) sarà associare alla div che mostra la parola un piccolo form che permetta di editare la parola stessa all'interno di hOCR; dopodichè, in salvataggio pagina, basterà travasare l'hOCR editato nel textbox di edit, salvare e fine, il tutto senza che l'utente veda mai nè il codice hOCR, nè il textbox. --Alex brollo (disc.) 16:50, 31 gen 2013 (CET)[rispondi]

Editor parola per parola[modifica]

Come effetto collaterale dei lavori sull'editor hOCR, mi sono ritrovato per caso fra le mani un editor parola per parola, quello che Aubrey voleva tempo fa. Non è ancora finito, ma per vedere all'incirca come funzia, chi vuole può rovistare in MediaWiki:Gadget-hOCR.js, funzione spanP() che viene lanciata a mano con un "bottone" spanP (in questa fase di test) da una qualsiasi finestra di edit; opportuno, ma non obbligatorio, che il testo da editare sia "vergine", con poca formattazione (tipo quello che proviene da un OCR). Manca ancora la funzione di salvataggio, ma è questione abbastanza banale. --Alex brollo (disc.) 14:35, 4 feb 2013 (CET)[rispondi]

InsertTags(): quesito per i supergeek[modifica]

Gira nel mondo javascript della finestra di edit una funzione insertTags(), è quella che agisce al click di un pseudo-link della toolbar. Chiedo a chi lo può capire: da quale oggetto js viene chiamata? Dove e come viene definito questo oggetto, i suoi attributi e ui suoi metodi? Dovrebbe chiamarsi "currentFocused".

Non sono riuscito a capirlo; per "ridirigerla" facendola agire su un elemento diverso dal textBox (riscrivendo il codice daccapo) ho sudato quattro camicie; e comunque nel momento in cui tento di risistemarla ho perso l'aggancio all'oggetto e quindi non funziona più.

La funzione di default:

function (tagOpen,tagClose,sampleText){if(currentFocused&&currentFocused.length){
    currentFocused.textSelection('encapsulateSelection',{'pre':tagOpen,'peri':sampleText,'post':tagClose});
    }
}

--Alex brollo (disc.) 12:19, 6 feb 2013 (CET)[rispondi]

Complesso script per geek pazzoidi[modifica]

Voi geek pazzoidi as I am, scrivetevi in vector.js questo:

function miniconsole () {x=leggiBox(); y=eval(x); scriviBox(leggiBox()+"\n"+y); };
newButton("!","miniconsole");

dopodichè in in textbox vuoto qualsiasi divertitevi. Per capire cosa fa l'ideale è scrivere in toolBox la classica:

alert("Hello world!")

e premere il pulsantino ! che sarà comparso nella vostra "bottoniera". il resto per voi, geek, dovrebbe essere lapalissiano.

Non escludo di arricchire la cosa con un metalinguaggio. --Alex brollo (disc.) 09:17, 14 feb 2013 (CET)[rispondi]

Ovvio che la cosa ha senso in Chrome, dove comunque c'è una console (il vantaggio è che un eventuale output è già in toolbox), ma ha grande senso in altri browser, dove non esiste una console (tipo IE) oppure occorrono estensioni per crearla. --Alex brollo (disc.) 12:57, 14 feb 2013 (CET)[rispondi]

API ajax interprogetto, ultima versione[modifica]

In Utente:Alex brollo/Ajax, fondo, trovate la versione di una funzione per una chiamata AJAX interprogetto. La chiamata è abbastanza semplice: getIwPage=function (title, site, query), dove title e site sono intuitivi, query è "cosa si chiede" dalla pagina (per ora "html": restituisce l'html, "text". restituisce il codice testo).

Siccome le funzioni asincrone non restituiscono un bel nulla, all'interno della funzione un paio di righe spediscono il risultato in $(".ourDiv").data(), e precisamente in $(".ourDiv").data("outputAjax") (intero oggetto json restituito dalla chiamata API) e $(".ourDiv").data("bareData") (testo "significativo" estratto dall'oggetto json: codice html pulito, wikitesto pulito).

Con il tempo aggiungerò altri tipi di query, man mano che diventeranno utili, ma penso che in linea di massima questo schema di funzione resisterà. legge anche wikidata, ma l'API di wikidata è in revisione e per ora non mi cimento. --Alex brollo (disc.) 13:45, 21 feb 2013 (CET)[rispondi]

Problema javascript: using().run()[modifica]

Se guardate il codice di Utente:Alex brollo/common.js trovate una strana sintassi:

( function ( mw, $ ) {
        .... istruzioni
} ( mediaWiki, jQuery ) );

Qui trovo, come un sesto senso mi suggeriva, che le parentesi rendono la struttura simile a questa:

using().run(function(){
...
});

ma c'è una differenza nella posizione delle seconde parentesi. Il significato della sintassi della funzione sembra, comunque, qualcosa come "esegui la funzione anonima function (mw,$) non appena sono disponibili mediaWiki e jQuery". Giusto? --Alex brollo (disc.) 07:14, 4 mar 2013 (CET)[rispondi]

Dissodando un po' vedo che funzione la forma elementare test:
1)
(function () {alert("Titolo della pagina: "+wgTitle);} ());
con immediata esecuzione della funzione; la funzione non parte se manca l'elemento parentesi vuote in fondo. Parte anche se si scrive:
2)
(function () {alert("Titolo della pagina: "+wgTitle);}) ();
Mi piacerebbe capire se c'è una differenza fra 1) e 2). Questa sintassi è alternativa al guazzabuglio ResourceLoader? --Alex brollo (disc.) 09:45, 4 mar 2013 (CET)[rispondi]
Mi do la risposta da solo, al terribile, cattivissimo verificatore JSlint o come si chiama la versione 2 non piace. Ma quanto è rompiscatole e puntiglioso.... In Common.js trova decine di errori e poi smette per "troppi errori trovati". :-( --Alex brollo (disc.) 09:37, 7 mar 2013 (CET)[rispondi]

Avviso: riforma del box visualizzazione[modifica]

Sto riformando il box visualizzatore (quello, per dire, che visualizza il codice pagina da view). Il prototipo (che trovate in Utente:Alex brollo/showbox.js, caricato dal gadget Tools.js) crea immediatamente un box id="showbox" in modalità display:none; i programmi che devono cisualizzare qualcosa non lo ricostruiscono ma ci scrivono dentro quello che serve e poi lo visualizzano con un'istruzione $("#showbox").show(); il doppio click o il click sull'iconcina "chiudi" nella barra header non lo cancella, ma lo nasconde: $("#showbox").hide(). Questo semplifica non poco le cose. Quindi, se volete visualizzare qualcosa prodotto da uno script, basta che appendiate il contenuto a $("#showboxContent") e poi visualizziate con $("#showbox").show(). --Alex brollo (disc.) 09:44, 7 mar 2013 (CET)[rispondi]

Variazione di Template:Sezione note[modifica]

Ho provato a attuare una piccola modifica di {{Sezione note}}. In nsPagina, non genera nulla; si attiva in ns0. Questo ha un notevole vantaggio nel M&S; non occorre più cancellarlo dalla pagina trasportata in nsPagina, nè riscriverlo in ns0; inoltre il codice ns0 è più "pulito", in quanto contiene unicamente il tag pages. Esperimenti in corso qui: Pagina:Sonetti romaneschi I.djvu/313. Sappiatemi dire.

PS: in ns0 il comportamento del template resta identico. --Alex brollo (disc.) 10:16, 24 mar 2013 (CET)[rispondi]

Ok, però andrebbe comunque tolto dal nsPagina, altrimenti si rischia di generare comportamenti strani quando poi viene trascluso in nso Candalùa (disc.) 10:55, 24 mar 2013 (CET)[rispondi]
Perchè? Il bello è proprio nel fatto che se sta in nsPagina non occorre metterlo in ns0. Quale "comportamento strano" rilevi? --Alex brollo (disc.) 11:21, 26 mar 2013 (CET)[rispondi]
Ok, ho capito adesso cosa intendi. Non mi entusiasma granché, alla fine il fatto che il template finisca il nsPagina è solo un accidente del M&S... Comunque la mia è più che altro un'obiezione di forma, se la cosa ti semplifica il caricamento dei Sonetti allora vadi! Candalùa (disc.) 12:09, 26 mar 2013 (CET)[rispondi]

Nuova funzione Sommario()[modifica]

La nuova funzione Sommario(Indice) restituisce un oggetto che contiene tutti i dati del campo Sommario della pagina Indice. Si tratta di una lista di oggetti, ognuno dei quali, ordinatamente, contiene i dati dei template Indice sommario. Il parametro Indice può essere sottinteso (se si opera dalla stessa pagina Indice) o può essere passato come PAGENAME (es: Georgiche.djvu per puntare su Indice:Georgiche.djvu) o come nome completo (es: Indice:Georgiche.djvu).

Nota tecnica for geeks
La funzione legge i dati direttamente dai codici template (eseguendone il parsing con parseTemplate()) e non dalle aree dati.

Esempio: da una pagina qualsiasi chiamare da console il sommario di Indice:Georgiche.djvu:

sommario=Sommario("Georgiche.djvu");

A questo punto tutti i dati sono facilmente recuperabili. Alcuni valori relativi alla quinta voce del sommario (elemento [5]):

Chiamata Risultato
sommario[5].titolo Libro terzo
sommario[5].nome Georgiche/Libro terzo
sommario[5].from 102

Con questa funzione mi accingo a riscrivere completamente autoNs0() che sta facendo le bizze (era scritto male e funzionava per combinazione più che per robustezza dell'algoritmo :-( ).

La funzione è per ora contenuta in MediaWiki:Gadget-Tools.js; se si dimostrerà robusta verrà spostata in MediaWiki:Common.js o meglio in una "raccolta di tools base" caricata da Common.js. --Alex brollo (disc.) 18:14, 5 apr 2013 (CEST)[rispondi]

formMake()[modifica]

In Utente:Alex brollo/formMake.js trovate l'abbozzo di uno script abbastanza interessante. Siete in una pagina, in edit, che contiene un template tipo infobox (Intestazione, IncludiIntestazione, Infotesto, Autore col tool form disattivato.... Book, Creator....); lanciate lo script con un unico parametro (il nome del template che volete editare), e la finestra text diventa ineditabile, mentre il contenuto del template viene trasformato in un form in una finestra a destra, con due bottoni: "Salva la pagina" e "Salva nel box testo". Lo script è generale nel senso che legge i nomi dei parametri e ne permette di editare i contenuti; è totalmente indipendente dal progetto, dal nome del template, dal nome dei parametri.

Al momento è una bozza, si possono inserire parecchie migliorie (es: fargli "annusare" il template che serve dall'accoppiata progetto + namespace; fargli inserire automaticamente il template vuoto se manca; permettere l'edit del testo fuori del template.... ) ma insomma il "motore" c'è e ne sono già soddisfatto. :-) --Alex brollo (disc.) 23:38, 16 apr 2013 (CEST)[rispondi]

(PS: ovviamente ha alcune dipendenze, leggiBox(), scriviBox(), find_stringa(), parseTemplate().... dovrà viaggiare su altri progetti insieme a una piccola "libreria di stranezze alexiane").

Avviso a chi segue ultime modifiche[modifica]

Per chi segue Ultime modifiche: vedrete parecchi edit assurdi da parte mia. Non preoccupatevi, sono solo test per Alebot su Toolserver: sto riscrivendo la routine base che segue il canale #irc dove sono notificate le ultime modifiche. I dati che vengono replicati in #irc sono, per le pagine modificate, il nome pagina, il nome utente, il tipo di modifica e eventuale status di bot dell'utente, il sommario modifiche, l'URL per la pagina diff, la differenza in caratteri del testo a seguito della modifica. Questi dati saranno salvati e passati ad altre routine automatiche che faranno cose a seconda delle circostanze.

Non appena sarò pienamente soddisfatto di questa routine-base, chi di voi ha bisogno di "cose a seconda delle circostanze" potrà propormele.

Una delle cose fattibili (per esempio) è tener d'occhio gli utenti sospetti di essere seminatori di spam, pubblicando l'elenco dei loro contributi su una pagina ospitata su toolserver; ma il numero di cose che sipossono fare è praticamente infinito. Sempre che mi restino energie. :-(

Per ora vi chiedo pazienza e mi scuso dell'assenza: quando si hanno queste gatte da pelare per le mani, o ci si immerge completamente o non si combina un bel niente. --Alex brollo (disc.) 01:12, 1 mag 2013 (CEST)[rispondi]

Tranquillo Alex, ricordati ogni tanto che siamo volontari e facciamo le cose perchè ci piace. Non c'è nessun problema a prendersi delle sane e meritate pause. Aubrey McFato 12:15, 1 mag 2013 (CEST)[rispondi]
Buone notizie sul fronte Alebot su Toolserver. Voi sapete che su Toolserver Alebot segue il canale irc #it.wikisource dove scorre ogni modifica, come dicevo; purtroppo lo script "moriva" in caso di deconnessione del canale, il che succedeva piuttosto spesso in una irc con lunghe pause. Stranamente quasi nessun utente lavora nella tarda notte, diciamo dalle 2 alle 5: un neo da risolvere. :-P
Sono riuscito a "catturare l'errore" e a far riconnettere immediatamente il bot al canale, quando la connessione salta per qualsiasi motivo; questa è una buona base di partenza su cui costruire tutto "by scratch".
Per far correre lo script (che alla fine salverà su un comodo file txt tutte le modifiche (renderò il file txt leggibile sia a un bot che agli umani) non serve altro che un pc con connessione a Internet e python; non serve nè un account bot, nè tantomeno un account toolserver; quindi penso che chi di voi ha un PC sempre acceso potrebbe essere interessato a lanciarlo e dimenticarsene, ritrovandosi poi l'elenco delle ultime modifiche completo da leggere quando più gli aggrada. :-)
(Se poi riuscirò a produrre un file html "mappato" da leggere con un browser, magari filtrando al volo i contributi con un po' di css o di javascript, tanto meglio) --Alex brollo (disc.) 16:20, 2 mag 2013 (CEST)[rispondi]