Wikisource:Domande tecniche

Da Wikisource.
Domande tecniche
il punto d'incontro e discussione tra geek e niubbi!
archivio
Filing cabinet icon.svg
2014
2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020

Nuvola filesystems folder blue open.png Categoria: Domande tecniche Bar  Nuvola apps noatun.png Domande tecniche 

Pagina dedicata a domande sul software, sulla struttura organizzativa del progetto, sulla visualizzazione e i bug dei browser.



Indice

Tech News: 2014-01[modifica]

09:47, 30 dic 2013 (CET)

Tech News: 2014-02[modifica]

09:34, 6 gen 2014 (CET)

Ipotesi shortcut.js[modifica]

Sto provando Utente:Alex brollo/shortcut.js, funzione che consente di attivare shortcuts di tastiera con risultati abbastanza simili a Chrome Shortcut Manager - ma con il vantaggio che non è un software legato a Chrome.

Lo script è questo: http://www.openjs.com/scripts/events/keyboard_shortcuts/index.php

Attivato lo script, attivare una shortcut è semplice; il primo parametro è il tasto o combinazione, il secondo è la funzione che viene attivata dal tasto o dalla combinazione. Un terzo parametro, opzionale, consente di specificare opzioni varie.

Esempio: shortcut.add("Alt+9", function () {alert("E' stata premuta la combinazione ALT+9")});

La mia vittima designata, per i test, sarà Stefano Mariucci alle prese con Tartaglia :-) ma penso che Barbaforcuta si associerà all'impresa. --Alex brollo (disc.) 15:38, 6 gen 2014 (CET)

Funziona. Preso atto che le combinazioni di tasti Alt+0....Alt+9 sono tutte libere, faccio un esperimento: collego a queste combinazioni, nell'ordine della tastiera, da Alt+5 a Alt+0, gli "strumenti per la rilettura" che suggerisco di lanciare, nell'ordine, su una pagina da OCR standard. Man mano aggiungerò al nome della funzione la combinazione attiva. shortcut() sta in MediaWiki:Gadget-common.js, quindi se uno vede gli --Strumenti per la rilettura "vede" anche la funzione. --Alex brollo (disc.) 19:57, 8 gen 2014 (CET)
Abilitata la funzione shortcut per alcuni strumenti per la rilettura. Si tratta dei tool che nella maggior parte dei casi possono essere lanciati su una pagina con un buon OCR (tipo quello da IA) per "dare una ripulita": eliminare la prima riga che contiene pattume di intestazione pagina; aggiustare i paragrafi; ripulire da piccoli errori tipici dell'OCR; riunire il testo delle righe; aggiungere RigaIntestazione. Tutte queste funzioni (che sono tool vecchi, Aubrey!) adesso si possono chiamare anche con una combinazione di tasti Alt+5.... Alt+9, oltre che con il click del mouse. Due piccole modifiche: RigaIntestazione adesso funziona in un solo modo (quello chiamato anche dal bottone autoRi); anche postOCR richiama la stessa funzione. Prossimo passo, la revisione di AutoreCitato e l'eliminazione delle varianti. --Alex brollo (disc.) 22:22, 9 gen 2014 (CET)

Giocando con inherit[modifica]

Essendomi stato vietato di produrre nuovi tool, ho giocato un po' con il css (per alleggerire il codice delle tabelle).

Ho quindi inserito in MediaWiki:Common.css la seguente riga:

/* permette di registrare in un tag tr bordi e allineamento del testo che poi si propagano alle celle 
della riga */
.donor td, .donor th {border:inherit;text-align:inherit;}

che "propaga" eventuali proprietà di stile (NON attributi del tag html!) assegnati a una riga a tutte le celle figlie, se alla riga viene assegnata la classe "donor". Per ora le proprietà "donate" sono solo border e text-align, ma se ne possono aggiungere altre; questo semplifica il codice delle tabelle quando occorrerebbe assegnare a tutte, o a molte celle uno stile diverso da quello di default. Un esempio di applicazione nella tabella, suggerita da Barbaforcuta, qui (in questa versione della pagina il codice è stato usato solo nella seconda sotto-tabella, nelle successive sarà esteso alla terza e quarta) --Alex brollo (disc.) 08:26, 9 gen 2014 (CET)

(te l'ho vietato solo nel l'ambito della ricognizione della pagine di Aiuto, ma mi piace moolto questa cosa che mi hai preso sul serio: mettere a posto i tool precedenti è sicuramente utile per tutti, come fare pulizia di quello che non serve). Aubrey (disc.) 23:11, 9 gen 2014 (CET)
Chiaro.... spero solo di fare pulizia in fretta e bene prima che le pagine di aiuto nominino i tool/i gadget. --Alex brollo (disc.) 00:32, 10 gen 2014 (CET)

Semplificazioni[modifica]

Dalla cronologia di MediaWiki:Variabili.js osservo che da molti mesi sono io l'autore delle modifiche. Ciò significa che quella prcedura è, in sostanza, inutilizzata e può essere archiviata. Ugualmente, ritengo che sia archiviabile tutta la gestione dei "datiPagine" e della gestione dei cookie per la loro memorizzazione; tutti le procedure correlate possono essere sostutuite da altre, e alcune sono già atste sostituite (es. l'automazione di RigaIntestazione). L'intero insieme di funzioni correlate ai cookie può essere rimosso.

Fatta pulizia, eventualmente si possono ricostituire funzioni eventualmente utilizzate con altri metodi: Wikidata, blocchi di dati Lua o JSON, localStorage. A pulizia finita, attenderò i "lamenti" degli utenti che eventualmente usano (silenziosamente....) uno di questi trucchi e ne sentono l'improvvisa mancanza. --Alex brollo (disc.) 09:16, 10 gen 2014 (CET)

Mi pare una buona idea. Mentre fai pulizia, però, segna, in una tua pagina utente o in una pagina di aiuto, ciò che hai messo via, è importante. Magari in un secondo momento riscopriamo quello che hai fatto. Sai bene che non tutti (io no) ti stanno dietro, per cui capita che un tool molto interessanti sia semplicemente "non visto". un posto unico in cui ci sono i tuoi strumenti (non tutti, quelli più grossi) sarebbe utile. --Aubrey (disc.) 10:09, 10 gen 2014 (CET)
Grazie del suggerimento, per ora accumulo almeno gli script che elimino. Prossimo passo, pulizia dei due diversi tool per AutoreCitato e sostituzione con il nuovo tool che (nei test che ho fatto) fa che è una meraviglia e, come dicevo, "lavora" per similitudine e non per uguaglianza e gestisce le omonimie/similitudini presentando un elenco da cui scegliere con un click. --Alex brollo (disc.) 08:19, 11 gen 2014 (CET)
Inserito in MediaWiki:Gadget-common.js richiamo a Utente:Alex brollo/autoreCitato.js]] preliminare alla eliminazione dei vecchi tool. Fa comparire in bottoniera un pulsante selAut (Selezione Autore) --Alex brollo (disc.) 09:28, 11 gen 2014 (CET)
È merito delle tue semplificazioni che postOCR cambia RigaIntestazione anche se già esiste? Anche "virgolette" sembra non funzionare più. --Luigi62 (disc.) 20:51, 11 gen 2014 (CET)
Sì; questo è sempre stato il comportamento di "autoRi". In effetti può essere un problema (anche se nel mio "stile di lavoro" non mi ha mai infastidito). La semplificazione comporta che appena correggerò la funzione, cosa che tento di fare immediatamente, la correzione sarà "generalizzata".
Virgolette non l'ho toccato; verifico. --Alex brollo (disc.) 17:53, 12 gen 2014 (CET)
Sistemati entrambi; la semplificazione comporta anche.... che mettere le mani sugli script è un pochino più semplice :-) Alex brollo (disc.) 18:09, 12 gen 2014 (CET)
autoRi proprio non funziona più. Virgolette ora funziona, ma come si fa a cambiare il tipo di virgolette da utilizzare come standard? --Luigi62 (disc.) 00:32, 14 gen 2014 (CET)
Ehi, manco un paio di giorni e vedo fibrillazioni. :-) Una pulizia credo sia necessaria. L'idea di accorpare gadget-common e regex è ottima; sul datiPagine mi ricordo fosse utile, ma non lo uso da un po' (se può essere egregiamente sostituito da altro ben venga). Sarebbe utile avere un accorpamento di alcuni gadget (vedi i 5 che aggiungono la numerazione dei versi, forse superati da qualche marchingegno in Lua).--Barbaforcuta (disc.) 12:02, 14 gen 2014 (CET)
Ah io accorperei anche gadget-tools ai due precedenti, così d'avere tutte le funzioni utili in un'unica pagina.--Barbaforcuta (disc.) 12:18, 14 gen 2014 (CET)
Grazie Luigi62, in effetti avevo infilato un banale errore logico per correggere il comportamento che mi avevi segnalato.... purtroppo sto trascrivendo un testo che non usa rigaIntestazione e non ho avuto occasione di accorgermene. Per le virgolette: non ho ancora trovato un giusto compromesso fra semplicità e elasticità.... datiPagine era troppo complicato. Che virgolette ti servirebbero? --Alex brollo (disc.) 20:04, 14 gen 2014 (CET)

