Defis du second trimestre 2013!
shadwolf8-May-2013/16:30:57+2:00
Attention comme c est un defis par trimestre on va corcer un peu les choses et joindre l util a l agreable!


On est parti d un rebol keep it simple pour tous, pour en arriver a un rebol prise de choux qui est surtout destiner aux programmeurs C, desireux de se compliquer la vie en ameliorant un langage de script pas adapte du tout a la programmation en C... Dire qu on c est perdu en chemin est un doux euphemisme.

Bref moi je prefere m interresser aux finesses de rebol si vous le permettez.

Apres cette diatribe d introduction entrons dans le vif du sujet de notre defis:

Ecrire un article a plusieurs permettant a tout un chacun de devenir un Dieu du parse.

La communaute rebol manque d un article de fond sur parse ce qui permetrais a tout un chacun d en saisir la quintecense.



Voici comment on va proceder:

Les participants viendront avec un sujet de leur choix autour de parse avec un mini exemple pour la resolution de ce sujet.
Mais ca peut etre aussi une question au sujet de parse en ce cas quand les gens repondrons ils reprendrons en tete de leur reponse l´auteur de la question ainsi que la question, afin de facilite la lecture.

Mais qu est ce qu on gagne! Heu je dirai rien a part la joie et le plaisir de faire un peu de rebol dans ce monde de brute C, C++, java.. Mais ce ne serait pas tout a fait vrai.

Le contenu de ce defis sera repris synthetise (en gardant les auteurs de chacunes des parties) dans un article global sur le wiki fr enfin une version traduite sera mise a disposition sur le wiki officiel de rebol (ca va etre compliquer ...).
Il n y a pas de date butoire mais disons qu en septembre juillet 2013 je publierais ce qu on a fait si le sujet est encore actif apres cette date evidement l article suivra l evolution.

A vos clavier !
shadwolf8-May-2013/16:33:23+2:00
Il n y a pas de date butoire mais disons qu en septembre juillet 2013 je publierais ce qu on a fait si le sujet est encore actif apres cette date evidement l article suivra l evolution.

>>
Il n y a pas de date butoire mais disons qu en juillet 2013 je publierais ce qu on a fait si le sujet est encore actif apres cette date evidement l article suivra l evolution.
PierreCh11-May-2013/20:19:28+2:00
Pour le coup, je serai attentif, à défaut d'être productif: parse m'a toujours fasciné, mais je n'ai jamais réussi à franchir le pas pour autre chose que du parseage "bêta". Ou les rares fois où je m'y suis risqué, ça avait merdoyé, et j'avais peu insisté, trouvant une solution plus immédiate.
yos15-May-2013/15:53:06+2:00
Salut,

C'est vrai que cet hiver je me suis bien amusé avec parse
(les chiffres romain, l'aventure romaine et dernièrement la conversion des expressions mathématiques en code rebol le pied total !!)

Comme tu le dis Rebol est tout en finesse et il n'y a que cela qui m'interesse c'est ce que j'ai partagé plus haut.

Ensuite en étudiant un peu ces codes donnés en exemple on comprends ou pas la finesse de Rebol dont parse fait partie.

Have fun !

Yos
shadwolf15-May-2013/19:48:57+2:00
Voici ma premiere question:

Comment savoir si parse travail sur les donnees en memoire (pointeurs) ou si on travail sur une copie des donnees.

C est une definesse que steeve avait implementer dans le moteur de area-tc pour que celuici puisse travailler rapidement sur le parsing de text sans que ca mange de la memoire de facon hallucinante.

Ce que je faisait au debut:
- chargement des donnees depuis le ficher texte dans un tampon memoire
- copi dans un second tampon des lignes a affichees a l ecran. Ce qui fair que des qu on changeait de contenu de ce qui etait afficher a l ecran on devait modifier les donnees du premier tampon, puis, modifier les donnees du block de dessin avec draw.

Ce que steeve a fait:
-Chargement des donnees dans un tampon
-creation de pointeur permettant d isoler des morceau du tampon. de sorte que quand une modification etait faite ca influencait directement sur le contenu du tampon sans qu on ait a recopier le tampon.

Ce principe je ne l ai jamais vraiment compris. Il me semble interressant de pouvoir en discuter pour arriver a en extraire un exemple de base.
shadwolf15-May-2013/20:01:46+2:00
pour le code source dont je parle (Area-tc) c est ici:
http://trac.assembla.com/shadwolforge/browser/area-tc-03.r

les fonctions qui contiennent les morceaux interressant de parse sont ligne 150   set 'colorize func [

et ligne 227   set 'build-data func [

La seconde fonction est comme le commentaire le dit celle qui prend le block de donner de la face (f/data) et le decoupe en sous unite de ligne puis elle appelle la fonction colorize qui construit le block d instruction draw qui colorize le texte pour pouvoir l affiche a l ecran.

Est il encore possible d obtimiser ces functions?
shadwolf15-May-2013/20:12:10+2:00
question de dyonisos dans cet autre topic:
http://www.digicamsoft.com/cgi-bin/rebelBB.cgi?thread=%3C14May2013202427401473200%3E
yos16-May-2013/12:47:12+2:00
un lien direct sur le source sans le html please ?
j'ai envie de regarder de plus près ce composant area-tc pour voir comment le recoder dans mon framework

Merci

yos
DideC16-May-2013/14:05:32+2:00
Il y a un lien en bas de la page : http://trac.assembla.com/shadwolforge/export/106/area-tc-03.r
dionysos17-May-2013/0:04:23+2:00
Y a tellement d'aspect, ca va être intéressant. Quel est l'objectif, à quel niveau faut il placer la barre? Tuto débutant ou notions avancées. Ou on met tout en vrac ici et bon courage pour celui qui aura à trier et faire l'article final.
yos17-May-2013/8:50:11+2:00
Salut,

Il ne faut pas oublier que parse peut simplement découper
des chaines si on lui dit qu'il n'y a pas de règles :


>> parse "  123 4567 00 1 367" none
== ["123" "4567" "00" "1" "367"]



yos
coccinelle17-May-2013/15:09:48+2:00
Je ne comprends pas bien ta question.
Ce que je faisait au debut:
- chargement des donnees depuis le ficher texte dans un tampon memoire
- copi dans un second tampon des lignes a affichees a l ecran. Ce qui fair que des qu on changeait de contenu de ce qui etait afficher a l ecran on devait modifier les donnees du premier tampon, puis, modifier les donnees du block de dessin avec draw.

Ce que steeve a fait:
-Chargement des donnees dans un tampon
-creation de pointeur permettant d isoler des morceau du tampon. de sorte que quand une modification etait faite ca influencait directement sur le contenu du tampon sans qu on ait a recopier le tampon.


Est-ce un problème de parse ou est-ce un problème d'emploi des séries parcequ'il ne me semble pas que parse joue avec les séries différemment des autres fonctions.
shadwolf24-May-2013/14:53:04+2:00
Dyonisos c est ouvert ... l idee c est que chacun vienne avec une partie de sa verite sur parse la montre aux autres et que les autres lui disent ce qu ils en pense. Y apportent leurs commentaires et que tout ca debouche sur une documentation qui correspondent a absoluement tout les niveau.

Coccinelle, je me suis peut etre mal exprime mais ce que je faisait c´etait de charger le document dans une variable puis de decouper ce segment de memoire en ligne que j injectait dans une autre variable attachee a la face et qui servait en fait de fenetre visible. pour le traitement de colorisation du texte je prenais les lignes visibles dans la variable attachee a la face et je me servait de ca pour fabriquer le bloque de rendu.

Ce qui evidement du fait que les variables contenus instructions draw agg et lignes visibles attaches a la face etaient en perpetuelle evolution impliquait un emploi monstrueux de la memoire un truc du genre 30 Mo pour un document de 100Ko...

Steeve quand a lui a decider de ne travailler que sur les donnee issue du document qu il inject directement dans la cariable atachee a la face puis il se sert de pointeur sur les lignes pour fabriquer les instruction draw. Il n y a pas autant de duplication de la memoire du coup pour un document de 100ko on a une occupation memore de 8Mo...

C est ce genre de mecanisme que j aimerai pouvoir comprendre. Je comprend l idee generale mais je ne comprend pas comment dans parse tu fais pour faire pointer sur des donnes issue d une variable sans les dupliquee et sans les deterriorees.

Etant deja vague dans mon esprit la tentative d explication ne peut etre que vague.
shadwolf24-May-2013/14:59:36+2:00
@coccinelle pour faire simple une ligne du document dans ma version existait 4 fois en memoire une fois dans la variable du document une fois dans la variable ligne visible une fois dans le block draw sous forme complete et sous forme explosee. A chaque fois que je voulais travailler sur une ligne je la recopiait, la recopiait la recopait. Evidement la gestion de memoire de rebol2 etait ce qu elle est on avait une donne de copie de donnees plus utilisee qui subsistait en memoire au fur et a mesur du deroulement du programme et plus tu te servais du programme et plus la memoire etait employee(et le garbage collector dans tout ca? je sais pas je l ai jamais vu pourtant il etait appeller avec force a coupe recycle).

Ce que faisait steeve c etait de charger le document dans la moimoire et de travailler directement avec ses donnees sous forme de pointeur. La ou je duplicait les donnees lui il les reemployait tellequelles.
shadwolf24-May-2013/15:10:23+2:00
peut etre le code source vous aidera a mieux comprendre l evolution et ce que je souhaiterai qu on m explique

http://trac.assembla.com/shadwolforge/changeset?new=95%40area-tc-03.r&old=7%40area-tc-03.r

c est une difference entre la premiere et la derniere version chargee.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2