AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 1023 |
r3wp | 10555 |
total: | 11578 |
results window for this page: [start: 1801 end: 1900]
world-name: r3wp
Group: RAMBO ... The REBOL bug and enhancement database [web-public] | ||
Anton: 10-Feb-2005 | Oldes, good ideas. Do you think the "?" -> "%3F" is a replacement which is more prone to collision (than a longer string such as "_query_" ) ? | |
Sunanda: 11-Feb-2005 | It's a wierd problem, and RT don't seem able to fix it/ reset-dates.r is a sort of symptom suppressant. I've had to do full reysncs a couple of times.....Not a good thing to ask **everyone** to do. | |
Anton: 20-Feb-2005 | INMOLD: func [ format [block!] "internal formatting to apply eg. [newline all skip 3]" value [block!] "block you would like formatted" /local path code ][ ; wrap NEW-LINE code: reduce [path: to-path 'new-line 'value true] parse format [ any [ 'remove (poke tail code -1 false) | 'newline () ; redundant | 'all (append path 'all) | ['skip set n integer!] (append path 'skip append code n) ] ] do code ] | |
Anton: 22-Feb-2005 | DIR? - This function, useful as it is, is confusing, because it is not obvious that it goes to the filesystem or network to check. Perhaps it should be called EXISTS-DIR? I also feel the lack of a function just to see if a file or url ends with a slash. If you work with the filesystem at all you quickly find yourself checking for final slashes all the time. Here is my latest way of detecting that: #"/" = pick tail file -1 That sure is ugly to put into code all the time, and I keep wishing this is what DIR? would do. I understand that there is probably a huge body of code that would be adversely affected by this renaming, so I am looking for a nice short name. So far I thought of DIR-SPEC? (ie. "does this file have the specification of a dir ?") but.... | |
DideC: 25-Feb-2005 | >> do http://www.lexicon.net/antonr/rebol/util/demo-request-dir.r connecting to: www.lexicon.net Script: "Demo request-dir" (28-Dec-2003) Script: "scroll-table style" (7-Mar-2004) Script: "List Sort Button" (10-Dec-2003) Script: "header-group" (7-Feb-2004) connecting to: www.lexicon.net Include: Couldn't load-thru http://www.lexicon.net/anton/rebol/util/request-dir.r ** Script Error: request-dir has no value ** Near: request-dir/initial %./ | |
Anton: 26-Feb-2005 | eh? what do you mean ? Oh do you mean you can also see files at the bottom of the list ? Yes, that is by design. But the directories are the only items that are selectable. It always annoyed me not to be able to see all the contents of a directory in other directory selectors. | |
Anton: 10-Mar-2005 | Sorry Romano, I meant it to be negative. -2147483648 becomes a decimal! too. This is a problem for code that deals with flags etc. I have some code for FMOD and one of the flags uses the highest bit, but it gets loaded to a decimal! :-/ I do not wish to make a special test for that case. I wonder if this behaviour is really necessary, so I would like to make a wish report. | |
Anton: 14-Mar-2005 | Do you want to submit a bug ? I'm pretty sure you don't need an account to do that (although it *looks* like you do). | |
Gabriele: 21-Mar-2005 | try to paste that into a string and then try to DO the string. the problem is only there after the OPEN. so, OPEN does trigger it anyway. | |
Group: Parse ... Discussion of PARSE dialect [web-public] | ||
Tomc: 30-Jan-2005 | that said parse/all could do better at truly ignoring all as it is being asked to | |
Tomc: 20-Mar-2005 | Joe: What do you need a perl comatible regular expression to do? | |
Tomc: 20-Mar-2005 | and being very careful to never effectivly do [ user-input] without being sure user-input could not cause unintended side effectd | |
sqlab: 6-Jun-2005 | If you do not want to change the parse rules, you can just add if not flowtext [halt] before append text flowtext | |
Graham: 7-Jun-2005 | what you could do, is extract Didier's implementation of the TOP command, and then get the first line of each header in your mailbox. If it has the return-path set to <>, then note it in a list. When finished, go thru and issue deletes on all of those. | |
BrianW: 13-Aug-2005 | yargh. I know how to split with a single character as the delimiter: chunks: parse/all text "^/" How do I split where a blank line (2 newlines with nothing in between) is the delimiter? The naive solution I can think of just doesn't work: chunks: parse/all text "^/^/" | |
Group: !Readmail ... a Rebol mail client [web-public] | ||
Cyphre: 2-Mar-2010 | Nicolas, try this: do http://www.rebol.cz/~cyphre/scripts/r2/toys/imap-cli.r this is very simple CLI for access to google IMAP server (others should work too). Once you run it you can just type at thh prompt IMAP commands. Snippet of example session: Script: "IMAP CLI in REBOL" (none) {* OK Gimap ready for requests from 90.183.64.72 27if531665fxm.20 } IMAP>>login user pass {* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE A0001 OK [user-:-gmail-:-com] authenticated (Success) } IMAP>>examine inbox {* FLAGS (\Answered \Flagged \Draft \Deleted \Seen) * OK [PERMANENTFLAGS ()] * OK [UIDVALIDITY 2] * 5989 EXISTS * 0 RECENT * OK [UIDNEXT 70472] A0002 OK [READ-ONLY] inbox selected. (Success) } IMAP>> Hope this can be useful... | |
Group: SDK ... [web-public] | ||
Allen: 4-May-2005 | OS has a proxy auto detect option. Does anyone have an example to do this? | |
Allen: 4-May-2005 | Try again. Altme has an OS proxy auto detect option. Does anyone have an example to do this? | |
Tomc: 7-Sep-2005 | I have recently started testing with Rebol/View 1.3, and decided to purchase Rebol/SDK. I have a function in one of my scripts that was working in View during testing, but as soon I start using the SDK binaries it no longer... um... functions. In the function, I am trying to set a value in an array using an index variable. In view, I could do: values/:index: value But in the SDK, I get: ** Syntax Error: Invalid word -- :index: Again, any help would be appreciated. Thank you, robert w. dumond | |
Micha: 10-Oct-2005 | how do to write in rebolu this ? | |
Benjamin: 10-Oct-2005 | unsiged integers can safely be casted to integers, you sould know that some dll's wont work just because the need special arguments like pointers to certain data etc... nay whay why do you need to write a file using windows API can't you use rebol ? | |
Henrik: 1-Nov-2005 | gabriele, too messy :-) "Do I really need that big R icon on my desktop?" It has to be one click to run. Grandma style. | |
Pekr: 4-Dec-2005 | But ask yourself, how often do you need to remove some specific code from your app? How mcuh will you save? Rebol is not resources savy anyway, at least not in the runtime, for most embedded apps to work with ... | |
Ashley: 4-Dec-2005 | Most of the GUI work I do does not use VID or networking, so enface without any of the view-* or prot-* scripts is what I want. I do not want to use a loader front-end based on rebview that includes all this code. The cost in executable size may be small (less than 100Kb), but it's the start-up time and memory cost that I like to get as lean as possible. This will become more of an issue if and when REBOL is ported to small memory footprint devices. | |
Graham: 5-Dec-2005 | If you have an up-to-date SDK license, you can download the new distribution from: www.rebol.net/builds/sdk If you do not have an SDK or command license, we encourage you to buy one and help support REBOL development. | |
Group: !RebGUI ... A lightweight alternative to VID [web-public] | ||
Pekr: 31-Mar-2005 | Dunno if I am clear about what do I mean, but maybe ability of getting focus to group-box should be enough, it it provides focus isolation described above .... | |
shadwolf: 31-Mar-2005 | apporting code to any project is hard I understand this but a first step (what I try to do ) is to apport yet existing bunch of code that are fitted to REBGUI Ashley takes then the role of merger and last adapter. I hope this free some time for him to focus on work of the engine. | |
Ammon: 31-Mar-2005 | So do we want to use the global event system so that we can have modal and auto-closing dialogs or does someone know another way to accomplish it? | |
shadwolf: 31-Mar-2005 | or do we prefer by this work to convince people | |
shadwolf: 31-Mar-2005 | Contributed code: sure but yet existing amazing thing wasn't thinked to be added to RebGUI so If we want a good time average and retake yet existing widget. I think it can be seen as an omage to those ppl that spent lot of time try to implement this widgets. If we find a way to include them it's like we have a parternity and a real look over what exists in the rebol free community that"s a king of concretisation and that allow us to improve faster I don't think pruning ctx-menu is slower that redone the work from scratch ;). And As I say earlier that shows our consern and attention to what exists in rebol free community ;). Like "Thank you man you give us this widget now look what we can do with how it grow and how it became self dependent. If your still want to apport to it or have some ideas on it to share with us your very welcome" :) | |
Carl: 31-Mar-2005 | But, I think the non-VID GUI projects are good too. Because, when people use the SDK, they can use whatever GUI engine they prefer. They do not need to include VID in their code at all. | |
shadwolf: 31-Mar-2005 | Carl If I had the knowledge to do so I will do so but most of what I learn about it was learn through the simple but amazing anamonitor and every day I learn new things Ashley is very y mentor like cyphre or didec or Etienne Alaurent :) | |
shadwolf: 9-Apr-2005 | how do you plan to detect the fact that the button header content of the notepad widget is bigger dans the window :) | |
Ashley: 9-Apr-2005 | Brock: validation is also on my ToDo list (you can see the beginnings of it in the field widget character length limits). A couple of questions though (both how it is done in .Net and how it *should* be done in RebGUI): What's the granularity of the validation? Does it allow the specification of a mask (e.g. for phone numbers)? Is it validated as I type, when I leave the field, or when I save the form? (Or is it flexible enough to let me choose the level of validation?) shadwolf: Haven't really thought about it much, but I figured the tab-panel redraw feel was a logical place to do the work. | |
Vincent: 9-Apr-2005 | construct: func [ block [block!] /with object [object!] /local nb spec values name value ][ if not with [object: object!] spec: copy [] values: copy [] parse/all :block [ any [ to set-word! (nb: 0) some [ set name set-word! (nb: nb + 1 append spec :name) ] set value skip ( insert tail values nb insert/only tail values :value ) ] ] append spec none object: make object spec foreach [nb value] values [ loop nb [ set in object (to-word first spec) either find [true false none on off] :value [do value][:value] spec: next spec ] ] object ] | |
shadwolf: 11-Apr-2005 | first change into the arrow/feel/engage down event you will need to add if face/action [do face/action] to enable the arrow to launch action ;:) | |
shadwolf: 11-Apr-2005 | another thing anoying is that we need to move the buttons so to do this easier we need to pack the header button of the tab-panel into two boxes in order to slide them ;) | |
Ashley: 25-Apr-2005 | Robert: LED-Group attributes can be changed at runtime with: led-handler/pane/2/data: true led-handler/pane/2/text: "Test" show led-handler but the specification (number of LEDs and orientation) is fixed at specification time. I have no plans to change this. Pekr: Most folks are familiar with WinXP, it is something to model. The basic RebGUI color scheme is controlled by less than a dozen words, and arrow / chevron / other is fully inheritable; but the "look" (e.g. tab shape and active shading) is hard-coded in most cases. So the answer is that you can easily change the cosmetic aspects of the UI but not the fundamentals. Gregg: known issue. Volker: Not sure which way you mean. If you want to contribute new widgets that work with both VID and RebGUI then I'll be spending time optimizing them for RebGUI which will break their VID compatibility. If you mean that you want to make the RebGUI widgets work under VID then feel free to do so with the widgets I have authored. For other widgets, please contact their author(s). | |
Ashley: 26-Apr-2005 | Nice, I understand what you want to do now ... create a GAL (GUI Abstraction Layer) that enables RebGUI widgets to be used in VID with zero RebGUI changes. Interesting to see whether you can get it working the other way (VID -> RebGUI) as painlessly! ;) | |
Volker: 26-Apr-2005 | btw is the verbose dialect by design or to keep parser short. i guess i could do some automatic with few lines overhead. to allow strings and actions without the extra brackets. | |
shadwolf: 27-Apr-2005 | Well after one day of work on the multicolumn list here is a little screen shot of what I succed to do http://shadwolf.free.fr/rebgui-list.jpg | |
shadwolf: 27-Apr-2005 | What I need to do : | |
Robert: 28-Apr-2005 | How does this line work? | set arg word! ( either in widgets arg [append-widget widget: arg] [attribute-color: get arg] ) append-widget checks for 'widget but 'widget is set after the call to 'append-widget Further, in the parse-rule the above line comes last. But it parses the widget words. When do the parameters get parsed? I would have expected this rule to be the first after the keyword rules. | |
shadwolf: 28-Apr-2005 | robert yes this feature was yet passed to me by cr8825 on french forum for non visible data what I plan to do Is hadding a special flag like hid for example:) | |
shadwolf: 30-Apr-2005 | graham do you know a way to happend things to a fonction instead of substituate it completly | |
shadwolf: 1-May-2005 | hum not so easy to do ... | |
shadwolf: 1-May-2005 | last thing to do is to draw a vertical line with effect draw at position of the mouse | |
Group: AJAX ... Web Development Using AJAX [web-public] | ||
Chris: 3-Dec-2005 | Really the whole buzz is focussed around the XmlHTTPRequest object that Microsoft, then others added to their Javascript environment. It isn't pretty (by Rebol standards) and has some limitations, but is effective enough to have opened new avenues in what one can do in creating web applications. **cough** Squigglz **cough** You can tell this is a Microsoft 'innovation' by the awful name 'XmlHTTPRequest' (XML not required), but there it is... | |
Henrik: 5-Dec-2005 | I still think it's a poor replacement for ordinary apps... browsers were never meant to do this kind of thing. | |
Henrik: 6-Dec-2005 | sadly, it probably will. it's the same thing as using MS Word to build webpages. never meant to do it, but it was shoved in there for the sake of adding some random feature | |
Ashley: 8-Dec-2005 | it needs to create a javascript dialect - then instead of waiting for someone else to do it, either create one yourself or start a project of like-minded individuals. ;) | |
[unknown: 9]: 3-Mar-2006 | Our plan is actually to split off a page and start the UI from scratch for the Framework. it will be fun. We will simply do everything one step at a time, and correctly. | |
Pekr: 11-Apr-2006 | I just would like to ask, if there is any perspective for rebol - e.g. that we could have core in browser (not view) and do ajax too? :-) | |
Oldes: 11-Apr-2006 | the netvibes site is nice, but the problem is still the same, - you have to do it in old way as well, if you want to make pages for more people then net-freaks | |
Henrik: 13-Apr-2006 | Flash is starting to catch up on the GUI part and they are much more light weight than Java, but I'm not sure how easy/hard they are to do | |
Sunanda: 23-Apr-2006 | Bear in mind that around 10% of all people do not have javascript enabled. That way be through choice, necessity, or following US government security advice. Javascript usage stats: http://www.w3schools.com/browsers/browsers_stats.asp Before clicking on a link to a web site that you are not familiar with or do not trust, take the precaution of disabling active content. : http://www.us-cert.gov/cas/tips/ST04-012.html With PHP all the oomph is in the server , so it is under your control. As you cannot guarantee that JS will be available in the client if, extra steps are needed to ensure the website works without it -- even though it may work spectacularly better with it. | |
Chris: 23-Apr-2006 | Of course there are glaring drawbacks, but they don't matter enough. Widgets (read Reblets) do have a niche -- eg. Apple's Dashboard is a far better experience than Windows Live and its ilk -- but we're not in that space, Reblets are still too tricky to deploy... | |
BrianH: 29-Jan-2009 | Not everyone can or will install Silverlight, and not every site can insist that their customers do so. MS developer tools division tries to support whatever their developers want to do on MS development platforms like ASP.NET. AJAX needs JS frameworks. | |
Group: Syncing ... Syncing technologies [web-public] | ||
Pekr: 4-Jan-2006 | I would like to have answered: 1) what technique to use for "timestamping" - do we continue with timestamps against one central time, or do we use hashes, or sequencing numbers, or mixture of mentioned techniqueues? We might look how others do it ... 2) better support for possible conflicts - imagine following scenario - you have some reblet, e.g. Contacts - one person starts editing it, then another person starts editing it too. First one syncs (saves changes), then second one does the same - changes of first ones are lost. How to aproach this - introduce some kind of resources locking? (not real locking, but we are message based, so could be queued) It could work as follows - person 1 wants to edit some record. Edit button posts request-for-lock. Lock is assigned. I other person tries to edit, it will not obtain lock. We could even introduce protocol level support, so that the person is informed, who has the lock, and how long. The trouble usually comes, when person goes off-line after the edit started - we need to remove dead-locks, so by default, I would lock for 20 minutes e.g. and the lock would have to be renewed, if person 1 wants to work longer with the given document ... another scenario is, when you actually start editing something which might require locking, but you start already being off-line. We could create lock-request, just not synced yet. Once you go on-line, you simply check seqno, if the lock is possible, and the given record not modified. But what if it was modified in the meantime? e.g. you might be working with stock system and someone else in the office sells few units, for which you may start writing offer for to another customer. Tough scenario - would like to know your opinion. Maybe some things simply need to be done on-line only? 3) I needed small file-sync scenario - could use IOS, but IOS can't sync and "forget". Simply idea is to have different kind of syncing techniques, so e.g. for file transfer you have dir to sync, if correctly synced, log it, forget it, delete it on client and or server (or not, it depends) as for IOS, local storage could be encrypted (or not), imported into RebDB (no single better solution so far introduced for rebol), sync-per-record or record-set could remain (record=document). RebDB on Serve would speed things up significantly too ... another possibility is to think outside the IOS terms, in more general way - simply thinking about world of objects, being in various states, with various life-time around internet and on-line or off-line devices. I think that maybe we could find some simpler solution than SyncML and the likes ... another point - such techniques should be transport independent, so I would not like to hear that it needs this or that ;-) So, anyone? | |
Group: !Liquid ... any questions about liquid dataflow core. [web-public] | ||
Maxim: 18-May-2007 | ok, so what do you have to manage about the proxy? | |
Mario: 18-May-2007 | I am wondering what to do: on one hand I'd really like to create a liquid application, on the other hand I must finish the program in a few days... | |
Mario: 18-May-2007 | I will try to use the liquid concepts adding attributes to the nodes and do a "classical" plugin for the proxy | |
Maxim: 18-May-2007 | but seeing people's real use cases helps me see where to put the time on whatever I do next, and your example shows me that I am dead on my priorities :-) | |
Gabriele: 19-May-2007 | my conclusion is the same as nenad's... it's overkill :) i think i can do all that users need to do with just event handling. that is, recognizing that in the ui everything is about events. the system does not need a network, just direct "links" between elements (call them widgets, styles, etc). | |
Gabriele: 19-May-2007 | volker: broadcasting to everything... do you think that scales well? | |
Gabriele: 19-May-2007 | also... we have network events, system events, you could have usb events and many more... do you broadcast everything to everything? when an event generates another event, is it broadcast to everything? it does not seem a great model to me... :) | |
Volker: 19-May-2007 | It works for the gui. I dont step into theory about slow, if i have a real life example which is fast :) about everything to everything, that would be in a bad case: each event to 100 receivers, 100 events/sec, 10k dispatches/sec. cpu can do 1 billion instructions. 10k instructions/event. most of them: i am interested? no. ~100. | |
Maxim: 22-May-2007 | The truth is, I do not have the reflex of using liquid for most of my coding, still, but actuall exposure and use, is forcing me to value its effect on my code. this is empiric use, not advocacy. If you could see just how easy it was for me to build fully bug-free AGG gadgets in so little time, you'd understand. its not about just sharing data between gadgets, its about allowing your code to know what's going on. | |
Maxim: 22-May-2007 | and in fact, if we do add a measure of reflexivity to VID, we will just be redoing most of liquid, or run in the same issues, I had in my other prototypes, which led to this design. ;-) but we will not gain the advantage of having generic dataflow! | |
Maxim: 22-May-2007 | dataflow has nothing to do with GUI. | |
Maxim: 22-May-2007 | you see, if we had a dataflow datatype, we would not even need to talk about "do we add this to VID" people could just set values to attributes which are DF based. | |
DideC: 24-May-2007 | Hi Max, Do you have any demo apps using liquid ? Something simple, but usefull to help me (and others) understand how and when to use it. | |
Maxim: 24-May-2007 | I do want to convert rebolek's famous color picker into using liquid... one of the thing which will be made better is the fact that I can sample colours from mouse events much more often than actual refreshes occur, so that it should feel smoother. | |
Maxim: 24-May-2007 | so, my answer to DideC, I guess, is: Give me ideas on simple demo applications I can build ! And I'll consider which one I do first. :-) I need and want this info to make the whole package more appealing and comprehensible. The current uber simple Sum example, just gives a glimpse of the engine's capabilities, not of its application. | |
Maxim: 24-May-2007 | my next step for liquid (what I was working on During the devcon, but wasn't able to get done do to lack of sleep) was the creation of liquid net. | |
Gregg: 25-May-2007 | It would probably be easy to plug liquid in to nanosheets. I'd like to see that too. The current evaluation order is fixed L->R-->Top->Bottom; with liquid you might be able to do away with that entirely, and let the evaluation drive things. | |
Maxim: 25-May-2007 | mario, mind maps are very cool... I would like to make an optimised tool for quickly creating and organising mind maps in elixir but I can say that I hope others will join me in adding toolsets... its the whole point of elixir, an open, common framework of integrated and live tools. anything goes into anything, so you can do things like share data between, you graphics, mind map and project management... why not even use some of it to drive the GUI building for one of the panes... I mean, in the end, they are all being used for one goal. | |
Will: 6-Feb-2009 | Maxim: do you have something cool to menage nodes and trees ? would you share? 8) | |
Josh: 26-Feb-2009 | the !sum plug is a good example,but I get a little stuck beyond that. From my first impression of trying to do this, it seems like I'm going to have to define so many variables to make it too troublesome. But I'm sure that I'll have to learn how to think in the right way to avoid all that | |
Maxim: 27-Feb-2009 | I did a D&D character manipulation application once when prototyping liquid, so I understand exactly what you are trying to do :-) | |
Maxim: 27-Feb-2009 | then another aspect called "armour-class" can be added and it know to use the current dexterity bonus to itself. now you can build up the whole character, up to 12th level like this (adding all skills and levels, etc), and at the end, decide you want to see how it results with an elf, instead... then paf, you change the root aspect "race" to elf, which causes dex to increase by one, and since everything is still connected, your ac is increased by one, without ANY single other thing to do than ask for the resulting character. | |
Maxim: 27-Feb-2009 | using this technique, I was able to do skining which is independent of the gui engine underneith. one only has to support the aspects in his skin and the skins (and gui using them) remain valid, even though you are running on opengl or vid. | |
Maxim: 27-Feb-2009 | yeah I understand... really I do. as I used to say... "I buit it, and it works really well... but I still don't know how to use it !" | |
Maxim: 27-Feb-2009 | I've been wanting to do this for ages.... but having someone actively looking out for it... makes it much more compeling to do ... | |
Josh: 1-Mar-2009 | hehe, yeah, I'm starting to finally fix all my poor coding practices, especially with naming. Anyways, sounds good, again, you don't need to do the whole char gen or anything, but just a good chunk for me to see how to put things together | |
Maxim: 2-Mar-2009 | next step will be to add some data to manipulate... I'll do a character attributes builder. all 6 stats with a +/- counter besides each which you press and all the display magically adapts, even stopping the buttons when out of range, or no more points to attribute :-) | |
Maxim: 5-Mar-2009 | ok, so I have a bit of spare time tonight and will build you a stand-alone example of a small RPG character editor. Using !plug objects directly, so you can see the process of subclassing the core plug to have it do something usefull. | |
Ammon: 7-Mar-2009 | How hard do you think it's going to be for you to port Liquid to R3? | |
Ammon: 7-Mar-2009 | Interesting... I'm a heavy prototyper. I need one statement that does something to start with and I often have to see each additional statement functional before I can move on to the next. If I spend enough time within a given environment I'll eventually be able to rebuild it from scratch but your code has always been deceptively simple so I often need an explanation of why you do what you do how you do it. | |
Maxim: 7-Mar-2009 | I'm REALLY happy to do it. its a great opportunity for me to actually get some limelight on liquid :-) | |
Sunanda: 7-Mar-2009 | To some extent, yes. We do record counts of "likely human views" vs "likely bot views" -- but the stat you see is the sum of the two. And the division is not perfect by any means. I'll slightly reverse my previous statement......The "download this script" link is protected by a HTML attribute "rel=nofollow". That should prevent well-behaved bots from following the link. So the count of downloads is likely to to human rich. | |
Maxim: 7-Mar-2009 | I have a newer version which has the "ability modifiers" added as extra labels to the right of the abilites... it took me 5 minutes to do, and it only needs one new simple !plug derivative: ;- !ability-mod !ability-mod: make !plug [ valve: make valve [ type: 'ability-mod ;----------------- ;- process() ;----------------- process: func [ plug data ][ vin [{!ability-mod/process()}] plug/liquid: 0 vprobe data if integer? data: pick data 1 [ plug/liquid: to-integer (data - 11 / 2) ] vout ] ] ] and necessary linkage within the !character setup, and appropriate faces in the window layout. | |
Maxim: 8-Mar-2009 | just thought I'd share this list I built while coaching someone in using liquid last night... SANITY PRESERVING KNOWLEDGE WHEN USING LIQUID: -------------------------------------------- #1: liquid isn't a bully - liquid shares its state, but asks for data (pulls, observes, etc) from its subordinates ("parents"), not the other way around (it doesn' push or force feed, like a highly inneficient signal messaging engine). #2: liquid is lazy by default - unless a plug or one of its observers ("children") is stainless, nothing will process automatically (thus, faces usually are set to stainless, so that they refresh automatically). #3: liquid has several computing modes in a single base class. * linking is for once sided dependencies * piping is for inter-dependencies or synchronisation * containment is for data storage * linked-containment is for processed data storage #4: liquid mutates - plugs automatically change computing modes when you call some methods like linking, piping and filling. depending on the order of these operations, a plug may "stick" to its previous computing mode. e.g. a piped node remains piped, even you attempt to link it to something. #5: liquid is alive - remember that as you are setting up a liquid network, your plugs will start receiving messages as you are building up the tree, meaning that the process() (and other) functions might be triggered before every expected connections are done. always verify the integrity of the data before starting the process. (i just got stumped by this one again, 5 minutes ago). #6: liquid is a collection of droplets - each plug should do one thing or manage one step of a process. the more you break up the network, the better you will be at making it stable, reusable, flexible, and fast. #7: liquid is highly memory efficient - !plug uses shared classes. so all the liquid operations are in a sub-object called a valve. Thus, when you call internal functions, remember they are within the valve, and you must supply the plug as its first argument. my-plug/valve/stats my-plug #8: liquid is volubile - its slim-based verbose & indented console printing engine (vprint) is YOUR BEST FRIEND. use it profusely, to understand the chain of events and what the hell is going on. | |
Maxim: 8-Mar-2009 | SANITY PRESERVING KNOWLEDGE WHEN USING LIQUID: -------------------------------------------- #1: liquid isn't a bully - liquid shares its state, but asks for data (pulls, observes, etc) from its subordinates ("parents"), not the other way around (it doesn' push or force feed, like a highly inneficient signal messaging engine). #2: liquid is lazy by default - unless a plug or one of its observers ("children") is stainless, nothing will process automatically (thus, faces usually are set to stainless, so that they refresh automatically). #3: liquid has several computing modes in a single base class. * linking is for once sided dependencies * piping is for inter-dependencies or synchronisation * containment is for data storage * linked-containment is for processed data storage #4: liquid mutates - plugs automatically change computing modes when you call some methods like linking, piping and filling. depending on the order of these operations, a plug may "stick" to its previous computing mode. e.g. a piped node remains piped, even you attempt to link it to something. #5: liquid is alive - remember that as you are setting up a liquid network, your plugs will start receiving messages as you are building up the tree, meaning that the process() (and other) functions might be triggered before every expected connections are done. always verify the integrity of the data before starting the process. (i just got stumped by this one again, 5 minutes ago). #6: liquid is a collection of droplets - each plug should do one thing or manage one step of a process. the more you break up the network, the better you will be at making it stable, reusable, flexible, and fast. #7: liquid is highly memory efficient - !plug uses shared classes. so all the liquid operations are in a sub-object called a valve. Thus, when you call internal functions, remember they are within the valve, and you must supply the plug as its first argument. my-plug/valve/stats my-plug #8: liquid is volubile - its slim-based verbose & indented console printing engine (vprint) is YOUR BEST FRIEND. use it profusely, to understand the chain of events and what the hell is going on. | |
Maxim: 8-Mar-2009 | one note... you might want to wait for me to release liquid-vid and glue... they will both simplify coding of things a lot. and liquid-vid will even have a few dynamically adjusting faces like row and column. funny thing is that its taking me far less energy (and code) to implement more dynamic and smart faces than glayout so far. its also taking a lot less code to do a lot of the same things in glayout. | |
Maxim: 13-Mar-2009 | ------------------------------------------------- NOTE: FROM NOW ON, every usable !plug definition that I post will be in black, to make it easy to differentiate from test code, and copy in your own libs. ------------------------------------------------- ;- glue-proc-face: glue-proc-face: make face [size: 100x100] ;----------------- ;- !gfx-text-area ;----------------- ; this class returns the area which a value, when represented as a string, occupies. ; ; returns: a pair representing width and height ; ; usage: ; linked only, unlabeled. (filling this node will permanently freeze it) ; ; inputs: ; (1) [any!] value ; the first input is formed to a string, or set to "" ; ; (2) [object!:font] font to use ; the test will be run with this font, irrelevant of what font is currently set in the face. ; ; <TO DO>: add explicit support for /para facet ;----------------- !gfx-text-area: make !plug [ liquid: 0x0 ;----------------- ;- frozen?() ;----------------- ; plug won't do anything until you have proper linkage done. ;----------------- frozen?: func [ ][ vin ["" self/valve/type {/frozen?()}] vout (2 <> length? subordinates) ] valve: make valve [ ;----------------- ;- process() ;----------------- process: func [ plug data ][ vin ["" self/valve/type {/process()}] plug/liquid: 0x0 glue-proc-face/font: data/2 glue-proc-face/size: 1000x1000 glue-proc-face/text: any [ attempt [to-string data/1] "" ] plug/liquid: size-text glue-proc-face vout ] ] ] | |
Pekr: 13-Mar-2009 | I think I still don't understand what in particular Liquid is, but would it be e.g. good system to do some animation system in? I mean - something like Scala. You have some objects, wipes, effects, happening at various times, and the might be cross dependant, etc., so that when something happens here, something else happens there :-) | |
Group: DevCon2007 ... DevCon 2007 [web-public] | ||
Pekr: 10-May-2007 | What are guys trying to do on their notebook? :-) I know one magic solution C:\> format c: (enter) | |
Pekr: 10-May-2007 | Tell Maxim put some small bits of negativity around, as I am not there and he knows how to do it too :-) | |
[unknown: 9]: 10-May-2007 | I do plan to use the list I posted for my session as my lead points for my talk. |
1801 / 11578 | 1 | 2 | 3 | 4 | 5 | ... | 17 | 18 | [19] | 20 | 21 | ... | 112 | 113 | 114 | 115 | 116 |