REBOL Duplex
rebolfrance8-Jan-2011/19:19:16+1:00
Comme suggéré par coccinelle, voici topic pour lister les mezzanines extended... REBOL Duplex qui seront incluses dans les versions Ultimate et Entreprise.

Je mets une première micro-série...

kb?: func [d] [round/to (length? d) / 1024 .1]
to-kb: func [d] [round/to (d) / 1024 .1]


J'ai une amélioration quelque part.

Il faudrait aussi mettre une fonction de logging en standard...
Avec des refinement pour affichage sur la console et l'envoi de mail.

Nico
rebolfrance8-Jan-2011/21:27:59+1:00
Il y aura peut-être des mezz à reprendre !?

http://www.rebol.it/power-mezz/

Et aussi des trucs fait par Chris RG :

http://www.ross-gill.com/page/REBOL

Nico
coccinelle10-Jan-2011/10:23:20+1:00
Kikou, j'ai fais un peu d'exploration.

Y'a beaucoup de truc à moi dans cet inventaire mais c'est normal, c'est le plus facile.

C'est pas très bien organisé, faut pas m'en vouloir.

SQL protocol
- MySQL - SOFTINNOV - softinnov.org
- PostgreSQL - SOFTINNOV - softinnov.org
- sql-protocol.r - Coccinelle - rebol.org
- RebDB - Dobeash Software - www.dobeash.com/rebdb.html
- NiComDB - John - www.fys.ku.dk/~niclasen/nicomdb/
- ???

SQL wrapper
- mysql-wrapper - SOFTINNOV - softinnov.org
- my-sql-object.r - Coccinelle
- ???

SQL Console
- mysql.r SOFTINNOV - softinnov.org
- sql-consol.r - Coccinelle
- db-view - François - membres.multimania.fr/rebolfrance/projets/dbf/dbview.zip
- MyReSQL - Nicolas - Shadwolf - membres.multimania.fr/myresql/
- ???

IDE/VDE
- rebol-viva.r - Shadwolf - my-trac.assembla.com/shadwolforge
- vid-build.r - Marco (pas moi l'autre) - rebol.org
- MakeDocPro - Robert - www.robertmuench.de/download/
- Rapid - Christophe - sourceforge.net/projects/rapid/
- Anamonitor - Romano - http://www.rebol.it/romano/

Testing tool
- RUn.r - Christophe - rebol.org / sourceforge.net/projects/rebol-unit/
- Curecode - ??? Carl ???
- ???

Trace / Log
- print-log - Coccinelle - Fonction basique
- inform-error - Coccinelle - Fonction basique
- ???

config frameworka
- ???

Asynchrone framework
- Uniserve - SOFTINNOV - softinnov.org
- BEER - ???
- ???

HTTP Services
- Cheyenne - SOFTINNOV - cheyenne-server.org
- Appserver.r - Coccinelle (assez basic)
- ???

Cookie
- inclu dans magic - Olivier -
- ??? inclu dans cheyenne - SOFTINNOV - cheyenne-server.org

WWW Authenticate
- www-authenticate.r - Coccinelle
- ???

Discovery services
- upnp-igd.r - Coccinelle - rebol.org
- ???

Synchronisation services
- ???

Protocol
HTTP Protocol
-> gestion des cookies côté client
-> authentication basic & digest (RFC 2617)
-> HTTP 1.1 compliant

Dynamic HTML
- RSP - SOFTINNOV et d'autres - cheyenne-server.org
- REBOL Server Pages - Maartens - http://www.ross-gill.com/techniques/rsp/
- Vanilla - Christian - www.vanillasite.at/space/news
- Magic - Olivier - www.auverlot.fr/index.php?perma=1229465684
- ???

Utilitaires
- ladybird.r - Coccinelle & Rebprotizer
- rdyndns-client.r - Shadwolf
- ???

Mail / Forum / Chat / Blog / Wiki / Album
- rebforum - Rebprotizer
- client GUI pour forum - Didier
- rebelBB - Gregory - www.digicamsoft.com/cgi-bin/rebelBB.cgi
- RebolForum - ??? - rebolforum.com/index.cgi
- blog.r - Carl (mis à jour par Coccinelle - Authorisation)
- Hypernote.r - Martin - hem.bredband.net/martinjohannesson/hypernotes/
- Vanilla - Christian - www.vanillasite.at/space/news
- HTTPPhotos - Greg - www.digicamsoft.com/softhttphotos.html
- ReadMail.r - Phil - rebol.org

GUI / VID
- RebGui - Dobeash Software - http://www.dobeash.com/rebgui.html
- Skin - Etienne - http://etienne.alaurent.free.fr/rebol/tools
- border-pane - Coccinelle
- tab-pane - Coccinelle
- area-tc.r - Shadwolf - http://my-trac.assembla.com/shadwolforge
- tdm-style.r - Coccinelle
- rtd-style.r - Didier
- konka - Jan (3D rendering)
- ???

Extension du langage
- Prolog.r - Coccinelle - Rebol.org
- ???

web-service
- soap.r - Coccinelle (essai de mold-xml / load-xml pour SOAP)
- easy-soccer.r - Coccinelle - Rebol.org
- rugby.r - Maartens - Rebol.org
- rebol-service - Gabriele
- XML-RPC - Andreas - http://earl.strain.at/space/rebXR
- ???
rebolfrance10-Jan-2011/17:47:21+1:00
Le freemen de Doc :

free-mem: func ['word] [set :word make none! recycle]


Une version un peu mieux de kb? :

kb?: func [d] [
  t: type? d
  either any [t == file! t == url!] [
    i: info? d
    round/to i/size / 1024 .1
  ][
    round/to (length? d) / 1024 .1
  ]  
]


Par contre, j'ai un peu de mal pour le moment, mais il me semble qu'il y aura des Power Mezz et aussi des modules en tant que tel ?
Un cheyenne par exemple, serait plutôt un module...?

Nico
coccinelle10-Jan-2011/19:25:07+1:00
Ben moi, je trouverais génial si le langage lui-même intégrait des fonctions comme par exemple un cheyenne au lieu d'avoir disséminé par ci et par là un multitude de module ou de programmes.

Je donne un exemple.

read-mail que l'on trouve sur rebol.org est un script que j'ai beaucoup utilisé. C'est un client mail sympa comme tout que je conseille d'essayer.

Et bien, ce serait vraiment bien si l'on avait intégré directement dans le langage Rebol, une fonction read-mail avec par exemple un paramètre qui me permette de la mettre dans ma propre application.

Et y'en a plein des fonctions de ce genre qui existent déjà et qui demanderait peu d'adaptation pour être intégrée dans Rebol lui-même.
paullys10-Jan-2011/19:27:49+1:00
C'est exactement ce que j'avais proposé il y a qq temps avec une version heavy de rebol. Mais l'idée n'a pas été retenue au motif fallacieux que la cohérence de rebol en souffrirait...
Attendons le miracle de l'illumination de Carl à ce sujet...
none10-Jan-2011/20:39:59+1:00
Ben au moins, on est deux, c'est mieux que seul.

Avec Carl, j'ai vécu la même chose, je lu avais proposé sql-protocol.r et prolog.r sans succès mais Carl avait été très sympathique dans les échanges que nous avions eu.

Par contre, je me dis quand mêe que s'il avait passé autant de temps à intégrer de manière cohérente toutes ces belles choses qui ont été ralisées avec son langage, Rebol serait vraiment beaucoup plus largement diffusé.
trigram10-Jan-2011/22:21:28+1:00
Raison pour le faire et de le mettre devant le fait accompli...
Le tout étant d'arriver à un système de module, une vrai intégration de super truc comme Cheyenne... Qui soit bien isolé... Pas juste une version de Rebol avec juste une sucession de do %....r rajoutés dans le user.r
coccinelle11-Jan-2011/17:20:13+1:00
Pour les do %....r ajouté dans user.r, je suis d'accord avec toi, ce n'est pas la solution.

La solution, c'est évidemment une succession de do %....r dans rebol.r

En fait d'accord à terme, mais dans un premier temps, une série de do %....r permet de lancer la chose sans investissement particulier. Et si la mayonnaise prend, alors on peut aller de l'avant avec un système plus performant mais à quoi bon faire comme les autres et imaginer un truc hyper-génial dès le départ et l'abandonner avant même que les fondations ne soient mise en place.

Soyons pragmatiques et productifs ...
rebolfrance12-Jan-2011/0:32:29+1:00
Ok je vous fait confiance, vous vous y connaissez plus que moi en Rebol et en architecture logiciel...
Il y avait la propal d'Olivier de faire un bootstrap...

Pour des fonctions comme kb?, freemem, a priori, pas de problèmes sous-jacent, par contre, il faut quand dans notre système être sûr que la lib est bien étanche... Que l'on apporte pas d'instabilité...

Coccinelle tu m'as l'air bien au point sur le sujet, souhaites-tu travailler sur ce point ?

Nico
shadwolf12-Jan-2011/1:18:17+1:00
pour la doc on peut aussi ajouter MDP-GUI http://shadwolf.free.fr/mdp-gui-1-4-1.zip (shadwolf) par contre c'est compatible qu'avec une très ancienne version de MakeDoc Pro ...

C'est pas complètement incompatible avec mdp 1.3 le dernier faudrait que je passe une journée ou 2 pour en faire l'adaptation au nouveau format je pourait en profiter pour "raffraichir" l'aspect graphique de MDP-GUI...
coccinelle12-Jan-2011/9:00:01+1:00
Dans un premier temps, REBOL Duplex, ça pourrait être quelque chose comme ça plus tout un ensemble de script et de documentation disponibles sur le net (rebol.org et/ou autre).

C'est un draft pour montrer l'idée tout en sachant que bien des scripts existant poseraient problème :
- les scripts qui se lancent tout seul (ex. makedoc-pro.r, rebmail.r, etc ...)
- les scripts publiés dans des .zip, .rar, etc... (ex. rebgui, cheyenne, etc...)
- les scripts composés de plusieurs scripts et eventuellement dans plusieurs répertoires (ex. cheyennne, rebgui, etc...)


REBOL [
	Title:   "BUILD Duplex"
	Date:	 12-Jan-2010
	Author:  "Marco"
	Version: 1.0.0
	Email:   mvri@bluewin.ch
	File:	 %build-package.r
]

build-package: func [
    "Build, compress and saves a package to a file or url."
    where [file! url! binary!] "Where to save it."
    list [file! url! block!] "List of script to include into the package."
    header [block! object!] "Header block or object"
][
	list: load list
	block: copy []

	foreach [flag item] list [
		print ["Loading" item]
		script: load/header item
		append block compose/deep [
			if (flag) [
				if not system/options/quiet [print rejoin [{Script: "} (script/1/title) {" (} (script/1/date) {)"}]]
				do decompress as-binary (
					as-string compress mold/only next script
				)
			]
		]
	]
	save/header where block header
]


print "Building the REBOL Duplex"

build-package %rebol.r [
	yes http://www.rebol.org/download-a-script.r?script-name=run.r
	yes http://www.rebol.org/download-a-script.r?script-name=sql-protocol.r
 	yes http://www.rebol.org/download-a-script.r?script-name=easy-soccer.r
 	yes http://www.rebol.org/download-a-script.r?script-name=prolog.r
 	view? http://www.rebol.org/download-a-script.r?script-name=rebzip.r
] compose [
	Title:   "REBOL duplex"
	Date:	 (now/date)
	Author:  "Marco"
	Version: 1.0.0
	Email:   mvri@bluewin.ch
	File:	 %rebol.r
	Comment: {Please copy the new rebol.r file into the same directory as your rebol.exe}
]

print ""
print ""
print "REBOL Duplex is build"
print ""
print "Please copy the new rebol.r file into the same directory as your rebol.exe"
print ""
ask "Thanks for using REBOL Duplex"

RebKodeur12-Jan-2011/10:40:48+1:00
Bon début. J'aime.
coccinelle12-Jan-2011/15:45:48+1:00
Une version à peine améliorée avec :
- une ébauche de gestion des dépendances entre script (#need file! | url! | block!)
- une ébauche de gestion conditionnelle du chargement (#all condition)
- une ébauche de gestion conditionnelle du chargement en fonction du produit (#product core | view | ... | block!])

Par contre on voit que même une script comme le vid tool kit (vid-ext-kit.r) pose problème est fait planter view lorsqu'il est ajouter à rebol.r, c'est con quand même.

REBOL [
	Title:   "BUILD Duplex"
	Date:	 12-Jan-2010
	Author:  "Marco"
	Version: 1.0.1
	Email:   mvri@bluewin.ch
	File:	 %build-package.r
]

build-package: func [
    "Build, compress and saves a package to a file or url."
    where [file! url! binary!] "Where to save it."
    list [file! url! block!] "List of script to include into the package."
    header [block! object!] "Header block or object"
    /local result scripts
][
	append-script: func [
    	list [file! url! block!]
	    /local item product need condition file
	][
		list: to-block list
		parse list [any [
			opt [#product set product [word! | block!]]
			opt [#need set need [file! | url! | block!]]
			opt [#all set condition [word! | block!]]
			set item [file! | url!] (
				unless find scripts item [
					append scripts item
					print ["Loading" item]
					item: load/header item
					if need [append-script need]
					append result compose/deep [
						if all [
							(either condition [condition][])
							(either product	[compose/deep [find [(product)] system/product]][])
						][
							unless system/options/quiet [print rejoin [{Script: "} (item/1/title) {" (} (item/1/date) {)"}]]
							do decompress as-binary (
								as-string compress mold/only next item
							)
						]
					]
					product: condition: need: none
				]
			)
		]]
	]

	result: copy []
	scripts: copy []
	append-script load list
	save/header where result header
]



print "Building the REBOL Duplex"
print ""

build-package %rebol.r [

; Core extension
	http://www.rebol.org/download-a-script.r?script-name=run.r
	#product [core] http://www.rebol.org/download-a-script.r?script-name=sql-protocol.r
 	#need http://www.rebol.org/download-a-script.r?script-name=easy-soccer.r 
 		http://www.rebol.org/download-a-script.r?script-name=prolog.r
	#need http://www.rebol.org/download-a-script.r?script-name=easy-soccer.r
		http://www.rebol.org/download-a-script.r?script-name=age.r

; View extension
 	#all view? http://www.rebol.org/download-a-script.r?script-name=rebzip.r
 	#product [view] http://97.107.135.89/www.hmkdesign.dk/data/projects/vid-ext-kit/downloads/vid-ext-kit.r
 	
] compose [
	Title:   "REBOL duplex"
	Date:	 (now/date)
	Author:  "Marco"
	Version: 1.0.0
	Email:   mvri@bluewin.ch
	File:	 %rebol.r
	Comment: {Please copy the new rebol.r file into the same directory as your rebol.exe}
]

print ""
print ""
print "REBOL Duplex is build"
print ""
print "Please copy the new rebol.r file into the same directory as your rebol.exe"
print ""
ask "Thanks for using REBOL Duplex"

trigram13-Jan-2011/0:12:59+1:00
Bon je pars m'exiler pendant l'hiver histoire de comprendre ton code...
Mon niveau est vraiment trop faible. Néanmoins, on progresse fortement avec des exemples comme cela. Comme Didec avec sa revue de mon code pour la comparaison de répertoire dans le temps...

Bravo.
J'aimerai bien que les autres donne un peu leur avis...

Nico
trigram22-Jan-2011/1:01:33+1:00
Alors personne pour féliciter Marco
Est-ce une bonne base pour un R2 Entreprise / Ultimate ?
Olivier ?
trigram27-Jan-2011/12:21:10+1:00
Autres fonctions sympa à mettre :

;***** Conversion function from/to CSV format
csv-to-block: func [
	"Convert a string of CSV formated data to a Rebol block. First line is header."
	csv-data [string!] "CSV data."
	/separator separ [char!] "Separator to use if different of comma (,)."
	/without-header "Do not include header in the result."
	/local out line start end this-string header record value data chars spaces chars-but-space
	; CSV format information http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm
] [
	out: copy []
	separ: any [separ #","]
	
	; This function handle replacement of dual double-quote by quote while copying substring
	this-string: func [s e] [replace/all copy/part s e {""} {"}]
	; CSV parsing rules
	header: [(line: copy []) value any [separ value] (if not without-header [append/only out line])]
	record: [(line: copy []) value any [separ value] (append/only out line)]
	value: [any spaces data any spaces (append line this-string start end)]
	data: [start: some chars-but-space end: | #"^"" start: any [some chars | {""} | #"," | newline] end: #"^""]
	chars: complement charset rejoin [ {"} separ newline]
	spaces: charset exclude { ^-} form separ
	chars-but-space: exclude chars spaces
	
	parse/all csv-data [header any [newline record] any newline end]
	out
]

block-to-csv: func [
	"Convert a block of blocks to a CSV formated string." 
	blk-data [block!] "block of data to convert"
	/separator separ "Separator to use if different of comma (,)."
	/local out csv-string record value v
] [
	out: copy ""
	separ: any [separ #","]
	; This function convert a string to a CSV formated one
	csv-string: func [val] [head insert next copy {""} replace/all copy val {"} {""} ]
	record: [into [some [value (append out #",")]]]
	value: [set v string! (append out csv-string v) | set v any-type! (append out form v)]
	
	parse/all blk-data [any [record (remove back tail out append out newline)]]
	out
]


De DideC qui a toujours la solution à tout.

http://www.digicamsoft.com/cgi-bin/rebelBB.cgi?thread=%3C5Jan201014243270645100%3E

Et merci moteur de recherche du forum qui m'a permit de trouver cette fonction sympa qui va m'aider à résoudre ma problématique rapidement avec REBOL
trigram27-Jan-2011/16:58:50+1:00
Petite correction de DideC :

;***** Conversion function from/to CSV format
csv-to-block: func [
	"Convert a string of CSV formated data to a Rebol block. First line is header."
	csv-data [string!] "CSV data."
	/separator separ [char!] "Separator to use if different of comma (,)."
	/without-header "Do not include header in the result."
	/local out line start end this-string header record value data chars spaces chars-but-space
	; CSV format information http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm
] [
	out: copy []
	separ: any [separ #","]
	
	; This function handle replacement of dual double-quote by quote while copying substring
	this-string: func [s e] [replace/all copy/part s e {""} {"}]
	; CSV parsing rules
	header: [(line: copy []) value any [separ value | separ (append line none)] (if not without-header [append/only out line])]
	record: [(line: copy []) value any [separ value | separ (append line none)] (append/only out line)]
	value: [any spaces data any spaces (append line this-string start end)]
	data: [start: some chars-but-space any [some spaces some chars-but-space] end: | #"^"" start: any [some chars | {""} | separ | newline] end: #"^""]
	chars: complement charset rejoin [ {"} separ newline]
	spaces: charset exclude { ^-} form separ
	chars-but-space: exclude chars spaces
	
	parse/all csv-data [header any [newline record] any newline end]
	out
]
coccinelle27-Jan-2011/17:35:06+1:00
Pourquoi pas, mais ça me parait redondant avec le protocol CSV: qui est inclus dans le script sql-protocol.r que l'on trouve sur rebol.org.
trigram27-Jan-2011/18:33:13+1:00
Ok pour la redondance.
Par contre, le juste-milieu n'est-il pas de faire les fonctions de Didec csv-to-block et block-to-csv en s'appuyant sur sql-protocol.r ?

Perso, je les trouves assez simple et pratique.

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2