Archive

Archive for July, 2011

urldecode() e url encode() in javascript



function urlDecode(str){
    str=str.replace(new RegExp('\\+','g'),' ');
    return unescape(str);
}
function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}

Categories: JavaScript

explode() in javascript




function explode (delimiter, string, limit) {

    var emptyArray = {0: ''};

    // third argument is not required
    if ( arguments.length < 2 ||
        typeof arguments[0] == 'undefined' ||
        typeof arguments[1] == 'undefined' ) {
        return null;
    }

    if ( delimiter === '' ||
        delimiter === false ||
        delimiter === null ) {
        return false;
    }

    if ( typeof delimiter == 'function' ||
        typeof delimiter == 'object' ||
        typeof string == 'function' ||
        typeof string == 'object' ) {
        return emptyArray;
    }

    if ( delimiter === true ) {
        delimiter = '1';
    }

    if (!limit) {
        return string.toString().split(delimiter.toString());
    } else {
        // support for limit argument
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
}

Categories: JavaScript

implode() in javascript





function implode (glue, pieces) {

    var i = '', retVal='', tGlue='';
    if (arguments.length === 1) {
        pieces = glue;
        glue = '';
    }
    if (typeof(pieces) === 'object') {
        if (pieces instanceof Array) {
            return pieces.join(glue);
        }
        else {
            for (i in pieces) {
                retVal += tGlue + pieces[i];
                tGlue = glue;
            }
            return retVal;
        }
    }
    else {
        return pieces;
    }
}
Categories: JavaScript

Conversione data in formato MySql


Formatta una data nel formato di MySql partendo da una stringa
Il formato della data deve essere una delle seguenti con opzionale l’ora:
dd/mm/yyyy hh:mm:ss
dd/mm/yy hh:mm:ss
d/mm/yy hh:mm:ss

 

 

function getMySqlFormattedDateString($data, $separatoreInput = "/", $separatoreOutput = "-") {
    //Verifica che la data non sia già in formato mysql
    //e quindi con le prime 4 cifre come anno tra il 2000 ed il 2100

    if(strpos($data, $separatoreInput) === false) {
        return null;
    }

    $tmp = substr($data, 0, 4);
    if($tmp >= 2000 && $tmp <= 2100) {
        return $data;
    }

    //Prima si verifica che siano presenti almeno gli slashes
    $pos_slashes = strpos($data, $separatoreInput);
    if($pos_slashes === false) {
        return "";
    }



    //Divisione della data dall'ora
    $arrDataOra = explode(" ", $data);

    //Determinazione del giorno, mese, anno
    $arrData = explode($separatoreInput, $arrDataOra[0]);

    //Se non ci sono 3 valori almeno si restituisce ""
    if(count($arrData) != 3) {
        return "";
    }

    $giorno = str_pad($arrData[0], 2, "0", STR_PAD_LEFT);
    if(preg_match("/[\D]/",$giorno)) return "";
    $mese = str_pad($arrData[1], 2, "0", STR_PAD_LEFT);
    if(preg_match("/[\D]/",$mese)) return "";
    $anno = str_pad($arrData[2], 2, "0", STR_PAD_LEFT);
    if(preg_match("/[\D]/",$anno)) return "";

    //Restituisco l'ora se presente
    if(!is_array($arrDataOra)) {
        return $anno.$separatoreOutput.$mese.$separatoreOutput.$giorno." ".$arrDataOra[1];
    }
    else {
        return $anno.$separatoreOutput.$mese.$separatoreOutput.$giorno;
    }

}
Categories: Functions, MySQL, PHP

base64 e javascript


Ecco una serie di funzioni che vi permetteranno di padroneggiare i dati in base64 da javascript



var END_OF_INPUT = -1;

var base64Chars = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);

