Siti, blog e web hosting gratis Crea sito web

PHP Generatore di password casuali

22 novembre 2009 Nessun commento

In molti contesti un generatore di password casuali può essere utile, specialmente in un sistema di gestione utenti. Pensiamo di voler resettare la password di un utente su richiesta, uno script del genere potrebbe essere utile, e, ovviamente, più generico è meglio è.

Lo snippet è molto semplice, io l’ho fatto così.

<?php
function getPassword($length = 5, $caps = true, $num = true, $special = true) {
    $ncaps = "abcdefghilmnopqrstuvzxwkjy";
    $dcaps = "ABCDEFGHILMNOPQRSTUVZXWKJY";
    $dnum = "1234567890";
    $dspecial = "!£$%&/()=?^;:_,.-@#][{}";
   
    $dict = $ncaps;
    if($caps)
        $dict .= $dcaps;
    if($num)
        $dict .= $dnum;
    if($special)
        $dict .= $dspecial;
       
    $pgen = str_shuffle($dict);
   
    return substr($pgen, 0, $length);
}
?>

Il primo parametro indica la lunghezza della password, il secondo indica se si vuole usare anche i caratteri grandi, il terzo se si vogliono usare anche i numeri, e, l’ultimo, se si vogliono usare anche i caratteri speciali. Ovviamente possono essere combinati tra loro in vari modi.

Dal punto di vista pratico la password viene generata facendo una permuttazione casuale della stringa risultante (generata attraverso la concatenazione delle variabili iniziali secondo i parametri passati) attraverso la funzione str_shuffle e estrapolandone i primi n caratteri (dove n è la lunghezza specificata come primo parametro) attraverso substr.
Prosegui la lettura…

PHP Chiudere automaticamente tag aperti

21 novembre 2009 Nessun commento

Quando si ha a che fare con l’input immesso da tastiera bisogna sempre stare attenti a cosa passa l’utente di turno. Può essere utile ad esempio, chiudere automaticamente un tag lasciato aperto durante la digitazione. Pensiamo al BBCode, ormai ci sono gli editor che mettono la struttura del tag, però, accidentamente, se l’utente non chiude un tag poi ci possono essere problemi.

Da queste premesse, quindi, è utile scrivere uno script che chiuda automaticamente i tag (bbcode) lasciati aperti.

function count_t($tag, $text) {
    $count = 0;
    for($i=0;$i<=strlen($text) - strlen($tag);$i++) {
        $s = substr($text, $i, strlen($tag));
        if($s == $tag)
            $count++;
    }
     
    return $count;
}

Codice PHP:
$tag = array(
    "[b];[/b]",
    "[i];[/i]"
           /* tag_aperto;tag_chiuso */
);

$my_text = "Il testo [b]è in grassetto";

foreach($tag as $t) {
    $g = explode(";", $t);
    $diff = count_t($g[0], $my_text) - count_t($g[1], $my_text);
    if($diff >= 1) {
        for($j = 0;$j < $diff;$j++)
                $my_text .= $g[1];
    }
}

echo $my_text;

Praticamente lo script non fa altro che contare quante volte è stato aperto un tag e quante volte è stato chiuso, se la differenza è maggiore o uguale ad 1, allora almeno un tag è stato lasciato aperto, e quindi li chiude in automatico

Tag: , ,

Collaboratori?

19 novembre 2009 Nessun commento

Come tutti sono spesso abbastanza impegnato, cerco di programmare i post quando posso e quindi pubblicarli successivamente, ma, molte volte non ho proprio tempo per scrivere (molto di quello che ho postato era anche materiale che avevo sul pc e che volevo condividere). Quindi, chiunque volesse collaborare inserendo news o snippet, può postare un commento di seguito e manderò via email le info (ovviamente l’email del commento deve essere corretta).

Esplorare le immagini con Google Image Swirl

17 novembre 2009 Nessun commento

Google Image Swirl

Nei labs di Google è finita una nuova applicazione veramente interessante, Google Image Swirl. Praticamente è un motore di ricerca per le immagini ma, a differenza di Google Images, non fornisce una lista di foto relative alla keyword inserita, bensì raggruppa le foto in pile nelle quali ci sono tutte le immagini che hanno delle caratteristiche simili tra di loro. Una volta trovata la pila di foto che ci interessa basta cliccarci sopra e trovarne enne simili tra loro, in modo da facilitare la scelta.

Per info più approfondite e dettagliate vedete qui e qui. Per provare il prodotto qui.

Microsoft rilascia i sorgenti di .NET Micro Framework

17 novembre 2009 Nessun commento

Microsoft .NET

Può sembrare strano, invece no. Alla Professional Developer Conference Microsoft ha annunciato la disponibilità del .NET Micro Framework 4.0, questa versione del Framework .NET è stata pensata per essere utilizzata in quei dispositivi che hanno capacità di calcolo limitate.

