Mostra notizie nelle discussioni
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 23:59:59.0 alle 2013-03-24 23:59:59.0
Trollate totali: 11540
Re: LOL, guardate questa...
> > inclusi i + e = della tipica codifica in base 64
>
> base64 ha circa 15 diversi standard tra cui RFC 4648 (vedi url applications).
>
> Fun fact: ho implementato in java 3-4 anni fa una classe che faceva da base64 encoder e decoder di tutti i formati elencati su quella wikipagina (eccetto il checksum del radix-64), ma ne ho perduto il sorgente.

Fun fact: bastava che i fenici inventassero un solo altro carattere dell'alfabeto, e fra la sua versione minuscola e quella maiuscola, eravamo a posto con uno standard solo! In lacrime

Cioe`, per esempio mettere il fonema GN in un unico carattere. Idea!

Titolo di prova

Ad gtregtg
sfvgfgg‎
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 23:45:50.0 alle 2013-03-24 23:45:50.0
Trollate totali: 11540
Re: LOL, guardate questa...
> > ...trovata alla Alex. L'ufficio complicazione affari semplici in azione: codifica in base 59 di una stringa UTF-8, con l'esclusione dei codici di formattazione nella zona bassa (primi 26 codici). Anche i codici da 27 a 31 sono di formattazione, pero` ne ho esclusi esattamente 26 perche` con massimo 255-26 = 229 codici posso ancora rappresentare un numero di tre cifre (caratteri in ingresso) in base 229 con quattro cifre in base 59. E magari in futuro uno potrebbe usare i codici da 27 a 31 come sequenze di escape o marcatori di qualche genere.
> >
> >
> > var Base59 = {
> > 
> > t: [
> > 
> > '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
> > 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
> > 'k', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
> > 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E',
> > 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q',
> > 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
> > 
> > ],
> > 
> > encode: function (s) {
> > 
> > var i, j, k, c, d, e, f, m;
> > var l = s.length;
> > var r = '';
> > 
> > for (i = 0, j = 1, k = 2; i < l; i += 3, j += 3, k += 3) {
> > 
> > c = s.charCodeAt (i) - 26;
> > d = j < l ? s.charCodeAt (j) - 26 : 0;
> > e = k < l ? s.charCodeAt (k) - 26 : 0;
> > m = 52441 * c + 229 * d + e;
> > c = Math.floor (m / 205379);
> > d = Math.floor (m / 3481) % 59;
> > e = Math.floor (m / 59) % 59;
> > f = m % 59;
> > r = r + this.t [f] + this.t [e] + this.t [d] + this.t [c];
> > 
> > }
> > 
> > return r;
> > 
> > },
> > 
> > decode: function (s) {
> > 
> > var i, j, k, h, c, d, e, f, m;
> > var l = s.length;
> > var r = '';
> > 
> > for (i = 0, j = 1, k = 2, h = 3; i < l; i += 4, j += 4, k += 4, h += 4) {
> > 
> > c = this.t.indexOf (s.charAt (i));
> > d = j < l ? this.t.indexOf (s.charAt (j)) : 0;
> > e = k < l ? this.t.indexOf (s.charAt (k)) : 0;
> > f = h < l ? this.t.indexOf (s.charAt (h)) : 0;
> > m = 205379 * f + 3481 * e + 59 * d + c;
> > c = Math.floor (m / 52441);
> > d = Math.floor (m / 229) % 229;
> > e = m % 229;
> > r = c ? r + String.fromCharCode (c + 26) : r;
> > r = d ? r + String.fromCharCode (d + 26) : r;
> > r = e ? r + String.fromCharCode (e + 26) : r;
> > 
> > }
> > 
> > return r;
> > 
> > }
> > 
> > }
> > console.log (Base59.encode ('If My Grandmother Had Wheels It Would Be A Cart'));
> > console.log (Base59.decode (Base59.encode ('If My Grandmother Had Wheels It Would Be A Cart')));
> > 

> >
> > Output:
> >
> >
> > 735cby7d8JzbokwmesNmXDej2FPb4qA1MPdj0bJn4fZnbwNmqcUieg9jj6z1pCyn
> > If My Grandmother Had Wheels It Would Be A Cart
> > 

> >
> > Perche`? Perche` voglio far passare i dati da un formato che non dia mai problemi con caratteri speciali (inclusi i + e = della tipica codifica in base 64), depositabile direttamente in metodi GET e POST senza urlencoding, o in un DB SQL senza incorrere in injections, o in un nome di file, eccetera. E neanche che dia problemi di ambiguita` dei caratteri quando si leggono a occhio, quindi gia` che c'ero (con una base non piu` potenza di 2) ho escluso anche la i maiuscola, la o maiuscola e la elle minuscola.
> >
> > Adesso mi offenderanno pesantemente. Ficoso
>
> ROTFL, tempo fa avevo pensato a un base 64 ottenuto sostituendo + e = con non mi ricordo cosa purché ASCII < 127 - mi sembra ci fosse il punto escamativo, e poi parentesi tonde? quadre?

Per molti casi potresti sostituire + e = con meno e underscore, a occhio.
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 23:44:36.0 alle 2013-03-24 23:44:36.0
Trollate totali: 11540
Re: alex.tg
> cambia avatar mi ha annoiato quello attuale
>
> eri più interessante con l'avatar del gatto

Ci pensero`, ora ho altro a cui pensare, devo collegare il DB localstorage a quello remoto. Geek
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 23:37:03.0 alle 2013-03-24 23:37:03.0
Trollate totali: 11540
LOL, guardate questa...
...trovata alla Alex. L'ufficio complicazione affari semplici in azione: codifica in base 59 di una stringa UTF-8, con l'esclusione dei codici di formattazione nella zona bassa (primi 26 codici). Anche i codici da 27 a 31 sono di formattazione, pero` ne ho esclusi esattamente 26 perche` con massimo 255-26 = 229 codici posso ancora rappresentare un numero di tre cifre (caratteri in ingresso) in base 229 con quattro cifre in base 59. E magari in futuro uno potrebbe usare i codici da 27 a 31 come sequenze di escape o marcatori di qualche genere.

    var Base59 = {

                t: [

                        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                        'k', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
                        'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E',
                        'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q',
                        'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'

                ],

                encode: function (s) {

                    var i, j, k, c, d, e, f, m;
                    var l = s.length;
                    var r = '';

                        for (i = 0, j = 1, k = 2; i < l; i += 3, j += 3, k += 3) {

                                c = s.charCodeAt (i) - 26;
                                d = j < l ? s.charCodeAt (j) - 26 : 0;
                                e = k < l ? s.charCodeAt (k) - 26 : 0;
                                m = 52441 * c + 229 * d + e;
                                c = Math.floor (m / 205379);
                                d = Math.floor (m / 3481) % 59;
                                e = Math.floor (m / 59) % 59;
                                f = m % 59;
                                r = r + this.t [f] + this.t [e] + this.t [d] + this.t [c];

                        }

                        return r;

                },

                decode: function (s) {

                    var i, j, k, h, c, d, e, f, m;
                    var l = s.length;
                    var r = '';

                        for (i = 0, j = 1, k = 2, h = 3; i < l; i += 4, j += 4, k += 4, h += 4) {

                                c = this.t.indexOf (s.charAt (i));
                                d = j < l ? this.t.indexOf (s.charAt (j)) : 0;
                                e = k < l ? this.t.indexOf (s.charAt (k)) : 0;
                                f = h < l ? this.t.indexOf (s.charAt (h)) : 0;
                                m = 205379 * f + 3481 * e + 59 * d + c;
                                c = Math.floor (m / 52441);
                                d = Math.floor (m / 229) % 229;
                                e = m % 229;
                                r = c ? r + String.fromCharCode (c + 26) : r;
                                r = d ? r + String.fromCharCode (d + 26) : r;
                                r = e ? r + String.fromCharCode (e + 26) : r;

                        }

                        return r;

                }

        }
        console.log (Base59.encode ('If My Grandmother Had Wheels It Would Be A Cart'));
        console.log (Base59.decode (Base59.encode ('If My Grandmother Had Wheels It Would Be A Cart')));


Output:

735cby7d8JzbokwmesNmXDej2FPb4qA1MPdj0bJn4fZnbwNmqcUieg9jj6z1pCyn
If My Grandmother Had Wheels It Would Be A Cart


Perche`? Perche` voglio far passare i dati da un formato che non dia mai problemi con caratteri speciali (inclusi i + e = della tipica codifica in base 64), depositabile direttamente in metodi GET e POST senza urlencoding, o in un DB SQL senza incorrere in injections, o in un nome di file, eccetera. E neanche che dia problemi di ambiguita` dei caratteri quando si leggono a occhio, quindi gia` che c'ero (con una base non piu` potenza di 2) ho escluso anche la i maiuscola, la o maiuscola e la elle minuscola.

Adesso mi offenderanno pesantemente. Ficoso

**Modificato dall'autore il 24.03.2013 23:40**
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 23:25:30.0 alle 2013-03-24 23:25:30.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > Ah, esiste il "for each"?
> > Ecco, non l'avevo ancora trovato.
> Occhio che è solo ecma5, quindi i browser precedenti agli ultimi 4-5 anni non ce l'hanno.
> Tu usalo, se hai problemi metti in cima alla pagina questo e risolvi.

No, no, ho in mente di richiedere un browser recente comunque, quindi mi va bene il forEach nativo e non prendo precauzioni. Sorride

> > altri appunti
> Usi jquery solo per recuperare elementi dal DOM? Se sì tanto vale usare document.querySelector e document.querySelectorAll 1 e liberarti della dipendenza.
>
> 1 Occhio che questo ritorna una NodeList, se vuoi usarlo come un array normale (per usare map, filter, forEach e reduce) usa Array.prototype.slice.call(nl)

