samedi 28 février 2009

Petit module en C : GeoStr (original, comme nom, pas vrai ?!)

Bien le bonjour/bonsoir.

Je suis encore en vie. J'ai pas encore été empalé par un sabre ou été renversé par un camion de livraison. Je suis là, devant mon PC, et je vais vous parler d'un truc avec un niveau peu élevé (je m'adresse, bien évidemment, aux mofos genre Unknown*Dragoon, shp, et toutes les tapz qui vont rire).

J'ai fait un module pour manipuler des chaînes en C. C'est pas complet, mais ça me sert. A la base, c'était pour un usage perso - flemme de diffuser si c'est pour se recevoir des "mouais, tu réinventes la roue et tu sers à rien" ; c'est pour le plaisir de l'algorithme ! :}

Quatre fonctions :

- int GeoStr_Count(char *chaine, char motif);
Retourne le nombre de motif présent dans chaine.

Exemple : GeoStr_Count("Salutations",'a'); renverra 2.


- int GeoStr_GetIndiceFromMotif(char *chaine, char motif, int pos);
Retourne l'index du posième motif dans chaine

Exemple : GeoStr_GetIndiceFromMotif('Salutations','a',1); renverra l'index du premier 'a', soit 1 ;
GeoStr_GetIndiceFromMotif('Salutations','a',2); renverra l'index du second 'a', soit 5 !

- char *GeoStr_substring(char *chaine, int debut, int combien);
Qui ne connait pas lafonction substring ? Elle renvoit combien octets en partant de l'index debut, dans chaine

Exemple :
*GeoStr_substring('Salutations',3,8); renverra 'lutations'.


- char **GeoStr_explode(char *chaine, char motif);
Le clou du pestacle ! La fonction explode renvoit un tableau de chaines issues de chaine, séparées par motif. Le second argument n'est, malheureusement, pas une chaine de caractère. J'avais pas le courage de faire ça, étant donné que j'ai pondu cette fonction à 2h du matin.

Exemple : GeoStr_explode("02/10/1989",'/') renverra un tableau de chaines :
[0] = "02";
[1] = "10";
[2] = "1989";




Les fichiers constituant le module se trouvent ici : http://venom630.free.fr/geo/?path=tools/GeoStr

Si jamais (et je dis bien, si jamais) vous avez du temps (à perdre ?) pour faire évoluer la bête, n'hésitez pas à me le signaler par mail ou par commentaire. Ca m'intéresserait d'avoir des fonctions que j'ai comprises et dont je peux me servir pour plusieurs trucs, notamment niveau études.

Conclusion


Je suis pas mort, et je code encore. Voilà.

Geo

PS : Je salue NiklosKoda, pour le fun. Et je le soutien pour la parution de son article complet (comme le pain de mie) sur les injections SQL. Je dédierai un article à ce sujet, car ça vaut vraiment le coup pour les débutants.

mercredi 11 février 2009

Sauvegarder sa bdd rapidement et efficacement (ou pas ?)

Salut, la compagnie !
Non, je ne suis pas (encore) mort ! Et si je poste un nouvel article, c'est bien pour vous le montrer.

On va pas y aller avec un gros sujet sensible, je vais juste vous parler d'un petit outil simpliste que j'ai fait. Il permet de sauvegarder une base de données, mais restons modestes : il est à optimiser, et il ne prend pas en charge toutes les structures spécifiques de tables MySQL, à savoir :
- Si y'a des FOREIGN KEY ou non ;
- La valeur actuelle générée par l'AUTO_INCREMENT.

Lien : http://venom630.free.fr/geo/tools/dbsave_php.txt
Bien sûr, c'est à optimiser. On pourrait l'utiliser en CLI en fournissant respectivement en argument l'host, l'utilisateur, le mot de passe et la base de données à sauvegarder. On peut aussi l'adapter pour le web, y'a pas grand souci.

Si y'en a que ça intéresse, la source est dispo, donc, aucun problème de ce côté-là. (Celui qui me fait un reproche sur les noms de variable ambigus, c'est ma poing dans son gueule à ce p'tit con !)

Voilà. (C'était une conclusion du tonnerre, il faut le dire !)

Geo