mercredi 27 août 2008

[svn] création d'un dépot subversion sous debian

La création d'un dépot subversion sous debian est simple.
Ici nos dépos subversion sont dans /var/svn/ mais la méthode présenté fonctionne ailleur aussi !
Avec l'outil svnadmin nous n'avons qu'à spécifier l'action à effectuer (create) et le path du dépot comme ceci :
svnadmin create /var/svn/monProjet

Il faut ensuite attribuer les droits qui vont bien à ce nouveau dépot. Nous utilisons l'option -R pour attribuer les droits récursivement. Ici pour apache2 :
chown -R www-data:www-data /var/svn/nomProjet

Votre dépot est créé !

[Linux] Configurer svn avec LDAP

Dans notre cas nous avons un serveur svn et nous voulons que nos utilisateurs se connectent que s'ils font partie du groupe svn_users. Le groupe svn_users a l'id 1000.
Tout les utilisateurs sont dans un anuaire LDAP (avec openLDAP) dans l'ou users. Nous utiliserons Apache2 avec le module LDAP de celui ci.

Nous créons un virtualhost svn.exemple.com

<VirtualHost *>

ServerName svn.exemple.com

Nous spécifions que nous voulons utiliser svn

<Location />


DAV svn


SVNParentPath /var/svn

Nous voulons interdire tout le monde de se connecter

# Autorisation


Order deny,allow


Deny from All

Connection l'authnetification LDAP


# Authentification


AuthType Basic


AuthName "depot SVN"


AuthBasicProvider ldap



# LDAP


AuthzLDAPAuthoritative on


AuthLDAPURL ldap://localhost/ou=users,dc=exemple,dc=com?uid?sub?(objectClass=*)


AuthLDAPGroupAttribute memberUid


AuthLDAPGroupAttributeIsDN off

Nous specifions le groupe


# groupe obligatoire


require ldap-group cn=svn_users,ou=groups,dc=exemple,dc=com


require ldap-attribute gidNumber=1000


Satisfy any

</Location>
</VirtualHost>

[PowerBuilder] Lire/Ecrire dans un fichier

Ecrire dans un fichier avec PowerBuilder ressemble beaucoup à écrire dans un fichier en C (et pour cause : PowerBuilder n'est qu'une "surcouche" du C++ !).

Il faut donc tout d'abord ouvrir le fichier et stocker sont ID dans une variable :
long ll_numFile
ll_numFile = FileOpen( fichier , mode , accès, verrou, mode d'écriture,
encodage)

fichier : Fichier à éditer
Mode :
  • LineMode! : lire/écrire ligne par ligne
  • StreamMode! : Lire par bloque binaire
  • TextMode! : Lire par bloque texte
accès : Read! ou Write!
verrou :
  • LockReadWrite! : Seul moi peut accéder au fichier
  • LockRead! : Seul moi peut lire
  • LockWrite! : Seul moi peut écrire
  • Shared! : tout le monde peut écrire et lire
mode d'écriture :
  • Append! : Ecrit à la fin
  • Replace! : Remplace
encodage :
  • EncodingANSI! : ANSI
  • EncodingUTF8! : UTF8
  • EncodingUTF16LE!
  • EncodingUTF16BE!

Pour écrire dans le fichier

fileWrite( ll_numFile, "Mon texte")


Pour lire dans le fichier
fileRead(ll_numFile, variable_destination)


Il faut ensuite fermer le fichier
fileClose( ll_numFile )

mardi 26 août 2008

[Flash] Faire communiquer Flash (AS3) et PHP

En actionscript 3 la communication avec PHP ne se fait plus avec LoadVars. Il faut utiliser la classe URLLoader.

// conteneur
var conteneur:URLLoader = new URLLoader();
// Fichier à charger
var fichier:URLRequest = new URLRequest("textes/script.php");

// CallBack fin chargement
function onComplete(e:Event):void
{
// Fini
}

// CallBack pendant le chargement
function onProgress(e:Event):void
{
// chargement en cour
}

// Lier l'événement chargement
conteneur.addEventListener(ProgressEvent.PROGRESS, onProgress);
// Lier l'événement fini
conteneur.addEventListener(Event.COMPLETE, onComplete);
// Chargement du fichier
conteneur.load(fichier);

[AS3] Les tableaux

En AS3 les tableaux sont déclarés comme ceci :
var nom:Array = newArray()

Ajout d'une valeur dans le tableau :
nom.push(valeur)

On y accède comme ceci :
nom[i]

Suppression de la dernière entrée :
nom.pop()

taille du tableau :
nom.length

[AS3] Declaration de variable

En ActionScript 3 la déclaration de variable ce fait avec le mot clef var comme ceci :
var nom:type = valeur, nom2:type = valeur2, ...

Les types standards sont :
int, String, Boolean, Number, Object, uint, ...


Pour déclarer une constant on utilise le mots clef const
const NOM:type = valeur

Par convention on met le nom de la constante en majuscule.

[Batch] Envoi de mail avec SendEmail

SendEmail© est un programme d'envoi d'e-mail via SMTP. Il est utilisé pour envoyer des e-mails via la ligne de commande et peut donc être facilement utilisé dans d'autres applications ou scripts. Il est écrit en perl et est distribué conformément à la Licence GPL. Tout les champs des e-mails envoyés (tel l'expéditeur, les destinataires, le corps du message, ...) sont spécifiés comme arguments de la ligne de commande comme les paramètres généraux d'envois (serveur SMTP, login, mot de passe, ...) SendEmail© a été écrit par Brandon Zehm.

Utilisation

Forme d'utilisation : sendEmail.exe -f ADDRESS [options]
Obligatoire :
-f ADDRESS
email de l'émetteur
Standard:
-t ADDRESS [ADDR ...]
email du destinataire.
-u SUBJECT
Sujet du message
-m MESSAGE
corps du message
-s SERVER[:PORT]
serveur SMTP à utiliser, par défaut : localhost:25
Optionnel:
-a FILE [FILE ...]
fichier joint
-cc ADDRESS [ADDR ...]
copie carbone
-xu USERNAME
login SMTP
-xp PASSWORD
mot de passe SMTP

Voir mon article sur wikipedia

[Batch] Récuperer les informations d'un utilisateur eXchange à partir de son ID mail

Pour récupérer les informations d'un utilisateur eXchange à partir de son ID mail (mailNickName) on utilise l'utilitaire dsquery qui est fourni avec l'adminpak.msi de Microsoft.
Cette utilitaire permet d'interroger un annuaire active directory.

dsquery * -filter "(&(objectCategory=user) (mailNickname=USR1*))"

Dsquery fait des recherche dans l'active directory. Il y a plusieurs option qui peuvent lui être passer.

dsquery computer

recherche un ordinateur

dsquery contact

recherche un contact
dsquery group

recherche un groupe
dsquery ou

recherche une unité d'organisation
dsquery site

recherche un site
dsquery server

recherche un serveur
dsquery user

recherche un utilisateur
dsquery quota

recherche un quota
dsquery partition

recherche une partition
dsquery *

recherche n'importe qu'elle type.

[Batch]Vérifier qu'un processus est lancé

Pour vérifier en Batch qu'un processus est lancé il faut utiliser la commande tasklist (qui liste tout les processus lancés et la commande find pour rechercher dans cette liste le processus voulu.
Find peut prendre, entre autre, les options /C : Affiche seulement le nombre de lignes contenant la chaîne et /I : Ignore la casse lors de la recherche de la chaîne.
Si aucun processus n'est trouvé la commande retournera une erreur de niveau 1.

Ainsi :

tasklist find "processus" /C /i > nul
if NOT ERRORLEVEL 1 goto est_lancer

[Batch] Attendre x seconde

Il n'y a pas de fonction Batch qui permet d'attendre un nombre x de seconde, il faut donc utiliser une astuce à l'aide de la commande Ping.

En effet la commande Ping permet de spécifier le nombre de requête que on veut exécuter (-n) et le temps d'attente pour chaque réponse (-w) en milliseconde.

Ainsi pour attendre une minute il faut :
Ping -n 61 127.0.0.1 -w 1000 >nul
Par défaut Ping prend 1 seconde pour l'attente.