• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

AltME groups: search

Help · search scripts · search articles · search mailing list

results summary

worldhits
r4wp1023
r3wp10555
total:11578

results window for this page: [start: 2301 end: 2400]

world-name: r3wp

Group: !AltME ... Discussion about AltME [web-public]
Graham:
12-May-2006
I always tell people to do a net search to see if a program is spyware.
Louis:
25-May-2006
I think it was caused by my setting message limit to 10000 per chat 
room so I could do some searching.
Louis:
25-May-2006
Yes, it would be much better if a search could be done without the 
user having to change any settings. Otherwise most users will probably 
not do any searching at all.
Louis:
25-May-2006
My computer is really low on RAM, which might have something to do 
with this.
james_nak:
30-May-2006
It may also have something to do with the after-effects of a full 
virus scan.
Carl:
1-Jun-2006
If you have bugs or minor enhancements (no majors accepted right 
now), be sure to report them using AltME feedback.  We do not scan 
this chat group (sorry, not enough time!)
BrianH:
1-Jun-2006
New version works for me, seems to do a better job with URLs. Cool!
Sunanda:
7-Jun-2006
I tend to automatically do a ctrl+a ctrl+c ctrl+s to send an Altme 
message (under windows)

At least then the message is on the clipboard if Altme decides to 
thow it away.

But that's hardly a 21st century solution for an x-intenet product.
Graham:
6-Jul-2006
Wonderful

*** AltME ERROR ***

Sorry, AltME found an error while it was starting up.
This should never happen, but it looks like it just did.
Go to http://www.altme.com/feedback.htmland cut/paste
the text below. We'll fix the problem right away! Thanks.

ERROR:  Error starting module: a00
[
    code: 303
    type: 'script
    id: 'expect-arg
    arg1: 'bind
    arg2: 'known-word
    arg3: [word!]
    near: [ctx-text: context bind ctx-text system/view]
    where: 'do-module
]
Press enter key
Henrik:
15-Jul-2006
to me it doesn't sound like it would be particularly difficult to 
do, add an action to a timestamp and copy the first line of an entry 
and paste it in the textarea, but maybe I'm wrong. :-)
Anton:
15-Jul-2006
(Ah, but that doesn't give the author or date....)  But this makes 
me think of an alternative suggestion for adding to altme. Perhaps 
ALT-RMB or CTRL-RMB on the text should do Henrik's desired quoting.
[unknown: 9]:
15-Jul-2006
Diffilcutly has very little to do with features.
Chris:
21-Jul-2006
Seems that scrolling steps are set to a percentage of total messages 
height.  Usually to implement scrolling, I small-step by line height 
and large-step by view-port height minus line height (so there's 
a little overlap when doing large steps).  Then tie the scroll-wheel 
to the same functions (the scrollwheel is convenient, but a pain 
when it's the only way to do something).
[unknown: 9]:
21-Jul-2006
When I do that (which I have never done before for the record), I 
see Ingo's post at the top "The other thing is".  When I click in 
the empty space I see "part of " Ingo's other post (right above the 
first) "I've only had")


This is not a test you can reproduce now, but...................I 
can see that the scroll area is missing a page and .5 ines.  This 
would seem to be the nature of Robert's statement.


Is this what you all are doing?  Pressing in the empty space of the 
scroll area?
[unknown: 9]:
21-Jul-2006
That assumes there is a "source"  This could be that the wrong value 
is being sent to the scroller.  Hard to tell.  What we need to do 
is have a scroll example that works with all conditions.  Then we 
will use the same values for ours.
james_nak:
25-Jul-2006
I just received a response back from support in regards to changing 
the password of a World (not a user). 

AltME world passwords can not be changed in this release.  If it 
could be changed, the user would have to do that.
 

IMHO that should be changed as there may be times where this is necessary.
Cyphre:
11-Aug-2006
james: "When I exit the program...the app's window closes but the 
app stays around as a task"

hmm..does this your encapped program only when running from altme 
or als when you run it 'normally'?

If the second is true maybe you are using in your program something 
like:
view/new layout [...some layout here...]
forever [
	do [...some loop code...]
	wait <some time> 
]


If so the you need to properly handle the event when you closing 
the View window because othervise the window is only closed but the 
FOREVER (or any other) loop is still running. The solution is for 
example put before the "view/new" line:


insert-event-func func [face event][if event/type = 'close [quit] 
return event]


(ofcourse if your app is using multiple windows you need to add some 
more logic to decide which window should QUIT the app and which not 
when using the 'X' close button)
Tomc:
29-Aug-2006
I do like to see the movement on altme development
Henrik:
5-Sep-2006
there isn't even a requester saying "do you really want to run this 
app? could be dangerous. your computer could go boom." like webbrowsers 
do nowadays.
Henrik:
5-Sep-2006
yes, something like that. I think it's pretty standard policy to 
do that. What's this notorious single-click policy to run things 
in Rebol anyway? The viewtop does it too. :-)
PeterWood:
14-Sep-2006
Which key combination do you use to copy text in AltME on Linux (Ubuntu) 
?
Henrik:
29-Sep-2006
I see that too, but I thought it had something to do with Synergy, 
because I see it in other apps too.
Henrik:
12-Oct-2006
I think it had something to do with that the world was created before 
filesharing was available
BrianH:
16-Oct-2006
I think the problem is that read without /binary is supposed to do 
transparent line ending conversion, but doesn't when reading clipboard 
data.
[unknown: 9]:
23-Oct-2006
I just did some speed tests.  Seems about the same.  Even though 
it should be unrealted, do you still have your message count set 
to 100?

Of note, AltME seems to be the same speed, and Qtask should be about 
20% faster, and will continue getting faster.
yeksoon:
20-Nov-2006
REBOL /View (or AltMe)  just crashed on me..when I do the following 
on WinXP.

1. My Computer->Properties
2. Advanced tab->Performance

3. Change from "Let Windows choose what's best for my computer" to 
"Adjust for best performance'

4. Apply..... WinXP 'pops' up a dialog saying /View has crashed and 
ask for information to be sent over to MS.

Can someone try the above and see if it duplicates?

NOTE: I have AltMe running when I did that.
Group: rebcode ... Rebcode discussion [web-public]
Volker:
15-Oct-2005
But i am curious about passing the true-flag back. IS there a reason 
not to do it, or just not addressed now?
Henrik:
15-Oct-2005
well, it's usually very literal? with regular assembler you can count 
the amount of nanoseconds or CPU cycles it takes to do do some operation. 
I don't know if you can do that with rebcode. it gets more and more 
difficult, the higher level you go
BrianH:
15-Oct-2005
Yeah, with braw I wasn't concerned with the 2 opcodes you would have 
to add before any call to braw to make it usable; I was more concerned 
with actually being able to get the address offsets to compute with 
without having to write a compiler (which I am going to do anyways, 
just not right now). That was why I came up with that HERE assembler 
directive.
Pekr:
15-Oct-2005
BrianH - you seem to be skilled in that area. What speedup do you 
think compiling rebcode could achieve? And - how large the compiler 
would be?
Pekr:
15-Oct-2005
I e.g. did small dll some time ago to do some histogram etc. stuff 
with image. Image is easy - four bytes of values per pixel - worked 
well, but I modified binary value directly. Now imagine how would 
you work with rebol block in C level eventually :-)
BrianH:
15-Oct-2005
I've never seen an Italian try to play football. Oh, do you mean 
soccer? :)
BrianH:
15-Oct-2005
I would prefer opcodes to just don't do anything when given bad arguments, 
instead of crash REBOL with a core dump, as a general rule.
Volker:
15-Oct-2005
If you want to do multimedia, either trade or have a very smart compiler.
BrianH:
18-Oct-2005
I found an advantage to the new opcode-always-first syntax of rebcode 
that hadn't occured to me before, while examining the source of the 
assembler.


With the old assembly syntax, the binding of the opcodes to the internal 
rebcodes object was performed by a bind of the whole code block, 
and all subblocks (except fot the do blocks). This bind was performed 
to all words, including those used as arguments and variables. Because 
of this the assembly opcodes were essentially keywords that could 
not be used as variables or as the names of externally referenced 
values like the functions called by apply. This made it very difficult 
to integrate with external code. Also, since more opcodes are being 
added all the time, your parameters and other variables could end 
up converted to keywords in future revisions of the VM and your code 
could stop working.


Now, all opcodes are the first word in a statement, no keywords are 
anywhere else in rebcode statements and the every statement starts 
with an opcode. The assembler is able to just bind the first word 
in each statement to the rebcodes object during the syntax check, 
and to simply reject any statement that isn't valid syntax, including 
invalid opcodes. You can even use the opcode words as variables in 
your code, or refer to external values by those names without any 
difficulty. This simplified syntax would be easier to execute as 
well.


The implication of this is that rebcode is now a strict statement-based 
dialect, instead of an expression-based one like the do dialect. 
The advantage to this is that you can always tell where a statement 
begins, where it ends, and what it is operating on. This kind of 
code is easy to follow and quick to execute. It can be trickier to 
write though, as you have to decompose those expressions you are 
used to writing into their component parts.
BrianH:
18-Oct-2005
Fortunately, this kind of code is easy to generate as well. The rewriter 
can do some basic transforms to make the syntax that you write easier 
for you. For example, Volker's suggested alternate syntax (to my 
best guess of what he meant) could be implemented with something 
like this:

use [dest here rule r1 r2 r3 rs0 rs1 rs2 rs3] [

    foreach rule [r1 r2 r3 rs0 rs1 rs2 rs3] [set rule make block! 10]
    insert rs1 ['label word! | '?? word |]
    parse rebcode*/opcode-rule [
        some [here: lit-word! [
            '| (
                insert tail rs0 reduce [here/1 '|]
            ) |
            'word! '| (

                unless find rs1 here/1 [insert tail r1 reduce [here/1 '|]]
            ) |
            'word! [block! | word!] '| (

                unless find rs2 here/1 [insert tail r2 reduce [here/1 here/3 '|]]
            ) |
            'word! [block! | word!] [block! | word!] '| (

                unless find rs3 here/1 [insert tail r3 reduce [here/1 here/3 here/4 
                '|]]
            ) |
            into ['integer! '| 'word! | 'word! '| 'integer!] [
                '| (
                    insert tail r1 reduce [here/1 '|]
                    insert tail rs1 reduce [here/1 'integer! '|]
                ) |
                [block! | word!] '| (
                    insert tail r2 reduce [here/1 here/3 '|]

                    insert tail rs2 reduce [here/1 'integer! here/3 '|]
                )
            ]
            [block! | word!] [
                '| (
                    insert insert tail rs1 copy/part here 2 '|
                ) |
                [block! | word!] [
                    '| (

                        insert insert tail rs2 copy/part here 3 '|
                    ) |
                    [block! | word!] '| (

                        insert insert tail rs3 copy/part here 4 '|
                    )
                ]
            ]
        ]]
    ]

    foreach rule [r1 r2 r3 rs0 rs1 rs2 rs3] [clear back tail get rule]
    rule: [

        set dest set-word! here: r1  #==> (here/1) (to-word dest) (dest) 
        .

        set dest set-word! here: r2  #==> (here/1) (to-word dest) (here/3) 
        (dest) .

        set dest set-word! here: r3  #==> (here/1) (to-word dest) (here/3) 
        (here/4) (dest) .
        set dest set-word! here: rs0 #==> (here/1) (dest) .

        set dest set-word! here: rs1 #==> (here/1) (here/2) (dest) .

        set dest set-word! here: rs2 #==> (here/1) (here/2) (here/3) (dest) 
        .

        set dest set-word! here: rs3 #==> (here/1) (here/2) (here/3) (here/4) 
        (dest) .
        set dest set-word! #==> .
    ]
    rebcode-define rule
]
BrianH:
18-Oct-2005
Well Volker, what do you think of your alternate syntax? Note that 
opcodes that take any-type! instead of word! in their first parameter 
don't get their parameter abstracted out, and how easy it is to add 
exceptions. The direct branches might be a good idea to skip rather 
than abstracting the word and skipping the integer, but you can decide 
for yourself.
Oldes:
18-Oct-2005
that's no good:( I cannot use rebcode to speed up any from my RSWF 
dialect functions as all of them are base on dealing with datatypes 
like UI16 UI32 SI16 SI32, FP and other which simply Rebol do not 
support:(
Oldes:
18-Oct-2005
Unfortunately I'm not able to do it in Rebcode:(
BrianH:
18-Oct-2005
What are you trying to do with that function? I'm having a little 
trouble understanding its purpose, though I seem to get most of the 
parts.
Geomol:
18-Oct-2005
In rebcode, the pick opcode can be used with both binaries and images. 
If you have an image, it's rgb values can be reached as image/rgb, 
and that is a binary serie. Each value is 0-255, and you then have 
to multiply the index by 3 and use an offset to reach the red, green 
or blue component of a pixel. It's also possible to work on the image 
as an image! datatype, and then it's not necessary to multiply the 
index by 3, as the full pixel is addressed, but the value isn't a 
tuple, as we're used to, but the binary version of a tuple as an 
integer. E.g. green (0.255.0 or #{00ff00}) is 65'280.


Now to my questions. Are there shortcuts or tricks to make it easier 
to work with pixel-valus in rebcode? Should it be possible to use 
tuples, or will that slow things down too much? What do others do?
BrianH:
18-Oct-2005
I'm writing these functions to figure out how to do Duff's Device 
efficiently in rebcode :)
BrianH:
18-Oct-2005
Here's an example of using something like Duff's Device to do loop 
unrolling in rebcode.


binary-to-int16-be: rebcode [b [any-string!] /local x y l dest offs] 
[
    ; Get the length, bounded
    length? l b
    min l 2
    ; Set the initial value
    set x 0
    ; Switch on the length
    set offs [16 6 2]
    pickz dest offs l
    braw dest
    ; Set the low byte
    pickz x b 1
    ; Add the high byte
    pickz y b 0
    lsl y 8
    or x y
    ; Done!
    return x
]
Volker:
22-Oct-2005
yes. but i dont know how to do arithmetices with labels
BrianH:
22-Oct-2005
Volker, the problem with declareing the distance between two offsets 
as data is that the assembler doesn't currently have any way to even 
get those offset values as data. That is what my HERE directive proposal 
does. You have to do this kind of thing in the assembler, because 
until the rewrite rules are done operating the offsets can't even 
be known.
BrianH:
22-Oct-2005
It would not be difficult to implement this. You wouldn't need to 
change the native code at all - even I could do it from here.
BrianH:
22-Oct-2005
If I can set aside the time to this weekend, I'll do it myself.
BrianH:
22-Oct-2005
That won't work. Every rebcode block gets its own label table, which 
is just a block, not a context, and is thrown away after the label 
fixups. These offsets need to be constant - a label table could be 
modified by the calling code. Really, it's easier to do the fixups 
in the fixup phase - that's what it's there for.
BrianH:
22-Oct-2005
It would be interesting to have a parse opcode, but keep in mind 
that this kind of speedup would likely be implemented in the JIT, 
when we get that. And however fast parse is, its overhead dwarfs 
that of a function call. And remember, using apply would be significantly 
faster than calling a function in the do dialect because there isn't 
any evaluator overhead.
BrianH:
22-Oct-2005
Right now any of those flexible parsing and rule changes are implemented 
in do dialect code in the parens. To make the rules static, you would 
have to compile that code too.
Cyphre:
24-Oct-2005
rgba-to-int: rebcode [r g b a][
	lsl a 24
	lsl r 16
	lsl g 8
	or a r
	or a g
	or a b
	return a
]

draw-pix: rebcode [r g b a][
	apply a rgba-to-int [r g b a]
	poke img 1 a
]

update-pixel: does [
	do draw-pix col/1 col/2 col/3 col/4
	probe img
	show i
]

col: 0.0.0.0
img: make image! 1x1

view layout [
	backcolor black
	i: image img 100x100
	scroller 200x16 [
		col/1: to-integer face/data * 255
		update-pixel
	]
	scroller 200x16 [
		col/2: to-integer face/data * 255
		update-pixel
	]
	scroller 200x16 [
		col/3: to-integer face/data * 255
		update-pixel
	]
	scroller 200x16 [
		col/4: to-integer face/data * 255
		update-pixel
	]
]
Cyphre:
24-Oct-2005
time: func [b /local start] [
	start: now/precise
	do b
	print ["Time:" difference now/precise start]
]

rgba-to-int: rebcode [r g b a][
	lsl a 24
	lsl r 16
	lsl g 8
	or a r
	or a g
	or a b
	return a
]


draw-pix: rebcode [r g b a][
	apply a rgba-to-int [r g b a]
	return a
]

draw-pix2: rebcode [r g b a][
	loop 1000000 [
		apply a rgba-to-int [r g b a]
	]
	return a
]

probe stats
recycle
time [loop 1000000 [draw-pix 255 255 255 255]]
probe stats
recycle
time [loop 1000000 [rgba-to-int 255 255 255 255]]
probe stats
recycle
time [draw-pix2 255 255 255 255]
probe stats
Geomol:
24-Oct-2005
I also find
apply result power [b x]
to be faster than
do result [b ** x]
Geomol:
24-Oct-2005
bezier: rebcode [
	t	[decimal!]
	P	[block!]
	/local result m n n! i a b c d idx
][
	do result [copy [0.0 0.0]]
	length? n P
	div n 2
	set m n
	sub n 1
	;apply n! factorial [n]
	set n! 1
	repeat x n [
		mul n! x
	]
	repeatz i m [
		to-dec a n!
		;apply b factorial [i]
		set b 1
		repeat x i [
			mul b x
		]
		to-dec b b
		divd a b
		set b n
		sub b i
		;apply c factorial [b]
		set c 1
		repeat x b [
			mul c x
		]
		to-dec c c
		divd a c

		eq i 0
		braf i-not-0
		set d 1.0
		bra muld-d-a
		label i-not-0
		to-dec c i
		set d t
		;apply d power [t c]
		log-e d
		muld d c
		exp d

		label muld-d-a
		muld d a
		set a 1.0
		subd a t

		eq b 0
		braf b-not-0
		set a 1.0
		bra muld-a-c
		label b-not-0
		to-dec b b
		;apply a power [a b]
		log-e a
		muld a b
		exp a

		label muld-a-c
		muld a d

		set idx i
		mul idx 2
		pickz b P idx
		muld b a
		pick c result 1
		addd b c
		poke result 1 b

		add idx 1
		pickz b P idx
		muld b a
		pick c result 2
		addd b c
		poke result 2 b
	]
	return result
]
Pekr:
24-Oct-2005
you know, when we originally developed high-end astronomy CCD camera, 
it returns you per-pixel value of 1 to 65535, according of how much 
current counts in the individual pixels ... you ten need to convert 
it to image, so you have to get minimu,maximum, and divide it into 
256 zones .... when I did it using plain rebol, it was painfully 
slow. Imagine having lucrative in-camera ethernet + ip, downloading 
image using rebol in 1 sec or so, and then waiting 19 secs tojust 
view the image :-) If we would do this device nowadays, with Rebcode, 
I believe I would not hesistate to use rebol for all operations ....
Group: SQLite ... C library embeddable DB [web-public].
Robert:
22-May-2006
How do you solve the problem of schema changes? You develop an app 
and over time you see that some columns need to be added/removed 
from tables? What's the best strategy to do this?
Robert:
22-May-2006
This mean on every update the user has to do this cycle... don't 
think this is an option.
Robert:
22-May-2006
That's what I do, see above. I just want to make my app handling 
cases where the structure changes.
Robert:
22-May-2006
Yes, but than I always get back the column names. I can set the col-info? 
to TRUE and what select statement do I than use?
BrianH:
22-May-2006
By in left-to-right order, do you mean having the names returned 
in a single row, or will having them in a single column do?
Ashley:
24-Jun-2006
Looks like your data is tripping the driver up. Please add the following 
line:

	print mold s


prior to the "either all [block? v ...] line and post the last result 
back here.


As for the second issue, haven't experienced this myself. Do you 
have a small code snippet that exhibits the problem?
Ingo:
28-Jun-2006
Hi Ashley, while trying to find a minimal code example ... I found 
the error ... ;-) 

That's the error message ...
** User Error: SQLite SQL logic error or missing database
** Near: make error! reform ["SQLite" error]

And it was caused by:

      if string? face/user-data [
         if error? set/any 'err try [

            set pAddress-disp first rule compose [pAddress get guid = (face/user-data) 
            *]
	; rule creates an sql string and starts calls 'sql with it
	; yadda yadda yadda ...
         ]
      ][probe disarm err]

Do you find the error??? 

Somehow the [probe disarm err] block moved to the wrong if ... 


I don't know how this could trigger _this_ error, but after I moved 
the block the error has not occurred again.
Pekr:
1-Aug-2006
I did following modifications to driver:

log-path: to-file copy ""

then replace/all "%sqlite.log" "join log-path %sqlite.log"


then in my cgi script I am able to do sqlite/log-path: %db/ to change 
location ...... maybe it would be usefull to even set db path and 
don't bother with paths, not sure ....
Ashley:
1-Aug-2006
The log-path issue is best resolved by adding a log-file word to 
the sqlite context that defaults to %sqlite.log. You can then do 
the following in your code:

	sqlite/log-file: %my-path/my-log-file.log
Robert:
18-Sep-2006
I haven't given this ADO stuff a try to see if it fits my requirements. 
But will do so.
Robert:
18-Sep-2006
At the moment I tend to use the 2K$ extension. Yes, not quite cheap 
and I might do it myself but it will take some time too. So not being 
cheaper.
Pekr:
18-Sep-2006
I can't install it, need to download .NET framework first, will do 
so at home :-)
Ladislav:
2-Nov-2006
... and the last line is "off topic" in my opinion, violating the 
KISS principle - it should be the caller who determines what to do 
next, not the called script
Anton:
9-Nov-2006
Well, I suppose if you do the spidering, you can supply the links 
to batch-download. Still, it's not designed for that. Better to get 
a specific tool for that.
Pekr:
9-Nov-2006
:-) Do you really find anything so valuable on sqlite.com domain, 
that you need to grab their whole site? :-)
Louis:
16-Nov-2006
What am I doing wrong here:

