blog personale

Archivi di Web developing category

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!!!)

fermiamo IE6 !

http://www.savethedevelopers.org

a questo link

http://www.elcisoft.com/tools/index.php

due form per ricavare l’IP dal nome DNS e viceversa

+ altre informazioni sul client (IP, user_agent, ecc…)

Rss2mail

Ho creato una prima versione di un piccolo servizio web per inviare in automatico i titoli dei feed RSS nella casella e-mail.

Dopo registrazione & login, si possono inserire i link dei feed con la cadenza di invio:
es: www.sito.it/feed.xml ogni 2 giorni, www.sito2.it/feed.xml ogni settimana. ecc…

Ogni 2 giorni (7 per sito2.it ) verranno quindi inviati per mail i nuovi titoli, description e link dei titoli (non già precedentemente inviati) dei feed.

http://www.elcisoft.com/rss2mail/

Testate e fate sapere di bug e migliorie varie

5/3/08:  Aggiunta la possibilità di farsi inviare il contenuto intero di una pagina web

 

dns tophost su dreamhost

Mi è arrivata una mail da tophost.it dove mi hanno proposto un prodotto a scelta a solo 1 €.
Ho attivato quindi un dominio, che sposto sul mio hosting dreamhost (che supporta infiniti domini mappati su utenti e spazi personalizzati).

Come fare ?

1) Da dreamhost: Manage Domains -> crea il dominio, quindi appunta gli indirizzi ip, mostrati sotto  "nameservers to work"
esempio:
NS1.DREAMHOST.COM            66.33.206.206
NS2.DREAMHOST.COM            208.96.10.221
NS3.DREAMHOST.COM            66.33.216.216

annotare il primo ip

2) tophost: cancella la riga www
e inseriscine un’altra
nome:www | tipo:A | valore: 66.33.206.206

eventualmente redirezionare anche le voci di mail ecc… anche se consiglio di usare l’alias delle mail offerto dal cpanel di tophost

3) dopo 1-2 giorni il dominio sarà raggiungibile

Principi di Ajax

Riporto sotto il principio di funzionamento di ajax, ovvero la tecnica che usa javascript e css per caricare parti della pagina solo quando richiesto, questo mi è utile quando lo uso per alcuni moduli, spero possa servire anche a qualcun’altro.

TEORIA
Javascript usa la classe httpRequest, che va istanziata e inizializzata (in modo diverso a seconda del browser). Tramite il metodo open (a cui passiamo la url da aprire) e send, facciamo una richiesta http al server
esempio:
httpRequest.open(‘GET’, ‘pagina.php?parametro=valore’, true);
httpRequest.send(null);

a queto punto, con il metodo responseText ottieniamo la risposta http della pagina.
Ovviamente dobbiamo scriverla da qualche parte, a questo scopo usiamo i CSS.
Diamo l’id css (es: id="destinazione") all’oggetto html (span, div…) dove vogliamo che venga scritta la risposta, così riusciamo ad accederne alle proprietà tramite getElementById(destinazione). La proprietà che ci interessa è in particolare innerHTML (cioè il contenuto).
Riassumendo:
document.getElementById(id).innerHTML = httpRequest.responseText;

PRATICA
Includete ajax.js
con il codice fra gli head:
<script language="javascript" xsrc="ajax.js"></script>

nell’href dei link o evento javascript (onClick per i pulsanti, onKeyUp per i cambiamenti nelle input…) inserite il codice
makeRequest(‘pagina.php?parametro=’ + document.form1.campo1.value, ‘destinazione’)

il primo parametro è il link http da caricare. Il parametro è preso dal contenuto del campo1 del form1.
il secondo parametro è l’id dell’oggetto dove verrà caricato il contenuto (in http) della pagina.

ESEMPIO MINIMALE CONCRETO
Facciamo una pagina per inserimento nomi di persona e cellulari in un database. Nel modulo di inserimento avvisiamo accanto con ajax quando il numero di cell esiste già nel database.
Supponiamo di aver già creato il database e avere la pagina check.php, che legge il parametro num, e stampa in html se il numero esiste già o no nel db:
<?
// check.php
//connessione mysql
if ($_GET['num'] esiste già nel db)
print "Attenzione: numero di tel già esistente";
else
print "OK. numero non ancora esistente";
?>

Creiamo il form html:
inserimento.html
<script language="javascript" xsrc="ajax.js"></script>
<form name=form1 action=[...] method=[...]>
Nome persona: <input name=nome><br>
Telefono: <input name=TEL
onKeyUp="makeRequest(‘check.php?num=’ + document.form1.tel.value, ‘destinazione’)" >
<span id="destinazione"></span><br>
<input type=submit>
</form>

In questo esempio, quando scriviamo "123" dentro il campo tel, javascript chiama la pagina check.php?tel=123 e scrive il risultato http dentro il tag con id="destinazione" (cioè accanto al campo di testo stesso).


 

Ultimi post

About Me

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

scontiphp