Tech News: 2014-03[modifica]

10:33, 13 gen 2014 (CET)

Maledetti apostrofi[modifica]

Da una nota di Accurimbono, ho ripreso in mano la questione Virgolette() e ho di nuovo maledetto gli apostrofi. I caratteri «...» “...” 〈...〉“...„ „...“ vanno tutti bene ma.... ‘...’ pianta lo script. Il motivo è presto detto: per il carattere di chiusura dell'ultima combinazione si usa lo stesso carattere Unicode 8217 che si usa per l'apostrofo tipografico; il che significa, conflitto fra script virgolette e script di tipografizzazione degli apostrofi. Non riesco quindi a estendere lo script Virgolette() a quest'ultimo caso :-(.

Se invece volete farvi un bottone che use altre coppie di virgolette, lo schema della funzione funzionante è questo (sostituite ai caratteri virgolette «» quelli che vi servono)

newButton("«»", Virgolette("«","»")","es","Virgolette");

--Alex brollo (disc.) 08:44, 16 gen 2014 (CET)

@Alex brollo: qual è il problema? --Ricordisamoa 21:36, 17 gen 2014 (CET)
Il problema è che non è possibile riconoscere, se non con una analisi del contesto che temo impossibile da automatizzare, quali sono apostrofi e quali sono invece virgolette di chiusura; e se non lo capisco, non posso correttamente appaiare le coppie virgoletta aperta-virgoletta chiusa. Pazienza; vuol dire che i pochi casi in cui si usano le virgolette semplici si faranno "a mano". --Alex brollo (disc.) 21:46, 17 gen 2014 (CET)

Tech News: 2014-04[modifica]

11:21, 20 gen 2014 (CET)

Wikidata: API e Lua[modifica]

Ho trovato delle funzioni Lua per ricevere dati da wikidata; ho provato un po' l'API di wikidata ma con scarso successo. Infine ho trovato menzione di una funzione parser #property senza riuscire a trovare uno straccio di doc. Dove cerco? --Alex brollo (disc.) 18:48, 22 gen 2014 (CET)

Da qui: http://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua ho importato il codice per il modulo Lua Modulo:Wikibase dopodichè ho testato un esempio:
* ID: {{#invoke:Wikibase|id}}
con il seguente risultato:
  • ID: (no item connected)
La cosa non mi soddisfa. Dove sbaglio, cosa manca? Vado a vedere come sono su wikipedia. --Alex brollo (disc.) 09:55, 23 gen 2014 (CET)
Alex, da quello che diceva Ricordisamoa qui, mi pare di capire che il modulo Wikibase non funzionerà fino a che non attivano la Fase 2 (Lydia diceva qualche giorno fa che ci sarà da aspettare almeno 1 mese). Candalùa (disc.) 11:28, 23 gen 2014 (CET)
@Ricordisamoa:Come temevo. Ricordisamoa, mi metteresti qui un paio di query API funzionanti su wikidata, che diano un risultato utile per noi? Vorrei provarle di là, e poi vedere se riesco a trasformarle in chiamate Ajax via JSONP. Ho provato qualche query API su wikidata ma non ho avuto i risultati sperati. Chiedo a ricordisamoa perchè è stato citato, ma ovviamente chiedo a tutti color che sanno.... :-) --Alex brollo (disc.) 11:59, 23 gen 2014 (CET)
Alex, non so se può esserti di aiuto, ma considera che su it.wiki la fase due è già attiva, per cui se sei impaziente puoi sperimentare si it.wiki! ;) --Accurimbono (disc) 12:16, 23 gen 2014 (CET)
Grazie.....sì, ho già provato là il loro w:modulo:Wikidata, e ho già verificato che là funziona e qui no. Aspetto.... ma nel frattempo vorrei dedicarmi alla APIcultura e non avrò pace finchè non romperò il ghiaccio. Curioserò nel codice di pywikibot, qualche richiesta API dovrei trovarla... --Alex brollo (disc.) 13:53, 23 gen 2014 (CET)
Trovato! action=wbgetentities in mediawiki :-) --Alex brollo (disc.) 14:53, 23 gen 2014 (CET)
Qui il primo script js che da qua legge là. Lo farò partire all'apertura di una pagina Autore sbattendo i dati in localStorage; poi se si vuole si usano. --Alex brollo (disc.) 15:28, 23 gen 2014 (CET)
Come al solito.... ho scoperto la ruota :-)
Avendo montato e attivato MediaWiki:WikidataLink.js, quello che fa comparire il link "Wikidata" in sidebar, in $("body").data("wikidata") c'è un sacco di roba; in pratica un ottimo estratto di tutti i dati della "entity". Non solo: i dati sono caricati sia in view, che in edit, quindi sono accessibili a javascript intanto che si edita. Chissà, forse sono anche presenti al momento della creazione di una nuova pagina Autore... adesso verifico. --Alex brollo (disc.) 22:03, 23 gen 2014 (CET)
Confermo: sono tutti già presenti al momento della creazione di una nuova pagina Autore. In pratica, il form Autore, nei casi in cui viene agganciata un'entità wikidata, potrebbe autocompilarsi. I dati son, ma chi pon mano ad essi? Questo fa il paio con la possibilità - conosciuta da pochi - di leggere qualsiasi dato e lanciare qualsiasi API su qualsiasi progetto da qualsiasi altro progetto wiki.... segreti ben costoditi nelle mani di pochi. :-( --Alex brollo (disc.) 09:21, 24 gen 2014 (CET)

@Alex brollo: converrà usare Lua invece delle funzioni parser (che non supportano bene asserzioni multiple e fonti); vorrò vederti all'opera nello sviluppo di Modulo:Autore! ;-P --Ricordisamoa 22:51, 5 feb 2014 (CET)

