Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 12:49
    zwortex commented #4549
  • 12:48
    zwortex commented #4549
  • Jan 14 22:30
    hiiamboris commented #4788
  • Jan 14 22:14
    dockimbel commented #4788
  • Jan 14 21:53
    dockimbel edited #4788
  • Jan 14 21:52
    dockimbel commented #4788
  • Jan 14 21:46
    dockimbel assigned #4788
  • Jan 14 21:44
    greggirwin commented #4793
  • Jan 14 20:06
    hiiamboris commented #4793
  • Jan 14 20:05
    hiiamboris commented #4793
  • Jan 14 19:27
    hiiamboris closed #4768
  • Jan 14 19:27
    hiiamboris commented #4768
  • Jan 14 19:18
    hiiamboris reopened #4768
  • Jan 14 19:18
    hiiamboris commented #4768
  • Jan 14 18:52
    zwortex opened #4799
  • Jan 14 17:53
    hiiamboris commented #4793
  • Jan 14 17:50
    hiiamboris commented #4798
  • Jan 14 17:50
    hiiamboris commented #4798
  • Jan 14 17:47
    hiiamboris commented #4798
  • Jan 14 17:25
    greggirwin closed #4798
Gregg Irwin
@greggirwin
:^) If you're a Gilbert & Sullivan fan, it would be resident Djinn I think (from The Sorcerer).
Respectech
@Respectech
@lucindamichele Thanks very much for your Thanksgiving wishes. We also had a wonderful Thanksgiving yesterday with a house full of family and friends. I am looking forward to an exciting year with Red.
Rémi Gillig
@speps
I know a lot of you might be on Thanksgiving break but the latest Windows binary is broken on AppVeyor and the previous successful builds don't have artefacts available.
@hiiamboris seems like it's your commit that broke it red/red@19853a8
Compiling Red console...
*** Compilation Error: argument type mismatch on calling: >>
*** expected: [number!], found: [pointer! [byte!]]
*** in file: %/C/Users/regillig/Documents/MEGA/Code/AoC2017/Day24/modules/view/backends/windows/gui.reds
*** in function: exec/gui/adjust-selection
*** at line: 1861
*** near: [- p head unit-b
    case [
        size > end/1 [break]
        size > bgn/1 [end/1: end/1 - 1]
        true [bgn/1: bgn/1 - 1 end/1: end/1 - 1]
    ]
]
hiiamboris
@hiiamboris
Thanks. I'll look into it and PR a hotfix.
LFReD
@LFReD

Bug?

I create a hash! with 75,000 strings of triples using this code.

n: 1

loop 25000 [

s: rejoin ["user" n]
p: rejoin ["pred" n]
v: rejoin ["val" n]

append db reduce [s p v]
n: n + 1
]

