C++ Esempio di inserimento e stampa in lista con puntatori

lug 15th, 2009 | Filed under C++, Snippet

Questo piccolo snippet mostra come creare una struttura dati dinamica, per l’esattezza una lista, le due funzioni permettono di inserire un elemento in coda alla lista e l’altra permette di stampare tutti gli elementi presenti all’interno di essa.

#include <iostream>

using namespace std;

struct list {
    int data;
    list* next;
};

void insert_back(list* &first, int data);
void print(list* first);

int main() {
    list* first = NULL;
    int i;
    do {
        cout< <"Inserisci un numero da aggiungere alla lista, metti una lettere per terminare: ";
        if((cin>>i).good())
            insert_back(first, i);
    }while(cin.good());

    cout< <"Lista inserita: n";
    print(first);

    return 0;
}

void insert_back(list* &first, int data) {
    list* n = new list;
    n->data = data;
    n->next = NULL;

    if(first == NULL) {
        first = n;
    }else {
        list* app = first;
        while(app->next != NULL)
            app = app->next;

        app->next = n;
    }
}

void print(list* first) {
    list* n = first;
    while(n != NULL) {
        cout< <n->data< < " ";
        n = n->next;
    }
}
</iostream>

PHP Script per whois

lug 15th, 2009 | Filed under PHP, Snippet

Posto un piccolo script per il whois fatto in PHP.

<?php
/*
    example: page.php?s=yahoo.it
*/

$server = array(
"asia" => "whois.nic.asia",
"biz" => "whois.biz",
"com" => "whois.verisign-grs.com",
"coop" => "whois.nic.coop",
"info" => "whois.afilias.net",
"jobs" => "jobswhois.verisign-grs.com",
"mobi" => "whois.dotmobiregistry.net",
"name" => "whois.nic.name",
"net" => "whois.verisign-grs.com",
"org" => "whois.pir.org",
"pro" => "whois.registrypro.pro",
"tel" => "whois.nic.tel",
"travel" => "whois.nic.travel",
"gov" => "whois.dotgov.gov",
"edu" => "whois.educause.edu",
"int" => "whois.iana.org",
"museum" => "whois.museum",
"ac" => "whois.nic.ac",
"ae" => "whois.nic.ae",
"ag" => "whois.nic.ag",
"am" => "whois.amnic.net",
"at" => "whois.nic.at",
"au" => "whois.aunic.net",
"be" => "whois.dns.be",
"bg" => "whois.register.bg",
"bj" => "whois.nic.bj",
"br" => "whois.registro.br",
"ca" => "whois.cira.ca",
"ch" => "whois.nic.ch",
"ci" => "whois.nic.ci",
"cl" => "whois.nic.cl",
"cn" => "whois.cnnic.net.cn",
"cx" => "whois.nic.cx",
"cz" => "whois.nic.cz",
"de" => "whois.denic.de",
"dk" => "whois.dk-hostmaster.dk",
"ee" => "whois.eenet.ee",
"fi" => "whois.ficora.fi",
"fr" => "whois.nic.fr",
"gd" => "whois.adamsnames.com",
"gg" => "whois.channelisles.net",
"gi" => "whois2.afilias-grs.net",
"gs" => "whois.nic.gs",
"gw" => "whois.nic.gw",
"gy" => "whois.registry.gy",
"hk" => "whois.hkirc.hk",
"hn" => "whois2.afilias-grs.net",
"ie" => "whois.domainregistry.ie",
"il" => "whois.isoc.org.il",
"in" => "whois.inregistry.net",
"io" => "whois.nic.io",
"ir" => "whois.nic.ir",
"is" => "whois.isnic.is",
"it" => "whois.nic.it",
"je" => "whois.channelisles.net",
"jp" => "whois.jprs.jp",
"ke" => "whois.kenic.or.ke",
"kg" => "www.domain.kg",
"ki" => "whois.nic.ki",
"kr" => "whois.nic.or.kr",
"kz" => "whois.nic.kz",
"la" => "whois.nic.la",
"li" => "whois.nic.li",
"lt" => "whois.domreg.lt",
"lu" => "whois.dns.lu",
"lv" => "whois.nic.lv",
"ly" => "whois.nic.ly",
"ma" => "whois.iam.net.ma",
"mg" => "whois.nic.mg",
"mn" => "whois.nic.mn",
"ms" => "whois.adamsnames.tc",
"mx" => "whois.nic.mx",
"my" => "whois.mynic.net.my",
"na" => "whois.na-nic.com.na",
"nl" => "whois.domain-registry.nl",
"no" => "whois.norid.no",
"nu" => "whois.nic.nu",
"nz" => "whois.srs.net.nz",
"pl" => "whois.dns.pl",
"pm" => "whois.nic.pm",
"pr" => "whois.uprr.pr",
"re" => "whois.nic.re",
"ro" => "whois.rotld.ro",
"ru" => "whois.ripn.net",
"sa" => "whois.nic.net.sa",
"sb" => "whois.nic.net.sb",
"sc" => "whois2.afilias-grs.net",
"se" => "whois.iis.se",
"sg" => "whois.nic.net.sg",
"sh" => "whois.nic.sh",
"si" => "whois.arnes.si",
"st" => "whois.nic.st",
"tc" => "whois.adamsnames.tc",
"tf" => "whois.nic.tf",
"tk" => "whois.dot.tk",
"tl" => "whois.nic.tl",
"tm" => "whois.nic.tm",
"tr" => "whois.nic.tr",
"tw" => "whois.twnic.net.tw",
"ua" => "whois.net.ua",
"ug" => "whois.co.ug",
"uk" => "whois.nic.uk",
"us" => "whois.nic.us",
"uz" => "whois.cctld.uz",
"vc" => "whois2.afilias-grs.net",
"ve" => "whois.nic.ve",
"vg" => "whois.adamsnames.tc",
"wf" => "whois.nic.wf",
"ws" => "whois.website.ws",
"yt" => "whois.nic.yt");

$s = getDomain($_GET['s']);

if($s != NULL && $server[$s[1]] != "") {
    $connection = fsockopen($server[$s[1]], 43);
    if (!$connection)
        echo "Errore";
    else {
        $msg = "";
        fputs($connection, $s[0].".".$s[1]."\r\n");
        while (!feof($connection))
            $msg .= fgets($connection, 4096);

        fclose($connection);

        echo "<pre>".
            $msg
        ."</pre>";
    }
}else
    echo "URL non valido";

function getDomain($url) {
    $arrU = explode(".", $url);
    if(count($arrU) >= 2)
        return array($arrU[count($arrU)-2], $arrU[count($arrU)-1]);
    else
        return NULL;
}
?>

.NET Commenti XML nel codice

lug 14th, 2009 | Filed under .NET, C#, Snippet

Avete mai sentito parlare dei commenti XML? Quelli che permettono a Visual Studio di creare la documentazione ‘al momento’. Per esempio prendiamo la classe WebClient, questo è un esempio di quello che intendo
webclient
quel suggerimento c’è grazie ai commenti XML, che possiamo aggiungere anche noi al nostro codice per esempio. Prendiamo in considerazione questa classe
Continua a leggere…

C# come mandare email con allegati a piu destinatari

lug 14th, 2009 | Filed under .NET, C#, Snippet

