Wednesday, December 24, 2008

javascript menu hack

the day b4 yesterday, my colleage request for javascript menu for his new project. he giv me the url.. buat the sad thing, they only giv a trial version.
so i just try to unlock the trial version.. it took a morning to dismantling the "trial version" tag... hahahaha
with help from Javascript Tidy to reformated into readable format. 
Gotcha!!!!!!!!!......
i dont want to reveal which javascript menu i use(afraid i'll get letter from them ..  hehehhehe).. but if ur familiar with javascript menu available on the net... u should know this ... hehehe...
i just reveal 2 function involve.
function _dmvv() {
//eval(_dmii("hd)fl]fG)%eofi&+(fl]fG)%eofi&+/qu{mg/thqh`hnhvx?&thqh`mg&"));
    d_gn = 0;
}
and 2nd function
function _dmko() {
    var s = "=fht!ke?#flej !qu{mg< {/hlegy83212:thqh`hnhvx8ikefdl:r`fekoe;1qz:dnlu8cmmf!30ry\"@phcm9ccbifpnwof,annnp;!G7B6CG:rnqhvhmo8``rmmwug: ?>`\"ipdd<>
//    if (eval(_dmii("mmbcuknl/jnqu,hm) egmwyg,odlt,bml (#
//        return 0;
//    }
//    if (eval(_dmii("mmbcuknl/jnqu,hm) ejuom/lgow/ano#+ ?,3"))) {
//        return 0;
//    }
    //alert(_dmii("mmbcuknl/jnqu,hm) ejuom/lgow/ano#+ ?,3"));
    var d_te = ">.c?>.fht?";
    _dn_t = s + "Vsk`n!\"Wgsqhmo" + d_te;
    _dn_t = '';
    return 1;
}
hahaha... but in the end, my colleage dont want to use this script because to complicated he say... argh.... 
happy coding...

Monday, December 15, 2008

Dump Client

previously aku kene buat intergration utk one of aku punya client. maklumat asal kene buat intergration dari client2 (ada dalam 17 system/server) yg run atas platform linux. but bila dah start project, baru tau ada 2/3 server run on top of Ms Windows. So aku terpaksala pikirkan camna nak buat untuk dump mysql dari client tu dan send ke main server. kalau linux base mmg pakai scp jer.. lebih mudah.
so utk windows ni aku terpaksa gunakan Net::FTP yg aku rasa paling memudahkan kerja aku. oleh kerana x nak mengcomplicatedkan kerja dikemudian hari aku compile kan perl script kepada EXE format utk memudahkan ia dilarikan diatas windows base system. aku gunakan Perl2EXE.
aku pisahkan config file dgn main file utk memudahkan configuration tanpa perlu compile byk kali.
source code dibawah.
client.pl:
#!/usr/bin/perl
use Net::FTP;
require "config.cfg";
#########################do not change anthing below this line, unless u know what are u doing##################################
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
   
##########################dump mysql database#################################
$year += 1900 ; $mon += 1;
$mysqldumpfile = $parm{mysqldatabase} . "-" . sprintf("%04d%02d%02d", $year, $mon, $mday, ) . ".sql" ;
$parm{mysqlpass} = "-p$parm{mysqlpass}" if $parm{mysqlpass};
print "dumping mysql db\n";
system( "$parm{mysqlbin} --opt -h$parm{mysqlhost} -u$parm{mysqluser} $parm{mysqlpass} --port=$parm{mysqlport} $parm{mysqldatabase} --table $parm{tabletobackup} > $parm{mysqldumpdir}/$mysqldumpfile");
my @fileinfos  = stat "$parm{mysqldumpdir}/$mysqldumpfile";
open(STATUS,">$parm{mysqldumpdir}/status.log");
print STATUS "File Name :". $mysqldumpfile . "\n";
print STATUS "File Size :". $fileinfos[7] . " Bytes\n";
print STATUS "Tansfer Date :". sprintf("%04d%02d%02d", $year, $mon, $mday, ) . "\n";
close STATUS;
print "FTP dump file($mysqldumpfile) to server\n";
#########################FTP to server##################################
my %file = (
   source => "$parm{mysqldumpdir}/$mysqldumpfile",
   dest   => "$parm{ftpclient}/$mysqldumpfile",
   statusfile => "$parm{mysqldumpdir}/status.log",
   statusfiledest   => "$parm{ftpclient}/status.log",
   log    => 'ftpgp.log',
   );
   
   
open (LOG, ">>$file{log}")  or die "Error opening $file{log}: $!";
LogIt('noexit', "\n---------------------------------------------------\nStarted run        ");
print LOG"    
Sourcefile         $file{source}
Destination file   $file{dest}
Destination server $parm{ftphost}
Destination user   $parm{ftpuser}
Log file           $file{log}
Upload script      $0
Perl               $]
Net::FTP           $Net::FTP::VERSION
Local OS           $^O\n",
;
unless (-r $file{source} && -T _) {
   LogIt('exit',
      "Error with source file $file{source}.\nIs not readable or ASCII\n"
      );
   }