Non uso jQuery per recuperare elementi dal DOM, uso solo questa funzioncina che si trova assieme a un'altra che estende String, entrambe due piccole utility stand-alone per uso personale:

        /*
         *
         *      personal javascript extensions
         *
         */

        function $(e) {

                return (document.getElementById (e));

        }

        String.prototype.zeroPad = function (l) {

            var p = l - this.length;

                return p > 0 ? (new Array (p + 1)).join ('0') + this : this.toString ();

        }


Ovviamente il problema e` che scrivere document.getElementById e` parecchio lungo. E ovviamente la mia funzioncina andrebbe rimossa nel caso usassi poi jQuery. Ma per ora quella della funzioncina $ la trovo una buona idea anche presa singolarmente.

Vaffan

Ad https://duckduckgo.com/?t=ffab&q=vaffanculo&ia=web
CULOOOO!!!!‎
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 21:56:32.0 alle 2013-03-24 21:56:32.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> Perche' non usare jQuery.each() al posto del vetusto for (...) ?

Se esiste un forEach nel javascript dvro & crvdo lo uso, ma al momento vorrei tenermi lontano da jQuery. Temo mi nasconda cose che vorrei prima imparare da solo.
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 21:51:48.0 alle 2013-03-24 21:51:48.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> Non è che oggi sia qualcosa di meglio,

Tutto cio` mi offende. A bocca storta
Non ci capisco ancora tutto, ma qualcosina qua e la` si`. A bocca storta
Sono migliorato! In lacrime

> qualche appunto: definisci lo scope delle variabili con var,

Quello e` un estratto, non la funzione completa.
Le mie funzioni dichiarano tutte le locali all'inizio, mai inline.
Odio dichiararle inline. Fantasma

> se m non ti serve fuori -> var m, se m ha un nome migliore di m usalo, perché non si capisce cos'è,

m sta per "matches", i matches di fetchBadges che e` questa qui:

        fetchBadges = function (nBadgesToFetch, type) {

            var matches = [ ];

                stock ({ type: type }).each (function (r) {

                    var nAvail, first, last;

                        if (nBadgesToFetch) {

                                first = new Badge (r.first, r.type),
                                last = new Badge (r.last, r.type),
                                nAvail = last.parts ().v - first.parts ().v + 1;

                                if (nAvail > nBadgesToFetch) {

                                        matches.push ({ n: nBadgesToFetch, first: first.b, last: first.offset (nBadgesToFetch - 1).b });
                                        nBadgesToFetch = 0;

                                }

                                else {

                                        matches.push ({ n: nAvail.toString (), first: first.b, last: last.b });
                                        nBadgesToFetch -= nAvail;

                                }

                        }

                });

                return nBadgesToFetch ? [ ] : matches;

        }



> usa il forEach invece di iterare con l'indice (la callback prende tre argomenti se proprio ti serve l'indice c'è),

Ah, esiste il "for each"?
Ecco, non l'avevo ancora trovato.
Da come ne parli in termini di callback, il forEach e` un metodo delle array?

> metti sempre la radice al parseInt, perché le stringhe che iniziano per 0 vengono interpretate come ottali,