var reverseBase64Chars = new Array();
for (var i=0; i = base64Str.length) return END_OF_INPUT;
    var c = base64Str.charCodeAt(base64Count) & 0xff;
    base64Count++;
    return c;
}
function encodeBase64(str){
    setBase64Str(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
        inBuffer[1] = readBase64();
        inBuffer[2] = readBase64();
        result += (base64Chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != END_OF_INPUT){
            result += (base64Chars [(( inBuffer[0] <> 4) ]);
            if (inBuffer[2] != END_OF_INPUT){
                result += (base64Chars [((inBuffer[1] <> 6) ]);
                result += (base64Chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64Chars [(( inBuffer[0] <= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}
function readReverseBase64(){
    if (!base64Str) return END_OF_INPUT;
    while (true){
        if (base64Count >= base64Str.length) return END_OF_INPUT;
        var nextCharacter = base64Str.charAt(base64Count);
        base64Count++;
        if (reverseBase64Chars[nextCharacter]){
            return reverseBase64Chars[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    }
    return END_OF_INPUT;
}

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}

function decodeBase64(str){
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] <> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] <> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}

Categories: JavaScript

Cambiare l’engine di una o più tabelle di MySql

13 July 2011 2 comments

Qualora si volesse cambiare l’engine di una o più tabelle di un database MySql

o si fa a mano oppure potete utilizzare questo script 🙂




echo "\n\n";
set_time_limit(1000);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;


//Connection variables :
$h = 'localhost';
$u = @$argv[1];
$p = @$argv[2];
$database = @$argv[3];
$engine = @$argv[4];
$table = @$argv[5]; //Facoltativo

if(empty($u)) die("\nSpecificare l'username come parametro 1\n");
if(empty($p)) die("\nSpecificare la password come parametro 2\n");
if(empty($database)) die("\nSpecificare il database come parametro 3\n");
if(empty($database)) die("\nSpecificare il database come parametro 4\n");
if(empty($engine)) die("\nSpecificare il tipo di engine da impostare sulle tabelle come parametro 4\n");



/* The php->mysql API needs to connect to a database even when executing scripts like this.
  If you got an error from this(permissions),
  just replace this with the name of your database */

$db_link = mysqli_connect($h, $u, $p, "information_schema");


$sql = "SELECT * FROM `TABLES`
        WHERE TABLE_SCHEMA = '".addslashes($database)."'
        AND `ENGINE`  '".addslashes($engine)."' ";
if(!empty($table)) {
    $sql .= " AND `TABLE_NAME` = '".addslshes($table)."' ";
}


$rs = mysqli_query($db_link, $sql);

echo "Modifica engine a ".mysqli_num_rows($rs)." tabelle\n";

$sql_to_execute = array();
while($row = mysqli_fetch_object($rs))
{
    $sql_to_execute[] = "alter table `".$row->TABLE_SCHEMA."`.`".$row->TABLE_NAME."` engine = ".$engine.";";
}

foreach($sql_to_execute as $sql)
{
    echo "$sql\n";
    mysqli_query($db_link, $sql);
}

mysqli_close($db_link);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Parsed in ' . $total_time . ' secs' . "\n\n";


Questa funzione è molto semplice e semplicemente può essere lanciata dal seguente comando su una shell, tenete presente che i parametri possono essere

1 = username
2 = password
3 = database
4 = nuovo engine
5 = nome di una singola tabella da modificare

Volutamente non è stato inserito l’host in quanto si presuppone che operazioni così delicate vengano fatte da localhost. Diversamente basterà modificare
l’impostazione nello script.

Es comando:

[root@principe home]# php mysql_change_engine_tables.php "username_test" "password_test" "database_test" "InnoDB"

Categories: Bash scripting, MySQL, PHP

Ottimizzare le tabelle di MySql


Molti spesso necessitano di ottimizzare le tabelle di MySql,
attenzione a non farlo con le InnoDB in quanto non avreste nessun risultato 🙂

Questa funzione è molto semplice e semplicemente può essere lanciata dal seguente comando su una shell: [root@principe home]# php mysql_optimize_tables.php "database_test" "username_test" "password_test"



set_time_limit(100);

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;


//Connection variables :
$h = 'localhost';
$u = 'xxx';
$p = 'xxxx';

if(!empty($argv[2])) {
    $u = $argv[2];
    echo "Param 2: $u\n";
}
if(!empty($argv[3])) {
    $p = $argv[3];
    echo "Param 3: $p\n";
}
if(!empty($argv[1])) {
    $database = @$argv[1];
    echo "Param 1: $database\n";
}


$dummy_db = 'mysql';

/* The php->mysql API needs to connect to a database even when executing scripts like this.
  If you got an error from this(permissions),
  just replace this with the name of your database */

$db_link = mysql_connect($h, $u, $p);


$sql = 'SHOW DATABASES';
if(!empty($database)) {
	$sql .= " WHERE `Database` = '".addslashes($database)."' ";
}

$res = mysql_db_query($dummy_db, $sql, $db_link) or die('Could not connect: ' . mysql_error());
echo 'Found ' . mysql_num_rows($res) . ' databases' . "\n";
$dbs = array();
while ($rec = mysql_fetch_array($res)) {
    $dbs [] = $rec [0];
}

foreach ($dbs as $db_name) {
    echo "Database : $db_name \n\n";
    $res = mysql_db_query($dummy_db, "SHOW TABLE STATUS FROM `" . $db_name . "`", $db_link) or die('Query : ' . mysql_error());
    $to_optimize = array();
    while ($rec = mysql_fetch_array($res)) {
        if ($rec['Data_free'] > 0) {
            $to_optimize [] = $rec['Name'];
            echo $rec['Name'] . ' needs optimization' . "\n";
        }
    }
 
    echo "To optimize: ".count($to_optimize)." tables\n";
    if (count($to_optimize) > 0) {
        foreach ($to_optimize as $tbl) {
            mysql_db_query($db_name, "OPTIMIZE TABLE `" . $tbl . "`", $db_link);
        }
    }
}

$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 6);
echo 'Parsed in ' . $total_time . ' secs' . "\n\n";

Categories: Bash scripting, MySQL
%d bloggers like this: