Pagine

martedì 30 dicembre 2008

ubuntu

Dieci buoni motivi per passare a ubuntu
(se sei un utente di Windows)
  1. E' gratis (no, non come la copia craccata che hai di windows. Questo si scarica, si scrive su un cd, si prova dal lettore cd, se piace si installa ed è tuo!)
  2. E' legale (lo so che hai sempre fatto finta di non sapere che farsi prestare un cd pirata di win xp con i relativi codici era illegale.)
  3. E' pieno di programmi gratuiti (non come quelli craccati che scarichi con Emule.)
  4. E' molto più leggero di Windows (gira sul mio Pentium 3 che manco una Ferrari ...)
  5. Non devi necessariamente rinunciare a windows (durante l'installazione ti da' la possibilità di creare una partizione per se ed una per win. Ad ogni avvio sceglierai con quale S.O. partire. )
  6. Ha una comunità vastissima di utenti che risponde a tutti i tuoi quesiti.
  7. Ha una interfaccia grafica che se ne fotte di Windows
  8. Avere Linux sul PC farà di te un tizio/a più interessante che ci capisce di cose informatiche.
  9. Ubuntu ti costringe ad usare nuovamente il cervello.(Visto che gli amici di Bill Gates cercano di mettertelo a riposo.)
  10. Puoi scaricarlo direttamente da QUI'.

sabato 20 dicembre 2008

Calcolatrice javascript 2


Nel post precedente avevamo costruito una semplice calcolatrice che ci restituiva dei calcoli in base ai numeri inseriti nella caselle di testo. Questa volta, spero in maniera semplice ed esaustiva, implementiamo il progetto precedente con l'ausilio di un tastierino numerico.


Il codice:


<html><head>


<script language="javascript">

function uno(){document.forms.g.txt1.value=document.forms.g.txt1.value +1;}

function due(){document.forms.g.txt1.value=document.forms.g.txt1.value +2;}

function tre(){document.forms.g.txt1.value=document.forms.g.txt1.value +3;}

function qua(){document.forms.g.txt1.value=document.forms.g.txt1.value +4;}

function cin(){document.forms.g.txt1.value=document.forms.g.txt1.value +5;}

function sei(){document.forms.g.txt1.value=document.forms.g.txt1.value +6;}

function set(){document.forms.g.txt1.value=document.forms.g.txt1.value +7;}

function ott(){document.forms.g.txt1.value=document.forms.g.txt1.value +8;}

function nov(){document.forms.g.txt1.value=document.forms.g.txt1.value +9;}

function zer(){document.forms.g.txt1.value=document.forms.g.txt1.value +0;}

function vir(){document.forms.g.txt1.value=document.forms.g.txt1.value +'.';document.forms.g.virgola.disabled=true;}

//ad ogni tasto ho assegnato un numero ed alla virgola aggiungo la disabilitazione del tasto stesso una volta premuto


//adesso le operazioni che assegnano un segno, riabilitani il tasto della virgola e ripuliscono il campo di testo


function piu(){document.forms.g.txtsegno.value='+';document.forms.g.virgola.disabled=false;document.forms.g.txt2.value=document.forms.g.txt1.value;document.forms.g.txt1.value="";}

function men(){document.forms.g.txtsegno.value='-';document.forms.g.virgola.disabled=false;document.forms.g.txt2.value=document.forms.g.txt1.value;document.forms.g.txt1.value="";}

function per(){document.forms.g.txtsegno.value='X';document.forms.g.virgola.disabled=false;document.forms.g.txt2.value=document.forms.g.txt1.value ;document.forms.g.txt1.value="";}

function div(){document.forms.g.txtsegno.value=':';document.forms.g.virgola.disabled=false;document.forms.g.txt2.value=document.forms.g.txt1.value;document.forms.g.txt1.value="";}

//infine l'uguale che fa partire il calcolo


function ugu(){

Segno=document.forms.g.txtsegno.value;

if (Segno=="+"){document.forms.g.txt3.value=document.forms.g.txt1.value;document.forms.g.ris.value=eval(document.forms.g.txt2.value)+eval(document.forms.g.txt3.value);

}

if (Segno=="-"){document.forms.g.txt3.value=document.forms.g.txt1.value;document.forms.g.ris.value=eval(document.forms.g.txt2.value)- eval(document.forms.g.txt3.value);}

if (Segno=="X"){document.forms.g.txt3.value=document.forms.g.txt1.value;document.forms.g.ris.value=document.forms.g.txt2.value * document.forms.g.txt3.value}

if (Segno==":"){document.forms.g.txt3.value=document.forms.g.txt1.value;document.forms.g.ris.value=document.forms.g.txt2.value / document.forms.g.txt3.value}

document.forms.g.txt1.value="";

document.forms.g.virgola.disabled=false;

}

function radice(){Txt1=document.forms.g.txt1.value;Rad=Math.sqrt(Txt1);document.forms.g.ris.value=Rad}



</script>



<title>Freecalc 1.0.1 </title>

</head>


<!--inserisco l'html del form-->


<body>

<form name="g">

<table width="150" border="0" cellpadding="2" cellspacing="2" bgcolor="#FF9900">

<caption align="top">

Freecalc1.0.1

</caption>

<tr>

<th colspan="4" align="left" scope="col"><input type="text" name="txt1" size="24"/></th>

</tr>

<tr bgcolor="#FFFFFF">

<td ><input name="Input" type="button" value=" 7 " onclick="set()" /></td>

<td ><input name="Input" type="button" value=" 8 " onclick="ott()"/></td>

<td ><input name="Input" type="button" value=" 9 " onclick="nov()"/></td>

<td ><input name="Input2" type="button" value=" + " onclick="piu()"/></td>

</tr>

<tr bgcolor="#FFFFFF">

<td ><input name="Input" type="button" value=" 4 " onclick="qua()"/></td>

<td ><input name="Input" type="button" value=" 5 " onclick="cin()"/></td>

<td ><input name="Input" type="button" value=" 6 " onclick="sei()"/></td>

<td><input name="Input3" type="button" value=" - " onclick="men()"/></td>

</tr>

<tr bgcolor="#FFFFFF">

<td ><input name="Input" type="button" value=" 1 " onclick="uno()" onkeypress=""/></td>

<td ><input name="Input" type="button" value=" 2 " onclick="due()"/></td>

<td ><input name="Input" type="button" value=" 3 " onclick="tre()"/></td>

<td><input name="Input4" type="button" value=" X " onclick="per()"/></td>

</tr>

<tr bgcolor="#FFFFFF">

<td ><input name="Input" type="button" value=" 0 " onclick="zer()"/></td>

<td ><input name="virgola" type="button" value=" , " onclick="vir()"/></td>

<td ><input name="Input" type="button" value=" = " onclick="ugu()"/></td>

<td><input name="Input5" type="button" value=" : " onclick="div()"/></td>

</tr>

<tr bgcolor="#FFFFFF">

<td colspan="4"><input name="txt2" type="text" value=" 0 " size="9" maxlength="9" readonly="true"/>

<input name="txtsegno" type="text" class="Stile1" size="2" maxlength="1" readonly="true" />

<input name="txt3" type="text" value="0" size="9" maxlength="9" readonly="true"/>

=</td>

</tr>

<tr bgcolor="#FFFFFF">

<td colspan="2"><input name="ris" type="text" size="10" maxlength="5" readonly="true"/></td>

<td><input name="Input6" type="reset" value=" C " /></td>

<td><input name="Input7" type="button" value=" Rq" title="Radice quadrata" onclick="radice()"/></td>

</tr>

</table>

</form>


</body><html>


Clicca quì per vedere l'esempio.


oppureC.I.P.(copia, incolla ,prova)

Calcolatrice javascript


Torno a postare di fretta e su richiesta specifica.


Volevi una calcolatrice da inserire tra le tue pagine web?


La volevi in javascript?


Copia e incolla questo subito dopo body.


<script language="javascript">




function somma(){


//inizializzo le due variabili Txt1 e Txt2


Txt1=eval(document.forms.g.txt1.value);


Txt2=eval(document.forms.g.txt2.value);


//attribuisco il valore della loro somma alla variabile Ris


Ris=(Txt1+Txt2);document.forms.g.ris.value=Ris}




function sottrai(){


//Ripeto le operazioni di prima


//solo che questa volta sottraggo


Txt1=eval(document.forms.g.txt1.value);


Txt2=eval(document.forms.g.txt2.value);


Ris=(Txt1-Txt2);document.forms.g.ris.value=Ris}




function dividi(){


//idem per la divisione


Txt1=eval(document.forms.g.txt1.value);



Txt2=eval(document.forms.g.txt2.value);


Ris=(Txt1/Txt2);document.forms.g.ris.value=Ris}




function moltiplica(){


//idem per la moltiplicazione


Txt1=eval(document.forms.g.txt1.value);


Txt2=eval(document.forms.g.txt2.value);


Ris=(Txt1*Txt2);document.forms.g.ris.value=Ris}




function radice () {


//.....e per la radice quadrata


Txt1=document.forms.g.txt1.value;


Ris=Math.sqrt(Txt1);document.forms.g.ris.value=Ris}

</script>


A questo punto mi costruisco un bel form. Ecco l'HTML!


(da inserire subito dopo il codice javascript)


<form name="g">

<table width="493" border="0" cellpadding="3" cellspacing="3" bgcolor="#FF6600">

<caption align="top">

La Mia Calcolatrice


</caption>

<tr bgcolor="#FFFFFF">

<td width="14%"><input name="txt1" type="text" size="10" maxlength="10" /></td>

<td width="47%" align="center"><input name="+" type="button" value="+" onClick="somma()"/><input name="-" type="button" value="-" onClick="sottrai()"/><input name=":" type="button" value=":" onClick="dividi()"/><input name="x" type="button" value="x" onClick="moltiplica()"/>



<input type="button" name="RQ" value="RQ" title="Radice Quadrata" onclick="radice()"/>



<td width="14%"><input name="txt2" type="text" size="10" maxlength="10" /></td>

<td width="5%" align="center"> = </td>

<td width="20%"><input name="ris" type="text" size="10" maxlength="10" readonly="true" /></td>

</tr>



</table>


</form>


C.I.P (copia incolla prova)


oppure clicca qui per vedere in azione la mini calcolatrice.


Alla prossima

giovedì 27 novembre 2008

Libero: COLLABORAZIONI (2)

.....Era primavera, ma da così poco tempo che l'inaspettato miglioramento climatico aveva colto, come ogni anno, di sorpresa gli abitanti della metropoli che l'isola più grande del Mediterraneo ospitava insieme a un bizzoso vulcano e a migliaia di problemi annosi e insoluti. L'inaspettato innalzamento di qualche grado nella colonnina di mercurio non giustificava di certo la sofferenza del calvo artista del crimine. Libero sentiva che da quell'appuntamento non sarebbe arrivato niente di buono. L'ufficiale, dal canto suo, si comportava come se l'incontro tra lui e l'uomo che aveva contribuito a mandare in galera svariate volte, fosse quanto di più normale ci si potesse aspettare in un mite pomeriggio di primavera. Davanti agli occhi di Libero passarono per un attimo tutti i latitanti che conosceva e tutti i colpi andati a segno di cui aveva sentito negli ultimi tempi, cercando di immaginare a quale di questi volti o a quale preziosa informazione doveva l’onore di questo incontro. Il commissario dal suo canto e, perfettamente a proprio agio, diede un’occhiata fugace rivolto verso, Libero ne era sicuro, i suoi subalterni che dovevano essere piazzati lì vicino. Dalle tasche di un giubbotto di pelle nera appoggiato sulla sedia, mentre la cenere della sigaretta andava a cospargere la manica della camicia del poliziotto con un’impalpabile coltre grigiastra, spuntò fuori un foglietto di carta del tipo usato per le fotocopie.«Questa» esordì il funzionario della polizia di stato «è la pianta di una villetta» si fermò a fissare negli occhi l’impaurito interlocutore e, certo di essere stato compreso, continuò: «un sistema di antifurto perimetrale, telecamere, nuovo perimetrale per gli infissi, infrarossi a escursione termica e sensori di movimento.» Nuovo sguardo diretto al centro delle attività cerebrali attraversando gli occhi e su attraverso le orbite perforando il nervo ottico, fino al cervello.«Devo entrare qui» disse puntando il dito sulla piantina sgualcita. Senza dare nessuna risposta, deglutendo, Libero si alzò e fece per andarsene come se di fronte a lui fosse seduto Belzebù in persona e la necessità di fuggire fosse qualcosa d’impellente e irrinunciabile. Facchetti lo trattenne per un braccio. La forza fisica di quell'uomo lo sconcertava e ogni volta che in passato si era trovato di fronte a lui, avendo quest'ultimo un modo di fare molto fisico e spontaneo, Libero finiva con il farsi male anche solo standogli accanto a parlare del più e del meno...

domenica 2 novembre 2008

Griglia dinamica in PHP (seconda parte)


Nel post precedente ci siamo occupati di costruire un file php che ci desse l'opportunità di costruire una griglia dati ed una query SQL in grado di passarci dei dati senza vincoli con nessuna tabella. Adesso ci preoccuperemo di creare il file che ci restituirà i dati e dove imposteremo la tabella. Ecco il codice HTML.


<form action="#" method="post">

<table width="500" align="center" bgcolor="#FFFFCC">

<tr bgcolor="#0066ff">

<td width="250" colspan="1"><div align="center" class="Stile2"><h3>Tabella:</h3></div></td>

<td colspan="2"><div align="center" class="Stile2"><h3>Clienti</h3></div></td>



</tr>

<tr bgcolor="#99ccFF">

<td colspan="2" align="center"><span class="Stile2">Filtra Clienti per :</span></td>

<th > </th>

</tr>

<tr bgcolor="#99ccFF">



<td colspan="2" align="center"><table width="200">

<tr>

<td><label>

<input type="radio" name="Gruppopulsantidiscelta1" value="cognome">

Cognome</label></td>

</tr>

<tr>

<td><label>

<input type="radio" name="Gruppopulsantidiscelta1" value="denominazione">

Denominazione</label></td>

</tr>

</table>

</td>



<th width="167" bordercolor="#FFFFFF" bgcolor="#99ccFF"></th>

</tr>

<tr bgcolor="#99ccFF">

<td colspan="2"><div align="center"><input size='25' name='cerca' value=''></div></td>

<th bordercolor="#FFFFFF">&nbsp;</th>

</tr>

<tr bgcolor="#99ccFF">



<td colspan="2"> <div align="center">

<input type='submit' name='Apply' value='Cerca '>

</div></td>

<th>&nbsp;</th>

</tr>

</table>

</form>


Passiamo al php




<?php

$nometabella='Clienti';//impostiamo il nome della tabella

$numerocolonne=16;//l'indice parte da zero quindi (n.ro campi tabella - 1)

$NomeCampo=array();//creo l'array per tutti i nomi dei campi

$NomeCampo[]='Id';//Assegno i nomi dei campi

$NomeCampo[]='Denominazione';

$NomeCampo[]='Cognome';

$NomeCampo[]='Nome';

$NomeCampo[]='indirizzo';

$NomeCampo[]='Citta';

$NomeCampo[]='Provincia';

$NomeCampo[]='CF';

$NomeCampo[]='PI';

$NomeCampo[]='Telefono';

$NomeCampo[]='Fax';

$NomeCampo[]='Cellulare';

$NomeCampo[]='EMail';

$NomeCampo[]='Cap';

$NomeCampo[]='UltimaModifica';

$NomeCampo[]='Note';

$NomeCampo[]='Note1';

$Ordina='Denominazione';//in assenza di altri filtri la tabella viene ordinata in base a questo campo

$Modifica='href=Modifica.php';//file di modifica record

$Elimina='href=Elimina.php';//file di eliminazione record

$cn='localhost';//oppure il vostro servizio di host

$ut='root';//nome utente

$psw='vostraPassword';

$db='Nome Database';

$link = mysqli_connect($cn, $ut, $psw, $db);// provo a connettermi

if (!$link)

{

exit('problemi con la connessione');

}

$mysqli = new mysqli('localhost', 'root', 'isc', 'work');

require("griglia.php");//richiamo il file di costruzione della griglia


?>


Tutto Chiaro?


Vai alla costruzione griglia dinamica

Griglia dinamica in PHP


Una griglia di dati che, dinamicamente, si adatta ai dati e/o ai filtri che abbiamo deciso di impostare è l'argomento che ho deciso di postare oggi. Passo subito al codice.


<?php


//assegnerò questa variabile al pulsante AZ o ZA che assegna il campo a $filtr
$filtr= @$_REQUEST['filtro'];>

$ordine= @$_REQUEST['ordine'];/assegnerò questa variabile al pulsante AZ o ZA che assegna il desc o asc alla query

$scelta = @$_POST['Gruppopulsantidiscelta1'];//questo è l'optionbutton selezionato

$den = @$_POST['cerca'];//questo sarà il "LIKE" della query SQL

#stabilisco le regole per il filtro dei dati

if ($scelta==''){$scelta=$Ordina; $miastringa='Nessun Filtro Attivo';}

else{$miastringa='Filtro Attivo per:' . ' ' . $scelta;};

if ($filtr=='') //se non sono stati premuti i tastini "az" o "za"...

{

$filtr=$Ordina . ' ' .'asc';

};

$filtro = $filtr . ' ' . $ordine;

#Quindi inizio a costruire la griglia


print "$miastringa";

<table bgcolor='FFFFCC' >";

echo"

<tr><th colspan='13'bgcolor='#FFFFcc'>$nometabella</th></tr>

<tr >

<th></th><th></th>";

$i=0;//scrivo le righe

while ($i <= $numerocolonne ){

echo"

<th bgcolor='6699ff' >$NomeCampo[$i]

<a title='AZ' href =\"{$_SERVER['PHP_SELF']}?filtro=$NomeCampo[$i]&ordine=ASC\"><img align='left'src='az.png'border='0'></a> </br>

<a title='ZA' href =\"{$_SERVER['PHP_SELF']}?filtro=$NomeCampo[$i]&ordine=DESC\"><img align='right' src='za.png'border='0'></a>

</th>";

++$i;

}

$result = mysqli_query($link, "SELECT * FROM $nometabella Where $scelta like'$den%'ORDER BY $filtro ");// effettuo la query

#(Come si può notare la query SQL è costruita su parametri che vengono passati dalle variabili

while ($row = mysqli_fetch_row($result))// eseguo la fetch dei risultati

{

echo "

<tr>

<th bgcolor=$col><a title='Modifica' $Modifica?id=$row[0]><img src='edit.png'border='0'></a> </th>

<th bgcolor=$col ><a title='Elimina' $Elimina?id=$row[0]><img src='drop.png' border='0'></a> </th>";

$n= 0;//scrivo i risultati della riga sulle colonne appropriate

while ($n <= $numerocolonne )

{

$replace=str_replace("°","'",$row[$n]);#trasformo gli ° in apostrofi poi spiego il perchè

echo "<th bgcolor=$col>$replace </th>";

++$n;

}

echo"</th>";

}//fine ciclo

mysqli_data_seek($result,0);// riporto il cursore della riga corrente a 0

mysqli_free_result($result);// chiudo il set dei risultati per liberare memoria

mysqli_close($link);// chiudo la connessione

?>


continua

martedì 28 ottobre 2008

etna half marathon

Ritorno a scrivere sul blog dopo un po' di tempo, trascorso a curare gli aspetti fondamentali della preparazione alla gara del 26/10/2008: pastasciutta, salsicce, focacce fatte in casa ecc.ecc.
Nella foto c'è la mia squadra la ASD "il Castello" di Modica.
Ingrassatomi di "appena" 1000/1500 grammi ho lasciato perdere il cronometro per dedicarmi alla tattica di gara e fare tesoro di una esperienza unica come quella della EHM di Catania. Gara chiusa con la media di 5,14 KM x minuto, nonostante l'umidità e le costolette della sera prima. Penso di essere arrivato ultimo della squadra classificandomi al 123° posto. Gara fluida e ben organizzata, che mi ha permesso di ritoccare l'architettura complessa delle mie performance future. Meno visite domenicali alla suocera, più Km. in allenamento e tattiche del tipo "l'importante non è vincere......."

venerdì 3 ottobre 2008

Tragiche fatalità


Non ci posso credere, non ci posso proprio credere. L'Alitalia regalata ad una compagine di imprenditori, il Lodo che insiste e persiste, e la gente (quella per cui la legge è uguale per tutti) che continua a morire sul lavoro. Operai, il cui livello culturale si fa sempre più alto, il cui grado di specializzazione è sempre maggiore, e le cui aspettative economiche restano sempre disilluse da contratti e stipendi sempre più vicini al terzo mondo. Gente che ha lo stesso titolo di studio dei colleghi dai colletti bianchi, gente che seviziata dal precariato e dalle promesse dei politici, che langue in un limbo fatto di informazione faziosa e libertà virtuale: gente che muore lavorando.
Tragiche fatalità. Andiamo a dirlo ai loro figli, alle loro mogli, che papà non c'è più e che magari e colpa sua se è morto mentre si spezzava la schiena facendo arricchire un datore di lavoro che nemmeno conosceva. Un datore di lavoro che ha investito in sicurezza solo perchè previsto dalla legge non sarà mai abbastanza perseguito per la morte di un uomo. Molte delle persone che non muoiono a causa degli infortuni(circa un milione all'anno) rimangono invalidi permanenti (più o meno 30.000 all'anno) a cui noi, come contribuenti, garantiremo una somma, a titolo di rimborso vitalizio e mensile, che rischierà di farli morire comunque, di fame. Vi invito, voi e tutti quelli che sono d'accordo con il "Lodo", a leggere l'articolo 3 della costituzione.
"Tutti i cittadini hanno pari dignità sociale e sono eguali davanti alla legge, senza distinzioni di sesso, di razza, di lingua, di religione, di opinioni politiche e di condizioni personali e sociali. E' compito della Repubblica rimuovere gli ostacoli di ordine economico e sociale che, limitando di fatto la libertà e l'uguaglianza dei cittadini, impediscono il pieno sviluppo della persona umana e l'effettiva partecipazione di tutti i lavoratori dell'organizzazione politica, economica e sociale del Paese".
Saluti.

sabato 27 settembre 2008

Alla diga in canoa

Diga S.Rosalia. Ore 11:00 A.M.
Cinque impavidi eroi alle prese con le, (seppur calme), insidiose acque del lago artificiale.
Eccomi alle prese con le terribili rapide insieme alla consorte.Questo è Pino che, con destrezza, evita le terribili cascate.

Ma attenzione,Alina sta quasi per perdere il controllo!

Per fortuna interviene l'eroico Gianni che la porta in salvo.

Tutto è bene ciò che finisce bene e l'avventura di oggi si è conclusa intorno alle 13:00 e siamo rientrati: stanchi ma soddisfatti.

Ciao alla prossima!

mercoledì 24 settembre 2008

Grasso e corsa


Una delle domande che,almeno all'inizio, si pone qualsiasi runner è: quanto sarò dimagrito con questa corsa?

Come è ovvio chi corre perde peso, sempre e comunque, su questo non ci piove. Ma se si vuole sapere di quanto si è effettivamente dimagriti, cioè quanto grasso abbiamo perso con un certo allenamento, mettersi sulla bilancia subito dopo la seduta è sbagliato quanto inutile.
La maggiore perdita di peso del nostro corpo è dovuta senz’altro alla perdita di liquidi, che avviene con la sudorazione e che può essere molto elevata, facendoci illudere di avere perso fino ad un chilogrammo, ovviamente i liquidi devono essere reintegrati e quanto prima e torneremo a pesare più o meno allo stesso modo.
Gironzolando su internet ho trovato una formuletta per calcolare qual’è il grasso che si perde dopo aver percorso una certa distanza di corsa, proposta dall’immancabile Dott. Enrico Arcelli:
Grasso consumato (in grammi) = (km percorsi x kg di peso corporeo) : 20.

Quindi a fronte di un classico allenamento da 10 km, un runner da 70 kg perde all’incirca 35 grammi di grasso. Tutto il peso in meno che ci risulta dopo la nostra bella corsetta, a parte quei 35 grammi, è diviso fra liquidi e glicogeno consumato.

La quantità di glicogeno che i nostri muscoli hanno utilizzato per ricavare l’energia loro necessaria si calcola con una formuletta analoga.
Glicogeno consumato (in grammi) = (km percorsi x kg di peso corporeo) : 9.

Il runner dell’esempio di prima, con 10 km di corsa avrà perso circa 77,8 grammi, che dovrà reintegrare con un’alimentazione adeguata.

sabato 20 settembre 2008

Corsa e Soglia Anaerobica


Visto che in passato mi sono permesso di scrivere della passione che condivido con molti di voi, continuo a farlo e questa volta mi rivolgo a dei runner che sicuramente nel frattempo si sono evoluti, lasciando le prime timide corsette agli altri per versare litri di sudore nella ricerca di una prestazione migliore o comunque migliorabile.


Esiste un valore detto della"soglia anaerobica" utile non solo per verificare i progressi ottenuti con l'allenamento, ma anche per organizzare in maniera corretta l'allenamento stesso, conoscendo la velocità da tenere su certe distanze. Il metodo che ho usato io insieme ad alcuni miei amici per stabilire con relativa precisione la velocità di soglia anaerobica è stato messo a punto da Bisciotti e Sagnoli (due ricercatori dell'Università di Lione) e dal Prof. Arcelli.


Il test che vi propongo deve essere effettuato correndo in pista, nel tempo migliore di cui si è capaci, due distanze diverse (2000 e 3000 metri) a pochi giorni di distanza l'una dall'altra. Si esprimono i due tempi misurati in secondi e si applica la formula riportata nel riquadro.


Il valore ricavato dal calcolo può essere definito "velocità critica" e corrisponde abbastanza bene alla soglia anaerobica. La velocità critica è espressa in metri al secondo; per avere un valore espresso in chilometri all'ora basta moltiplicare il valore ottenuto dal test per 3.6.


Il test permette anche di calcolare la "capacità di lavoro lattacida", ossia la distanza che nelle due prove è stata percorsa utilizzando l'energia prodotta dal metabolismo anaerobico lattacido; si sottrae alla distanza maggiore (3000 metri) il prodotto fra velocità critica in metri al secondo (in questo caso 4.31 m/sec) e il tempo in secondi sulla distanza maggiore (670 secondi). Si otterrà il valore di 112.3 metri che corrisponde alla "capacità di lavoro lattacido" del soggetto.


La condizione indispensabile perchè i dati ottenuti siano affidabili è che quella ottenuta sia la miglior prestazione possibile in quel momento.


Va comunque chiarito che questo test, anche se può dare valori abbastanza precisi, va utilizzato quando non è possibile effettuare altri test più precisi, anche se più complessi (come quello di Mognoni, Conconi o Faraggiana) ed i suoi risultati vanno sempre giudicati con estremo buon senso.


Come si esegue


1)Si corrono in pista, alla massima velocità, 2000 e 3000 metri, a pochi giorni di distanza, e con un cronometro si misurano i tempi.


2)Il tempo si esprime in secondi.


Ad esempio: 11' 10" sui 3000 metri e 7' 18" sui 2000 metri corrispondono a 670 e 438 secondi.


LA FORMULA


Distanza maggiore - Distanza minore


-----------------------------------------


Tempo sulla D. magg. - Tempo sulla D. min.


Ad esempio:


3000 m. - 2000 m................... =1000 m.


_______________________ =_________ = 4,31


670 sec. - 438 sec................ = 232 sec


IL RISULTATO


La velocità critica di 4.31 metri/secondo corrisponde alla velocità di soglia anaerobica.




  • Per esprimerla in chilometri/ora si deve moltiplicare per 3.6


    4.31 * 3.6 = 15.516 Km/ora


Una volta calcolata la vostra velocità critica arrotondatela per avvicinarvi il più possibile ai valori della tabella sotto, per avere quelli che sono i vostri valori di fondo allenamento lento, medio, e veloce.

Velocità _|Lento ___|Medio____| Veloce___|


15Km/h _|4'56''/5'11' | 4' 27'' / 42'' | 4'00/07''


14 km/h _| 5'16''/24'' | 4'45'' /5'/02''| 4'05''/15''


13 km/h_|5' 36''/ 45'' | 5' 07 '' / 25 ''| 4'36''/45'


12km/h_|5'58'' /6'07''| 5' 33'' / 53 ''| 5'00''/09'


11km/h_| 6' 33' '/54''| 6' 04 '' / 25 ''| 5'27''/37''


Occupiamoci ora di ripetute. Nel caso abbiate deciso di farvi male sul serio e di inserire della ripetute nel vostro allenamento ecco i valori di riferimento ai quali attenersi, sempre tenendo conto della vostra soglia anaerobica.


Velocità | 3000_______| 2000_____| 1000____|


15Km/h _| 12 ' 00'' / 21'' | 7'46''/8'00'' | 3'48''/55''


14 km/h _| 12'51''/13'15' | 8' 20'' / 34 ''| 4'05''/12''


13 km/h _|13'48''/14'15'' | 8'58'' / 9'14''| 4'24''/31''


12km/h _ | 15' 00'' / 29 '' | 9'42''/10'00'| 4'46''/54''


11km/h _ | 16 ' 21'' / 52 ''| 10' 35'' /54''| 5'12''/20''


Non ho ritenuto opportuno inserire nelle tabelle i valori relativi a velocità di soglia più alte di 15 Km/h perchè trattasi, a mio avviso, di runner molto più evoluti che non hanno sicuramente bisogno dei miei consigli. Altresì non sono contemplati valori al di sotto degli 11 Km/h perchè in quel caso è, forse, un tantino troppo presto per preoccuparsi di velocità critica, quando è ancora utile lavorare sulla quantità piuttosto che sulla qualità.

giovedì 18 settembre 2008

Php e Access


Sarà capitato, o capiterà a qualcuno di voi, di dover lavorare in locale con dei dati esportabili in maniera semplice (ad esempio su una pen drive). Il sistema più immediato che mi è venuto in mente è stato quello di usare uno strano binomio, e cioè: PHP e Access. Anche se sappiamo benissimo chel'interazione tra PHP ed i database trova la sua massima espressione con MySQL, sia su sistemi Linux che su sistemi Windows, in caso di necessità è bene ricordare che, su Windows, PHP è in grado di lavorare anche con database diversi da MySQL, sfruttando a pieno le caratteristiche e le interfacce richieste da DBMS differenti. PHP è quindi capace di lavorare anche con Ms Access e con Ms SQL Server: Ecco come ho fatto a far si che PHP interagisse con Access.

Premessa

L'interfaccia tra qualsiasi linguaggio di programmazione, sia Web che WUI, con DBMS di casa Microsoft, ad esempio proprio Access, è ADO (ActiveX Data Object) chi, come me, proviene dal Visual Basic o per i programmatori ASP questa non è una novità.



Ovviamente prima di continuare con l'esempio sento il dovere di sottolineare che l'accoppiata PHP con un DBMS di casa Microsoft non è delle più consigliabili e performanti, ma tuttavia perfettamente funzionante.



Le conoscenze richieste per la piena comprensione di questo Articolo sono:



  • PHP e la sua sintassi base

  • ADO, almeno le basi

  • Ms Access, almeno un minimo di dimestichezza con la sua interfaccia visiva

  • SQL, almeno le basi


Struttura del database di prova



Per l'implementazione di qualche esempio pratico creeremo il file Access miodatabase.mdb composto dalla sola tabella utenti, a sua volta composta dai campi id (Contatore), nome (Testo) e cognome (Testo).



Posizionate il database sul vostro server Web personale, Apache o EasyPHP che sia, ad esempio sotto il percorso di prova
C:\percorso_fisico\miodatabase.mdb

dove www è l'indirizzo fisico del vostro server Web personale, installato, come nell'esempio, sulla partizione C.



Il database è pronto. Proseguiamo.



Introduzione ad ADO



ADO è una libreria di casa Microsoft che permette l'interazione con DBMS di casa Microsoft stessa o con altri DBMS, ad esempio con MySQL per il suo utilizzo con ASP.



ADO mette a disposizione tre oggetti fondamentali: Connection, Recordset e Command. In questo Articolo utilizzeremo i primi due che servono rispettivamente a gestire la connessione ed a gestire i dati. Il terzo è un oggetto specialistico, ottimo ma non troppo usato nemmeno dai programmatori di stampo Microsoft, se non in occasioni particolari.



Nota per i programmatori ASP: cari colleghi :-) come me siete abituati ad utilizzare il carattere punto (.) per separare il nome della variabile che contiene, ad esempio la connessione, col metodo o con la proprietà da utilizzare; in PHP, per la sola interazione con ADO, si usa come separatore la forma ->
variabile->metodo

Non dimenticatelo !

Lettura dei dati



Per eseguire la lettura dei dati creiamo sul server, nella cartella di prova, il file leggi.php; di seguito il codice commentato del file:

<html>

<head><title>prova</title></head>

<body>

<?php


/* La query SQL, le parentesi quadrate sono

necessarie solo quando i nomi dei campi presentano spazi */

$query="select [nome],[cognome] from Clienti" ;


/* I parametri di connessione */

$path= "C:/www/" ;

$db_name= "miodatabase.mdb" ;

$dsource=$path.$db_name ;

$cn_string="Provider=Microsoft.Jet.OLEDB.4.0;" ;

$cn_string.="Data Source=$dsource;" ;


/* La connessione */

if (!file_exists($dsource) ){


die("Il database non esiste") ;


}

$cn= new COM("ADODB.Connection");

$cn->open($cn_string) ;


/* Istanziamo un oggetto Recordset

e inviamo la query attraverso

il metodo Open() */

$rs= new COM("ADODB.Recordset") ;

$rs->Open($query,$cn) ;


/* Ciclo per recuperare i valori dal recordset

EOF= tutto il set di dati è stato esaminato

e il cursore è giunto in fondo */

while(!$rs->EOF){

echo($rs->Fields['Nome']->value." ".$rs->Fields['Cognome']->value."

") ;

$rs->MoveNext() ;

}


/* Chiusura Recordset (da non farsi nelle query di comando) */

$rs->Close() ;


/* Pulizia dell'oggetto Recordset */

$rs->Release() ;

$rs= null ;


/* Chiudo la connessione e libero la memoria */

$cn->Close() ;

$cn->Release() ;

$cn= null ;

?>

</body>

</html>



Il funzionamento è semplice: al Recordset passo la query in lettura e specifico la variabile in cui è stata aperta la connessione; la proprietà EOF dell'oggetto Recordset (End Of File) legge tutti i dati in funzione della query specificata; se settata su TRUE vuol dire che non ci sono dati nel database, quindi lancio il messaggio di notifica; se settata su FALSE all'interno di un ciclo, legge tutti i dati in funzione della query specificata; il metodo MoveNext() interrompe il ciclo e posizione il cursore di ADO all'inizio del ciclo, evitando un loop infinito.



Nella chiusura degli oggetto troviamo i metodi Close() e Release() che servono rispettivamente a chiudere l'oggetto ed a distruggere un COM. In fine si setta la variabile su null in modo da svuotare la memoria della variabile.



Scrittura dei dati



Il criterio con cui si scrivono dei dati su un database Access con PHP è simile al criterio di lettura dei dati; nel codice che segue, scritto nel file scrivi.php non utilizza il Recordset ma esegue una INSERT SQL grazie al metodo Execute() dell'oggetto Connection; il codice commentato:
<html>
<head>
<title>Interazione tra PHP ed Ms Access</title>
</head>
<body>
<?PHP

/* I parametri di connessione */

$path= "C:/www/" ;

$db_name= "miodatabase.mdb" ;

$dsource=$path.$db_name ;

$cn_string="Provider=Microsoft.Jet.OLEDB.4.0;" ;

$cn_string.="Data Source=$dsource;" ;


/* La connessione */

if (!file_exists($dsource) ){


die("Il database non esiste") ;


}

$cn = new COM("ADODB.Connection");
$cn->open($sc);
// Definisco la query
$sql = "INSERT INTO utenti (nome, cognome) VALUES
('gianni', 'nativo')";
// Effettuo l'inserimento dei dati
$cn->Execute($sql);
// Lancio un messaggio di conferma
print "<p>Inserimento effettuato con successo</p>";
// Chiudo la Connection
$cn->Close();
$cn->Release();
$cn = null; ?>
</body>
</html>


C.I.P. (Copia, Incolla, Prova)

domenica 7 settembre 2008

Gioco dell'impiccato




Dopo una lunga pausa estiva torno sul blog e mi permetto di regalare a tutti i miei amici un giochino che ci permette di lavorare con Javascript e di apprenderne alcune fondamentali nozioni.

Ecco il codice da inserire tra i tag <head></head> della nostra pagina web:

<script>

document.open()

Bar= "";

Par="";

penalita=0;

Gias="";

indovinate=0;

function script2()

{ var e = document.getElementById("pippo");

if (e.style.visibility == 'hidden')

{e.style.visibility = 'visible';

e.style.display = 'block';}

else {e.style.visibility = 'hidden';

e.style.display = 'none';}

Parola=document.GG.testo.value;

Barrette="";

Barrette_A=new Array();

Barrette_B=new Array();

for (i=0;i<=Parola.length -1;i=i+1)

{Barrette= Barrette + "_ ";

Barrette_A[i]= Parola.slice(i,i+1);

Barrette_B[i]= "_";}

document.GG.ris.value=Barrette;

document.GG.lab.value="Parola di "+ i +" lettere";

window.status='Gioco dell impiccato';

document.GG.pro.focus();

}

function script1()

{ Bar ="";

punto=0;

for (i=0;i<=Parola.length-1 ;i=i+1)

{ punto=(punto+1);

if(document.GG.pro.value==Parola.slice(i,i+1))

{ Barrette_B[i]=Barrette_A[i];

punto = (punto-1);

indovinate= (indovinate+1) }

if (punto>= (Parola.length) )

{ alert ("sbagliato");

penalita= (penalita+1);

Gias=Gias+document.GG.pro.value+" , ";}

Bar=Bar + Barrette_B[i];}

document.GG.ris.value=Bar;

document.GG.pro.value="";

document.GG.pro.focus();

document.GG.Gia.value=Gias;

if (penalita== 1){document.GG.note.value="Errore 1 di 6 \n Ho piantato il palo! ";window.status="Errore 1 di 6"}

if (penalita== 2){document.GG.note.value="Errore 2 di 6 \n Ho fissato la corda!";window.status="Errore 2 di 6"}

if (penalita== 3){document.GG.note.value="Errore 3 di 6 \n Ho fatto il nodo!";window.status="Errore 3 di 6"}

if (penalita== 4){document.GG.note.value="Errore 4 di 6 \n Ho messo la corda al collo!";window.status="Errore 4 di 6"}

if (penalita== 5){document.GG.note.value="Errore 5 di 6 \n Incomincio a tirare!";window.status="Errore 5 di 6"}

if (penalita== 6)

{document.GG.note.value="Ritenta!";

alert ("Sei Morto! La Parola é : "+Parola);window.status="Gioco dell impiccato."}

if (indovinate==Parola.length){alert ("Complimenti!\n Hai Vinto!");}

}

document.close()

</script>

Scusatemi per i nomi delle variabili ma a me vengono fuori così.

A questo punto tra i tag <body></body> inseriremo questo codice HTML:

<form name="GG">

<table align="center">

<tr><td align="center"><div id="pippo"> <input type="text" name="testo" value="scrivi quì la tua parola" align="absmiddle"/></div></td></tr>

<tr><td align="center"><input type="button" value="Nascondi/Rivedi" onClick="script2()" /></td></tr>

<tr><td align="center">Note :</td></tr>

<tr><td align="center"><input type="text" name="lab" readonly="true"/></td></tr>

<tr><td align="center">Parola :</td></tr>

<tr><td align="center"><input type="text" name="ris" readonly="true"/></td></tr>

<tr><td align="center">Lettera :</td></tr>

<tr><td align="center"><input type="text" name="pro" size="1" maxlength="1" /></td></tr>

<tr><td align="center"><input type="button" value="Prova" onClick="script1()" /><input type="Button" value="Reset" onClick="window.status='Gioco dell impiccato';location.reload(1)"/></td></tr>

<tr><td align="center">Già scritte :</td></tr>

<tr><td align="center"><textarea name=Gia scroll=yno cols=20 rows=2 value='' readonly="true"></textarea></td></tr>

<tr><td align="center">Situazione :</td></tr>

<tr><td align="center"><textarea name=note scroll=yno cols=20 rows=4 value='' readonly="true"></textarea></td></tr>

</table>

</form>

(C.I.P copia incolla prova)

mercoledì 9 luglio 2008

Biotech che passione 3 (il fallimento)


Considerato il periodo intercorso tra la prima stesura e la pubblicazione del mio pensiero, tra l'altro frutto di ricerche non mie, ma delle quali, vista l'autorevolezza delle fonti, condividevo le linee guida; voglio tornare a scrivere sugli OGM.
Non tutti sanno ad esempio che la caratteristica principale ed unica delle sementi modificate è di essere coperte da brevetto. Dovrebbe infatti farci riflettere il fatto che gli Ogm furono varati negli USA prima (1980), e in Europa poi (1998), insieme ad incredibili nuove leggi brevettuali che, per la prima volta nella storia, consentivano di privatizzare il bene comune più prezioso: la materia vivente del pianeta.
Da quel momento è bastato introdurre un gene estraneo in una pianta perché l’intera pianta diventasse proprietà privata, come fosse un’invenzione umana e non un elemento della natura.
Negli ultimi venti anni il binomio modifica genetica e brevetto (i cui diritti si riscuotono ad ogni ciclo riproduttivo o risemina) è stato per le aziende biotech, insieme all’acquisto delle aziende sementiere, non strumento di maggiore benessere per agricoltori o cittadini, ma strumento di una guerra economica, sotterranea e di conquista, o, se vogliamo, di una nuova forma di colonizzazione a cui siamo tutti esposti.
Considerato che:
- gli Ogm hanno fino ad oggi tradito tutte le promesse su produttività, sostenibilità, capacità di “sfamare il mondo”
- si sono rivelati assai dannosi per l’ambiente, la salute, la sovranità alimentare che sola garantisce la sicurezza alimentare, la libertà di scelta alimentare, la biodiversità e la tutela dei diritti umani
- sono stati quasi sempre catastrofici per l’economia dei paesi poveri (vedi Argentina e India)
- sono una minaccia per i paesi che come il nostro puntano sui prodotti di qualità
- si sono rivelati un cattivo investimento anche per i paesi produttori.

Charles Benbrook, già direttore Agricoltura della “Academy of Science” statunitense, ha spiegato in occasione di un convegno a Roma alla Camera dei Deputati, il 18/05/03, che gli studi fatti su 8.200 siti sperimentali universitari degli USA dimostrano che gli Ogm non producono di più, ma dal 7 al 10% in meno, mentre inquinano 4 volte di più. Oggi l’imponente studio di Friends of the Earth, “Who benefits from GM crops: the rise in pesticide use” conferma questi dati e li peggiora (l’uso del glifosato, sostanza cancerogena, è aumentato in USA di 15 volte in 11 anni). Il direttore della Soil Association britannica, P. Melchett, dice “i prodotti con i quali le compagnie biotech dicono di poter “sfamare il mondo” non hanno mai recato un aumento di produzione complessivo, ma al contrario una riduzione”.
A voi la riflessione.

sabato 5 luglio 2008

Connessione a mySql con PHP


Semplice connessione e lettura risultati db mySql con php in locale


<?php

// provo a connettermi

$link = mysqli_connect('localhost', 'root', 'tuaPassword', tuoDb');

echo "

<table border>

<tr><th colspan='3'>Clienti</tr>

<tr><th>Id</th><th>nome</th><th>Cognome</th></tr>

";

// effettuo la query

$result = mysqli_query($link, 'SELECT id, nome, cognome FROM nome');


// eseguo la fetch dei risultati

while ($row = mysqli_fetch_row($result))

{

printf ("ID utente: %d, nome: %s, cognome: %s\n",$row[0], $row[1],$row[2]);

printf("<h3>_________________________________</h3>");

}


// riporto il cursore della riga corrente a 0

mysqli_data_seek($result,0);


// chiudo il set dei risultati per liberare memoria

mysqli_free_result($result);


// chiudo la connessione

mysqli_close($link);

?>


spero di essere stato chiaro

giovedì 26 giugno 2008

Data in italiano con javascript


Ecco un semplice (quasi banale) script che ci permette di ricavare la data di sistema in italiano con javascript senza scomodare nient'altro che il metodo splice().


<html>

<head>

<title>

semplice data in italiano con javascript

</title>

</head>

<body>

<script language="javascript">

data= new Date();

miadata= data.toLocaleString();

document.write ("ciao oggi è : "+miadata.slice(0,(miadata.length -8)));

</script>


</body>

</html>


C.I.P. (copia incolla prova)


Ciao


mercoledì 18 giugno 2008

Libero: COLLABORAZIONI (1)


Il commissario Facchetti, seduto su una delle sedie di plastica piazzate accanto al tavolino del bar Primavera, fumava una sigaretta aspirando il fumo dall'involucro di carta e tabacco e soffiandolo fuori come se dal minuscolo cilindro di cellulosa e foglie rinsecchite fosse possibile risucchiare prima e sputare fuori poi tutti gli affanni della vita terrena. Di sicuro dava l'impressione di apprezzare i rivoli e le volute che gli effetti della combustione producevano per suo conto. I capelli radi, la barba incolta, ed un'aria falsamente dimessa, facevano di lui uno tra i tanti avventori occasionali del bar. Libero lo vide subito, appena girato l'angolo, ed ebbe quasi la stessa reazione che ha la maggior parte delle persone quando si presenta ad un appuntamento col proprio dentista. Il tavolo occupato dal commissario era circondato da altri tavolini di plastica uguali al suo e addobbati da fatiscenti fioriere colme di fiori di plastica dall'aria smunta. Gli avventori dell'antico caffè sul viale sembrava quasi volessero evitare di sedersi gli uni troppo vicino agli altri, ed i tavoli accanto al commissario erano quindi tutti vuoti. Libero si avvicinò al poliziotto con aria sorridente, cercando di esorcizzare il gelo che sentiva percorrergli la spina dorsale. Si sedette tirando prima una sedia da un lato e poi accomodandosi su un'altra. Il movimento che apparve, agli angoli della striscia sottile che delimitava la bocca dell'uomo di legge, fece intuire che quel gran figlio di buona donna, se mai fosse possibile, era quasi contento di rivederlo. Il nuovo arrivato ricambiò il sorriso con un cenno della testa.
«Libero, amico mio» - esordì il commissario - «puntuale come un orologio, cosa prendi?» - . Libero alzando una mano a mo' di diniego rispose: - «Niente grazie» - e nel frattempo infilando l'indice tra il collo ed il colletto della camicia allontanava l'uno dall'altro insieme al senso di oppressione che l'appuntamento gli procurava. Il commissario sorrise di nuovo ed alzando un braccio in direzione del cameriere esclamò - «due caffè grazie» - e protendendosi verso il proprio interlocutore, a voce bassa e con aria complice, spiegò: - «due persone che parlano del più e del meno, che si incontrano in un bar e che non vogliono dare nell'occhio consumano qualcosa insieme» - , l'ultima parola fu sillabata in modo da enfatizzarne il significato. Libero si passò una mano sulla testa accarezzandosi il lucido cranio e stupendosi nel trovare anche questa sua parte del corpo umida e appiccicaticcia.

Successivo

Calcolo IMC e Peso Ideale in Javascript (2)


Vedi l'esempiosulla stessa pagina.


Dopo avere creato il form di inserimento dati passiamo allo script vero e proprio (codice che potete copiare ed incollare direttamente).


All'interno dei tag <head></head> scriveremo:



<script language="javascript">


function roundTo(value, decimalpositions)

{


var i = value * Math.pow(10,decimalpositions);


i = Math.round(i); return i / Math.pow(10,decimalpositions);


}/* questa funzioncina serve per gli arrotondamenti, visto che javascript genera un numero osceno di decimali*/


function scrivi ()

{


/* prendiamo i parametri inseriti dall'utente attraverso il form ed assegnamoli come valore alle variabili peso altezza e sesso*/

peso=document.forms["IMC"].peso.value;

altezza= document.forms["IMC"].altezza.value;


h=altezza*altezza;//l'altezza al quadrato

imc=(peso/h)*10000;//formula calcolo IMC

sx=0;//assegno un valore alla variabile sx(sesso)

if (document.forms["IMC"].se[0].checked){sx =100;}



/*se il primo check è stato selezionato sx=100*/

if (document.forms["IMC"].se[1].checked){sx=104;}


/*se il secondo check è stato selezionato sx=104*/

p1=altezza-sx;//

p2=p1*0.05;


pi=p1-p2;


/*la formula per il calcolo del peso ideale [(altezza-100)-5%] per le donne 104 al posto di 100*/



if (peso==""){alert("Cos'è facciamo i furbetti?\n Inserisci il peso!");return;}

if (altezza==""){alert("Inserire altezza prego! \n non ho tempo da perdere io");return;}


if (sx==0){alert("Non dirmi che non sai se sei maschio o femmina?");return;}

/*dopo avere controllato se tutti i campi sono stati compilati arrotondo l'IMC togliendo i decimali(roundTo(imc,0)) e creo un messaggio personalizzato per ogni indice di massa restituito dal calcolo precedente*/


switch (roundTo(imc, 0))

{

case 15:

messaggio= " \n per farti la radiografia basta metterti controluce!";


break;

case 16:

messaggio= " \n mangia, mangia per favore sei sotto-sotto peso!";

break;

case n:

messaggio= " \n scrivi i tuoi messaggi qui ";


break;


default:

messaggio=" a quale specie animale appartieni?";


}/*a questo punto non miresta che passare i parametri ottenuti ad un messagebox*/


alert( "Il tuo indice di massa corporea è : \n "+roundTo(imc, 2)+messaggio +"\n Il tuo peso ideale è di Kg. "+ pi+"\n (chilo più chilo meno!)");


document.forms["IMC"].reset();


/*quindi ripulisco il form*/

}


</script>



precedente

Calcolo IMC e Peso Ideale in Javascript


Ecco un semplice script per calcolare l'indice di massa corporea ed il peso ideale con javascript!


( l'esempio funzionante si trova in basso a destra su questa stessa pagina)


Creiamo un form per l'inserimento dei dati ecco il codice:


<form name=IMC >


<table align=center bgcolor=#FF6600>

<tr><td align=center><strong>Calcolo indice <br> massa corporea <br>e<br>peso ideale </strong></td></tr>


<tr>

<td>Inserisci il tuo peso in Kg.</td>

</tr>

<tr>

<td align=center>


<input type=text name=peso value='' size=4>

</td>

</tr>

<tr>

<td>Inserisci la tua altezza in cm.</td>


</tr>

<tr>

<td align=center >

<input type=text name=altezza value='' size=4>

</td>

</tr>


<tr>

<td align=center >maschio<input type=radio name=se>femmina<input type=radio name=se>

</td>

</tr>

<tr>


<td colspan=2 align=center>

<input type=button name=calcola value=Calcola onClick=scrivi();>

</td>

</tr>

<tr><td><sub>developed by g.nativo</sub></td></tr>


<table>

<form>


successivo>>

sabato 7 giugno 2008

A lezione di HTML ottava parte (le immagini)


Le immagini


Anche l'occhio vuole la sua parte, quindi cosa c'è di meglio che una bella immagine per valorizzare la nostra pagina web?


Se poi le immagini sono tante meglio no?


No! o meglio sì, ma con cognizione di causa.


Così come abbiamo visto insieme lungo il percorso dedicato all'HTML esistono poche semplici regole che se applicate ci rendono la vita e lo sviluppo di pagine web più semplice e consono alle nostre aspettative.


Le immagini supportate dai browser sono generalmente .jpg, .gif, e .png. Quindi qualsiasi altro formato rischia di non essere visualizzato. Altra nota importante è quella riguardante il peso (in KB) delle vostre graziose fotografie, infatti queste devono necessariamente essere ottimizzate in quanto ancora moltissime persone navigano con i cari vecchi modem analogici a 56 Kbs. Quindi una volta creata, elaborata ed ottimizzata (photoshop, the GIMP, Paint sono programmi che un webmaster dovrebbe saper usare )una foto è pronta per essere inserita nelle nostre pagine web.


Es. <img src="http://miosito/miefoto/miaImmagine.gif">


Si noti che abbiamo inserito un percorso assoluto, qualora l'immagine si fosse trovata nella stessa cartella del file html avremmo potuto omettere l'intero percorso e scrivere quindi <img src="miaImmagine.gif">).


img è il tag per le immagini enon ha bisogno del tag di chiusura


src è l'attributo che specifica il percorso (source) .


Alcune buone abitudini da prendere sono quelle relative alla dimensione e al testo alternativo della nostra immagine.


Es. <img src="Mia Immagine .gif" alt="La mia foto " width="224" height="69">


Con l'attributo alt inseriamo un testo alternativo all'immagine, qualora questa non venga caricata, o da visualizzare durante il caricamento.


Con gli attributi width e heigth diamo al browser la possibilità di conoscere in anticipo le dimensioni della foto ed eviteremo, quindi, il fastidioso caricamento a strisce dell'immagine man mano che viene caricata. Nel caso in cui la spiegazione dell’immaginedovesse essere particolarmente lunga, è possibile espandere la descrizione sintetica - fornita tramite l’attributo "alt" grazie ad un altro attributo: longdesc (long description), che permette di specificare un file con una spiegazione estesa dell’immagine. Ecco la sintassi:


<img src="MiaImmagine.gif" alt="la mia foto " longdesc=“descrizione.html“ width="224" height="69">


Dove descrizione.html sarà un file html dove avremo preventivamente inserito in formato testo una descrizione di ciò che la foto rappresenta.


L'attributo title, così come gia visto per i link ci restituirà una ulteriore descrizione non appena il mouse si sposterà sull'immagine.


Es.<img src="Mia Immagine .gif" alt="La mia foto " width="224" height="69" title="Ciao" >.


Con l'esempio che segue faremo si che la nostra immagine diventi un link, (utile ad esempio se abbiamo costruito l' immagine di un pulsante) e faremo in modo che il collegamento apra una nuova finestra(come già visto nella sezione dedicata ai link)


<a href="http://www.TuoSito.it"

target="_blank">

<img src="Pulsante.gif" width="224" height="69">

</a>


L'attributo border, così come le tabelle definisce il bordo attorno alla immagine e se non si desidera nessun bordo bisognerà specificare scrivendo border="0"


precedente successivo

giovedì 5 giugno 2008

A lezione di HTML (settima parte il link)


Il link


le ancore


La caratteristica forse più importante del web è senza ombra di dubbio data dalla possibilità di "navigare" da una pagina all'altra semplicemente facendo click su una porzione di testo, su una immagine o su quant'altro la fantasia del webmaster abbia avuto modo di frivoleggiare. In una parola l'ipertestualità cioè la capacità di rendere un testo collegato direttamente ad una pagina web o ad una porzione di essa, ha fatto la fortuna di internet.


Nell'HTML questa importante strumento si traduce in due fasi importanti: il contenuto e la risorsa.


Il contenuto è la parte cliccabile del link che deve essere il più esplicativo possibile, sia esso una immagine, un testo o un pulsante.


La risorsa è il documento verso cui il link indirizza l'utente.


Un esempio chiaraficatore di codice HTML potrebbe essere questo.


<a href="http:gianninativo.blogspot.com">Blog di Gianni</a> che ci restituirà:


Blog di Gianni


Come al solito abbiamo il tag di apertura e chiusura in questo caso <a></a> .


La risorsa è il sito web verso cui punta il link (in questo caso http:gianninativo.blogspot.com) e il contenuto che spiega verso cosa si sta indirizzando l'utente è la parte che sta tra i tag <a>Contenuto</a>.


E' importante sapere che a seconda del tipo di file verso cui punta il link il browser si comporterà in manierqa diversa.


Per esempio mentre i file .gif, .jpg, .png verranno visualizzati nel browser, così come gli .html , .pdf, .doc; per i file .zip, .exe verrà chiesto all'utente di scaricarli sul proprio PC.


La sintassi per indirizzare gli utenti verso un indirizzo di posta elettronica sarà:


<a href="mailto:tuaMail@TuoSito.it">

 Mandami una e-mail

</a>.


Le Ancore


Mentre il link punta verso altre risorse sul web l'ancora punta verso la stessa pagina web, anzi per meglio dire verso un preciso punto di essa.


Ecco il codice:


<a name="puntopreciso1">BlaBlaBla…. …</a>


Così ho inizializzato l'indice verso cui punterà il collegamento, ora ecco il collegamento vero e proprio:


<a href="#puntopreciso1">vai a inizio pagina </a> .


Esempio di ancora


Gli Attributi del Link


target .


Tramite questo attributo è possibile far si che il link punti verso una nuova pagina web, facendo si che il contatto con la pagina principale non venga mai perso.


Es.: <a target="_blank" href="http://gianninativo.blogspot.com">visita il mio blog </a>


cioè :visita il mio blog


title


Questo è l'attributo che ci da la possibiltà di inserire un testo esplicativo al nostro link.


Es.<a title="Visita il blog di Gianni Nativo " href="http://gianninativo.blogspot.com">visita il mio blog </a>.


Cioè :visita il mio blog


hreflang


con hreflang si indica la lingua del documento verso cui punta il link. Es. <a hreflang="eng" href="www.blogspot.com" >


accesskey


con accesskey si può impostare se si vuole una scorciatoia da tastiera per il proprio link.


Es. <a href="http://gianninativo.blogspot.com" accesskey="g" target="_blank" >Alt+g+invio e visiti il mio blog </a>


cioè : Alt+g+invio e visiti il mio blog


base


Ad ogni link abbiamo sempre inserito tutto il percorso completo, esistono però due motivi per i quali questa tecnica può essere omessa.


Il primo è che siete assolutamente certi che il documento verso cui state linkando si trova nella stessa cartella della pagina da cui parte il link.


Es. se mi trovo nella cartella WWW.miosito.it/miacartella/mioFile1.html e devo linkare su WWW.miosito.it/miacartella/mioFile2.html mi basterà usare il percorso relativo <a href="mioFile2.html".


Il secondo motivo che ci permette di omettere tutto il percorso (o percorso assoluto) è perchè abbiamo indicato al browser la parte omessa tramite il tag 'base' .


Difatti inserendo tra i tag HEAD questo codice: <base href="http://www.mioSitoWeb.com/miaCartella">


specifico che d’ora in poi tutti i percorsi relativi faranno riferimento al percorso indicato.

Quindi scrivendo nel documento:


<a href="mioFile.html">collegamento al mio file</a>


Sarò sicuro che farà riferimento a:


http://www.mioSito.it/miaCartella/mioFile.html


 


...precedente successivo...

mercoledì 4 giugno 2008

Libero: paura al quarto piano(parte seconda)


prima parte

Entrò scivolando dietro la porta e richiudendola senza fare rumore.

Accese la speciale torcia a batterie del tipo usato dai minatori o dagli speleologi e fissò l’elastico sul capo. L’ingresso della casa era di forma quadrangolare con due aperture ai lati che portavano, così come Libero aveva scoperto dagli uffici del catasto, ai due lati dell’abitazione della facoltosa famiglia. Si diresse a sinistra verso lo studio. Attraversò un corridoio tappezzato di quadri di ottimo gusto ma di scarso valore, i passi felpati del ladro rimbombavano alle sue orecchie come colpi di cannone. La porta dello studio era la prima a sinistra, lentamente Libero girò la maniglia con le mani inguainate da sottili guanti di lattice. Come il resto della casa lo studio del padrone di casa era arredato splendidamente, il fascio di luce della torcia ruotò più volte disegnando nell’aria cerchi che, almeno negli intenti, avrebbero dovuto far risaltare le eventuali insidie nascoste nello studio del ricco abitante di via Cavour . La cassaforte era un moderno connubio di elettronica e meccanica complessa, un ibrido che, secondo la personale opinione di colui che l’avrebbe aperta di lì a poco, lasciava lo spazio che trovava nella storia delle scatole murarie blindate. Il buio della stanza acuiva i sensi dello scassinatore che anni di esercizio avevano reso ancora più abile se sotto tensione. L’ultimo, quasi impercettibile scatto del sofisticato meccanismo coincise con una goccia di sudore sgorgata dalla tempia e rotolata giù fino alla guancia, dove l’avambraccio scoperto terse d’istinto quell’unica nota fuori posto di un lavoro eseguito impeccabilmente. Non sapeva cosa ci fosse dentro le cartelle di cuoio che tirò fuori dal vano del moderno forziere, ne la cosa gli importava più di tanto, sarebbe stato pagato bene,molto bene, per quel lavoro e tanto bastava. Le tre cartelle in cuoio finemente lavorato e, dal misterioso contenuto, finirono dentro la sacca di tela, assieme ai pochi attrezzi ed al souvenir in oro e brillanti che condivideva la permanenza all’interno dello scrigno da parete appena profanato. Di lì a poco sarebbe arrivata l’euforia che fa perdere la concentrazione e fa combinare i guai, Libero lo sapeva bene, quindi si sforzo di non accelerare nei movimenti e di prendere tutto il tempo necessario per uscire dalla casa e dileguarsi così come aveva pianificato. Riattraversò lo studio chiudendo la porta alle sue spalle, preoccupandosi, ancora una volta di non fare rumore. Le pareti del corridoio illuminate dal fascio di luce che partiva dal centro della sua fronte sembravano allargarsi al suo passaggio e l’apertura ad arco di fronte a lui sembrò quasi schiudersi quando l’attraversò diretto verso l’ultima porta che lo separava dall’esterno.

Raus era un Rotwailer di cinque anni che quasi per caso aveva fatto innamorare di se uno dei figli del Dottor Scucces Vella. Cresciuto come un cucciolo d’appartamento ne aveva, forse, l’indole ma non la stazza ne tantomeno l’istinto. Fu proprio quest’ultimo che lo fece appollaiare davanti alla porta di casa quando, andando a dissetarsi presso la sua bacinella di metallo, sentì nell’aria un odore che non avrebbe dovuto esserci.

Il fascio di luce che colpì il cane lo spinse ad alzarsi minaccioso verso la fonte di quella luce ed all’intruso che, appena udito il ringhio minaccioso si fermò impietrito davanti all’inaspettato pericolo.

L’animale, a differenza dell’uomo, non ebbe la necessità di trovare tra i propri ricordi qualcosa di analogo, o comunque qualcosa che lo aiutasse a valutare la situazione attuale, l’istinto gli passò tutte le informazioni del caso dalla spinta sulle zampe posteriori alle fauci spalancate in aggressiva attesa della preda che di li a poco avrebbe addentato.

L’istinto è sicuramente qualcosa che, per quanto riguarda la quasi totalità degli esseri umani, è andato pressoché perduto a tutto vantaggio dell’intelletto che è riuscito a sopperire il progressivo dissolversi degli istinti primordiali, dei quali, ad un certo punto l’uomo ha deciso di poter fare a meno. L’agire d’istinto ormai non è altro che una risposta poco razionale ad una situazione inaspettata e di disagio. Ed è così che il ladro colto in flagrante dal molosso fece l’unica cosa che la circostanza poco felice gli permetteva di fare:parò entrambi le mani avanti. Raus, il cane che si era scoperto feroce custode della dimora dei suoi padroni, in un misto di adrenalina e antiche pulsioni canine, addentò, mezzo accecato, ciò che aveva davanti mentre il suo slancio faceva sì che l’intero zaino di tela, farcito di cartelle di documenti rubati di fresco, gli si cacciasse tra le fauci.

L’impeto dello scontro fece rotolare per terra il ladro terrorizzato ed il cane ormai impastoiato e con le cinghie della sacca che gli si erano fissate dietro la testa.

In una sorta di spasmodico tossire ed agitare l’enorme testa, il guardiano a quattro zampe cercava inutilmente di disfarsi di ciò che gli impediva di finire il suo lavoro di sentinella. Libero sentiva ancora corrergli lungo la schiena il gelo che lo aveva impietrito davanti alla belva ma, incredulo di fronte allo spiraglio che il fato stava ritagliando per lui, si alzò e con un balzo degno del suo antagonista a quattro zampe raggiunse la porta. La corsa precipitosa lungo le scale niente ebbe a che fare con tutti gli accorgimenti che avevano inorgoglito lo sfortunato malfattore nella prima parte della serata ed il frastuono che scatenò l’ex cucciolo di casa Scucces mise fine a qualsiasi eventuale ripensamento: il colpo era fallito.

Lungo le vie semibuie e poco trafficate che accompagnarono il mesto ritorno di Libero fu uno strano peso ad una tasca della giubba telata ad attirare l’attenzione del frastornato protagonista della disfatta di via Cavour.

Un bracciale tempestato di pietre preziose che, pur sforzandosi lo sfortunato mariuolo non ricordava di avere trasferito all’interno della tasca, era finito non si sa come nel largo giaccone. Il giorno dopo avrebbe scoperto che si trattava di una splendida imitazione dell’originale gioiello che in quel momento si trovava al braccio della proprietaria. Sempre il giorno dopo Libero avrebbe realizzato, insieme al suo ricettatore, che una splendida imitazione è pur sempre meglio di uno splendido niente: qualcosa doveva pur valere.

martedì 20 maggio 2008

A lezione di HTML parte sesta (le Tabelle)


No, non ci eravamo dimenticati di parlare di uno dei pilastri di Internet: le tabelle. Ebbene si, non arricciate il naso avete letto bene, le tabelle. Le tabelle nelle pagine web sono da sempre usate ed abusate per far si che la veste grafica sia gradevole, compatta e ben strutturata. L'unico neo che mi viene in mente, aggirabile in verità, e che le tabelle sono visibili solo quando sono state scaricate per intero (basta quindi suddividere in due o più tabelle i propri contenuti). Ma passiamo alla pratica ecco il tag che ci permette di aprire e chiudere le nostre tabelle.


<table></table>


Questa istruzione però non produrrà alcun risultato in quanto la tabella, in quanto tale, necessita di righe e colonne che inseriremo così;


<table >


<tr>Questa è una riga</tr>


<tr>Questa è la seconda riga</tr>


</table>


Risultato:





Questa è una riga
Questa è la seconda riga 2

Possiamo quindi inserire le colonne in questo modo.


<table ><tr><td>Riga 1 colonna 1</td><td>Riga 1 colonna 2 </td></tr></table>


<tr><td>Riga 2 colonna 1</td><td>Riga2 colonna 2 </td></tr></table>


Risultato:




Riga 1 colonna 1Riga 1 colonna 2
Riga 2 colonna 1Riga2 colonna 2

Il tag <TABLE> ha i seguenti attributi:















border

specifica la larghezza dei bordi di una tabella (in pixel)

cellspacing

specifica la distanza (in pixel) tra una cella e l’altra, oppure tra una cella e il bordo. Di default è un pixel, dunque occorrerà sempre azzerarlo esplicitamente, quando non lo si desideri

cellpadding

indica la distanza tra il contenuto della cella e il bordo. Se il valore viene indicato con un numero intero, la distanza è espressa in pixel; il cellpadding tuttavia può anche essere espresso in percentuale. Di default la distanza è nulla


Con questa sintassi ad esempio si imposta una tabella con bordo di 1 pixel, senza spazio tra le celle e con il contenuto che è distanziato dai bordi della cella di 10 pixel:


<table width="75%" border="1" cellpadding="10" cellspacing="0">


la proprietà "75%" può essere sostituita con il numero di pixel che si desidera ad es.


<table width="350" border="1" cellpadding="10" cellspacing="0"> ci restituirà una tabella larga 350 pixel


lo stesso dicasi per l'attributo HEIGTH= "45% " o se preferite HEIGTH= "400 "( delimiterete l'altezza o in pixel o in percentuale a seconda delle vostre esigenze).