Fin qui niente di strano, se non fosse che Microsoft ha annunciato di pubblicare anche i sorgenti, sotto licenza Apache 2.0. I sorgenti del .NET Micro Framework non includono il codice dello stack TCP/IP e della libreria crittografica. Questo perchè il primo è stato sviluppato da un’altra azienda esterna a Microsoft, quindi i termini della licenza vengono stabiliti da tale società. La libreria crittografica è rimasta closed perchè è utilizzata anche in altri prodotti.

Per approfondimenti visitate questo link.

Elementi speciali #4

15 novembre 2009 Nessun commento

Ecco qui un pò di link che si sono accumulati durante questa settimana.

Se non avete più spazio per contenere le vostre email o foto di Picasa, niente paura. Google vi aiuta vendendovi spazio fino a 16TB a 4096 $ all’anno.
A quanto pare sembra che Google Chrome OS sarà disponibile entro la prossima settimana… chissà se questi rumors sono fondati o meno.
Microsoft brevetta sudo? Sembrerebbe proprio che Redmond abbia partorito un brevetto che descrive il concetto di elevazione temporanea dei privilegi di un utente. sudo insomma..
A quanto pare Google ha in mente qualcosa per velocizzare il protocollo HTTP. SPDY, questo il nome, promette di migliorare la velocità di navigazione del 50%.
L’XML è ormai uno dei linguaggi fondamentali nella programmazione web e non. 7 Editor XML possono far comodo.
Sembra proprio che dentro la mela sia entrato un verme… Ok, in parole povere l’iPhone si è beccato un worm.

Picnik comodo editor di immagini online

15 novembre 2009 Nessun commento

Picnik

Picnik è un’applicazione online veramente comoda. E’ praticamente un editor di immagini online, permette di ridimensionare le immagini, ritagliarle, ruotarle, aggiungere effetti e via discorrendo. A me è tornato molto utile quando ho duvuto creare le miniature delle foto che vedete nella serie di post Elementi Speciali, con questo sito posso farlo direttamente online senza aprire programmi che succhiaro risorse per fare una cosa banale.

Oltre a poter caricare l’immagine da modificare, l’applicazione permette di importare le foto anche direttamente da siti come FaceBook, Picasa, Flickr o MySpace e poi salvare la foto modificata nel proprio computer. La maggior parte degli strumenti è disponibile gratuitamente, tuttavia, esiste una versione premium a pagamento che mette a disposizione degli effetti e delle funzionalità in più.

.NET API Windows 7: JumpList e TaskBarProgressBar

15 novembre 2009 Nessun commento

Con l’avvento di Windows 7, Microsoft ha rilasciato per tale piattaforma un API Code Pack per .NET (priva della sua uscita ovviamente). Sostanzialmente si tratta di un set di classi che permettono di gestire le nuove caratteristiche del sistema operativo attraverso i linguaggi del framework .NET.

La prima caratteristica utile è la Jump List. Al suo interno è possibile inserire link di vario genere o file recenti aperti dall’applicazione.

JumpList j;
JumpListLink[] link =  
{
    new JumpListLink(@"C:\Windows\system32\notepad.exe","Avvia NotePad"),
    new JumpListLink( @"C:\Windows\system32\mspaint.exe", "Avvia Paint")
};

j = JumpList.CreateJumpList();
j.AddUserTasks(link);
j.Refresh();

Questo è il risultato

JumpList demo
Prosegui la lettura…

jParse: plugin jQuery per il parsing dei file XML

13 novembre 2009 2 commenti

jParse è un plugin per jQuery interessante che permette di interpretare velocemente un file XML in JavaScript attraverso poche istruzioni. L’estensione è ancora in versione beta e alcune cose potrebbero non funzionare, tuttavia lo consiglio perchè è davvero semplice. Sul sito trovate la documentazione e un esempio d’utilizzo.

<html>
<head>
    <title>Demo jParse</title>
    <script type="text/javascript" src="jquery.js"></script> <!-- jquery -->
    <script type="text/javascript" src="jparse.js"></script> <!-- jparse -->
    <script type="text/javascript">
        $(function(){
            $('#content').jParse({
                ajaxOpts: {url: 'feed.xml'},
                elementTag: ['title', 'link', 'description'],
                output: '<div class="item"><h4><a href="jpet1">jpet0</a></h4><p>jpet2</p></div>',
            });
        });
    </script>
</head>
<body>
    <div id="content" style="width:500px;">

    </div>
</body>
</html>

Questo è l’esempio banale che ho scritto io. inizialmente ho provato a mettere l’indirizzo remoto del feed, ma non viene elaborato, quindi ho estrapolato il feed direttamente in locale e inserito in un file xml.