Poh. Come detto, quello e` un estratto: quel campo viene validato da un altro script che lavora sul suo event handler "onkeyup", e che parsa con la radice 10 e poi riscrive, dopo altri controlli, il campo. La funzione che contiene quel codice e` legata alla validazione di tutto il form. In forma completa e` questa:

        deliveryFormSubmit = function () {

            var i, j, f, m, r, t;
            var amounts, froms, tos;

            var typesToSave = [

                        'A', 'B', 'C', 'M',
                        '820f', '821d', '821f'

                ];

            var fieldsToSave = [

                        'deliveryFormDateDay',
                        'deliveryFormDateMonth',
                        'deliveryFormDateYear',
                        'deliveryFormRecipientName',
                        'deliveryFormRecipientIdNumber',
                        'deliveryFormCounselingAgency',
                        'deliveryFormAgencyCode',
                        'deliveryFormTt951956Amount',
                        'deliveryForm1561nAmount',
                        'deliveryFormSignatureDate'

                ];

                if (!deliveryFormValidate ()) {

                        return;

                }

                r = { };

                for (i = 0; i < fieldsToSave.length; ++ i) {

                        f = fieldsToSave [i].split ('deliveryForm') [1];
                        f = f.charAt (0).toLowerCase () + f.substr (1);
                        r [f] = $(fieldsToSave [i]).value;

                }

                for (i = 0; i < typesToSave.length; ++ i) {

                        t = typesToSave [i];
                        m = fetchBadges (parseInt ($('deliveryForm' + t + 'LotAmount').value), t);

                        amounts = [ ];
                        froms = [ ];
                        tos = [ ];

                        for (j = 0; j < m.length; ++ j) {

                                amounts.push (m [j].n);
                                froms.push (m [j].first);
                                tos.push (m [j].last);

                                if (stock ({ type: t, first: m [j].first, last: m [j].last }).first ()) {

                                        stock ({ type: t, first: m [j].first, last: m [j].last }).remove ();

                                } // entire lot used

                                else {

                                        stock ({ type: t, first: m [j].first }).update ({ first: new Badge (m [j].last, t).offset (1).b });

                                } // lot partially used

                        }

                        f = t.toLowerCase ();
                        r [f + 'LotAmount'] = amounts.join (',');
                        r [f + 'LotFrom'] = froms.join (',');
                        r [f + 'LotTo'] = tos.join (',');

                }

                deliveries.insert (r);
                stockListLoad ();
                deliveriesListLoad ();
                deliveryFormClear ();

        }


> altre variabili con nome poco significativo (f è come m, se non serve fuori dal loop prefissala con var per non sporcare il namespace).

Sta per "field". A bocca aperta

p.s. il namespace globale contiene praticamente solo tre oggetti: stock, deliveries e dbSync. I primi due sono i due DB di TAFFY con cui lavora, il terzo e` un oggetto in fase di sviluppo per le richieste CORS al database remoto, insomma questo:

        Sync = function (url, pp) {

            var q = new XMLHttpRequest (),
                f = false,
                h = false;

                this.url = url;
                this.pp = pp;

                this.post = function (data, responseHandler) { if (f == false) {

                        h = typeof (responseHandler) == 'function' ? responseHandler : false;

                        if (q) {

                                f = true;
                                q.open ('POST', this.url, true);
                                q.onreadystatechange = this.rscHandler;
                                q.send ();

                        }

                }}

                this.rscHandler = function () { if (q.readyState == 4) {

                        f = false;

                        if (h) {

                                h.call (q.status == 200 ? q.responseXML : false);

                        }

                }}

        }


che e` un abbozzo ancora da sviluppare. Non spedisce ancora dati ne` usa pp che e` intesa essere una passphrase (come una password, ma piu` una frase). Alla fine lo faro` passare da https, ammesso che le richieste CORS funzionino anche di li`. Comunque se hai altri appunti, scrivi pure. Anonimo

**Modificato dall'autore il 24.03.2013 22:09**
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 18:30:50.0 alle 2013-03-24 18:30:50.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > > > http://anynowhere.com/personal/jsdbtest-final.png
> > >
> > > Una piccola nota di Gatto Pignolo ma Multimediale:
> > >
> > > secondo me dovresti diversificare l'aspetto delle caselle da quello dei pulsanti. Così sembrano tutti dei pulsanti (come nei mac?) mentre le caselle dovrebbero essere incavate nella pagina, cioè avere l'ombra interna.
> >
> > ok ok, posso sempre fare delle piccole modifiche al CSS, dopo.
>
> Il succo è che i pulsanti sono in rilievo perché sono da schiacciare, le caselle incavate da riempire.

Si`, lo capisco, d'altronde a me le robe incavate non mi sono mai piaciute. Preferisco una specie di tavolettina con un'ombreggiaturina che non dia sul volgare. D'altronde, i pulsanti sono molto diversi: hanno aspetto metallico e una lucetta verde sul bordo sinistro (si accende quando si hoverano, perche` input[type=button]:hover imposta border-left: 6px solid #qualcosatipounverdechiaro). Ah, si abbassa anche l'ombreggiatura quando si premono (input[type=button]:active). Insomma il feeling dei pulsanti e` molto diverso da quello dei campi, che se ci vai sopra ti danno il cursore caret. Io li lascerei cosi`. A bocca storta

> Dai tempi della versione 1.2 Javascript è diventato un robo enorme. A bocca storta
> Interessante, per carità, ma non saprei più da dove cominciare per metterci le mani.