Altri attributi del tag <TABLE>


background=filename imposta l'immagine di sfondo della tabella


bgcolor=#rrggbb imposta il colore di sfondo


bordercolor=#rrggbb imposta il colore del bordo


bordercolordark=#rrggbb colore ombra del bordo


frame=void -> elimina tutti i bordi esterni

frame=above ->
mostra il bordo solo in alto

frame=below ->
mostra il bordo solo in basso

frame=lhs ->
mostra il bordo solo sul lato sinistro

frame=rhs ->
mostra il bordo solo sul lato destro

frame=hsides ->
mostra il bordo solo sui lati orizzontali

frame=vsides ->
mostra il bordo solo sui lati verticali

frame=box
-> mostra il bordo su tutti i lati


Per l'allineamento orizzontale useremo questa sintassi:


<TABLE ALIGN="valore">......</TD>


dove ALIGN può assumere i valori left (predefinito), center e right.


I tag <TR> e <TD> rispecchiano quasi gli stessi attributi del <TABLE> e quì vi invito a costruire le vostre tabelle e sperimentare quello che spero essere riuscito a trasmettervi.


Alcuni attributi però sono specifici, faccio un esempio di allineamento verticale dei contenuti di una cella :


<TD VALIGN="valore">......</TD>


dove VALIGN può assumere quattro differenti valori:

- top: allineamento al margine superiore della cella;

- middle (predefinito): allineamento al centro dell'altezza della cella;

- bottom: allineamento al margine inferiore della cella;

- baseline il contenuto della cella si allinea alla base della prima riga di testo delle celle adiacenti.


un altro attributo proprio del <TD> è il NOWRAP che impedisce l'interruzione di riga, anche se il contenuto della cella è più grande della finestra del browser.


Chiudo con le ultime, ma utilissime, proprietà reletive al tag

<TD>


e cioè


COLSPAN = numero di colonne x riga


ROWSPAN= numero di righe per colonna


Esempio


<table border="1">


<tr><td rowspan="3">Esempio rowspan</td><td colspan =3>Esempio colspan</td></tr>


<tr><td>Classico</td> <td>Esempio</td> <td>di</td> </tr>


<tr><td>uso</td> <td>delle </td> <td>Tabelle</td> </tr>


</table>


Risultato nel browser










Esempio rowspanEsempio colspan
Classico Esempio di
uso delle Tabelle

<< precedente


<< successivo