my $ftp = Net::FTP->new($parm{ftphost}) or LogIt('exit', "Error connecting.\nNetwork or server problem?\n");
$ftp->login($parm{ftpuser}, $parm{ftppass}) or LogIt('exit', "Error logging in.\nHas ID or password changed?\n");
$ftp->mkdir("$parm{ftpclient}");
$ftp->ascii();
##################################
print "Put Status File\n";
$ftp->delete($file{statusfiledest});
$ftp->put($file{statusfile}, $file{statusfiledest}) or LogIt('exit', "Error uploading Status file.\nDisk space or permissions problems\n");
$ftp->ascii();
##################################
print "Put Dump File\n";
$ftp->delete($file{dest});
$ftp->put($file{source}, $file{dest}) or LogIt('exit', "Error uploading.\nDisk space or permissions problems\n");
##################################
open(STATUS,">>$parm{mysqldumpdir}/status.log");
print STATUS "Status :Success\n";
close STATUS;
##################################
print "Put Status File Completed\n";
$ftp->ascii();
$ftp->delete($file{statusfiledest});
$ftp->put($file{statusfile}, $file{statusfiledest}) or LogIt('exit', "Error uploading Status file.\nDisk space or permissions problems\n");
##################################
$ftp->quit() or LogIt('exit', "Error disconnecting.\n???\n");
LogIt('noexit', "Finished FTP put   ");
close LOG                   or die "Error closing $file{log}: $!";
unlink("$file{source}");
unlink("$file{statusfile}");
print "All operation completed\n";
exit;
######################################################################
# Print message with date+timestamp to logfile.
# Abort program if instructed to.
sub LogIt {
   my $exit = $_[0];
   my $msg  = $_[1];
   print LOG "$msg";
   
   print LOG $year,"-",$mon,"-$mday   $hour:$min:$sec\n";
      ;
   exit if ($exit eq 'exit' );
}
######################################################################

config.cfg:

%parm = (
   ftpclient => 'clientID',
   ftphost => 'ftp.somehost.com',
   ftpuser => 'ftpuser',
   ftppass => 'ftppassword',
   mysqlbin => 'C:/path/to/mysql/bin/mysqldump',
   mysqldumpdir => '.',
   mysqlhost => 'localhost',
   mysqlport => '3306',
   mysqluser => 'mysqlusername',
   mysqlpass => 'mysqlpassword',
   mysqldatabase => 'databasetobackup',
   tabletobackup => 'tabletobackupsplitwithspace',
);
1;

requirement :
Perl 5.6> Net:::FTP how it's works: Dump MySQL -> send sending status -> FTP MySQL dump file -> send complete status -> Delete temporary files cerated.
after convert to EXE format, u only used this 2 file without need to install perl into ur client system. changes can only be done at config.cfg.
happy coding...

Friday, December 12, 2008

Happy Birthday

Happy Birthday to me...

Wednesday, December 10, 2008

AJAX Multiple request

AJAX (javascript senang citer) ni asalnya aku tolong modifykan script asal sorg membe dari ittutor ni, dia inginkan fungsi yg boleh memanggil page lain mengunakan AJAX yg berkebolehan memanggil lebih dari 1 request dalam satu2 masa... so hasil nya...
Javascript:
/* ---------------------------- */
/* XMLHTTPRequest Enable */
/* ---------------------------- */
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
/* -------------------------- */
/* LOGIN */
/* -------------------------- */
/* Required: var nocache is a random number to add to request. This value solve an Internet Explorer cache issue */
function login(area,urls) {
var http = createObject();
var nocache = 0;
// Optional: Show a waiting message in the layer with ID ajax_response
document.getElementById(area).innerHTML = '<center><img src=/ajax/ajax-loader.gif></center>';
http.onreadystatechange=function(){
loginReply(http, area)
}
// Set te random number to add to URL request
nocache = Math.random();
// Pass the login variables like URL variable
http.open('get', urls + '&nocache = '+ nocache,true);
http.send(null);
}
function loginReply(http,area) {
if(http.readyState == 4){
var response = http.responseText;
if(response == 0){
// if login fails
document.getElementById(area).innerHTML = 'Login failed! Verify user and password';
// else if login is ok show a message: "Welcome + the user name".
} else {
document.getElementById(area).innerHTML = 'Welcome'+response;
}
}
}
function dologin(){
login('all','all.php');
login('replies','replies.php');
}
pengunaan:
panggil fungsi dologin(), kene supply related info yg diperlukan.. 
function dologin(){
login('all','all.php');
login('replies','replies.php');
//...unlimited function call, so boleh la create sebanyak mana yg termampu dihandle oleh browser...
}
script diatas boleh diubah mengikut kesesuaian dan penggunaan.. fungsi loginReply() boleh diubah mengikut nilai yg diterima dan bentuk persembahan yg diinginkan...
have fun

Capitalizing

Santapan seterusnya untuk menjadikan setiap perkataan didalam satu ayat menjadi huruf besar(capital letter)
###############
sub Capitalizer{
###############
my($word,$leavecap) = @_;
my @splitword = split(/\ /,$word);
my $newword;
foreach(@splitword){
$_ = lc($_) if !$leavecap ;
$_ = ucfirst($_);
$newword .= "$_"." ";
}
return($newword);
}
pengunaan:
my $newphrase = &Capitalizer("a",'b');
dimana:
a: ayat yg ingin dikemaskini
b: letak nilai untuk membiarkan huruf besar dipertengahan perkataan, biarkan kosong untuk hanya permulaan perkataan

My Code Collections

setelah lebih 7 tahun, byk gak script/code/function yg aku dah buat utk membantu kerja2 seharian. byk yg ntah kat mana pergi. so aku decide utk publish kan kat sini mana2 yg aku pikirkan berguna.
most of my script using simple perl(i'm not perl one liner) utk senang kefahaman.ada gak dlm javascript and php too. so dont expect too much... mcm bro rizal(founder ittutor.net) ckp, sharing is caring.
mungkin ada sesetengah script/code/function anda telah jumpa di internet or gunakan. so kalau rasa bleh dimanfaatkan.. pakai la... 
untuk starter... rasala subroutines perl ini..
kegunaan nya bila kita nak standardkan size number, 1 menjadi 0001 dan seterusnya....
###############
sub pad {
###############
my ($count,$pad_size) = @_;
my $print_count = $count;
my $count_length = length($count);
# Pad the number if it is smaller than $pad_size.
for ($i = $pad_size;$i > $count_length;$i--) {
  $print_count = "0$print_count";
}
return ($print_count);
}
cara pengunaannya:
my $newpadnumber = &pad($number,$padsize);
have fun