Wikisource:Domande tecniche/Archivio/2011

Archivio delle domande tecniche del 2011

Portale progetti   Progetto qualità   Domande tecniche   Archivio   2011 

Due ricette facili facili per scaricare e ricaricare testo nei file djvu modifica

Lasciando perdere le complcazioni delle automazioni via python o che altro, vi do una semplice ricetta per scaricare, modificare, ricaricare lo "strato di testo" di un file djvu. Seguite i passi con precisione! e ditemi se qualcosa non è chiaro. La ricetta vale per chi ha Windows XP o inferiore, per chi ha Vista o superiori... non so.

  1. se non l'avete già fatto, scaricate e installate DjvuLibre. E' un'installazione leggera, non va a rimescolare file di sistema; poco più che una collezione di script autonomi. Installate la cartella in un posto comodo da raggiungere.
  2. caricateci dentro un file djvu che provenga da Internet Archive. Per semplicità, e per seguire meglio "la ricetta", rinominatelo miofile.djvu.
  3. con Blocco note aprite, nella setssa cartella, un file testo che contenga esattamente questo che segue:
djvused miofile.djvu -e "select 1; print-txt" >testo.txt

dove il numero 1 è il numero della pagina il cui testo verrà scaricato in testo.txt. Salvate questo file con il nome di scarica.bat.

  1. Sempre con Blocco note, create un secondo file testo con questo contenuto:
djvused miofile.djvu -e "select 1; set-txt testo.txt; save"

e salvatelo come carica.bat. Stessa cosa di prima: se volete agire su una pagina diversa, modificate il numero 1.

  1. A questo punto, se fate doppio click su scarica.bat, dopo un'attesa di qualche attimo comparirà dal nulla, nella cartella, il file testo.txt. Apritelo con Blocco note o il vostro editor preferito. Non lasciatevi impressionare! é facile da modificare se seguite queste due semplici regole:
    1. non toccare nulla tranne le parole comprese fra due doppie virgolette (il testo vero e proprio, il resto è codice);
    2. non infilare nelle parole che modificherete degli acapo nè dei caratteri doppie virgolette (si può fare ma per ora lasciamo perdere).
  2. Salvate il file modificato e fate doppio click sull'altro microprogramma, carica.bat.
  3. Se le cose sono andate come devono, il vostro testo modificato è stato infilato nel file djvu. :-)

Djvu + toolserver modifica

Nel mio account toolserver sono installate e funzionanti le routine DjvuLibre. Inoltre, è caricato il primo djvu di prova (un grosso djvu di cui è in corso la trascrizione su en.source: en:Index:Horse shoes and horse shoeing.djvu. Questo significa che si parte con test di manipolazione di un file djvu attraverso toolserver, da una pagina interattiva che sarà raggiungibile via web. Tenete conto che io, su toolserver, mi trovo nella situazione del turista che viaggia in un paese sconosciuto, conoscendo solo poche parole della lingua locale... io mi rivolgo a toolserver con script elementari e grossolani, proprio come un turista direbbe "pane... fame... mangiare... dove io dormire.... ", ma i turisti coraggiosi lo fanno e sopravvivono, anzi: ci si divertono. Quindi... :-) --Alex brollo (disc.) 09:02, 6 feb 2011 (CET)[rispondi]

Notizie da en.source modifica

Template da importare modifica

  • Molto carino un en:Template:Gap, fatto per creare una spaziatura fissa con un sistema diverso da Template:Spazi.
  • A domanda: quanto spesso dev'essere usato un template per giustificare la sua esistenza? mi è stata data una risposta interessante che è: dipende; se il codice che il template sostituisce è molto complesso, vale la pena scrivere un teplate anche se viene richiamato poche volte (quindi: nella loro filosofia, sì anche a template molto particolari, come quelli opera-specifici)

Interessante anche en:Template:Populate, vedi sotto "autori naked"

Il template Gap è forse più appropriato che il nostro Nbsp, ma a parte il tecnicismo quali sono gli altri vantaggi? Si sa se ci sono problemi di compatibilità tra i browser? --L0ll0 (disc.) 10:36, 8 feb 2011 (CET)[rispondi]

Intestazione modifica

  • Invidio un po' la estrema semplicità del loro template Intestazione. Chissà, un giorno... tuttavia, del "sistema Candalua" via form al template per un'interfaccia non c'è ancora traccia.
  • Politica degli autori senza opere: con giudizio, ma senza tentennamenti, viene incoraggiata la creazione di pagine Autore anche se non ci sono ancora opere, e a tali autori viene aggiunto il template {{Populate}} che visualizza un messaggio di invito a caricare opere dell'autore e categorizza l'autore in una categoria da "popolare".
  • Opere "wanted": alle pagine autore vengono spesso aggiunti "link rossi" verso opere non ancora caricate. Tuttavia tale pratica non è incoraggiata. Meglio sarebbe (come facciamo noi) eventualmente aggiungere sì i link rossi, ma solo a quelle opere di cui si dispone di un link a una possibile fonte-immagine (file pdf o file djvu). Ormai, si Internet Archive si trova "tutto" e spesso il problema è scegliere fra molte versioni e edizioni disponibili. --Alex brollo (disc.) 21:53, 7 feb 2011 (CET)[rispondi]

Template per le linee orizzontali modifica

Costruire un template che renda la famosa righetta orizzontale centrata, di varie lunghezze, usata come separatore in vari testi è facile. Ma vi chiedo: come lo chiamiamo? Intanto uso il nome inglese: en:Template:Rule, poi mi sifgerirete un nome più adatto (ma il nome inglese, almeno come redirect, lo conserverei, come regola!) --Alex brollo (disc.) 10:00, 16 feb 2011 (CET)[rispondi]

ottima la regola, e per ora va bene pure il nome, mi pare abbastanza semplice. Il template riga poi ce l'abbiamo già... --Aubrey McFato 10:43, 16 feb 2011 (CET)[rispondi]

Ricorrenze in una pagina con una riga di codice modifica

La riga di codice per ottenere i morti di oggi 28 marzo, appoggiandosi a un'unica pagina dati, è:

{{#section:Wikisource:Pagina delle prove/1|muore {{CURRENTDAY}} {{CURRENTMONTHNAME}}}}

che produce:

Wikisource:Pagina delle prove/1

Ora, se un cron bot leggesse all'una di notte l'html della pagina, troverebbe la lista; e con poche letture di pagine, saprebbe tutto dei poveri defunti, e potrebbe preparare qualsiasi elaborazione di questo tutto.... se vi fa venire qualche idea, parliamone. --Alex brollo (disc.) 01:20, 17 feb 2011 (CET)[rispondi]

Quesito da principiante su js modifica

Leggo che la funzione prompt di js è un relict. Sono quindi perplesso nel proporre questa cosa che potrebbe essere un'immane stupidez, ma mi faccio coraggio.

Immaginiamo che in vector.js o in una pagina js chiamata da vector.js ci sia solo la definizione di un certo numero di variabili, ciascuna associata a una stringa più o meno complessa (anche multiriga: Intestazione, ecc). Immaginiamo che una delle funzioni regex sia una chiamata a prompt che chiede un "nome in codice" per tali variabili (di una o due lettere max: tipo "i" per Intestazione). Con soli due click e pochissimi caratteri da tastiera un utente potrebbe accedere a una raccolta, ampia quanto si vuole, di "stringhe fatte" personali; non solo, ma osgnuna di queste "stringhe fatte" potrebbe essere facilmente associata a elaborazioni js che sfruttino altre variabili disponibili (e ce ne sono tante). Insomma, potrebbe essere uno dei tanti modi di personalizzare il proprio ambiente di editing, un po' più lento che usando un programma esterno tipo AutoHotKey, ma nemmeno tanto. E' una stupidaggine? --Alex brollo (disc.) 11:52, 23 feb 2011 (CET)[rispondi]

Butto via metà dell'idea, e tengo la metà che va bene. Funziona piuttosto bene l'idea di mettere in vector.js delle pure variabili. Con le tre variabili che ho sistemato nel mio vector.js, la nuova funzione textVar appone da sola in header il template RigaIntestazione completo di un'opera (per prova ho utilizzato "Giustizia" su cui lavora Candalua). Un click solo... niente da "passare" con prompt. Sono soddisfatto del mio "hello world" con jQuery. :-)

Affascinato dal mondo jQuery modifica

Solo per condividere il mio stupore per il mondo jQuery... posso chiedervi di annotare qui sotto il vostro nome, se lo usate almeno un pochino? varrebbe la pena di fare una bella revisione dei nostri script js... Candalua lo inserisco d'ufficio. :-P --Alex brollo (disc.) 11:11, 24 feb 2011 (CET)[rispondi]

  1. Candalua

Qui sotto invece script esistenti che vorreste migliorare, oppure idee da sviluppare, se possibile, con script nuovi (io suggerirei di restare nell'ambito degli script utili per accelerare e migliorare l'edit delle nostre pagine Pagina: e ns0:):

  1. {{Sc|}} nello script {{Ri}}
    Così di getto mi viene da fare una piccola proposta: che ne dite di mettere già anche il template Sc nello scriptino per la RigaIndice? Molte opere hanno il titolo in small caps, e secondo me è sempre più comodo cancellarlo se non serve che stare a inserirlo quando serve. =) --L0ll0 (disc.) 16:04, 24 feb 2011 (CET)[rispondi]
    1. Buona idea. Meglio ancora se associato a {{lc:}}, in quanto nella maggior parte dei casi dove serve, in intestazione, bisogna convertire le lettere in minuscolo perchè il risultato sia quello voluto. Oppure bisogna abilitare massivamente il tastino per la conversione minuscolo/maiuscolo che mo sono perso. :-(
    2. L'effetto dei due comandi associati è: {{Sc|{{lc:Il Catilinario}}}} -> il catilinario
    3. tieni conto che le cose sono in movimento: vedi Aiuto:RegexMenuFramework per il "settaggio fine" del template, con parecchia automazione, compreso il codice di formattazione specifico per l'opera. --Alex brollo (disc.) 09:47, 25 feb 2011 (CET)[rispondi]

Tastini per vector modifica

Ecco il codice che crea un tastino aggiuntivo per Vector, fra le funzioni "avanzate":

/* Centrato*/
if ( typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined' ) {$j( function() {
    $j( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
      'section': 'advanced',
      'group': 'format',
      'tools': {'center': {
          label: 'center',
          type: 'button',
          icon: 'http://upload.wikimedia.org/wikipedia/commons/5/5f/Button_center.png',
          action: {type: 'encapsulate',
            options: { pre: "{{Centrato|",  post: "}}"
}}}}});});}

