World: r3wp
[Core] Discuss core issues
older newer | first last |
Pekr 27-Dec-2005 [3016] | what about kind of protect/with 'value 'key ? |
Ladislav 27-Dec-2005 [3017] | you cannot protect mutable values, even if you protect the words. Is that an answer to your question? |
Pekr 27-Dec-2005 [3018] | yes .... I thought so, but then I thought maybe there will be some way of how to do it :-) |
Ladislav 27-Dec-2005 [3019] | only one - make a value you don't want to be changed immutable. The problem is, that REBOL does not have immutable strings, blocks, functions or objects. |
Pekr 27-Dec-2005 [3020x2] | what about extending secure scheme? to allow e.g. pre-boot, post-boot changes etc.? hmm, not sure it has a solution in my particular case, e.g. that I would like to hae system/locale translated, but then blocked against the changes ... |
just thinking loud, sorry if nonsenses :-) | |
Ladislav 27-Dec-2005 [3022] | the only solution to your problem is to make your values immutable. The trouble is, that REBOL does not have immutable datatypes you might need |
Pekr 27-Dec-2005 [3023x3] | ok, thanks ... |
but that would not solve my case, if RT would do system/locale immutable, then I would not be able to change it. I though about protection by some kind of key, e.g., but dunno if it might work. at first change the key would be provided, for unprotect, the key would be needed ... | |
Ladislav - one more - can you imagine subinterpreter? e.g. you have kind of rebol interpreter master server in your school, then you have students, global context gets cloned for them and all they do they can do like in normal rebol, just that their scripts are executed in subcontext :-) hmm, maybe it would be easier to launch new interpreter for them anyway ... :-) | |
Ladislav 27-Dec-2005 [3026] | :-) On the other hand, this is a question of philosophy. RT did not forbid you to change the data, because they felt you may have a good reason to do so. Your "philosophy" is opposite - you think, that your users may not have a good reason to change the data. |
Pekr 27-Dec-2005 [3027] | I just came to the request by simply thinking about localisation and how it can be missued. E.g. "do you want your file to be deleted?" could be replaced by "Do you want to keep your file?" :-) |
Ladislav 27-Dec-2005 [3028] | Right you are, the above is possible in English too and it may be considered a safety problem in some circumstances as I pointed out quite long ago. |
Volker 27-Dec-2005 [3029x6] | post-webserver: Cals %webserv.r with |
read-cgi: func [/local data len] [ either system/options/cgi/request-method = "POST" [ set-modes system/ports/input [lines: false binary: true no-wait: false] len: to-integer system/options/cgi/content-length data: to-string copy/part system/ports/input len ] [ data: system/options/cgi/query-string ] data ] | |
http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=webserv.r | |
I patched it a bit to be more verbose: http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=volkswebserv.r But that one has bugs after a few calls. Don't know about webserv.r itself, i guess it is more stable. | |
protecting system/locale: if user cant run code, user cant change it. if user can run code, he does not need to change those strings. | |
(my volkswebserv.r is for debugging, to show errors and such in console. So i can live with that instability. | |
Gabriele 28-Dec-2005 [3035] | if REBOL 3 is going to support modules, then it will provide the kind of security requested by Petr. |
Pekr 28-Dec-2005 [3036] | well, I believe that rebol 3 will actually support modules, as it will be kind of main product release, which can afford new ideas here or there and new incompatibilities here or there, if done for good. The only question is of course the timing - Rebol 3 in two years? :-) |
JaimeVargas 29-Dec-2005 [3037x2] | Any one interested in getting this ? >> printf ["%10.2E %s" to decimal! 1000 "dinar"] 1.00E+03 dinar >> sprintf ["%10.2E %s" to decimal! 1000 "dinar"] == " 1.00E+03 dinar" |
It is an actual wrap of the C printf routines. | |
Graham 29-Dec-2005 [3039] | Lots of people have asked for a printf in the past. |
JaimeVargas 29-Dec-2005 [3040x4] | Here it is consider it why-wire's team new years gift. team: [cyphre ladislav jaime] |
Rebol [] comment [ ; example usage: kernel: load/library %kernel32.dll routine-call kernel "MulDiv" [int] [3 [integer!] 2 [integer!] 1 [integer!]] ; == 6 ] routine-call: func [ library [library!] routine-name [string!] return-spec [block!] arguments [block!] /typed {Arguments is block structure is: [argument-value [datatype] ...]} /local routine spec call argument type typed-rule ] [ spec: make block! length? arguments call: make block! (length? arguments) / 2 + 1 insert call [return routine] typed-rule: copy [] if typed [typed-rule: [set type skip]] parse reduce arguments [ any [ set argument skip typed-rule ( insert/only tail spec 'argument insert/only tail spec either typed [ type ][ reduce [type?/word get/any 'argument] ] insert/only tail call get/any 'argument ) ] ] insert tail spec [return:] insert/only tail spec return-spec routine: make routine! spec library routine-name do call ] use [libc zero-char as-rebol-string malloc][ libc: load/library %/usr/lib/libc.dylib ; osx variable zero-char: #"^@" as-rebol-string: func [ [catch] s [string!] /local pos ][ unless pos: find s zero-char [throw make error! "s is not a c-string"] s: head remove/part pos tail s replace/all s "\n" newline replace/all s "\t" tab ] malloc: func [ size [integer!] "size in bytes" ][ head insert/dup copy {} zero-char size ] sprintf: func [ spec {block structure is: [format values ...]} /local s ][ s: malloc 4096 insert/only head spec 's routine-call libc "sprintf" [int] spec as-rebol-string s ] printf: func [ spec {block structure is: [format values ...]} ][ print sprintf spec ] ] | |
You need to change the location of your libc. The code above is hard coded for OSX. | |
Now is possible to pretty print things with short code ;-) >> repeat i 3 [printf reduce ["%2d-station%s" i either i > 1 ["s"][""]]] 1-station 2-stations 3-stations | |
Volker 29-Dec-2005 [3044] | 1) (paranoid): how do you handle buffer-overruns? 2) I could make a little script which takes the format string and explains it. If you get this into rebol :) |
JaimeVargas 29-Dec-2005 [3045x3] | 1) Buffer overruns seem to be protected by the GC. I try over run a very small buffer and I was uncessful. |
2) That will be nice. | |
The work above was mostly ladislave on the call-routine and the rest is mine. I will probably post it to rebol.org after a few changes and additions to make it work in all platforms. Maybe Carl will like to include it by default in rebol. | |
Graham 29-Dec-2005 [3048x2] | set object none ; sets all the members of an object to none set object [ "first" ] ; sets the first member of the object to "first" how to set another member of the object only knowing the name of the member ? Is there a quick way? |
no matter. | |
BrianH 29-Dec-2005 [3050] | ; Try this object/member: value ; or this set in object 'member value |
Graham 29-Dec-2005 [3051] | thanks .. set in object 'member value is what I was looking for . |
BrianH 29-Dec-2005 [3052] | Yeah, IN can speed things up a bit when repeatedly accessing the same member of a object, saving on lookup time. It can be used to provide object field access in rebcode by calling it with apply too. Useful function. |
Pekr 30-Dec-2005 [3053] | Jaime - we have request for printf or similar functionality on ml - maybe you could help the newbie? |
JaimeVargas 30-Dec-2005 [3054] | Pekr. I don't understand what you want here? Do you want me to post the printf code to the ML? |
Pekr 30-Dec-2005 [3055] | yes, there is conicidentally newbie's post asking for some formatting functions ... there is some discussion already, Ladislav participated too .... |
JaimeVargas 30-Dec-2005 [3056] | Aha. I have not being in the ML for ages. |
Pekr 30-Dec-2005 [3057] | :-) do you suffer "altme syndrome"? :-) |
JaimeVargas 30-Dec-2005 [3058] | I think so. Besides some how the ML software kick-me out in one of the upgrades, so I didn't bother to register again. |
Louis 2-Jan-2006 [3059] | Does anyone know when rebol will support unicode? |
Henrik 3-Jan-2006 [3060] | Interesting... I thought percent! would be a legal datatype in REBOL, since we have so many other common types. Wonder why it's left out? |
Sunanda 3-Jan-2006 [3061] | Extensive discussion on the merits and demerits of percent! here: http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-thread.r?m=rmlZXTJ |
Henrik 3-Jan-2006 [3062] | amazing, it seems I even responded to that thread :-) |
Graham 3-Jan-2006 [3063x2] | That's probably why you thought there was a percent! datatype! |
but what we need is custom datatypes | |
Henrik 3-Jan-2006 [3065] | graham, the fact that it isn't there, kinda ruins my idea for implementing percent based widths in LIST-VIEW so that it's easy to discern between integers and percentages such as [50% 30%]. That's not so easy now, unless I do it the hokey way and use issue! or some other type to describe percent. |
older newer | first last |