AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 708 |
r3wp | 7013 |
total: | 7721 |
results window for this page: [start: 2301 end: 2400]
world-name: r3wp
Group: I'm new ... Ask any question, and a helpful person will try to answer. [web-public] | ||
Henrik: 31-May-2007 | I find myself changing the mindset with REBOL every few years, because for a long time I was afraid of for example, using PARSE. PARSE is so central and important that it can change the way you work with REBOL, if you have stayed away from it. I had the same experience when starting to use the SDK and when starting to do networking stuff in REBOL to let scripts communicate with eachother. It's not just a new set of ideas that turn up that lets me add to existing scripts, but doing the same scripts in entirely different ways. I feel I know about 30-40% of REBOL. :-) It's so damn deep. | |
RayA: 31-May-2007 | Thanks everyone for your prompt and honest comments. Why did I join this community? The primary reason is to be part of a small, smart and passionate group who think differently, which when combined with REBOL is a very powerful combination. Therefore it would seem that focusing the resources of the community on a "killer" application leveraging REBOL3 would increase the chance of REBOL becoming main stream, and as a side effect possibly allow part time REBOL developers to become full time REBOL developers. As an example, think what Ruby on Rails did for Ruby. Wouldn't it be nice to get paid to do what you love! IMO/E I believe it's very important for the application vendors to have very close and strong ties with the platform vendor so architectures and features can be designed and exist at the correct layer. Also, if something needs to be implemented in the application but really belongs in the platform, it can be done in a way that enables that feature to be migrated in the future with minimal impact and extra work. This seems to fit with REBOL's history of improving based on experience. I'd like to think it's possible to build great applications in 3 months, with new releases every three months as required based on requirements, so I don't have the time (and maybe not even the ability) to spend years learning REBOL. I'd also argue that for a company to be successful, it needs a small team to have a number of diverse skills which is focused on delivering the product. I mentioned when I first signed on that I would be interested to meet REBOL gurus who are in Northern California and see what happens when interesting (or not) people get together. Sorry for the length of this post and thanks for listening. | |
Geomol: 3-Jun-2007 | I remember, I found it hard at first to read and understand REBOL, but after some time I got it. My example above is maybe a good example. It is evaluated like: insert (back (tail serie)) (somefunc + 1) So 'insert' take 2 arguments, 1. and 2. outermost parenthesis. 'back' take 1 argument, so does 'tail'. 'serie' is a variable. 'somefunc' is a function taking no arguments. '+' is an operator connecting 'somefunc' and '1'. If a programmer can think this way easily, REBOL should be no problem. | |
Chris: 3-Jun-2007 | Perhaps that should be concise -- the expressive I guess is the ability to set the condition after the action, in a way that is easier for our brains to parse. Of course, the core of Rebol's expressiveness is that the language is built on top of a consistent, robust vocubulary (datatypes), though it can take time to learn how to construct the most expressive statements. Ruby is not instinctively reflective (is this the right term)? Now I'm rambling... | |
Gabriele: 4-Jun-2007 | if it's just to be english-like, we can beat them any time with a simple dialect :) | |
Geomol: 4-Jun-2007 | I think, performance should win over expressiveness. I'm think, we don't have action unless condition in REBOL, because it'll cost in performance to check, if there is an 'unless' after the action. As it is now, the REBOL intepreter knows what to do most of the time. Operators are the exception of the rule. | |
Geomol: 4-Jun-2007 | This might give a hint: >> rule: ['add set a number! set b number! (a + b)] >> time [loop 1000000 [parse [add 4 5] rule]] == 0:00:04.880101 >> rule: ['add set a number! set b number! opt ['+ set c number! (b: b + c)] (a + b)] >> time [loop 1000000 [parse [add 4 5] rule]] == 0:00:05.541085 The rule without infix + seems to be 10-20% faster than the one with infix +. This is only a hint! It might be different, if the language were changed. | |
Geomol: 4-Jun-2007 | If I allow infix + after each number, the result of course get worse: >> rule: ['add set a number! opt ['+ set c number! (a: a + c)] set b number! opt ['+ set c number! (b: b + c)] (a + b)] >> time [loop 1000000 [parse [add 4 5] rule]] == 0:00:06.360697 | |
BrianH: 4-Jun-2007 | Geomol, I wouldn't know about R3 but in R2 ops are a little faster than their prefix equivalents. The reason is that DO already knows which words are ops, while it has to look up other words to figure out what they are. This lookup takes more time than just grabbing the right action out of the op table. It does have to retrieve the index into the op table from the value assigned to the op, but it's still faster than general action lookup. Try assigning a non-op value to an op word - it will error on evaluation. | |
BrianH: 4-Jun-2007 | Why did I join the community? Because when I joined, REBOL was still pretty new. R2 wasn't there yet - the first alphas for it came a few months after I started playing with the language. Most of the low-level behavior of the language was completely undocumented outside of RT, and they were still trying to position the language as easy to use, easy to learn, high level. It still looked like R1 - Scheme with a different syntax - but it was different. A challenge. So I dug in. I tested every function, everything I could find out. I asked a lot of questions on the mailing list. If they weren't answered, I dug in further and figured it out myself. And I got into a lot of really interesting arguments with the people on the list, testing and probing the language until all of the undocumented stuff became clear. Those early arguments became the low-level documentation of REBOL. And then came the books, and the community got bigger. I started using REBOL at work, even when it wasn't the language I was supposed to be using - code is easier to generate with REBOL than it is to write directly in other languages. More fun too. That's the hook: REBOL is fun. There is a principle I read in a Heinlein essay years ago: The principle of Creative Laziness. He wrote about the guy who invented the automatic pilot, back in World War 2, because piloting back then was a big hassle and he was too lazy to do it. Instead of doing the drudge work he did the more interesting task of figuring out how to automate it. If necessity is the mother of invention, then laziness is its father. Laziness is a virtue. That's what dialecting is all about: Automating the drudge work and wrapping it in a nice little language because it's more fun than doing it manually. More efficient too, a lot of the time. Do you know who REBOL appeals to the most? Engineers, scientists, hackers, analysts, problem solvers. People with opinions, people with enough of a twisted sense of humor, of the world, that they don't want to just sit still and accept the way that they are told the world is - they want to figure it out and remake it if necessary. Interesting people: REBOL's other hook. Welcome to the cool kids' table! | |
Will: 14-Jun-2007 | well, I've spent almost an hour trying to figure out.. next time I'll go stright to the dictionary! | |
PatrickP61: 17-Jul-2007 | What is the best way to get an formatted timestamp that matches IBM DB2 in this form: ccyy-mm-dd-hh:mm:ss.nnnnnn I tried this, but I'm stuck on how to extract out the nanoseconds from Now/precise: Timestamp: rejoin [ now/year "-" now/month "-" now/day "-" now/time ".000000" ] Also, if the month or day is less than 2 digits, I need a leading zero -- how can I do this easily? | |
Sunanda: 17-Jul-2007 | To get the seconds: third now/time/precise Use first, second, to get HH MM. Not sure it is nano-second precise! | |
PatrickP61: 17-Jul-2007 | I got the following when I did this: rejoin [now/year "-" now/month "-" now/day "-" now/time "." third now/time/precise "000" ] 2007-7-17-13:40:36.36.748000 which is pretty close, except the seconds are repeated again. | |
Sunanda: 17-Jul-2007 | Try this: rejoin [now/year "-" now/month "-" now/day "-" first now/time "." second now/time "." thir d now/time/precise "000" ] But you may need to add some more trailing zeroes.... a time of 01:02:03.100 would show in REBOL as 1:2:3.1 | |
PatrickP61: 17-Jul-2007 | Sure -- Why not -- I'm learning more and more all the time | |
PatrickP61: 17-Jul-2007 | OK -- I'm perplexed as to when does things get evaluated. If I have a variable like Now-TS: to get the formatted time, it will be resolved immediately and return the time. If later, after I wait 1 second, I want to print the new formatted timestamp, it returns the exact same value as before, when I know the time has acutally changed. How do I get the time now to be resolved again? Example code: print now/precise gives 17-Jul-2007/14:35:21.308-5:00 wait 1 print now/precise gives 17-Jul-2007/14:35:22.324-5:00 now/precise is evaluated immediately Now-timestamp: rejoin [ Now/year "-" Now/month "-" Now/day "-" first Now/time "." second Now/time "." third Now/time "000" ] print Now-timestamp gives 2007-7-17-14.35.22.0000 wait 1 print Now-timestamp gives 2007-7-17-14.35.22.0000 the exact same time -- not evaluated immediately Is it this way because Now-timestamp has been assigned and already evaluated -- if so, how do I have it reevaluate it again? | |
BrianH: 17-Jul-2007 | You might consider that the time will march on during the course of your evaluation, so you might want to store it in a local variable, like this: pad0: func [x n [integer!]] [head insert/dup (x: form :x) "0" (n - length? x)] now-timestamp: func [/local n] [n: now/precise rejoin [ pad0 n/1 4 "-" pad0 n/2 2 "-" pad0 n/3 2 "-" pad0 n/4 11 "000" ]] | |
PatrickP61: 17-Jul-2007 | Thanks Brian. I will play around with it a little more. Just to re-iterate my understanding of rebol assignments A variable is not evaluated when assigned - the value is, and then it is assigned to the variable. You don't really define" variables in REBOL" So at the time of assignment, the text following the : is assigned to the variable but is not evaluated. That is to say the variable is like a pointer to the text string that was typed in. Does that mean that Rebol will not do evaluations until it needs to. For example: In-file: %file_path_name.txt In-text: Read In-file write %out-file-path-name.txt In-text <-- this is where the evaluation occurs to resolve all the above? Is that right? | |
BrianH: 17-Jul-2007 | That's not what I meant. I meant that the expression to the right of the set-word (s:) is evaluated. The result of that evaluation is the value that will be assigned to the word. So, you were right the first time about the evaluation order. | |
PatrickP61: 18-Jul-2007 | Thanks for your patience with me. I'm wrong about the evaluation. It is done at the time of the assignment returing whatever value to the variable. The reason Now-timestamp had identical values, even after waiting 1 second was that it was evaluated once, with a value put into it, then the wait happened, then I simply re-printed the same value as before, because I did not re-do the variable. I think I was making it harder than it really is. I don't understand this statment: Later on you can either do a full evaluation of the word by stating it directly ( a ) or you can just retrieve its value by using a get-word ( :a ) Are you saying that I can simply type Now-timestamp to have it re-evaluated at that time? | |
btiffin: 18-Jul-2007 | Patrick; I just looked back a little bit, your question about formatted time-stamps...Chris has donated an awesome date time formatter to the rebol.org repository. Very close to strftime in function. Check out http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=form-date.r | |
btiffin: 18-Jul-2007 | form-date now/precise "%C%y-%m-%d-%H:%M:%S" doh! loses the precise, so... dt: now/precise t: dt/time rejoin [form-date dt "%C%y-%m-%d-%H:%M:%S" find form t/second "."] again, not quite right...the precision won't be right padded with zeros, one more step | |
btiffin: 18-Jul-2007 | dt: now/precise t: dt/time t: find form t/second "." rejoin [form-date dt "%C%y-%m-%d-%H:%M:%S" head change/part ".000000" t length? t] I think I'll bug Chris to add %P for precise padded seconds. :) | |
PatrickP61: 18-Jul-2007 | btiffin -- Thank you for taking the time to explain it. I think I understand it now. I was initially confused because I tried to print a timestamp knowing full well that time is changing and I didn't understand how to get it evaluated. I confused the assignment of a value with that of a function.. Good info on the date timestamp above. Thank you all! | |
btiffin: 19-Jul-2007 | rebol.org %form-date.r updated... Fix for time-stamps and a really nice short-cut that includes the zone. %c outputs all the fields of now/precise nicely formatted %s outputs the seconds with nanosecond precision nicely formatted form-date now/precise "%C%y-%m-%d-%H:%M:%s" is now all you need for IBM DB2 time-stamps. | |
btiffin: 19-Jul-2007 | We decided to use %s for REBOL precision...no epoch seconds in form-date. And yeah, I was looking at the TIME and NTP protocols...it would not be fun in high level REBOL, I don't think even Rebcode could poke the right fields for time! | |
PatrickP61: 19-Jul-2007 | Hi all -- I didn't mean to cause additional entries to other libraries -- just tried to format it in my own routine. But since there is interest, I double checked the official IBM SQL reference manual for timestamps. So for the record and for your information: Although there are many many different forms (Japanese, Europe etc), I only focused on two elements, the ANSI ISO timestamp, and IBM SQL timestamp standard. So in the IBM book "DB2 UDB for iSeries SQL Reference V5R370" under "Data Types, Datetime values, table 10 page 70": _________________________________________________________________________________________________ Table 10. Formats for String Representations of Timestamps Format Name Time Format Example ANSI/ISO SQL standard TIMESTAMP ’yyyy-mm-dd hh:mm:ss.nnnnnn’ TIMESTAMP ’1990-03-02 08:30:00.010000’ IBM SQL ’yyyy-mm-dd-hh.mm.ss.nnnnnn’ ’1990-03-02-08.30.00.010000’ 14–character form ’yyyymmddhhmmss’ ’19900302083000’ _________________________________________________________________________________________________ For the record, I think I confused the two types. Notice the embedded space between the date and time as well as : separators for ANSI/ISO, while the IBM SQL standard contains it all (no embedded space) and uses periods to separate the time elements, which I will easily fix in my version. -- You may wish to do the same for any new form of date you have. | |
btiffin: 19-Jul-2007 | Patrick; No problem about library entries. :) When REBOL grows we all benefit. Nothing in rebol.org is 'official'. It's a user maintained repository of 'stuff'. Chris' form-date just happens to be one of the beauties. It is close to but not the same as the C strftime function. With form-date you can make up pretty much any date time output you'd like. No one has to use form-date, I was just cheerleading. So I'll cheerlead a liitle bit. I you haven't yet, check out http://www.rebol.org.Sunanda and team have created a a world class repository of information and functionality that is all REBOL user community generated. | |
btiffin: 1-Aug-2007 | For instance. a: now gives you a date time field that won't change whenever you reference a or get a and it's type is date! a: :now gives you an a that will be the current time whenever it is evaluated., but if you get-word a with :a or get 'a you get back the native, not the datetime, so a's type reports as native! It's funky and fun. | |
btiffin: 1-Aug-2007 | It's a weird time in Altme as well. The gurus that are usually around to give very detailed and exact wording to these issues are all busy with R3, so show up here on a less regular basis. You may have to filter through some tier B rebol explanations for the next few days. :) | |
btiffin: 2-Aug-2007 | Robert and all; I just bumped into this one again...so I thought I'd mention it. none is a weird value, in that it usually looks like none, but a lot of time is 'none the word!, not the value none of type none! My suggestion...when starting out, get used to typing #[none] a: [none none] type? first a is word! and none? will test false. a: [#[none] #[none]] nice and safe... type? first a is none! and none? will test true. | |
RobertS: 5-Aug-2007 | re: comments in 'core' on the plague of MI ... multiple inheritance works rather nicely in Curl since you are required to provide 'secondary' constructors - I prefer prototype-based with an option for class hierarchies, personally ( try experimenting with Logtalk if you can find time ). I am watching Io, the language, evolve as Rebol3 emerges: what is interesting to me is that I ask 'But is that Oz ?' in Oz. ( which is multi-paradigm ) I used to hear a lot of 'getting it' about Prolog and Smalltalk. After almost 2 decades in both, I think many of them "didn't get it" ( class hierarchy obsessed, as ST purists are/were ). Ruby is so much like Smalltalk that I am quite enjoying watching Groovy play catch-up with Ruby Most issues in Rebol have a parallel in Javascript; where ( for the neophyte) experiments with typeof in a console is about the only way for the average developer to 'get it' given d1 = Date // now you use d1 as a function d1() d2 = Date() // d2 is a string that looks like a number d3 = new Date() // d3 is an object but it is UTC but it is presented local time but it is compared UTC .... or s1 = "string" s2 = String("string") s3 = new String('string') s3[1] = 6 // s3 is an object, as typeof of reveals; String 'equality' in JavaScript even with === is no end of grief and for what convenience ? s3["size"] = 6 or a1 = Array(42) a2 = new Array(42) I think the latter 2 show just how rushed LiveScript was pushed/forced out to market as "LavaScript" before the Sun "StrongTalk" folks had much influence on the Netscape folks .... Rebol3 is in better hands than 'ActionScrtpt' as it drifts into classes - because it is being kept 'in hand'' The changes in Groovy as it complied with the JSR for Java scripting are interesting ( Groovy is almost neat as Rebol would be if it were confined to, say, living on top of VisualBasic ;-) Now to avoid 'Rebol on Rails' ... I think some people who adopted Spring to cope with Java would appreciate Rebol ( there, too, you have to 'get it ' ) MySubClassObject.prototype = new MyParentClassObject() // now go mess with THAT object before it is useful ... // ... MySubClassObject.prototype.superclass = MyParentClass // to fake having a superclass other than Object cannot be much easier to "get" than anything about Rebol use ; now mostly use /local and bind ; modifies the block it is passed; use COPY refinement to preclude this side-effect Smalltalk80 was like "Rebol4" as compared to the first passes at an O-O language ... someone who actually understands Smalltalk contexts/blocks and JavaScript should 'get it' with Rebol ( some of those people are using Seaside with Squeak, Dolphin and/or VisualWorks ST ) my 2 cents: a1 should have been an array of fixed size and only a2 should be a Vector object | |
RobertS: 5-Aug-2007 | >>system/console/prompt: [ reform [ now/time ">> "]] ;; good tutorial candidate from 'Rebol for Dummies' by Ralph Roberts >>to-integer #2A ;; Hex. But what was the question? >>big-Q: does [ rejoin [ none ". But the answer is: " to integer! #2A]] >>big-Q >>little-Q: [ rejoin [ none ". But the answer is: " to integer! #2A]] >> do little-Q >> do big-Q ;; now you get an error because none is the has-no-value word >> type? none >> path? 'none/first | |
RobertS: 27-Aug-2007 | I have written an alternate form of the func WHAT that dumps to a file ( I have only 481 global functions at startup ) I will try to find time to build a page that gives clicks for SOURCE and HELP for each func in a given file dump (and maybe group them) I tried messing with PRINT but that broke HELP and SOURCE ;-) | |
Group: Web ... Everything web development related [web-public] | ||
Graham: 8-Oct-2005 | Yeah .. I worked for Star Fleet a long time ago. | |
Volker: 12-Oct-2005 | Would you have enough time to answer a lot silly questions? I forgot the whole api and everything, but could do the coding. | |
Pekr: 2-Nov-2005 | folks did very nice system called billingo - you could rent it for very few bucks even for cz folks to afford, you defined your price-list, data-limits etc. logic and then even your secretary could add new person to the network ;-) Such person had portal sub-page available to log into, to see its traffic, graphs etc. It did also invoices for you. Very nice. Today they announced they are closing, because of low demand for such service. But it was excellent service, which would save me plenty of time .... | |
Ammon: 2-Feb-2006 | Crashing isn't the issue for me. It just adds too much time to an already way to slow interface for me to be able to live with. | |
Pekr: 2-Feb-2006 | SeaMonkey is Mozilla :-) They stopped Mozilla suite some time ago, but way too many ppl objected ... | |
Pekr: 2-Feb-2006 | I some two years back heard my friend telling me it is slow, for me, it was real time, for him, it was slow .... he was former amigan ... I asked him what is fast, and he told me nothing under Windows, so :-) | |
Pekr: 2-Feb-2006 | The only thing I find slow about Mozz products in general is its load time ... but then I run browser running all the day, so I start just once ... | |
PhilB: 3-Feb-2006 | Go to agree with Petr .... Firefox works fine for me ... even my banking sites .... I cant remember tha last time I had to fire up IE. | |
Geomol: 4-Feb-2006 | I mostly use Safari on Mac these days. It works with my bank too. :-) When I'm on Windows, I mostly use Opera. I used to use Mozilla, and I still use Firefox from time to time, both under Windows and Mac. I very very rarely use IE. Safari can be used for 99+% of the sites, I visit. Today I had a problem, because I wanted to watch the 2 danish Superbowl updates, our reportes sent from the US. And a danish tv channel TV2 Sputnik require IE6 under Windows to run, and only that. Argh! | |
Carl: 9-Feb-2006 | Yes, we took them out. REBOL ran a lot faster as a result. I used to be a huge fan of continuations 20 years ago. But, continuations do not provide enough benefit for the performance hit on evaluation speed and memory usage. (Stop and think about what is required internally to hold in an object for any period of time the entire state of evaluation.) It's more of a programmer play toy than a useful extension. | |
Anton: 15-Feb-2006 | read/custom - can it send more than one cookie at a time ? | |
MikeL: 19-Sep-2006 | Sorry about the CRLF ..... you don't want to be checking the timestamps on the server with a slow connection. Just hold the last updated value locally and if it changes then transfer the file. Same for deleting ... else you spend all of your time checking on the server over a slow connection. You could check the timestamps or hash the local value ... then if the hash value of the source changes, transfer the updated version. There's some code to do some of this in build-sie.r http://www.rebol.org/cgi-bin/cgiwrap/rebol/view-script.r?script=build-site.r but it's a rebol-ish task. | |
Gabriele: 7-Nov-2006 | no new version. i don't think i'll have time for it. | |
Chris: 16-Jan-2007 | Etags should work like this: client requests a resource, server returns resource and etag header. Client again requests resource, but this time sends if-none-match header with etag value and server can then decide whether to process the request or send 304 not changed. I haven't explored this much so don't know how well it's supported -- I'm not sure how appropriate the solution is, but would involve the least server activity. | |
Joe: 24-Jan-2007 | charles, welcome to reality ! In theory rebol supports many protocols but in practice the support is incomplete and it has been incomplete for a long time. check rebol.org, there are several patches for cookies support | |
Graham: 24-Jan-2007 | you normally need to send the cookie each time ... that's what browsers do | |
CharlesS: 24-Jan-2007 | yes, I am sending it each time, but for some reason it seems to only like the first request, after that it expires , or something else is going wrong ... Id really like to see a client with transparent support for cookies | |
Pekr: 18-Jun-2007 | simply put, there is following workflow, similar to how Gabriele's Temple worked: - browser requests page - webservers takes .html - then it sees, .html should go via some handler - handler is called - so e.g. index.html is passed to pekr-rsp.r - pekr-rsp.r, to save some processing time (prevent parsing), looks if .html page is registered as dynamic, non-dynamic .html is returned directly to browser - non-measurable slow-down - if page is supposed to be dynamic, it is being parsed. It looks for marked sections and particular handlers are called, which know, how to treat that section | |
Pekr: 18-Oct-2007 | I would like to resolve following situation: - on our kiosk, we have following set-up - Apache running locally, and once Windows starts, it runs http://localhostin full screen. - I wanted operator to have more easy life (not taking wireless keyboard each time), so I wrote View script, which sits in the memory, and waits for USB drive to appear. Then it copies new stuff from USB drive to C:\kiosk dir. However - we found out, that the presentation still returns old pages. They seem to be cached somewhere. What should I do about it? Improve script to: - restart presentation? - restart Apache service? - disable caching somehow? - flush the IE cache somehow? (could take long) And remember - the aim is for the operator to have seamless operation - plug-in USB disc, wait for update, unplug disk. | |
Dockimbel: 13-Apr-2008 | View-like engine in JS : that looks very doable, but I'm afraid the result might be too slow. I've worked some time with a rendering engine built in JS, and it was just a little slower than native UI, but not very scalable (performances dropping rapidly with a growing number of "faces"). It was BackBase : http://www.backbase.com. | |
Gregg: 14-Apr-2008 | Will, I'll updated my JSON copy script here with your changes, but Romano hasn't been around in a long time, AFAIK, so someone (I guess maybe you or me) should get joint ownership of the script on REBOL.org to update it. | |
Geomol: 29-Apr-2008 | Info from danish news on tv: Women use 29 hours on the internet per week. Men use 27 hours on the internet per week. People older than 61 years use more time on the internet than people between 20 and 60 years old. | |
Brock: 2-May-2008 | I don't think the method Doc provided will work for dynamically generated pages. For dynamic content you will need to use something like checksum http://www.rebol.com However, you will need to maintain a list of the last time a page was checked. | |
DideC: 14-Jan-2009 | #!/usr/bin/rebol -cs rebol [] print "Content-type: text/html^/" print { <<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD><TITLE>Rebol CGI test page</TITLE></HEAD> <BODY>} print ["Server date time is:" now] print {</BODY></HTML>} | |
Group: rebcode ... Rebcode discussion [web-public] | ||
BrianH: 28-Oct-2005 | Oh, you mean the word n in his example. If you know the value of n ahead of time there would be no point to using brab - you could use bra. | |
BrianH: 28-Oct-2005 | If the table-base is a pointer to the table (as it is here) any rebasing would require math. The question is whether you want to do that math every time, or just when you need to. | |
Volker: 28-Oct-2005 | You need to do it every time you switch. Its not 0-based, its always table-based. | |
BrianH: 28-Oct-2005 | (Pardon the awkward phrasing - it's a complicated topic and I don't have time to rephrase. Be back later) | |
Rebolek: 28-Oct-2005 | I was trying how fast is apply in new version but I'm not able to chceck it. I've got small test, I store precise time in a variable, run test, subtract precise time from stored time. But with new rebcode, second time is returned BEFORE rebocde is finished. Looks like if rebcode rust as independent task or thread (?). | |
Rebolek: 28-Oct-2005 | >> probe xt: now/time/precise muls probe xt - probe now/time/precise 23:10:45.859 23:10:46.015 -0:00:00.156 | |
Rebolek: 28-Oct-2005 | Whe is the time printed before 'muls function is finished? | |
BrianH: 3-Nov-2005 | Romano, not that I would normally be defending relative jump (look at the group history :) ), but when you have to specify the offsets as literal numbers, relative offsets are more useful. Most of the time branches are used for control flow on a local level - branches only work within the same code block and most code blocks aren't very large. If you have relative branches, you can add instructions before the affected area without having to recount all of your branch statements, and you can add code snippets into code without having to add labels. When you use absolute branches that doesn't work so well. Of course there is no difference when you are branching to labels because either way the assembler would be doing the counting. | |
BrianH: 5-Nov-2005 | As for "and you can add code snippets into code without having to add labels", imagine that you are generating your rebcode, or copy-paste coding, rather than hand-writing every line every time. Now imagine that there are branches in the code snippet you are putting into your code unchanged. If you use labels as branch targets, you may end up accidently reusing some label name that already exists in the block and the assembler will complain. To avoid that you can branch to offsets specified as literal numbers. You get these numbers by counting the instructions between the branch and the target yourself. This may seem like a lot of work for code that you have to write every time, but it is not too much work to put into a tested snippet of code that will be reused as is, over and over again. And if you have relative branches, you only need to consider how far apart instructions are within the snippet, rather than recalculating those offsets depending on what position the entire snippet has in the block you are inserting it into. | |
Robert: 5-Nov-2005 | graph-layout: I won't have the time to get deeper into rebcode in the moment. So, here is a request, for something that gives a nice demo: I have the old graph-layout code, which uses the TouchGraph idea. Anyone interested to port it to rebcode and see howmany nodes we can handle? | |
BrianH: 5-Nov-2005 | Any time Gregg! In particular, every time changes are made to the engine or docs :) | |
Rebolek: 2-Dec-2005 | that's because mouse events have higher priority than time events and the scene is refreshed only when time event occur. If you move your mouse, no time-events are generated. | |
Anton: 2-Dec-2005 | Every event has a time (event/time), so this could be worked around. | |
Rebolek: 6-Dec-2005 | As I work with sound synthesis and 3d graphics I use lot of maths so I need rebcode imost of the time :) I had data structures using objects, so I rearanged them for now. I wrote it as wish to RAMBO. | |
Anton: 5-Apr-2006 | I think Gabriele might be remembering the number 20 milliseconds, which is close to the time interval given by 48Hz. | |
Gabriele: 6-Apr-2006 | it will certainly be if the security issues are solved in time (i think we can do it for beta, but it might be delayed to final) | |
BrianH: 21-Apr-2006 | You use the DO opcode to access objects using REBOL code. There are currently no opcodes for direct object access, though they have been requested. Time will tell whether such opcodes exist for rebcode in REBOL 3. | |
ICarii: 7-Jul-2006 | the irritating thing is that the TestUniqueness function does work about 5% of the time.. | |
Gregg: 11-Dec-2006 | I think a big issue was security. Because of the same issues that let you crash the system, bad things could be done by talented people. I'd love to see it included though, even if they had to take out the buggy and unsafe bits for the time being. | |
Coccinelle: 20-Feb-2007 | Thanks Rebolek, I reduce the time to produce 6 minutes 44 of music from 20 to 15 second. | |
Gregg: 20-Feb-2007 | If I ever have free time again (not complaining, it's good to have work :-), I was thinking it would be fun to do a dialect for binaural beats, ala SBAGen. | |
Rebolek: 20-Feb-2007 | Gregg that binaural beat thing looks very interesting. I was interested in in ELF (extreme low frequencies) some time ago, but I though you need some pretty expensive equipment for it (as normal speakers cannot play 7Hz wave very well, but after reading a book by V. Marek, I found, that 7Hz frequency can be easily simulated by using one wave of frequency X and second wave of frequency X+7Hz. The 7Hz freq. is then created thanks to modulation, regardless on equipment. It's very interesting, unfortunately I had no time to get deeper into this field. | |
Steeve: 20-Feb-2007 | but i build many many rebcode functions in real time, i need speed | |
BrianH: 20-Feb-2007 | It really doesn't gain you much speed. The label fixups are done once, at rebcode function creation time. After that it just calls the offsets - the label statement is a noop. I only do straight offsets when generating code (like you are). Be careful though, as the offsets are calculated from the end of the branch statement, not the beginning. | |
BrianH: 20-Feb-2007 | Remember that the current assembler* doesn't do much, and even that is done at rebcode function creation time. It has no effect on execution time. | |
Steeve: 20-Feb-2007 | first i parse Z80 opcodes and execute them step by step, then they are concatened to build sub-routines and cached, if sub-routines are mantory another time, then i call cached sub-routines instead of reparse the opcodes. | |
Steeve: 20-Feb-2007 | but it's not a problem, the management of branches is done in real time, it's in a stack, so i can manage fixed as indirect branches. | |
BrianH: 20-Feb-2007 | It occurs to me that you might be able to do the fixups using a compile-time lookup table, or perhaps translating addresses to label statements. | |
Steeve: 20-Feb-2007 | but there's some difficulties toing that in real time | |
BrianH: 20-Feb-2007 | If you keep the Z80 memory in a binary! and make changes to it, whenever code at an offset already covered by the BRAB block is modified you would change that offset in the BRAB block to the default and mark the associated section of the rebcode as free. That way the next time you branch to that offset it would retranslate the Z80 to rebcode and put that rebcode in the first free spot big enough. You could even break up your code into blocks of around the same size and branch between them, to reduce fragmentation. | |
BrianH: 20-Feb-2007 | If you go with the fixed main code block prefilled with snippets, the unchanging length of that block would lend stability to the rebcode interpreter. REBOL tends to crash if modifications to code that it is running at the time increase the length of the code block enough to force a reallocation of that block. | |
BrianH: 20-Feb-2007 | All of the infrastructure code would be at the top of the main code block, and the code that gets called every time before the BRAB would be after a LABEL top statement. Any calculations that affect the pc would go in the generated rebcode blocks. | |
BrianH: 20-Feb-2007 | Well, that's all I have time for right now. I hope I helped! | |
Steeve: 23-Feb-2007 | i said that the faster way is to write 2 times 8bit instead of writing 16 bit in one time | |
Steeve: 23-Feb-2007 | plus lost of time due to the syncronization between 16 and 8 bits registers | |
Steeve: 23-Feb-2007 | but the instructions which operate directly in memory are rarely used, because they consume more time. | |
BrianH: 23-Feb-2007 | More time than the combination of a load to a register and an add from that register? | |
Steeve: 23-Feb-2007 | depending what operations follows , but right the most time | |
BrianH: 23-Feb-2007 | Wow. It's the same amount of work, in fewer instructions, and it takes more time. How does that happen? Microcode? | |
Henrik: 27-Feb-2007 | there are also some time wasting color conversion going on. if that could be done in 1-2 ops, it would be much faster. | |
Anton: 27-Feb-2007 | warning: sound port is really buggy and destroys your samples over time. |
2301 / 7721 | 1 | 2 | 3 | 4 | 5 | ... | 22 | 23 | [24] | 25 | 26 | ... | 74 | 75 | 76 | 77 | 78 |