giving me db: make hash! ["user1" "pred1" "val1" "user2" "pred2" "val2"...

I then save this using this code...

saveit: does [

    dbsave: to-block db
    save %db.txt dbsave
    dbsave: copy [] 
    ]

(not sure that's the best way to do that, but it works..open to suggestions!)

When I check the %db.txt, it's saved it as "user1" "pred1"... etc, BUT
It stops saving at "pred19532" ?? It goes only that far every time.

It works fine using the exact same code in Rebol 2

When I check the length of :db before the save, it's correct, so it's in the writing to %db.txt that something happens.
Gregg Irwin
@greggirwin
Is the file at any suspicious size? Will try to dupe soon if nobody else does.
LFReD
@LFReD
512 KB (524,290 bytes
Seems like a fairly suspicious size .5 mb
LFReD
@LFReD

length? db
== 75003
saveit
length? dbsave
== 75003
%db.txt file size : 524,290 bytes

Something going on here:
save %db.txt dbsave

Gregg Irwin
@greggirwin

What happens if you save to a string or binary (check then length) and write that out?

If your db is a block, you need to mold it to see the length as it will be written.

LFReD
@LFReD
Ok. I think I fixed by replacing the saveit function with this
saveit: does [
    save/all %db.txt db
    ]
Which also answers my question "not sure that's the best way..."
LFReD
@LFReD

After further testing, there's a new issue. Using the new saveit function and loading it back again.

Rebol2
kk: load %delme.txt
== make hash! ["one" "two" "three"]

Red
kk: load %delme.txt
Syntax Error: invalid issue! at {#[hash!["one" "two" "three"]]}
Where: do
Stack: load

Also when I use save/all %db.txt db
when I view the first bit of the db.txt file..

Rebol
.. #[hash!["user1" "pred1" "val1" "user2" "pred2"

Red
.. make hash! ["user1" "pred1" "val1" "user2"

(forget the two dots.. how do you escape the Gitter markup?)
hiiamboris
@hiiamboris
Please use https://gitter.im/red/bugs room for bugs discussion and when you're sure you've found a bug, post it our tracker: https://github.com/red/red/issues/new?template=bug_report.md
Oldes Huhuman
@Oldes
@LFReD I suppose you are trying to load hash! saved from Rebol into Red. But Red does not fully implemented the serialization format (the one using: #[...]). So far it supports only #[true],#[false] and #[none].
Btw.. you can use mold/all to see what is the string result used by save/all.
Oldes Huhuman
@Oldes
@LFReD and I'm not able to reproduce your loading issue...
>> db
== ["user1" "pred1" "val1" "user2" "pred2" "val2" "user3" "pred3" "val3" "user4" "pred4" "val4" "user5" "pred5" "val...
>> save %/a/db.txt db
>> length? db
== 75000
>> length? load %/a/db.txt
== 75000
LFReD
@LFReD
Continuing this in red/bugs..
LFReD
@LFReD
Regarding that bug. I was using the older binary from the red-lang site.. using latest build and it works fine.
LFReD
@LFReD
Ah, I've heard bits and pieces about a /pro version of Red? Any docs on that or deets?
Gregg Irwin
@greggirwin
Not at this time.
LFReD
@LFReD
ooh, now I'm really intrigued! :P
Gregg Irwin
@greggirwin
I don't do Go, so would have to read up on the struct/def format, but it seems like we could do a nice data-driven version of this in Red for the Gophers. Their binary is 30M for Linux, and 45M for Windows. We could save them some bandwidth. :^)
LFReD
@LFReD
Any chance of variable length arguments with Red func?
Gregg Irwin
@greggirwin
Nope. Use a block.
GiuseppeChillemi
@GiuseppeChillemi

I find myselft using really often the the /skip refinement with select. Having a block like the following (or any one treated as record)

myblock: [
     key1 value1 value2 value3
     key2 value1 value2 value3
     key3 value1 value2 value3
     key4 value1 value2 value3
     key5 value1 value2 value3
]

Select/skip can't select anything other than the the first column: value1, which is quite limiting.

I see useful removing this limit adding an additional /pos (or /offset) integer refinement to select so instead of the first value, any other could be selected! Without /skip the pos/offset refinement should return the nth value after the key.

Jose Luis
@planetsizecpu
Block works well for me:
>> my_func: function [params [block!]][foreach x params [print x]]
== func [params [block!] /local x][foreach x params [print x]]

>> ? my_func
USAGE:
     MY_FUNC params

DESCRIPTION: 
     MY_FUNC is a function! value.

ARGUMENTS:
     params       [block!] 

>> my_func ["one" "two" "three"]
one
two
three
>>
xqlab
@xqlab
@GiuseppeChillemi Does this help
>> copy/part find/skip myblock [key2 value1]  4 4
== [
    key2 value1 value2 value3
]
or this
>> third find/skip myblock [key2 value1]  4 
== value2
Gregg Irwin
@greggirwin
@GiuseppeChillemi select already has a lot of refinements, and what you want is easy to do at the mezzanine level. It also makes sense, in many cases, to use sub blocks.
hiiamboris
@hiiamboris
With such a fixed table one shouldn't use select at all, as it'll be slow. Hash is the way to go ;)
GiuseppeChillemi
@GiuseppeChillemi
@xqlab Thanks, I already use a solution like this. I suggested this improvement to Select because, using Gregg's term, "it makes sense". Having a block treated as a record with elements and you can only select the first one, is limiting.
GiuseppeChillemi
@GiuseppeChillemi
@greggirwin from your experience, in presence of a SKIP refinement, do you could think it could be possible to be considered as key an element different from the first one?
Rudolf Meijer
@meijeru
Why not use find/skip?
GiuseppeChillemi
@GiuseppeChillemi
@meijeru because the selection phrase using find would be long and also the intent is having a select not limited to the first column but capable of retrieveing the others composing the record.
@meijeru it is really useful when you have external database tables stored in a block and you need to select an item:
The first feature let you access any column, the second one let you use any column as key.
Toomas Vooglaid
@toomasv
@GiuseppeChillemi Why not do it? Something like this:
mydata: make hash! [
     key1 value11 value12 value13
     key2 value21 value22 value23
     key3 value31 value32 value33
     key4 value41 value42 value43
     key5 value51 value52 value53
]
myselect: func [data key len pos][
    pick find/skip data key len pos
]
myselect mydata 'key1 4 1
;== key1
myselect mydata 'key1 4 3
;== value12
myselect mydata 'key3 4 2
;== value31
myselect mydata 'key5 4 4
;== value53
GiuseppeChillemi
@GiuseppeChillemi
@toomasv good! Why not implementing it in select? It's seems so easy!
Toomas Vooglaid
@toomasv
Because it is so easy !?
GiuseppeChillemi
@GiuseppeChillemi
@toomasv 😁 because you do not have to learn another word and it's syntax and select will become a very powerful command? (promise I will not continue!)
Toomas Vooglaid
@toomasv
IOW "Red should do everything I think it might do." You are going to rob programmers their job :imp: