World: r3wp
[Core] Discuss core issues
older newer | first last |
Chris 29-Jan-2007 [6961] | That said, I find as an abstraction layer, they are super useful. I've been thinking about an adapter! datatype that replaces ports for data abstraction layers. |
Pekr 29-Jan-2007 [6962x2] | I do remember some talks with DocKimbel when he actively developed R#. He told me that he would use two-fold aproach to port - separating low-level stuff, enabling more abstracted implementations above it .... |
let's see what comes with R3 .... | |
Graham 29-Jan-2007 [6964] | I just find the way protocols are done wrap the abstraction so tightly that you can't insert arbitrary command into a port without rewriting the protocol. Eg. adding the TOP command to POP. |
Maxim 29-Jan-2007 [6965x2] | the one thing I find strange comming from carl, is the fact that within Amiga, everything was a hook. so you could very easily re-implement everything... and most of the deep internals of REBOL are pretty boxed in... the stuff is still in box... but opening most of these secrets is like opening a can of worms... |
add to that the irritation cause by static binding.. which is cool for many things, but has this side effect of making many run-time code change much harder. | |
Anton 30-Jan-2007 [6967x2] | Eh? what's happening? Why are these different ? |
id: 0 foreach [a b c] [1 2 3 4 5 6] [print id: id + 1] use [vars id][ vars: [a b c] id: 0 foreach vars [1 2 3 4 5 6] [print id: id + 1] ] | |
Oldes 30-Jan-2007 [6969] | anton, because you set vars for each value:) |
Anton 30-Jan-2007 [6970] | omg. it stares me in the face. |
Oldes 30-Jan-2007 [6971x2] | you want to do: |
use [vars id][ vars: [a b c] id: 0 foreach :vars [1 2 3 4 5 6] [print id: id + 1] ] | |
Anton 30-Jan-2007 [6973x2] | ah nice, I was about to something with DO COMPOSE |
Thanks... :) In my actual code it was really confusing. | |
Oldes 30-Jan-2007 [6975] | maybe it would be good to give this into FAQ or something like that, if it exists:) |
Anton 30-Jan-2007 [6976] | Hmm... I'm not sure. I think the problem is that of coding too many hours without rest. |
Oldes 30-Jan-2007 [6977] | it's not so late:) |
Anton 30-Jan-2007 [6978] | Should put that in the FAQ: "How many hours should I code before taking a break ?" |
Oldes 30-Jan-2007 [6979] | It depends how strong you are:) |
Ladislav 30-Jan-2007 [6980] | insert/dup looks like not working when used on /binary/seek ports. Is that a known issue? |
Oldes 30-Jan-2007 [6981] | for me not |
Ladislav 30-Jan-2007 [6982x2] | what version? |
(I used rebol/version == 1.3.2.3.1) | |
Oldes 30-Jan-2007 [6984] | I mean, that didn't know that it's a problem:) |
Ladislav 30-Jan-2007 [6985] | aha, sorry for misunderstanding |
Gabriele 30-Jan-2007 [6986] | i don't think it's known, otoh /seek is known to have a few problems so it's not really surprising. :) |
Ladislav 30-Jan-2007 [6987x2] | thanks - RAMBO #4235 |
Anton - you ran into yet another case of nontransparent argument passing. Let me repeat - I don't like nontransparent argument passing... | |
Anton 30-Jan-2007 [6989x3] | It's just funny because FOREACH is used so often. |
I guess FOREACH would suffer much if the first argument was expected to be always a block! | |
would not suffer | |
Ladislav 31-Jan-2007 [6992x2] | try this: foreach': func [ "Evaluates a block for each value(s) in a series." word [word! block!] {Word or block of words to set each time (will be local)} data [series!] "The series to traverse" body [block!] "Block to evaluate each time" ] [ foreach :word :data :body ] |
(it is a referentially transparent argument passing variant) | |
Anton 31-Jan-2007 [6994] | The second and third arguments look like they are already referentially transparent, but I suppose you are ensuring this in case FOREACH ever changes its spec. |
Graham 1-Feb-2007 [6995x7] | Has anyone got smtp to work with gmail ? |
I cloned the esmtp protocol to use on port 465, and added a /secure to 'send so that it uses my new ssmtp protocol. | |
I changed the open-proto to open-proto/secure/sub-protocol port 'ssl in the new ssmtp protocol. | |
I can send like this | |
set-net [ [compkarori-:-gmail-:-com] smtp.gmail.com ] send/secure [compkarori-:-gmail-:-com] "testing .. " and a trace/net shows that it sends the message but then hangs waiting for a 250 response from the 'check-write | |
oh crap .. web-public channel ... going to get spammed now :( | |
mucking around, i changed the system/words/insert port/sub-port "^/." to system/words/insert port/sub-port "^M^J.^M^J" and that gives an error. | |
Henrik 1-Feb-2007 [7002x2] | oh crap <-- isn't this another peeve? |
added to checklist | |
Gabriele 1-Feb-2007 [7004] | graham, doesn't gmail require tls? it works with ssl too? |
Graham 1-Feb-2007 [7005x2] | appears to. |
I've managed to send a few emails to myself using smtp.gmail.com | |
Graham 2-Feb-2007 [7007x4] | Rebol [] email: [compkarori-:-gmail-:-com] pass: "password" address: [target-:-gmail-:-com] message: read %your-fully-formed-email.txt state: 'EHLO smtp: open/lines ssl://smtp.gmail.com:465 set-modes smtp [secure: true] forever [ S: pick smtp 1 ?? S if found? S [ code: copy/part S 3 ?? code ?? state ] switch/default state [ EHLO [ insert smtp "EHLO rebol.com" state: 'PLAIN while [ S: pick smtp 1 ][ ?? S if find/part S "250 " 4 [ print "sending authentication" insert smtp join "AUTH PLAIN " enbase rejoin [ email #"^@" email #"^@" pass ] break ] ] ] PLAIN [ if code = "235" [ print "authenticated" insert smtp REjoin [ "MAIL FROM: <" email ">" ] state: 'FROM ] if code = "535" [ print "credentials incorrect" break ] ] FROM [ either code = "250" [ insert smtp rejoin [ "RCPT TO: <" address ">" ] state: 'TO ][ print "doesn't like me" break ] ] TO [ either code = "250" [ state: 'DATA insert smtp "DATA" ][ print "doesn't like to address" ] ] DATA [ replace/all message "^/." "^/.." insert smtp message insert smtp "." state: 'END ] END [ either code = "250" [ print "message was sent" close smtp break ][ print [ "message had some error: " S ] break ] ] ][ print ["Unknown state" state ] ] |
This should work ... | |
Anyone care to help me test this? | |
Of course it would be easier to get the protocol working ... | |
older newer | first last |