@Ricordisamoa: ho rovistato qui] e mi sono studiato un po' l'orrido oggetto restituito da wikidata. Sono un pochino impressionato dalla quantità di letture a wikidata per tradurre le entità restituite per solo ID all'interno dell'oggetto.... toccherà ridurle un poco con un dizionario locale, almeno per le più comuni; altrimenti si fa notte. In effetti, il tempo che wikidata sta per aprire la pagina di una entity dà l'idea dell'enorme lavoro server che ci sta dietro. Speriamo bene.... ecologicamente parlando questa enorme circolazione di dati mi spaventa un pochetto come "impatto energetico".--Alex brollo (disc.) 00:42, 6 feb 2014 (CET)
@Alex brollo: al momento solo l'item corrispondente alla pagina che richiama il modulo è accessibile interamente; da' anche un'occhiata a WP:DWAP. --Ricordisamoa 14:49, 6 feb 2014 (CET)
@Ricordisamoa: DWAP? Adesso mi preoccupo il doppio: oltre alle risorse energetiche e informatica da performance/da banda/da tempo server, mi rendo conto che a ciò devo pure aggiungere la preoccupazione sulle risorse umane e finanziarie per pagare gente che risolve i problemi che io creo.... quanto a item corrispondente alla pagina che richiama il modulo aimè trovo il concetto oscuro peggio di una closure :-( --Alex brollo (disc.) 16:14, 6 feb 2014 (CET)

Esercizio wikidata[modifica]

Mi sono costruito il primo gadget personale su wikidata (giusto per studiare un po' il progetto). In sidebar su wikidata, mi compare uno strumento "Esporta su source" (da usare sugli autori che su wikidata ci stanno, ma su source non ci stanno ancora). Funziona così: dalla pagina wikidata della persona si clicca. Tutto qua.

Dopo cliccato, wikidata si chiude da sè e al suoposto si apre la pagina di creazione del nuovo autore (o di edit, se l'autore c'è) su source. Tutte le proprietà sono "trascinate dietro" nell'URL, pronte a essere infilate, una a una, nel form Autore di Candalua, o usate per la verifica dei dati esistenti. Qui mi sono fermato, perchè da questo punto in poi le cose sono molto più facili; mi domando se val la pena andare avanti e se magari possiamo approfittarne per caricare qualche dato aggiuntivo (tipo i codici del "controllo di autorità" VIAF ecc). --Alex brollo (disc.) 01:02, 25 gen 2014 (CET)

Comincio a capire qualcosa di wikidata. In particolare, comincio a capire perchè le pagine delle entità (apparentemente con "quattro dati") sono pesantissime, e ci mettono vari secondi per essere caricate. Per capirlo, basta studiare l'oggetto $("body").data("wikidata") che invece viene caricato in un attimo - i dati ci sono, ma ognuno dei dati (perlomeno la maggior parte) è solo un ID che punta a un'entità; ci vuole per ognuno un'altra lettura al server, per "agganciare" il valore, come visto dalla lingua corrente; perchè in realtà ad ogni entità sono associati numerosissimi "nomi", uno per lingua.
Questo spiega anche perchè mi sono deciso ad abbandonare l'analisi di $("body").data("wikidata") e dirottare l'attenzione sulla pagina wikidata dell'entità: in quella pagina, tutti i dati sono già stati collegati al loro valore, nella lingua desiderata, e sono pronti per essere utilizzati.
Un esempio per i "mezzi geek", i geek veri lo sanno già. Sotto Chrome, vado su Autore:Alessandro Verri e apro la console javascript. Scrivo $("body").data("wikidata") per "vederlo", e ci navigo dentro. Trovato l'ingresso all'oggetto, Q780989, apro i claims e trovo che P21 ha come valore un item wikidata Q6581097. Un dato bello, pulito e verificato, ma.... del tutto incomprensibile. Diventa comprensibile se leggo due volte wikidata e scopro che P21 è la "proprietà" sesso, e Q6581097 è il suo valore in questo caso, ossia maschio. Questo è quel che ci serve.... possiamo caricare il valore, o leggerlo ogni volta su wikidata; penso che la prima soluzione sia più rapida, per ora.
Prossimo passo: ficcare in localStorage un dizionario delle entità wikidata più comuni (a partire dalle "proprietà", come P21), in modo di averlo sottomano e di dover leggere solo quelle sconosciute. --Alex brollo (disc.) 15:19, 25 gen 2014 (CET)
✔ Fatto Caricato un dizionario di tutte le proprietà generiche e di quelle specifiche per persone e opere (letteratura). Ci aggiungerò le entità collegate, scegliendo quelle con un numero ragionevole di valori (sesso, professione, forse stato di nascita); il numero di letture da fare per completare la decodifica penso si sia ridotto parecchio (la decodifica non serve per parecchi tipi di valori). --Alex brollo (disc.) 16:38, 25 gen 2014 (CET)
Alex, non ti fermerò certo dallo studiare Wikidata, ma ricordati che fra un mese o poco più ci sarà l'integrazione direttamente con i singoli statements. Questo vorrà dire che potremmo sempre avere un template {{Autore}} (in Lua, idealmente) sulle nostre pagine autore, e quel template sarà fatto in modo da richiamare, da Wikidata, i dati che vogliamo. Ora, questo vorrà dire che, in quelche modo, noi dovremmo prima mettere su Wikidata i dati da wikisource, e questo si fa sempre via bot. Cioè, dovremo importare tutti i dati biografici che possediamo e metterli direttamente là sopra. Se vuoi studiare questa cosa, sarà secondo me enormemente utile. Puoi chiedere lumi anche a @Ricordisamoa: e @Candalua:, sono gli unici utenti italiani che conosco che hanno il bot là sopra. Aubrey (disc.) 16:52, 25 gen 2014 (CET)
Ho dato un'occhiata sia al tag magico {{#property}} che alle funzioni Lua per accedere ai dati; so bene che questa "esplorazione" è solo conoscitiva... ma sono qui, sostanzialmente, per divertirmi e questa esplorazione mi diverte :-) --Alex brollo (disc.) 18:00, 25 gen 2014 (CET)
@Alex brollo: non vale la pena di prodigarsi nell'uso dei dati adesso, dovremo piuttosto migrarli tra un mesetto, a favore di quelli già presenti su Wikidata, di certo più completi e aggiornati Gnome3-wink.svg --Ricordisamoa 22:21, 5 feb 2014 (CET)

Soppressione di dehyphen()[modifica]

Non so chi ha inserito dehyphen() in Common.js, ma alla prima pagina in versi che ho creato mi sono precipitato a sopprimerla sostituendola con il codice dentro cleanup(), che unisce solo le righe hyphenate (che per definizione non esistono nelle opere in versi tranne eccezioni di cui non ricordo nemmeno un caso). Meglio sarebbe non replicare il codice di cleanup(), ma fare in modo che sia il pulsante/il link che la chiamata automatica attivino lo stesso script per rispettare il sacro principio If you are repeating yourself, you are going wrong. Un principio che fa un po' ridere in MediaWiki dove le cose vengono ripetute millantadue volte ciascuna.... ma tant'è. :-)

In generale, suggerirei di rimandare quanto più possibile l'unione delle linee anche nelle prose, perchè ostacola il confronto con il testo a fronte e non comporta il minimissimo vantaggio nella resa html --Alex brollo (disc.) 16:38, 26 gen 2014 (CET)

Tech News: 2014-05[modifica]

10:46, 27 gen 2014 (CET)

Lua + lst[modifica]

Mi domando: che accade passando a Lua come parametro il risultato di un una chiamata #lst? Proverò; ma visti vecchi esperimenti ritengo - per questioni di priorità - che gli venga passato il risultato di #lst; e se tale risultato fosse un oggetto tipo JSON, allora... si aprirebbe un nuovo capitolo della nostra source altamente semantizzata.  :-) --Alex brollo (disc.) 07:27, 29 gen 2014 (CET)

Tech News: 2014-06[modifica]

09:30, 3 feb 2014 (CET)

Domande su Labs[modifica]

@Candalua: @Ricordisamoa: ... e ad altri eventuali frequentatori di Labs:

  1. che strumenti sono disponibili sul server per l'elaborazione di immagini? C'è ancora ImageMagick? Altri?
  2. esiste nconvert (che è quello che uso io nel mio povero pc vintage)?
  3. dovendo estrarre le immagini da un file xxx.pdf trasformandole in jpg oppure tiff dentro una cartella chiamata out, sapreste darmi una ricetta indicativa o dirmi dove c'è la doc per studiare l'applicazione di elaborazione grafica?
  4. tale applicazione, che voi sappiate, potrebbe eseguire anche uno split dell'immagine estratta dal pdf? --Alex brollo (disc.) 00:06, 5 feb 2014 (CET)
Giusto per notificarvi i lavori in corso: ho ripreso in mano nconvert e python, e vecchi tool abbandonati; il risultato è che ho un file python che acchiappa un file pdf OPAL (scansioni a doppia facciata) e restituisce il zip delle immagini jpg estratte dal pdf autocroppate e splittate pronte a essere caricate su Internet Archive (potrei farlo con immagini tiff, ma l'archivio risultante è quasi 10 volte più grande e vedo che le immagini jpg non danno un risultato schifido). La routine usa solo python (+PIL) e nconvert (l'applicazione batch di XnView). Bello sarebbe che questa cosa fosse trasformata in un tool su Labs, che magari, alla fine, si occupasse anche del caricamento su IA. --Alex brollo (disc.) 08:39, 5 feb 2014 (CET)
Mi pare una grandissima idea, dovresti magari parlarne con Tpt, che su labs ha ovviamente i suoi script. Ti nomino lui con reticenza perchè ha mille cose da fare, ma sarei il primo a godere di una suite di tool "Wikisource" su Labs, e mi piacerebbe avere le cose coordinate e nello stesso posto. --Aubrey (disc.) 09:45, 5 feb 2014 (CET)
Ho mandato in lista Labs una richiesta un pochino più generica, nel corso dell'eventuale discussione posso aggiungere "dove vorrei andare a parare". --Alex brollo (disc.) 10:44, 5 feb 2014 (CET)
@Alex brollo: su Tool Labs sono ancora un novellino, fai bene a chiedere ad altri ;-) --Ricordisamoa 03:26, 13 feb 2014 (CET)

Tech News: 2014-07[modifica]

10:30, 10 feb 2014 (CET)

Problema css[modifica]

In Drammaturgia di Lione Allacci/Tavola degli autori/A ho il problema di eliminare l'indentatura dei paragrafi che costituiscono le righe dell'indice. Il text-indent dovrebbe essere determinato dalla div class "eredita", ed in effetti il css è ricevuto dall'elemento, ma è "rullato" dal text-indent determinato da div class="testi". Perchè? Non capisco! L'unica idea che mi viene è che il css text-indent venga impropriamente caricato "dopo" in termini temporali per questioni di resource loader ... ma forse è una delle solite banalità che sfuggono a chi ci è dentro ma sono evidenti al primo che passa. Quindi, per favore... passate. :-(

PS: qualsiasi altro attributo css passato dalla classe "eredita" arriva regolarmente ai paragrafi.... text-indent invece viene rullato. --Alex brollo (disc.) 11:08, 12 feb 2014 (CET)

Per caso scopro che il tag p "stenta" a ereditare gli attributi della div class="eredita", ma un altro tag block come dd (generato dai due punti) li eredita benissimo, compreso il text-indent. La resa mi sembra buona... esploro questa strada, mi pare promettente (e abbastanza semplice semplice). --Alex brollo (disc.) 22:19, 12 feb 2014 (CET)

@Alex brollo:

/* direttiva !important, selettori più specifici */
div.eredita p,
div.eredita>p,
div.eredita.testi p,
div.testi div.eredita p,
div.eredita div.testi p
{text-indent:0!important}

Vai per tentativi. --Ricordisamoa 03:38, 13 feb 2014 (CET)

Aaaaahhh, adesso so chi stressare per poroblemi di css.... grazie, li proverò uno a uno; tuttavia il fatto che il mio settaggio funzioni con dd ma non funzioni con p mi rende un po' pessimista. Se veramente esiste un'interferenza "temporale" di caricamento dei file css via Resource Loader, con la conseguenza di rendere instabile/aleatorio il risultato, il problema sarebbe generale e grosso; ma sarebbe anche nettamente superiore alle mie capacità di descriverlo adeguatamente in Bugzilla.... in caso farò un fischio virtuale. --Alex brollo (disc.) 10:27, 13 feb 2014 (CET)

Dati nelle pagine autore[modifica]

All'inizio di ogni pagina nel namespace Autore trovo dei tag section (usati da LST). Non sono ridondanti ai dati presenti nel template {{Autore}}? --Ricordisamoa 06:18, 16 feb 2014 (CET)

No, perchè permettono di usare tali dati in qualsiasi pagina: "semantizzano" i dati. E' il nostro "wikidata fai da te"; sarà superato nel momento in cui da qualsiasi pagina si potrà ottenere qualsiasi dato relativo a qualsiasi autore (il che è diverso da visualizzare qualsiasi dato nella pagina Autore). Qualcuno mi ha fatto biezioni riguardanti la performance (LST non è ottimizzato come dovrebbe/potrebbe); ma adesso seguo il principio DWAP e non me ne curo ;-) --Alex brollo (disc.) 16:56, 16 feb 2014 (CET)
Il template Autore non potrebbe includere anche i tag "section" già compilati? --Ricordisamoa 23:38, 16 feb 2014 (CET)
No, non si può inserire il tag section in un template. Magari.... --Alex brollo (disc.) 00:23, 17 feb 2014 (CET)

Errore di categorizzazione alfabetica[modifica]

Ci sono obiezioni? --Ricordisamoa 06:27, 16 feb 2014 (CET)

Tech News: 2014-08[modifica]

09:38, 17 feb 2014 (CET)

Il magico mondo dei pixel[modifica]

Sto imbarcandomi in una nuova avventura: l'immersione nel "modo dei pixel", a basso livello (quello che serve per PIL e per l'uso avanzato di canvas). Il problema che finalmente m,i sento pronto ad affrontare è: data l'immagine di una pagina pdf OPAL (a doppia facciata, talora un po' "sbieca", che non copre l'inteera immagine perchè è stato fotografato anche un po' di "fondo") raddrizzarla in base alla linea della rilegatura e centrarla in base alla stessa linea in modo che un taglio verticale a metà immagine risulti perfetto. Non è facile; anche FineReader, che pure ha un sistema di riconoscimento delle doppie pagine ed è capace di dividerle automaticamente quando le riconosce, spesso con i libri antichi fallisce. Questo per ora mi ha costretto a ripassare anche statistica e trigonometria... e un pochino di neurofisiologia della retina. o_O

Ve lo dico per due motivi:

  1. c'è qualcuno esperto nella manipolazione delle immagini a basso livello, filtri, PIL ecc?
  2. esiste qualche programnma ad alto livello a cui affidare il compito di ruotare-centrare-splittare in batch, meglio di come lo sappia fare FineReader? --Alex brollo (disc.) 23:39, 17 feb 2014 (CET)
Per i pythonomani: sto sperimentando la class Eye (la "classe occhio") :-) --Alex brollo (disc.) 09:30, 18 feb 2014 (CET)
Conosci imagemagick? Lo usavano qui in ufficio per ruotare-croppare-splittare in batch. --Aubrey (disc.) 12:58, 18 feb 2014 (CET)
Si, grazie, Aubrey; non lo maneggio ma dovrò studiarlo; la stessa cosa posso fare, al momento, con nconvert o con PIL di python. Il problema è però: come calcolare automaticamente i parametri da passare al batch per eseguire la rotazione e il ritaglio?

Ecco due immagini da un testo Opal che ho appena caricato in IA:

Pag bianca.jpg Pag marcata.jpg

