AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 50 |
r3wp | 689 |
total: | 739 |
results window for this page: [start: 1 end: 100]
world-name: r4wp
Group: #Red ... Red language group [web-public] | ||
Steeve: 11-Aug-2012 | is: func [ [catch] {Current face inherits from a block!} spec [block!] /local locals old when init ][ either all [ find spec set-word! ; locals founds not empty? exclude ; new ones (not found in the current face) first locals: construct copy spec ; copy: because [construct] modifies the block (R2 bug ?) first face ][ ; Would be simpler, faster and safer using R3 (objects can be expanded) ; rebuild face with new locals ; (make face spec : can't be used here because of the special bounding rules) when: face/when ; prevent copy/deep of when and init blocks init: face/init face/when: face/init: none set locals none resolve* locals face ; initialize locals with current face (if intersect) face: make old: face locals ; rebuild current face with new locals face/when: when face/init: init do-safe bind bind spec face self; run style constructor bind bind init face self ; rebound current face constructor (which is currently running) error? set old :bound-err ; prevent old object from being used anymore old: none ][ ; no new locals do-safe bind bind spec face self ; just run style's constructor ] if error throw-exit ] | |
Henrik: 4-Oct-2012 | Doc, will it be necessary or possible to have a debug version of Red with deep level of integration with debugging tools as well as a non-debug version with higher performance, or is this something that can be turned on/off in the same runtime? | |
DocKimbel: 8-Nov-2012 | From ~Links group: "Could Red eventually become a contender for #6? How strong will support for parallel processing be, eventually, in Red?" #6: yes, that is one of the goals I want to achieve with Red. For parallel processing, the model I have in mind is the "parallel collections" from Scala. This means that when you are looping over a series, Red should be able to parallelize the loop code over n (CPU and/or GPGPU) cores at the cost for the user of only a change of the loop function name (in Scala, they use a "par." prefix for such functions). This requires that the compiler do a deep static analysis of the loop body to determine if it can be parallelized (e.g. iterations not dependent on results from previous ones). Now, if you also add SIMD support in the equation to leverage intra-core parallelism, you get a good picture of what I want to achieve. ;-) So, I think a semi-assisted parallelization/vectorization of loops in Red is doable. To what extent and which final efficiency, I'm not sure before we build some prototypes. | |
Gregg: 4-Dec-2012 | On the subject of hot-patching, I've thought for a long time that the ability to instrument apps--like DTrace--would be very helpful. I know DTrace is deep kernel voodoo, and not available on all OSs. If Red supported probe points for DTrace, that would be great for those who use it. My question is whether it would be better to use a DTrace model, where the analysis happens from outside the app, or if having an instrumentation/tracing/logging model internally is better. Or can you support both with the same set of probe points in an app? | |
DocKimbel: 7-Dec-2012 | I have found an issue with word! value casing in Red. The Red/System code generated for: print 'a = 'A is: stack/mark-native ~print stack/mark-native ~strict-equal? word/push ~a word/push ~A natives/strict-equal?* stack/unwind natives/print* stack/unwind The problem is that Red/System is case-insensitive, so ~a and ~A are the same variable. So, no way to make it work like that. I see two options for solving it: 1) Make Red/System case-sensitive. 2) Deep encode each Red generated symbol to distinguish lower and uppercases. Solution 2) works, but it makes symbol decoration operation very costly (each symbol letter is prefixed with a sigil for lowercases and another one for uppercases). The example above becomes: stack/mark-native ~_p_r_i_n_t stack/mark-native ~_s_t_r_i_c_t_-_e_q_u_a_l_? word/push ~_a word/push ~-A natives/strict-equal?* stack/unwind natives/print* stack/unwind So, it is not nice, it doubles every Red symbol size that is handled by Red/System and slows down Red compilation by 25%. So, my questions are: a) Does anyone see another cheaper solution to this problem? b) In case of option 1), do you have anything against making Red/System identifiers case-sensitive? | |
DocKimbel: 12-Dec-2012 | COPY on any-block! series implemented, /part and /deep supported (/types has not been implemented yet). | |
DocKimbel: 26-Dec-2012 | Implementing that feature revealed a few deep bugs in the current Red runtime code, I hope to be able to finish fixing them by tonight. | |
Gerard: 6-Jan-2013 | Thanks Doc for sharing this information and Kaj for doing this GUI binding, paving the way for newcomers and sharing the source for deep study. When I will be going back to my former status (more free time) I plan to deeply study Red/System in parallel with the C language just to be able to write some small doc (or book) to help newcomers to start with Red/System after coming from the C environment. In fact it's a long time I planned to do it for myself first but never found the time to do so when I worked as a teacher in the past. Now I hope I will better drive my diary to cope with this new planniing !!! | |
Kaj: 5-Feb-2013 | I implemented compose/deep. With the latest Red fixes, it works now | |
DocKimbel: 12-Feb-2013 | Kaj: I've pushed a change in attributes handling for Red/System functions, you can now specify attributes or function's description doc-string in any order. I've replaced direct spec block access for attributes by a function call in deep compiler's code parts, so watch out for regressions especially in callbacks! | |
Pekr: 5-Mar-2013 | Doc - you still don't seem to understand. Are you so deep in an a language design, so that you can't understand lamers like myself? :-) | |
Kaj: 8-Mar-2013 | You know how it is with benchmarks: you can never specify it deep enough to prevent all caveats | |
DocKimbel: 25-Mar-2013 | It is intentional and has several purposes: a) avoiding the creation of an hidden context for each iterator instance and especially the costly deep BINDing of argument block on each call. b) making the iterator word available outside of the loop, can be useful when early breaking from loop, avoiding the passing of the counter through a BREAK/RETURN. It can also be used to check if the loop counter has reached its limit or not. c) it is IMHO counter-intuitive for users, after a few years you get used to it, but it is a wall that every new user will hit more than once. I think that the extra step of defining it as local word is really not a big deal in comparison. Also, FUNCTION constructor could be enhanced to take care of that for you. | |
DocKimbel: 26-Mar-2013 | Gregg: only set-words are localized. What you saw in _function/collect-words is the the conversion of spec block elements to words for the ignore list. The collection of words from body block happens in collect-deep. | |
Gregg: 26-Mar-2013 | BTW, even though I'm not ready to write deep .reds code, it's very enjoyable to have a reason to go through the code now. It's very nice. | |
DocKimbel: 23-Apr-2013 | Kaj: I think I've found a workaround for the semi-random compilation crash on Linux. It seems SELECT has some deep stability issues in R2. | |
DocKimbel: 26-Apr-2013 | Pekr: I think FB was a mistake, it's not the right place/tool where to have technical discussions (especially on deep topic like programming languages). | |
Gregg: 30-Apr-2013 | It sounded like deep voodoo required for your bridging needs. | |
Gregg: 30-Apr-2013 | I guess it is still deep voodoo, just a different kind. :-) | |
Gregg: 3-Jun-2013 | I imagine Doc will profile things if performance becomes his argument. I support what makes it easier to use PARSE to get the job done, though sometimes there may be confusion between those who understand parsing at a deep level and those who don't. I would rather have support for TO [a | b], and other rules, even at the cost of them having lower performance, versus people not being able to do the job at all. In docs, we can note the tradeoffs, and people can optimize if necessary. | |
DocKimbel: 27-Jun-2013 | For building an x86 system compatible apk, the following changes are required in the build script: make-dir/deep bin-dir/lib/armeabi => make-dir/deep bin-dir/lib/x86 -t Android => "-t Android-x86" /libRed => "Red" | |
Pekr: 27-Jun-2013 | In order to be able to generate x86 target, do the following: - copy %build.r into %build-x86.r - change make-dir/deep bin-dir/lib/armeabi => make-dir/deep bin-dir/lib/x86 - change "-t Android" => "-t Android-x86" - change "rejoin [%../red/bridges/android/ bin-dir/lib/armeabi" => "rejoin [%../red/bridges/android/ bin-dir/lib/x86" - run %build-x86.r - generates an apk and if you ran arm version previously, will pack both versions into one .apk | |
Pekr: 9-Jul-2013 | The above mentioned script also fails at it tries to make a directory. Maybe it needs make-dir/deep %runnable/arm-tests, or simply to remove %runnable .... | |
PeterWood: 9-Jul-2013 | I'll add the /deep to %build-arm-tests.r Pekr (Runnable dir is required and built by quick-test.r) I'll also suspend the function tests from the Arm build. | |
Kaj: 23-Jul-2013 | Oldes, I'm interested in the psychology of this. Why would you rather write a script for which you need deep Fossil knowledge, than download one Fossil executable file? | |
Group: Rebol School ... REBOL School [web-public] | ||
Maxim: 3-Jul-2012 | you can simply say that when an entry doesn't have a year, it is always larger, so you have them at the end of the list. you could then sort those without a date according to their name. if you want just the list for "1991-1992" yes, that is a good approach... however usually, the fastest way to filter-out lists, is to copy the block (not deep, so its quick) and then use remove-each on the new block... like-so: filtered-data: copy data remove-each [hash mcapz] filtered-data [ not select mcapz "1991-1992"] | |
BrianH: 27-Aug-2012 | Yeah, R3's USE does a COPY/deep of the body, then make closure! uses the copy itself, then when executed (IIRC) the closure executes a BIND/copy of its body. So it copies its body more than once, but possibly less than twice. | |
BrianH: 27-Aug-2012 | I guess you could use ALSO for R2's USE blocks too, or you could explicitly COPY/deep the body the way R3's USE does internally. | |
Maxim: 27-Aug-2012 | I always though BIND/copy was equivalent to BIND COPY/deep | |
Gregg: 16-Sep-2012 | Will this work? LPINT-def: [value [integer!]] none LPINT: make struct! LPINT-def none make-LPINT: does [make struct! LPINT-def none] get-dereferenced-data: func [ {Given a pointer to memory, copy the target data into a REBOL struct.} pointer [struct!] "LPINT structure" struct-def [block!] "Contains a sub-struct that is the real struct you want." /local struct data orig-pointer result ] [ struct: make struct! compose/deep/only [ ; make wrapper struct sub [struct! (struct-def)] ] none orig-pointer: third struct ; store original inner pointer change third struct third pointer ; change inner pointer to ref'd data data: copy third struct/sub ; copy data from the inner struct ;print mold data change third struct orig-pointer ; restore inner pointer result: make struct! struct-def none ; make result struct change third result data ; change data in result struct ;probe result struct: data: orig-pointer: none ;recycle result ] It's from some old code, so no guarantees. | |
Ladislav: 3-Oct-2012 | THat is a complicated issue, but the principle is easy. USE modifies it BODY and should be treated as modifying. However, you can easily define a non-modifying version: USE words copy/deep body | |
Steeve: 3-Oct-2012 | Here is a version with no locals, no temporary context, no shit and not tested ;-) rfunc: func [spec body][ func spec compose/deep [ forever [ set [(spec)] catch/name [ return (func spec body) (spec) ] 'recur ] ] ] recur: func [args][throw/name reduce args 'recur] | |
Ladislav: 3-Oct-2012 | OK, this is the long version: tail-func: func [ { Define a recursive user function with the supplied SPEC and BODY. The function can use a special TAIL-CALL local function to perform a tail-recursive function call. } [catch] spec [block!] {Help string (opt) followed by arg words (and opt type and string)} body [block!] {The body block of the function} /local the-function tail-call context-word ] [ ; define a new 'tail-call local variable tail-call: use [tail-call] ['tail-call] ; bind the given BODY to "know" the 'tail-call variable body: bind/copy body tail-call ; find a local word in SPEC context-word: find spec word! if context-word [context-word: first context-word] ; define the TAIL-CALL function set tail-call func spec compose [ ( either context-word [ ; set parameters to the new arguments compose [set parameters values? (context-word)] ] [[]] ) throw/name none 'tail-call ] ; define the function the-function: throw-on-error [ func spec compose/deep [ (either context-word [context-word] [[]]) while [true] [ catch/name [ return do [(body)] ] 'tail-call ] ] ] if context-word [ ; get the function context context-word: bind? first second :the-function ; replace the context word in the function body by NONE change second :the-function none ; adjust the TAIL-CALL body ; replace the 'parameters word change/only at second get tail-call 2 bind first context-word context-word ] :the-function ] values?: func ['word] [second bind? word] | |
Steeve: 3-Oct-2012 | I think I included all your modifications Ladislav but shortly :-) rfunc: [spec body /local args][ args: to-block form first ( do second func spec compose [bind? (to-lit-word first find spec word!)] ) funct spec compose/deep [ recur: func spec [ throw/name reduce [(args)] 'recur ] forever [ set [(args)] catch/name [ return do [(body)] ] 'recur ] ] ] | |
Steeve: 3-Oct-2012 | Should do the trick: rfunc: [spec body /local args][ args: to-block form first do second func spec compose [bind? (to-lit-word first find spec word!)] funct spec compose/deep [ recur: quote (func spec compose/deep [throw/name reduce [(args)] 'recur]) forever [ set [(args)] catch/name [return do [(body)]] 'recur ] ] ] | |
Steeve: 4-Oct-2012 | Last version. - Any spec accepted but needs at least one parameter (can be just a local) rfunc: func [ [catch] spec [block!] body [block!] /local arg obj recur ][ throw-on-error [ if error? try [arg: to-lit-word first find spec any-word!][ make error! "rfunc needs at least one parameter." ] recur: func spec compose [throw/name bind? (:arg) 'recur] obj: catch/name [do second :recur] 'recur funct spec compose/deep [ recur: quote (:recur) forever [ set/any [(to-block form first obj)] second catch/name [ return do [(body)] ] 'recur ] ] ] ] | |
Steeve: 4-Oct-2012 | Completly changed my mind. It's lot leasier to manage /recur as a refinement! - eg. safe/recur instead of recur - no words collision anymore (obviously /recur can't be used as a parameter). Also really short code rfunc: func [[catch] spec [block!] body [block!] /local ctx fun][ spec: append copy spec /recur ctx: bind? first second fun: throw-on-error [func spec [recur]] change second :fun compose/deep [ if (in ctx 'recur) [throw/name second (ctx) 'recur] while [true][ set/any [(bind to-block form first ctx ctx)] catch/name [ return do [(bind/copy body ctx)] ] 'recur ] ] :fun ] | |
Steeve: 5-Oct-2012 | ;Go back to recur as a function. ;Still recur can't be used as a parameter, local or a refinement. ;This implementation is much more clean (no shitty compose/deep) and still very short. ;The collision of words is avoided by the use of singleton functions #[function!] ;I'm confident with this one. It could be the last one -_-; rfunc: func [[catch] spec [block!] body [block!] /local ctx args][ ctx: bind? first second throw-on-error [ ;* Temporary function created to retrieve parameters ;* and to get a new context for 'recur. ;* The context will remain alive (not GC'ed). func append copy spec /recur [recur] ] args: bind to-block form first ctx ctx ctx/recur: func spec reduce [ quote #[function! ['word] [throw/name second bind? word 'recur]] first args ;* may be 'recur if empty specs (still, it's ok) ] func spec reduce [ quote #[function! [args body][ while [true][set/any args catch/name [return do body] 'recur] ]] head remove back tail args ;* remove 'recur bind/copy body ctx ;* bound 'recur ] ] | |
Steeve: 5-Oct-2012 | ;Go back to recur as a function. ;Still recur can't be used as a parameter, local or a refinement. ;This implementation is much more clean (no shitty compose/deep) and still very short. ;The collision of words is avoided by the use of singleton functions #[function!] ;I'm confident with this one. It could be the last one -_-; rfunc: func [[catch] spec [block!] body [block!] /local ctx args][ ctx: bind? first second throw-on-error [ ;* Temporary function created to retrieve parameters ;* and to get a new context for 'recur. ;* The context will remain alive (not GC'ed). func append copy spec /recur [recur] ] args: bind to-block form first ctx ctx ctx/recur: func spec reduce [ quote #[function! ['word] [throw/name second bind? word 'recur]] first args ;* may be 'recur if empty specs (still, it's ok) ] func spec reduce [ quote #[function! [args body][ while [true][set/any args catch/name [return do body] 'recur] ]] head remove back tail args ;* remove 'recur bind/copy body ctx ;* bound 'recur ] ] | |
Ladislav: 5-Oct-2012 | Rebol [ Title: "Catch" File: %catch.r Date: 5-Oct-2012/17:49:58+2:00 Author: "Ladislav Mecir" Purpose: { Catches local throw' Ignores non-local throws } ] ; Error definition system/error: make system/error [ throw': make object! [ code: system/error/throw/code + 50 type: "throw' error" not-caught: ["throw' not caught"] ] ] catch': func [ {Catches a throw' from a block and returns the value.} [throw] block [block!] "Block to evaluate" /local err disarmed ] [ use [throw'] copy/deep compose/only [ ; "localize" 'throw' in the block block: (block) throw': func [[catch] value [any-type!]] [ disarmed: disarm err: make error! [throw' not-caught] set/any in disarmed 'arg1 get/any 'value disarmed/arg2: 'throw' throw err ] get/any either all [ error? set/any 'err try block ( disarmed: disarm err disarmed/type = 'throw' ) disarmed/id = 'not-caught disarmed/arg2 =? 'throw' ] [ in disarmed 'arg1 ] [ 'err ] ] ] | |
Ladislav: 5-Oct-2012 | rfunc: func [[catch] spec [block!] body [block!] /local ctx fun][ spec: append copy spec /recur ctx: bind? first second fun: throw-on-error [func spec [recur]] change second :fun compose/deep [ if (in ctx 'recur) [throw' second (ctx)] while [true][ set/any [(bind to-block form first ctx ctx)] catch' [ return do [(bind/copy body ctx)] ] ] ] :fun ] | |
Steeve: 5-Oct-2012 | This time it's really really my final version T_T - Both f/recur and recur allowed - Catch/throw interferences ok. NB: The code would be simpler in R3 since several workarounds are used to correct misbehaviors of object related natives of R2. Also the lack of the reflexive capability for a function to read its own context in a easy way is definitivly a huge miss. (On can't create anonymous functions without analysing their specs first. What a pain) One would need a reserved word holding the context (like SELF for objects). These shortcomings are making the code too much obfuscated and huge for my taste. I hope it will be corrected in R3.. rfunc: func [ [catch] spec [block!] body [block!] /local ctx args call-tail ][ ctx: bind? first second throw-on-error [ func spec: append copy spec /recur [recur] ] args: bind head remove back tail to-block form first ctx ctx call-tail: func ['word] compose/deep [ set/any [(args)] second bind? word throw/name (ctx) 'recur ] ctx/recur: func spec reduce [:call-tail 'recur] func spec reduce [ quote #[function! [ [throw] 'recur 'call-tail ctx args body /local ret ][ if get/any recur [call-tail :recur] set recur get in ctx 'recur while [true][ set/any 'ret catch/name [return do body] 'recur unless all [value? 'ret same? :ret ctx][ throw/name get/any 'ret 'recur ] set/any args second ctx ] ]] 'recur :call-tail ctx args body ] ] | |
Sunanda: 13-Mar-2013 | Also interested in usage example for TAKE/DEEP where the /deep can be a pair! | |
Sunanda: 14-Mar-2013 | :) Is TAKE intended one day to work on image bitmaps? Or is there another use for: TAKE/DEEP word 10x10 | |
Sunanda: 14-Mar-2013 | My confusion is due to the help for TAKE saying the /DEEP arg can take a pair! -- So I was looking for a usage case. | |
Gregg: 23-Apr-2013 | With REBOL, it's almost always something simple. Until you drop into the deep water. :-) | |
Bo: 8-May-2013 | >> help copy USAGE: COPY value /part range /deep So, copy/part takes two parameters: (1) the start index, and (2) the range If you rewrite the copy/part like I did below, it is much easier to see how it is split up: copy/part tail form idx ;parameter 1 -1 ;parameter 2 | |
Group: Databases ... group to discuss various database issues and drivers [web-public] | ||
Kaj: 26-Jun-2013 | I saw code last year, but it's probably still in deep development | |
Group: !REBOL3 ... General discussion about REBOL 3 [web-public] | ||
Bo: 3-Mar-2013 | Before delving deep into R3 code, does anyone have any knowledge or idea of why this is happening? Could it be a problem with buffer allocation around the 32K boundary? | |
Josh: 20-Jul-2013 | bug? v: 5 a: compose/deep [(v) q] reduce a |
world-name: r3wp
Group: !AltME ... Discussion about AltME [web-public] | ||
[unknown: 9]: 19-Jan-2005 | Knock your socks off? No, perhaps just get rid of a lot of deep bugs completely, and enable us to move on to the next stage (applets, and applets written by people other than us). | |
Sunanda: 26-Jan-2006 | There's something deep-down that is wider than View. Run enough CGIs under Core and you'll get what seems to be the same sort of error. Which is weird as each CGI is a separate incarnation (when not using fastCGI, anyway). | |
[unknown: 9]: 8-Feb-2006 | Agreed. But if I did not engage Graham, I would be ignoring an important part of our relationship, which is "aside" from the point you describe. You know guys……………its OK to disagree about stuff, have deep discussions about them, and even walk away disagreeing to the end. Perhaps it is a cultural difference that causes people to worry about "upsetting" people. | |
Group: RAMBO ... The REBOL bug and enhancement database [web-public] | ||
Volker: 14-May-2005 | like b: copy [] append/only b b copy/deep b make object makes deep copies of all blocks. sure that crashes. crash should should be a softer? | |
DideC: 17-May-2005 | base: [text (c) 40x20 effect [draw [text 20x0 (c)]]] lay: [origin 0 space 1 across] for i 16 31 1 [ for j 0 7 1 [ c: copy to-string to-char 8 * i + j append lay compose/deep base ] append lay 'return ] view layout lay | |
Group: Core ... Discuss core issues [web-public] | ||
Ammon: 4-Jan-2005 | that's funny. I've always used compose/deep [[()]] | |
Ammon: 14-Mar-2005 | 'compose evaluates any parens in the block passed to it. If you are passing 'compose a block containing blocks that contain values you would like composed then you need to use the /deep refinement of compose | |
Ammon: 14-Mar-2005 | ; (i.e. test-case-test: make test-case compose/deep [ ... test-result-formating: func [/local ed][ ed: make (test-result) ... ] ] | |
Group: View ... discuss view related issues [web-public] | ||
Geomol: 31-Jan-2005 | I can see, it must be hard to support these features on all platforms. It's rather deep down in the OS. | |
Group: Make-doc ... moving forward [web-public] | ||
Geomol: 10-Jan-2005 | A way to go may be to make a deep analyse of, what a document is - what it consist of. There are basic elements like letters, dividers (<br/>), ... Then there are bigger elements (containers) like notes, tables, ... And we can talk about change of state like bold-on, bold-off, italic-on, italic-off, font change, etc. The containers should be strictly hierarchical. The basic elements and the containers will be represented in a sequence. The inside of a container is maybe also a sequence. Decisions should be made, if change of state can happen anywhere, or if going to one state and back is a container too. (I'm thinking loud here, you may notice.) | |
Group: Syllable ... The free desktop and server operating system family [web-public] | ||
Kaj: 31-Aug-2005 | I'm interested in that, too. :-) What I know is that Arno is making deep changes to the video driver framework to add backbuffering in the memory of the video cards. We think about AGG as a crossplatform rendering library, but Arno is considering the few simple drawing functions in Syllable. Things like line drawing are passed directly to the video drivers, and if a driver supports 2D acceleration, the draw is done in hardware by the video card. In our new framework, these drawing operations need to be able to work directly in the memory of the video card when necessary. It makes sense that crossplatform libraries are not suitable for this deep integration | |
Kaj: 3-Sep-2005 | The driver framework is going to be revamped with better use of the video card: backbuffering and integrated 2D drawing functions. The current discussion will also lead to deep integration of 3D. Both software rendering and hardware rendering are being worked on. This takes the kind of fundamental changes throughout the system that take many years on for example Linux, because no project has control over all the parts that need to be changed to coordinate everything in the best way possible | |
Kaj: 14-Dec-2005 | We have just a few rendering functions, but they're deeply integrated with the video driver framework, now with backbuffering. When we add more functions they may need the same deep integration for the best result, and then we can't use an existing library directly. Of course, you can still use existing libraries on top of our framework, but that's not the most efficient solution | |
Group: Linux ... [web-public] group for linux REBOL users | ||
Graham: 27-Jan-2006 | Volker is suggesting this: escape-metachars: func["escape metachars" s][ replace/all s "'" "''" rejoin ["'" s "'"] ] browse: func[url]compose/deep[ call rejoin ["screen -X screen -- " (view-root/bin/browser.sh) " " escape-metachars url] ] | |
[unknown: 10]: 27-Feb-2006 | I had the same problems with the last /view release 1.3 on my old Slackware machine.. the dependency libs where knowwhere to find... else then hidden deep inside gcc somewhere.. | |
Reichart: 24-Dec-2007 | Cool stuff… I don't find either QuickTime or Flash to be quite as pervasive as everyone would like to think. We have found bugs amongst about 50% of the Mac users trying to display Flash media, and about 20% of PCs have some sort of trouble with QuickTime (not the least being they have not downloaded it yet). The fact that Apple only supports Flash 4 is a pain. I wish they could simple confirm their was no security holes, and that installation from all browns (like all four) was truly just a confirmation box. Some times I will go to upgrade someone, and I will even be forced to reboot. Deep shame. | |
Group: !Readmail ... a Rebol mail client [web-public] | ||
[unknown: 9]: 30-Jun-2007 | Phil if you need an IMAP account on a server to test with, we can give you access to the one we set up to test Qtask's new Webmail interface. The account contains lots of examples like large attachments, deep folders. As we learn more, we fill it with ore examples. Just shoot me a private message, and I will get you name and password. | |
Group: !RebGUI ... A lightweight alternative to VID [web-public] | ||
Vincent: 6-Mar-2005 | agree, COPY not needed - just an habit when I modify blocks, but here I did it two times wrong: - the 'draw sub-block is modified, so it should be copy/deep - no 'copy needed with 'make, who does copy/deep | |
Vincent: 27-Apr-2005 | Volker: ( ) for actions - it will be a pain to use with compose/deep (needed because 'display evaluation is kept to minimal). | |
Group: XML ... xml related conversations [web-public] | ||
Chris: 30-Oct-2005 | node-prototype: reduce [ 'type 0 'namespace none 'tag none 'children [] 'value none 'parent none ] foobar: copy/deep node-prototype foobar/type: 1 foobar/tag: "foobar" bar: copy/deep node-prototype bar/type: 1 bar/namespace "foo" bar/tag: "bar" bar/parent: :foobar append foobar/children bar text: copy/deep node-prototype text/type: 3 text/value: "Some Text" text/parent: :bar append bar/children text document: context [ get-elements-by-tag-name: func [tag-name][ remove-each element copy nodes [ not equal? tag-name element/tag ] ] nodes: reduce [foobar bar text] ] | |
Volker: 7-Nov-2005 | together with a bit unix for copy/deep test-directories and a diff later. | |
Graham: 24-Jun-2009 | I'm having to create nested objects 7 levels deep ... | |
Graham: 24-Jun-2009 | Let me understand this .. if I have an object that needs other objects more than 1 deep .. I can't use that to clone other objects without creating references instead of copies. | |
Maxim: 24-Jun-2009 | but note that your object's structure has to remain pretty static for any type of deep copy like this to be usefull. | |
Graham: 24-Jun-2009 | deep copy | |
Group: SVG Renderer ... SVG rendering in Draw AGG [web-public] | ||
shadwolf: 26-Jun-2005 | Ashley yes !!! You noticed right I found them deep hided in the SVG format documentation on W3C dedicated pages to SVG format .... | |
Group: Rebol School ... Rebol School [web-public] | ||
btiffin: 27-May-2007 | Enjoy...REBOL, being light, is pretty deep wide and somewhat 'hidden' :) | |
Group: rebcode ... Rebcode discussion [web-public] | ||
BrianH: 12-Oct-2005 | Gabriele, you might want to change the compose/deep call in the rewrite rules generated by rebcode-define to compose. The current version might trip up makers of rewrite rules, like it does in your first example rule above in the (either paren? ...) clause. Let any further composition be up to the rule makers, just in case they actually need to use parens themselves. | |
Gabriele: 12-Oct-2005 | about the compose/deep, i think that's what most people will want. note that my either paren? has nothing to do with it (it is to handle parens in the expressions, not to workaround compose/deep) | |
Gabriele: 12-Oct-2005 | how would compose without /deep help there? | |
BrianH: 12-Oct-2005 | Compose would just compose the parens directly in the production; compose/deep composes all of the inner parens inside the code as well. | |
Gabriele: 12-Oct-2005 | >> compose/deep [([something (something)])] == [something (something)] | |
Gabriele: 12-Oct-2005 | if you have either or if or while or something like that in your production, you'll need /deep, and you'll be screaming if you don't have it ;) | |
BrianH: 12-Oct-2005 | OK then, I thought /deep meant /deep, my mistake :) I thought you needed the extra compose since it was to be applied later, at rewrite time. | |
BrianH: 12-Oct-2005 | That makes compose/deep more useful than I thought. | |
BrianH: 12-Oct-2005 | Well finding an example is simple: Just convert to stack code and figure out when the stack would be used more than one deep between ops. That means more than one temp var. What we get for going to a register machine in a stack language :) This would all be solved by a built-in USE directive with literal blocks that acts like USE in REBOL except only binding at rebcode creation time. It could be implemented as a built-in rewrite rule, changing the temporary variables to local variables, renaming if necessary. This rewrite would be done after the user-defined rewrites were done, but before the binding to the opcodes. Let me think about how this could be implemented - I am late for a class. | |
Group: Tech News ... Interesting technology [web-public] | ||
[unknown: 10]: 23-Mar-2006 | Im following this project now for some years (because its java im not very deep into it) but just nice to see what it does -> http://www.processing.org/ | |
Group: !RebDB ... REBOL Pseudo-Relational Database [web-public] | ||
Ashley: 7-Feb-2006 | Also note that many join operations can be rewritten as sub-selects, as in: sql compose/deep [ select * from a where [ col < ( sql [select max [col] from b] ) ] ] or: sql compose/deep/only [ select * from a where [ find (sql [select [col] from b]) col ] ] | |
Ashley: 11-Feb-2006 | Thanks guys, I've had a good look at both implementations and I've got ideas from both for a future full JOIN implementation; but at the moment my master/detail code has come along nicely. I've now enhanced the db-select function to accept statements in these additional forms: select * from master joins [select * from details where &id] on id select * from master joins [select * from details where [all [master-id = &id master-date = &date]] on [id date] which works exactly like a normal join with the following differences: a) It can only join one table to another b) Detail columns are always joined to the right of master columns c) Table.column prefixes are not supported so all columns in the join must be uniquely named Apart from that you get all the benefits of db-select (can replace * with specific column combinations, order and group by on the final result set, etc) *and* it's significantly faster than even the raw REBOL code example I gave before (as the SQL is parsed once within db-select and all loop sub-selects are done in-line). I've also implemented “lookups” with the following form: select * from table replaces id with name select * from table replaces [id-1 id-2] with [table-1 table-2] which performs a highly optimized db-lookup for each replaced value, but has the following restrictions: a) The lookup expects lookup tables in the form [id label other-column(s)] b) Only single-key lookups are supported c) A lookup that fails will replace the column value with none! I'm now in the process of benchmarking these changes against sqlite to see where the bottlenecks (if any) are. Feedback on the design decisions is welcome. While I was doing this, I was once again reminded how cumbersome it is to construct SQL statements (not just for RebDB, same goes for the other SQL protocols), as the heavy use of 'compose, 'rejoin, etc adds noise that reduces legibility. The design goal is to provide alternatives to: sql compose/deep [select * from table where [all [col1 = (val1) col2 = (val2)]]] so for a start the 'sql function should probably accept a string, to allow: sql join “select * from “ table type constructs; but this doesn't make the first example easier. So how about the 'sql function accept a block containing a string statement followed by a number of substitution variables, as in: sql reduce [“select * from table where [all [col1 = &1 col2 = &2]]” val1 val2] which makes things a bit more readable (and shortens the expression if longer word names are used multiple times). So the two questions here are: a) Is this a good idea? b) If so, what substitution character (& % $ @ other) will cause the least conflict with REBOL and/or SQL? | |
Maxim: 9-Mar-2006 | wrt simplyfing the use of "noise" ... why not just call compose/deep by default within the 'execute call of the client on ALL sql calls? it could be a global option and IMHO the use of parens within the code is quite obvious and is used in many dialects. and its less cumbersome than to add the reduce word in your code, a string and then variables out of context of the sql statement. | |
Group: SQLite ... C library embeddable DB [web-public]. | ||
Ashley: 4-Mar-2006 | Deliberate design that. The last line of 'sql is simply: buffer not: copy/deep buffer This is important when dealing with a large number of values as you want to pass a reference not double the amount of memory used with a redundant copy/deep! I'll add this "gotcha" to the documentation I'm writing. | |
Ingo: 5-Mar-2006 | Actually, there is no need to copy/deep buffer. Just change clear buffer to buffer: copy [] there is no problem with integer, decimal, and none values regarding sharing. Blob data is debased, which implicitly creates a new string. Strings are normally loaded, which creates a new string. only when you use /raw, you are dependend on the sqlite.dll having a sane interface and not reusing the returned string data. You could add this as a possible gotcha. | |
Ashley: 5-Mar-2006 | clear buffer is also an optimization as it defaults to 32K values (make block! 1032 * 32) and I don't won't to reallocate it each SQL call. The following benchmarks (Transactions Per Second) give some backround to the design decisions I made: buffer 1744718 copy buffer 282 copy/deep buffer 76 clear buffer 1144733 buffer: copy [] 824352 buffer: make block! 32768 387 So the approach I took optimizes for large result sets by allocating a large buffer once up-front and then just referencing it thereafter. | |
Henrik: 9-Nov-2006 | depth is how deep links should be gathered for downloading. Values above 3 or 4 can be dangerous. :-) | |
Group: Postscript ... Emitting Postscript from REBOL [web-public] | ||
Geomol: 5-Apr-2006 | I think, PS is good for printing too. I haven't looked deep into it, so I can't say, if PDF is enough. Does printers understand PDF directly, as they do PS? If not, PS is the way. | |
Group: Plugin-2 ... Browser Plugins [web-public] | ||
Volker: 11-May-2006 | Yes, i mean that cauto-onfig-script. IIRC it was not accessible. But digged not very deep. | |
Group: !CureCode ... web-based bugtracking tool [web-public] | ||
BrianH: 12-Feb-2009 | Thanks. Affected tickets modified accordingly. Here's the new criteria for applying the "not a bug" severity: - If the ticket is a Bug or Issue and the behavior is by design and intention, it gets marked as "not a bug" and dismissed. - If there is some question, comments are added saying so and the ticket is marked as "waiting" or "problem", depending on whether the question is more of a group thing or a Carl thing, with some leeway either way. - If the ticket isn't deep enough it will be rewritten to reflect the real problem, or maybe a new ticket will be made. - If the ticket is too broad or general, it will be marked "problem" and split into multiple narrower tickets. | |
Dockimbel: 12-Apr-2009 | I've started working on the "POST data lost when session times out" issue, but that requires some deep changes in the RSP engine, so this enhancement is currently postponed. | |
Group: DevCon2008 (post-chatter) ... DevCon2008 [web-public] | ||
Chris: 27-Dec-2008 | There's a lot to that. I was kind of using the DevCon '05 as a model (my fav so far) where all the info is knee deep on the front page with more detail on sub pages. | |
Group: reblets ... working reblets (50-100 lines or less) [web-public] | ||
Maxim: 19-Mar-2009 | rebol [ title: "explore.r" version 1.0 date: 2009-03-19 author: "Maxim Olivier-Adlhoch" copyright: "2009(c)Maxim Olivier-Adlhoch" tested: "win xp" notes: "Add any dir to the dirs block. options are self explanatory" ] dirs: [ %/C/ [] %"/C/program files/" [expand] "%tmp%" [label "temp dir"] "" [ label "my documents"] ] blk: [] explore-dir: func [path expand? /local cmd][ call/shell rejoin [" explorer " either expand? ["/n,/e,"]["/n,"] path ] ] ctr: 1 foreach [item opts] dirs [ ctr: ctr + 1 expand?: found? find opts 'expand label: any [select opts 'label to-local-file item] append blk compose/deep [ pad 20 (to-set-word setw: rejoin ["dir" ctr]) check (expand?) pad 20 btn 200 left (label) [ explore-dir to-local-file item get in (to-word setw) 'data ] ] append blk 'return ] view layout compose [across vtext right "expand?" vtext "folder" return (blk)] |
1 / 739 | [1] | 2 | 3 | 4 | 5 | 6 | 7 | 8 |