Sto avendo difficolta` anch'io, ma pian piano faccio pratica, mi chiarisco come vanno le cose tra i contesti, l'oggetto this, e l'associazione di this che fanno i metodi call e apply delle funzioni e degli event handlers... nel programmillo sono riuscito a scrivere perfino pezzi come questo qui, che aggiorna il database del magazzino dei lotti delle targhe quando si devono distribuire molte targhe da lotti diversi e magari non contigui, rimuovendo i lotti usati completamente, e aggiornando l'ultimo intervallo usato parzialmente:

for (i = 0; i < typesToSave.length; ++ i) {

        t = typesToSave [i];
        m = fetchBadges (parseInt ($('deliveryForm' + t + 'LotAmount').value), t);

        amounts = [ ];
        froms = [ ];
        tos = [ ];

        for (j = 0; j < m.length; ++ j) {

                amounts.push (m [j].n);
                froms.push (m [j].first);
                tos.push (m [j].last);

                if (stock ({ type: t, first: m [j].first, last: m [j].last }).first ()) {

                        stock ({ type: t, first: m [j].first, last: m [j].last }).remove ();

                } // entire lot used

                else {

                        stock ({ type: t, first: m [j].first }).update ({ first: new Badge (m [j].last, t).offset (1).b });

                } // lot partially used

        }

        f = t.toLowerCase ();
        r [f + 'LotAmount'] = amounts.join (',');
        r [f + 'LotFrom'] = froms.join (',');
        r [f + 'LotTo'] = tos.join (',');

}


E che se l'avessi letto qualche giorno fa non ci avrei capito una mazza. Fantasma
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 18:07:32.0 alle 2013-03-24 18:07:32.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> Non mi torna una cosa, se fai un xmlhttp verso un dominio diverso da quello della pagina non è il browser stesso a bloccare la richiesta?
>
> Edit: letto adesso, fai prima una OPTIONS per se si può.

A volerci trovare il difetto, le richieste CORS funzionano solo su versioni recenti di IE (oltre che su tutti gli altri da strani eoni), pero` alla MCTC di Lucca mi dicono che hanno tutti installato Chrome, sicche` penso di non dovermi preoccupare. Ad altri, eventualmente diro` di aggiornare IE o passare ad altro. Non e` bello, ma e` salutare. Fantasma

abcdefghi

Ad www.www.www
qwerty‎
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 16:33:06.0 alle 2013-03-24 16:33:06.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > http://anynowhere.com/personal/jsdbtest-final.png
>
> Una piccola nota di Gatto Pignolo ma Multimediale:
>
> secondo me dovresti diversificare l'aspetto delle caselle da quello dei pulsanti. Così sembrano tutti dei pulsanti (come nei mac?) mentre le caselle dovrebbero essere incavate nella pagina, cioè avere l'ombra interna.

ok ok, posso sempre fare delle piccole modifiche al CSS, dopo.
Adesso quel che conta e` la parte sostanziosa, la connessione al DB sul server. Se sul mio server metto header ("Access-Control-Allow-Origin: *"), la richiesta funziona! SI PUO` FARE! Ficoso

P.S.
Essenzialmente, sul server metto:

<?php

header ('Access-Control-Allow-Methods: POST, OPTIONS');
header ('Access-Control-Allow-Origin: *');
header ('Content-Type: application/xml; charset=utf-8');

die ('<?xml version="1.0"?><data>hello, this is a CORS response test</data>');

?>


Sul client javascript, metto (con l'omissis del percorso completo, non mostrato per non sputtanarlo):

        var url = 'http://anynowhere.com/...';
        var xhr = new XMLHttpRequest ();

        rscHandler = function () {

                console.log (xhr.readyState);
                console.log (xhr.responseXML);

        }

        if (xhr) {

                xhr.open ('POST', url, true);
                xhr.onreadystatechange = rscHandler;
                xhr.send ();

        }


E in console ricevo:

Immagine postata dall'utente

Sicche` funziona, la comunicazione a due vie e` possibilissima anche partendo da un file locale (caricato come file://blahblah.html), purche` ci sia l'header CORS sul server. Beniffimo, non ho bisogno d'altro. Sorride

**Modificato dall'autore il 24.03.2013 16:42**
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 11:47:43.0 alle 2013-03-24 11:47:43.0
Trollate totali: 11540
Re: Jade, Mortal Kombat
> Immagine postata dall'utente

Bellina! A bocca aperta
Se mi ci scontrassi, potrei fare affidamento sul MIO, di tubi. Ficoso
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 11:44:20.0 alle 2013-03-24 11:44:20.0
Trollate totali: 11540
Re: Ma quanto è bello simcity?
> > Troppo troppo belllllooooooo!!!
>
> questa quanto ti fa al litro Newbie, inesperto
>
> Immagine postata dall'utente

La DMC12? Era un chiodo. Con la carrozzeria d'acciaio inossidabile era pesantissima e il motore non era un gran che. Poteva arrivare a 88 mph ma ce ne metteva, di tempo. Triste
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 02:43:04.0 alle 2013-03-24 02:43:04.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> L'header in questione sarebbe "Access-Control-Allow-Origin:" seguito, per la massima "apertura", da un asterisco a significare che la risposta dovrebbe essere accettata da qualsiasi dominio ne abbia fatto richiesta javascritta.
>
> Sarebbe supportato ormai da tutti (ultimo fra i famosi, IE10).
> Pero` non so se ho capito bene.

Si`, si direbbe proprio cosi`, ho provato degli esempi live e almeno da un sito a un altro, funzionano. Quel che e` da vedere e` se ANCHE da un file locale verso un sito funzionano. Non e` detto ma sperimentero`. In qualche modo vorrei proprio riuscire a evitare di dover installare piu` di un semplice, singolo file html da tenersi dove piu` aggrada all'utente. Perche` per il resto, l'estetica di un gestionalino scritto cosi` e` fenomenale. Ficoso

http://anynowhere.com/personal/jsdbtest-final.png

Lato client, il lavoro e` finito, fa tutto quel che deve fare.
Lato server, adesso tocca al salto nel buio. Fantasma

Black Woman Destroys White Privilege Myth

Ad https://www.youtube.com/watch?v=pbccGbPKwok
Femmina nera onesta ci spiega il concetto del "white privilege"‎
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 02:01:26.0 alle 2013-03-24 02:01:26.0
Trollate totali: 11540
Re: ^________^
> _
> __
> ___
> ____
> _______
> _______________

______________ _  _  _ ______________ In lacrime

**Modificato dall'autore il 24.03.2013 02:02**
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 01:47:14.0 alle 2013-03-24 01:47:14.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > > Che diamine...? Newbie, inesperto
> > >
> > > Ah per il fatto che il DB localstorage ha una certa tendenza alla volatilita`? Be', e` a quello che serve il server remoto, cioe` il mio, dove registro l'utenza e faccio interpretare le richieste a uno scriptino php che le smista sul server MySQL. Nel programmillo javascript, pondero di inserire una funzioncina di facilissimo uso che, data una frase di passo, si collega al mio server e lo sincronizza con la versione del DB in localstorage. Con un timestamp decido quale versione e` piu` recente e cosi` se un utente sposta il javascript su un altro computer, quello si sincronizza subito col server e ripesca il database. Che ne pensi? Eh? Eh? Sorride
> > >
> > > <pensiero>
> > > Come minimo gli sembrera` una cagata,
> > > oppure avra` un modo gia` pronto per farlo con due righe. Fantasma
> > > </pensiero>
> >
> > Quindi la pagina html starà sul tuo servero vero? Sennò la same-origin-policy si arrabbia.
>
> Ah gia`, porca miseria me la sono scordata. In lacrime
>
> E se non faccio una richiesta xmlHttp e metto un semplice form da spedire con il contenuto del DB in metodo POST, s'arrabbiera` lo stesso? Mi sa che dovro` sperimentare un po'...

p.s.

ci sarebbe anche questo CORS, che funzionerebbe, se ho ben capito, aggiungendo un header alla risposta del server, e questo header permetterebbe di ricevere la risposta tramite il javascritto che ha postato una XMLHttpRequest.

https://developer.mozilla.org/en-US/docs/HTTP/Acce...

L'header in questione sarebbe "Access-Control-Allow-Origin:" seguito, per la massima "apertura", da un asterisco a significare che la risposta dovrebbe essere accettata da qualsiasi dominio ne abbia fatto richiesta javascritta.

Sarebbe supportato ormai da tutti (ultimo fra i famosi, IE10).
Pero` non so se ho capito bene.
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-24 01:19:53.0 alle 2013-03-24 01:19:53.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > Che diamine...? Newbie, inesperto
> >
> > Ah per il fatto che il DB localstorage ha una certa tendenza alla volatilita`? Be', e` a quello che serve il server remoto, cioe` il mio, dove registro l'utenza e faccio interpretare le richieste a uno scriptino php che le smista sul server MySQL. Nel programmillo javascript, pondero di inserire una funzioncina di facilissimo uso che, data una frase di passo, si collega al mio server e lo sincronizza con la versione del DB in localstorage. Con un timestamp decido quale versione e` piu` recente e cosi` se un utente sposta il javascript su un altro computer, quello si sincronizza subito col server e ripesca il database. Che ne pensi? Eh? Eh? Sorride
> >
> > <pensiero>
> > Come minimo gli sembrera` una cagata,
> > oppure avra` un modo gia` pronto per farlo con due righe. Fantasma
> > </pensiero>
>
> Quindi la pagina html starà sul tuo servero vero? Sennò la same-origin-policy si arrabbia.

Ah gia`, porca miseria me la sono scordata. In lacrime

E se non faccio una richiesta xmlHttp e metto un semplice form da spedire con il contenuto del DB in metodo POST, s'arrabbiera` lo stesso? Mi sa che dovro` sperimentare un po'...

> Btw, fra le 3:00 e le 3:10 devo mettere una pagina di cortesia che ho i riavvii dell'application server e del db, evitate di postare a quell'ora (mi riferisco al messaggio duplicato).

Eh, si`, non rispondeva, cosi` ho ricopiato e rinviato. Anonimo
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-23 03:11:20.0 alle 2013-03-23 03:11:20.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > > > > > > ma un mini-serverino nodejs (che funziona benone anche su windows) che ti fa le crud su file .json?
> > >
> > > Visto che mi annoiavo ho scritto il serverino per alex, si salva in rw.js e si lancia con "node rw.js", GET legge il file, POST lo sovrascrive:
> > >
> > > 'use strict';
> > > 
> > > var http = require('http'),
> > > fs   = require('fs');
> > > 
> > > var prefix = __dirname;
> > > 
> > > var server = http.createServer(function(req, res) {
> > > if (req.headers['content-type'] !== 'application/json') {
> > > res.writeHead(405);
> > > res.end();
> > > return;
> > > }
> > > if (req.method === 'GET') {
> > > fs.readFile(prefix + req.url, 'utf8', function(err, data) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > return;
> > > }
> > > res.writeHead(200, {'Content-Type':'application/json'});
> > > res.end(data);
> > > });
> > > } else if (req.method == 'POST') {
> > > fs.open(prefix + req.url, 'w', function(err, fd) {
> > > req.on('data', function(data) {
> > > fs.write(fd, new Buffer(data), 0, data.length, null, function(err, written, buffer) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > throw err;
> > > }
> > > });
> > > });
> > > req.on('end', function() {
> > > fs.close(fd, function(err, fd) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > throw err;
> > > }
> > > })
> > > res.writeHead(204);
> > > res.end();
> > > });
> > > });
> > > }
> > > });
> > > 
> > > server.listen(8080);
> > > 

