blog personale

Archivi di sprite category

Continuo a postare e mie funzioni php, casomai servissero a qualcuno, ma soprattutto per spammare il planet SpriTe  e php-izzare maggiormante demo :D

Con questo metodo si può creare un formToMail scrivendo semplicemente il form html con names e values.
chiamando la funzione, al posting viene inviato il messaggio chiamando una sola funzione, funzione che compone il body del messaggio semplicemente unendo names e values esistenti. Se il campo contiene "(r)", viene automaticamente mostrato un messaggio di errore "campo X non riempito" con tasto "indietro".
Leggi tutto… »

Upload FTP

Vista la buona riuscita del planet S.P.R.I.Te. e il conseguente scambio di opinioni su vari argomenti tecnico/geek, propongo un mio modo per uploadare velocemente le modifiche a un sito, curioso di conoscere vostre alternative al tutto.

Esigenza: uploadare VELOCEMENTE* gli ultimi file modificati (anche in sottocartelle), nei rispettivi path remoti (struttura dirs mantenuta), sovrascrivendo (se necessario) i files. Esigenza che deriva dallo sviluppo di applicazioni già funzionanti e da testare online.
* Con un batch in pochi secondi, i files più recenti sono sempre sul pc in locale. Supponiamo di avere in locale una cartella di sorgenti di vari Mb e se no modifica solo 1 in una sottocartella.

Mio Metodo: con un batch (autoit + winrar + winscp scripting):

  • winrar crea un archivio con i files modificati negli ultimi N minuti (N chiesto a prompt). Winrar riesce in pochissimo tempo a analizzare gli ultimi files modificati (sottocartelle comprese) dopo una certa data/ora (tempo di molto inferiore al controllo manuale su ogni file da parte del batch).
  • decompressione archivio in cartella temporanea
  • upload della cartella temporanea tramite winscp scripting (connette, upload cartella e sottocartelle, sconnette).
  • se l’operazione riesce, scrivo un file con il timestamp dell’upload, così la volta successiva non viene chiesto nessun input dei minuti al passo 1

Personalizzazioni: apertura finestra winrar con l’archivio creato, così si possono modificare i file da caricare o no.
Aggiunte: creazione file con elenco siti, path e relativi profili di connessione winscp. Programmino autoit che mostra l’elenco dei siti, quindi con n click su questi lancia il batch sul sito selezionato e lo aggiorna (img a lato).

Alternative:

  • comparazione directory winscp: funzione che controlla le date dei files. Lenta in caso delle sottocartelle.
  • rsyinc: funziona solo su shell linux, ne parlano spesso ma non l’ho mai provata, sviluppando su windows

Altre idee o soluzioni pronte ?

PHP. Capita spesso di voler richiamare una pagina (che è stata già chiamata con dei parametri).
Per non dover ogni volta riscrivere la url da zero, si possono sovrascrivere (o aggiungere se non ci sono già) i parametri in GET con la funzioncina ,codice a fondo post. Esempio : in una pagina di navigazione recordset stiamo visualizzando la pagina X di Y (quindi in GET ci saranno già dei parametri che vogliamo mantenere ), e serve un link alla pagina che però cambi l’ordinamento:

Cioè se la pagina corrente era
pagina.php?order=id&page=4&table=tabella
il link dovrebbe essere
pagina.php?order=nome&page=4&table=tabella

Usiamo la funzione e scriviamo
<a href="pagina.php<?=makeUrl( array("order"=>"nome") )?>">ordina tabella per nome</a>
fregandocene dei parametri correnti che verranno mantenuti

Qualcuno ha avuto qualche altra idea per risolvere il problema ? commentate !

//rileggo i parametri GET e li sovrascrivo con quelli passati, restituendo la URL
function makeUrl($overGet)
    {
      $get = $GLOBALS['_GET'];
     
      // overWrite GET
      foreach($overGet as $k => $v)
      {
        $get[$k] = $v;
      }
      // make Url
      $ga = array();
      foreach($get as $k => $v)
      {
        $ga[] = urlencode($k)."=".urlencode($v);
      }
      //
      return implode("&", $ga);
    }

Mi è capitato spesso di sviluppare un software web-based o sito, poi sentirmi dire che sulle vecchie versioni (maledette!) di Internet Eplorer si vedono male.
Colpa in maggior parte del mancato rispetto delle regole CSS da parte di IE < 7.0.
Resta il fatto che ancora una grossa fetta di utenti usa IE 5, 6 e simili.
Esiste spesso (con molta fatica) una soluzione cross-browser prestando attenzione x esempio alle regole sui padding degli oggetti.

Purtroppo non è possibile installare versioni diverse di IE sulla stessa macchina, a meno che non si agisca con un trucchetto sulle DLL che vengono usate dal browser.
Googlando in giro, ho trovato questo articolo:
"Install multiple versions of IE on your PC"
http://tredosoft.com/Multiple_IE
Fa scaricare un software che in soli 10 Mb, installa gli eseguibili dei browser IE dalla versione 3 alla 6

Valida alternativa alla soluzione che propone di installare virtual PC 2004 (che nn va su Xp Home) + immagine dell’SO (>400Mb!!!)

Finalmente dopo molti tentativi e discussioni tra me e Raffaello (compagno di univ) abbiamo scoperto perchè la funzione di libreria scanf del linguaggio C non si comporta come sembra o come riportato sui manuali.

Prendiamo il codice

char c;
scanf("%c", &c);

Sembra tutto a posto, infatti stampando poi la variabile c, si vede veramente il carattere digitato in console.

Ma:

char c;
do {
  scanf("%c", &c);
}
while(c==’n');

dovrebbe continuare a chiedere un input finchè digitiamo n, invece esce subito anche digitanto esattamente ‘n’ !!!

Spiegazione: scanf mappa sulla stringa formato tutto il contenuto della stringa di input, compreso il newline alla fine ! strano, visto che la scanf necessita dell’andata a capo per terminare l’acquisizione e dovrebbe scartarlo visto che è sempre presente.

Nel caso del ciclo while sopra, in realtà nella locazione di memoria della variabile c nn è presente esattamente il carattere digitato, ma il carattere digitato e  (magia ! ) il carattere di newline che viene considerato al secondo ciclo.

Soluzione:

scanf("%c\n", &c);

In questo modo il char digitato va a finire esattamente nella variabile c senza problemi e senza magiche aggiunte.

Il problema ovviamente non si pone con la stringa formato "%d" visto che "\n" è tralasciato per valori interi.

 


 

Ultimi post

About Me

Blog tecnico/geek di Elvis. Chi sono ? studente & web developer freelance. Vedi la pagina "about me" per altre info.

scontiphp