Il problema è tracciare automaticamente la riga rossa come nella seconda immagine (per farlo occorre una primordiale analisi di immagine, cosa del tutto diversa da un'elaborazione batch di immagine). In questa immagine che avevo sottomano la riga rossa è quasi verticale e quasi al centro, ma in altri casi non è affatto nè verticale, nè al centro. Sto lavorando a un "occhio virtuale" che scorre l'immagine e trova ciò che è caratteristico della linea che separa le due immagini, ma non è semplice. Si tratta di implementare qualcosa come "Circa a metà dell'immagine, trova una linea verticale o obliqua più scura dell'immediato contesto e restituiscine posizione e gradi di inclinazione rispetto alla verticale, oppure coefficienti a e b della retta". Il resto è trigonometria.... --Alex brollo (disc.) 08:31, 19 feb 2014 (CET)
Progetto sospeso; gran parte dei file Opal non richiedono questa manipolazione.... la accantono, c'è ben altro da fare. --Alex brollo (disc.) 12:46, 25 feb 2014 (CET)

Tech News: 2014-09[modifica]

11:18, 24 feb 2014 (CET)

Script opalLib.py[modifica]

Non potevo farlo prima perchè nel codice c'erano in chiaro le mie chiavi di accesso personali a Internet Archive; sistemati i punti critici dello script, mi sono potuto dedicare alle prime rifiniture, e li ho fatti sparire dal codice.

Metto in Progetto:Trascrizioni/Opal/opalLib.py il codice attuale che gira su tools-dev. Chi conosce la programmazione, abbia pietà. --Alex brollo (disc.) 23:12, 27 feb 2014 (CET)

Segnalazione[modifica]

Segnalo questa discussione--Piaz1606 (disc.) 00:49, 1 mar 2014 (CET)

Tech News: 2014-10[modifica]

10:30, 3 mar 2014 (CET)

API di internet archive per i metadati[modifica]

Guardate questo libro di IA: https://archive.org/details/image156TeatroOpal

Notate l'id: image156TeatroOpal. Questo vi permette di risalire immediatamente all'URL diretto del pdf su Opal; il pdf su Opal si chiama proprio image156.pdf e sta dentro la raccolta Teatro.

L'URL della raccolta Teatro ha sempre, come base,

  • http://www.opal.unito.it/psixsite/Teatro italiano del XVI e XVII secolo/Elenco opere/

Aggiungiamo in fondo il nome del pdf:

  • http://www.opal.unito.it/psixsite/Teatro italiano del XVI e XVII secolo/Elenco opere/image156.pdf

ed ecco il link funzionante:

Non è finita! Provate l'effetto di questi due link:

Il primo restituisce l'intero set di metadati IA (anche quelli interni di servizio); il secondo i medatadi inseriti da chi ha caricato, quelli bibliografici; il terzo restituisce, all'interno dei secondi, il solo metadato "title" (il titolo). A qualcuno di voi può sembrare astruso, poco chiaro e "povero"; ci giurerei che Candalua, Ricordisamoa, e altri geek o semigeek si fregheranno le mani :-) @Ricordisamoa:: questi dati sono particolarissimi anche dal punto di vista Wikidata, perchè hanno la fonte implicita (l'originale del libro), la migliore immaginabile. Un pensierino lo farei: IA->wikidata->commons book e -> it.wikisource Indice: ; tutti perfettamente allineati) --Alex brollo (disc.) 10:58, 4 mar 2014 (CET)

Acchiappo dei metadati da IA tipo Ajax[modifica]

Per coloro che maneggiano javascript, in cima al mio common.js due funzioni IA() e IAload() (mi scuso se sono lunghe e complesse :-D ) attivate le quali un'istruzione js tipo:

IAload("image10TeatroOpal")

acchiappa tutti (ma proprio tutti!) i metadati contenuti nella pagina details dell'item e li ficca in $("body").data("IA") dove restano tranquilli finchè la pagina non viene abbandonata. Questo in qualsiasi progetto mediawiki, anzi: in qualsiasi sito dove sia attivo jQuery. --Alex brollo (disc.) 19:09, 7 mar 2014 (CET)

Ajax API interprogetto: sapevatelo?[modifica]

Vi posto il modo più semplice che ho scovato per lanciare una Ajax API interprogetto (qualsiasi API, qualsiasi progetto):

risultato=""
$.getJSON("https://en.wikisource.org/w/api.php?action=query&prop=contributors&titles=Main_Page&format=json&callback=?", function (data) {risultato=data})

oppure più semplicemente in un solo colpo

$.getJSON("https://en.wikisource.org/w/api.php?action=query&prop=contributors&titles=Main_Page&format=json&callback=?", function (data) {
    $("body").data("ApiResult",data)
})

Il truccaccio sta, oltre che a usare $.getJSON, di ricordarsi di aggiungere alla fine della API &format=json&callback=? Alex brollo (disc.) 08:50, 10 mar 2014 (CET)

Tech News: 2014-11[modifica]

10:10, 10 mar 2014 (CET)

Tech News: 2014-12[modifica]

08:14, 17 mar 2014 (CET)

Editor per djvu text layer[modifica]

Sappiamo molte cose sullo strato testo djvu; quello che manca è uno strumento semplice, intuitivo, infallibile per editare lo strato testo modificando solo ed esclusivamente il testo senza toccare un sacco di altra roba (struttura, coordinate degli elementi), che può essere trasformata in una struttura html (tipo hOCR oppure analoghi, in html5 dovrebbe essere molto più agevole). L'importante è che l'editor permetta solo di editare il testo e non tocchi i tag html.

Scopro e resto a bocca aperta tinyeditor, uno script js che permette di trasformare qualsiasi textarea in un "editor hrml WISIWYG"; leggo il codice, brevissimo (11 kby!) e piombo nella disperazione perchè è scritto in aramaico. Non ci capisco nulla :-( . La sfida è: qualcuno è in grado di capirlo? Se sì, e se qualcuno è in grado di modificarlo, questo breve script potrebbe essere la chiave per la soluzione del problema. Il resto è facile. --Alex brollo (disc.) 10:02, 17 mar 2014 (CET)

Perché non CKEditor? --Ricordisamoa 16:48, 17 mar 2014 (CET)
CKEditor è "grosso", e non è immediatamente evidente la possibilità di applicarlo a una qualsiasi textarea in qualsiasi pagina web in cui si possa in filare un pochino di js aggiuntivo (la possibilità che non sia evidente non la esclude!). Tinyeditor potrebbe essere infilato direttamente nella pagina di edit di wikisource (in teoria), anche se prima vorrei ideare un tool "autonomo".
Inoltre, per quello che serve a me, almeno l'80% del codice di tinyeditor (che pesa 11 k: poche decine di righe, una specie di miracolo dell'astrazione...) non mi serve affatto; devo solo capire come isolare, nel codice, la parte "fondamentale" e eliminare tutto il resto. Per quello cerco un interprete: perchè nonostante sia javascript puro, è per me, al momento, totalmente e assolutamente incomprensibile.
Se sei disponibile a approfondire, potrei elencarti qui le caratteristiche dell'"editor perfetto" che cerco: una banalità assoluta, da cui dipende, facendo le cose bene, l'impossibilità di sbagliare (o quasi)--Alex brollo (disc.) 09:19, 18 mar 2014 (CET)
Non hai pensato a un plugin specifico per VisualEditor? --Ricordisamoa 15:25, 18 mar 2014 (CET)
Certo; e in effetti ho già verificato che per certi versi VE sarebbe ideale ed in effetti funziona; ma la sua complessità è tale da scoraggiare ogni approccio. Quando ho chiesto come si monta sopra un gadget js qualsiasi mi è stato risposto che... stavano progettando la cosa da mesi, e non era finita. Io uso preferenzialmente quello che capisco; VE non lo capisco. Stavo comunque pensando di esporre i dettagli del problema a qualche sviluppatore. Si tratterebbe solo di disattivare quasi tutto. --Alex brollo (disc.) 18:27, 18 mar 2014 (CET)
Volendo possiamo anche discuterne operativamente qui: https://meta.wikimedia.org/wiki/Grants:IdeaLab/Djvu_text_layer_editor --Alex brollo (disc.) 11:16, 21 mar 2014 (CET)

Ipotesi per l'inserimento delle immagini nelle pagine[modifica]

E' possibile scaricare da Internet archive le singole immagini delle pagine in formato originario (tiff) oppure nella migliore "derivazione" possibile di un pdf (jp2, jpg). E' quindi possibile, avendo le cordinare di un'immagine sulla pagina, cosa che sta dentro il template Ritaglio, istruire un bot per scaricare le immagini originali (e non quelle manomesse dal sistema di compressione dei file djvu), ritagliarle, sottoporle a eventuale elaborazione (es. conversione in BN o in scala di grigi) e caricarle su Commons; dopodichè è possibile sostituire il tl Ritaglio con una normale chiamata a un'immagine.

Non è una cosa da poco.... ma ho verificato tutti i passaggi, si può fare. Chi ci sta a aiutarmi, o a prendersi in carico questo progettino? --Alex brollo (disc.) 05:31, 20 mar 2014 (CET)

Immagini ad alta risoluzione da IA[modifica]

Grazie a Nemo ho scoperto che è possibile utilizzare le immagini delle singole pagine alla massima risoluzione possibile, scaricandole direttamente da IA, come file jpg.

Questo significa che in caso di pagina troppo compressa e dubbia all'interno del djvu, è teoricamente possibile, con un click, sostituirla con un'immagine ad alta risoluzione aggirando tutto il sistema di visualizzazione dell'estensione proofreading; una volta caricata, l'immagine "regge" anche alla variazione di layout verticale/orizzontale.

L'indirizzo dell'immagine è ricavabile avendo solo l'ID del libro su IA, e il numero della pagina.

Esempio

L'ID di File:Ritratto delle più nobili et famose città d'Italia.djvu è imageMA95NarrativaOpal. Da qui si ricava:

  • il nome della pagina principale del libro su IA è //archive.org/details/imageMA95NarrativaOpal
  • per accedere all'indice del file zip che contiene le immagini jp2/jpg l'indirizzo è //archive.org/download/imageMA95NarrativaOpal/imageMA95NarrativaOpal_jp2.zip/
  • per accedere direttamente all'immagine della pagina 5 l'indirizzo è://archive.org/download/imageMA95NarrativaOpal/imageMA95NarrativaOpal_jp2.zip/imageMA95NarrativaOpal_jp2%2FimageMA95NarrativaOpal_0004.jpg

--Alex brollo (disc.) 08:34, 24 mar 2014 (CET)

@Ricordisamoa:: come da bar generalista, esiste uno script prototipo che carica da IA l'immagine ad alta risoluzione della pagina sostituendola a quella compressa proveniente dal djvu di Commons. Il problema è recuperare l'ID IA del libro da cui è stato estratto il djvu. Chiedo a chi lo sa fare di aprire un item Wikidata del libro Indice:Ritratto delle più nobili et famose città d'Italia.djvu (Internet Archive) e di infilare fra i metadati il codice IA, in modo che in questo caso-test (e poi nin tutti gli altri) l'ID IA si possa recuperare al volo da wikidata; tale ID è tutto ciò che serve per ricavare l'url esatto dell'immagine della pagina su Internet Archive. Mi sembra di essermi spiegato chiaramente ;-) --Alex brollo (disc.) 08:21, 25 mar 2014 (CET)
@Alex brollo: tramite le nuove API ho creato d:Q15978367 aggiungendo anche la dichiarazione in una singola modifica! --Ricordisamoa 11:14, 25 mar 2014 (CET)
Grazie! Dai un'occhiata a come ho "manomesso" l'item e vedi anche discussione che ho aperto in pagina discussione di Book task force. --Alex brollo (disc.) 16:46, 26 mar 2014 (CET)

Tech News: 2014-13[modifica]

19:56, 24 mar 2014 (CET)

Tech News: 2014-14[modifica]

11:20, 31 mar 2014 (CEST)

File xml di Internet Archive[modifica]

Ogni libro di Internet Archive contiene due xml molto interessanti per la gestione del testo:

  • il file _djvu.xml;
  • il file _abbyy.xml (mascherato dentro un file gz)

Il primo ha i seguenti contenuti e caratteristiche:

  • contiene tutti i dati/metadati generali del file djvu;
  • contiene il testo mappato (coordinate) delle pagine, nelle regioni page-column-region-paragraph-line-word;
  • è strutturato in modo da poter essere riversato nel file djvu senza parametri (ne sostituisce completamente lo strato metadati e testo)

Il secondo ha i seguenti caratteri:

  • contiene tutto il testo mappato fino a livello di singolo carattere:
  • per ogni elemento carattere contiene dati di vario tipo riguardanti la formattazione e il grado di certezza del riconoscimento;
  • non può essere riversato nel file djvu senza profonda rielaborazione.

Test preliminari dimostrano che è possibile aggiungere agli elementi word del primo markup wiki o markup html, che saranno poi normalmente recuperati come puro testo in edit della pagina su source. Le coordinate testo dei due file xml corrispondono; è quindi possibile "travasare" qualcuno dei (ridondanti) dati del secondo nel primo; ad esempio, è possibile estrarre il dato "certezza del riconoscimento OCR" delle singole parole e aggiungerlo allo strato testo di djvu.xml in modo che le parole incerte siano identificabili nel testo come compare sia in view che in edit.

Un'altra cosa che si potrebbe fare + produrre un dizionario completo degli elementi parola del file djvu, con le proprie coordinate, e editarlo in massa prima di ricaricarlo; ogni parola, essendo associata alle proprie coordinate, può essere anche estratta dal file immagine "ritagliandola" esattamente per visualizzarla singolarmente. --Alex brollo (disc.) 08:41, 3 apr 2014 (CEST)

Mi sta pungendo vaghezza di usare le coordinate delle parole per estrarre massivamente le immagini delle parole, normalizzarle per altezza, convertirle in B/N e provare a studiare algoritmi di confronto (innanzitutto per rapporto altezza/larghezza, poi in qualche modo per "sovrapponibilità"). L'idea è pazzesca o_O : quindi ci provo :D --Alex brollo (disc.) 11:55, 23 apr 2014 (CEST)

Tech News: 2014-15[modifica]

10:00, 7 apr 2014 (CEST)

Tech News: 2014-16[modifica]

09:18, 14 apr 2014 (CEST)

Tech News: 2014-17[modifica]

10:34, 21 apr 2014 (CEST)

Categoria:Template che usano dati di Wikidata[modifica]

Nuova, utile, sull'esempio di pedia. --Ricordisamoa 16:11, 25 apr 2014 (CEST)

Estrattore immagini in python[modifica]