Per aggiungere i tastini al grupp principale, inceve che sotto "avanzate", basta specificare 'main' al posto di 'advanced'. Possiamo cominciare a recuperare i vecchi tastini e trasformarli in altrettanti gadget. Purtroppo non ho trovato la lista delle azioni previste (l'elenco del 'type'), e dei parametri che ciascun type accetta; al momento non saprei come collegare un tastino a una funzione qualsiasi. --Alex brollo (disc.) 00:24, 27 feb 2011 (CET)[rispondi]

Per 'type' intendi quello con 'button' o quello con 'encapsulate'? Inoltre un appunto, oltre alla 'section' si può cambiare il 'group'. Ad esempio io i tasti per le votazioni li ho messi in 'advanced' -> 'insert' (al posto di 'format'). Facciamo una lista delle opzioni possibili?
Mi sorge però un dubbio... Ma questi tasti vanno solo con l'editor avanzato? Non è ancora buggato da quando hanno fatto l'aggiornamento? --L0ll0 (disc.) 11:20, 27 feb 2011 (CET)[rispondi]
mi interessa il action: type: 'encapsulated', che immagino si riferisca al tipo di azione (incapsulare, ossia, attroniare il testo selezionato con un prefisso e un suffisso). Immagino che ci siano altre azioni previste (es. sostituisci), ma bisogna trovare la relativa doc. Idem per capire per bene tutte le opzioni di collocazione. Quanto al bug dell'editor avanzato, ho perso la cognizione del punto a cui siamo. --Alex brollo (disc.) 10:51, 3 mar 2011 (CET)[rispondi]
Aggiungo per chiarire: ci sono due strade aperte, una è l'aggiunta di tastini personali nel proprio vector.js, con il contenuto e la collocazione che si vuole, e l'altra è l'allestimento di "gadget" pronti per tutti gli utenti; sono graditissimi esperimenti/suggerimenti su entrambe le opzioni. Suggerirei però di evitare doppioni: se il tastino desiderato è fra i gadget, meglio attivare il gadget (discutendolo, se c'è qualcsa che non va) che montarsi lo stesso tastino "migliorato" nel proprio vector. Solo un suggerimento, non una prescrizione! --Alex brollo (disc.) 11:13, 3 mar 2011 (CET)[rispondi]
con fatica ho trovato qualcosa; ad es. qui; siamo nei gangli della estensione WikiEditor. --Alex brollo (disc.) 12:21, 3 mar 2011 (CET)[rispondi]

variabili opera in javascript modifica

Segnalo ai più audaci (che conoscono un po' javascript) la pagina Utente:Alex brollo/variabili opera.js, che attiva un'unica variabile "strutturata":

datiPagine={
'Il Catilinario ed il Giugurtino.djvu':{
                  'delta':51,
                  'pari':'{{RigaIntestazione|#pag|{{Sc|il catilinario}}|}}',
                  'dispari':'{{RigaIntestazione||{{Sc|il catilinario}}|#pag}}'
                  },
'Il fu Mattia Pascal.djvu':{
                  'delta':10,
                  'pari':'{{RigaIntestazione||― #pag ―|}}',
                  'dispari':'{{RigaIntestazione||― #pag ―|}}'
                  },
'Opere di Mario Rapisardi 5.djvu':{
                  'delta':0,
                  'pari':'{{RigaIntestazione|#pag|\'\' \'\'|riga=si}}',
                  'dispari':'{{RigaIntestazione||\'\' \'\'|#pag|riga=si}}'
                  }
         };

La novità è che con questo trucco (tenere una variabile di questo tipo per conto suo in una pagina staccata dalle funzioni che la usano) aumenta moltissimo l'adattabilità del sistema; infatti, senza installare alcuna funzione sul proprio vector.js, ma definendo soltanto un oggetto del genere, contenente i dati sulle opere a cui si sta personalmente lavorando, si sfrutta una funzione generale adattandola a specifiche esigenze individuali.

La cosa è un po' astratta, siamo appena all'inizio; c'è molto da pensare e da provare, ma vedo la cosa molto promettente. Approfitto per raccomandarvi ancora di installare e provare l'accessorio RegexMenuFramework, comprendente anche tools per la numerazione dei versi scritti da Candalua, che sono una genialata galattica ingiustamente priva, finoda, di adeguato feedback.

A chi vuoe installare il il gadget RegexMenuFramework raccomando di eliminare dal proprio vector.js, se c'è, ogni riferimento alle funzioni che usa il gadget, altrimenti "sovrascrivono" quelle del gadget. In particolare, va accoppata la funzione function rmflinks(), e a questo punto diventa perfettamente inutile anche caricarsi gli script RegexMenuFramework. --Alex brollo (disc.) 11:03, 3 mar 2011 (CET)[rispondi]

Piccola (non tanto) novità postOCR modifica

La routine postOCR è stata leggermente modificata. La precedente versione NON eseguiva la correzione degli a capo, nè la "compattazione degli spazi", in una pagina che contenesse un tag <poem>. La funzione attuale, invece, in una pagina in cui ci sia testo in prosa e aree poem, non esegue le due routine nelle aree poem, mentre le esegue regolarmente nelle aree in prosa. :-)

Vi ricordo che postOCR chiama anche RigaIntestazione: adesso quindi dovrebbe poter essere lanciato anche su poesie già formattate, per pescare gli ultimi errorini e per aggiungere o correggere comodamente RigaIntestazione.

Suggerimento: prendere l'abitudine di applicare il tag poem immediatamente, come primo passo della correzione dell'OCR. --Alex brollo (disc.) 22:04, 5 mar 2011 (CET)[rispondi]

Rebus di formattazione modifica

In Canti del Friuli l'editore ha applicato dei capolettera particolarissimi la cui resa è un vero rompicapo. Il verso del capolettera è spostato a sinistra; il capolettera ha un allineamento verticale centrato sul verso. Dopo vari frustranti tentativi ho combinato un accrocchio di codici di questa fatta:

<br/>[[File:Canti del Friuli-S.jpg|40px|alt=S]]ublimi vette scintillanti, floridi<br />
<poem>{{ms|2em; margin-top:-1.5em}}colli, ridente pian, che di triplice
difesa il mar nostro cingete,
{{R|4}}da Venezia all’estremo Quarnaro,</div></poem>

che produce:


 ublimi vette scintillanti, floridi

colli, ridente pian, che di triplice

difesa il mar nostro cingete,

4da Venezia all’estremo Quarnaro,

ma ho la netta impressione che ci sia una soluzione più semplice. A voi. --Alex brollo (disc.) 11:21, 7 mar 2011 (CET)[rispondi]

Note spezzate su più pagine modifica

La nostra soluzione DIY per le note spezzate potrebbe andare in pensione, sostituita dalla sintassi <ref name="nome_nota">....</ref> sulla parte iniziale della nota, e da <ref follow="nome_nota">....</ref> sulla seconda nella pagina sucecssiva/nelle pagine successive.

Ho applicato con successo questa sintassi nelle pagine Pagina:Il Catilinario ed il Giugurtino.djvu/56 e successive, che contengono il testo di Il Catilinario/I. Tutto bene fino a che non ho trovato l'intoppo.

Ci sono tre casi diversi, e non sono ancora riuscito a risolvere il secondo e il terzo. Per per "pagina precedente" intendo la pagina che contiene la prima parte dela nota spezzata; per "pagina successiva" intendo la pagina che comprende la seconda parte della nota spezzata.

  1. il primo caso è quello in cui la pagina successiva è costituita interamente da testo che appartiene al capitolo della pagina precedente. No problem, la sintassi funziona. Per convenzione personale dò al ref un nome tipo "pageXX" dove XX è il numero della pagina dove la nota inizia; quindi, nella pagina precedente (es la 56) ci sarà un tag <ref name="page56">....</ref> e nella pagina successiva un tag <ref follow="page56">....</ref>.
  1. il secondo caso è quello in cui nella pagina successiva termina il capitolo contenuto nella pagina precedente e ne inizia un altro. La nota spezzata fa parte del primo dei due capitoli parzialmente compresi dalla pagina successiva. Problema! Bisogna forzare la transclusione della nota spezzata nella prima sezione, ma c'è qualcosa che non va. Esempio: Il Catilinario/IV. Sopra le note viene transcluso il testo della continuazione di una nota che appartiene al Capitolo II. :-(
  1. il terzo caso è quello in cui il captolo a cui si riferisce la nota termina nella pagina precedente, ma la nota continua nella pagina successiva, che contiene unicamente il testo del capitolo successivo/dei capitoli successivi. Tremendo problema! Come faccio ad assegnare il testo della nota spezzata a una sezione che nella pagina non c'è? Esempio: Il Catilinario/III. Stesso problema del Capitolo IV.

Ho perso parecchio tempo a cercare di risolvere il problema, "rimescolando sezioni", ma non ci sono riuscito... :-( --Alex brollo (disc.) 09:32, 24 mar 2011 (CET)[rispondi]

Risolto! modifica

Adesso, misteriosamente, anche nei casi 2 e 3 la sintassi funziona. Mistero! Miracolo? Intervento ThomasVuesco? Non si sa.
Perchè funzioni, sia nel caso 2 che nel caso 3, la seconda parte della nota dev'essere transclusa anche lei, nella stessa pagina dov'è transclusa la prima parte della nota.
  1. Caso 2, la nota ref follow fa parte del capitolo a cui appartiene il testo nella prima parte della pagina (in genere marcato da una section name=s1). Includere quindi il testo ref follow in una section s1: nella setessa pagina ci saranno due testi marcati con lo stesso nome di section: non preoccupatevi! Va bene così.
  2. Caso 3, la nota ref follow fa parte di un capitolo che termina nella pagina precedente. Non importa: includere comunque il testo della nota ref follow in una section, includere tutto il testo della pagina in un'altra section, e scrivere il tag pages in modo che i due capitoli includano le section opportune. Mi sembra chiaro. :-P
Vedi comunque codice ns0 e codice pagine in Il Catilinario/IV (caso tipo 2) e Il Catilinario/III (caso tipo 3)--Alex brollo (disc.) 20:04, 28 mar 2011 (CEST)[rispondi]

Problema di margine modifica

In questa pagina il margine tra la riga di intestazione e il corpo del testo è eccessivo rispetto alle altre pagine che utilizzano il tl Colonna, ma non riesco a capire perché... Purtroppo questo margine eccessivo si ripercuote su Ns0 inserendo uno spazio troppo ampio tra i due paragrafi a cavallo di pagina. Aiuto!! #_# Cinnamologus 23:16, 25 mar 2011 (CET)[rispondi]

Non so perché, ma si creano delle righe vuote in più tra il tag <hr style="width:100%; margin:auto; color: black; background-color: black; height: 1px;" /> e il </noiclude> nascosto prima del tag <span class="SAL">... [1] Forse roba da bot? Ora le ho tolte, ma se si risalva la pagina riappaiono in automatico! Strano... --L0ll0 (disc.) 23:50, 25 mar 2011 (CET)[rispondi]
Mistero che solo Candalua può risolvere. Sospetto un effettocollaterale di qualche javascript, piuttosto che di un bot, visto che le due righe bianche si materializzano istantaneamente; ma non immagino da dove possano Venire. Spero solo che non sia colpa mia, apprendista stregone di js... :-( --Alex brollo (disc.) 11:15, 27 mar 2011 (CEST)[rispondi]

Trucchi math modifica

Metto qui per i posteri (nella pagina di aiuto questi particolari ci snon, ma "si perdono") due trucchi per la formattazione delle formule matematiche.

Premessa: è interessante capire bene come le formule vengono generate. Il LaTex viene interpretato e trasformato in un'immagine png. Quello che si vede è una pura e semplice immagine.

Applicare uno stile css modifica

All'interno del tag math si può infilare un attributo style e quindi "passare" parametri per modificare il display dell'immagine png. Ad esempio, si può definire l'altezza o la larghezza dell'immagine. Ovviamente, essendo un'immagine, si possono passare solo parametri "sensati" per un'immagine. Esempio:

<math>\iint_{D}^{W} \, dx\,dy</math>  rimpiccioliamo modificando l'altezza: <math style="height:2.6em">\iint_{D}^{W} \, dx\,dy</math>

  rimpiccioliamo modificando l'altezza:  

Applicare uno stile TeX modifica

Il tag TeX \scriptstyle può essere applicato all'inizio della formula, e produce un risultato molto interessante, soprattutto per adeguare le immagini delle formule che sono contenute all'interno di una linea di testo.

<math>\iint_{D}^{W} \, dx\,dy</math>  qui di seguito la stessa formula con \scriptstyle: <math>\scriptstyle\iint_{D}^{W} \, dx\,dy</math>

  qui di seguito la stessa formula con \scriptstyle:  

Per i puristi hard c'è anche la possibilità di allineare le formule alla riga di testo. --Alex brollo (disc.) 10:52, 31 mar 2011 (CEST)[rispondi]

Puristi? Hard? Magari pignoli... Ioioio! Come si fa ad allineare? =D --L0ll0 (disc.) 13:31, 1 apr 2011 (CEST)[rispondi]
Sta nella pagina Aiuto:Formule matematiche tex... vedo...   ecco: passando a math un attributo di stile vertical-align:baseline si "appoggia" l'immagine alla linea di base della riga; oppure, passando a vertical-align un valore percentuale, si controlla esattamente la posizione della formula (questo che segue risulta da un valore -25%):  . --Alex brollo (disc.) 20:12, 9 apr 2011 (CEST)[rispondi]

Firefox 4 modifica

Domandone: ho montato Firefox 4, ma ho scoperto che non carica il vector.js personale... Non saprei minimamente perché e non ho avuto il tempo di controllare perché vista la palese insostenibilità per me sono tornato immediatamente alla versione precedente.
Qualcuno può confermare/smentire? Lo monto da qualche parte e provo a fare il bug tester per vedere se è colpa mia, "nostra" o "loro"? --L0ll0 (disc.) 13:31, 1 apr 2011 (CEST)[rispondi]

Ho aggiornato anch'io, ma il vector.js me lo carica senza problemi. Candalùa (disc.) 23:27, 9 apr 2011 (CEST)[rispondi]

Idem (come Candalua) (ps: sono all'estero ;-) ma vi tengo d'occhio lo stesso!). --Alex brollo (disc.) 08:55, 10 apr 2011 (CEST)[rispondi]
Eccappunto lo immaginavo... Come al solito sono io che sto sbagliando qualcosa... XD
Ora lo rimonto e vedo di trovare il problema. Grazie a tutti del feedback! ;) --L0ll0 (disc.) 09:05, 10 apr 2011 (CEST)[rispondi]
Ho trovato l'errore. È la parte di codice del vector.js che si occupa dei regex personalizzati che blocca tutto il vector. Ho fatto mille tentativi, ma senza nessun risultato. Se lascio così com'è mi dice "datiPagine not defined".
Lancio la mia domanda ai più esperti col Java: è possibile riavere funzionante i datiPagine personalizzati o decidiamo di comunicarli ad Alex che li mette nella sua pagina globale? =)
Per me va bene qualsiasi cosa! =D --L0ll0 (disc.) 23:50, 11 apr 2011 (CEST)[rispondi]

Malfunzionamento tl|Nota in Ns0 modifica

Guardate queste note o queste: viene aggiunto uno <span title="In Pagina: x ">. Curiosamente questo avviene solo in Ns0! --Cinnamologus 19:44, 9 apr 2011 (CEST)[rispondi]

Da una rapida analisi:
Il problema riguarda tutte le ricorrenze del template, dunque è un problema del template; guardo il template.
Il template non è stato toccato da quasi un anno, e fino a pochi giorni fa tutto filava liscio, dunque il problema non è del template...
dunque
Nell'ultimo passaggio (probabilmente l'upgrade a MediaWiki 1.17) qualcosa in MediaWiki ha fatto sballare il meccanismo precedentemente funzionante.
Urge un debugger più esperto... lo chiamo. εΔω 20:13, 9 apr 2011 (CEST)[rispondi]
Risolto. Dipendeva dai ritocchi recenti a Pt (fra me e Candalua facciamo una bella coppia :-) ).--Alex brollo (disc.) 20:27, 9 apr 2011 (CEST)[rispondi]
Per inciso: Edo ha realizzato una magnifica istanza di "falso sillogismo".... diventerà famoso nei trattati di logica ;-). L'errore è insidioso: la premessa 1 è vera, ma la premessa 2 è sottilmente falsa.... se un template contiene altri template, e magari questi chiamano altri template, perchè sia vera bisogna che nessuno dei template all'interno della scatola cinese sia stato modificato. In questo caso, mi ha aiutato il fatto di avere la coscienza sporca... --Alex brollo (disc.) 09:17, 11 apr 2011 (CEST)[rispondi]

Testo su immagine modifica

In questa pagina ho cercato di sovrapporre la scritta FINE alla cornice che la contiene. Il risultato l'ho ottenuto parzialmente per tentativi ma non ne sono affatto soddisfatto. Esiste già un template che sovrappone una scritta ad una immagine senza dover utilizzare dei riferimenti assoluti? --Luigi62 (disc.) 11:00, 26 apr 2011 (CEST)[rispondi]

Qui, no; ho trovato questo], ma mi pare complicatuccio... nel tuo caso, io avrei semplicemente aggiunto un parametro alt=FINE, lasciando l'immagine come stava; tanto per assicurare un buon txt dopo eventuale copiaincolla su un editor. Alex brollo (disc.) 11:35, 26 apr 2011 (CEST)[rispondi]

Blocco centrato con larghezza e poem modifica

Guardate l'effetto di un template Blocco centrato con parametro larghezza=80% nella pagina: Pagina:Il piacere.djvu/196. Mi piace parecchio. Riproduco qui l'effetto dentro una div pagetext bordata:

I.




Erma quadrata, le tue quattro fronti
sanno mie novità meravigliose?
Spirti, cantando, da le sedi ascose
partono del mio cor leggieri e pronti
 
5Il cor mio prode tutte impure fonti
serrò, cacciò da se tutt’altre cose
impure, tutte fiamme obbrobriose
domò, ruppe all’assedio tutti i ponti.
 
Spirti, cantando, salgono. Ben odo
10io l’inno; e inestinguibile, possente,
del periglio di me mi prende un riso.
 
Pallido sì ma come un re, io godo
sentir nel core l’anima ridente,
mentre il già vinto Mal rimiro fiso.

Adesso con larghezza=70%, per capire meglio l'effetto sui numeri dei versi e sulla posizione degli elementi centrati fuori poem:

I.




Erma quadrata, le tue quattro fronti
sanno mie novità meravigliose?
Spirti, cantando, da le sedi ascose
partono del mio cor leggieri e pronti
 
5Il cor mio prode tutte impure fonti
serrò, cacciò da se tutt’altre cose
impure, tutte fiamme obbrobriose
domò, ruppe all’assedio tutti i ponti.
 
Spirti, cantando, salgono. Ben odo
10io l’inno; e inestinguibile, possente,
del periglio di me mi prende un riso.
 
Pallido sì ma come un re, io godo
sentir nel core l’anima ridente,
mentre il già vinto Mal rimiro fiso.

Alex brollo (disc.) 01:19, 30 apr 2011 (CEST)[rispondi]

Dubbio sulle Categoria:Testi in cui è citato il testo .... modifica

Solita questione delle categorie "completamente popolate".

Il problema è questo: la Categoria:Testi in cui è citato il testo Monarchia/Libro I/Capitolo XIII è "figlia" soltanto di Categoria:Testi in cui sono citati altri testi, ma non di una Categoria:Testi in cui è citato il testo Monarchia. Quindi, non c'è modo di ricercare direttamente tutti i testi che citano una sezione, o un capitolo qualsiasi, di Monarchia.

Per superare il problema, TestoCitato dovrebbe generare almeno due categorie: quella "di dettaglio" e quella "dell'opera". Opzionalmente, anche quella "intermedia", che nell'esempio sarebbe Categoria:Testi in cui è citato il testo Monarchia/Libro I.

Io non consulto mai queste categorie, e mi incuriosirebbe sapere chi, e con che frequenza, le consulta; tuttavia è bene che ci siano, perchè quando avremo DynamicPageList diventeranno utili. Chi le consulta, mi saprebbe dire se la mia idea è ragionevole-utile? Si sta un lampo a modificare TestoCitato... --Alex brollo (disc.) 23:47, 3 mag 2011 (CEST)[rispondi]

Nemmeno io le consulto, ma dal mio punto di vista anche se solo una persona le consulta una volta sola il loro mestiere l'hanno fatto. IMHO è meglio avere in più che in meno, però poi non so che carico possa avere per il server e/o per altre funzionalità (penso ad esempio alle statistiche che potrebbero risultare gonfiate). Qualcuno saprebbe quantificare gli eventuali "contro" della cosa? =) --L0ll0 (disc.) 13:39, 4 mag 2011 (CEST)[rispondi]
No, nessun significativo aumento del carico server nè "tumefazione" delle statistiche. Nel peggior caso, applicando la "doppia categorizzazione" per titolo opera principale e per capitolo, il numero di categorie raddoppierebbe; ma in realtà io suppongo che non crescerebbero di più di un 20-30%, forse meno. --Alex brollo (disc.) 16:07, 19 mag 2011 (CEST)[rispondi]

Parentesi graffe modifica

Ho modificato il template {{Graffa}} per costruire in automatico parentesi anche verso il basso e verso l'alto.
Mi rendo conto che:

  • Il risultato non è esteticamente un granché, ma l'automatismo che ne consegue è comodissimo e copre il difetto.
  • Si potrebbe fare analogo al {{Graffa1}}, ma i casi sarebbero molto più di una decina e non ho il tempo per farlo... =D

So che il template è abbastanza usato, anche se su poche opere, per cui se ci fossero problemi rollbackate e ditemi qualcosa che vedo di sistemarlo. =) --L0ll0 15:04, 6 mag 2011 (CEST)[rispondi]

DynamicPageList + semantizzazione modifica

Armatevi di pazienza.

DynamicPageList è per ora attivo, a quanto so, su una sola pagina sperimentale: Wikisource:Liste dinamiche/Romanzi. Il codice, molto semplice, produce una lista dinamicamente aggiornata, ma diciamolo... un po' povera: è una semplice lista ai titoli delle opere, e non c'è modo di aggiungerci i dati che noi possediamo via semantizzazione.