> > >
> > > Poi davanti a questo ci metti nginx (anche questo c'è anche per windows) con la seguente confa:
> > >
> > > events {
> > > worker_connections 64;
> > > }
> > > http {
> > > server {
> > > location / {
> > > root wwwroot;
> > > index index.htm index.html;
> > > if ( $http_content_type = application/json ) {
> > > proxy_pass http://127.0.0.1:8080;
> > > }
> > > }
> > > }
> > > }
> > > 

> > > E lui deve solo adattare il javascritto di frontend.
> >
> > Funziona anche con XAMPP?
>
> Penso di sì, xampp è un apache come frontend? in quel caso devi cambiare la conf per fare la stessa cosa, ovvero se content-type è application/json lo giri verso la 8080.

Che diamine...? Newbie, inesperto

Ah per il fatto che il DB localstorage ha una certa tendenza alla volatilita`? Be', e` a quello che serve il server remoto, cioe` il mio, dove registro l'utenza e faccio interpretare le richieste a uno scriptino php che le smista sul server MySQL. Nel programmillo javascript, pondero di inserire una funzioncina di facilissimo uso che, data una frase di passo, si collega al mio server e lo sincronizza con la versione del DB in localstorage. Con un timestamp decido quale versione e` piu` recente e cosi` se un utente sposta il javascript su un altro computer, quello si sincronizza subito col server e ripesca il database. Che ne pensi? Eh? Eh? Sorride

<pensiero>
Come minimo gli sembrera` una cagata,
oppure avra` un modo gia` pronto per farlo con due righe. Fantasma
</pensiero>

Quando sei parte di una minoranza in via d'estinzione

Ad https://images2.imgbox.com/d3/da/AZxsgAEN_o.png
ma se vuoi difendere la tua etnia e le tue terre sei "razzista"‎
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-23 03:09:42.0 alle 2013-03-23 03:09:42.0
Trollate totali: 11540
Re: CSS questi sconosciuti GRR GRR GRR
> > > > > > > ma un mini-serverino nodejs (che funziona benone anche su windows) che ti fa le crud su file .json?
> > >
> > > Visto che mi annoiavo ho scritto il serverino per alex, si salva in rw.js e si lancia con "node rw.js", GET legge il file, POST lo sovrascrive:
> > >
> > > 'use strict';
> > > 
> > > var http = require('http'),
> > > fs   = require('fs');
> > > 
> > > var prefix = __dirname;
> > > 
> > > var server = http.createServer(function(req, res) {
> > > if (req.headers['content-type'] !== 'application/json') {
> > > res.writeHead(405);
> > > res.end();
> > > return;
> > > }
> > > if (req.method === 'GET') {
> > > fs.readFile(prefix + req.url, 'utf8', function(err, data) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > return;
> > > }
> > > res.writeHead(200, {'Content-Type':'application/json'});
> > > res.end(data);
> > > });
> > > } else if (req.method == 'POST') {
> > > fs.open(prefix + req.url, 'w', function(err, fd) {
> > > req.on('data', function(data) {
> > > fs.write(fd, new Buffer(data), 0, data.length, null, function(err, written, buffer) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > throw err;
> > > }
> > > });
> > > });
> > > req.on('end', function() {
> > > fs.close(fd, function(err, fd) {
> > > if (err) {
> > > res.writeHead(500);
> > > res.end();
> > > throw err;
> > > }
> > > })
> > > res.writeHead(204);
> > > res.end();
> > > });
> > > });
> > > }
> > > });
> > > 
> > > server.listen(8080);
> > > 

> > >
> > > Poi davanti a questo ci metti nginx (anche questo c'è anche per windows) con la seguente confa:
> > >
> > > events {
> > > worker_connections 64;
> > > }
> > > http {
> > > server {
> > > location / {
> > > root wwwroot;
> > > index index.htm index.html;
> > > if ( $http_content_type = application/json ) {
> > > proxy_pass http://127.0.0.1:8080;
> > > }
> > > }
> > > }
> > > }
> > > 

> > > E lui deve solo adattare il javascritto di frontend.
> >
> > Funziona anche con XAMPP?
>
> Penso di sì, xampp è un apache come frontend? in quel caso devi cambiare la conf per fare la stessa cosa, ovvero se content-type è application/json lo giri verso la 8080.

Che diamine...? Newbie, inesperto

Ah per il fatto che il DB localstorage ha una certa tendenza alla volatilita`? Be', e` a quello che serve il server remoto, cioe` il mio, dove registro l'utenza e faccio interpretare le richieste a uno scriptino php che le smista sul server MySQL. Nel programmillo javascript, pondero di inserire una funzioncina di facilissimo uso che, data una frase di passo, si collega al mio server e lo sincronizza con la versione del DB in localstorage. Con un timestamp decido quale versione e` piu` recente e cosi` se un utente sposta il javascript su un altro computer, quello si sincronizza subito col server e ripesca il database. Che ne pensi? Eh? Eh? Sorride

<pensiero>
Come minimo gli sembrera` una cagata,
oppure avra` un modo gia` pronto per farlo con due righe. Fantasma
</pensiero>
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-22 01:00:39.0 alle 2013-03-22 01:00:39.0
Trollate totali: 11540
Re: A proposito del video delle margheri
> > Avevo inquadrato anche il wannabe-ciliegio, quello sterpo che a un certo punto si vede davanti al gazebo e che non vuol saperne di fiorire. Quand'e` che fioriscono i ciliegi?
>
> Dipende dal posto. Qui in Gattosilvazia siamo ancora a fine inverno.

Qui e` stata una bella giornata, sembrava di essere a meta` maggio, dopo infiniti giorni di pioggia e/o nuvolaglia grigiastra. Pero` il meteo prevede che fosse solo un caso isolato: da domani si ricomincia con la nuvolaglia. In lacrime

Certo la temperatura e` buona gia` da un po', sui 13-14 gradi all'ombra. Pero` gli altri giorni la luce del sole ci e` mancata tanto.

> > Secondo me sta seccando e non fiorira` piu`. In lacrime
> >
> > Una volta, quasi nello stesso punto c'era un ciliegio di vent'anni, ormai alto quasi dieci metri, che l'anno scorso secco` e che il vento butto` giu`. Le faceva dolcissime e mi ricordava Mary Lou che amava arrampicarsi sull'albero. Ci rimasi male e piantai quest'altro, ma e` rimasto li` dall'ottobre scorso. Triste
>
> M'hai ricordato che a maggio devo provare a margottare il nostro ciliegio vicino al pozzo. Uno dovrebbe sempre fare una copia di backup dei propri ciliegi.

Un paio di backups ci sarebbero sul monte, ai margini dell'oliveto di babbo, insieme a un pesco, un vecchio fico e qualche altro albero da frutto che non ricordo. Pero` sul monte non e` la stessa cosa che andare in giardino a prendersi le ciliegie, sciacquarle e mangiarle sul momento. D'altronde, il giardino e` in tutto sui 150 metri quadri e due ciliegi non c'entrano bene. O quello ha attecchito, o son fregato e mi tocchera` riprovare.
Avatar
☺
Scritto da
altg
utente che non utiene
il 2013-03-22 00:44:45.0 alle 2013-03-22 00:44:45.0
Trollate totali: 11540
Re: Be', questa e` meglio, va ammesso.
> >
> >
> > Ha un design veramente curato e, se e` vero che sviluppa 3 cavalli, ha quasi tre volte la potenza della mia biciclettina da 16 kg. Eppure sono riusciti a farla stare in 11. Tanto di cappello. A bocca storta
>
> Tanto vale chiamarla motorino elettrico.

ehm... magari si`, la loro ricorda ancora una bicicletta, ma vagamente. Comunque 2300 W sono ancora piu` fuori norma dei miei 800 W (a parte il fatto che se la batteria e` 560 w/h, a piena potenza si scarica in 15 minuti, che a 80 km/h fanno 20 km di autonomia, non 70), sicche` non saprei se la vedremo mai sulle strade: se le normative europee del cazzo, che vogliono pedalata assistita e massimo 250 W *di input*, non cambiano, mi sa proprio di no. Comunque va be', 2300 W saranno anche troppi, e lo posso appoggiare, ma 250 sono troppo pochi: in salita ti tocca pedalare, e in piano a piu` di 20 all'ora non vai senza aggiungere sui pedali, e lo spunto in accelerazione di una bici elettrica "a norma" e` da far cascare le palle. Secondo me, tutto sommato, 800 sono giusti: basta stare attenti a dar tutto gas all'inizio senza inclinarsi in avanti (perche` s'impenna), e per il resto equipaggiare con freni un po' piu` robusti del normale (vista la mia capitombolante esperienza dell'anno scorso). Ma 800 W non sono un'esagerazione, si possono gestire.

Pagina generata in 282 millisecondi

Utenti attivi: 11 nell'ultimo minuto, 36 negli ultimi cinque minuti, 61 negli ultimi 15 minuti