Questo codice che vi sto per mostrare serve a mandare le email tramite un programma in C#.

       /// <summary>
        /// Invia una email
        /// </summary>
        /// <param name="to">Il destinatario dell'email</param>
        /// <param name="from">Il mittente</param>
        /// <param name="titolo">Il titolo dell'email</param>
        /// <param name="corpo">Il messaggio dell'email</param>
        /// <param name="server">Il server smtp da cui spetire l'email</param>
        private void sendEmail(string to, string from, string titolo, string corpo, string server)
        {
            try
            {
                MailMessage mail = new MailMessage();
                SmtpClient client = new SmtpClient();

                mail.To.Add(to);
                mail.From = new MailAddress(from);
                mail.Subject = titolo;
                mail.Body = corpo;

                client.Host = server;
                client.Send(mail);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }

Questa è la versione semplificata del codice, che invia semplicemente un email senza allegati al destinatario specificato quando si va a richiamare la funzione. Il codice viene richiamato semplicemente in questo modo

Link sponsorizzati

 sendEmail("destinatario@gmail.com", "mittente@libero.it", "Prova messaggio", "Ciao sono io!", "localhost");

I parametri sono abbastanza eloquenti, l’unico su cui bisognerebbe prestare attenzione è l’ultimo. L’ultimo parametro specifica il server SMTP da usare per mandare il messaggio.

Ora sarebbe bene poter mandare un’email a n destinatari e con n allegati.
Continua a leggere…

CodeColorer: plugin WordPress per colorare il codice

lug 14th, 2009 | Filed under Senza categoria

Ebbene si.. voglio pubblicizzare questo plugin per WordPress veramente interessante. Il primo motivo per cui lo pubblicizzo è l’utilità, insomma, per chi ha un blog come il mio è indispensabile avere un plugin per postare il codice in maniera corretta. CodeColorer si appoggia a Geshi per evidenziare la sintassi, uno dei migliori syntax highlighter in circolazione e, dopo aver provato vari plugin di questo tipo per WordPress, CodeColorer è quello che si avvicina più di tutti a quello che desideravo avere e quindi ho deciso di usarlo.

Il secondo motivo (e non meno importante) per il quale pubblicizzo questo plugin è che, avendoci a che fare tutti i giorni, ho collaborato con l’autore (Dmytro Shteflyuk) in un primo momento scovando dei piccoli errori che prontamente ha corretto, e, in un secondo momento, proponendo la traduzione in Italiano per il plugin che è stata aggiunta alla nuova versione appena pubblicata.

Link sponsorizzati

Se trovate errori nella traduzione contattatemi, provvederò a fixare gli errori e a parlare con l’autore per ripubblicare la versione corretta.

Spero vi sia utile. Alla prossima.

Piwik contatore visite alternativo a Google analytics

lug 14th, 2009 | Filed under Senza categoria

Una valida alternativa Open Source a Google analytics può essere Piwik. Ci sono molti contatori i più noti sicuramente sono Histats e shinystat, oltre al su citato analytics. Piwik però è diverso da tutti gli altri, intanto ha molte più opzioni, come si può vedere dalla demo. L’interfaccia, in Ajax, è semplice e simile a quella di analytics, però, a mio avviso, molto più intuitiva e semplice. I dati delle statistiche si possono esportare e sono visionabili in diversi formati: in tabella o sui grafici (a torta o a barre). Piwik nasce praticamente come l’evoluzione di un altro contatore Open Source molto famoso, phpmyvisites. Per funzionare ha bisogno di una versione PHP maggiore di 5.1.3, una versione MySQL uguale o superiore a 4.1 e le estenzioni PDO e PDO MySQL.

FeedCreator: classe in php per creare feed RSS

lug 13th, 2009 | Filed under PHP

Navigando per internet ho trovato una classe in PHP molto interessante. Si chiama FeedCreator permette di creare Feed RSS o Atom in maniera semplice e veloce. Questo è l’esempio riportato dentro all’archivio della classe che mostra il suo utilizzo:

<?php
include("include/feedcreator.class.php");

$rss = new UniversalFeedCreator();
$rss->useCached();
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";
$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$PHP_SELF;

$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";
$rss->image = $image;

// get your news items from somewhere, e.g. your database:
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
while ($data = mysql_fetch_object($res)) {
    $item = new FeedItem();
    $item->title = $data->title;
    $item->link = $data->url;
    $item->description = $data->short;
    $item->date = $data->newsdate;
    $item->source = "http://www.dailyphp.net";
    $item->author = "John Doe";

    $rss->addItem($item);
}

$rss->saveFeed("RSS1.0", "news/feed.xml");
?>
Tags: , ,

Conto alla rovescia in JavaScript

lug 13th, 2009 | Filed under JavaScript, Snippet

Ecco un semplice esempio di conto alla rovescia in JavaScript. Il countdown viene mostrato in giorni, ore, minuti e secondi mancanti alla data specificata. Nel codice ci sono i commenti, dove modificare il valore di iniData mettendo quello che desiderate, io ho inserito in 25 dicembre 2010.
Ecco qui il codice:

<html>
<head><title> Esempio countdown</title>
<script tpye="text/javascript">

function countdown() {
  iniData= new Date(2010,12,25,0,0,0);
  /*
    Data dell'inizio dell'evento, espressa in: anno, mese, giorno, minuti, secondi, millisecondi
  */

  oggi= new Date();
  milDif=(iniData-oggi);
  giorni=parseInt(milDif/86400000);
  milDif=milDif-(giorni*86400000);
  ore=parseInt(milDif/3600000);
  milDif=milDif-(ore*3600000);
  minuti=parseInt(milDif/60000);
  milDif=milDif-(minuti*60000);
  secondi=parseInt(milDif/1000);
  milDif=milDif-(secondi*1000);
  if (giorni < = "0" && ore <= "0" && minuti <= "0" && secondi <= "0")
    /* se è già arrivata la data scrive che siamo arrivati, altrimenti dice i giorni mancanti */
    testo='Olè siamo arrivati';
  else
    testo='Mancano ancora '+giorni+' giorni '+ore+' ore '+minuti+' min '+secondi+' sec';

    if (document.getElementById)
      document.getElementById("countdown").innerHTML=testo;
    else
      document.all.countdown.innerHTML=testo;

setTimeout("countdown()",1000)
}

</script>
</script></head>
<body onload="countdown()">
    <p id="countdown"></p>
</body>
</html>

Il tag con l’id uguale a countdown sarà quello usato per mostrare la data.

jQuery arrotondare bordi di un div

lug 13th, 2009 | Filed under jQuery

A quasi tutti i webmaster del mondo sarà capitato almeno una volta di voler arrotondare i bordi di un div. Per arrotondarli si usano i metodo più disparati. Molti si affidano alle immagini, altri usano i css. Io invece consiglio un plugin per jQuery di nome Query Corner, diciamo che non serve solo ed esclusivamente per arrotondare i bordi, in generale permette di dare uno stile diverso agli angoli di un div, gli stili tra cui si può scegliere sono veramente molti, basta dare un’occhiata al sito linkato per rendersene conto.

Oltre a quello, nel sito, ci sono altri plugin interessanti che potrebbero tornare utili.

Tags:

Plugin jQuery ajax per votazione

lug 12th, 2009 | Filed under Ajax, jQuery

Ho trovato un plugin per jQuery molto utile. E’ uno script che serve per votare degli articoli, è il cosiddetto star rating.

ajax rating

Il plugin è molto configurabile e veramente ben fatto. Lo trovate a questo indirizzo.

Tags: ,