--- Log opened Thu Sep 30 00:00:08 2010
00:06 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
00:23 -!- ExtraSpice [~XtraSpice@] has quit [Ping timeout: 240
00:31 -!- navigator [~navigator@p54894137.dip.t-dialin.net] has quit [Quit:
WeeChat 0.3.3]
00:36 -!- rlab [~Miranda@] has quit [Read error: Connection reset by
00:44 -!- thomas_b [~thomasb@cm-] has joined #go-nuts
00:56 -!- iant1 [~iant@] has quit [Quit: Leaving.]
01:05 -!- major_majors [~major_maj@c-68-40-195-246.hsd1.mi.comcast.net] has joined
01:06 -!- l00t [~i-i3id3r_@20150152121.user.veloxzone.com.br] has joined #go-nuts
01:08 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has joined
01:12 -!- mikespook [~mikespook@] has joined #go-nuts
01:18 -!- major_majors [~major_maj@c-68-40-195-246.hsd1.mi.comcast.net] has quit
[Quit: major_majors]
01:21 -!- scm [scm@d038063.adsl.hansenet.de] has quit [Ping timeout: 240 seconds]
01:23 -!- scm [scm@d039096.adsl.hansenet.de] has joined #go-nuts
01:26 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
01:34 < plexdev> http://is.gd/fBk0Q by [Andrew Gerrand] in go/doc/ -- doc:
faq updates part one
01:43 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
01:58 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
01:58 -!- mode/#go-nuts [+v iant] by ChanServ
02:06 < plexdev> http://is.gd/fBmsl by [Andrew Gerrand] in
go/misc/dashboard/builder/ -- misc/dashboard/builder: remove build files after
02:06 < plexdev> http://is.gd/fBmso by [Andrew Gerrand] in 3 subdirs of
go/src/pkg/ -- archive/zip: new package for reading ZIP files
02:37 -!- Tv [~tv@gige.bur.digisynd.com] has quit [Disconnected by services]
02:37 -!- Tv1 [~tv@gige.bur.digisynd.com] has joined #go-nuts
02:40 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has joined
02:42 -!- Tv1 [~tv@gige.bur.digisynd.com] has quit [Ping timeout: 265 seconds]
02:45 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has quit [Read
error: Connection reset by peer]
02:46 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has joined
02:52 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
02:59 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
03:00 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
03:04 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Client Quit]
03:07 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts
03:07 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping
timeout: 245 seconds]
03:08 -!- iant [~iant@] has joined #go-nuts
03:08 -!- mode/#go-nuts [+v iant] by ChanServ
03:13 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has quit [Ping
timeout: 240 seconds]
03:20 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has joined #go-nuts
03:23 < plexdev> http://is.gd/fBs50 by [Russ Cox] in go/src/pkg/ -- build:
disable archive/zip on arm
03:23 < plexdev> http://is.gd/fBs58 by [David Symonds] in go/src/cmd/prof/
-- 6prof: more accurate usage message.
03:23 < plexdev> http://is.gd/fBs5w by [Stephen Ma] in go/doc/codelab/wiki/
-- doc: update http handler usage for new signature
03:23 < plexdev> http://is.gd/fBs75 by [Stephen Ma] in go/src/pkg/http/ --
http: fix http handler signature changes previously missed
03:31 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has joined #go-nuts
03:37 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has quit [Quit: major_majors]
03:38 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has joined #go-nuts
03:39 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has quit [Read error: Connection reset by peer]
03:39 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has joined #go-nuts
03:51 -!- scm [scm@d039096.adsl.hansenet.de] has quit [Ping timeout: 255 seconds]
03:53 -!- scm [scm@d038077.adsl.hansenet.de] has joined #go-nuts
03:54 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has joined #go-nuts
03:55 < plexdev> http://is.gd/fBu1B by [Andrew Gerrand] in go/doc/ -- doc:
add to and consolidate non-english doc references
04:15 -!- artefon [~thiago@] has quit [Remote host closed the
04:18 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds]
04:22 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has quit
[Ping timeout: 265 seconds]
04:33 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has left #go-nuts ["ERC
Version 5.3 (IRC client for Emacs)"]
04:36 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has joined #go-nuts
04:36 < msponer> This is my first few hours with Go. I am parsing ~1 GB XML
files, and don't see a way in the XML or File API to measure progress through the
file.  Should I just make a new Reader that sits inbetween the File and XML
Parser, and counts bytes as they go through?  Or am I missing something?
04:37 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has joined #go-nuts
04:39 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has quit [Quit:
04:44 -!- major_majors [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has quit [Read error: Operation timed out]
04:45 < xb95> msponer: You could do that, that'd probably work well.  I
don't know how to do it using the XML or File API as it stands, but I'm not
intimately familiar with them.
04:47 -!- major_majors_ [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has joined #go-nuts
04:53 < msponer> Ok. Thank you.
04:53 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-177-190.clienti.tiscali.it] has
joined #go-nuts
04:54 * Project_2501 yawn :/
04:55 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has joined #go-nuts
05:00 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
05:01 -!- scm [scm@d038077.adsl.hansenet.de] has quit [Ping timeout: 276 seconds]
05:02 -!- scm [scm@d070220.adsl.hansenet.de] has joined #go-nuts
05:09 -!- jhh [~jhh@e179096172.adsl.alicedsl.de] has joined #go-nuts
05:11 -!- res [c9ed8246@gateway/web/freenode/ip.] has joined
05:12 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 240
05:27 -!- fabled [~fabled@letku109.adsl.netsonic.fi] has joined #go-nuts
05:35 < uriel> msponer: ~1Gb XML files?  oh dear, oh dear...
05:36 < enferex> ppppppp pageing
05:36 < enferex> heheh :-)
05:41 < enferex> msponer: I must say handling 1GB files, that does seem
rather nice that the runtime can handle such large datasets.  I'd be interested in
the performance.
05:41 -!- SRabbelier [~SRabbelie@ip138-114-211-87.adsl2.static.versatel.nl] has
quit [Read error: Connection reset by peer]
05:43 < msponer> Haha.  Yes, I am curious about how well it will work.  I am
hoping it will be faster than the Win32 MSXML -> SQLite system this code uses
now.  The data set is usually several to a couple dozen ~1GB XML files.
05:44 < msponer> I think I am personally responsible for the author of
SQLite putting a size limit on it's tables.  :)
05:45 < msponer> I bought a support contract from him to help tune the SQL
queries, and he added the limit soon after.
05:52 -!- jrslepak [~jrslepak@71-13-223-16.dhcp.mrqt.mi.charter.com] has joined
05:52 -!- jrslepak [~jrslepak@71-13-223-16.dhcp.mrqt.mi.charter.com] has quit
[Client Quit]
05:53 -!- SRabbelier [~SRabbelie@ip138-114-211-87.adsl2.static.versatel.nl] has
joined #go-nuts
06:00 < nf_> why what huh
06:00 < nf_> why on earth would you have a ~1gb XML file?
06:01 < msponer> 3.2 megs/second to just scan through 1096meg XML file on my
2ghz MacBook...
06:01 < nf_> msponer: that sounds like a reasonable solution.  you could
have it send the byte count on a channel to a goroutine that periodically prints
out the progress
06:03 -!- gabriel9 [~gabriel9@] has joined #go-nuts
06:03 < msponer> Ahh, good idea.  This is really my fourth hour with Go and
I need to re-read the section of passing variables.  I think the Reader wrapper
class I made is being passed by value inside the XML parser, since the progress
variable is being reset with every read.
06:04 < msponer> The enormous XML files aren't my choice, of course.  This
is a mobile analytics program, and the data comes from companies upstream of us.
06:05 < msponer> ~1gb/month is a typical dataset for a medium sized company
in this niche, and we've been in business for 7 or 8 years...
06:06 < nf_> "class"?  there are no classes ;)
06:06 < msponer> I am happy.  The XML parsing code seems to be working
great, and the program was I/O bound, and didn't freak out with memory allocation
or anything nutty like that.
06:07 < msponer> I have no class?
06:07 < nf_> feel free to post code on a pastebin if you want me to take a
look at it
06:07 < enferex> you have a type
06:08 < msponer> That would be embarassing-- I started with "hello world"
and kept modifying it until it was reading xml files.  But sure.
06:09 -!- major_majors_ [~major_maj@173-10-44-57-Michigan.hfc.comcastbusiness.net]
has quit [Quit: major_majors_]
06:14 < msponer> Ok, thank you for taking a look at this:
06:15 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has quit [Quit:
06:15 < msponer> I probably just don't understand the semantics, why the
variable in the struct is not surviving subsequent calls.
06:18 < msponer> Sample output: File size: 1097m
06:18 < msponer> pr Read: 4096 pos: 4096 pr.Pos: 4096
06:18 < msponer> pr Read: 4096 pos: 8192 pr.Pos: 4096
06:18 < msponer> pr Read: 4096 pos:12288 pr.Pos: 4096
06:18 < msponer>
06:18 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
06:19 < nf_> msponer: declare the functions on *progressReader instead of
06:19 < nf_> func (pr progressReader) Read(b []byte)
06:19 < nf_> is the same as
06:19 < nf_> func Read(pr progressReader, b []byte)
06:19 < nf_> semantically
06:19 < nf_> (not in terms of how it's used)
06:20 < nf_> when you call somePr.Read(b) it's just passing in a copy of
06:20 < nf_> pass in the pointer, and you can update the struct
06:24 < msponer> Great, thank you.
06:25 < msponer> I suspected something like that, but then just freaked out
and started adding *'s everywhere and got a "method requires pointer receiver"
compiler error, and decided that I should RTFM and learn the terminology.
06:27 -!- mduft [~mduft@gentoo/developer/mduft] has quit [Remote host closed the
06:30 < nf_> just remember this: all values are copied
06:30 < nf_> ti's just that when you copy a pointer value, it's still
pointing to the same thing ;)
06:31 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts
06:34 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has joined #go-nuts
06:35 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has quit [Client
06:37 < msponer> Is "golang" the keyword for Go related Google searches?
06:40 < msponer> Ahh, just found
06:41 -!- Eko [~eko@res-128-61-89-71.res.gatech.edu] has joined #go-nuts
06:41 < uriel> msponer: http://go-lang.cat-v.org/go-search
06:42 -!- mduft [~mduft@gentoo/developer/mduft] has joined #go-nuts
06:42 < uriel> by the way, if anyone wants to help maintain that custom
search engine, more editors are very welcome
06:48 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has left #go-nuts ["ERC
Version 5.3 (IRC client for Emacs)"]
06:48 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has joined #go-nuts
07:16 -!- fuzzybyte [~fuzzybyte@] has quit [Read error: Operation timed
07:17 -!- zerd [~quassel@tor.zerd.net] has quit [Read error: Connection reset by
07:18 -!- zerd [~quassel@tor.zerd.net] has joined #go-nuts
07:19 -!- fuzzybyte [~fuzzybyte@] has joined #go-nuts
07:19 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has joined #go-nuts
07:20 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has quit [Quit: Morten.  Desu~]
07:26 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has joined
07:28 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has joined #go-nuts
07:28 -!- tvw [~tv@] has joined #go-nuts
07:29 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has quit [Quit: ERC
Version 5.3 (IRC client for Emacs)]
07:29 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
07:31 -!- wrtp [~rog@] has joined #go-nuts
07:36 -!- quag [~quag@121-98-81-61.bitstream.orcon.net.nz] has quit [Ping timeout:
240 seconds]
07:36 -!- quag [~quag@121-98-81-61.bitstream.orcon.net.nz] has joined #go-nuts
07:42 -!- fabled [~fabled@letku109.adsl.netsonic.fi] has quit [Ping timeout: 264
07:42 < plexdev> http://is.gd/fBLRT by [Andrew Gerrand] in 2 subdirs of go/
-- release.2010-09-29
07:50 -!- ucasano [~ucasano@] has joined #go-nuts
07:52 -!- emmanueloga [~emmanuelo@] has quit [Ping timeout: 252
07:53 -!- photron [~photron@port-92-201-135-146.dynamic.qsc.de] has joined
07:55 -!- fabled [~fabled@xdsl-83-150-94-237.nebulazone.fi] has joined #go-nuts
08:00 < plexdev> http://is.gd/fBN98 by [Andrew Gerrand] in go/ -- tag
08:02 -!- sacho [~sacho@95-42-116-140.btc-net.bg] has quit [Ping timeout: 276
08:02 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has quit
[Quit: Ex-Chat]
08:05 -!- wrtp [~rog@] has quit [Ping timeout: 240 seconds]
08:11 -!- bmizerany [~bmizerany@] has quit [Remote host closed the
08:12 -!- wrtp [~rog@] has joined #go-nuts
08:14 -!- AngryParsley [~AngryPars@unaffiliated/angryparsley] has quit [Quit: ZNC
- http://znc.sourceforge.net]
08:14 -!- AngryParsley [~AngryPars@unaffiliated/angryparsley] has joined #go-nuts
08:28 -!- niemeyer [~niemeyer@] has joined #go-nuts
08:31 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has joined
08:32 -!- napsy [~luka@] has joined #go-nuts
08:33 -!- ucasano [~ucasano@] has quit [Quit: ucasano]
08:34 -!- ucasano [~ucasano@] has joined #go-nuts
08:38 -!- adu_ [~ajr@pool-173-66-253-25.washdc.fios.verizon.net] has joined
08:39 -!- rlab [~Miranda@] has joined #go-nuts
08:40 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has quit [Ping
timeout: 245 seconds]
08:40 -!- ronnyy [~quassel@p4FF1D135.dip.t-dialin.net] has joined #go-nuts
08:41 -!- melba [~a@] has joined #go-nuts
08:41 -!- melba [~a@] has quit [Changing host]
08:41 -!- melba [~a@unaffiliated/lazz0] has joined #go-nuts
08:53 -!- adu_ [~ajr@pool-173-66-253-25.washdc.fios.verizon.net] has quit [Ping
timeout: 245 seconds]
08:56 -!- jmettraux [~jmettraux@] has quit [Remote host closed the
09:01 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
joined #go-nuts
09:11 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-177-190.clienti.tiscali.it] has
quit [Read error: Connection reset by peer]
09:11 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has quit [Ping
timeout: 240 seconds]
09:15 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has joined #go-nuts
09:16 -!- chressie [~chressie@dreggn.in-ulm.de] has quit [Quit: WeeChat 0.3.3]
09:17 -!- chressie [~chressie@dreggn.in-ulm.de] has joined #go-nuts
09:19 -!- ExtraSpice [~XtraSpice@] has quit [Read error: Connection
reset by peer]
09:21 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
09:23 -!- virtualsue [~chatzilla@nat/cisco/x-fjiozltujunbiiwb] has joined #go-nuts
09:27 -!- scyth [~scyth@rots.in.rs] has quit [Disconnected by services]
09:27 -!- scyth_ [~scyth@rots.in.rs] has joined #go-nuts
09:27 -!- scyth [~scyth@zeljko.eunet.rs] has joined #go-nuts
09:30 -!- mikespook [~mikespook@] has quit [Quit: Leaving.]
09:31 -!- mikespook [~mikespook@] has joined #go-nuts
09:33 -!- mikespook [~mikespook@] has quit [Client Quit]
09:34 -!- chressie [~chressie@dreggn.in-ulm.de] has quit [Quit: WeeChat 0.3.3]
09:35 -!- chressie [~chressie@dreggn.in-ulm.de] has joined #go-nuts
09:37 -!- nighty^ [~nighty@x122091.ppp.asahi-net.or.jp] has joined #go-nuts
09:49 -!- photron [~photron@port-92-201-135-146.dynamic.qsc.de] has quit [Ping
timeout: 276 seconds]
09:52 -!- Rennex [rennex@giraf.fi] has quit [Ping timeout: 240 seconds]
09:58 -!- jdp [jdp@] has quit []
10:16 -!- Rennex [rennex@giraf.fi] has joined #go-nuts
10:21 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has joined
10:26 < ucasano> hi
10:26 < ucasano> a question: which is the most stable and usable go mysql
interface library?
10:26 < ucasano> I tried gomysql but seems not to be working :(
10:29 -!- l00t [~i-i3id3r_@20150152121.user.veloxzone.com.br] has quit [Quit:
10:30 -!- napsy [~luka@] has quit [Ping timeout: 265 seconds]
10:38 -!- tvw [~tv@] has quit [Ping timeout: 240 seconds]
10:42 -!- ucasano [~ucasano@] has quit [Ping timeout: 265 seconds]
10:43 -!- Cyprien_ [~Cyprien@186-156.3-85.cust.bluewin.ch] has quit [Ping timeout:
252 seconds]
10:47 -!- gabriel9 [~gabriel9@] has quit [Remote host closed the
10:50 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Ping timeout: 240
10:53 -!- gabriel9 [~gabriel9@] has joined #go-nuts
10:56 -!- napsy [~luka@] has joined #go-nuts
11:04 -!- scm [scm@d070220.adsl.hansenet.de] has quit [Quit: leaving]
11:04 -!- scm [scm@d070220.adsl.hansenet.de] has joined #go-nuts
11:19 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has quit [Quit:
11:20 -!- virtualsue [~chatzilla@nat/cisco/x-fjiozltujunbiiwb] has quit [Quit:
ChatZilla 0.9.86 [Firefox 3.5.13/20100914122142]]
11:38 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has joined
11:38 -!- tvw [~tv@] has joined #go-nuts
11:39 < nf_> ( http://github.com/thoj/Go-MySQL-Client-Library ? )
11:43 < wrtp> nf_: he's gone...
11:46 < nf_> i looked through the ones listed at
11:47 < nf_> that seemed most current
11:50 -!- artefon [~thiago@] has joined #go-nuts
12:01 -!- napsy [~luka@] has quit [Ping timeout: 272 seconds]
12:02 < wrtp> nf_: BTW what do you think of this:
rog-go.googlecode.com/hg/extend ? abuse of reflection or quite elegant?
12:15 -!- iant [~iant@] has quit [Quit: Leaving.]
12:19 -!- cenuij [~cenuij@base/student/cenuij] has quit [Remote host closed the
12:23 -!- kanru [~kanru@218-161-125-110.dynamic.hinet.net] has joined #go-nuts
12:25 -!- Maxdamantus [~m@203-97-238-106.cable.telstraclear.net] has quit [Ping
timeout: 252 seconds]
12:33 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
12:43 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
12:45 -!- tensorpudding [~user@] has joined #go-nuts
12:45 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
12:51 -!- prip [~foo@host36-126-dynamic.36-79-r.retail.telecomitalia.it] has quit
[Quit: Leaving]
12:51 < nf_> i think it's kinda cute
12:52 -!- skejoe [~skejoe@] has joined #go-nuts
12:52 < nf_> conceptually it's pretty, but being 8x slower it's actually no
more succinct than using vector
12:52 < nf_> closures are great :)
12:52 < nickaugust> i was going to say isnt that the same as what a vector
12:53 < wrtp> it's not faster but it is more succinct :-) it always rankles
a little bit adding that extra loop to make the copy at the end.
12:54 < wrtp> it's a pity that reflection is so...  slow...
12:55 < wrtp> nickaugust: it does what a vector is probably most often used
12:57 < wrtp> i think all the time is going into this line:
12:58 < wrtp> and i can't think how to speed it up, even using unsafe
13:00 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it]
has joined #go-nuts
13:00 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has quit [Quit:
13:00 < wrtp> if reflect didn't do an allocation for every NewValue, things
would be better, i think.
13:01 < wrtp> maybe reflect.Value should not be an interface.
13:01 -!- napsy [~luka@] has joined #go-nuts
13:04 < nickaugust> wrtp: is v.Elem(len).SetValue(reflect.NewValue(x)) slow?
I do that quite often in my project
13:04 < wrtp> well, it does at least two allocations
13:04 < nickaugust> i dont know how it wouldnt do a new allocation on
13:05 < wrtp> slow here is relative to just converting to interface{} and
assigning to an array element
13:05 -!- kanru [~kanru@218-161-125-110.dynamic.hinet.net] has quit [Ping timeout:
265 seconds]
13:05 -!- Maxdamantus [~m@203-97-238-106.cable.telstraclear.net] has joined
13:05 < wrtp> it can't avoid it - all the Value instances are pointers
13:05 < nickaugust> as in 'probably fast enough' for me anyway :)
13:05 < wrtp> yeah.  we're talking sub microsecond here.
13:07 < wrtp> it's hard to see how to avoid an allocation, as converting
something larger than a pointer to an interface with methods also does an
13:08 -!- iant [~iant@] has joined #go-nuts
13:08 -!- mode/#go-nuts [+v iant] by ChanServ
13:09 -!- kanru [~kanru@218-161-125-110.dynamic.hinet.net] has joined #go-nuts
13:10 -!- mduft [~mduft@gentoo/developer/mduft] has quit [Read error: Connection
reset by peer]
13:10 -!- mduft [~mduft@gentoo/developer/mduft] has joined #go-nuts
13:14 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has quit [Ping
timeout: 240 seconds]
13:22 -!- emmanueloga [~emmanuelo@] has joined #go-nuts
13:24 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
13:24 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
13:29 -!- DerHorst [~Horst@e176107132.adsl.alicedsl.de] has joined #go-nuts
13:32 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has joined #go-nuts
13:33 -!- prip [~foo@host36-126-dynamic.36-79-r.retail.telecomitalia.it] has
joined #go-nuts
13:34 -!- iant [~iant@] has quit [Ping timeout: 276 seconds]
13:38 -!- emmanueloga [~emmanuelo@] has quit [Ping timeout: 240
13:43 -!- iant [~iant@] has joined #go-nuts
13:43 -!- mode/#go-nuts [+v iant] by ChanServ
13:45 -!- iant [~iant@] has quit [Client Quit]
13:50 -!- emmanueloga [~emmanuelo@host52.190-30-10.telecom.net.ar] has joined
14:09 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has quit
[Quit: Ex-Chat]
14:12 -!- iant [~iant@nat/google/x-qpylqgunbnjzwrdj] has joined #go-nuts
14:12 -!- mode/#go-nuts [+v iant] by ChanServ
14:17 < Gertm> when making a method, is it better to work on a pointer of a
type or on the type?  (in the receiver clause)
14:17 <+iant> it depends
14:17 <+iant> often the pointer is simpler
14:18 -!- kanru [~kanru@218-161-125-110.dynamic.hinet.net] has quit [Ping timeout:
264 seconds]
14:18 < Gertm> why is that?
14:18 <+iant> but for a small type where the receiver is not changed a value
can be better
14:18 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #go-nuts
14:18 < Gertm> ah
14:18 <+iant> using a pointer only requires passing a pointer, not the whole
14:18 -!- kingfishr_ [~kingfishr@75.sub-97-255-45.myvzw.com] has joined #go-nuts
14:18 < Gertm> Ah yea, I keep forgetting that.  (go is my first pointy
14:21 < wrtp> Gertm: if the methods have side effects on the receiver, then
you it's usually necessary to make the receiver a pointer type.
14:21 -!- Venom_X [~pjacobs@] has joined #go-nuts
14:21 < wrtp> Gertm: 'cos otherwise you can't change the fields in the
receiver.  (well, you can, but the changes will be lost, because they're being
made on a copy)
14:22 < Gertm> wrtp: ah, that actually makes a lot of sense
14:22 < Gertm> Being used to functional languages, that will take some
adjusting :)
14:23 -!- hokapoka [~hokapoka@hoka.hokapoka.com] has quit [Read error: Operation
timed out]
14:24 -!- navigator [~navigator@p54897915.dip.t-dialin.net] has joined #go-nuts
14:24 < kingfishr_> I have a type question -- is it possible to write a
function which binds arguments to a function?  (partially applies them).  Like
this: http://pastie.org/1191380, but for arbitrary types (or even an arbitrary #
of arguments).
14:27 < wrtp> kingfishr: i don't think so.  you can't use reflection to
create a new function, unless you know the resultant type already.
14:29 < wrtp> nf_: using some horrible unsafe hackery i managed to get the
overhead of Pusher vs extend down to 60%.
14:29 < wrtp> for types with size < sizeof(uintptr) anyway
14:29 < wrtp> s/vs extend/vs vector/
14:30 < kingfishr_> wrtp: ok, thanks
14:34 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has joined
14:36 -!- kingfishr_ [~kingfishr@75.sub-97-255-45.myvzw.com] has quit [Quit:
14:40 < nickaugust> wrtp: can i see that?
14:42 < Gertm> if all the files in a package need the same 'package
<name>' line, where do I put my 'main' function then?
14:43 < nickaugust> Gertm: in package main :)
14:43 < wrtp> nickaugust: http://rog-go.googlecode.com/hg/extend
14:43 < wrtp> nickaugust: (excuse me while i wipe the vomit off my chin :-])
14:45 < wrtp> who says you can't do pointer arithmetic in go?  :-)
14:46 < nickaugust> wow.  i'll stick with vector for the time being :)
14:47 < wrtp> well, the interface remains the same, and that's the important
14:47 < wrtp> the implementation will clean up once reflect gets faster
14:47 < nickaugust> i didnt realize you could do val, ok :=
blah.(*reflect.Type) or whatever..  thats handy
14:48 < wrtp> basically, it's very hard to do reflecty kinda stuff without
14:48 < nickaugust> you think they will change that in reflect?
14:48 < wrtp> i think it's the only thing they can do to speed things up.
14:49 < wrtp> maybe there's another way.  but i can't see that there was
anything much else slowing things down.
14:49 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has joined
14:49 < nickaugust> is there a function that will copy a refect.StructValue
to an actual struct?
14:50 < wrtp> just call Interface()
14:50 < nickaugust> i wish after doing the type assertions you could just
use the value as a struct rather than a reflect.StructValue...  i guess thats not
possible though?
14:50 < wrtp> and then convert it to the correct type
14:50 < wrtp> you can
14:51 < nickaugust> hmm let me try that.  i guess thats another allocation
14:51 < wrtp> type T struct {a, b int}; x := T{1,43}; v :=
reflect.NewValue(x).(*reflect.StructValue).Interface().(T); print(x.a)
14:51 < wrtp> i don't think it is
14:52 < wrtp> probably depends how big the type is
14:52 < wrtp> oops; s/print\(x.a\)/print(v.a)/
14:52 < nickaugust> yeah i got that...  hmm i didnt know you could do that
14:54 < wrtp> do what?
14:54 < nickaugust> (reflect.StructValue).Interface().(T)
14:55 < nickaugust> in my project i dont know the type to do a type
assertion though...  all i know is its a struct
14:55 < nickaugust> is there a way to use the Name() of StructType to do a
type assertion?
14:56 < wrtp> if you don't know the type, you've got to remain in Reflection
14:56 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has joined #go-nuts
14:57 < wrtp> a type assertion asserts that you know the type in question.
you don't know the type, so you can't do a type assertion.  simple really.
14:58 < nickaugust> wrtp: thats what i dont understand because doing
obj.Type().(*reflect.StructType).Name() will return the name of the struct type..
so why cant you use that info to do the assertion?
14:59 < wrtp> because the compiler has to know the type too
14:59 < wrtp> and the string returned by Name is dynamic - the compiler
cannot possibly know what it's going to return.
15:00 < nickaugust> ah!  yes ok that makes sense..  it gets the name at
runtime not compile time..  of course
15:00 < wrtp> at a basic level, the compiler has to allocate enough space on
the stack for the value.
15:00 -!- napsy [~luka@] has quit [Ping timeout: 245 seconds]
15:00 -!- awidegreen [~quassel@] has joined #go-nuts
15:00 < nickaugust> yes yes yes ok...  i understand
15:00 < wrtp> cool
15:01 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
15:01 < nickaugust> i dont really understand how the compiler works...  that
would be an intersting thing to study i suppose
15:02 < skelterjohn> I refer you to your local accredited university
15:02 < nickaugust> hehe..  i couldnt make it through high school..  i dont
think university is my thing :)
15:03 < nickaugust> im sure theres a book that will explain it just as well
as a prof
15:04 < nickaugust> and if i have any questions i'll just come ask
skelterjohn :)
15:04 < skelterjohn> I'm not nice.
15:04 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
15:05 < nickaugust> skelterjohn: you at Rutgers?
15:05 < skelterjohn> uh
15:05 < skelterjohn> yes?
15:06 < skelterjohn> oh, showed up in my /whois?
15:06 < nickaugust> yeah i saw when you joined
15:06 < skelterjohn> that is indeed where i am
15:07 * skelterjohn waits for the other shoe to drop.
15:09 < nickaugust> hehehe...  no shoe...  i was just reading about that kid
who commited suicide.  really sad.
15:09 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
15:09 < skelterjohn> yep.  talk of the town around here.
15:10 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has joined
15:12 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-177-190.clienti.tiscali.it] has
joined #go-nuts
15:18 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has joined #go-nuts
15:19 -!- Maxdamantus [~m@203-97-238-106.cable.telstraclear.net] has quit [Ping
timeout: 240 seconds]
15:21 -!- artefon [~thiago@] has quit [Quit: bye]
15:21 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.]
15:25 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has quit [Read error:
Connection reset by peer]
15:26 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 245
15:31 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has quit
[Quit: Ex-Chat]
15:37 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has joined #go-nuts
15:38 -!- virtualsue [~chatzilla@nat/cisco/x-onivjdnciorszldd] has joined #go-nuts
15:42 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
15:42 -!- Maxdamantus [~m@203-97-238-106.cable.telstraclear.net] has joined
15:43 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has joined
15:52 -!- kronoz [~user@] has joined #go-nuts
15:52 < kronoz> yo
15:53 < wrtp> hey
15:53 < nickaugust> howdy
15:54 < kronoz> so, how do I get to contribute code to go :-)
15:54 < wrtp> kronoz: fix something
15:54 < exch> kronoz: http://golang.org/doc/contrib.html
15:54 < wrtp> kronoz: or fill in a gap
15:54 < wrtp> exch: +1
15:54 < kronoz> cool.
15:55 < kronoz> so you guys are fully open to patches?
15:55 < wrtp> i guess it depends on the patch.  the guys at google are the
ones with commit privileges...
15:56 < exch> In principle, yes.  They will be reviewed for correctness and
usefulness though.  Any new 'features' are subject to rejection
15:56 < wrtp> ...  and they have high standards
15:56 < kronoz> which is a good thing.
15:56 < wrtp> yup
15:56 < wrtp> are you thinking of doing anything in particular
15:56 < wrtp> ?
15:57 < kronoz> not particularly, that is something I need to consider.  I
just want to contribute to a high-quality oss project and collaborate with smart
people on an interesting problem.
15:57 < kronoz> I use go for some of my own projects, and like it very much.
So it seems a good contender.
15:58 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has quit [Quit:
15:58 -!- photron [~photron@port-92-201-135-146.dynamic.qsc.de] has joined
15:58 < kronoz> is there are prospect of quality contributers eventually
gaining commit?  :)
15:58 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has joined #go-nuts
15:59 -!- skejoe [~skejoe@] has quit [Quit: leaving]
16:01 < exch> the overwhelming silence is probably a good indication of
'unknown' :p
16:01 -!- napsy [~luka@] has joined #go-nuts
16:02 < kronoz> haha
16:03 -!- kanru [~kanru@118-168-236-6.dynamic.hinet.net] has joined #go-nuts
16:04 < kronoz> anyway, yeah, that's obviously not a pressing concern right
now, I just want to get involved in the project and see how that goes.
16:05 < kronoz> coolio
16:06 < wrtp> kronoz: i think it's unlikely, unless you work at google.
16:06 -!- artefon [~thiagon@] has joined #go-nuts
16:07 < scyth> but of course, you don't have to contribute to the language
directly.  Writing new cool packages (or porting existing ones from other
languages) is highly appreciated :)
16:08 < exch> indeed
16:08 < exch> Full Go ports of existing C libs would probably be a major
16:08 -!- Tv [~tv@gige.bur.digisynd.com] has joined #go-nuts
16:09 < exch> For the more useful libs that's not a trivial task though
16:09 < nbjoerg> it also helps if the one doing the work knows the issues
faced in the original projects
16:09 < nbjoerg> quite a few of them are written the way they due to various
limitations of C
16:10 -!- kanru [~kanru@118-168-236-6.dynamic.hinet.net] has quit [Ping timeout:
240 seconds]
16:10 < exch> true
16:12 -!- res [c9ed8246@gateway/web/freenode/ip.] has quit [Ping
timeout: 252 seconds]
16:13 < kronoz> ah yes I am not limiting myself to necessarily working on
the core language
16:13 < kronoz> wrtp: unfortunately I am not a googler...
16:14 < kronoz> well regardless, I want to contribute some code :)
16:14 < kronoz> I think a good way of starting out might be to look at the
issue tracker and maybe take a shot at some trivial bugs
16:14 < wrtp> not having commit privileges doesn't really matter.  even
between the core team, there's often a lively interaction before something
actually gets committed.
16:14 < kronoz> then work my way up from there.
16:14 -!- tensorpudding [~user@] has quit [Remote host closed the
16:14 < kronoz> sure, well there is a code review procedure
16:14 < kronoz> so everything gets reviewed I believe?
16:15 < exch> yes
16:17 -!- ronnyy [~quassel@p4FF1D135.dip.t-dialin.net] has quit [Remote host
closed the connection]
16:17 < kronoz> which again, is a good thing.
16:18 < kronoz> itching to contribute to a good project and get actually
criticised by smart people.  That's a great way to improve.
16:21 -!- tensorpudding [~user@] has joined #go-nuts
16:22 < kronoz> anyway, thanks for your advice dudez
16:22 -!- kronoz [~user@] has left #go-nuts ["ERC Version 5.3 (IRC
client for Emacs)"]
16:25 -!- Cyprien_ [~Cyprien@148-96.79-83.cust.bluewin.ch] has joined #go-nuts
16:26 -!- DerHorst [~Horst@e176107132.adsl.alicedsl.de] has quit [Remote host
closed the connection]
16:29 -!- tvw [~tv@] has quit [Remote host closed the connection]
16:29 -!- aho [~nya@fuld-4d00d08d.pool.mediaWays.net] has joined #go-nuts
16:30 -!- artefon [~thiagon@] has quit [Remote host closed the
16:33 -!- Tv1 [~tv@gige.bur.digisynd.com] has joined #go-nuts
16:33 -!- Tv [~tv@gige.bur.digisynd.com] has quit [Disconnected by services]
16:38 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
16:39 -!- lmoura_ [~lauromour@] has quit [Ping timeout: 245 seconds]
16:40 -!- Cyprien_ [~Cyprien@148-96.79-83.cust.bluewin.ch] has quit [Read error:
Connection reset by peer]
16:44 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
16:47 -!- artefon [~thiagon@] has joined #go-nuts
16:48 -!- Cyprien_ [~Cyprien@148-96.79-83.cust.bluewin.ch] has joined #go-nuts
16:51 -!- msponer [~user@cpe-66-75-33-237.san.res.rr.com] has joined #go-nuts
16:51 -!- lmoura_ [~lauromour@] has joined #go-nuts
16:56 -!- lmoura_ [~lauromour@] has quit [Ping timeout: 245 seconds]
16:56 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it]
has quit [Quit: ucasano]
16:57 -!- lmoura_ [~lauromour@] has joined #go-nuts
16:59 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has joined
17:03 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
quit [Ping timeout: 245 seconds]
17:06 < skelterjohn> anyone remember off the top of their head what function
you give to a type to make fmt.Printf call it with %v?
17:06 -!- wrtp [~rog@] has quit [Ping timeout: 245 seconds]
17:06 -!- artefon [~thiagon@] has quit [Ping timeout: 240 seconds]
17:06 < skelterjohn> is it String?
17:08 < exch> func String() string
17:08 -!- plainhao [~plainhao@mail.xbiotica.com] has joined #go-nuts
17:10 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
joined #go-nuts
17:10 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
17:11 -!- napsy [~luka@] has quit [Quit: Lost terminal]
17:11 -!- wrtp [~rog@] has joined #go-nuts
17:13 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has joined
17:13 < nickaugust> is there a json.Unmarshaler to unmarshal json into a
reflect.StructValue?  if not then I would add a func (s *reflect.StructValue)
UmarshalJSON() method and do it there?
17:13 -!- Bombe [~droden@freenet/developer/Bombe] has quit [Excess Flood]
17:13 -!- napsy [~luka@] has joined #go-nuts
17:14 -!- Bombe [~droden@weltgehirnmaschine.de] has joined #go-nuts
17:14 -!- Bombe [~droden@weltgehirnmaschine.de] has quit [Changing host]
17:14 -!- Bombe [~droden@freenet/developer/Bombe] has joined #go-nuts
17:14 -!- napsy_ [~luka@] has joined #go-nuts
17:20 -!- artefon [~thiagon@] has joined #go-nuts
17:25 -!- Guest12358 [~luka@] has quit [Quit: Lost terminal]
17:26 -!- freetz [~fritz@rome.ceat.okstate.edu] has joined #go-nuts
17:27 -!- lmoura_ [~lauromour@] has quit [Ping timeout: 276
17:27 < nickaugust> hmm, i think writing UnmarshalJSON() method for
reflect.StructValue might be over my head
17:29 < skelterjohn> what are you working on?
17:29 < skelterjohn> i always get the feeling that you're kinda reinventing
the wheel
17:30 < exch> Isn't a lot less of a hassle to just unmarshal to a known type
and then create a reflect.Value from that the old fashioned way?
17:31 -!- wrtp [~rog@] has quit [Quit: wrtp]
17:32 -!- lmoura_ [~lauromour@] has joined #go-nuts
17:32 < msponer> Newbie here.  Is there syntax to use a single return value
in a statement when the function returns multiple values?
17:32 < msponer> For example, file.Stat().Size is incorrect because
file.Stat() returns two values.
17:32 < msponer>
17:33 < skelterjohn> not that i know of
17:33 < skelterjohn> in my experience, separating these kinds of things onto
two lines makes code clearer and easier to read
17:33 -!- scyth [~scyth@zeljko.eunet.rs] has quit [Quit: Leaving]
17:33 < skelterjohn> even if it does involve more typing
17:34 < skelterjohn> not to imply that less typing -> easier to read code
17:34 < exch> msponer: You mean you wish to ignore one of the return values?
17:35 < msponer> Ok. I guess I am used to the overly complex class
hierarchies in other languages where it's common to chain retrieving them on one
17:35 < skelterjohn> also, if you do "x, _ := file.State() \n x.Size" it
makes it obvious that you're purposefully ignoring the error
17:35 < exch> in which case, use the _ token for the var you don't need.:
foo, _, bar := Ireturn3Values()
17:36 < nickaugust> well im sure i am in some areas.  its mainly an
education project.  im taking some data models that are defined as structs, and
the data is stored in json files in the data/<model name> directoy and then
i have on disk indices in /indicies/<model name> and in memory indices named
simliarly..  so by adding a new data model all the indexes and search methods are
all work on all the data models.  so i
17:36 < nickaugust> use interface{} to accept all struct values then i pull
the struct name off to know what directory to search in ect.  so the types are not
know ahead of time for most of the functions although they are always struct types
17:36 < nickaugust> s/education/educational
17:37 < msponer> Yes, I want to ignore the error return value.  Maybe I am
blase about errors, but I already checked for an error when I opened the file, and
getting an error from file.Stat() seems a little silly.  Maybe the library is
doing more than just returning an internal structure when it does Stat and there
is a possibillity of an error at that point.
17:37 -!- ExtraSpice [~XtraSpice@] has quit [Remote host closed the
17:37 < nickaugust> seems silly to ignore an error
17:37 < skelterjohn> no - not silly in many cases
17:37 < skelterjohn> like this one, for instance
17:37 < msponer> Ok. Two lines.  :)
17:37 < skelterjohn> but it's good to be clear that that's what you're doing
17:38 < skelterjohn> that's my only point
17:39 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has quit [Quit:
17:40 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has joined #go-nuts
17:40 -!- itrekkie [~itrekkie@ip72-200-110-29.tc.ph.cox.net] has quit [Client
17:41 < nickaugust> exch: well thats the thing, i dont know the type ahead
of time.
17:42 < exch> fair enough
17:43 < nickaugust> id think json.Unmarshal should be able to unmarshal into
a reflect.StructValue..  i can tell its possible, just not implemented.  i'll take
a run at it..  if for nothing other than the sake of trying :)
17:47 < exch> I'm not sure.  The reflect package only deals with existing
types and their known methods/fields.  I have yet to see an instance where you can
construct a new type from scratch at runtime
17:48 < msponer> Another newbie syntax question: "int64 += int" is an
invalid operation, the int needs to be cast to int64.  Easy to type, but am I
missing a philisophical decision as to why upgrading to a larger type needs to be
17:48 < msponer> If I understand the philosophy I can cheat and guess at the
syntax better, rather then memorize it all :)
17:48 < Namegduf> msponer: Because int64 += int*int is much less clear.
17:48 < nsf> msponer: there are no implicit conversions
17:49 < Namegduf> The precision at which the math will be performed and the
consequences remain unclear.
17:49 < Namegduf> Hmm, not precision.
17:49 < Namegduf> Variable size.
17:50 < exch> Go is very picky about implicit conversions.  There are only
one or two cases where this works, but in general you should assume that it simply
won't work.  The reason why is mostly likely simplicity of the compiler/runtime or
something like that.  At the expensive of having to be a little more verbose in
your code
17:50 -!- artefon [~thiagon@] has quit [Quit: Leaving]
17:50 < Namegduf> The reason is that implicit conversions are a very easy
place for bugs to slip in at the edges.
17:51 < Namegduf> Conversions are a significant thing to do, as they change
the acceptable values that a variable could hold and the code work, so they're
17:51 < msponer> Ok, thanks.  I only know the philosophy as far as the
introduction at Google IO last year.
17:52 < msponer> But just to be clear, because I am stupid, "int64 += int"
has no inherent safety problems, right?  The cast is just to follow the language
convention of casting nearly all the time?
17:53 < Namegduf> That, and I'd be surprised if the code implementing said
restrictions distinguished between int64 += int, which is safe, and int64 +=
int*int, which is unclear.
17:53 < nsf> msponer: it doesn't matter whether it has problems or not..
compiler just doesn't have implicit casting rules, because it's sort of a KISS
thing to do
17:53 < nsf> s/compiler/language/
17:54 < nsf> but other than that it looks like int64 += int is safe
17:54 < nsf> I mean you can safely cast int to int64 in this expression
17:54 * Namegduf hated implicit conversions in C
17:54 < nsf> and proceed
17:55 < nsf> Namegduf: I hated user defined types mostly..  each library has
its own png_uint32_t
17:55 < nsf> etc.
17:55 < Namegduf> I reason in sets of valid inputs and values for things,
and casting quietly, subtly, and potentially quite far from the lines setting the
types of the variables, alters them.
17:55 < msponer> Ok. Thank you.  I am used to C, where explicit casts are a
reason to take a second glance at the line, to make sure it wasn't doing something
17:55 < msponer> So I really only paid attention to explicit casts when
reading code.
17:56 < KirkMcDonald> There is one category of implicit conversion allowed
by Go, which are to interface types.
17:56 < nsf> also int <-> float conversions are quite costly actually
17:56 < Namegduf> It's less a conversion and more boxing, but yeah.
17:56 < nsf> doing them silently is a bad idea
17:57 < nsf> at least one of them is costly
17:57 < Namegduf> Go will let you use a type where an interface that that
type satisfies is expected.
17:57 < Namegduf> Automatically boxing your given value in a value of the
interface type.
17:57 < Namegduf> I don't think it has implicit conversions anywhere else.
17:57 < msponer> Yes, I really like the implicit type casting.
17:58 < nsf> implicit or explicit?
17:58 < nsf> :)
17:58 < msponer> Interface casting, I mean.
17:58 < nsf> :D
17:58 < Namegduf> It's convenient and actually is always safe.
18:03 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
18:03 < msponer> I am just curious, when you said int <-> float
conversions are costly-- do you know if " int = int / int " ends up using the DIV
instruction on x86 processors or is it compiled into something like FDIV with
casts to and from floating point?
18:05 < msponer> I know people probably don't care about that level of
detail any more.  But this is for a large statistical data set and the remainder
or floating point precision isn't important.
18:05 < skelterjohn> int / int will be integer division - no float
18:05 < skelterjohn> why would it cast to float and then back?
18:05 < Namegduf> If you want it to be floating point, you convert both to a
float first.
18:05 < skelterjohn> does any language do that?
18:06 < Namegduf> A bonus of the explicit casts is that whether a division
is integer or not is fairly clear as a result.
18:06 -!- nsf [~nsf@jiss.convex.ru] has quit [Ping timeout: 272 seconds]
18:06 < Namegduf> float = int/int isn't possible.
18:07 < Namegduf> float = float(int/int) or float = float(int)/float(int)
are, and they're nice and clear.
18:07 -!- ExtraSpice [~XtraSpice@] has quit [Remote host closed the
18:10 -!- scyth_ [~scyth@rots.in.rs] has left #go-nuts []
18:10 -!- scyth [~scyth@rots.in.rs] has joined #go-nuts
18:13 -!- rup [~rupert@deathknight.net] has quit [Ping timeout: 265 seconds]
18:13 -!- rup [~rupert@deathknight.net] has joined #go-nuts
18:14 -!- fabled [~fabled@xdsl-83-150-94-237.nebulazone.fi] has quit [Quit:
18:14 -!- ako [~nya@fuld-4d00d5de.pool.mediaWays.net] has joined #go-nuts
18:14 -!- niemeyer [~niemeyer@] has quit [Ping timeout: 276 seconds]
18:16 -!- napsy [~luka@] has quit [Ping timeout: 245 seconds]
18:16 -!- aho [~nya@fuld-4d00d08d.pool.mediaWays.net] has quit [Ping timeout: 245
18:16 -!- fabled [~fabled@xdsl-83-150-94-238.nebulazone.fi] has joined #go-nuts
18:20 < plexdev> http://is.gd/fCEdq by [Russ Cox] in go/src/pkg/runtime/ --
runtime: serialize mcache allocation
18:21 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has joined
18:26 -!- rup [~rupert@deathknight.net] has quit [Ping timeout: 245 seconds]
18:27 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
18:27 -!- alefnula [~alefnula@] has joined #go-nuts
18:28 -!- rup [~rupert@deathknight.net] has joined #go-nuts
18:31 -!- emmanueloga [~emmanuelo@host52.190-30-10.telecom.net.ar] has quit [Ping
timeout: 264 seconds]
18:33 -!- virtualsue [~chatzilla@nat/cisco/x-onivjdnciorszldd] has quit [Ping
timeout: 240 seconds]
18:33 -!- emmanueloga [~emmanuelo@host52.190-30-10.telecom.net.ar] has joined
18:36 -!- bjarneh [~bjarneh@1x-193-157-195-143.uio.no] has joined #go-nuts
18:43 -!- virtualsue [~chatzilla@nat/cisco/x-peqiguoxrhhsfklt] has joined #go-nuts
18:52 < plexdev> http://is.gd/fCGSH by [Russ Cox] in go/src/libcgo/ -- fix
arm build on darwin leopard
18:53 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:41c6:ebe8:5983:7686] has joined
18:54 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
quit [Ping timeout: 265 seconds]
18:56 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has quit [Ping
timeout: 276 seconds]
19:00 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
joined #go-nuts
19:01 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
quit [Client Quit]
19:07 < gmilleramilar> So apparently you cannot cast back from an
interface{} to a named type that is a function pointer...  this program panics on
line 19.  is this a bug?  http://pastie.org/private/sp3j8flrjvvu9cdymsvba
19:08 < plexdev> http://is.gd/fCIrZ by [Russ Cox] in go/src/libcgo/ --
libcgo: fix comment
19:08 < plexdev> http://is.gd/fCIs7 by [Russ Cox] in 4 subdirs of go/ -- gc,
spec, tests: no auto-indirect of pointer to interface value
19:09 < plexdev> http://is.gd/fCIsG by [Russ Cox] in go/src/cmd/gc/ -- gc:
correct buffer size in sprint, add -L to show full paths
19:09 < plexdev> http://is.gd/fCIsQ by [Russ Cox] in 2 subdirs of go/ -- gc:
19:09 < KirkMcDonald> gmilleramilar: But it wasn't a FooFunc that you put
into the interface.
19:09 < KirkMcDonald> gmilleramilar: It was a func(int).
19:09 < gmilleramilar> but the assignment funcPtr = intFunc works fine...
19:09 -!- jhh [~jhh@e179096172.adsl.alicedsl.de] has quit [Quit: jhh]
19:09 -!- alefnula [~alefnula@] has quit [Ping timeout: 276 seconds]
19:10 < Namegduf> Being assignment compatible doesn't make them the same
19:10 < Namegduf> FooFunc and func(int) are different types.
19:10 < KirkMcDonald> gmilleramilar: The two types are assignment
compatible, but not identical.
19:10 < Namegduf> I suppose that's a case of an implicit cast I'd forgotten.
19:11 < KirkMcDonald> gmilleramilar: A type assertion requires that the type
of the value be identical to the type you are asserting.
19:11 < gmilleramilar> ant it appears that you cannot do the assignment at
all because intf.(func(int)).(FooFunc) is not valid syntax
19:12 < KirkMcDonald> gmilleramilar: FooFunc(intf.(func(int)))
19:12 < KirkMcDonald> gmilleramilar: Assert, then convert.
19:12 < gmilleramilar> ah.
19:12 < Namegduf> Type assertions and conversions have different syntax,
19:12 < KirkMcDonald> And I would not expect the explicit conversion to be
19:13 < KirkMcDonald> funcPtr = intf.(func(int)) should work.
19:13 < gmilleramilar> KirkMcDonald: that does work.
19:13 < gmilleramilar> thx.
19:13 < KirkMcDonald> gmilleramilar: Alternatively, have line 17 be: intf =
19:14 < KirkMcDonald> gmilleramilar: Then the type of the value in the
interface will be FooFunc, and intf.(FooFunc) will work.
19:15 < gmilleramilar> oh, yeah, that's probably cleaner for what I'm trying
to do.
19:16 -!- skejoe [~skejoe@] has joined #go-nuts
19:17 -!- artefon [~thiagon@] has joined #go-nuts
19:18 -!- napsy [~luka@] has joined #go-nuts
19:18 -!- skejoe [~skejoe@] has quit [Client Quit]
19:21 < Venom_X> what is the syntax of passing a map to a func as a
19:23 < exch> func F(m map[int]string) { ...  }
19:23 -!- jhh [~jhh@e179096172.adsl.alicedsl.de] has joined #go-nuts
19:25 < Venom_X> oh, thanks
19:28 -!- Cyprien__ [~Cyprien@148-96.79-83.cust.bluewin.ch] has joined #go-nuts
19:30 -!- plainhao [~plainhao@mail.xbiotica.com] has quit [Quit: plainhao]
19:31 -!- ExtraSpice [~XtraSpice@] has joined #go-nuts
19:31 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
19:31 -!- Cyprien_ [~Cyprien@148-96.79-83.cust.bluewin.ch] has quit [Ping timeout:
240 seconds]
19:32 -!- Cyprien__ [~Cyprien@148-96.79-83.cust.bluewin.ch] has quit [Client Quit]
19:33 -!- bjarneh [~bjarneh@1x-193-157-195-143.uio.no] has quit [Quit: leaving]
19:33 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
joined #go-nuts
19:34 -!- alefnula [~alefnula@] has joined #go-nuts
19:36 -!- serverhorror [~serverhor@chello080109038110.17.14.vie.surfer.at] has
quit [Client Quit]
19:39 -!- jhh [~jhh@e179096172.adsl.alicedsl.de] has quit [Quit: jhh]
19:44 < vsmatck> I want to have a pair as the key of a map (two uint64's).
I don't know how to best do this.
19:45 < vsmatck> The go spec seems to indicate I can make an interface for
the key and get comparison defined on that somehow.
19:47 -!- tvw [~tv@e176004221.adsl.alicedsl.de] has joined #go-nuts
19:49 < nickaugust> vsmatck: where does the spec indicate that?  i was under
the impression the key couldnt be a slice or struct or anything like that
19:51 < vsmatck> It says this, "If the key type is an interface type, these
comparison operators must be defined for the dynamic key values; failure will
cause a run-time panic." in this section
19:51 < nickaugust> hm intersting..  so your interface has to define the
comparison methods
19:53 < skelterjohn> no - the underlying type
19:54 < nickaugust> so you cant define your own comparison methods then?
19:54 < skelterjohn> you say method
19:54 < vsmatck> Does this mean if I give my struct some named function and
past some interface I can do this?
19:54 < skelterjohn> i haven't said method
19:54 < skelterjohn> i said operator on purpose
19:54 < skelterjohn> operator would be <, >, ==, !=
19:55 < skelterjohn> < is not defined for struct types
19:55 < skelterjohn> for instance
19:55 < vsmatck> Do I need to use []byte as the key and just smush the two
uint64s in to that?
19:55 < vsmatck> oh wait..  that's an array.
19:55 < skelterjohn> i don't believe you can use a slice as a map key
19:55 < vsmatck> I mean put them in a string.
19:55 < skelterjohn> you can use a string
19:55 < skelterjohn> that's one way
19:56 < vsmatck> Seems kind of shitty.  They'd be hard to access later that
19:56 < KirkMcDonald> Just use a uint128 as the key!
19:56 < skelterjohn> uint128 exists?  that's certainly a solution
19:56 < KirkMcDonald> (It doesn't.)
19:56 < skelterjohn> i was going to ask if your values actually fit into
19:56 < skelterjohn> oh
19:56 < skelterjohn> i have been trolled
19:56 < nickaugust> hehe
19:56 < KirkMcDonald> Verily.
19:56 < vsmatck> They have to be 64bit.
19:57 < skelterjohn> why?  what do they represent?
19:57 < vsmatck> I won't say.  Too much to explain and I'm certain I need
them to be 64bit.
19:57 < vsmatck> It's a can of worms you will hate.
19:57 < skelterjohn> could you hash them?
19:57 -!- jhh [~jhh@e179096172.adsl.alicedsl.de] has joined #go-nuts
19:57 < skelterjohn> gohash.googlecode.com
19:57 < skelterjohn> /shameless plug
19:58 < skelterjohn> if you can make a type MyKey struct {a, b uint64}
19:58 < skelterjohn> and define a hash and equals method, you can use the
gohash stuff
19:58 < skelterjohn> if you don't care about type safety
19:59 < skelterjohn> for instance, hash = a + b << 1
20:03 < vsmatck> Hm. I think I'm going to pack them in to a string.
20:04 < skelterjohn> sounds efficient
20:04 < vsmatck> I think I could save space like that too.  Just trim off
the extra zeros.
20:05 < skelterjohn> if you can reliably trim off extra zeros without
causing key collisions, then you don't need all 64 bits ;)
20:05 < vsmatck> I'm going to use the variable length int format used in gob
and protocol buffers.
20:06 < vsmatck> You use each most sig bit of each byte to indicate if there
will be another byte.
20:06 < vsmatck> Most of my uint64s will be low value, but some will be
really high.
20:07 -!- Eridius [~kevin@unaffiliated/eridius] has joined #go-nuts
20:07 < vsmatck> I'll be able to retrieve the pair values later this way
too.  Which I need to be able to do.
20:08 < skelterjohn> if you trim off zeros?
20:08 < vsmatck> You only use 7 bits of each byte to store the actual value.
It makes it so the uint64 can take up to 10 bytes.
20:09 < vsmatck> There won't be any collisions I'm pretty sure.
20:10 < vsmatck>
20:10 < skelterjohn> this is a bit wonky - but i bet you could store each of
the uint64s into float32s
20:10 < skelterjohn> if they're either 1) low or 2) high with lots of
trailing zeros
20:11 < skelterjohn> then convert them to the raw bites and stick em in a
singkle uint64
20:11 < skelterjohn> single
20:11 < vsmatck> I've seen the gob format has a way of converting floats to
20:12 < vsmatck> But I think to be able to trim stuff you just need
contiguous zeros which the uint already has.
20:12 < skelterjohn> *((*uint32)(unsafe.Pointer(&aFloat32)))
20:16 < KirkMcDonald> If you're going to pack two uint64s into a string,
wouldn't you just store them as a 16-byte string?
20:16 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has quit [Ping
timeout: 265 seconds]
20:16 < KirkMcDonald> I see no need to be fancier than that.
20:17 < skelterjohn> oh sure - that works too
20:17 < skelterjohn> that seems like the simplest solution
20:17 < skelterjohn> rather than using fmt.Sprintf("%d%d", a, b) etc
20:18 -!- res [c9ed8246@gateway/web/freenode/ip.] has joined
20:20 < vsmatck> ah, looks like I can use the encoding/bytes package to get
the bytes of the integer.
20:27 < nickaugust> you know when a program keeps changing the same line,
like a percentage complete number going up?  do you have to use curses for that or
is there a backspace character you can output that will back up a few spaces in
the terminal so you can rewrite?
20:28 < homa_rano> nickaugust: '\r' moves the cursor to the beginning of the
20:28 < homa_rano> and the previous line can be overwritten
20:28 < nickaugust> homa_rano: sweet!  thanks man
20:28 < nickaugust> i guess that a carriage return or whatever
20:29 < homa_rano> yeah I never remember the names for those things
20:29 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
20:46 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
20:47 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has quit [Quit: Morten.  Desu~]
20:50 -!- gnuvince_ [~vince@] has quit [Read error: Connection reset
by peer]
20:50 -!- ako [~nya@fuld-4d00d63b.pool.mediaWays.net] has joined #go-nuts
20:51 -!- aho [~nya@fuld-4d00d5de.pool.mediaWays.net] has quit [Disconnected by
20:51 -!- gnuvince_ [~vince@] has joined #go-nuts
20:57 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:41c6:ebe8:5983:7686] has quit
[Quit: Leaving.]
21:00 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has quit [Quit:
21:01 < scyth> is anyone successfully using protobufs?
21:01 < scyth> within go, of course
21:03 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
21:04 -!- awidegreen [~quassel@] has quit [Remote host closed the
21:06 -!- gabriel9 [~gabriel9@] has quit [Read error: Connection
reset by peer]
21:06 -!- rlab [~Miranda@] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
21:07 -!- ukai [~ukai@nat/google/x-eyqbibnbppljbatk] has quit [Ping timeout: 265
21:08 -!- gabriel9 [~gabriel9@] has joined #go-nuts
21:08 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-177-190.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
21:10 -!- alefnula [~alefnula@] has quit [Quit: Ex-Chat]
21:17 -!- napsy [~luka@] has quit [Ping timeout: 252 seconds]
21:18 -!- bmizerany [~bmizerany@c-76-21-40-207.hsd1.ca.comcast.net] has joined
21:20 -!- ExtraSpice [~XtraSpice@] has quit [Quit: Leaving]
21:29 -!- ikaros [~ikaros@dslb-094-219-218-241.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
21:32 -!- ukai [~ukai@nat/google/x-cpmscpdnvguxvkho] has joined #go-nuts
21:42 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
21:54 -!- napsy [~luka@] has joined #go-nuts
21:57 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit:
22:01 -!- Venom_X [~pjacobs@] has quit [Quit: Venom_X]
22:01 -!- gabriel9 [~gabriel9@] has quit [Read error: Connection
reset by peer]
22:03 -!- gabriel9 [~gabriel9@] has joined #go-nuts
22:06 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
22:08 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has joined
22:20 -!- napsy [~luka@] has quit [Quit: Lost terminal]
22:25 -!- ronnyy [~quassel@p4FF1D135.dip.t-dialin.net] has joined #go-nuts
22:27 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has joined
22:33 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has joined
22:36 -!- adu [~ajr@pool-173-66-253-121.washdc.fios.verizon.net] has quit [Client
22:39 -!- photron [~photron@port-92-201-135-146.dynamic.qsc.de] has quit [Ping
timeout: 264 seconds]
22:44 -!- virtualsue [~chatzilla@nat/cisco/x-peqiguoxrhhsfklt] has quit [Quit:
ChatZilla 0.9.86 [Firefox 3.5.13/20100914122142]]
22:59 -!- kanru [~kanru@118-168-238-117.dynamic.hinet.net] has joined #go-nuts
23:10 -!- kanru [~kanru@118-168-238-117.dynamic.hinet.net] has quit [Ping timeout:
276 seconds]
23:11 -!- jmettraux [~jmettraux@] has joined #go-nuts
23:12 < msponer> Is anyone using Amazon RDBMS from Go?
23:14 -!- gabriel9 [~gabriel9@] has quit [Read error: Connection
reset by peer]
23:15 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
23:17 -!- crazy2be [~justin@d205-206-130-118.abhsia.telus.net] has joined #go-nuts
23:19 -!- l00t [~i-i3id3r_@] has joined #go-nuts
23:27 -!- iant [~iant@nat/google/x-qpylqgunbnjzwrdj] has quit [Ping timeout: 272
23:33 -!- iant [~iant@] has joined #go-nuts
23:33 -!- mode/#go-nuts [+v iant] by ChanServ
23:44 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has quit [Quit:
23:46 < crazy2be> Anyone know how to access a certain index in an array
using the template package?
23:46 < crazy2be> foo[0].blah doesn't seem to work
23:47 < crazy2be> or foo.0.blah
23:53 -!- RobertLJ [~quassel@c-68-44-163-191.hsd1.nj.comcast.net] has joined
--- Log closed Fri Oct 01 00:00:08 2010