rebol []
do %sqlite.r
do %rebgui.r

if not exists? %id.txt [write %id.txt 1]

db: %indodex.db
either not exists? db [
    CONNECT/create/flat/direct/format db

    SQL "create table base (id, Nama, Alamat, Telefon, Handfon, Fax, 
    Email, Tgl_Nikah, Nota)"

    SQL "create table birthdays (id, Nama, Jenis, Hubungan, Tgl_Lahir, 
    Agama, Nota)"
][
    CONNECT/flat/direct/format db
]
unless value? 'ctx-rebgui [
	either exists? %rebgui-ctx.r [do %rebgui-ctx.r] [do %rebgui.r]
]
set-colors
tab-size: 120x55
fonts: reduce [font-sans-serif font-fixed font-serif "verdana"]
do show-cc: make function! [] [
display "IndoDex Ver. 1.0.1" [
    tab-panel #HW data [
        "Add" [

            label "Title:" priority: drop-list 30 #W "Pak" data ["Pak" "Ibu" 
            "Sdr." "Sdri." "Drs." "Dr." "Tuan" "Nyonya"] 20x5
            return
            label "Nama:" nama: field 
            return
            label "Alamat:" alamat: area 50x30
            return
            label "Telefon" telefon: field
            return
            label "Handfon" handfon: field
            return
            label "Fax:" fax: field
            return
            label "E-Mail:" email: field
            return
            label "Nota:" nota: area 50x30
            return
            button "Save" [
                (id: to-integer read %id.txt)

                SQL/flat/direct {insert into base values (id, Nama, Alamat, Telefon, 
                Handfon, Fax, Email, Tgl_Nikah, Nota)}
                (write %id.txt id)
                show-text ex-status "Saved"]
        ]
        "Edit" [
            
	]
	"Search" [
	]
    ]
]
]
do-events
Louis:
16-Nov-2006
Here's the latest version:

rebol []
do %sqlite.r
do %rebgui.r
unless value? 'ctx-rebgui [
	either exists? %rebgui-ctx.r [do %rebgui-ctx.r] [do %rebgui.r]
]
set-colors
tab-size: 120x55
fonts: reduce [font-sans-serif font-fixed font-serif "verdana"]

if not exists? %id.txt [write %id.txt 1]
i: to-integer read %id.txt
i: i - 1
either not exists? %indodex.db [
    CONNECT/create %indodex.db

    SQL "create table base (ID, Title, Nama, Alamat, Telefon, Handfon, 
    Fax, Email, Tgl_Nikah, Nota)"

    SQL "create table birthdays (ID, Nama, Jenis, Hubungan, Tgl_Lahir, 
    Agama, Nota)"
][
    CONNECT %indodex.db
]
do show-cc: make function! [] [
set-colors
display "IndoDex Ver. 1.0.1" [
            label 16 "ID:" id: text (to-string i)
            return

            label 16 "Title:" title: drop-list 30 #W "Pak" data ["Pak" "Ibu" 
            "Sdr." "Sdri." "Drs." "Dr." "Tuan" "Nyonya"] 20x5
            return
            label 16 "Nama:" nama: field 
            return
            label 16 "Alamat:" alamat: area 50x30
            return
            label 16 "Telefon:" telefon: field
            return
            label 16 "Handfon:" handfon: field
            return
            label 16 "Fax:" fax: fax: field
            return
            label 16 "E-Mail:" email: field
            return
            label 16 "Nota:" nota: area 50x30
            return
            button "Save" [

                ;UNCOMMENT THE FOLLOWING LINES AND YOU WILL SEE THEY DON'T WORK. 
                ANYBODY KNOW WHAT IS WRONG?

                ;SQL reduce ["insert into base values (?, ?, ?, ?, ?, ?, ?, ?, ?, 
                ?)" id/text, title/text, nama/text, alamat/text, telefon/text, handfon/text, 
                fax/text, email/text, tgl_nikah/text, nota/text]

                ;SQL {insert into base values ('Pak' 'Ibu' 'Sdr.' 'Sdri.' 'Drs.' 
                'Dr.' 'Tuan' 'Nyonya' 'Jonew')}
                (i: to-integer i)
                (i: i + 1)
                (write %id.txt i)
                (i: to-string i)
            ]
            button "GUI Info [

                print [id/text " " title/text " " nama/text " " alamat/text newline]
            ]
            button "DB Info" [
                print TABLES
                SQLite/col-info?: true
                print SQL "select * from base"
                print SQLite/columns
            ]
            button "Halt" [
                halt
            ]
            button "Quit" [
                quit
            ]
]
]
do-events
Louis:
1-Dec-2006
Ok, it seems to be related to certain records. No matter what word 
I search for it is not found in certain records. So it has something 
to do with those records.
Pekr:
14-Dec-2006
I am confused about what driver is doing ... the difference of Direct 
mode. Hmm, maybe I do - there is a difference between the string 
mode, and block mode. With string mode, the driver does not touch 
the expression, so I am responsible for putting VALUES('06-Dec-2006') 
or VALUES('"06-Dec-2006"') - simply put - if I want in db to have 
my date value being represented as a REBOL string, I have to put 
it into parenthesis myself. So actually parenthesing it twice, as 
sqlite itself already uses '06-Dec-2006' and considers it being a 
string ...
Ashley:
15-Dec-2006
Success! ... of sorts. If you add a 'recycle as the first line of 
the 'sql func then all seems to work fine; but a lot slowwwwwwer 
(1 minute 48 as opposed to 1.5 seconds in Pekr's test case).


But, if you recycle every 100 statements it still works and only 
increases the runtime to 1.85 seconds. I'll do a few more tests before 
uploading a new version with this change.
Pekr:
21-Dec-2006
There seems to be a bit messy situation in how integers are handled 
with SQLite, so beware. If you don't specify column types, as eg. 
in my following example:

create table logs (date, time, ipaddr, url, ctype, incident)

, then expect following situation:

1) sql "select incident from logs where incident = 4"   ; works

