
Fort de 8 ans d'expérience
dans le développement Perl, JevaScript,
HTML, anssi que de fortes connaissances en DB
Orable, MYSql, PostgreSql.

Nous analisons, développons, et trouvons des solutions pour qu'un maximum de développeurs novices en profite et puissent se faire une place dans le développement informatique.

Des sources, Prel, Php, Shell, JavaScript, ...

Des outils, Net, encodage, ...

Soutenir le refuge R.R.P.C.
Recherche:
| Source | Desc | |
|---|---|---|
PERL | #!perl;
# Déclaration de la table de hashage
my %hash={};
# Initialisation d'une variable contenant le référence de la table de hashage
my $refhash=\%hash
my $elem="a";
# Attribution d'une valeur de la table de hashage
$hash{$elem}=0;
# =
%hash->{$elem}=0;
# =
$refhash->{$elem}=0;
...
|
déclarer declarer hash table de hashage
|
PERL | #!perl;
# Déclaration de la table de hashage
my %hash={};
# Initialisation d'une variable contenant le référence de la table de hashage
my $refhash=\%hash;
# Attribution des valeurs de la table de hashage
%hash->{a}=0;
%hash->{b}=1;
%hash->{c}=2;
# nettoyer les éléments null de la table de hashage
while (($key,$value) = each %hash) {
if(!defined($value)){delete $hash{$key};}
}
...
|
nettoyer hash table de hashage
|
PERL | #!perl; use constant NOM_DE_LA_CONSTANTE => "valeur de la constante"; # Le nom de la constante doit commancer par une lettre ou par "_" # [a-zA-Z_] ... |
déclarer declarer constante
|
PERL | #!perl;
# Déclaration de la table de hashage
my %hash={};
# Initialisation d'une variable contenant le référence de la table de hashage
my $refhash=\%hash;
# Attribution des valeurs de la table de hashage
%hash->{a}=0;
%hash->{b}=1;
%hash->{c}=2;
# dérouler les éléments de la table de hashage
while (($key,$value) = each %hash) {
print "key:".$key."\tvaleur:".$value."\n";
}
# =
foreach my $key (keys %hash) {
print "key:".$key."\tvaleur:".$hash{$key}."\n";
}
# =
foreach my $key (keys %{$refhash}) {
print "key:".$key."\tvaleur:".$refhash->{$key}."\n";
}
...
|
dérouler derouler hash table de hashage
|
PERL | #!/usr/bin/perl
my $ttl=shift;
my $nomrep=shift;
while(1){
opendir(DIR, "$nomrep") || die "can't opendir $!";
@dots = grep { /^[^\.]/} readdir(DIR);
closedir DIR;
$idrand=int(rand($#dots));
$cmd="/usr/bin/wmsetbg -u -s \"$nomrep/$dots[$idrand]\"";
`$cmd`;
sleep $ttl;
}
__END__
|
Permert de changer le background (gb) de WMAKET
toute les n secondes. en gros un diaporama.
|
PHP |
<?php
if (strstr($HTTP_HOST , 'cite1.com')){
header("Location: www/cite2/"); /* Redirect browser cite1*/
}
else if (strstr($HTTP_HOST , 'cite2.org')){
header("Location: www/cite2/"); /* Redirect browser cite2*/
}
exit;
?>
|
Effectuer des redirection sur des URL ou URI.
|
PHP |
<?php
$fp = fopen('logs.logs', 'a+');
fwrite($fp, 'DATE='.date("YmdHis").';');
fwrite($fp, 'HTTP_REFERER='.$_SERVER["HTTP_REFERER"].';');
fwrite($fp, 'HTTP_HOST='.$_SERVER["HTTP_HOST"].';');
fwrite($fp, 'REMOTE_ADDR='.$_SERVER["REMOTE_ADDR"].';');
fwrite($fp, 'SERVER_NAME='.$_SERVER["SERVER_NAME"].';');
fwrite($fp, 'SCRIPT_FILENAME='.$_SERVER["SCRIPT_FILENAME"].';');
fwrite($fp, 'HTTP_USER_AGENT='.$_SERVER["HTTP_USER_AGENT"].';');
fwrite($fp, "\n");
fclose($fp);
?>
|
Comme certaine prestataire ou hebergeur
ne permette pas d'accéder librement au
fichier de log.
Ce script perl permet de se faire son
propre fichier de log
|
JS |
var elemObj=domObj;
var valObj="";
valObj=xmlDocSelect[i].childNodes[l].childNodes[0].nodeValue;
while(elemObj.nodeValue.length == 4096 && elemObj.nextSibling != null) {
elemObj = elemObj.nextSibling;
valObj += elemObj.nodeValue;
}
alert(valObj);
| FireFox split en plusieur sousNode les node
comptenant plus de 4096 caractere.
Ceci permer de tous prendre en compte. |
JS |
/*
var buf = new StringBuffer();
buf.append("hello");
buf.append("world");
alert(buf.toString());
*/
function StringBuffer(string) {
this.buffer = [];
this.buffer.push(string);
}
StringBuffer.prototype.append = function (string) {
this.buffer.push(string);
return this;
};
StringBuffer.prototype.toString = function () {
return this.buffer.join("");
};
|
Concaténer des chaines de caractères avec
un gain de temps, non négligeable. Les chaines
sont ranger dans un tableau, les valeur du
tableau sont concaténées pour retourner le
résultat.
|
BASH | ps -ef -o pcpu -o pmem -o user -o args -o pid | sed 's/^\ /0/' |\ sed 's/\%/_%/g' | sort -k 1 -r | head -20 | sed 's/_\%/%/g' #Création d'un alias alias top20cpu="ps -ef -o pcpu -o pmem -o user -o args -o pid |\ sed 's/^\ /0/' | sed 's/\%/_%/g' |\ sort -k 1 -r | head -20 | sed 's/_\%/%/g'" | Connaitre les 20 process les plus
gourmand en CPU. |
BASH | ps -ef -o pcpu -o pmem -o user -o args | sed 's/^\ /0/' |\ sed 's/\%/_%/g' | sort -k 2 -r | head -20 | sed 's/_\%/%/g' #Création d'un alias alias top20mem="ps -ef -o pcpu -o pmem -o user -o args |\ sed 's/^\ /0/' | sed 's/\%/_%/g' | sort -k 2 -r |\ head -20 | sed 's/_\%/%/g'" | Connaitre les 20 process les plus
gourmand en mémoire. |
BASH | Dans le fichier /var/spool/cron/crontabs/root #travail éffectué toutes les heures 00 06 * * * (sh /usr/local/bin/updatesys) Dans le fichier /usr/local/bin/updatesys #!/bin/sh export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin #Mise à jour des packet débian ou ubuntu apt-get update > /tmp/$$aptupdate.tmp; apt-get -y -f dist-upgrade >> /tmp/$$aptupdate.tmp; apt-get clean >> /tmp/$$aptupdate.tmp; cat /tmp/$$aptupdate.tmp | mailx -s "Cron Mise à jour apt-get" \ root@localhost; rm -rf /tmp/$$aptupdate.tmp; #Mise à jour de la base de règles de SPAMASSASSIN if [ -d `/usr/bin/sa-update`]; then /usr/bin/sa-update; fi |
Permet de mettre à jour automatiquement
un système Debian ou Ubuntu. |
BASH |
Dans un Fichier /usr/local/bin/bindreload.pl
#!/usr/bin/perl
@listdomaine=('abc.fr', 'toto.fr', 'blabla.com', 'oups.com');
foreach my $elem(@listdomaine){
system("sh /usr/local/bind/script/bindreload $elem");
}
| Permet de reloader automatiquement
bind toutes les heures. |
BASH | Dans le fichier copie.sh #!/bin/bash #ORACLE_HOME= #$DBASE_SRC la source a duppliquer #$DBASE_DST la dupplication #$REP_SCRIPT le repertoir ou ce trouve les scripts de dipplication #$REP_DB repertoir des fichiers DBF #$PRFIX_FIC_DBF prefix des fichiers de base de donnees (*.dbf) DBASE_SRC=$1 DBASE_DST=$2 REP_SCRIPT=$3 REP_DB=$4 PRFIX_FIC_DBF=$5 export DBASE_SRC export DBASE_DST export REP_SCRIPT export REP_DB export PRFIX_FIC_DBF if [ ! -d /$REP_DB ] ; then echo EX : $0 DBtoto1 DBtoto2 "/tmp/duply" "data" dbs 1>&2 echo $REP_DB: Le repertoire de base de donnees n existe pas 1>&2 exit 127 fi if [ ! -d /$REP_DB/$PRFIX_FIC_DBF$DBASE_SRC ] ; then echo EX : $0 DBtoto1 DBtoto2 "/tmp/duply" "data" dbs 1>&2 echo /$REP_DB/$PRFIX_FIC_DBF*.dbf: Le prefix n existe pas 1>&2 exit 127 fi export ORACLE_SID=$DBASE_SRC echo arret de $DBASE_SRC svrmgrl <<FIN connect internal shutdown immediate exit FIN echo arret de $DBASE_DST export ORACLE_SID=$DBASE_DST svrmgrl <<FIN connect internal shutdown abort exit FIN if [ -d /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST ] then echo destruction des fichiers de $DBASE_DST rm -r /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST fi echo copie de /$REP_DB/$PRFIX_FIC_DBF$DBASE_SRC dans /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST cp -rp /$REP_DB/$PRFIX_FIC_DBF$DBASE_SRC /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST if [ -d /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST ] then echo destruction des fichiers de controle de $DBASE_DST rm /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST/ctrl* echo renommage des fichiers en $DBASE_DST cd /$REP_DB/$PRFIX_FIC_DBF$DBASE_DST for i in `ls` do echo $i TT=`echo $i|sed -e "s/$DBASE_SRC/$DBASE_DST/"` mv $i $TT done cd $REP_SCRIPT echo ****creation de dupli$DBASE_DST.sql cat $REP_SCRIPT/duplibase.sql|sed -e "s/TEST/$DBASE_DST/g" -e "s/DBS/$PRFIX_FIC_DBF/g" -e "s/DATA/\/$REP_DB/g" >$REP_SCRIPT/dupli$DBASE_DST.sql echo ****creation de init$DBASE_DST.ora cat $ORACLE_HOME/dbs/init$DBASE_SRC.ora|sed -e "s/$DBASE_SRC/$DBASE_DST/g" > $ORACLE_HOME/dbs/init$DBASE_DST.ora echo ****creation de ouvrelog$DBASE_DST.sql cat $REP_SCRIPT/ouvrelog.sql|sed -e "s/TEST/$DBASE_DST/g" -e "s/DBS/$PRFIX_FIC_DBF/g" >$REP_SCRIPT/ouvrelog$DBASE_DST.sql echo modification de la base $DBASE_DST export ORACLE_SID=$DBASE_DST svrmgrl <<FIN @$REP_SCRIPT/dupli$DBASE_DST.sql FIN svrmgrl <<FIN @$REP_SCRIPT/ouvrelog$DBASE_DST.sql FIN svrmgrl <<FIN connect internal startup exit FIN export ORACLE_SID=$DBASE_SRC svrmgrl <<FIN connect internal startup exit FIN fi Dans le fichier duplibase.sql REM debut duplication de base orable à chaud connect internal spool dupli_TEST.lst startup nomount pfile=$ORACLE_HOME/DBS/initTEST.ora create controlfile set database TEST resetlogs logfile 'DATA/DBSTEST/log1TEST.dbf' size 1M , 'DATA/DBSTEST/log2TEST.dbf' size 1M , 'DATA/DBSTEST/log3TEST.dbf' size 1M datafile 'DATA/DBSTEST/rollsTEST.dbf', 'DATA/DBSTEST/systTEST.dbf', 'DATA/DBSTEST/tempTEST.dbf', 'DATA/DBSTEST/toolsTEST.dbf' , 'DATA/DBSTEST/concTEST.dbf' , 'DATA/DBSTEST/rolls2TEST.dbf' , 'DATA/DBSTEST/indexTEST.dbf' / shutdown immediate spool off exit REM fin duplication.sql dans un fichier ouvrelog.sql REM debut ouvrelogTEST.sql connect internal REM la ligne suivante est a adapter spool ouvrelogTEST startup nomount pfile=$ORACLE_HOME/DBS/initTEST.ora alter database mount; alter database open resetlogs; shutdown immediate exit REM fin ouvrelogTEST.sql | Permet de duppliquer une base ORACLE
sans arrété le service. |
JS |
function CopyClipBoard(txt){
if(window.clipboardData)window.clipboardData.setData("Text",txt);
else if(window.netscape){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){alert("Access Denied! Please set signed.applets.codebase_principal_support to true at page about:config!")}
var clip=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
if(!clip)return;
var trans=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if(!trans)return;
trans.addDataFlavor("text/unicode");
var str={},len={},str=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString),copytext=txt;
str.data=copytext;
trans.setTransferData("text/unicode",str,copytext.length*2);
var clipid=Components.interfaces.nsIClipboard;
if(!clip)return false;
clip.setData(trans,null,clipid.kGlobalClipboard)};
}
function PastClipBoard(){
var pastetext="";
if(window.clipboardData)pastetext=window.clipboardData.getData("Text");
else if(window.netscape){
try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){alert("Access Denied! Please set signed.applets.codebase_principal_support to true at page about:config!")}
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return false;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans) return false;
trans.addDataFlavor("text/unicode");
clip.getData(trans,clip.kGlobalClipboard);
var str = new Object(); var strLength = new Object();
trans.getTransferData("text/unicode",str,strLength);
if (str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
if (str) pastetext = str.data.substring(0,strLength.value / 2);
}
return pastetext;
}
| Utilisation du Clipboard
Copier/Coller en JavaScript. |
JS | function checkParentDisplayNone(_obj){
var valreturn=0;
try{
var parentObj=_obj.parentNode;
if(
(parentObj.nodeName.match("DIV")||
parentObj.nodeName.match("TABLE")||
parentObj.nodeName.match("TD")||
parentObj.nodeName.match("TR"))&&
(parentObj.style.display=="none")
){
valreturn = 1;
}else if(parentObj.nodeName.match(/^BODY/)){
valreturn = 2;
}
var valRet=checkParentDisplayNone(parentObj,valreturn);
if((valRet==-1)||(valRet==1)||(valRet==2)){return valRet;}
}catch(e){return -1;}
}
| Permet de chercher si un element
de saisie est visible de par l'un de
ces parent.
parametre objetDom
retour
o:erreur objet invalide
2:pas de parent caché
1:présance d'un parent caché
Description
permet de savoir si un des parent d'objet est cacher par
style="display:none"
ex:
<div style="display:none">
<table>
<tr>
/ <td>
<input type=text id=idObj>
EX: checkParentDisplayNone(document.getElementById('idObj'));
|
BASH | DULL=0
BRIGHT=1
FG_BLACK=30
FG_RED=31
FG_GREEN=32
FG_YELLOW=33
FG_BLUE=34
FG_VIOLET=35
FG_CYAN=36
FG_WHITE=37
FG_NULL=00
BG_BLACK=40
BG_RED=41
BG_GREEN=42
BG_YELLOW=43
BG_BLUE=44
BG_VIOLET=45
BG_CYAN=46
BG_WHITE=47
BG_NULL=00
exemple:
TEST_TEXTE='toto';
TEST_COULEUR_DU_TEXTE=${BG_RED};
TEST_COULEUR_DU_FONT=${FG_YELLOW};
TEST_REINITIALISATION_COULEUR=${FG_NULL}';'${BG_NULL};
echo -e '\e[0;'${TEST_COULEUR_DU_FONT}';'${TEST_COULEUR_DU_TEXTE}'m'${TEST_TEXTE}'\e['${TEST_REINITIALISATION_COULEUR}'m';
| Les codes de couleur pour le texte
dans le bash |
PERL |
#c:\perl\bin\perl.exe
use Win32::API;
use Win32::API::Callback;
Win32::API::Struct->typedef(
POINT => qw{
LONG x;
LONG y;
}
);
Win32::API->Import("gdi32", "int GetPixel(int hdc, int x, int y)");
Win32::API->Import("user32", "int GetWindowDC(int hwnd)");
Win32::API->Import('user32', 'BOOL GetCursorPos(LPPOINT lpPoint)');
my $hdc=GetWindowDC(0);
my $i=1;
while($i) {
my $pt = Win32::API::Struct->new('POINT');
GetCursorPos($pt);
print sprintf("%00000x", (GetPixel($hdc, $pt->{x}, $pt->{y})))."\r";
}
__END__
|
Retourne en temps réel le code couleur
que pointe la souris.
Ce source inclue l'utilisation de la
librairie "Win32::API".
Pour ce script il est utilisé comment
utiliser l'entité "LPPOINT lpPoint"
en perl en utilisant la librairie
Win32::API::Struct.
Pour une aide complète sur les API Windows
http://msdn.microsoft.com/en-us/library/aa383749%28VS.85%29.aspx
|
PERL | . | . |