Una delle tante vie per "truccare" la cosa ed agevolare la trasformazione della lista in liste "semantizzate" è il seguente.

  1. selezionate e copiate una serie di titoli-link nella pagina che contiene le liste DynamicpageList.
  2. entrate in modifica su una pagina qualsiasi (es. nella pagina di discussione della stessa pagina dov'è contenuta la lista dinamica, dove ho fatto i miei "esperimenti") e copiaincollate. Otterrete una semplice lista dei titoli, con alcuni spazi bianchi in testa a ciascuna voce (quattro).
  3. cliccate sul nuovo Strumento per la rilettura "inserimento {{testo}}".

Voilà! ogni titolo è stato trasformato in una chiamata al template Testo; godetevi l'anteprima e salvate.

Questo metodo, manuale e un pochino macchinoso, non ha lo scopo di essere la soluzione definitiva, ma solo di simulare una cosa che, a suo tempo, potrà essere fatta con uno script. Dimostra solo che si può fare, e come si può fare. --Alex brollo (disc.) 16:17, 19 mag 2011 (CEST)[rispondi]

template:Indentatura modifica

Qualcuno sa dirmi perché il template {{Indentatura}} in questa pagina sembra non funzionare correttamente? Non riesco a regolare il valore dell'indentatura. --Luigi62 (disc.) 21:02, 22 mag 2011 (CEST)[rispondi]

Non è una buona idea interrompere un poem con Indentatura. Il tag poem trasforma l'intera serie di versi in un unico paragrafo, suddiviso da <br />. E' bene usare al suo interno solo codici html "inline", utilizzando il tag html span. Non serve chiuderlo, a fine verso, perchè viene chiuso automaticamente in corrispondenza del tag br. Il tag deve essere chiuso a fine verso! L'ho appena scoperto (o riscoperto). Vedi modifica della pagina indicata. Niente impedisce do costruire un templatino, ma il mio consiglio è che generi un codice span. --Alex brollo (disc.) 21:51, 22 mag 2011 (CEST)[rispondi]
Scusa ma non capisco dove vada messo il tag </div>. Negli esempi in concomitanza con <poem> ... </poem> non c'è e il template sembra non avere effetto. Lo devo mettere in fondo appena prima del tag </poem>? --Luigi62 (disc.) 09:54, 23 mag 2011 (CEST)[rispondi]
Il tag </div> non serve più in quanto apri un tag <span> al posto del <div>.
Non chiudendo con uno </span> sembrerebbe funzionare tutto ugualmente, anche se sarebbe bene chiuderlo al primo punto fisso se possibile. =) --L0ll0 (disc.) 19:34, 23 mag 2011 (CEST)[rispondi]
Già. Sembrerebbe.... questi sembrerebbe sono le cause delle peggiori cefalee, perchè poi ti colpiscono a tradimento. :-)
Credimi; anche Edo ha constatato l'identico problema. Strano comportamenti di indentature successive, magari a mezza pagina di distanza... il </div> è accoppiato al {{ms}}, "includono" l'intero blocco poem. --Alex brollo (disc.) 21:49, 23 mag 2011 (CEST)[rispondi]

La Mandragola modifica

Sto traducendo in Arabo la Mandragola usand il Vostro testo italiano. Ho alcune dificolta ad intendere il vero significato di alcune espressioni. Potete qui aiutare?

Un esempio: La Mandragola- Atto Terzo- Scena 6

"Nicia: Come disse la botta a l’erpice!"

Nabil Mahaini

In effetti la frase è molto complessa da interpretare. Si tratta di un proverbio, o meglio di un detto scherzoso, volutamente fuori luogo, come accade spesso a Messer Nicia. Letteralmente è
Ligurio
Noi torniamo ora
Nicia
[Tu dici] la stessa frase che il rospo ("la botta") disse all'erpice.

La spiegazione del motto di spirito la dà Machiavelli stesso in una sua lettera a Francesco Guicciardini: per comodità cercherò di parafrasare il fiorentino cinquecentesco:

L'erpice è un attrezzo di legno a forma quadrata con certi denti in legno che, trascinato, è usato dai contadini per preparare la terra alla semina.
Un giorno un rospo che non era abituato al lavoro di questo strumento, per eccesso di curiosità ne ebbe la schiena graffiata e quando si rese conto della profondità dalla ferita disse all'erpice: "non tornare!". L'espressione come il rospo disse all'erpice è divenuta un proverbio quando si desidera che qualcuno non torni.

Spero di averti aiutato, e ti comunico le mie congratulazioni perché la lingua di Machiavelli è difficilmente interpretabile anche da molti dei madrelingua italiani... εΔω 22:25, 27 mag 2011 (CEST)[rispondi]

problemi Odt2wiki.xslt su linux modifica

Il download di Odt2wiki.xslt x liberOffice sembra non sia più accessibile dai repositary Oracle, per contro l'installazione del plug-in come estensione wiki-publisher non aggiunge la relativa estensione su liberOffice su linux (bug grave già segnalato). Quindi sembra sia un vicolo cieco su linux riuscire a convertire da odt a wiki, a meno che qualcuno non abbia un file Odt2wiki.xslt da spedirmi o dirmi dove posso reperirlo.--Stefano De Boni (disc.) 12:13, 29 mag 2011 (CEST)[rispondi]

Orpo, mi sembra una domanda un po' tecnica, e questo è un bar poco frequentato. Suggerirei di porla in un ambiente un po' più frequentato, es. il bar di wikipedia o una mail list "grossa" --Alex brollo (disc.) 01:11, 31 mag 2011 (CEST)[rispondi]
capisco! c'è techné e techné, scusate, attraverso mondi e a volte confondo le techné--debius (disc.) 21:27, 31 mag 2011 (CEST)[rispondi]

Nuovo meccanismo per una variante di RigaIndice modifica

Ho modificato l'adattamento di RigaIndice per Confessioni di un italiano (la resa con una tabella funzionava, ma era graficamente difforme dall'originale). Per gli appassionati dei template formattatori segnalo il suo codice: Template:RigaIndice/Confessioni. Aimè, c'è un piccolo bug... il sistema si incanta quando l'ultima riga del blocco di testo occupa quasi l'intero spazio. --Alex brollo (disc.) 16:00, 29 mag 2011 (CEST)[rispondi]

Prospettive con Alebot su toolserver modifica

Avendo rotto il "muro" del colloquio wiki/Alebot su toolserver via normali link html, si aprono vaste prospettive. In pratica, un comunissimo link web da wiki, o da qualsiasi altro post, "scatena" specifiche funzioni di Alebot, che risponde immediatamente appena elaborata la richiesta; il meccanismo è assai simile a quello delle query API, ma la differenza è che le routine possono essere disegnate esattamente sulle nostre necessità e può essere costruito ex novo un "linguaggio" soecifico.

Nessun timore che questo crei delle incompatibilità: alla fine, il bot può fare solo due cose:

  1. ricevere una richiesta di elaborazione dati e rispondere con una pagina web;
  2. modificare una o più pagine, esattamente come già fanno i bot "normali" e come fa un qualsiasi utente.

Insomma, non varia la struttura del progetto nè il suo contenuto; si tratta solo da avere uno strumento in più per lavorarci.

Uno degli aspetti più interessanti è la possibilità di modificare una pagina senza entrare in modifica. La prima applicazione sarà l'aggiornamento del SAL nelle pagine ns0. Un link piazzato da qualche parte (perchè non sullo stesso simbolo del SAL?) chiederà al bot la verifica del SAL basata sull'analisi del SAL dei componenti, siano essi pagine Pagina: oppure capitoli, richiamati con il template Testo; se il SAL va aggiornato perchè incongruente, la pagina (il suo codice, ossia il codice del temmplate Qualità) verrà modificata via bot; ripeto, SENZA entrare in modifica nella pagina.

Mi scuso se questi giorni sarò poco presente nell'edit, ma devo assolutamente esplorare, provare e riprovare, altrimenti fra due settimane mi sarò dimenticato quasi tutto... --Alex brollo (disc.) 17:38, 6 giu 2011 (CEST)[rispondi]

conversione via htmlgen2


Please, update the Template:Interprogetto modifica

Please, update the Template:Interprogetto - add the 'v' (wikiversita) parameter. See an example on my Page - Utente:Averaver. --Averaver (disc.) 16:06, 28 lug 2011 (CEST)[rispondi]

Done, thank you Candalùa (disc.) 18:27, 28 lug 2011 (CEST)[rispondi]

Thank you. --Averaver (disc.) 05:36, 29 lug 2011 (CEST)[rispondi]

AutoreCitato modifica

Su Storia_della_letteratura_italiana/XII ho fatto un esperimento.

Ho guardato gli indici di "pesantezza pagina" che si trovano nel sorgente html, prima con il template AutoreCitato "vecchio stile", senza l'accrocchio AutoreCitato/Dati, poi riattivando il template con l'accrocchio.

Il "resoconto complessità" senza accrocchio è:

<!-- 
NewPP limit report
Preprocessor node count: 3525/1000000
Post-expand include size: 147264/2048000 bytes
Template argument size: 14394/2048000 bytes
Expensive parser function count: 3/500
-->

Riattivato l'accrocchio, diventa:

<!-- 
NewPP limit report
Preprocessor node count: 126118/1000000
Post-expand include size: 150653/2048000 bytes
Template argument size: 14809/2048000 bytes
Expensive parser function count: 3/500
-->

