|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() |
Salut, j'ai commence il y a peu l'ecriture d'une lib pour mon loisir personnel.
cette library contient www.h html.h rss.h xml.h cgstring.h. avant de dire ce que chaque partie permet de faire je vais vous presenter le pourquoi. j'ai commence par cgstring car j'utilise souvent le C mais quand j'ai besoin de faire des traitements sur des fichiers texts ou des chaines de caractere je suis obliger de passer a perl ou python car le C en vraiment pauvre. donc j'ai entrepris la creation de fonction telque splitstr, replacestr... puis j'ai voulu ecrire un spider donc les autres parties sont venu d'elle meme. a l'origine c'etait pour moi et moi seule que j'ecrivais ce code. Maintenant je le publi pour 2 raisons. 1/ il doit surment avoir des trucs crades dans mon code que je ne vois pas car ca marche chez moi, donc j'aimerai bien que d'autres testent, lisent le code et m'insulte quand il faut le faire. 2/ si c'est bien que je ne sois pas le seul a en profiter. non? je vous donne un exemple d'utilisation de la lib. Code :
Code :
parlons des parties. CGSTRING s'occupe essentiellement du traitement des chaines de caracteres, certaines fonction comme lenStr existe deja (strlen) d'autre pas, et d'autre avenir comme cpyStr pour copy mais ca sera legerement different de strcpy car par exemple si vous taper cpyStr(&str,NULL) ca reviendra a faire free(str). en utilisant cpyStr vous n'avez pas besoin au prealable d'allouer de la memoire mais un free() devient obligatoire car cpyStr malloquise votre pointeur. RSS, juste gentillement mettre un fichier rss dans une structure, elle est definie dans rss.h et vous avez si vous telecharger le projet un fichier qui explique tout mais en anglais. paresse de reecrire en francais. XML, encore tres incomplet ne lit pas mais fait qu'ecrire des fichiers xml de la maniere la plus simple possible, en faite tout ce dont j'avais besoin quand j'ecrivais le truc. www.h encore beaucoup de choses a faire mais pour l'instant on peut get une page web ou un fichier et enregister il y a d'autre sous fonctions qui peuvent etre interressantes. html.h la c'est le bordel d'ailleurs dans le pdf qui va avec j'ai juste donne des precisions sur tres peu de fonction car certaine on ete ecrite et modifie des 10aines de fois, il y en a meme que je ne comprend plus. mais des fonctions sont tres utilisable telque htmlstrip_tags() qui supprime toutes les balises html et le code css, js. pour l'instant ca se passe bien avec les pages web que j'ai tester, d'ailleur j'ai utiliser cette lib pour ecrire un spider(tres salement code) que je vais mettre aussi a disposition de tout le monde(apres reecriture du code) et j'ai crawler en entier fedora-fr.org et cntv.cn sans le moindre probleme. fuite memoire. pour l'instant valgrind m'a rien signale. erreur que je comprend pas. valgrind me dit qu'il y a des erreurs mais je pige rien a ce qu'il me racconte. compatibilite. code tres peu portable hors de unix/linux. d'ailleur la partie socket doit etre reecrite pour windows mais je le ferai sans doute jamais. en plus j'ai pas trouver d'equivalent pour Visualstudio pour regex.h donc j'ai abandonne l'interoprabilite. en plus j'ai pas de windows dans mes environs. me contacter: ben ici ou a l'adresse que j'ai donne chez sourceforge.
__________________
L'absence de certitude defini la confiance. Sans incertitudes la confiance na point de raison d'etre! |
||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Ingénieur développement logiciels temps réel Inscription : février 2012 Messages : 43 ![]() |
Bonjour lilington,
je me demande pourquoi tu n'utilises pas strlen, strcat, strcpy dans ton code ? Est-ce parce que tu veux les réécrire toi même ? |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
strlen,strcat,strcpy ont ete reecrit avec des effets differents(sauf strlen), par exemple l'allocation se fait dant cpystr donc pas besoin de faire un malloc ce qui imposse donc que seul un pointeur soit envoyer comme argument. les tableaux ne sont pas utilisables.
de plus les fonctions que tu cites ne sont pas dans stdio.h ni stdlib.h mais dans string.h stdlib.h est partiquement indispensable quand on programme en C. j'inclut stdio.h sans vraiment avoir besoin, c'est juste pour faire des printf pour tester. quand la lib sera stable je vais virer les printf et donc stdio.h aussi
__________________
L'absence de certitude defini la confiance. Sans incertitudes la confiance na point de raison d'etre! |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
j'avoue être perplexe..
Il est tellement plus facile de se faire un strtok qui ne détruit pas la chaîne , et d'utiliser les fonctions standard.. Je ne vois pas ce qui ne te vas pas dans les fonctions tradtitionnelles..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
00
|
|
|
#5 | ||||
|
Membre Expert
![]() |
effectivement, tu as raison, mais en faite c'est parceque tu ne vois que une reecriture de quelque chose qui existe deja.
Je vais etre plus claire. Il y a deux raison: 1/ utilisant moi meme au boulot la dite lib, je n'avais pas envis d'inclure string.h juste pour utiliser 2 fonctions. 2/ les fonctions font la meme chose de facon differente et pour ca je te montre du code: strcpy et cpySTR: Code :
c'est de ce genre de comportement que j'avais besoin personnellement. en plus d'autre fonctions non fourni comme split(), replace(), readlines(). mais le but premier de la lib c'est pas ca, c'est recuper une page web et faire le traitement de la page. voici par exemple un code qui extrait le contenu d'un commentaire sur un forum: Code :
en faite le but premier c'est ca. faire des spiders, extraire du contenu(text,image) de pages web Maintenant si vous trouve que c'est pas utilse sinon merci quand meme de l'avoir telecharge et regarde un peu
__________________
L'absence de certitude defini la confiance. Sans incertitudes la confiance na point de raison d'etre! |
||||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
Citation:
La seule cse, c'est que tu aurais pu par exemple utiliser le source-code du premier navigateur Web, Mosaic, disponible gratuitement ici ou là (explications ici ou là par exemple), qui t'aurait donné une bonne base pour un interpréteur HTML...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
10
|
|
|
#7 |
|
Membre Expert
![]() |
+1
ah mais c'est que c'est justement ce que je vais faire, j'aime apprendre et ca ne me derange pas de tout recommencer hein. d'ailleur en faisant ca seul et en relisant le code j'ai vu des absurdite donc je vais voir mosaic et certainement tout recommencer si il y a lieu. Merci ps: j'ai pas encore lu le code mais vu les date 1996 pour la derniere version... Je sais pas trop ce qui se passait sur le net en 96, j'ai commencer en 2001 a toucher internet par a coup je preferai mon qbasic a l'epoque 1996 plein de problemes a la compilation de la version 2.7 j'aurai aime voir comment ca gere les pages de notre epoque mais c'est pas grave je vais me contenter de lire le code. encore merci pour le lien ps2: bon ben sur fedora on peut avoir le binaire de la 2.7(yum) donc j'ai pu tester sur quelques site, c'est pas tres beau a voir mais l'essenciel est la, je vais plonge sur le code, parcontre les liens sur explications je suppose que ce sont pas celles du code? parcque j'ai rien trouve (tu me diras le conde est plutot claire)
__________________
L'absence de certitude defini la confiance. Sans incertitudes la confiance na point de raison d'etre! |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
Citation:
Si je te cite les sources, c'est que il y a un parser HTML (puisque c'était le but).. Je n'ai pas dt que ça couvrait tout : juste que c'était une bonne base pour voir comment était fait un parser HTML.. Maintenant, c'était HTML 1.0, voire 2.0. Mais en ce qui concerne le parsing, tu as la base de l'analyse des balises et de la structure des fonctions..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
10
|
|
|
#9 |
|
Membre Expert
![]() |
oui,oui j'ai deja commence a regarder tout ca.
__________________
L'absence de certitude defini la confiance. Sans incertitudes la confiance na point de raison d'etre! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com