Go Language Resources Go, golang, go... NOTE: This page ceased updating in October, 2012

--- Log opened Fri Nov 05 00:00:15 2010
00:05 -!- virtualsue [~chatzilla@nat/cisco/x-mdrjmiuxvsnfteah] has quit [Ping
timeout: 240 seconds]
00:16 -!- MashPotato [~ed@unaffiliated/mashpotato] has quit [Read error:
Connection reset by peer]
00:25 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has quit [Quit:
leaving]
00:37 -!- zeroXten [~zeroXten@0x10.co.uk] has quit [Ping timeout: 276 seconds]
00:40 -!- adu [~ajr@pool-74-96-89-94.washdc.fios.verizon.net] has quit [Quit: adu]
00:43 -!- zeroXten [~zeroXten@0x10.co.uk] has joined #go-nuts
00:49 < MaybeSo> wrtp: thanks for your help, using your advice and samples
I've got this stuff working exactly the way I wanted
00:50 < wrtp> cool.  glad to be of help.
00:50 -!- Venom_X [~pjacobs@74.61.90.217] has quit [Quit: Venom_X]
00:52 -!- Thomas1 [~kvirc@188-23-2-10.adsl.highway.telekom.at] has joined #go-nuts
00:54 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has joined #go-nuts
00:55 -!- Thomas3467 [~kvirc@188-23-102-20.adsl.highway.telekom.at] has quit [Ping
timeout: 240 seconds]
01:03 -!- tvw [~tv@e176006024.adsl.alicedsl.de] has quit [Ping timeout: 245
seconds]
01:03 -!- mikespook [~mikespook@219.137.253.133] has joined #go-nuts
01:09 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has quit [Quit:
Leaving.]
01:26 -!- tav [~tav@92.7.93.11] has quit [Read error: Connection reset by peer]
01:26 -!- tav [~tav@92.7.93.11] has joined #go-nuts
01:42 -!- raylu [raylu@c-24-131-193-106.hsd1.pa.comcast.net] has left #go-nuts []
01:44 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
01:47 -!- artefon [~thiago@189.115.131.94] has joined #go-nuts
01:48 -!- wrtp [~rog@92.17.68.10] has quit [Quit: wrtp]
01:54 -!- niemeyer [~niemeyer@189-72-21-191.pltce701.dsl.brasiltelecom.net.br] has
quit [Ping timeout: 245 seconds]
01:58 -!- d_m [d6@SDF.ORG] has joined #go-nuts
02:25 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has joined #go-nuts
02:26 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
02:34 -!- dacc1 [~Adium@c-24-19-50-69.hsd1.wa.comcast.net] has joined #go-nuts
02:38 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has quit [Ping
timeout: 276 seconds]
02:39 -!- artefon [~thiago@189.115.131.94] has quit [Read error: Connection reset
by peer]
02:40 -!- fumblebee [~kgay@blk-138-44-93.eastlink.ca] has quit [Ping timeout: 245
seconds]
02:58 -!- fumblebee [~kgay@blk-142-24-126.eastlink.ca] has joined #go-nuts
03:17 -!- gnuvince [~vince@70.35.165.60] has quit [Ping timeout: 252 seconds]
03:17 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping
timeout: 245 seconds]
03:19 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
03:31 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping
timeout: 245 seconds]
03:32 -!- artefon [~thiago@189.115.131.94] has joined #go-nuts
03:32 -!- artefon [~thiago@189.115.131.94] has quit [Client Quit]
03:33 -!- fumblebee [~kgay@blk-142-24-126.eastlink.ca] has quit [Ping timeout: 240
seconds]
03:35 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds]
03:35 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
03:39 -!- mikespook [~mikespook@219.137.253.133] has quit [Read error: Connection
reset by peer]
03:41 -!- mikespook [~mikespook@219.137.75.81] has joined #go-nuts
03:47 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has joined
#go-nuts
04:00 -!- lmoura [~lauromour@187.112.11.189] has quit [Ping timeout: 250 seconds]
04:07 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has quit
[Remote host closed the connection]
04:20 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
04:30 -!- iant [~iant@216.239.45.130] has quit [Ping timeout: 255 seconds]
04:32 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
04:33 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
255 seconds]
04:33 -!- dj2 [~dj2@CPE001f5b35feb4-CM0014048e0344.cpe.net.cable.rogers.com] has
quit [Remote host closed the connection]
04:36 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
04:47 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
04:47 -!- mode/#go-nuts [+v iant] by ChanServ
04:48 -!- reportingsjr [~Jon@pysoy/developer/JonNeal] has joined #go-nuts
04:48 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
04:49 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has joined
#go-nuts
04:51 -!- tumdum [~tumdum@auk219.neoplus.adsl.tpnet.pl] has joined #go-nuts
04:51 -!- tumdum [~tumdum@auk219.neoplus.adsl.tpnet.pl] has quit [Changing host]
04:51 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
05:07 -!- zozoR [~zozoR@5634798d.rev.stofanet.dk] has joined #go-nuts
05:12 -!- bjarneh [~bjarneh@1x-193-157-199-167.uio.no] has joined #go-nuts
05:19 -!- bjarneh [~bjarneh@1x-193-157-199-167.uio.no] has quit [Quit: leaving]
05:19 -!- bjarneh [~bjarneh@1x-193-157-199-167.uio.no] has joined #go-nuts
05:25 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping
timeout: 245 seconds]
05:26 -!- iant [~iant@216.239.45.130] has joined #go-nuts
05:26 -!- mode/#go-nuts [+v iant] by ChanServ
05:26 < plexdev> http://is.gd/gJGNe by [Nigel Tao] in go/doc/ -- doc: make
root.html's blog section less cluttered.
05:29 -!- gnuvince [~vince@70.35.170.156] has joined #go-nuts
05:33 -!- b00m_chef [~watr@66.183.108.186] has joined #go-nuts
05:39 -!- jcao219 [~Jimmy_Cao@pool-96-226-238-248.dllstx.fios.verizon.net] has
joined #go-nuts
05:40 < nsf> has anyone seen the bin2go tool around?  (like bin2c, but for
Go) :)
05:42 < jcao219> cool
05:42 < jcao219> where?
05:42 < nsf> that's what I'm asking
05:42 < nsf> I guess I should write one
05:46 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 272
seconds]
05:48 < jcao219> i wonder if there is bin2d
05:48 < nsf> I think I had seen it somewhere
06:00 -!- b00m_chef [~watr@66.183.108.186] has quit [Ping timeout: 255 seconds]
06:03 -!- jcao219 [~Jimmy_Cao@pool-96-226-238-248.dllstx.fios.verizon.net] has
quit [Quit: Leaving.]
06:07 -!- zozoR [~zozoR@5634798d.rev.stofanet.dk] has quit [Quit: Morten.  Desu~]
06:10 -!- dacc1 [~Adium@c-24-19-50-69.hsd1.wa.comcast.net] has quit [Quit:
Leaving.]
06:15 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has quit
[Remote host closed the connection]
06:20 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Ping timeout: 272
seconds]
06:29 < plexdev> http://is.gd/gJLLJ by [Alex Brainman] in
go/src/pkg/runtime/windows/ -- runtime: fix windows build
06:32 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has joined #go-nuts
06:33 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
06:37 < nsf> http://github.com/nsf/bin2go
06:37 < nsf> done
06:37 < nsf> although looks like both go/parser and Go compiler have
problems with long []byte{} literals
06:40 < nsf> maybe it is reasonable to add binary inclusion feature like in
D
06:40 < nsf> something like: var x = import("filename.binary")
06:41 < nsf> reads the file and converts it to []byte
06:41 < nsf> and import is a keyword, therefore it will be easily identified
by the compiler
06:47 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 240
seconds]
06:50 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Quit: tumdum]
06:53 -!- iomox [~ios@180.191.93.163] has joined #go-nuts
06:59 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has quit [Quit:
Leaving.]
07:04 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has joined #go-nuts
07:04 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has quit [Client Quit]
07:04 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has joined #go-nuts
07:04 < uriel> nsf: I'm not convinced
07:04 < nsf> and I don't really care
07:04 < nsf> :)
07:05 < nsf> bin2go works for me
07:05 < uriel> nsf: you can either load the file at runtime, or doing it
inline should be fine (use a separate .go file if you like)
07:05 < uriel> if there are bigs with long []byte{} literals then that
obviously should be fixed
07:05 -!- dacc [~Adium@c-67-171-32-251.hsd1.wa.comcast.net] has quit [Client Quit]
07:06 < nsf> well, go/parser is a bit slow with that kind of literals
07:06 < nsf> hopefully after Position compressing it will be a bit faster
07:06 < nsf> it just allocates an AST node for each byte in this long array
07:06 < uriel> why do you need to use go/parser on that stuff?
07:06 < uriel> (just curious)
07:06 < nsf> 1.  gofmt
07:06 < nsf> 2.  gocode
07:06 < uriel> yea, but just put it in its own .go file which you do not
gofmt
07:07 < nsf> when you type gofmt -w *.go
07:07 < nsf> it sucked in
07:07 < uriel> yea, I agree
07:07 < nsf> :)
07:07 < nsf> and gocode does that as well
07:07 < uriel> well, lets hope it gets fixed
07:07 < nsf> it just scans for every .go file in the dir
07:07 < uriel> and I guess godoc might suffer a bit too
07:07 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 255
seconds]
07:07 < nsf> but it's not like really slow
07:07 < nsf> it's fine
07:08 < nsf> for example
07:08 < nsf> I have 200kb file with []byte{} literals only
07:08 < nsf> gofmt -w thisfile.go
07:08 < nsf> executes in 2.5 secs
07:09 < nsf> no one dies, but it's not carriage return time anymore :D
07:09 < uriel> get faster hardware ;P
07:13 -!- tumdum [~tumdum@avd4.neoplus.adsl.tpnet.pl] has joined #go-nuts
07:13 -!- tumdum [~tumdum@avd4.neoplus.adsl.tpnet.pl] has quit [Changing host]
07:13 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
07:13 < nsf> good advice
07:13 < nsf> i'll live with it
07:17 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Ping timeout: 260
seconds]
07:19 < nsf> I thought defer is evil in its dynamic form
07:19 < nsf> but it turns out it is a very nice feature
07:19 < nsf> http://pastie.org/1274337
07:19 < nsf> for snippets like this one
07:20 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
07:29 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts
07:31 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
240 seconds]
07:37 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
07:40 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
07:42 -!- ronnyy [~quassel@2001:6f8:12c6:1c86:224:1dff:fed7:9541] has joined
#go-nuts
07:43 -!- awidegreen [~quassel@p5DF1E2C3.dip.t-dialin.net] has joined #go-nuts
07:43 < uriel> defer is great
07:58 -!- unhygienix [~unhygieni@host86-135-185-97.range86-135.btcentralplus.com]
has quit [Quit: unhygienix]
07:59 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
08:00 -!- tensorpudding [~user@99.148.202.191] has quit [Remote host closed the
connection]
08:15 < nsf> http://pastie.org/1274411
08:15 < nsf> I like this stuff in Go :)
08:21 -!- SirPsychoS [~sp@c-24-13-132-255.hsd1.il.comcast.net] has quit [Ping
timeout: 272 seconds]
08:21 < nsf> i mean seriously, io.Writer and io.Reader rocks, no stream
bullshit (hello STL, hello .NET)
08:23 -!- Fish [~Fish@86.65.182.207] has joined #go-nuts
08:25 < Rennex> that is very little work to unpack a gzip, but loads of work
(verbose typing) to open the i/o handles :P
08:26 < nsf> agreed, we should have good old fopen stuff
08:26 < nsf> which represents buffered file handle
08:27 < nsf> because this is the most common thing everyone wants
08:27 < nsf> and all that "w" "r" "a" stuff is very familiar
08:29 < nsf> btw, the snippet above misses "Flush"
08:29 < nsf> :\
08:29 < nsf> I forget to add it third time this day :\
08:32 -!- ExtraSpice [~XtraSpice@88.118.33.48] has joined #go-nuts
08:33 -!- Mantis[] [bryan_c1_@76.14.59.168] has joined #go-nuts
08:33 -!- Mantis[] [bryan_c1_@76.14.59.168] has left #go-nuts []
08:37 -!- glsubri [~glsubri@144.85.121.224] has joined #go-nuts
08:37 < glsubri> hello all
08:38 < glsubri> does smbdy knows why my program doesn't show anything after
compilation (without error) ?
08:39 -!- glsubri [~glsubri@144.85.121.224] has quit [Client Quit]
08:40 < nsf> :\
08:41 * TheSeeker asks his magic 8 ball.
08:43 < uriel> wow, the trolling in golang-nuts has got a bit out of hand
08:44 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Quit: WeeChat
0.3.2]
08:45 < nsf> it is boring if no one trolls
08:45 < nsf> :)
08:47 < nsf> func panicIf(err os.Error) { if err != nil { panic(err.String)
} }
08:47 < nsf> :P
08:47 < nsf> oops
08:47 < nsf> func panicIf(err os.Error) { if err != nil {
panic(err.String()) } }
08:47 < nsf> here we go
08:48 < nsf> looks nice in the code: panicIf(err)
08:48 < nsf> :P
08:48 -!- wrtp [~rog@92.16.112.146] has joined #go-nuts
08:49 < TheSeeker> not PanicIf(err) ?
08:49 < nsf> well, it's local
08:49 < nsf> why bother exporting it?
08:51 < nsf> actually it's ok to write: panic(err)
08:51 < nsf> I should remember that
08:53 < TheSeeker> Is there really any time you want to close a file handle
without flushing it first?
08:53 -!- Thomas1|2 [~kvirc@188-23-8-178.adsl.highway.telekom.at] has joined
#go-nuts
08:53 < nsf> it's not the file handle that flushes, it's the bufio.Buffer
08:53 < nsf> and it doesn't have Close
08:53 < nsf> oops
08:53 < nsf> i mean bufio.Writer
08:54 < nsf> file handle doesn't have Flush as well
08:54 < nsf> because it's not buffered
08:54 < nsf> but I agree
08:54 < nsf> there should be a BufferedFile type
08:54 < nsf> that has Close and is buffered
08:55 < nsf> which calls Flush before Close :)
08:55 < TheSeeker> yeah, that seems like a pretty common use case for files.
08:55 -!- zot [546c0cce@gateway/web/freenode/ip.84.108.12.206] has joined #go-nuts
08:56 < zot> anyone here?
08:56 < nsf> nope
08:56 -!- Thomas1 [~kvirc@188-23-2-10.adsl.highway.telekom.at] has quit [Ping
timeout: 265 seconds]
08:56 < zot> clever
08:56 < nsf> as the question
08:57 < zot> cheaper than waiting for a spontaneous clever remark
08:57 < TheSeeker> "Is it OK if I ask a question in here?"
08:57 < zot> I registered a project on the projects dashboard and I must
have entered the wrong URL
08:57 < zot> anyone know who I can talk to about that?  I didn't see an
email address for a maintainer or anything
08:57 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has joined
#go-nuts
08:57 -!- awidegreen_ [~quassel@p5DF1E32F.dip.t-dialin.net] has joined #go-nuts
08:59 < TheSeeker> what was the package?
08:59 -!- awidegreen [~quassel@p5DF1E2C3.dip.t-dialin.net] has quit [Ping timeout:
245 seconds]
08:59 < zot> go-fltk
09:00 < nsf> don't know how about others, but I never look for packages on
that page
09:00 < nsf> go-lang.cat-v.org is better
09:01 < nsf> and uriel maintains it
09:01 < zot> pretty sure I sent Uriel info already
09:01 < nsf> good :)
09:01 < zot> it's not on the page yet, though
09:01 < nsf> it will be :)
09:02 < TheSeeker> hmm, I see go-fltk - FLTK2 GUI toolkit bindings for Go li
09:02 < TheSeeker> but it links to http://godashboard.appspot.com/gui
09:02 < zot> yeah, but the URL is wrong
09:03 < zot> I'm doing this for an Acme-like tool I'm writing in Go
09:03 < zot> I like to reinvent wheels, I guess, but the Oberon UI still
hasn't gotten the use it deserves
09:06 -!- photron [~photron@port-92-201-240-76.dynamic.qsc.de] has joined #go-nuts
09:11 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #go-nuts
09:12 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
09:13 -!- mikespook [~mikespook@219.137.75.81] has quit [Quit: Leaving.]
09:20 -!- itrekkie [~itrekkie@ip72-211-128-9.tc.ph.cox.net] has joined #go-nuts
09:21 -!- itrekkie [~itrekkie@ip72-211-128-9.tc.ph.cox.net] has quit [Client Quit]
09:41 -!- zot [546c0cce@gateway/web/freenode/ip.84.108.12.206] has quit [Quit:
Page closed]
09:48 < wrtp> nsf, TheSeeker: making your own BufferedFile type is quite
easy: http://pastie.org/1274504
09:49 < wrtp> although it's arguable that bufio.Writer could implement Close
and dynamically check the type of its argument to see if it implements Closer, and
call that if so
09:51 < nsf> it is easy
09:51 < nsf> but I don't like your implementation :)
09:52 < wrtp> what don't you like about it?
09:53 < nsf> oh..
09:53 < nsf> it should really combine bufio.Writer/Reader and os.File
interfaces
09:53 < wrtp> why?
09:53 < nsf> because that's what you get if you wrap os.File with
bufio.Writer/Reader
09:54 < wrtp> the way i've done it, it works on anything that wraps a Writer
but doesn't have a close method.
09:55 < nsf> but the interface!
09:55 < nsf> who needs just "Write"
09:55 < nsf> it should be the same as bufio.  stuff + Close
09:56 < nsf> especially if we're making a reader
09:56 < wrtp> ah yeah, good point :-)
09:56 < nsf> because bufio.Reader has things like ReadString
09:56 < nsf> we can't just throw them away
09:56 < wrtp> agreed
09:58 < wrtp> perhaps bufio could get a new function NewWriteCloser(rc
io.WriteCloser) *Writer
09:59 < nsf> I don't know, maybe
09:59 < wrtp> no dynamic type checking required.
09:59 < nsf> but I think it's more reasonable to have something like:
09:59 < nsf> func NewBufferedFileWriter(name string, mode string)
*BufferedFileWriter
09:59 < nsf> looks a bit long
10:00 < nsf> but that's what people will use most of the time
10:00 < wrtp> but what if you want it to work on a network connection?
10:00 < nsf> :)
10:00 < nsf> I don't
10:01 < nsf> network code shouldn't be that simple
10:01 < wrtp> the problem is that bufio doesn't know about close, not that
os.File doesn't know about buffering :-)
10:01 -!- niemeyer [~niemeyer@189-72-21-191.pltce701.dsl.brasiltelecom.net.br] has
joined #go-nuts
10:02 < nsf> I mean it's just a very common combination
10:02 < nsf> file + bufio
10:02 < nsf> reader or writer
10:03 < nsf> C's API actually buffers stdio/stdout/stderr as well
10:03 < nsf> afaik
10:03 < wrtp> sure, but there's no bufio.Open function...
10:04 < nsf> well, I've noticed that
10:04 < nsf> I guess we just need a new entity
10:04 < nsf> bufio.File
10:04 < wrtp> i don't think so
10:04 < nsf> well, ok then
10:04 < wrtp> there's no need for bufio to depend on os.File
10:05 < wrtp> it's more general than that.
10:06 -!- TheSeeker [~n@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has quit
[Ping timeout: 240 seconds]
10:11 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping
timeout: 245 seconds]
10:14 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
10:21 -!- boscop [~boscop@f055011212.adsl.alicedsl.de] has joined #go-nuts
10:22 -!- boscop_ [~boscop@f055159129.adsl.alicedsl.de] has quit [Ping timeout:
252 seconds]
10:30 < wrtp> nsf: how about this: http://codereview.appspot.com/2916042
10:31 < nsf> I don't know
10:31 < nsf> I'm not good at API design
10:31 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping
timeout: 245 seconds]
10:31 < nsf> and I don't like generic stuff
10:32 < nsf> I was talking about commonly used specific combination
10:32 < nsf> it is a buffered file I/O (file in terms of os package)
10:33 -!- wrtp [~rog@92.16.112.146] has quit [Read error: Operation timed out]
10:36 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
10:40 -!- wrtp [~rog@92.16.112.146] has joined #go-nuts
10:46 < wrtp> you can then use it like: b :=
bufio.NewWriteCloser(os.Stdout); b.Write([]byte("hello, world\n"); b.Close()
10:46 < nsf> why do I want to close os.Stdout?  :)
10:47 < nsf> the complaint was about very specific part of Go
10:47 < nsf> os.Open..  and os.File
10:48 < nsf> I'm sure most people don't even know that they should wrap
os.File in bufio.Reader or Writer
10:48 < nsf> and openning file with os.O_CREATE | os.O_TRUNC | os.O_WRONLY
isn't the most intuitive thing either
10:49 < nsf> I'm not saying that os.File should be removed, it would be nice
to have a wrapper which exists in most programming languages
10:49 < nsf> aka fopen("file.txt", "r")
10:49 < nsf> that's just a very common use case
10:50 < nsf> but I'm not sure about the idea of having generic version of
that in bufio
10:50 < nsf> like you've proposed
10:54 -!- wrtp [~rog@92.16.112.146] has quit [Read error: Connection reset by
peer]
10:54 -!- fabled [~fabled@mail.fi.jw.org] has quit [Quit: Ex-Chat]
10:54 -!- wrtp [~rog@92.16.112.146] has joined #go-nuts
11:21 -!- napsy [~luka@88.200.89.13] has joined #go-nuts
11:22 -!- napsy [~luka@88.200.89.13] has quit [Client Quit]
11:23 < yiyus> nsf: http://pastebin.com/V0CULJWt
11:24 < nsf> I know that it's easy
11:24 < nsf> add wrapper for bufio.Writer/Reader and you're done
11:25 < yiyus> I just had that around, but I was not really using it
11:26 < wrtp> yiyus: that code would be better if the map wasn't created
each time the function was called (just use a global)
11:27 < nsf> actually the map here is not required at all
11:27 < nsf>
http://www.koders.com/c/fid4AC8E5A6CAFCF1D081122F3CA5866F8ADCA5D1C4.aspx
11:27 < nsf> the fopen logic is quite straightforward
11:27 < wrtp> depends if you think that "r+" is more convenient
11:28 < wrtp> i quite like the simplicity of the map code.  (if you wanna
deal with stdio-like descriptors)
11:29 -!- devrim [~Adium@cpe-72-225-239-227.nyc.res.rr.com] has joined #go-nuts
11:29 < wrtp> (i don't)
11:29 < yiyus> wrtp: true, but as I said I'm not using that code
11:29 < wrtp> sure
11:30 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Quit: WeeChat
0.3.2]
11:39 < wrtp> nsf: http://pastebin.com/aaVCuwZN
11:40 < nsf> well, yeah, something like that
11:41 < nsf> but ReadWriter isn't Closer isn't it?
11:41 < nsf> :D
11:48 < nsf> http://pastie.org/1274667
11:48 < nsf> my version
11:48 < nsf> and vision
11:59 < wrtp> nsf: ReadWriter is Closer if my patch was applied.
11:59 < nsf> if
11:59 < wrtp> sure
11:59 < nsf> as I've said
11:59 < nsf> I'm not sure about that generic proposal
12:00 < nsf> for adding Closer stuff into bufio
12:00 < wrtp> did you have a look at the CL?
12:00 < nsf> I took a glance
12:01 < nsf> well, currently bufio has 5 functions
12:01 < nsf> and you're adding more
12:01 < nsf> and more types
12:01 < nsf> or wait
12:01 < nsf> there were no new types :)
12:02 < nsf> but new functions for sure
12:02 < wrtp> yup, 4 more functions.
12:02 < wrtp> but not heavyweight.
12:02 < nsf> still, I like my version
12:03 < wrtp> your version is fine if you only care about os.File
12:03 < nsf> that's what I care about :)
12:03 < nsf> and trying to tell you that few hours
12:04 < nsf> common use case: file handle + buffer == buffered file I/O
12:04 < wrtp> yeah, but other people might care about, for instance, having
the same functionality on top of io.PipeWriter
12:04 < wrtp> and my code caters fine for that (and your own scenario) but
yours does not.
12:04 < nsf> few other people, but most people want FOpen :) (I don't know
for sure, but I'm pretty convinced about that fact)
12:05 < nsf> the tricky part is that if you really want to use ReadWriter as
Closer as well, you can do that as I did it now for BufferedFile
12:06 < nsf> but what's important here is common use cases, what _most_
people would like to see in the lib
12:06 < wrtp> that works with my stuff too.
12:06 < wrtp> generality is also important, particularly if it comes at low
cost.
12:06 < nsf> like how should I read a file line by line: FOpen +
ReadString..  done
12:07 < nsf> ok, I see your point, but I don't like your patch and nothing
will convince me that it's good
12:07 < nsf> :D
12:07 < nsf> maybe it's good that I'm not the person who decides what gets
in and what's not
12:07 < nsf> :)
12:07 -!- XenoPhoenix [~Xeno@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com]
has quit [Remote host closed the connection]
12:08 < wrtp> i still don't see what you don't like about it.
12:08 < wrtp> combining os.Open and bufio is a different thing from
combining Close with bufio.
12:08 < nsf> I'm bad at explaining things and here it is possible that I'm
wrong
12:08 < wrtp> i reckon.
12:09 < nsf> so..  we'll see
12:09 < nsf> maybe Go guys will tell something about it
12:09 < wrtp> yeah, we'll see what they think.
12:11 -!- XenoPhoenix [~Xeno@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com]
has joined #go-nuts
12:20 -!- wrtp [~rog@92.16.112.146] has quit [Ping timeout: 240 seconds]
12:25 -!- wrtp [~rog@92.16.112.146] has joined #go-nuts
12:26 -!- artefon [~thiago@189.26.237.181.dynamic.adsl.gvt.net.br] has joined
#go-nuts
12:27 -!- napsy [~luka@193.2.72.254] has joined #go-nuts
12:33 -!- DerHorst [~Horst@e176106047.adsl.alicedsl.de] has joined #go-nuts
12:40 -!- fabled [~fabled@mail.fi.jw.org] has joined #go-nuts
12:41 -!- bjarneh [~bjarneh@1x-193-157-199-167.uio.no] has quit [Ping timeout: 255
seconds]
12:42 -!- DerHorst [~Horst@e176106047.adsl.alicedsl.de] has quit [Remote host
closed the connection]
12:44 -!- napsy [~luka@193.2.72.254] has quit [Quit: leaving]
12:44 -!- napsy [~luka@193.2.72.254] has joined #go-nuts
12:44 -!- napsy [~luka@193.2.72.254] has quit [Client Quit]
12:56 -!- femtoo [~femto@95-89-197-196-dynip.superkabel.de] has joined #go-nuts
12:58 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
13:03 -!- mpl [~mpl@213.251.175.204] has quit [Ping timeout: 240 seconds]
13:04 -!- mpl [~mpl@smgl.fr.eu.org] has joined #go-nuts
13:12 -!- cmarcelo [~cmarcelo@186.212.113.34] has joined #go-nuts
13:12 -!- cmarcelo [~cmarcelo@186.212.113.34] has quit [Changing host]
13:12 -!- cmarcelo [~cmarcelo@enlightenment/developer/cmarcelo] has joined
#go-nuts
13:20 -!- kanru [~kanru@61-228-159-162.dynamic.hinet.net] has joined #go-nuts
13:25 -!- lmoura [~lauromour@186.212.109.42] has joined #go-nuts
13:26 -!- GutenLinux [~chatzilla@115.194.235.143] has joined #go-nuts
13:26 -!- artefon [~thiago@189.26.237.181.dynamic.adsl.gvt.net.br] has quit [Quit:
bye]
13:30 -!- iant [~iant@216.239.45.130] has quit [Ping timeout: 240 seconds]
13:34 -!- MaksimBurnin [~max@44.188-224-87.telenet.ru] has quit [Ping timeout: 245
seconds]
13:35 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts
13:40 -!- skejoe [~skejoe@188.114.142.231] has joined #go-nuts
13:44 -!- GutenLinux [~chatzilla@115.194.235.143] has quit [Quit: ChatZilla 0.9.86
[Firefox 3.6.12/20101027204347]]
13:44 -!- iant [~iant@67.218.104.238] has joined #go-nuts
13:44 -!- mode/#go-nuts [+v iant] by ChanServ
13:46 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Read
error: Connection reset by peer]
13:49 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
13:53 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has quit [Ping
timeout: 250 seconds]
13:53 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has joined
#go-nuts
13:57 -!- dj2 [~dj2@216.16.242.254] has joined #go-nuts
13:58 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
13:58 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has quit [Remote host closed
the connection]
13:58 -!- liron [~liron@ita4fw1.itasoftware.com] has joined #go-nuts
14:00 -!- rickard8 [~rickard@netra.esec.du.se] has quit [Ping timeout: 272
seconds]
14:02 -!- sauerbraten [~sauerbrat@p508CFB05.dip.t-dialin.net] has joined #go-nuts
14:02 -!- iomox [~ios@180.191.93.163] has quit [Quit: Leaving]
14:04 < plexdev> http://is.gd/gKt3f by [Adam Langley] in
go/src/pkg/crypto/tls/ -- crypto/tls: use pool building for certificate checking
14:10 -!- zozoR [~zozoR@5634798d.rev.stofanet.dk] has joined #go-nuts
14:12 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has quit [Ping
timeout: 245 seconds]
14:17 -!- adu [~ajr@pool-74-96-89-94.washdc.fios.verizon.net] has joined #go-nuts
14:20 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has joined
#go-nuts
14:20 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has joined #go-nuts
14:23 -!- ucasano [~ucasano@host69-192-static.38-79-b.business.telecomitalia.it]
has joined #go-nuts
14:24 < sauerbraten> what's the easiest way to append something to a string?
14:25 < skelterjohn> strings are constant, so you can only create a new
string
14:25 < skelterjohn> s3 := s1 + s2
14:25 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
14:26 < sauerbraten> oh -.- and I looked at strings.Join and such things :D
yes that should be easy, thank you skelterjohn :)
14:27 < skelterjohn> my pleasure
14:27 < sauerbraten> what about s1 = s1 + s2?
14:27 < sauerbraten> will it work?
14:27 < skelterjohn> yes
14:27 < sauerbraten> k
14:27 < skelterjohn> when i said strings are constant, i meant what they
point to is constant
14:28 < skelterjohn> the string type is really a reference to something
constant, i think.
14:29 < wrtp> that's only an implementation detail.  integers have similar
semantics...
14:29 < skelterjohn> so passing a string to another function doesn't involve
a copy of bytes
14:29 < wrtp> that's certainly useful to know however...
14:29 < skelterjohn> right - behaves the same either way, but it's good to
know if you want to be efficient
14:30 < exch> s1 += s2 used to be very slow, cos it allocates a new string
everytime you concatenate 2 strings.  Not sure if that is still the case.  Using a
bytes.Buffer to write stringdata into is faster
14:31 < skelterjohn> i think using bytes.Buffer will be naturally faster -
since you can write into the buffer (which means it can overallocate without
wasting the extra bits)
14:32 < exch> For a couple of string cats here and there it wont matter
much, but if you are doing some kind of intensive string parsing code, I really
recommend working with byte buffers
14:32 < skelterjohn> right
14:32 < Tv> afaik the bestest way is to first compute the final length,
preallocate exact right amount, and then sum everything together once; but really,
you will most likely not be able to measure the difference in the final product
14:32 -!- prip [~foo@host243-124-dynamic.35-79-r.retail.telecomitalia.it] has quit
[Ping timeout: 240 seconds]
14:32 < sauerbraten> why does length := 20
14:32 < sauerbraten> key := "0"
14:32 < sauerbraten> for z0 := 0; z0 < length; z0++ {
14:32 < sauerbraten> key = key + strconv.Itoa(rand.Intn(2))
14:32 < sauerbraten> } create me the same key over and over again?  Is there
a better method to get random numbers?
14:32 < skelterjohn> Tv: certainly that is the most efficient, but the
allocation strategy that bytes.Buffer uses is very good
14:33 < skelterjohn> sauerbraten: seed your generator
14:33 < skelterjohn> rand.Seed(time.Nanoseconds())
14:33 < skelterjohn> i feel like i've had this conversation before...  with
you!
14:33 < sauerbraten> oh ok
14:33 < Tv> or just read from /dev/urandom, for actual good randomness..
14:33 < sauerbraten> no you didn't :/
14:33 < skelterjohn> ok :) my mistake
14:34 < sauerbraten> Tv: interesting :-)
14:34 < skelterjohn> Tv: platform specific
14:34 < Tv> skelterjohn: and i'm happy with that ;)
14:34 -!- ct529 [~quassel@77-44-78-159.xdsl.murphx.net] has joined #go-nuts
14:36 < sauerbraten> I'm happy with that platform, too, but I did
time.Nanoseconds() :P
14:37 < skelterjohn> the wiki for /dev/random claims it's a true random
number generator
14:37 < skelterjohn> which i'm finding hard to swallow
14:38 < skelterjohn> though i will continue reading
14:38 <+iant> what would count as a true random generator in your opinion?
14:38 < Tv> skelterjohn: one does not generate true random numbers, one
gathers entropy; that's what it does
14:38 <+iant> /dev/random is certainly unpredictable
14:39 -!- tvw [~tv@212.79.9.150] has joined #go-nuts
14:39 < Tv> you can debate on whether its estimates on the amount of entropy
are correct
14:39 < Thomas1|2> :D
14:39 < Tv> but they are fairly conservative, i understand
14:40 < Tv> SSDs might make it less nice, i think it used the
unpredictability of the mechanical movement of hard drives as one source
14:40 < skelterjohn> iant, Tv: it's not that i have a good understanding of
"true random", i've just been under the impression that computers couldn't really
do that
14:40 < Tv> skelterjohn: it's gathering real world events
14:40 < skelterjohn> yes, i see that
14:40 <+iant> pure software can't generate random numbers because it is
perfectly predictable
14:41 < exch> What's really going to bake your noodle is whether or not true
randomness actually exists at all; In a computer or outside of it.  Some people
will have you believe that even the universe itself is never truly random :p
14:41 <+iant> /dev/random uses a different approach, involving hardware in
the mix
14:41 -!- Fish [~Fish@86.65.182.207] has quit [Remote host closed the connection]
14:41 <+iant> thus the arguments saying that computers can not generate
randomness do not hold for /dev/random
14:41 < Tv> exch: well, chaos theory is good enough for most of us
14:41 < Tv> exch: gathering entropy is just outsourcing your PRNG to reality
14:41 < exch> hehe
14:41 < skelterjohn> chaos theory, i've heard, is not all it's cracked up to
be
14:41 <+iant> exch: really it depends on your definition of "random"
14:41 < Tv> big bang was PRNG seeding ;)
14:41 < wrtp> you *might* be able to get some randomness by duelling clocks,
as long as GOMAXPROC > 1
14:42 < wrtp> without using /dev/random
14:42 <+iant> you can get hung up on "random" the same way you can get hung
up on "free will"
14:42 < skelterjohn> well, there is a difference between "random" and
"nondeterministic"
14:42 < exch> yup
14:42 <+iant> but all that really matters is whether you can be reliably
predicted or not
14:42 <+iant> that is, predicted by a real world entity, rather than an
omniscient being
14:42 < Tv> "stochastic", then
14:43 < Tv> iant: even more importantly, predicted by your attackers
14:43 < Tv> i'm fairly ok with aliens being able to abduct me & decrypt my
hard drive
14:43 <+iant> your real-world attackers, rather than, say, Satan
14:44 -!- ronnyy [~quassel@2001:6f8:12c6:1c86:224:1dff:fed7:9541] has quit [Remote
host closed the connection]
14:45 -!- prip [~foo@host243-124-dynamic.35-79-r.retail.telecomitalia.it] has
joined #go-nuts
14:45 < sauerbraten> from wiki's one-time pad article: "Even those
generators that are suitable for normal cryptographic use, including /dev/random
and many hardware random number generators, make some use of cryptographic
functions whose security is unproven."
14:46 < Tv> oh sure you could attack the algos
14:46 < Tv> but that's a *yawn*, just not quite that likely to work outside
the lab
14:46 < Tv> it's enough to push it to be far from the easiest avenue of
attack
14:47 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.]
14:47 < Tv> real solution is to get more modern cpus to include entropy
generators on die
14:52 < skelterjohn> you cannot attack the one-time-pad algorithm
14:52 < Tv> sure you can
14:53 < skelterjohn> if you have a truly random pad, then it cannot be
broken
14:53 < skelterjohn> there is simply no information there without the pad
14:53 < Tv> ah but real attacks reside in the real world
14:53 < skelterjohn> we're talking about the algorithm?
14:53 < Tv> and the attacks have included e.g.  realizing that the pad was
reused
14:53 < skelterjohn> the algorithm says to never re-use a pad
14:54 < Tv> and you attack the implementation
14:54 < Namegduf> An attack on an implementation is not an attack on an
algorithm
14:54 < skelterjohn> my point was, there are cryptography algorithms that
are perfect
14:54 < skelterjohn> even if they cannot be put into use perfectly
14:54 < Tv> your point is unrelated to the real world ;)
14:54 < skelterjohn> so?
14:54 < Namegduf> I think what you mean is that there are attack avenues
outside the algorithm.
14:55 < skelterjohn> if /dev/random is a "true random number generator",
then using it w/ one-time-pad is unbeatable
14:55 < Tv> what i mean is there's academical "attacks" and there's actual
"attacks"; academical ones are a tiny, tiny subset of the real ones, and most
often the hardest ones; no sane attacker is going for those
14:56 < Namegduf> It's a false division.
14:56 < sauerbraten> which package should I use to convert a string into a
binary string, something like: "asd" to "110000111100111100100" this would use the
7-bit ascii table, I don't mind if it uses 8bit strings
14:56 < Tv> if you focus on pure academic attacks, you screw up real world
security, bad
14:56 < Namegduf> Sure, if you're building a real world system.
14:56 < Tv> i'd argue if it's not in the real world, you're not building ;)
14:56 < Namegduf> If you're just implementing cryptographic algorithms for
people building a real world system to later use
14:56 < sauerbraten> actually, a one-time pad is exactly what I'm trying to
implement at the moment :)
14:57 < skelterjohn> heh, neat
14:57 < skelterjohn> sauerbraten: i don't know of a package that does it
14:57 < Namegduf> Then focusing on the algoritihm's reliability and security
is important.
14:57 -!- Venom_X [~pjacobs@adsl-99-20-147-171.dsl.aus2tx.sbcglobal.net] has
joined #go-nuts
14:57 < skelterjohn> you can certainly write a charToBinaryString function
easily enough
14:57 < Tv> Namegduf: even more so, ease of using it correctly, etc
14:57 < Namegduf> It is a false division, though.  You can analyse a larger
system the same way you analyse an algorithm.
14:58 < sauerbraten> skelterjohn, how?  create a map of the whole ascii
table and then search the char in it and return the bitstring?
14:59 < skelterjohn> no - ""+((char<<7) % 2)+((char<<6) % 2) etc
14:59 < skelterjohn> (char << 7) % 2 will get the eigth bit
14:59 < skelterjohn> eighth bit
14:59 < skelterjohn> either that or (char >> 7) % 2
15:00 < sauerbraten> uhuuh...  mhmm I'll try to understand that first :P
what is << doing?  I never used it
15:00 < skelterjohn> or better might be (char | 1 << n) != 0
15:00 < skelterjohn> for the nth bit
15:00 < skelterjohn> << is the shift operator
15:00 < sauerbraten> I'll look it up
15:00 < skelterjohn> it shifts all the bits over by one
15:00 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
15:00 < skelterjohn> x << b is equivalent to x * 2^b
15:00 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has quit [Ping
timeout: 250 seconds]
15:01 -!- Innominate [~sirrobin@cpe-076-182-074-143.nc.res.rr.com] has joined
#go-nuts
15:02 -!- iant [~iant@67.218.104.238] has quit [Ping timeout: 272 seconds]
15:04 -!- tumdum [~tumdum@aty62.neoplus.adsl.tpnet.pl] has joined #go-nuts
15:04 -!- tumdum [~tumdum@aty62.neoplus.adsl.tpnet.pl] has quit [Changing host]
15:04 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
15:08 < sauerbraten> skelterjohn, what does (char | 1 << n) return?  I
don't get the english explanation in the docs for all the operators :/
15:08 < skelterjohn> let's say you want the 5th bit
15:08 < skelterjohn> 1 << 5 -> 10000
15:08 < skelterjohn> in binary, not decimal
15:09 < Tv> 1<<5 == b10000
15:10 < skelterjohn> when you do char | b10000, it does a bitwise or between
char and the binary number
15:10 -!- iant [~iant@nat/google/x-bsgclhzflyrbeiqh] has joined #go-nuts
15:10 -!- mode/#go-nuts [+v iant] by ChanServ
15:10 < skelterjohn> so for instance, b1234567 | b10000 -> b30000
15:10 < skelterjohn> err, that was nonsense
15:10 < skelterjohn> b101010101 | b10000 -> b10000
15:10 < Tv> "b3" is fairly confusing ;)
15:10 < skelterjohn> if what you get from the bitwise or is not zero, it
means that bit was set in your original number
15:11 < skelterjohn> if that bit was set, it means it's a "1" in your binary
string
15:11 < skelterjohn> otherwise, "0"
15:11 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
15:16 < skelterjohn> sauerbraten: make sense?
15:17 < sauerbraten> yes a bit :-)
15:17 < sauerbraten> I know how I convert decimal numbers into binary
strings by hand, your method is a bit too compressed for my brain :D but I think
I'm getting it :)
15:17 < skelterjohn> if you don't mind me asking, what stage are you in
education?  a lot of universities don't teach C anymore, and as a result people
miss out on this kind of thing
15:18 < Thomas1|2> :p
15:19 < sauerbraten> I'm in 12th class in german gymnasium, making abitur in
2 years which is like the A-levels in USA or GB, one of them, I forgot which one
has the A-levels.  :-) and in school we only learn Java atm, but we will learn
about microcontrollers, too
15:19 < skelterjohn> GB
15:19 < sauerbraten> ok GB then
15:19 < skelterjohn> i don't know what an A-level is besides the fact that
they have them in GB :)
15:20 < MaybeSo> skelterjohn:
http://store.aqa.org.uk/qual/gce/pdf/WITHDRAWAL_OF_COMP1.PDF
15:20 < photron> skelterjohn: in a university lecture about java (i attended
like 6 years ago) they covered basic bit manipulation stuff :)
15:21 < Namegduf> A-Level == End-of-highschool at 18 qualification, also
available from colleges.
15:21 < sauerbraten> :D It's the highest gradiuation you can get in school,
after that you have to study to get more :P
15:21 < Namegduf> You don't have to go on to get them, and they're the main
qualification for getting into university from a high school.
15:21 < MaybeSo> oh, and:
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
15:21 < Namegduf> In GB.
15:22 < skelterjohn> here at rutgers (where i am a grad student), we have
recently added a course on straight C programming to the requirements list
15:22 < sauerbraten> rutgers university camden?
15:22 < skelterjohn> new brunswick
15:23 < photron> skelterjohn: i think thats a good idea
15:24 < sauerbraten> skelterjohn, coming back to your explanation of
<<, b1000 would be a decimal 8?
15:25 < skelterjohn> yes
15:25 < sauerbraten> ok
15:26 < sauerbraten> by hand, I would take the decmial value of the
characters and then try out wether 128 fits into it, when yes, save a 1 for that,
subtract 128 of the char's value and go on with 64 etc.
15:26 < liron> skelterjohn: out of curiosity what does the class actually
cover?
15:26 < sauerbraten> *if, not when
15:27 < skelterjohn> liron: i haven't taken it, but i assume competence with
linux+gcc+writing c code to do basic things that they learn in the algorithms/data
structures course
15:27 < skelterjohn> sauerbraten: yeah, more or less
15:27 < sauerbraten> why less?
15:28 < sauerbraten> isn't it done like that?  o.O
15:28 -!- SirPsychoS [~sp@c-24-13-132-255.hsd1.il.comcast.net] has joined #go-nuts
15:28 < skelterjohn> well, you don't have to subtract the 128
15:29 < skelterjohn> "c | (1 << n) != 0" will be true if the nth bit
is set in c
15:29 < skelterjohn> c | (1 << (n-1)), maybe
15:29 < skelterjohn> depending if you start at 1 or 0
15:30 < sauerbraten> oh right...  but then I would need to have the
bytestring of the char already, wouldn't I?
15:30 -!- pocket_ [~pocket_@p4252-ipbf3210hodogaya.kanagawa.ocn.ne.jp] has joined
#go-nuts
15:30 < sauerbraten> cause c == b1010100 for example
15:30 < skelterjohn> i think i'm doing something wrong, actually
15:31 < skelterjohn> 64 | 32 -> 96?
15:31 < skelterjohn> that's what the go playground is telling me
15:31 < skelterjohn> is | not bitwise or?
15:31 < skelterjohn> oooh duh
15:31 < skelterjohn> i need bitwise and
15:31 < skelterjohn> whenever i said "|" i meant "&"
15:31 < sauerbraten> if I can bitwise compare a char with something else,
then go already knows the bytesring of that char, right?
15:32 < sauerbraten> ok that makes a bit more sense with & :)
15:32 < skelterjohn> i think the == operator does a bitwise compare, yeah
15:33 < skelterjohn> yeah - sorry for that mental meltdown
15:33 < skelterjohn> i'm surprised no one here noticed and made fun of me
15:33 < sauerbraten> but still, go already knows my bytestring, doesn't it
15:33 < skelterjohn> not in string form
15:33 < skelterjohn> it knows the bytes because...these data structures are
bytes
15:33 < skelterjohn> any other interpretation is purely for your convenience
15:34 < sauerbraten> but it can compare bitwise?  o.O
15:34 < skelterjohn> how else could it compare?  :)
15:34 < skelterjohn> it's a computer
15:35 < sauerbraten> but then it HAS to know if the bit is set or not :-/
15:35 < skelterjohn> what is your goal, here?
15:35 < skelterjohn> is it to encode a bunch of bits to a string?
15:35 < skelterjohn> a string of 1s and 0s, that is
15:35 -!- skejoe [~skejoe@188.114.142.231] has quit [Quit: Lost terminal]
15:36 < sauerbraten> I want to encode a string like "asd" to
"110000111100111100100"
15:36 < skelterjohn> then doing this (char & (1 << n)) is a good way
to do it
15:37 -!- TheMue [~TheMue@p5DDF5E26.dip.t-dialin.net] has joined #go-nuts
15:37 < sauerbraten> ok, though I don't get why I have to it like that while
Go already can compare bitwise, and know the bytestring of the char already :D
15:38 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240
seconds]
15:38 < skelterjohn> it's not that "go compares bitwise", although it's true
15:38 < skelterjohn> it's that CPUs compare bitwise and have instructions to
do it
15:38 < skelterjohn> and go makes use of that instruction
15:39 < skelterjohn> it also has instructions for bitwise-and, and for left
shift
15:39 < sauerbraten> oh alright I didn't know that :)
15:39 < skelterjohn> and for comparison to zero
15:39 < skelterjohn> there is no basic instruction (as far as i know) for
"is the nth bit on or off?"
15:39 < skelterjohn> so to do that operation we string a bunch of the basic
ones together
15:40 < sauerbraten> n is 0 to 7 if I only have to encode chars contained in
the standard ( 7bit) ASCII table, not in the extended one, right?
15:40 < skelterjohn> if all your chars fit into a byte, yeah
15:43 -!- artefon [~thiagon@150.164.2.20] has joined #go-nuts
15:44 -!- artefon [~thiagon@150.164.2.20] has quit [Client Quit]
15:45 < sauerbraten> (char & (1 << n)) returns 1 if the nth bit is
set, else 0?
15:46 < skelterjohn> no - you have to compare it to 0
15:46 < skelterjohn> if it is != 0, then that bit is 1
15:46 < skelterjohn> otherwise that bit is 0
15:46 < skelterjohn> for instance, 32 & (1 << 5) is 32
15:46 < skelterjohn> since 32 != 0, the fifth bit is on
15:46 < skelterjohn> but 32 & (1 << anyOtherNumber) is 0
15:47 < skelterjohn> meaning all other bits are off
15:47 -!- artefon [~thiago@dhcp58.usuarios.dcc.ufmg.br] has joined #go-nuts
15:48 < sauerbraten> ok, then 33 & (1 << 5) is also 32?  and 33 & (1
<< 1) is 1?  everything else is 0?
15:49 -!- SirPsychoS [~sp@c-24-13-132-255.hsd1.il.comcast.net] has quit [Ping
timeout: 260 seconds]
15:49 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
15:49 < skelterjohn> as long as i'm not making a mistake in what i'm telling
you, yes
15:50 -!- nickaugust [~nickaugus@li181-40.members.linode.com] has joined #go-nuts
15:50 < sauerbraten> good.  and in 1 << n, n has to be an unsigned
int, right?  since I'm doing that in a loop with a counter z1 of type int, how do
I convert it to uint?
15:52 < skelterjohn> uint(z1)
15:54 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Read error: Operation
timed out]
15:54 < sauerbraten> doing: s:="asd"; what type is s[1] of?  uint?
15:54 -!- gnuvince1 [~vince@205.198-ppp.3menatwork.com] has joined #go-nuts
15:54 < skelterjohn> byte
15:54 < sauerbraten> ok
15:55 -!- gnuvince_ [~vince@64.235.204.88] has quit [Ping timeout: 240 seconds]
15:55 < skelterjohn> the compiler should tell you if you get it wrong
15:55 < skelterjohn> bbl, lunch
15:59 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 240
seconds]
15:59 -!- gnuvince_ [~vince@70.35.167.208] has joined #go-nuts
16:00 -!- gnuvince1 [~vince@205.198-ppp.3menatwork.com] has quit [Ping timeout:
276 seconds]
16:00 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has quit [Ping
timeout: 245 seconds]
16:01 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
16:01 -!- kanru [~kanru@61-228-159-162.dynamic.hinet.net] has quit [Read error:
Operation timed out]
16:02 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
16:10 < sauerbraten> I have a file otp.go which is of package otp, and a
file main.go of package main.  eclipse tells me it can't import "./otp" :( If I
compile, link and run it via eclipse, console reutrns "file src/main.go was not
properly built (there is no obj for it)".  when compiling and linking by hand,
everything is alrigth O.o
16:10 < sauerbraten> any idea?
16:13 < sauerbraten> nevermind, cleaned the project, works now
16:14 -!- noktoborus_ [debian-tor@gateway/tor-sasl/noktoborus] has joined #go-nuts
16:21 < nsf> has anyone tried xgb (X11 go bindings)?
16:21 < nsf> I'm wondering what's the status of the project
16:21 < sauerbraten> what is invalid in here?  ciphertext = ciphertext +
(bytestring[z0] ^ key[z0])
16:22 -!- boscop [~boscop@f055011212.adsl.alicedsl.de] has quit [Ping timeout: 276
seconds]
16:23 -!- boscop [~boscop@f055152224.adsl.alicedsl.de] has joined #go-nuts
16:24 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has joined
#go-nuts
16:25 < Venom_X> is the + concatenating strings?
16:25 -!- ucasano [~ucasano@host69-192-static.38-79-b.business.telecomitalia.it]
has quit [Ping timeout: 276 seconds]
16:26 -!- boscop [~boscop@f055152224.adsl.alicedsl.de] has quit [Read error:
Connection reset by peer]
16:26 -!- boscop_ [~boscop@f055023125.adsl.alicedsl.de] has joined #go-nuts
16:26 < wrtp> sauerbraten: you should use += :-)
16:27 < wrtp> what error message do you get?
16:27 -!- flaguy48 [~gallard@user-0c6s350.cable.mindspring.com] has left #go-nuts
[]
16:28 -!- Tv [~tv@gige.bur.digisynd.com] has joined #go-nuts
16:28 -!- pocket_ [~pocket_@p4252-ipbf3210hodogaya.kanagawa.ocn.ne.jp] has quit
[Remote host closed the connection]
16:29 < sauerbraten> none anymore :D I forgot to convert bytestring[z0] to
an int, then I forgot to get err var of Atoi, but now everything works
16:29 -!- ucasano [~ucasano@host69-192-static.38-79-b.business.telecomitalia.it]
has joined #go-nuts
16:29 < sauerbraten> btw I was told += would be sloooow
16:31 < wrtp> a += b is exactly the same as a = a + b
16:31 < wrtp> if ciphertext is a string, i don't see how the above
expression can work, because the result of ^ is always an integer
16:35 -!- liron [~liron@ita4fw1.itasoftware.com] has quit [Quit: liron]
16:37 -!- femtoo [~femto@95-89-197-196-dynip.superkabel.de] has quit [Quit:
Leaving]
16:41 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
16:41 < sauerbraten> yes wrtp, I got that too, that's why I'm converting
now, works fine now :)
16:45 -!- flaguy48 [~gallard@user-0c6s350.cable.mindspring.com] has joined
#go-nuts
16:46 < sauerbraten> skelterjohn, how to do the whole thing backwards?
create a char out of it's binary encoding?
16:47 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
16:47 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has quit [Remote host closed
the connection]
16:47 < skelterjohn> for b, i := range myByteString { if b == "1" { num +=
1<< i } }
16:47 < skelterjohn> or something similar
16:47 < skelterjohn> there might be some off-by-one or type errors in there
16:47 -!- liron [~liron@ita4fw1.itasoftware.com] has joined #go-nuts
16:47 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Ping
timeout: 245 seconds]
16:48 < skelterjohn> i also might have value and index reversed
16:53 -!- Thomas1|3 [~kvirc@188-23-103-209.adsl.highway.telekom.at] has joined
#go-nuts
16:53 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts
16:56 -!- Thomas1|2 [~kvirc@188-23-8-178.adsl.highway.telekom.at] has quit [Ping
timeout: 264 seconds]
16:57 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
17:01 -!- artefon [~thiago@dhcp58.usuarios.dcc.ufmg.br] has quit [Ping timeout:
276 seconds]
17:07 -!- ct529 [~quassel@77-44-78-159.xdsl.murphx.net] has quit [Remote host
closed the connection]
17:09 -!- flaguy48 [~gallard@user-0c6s350.cable.mindspring.com] has quit [Ping
timeout: 245 seconds]
17:10 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has quit
[Remote host closed the connection]
17:16 < sauerbraten> how to convert a byte to string?  I can't find out how
to do that :(
17:18 < wrtp> string([]byte{someByte})
17:18 < sauerbraten> thanks
17:19 -!- tumdum_ [~tumdum@auc148.neoplus.adsl.tpnet.pl] has joined #go-nuts
17:19 -!- tumdum_ [~tumdum@auc148.neoplus.adsl.tpnet.pl] has quit [Changing host]
17:19 -!- tumdum_ [~tumdum@unaffiliated/tumdum] has joined #go-nuts
17:21 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Ping timeout: 252
seconds]
17:26 < wrtp> sauerbraten: if you're appending to a string, it makes more
sense to use []byte anyway.  then you can just use append()
17:27 < sauerbraten> mhm at least everything works now :) I'll have a look
at replacing my strings with byte arraeys
17:28 < Namegduf> You're sure that string(someByte) doesn't work?
17:28 < Namegduf> string(someInt) works, and the only difference between int
and byte is size.
17:29 < Namegduf> I guess maybe it being interpreted as a codepoint could be
bad, but that's only a problem if you're going outside the realm of ASCII
17:30 < Namegduf> And appending arbitrary bytes which aren't ASCII can
generate strings which aren't valid UTF-8.
17:32 < skelterjohn> string(someByte) works fine
17:32 < skelterjohn> even if you can get yourself into trouble by doing it
17:34 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has quit
[Quit: Ex-Chat]
17:34 -!- TheMue [~TheMue@p5DDF5E26.dip.t-dialin.net] has left #go-nuts []
17:34 -!- TheMue [~TheMue@p5DDF5E26.dip.t-dialin.net] has joined #go-nuts
17:38 < plexdev> http://is.gd/gKPFs by [Rob Pike] in go/src/pkg/gob/ -- gob:
when sending an interface value, indirect down to the
17:38 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
17:40 -!- binarypie [~binarypie@c-24-6-151-185.hsd1.ca.comcast.net] has joined
#go-nuts
17:46 -!- tensorpudding [~user@99.148.202.191] has joined #go-nuts
17:51 -!- ShadowIce
[~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has joined
#go-nuts
17:51 -!- ShadowIce
[~pyoro@HSI-KBW-109-193-120-162.hsi7.kabel-badenwuerttemberg.de] has quit
[Changing host]
17:51 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
17:54 -!- liron [~liron@ita4fw1.itasoftware.com] has quit [Quit: liron]
17:56 < plexdev> http://is.gd/gKRjM by [Rob Pike] in go/ -- CLA: Benny
Siegert <bsiegert@gmail.com>
17:56 < plexdev> http://is.gd/gKRjW by [Benny Siegert] in go/src/pkg/path/
-- path: add Glob
17:56 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
17:58 -!- tvw [~tv@212.79.9.150] has quit [Read error: Connection reset by peer]
18:02 -!- ville- [~ville@a107.ath.cx] has quit [Remote host closed the connection]
18:02 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-152-44.clienti.tiscali.it] has
joined #go-nuts
18:06 < wrtp> oh!  i had totally forgotten that
18:13 < plexdev> http://is.gd/gKSPY by [Evan Shaw] in go/src/cmd/6l/ -- 6l:
More SSE instruction fixes
18:13 < plexdev> http://is.gd/gKSQ4 by [Russ Cox] in
go/src/pkg/runtime/nacl/386/ -- runtime: explain nacl closure failure
18:13 < plexdev> http://is.gd/gKSQh by [Russ Cox] in go/ -- A+C: Keith
Rarick (individual CLA)
18:13 < plexdev> http://is.gd/gKSQy by [Keith Rarick] in go/src/pkg/net/ --
net: provide public access to file descriptors
18:14 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
18:14 < sauerbraten> Namegduf, yes, it said it can't convert a uint8 to
string
18:15 < Namegduf> Weird
18:15 -!- viirya [~viirya@cml506-25.csie.ntu.edu.tw] has quit [Read error:
Connection reset by peer]
18:15 < sauerbraten> but it works now :) I tested my Java implementation of
the one-time pad and measurde runtime of encoding and decoding of 2600 characters
using 8bit blocks.  result: Java nearly needs double of the time go needs :)
18:15 -!- viirya [~viirya@cml506-25.csie.ntu.edu.tw] has joined #go-nuts
18:15 -!- ville- [~ville@a107.ath.cx] has joined #go-nuts
18:16 -!- boscop [~boscop@f055023125.adsl.alicedsl.de] has quit [Quit:
OutOfTimeException: Allocation of TimeFrame failed due to lack of time.
Terminating...]
18:16 < skelterjohn> 2600 might be a bit of a small test set
18:16 < skelterjohn> java more initial overhead than go
18:16 < skelterjohn> java has
18:17 -!- Venom_X [~pjacobs@adsl-99-20-147-171.dsl.aus2tx.sbcglobal.net] has quit
[Quit: Venom_X]
18:17 -!- artefon [~thiago@189.26.237.181.dynamic.adsl.gvt.net.br] has joined
#go-nuts
18:18 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
18:19 < sauerbraten> ok, I'll do it again with 2600000 characters :P
18:20 < skelterjohn> good to be thorough when making a comparison :)
18:22 < sauerbraten> yep, maybe I should even make 100 measurments and get
the average of it, but I'm too lazy to do that
18:22 -!- boscop [~boscop@f055023125.adsl.alicedsl.de] has joined #go-nuts
18:24 < cbeck> That's what scripts are for
18:24 < skelterjohn> well, there is accounting for experimental variance
(what you suggest) and trying to get comparable numbers (what i suggest)
18:24 < skelterjohn> both are important
18:27 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has quit [Quit: liron]
18:31 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
18:31 < plexdev> http://is.gd/gKUOM by [Eric Clark] in go/src/cmd/gc/ -- gc:
doc nit
18:31 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has quit [Remote host closed
the connection]
18:31 < plexdev> http://is.gd/gKUOV by [Rob Pike] in go/src/pkg/gob/ -- gob:
don't add "." if package path is empty when registering a type.
18:32 -!- liron [~liron@ita4fw1.itasoftware.com] has joined #go-nuts
18:35 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
260 seconds]
18:35 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
18:51 -!- napsy [~luka@88.200.96.18] has quit [Quit: leaving]
18:51 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
18:54 -!- Venom_X [~pjacobs@74.61.90.217] has joined #go-nuts
18:57 -!- liron_ [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
18:57 -!- liron_ [~liron@guest-fw.dc4.itasoftware.com] has quit [Remote host
closed the connection]
18:58 -!- liron_ [~liron@guest-fw.dc4.itasoftware.com] has joined #go-nuts
18:59 -!- liron [~liron@ita4fw1.itasoftware.com] has quit [Read error: Operation
timed out]
19:00 -!- dj2 [~dj2@216.16.242.254] has quit [Remote host closed the connection]
19:01 -!- dj2 [~dj2@216.16.242.254] has joined #go-nuts
19:02 < MaybeSo> how insidious, I wrote a code loop that used 'defer
part.Close()' within a for {...} w/o stopping to consider that the defered close
only occurs when the entire subroutine exits.
19:03 < skelterjohn> how else would it work?
19:03 < skelterjohn> it's not a scope operator
19:04 < MaybeSo> I know that
19:04 < MaybeSo> It's not a complaint, I'm just saying it was an insidious
little bug on my part
19:04 < plexdev> http://is.gd/gKXTG by [Christopher Wedgwood] in
go/src/pkg/io/ -- io: use SetFinalizer more elegantly in Pipe
19:07 -!- ucasano [~ucasano@host69-192-static.38-79-b.business.telecomitalia.it]
has quit [Quit: ucasano]
19:17 -!- Peet__ [~Peet__@unaffiliated/peet--/x-2416233] has quit [Read error:
Connection reset by peer]
19:43 -!- IRWolfie1 [irwolfie@69.162.126.237] has quit [Read error: Connection
reset by peer]
19:53 -!- TheSeeker [~n@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has joined
#go-nuts
19:55 -!- nickaugust [~nickaugus@li181-40.members.linode.com] has quit [Remote
host closed the connection]
19:55 -!- nickaugust [~nickaugus@li181-40.members.linode.com] has joined #go-nuts
19:58 -!- liron [~liron@guest-fw.dc4.itasoftware.com] has quit [Remote host closed
the connection]
19:59 -!- liron [~liron@ita4fw1.itasoftware.com] has joined #go-nuts
20:05 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
260 seconds]
20:06 -!- adu [~ajr@pool-74-96-89-94.washdc.fios.verizon.net] has quit [Quit: adu]
20:12 -!- skelterjohn [~jasmuth@lawn-gw.rutgers.edu] has quit [Quit: skelterjohn]
20:15 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
20:15 -!- IRWolfie- [irwolfie@ircnoob.com] has joined #go-nuts
20:20 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Quit: tumdum]
20:33 -!- zozoR [~zozoR@5634798d.rev.stofanet.dk] has quit [Quit: Morten.  Desu~]
20:43 -!- gnuvince_ [~vince@70.35.167.208] has quit [Quit: Lost terminal]
20:47 -!- Eridius [~kevin@unaffiliated/eridius] has joined #go-nuts
20:53 < plexdev> http://is.gd/gL7UX by [Peter Mundy] in go/src/pkg/syscall/
-- syscall: use 64-bit file size for truncation on Linux
21:03 -!- femtoo [~femto@95-89-197-196-dynip.superkabel.de] has joined #go-nuts
21:09 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
21:10 -!- dj2 [~dj2@216.16.242.254] has quit [Remote host closed the connection]
21:24 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
21:29 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
21:33 -!- napsy [~luka@88.200.96.18] has quit [Quit: Lost terminal]
21:40 -!- Chopinn [~Chopin@ti0018a380-dhcp2647.bb.online.no] has joined #go-nuts
21:44 -!- TheMue [~TheMue@p5DDF5E26.dip.t-dialin.net] has quit [Quit: TheMue]
21:48 -!- dw [~dw@unaffiliated/dw] has joined #go-nuts
21:59 -!- ronnyy [~quassel@2001:6f8:12c6:1c86:224:1dff:fed7:9541] has joined
#go-nuts
22:01 -!- aho [~nya@fuld-4d00d7c2.pool.mediaWays.net] has joined #go-nuts
22:02 -!- femtoo [~femto@95-89-197-196-dynip.superkabel.de] has quit [Quit:
Leaving]
22:05 -!- tumdum [~tumdum@aug191.neoplus.adsl.tpnet.pl] has joined #go-nuts
22:05 -!- tumdum [~tumdum@aug191.neoplus.adsl.tpnet.pl] has quit [Changing host]
22:05 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
22:07 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Client Quit]
22:17 -!- liron [~liron@ita4fw1.itasoftware.com] has quit [Quit: liron]
22:32 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-152-44.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
22:39 -!- artefon [~thiago@189.26.237.181.dynamic.adsl.gvt.net.br] has quit [Quit:
bye]
22:40 -!- adu [~ajr@pool-74-96-89-94.washdc.fios.verizon.net] has joined #go-nuts
22:43 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
#go-nuts
22:45 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Client Quit]
22:46 -!- exch [~exch@h78233.upc-h.chello.nl] has quit [Read error: Connection
reset by peer]
22:46 -!- exch [~exch@h78233.upc-h.chello.nl] has joined #go-nuts
22:46 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
22:49 -!- tumdum [~tumdum@aug191.neoplus.adsl.tpnet.pl] has joined #go-nuts
22:49 -!- tumdum [~tumdum@aug191.neoplus.adsl.tpnet.pl] has quit [Changing host]
22:49 -!- tumdum [~tumdum@unaffiliated/tumdum] has joined #go-nuts
22:50 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
#go-nuts
23:01 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
23:01 -!- wrtp [~rog@92.16.112.146] has quit [Quit: wrtp]
23:04 < |Craig|> I've got myself a go optimization problem.  Here is several
versions of my inner loop along with their corresponding runtimes:
http://dpaste.com/271108/ I think what I need is to use a bool as a int (0 or 1),
but I can't see a good way to do that.
23:08 < |Craig|> thats the 5th deep nested loop, and is running in these
tests on 2.86 MB arrays (though I often use much larger ones), runtimes are for
the entire process, which is a bit more than just that inner loop.
23:10 -!- creack [~charme_g@163.5.84.215] has quit [Read error: Connection reset
by peer]
23:13 < anticw> |Craig|: without checking the code details ...  have you
tried gccgo ?
23:15 -!- tumdum_ [~tumdum@aun93.neoplus.adsl.tpnet.pl] has joined #go-nuts
23:15 -!- tumdum_ [~tumdum@aun93.neoplus.adsl.tpnet.pl] has quit [Changing host]
23:15 -!- tumdum_ [~tumdum@unaffiliated/tumdum] has joined #go-nuts
23:15 -!- tumdum [~tumdum@unaffiliated/tumdum] has quit [Ping timeout: 240
seconds]
23:16 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
23:18 < |Craig|> anticw: gccgo won't let me cast a bool to an int anymore
than anything else, which would be the preferred solution.  But no, I havent tried
it, and it would probably optimize it somewhat better.
23:18 < |Craig|> maybe I should use unsafe, I'll look into that
23:18 -!- gid [~gid@220-253-109-211.VIC.netspace.net.au] has joined #go-nuts
23:19 < anticw> |Craig|: i mean't checking the perf using the code in it's
expanded form
23:20 -!- unhygienix [~unhygieni@host86-135-185-97.range86-135.btcentralplus.com]
has joined #go-nuts
23:20 < anticw> |Craig|: do you have a large snippet of code that builds, i
can test it here if that helps
23:21 -!- sauerbraten [~sauerbrat@p508CFB05.dip.t-dialin.net] has quit [Remote
host closed the connection]
23:21 < |Craig|> It runs fine, and I understand why the versions run at the
different speeds, I just can't see how to do the right thing with go's safty
23:22 < MaybeSo> have you tried just having two branches computing the ft2
update using variables for 0.5 or 4.0 that were declared outside the loop?
23:22 < |Craig|> I basically need this key expression float32(int(k==utn))
23:22 < anticw> |Craig|: i'm suggesting gccgo might generate code that would
run as if the case worked as you expected
23:22 < anticw> iant or not
23:25 < MaybeSo> for example, does this run as slowly as your other rejected
examples?  http://paste.pocoo.org/show/286706/
23:25 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has joined
#go-nuts
23:26 < MaybeSo> oops, I'm missing an 'else {' in there
23:26 -!- iant [~iant@nat/google/x-bsgclhzflyrbeiqh] has quit [Ping timeout: 240
seconds]
23:26 < anticw> make x1 & x2 untyped consts
23:26 < MaybeSo> I'm thinking it's a bad idea to run too much conditional
logic inside a deep loop
23:27 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
23:28 < MaybeSo> anticw: good point
23:28 < |Craig|> MaybeSo: 1252 ms, slightly better than some of my
conditional versions
23:29 < |Craig|> constants made no difference
23:30 < |Craig|> MaybeSo: my non conditional version with math hacks are
fastest, so yes, conditionals in loops are bad
23:32 < |Craig|> using unsafe, how do I make a bool into some 0 or 1 number?
23:32 -!- dj2 [~dj2@CPE001f5b35feb4-CM0014048e0344.cpe.net.cable.rogers.com] has
joined #go-nuts
23:34 -!- iant [~iant@nat/google/x-lkkthymffaprkone] has joined #go-nuts
23:34 -!- mode/#go-nuts [+v iant] by ChanServ
23:35 -!- iant [~iant@nat/google/x-lkkthymffaprkone] has quit [Client Quit]
23:35 -!- iant [~iant@67.218.104.238] has joined #go-nuts
23:35 -!- mode/#go-nuts [+v iant] by ChanServ
23:37 -!- gnuvince_ [~vince@70.35.170.156] has joined #go-nuts
23:38 < MaybeSo> hrm...  possibly stupid idea: use a map[bool]int ?
23:39 < anticw> will be much slower
23:39 < MaybeSo> ah well
23:39 < |Craig|> MaybeSo: right concept though
23:39 < anticw> that will invoke the runtime ...  i think a variant of what
you posted would be fine
23:39 < anticw> and with a decewnt compiler as good as abuse unsafe
23:40 < MaybeSo> Do you folks use gccgo?  I've never bothered to since it
seemed like such a hassle to build.
23:41 < anticw> for perf stuff i do
23:41 < anticw> it used to trail in perf (mem footprint/cache issues) but
now for tight loops, etc i see it sometimes 2x the speed
23:41 < anticw> wrt to building it ...  it's not that bad
23:41 < anticw> at least on a recent distro ...  apt-get install ...  ; cvs
co ...  ; ./configure ...
23:42 < |Craig|> calling math.Fabs, and doing some subtractions and
multiplies and a type conversion came out faster than a basic conditional.  Maybe
goGcc would be faster, but I have my doubts as it can't exploit the math I'm doing
as there could be round of differences
23:42 < anticw> iant: append append append append
23:42 -!- gid [~gid@220-253-109-211.VIC.netspace.net.au] has quit [Quit: Leaving.]
23:42 < MaybeSo> yeah, I'm on a mac and cross compile for linux
23:42 < anticw> |Craig|: that's quite unexpected it would be faster
23:43 < anticw> i would think the call overhead would kill the conditional
cost
23:43 < |Craig|> anticw: and you would also think abs would contain a
conditional, but I suspect its getting inlined
23:43 < MaybeSo> One question I had, are you positive about your timings?
Are you making multiple runs and have you tried timing "all the rest" by taking
out the contents of the innermost loop you're looking at?
23:44 < anticw> |Craig|: for 6g?  i bet it's not
23:44 < anticw> |Craig|: can you post a bit more code along with the data
you're working with?
23:45 < |Craig|> anticw: I need to recheck the abs approach, it has a bug
that causes it ti output slightly different stuff that mat cause a perforamce
change, but it still stands that a basic conditional more than doubles my runtime
23:45 <+iant> anticw: I committed append support on Wednesday
23:45 < |Craig|> anticw: I can upload my project somewhere, give me a bit
and I'll github it.
23:45 < |Craig|> its just a fractal generator
23:46 < |Craig|> my first go project
23:46 < anticw> iant: yeah ...  i was a bit quick on that, building now
23:46 < anticw> iant: ...T ...  also?
23:46 <+iant> yep
23:47 < anticw> how can i rip on you for being a slacker if you keep doing
that
23:47 <+iant> ha
23:48 -!- zhaozhou [~zhaozhou@linfast76.bitnet.nu] has joined #go-nuts
23:49 < anticw> did you see the comments about about wanting to have an
efficient 'float32(int(x==y))' ?
23:49 <+iant> not really, but gccgo should be able to compute that more or
less optimally
23:50 <+iant> can you convert a bool to an int?
23:50 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by
peer]
23:51 < anticw> that's my thinking, write it cleanly and let gccgo deal
23:51 <+iant> I think you may have to write if x == y { f = 1.0 } else { f =
0.0 }
23:51 <+iant> anyhow, yeah, once it gets into the gcc optimizers it should
be handled well
23:51 < anticw> no, a boot can't become and int
23:51 < anticw> bool
23:51 < anticw> boots can't either
23:52 < anticw> gcc got even slower to build
23:52 <+iant> making forward progress every day
23:53 < anticw> yeah ...  i dont mind that much ...  3m22s ...  whilst not
great ...  and not as fast as older versions, my cpus were slower then
23:54 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
23:54 < anticw> iant: ok, ...T works great ...  as does append
23:55 -!- photron [~photron@port-92-201-240-76.dynamic.qsc.de] has quit [Ping
timeout: 265 seconds]
23:56 < anticw> iant: ok, there are recent copy changes that don't work
23:56 <+iant> Hmmm, guess I've missed that
23:57 < anticw> the byte/string variant
23:57 <+iant> oh yeah
23:57 < anticw> i didnt even know i was using that ...
23:58 -!- cmarcelo [~cmarcelo@enlightenment/developer/cmarcelo] has quit [Quit:
Leaving]
23:58 < anticw> iant: pathcanon.go:121:2: error: both arguments must be
slices
23:58 < anticw> (fwiw)
23:58 -!- Venom_X [~pjacobs@74.61.90.217] has quit [Quit: Venom_X]
23:58 < |Craig|> anticw: here is my horrible code:
https://github.com/Craig-Macomber/goFlame (its really really messy and bad, I
know)
23:59 < |Craig|> loop in question is in hello.go
--- Log closed Sat Nov 06 00:00:00 2010