Notate la variazione del primo valore: qualsiasi cosa significhi, aumenta di 35 volte. :-(

Non va bene. --Alex brollo (disc.) 00:17, 1 ago 2011 (CEST)[rispondi]

Nei prossimi giorni farò un altro esperimento. In quell'opera, sostituirò tutti gli AutoreCitato a un parametro (per dire, tipo {{AutoreCitato|Giovanni Boccaccio}} con AutoreCitato con due parametri (tipo {{AutoreCitato|Giovanni Boccaccio|Giovanni Boccaccio}}). Può essere, visto il meccanismo del template, che questo riduca moltissimo la complessità della pagina.
Oltre che pesante, AutoreCitato risolve solo metà del problema che si vorrebbe risolvere. Fornisce, in una categoria, l'elenco di tutte le opere in cui è citato un autore; ma NON fornisce, nè può fornire, il dato altrettanto interesante dell'elenco di tutti gli autori che sono citati in un'opera. Sarebbe bello che ci fosse anche questo dato, e che una revisione di AutoreCitato ne facilitasse la costruzione. Per le opere in Ns0 si potrebbe aggiungere una pagina con l'elenco degli autori citati; per le versioni Indice/Pagina non vedo alternative a inserire tale elenco (magari corredato di link alle pagine che contengono la citazione) in una sottopagina di Indice. --Alex brollo (disc.) 00:33, 1 ago 2011 (CEST)[rispondi]

Soluzione informatica ma non politica modifica

La soluzione informatica più pulita sarebbe quella di considerare gli "autori" tutti uguali, di trattarli nella stessa maniera formale (apertura di una pagina Autore) e di considerare il dato "ha o non ha opere su wikisource" un semplice dato fra gli altri dati. Ne abbiamo già discusso più volte, con la conclusione che non è opportuno "politicamente". Se il problema che segnalo permane, e non si trova un sistema chiaro, semplice e automatico per risolverlo, dovrete avere pazienza perchè riproporrò la discussione un'altra volta. :-(

Tenete conto che all'interno di un template, le cose diventano "pesanti" ogni volta che il codice del template deve esaminare, all'interno di un #if, la presenza o l'assenza di una pagina, o di qualcosa all'interno di una pagina. Il problema sta qui.

Tutto sarebbe risolto (dal punto di vista "politico") se accettassimo di modificare il criterio di apertura di una pagina Autore da "autore di cui it.source contiene opere" a "autore di cui it.source contiene opere o citazioni". --Alex brollo (disc.) 07:57, 1 ago 2011 (CEST)[rispondi]

Passetti js modifica

1. Ho aggiunto a Common.js la funzione replaceAll(testo,a,b), che funzia come il metodo python .replace, ossia sostituisce, in testo, tutte le istanze di a con b. Se a="" restituisce testo. 2. In realtà questa cosa mi serviva da tempo, ma in particolare mi serve per un nuovo gadget WIP, che espande gli AutoreCitato a un parametro in AutoreCitato a due parametri, appoggiandosi sulla variabile acd dove sono raccolte numerose coppie tipo "Dante":"Dante Alighieri". Per motivi lunghi da spiegare, e forse la spiegazione pure sarebbe sbagliata, il template AutoreCitato è "pesante da digerire" quando è a un solo parametro; per questo motivo, tale gadget sostituirà con {{AutoreCitato|Dante Alighieri|Dante}} il codice {{AutoreCitato|Dante}} ma anche il codice {{AutoreCitato|Dante Alighieri}} verrà sostituito con {{AutoreCitato|Dante Alighieri|Dante Alighieri}}--Alex brollo (disc.) 22:37, 7 ago 2011 (CEST)[rispondi]

Sono letteralmente impazzito per trovare il bug in acrepl() (per ora nel mio vector.js), per poi scoprire... che avevo invertito i parametri di un for ()... adesso fuunzia, lo trasformo in gadget. Che pardipalle. --Alex brollo (disc.) 15:01, 8 ago 2011 (CEST)[rispondi]

Indentatura immagine a margine di testo modifica

Ciao. Sto lavorando alla pagina Pagina:Storia_dei_Mille.djvu/63. Sto cercando di formattare correttamente l'immagine nel mezzo del testo (riciclando del codice di due pagine prima), ma non mi riesce di rispettare tutti i vincoli. Conoscete delle pagine di Aiuto: utili? In caso contrario, vorrei capire quali priorità rispettare (dimensione dell'immagine nella fonte, parte del testo indentata). In ogni caso non mi riesce risolvere la parte finale del testo indentato (senza creare un capoverso che nell'originale non esiste). --Chionatan (disc.) 19:06, 3 set 2011 (CEST) →Credo di aver risolto. L'uso del comando <div/> fatto nelle pagine precedenti era un pò confuso, mentre, seguendo le regole delle successive, è venuto fuori ciò che volevo.[rispondi]

Fatemi capire, vi prego. modifica

Sono FranzJosef, questo qui [2]. Non so se scrivo nello spazio giusto, ma ecco cosa càpita: da due giorni non mi riesce più di entrare con la mia pass, mi si dice che non è corretta. Non capisco, perché l'ho sempre fatto senza problemi per circa un anno, visto che lavoro da luoghi diversi. Che cosa è cambiato, che cosa sbaglio? Ieri ho dovuto richiedere una pass temporanea e poi sostituirla, sarà sempre così? Mi consigliano di controllare il blocmaiusc, ma l'avevo già fatto senza risultato. Grazie. FranzJosef--95.74.253.142 09:45, 19 set 2011 (CEST)[rispondi]

Text-indent modifica

Ho a suo tempo combattuto e vinto alcune battaglie contro il text-indent (es. per quanto riguarda Centrato), la la guerra è ben lungi dall'essere vinta. Es: nella nuova Indice:La Sacra Bibbia (Diodati 1885).djvu l'indentatura del paragrafo è eccessiva e disturbante, ma eliminarla o correggerla non è facile. Il problema nasce e si ingigantisce per il fatto che il software wiki gestisce automaticamente i paragrafi (il tag p) e interferire con questo automatismo è possibile, ma anti-intuitivo e farraginoso. Uno dei casi in cui la "semplificazione" si ritorce contro gli utenti. Non è il solo....

Occorrerebbe disporre di un meccanismo semplice e intuitivo per poter neutralizzare o correggere, su una pagina o all'interno di div di una pagina, l'attributo text-indent dei paragrafi. Come fare? --Alex brollo (disc.) 10:26, 5 ott 2011 (CEST)[rispondi]

Intanto propongo una soluzione, la vedete in Pagina:La Sacra Bibbia (Diodati 1885).djvu/10. la soluzione (che imposta un text-indent di 0.5em) è ottenuto modificando sia common.css che i template {{colonna}} e {{altraColonna}}. Le modifiche per ora hanno effettu su tutte le chiamate ai due template, ma ho controllato varie pagine e in tutte la cosa va bene (riproduce bene l'originale). Nella stessa pagina test è anche utilizzato il template {{Vb}}, alternativo (solo per il formato, il funzionamento è identico) al {{V}}. Feed-back needed... --Alex brollo (disc.) 11:18, 5 ott 2011 (CEST)[rispondi]

Mega-array indicizzati modifica

Ho sperimentato, pare con successo, l'inserimento di grandissimi array indicizzati (decine di migliaia di elementi), scovando una tecnica abbastanza banale ma soprattutto poco "server expensive". Si tratta semplicemente di costruire dei grossi #switch eventualmente suddividendo i dati in pagine diverse. Con questa tecnica, i versetti della Bibbia di Diodati saranno singolarmente linkati anche nel nsPagina e i capoversi di Zibaldone pure. Ovviamente, il codice di questi #switch è di straordinaria lunghezza, e occorre, caso per caso, farli costruire da un bot: scriverli a mano è fuori discussione. Es: Template:ZbLink/0 (indicizza i singoli capoversi delle prime 500 pagine di Zibaldone); Template:BibLink/Le (indicizza i versetti di Levitico). --Alex brollo (disc.) 13:39, 13 ott 2011 (CEST)[rispondi]

Codice template mascherato modifica

Guardate la pagina Progetto:Bibbia/Sigle. Si presenta come una normale pagina di progetto, contenente una tabella, ben formattata e "sortable". La cosa curiosa è che contiene anche il codice di un complesso template, mescolato con i dati della tabella, e che la colonna "Codice switch" è il codice reale di un grosso #switch, che restituisce l'identificatore numerico di un Libro della Bibbia, data una delle varie sigle usate per i riferimenti biblici.

Ecco l'output della pagina usata come template: il Vangelo di Marco ha il numero d'ordine 48. --Alex brollo (disc.) 00:40, 19 ott 2011 (CEST)[rispondi]

Qualcuno per favore mi dica dove sbaglio che sto impazzendo :-) --Aubrey McFato 01:53, 19 ott 2011 (CEST)[rispondi]

Non sbagli: è LaTeX che ha un limite, vuole solo caratteri ASCII e la lettera é non è ASCII. Ripiegherei su una piccola tabella, se non si trova il modo di far accettare a LaTeX un carattere Unicode. --Alex brollo (disc.) 14:11, 19 ott 2011 (CEST)[rispondi]
Eccolo qua, con le vecchie tabelle!
Numero

Volume
X
Altra

Cosa
X

--Alex brollo (disc.) 15:26, 19 ott 2011 (CEST)[rispondi]

RigaIntestazione news modifica

Ho modificato RigaIntestazione in modo che il testo compaia nel solo nsPagina. Questo significa che non c'è più alcuna necessità di spostare RigaIntestazione nell'header: è "trasparente" alla transclusione, e può restare quindi nel corpo pagina, dov'è editabile molto più comodamente. Inoltre non serve più scrivere, come quarto parametro, riga=..., basta la parola "riga". --Alex brollo (disc.) 22:38, 24 ott 2011 (CEST)[rispondi]

padleft, questa sconosciuta modifica

Dice en.wikipedia, a proposito di padleft: "xyz, xyz (pad with zeros to the right or left; an alternative padding string can be given as a third parameter; the alternative padding string may be truncated if its length does not evenly divide the required number of characters)[3]".

La funzione padleft è ideata per "riempire di zeri" a sinistra le cifre.

  • {{padleft:123|6}} -> 000123

Ma si può fornire una stringa alternativa allo 0 di default come terzo parametro:

  • {{padleft:123|6|XYZ}} -> XYZ123

E se la stringa al parametro 1 è vuota?

  • {{padleft:|6|XYZ}} -> XYZXYZ

E se impostiamo il secondo parametro a 1?

  • {{padleft:|1|XYZ}} -> X

Se impostiamo il primo parametro come stringa vuota, e come secondo parametro 1 (oppure n), allora la funzione restituisce il carattere iniziale (oppure gli n caratteri iniziali) della stringa passata come parametro 3. Eheheheh.... Mi sa che Intestazione sta per perdere un parametro. --Alex brollo (disc.) 01:17, 26 ott 2011 (CEST)[rispondi]

Dici "Iniziale del titolo"? Tempo fa ho fatto Template:Prima lettera (copiato dagli anglosassoni) che fa proprio sta cosa qua. Però ho preferito non usarlo su Intestazione, perché in realtà può avere senso che "I promessi sposi" venga messo sotto la P, scartando l'articolo "I". Candalùa (disc.) 09:56, 26 ott 2011 (CEST)[rispondi]
In effetti gli en.pediani hanno costruito una serie di template che aggira completamente la necessità di utilizzare l'estensione String functions, detestate da Tim Starling e suppongo da altri: inutile chiedere di installarla. Risultato: attraverso padleft e padright le stesse funzioni sono ottenibili via hacking a prezzo di un impegno dei server enormemente superiore. Fortunatamente tali template sono protetti dalla "security by obscurity". ;-) :
A me serviva assolutamente un sistema per accedere a famiglie di template-dati, selezionando il template giusto sulla base delle iniziali delle lettere; da qui il mio entusiasmo, un parametro in meno in Intestazione è pressochè irrilevante. --Alex brollo (disc.) 11:22, 26 ott 2011 (CEST)[rispondi]

Passione tatuaggi modifica

Nel mio vector.js trovate una versione migliorata del "costruttore di tattoo", piccole immagini che compaiono fisse sullo schermo in basso a destra facilmente collegabili a qualsiasi funzione js. Ho semplificato il codice, è veramente una sciocchezza (per chi si avventura in questo bar) creare nuovi "tatuaggi". Comodissimi in edit Pagina, dove i pulsanti e i link scrollano continuamente in alto e in basso uscendo (almeno a me) dalla schermata.... ci aggiungerò ognuno degli "strumenti per la rilettura". --Alex brollo (disc.) 12:10, 27 ott 2011 (CEST)[rispondi]

Ho ulteriormente semplificato il codice, rinunciando alle immagini e accontentandomi di un comune linketto testuale. Risultato: the same one, ma con un codice MOLTO più semplice. Codice qui: Utente:Alex brollo/vector.js, sotto "// creazione di un tattoo...." --Alex brollo (disc.) 08:32, 8 nov 2011 (CET)[rispondi]

Forms html modifica

Mi punge vaghezza di ricollocare nella pagina alcuni elementi del form di edit (in particolare i radio-buttons SAL e il tasto submit). Ho già verificato che il brutale spostamento del codice html di questi elementi in altra div fuori del codice form non funziona; immagino che il codice form dev'essere "inclusivo" di tutti i suoi elementi. Ma posso semplicemente ricollocarli con parametri css, oppure spostarli in una div annidata nella form (anche se visualizzata altrove)? --Alex brollo (disc.) 08:25, 28 ott 2011 (CEST)[rispondi]

Dati, template, scripts ecc. specifici per opera modifica

Dopo averci girato intorno da tempo, vorrei concludere in modo "ordinato" la questione di dove mettere eventuali template, script, pagine dati specifiche per opera. La mia proposta, come suggerito da Edo, è: nsWikisource; come nome della pagina: base pagina di Indice: e Pagina:.

Quindi, ad esempio, per Georgiche collegato a Indice:Georgiche.djvu, io suggerisco di creare una pagina (e quante sottopagine servono) Wikisource:Georgiche.djvu. Questo vale per le opere proofread; propongo di ignorare semplicemente le opere naked. Cosa ne pensate? Lo possiamo adottare come raccomandazione, se non come convenzione? --Alex brollo (disc.) 01:33, 6 nov 2011 (CET)[rispondi]

??? Chiedo scusa per la mia povera memoria in decadimento, ma dove avrei indicato io di utilizzare il namespace Wikisource per i template e altre pagine dati specifiche di un'opera? Ricordavo che i namespace in gioco erano
  • NsTemplate, quello che abbiamo più o meno fatto finora ma confusionario
  • NsIndice, impossibile per il noto meccanismo JS di preimpostazione dei dati
  • Ns0, sconsigliato per la possibile alterazione delle statistiche
Non ricordo di aver mai chiamato in causa il nsWikisource per questo tipo di template. Farlo snaturerebbe la funzione di quel namespace. Il fatto che gli indici tematici siano presenti in quel ns è una decisione che non mi è mai piaciuta (e infatti su en. hanno trasformato tali pagine in portali). Cerchiamo di non "confondere" ulteriormente la funzione di quel namespace.
Dato che una soluzione effettivamente indolore non sembra esserci prima di sbottonarmi preferirei leggere se ci sono altre opinioni al riguardo o soluzioni sfuggite a entrambi. - εΔω 10:38, 6 nov 2011 (CET)[rispondi]
In realtà non penso avessimo parlato di template, ma di "zone dati e pagine di supporto opera-specifica". Avevamo escluso il nsPagina, perchè la gestione è particolare; il ns0, per non creare "pagine opera" fittizie; il nsIndice, idem. Aubrey proponeva un nuovo nsDati. Ma a pensarci,Dati sarebbe riduttivo: stiamo andando verso "oggetti-opera", e come gli altri "oggetti" del software potrebbero essere delle "collezioni di dati e di funzioni", o, più tecnicamente, di "attributi e di metodi". --Alex brollo (disc.) 14:31, 6 nov 2011 (CET)[rispondi]
Faccio un esperimento: il nome dell'"oggetto opera" potrebbe essere il basepagename della pagina, inserito tal quale nel nsTemplate. La cosa sarebbe estremamente pulita. Vediamo se riesco a trasformare questa cosa in un vero "oggetto-opera", dotato dei suoi "attributi" e dei suoi "metodi". Sia dal nsIndice, che dal nsPagina, l'"oggetto" sarebbe raggiungibile con il codice {{{{BASEPAGENAME}}}}. Provo con {{Dizionario triestino (1890).djvu}}. --Alex brollo (disc.) 15:38, 6 nov 2011 (CET)[rispondi]

Test modifica

  • Chiedo attributo ns0 dell'oggetto: risultato Dizionario - Vocabolario del dialetto triestino
  • Chiedo attributo npag (numero pagine diIndice) dell'oggetto: risultato 578
  • Chiedo metodo Ri (riga intestazione formattata specificamente): risultato:
TES — 471 — TIG

Sì, oltre ogni ragionevole dubbio funziona effettivamente come un "oggetto", ossia come "collezione di attributi e di metodi" :-) --Alex brollo (disc.) 15:53, 6 nov 2011 (CET)[rispondi]

PS: come i migliorioggetti, accetta anche un parametro "help" oppure "doc" oppure "documentazione".... :-)
Chiedo la doc:

Oggetto associato all'opera Indice:Dizionario triestino (1890).djvu. Sia gli attributi che i metodi vanno passati con il parametro 1, più parametri aggiuntivi opzionali.

Attributi:

  • ns0: Nome dell'opera in ns0
  • npag: numero delle pagine dell'Indice

Metodi:

  • Ri: riga intestazione con formattazione specifica (passare altri tre parametri per i testi sin, centro, dx)

Ho spostato qui il testo della nota sugli "oggetti-opera". La parte precedente del messaggio viene transclusa in bar; da qui in poi, non viene transclusa. --Alex brollo (disc.) 09:35, 7 nov 2011 (CET)[rispondi]

La situazione ad oggi modifica

Esiste da anni, in source, un caso di "oggetto pagina", ma il suo meccanismo è molto più limitato. Esistono infatti i template con il BASEPAGENAME degli autori (es.: {{Dante Alighieri}}), che però contengono un solo codice (un solo "metodo") quando potrebbero contenere sia "attributi" che "metodi" utilizzando lo stesso meccanismo. Mi pare di capire che possono essere trasformati in veri "oggetti", senza modificarne il funzionamento attuale, con un piccolissimo trucco... ci provo utilizzando Claudio Corte 1. --Alex brollo (disc.) 09:35, 7 nov 2011 (CET)[rispondi]

In realtà quei template non sono più utilizzati, e non sono aggiornati da mesi. Andrebbero cancellati... Candalùa (disc.) 10:00, 7 nov 2011 (CET)[rispondi]

Infatti, ho visto che non puntano da nessuna parte. Però, prima di cancellarli, farei un pensierino al loro "riciclaggio" (accoppiato ai "dati semantizzati"). Tenuto conto che i template vengono (se non sbaglio) gestiti con accurato caching per ottimizzarli, mentre invece non c'è nulla di simile per le section, che impongono una rilettura ex novo di tutta la pagina ogni volta che sono richiamate, forse forse.... :-) Comunque, mi conforti: posso operare con tranquillità in corpore vili. --Alex brollo (disc.) 10:43, 7 nov 2011 (CET)[rispondi]
  • chiamo il tl Claudio Corte con un parametro cognome: {{Claudio Corte|cognome}} -> {{Claudio Corte|cognome}}
  • chiamo il tl Claudio Corte con un parametro nome: {{Claudio Corte|nome}} -> {{Claudio Corte|nome}}
  • chiamo il tl Claudio Corte con un parametro doc: {{quote|{{Claudio Corte|doc}}}} ->
 
«{{Claudio Corte|doc}}»

Mi piace. Forse non servirà a niente, ma mi piace. MOLTO intuitivo. Una buona interfaccia ai dati semantizzati! :-) --Alex brollo (disc.) 10:57, 7 nov 2011 (CET)[rispondi]

Essendo collegato ai dati semantizzati, il tl Claudio Corte restituisce i dati aggiornati senza modifica del codice. Conciossiachè :-) l'unico dato che il tl contiene è il "puntatore" al nome autore, che poi è anche il suo nome di pagina, basterebbe prevedere la riscrittura di un altro template in caso di modifica del nome della pagina autore (evento piuttosto raro). Mi organizzo per modificare il codice acciocchè restituisca tutti i dati semantizzati, sia con il loro "nome canonico", che con alias abbreviati (es. gmn per Giorno e mese di nascita, pn per Professione e nazionalità, ecc. --Alex brollo (disc.) 11:12, 7 nov 2011 (CET)[rispondi]
  • {{Claudio Corte|pn}} -> {{Claudio Corte|pn}}
  • {{Claudio Corte|Professione e nazionalità}} -> {{Claudio Corte|Professione e nazionalità}}
  • {{Claudio Corte|an}} -> {{Claudio Corte|an}}
  • {{Claudio Corte|cns}} -> {{Claudio Corte|cns}}
yes. :-) Alex brollo (disc.) 11:26, 7 nov 2011 (CET)[rispondi]

Note

  1. {{Claudio Corte|cnas}}

In grafico:

 
  1. una pagina qualsiasi interroga il template tipo {{Claudio Corte}};
  2. in base al parametro, il template interroga il template generico {{Aut}} di default, che a sua volta interroga l'area dati della pagina Autore, oppure elabora una risposta specifica per autore;
  3. la pagina chiamante riceve il risultato.

Dallo schema si osserva una cosa strana. Perchè passare da due template (nell'esempio funzionante: {{Claudio Corte}}) che chiama un secondo template generico ({{Aut}}) quando basterebbe chiamare il template generico?

  • {{Aut|Claudio Corte|cognome}} -> {{Aut|Claudio Corte|cognome}}

La risposta: perchè in {{Claudio Corte}} esistono parametri specifici per quell'autore, e per lui solo:

  • {{Claudio Corte|note}} -> {{Claudio Corte|note}}

Ad esempio, nel caso delle opere, ciascuna potrebbe avere un diverso RigaIntestazione e un diverso RigaIndice. Il template chiamerà funzioni di default per i parametri generici (con il vantaggio che la modifica di un unico template agirà su tutti i template), e interpreterà autonomamente e specificamente i parametri specifici. --Alex brollo (disc.) 00:44, 8 nov 2011 (CET)[rispondi]

Ueh, raga, nessun ardimentoso mi dice peste o corna? Come faccio a procedere senza un minimo di feed-back demolitivo? :-) --Alex brollo (disc.) 08:26, 8 nov 2011 (CET)[rispondi]
Caro Alex, la cosa sembra molto carina, sai che sono da sempre un fan sfegatato dei dati strutturati. L'unica cosa è che mi fannosempre paura le "toppe", in questo campo. Nel senso che quella che noi vorremmo è una modifica strutturale, reliable e sostenibile per il futuro, su cui costruire un'infrastruttura di template che duri. ora, i tedeschi hanno aperto una call per assumenere uno staff di una dozzina di persone per lavorare a Wikidata, un progetto che una volta per tutte lavori per strutturare i dati per i progetti Wikimedia. Inutile dire che sono entusiasta e che spero che lavorino bene ed in fretta. io ti lascio giocare volentieri, solo che non vorrei che, come è capitato con il famoso SAL 2.0 di iPork, il nostro essere pionieri ci faccia poi fare i salti mortali per adeguarci ai sistemi degli altri. Insomma, o candalua ti segue e vi divertite insieme o secondo me non ne vale la pena di fare la rivoluzione in così pochi e male armati :-) Aubrey McFato 10:03, 8 nov 2011 (CET)[rispondi]
Candalua è il mio punto di riferimento; questa proposta è poco più che un'interfaccia ai "dati semantizzati" che lui ha sistemato, e che è ora di cominciare a utilizzare (oltre che nella "rivoluzione invisibile" di IncludiIntestazione già fatta senza colpo ferire...). Io produco cosacce informi, poi Candalua sceglie e eventualmente sviluppa se ne vale la pena... --Alex brollo (disc.) 11:13, 8 nov 2011 (CET)[rispondi]
Ok, va bene, ma l'esperienza mi suggerisce che se vogliamo evitare di subire risatine sotto i baffi da improvvidi Galli, Angli o Teutoni è meglio che cerchiamo dall'inizio un loro feedback, in modo che se per qualunque motivo stiamo rivoluzionando il mondo ma non siamo creduti magari qualcuno più altolocato, ascoltato, autorevole ecc. ecc. ci dia bado e magari patrocini il nostro lavoro. L'ultima delusione derivata dalla semplificazione "francese" del tag pages che ignora le incredibili invenzioni di Candalua mi ha reso ancora più triste. Alex, prova a bussare alla porta di John Vanderberg o di Magnus Manske... - εΔω 21:49, 8 nov 2011 (CET)[rispondi]
Mi viene un coccolone solo all'idea di spiegare la cosa in termini intellegibili.... come dicevo, il "cuore" non è l'ultima trovata, ma il meccanismo della semantizzazione, che è stato sviluppato da Candalua su una mia grossolana idea; quindi "girerei" l'invito a Candalua (che forse saprebbe spiegarla meglio di me :-) ).
Comunque, fermo restando che farò un "giro di bot" riciclando gli inutili template tipo Template:Dante Alighieri al nuovo uso, ormai sono preso da altro.... questa è già un'idea "conclusa". Domani sera spero di potervi fare una sorpresa. Alex brollo (disc.) 23:56, 8 nov 2011 (CET)[rispondi]
Niente sorpresa; ormai penso ad altro. Vedi sotto. Questa è la volta buona che il text layer djvu cede. --Alex brollo (disc.) 23:19, 18 nov 2011 (CET)[rispondi]

Ho riscontrato un problema nel template, riguardo le note spezzate su più pagine. In questa pagina la nota 3 è spezzata in due, ma solo la prima parte è transclusa qui. --Luigi62 (disc.) 11:48, 13 nov 2011 (CET)[rispondi]

Già segnalato in Discussioni template:Nota separata: lì c'è la risposta. - εΔω 12:40, 13 nov 2011 (CET)[rispondi]

Parsing python dello strato testo dei file djvu modifica

I file .dsed prodotti da djvused.exe sono tutto quanto serve per ricostruire integralmente lo strato testo di un file djvu (che ne abbia uno, ovviamente), annotazioni e metadati compresi,oltre al testo delle pagine; il tutto insieme ai comandi che servono per eseguire la ricostruzione.

In altri termini, per esempio, ottenuto l'opportuno file test.dsed da test.djvu, il semplicissimo comando:

C:\> djvused test.djvu -f test.dsed -s 

legge il file test.dsed, e ci trova tutto quanto serve per infilare lo strato testo, pagina per pagina, nel file test.djvu.

Ora, il file dsed ha una struttura piuttosto complessa, in quanto contiene per tutte le pagine le coordinate di tutte le sezioni a tutti i livelli di dettaglio fino all'ultimo (le singole parole), stratificati in pagine, colonne, regioni, paragrafi, linee e parole; ciascun elemento, per tutti i livelli sotto il livello pagine, associato alle coordinate del rettangolo che le contiene.

Il file .dsed è un banale file di testo e in teoria potrebbe essere modificato con un text editor qualsiasi e ricaricato. Non consiglierei la cosa se non al mio peggior nemico. :-)

Stasera ho completato lo script djvu.py che trasforma l'intero file dsed in una struttura dati python (una matrioska di liste e dizionari), per cui posso chiedere "restituiscimi il testo del secondo paragrafo della pagina 25".

Appena ho finito questo messaggio, con un paio di linee di codice potrò chiedere la stessa cosa, aggiungendo anche "e dammi pure le coordinate del rettangolo che contiene tale paragrafo nell'immagine della pagina". Problema: per ora, solo Samuele e Aubrey hanno accesso alla directory dropbox dove il tutto si sta sviluppando e gira. C'è qualche altro ardimentoso che vuol partecipare ai lavori? Sareste benvenuti. --Alex brollo (disc.) 23:40, 18 nov 2011 (CET)[rispondi]

I lavori procedono bene, la struttura python sta dimostrando (come tutte le strutture fortunate) caratteristiche emergenti interessanti. Faccio ancora un po' di sviluppo "a funzioni" poi tenterò di trasformare la struttura in un vero oggetto, con i suoi attributi e i suoi metodi. Un tentativo di battere la strada xml ha dimostrato che la struttura python da dsed è estremamente più veloce, sia come parsing vero e proprio, sia come interrogazioni. Non meraviglia perchè gran parte dellacosa avviene con semplice ricarca di stringhe, grazie ai magici find_stringa e produci_lista(), con uso omeopatico di regex.--Alex brollo (disc.) 10:56, 20 nov 2011 (CET)[rispondi]

Aiuto regex modifica

Domanda regex. Capito come ottenere una ricerca greedy, non ho capito come fare una ricerca "doppiamente greedy", ossia come ricercare il minimo di testo non solo a destra, ma anche a sinistra della stringa.

Esempio: nella stringa "(line....(line....(line... [1]....[1]" una regex greedy:

\(line.*?\[1]

mi restituisce (line....(line....(line... [1], ma io vorrei ottenere la stringa "greedy a sinistra": (line... [1]

--Alex brollo (disc.) 10:44, 20 nov 2011 (CET)[rispondi]

Il "problema" è la presenza di uno spazio qui: (line... [1] se fosse: (line...[1] oppure line....[1] basterebbe utilizzare questo:
\(line.*?\[1]
Sulla stringa (line....(line....(line....[1]....[1] e verrebbe fuori: (line....[1].
P.S. Ci sto lavorando (al parsing), va bene se carico il file php che ho scritto anche se funziona solo se all'interno di un server? Samuele 15:26, 20 nov 2011 (CET)[rispondi]
Ma certo! Vorrà dire che riattiverò Pampa....forse. :-)
Le cose si stanno semplificando in djvu.py, il parsing produce un vero oggetto.... gli sto assegnando i vari metodi. Viene inizializzato dandogli semplicemente il nome del file djvu da esplorare. --Alex brollo (disc.) 18:19, 20 nov 2011 (CET)[rispondi]
Riguardo alla regex: i puntini rappresentano sequenze di caratteri qualsiasi, comprendenti anche caratteri di fine riga (ma questo ho imparato come risolverlo, in python con un parametro re.DOTALL). Beninteso, ho una funzioncina python apposta, che restituisce il risultato in un lampo; ma se non mi sforzo di usare anche le regex non imparerò mai. :-( --Alex brollo (disc.) 18:24, 20 nov 2011 (CET)[rispondi]

Quesito per gli esperti di poem modifica

In questa pagina c'è un brano racchiuso tra <poem></poem> che contiene una nota (ref) che contiene a sua volta un blocco poem, e se questo non bastasse la nota si estende su due pagine (ed anche il poem). Dopo diversi tentativi il risultato migliore l'ho ottenuto portando il <ref></ref> all'esterno del poem, ma il numero della nota finisce a capo. Qualche altra idea? --Luigi62 (disc.) 00:22, 29 nov 2011 (CET)[rispondi]

Il poem dentro il ref non funziona troppo bene, e 2 poem uno dentro l'altro è peggio che peggio. Io semplicemente eviterei di usarlo. Candalùa (disc.) 09:56, 29 nov 2011 (CET)[rispondi]

Il Common.css è modificato in modo che usare <br /> alla fine delle righe, o meglio usare il vecchio trucco di un carattere : a inizio riga, dà un effetto identico a poem. Volendo esagerare, si può usare direttamente il codice html che poem genera:
  1. includere i versi in un <div class="poem"> (andando a capo dopo il div per generare automaticamente un tag <p>);
  2. aggiungere un <br /> alla fine di ogni verso.

--Alex brollo (disc.) 10:11, 29 nov 2011 (CET)[rispondi]

Concorso di idee modifica

Non vi sarà sfuggita la brillantezza del sistema di "ricordare" il numero dell'ultimo verso da una pagina alla successiva, usato da Candalua come cuore dei tool di Strumenti per la rilettura. Ora, a chi crea o modifica molte pagine consecutive chiedo: quali altri dati sarebbe bene "ricordare" passando da una pagina alla successiva? Ho l'impressione che siano parecchi; ad esempio, il tipo di doppie virgolette da usare al posto dei classici "..." per rispettare la scelta tipografica del libro; ma anche, ad esempio, gli elementi variabili di RigaIntestazione (come il numero del capitolo) e chissà quanti altri; tutti elementi che potrebbero essere richiesti da un prompt nella sola prima pagina, e poi trascinati avanti. L'URL può arrivare a 4000 caratteri se non sbaglio, ce ne sta di roba... A voi. --Alex brollo (disc.) 00:04, 6 dic 2011 (CET)[rispondi]

Elaborazione js delle righe (progetto Phe) modifica

Al momento del primo edit di una pagina dotata di "datiPagina", uno script js di Common.js richiama, riga per riga, una banale funzione elaboradatiPagina(), inviando alla funzione il numero della riga nell’array. La banalissima funzione estrae il testo della riga, ci aggiunge un \n e la aggiunge alla pagina.

Se un utente scrive, nel proprio vector.js, una diversa funzione elaboradatiPagina(), tale funzione personale "rullerà" quella di base e restituirà una riga "arricchita" di varie cose (postOCR, codici di formattazione....). Quindi, chiunque maneggi js e non svenga di fronte a un oggetto complicatuccio come datiPagina può divertirsi a provare trucchi (senza gravi conseguenze). Se qualche ardimentoso vuole provarci, posso mettere qui il tracciato dell’oggetto datiPagina per avere l’elenco dei dati disponibili, da usare con un tutta la creatività e fantasia possibile. —Alex brollo (disc.) 09:42, 12 dic 2011 (CET)[rispondi]

Testo ruotato di +90 -90 gradi modifica

Apprendo dal web, con alcuni particolari qui, che tecnicamente è possibile, maneggiando css, scrivere su una pagina web un testo a direzione verticale (verso l'alto o verso il basso). Vi risulta che in qualche source (qui o altrove) la cosa sia stata mai dissodata? Se no: chi mi aiuta....? ;-) La cosa è tosta, il supporto del codice css3 sembra "browser-specifico" e incompleto. Mi serve per una pagina di Ziba 2 che ho lasciato a SAL 50%. --Alex brollo (disc.) 12:08, 15 dic 2011 (CET)[rispondi]

C'è tutto un mondo da scoprire.... al solito, il riferimento meno spaventoso sono le w3c "scools", sezione css3, "2d transforms". --Alex brollo (disc.) 15:17, 15 dic 2011 (CET)[rispondi]

Progetto: migliorare l'interattività di postOCR e datiPagina modifica

Chi usa datiPagina (per sistemare i RigaIntestazione, scrivere qualche regex specifica per l'opera ecc) si sarà presto reso conto del punto dolente: è fastidioso, quando scorrendo le pagine in modifica ci si accorge che ci sarebbe da cambiare capitolo in datiPagina, oppure va cambiato il delta perchè ci sono tavole fuori testo, oppure si scopre una nuova piccola regex da memorizzare. Bisogna trovare il datiPagina, modificarlo, ritornare nelle pagina, fare un ricaricamento ctrl-r o ctrl-F5 che spesso non funziona al primo colpo, magari si è lasciata una virgola o una parentesi e tocca fare debugging, ecc.

Immaginate di aprire, direttamente nella pagina di edit, un prompt attraverso il quale modificare i dati di datiPagina, di avere la mofidica immediatamente attiva, e inoltre di far "ricordare" la modifica nelle pagine successive che scorrerete; finita la serie, di aver la possibilità di salvarvi stabilmente da qualche parte il datiPagina modificato.

Vi pare interessaante? --Alex brollo (disc.) 20:49, 18 dic 2011 (CET)[rispondi]

A me si :-) --Aubrey McFato 20:59, 18 dic 2011 (CET)[rispondi]
A me pure --Carlo M. (a.k.a. zi' Carlo) (disc.) 22:35, 18 dic 2011 (CET)[rispondi]
OK, due "clienti" mi bastano. Tenete d'okkio il mio vector.js (se usate già i tattoo, meglio, perchè per le prime prove delle funzioni userò quelli). Funzione base: modDp() che sta per modifica datiPagine. --Alex brollo (disc.) 00:25, 19 dic 2011 (CET)[rispondi]

The point modifica

  • Ok, modDp() effettivamente modifica datiPagine della pagina corrente in edit, via semplici prompt (non ancora creato l'apposito tattoo per richiamarla, per ora tutto via console js).
  • verificato che è possibile "JSONizzare" l'oggetto datiPagine aggiornato, salvarlo in un cookie, e recuperarlo da un'altra pagina che veda il cookie. La strada è promettente e non così complicata. --Alex brollo (disc.) 09:51, 19 dic 2011 (CET)[rispondi]
  • embricatura fatta con trova & sostituisci di Candalua: le regex impostate vengono salvate in un cookie base pagina-specifico. Il vecchio strumento regex va riciclato
  • A metà del guado, ma in mezzo al guano.... SALiamo un po' di Ziba 2, veh. :-( --Alex brollo (disc.) 22:45, 19 dic 2011 (CET)[rispondi]
    • Riassumiamo.
      • In edit di nsPagina, deve materializzarsi datiPag.   Fatto
      • Su datiPag viene caricato innanzitutto e per tutti datiPagine[opera aperta], se esiste.   Fatto
      • Dopodichè, se esiste, viene caricato il valore memorizzato nel cookie[opera in corso] che "rulla" eventuali valori precedenti.   Fatto
      • Infine, nel corso dell'edit, ogni modifica interattiva di datiPag   Fatto o di Candalua's trova & sostituisci viene immediatamente salvata nel cookie.
      • Tutti gli script che usano datiPagine[opera aperta] devono essere fatti puntare su datiPag.   Fatto
      • Occorre poter visualizzare il codice datiPag per salvarlo, eventualmente, in una variabile datiPagine.
      • Occorre poter editare datiPag o/e distruggere il cookie, per sistemare eventuali pasticci evitando che vengano "trascinati avanti" fino a naturale scadenza del cookie.
    • Questo sarebbe il progetto. --Alex brollo (disc.) 09:05, 20 dic 2011 (CET)[rispondi]

Bene. Io modificherei così il mio trova&sostituisci:

  • aggiunta di una checkbox "Ricorda questa sostituzione":
    • se è spuntata salva la coppia di valori nel cookie secondo la tua "embricatura" (accidenti... son dovuto andare a vedere sul dizionario!)
    • altrimenti fa solo la sostituzione nella pagina corrente e poi la "dimentica" (funzionamento attuale)
  • aggiunta di una checkbox "Espressione regolare": se non è spuntata viene creata sempre una regex, ma facendo l'escape di tutti i caratteri speciali, in modo da trattare l'input come fosse testo semplice (link)
  • aggiunta di una checkbox "Non distinguere maiuscole/minuscole": se è spuntata aggiunge alla regex il parametro "i" = insensitive

Candalùa (disc.) 10:11, 21 dic 2011 (CET)[rispondi]

Magnifico. Anch'io sentivo l'esigenza di non "salvare" tentativi di T&S mal riusciti; poi cancellarli non è semplicissimo. Mi pare che la soluzione escappatrice permetta di salvare il "trova" così com'è senza ricordare se è o no una regex; ma il parametro i aggiuntivo aimè andrà ricordato. :-(
Nota: la console javascript di Chrome esala un lamento quando si chiama il trova & sostituisci attuale; qualcosa che ha a che fare con il fatto che webkit non supporta bene eventX e eventY o qualcosa del genere. --Alex brollo (disc.) 12:48, 21 dic 2011 (CET)[rispondi]
E' un bug di jquery, o di chrome, a seconda dei punti di vista. Sembra farlo ogni volta che ci sono di mezzo eventi del mouse come onclick. E' già fixato in jquery 1.7 ma noi abbiamo ancora la 1.6. Non credo ci sia da preoccuparsi, è solo un warning e probabilmente prima o poi installeranno jquery aggiornato. Candalùa (disc.) 14:57, 21 dic 2011 (CET)[rispondi]
Nuntio vobis che ho costruito, via modDp(), il primo datiPagina "completamente coockizzato" ossia: costruito ab initio interattivamente da una pagina Pagina in edit e salvato come coockie, senza che esista una variabile datiPagine scritta in MediaWiki:variabili.js o altrove. E funziona!!! E non è incompatibile con il vecchio meccanismo: lo integra soltanto. Sposto modDp() nel gadget Strumenti per la rilettura, ma per ora lo lascio non linkato; se volete provarlo, chiamatelo da una console js. Adesso stresserò per bene l'ambaradan per cercare i bug prima che li troviate voi (almeno qualcuno, poi lo so che il primo di voi che proverà la cosa immediatamente troverà un bug enorme). --Alex brollo (disc.) 15:34, 21 dic 2011 (CET)[rispondi]

Ho aggiunto le checkbox, per il momento "Ricorda" e "Espressione regolare" le ho messe disabilitate perché non c'è ancora la funzionalità associata. Se vuoi testare il ricorda togli pure il $('#findReplace_ricorda').attr('disabled', true); Candalùa (disc.) 16:41, 21 dic 2011 (CET)[rispondi]

Altra serata insonne. :-(
  1. mi par di capire che nel tool le regex vanno introdotte come "stringhe da compilare" e non come "espressioni regex" (quello che si scrive tra caratteri /...../ in un replace). Domanda: non sarebbe possibile, invece di dover ricordare con fatica le convenzioni per le stringhe da compilare (doppio escape...) si potesse inserire l'espressione regex così come la si scriverebbe in un replace, ossia nella forma /..../, elaborando poi la stringa via js per trasformarla in un'espressione regex vera?
  2. non si potrebbe integrare in questo sistema anche la questione dei parametri? In fondo, si tratterebbe solo di far scattare un algoritmo di trasformazione nel caso che il primo carattere di trova sia / (regex) mentre tutti gli altri casi sarebbero no regex. O qualcosa mi sfugge? --Alex brollo (disc.) 16:47, 21 dic 2011 (CET)[rispondi]

Eh? Doppio escape? Mi pare che funzioni, con gli escape singoli. O forse non ho capito? Per il secondo punto: mi sembra molto più comodo avere una checkbox, anziché doversi ricordare di aggiungere un certo carattere all'inizio. Candalùa (disc.) 17:35, 21 dic 2011 (CET)[rispondi]

Non badarci, sono un novizio delle regex. Sto verificando l'opzione di memorizzazione. --Alex brollo (disc.) 19:55, 21 dic 2011 (CET)[rispondi]

Includi Intestazione modifica

Perché qui viene transclusa l'intera prima pagina? --Luigi62 (disc.) 09:09, 22 dic 2011 (CET)[rispondi]

Sistemato, era un bug di Areadati.js (nell'area dati di Agamennone (Alfieri) veniva inserito del testo che non c'entrava) Candalùa (disc.) 11:12, 22 dic 2011 (CET)[rispondi]

Problema di sequenza javascript modifica

La funzione $(document).ready(function()....) che attualmente sta in MediaWiki:Gadget-evidenziaRighe.js e che crea la "freccina evidenziaRighe" se il documento aperto è una pagina Pagina, in edit, e se esiste una variabile datiPagina, funzionava perfettamente quando stava in un vector.js, ma lì non funziona: non "trova" la variabile datiPagina nel momento in cui viene lanciata; eppure la variabile esiste a completamento dei vari script come si vede da una console js. E' come se la funzione partisse "troppo presto". Per forzare il corretto funzionamento ho dovuto eliminare la condizione datiPagina["righe"]!=undefined, cosa seccante perchè adesso la freccina compare anche quando NON ci sono i dati necessari a farla funzionare, cosa che volevo evitare accuratamente.

Chi mi aiuta a risolvere il fastidioso busillo? Mi pare che la sequenza dei js sia: js generali->common.js->gadget vari->vector.js; datiPagina dovrebbe essere creata da common.js; e allora? --Alex brollo (disc.) 09:14, 29 dic 2011 (CET)[rispondi]

Il problema si può risolvere utilizzando .load() che permette di far partire una funzione dopo il load di una pagina. Il gadget può essere caricato tramite load da un'altra pagina (una qualsiasi, quella più comoda) e poi, quando è stato fatto il load, far partire la funzione di append:
$(document).load('http://it.wikisource.org/wiki/MediaWiki:Gadget-evidenziaRighe.js',function(){
if (wgCanonicalNamespace == "Pagina" && wgAction == "edit" && datiPagina["righe"]!=undefined  )
  $('<div style="position:absolute;top:50px;right:0px;z-index:500;"><a href="javascript:evidenziaRiga()"><img src="http://upload.wikimedia.org/wikipedia/commons/7/73/Arrow_green.svg" /></a></div>').appendTo($(".wikiEditor-ui-text"));
});

Samuele 10:02, 29 dic 2011 (CET)[rispondi]

Bisogna darti i tastini, quanto prima possibile. Grazie, provo a modificare lo script. --Alex brollo (disc.) 11:32, 29 dic 2011 (CET)[rispondi]
Prova (apparentemente) fallita, mi si è bloccato tutto, probabilmnente ho fatto qualche terribile errore; ho dovuto disabilitare js e annullare rapidamente la modifica. Per ora desisto. :-( --Alex brollo (disc.) 11:41, 29 dic 2011 (CET)[rispondi]
La richiesta load deve essere fatta da un'altro file, esterno, che viene preferibilmente caricato prima (forse Gadget-HotCat.js), così da non andare in conflitto (se esistesse un modo per bloccare il load automatico che fa il software wiki dei file javascript sarebbe anche meglio, così che il load sia fatto solo dal file principale). Samuele 14:20, 29 dic 2011 (CET)[rispondi]

Forse so come si può risolvere il problema. Basterebbe far apparire la freccia solo dopo che l'utente ha schiacciato su un bottone o su un link che permette l'attivazione del tool, in modo che venga controllata la presenza dell'array, al click sul link, che è sicuramente dopo il loading dell'array stessa. Spero che questo consiglio possa essere utile. Samuele 22:31, 3 gen 2012 (CET)[rispondi]

Ho fatto un tentativo di far apparire la freccetta alla fine dell'elaborazione dei dati datiPagina; ma mi sono incastrato. Mi piacerebbe che Samuele avesse "i tastini"...
Comunque, ho un'altra priorità, prego gli "smanettoni" di seguirmi nel prossimo argomento, questo problema della freccina lo risolveremo a suo tempo. --Alex brollo (disc.) 12:11, 5 gen 2012 (CET)[rispondi]