$(function(){
    $('#content').jParse({
        ajaxOpts: {url: 'feed.xml'},
        elementTag: ['title', 'link', 'description'],
        output: '<div class="item"><h4><a href="jpet1">jpet0</a></h4><p>jpet2</p></div>',
    });
});

I parametri che vedete in output del tipo jpet* sono quelli inseriti in elementTag, il dopo il nome indica quale parametro stampare (si parte da 0).
Qui potete scaricare il plugin, mentre qui l’esempio scritto da me (che si rifà semplicemente a quello del sito).

Google partorisce un nuovo linguaggio, Go

12 novembre 2009 Nessun commento
Google Go Logo

Google Go Logo

Google ha pubblicato un nuovo linguaggio di programmazione, Go. Google lo presenta come un linguaggio semplice, veloce, sicuro, divertente e open source. Il nuovo linguaggio dovrebbe unire la velocità e le performance di linguaggi come il C++ alla semplicità e la dinamicità di quelli come il Python e portare innovazione in un settore in cui, a detta dei creatori, non ci sono grossi cambiamenti da oltre 10 anni.

Sinceramente, lo ritengo soltanto uno dei tanti linguaggi, così,  su due piedi, non mi sembra abbia qualcosa di tanto innovativo da generare una migrazione di programmatori da linguaggi come .NET o Java verso questa tecnologia.

package main

import "fmt"

func main() {
  fmt.Printf("Hello, 世界\n")
}

Questo è l’esempio del classico Hello World.

Usare Eval in C#

11 novembre 2009 Nessun commento

Navigando su CodeProject ho trovato un’articolo interessante. Praticamente mostra come è possibile creare una funzione eval in C#. Normalmente funzioni di questo tipo è possibile usarle soltanto in linguaggi puramente interpretati come PHP o Python. Tuttavia con qualche trucco è possibile farlo anche in altri linguaggi, questo è infatti quello che fa l’autore.

public static object Eval(string sCSCode) {

  CSharpCodeProvider c = new CSharpCodeProvider();
  ICodeCompiler icc = c.CreateCompiler();
  CompilerParameters cp = new CompilerParameters();

  cp.ReferencedAssemblies.Add("system.dll");
  cp.ReferencedAssemblies.Add("system.xml.dll");
  cp.ReferencedAssemblies.Add("system.data.dll");
  cp.ReferencedAssemblies.Add("system.windows.forms.dll");
  cp.ReferencedAssemblies.Add("system.drawing.dll");

  cp.CompilerOptions = "/t:library";
  cp.GenerateInMemory = true;

  StringBuilder sb = new StringBuilder("");
  sb.Append("using System;\n" );
  sb.Append("using System.Xml;\n");
  sb.Append("using System.Data;\n");
  sb.Append("using System.Data.SqlClient;\n");
  sb.Append("using System.Windows.Forms;\n");
  sb.Append("using System.Drawing;\n");

  sb.Append("namespace CSCodeEvaler{ \n");
  sb.Append("public class CSCodeEvaler{ \n");
  sb.Append("public object EvalCode(){\n");
  sb.Append("return "+sCSCode+"; \n");
  sb.Append("} \n");
  sb.Append("} \n");
  sb.Append("}\n");

  CompilerResults cr = icc.CompileAssemblyFromSource(cp, sb.ToString());
  if( cr.Errors.Count > 0 ){
      MessageBox.Show("ERROR: " + cr.Errors[0].ErrorText,
         "Error evaluating cs code", MessageBoxButtons.OK,
         MessageBoxIcon.Error );
      return null;
  }

  System.Reflection.Assembly a = cr.CompiledAssembly;
  object o = a.CreateInstance("CSCodeEvaler.CSCodeEvaler");

  Type t = o.GetType();
  MethodInfo mi = t.GetMethod("EvalCode");

  object s = mi.Invoke(o, null);
  return s;

}

Praticamente è come se creasse al volo un sorgente (dove inserisce il codice) che poi va a compilare ed eseguire, infine restituisce il risultato dell’esecuzione. Potete scaricare il progetto completo da qui (dovete essere registrati a CodeProject, se non lo siete o vi registrate o lo scaricate da qui).

Tag: , , ,

Disponibile Mono Tools per Visual Studio

11 novembre 2009 Nessun commento


Novell ha sviluppato un nuovo prodotto, Mono Tools per Visual Studio, un plugin per Visual Studio, appunto, che permette di scrivere applicazioni Linux in ambiente Windows. Miguel de Icaza, responsabile del progetto Mono, fa una panoramica approfondita del prodotto sul suo blog.

L’add-in in questione non è per niente libero, come per MonoTouch l’applicativo è stato rilasciato a pagamento. E’ disponibile in tre versioni e il costo varia dai $99 della versione Professional fino ai 2,499 dollari della versione Ultimate.