r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Core] Discuss core issues

Graham
20-Sep-2008
[10911]
we ought to check on the http protocol for R3 and make sure that 
it has all this stuff.
Louis
20-Sep-2008
[10912]
I'm having a strange problem. I'm trying to convert a file created 
with a Win XP program to work with a Linux program. Rebol seems to 
read past the end of the file into RAM. 

>>x: read %file1.txt
>>print x

AS: 

{5F65606E-93B2-4B16-BB24-ADC663FC8B5A}$éx


AS: is the last line in the file. I'm just showing a small amount 
of the following output.  Note that the program seems to be unable 
to recognize the end of file marker.  So, I did this:

write %file2.txt read %file1.txt
x: read %file2.txt
print x


But it didn't help. I got the same results. Any idea what is causing 
this?
Henrik
20-Sep-2008
[10913]
when printing, does it display the same garbage every time?
Louis
20-Sep-2008
[10914x3]
Ok, I found the problem. When I saved the file with the Windows program, 
I saved it in utf8 format. Resaving it in ascii format solved the 
problem.  I realized the problem with I noticed some Chinese characters 
in the output past what I pasted in above.
That would have been no problem with rebol3.
Thanks for responding Henrik. You are always willing to help, and 
I apprciate it very much.
Henrik
20-Sep-2008
[10917]
no problem
amacleod
20-Sep-2008
[10918]
Having a bock of blocks that I want to look more readable how do 
I get each block to start on a new line...


I've tried to append 'newline to end of each block but it does not 
seem to work.


Now I'm having a similar problem using Paul's tretbase. I've been 
using MySQL to store formatted text that when I load it I can run 
my parse function on. When I sttore the same text in tretbase and 
load it my parse function fails. 
When I probe the text from each tehy look different:

MySQL preserves the carriage returns: 
[5 "FFP-LADDERS" "1-PORTABLE LADDERS" "2.1.2" {
\table
Straight Weight^-Ladders
20'^-55 lbs.
20'(Hook)^-60 lbs.
12'(Hook)^-35 lbs.
/table
} "" "2008-07-22 00:12:24"]


Tretbase seems to store the carriage return's character code but 
displays 'flat':

[5 "FFP-LADDERS" "1-PORTABLE LADDERS" "2.1.2" { \table Straight Weight^-Ladders 
20'^-55 lbs. 20'(Hook)^-60 lbs. 12'(Hook)^-35 lbs. /table } "" 20-Sep-2008/3:07:19-4:00]

What Might I be doing wrong?
sqlab
20-Sep-2008
[10919]
it looks as if the carriage returns are replaced by tabs.
amacleod
20-Sep-2008
[10920x2]
There are also tabs in the text...

I think the carriage returns have been stripped out?
Here is what the block looks like just before I upload it to the 
database:

[1 "FFP-LADDERS" "1-PORTABLE LADDERS" "2.1.2" {
\table
Straight Weight^-Ladders
20'^-55 lbs.
20'(Hook)^-60 lbs.
12'(Hook)^-35 lbs.
/table
} "" 20-Sep-2008/16:58:48-4:00]
sqlab
20-Sep-2008
[10922]
sorry, I looked too short..
did you look at the source of tretbase?
amacleod
20-Sep-2008
[10923]
No, I'm working with Paul on it. He will be able to sort it out better 
than me. I thought it might be related to the same problem I had 
with my block of blocks above...
BrianH
20-Sep-2008
[10924]
Try the new-line function.
Graham
20-Sep-2008
[10925x6]
Mindtouch's Deki is the wiki now adopted by Mozilla internally.  
I suggested we use this instead of Mediawki because it has an API 
http://wiki.developer.mindtouch.com/MindTouch_Deki/API_Reference
but ....
It has multi-language support ( human languages )
This is how to authenticate against the wiki using REBOL http://synapsedirect.com/forums/permalink/6737/6736/ShowThread.aspx#6736
I had to alter the prot-http to allow get to send cookies.
If you click on their api reference you will see code samples nicely 
formatted with line numbers .. much nicer than Mediawiki
So, the API would allow someone to easily update the wiki directly 
from Rebol sources
Henrik
21-Sep-2008
[10931]
Graham, did you study my wiki-tools for Mediawiki? They have been 
available for over a year.
Graham
21-Sep-2008
[10932]
nope.  didn't know you had released them.  I was aware that you had 
been working on something.
Henrik
21-Sep-2008
[10933x2]
they are not entirely done, but doc uploading and syncing should 
work.
so it should be possible to create a local editor to edit mediawiki 
pages, or to upload series of pages generated locally.
Gregg
21-Sep-2008
[10935]
new-line post from ML: http://www.rebol.org/ml-display-thread.r?m=rmlMMCC
Graham
22-Sep-2008
[10936x3]
Looks like I need to do a HTTP PUT to upload binary files ....
So, I guess I need a way to add the PUT method, and then switch the 
IO from lines mode to binary and then back again.
From my understanding,  R3 implements http prot all as binary and 
does not use lines mode
Gabriele
22-Sep-2008
[10939]
yes, R3 tcp ports are binary only.
Graham
22-Sep-2008
[10940x12]
So, how about something like  read/custom url [ PUT %file [ header 
.. ] ] ?
calculate the content-length, add the new headers, insert the file 
as binary and then switch back to lines mode for R2 ?
apart from it not working ... anyone see a problem with this?


   either all [block? port/state/custom post-data: find port/state/custom 
   'post post-data/2] [
				http-command: "POST"
				HTTP-Get-Header: make HTTP-Get-Header append [

     Referer: either find port/url #"?" [head clear find copy port/url 
     #"?"] [port/url]
					Content-Type: "application/x-www-form-urlencoded"
					Content-Length: length? post-data/2
				] either block? post-data/3 [post-data/3] [[]]
				post-data: post-data/2
			][

    either all [block? port/state/custom post-data: find port/state/custom 
    'get post-data/2] [
					http-command: "GET"
					HTTP-Get-Header: make HTTP-Get-Header append [

      Referer: either find port/url #"?" [head clear find copy port/url 
      #"?"] [port/url]
					] either block? post-data/3 [post-data/3] [[]]
					post-data: none
				][

     if all [block? port/state/custom post-data: find port/state/custom 
     'put post-data/2] [
						http-command: "PUT"
						data: system/words/read/binary post-data/2
						HTTP-Get-Header: make HTTP-Get-Header append [
							Content-Type: "application/octet-stream"
							Content-Length: length? data
						] either block? post-data/3 [post-data/3] [[]]
					]
					post-data: post-data/2
				]
			]
last line should be 

post-data: data
And it's working :)
read/custom URL compose/deep [ PUT %file.png [ Cookie: (cookie) ]]


will use the http put method to upload a binary file and sets the 
cookie
So, this will work with large files, it should be changed so that 
it does a skip/binary and inserts the file in chunks.
If the server returns an error such as 400 bad request, Rebol appears 
to discard any messages that the server sends back with this .... 
and just throws an error.
Wouldn't it be better if we had access to the data sent to us without 
doing an 'open instead of a 'read ?
This is pretty cool .. I just uploaded a 14Mb file using PUT ( though 
I had to increase the http timeout period )
Seems odd to me that the port will timeout even though it "knows" 
it is writing data to the port.
Here's the protocol with my changes ..

http://rebol.wik.is/Protocols/Http
Louis
23-Sep-2008
[10952x2]
file: replace/all file {®¯} {}


Why can't rebol replace that string in the file I'm processing?  
It will replace it in a string entered at the command console, but 
not in my file.
file: read %file.txt
Henrik
23-Sep-2008
[10954]
it's better to do it on a binary representation of the string, using 
'as-binary. the chars you enter in console may not be of the same 
charset as those you have saved the file in.
Louis
23-Sep-2008
[10955x3]
Like this?

file: replace/all file as-binary {®¯} {}
Henrick, from what you say, I think I see what is happened. I'm copying 
the string from a utf-8 encoded file to an assci encoded file. The 
copy converts the string to different characters. But how do I get 
around this?
is happened = is happening
Henrik
23-Sep-2008
[10958x3]
you must work solely from the encoding in the file. intermixing input 
from the console will ruin that. I will post an example in a minute.
or easier for me to explain: you must search for the hex values in 
the file. work only in binary.
what I would do is get the offending chars from your file in a text 
editor and paste them in a separate file and save it in the same 
encoding as the original file. then read/binary it with rebol, and 
you can see the hex values directly.