2) sql ["select incident from logs where incident = ?" 4]  ; works

3) sql "select incident from logs where incident = '4'"   ;  does 
not work


The strange thing is, that editing my db in SQLiteAdmin, it shows 
not column types (but imo it has to choose some "default" type internally). 
Changing according field type to Integer type, makes above case number 
3) to work too ...


So maybe it is always better to not be lazy and specify precisely 
column types? But in fact, when I specified column type as Integer, 
I did NOT expect case 3 to work ... I am going to do more tests myself 
to save myself from later headaches during specifying more complicated 
queries :-)
Robert:
8-Jan-2007
Question: I have something like a bill-of-material. And I would like 
to get such a structure back as graph. I'm just thinking of this 
isn't a generic function suitable to be coupled with a database. 
What do you think?
Robert:
17-Feb-2007
I'm thinking about updating to the newest SQLite version. And I just 
read there is a new API which should be used.


The sqlite3_prepare_v2() and sqlite3_prepare16_v2() interfaces are 
recommended for all new programs. The two older interfaces are retained 
for backwards compatibility, but their use is discouraged. In the 
"v2" interfaces, the prepared statement that is returned (the sqlite3_stmt 
object) contains a copy of the original SQL. This causes the sqlite3_step() 
interface to behave a differently in two ways:


If the database schema changes, instead of returning SQLITE_SCHEMA 
as it always used to do, sqlite3_step() will automatically recompile 
the SQL statement and try to run it again. If the schema has changed 
in a way that makes the statement no longer valid, sqlite3_step() 
will still return SQLITE_SCHEMA. But unlike the legacy behavior, 
SQLITE_SCHEMA is now a fatal error. Calling sqlite3_prepare_v2() 
again will not make the error go away. Note: use sqlite3_errmsg() 
to find the text of the parsing error that results in an SQLITE_SCHEMA 
return. 


When an error occurs, sqlite3_step() will return one of the detailed 
result-codes like SQLITE_IOERR or SQLITE_FULL or SQLITE_SCHEMA directly. 
The legacy behavior was that sqlite3_step() would only return a generic 
SQLITE_ERROR code and you would have to make a second call to sqlite3_reset() 
in order to find the underlying cause of the problem. With the "v2" 
prepare interfaces, the underlying reason for the error is returned 
directly.
Ashley:
17-Feb-2007
are you working on an update to SQLite.r at the moment?

 I didn't even know they had changed the API! If it's an easy change 
 I'll do it sooner than later.
Pekr:
23-Nov-2007
it does not sound appropriate, or why guys were asking mysql to add 
insert .... on duplicate key update facility, if update would be 
able to do it itself?
Pekr:
23-Nov-2007
guys, have you ever got to situation, that working with rebol itself 
was more productive than with SQL? I redone my version of inventory 
checking to SQL, and thas thing imports for 10x more time, and most 
of the checks I do on rebol side anyway. Kudoz to remove-each function 
too :-)
Pekr:
23-Nov-2007
how to do effectively following using SQL?
Pekr:
23-Nov-2007
our subsidiary company changed IDs of some products during the inventory 
in our system ;-) I need to create table called e.g. transform-id(oldid, 
newid) .... and now I would like to somehow do:


foreach row maintable [if found? in transform table maintable/id, 
then replace maintable/id with newid) :-)
Pekr:
27-Nov-2007
produkty.kod is unique ... if I remove "or replace" part, data seem 
to be OK, but it just no more does what I need it to do ....
Pekr:
2-Dec-2007
you can, by creating some code to do so, not by simply looking into 
the directory and using default OS facilities.
PeterWood:
2-Dec-2007
I didn't think that you needed to write any code to backup individual 
tables in SQLite but just supply the table name as a parameter to 
the .dump command.

I believe you can do this from the command line with SQLite3.
btiffin:
30-Mar-2008
Robert;  I'll fight you on that.  :)  Depends on the scale.  RebDB 
is beautiful for dbs under the 10K ish limit;  TRETBASE is destined 
to be a very handy REBOL scripting database engine, and Paul has 
been hammering on some larger datasets, (not something I'd plan on, 
but it's being developed that way).  So unless you are working in 
the 100K+ record arena, or need multiple user concurrency, I do think 
REBOL is the right tool for a database engine.
sqlab:
19-Sep-2008
What is the recommendet way to deal with a lock and to get rid of 
dat-journal?

I do not like to stop all processes and to manually remove the file.
Also to increase the retries has its limitations.
So, how do you handle the problem?
Pekr:
9-Oct-2008
how do you connect to DB? There are two modes - normal, and /direct 
....
SteveT:
9-Oct-2008
Hi all, is the SQLite driver for REBOL different to the standard 
in that it has locking working? Does this mean it can be used for 
small multi-user apps or is it that people DO but SHOULDN'T like 
with Access?

Thanks
Robert:
3-Dec-2008
I think makeing CONNECT handling this case implicit would make a 
lot of sense to make it simpler for users. So the programmer know, 
it's possible to alway call CONNECT/CREATE. What do you think?
amacleod:
3-Dec-2008
If I'm updating multiple fields is this the syntax?

SQL reduce ["update books SET bk=?, chap=?, section=?, up_date=? 
WHERE id=?" book chapter section update id]


I do not get an error but it does not seem to be updating all the 
fields.
Robert:
4-Dec-2008
Ashley, ok. Let's do it together, I can spend some time to discuss 
things and code some variants.
Pekr:
4-Dec-2008
Gyus, how to encrypt data in SQLite? I can't do it at app level (field 
storage level), as then SELECT would not work. Is the only solution 
to buy some SQLite variant, which encrypts at low level?
amacleod:
4-Dec-2008
I found part of the problem...

If I'm updating multiple records it fails to update but if update 
one record it updates.
I'm using a transaction here. do I need to place each var in ()?
amacleod:
17-Dec-2008
how do you search for a string within a column. Is that what they 
refer to as full text search? (fts)
amacleod:
22-Dec-2008
I can find the sql commands but I do not know how to rebolize them. 

Where can I find that I need to do this: '%'||?||'%' ?
amacleod:
22-Dec-2008
BrianH,

Its working...I just do not know how to make it dynamic.
Robert:
4-Jan-2009
A bit OT: Has anybody an idea how a "schema driven" database export 
does/could work?


I have an applicaiton that uses some tables, and records are linked 
by primary index IDs. Now I want to export a record and all its dependend 
records either into a new database or over the network to some other 
process.


Because ID ranges are different in the export target database or 
on the remote server, I need to rewrite the old IDs with the new 
ones.


At the moment I have a hand written, very app specific (and error 
prone) function for this. But I would like to do this in a much more 
generic fashion. Maybe just specifcing the relationship with some 
simple dialect and than have a generic function collecting everything.
Robert:
4-Jan-2009
How else will you do it if you transfer one set of related records 
from database A to a database B?
2301 / 1157812345...2223[24] 2526...112113114115116