In Utente:Alex brollo/estrattoreImmagini.py trovate i primi vagiti di uno script che estrae una copia fisica in formato png delle immagini visualizzate con Ritaglio. Per attivarlo basta il nome base del file djvu. Per ora lavora solo in locale e in modalità interattiva.

  • La prima versione estrae le immagini dal file djvu di Commons (formato png).
  • La seconda (utilizzabile se l'opera proviene da IA) estrae le immagini ad alta risoluzione dal file _jp2.zip di Internet Archive (formato jpg).

--Alex brollo (disc.) 17:21, 25 apr 2014 (CEST)

Una serie di prova in commons:Category:Illustrations from Avventure di Robinson Crusoe con il nome standard File:Avventure di Robinson Crusoe [pagina] [numero].jpg (pagina: numero pagina djvu; numero: numero dell'immagine della illustrazione nella pagina, default 0). --Alex brollo (disc.) 15:45, 26 apr 2014 (CEST)

Siccome il nome è standard, dovrebbe essere possibile trasformare le immagini da provvisorie a definitive via bot. --Alex brollo (disc.) 15:45, 26 apr 2014 (CEST)

Cosa aggiungono queste immagini ritagliate alle pagine già presenti su Commons? --Ricordisamoa 18:46, 26 apr 2014 (CEST)
Le immagini incorporate nelle pagine con Ritaglio non sono esportabili in ePub, aimè. Non ho provato con il generatore di pdf, ma l'epub non va. Vanno considerate provvisorie e vanno sostituite quanto prima con immagini "definitive", autonome. Adesso provo il generatore di pdf.... --Alex brollo (disc.) 16:49, 28 apr 2014 (CEST)
Niente da fare. :-( --Alex brollo (disc.) 16:54, 28 apr 2014 (CEST)

Tech News: 2014-18[modifica]

09:22, 28 apr 2014 (CEST)

Tech News: 2014-19[modifica]

09:29, 5 mag 2014 (CEST)

Jq, pdftk, e virtualenv[modifica]

Tre domandine facili per i "geek maggiori" (@Candalua:, @Ricordisamoa:) con familiarità con l'ambiente del SO di Tool Labs.

  1. jq è un interessante script per il parsing di strutture json - viene descritto come "il grep per json". Lo conoscete? Vi servirebbe nel progetto itsource? Gira già qualcosa di analogo (si può fare in python, ma jq è più pratico)?
  2. pdftk è uno script per smontare-rimontare file pdf multipagina; su Tool Labs gira l'interessante pdfunite, che ricuce pdf separati, ma mi manca uno strumento per splittarli. Come sopra.
  3. virtualenv è una cosa che riguarda solo python o dà dei "privilegi locali di root" generali? --Alex brollo (disc.) 08:49, 7 mag 2014 (CEST)
Se non sbaglio, jq e pdftk sono stati installati d'ufficio a seguito di un messaggio in lista Labs. Proviamoli! :-)
Sono quasi certo che un'accoppiata fra curl (+ mediawiki API) e jq potrebbe dare grandi e velocissimi risultati prima ancora di attivare python. Pdftk invece è per chi si occupa di pdf, ovviamente --Alex brollo (disc.) 13:30, 9 mag 2014 (CEST)

Tech News: 2014-20[modifica]

08:00, 12 mag 2014 (CEST)

Geek maggiori, date un occhio a jq[modifica]

Qui: http://stedolan.github.io/jq/manual/ il manuale di jq, parser per strutture json di qualsivoglia complessità. Ci sono belle prospettive da sfruttare (tenendo conto della complessità e della ridondanza di blocchi dati json prodotti da mediawiki API, soprattutto da wikidata). Io me lo studierò, ho idea che possa semplificare moltissimo i lavori bot, e anche estrazioni manuali (funzia bene anche in ambiente windows). Se esistesse qualcosa di simile per l'ambiente javascript sarebbe il massimo. --Alex brollo (disc.) 09:55, 16 mag 2014 (CEST)

Ho cominciato i test.... non è facile, è molto astratto. Se fra voi c'è qualche astrattista.... :-P
Una bella cosa è che in windows è un file unico exe senza dipendenze; lo si schiaffa in una qualsiasi directory elencata nel PATH di sistema, e fine. --Alex brollo (disc.) 18:23, 18 mag 2014 (CEST)

Tech News: 2014-21[modifica]

09:18, 19 mag 2014 (CEST)

Ipotesi per l'accesso all'OCR di testi IA[modifica]

Quando un'opera è caricata su IA e viene caricato in Commons il djvu di IA, l'intero contenuto testuale mappato djvu.xml può essere letto da IA, caricato localmente (in memoria o nello spazio local storage) e utilizzato via jQuery. Ci proviamo? --Alex brollo (disc.) 10:32, 19 mag 2014 (CEST)

Aggiornamento jQuery[modifica]

Invito specialmente gli amministratori a prendere coscienza di mailarchive:wikitech-l/2014-May/076340.html: come riassunto più sopra, alcuni script potrebbero non funzionare correttamente (uno a caso: MediaWiki:Common.js usa $.browser). --Ricordisamoa 05:35, 24 mag 2014 (CEST)

L'ho letta ma speravo che non usassimo le funzioni moriture. Mi arrangio in jQuery ma non abbastanza per mettere le mani su Common.js senza fare danni: esperienze precedenti mi hanno scoraggiato. Passo palla. --Alex (disc.) 17:10, 9 giu 2014 (CEST)
In questo caso, $.browser è usato ai fini esclusivi del supporto per IE7 (usato dallo 0,2 % degli utenti). Per il resto, Douglas Crockford avrebbe un infarto dopo il primo sguardo a MediaWiki:Common.js... --Ricordisamoa 10:07, 10 giu 2014 (CEST)

Tech News: 2014-22[modifica]

10:29, 26 mag 2014 (CEST)

Tech News: 2014-23[modifica]

10:07, 2 giu 2014 (CEST)

Tech News: 2014-24[modifica]

09:39, 9 giu 2014 (CEST)

djvu text layer editor[modifica]

Da molto tempo giro attorno al problema di costruire un semplice editor per lo strato testo dei file djvu. La soluzione che immagino è quella di un editor che consenta unicamente la correzione del testo suddiviso in parole, senza toccare le strutture di livello superiore. Dopo averne pensate tante, ho provato a costruire un editor html "parola per parola", ci lavorerò sopra; il testo campione è in Utente:Alex brollo/djvuEditor e lo script che attiva l'editor è in Utente:Alex brollo/djvuEditor.js. Non aspettatevi, per ora, nulla di più di un trucchetto che permette di editare i testi di una serie di span. Il trucco sta proprio lì: l'impossibilità di editare qualsiasi cosa al di fuori del contenuto degli span permette di "allineare implicitamente" le parole editate con la lista delle parole nella pagina djvu. Poi c'è "qualcosina" da fare lato server per caricare il file djvu, estrarre i testi, spedirli alla pagina, ricevere la lista delle parole editate, reinfilarle nel file djvu. Una cosetta da poco, ma dopo penose riflessioni ho concluso che la parte critica è proprio l'editor delle parole, e quindi ho iniziato da lì.

Se ogni tanto date un'occhiata e mi lasciate un commento, mi incoraggiate a andare avanti (ovviamente l'immagine a destra è un puro "segnaposto", dovrà comparire l'immagine della pagina). --Alex (disc.) 23:38, 9 giu 2014 (CEST)

Ipotesi per i backlinks[modifica]

Attualmente, il "cuore" del trucco backlinks è una funzione bl() scatenata dal click su un'ancora-backlink:

function bl(elemento) {
          window.location.href = window.location.origin + window.location.pathname+'#' + $(elemento).attr('id');
          var linkBersaglio=$(elemento).data('link');
          if (linkBersaglio.indexOf("/wiki/")==-1) linkBersaglio=window.location.origin+'/wiki/'+linkBersaglio;
         
          window.location.href=linkBersaglio;
         } 


Immaginiamo di sostituirla con questa:

function bl(link) {
   var backlink=location.origin+location.pathname+"#"+$(link).attr("id"); 
   localStorage.setItem("backlink",backlink); 
   targetLink=$(link).data('link');
   if (targetLink.indexOf("/wiki/")==-1) {
        targetLink="/wiki/"+targetLink;
   } 
   window.open(targetLink,"_self");
}

A questo punto, l'indirizzo all'ancora di partenza è stabilmente memorizzato, e potrà essere attivato in una varietà di modi, e non solo cliccando l'ancora di arrivo; verrà mantenuto anche se da questa si prosegue la navigazione seguendo altri link, perfino se si uscirà da wikisource o si spegnerà il pc; non appena rientrati in wikisource, sarà possibile tornare al punto esatto del testo da cui si è partiti. Basta organizzare qualcosa che se esiste un backlink memorizzato, visualizzi un link per raggiungerlo (e una volta che lo ha raggiunto, lo cancelli da localStorage). --Alex (disc.) 00:43, 13 giu 2014 (CEST)

localStorage: brainstorming[modifica]

Ho la sensazione che si possano fare grandi cose sfruttando i 5-10 Mby dello spazio localStorage, ho fatto qualche grossolano esperimento ma sono sovraccarico di idee fino alla paralisi :-(

In linea generale, preso atto che localStorage è uno spazio di memorizzazione stabile collegato a un determinato sito, e quindi accessibile fin tanto, e tutte le velte, che si apre una pagina qualsiasi di quel sito, vedo due possibili, diverse classi di utilizzi:

  1. in view, potrebbero essere pre-caricati dati utili alla navigazione; tenuto conto che la lettura wikisourciana spesso procede "a libri", scorrendo le pagine o i capitoli di una stessa opera, potrebbero per esempio essere caricati i wikidata collegati alla pagina-base di quell'opera per essere immediatamente disponibili da qualsiasi pagina secondaria;
  2. in edit, potrebbero essere precaricati una grande serie di dati utili a automazioni/a supporto dell'edit; la prima applicazione da implementare potrebbe essere la memorizzazione delle sostituzioni ricorrenti opera-specifiche impostate con la opzione "Ricorda" del tool find&replace di Candalua, Strumenti per la rilettura.

Altro? Alex (disc.) 10:59, 13 giu 2014 (CEST)

Tech News: 2014-25[modifica]

09:13, 16 giu 2014 (CEST)

Tech News: 2014-26[modifica]

09:20, 23 giu 2014 (CEST)

Tech News: 2014-27[modifica]

08:53, 30 giu 2014 (CEST)

Tech News: 2014-28[modifica]

09:07, 7 lug 2014 (CEST)

Idea testata su fr.source: currentIndexData[modifica]

@Candalua:, @Ricordisamoa: Per ovviare ad alcune carenze su fr.source (non trovo backlink nè nulla di simile all'amato tl|Pg) ho testato una possibilità: come si apre una pagina ns0 oppure nsPagina, viene ritrovato e aggiornato in memoria (in una variabile localStorage, quindi persistente) il nome della pagina Indice correlata alla pagina corrente (in localStorage["currentIndex"]. Se tale nome è diverso da quello memorizzato (ossia: se si è aperta una pagina che punta a un Indice diverso da quello memorizzato) scatta uno script che legge l'html del nuovo indice, ne esegue il parsing e carica i dati su una seconda variabile localStorage["currentIndexData"]]. Per ora i dati sono quelli prodotti da pagelist, in pratica un dizionario con chiave pagina libro che restituisce numero pagina djvu. Prossimo passo, il parsing dell'html del campo Sommario per identificare e memorizzare la relazione nome/titolo sottopagina ns0 - numero di pagina djvu iniziale qualsiasi sia lo script/template/transclusione che lo genera.

Gli usi potenziali di tali dati, sempre disponibili in editing, sono molteplici, sto appena esplorandoli con entusiasmo. Che dite, geek maggiori: monto il meccanismo anche qui? Gli script stanno in fr:user:Alex brollo/GetIndexData.js--Alex (disc.) 08:29, 8 lug 2014 (CEST)

Ho aggiunto una classe tableItem agli elementi creati da Indice sommario, e anche agli elementi creati da fr:Modèle:Table di fr.source, usato allo stesso scopo. Questo facilita enormemente il recupero dei due link (verso la pafina ns0 e verso la pagina Pagina: da cui la transclusione inizia); in pochi giorni sia su fr.source, sia su it.source questi dati saranno utilizzati in pratica. Fr.source mi piace molto... incoraggiano fortemente la sperimentazione, anche i template più "astrusi" sono sprotetti. --Alex (disc.) 12:44, 10 lug 2014 (CEST)
Fatto e semplificando parecchio! Adesso su fr.source come entro in una pagina Pagina o in una pagina Ns0 collegata a una pagina Indice tutti i dati (sia quelli provenienti da pagelist, che quelli compresi da un buon campo Sommario) sono silenziosamente acchiappati. Questo significa che da ognuna di queste pagine si ha a immediata disposizione l'intera struttura dell'opera, pronta a essere "interrogata" come si vuole. Sono molto, molto soddisfatto. --Alex (disc.) 16:42, 10 lug 2014 (CEST)

Pagina Indice, fonte della pagina ns0 corrente[modifica]

L'url della pagina Indice correlata alla pagina ns0 corrente sta nella variabile proofreadpage_source_href e il titolo (decodificato) della pagina Indice si può ricavare con:

currentIndex=find_stringa(decodeURIComponent(proofreadpage_source_href).replace(/_/g," "),"/wiki/",'"',0);

Sapevatelo? Io no. :-( --Alex (disc.) 08:35, 10 lug 2014 (CEST)

Importazione di fr:User:Alex brollo bis/GetIndexData.js[modifica]

Metto provvisoriamente in Utente:Alex brollo/GetIndexData.js una copia della pagina che corre su fr.source. Non ha alcuna dipendenza, è tutto javascript e jQuery base e usa variabili mediawiki di default. Potete quindi provare a farlo correre semplicemente con importScript(). --Alex (disc.) 18:11, 12 lug 2014 (CEST)

@Candalua:: Ho adattato lo script a it.source; adesso funziona anche come (velocissimo) autoNs0, ovviamente per provarlo bisogna evitare conflitti con precarica.js che ho disattivato dalle mie preferenze. Ha vari vantaggi su autoNs0; non richiede obbligatoriamente Indice sommario in pagina Indice, basta che ci siano degli elementi class="tableItem" ognuno dei quali contenga un link vs. ns0 e un link vs, nsPagina, anche caricati per transclusione; non richiede che vi sia l'elenco dei capitoli nella pagina ns0 base. La lascio un po' attiva come sta per provarla prima di proporti di trasformarla in un gadget; sono un po' esausto, è stata una faticaccia, sento un po' di nausea da javascript. --Alex (disc.) 22:08, 12 lug 2014 (CEST)

Interfaccia per Imagemap interattivo[modifica]

Con lo stesso "motore" di Ritaglio immagini si potrebbe realizzare un tool per le immagini mappate (per le aree rettangolo ee pure per le aree cerchio). Che ne dite, ne vale la pena? Avete mai sentito la voglia di costruirne qualcuna, nelle immagini con didascalie che puntano a parti dell'immagine? A me è successo. e succederà ancora per esempio qui: fr:Page:Saunier_-_La_Parfaite_Connaissance_des_chevaux.djvu/317 --Alex (disc.) 16:39, 15 lug 2014 (CEST)

Test qui: Pagina:Trattato di archeologia (Gentile).djvu/382. Il motore è grossolano, ma funzia, ed è molto più semplice di Ritaglio. --Alex (disc.) 08:28, 16 lug 2014 (CEST)

Tech News: 2014-29[modifica]

09:48, 14 lug 2014 (CEST)

Self templates[modifica]

@Candalua:: E' possibile trasformare una pagina (che non abbia una sezione dati) in un "self-template", capace di restituire dati relativi alla pagina. Chiamata come template con un parametro, restituisce il valore di quel parametro. Esempio: io sono guidatore del bot Utente:Alebot e faccio parte del gruppo utenti sysop.

Purtroppo il sistema "confligge" con un'eventuale area dati; dovrebbe essere sostituirla. Il risultato è analogo a quello prodotto con area dati, ma sfrutta il meccanismo della gestione dei templates, e non quello delle section, che è molto meno efficiente e maggiormente server-expensive. --Alex (disc.) 08:16, 17 lug 2014 (CEST)

Immaginiamo di avere in una pagina Autore il seguente codice, appiccicato (sempre uguale!!!) al momento del salvataggio della pagina al posto dell'area dati:
<onlyinclude>{{#switch:{{{1}}}
|genere={{subst:#property:P21}}
|VIAF={{subst:#property:P214}}
....
}}</onlyinclude>
Al salvataggio della pagina, avvengono le sostituzioni e si caricano i valori delle proprietà aggiornate da wikidata. Appena la pagina è salvata (senza modifiche se i wikidati non sono cambiati!) la pagina Autore diventa un self-template e le singole proprietà sono estraibili da qualsiasi pagina di wikisource; es. il VIAF di Autore:Cesare Fiaschi sarebbe ottenibile con {{Autore:Cesare Fiaschi|VIAF}}. --Alex (disc.) 11:24, 17 lug 2014 (CEST)

Tech News: 2014-30[modifica]

09:41, 21 lug 2014 (CEST)

Tech News: 2014-31[modifica]

10:08, 28 lug 2014 (CEST)

Tech News: 2014-32[modifica]

09:37, 4 ago 2014 (CEST)

Categoria:Link a Wikipedia presenti in Autore[modifica]

Perche la pagina Pagina:Storia della rivoluzione piemontese del 1821 (Santarosa).djvu/48 non è visualizzata in Categoria:Link a Wikipedia presenti in Autore? --Accurimbono (disc) 13:00, 6 ago 2014 (CEST)

Adesso che l'ho modificata appare, ma prima non appariva... Come non appaiono numerose altre pagine transluse in NS0 che sono elencate nella caegoria: è un problema in quanto per indivisuare la pagina problematica bisogna spulciare tra le centinaia di pasine transcluse... C'è una soluzione? --Accurimbono (disc) 14:15, 6 ago 2014 (CEST)

Mi chiedo....[modifica]

.... che succede se io chiedo il parsing di una pagina A contenente un tag #property, via AJAX, lanciando la richiesta da una pagina B, ad esempio: da qui, chiedendo l'html di Opera:Tommaso Moro? Proviamoci....

html=$.ajax({url:"http://it.wikisource.org/w/index.php?action=render&title=Opera:Tommaso_Moro",async:false}).responseText;

Ma tu guarda un po'! Mi restituisce tutti i valori generati dai vari #property e pure quelli generati da Modulo:Wikidata, proprio come se stessi visualizzando quella pagina. Quindi è possibile leggere i valori generati da #property (non ottenuti con subst: i valori dinamici) nella pagina A, pur stando nella pagina B. Ma chi l'avrebbe detto.... ;-) --Alex (disc.) 22:30, 6 ago 2014 (CEST)

Ottimo! Qual è l'alternativa meno server expensive? La transclusione o AJAX?--Erasmo Barresi (disc.) 15:26, 13 ago 2014 (CEST)

Tech News: 2014-33[modifica]

09:43, 11 ago 2014 (CEST)

Tech News: 2014-34[modifica]

09:16, 18 ago 2014 (CEST)

Tech News: 2014-35[modifica]

11:21, 25 ago 2014 (CEST)

Tech News: 2014-36[modifica]

09:48, 1 set 2014 (CEST)

Nuovo Modulo:JSON[modifica]

Hop caricato un nuovo Modulo:JSON che codifica in una stringa JSON oggetti Lua, e inverso. Utile, anche perchè permette di scambiare dati fra javascript e Lua e per importare in Lua qualsiasi "roba" trasmessa in JSON. --Alex (disc.) 15:18, 1 set 2014 (CEST)

Funzione editPage()[modifica]

@Candalua: Tempo fa ho scritto/copiato (chissiricorda!) ciò che sta scritto in Utente:Alex brollo/ajaxEdit.js. La funzione interessante è editPage(callback,pagename); callback è il nome di una funzione che accetta come parametro il testo wiki di una pagina e lo restituisce modificato; pagename è il nome dalla pagina da modificare. La funzione legge il wikitesto di pagename, lo passa a callback, e poi scrive ciò che riceve da callback in pagename; la modifica, in cronologia, è registrata con il nome utente che ha lanciato la funzione (che usa l'edit token dell'user che sta manovrando la cosa). Se la pagina pagename non esiste, la crea.

Detta così, la cosa è un po' astratta; traducendola in modo operativo, rende possibile una modifica "standard" della pagina visualizzata, di un'altra pagina, di una serie di pagine con un click, se esiste una funzione predisposta per tale modifica "standard". Le possibili applicazioni sono parecchie e tutte evitano la noia di aprire una pagina in modifica - modificarla - salvarla quando la modifica è evidente. Consente anche il active touch delle pagine tipo Opera: in cui la reintroduzione di un codice standard allinea il contenuto con wikidata, rendendolo disponibile nel progetto; e vista la sua semplicità o_O sarà la prima applicazione che proverò a implementare, seguita dall'applicazione del SAL 00% sulle pagine vuote da un elenco di numeri pagina.

Domanda: qualcuno dei geek maggiori già usa la funzione o una funzione omologa? --Alex (disc.) 17:09, 1 set 2014 (CEST)

Io userei qualcosa come:
new mw.Api().postWithToken( 'edit', {
	action: 'edit',
	title: pagename,
	summary: 'summary',
	text: content
} )
.done(...)

--Ricordisamoa 14:18, 2 set 2014 (CEST)

@Ricordisamoa: Grazie! Intanto io sto costruendo dei callback; uno, per aggiornare Opera, è già pronto ed è "activeTouch" già accennato; l'altro, fresco fresco, è autoSAL100 e consente di passare a SAL 100% le pagine SAL 75% senza aprirle in modifica. Mi studierò bene il tuo codice, che di primo acchito non capisco: mi sa che devo studiarmi mw.Api e i sui metodi, e in generale stento moltissimo a ragionare con gli oggetti per vecchio, incancrenito, e difficilmente superabile, approccio "procedurale DIY". :-(
Per il momento e per semplicità, il link di "lancio" di queste procedure lo faccio apparire in sidebar, sotto Strumenti. --Alex (disc.) 14:31, 2 set 2014 (CEST)
@Alex brollo: la documentazione è sempre d'aiuto! --Ricordisamoa 16:13, 2 set 2014 (CEST)
Un detlodell'equtazione recita: "I libri insegnano solo a chi sa"; nel software: "La documentazione insegna solo a chi capisce" :-( :::: Mi sforzerò.... ma sarà dura. Lo prendo anche come invito a documentare un minimo quello che scrivo io. --Alex (disc.) 18:26, 2 set 2014 (CEST)

Tech News: 2014-37[modifica]

11:33, 8 set 2014 (CEST)

Pasticciando con le variabili globali[modifica]

@Candalua: & @Ricordisamoa: Come programmatore grossolano incappo spesso in problemi di namespace delle variabili javascript, e aimè nella mia produzione di gadget si sono stratificati in una maniera estremamente confusa vari sporchi trucchi per gestire variabili e funzioni.

Giusto in questi giorni ho scoperto che un buon modo di registrare variabili globali, per renderle accessibili a qualsiasi funzione anche come "parametri impliciti", è quello di aggiungerle come attributi al poderoso oggetto mw. E' una cosa corretta? Sarebbe corretto/utile aggiungere a mw anche le funzioni, come metodi? --Alex brollo (disc.) 08:40, 10 set 2014 (CEST)

Ho trovato alcune risposte nelle pagine di aiuto sullo stile di programmazione js.... e sono sul punto di capire le iffy! --Alex brollo (disc.) 13:14, 12 set 2014 (CEST)
Sto cautamente rivedendo i miei script sulla base di queste convenzioni:
  1. ficcare tutte le variabili dentro un oggetto mw.p
  2. ficcare tutte le funzioni dentro un oggetto mw.m
  3. usare solo il costrutto IIFE (Immediately-invoked function expression).
Sembra meno assurdo di quanto pensavo.... fermatemi se sto imboccando una strada rischiosa a mia insaputa. In ogni caso, per ora: solo negli script personali. --Alex brollo (disc.) 10:22, 15 set 2014 (CEST)

Tech News: 2014-38[modifica]

10:34, 15 set 2014 (CEST)