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

--- Log opened Thu Jul 15 00:00:12 2010
00:03 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has quit [Remote
host closed the connection]
00:03 -!- i3d [~i3dmaster@216.239.45.130] has joined #go-nuts
00:03 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
00:08 -!- photron [~photron@port-92-201-207-183.dynamic.qsc.de] has quit [Ping
timeout: 265 seconds]
00:08 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has joined
#go-nuts
00:14 -!- i3d [~i3dmaster@216.239.45.130] has quit [Quit: leaving]
00:14 -!- i3d [~i3dmaster@216.239.45.130] has joined #go-nuts
00:14 -!- i3d [~i3dmaster@216.239.45.130] has quit [Changing host]
00:14 -!- i3d [~i3dmaster@unaffiliated/i3dmaster] has joined #go-nuts
00:15 -!- GeoBSD [~geobsd@lns-bzn-54-82-251-110-43.adsl.proxad.net] has quit
[Quit: Lost terminal]
00:18 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
00:21 -!- ExtraSpice [~ExtraSpic@88.118.32.225] has quit [Ping timeout: 240
seconds]
00:23 -!- Wiz126 [~Wiz126@24.229.245.72.res-cmts.sm.ptd.net] has quit [Ping
timeout: 240 seconds]
00:24 -!- Wiz126 [~Wiz126@24.229.245.72.res-cmts.sm.ptd.net] has joined #go-nuts
00:26 -!- carllerche [~carllerch@99.13.242.166] has joined #go-nuts
00:28 -!- carllerche [~carllerch@99.13.242.166] has quit [Client Quit]
00:30 -!- carllerche [~carllerch@99.13.242.166] has joined #go-nuts
00:31 -!- i3d [~i3dmaster@unaffiliated/i3dmaster] has quit [Quit: leaving]
00:32 -!- carllerche [~carllerch@99.13.242.166] has quit [Client Quit]
00:40 -!- g0bl1n [~pr0kter@a213-22-76-1.cpe.netcabo.pt] has joined #go-nuts
00:46 -!- lmoura_ [~lmoura@187.78.165.78] has joined #go-nuts
00:50 -!- sladegen [~nemo@unaffiliated/sladegen] has quit [Ping timeout: 258
seconds]
00:51 -!- sladegen [~nemo@unaffiliated/sladegen] has joined #go-nuts
00:53 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
00:55 -!- lmoura_ [~lmoura@187.78.165.78] has quit [Ping timeout: 245 seconds]
01:01 -!- htoothrot [~mux@71-8-117-228.dhcp.ftwo.tx.charter.com] has quit [Read
error: Connection reset by peer]
01:12 -!- htoothrot [~mux@71-8-117-228.dhcp.ftwo.tx.charter.com] has joined
#go-nuts
01:12 < plexdev> http://is.gd/dsmcV by [Robert Griesemer] in go/doc/ -- go
spec: clarification of channel close()
01:12 < plexdev> http://is.gd/dsmcZ by [Evan Shaw] in go/lib/codereview/ --
codereview: Fix for Mercurial >= 1.6
01:12 < plexdev> http://is.gd/dsmde by [Russ Cox] in 2 subdirs of go/ --
cgo: various bug fixes
01:12 < plexdev> http://is.gd/dsmdu by [Joe Poirier] in go/src/ -- windows:
append executable extension (done as per Russ' suggestion)
01:13 < plexdev> http://is.gd/dsmdK by [Russ Cox] in go/src/pkg/os/ -- os:
use /tmp again
01:13 < plexdev> http://is.gd/dsmdP by [Brad Fitzpatrick] in 4 subdirs of
go/src/pkg/ -- mime/multipart and HTTP multipart/form-data support
01:19 -!- htoothrot [~mux@71-8-117-228.dhcp.ftwo.tx.charter.com] has quit [Read
error: Connection reset by peer]
01:22 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
01:23 -!- htoothrot [~mux@71-8-117-228.dhcp.ftwo.tx.charter.com] has joined
#go-nuts
01:23 -!- Bombe [~droden@weltgehirnmaschine.de] has quit [Changing host]
01:23 -!- Bombe [~droden@freenet/developer/Bombe] has joined #go-nuts
01:39 -!- napsy [~luka@212.235.174.112] has quit [Ping timeout: 240 seconds]
01:50 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.2]
01:56 -!- lmoura_ [~lmoura@187.78.165.78] has joined #go-nuts
01:59 -!- SRabbelier [~SRabbelie@ip138-114-211-87.adsl2.static.versatel.nl] has
quit [Ping timeout: 240 seconds]
02:03 -!- smw [~smw@pool-71-183-88-124.nycmny.fios.verizon.net] has quit [Remote
host closed the connection]
02:06 -!- holmescn [~20526B545@221.192.238.10] has quit [Remote host closed the
connection]
02:31 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
02:35 -!- napsy [~luka@212.235.174.112] has joined #go-nuts
02:36 -!- SRabbelier [~SRabbelie@ip138-114-211-87.adsl2.static.versatel.nl] has
joined #go-nuts
02:59 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds]
03:15 < plexdev> http://is.gd/dssuc by [Andrew Gerrand] in 2 subdirs of go/
-- release.2010-07-14
03:15 < plexdev> http://is.gd/dssue by [Andrew Gerrand] in go/ --
release.2010-07-14 release
03:20 -!- niemeyer [~niemeyer@201-11-213-235.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 240 seconds]
03:29 -!- g0bl1n [~pr0kter@a213-22-76-1.cpe.netcabo.pt] has quit [Quit: I haz a
dreamz...]
03:38 -!- lmoura_ [~lmoura@187.78.165.78] has quit [Ping timeout: 245 seconds]
03:44 < nf> ^ there goes my 100th and 101st commits :)
03:52 -!- cco3 [~conley@c-69-181-138-209.hsd1.ca.comcast.net] has joined #go-nuts
03:57 -!- djm [~djm@paludis/slacker/djm] has quit [Remote host closed the
connection]
04:03 -!- bmizerany [~bmizerany@80.sub-69-99-175.myvzw.com] has quit [Remote host
closed the connection]
04:09 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Ping timeout: 252
seconds]
04:20 -!- Ginto8 [~ginto8@pool-72-82-235-34.cmdnnj.fios.verizon.net] has quit
[Ping timeout: 265 seconds]
04:27 -!- GoBIR [~gobir@DHCP-159-138.caltech.edu] has quit [Ping timeout: 260
seconds]
04:30 -!- GoBIR [~gobir@DHCP-159-138.caltech.edu] has joined #go-nuts
04:36 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
04:39 -!- napsy [~luka@212.235.174.112] has quit [Ping timeout: 248 seconds]
04:46 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
04:53 -!- Ginto8 [~ginto8@pool-72-82-235-34.cmdnnj.fios.verizon.net] has joined
#go-nuts
04:59 -!- scm [justme@d070120.adsl.hansenet.de] has quit [Ping timeout: 258
seconds]
05:00 -!- itrekkie [~itrekkie@ip70-190-110-124.ph.ph.cox.net] has joined #go-nuts
05:01 -!- scm [justme@d038067.adsl.hansenet.de] has joined #go-nuts
05:03 -!- itrekkie [~itrekkie@ip70-190-110-124.ph.ph.cox.net] has quit [Client
Quit]
05:06 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
05:13 -!- antileet [~anirudhs@59.92.137.116] has joined #go-nuts
05:15 -!- napsy [~luka@212.235.174.112] has joined #go-nuts
05:19 -!- Sacho [~sacho@87-126-51-231.btc-net.bg] has quit [Quit: Leaving]
05:25 < nsf> god..  why I have bought this "mini" keyboard, I can't type now
:(
05:30 -!- antileet [~anirudhs@59.92.137.116] has quit [Ping timeout: 245 seconds]
05:34 -!- belkiss [~belkiss@drn13-1-78-235-168-105.fbx.proxad.net] has joined
#go-nuts
05:36 < str1ngs> design question.  I'm using ForkExec which returns a bunch
of file paths.  problem I'm having is figuring out how to get all of that into a
slice.
05:37 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
05:39 -!- Tiger [~chatzilla@118.126.12.53] has joined #go-nuts
05:41 -!- Tiger_ [~chatzilla@118.126.12.53] has quit [Ping timeout: 258 seconds]
05:42 -!- GoBIR [~gobir@DHCP-159-138.caltech.edu] has quit [Ping timeout: 260
seconds]
05:42 -!- Eko [~eko@DHCP-159-138.caltech.edu] has quit [Ping timeout: 260 seconds]
05:43 -!- Eko [~eko@DHCP-159-138.caltech.edu] has joined #go-nuts
05:43 < Ginto8> str1ngs, are the filepaths in string form?
05:43 -!- antileet [~anirudhs@59.96.64.228] has joined #go-nuts
05:43 < Ginto8> if so use a StringVector and Push() (or PushBack() I forget
what it's called exactly)
05:44 < str1ngs> yes there in string form
05:44 < str1ngs> reader.ReadString('\n')
05:44 -!- GoBIR [~gobir@DHCP-159-138.caltech.edu] has joined #go-nuts
05:44 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.2]
05:44 < Ginto8> kthen
05:44 < str1ngs> so read the bufio that then push into a string vector?
05:44 < Ginto8> use a StringVector
05:44 < Ginto8> yep
05:45 < str1ngs> ah ok thank you
05:45 < Ginto8> and then you can do []string(sv) where sv is a StringVector
05:45 < str1ngs> eventualy I need to do some logic on the patch and then put
the metadata into a type.
05:45 < str1ngs> path*
05:46 < Ginto8> ok well you can convert each one into a []byte (so that you
can edit them), mess with em, then convert them back to a string and put em back
05:46 < Ginto8> or you could do a [][]byte
05:46 < Ginto8> but then you'd have to do the reallocations yourself
05:48 < str1ngs> I need need to change the values of the paths.  I think
string vector should be enough to work with
05:49 < Ginto8> okey dokey
05:49 < str1ngs> that helps alot.  I'm not use to stuff this low level.
05:50 < Ginto8> well, I wouldn't call Go low-level
05:50 < Ginto8> well not compared to C/++ at least
05:50 < Ginto8> it's one level higher
05:50 < str1ngs> oh yes thats for sure
05:50 < str1ngs> but compared to system in ruby.
05:50 < Ginto8> oh yeah
05:50 < str1ngs> ForkExec is more work.
05:51 < Ginto8> well yes, but it's also more useful overall
05:51 < str1ngs> but the pipes are really nice
05:51 < Ginto8> out of curiosity, what are you using forkexec for?
05:52 < Ginto8> if it's just doing more than one thing at a time, goroutines
and channels are a far better solution than forkexec and pipes
05:52 < str1ngs> I need find some files then pull meta data out of the files
05:52 < str1ngs> I dould have done it in pure go but I'm still new to go.
05:53 < Ginto8> look through the GoDayX.pdf in $GOROOT/doc
05:53 -!- adu [~ajr@softbank220043138128.bbtec.net] has joined #go-nuts
05:53 < str1ngs> I'll pastbin some code
05:53 < Ginto8> it'll familiarize you with all the core concepts
05:54 < str1ngs> http://codepad.org/3cttxQWU
05:54 -!- cco3 [~conley@c-69-181-138-209.hsd1.ca.comcast.net] has quit [Ping
timeout: 264 seconds]
05:54 < Ginto8> oh you're usin find
05:54 < str1ngs> yes
05:55 < Ginto8> listing all installed packages so that you can check for
necessary libs?
05:55 < Ginto8> or just for learning experience
05:55 < Ginto8> ?
05:55 < str1ngs> I'm building a web based build system
05:56 < Ginto8> ooh that sounds interesting
05:56 < str1ngs> bash would be better since the PKGBUILD are just bash files
05:56 < Ginto8> hm
05:57 < str1ngs> and it holds meta data.  so I plan to say pull the data and
put into int say a type called pack
05:57 < str1ngs> pack.Name().  returns the package name that sorta thing
05:57 < Ginto8> hm ok
05:57 < str1ngs> but really its for learning
05:58 < Ginto8> ok cool
06:00 < str1ngs> I also like go interfaces.  with out the OO bloat
06:01 -!- drry [~drry@unaffiliated/drry] has quit [Ping timeout: 264 seconds]
06:01 -!- drry [~drry@unaffiliated/drry] has joined #go-nuts
06:01 < jer> i'm disappointed with go's interfaces...  nobody gets OO right
anymore.  OO isn't about objects really, it's all about messages.  unfortunately
too many languages think either 1) objects should be avoided at all costs, or 2)
messages are only a way of linking objects, rather than the other way around --
objects are merely endpoints for messages
06:02 < Ginto8> jer, seriously?  interfaces aren't what makes go go.
06:02 < Ginto8> goroutines are the main thing
06:02 < jer> Ginto8, i know
06:02 < str1ngs> I agree about the go routines
06:02 < Ginto8> interfaces are just something useful
06:02 < jer> there's a reason i actually do right go code =]
06:02 < Ginto8> and anyway, OO is too abstract a concept
06:02 < Ginto8> Go is based on C
06:03 * jer is familiar with the guiding principals behind Go design, and i don't
object
06:03 < Ginto8> well interfaces are just a way of abstracting structs
without having to deal with the hell that is template metaprogramming
06:03 < str1ngs> thats the way I look at it.
06:03 < Ginto8> they aren't intended to be an OO feature
06:04 < Ginto8> I don't even think of Go as an OO language really
06:04 < jer> sure, i don't use go for it's OO features =]
06:05 < Ginto8> it's a procedural/structural language with a focus on
parallelism that has some fancy stuff for dealing with data
06:05 < Ginto8> "fancy stuff" being methods and interfaces
06:05 < Namegduf> It has abstraction.
06:05 < Ginto8> Namegduf, that's still fancy stuff
06:05 < Ginto8> =P
06:05 < jer> goroutines are nothing new though, been using languages with
coroutines for almost a decade now; goroutines aren't all that much different
06:05 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 246
seconds]
06:06 < jer> that said, without some form of easy to use concurrency, i'd
have not even bothered with go
06:06 < Ginto8> jer, yes, but for a systems programming language based on C?
it's a major step forward (that should have happened a while ago, but regardless)
06:06 < jer> any language that can't do that these days, regardless of its
target, is not worth using
06:07 < Ginto8> well is less worth using
06:07 < Ginto8> C/++ still have a number of strong points
06:07 < Namegduf> Noting that pretty much every popular high-level language
nowadays at least outside of functional or special use stuff that has coroutines
does not multiplex them across threads
06:07 < Ginto8> there IS a reason they're still industry standard for most
things
06:07 < jer> Ginto8, well, been using coroutines in C for longer than 10
years =] just a royal pain in the ass having to implement them yourself in an
platform specific manner =/
06:07 < Ginto8> jer, good point
06:08 < Ginto8> Namegduf, that is actually something very worthwhile to note
06:08 < jer> about 60% of my code written these days is still C or ObjC
(iphone/mac dev)
06:08 < Ginto8> goroutines take advantage of both multicore processors and
os threads, while not relying too heavily on either
06:08 < jer> Namegduf, that's right, but you don't always need to.
06:08 < Ginto8> and that's they're greatest advantage
06:08 < str1ngs> anyways I didnt mean to cause a debate.  but for me go is a
step closer to C from ruby.  with garbage collection and all that good stuff.
06:09 -!- napsy [~luka@212.235.174.112] has quit [Quit: Lost terminal]
06:09 < Namegduf> jer: I consier it a valuable feature nevertheless, and it
does extend the use of the concurrency
06:09 < Ginto8> str1ngs, Go is more likely a step closer to Python from C
06:09 < jer> in a language like go, you really have to.  but other
languages, like your interpreted languages, tend to (if done right) allow you to
create many instances of themselves, containing the environment within itself
06:09 < Ginto8> hm good point
06:09 < jer> in those cases, where that ability is present, multiplexing
across OS threads is just silly
06:09 < Namegduf> Specifically, even single-threaded Go will push goroutines
that block on external stuff off
06:09 < Ginto8> but easy IPC between those environments?
06:09 < Namegduf> Er, no, it's required.
06:09 < jer> Ginto8, more complex yes
06:10 < Namegduf> If they do what Go does, they will use multiple threads or
processes
06:10 < Ginto8> yep
06:10 < Namegduf> There's no way (I know of) to block on syscalls and C
functions without blocking the rest of the program, without threading
06:10 < Ginto8> yep
06:11 * Ginto8 really loves the C interfacing
06:11 < chressie> str1ngs: i just looked at your pasted code and it's
probably less pain if you use exec.Run instead of os.ForkExec (at leas less typing
:) )
06:11 < Ginto8> it means that I don't have to deal with any mucky bindings
06:11 < jer> that's one thing i haven't looked at seriously yet; a cursory
glance has me thinking i have to write C glue code in comments
06:11 < jer> but hopefully i'm wrong
06:11 < Ginto8> jer, nope
06:12 < Ginto8> just #include's
06:12 < jer> ah
06:12 < Ginto8> you actually can't do anything else
06:12 < Ginto8> o.o
06:12 < Namegduf> cgo is somewhat painful in implementation because
goroutines require it for the details of their operation
06:12 < Ginto8> I tried to make constants, but it was ignored by cgo
06:12 < Ginto8> Namegduf, huh?
06:12 < jer> strong FFI, and easy to use concurrency are (in my mind)
requirements for any new language made in the last few years
06:13 < jer> there's no way to call into go code from C code is there?
06:13 < Ginto8> nope
06:13 < jer> its just one way is it not?
06:13 < jer> that's what i thought i read
06:13 < str1ngs> chressie: ok I'll check exec.Run out.
06:13 < Namegduf> Ginto8: Segmented stacks make Go functions have different
calling conventions to C functions
06:13 < Ginto8> mainly because of the difference in typing systems
06:13 < Namegduf> Which is why cgo is complex
06:13 < Namegduf> And why making Go be called from C is hard
06:13 < Ginto8> hm yeah
06:13 < str1ngs> chressie: I'm guessing thats what I was looking for.
something like system in ruby
06:13 < Ginto8> Namegduf, nigh impossible
06:14 < chressie> str1ngs: yeah, no need for bufio and stuff, it all happens
implicitly
06:17 < str1ngs> so I would just use cmd.Stdout then?
06:17 < Ginto8> cmd.Stdout?
06:17 < chressie> exactly
06:18 < str1ngs> ah ok gotcha
06:18 < str1ngs> and my guess is its already buffered?
06:18 < Ginto8> you mean fmt.Print[f|ln]()?
06:19 -!- adu [~ajr@softbank220043138128.bbtec.net] has quit [Quit: adu]
06:19 < chressie> i think (at least at the os level)
06:19 < chressie> Ginto8: we're talking about exec.Run
06:20 < Ginto8> <str1ngs> so I would just use cmd.Stdout then?
06:20 < Ginto8> ^ that's what I was talkin about
06:20 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
06:20 < chressie> Ginto8: yes, the result of exec.Run is a Cmd struct, which
has a field Stdout
06:21 < Ginto8> oh
06:21 < Ginto8> ok then
06:21 < Ginto8> lol sorry
06:21 < chressie> nothing to excuse :)
06:21 < str1ngs> chressie: I'm looking at the exec_test.go see how they do
it . ya this is easier
06:22 < str1ngs> mainly ioutil.ReadAll(cmd.Stdout)
06:23 < chressie> you mean io.ReadFull(cmd.Stdout) :)
06:23 < str1ngs> oh no need for ioutil then?
06:23 < chressie> ioutil is for files that you specify with a string
06:23 < chressie> (i.e.  in the filesystem)
06:24 < str1ngs> ah ok thanks again
06:24 < Ginto8> actually ioutil.ReadAll reads from an io.Reader
06:24 < Ginto8> but it goes until there's an eof so...
06:24 < str1ngs> ya it doesnt do what I thought it did hehe
06:25 < chressie> huh...  yeah sorry, i thought about ReadFile...  but
you're right
06:25 < Ginto8> ReadFile?
06:25 < Ginto8> what package is that from?
06:25 -!- acetoline [~alireza@125-237-190-240.jetstream.xtra.co.nz] has joined
#go-nuts
06:26 < chressie> ioutil.ReadFile
06:26 < Ginto8> oh
06:26 < Ginto8> didn't see that one there =P
06:26 < Ginto8> hm
06:26 < Ginto8> ioutil is pretty useful
06:26 < str1ngs> ReadALl works
06:27 < chressie> great!
06:27 < str1ngs> for what I need anyways
06:27 < Ginto8> wait readall works?
06:27 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts
06:27 < str1ngs> returns everthing as []byte
06:27 < Ginto8> you mean readfull with a buffer
06:27 < Ginto8> yeah but it reads until eof
06:27 < Ginto8> I dont think an stdout will have an eof
06:27 < str1ngs> which is fine
06:27 < str1ngs> stdout has and EOF
06:27 < Ginto8> no it isn't
06:27 < Ginto8> oh it does?
06:27 < Ginto8> oh right when the process closes
06:27 < Ginto8> sorry
06:28 < str1ngs> no worries
06:28 < Ginto8> though it mighta been better to use like fmt.Fscan or w/e
cuz now you're gonna have to use fmt.Sscan anyway
06:29 < str1ngs> I can split on \n
06:29 < Ginto8> via fmt.Sscanln?
06:29 < str1ngs> or maybe there is a better way.  I'm use to stuff like
ReadLine
06:30 < Ginto8> check out fmt
06:30 < chressie> or use bytes.Split
06:30 < Ginto8> all of the above
06:30 < Ginto8> there are so many choices
06:30 < str1ngs> ya I guess thats why I've been asking .
06:31 < Ginto8> fmt.Fscan[f|ln] is probly your best choic
06:31 < Ginto8> choice*
06:34 < chressie> Ginto8: if you just need to split at a special character,
why not use {strings,bytes}.Split() function?
06:35 < Ginto8> hm I guess so but he'll still end up using fmt.Sscan[f|ln]
06:38 < str1ngs> I dont think so Ginto I just need to take stdout read
eachline and put into a something
06:38 < str1ngs> unless I'm misreading what Sscan does
06:39 < Ginto8> yeah but fmt.Sscanln has the annoying aspect of really only
treating newline as whitespace
06:39 < Ginto8> if it doesn't read all the stuff in from that line, the rest
of the line stays
06:39 < Ginto8> so you probably want to do bytes.Split then fmt.Sscan[f|ln]
06:40 < str1ngs> unless I can pass an array as the interface?  thats whats
confusing me
06:40 < str1ngs> or slice rather
06:40 < Ginto8> you can take a slice of the whole array and pass it
06:41 < str1ngs> I dont need to modify the file path just create an array or
slice of them
06:46 -!- tvw [~tv@212.79.9.150] has joined #go-nuts
06:52 -!- napsy [~luka@193.2.66.101] has joined #go-nuts
07:04 < str1ngs> chressie: ya thats much better.
http://codepad.org/ic76sGf6
07:04 < chressie> str1ngs: if you want to solve your problem "the go way"
you could do something like http://gist.github.com/476610
07:04 < str1ngs> I'm still not sure of something like the string conversion
and println
07:06 < chressie> str1ngs: yes, looks much better :) (but you must provide
"/usr/bin/find" as first argument in args as well)
07:07 < str1ngs> ya I'm still sure why that needs to be done.
07:07 < str1ngs> but backtracking . your go implemention is way better then
this.
07:08 < chressie> the path.Walk mechanism is more powerful and less pain
than using find :)
07:08 -!- Chinainvent [~chinainve@121.0.29.199] has joined #go-nuts
07:09 < str1ngs> holy smokes so ya all I have to do is provide VisitDir
VisitFile
07:09 < str1ngs> this really helps thank you
07:11 < chressie> pleasure :)
07:12 < str1ngs> on the bright side I did learn alot about forks
07:14 < exch> more useful than spoons
07:14 < str1ngs> v2 will have sporks so look out
07:14 < chressie> definitly...  and available in go ;)
07:15 < str1ngs> also should I putting my structs and attached functions
into a module?
07:15 < str1ngs> err package
07:15 < Ginto8> yes
07:15 < Ginto8> they have to be
07:15 < Ginto8> even main() has to be in a package
07:15 < Ginto8> (package main, specifically)
07:16 < str1ngs> I guess I can make something called utils.go for now and if
something gets larger move it to a real package
07:18 < exch> really no need to put it in separate packages, unless it's
going to be shared among multiple projects
07:19 < str1ngs> http://gist.github.com/476610 well for this V struct for
example
07:19 < str1ngs> I could have that in my main package but.  it would get
mess so do I make a package just for that?
07:20 < exch> a seperate go file to put it in should be enough
07:20 < exch> v.go perhaps?
07:20 < str1ngs> ah ok thanks
07:21 < exch> '$ 6g main.go v.go foo.go bar.go' <- easy enough to compile
multiple files into the same binary
07:21 < Ginto8> exch, also the awesome easy makefile system
07:21 < exch> or that
07:21 < Ginto8> especially helpful for when I'm using cgo
07:22 < str1ngs> no thats fine.  I'v been strugging with go desing concepts
this clears it up for me.
07:22 < str1ngs> design*
07:23 < exch> note that the v.go file should also have the 'package main'
header.  The code is in a separate file, but it's still part of the same program
after all
07:23 < str1ngs> ah ok
07:24 < str1ngs> I dont think I've had this much fun with a language in
awhile.
07:24 -!- belkiss [~belkiss@drn13-1-78-235-168-105.fbx.proxad.net] has quit [Quit:
KVIrc Equilibrium 4.1.0, revision: 4632, sources date: 20100519, built on:
2010-07-09 07:13:47 UTC http://www.kvirc.net/]
07:25 -!- djm [~djm@paludis/slacker/djm] has joined #go-nuts
07:26 -!- iant [~iant@62.20.124.50] has joined #go-nuts
07:26 -!- mode/#go-nuts [+v iant] by ChanServ
07:27 -!- path[l] [UPP@120.138.102.50] has quit [Quit: path[l]]
07:29 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has quit [Quit: Mac
has gone to sleep]
07:29 -!- Fish-Work [~Fish@86.65.182.207] has quit [Remote host closed the
connection]
07:29 -!- Fish-Work [~Fish@86.65.182.207] has joined #go-nuts
07:33 < exch> I'm curious why a the file descriptor for any file opened with
os.Open() is always 3
07:34 < napsy> it probaly increases on every Open()
07:34 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has joined #go-nuts
07:35 < exch> possibly
07:36 < napsy> it should
07:37 < Ginto8> exch, 0 1 and 2 are stdout, stdin, and stderr, not
necessarily in that order
07:37 < mpl> can anyone remind me what's roger peppe nick here please?
something starting with "w" I think?
07:37 < exch> durr, I was misreading my own code so got a tad confused
there.  Makes sense that it does.
07:37 < Ginto8> check the docs of package os if you wanna know which ones
they are
07:38 < exch> it's ok.  Figured it out now :)
07:38 < exch> Was looking at some old test code I made a while back.  it
passes an open file descriptor from one process to another.
07:39 < Ginto8> it doesn't just pass an os.File or an io.ReadWriter?
07:39 < exch> Don't think I actually got to the point of testing what I
really wanted to test though.  At the time I was wondering if it was possible to
share an open tcp connection with forked child processes
07:39 < exch> Nope, just the fd
07:39 < Ginto8> hm
07:40 < exch> if open tcp sockets are the same as files on linux, then it
should work
07:40 < exch> http://gist.github.com/476631
07:41 < exch> that basically opens a new file.  writes a count to it.  then
forks itself, passes the open file fd and closes..  the new instance does the
same..  rinse and repeat
07:41 < exch> incrementing the count on every cycle
07:41 < Ginto8> oh so it treats an open file descriptor as a pipe
07:41 < Ginto8> sorta
07:42 < exch> something like that, yea I suppose you could look at it that
way
07:42 < str1ngs> chressie: I was looking at the path.Walk code and if you
dont provide VistDir it wont walk directories
07:44 < exch> The solution is rather simple, but go couldnt do it with the
standard os.Open() call since it passes CLOEXEC to syscall.open().  This will
explicitely close and and all files opened by the current process when it is
killed.  The openForkSafe() function in that gist does what os.Open() does, except
without the CLOEXEC flag.
07:47 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed
the connection]
07:48 -!- akanton [5ae72cd0@gateway/web/freenode/ip.90.231.44.208] has joined
#go-nuts
07:49 -!- General13372 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has joined
#go-nuts
07:50 -!- path[l] [~path@59.162.86.164] has joined #go-nuts
07:50 -!- General1337 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has quit
[Ping timeout: 276 seconds]
07:52 -!- ikaros [~ikaros@drms-4d015b9e.pool.mediaWays.net] has joined #go-nuts
08:21 < chressie> str1ngs: no, you _need_ to provide VisitDir _and_
VisitFile, otherwise the struct will not satisfy the Visitor interface and you
would get a compile time error
08:22 < str1ngs> realy hmm I'll check it out
08:22 < str1ngs> if !v.VisitDir(path, f) I thought checked for that
08:22 < chressie> the traversing depends on the return value of VisitDir
08:23 < str1ngs> yep you are right
08:23 < chressie> this if statement does not check for existence, but for
return value
08:23 < str1ngs> but I think I need a os.Error channel because it doesnt
walk symlinks
08:25 < chressie> a symlink is not a directory so you probably need to
follow the symlink in the VisitFile code..  i'll look into it
08:26 < str1ngs> ah ok thats good then
08:26 < str1ngs> I can probably figure it out.  you have help more then
enough.
08:28 -!- lmoura_ [~lmoura@187.78.165.78] has joined #go-nuts
08:29 -!- smw [~smw@pool-71-183-88-124.nycmny.fios.verizon.net] has joined
#go-nuts
08:29 -!- photron [~photron@port-92-201-19-68.dynamic.qsc.de] has joined #go-nuts
08:31 -!- sauerbraten [~sauerbrat@p508CFA36.dip.t-dialin.net] has joined #go-nuts
08:33 -!- ExtraSpice [~ExtraSpic@88.118.32.225] has joined #go-nuts
08:33 -!- antileet [~anirudhs@59.96.64.228] has quit [Ping timeout: 240 seconds]
08:45 -!- antileet [~anirudhs@59.96.33.27] has joined #go-nuts
08:53 -!- General13372 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has quit
[Ping timeout: 258 seconds]
08:57 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has joined
#go-nuts
08:59 -!- Wiz126 [~Wiz126@24.229.245.72.res-cmts.sm.ptd.net] has quit [Ping
timeout: 248 seconds]
09:00 -!- General1337 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has joined
#go-nuts
09:02 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
09:05 -!- Wiz126 [~Wiz126@24.229.245.72.res-cmts.sm.ptd.net] has joined #go-nuts
09:08 -!- mat_ [~mat@mx3.absolight.net] has quit [Ping timeout: 248 seconds]
09:14 -!- Netsplit *.net <-> *.split quits: djm, araujo, nictuku, acetoline,
ExtraSpice, Eko, General1337, XenoPhoenix, Soultaker, Rennex_, (+22 more, use
/NETSPLIT to show all of them)
09:14 -!- Netsplit *.net <-> *.split quits: scm, drhodes, DJCapelis,
bechmoul, tvw, vrtical, zeroXten, atsampson, ampleyfly, plexdev, (+45 more, use
/NETSPLIT to show all of them)
09:15 -!- Netsplit *.net <-> *.split quits: SecretAgent, jA_cOp, Boney, aho,
maht, akanton, temoto, Zoopee, Arimoto, cw, (+44 more, use /NETSPLIT to show all
of them)
09:15 -!- Netsplit over, joins: ExtraSpice, SRabbelier, shawn_, tsung, Fish-Work,
maht, soul9, mpl, Zoopee, __20h__ (+131 more)
09:16 -!- mat_ [~mat@mx3.absolight.net] has joined #go-nuts
09:20 < exch> I should write some Go bindings for DirectFB.  This project is
turning out to be most interesting
09:21 -!- Tiger [~chatzilla@118.126.12.53] has quit [Ping timeout: 260 seconds]
09:22 -!- akanton [5ae72cd0@gateway/web/freenode/ip.90.231.44.208] has quit [Quit:
Page closed]
09:27 -!- lmoura_ [~lmoura@187.78.165.78] has quit [Ping timeout: 245 seconds]
09:32 -!- dju [dju@fsf/member/dju] has quit [Ping timeout: 265 seconds]
09:33 -!- antileet [~anirudhs@59.96.33.27] has quit [Ping timeout: 240 seconds]
09:35 -!- dju [dju@fsf/member/dju] has joined #go-nuts
09:35 -!- dju [dju@fsf/member/dju] has quit [Read error: Connection reset by peer]
09:36 -!- dju [dju@fsf/member/dju] has joined #go-nuts
09:37 -!- dju [dju@fsf/member/dju] has quit [Read error: Connection reset by peer]
09:37 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.2]
09:38 -!- dju [dju@fsf/member/dju] has joined #go-nuts
09:43 < str1ngs> chressie: path.Walk uses Lstat which imo is good or it
would have to do alot of checking for recursion
09:44 < str1ngs> but I guess I could test for a symlink VisitFile but not
sure how to test for file and symlink.  and they call path.walk using that as the
root?
09:44 < str1ngs> err directory and symlink
09:46 -!- Wi11 [~william@dhcp-0-14-bf-38-80-9c.cpe.powergate.ca] has quit [Ping
timeout: 260 seconds]
09:47 -!- antileet [~anirudhs@59.92.199.191] has joined #go-nuts
09:49 -!- dju [dju@fsf/member/dju] has quit [Ping timeout: 260 seconds]
09:53 -!- Wi11 [~william@dhcp-0-14-bf-38-80-9c.cpe.powergate.ca] has joined
#go-nuts
09:56 < chressie> str1ngs: yeah something like that..  i'll try it later as
well, because i'm interested in that issue too ;)
10:02 < str1ngs> I think I almost have it
10:04 < str1ngs> puesdo . if file is symlink and Stat file does not error or
possibly contains more the 1 entry.  and file is not followsymlink path.walk file
10:05 < str1ngs> hopefully that made sense
10:07 -!- Wi11 [~william@dhcp-0-14-bf-38-80-9c.cpe.powergate.ca] has quit [Ping
timeout: 246 seconds]
10:07 -!- abiosoft [~abiosoft@2002:299b:10f6:d:219:7eff:fe8f:1f59] has joined
#go-nuts
10:08 -!- General1337 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has quit
[Ping timeout: 240 seconds]
10:08 -!- General13372 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has joined
#go-nuts
10:14 -!- Wi11 [~william@dhcp-0-14-bf-38-80-9c.cpe.powergate.ca] has joined
#go-nuts
10:15 -!- boscop [~boscop@g225201127.adsl.alicedsl.de] has joined #go-nuts
10:19 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has joined #go-nuts
10:28 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has quit [Read
error: Connection reset by peer]
10:29 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has joined
#go-nuts
10:41 -!- antileet [~anirudhs@59.92.199.191] has quit [Ping timeout: 260 seconds]
10:44 -!- MizardX [~MizardX@unaffiliated/mizardx] has joined #go-nuts
10:53 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts
10:54 -!- General1337 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has joined
#go-nuts
10:55 -!- napsy [~luka@193.2.66.101] has quit [Ping timeout: 240 seconds]
10:56 -!- General13372 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has quit
[Ping timeout: 240 seconds]
11:05 -!- jA_cOp [~yakobu@unaffiliated/ja-cop/x-9478493] has quit [Quit: Leaving]
11:07 -!- belkiss [~belkiss@drn13-1-78-235-168-105.fbx.proxad.net] has joined
#go-nuts
11:12 -!- abiosoft [~abiosoft@2002:299b:10f6:d:219:7eff:fe8f:1f59] has quit [Ping
timeout: 252 seconds]
11:14 -!- Meidor [~quassel@piggy.cs.ru.nl] has joined #go-nuts
11:18 < str1ngs> chressie: got it http://gist.github.com/476831
11:23 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
11:27 < str1ngs> but imo path.Walk should us os.Stat vs os.LStat and test
for f.FollowedSymlink in path.walk.  however this might very well be the intention
because avoids the possibility for recursion.  and forces symlink handling to be
done in VisitFile
11:31 -!- abiosoft [~abiosoft@2002:299b:10f6:d:219:7eff:fe8f:1f59] has joined
#go-nuts
11:34 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
11:37 -!- artefon [~thiagon@150.164.2.20] has joined #go-nuts
11:41 -!- path[l] [~path@59.162.86.164] has quit [Quit: path[l]]
11:42 -!- path[l] [~path@59.162.86.164] has joined #go-nuts
11:54 -!- Fish-Work [~Fish@86.65.182.207] has quit [Read error: Connection reset
by peer]
11:54 -!- Fish-Work [~Fish@86.65.182.207] has joined #go-nuts
11:55 -!- Shyde [~Shyde^^@HSI-KBW-078-043-070-132.hsi4.kabel-badenwuerttemberg.de]
has joined #go-nuts
12:00 -!- belkiss [~belkiss@drn13-1-78-235-168-105.fbx.proxad.net] has quit [Quit:
KVIrc Equilibrium 4.1.0, revision: 4632, sources date: 20100519, built on:
2010-07-09 07:13:47 UTC http://www.kvirc.net/]
12:03 -!- alehorst [~alehorst@187.58.237.20] has joined #go-nuts
12:03 < sauerbraten> does someone have an example how to send a normal HTTP
request, for example getting www.google.com?
12:05 < jnwhiteh> http://paste2.org/p/915582
12:06 < jnwhiteh> taken out of context, but that's one way =)
12:07 < sauerbraten> w00t, that simple?  :) that's quite nice, thank you...
i was reading the pkg http abot Conn types and Requests types and got confused :/
12:12 < jnwhiteh> nope, that's all you need (for right now)
12:13 < jnwhiteh> the http package is going to be re-done, it may be
slightly diff then.
12:13 < jnwhiteh> who knows )
12:14 -!- path[l] [~path@59.162.86.164] has quit [Quit: path[l]]
12:15 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
12:16 -!- path[l] [~path@59.162.86.164] has joined #go-nuts
12:17 < sauerbraten> someone here has experience with json?
12:20 < MizardX> sauerbraten: Not exactly json, but has a similar interface:
http://research.swtch.com/2009/12/data-structures-go-programs.html
12:24 < sauerbraten> what's the difference between json.Decode() and
json.Unmarshal?
12:30 -!- niemeyer [~niemeyer@201-11-213-235.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
12:31 < MizardX> It seems Decode to work on io.Reader, while Unmarshal works
on []byte
12:31 < MizardX> It seems Decode works on io.Reader, while Unmarshal works
on []byte
12:33 < sauerbraten> ok and what about that interface?  how do i make one
that fits to the json file i get?
12:33 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has joined
#go-nuts
12:36 -!- GeoBSD [~geobsd@lns-bzn-54-82-251-110-43.adsl.proxad.net] has joined
#go-nuts
12:37 -!- artefon [~thiagon@150.164.2.20] has quit [Ping timeout: 264 seconds]
12:37 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
12:40 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Quit: WeeChat
0.3.2]
12:47 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
12:47 < chressie> str1ngs: using Lstat ist definitly the reason to avoid
recursion
12:47 -!- dju [dju@fsf/member/dju] has joined #go-nuts
12:47 < chressie> unfortunately your version is affected by recursion as
well
12:49 -!- mbarkhau [~koloss@dslb-088-068-251-010.pools.arcor-ip.net] has joined
#go-nuts
12:50 -!- GeoBSD [~geobsd@lns-bzn-54-82-251-110-43.adsl.proxad.net] has quit [Ping
timeout: 264 seconds]
12:50 -!- GeoBSD [~geobsd@lns-bzn-21-82-64-67-122.adsl.proxad.net] has joined
#go-nuts
12:50 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has joined
#go-nuts
12:52 -!- dju [dju@fsf/member/dju] has quit [Read error: Connection reset by peer]
12:52 -!- dju [dju@fsf/member/dju] has joined #go-nuts
12:56 < str1ngs> yes I noticed that too
12:57 < str1ngs> luckly I dont have have recursive links but..  still
something I cant avoid unless I have access to the file pointers
12:59 -!- gid [~gid@220.253-225-62.VIC.netspace.net.au] has joined #go-nuts
13:00 -!- mlip [~mlip@62.218.44.194] has joined #go-nuts
13:00 -!- mlip [~mlip@62.218.44.194] has left #go-nuts []
13:01 < str1ngs> but imo f.IsDirectory() with os.Lstat makes this package
incomplete.  since you pretty much have to write your own walk to work with
symlinks
13:01 -!- Chinainvent [~chinainve@121.0.29.199] has quit [Quit: Leaving]
13:06 -!- dju [dju@fsf/member/dju] has quit [Read error: Connection reset by peer]
13:07 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
13:29 -!- abiosoft [~abiosoft@2002:299b:10f6:d:219:7eff:fe8f:1f59] has quit [Ping
timeout: 260 seconds]
13:32 < chressie> i've updated http://gist.github.com/476610 to a version
that (correctly?) traverses a file hierarchy and skips cycles (just a dirty hack,
can probably be implemented more efficient)
13:34 -!- Linnk [~Linnk@ip-56-115.bnaa.dk] has joined #go-nuts
13:35 < str1ngs> ya my take is that it should be included in path.Walk.
since calling path.Wal inside VisitFile seems odd
13:36 -!- aho [~nya@fuld-4d00d22e.pool.mediaWays.net] has quit [Ping timeout: 245
seconds]
13:36 -!- aho [~nya@fuld-4d00d2ef.pool.mediaWays.net] has joined #go-nuts
13:38 < chressie> yep i understand your concerns
13:38 -!- artefon [~thiago@dhcp46.usuarios.dcc.ufmg.br] has joined #go-nuts
13:40 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.2]
13:40 -!- kw- [~aevirex@d86-32-213-87.cust.tele2.at] has joined #go-nuts
13:41 < str1ngs> which is fine.  but if I read the new gist right.  it uses
os.Stat to get the real dir file pointer.  and VistDir flags visited to avoid
recursion?
13:41 < chressie> exactly
13:42 < str1ngs> nice I didnt think about adding that to struct
13:43 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
13:43 -!- alehorst [~alehorst@187.58.237.20] has quit [Ping timeout: 248 seconds]
13:43 < str1ngs> this has come along from my find implimentation hehe
13:44 < chressie> :)
13:48 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has joined
#go-nuts
13:53 -!- acetoline [~alireza@125-237-190-240.jetstream.xtra.co.nz] has quit
[Quit: Lost terminal]
13:53 < sauerbraten> how do i use json.Unmarshal() correctly?  what's meant
with v interface{} in http://golang.org/pkg/json/#Unmarshal
13:55 -!- ako [~nya@fuld-4d00d38e.pool.mediaWays.net] has joined #go-nuts
13:56 -!- aho [~nya@fuld-4d00d2ef.pool.mediaWays.net] has quit [Ping timeout: 245
seconds]
13:56 < str1ngs> off hand you need to impliment anyone of the Json types to
the v interface
13:57 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has quit [Remote
host closed the connection]
13:57 < sauerbraten> sr1ngs: the problem is, i don't know how to...
13:59 < chressie> sauerbraten: for example, if the json data is a dict (in
json { "blah": 123 }) you can use a map[string]int
14:01 -!- alehorst [~alehorst@189.114.190.166] has joined #go-nuts
14:01 < chressie> in general: afaik the unmarshal process tries to match the
json data to the provided data structure (e.g.  a map, slice, struct) and for
structs it tries to match the struct field names with the json data..
14:01 < sauerbraten> chressie: yes i know, (btw: in json that's called an
object, not dict...) but i'm not used to interfaces and only know that you an
write "type ABC interface { method1(bool) int; method2(int) string} and o on
14:02 < sauerbraten> ok let me try it out..
14:03 < sauerbraten> or wait...  can interfaces also include values, not
only methods?
14:03 < chressie> the empty interface is just a place holder, the
unmarshalling uses reflect to figure out what kind of object was provided
14:03 < sauerbraten> ahhh ok...  that makes sense
14:04 < str1ngs> in sort stuff anything that is json in there :P
14:04 < str1ngs> short*
14:09 -!- plainhao [~plainhao@mail.xbiotica.com] has joined #go-nuts
14:20 -!- dju_ [dju@fsf/member/dju] has quit [Read error: Connection reset by
peer]
14:21 < sauerbraten> :( could someone paste a code example that uses
json.Unmarshal() ? i don't get in working
14:21 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
14:21 < bortzmeyer> sauerbraten: gotweet uses it, see their code
14:22 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has quit [Read
error: No route to host]
14:22 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has joined
#go-nuts
14:23 < str1ngs> chressie: this new gist is working great.  os.Stat(p); err
== nil && g.IsDirectory() is what I was struggling to find
14:23 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has joined
#go-nuts
14:23 < str1ngs> and no recursion I might add.
14:27 < chressie> str1ngs: nice, i tested the code with only one test case
;)
14:27 -!- wrtp [~rog@92.17.4.40] has joined #go-nuts
14:27 < wrtp> mpl: ping
14:27 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
14:29 < str1ngs> chressie: I'm still wrapping my head around the need for
path.Split.  os.Readlink I get.
14:33 -!- tvw [~tv@212.79.9.150] has quit [Remote host closed the connection]
14:35 -!- visof [~visof@unaffiliated/visof] has quit [Quit: Leaving]
14:35 < str1ngs> ah path.Join uses Clean
14:35 < sauerbraten> may i make maps in wich the type of value differs?
e.g.  { "name":"john", "age":25 }
14:36 <+iant> sauerbraten: you can make map whose values are empty
interfaces; other than that, no
14:36 < mpl> wrtp: ah hello, thanks.  can you give me a few mins or are you
in a hurry?
14:37 < sauerbraten> iant: ok how do i create these?  map1 :=
make(map[string] interface{}) ?
14:37 <+iant> yes
14:37 < chressie> str1ngs: p still points to the name of the symbolic link.
split removes the symbolic link from path and join adds the result of Readlink to
the path
14:37 < str1ngs> chressie: which results in an absolute path.
14:38 < sauerbraten> iant: i get this error code when compiling with 8g:
json_test.go:24: invalid operation: ((node ADDSTR)) + v (type string + interface {
})
14:38 < chressie> str1ngs: it depends on the root parameter of Walk
14:39 <+iant> sauerbraten: I don't see that, what does line 24 look like
14:40 < sauerbraten> iant: omg sorry that's something totally different
>.< argh...  this error comes from: for i, v := range json_output {
14:40 < sauerbraten> print(i + " -> " + v)
14:40 < sauerbraten> } line 24 is te
14:40 < sauerbraten> line 24 is the print thing
14:40 <+iant> well, v is not a string
14:40 < sauerbraten> yes
14:41 < sauerbraten> i got that now, too :D
14:41 < str1ngs> chressie: yes that makes sense.  I was worried about use
the actuall link path but Clean takes care of it.
14:44 -!- ender2070 [~ender2070@bas22-toronto12-2925103372.dsl.bell.ca] has joined
#go-nuts
14:47 < chressie> alright good night, i'm off for today (CET) :)
14:48 -!- artefon [~thiago@dhcp46.usuarios.dcc.ufmg.br] has quit [Quit: bye]
14:49 -!- g0bl1n [~pr0kter@a213-22-76-1.cpe.netcabo.pt] has joined #go-nuts
14:50 < str1ngs> night thanks for the help chressie
14:51 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has joined
#go-nuts
14:54 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has joined #go-nuts
14:55 -!- ikaros [~ikaros@drms-4d015b9e.pool.mediaWays.net] has quit [Quit: Leave
the magic to Houdini]
14:57 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
15:02 -!- wrtp [~rog@92.17.4.40] has quit [Ping timeout: 260 seconds]
15:02 -!- wrtp [~rog@92.17.8.68] has joined #go-nuts
15:02 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has quit [Remote
host closed the connection]
15:06 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has joined
#go-nuts
15:08 -!- visof [~visof@unaffiliated/visof] has joined #go-nuts
15:09 -!- awidegreen [~quassel@62.176.237.78] has joined #go-nuts
15:09 -!- Venom_X [~pjacobs@71.21.124.111] has joined #go-nuts
15:09 -!- Netsplit over, joins: cw
15:09 -!- Netsplit *.net <-> *.split quits: jnwhiteh, SecretAgent, impl,
roto, MadMethod
15:09 -!- Netsplit over, joins: SecretAgent
15:09 -!- impl [impl@224-74.ip4.durham0.network.cynigram.com] has joined #go-nuts
15:09 -!- impl [impl@224-74.ip4.durham0.network.cynigram.com] has quit [Changing
host]
15:09 -!- impl [impl@atheme/member/impl] has joined #go-nuts
15:10 -!- Method [~Method@unaffiliated/method] has joined #go-nuts
15:10 -!- Netsplit over, joins: jnwhiteh
15:23 -!- roto [~roto@64.79.202.154] has joined #go-nuts
15:24 -!- skelterjohn [~jasmuth@c-76-116-181-134.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
15:29 -!- ayo [~nya@fuld-4d00d7fb.pool.mediaWays.net] has joined #go-nuts
15:32 -!- ako [~nya@fuld-4d00d38e.pool.mediaWays.net] has quit [Ping timeout: 240
seconds]
15:33 -!- iant [~iant@62.20.124.50] has quit [Ping timeout: 248 seconds]
15:36 -!- ukai [~ukai@220.109.219.244] has quit [Ping timeout: 265 seconds]
15:38 -!- gid1 [~gid@220.253-225-62.VIC.netspace.net.au] has joined #go-nuts
15:38 < sauerbraten> is this valid code: make([]map[string]interface{}) to
create a slice of maps?
15:38 < jessta> sauerbraten: it will create the slice, but not the maps
15:39 < exch> you'll have to loop through each element of the slice and
create the map manually
15:40 < sauerbraten> i have a json file, consisting of an array of json
objects...  json arrays get unmarshalled to slices and objects to maps
15:40 < sauerbraten> exch: what if i don't know how long the slice is?
15:40 < exch> len(myslice) ?
15:41 < sauerbraten> mhm ok there would be a possibility....  no other
better way to do that?
15:41 < exch> Not as far as I know.
15:41 < sauerbraten> exch: i first create the slice, then fill it so i don't
know how long
15:41 < jessta> sauerbraten: you also need to specify the size of the slice
you're making
15:41 < sauerbraten> jessta: argh
15:41 < exch> sauerbraten: you have to know how long it is when you create
it
15:42 < sauerbraten> ok then i think i know how i'll do it
15:42 < exch> just creating an empty slice with no length parameter is a
slice of size 0
15:42 < jessta> eg.  make([]map[string]interface{},10)
15:42 < jessta> sauerbraten: if you don't know the size then use a vector
15:42 < sauerbraten> what is a vector?
15:42 < jessta> import container/vector
15:43 < exch> it allows dynamic resizing.  It resizes itself as you insert
new items
15:43 < exch> basically a slice that does the resizing for you internally
15:44 -!- carllerche [~carllerch@208.87.61.203] has joined #go-nuts
15:44 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has quit [Quit: Leaving.]
15:44 < sauerbraten> that's nice, but json.Unmarshal() needs a slice to put
output in
15:45 < sauerbraten> but i now know how i can make it work
15:45 < exch> pass it an empty slice
15:45 < exch> it will do the resizing as it filles it for you
15:46 < exch> when it's done, the slice will contain as many items as their
are json data elements
15:47 -!- ayo [~nya@fuld-4d00d7fb.pool.mediaWays.net] has quit [Quit:
EXEC_over.METHOD_SUBLIMATION]
15:51 < sauerbraten> exch: wait...  if i do "make([]map[string]interface{})"
it creates a slice of maps, and Unmarshal creates the maps itself?  or do i have
to create them manually before?
15:52 < exch> Now there's a surprising turn of events:
http://www.nzcs.org.nz/news/blog.php?/archives/97-.html
15:53 < exch> sauerbraten: you don't even have to do the make() bit if all
you do is pass it to json.Unmarshal().  Just do: var myslice
[]map[string]interface{}; json.Unmarshal(data, &myslice);
15:53 < exch> Unmarshal() will take care of all the
initialization/resizing/filling, etc
15:53 < sauerbraten> exch: oh that's even cooler :D
15:53 < sauerbraten> exch: thanks a lot
15:53 < exch> np
16:10 -!- carllerche [~carllerch@208.87.61.203] has quit [Quit: carllerche]
16:21 -!- gid [~gid@220.253-225-62.VIC.netspace.net.au] has quit [Disconnected by
services]
16:22 -!- gid1 [~gid@220.253-225-62.VIC.netspace.net.au] has joined #go-nuts
16:29 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
16:29 < sauerbraten> how do i convert string to int?
16:30 < MaybeSo> strconv.Atoi()
16:31 < sauerbraten> thanks
16:31 < wrtp> fmt.Scan(&i) :-)
16:33 < sauerbraten> wrtp: what does that do?  convert string to int??
16:34 < wrtp> sauerbraten: yes, if i is an int
16:34 < sauerbraten> woha...
16:34 < sauerbraten> nice hack :D
16:34 < Ginto8> wrtp, fmt.Sscan
16:35 < Ginto8> not fmt.Scan
16:35 < wrtp> oops
16:35 < wrtp> yes
16:35 < MaybeSo> sauerbraten: it's like scanf
16:35 < Ginto8> unless it's just from stdin
16:35 < MaybeSo> (in C)
16:35 < sauerbraten> i read the doc about Scan and thought WTF?
16:35 < sauerbraten> :D
16:35 < wrtp> it's probably slower than strconv.Atoi, but you probably won't
notice
16:35 < Ginto8> ^ yeah
16:35 < sauerbraten> i think strconv.Atoi is cleaner, right?
16:36 < Ginto8> probably
16:36 < MaybeSo> I'd think using strconv would be clearer to future readers
of the code
16:36 < Ginto8> because it returns the ing
16:36 < Ginto8> int*
16:36 < sauerbraten> yeah
16:38 < wrtp> true (which is why i put in the smiley) but Sscan is nicely
general - you don't have to remember a different function name for each type that
you want to convert...
16:39 < sauerbraten> why does "for range v {" not work, as well as "for _, _
:= range v {" ?
16:39 < sauerbraten> while v is a map
16:39 < Ginto8> why would you want that?
16:39 < Ginto8> what's the point?
16:39 < Ginto8> for i:=0;i<len(v);i++ {}
16:39 < sauerbraten> because i don't need key and value
16:39 < MaybeSo> sauerbraten: do you want: for key, val := range v { } ?
16:40 < Ginto8> sauerbraten, why not?
16:40 < MaybeSo> sorry, what were you trying to do?
16:40 < sauerbraten> Ginto8: i just don't need them, because i know what the
keys are and access them with v["Name"]
16:40 < MaybeSo> it's kind of silly to use _, _ in a range, but if you
wanted to I suspect this would work: for _, _ = range v { } ( so =, not :=)
16:40 < sauerbraten> but Ginto8's solution looks good
16:41 < sauerbraten> MaybeSo: right...  i'll use the range thing
16:41 < sauerbraten> thanks anyway Ginto8
16:43 -!- carllerche [~carllerch@208.87.61.203] has joined #go-nuts
16:43 -!- g0bl1n [~pr0kter@a213-22-76-1.cpe.netcabo.pt] has quit [Ping timeout:
240 seconds]
16:51 < plexdev> http://is.gd/dtalL by [Russ Cox] in go/src/ -- cgo: use new
command line syntax: -- separates cgo flags from gcc flags
16:57 < sauerbraten> i use http.Get to request a webpage...  but since the
url i request does not return a HTML file it fails with: malformed HTTP status
code "HTML"
16:57 < sauerbraten> how to fix that?
16:59 -!- MadMethod [~Method@unaffiliated/method] has joined #go-nuts
17:00 < wrtp> it should work fine on non-HTML files
17:01 < sauerbraten> i'll paste the code i use...  one second
17:01 < wrtp> looks like maybe the server is broken - it doesn't seem to be
returning a correct HTML status
17:01 < wrtp> what's the URL?
17:03 -!- Method [~Method@unaffiliated/method] has quit [Ping timeout: 265
seconds]
17:03 < sauerbraten> for example:
http://tinysong.com/b/a.b-c_d+e?format=json&limit=0
17:03 < sauerbraten> the one my prog fails at is:
http://tinysong.com/s/bob+airplanes
17:03 < sauerbraten> ?format=json&limit=3
17:04 < sauerbraten> oops without newline of course..
http://tinysong.com/s/bob+airplanes?format=json&limit=3
17:05 -!- Ginto8 [~ginto8@pool-72-82-235-34.cmdnnj.fios.verizon.net] has quit
[Ping timeout: 240 seconds]
17:06 -!- dju_ [dju@fsf/member/dju] has quit [Read error: Connection reset by
peer]
17:07 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
17:07 < Linnk> Hey, just started learning Go. I'm looking for a better way
to write the recursive definition of Fibonacci with the "big" module.  Right now
I've got this working, but it's not very pretty...  http://pastebin.com/yQVz0tZL
17:10 < MaybeSo> Linnk: awhile ago this thread was posted on golang-nuts:
http://groups.google.com/group/golang-nuts/browse_thread/thread/dd9a661a638fb27d
17:13 < Linnk> MaybeSo: That doesn't use "big" or recursivity, but I'm sure
it's a nice example of channels and stuff :)
17:13 < MaybeSo> yes, that was why I was pointing it out
17:13 < MaybeSo> I tried a little bit of highly recursive code in go awhile
ago and was not impressed with its speed
17:13 < MaybeSo> it is, however, very good at message passing.
17:14 < Linnk> I'm not really concerned with speed atm, I'm just trying to
write a prettier recursive Fibonacci with the big module
17:14 < MaybeSo> *nod*
17:15 -!- visof [~visof@unaffiliated/visof] has quit [Quit: Leaving]
17:15 < Linnk> I'm aware it sounds crazy, but my problem is mainly with the
big api, which seems to make even simple things very difficult - unless there's
something I don't know :)
17:18 < temoto> Linnk, "big api" sounds like it's not supposed to be simple
:)
17:18 < jessta> if you're using 'big' then you're unlikely to be doing
something simple
17:18 < MaybeSo> I've not used it, but using similar things in Java I
usually found those packages tend to add a lot of clutter
17:18 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:60d5:e557:ddd2:f3f4] has joined
#go-nuts
17:24 -!- dju_ [dju@fsf/member/dju] has quit [Ping timeout: 276 seconds]
17:25 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
17:27 -!- Agon-laptop
[~marcel@HSI-KBW-095-208-003-128.hsi5.kabel-badenwuerttemberg.de] has quit [Remote
host closed the connection]
17:28 < MaybeSo> Perhaps declaring some repeated variables can help reduce
clutter: http://pastebin.com/EdjSKu68
17:30 -!- Ginto8 [~ginto8@pool-72-82-235-34.cmdnnj.fios.verizon.net] has joined
#go-nuts
17:31 -!- gregorstocks [~gregors@nat/google/x-vnpgzbacxmmtfdab] has quit []
17:32 -!- dju__ [dju@fsf/member/dju] has joined #go-nuts
17:32 -!- dju_ [dju@fsf/member/dju] has quit [Ping timeout: 252 seconds]
17:33 -!- crashR [~crasher@codextreme.pck.nerim.net] has quit [Ping timeout: 264
seconds]
17:34 -!- ShadowIce [pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
17:34 -!- dju_ [dju@fsf/member/dju] has joined #go-nuts
17:34 -!- dju__ [dju@fsf/member/dju] has quit [Read error: Connection reset by
peer]
17:41 -!- path[l] [~path@59.162.86.164] has quit [Quit: path[l]]
17:45 < sauerbraten> how to delete whitespace like \t or \n from strings?
17:45 < Ginto8> well if it's at the end
17:45 < Ginto8> str = str[0:len(str)-1]
17:45 < wrtp> strings.TrimRight() i think
17:46 < sauerbraten> wrtp: you are right, thanks
17:48 < wrtp> if you want to delete all whitespace you could do.
strings.Map(func(c int) int {if c == '\t' || c == '\n' {return c}; return -1}, s)
17:48 < wrtp> oops that's the wrong way around!@
17:48 < sauerbraten> wrtp: strings.TrimWhite() is even better :D
17:48 < sauerbraten> *TrimSpace()
17:48 < wrtp> strings.Map(func(c int) int {if c == '\t' || c == '\n' {return
-1}; return c}, s)
17:48 < ampleyfly> fields might be helpful
17:48 < ampleyfly> and join
17:49 < wrtp> in general: read through the strings package :-)
17:49 < sauerbraten> wrtp: i just am :D
17:54 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has joined #go-nuts
18:01 < Linnk> temoto & jessta: Calculating the Fibonacci sequence is pretty
simple, but yeah, I get your point :)
18:02 < Linnk> MaybeSo: Thought about that too, it kinda helps, I guess it
won't get any prettier than that
18:02 -!- path[l] [~path@122.182.0.38] has joined #go-nuts
18:02 < sauerbraten> silly question, but how do i execute go programs on
windows?  the compiled and linked machine code?  do i have to have go installed?
18:05 < KirkMcDonald> sauerbraten: You should have an .exe, I would think.
18:05 < KirkMcDonald> And it shouldn't have any particular dependencies.
18:06 < sauerbraten> KirkMcDonald: where do i get that .exe from?  :D
18:06 < KirkMcDonald> sauerbraten: The linker.
18:06 < sauerbraten> KirkMcDonald: and how?  :/
18:06 < KirkMcDonald> Just like on Linux, I would think.
18:06 < KirkMcDonald> I have not used Go on Windows.
18:07 -!- path[l] [~path@122.182.0.38] has quit [Ping timeout: 245 seconds]
18:07 < KirkMcDonald> Except where Linux gives a binary without an
extension, you'd want a binary with .exe on Windows.
18:08 < KirkMcDonald> And, of course, the binary is an ELF binary on Linux,
and a PE on Windows.
18:09 < KirkMcDonald> So hopefully the linker knows that.
18:09 -!- Project_2501 [~Marvin@82.84.92.36] has joined #go-nuts
18:09 < Linnk> MaybeSo: Hmm, did you try running the code on the pastebin?
It seems to give the wrong results
18:10 -!- rutkowski [~adrian@078088207115.walbrzych.vectranet.pl] has joined
#go-nuts
18:10 < MaybeSo> I certainly might have made a mistake, I ran yours and mine
w/ the input value and got the same output value and didn't really check beyond
that
18:13 < sauerbraten> KirkMcDonald: it seems not to be possible to compile Go
code for windows :(
18:13 < KirkMcDonald> Really?  I thought someone was working on that.
18:17 < MaybeSo> sauerbraten: I know it's possible for me to compile a Linux
executable on my Mac OS X box (once I've built and copied over the approporaite
$GOROOT/pkg/$os_$hardware/ directory to my mac)
18:18 < MaybeSo> there's a thread from just two weeks ago which make it
sounds as though the windows support is a work in progress:
http://groups.google.com/group/golang-nuts/browse_thread/thread/bad332db9df4194a/dab939bd6f77127f?lnk=gst&q=windows#dab939bd6f77127f
18:23 -!- path[l] [UPP@120.138.102.50] has joined #go-nuts
18:29 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has quit [Ping timeout: 240
seconds]
18:33 -!- tvw [~tv@e176001143.adsl.alicedsl.de] has joined #go-nuts
18:37 -!- snearch [~snearch@f053002225.adsl.alicedsl.de] has joined #go-nuts
18:39 < Ginto8> KirkMcDonald, the mingw port is incomplete
18:40 < Ginto8> I think they still have a bit of syscall and os to port
18:40 < KirkMcDonald> Ginto8: But the linker knows how to make PE binaries?
18:40 < Ginto8> I think so
18:40 < Ginto8> I'm not sure, haven't followed it much
18:41 < Ginto8> there's a page on the go wiki linked to on the main golang
web site
18:51 -!- bmizerany [~bmizerany@dsl081-064-072.sfo1.dsl.speakeasy.net] has joined
#go-nuts
18:52 -!- napsy [~luka@212.235.174.112] has joined #go-nuts
18:57 -!- Eridius [~kevin@unaffiliated/eridius] has joined #go-nuts
19:06 -!- snearch [~snearch@f053002225.adsl.alicedsl.de] has quit [Quit:
Verlassend]
19:11 -!- plainhao [~plainhao@mail.xbiotica.com] has quit [Quit: plainhao]
19:17 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has joined #go-nuts
19:19 -!- ender2070 [~ender2070@bas22-toronto12-2925103372.dsl.bell.ca] has quit
[Remote host closed the connection]
19:25 -!- ShadowIce` [pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
19:28 -!- rv2733 [~rv2733@c-98-242-168-49.hsd1.fl.comcast.net] has joined #go-nuts
19:29 -!- ShadowIce [pyoro@unaffiliated/shadowice-x841044] has quit [Ping timeout:
240 seconds]
19:33 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has quit [Ping timeout: 240
seconds]
19:34 -!- rlab [~Miranda@91.200.158.34] has quit [Read error: Connection reset by
peer]
19:36 -!- bmizerany [~bmizerany@dsl081-064-072.sfo1.dsl.speakeasy.net] has quit
[Read error: Operation timed out]
19:37 -!- Paradox924X [~Paradox92@178.119.188.72.cfl.res.rr.com] has joined
#go-nuts
19:39 -!- bmizerany [~bmizerany@dsl081-064-072.sfo1.dsl.speakeasy.net] has joined
#go-nuts
19:39 < plexdev> http://is.gd/dtldM by [Ian Lance Taylor] in
go/src/pkg/runtime/ -- Clarify that a new goroutine is not started for each
finalizer.
19:42 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has quit [Quit: Leaving]
19:43 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has joined #go-nuts
19:44 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has quit [Remote host closed
the connection]
19:44 -!- Dr_Who [~tgall@gentoo/developer/dr-who] has joined #go-nuts
19:46 -!- jchico [~jchico@cpe-98-14-12-209.nyc.res.rr.com] has joined #go-nuts
20:03 -!- rinzai [~rinzai@81.129.148.230] has joined #go-nuts
20:03 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has quit [Quit:
hcatlin]
20:07 -!- gid [~gid@220.253-225-62.VIC.netspace.net.au] has quit [Quit: Leaving.]
20:08 -!- MizardX [~MizardX@unaffiliated/mizardx] has quit [Quit: reboot]
20:08 < sauerbraten> if i want to be able to execute my program like "myprog
action param1 param2" should i use flags and just get all non flags?
20:09 < skelterjohn> does it always have exactly three arguments, in that
order?
20:10 < skelterjohn> if so, just inspect os.Args
20:10 < skelterjohn> otherwise using flags or
http://code.google.com/p/optparse-go
20:11 < sauerbraten> skelterjohn: it always has one action and then one or
two parameters
20:11 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has joined #go-nuts
20:11 < sauerbraten> i found a good source of info, gotwet uses the same
style
20:11 < skelterjohn> then it will probably be easiest to use os.Args
20:11 < sauerbraten> *gotweet
20:12 < sauerbraten> ok i'll have a look at os.Args
20:12 < skelterjohn> it's just a slice of the command line arguments
20:16 -!- Dr_Who [~tgall@gentoo/developer/dr-who] has quit [Quit: Leaving]
20:16 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has joined #go-nuts
20:16 -!- MizardX [~MizardX@unaffiliated/mizardx] has joined #go-nuts
20:18 < vrtical> sauerbraten: don't feel bad, I had no idea os.Args existed
either until someone here told me.  *every* example program that uses arguments
seems to use flag :-)
20:20 < sauerbraten> vrtical: puh feels good not to be the only one that
doesn't know such things :D
20:21 < sauerbraten> skelterjohn: may i use os.Args[0] to get the first
argument or os.Args[0:1]?
20:21 < skelterjohn> er?
20:21 < skelterjohn> os.Args is a []string
20:21 < skelterjohn> os.Args[0:1] would be a string slice with length one
20:22 < skelterjohn> i just experimenting with example programs
20:22 < sauerbraten> oh..  so how do i access the args?
20:23 < sauerbraten> i still seem to be focussed on Java arrays :/
20:23 < skelterjohn> os.Args[0] is the first element in the argument list
20:23 < skelterjohn> os.Args[1] is the second, etc
20:23 -!- rutkowski [~adrian@078088207115.walbrzych.vectranet.pl] has quit [Quit:
WeeChat 0.3.3-dev]
20:23 < sauerbraten> ok so just like i did it?
20:23 < skelterjohn> i have no idea how you did it
20:23 < skelterjohn> so, possibly :)
20:23 < Ginto8> and os.Args[0] will always be the filepath of the executable
20:24 < skelterjohn> that was the part i didn't know if was the case or not
20:24 < skelterjohn> since it varies from language to language
20:24 < sauerbraten> i did it like you so it should be right :D how may i
check that there are enough args given and if not print out a help?
20:24 < skelterjohn> not necessarily the filepath, but how the executable
was invoked
20:24 < Ginto8> no, if it uses Args or Argv
20:24 < Ginto8> then [0] is the executable
20:24 < Ginto8> you can test it if you like
20:24 < Ginto8> well yeah
20:26 < sauerbraten> so os.Args[1] is my first arg?
20:27 < skelterjohn> yes
20:28 < sauerbraten> i think i'm gonna use flags though, it has most stuff
implemented...  also the usage/help print
20:29 < skelterjohn> using a forklift to carry a suitcase, etc
20:30 < Ginto8> well if you want flags use flags
20:30 < Ginto8> if you just want args use os.Args
20:32 < Ginto8> ok just tested it
20:32 < Ginto8> os.Args[0] is the invoking command
20:32 < Ginto8> other args are just space-delimited strings
20:36 < vrtical> and it's a slice of strings (i.e.  like an array of
strings) so you can find out how big it is with len as usual.
20:44 -!- getisboy [~Family@c-24-128-240-75.hsd1.ma.comcast.net] has joined
#go-nuts
20:50 < sauerbraten> Ginto8: how do you do help printout with os.Args?
20:53 < cw> godoc flag
20:54 < skelterjohn> fmt.Println("Here is a message that tells people how to
use this program.")
20:54 < cw> func PrintDefaults()
20:54 < sauerbraten> cw: thanks but that's exactly what i am doing...
20:54 < cw> PrintDefaults prints to standard error the default values of all
defined flags.
20:54 < cw> is that what you mean?
20:54 < skelterjohn> he's asking for if he uses os.Args directly.  rather
than the flags package.
20:55 < sauerbraten> no cw, atm I USE flag, and it's called flag.Usage there
;)
20:56 < cw> Ginto8: args aren't space delimited
20:56 < Ginto8> cw, they aren't?
20:56 < skelterjohn> uh
20:56 < cw> form a shell input PoV they are
20:56 < cw> but there is no API requirement they be like that
20:56 < Ginto8> oh ok
20:56 < Ginto8> that makes sens
20:56 < Ginto8> sense*
20:56 < Ginto8> I was just thinking from shell input
20:57 < cw> yes, spaces are painful these days
20:57 < skelterjohn> so, they aren't space delimited, except that they will
always happen to be space delimited?
20:57 < cw> a few things i've written in got have -z for for a 0 delimiter
20:57 < skelterjohn> interesting
20:57 < cw> so i can use xargs -r0
20:57 < cw> path/to/foo "arg1" "arg2" "arg3"
20:58 < cw> will have four strings none of which contain spaces anywhere,
they are null terminated because the OS requires that
20:58 < cw> man 2 execve
20:59 < cw> anyone here seeing memory leaks with TIP?
20:59 < vrtical> possibly you can mess around with shell quoting to make
some arguments with spaces in?
21:00 < cw> path/to/foo " this args has spaces "
21:05 -!- cyclades [seal45@139.78.231.66] has joined #go-nuts
21:10 -!- carllerche [~carllerch@208.87.61.203] has quit [Quit: carllerche]
21:11 -!- getisboy [~Family@c-24-128-240-75.hsd1.ma.comcast.net] has left #go-nuts
[]
21:11 -!- mat_ [~mat@mx3.absolight.net] has quit [Remote host closed the
connection]
21:11 -!- mat_ [~mat@mx3.absolight.net] has joined #go-nuts
21:18 -!- path[l] [UPP@120.138.102.50] has quit [Quit: path[l]]
21:20 -!- jA_cOp [~yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts
21:20 -!- TR2N [email@89-180-146-175.net.novis.pt] has joined #go-nuts
21:20 -!- mbarkhau [~koloss@dslb-088-068-251-010.pools.arcor-ip.net] has quit
[Quit: Leaving.]
21:21 -!- jchico [~jchico@cpe-98-14-12-209.nyc.res.rr.com] has quit [Quit:
Leaving]
21:22 -!- rv2733 [~rv2733@c-98-242-168-49.hsd1.fl.comcast.net] has quit [Quit:
Leaving]
21:22 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
joined #go-nuts
21:25 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:60d5:e557:ddd2:f3f4] has quit
[Quit: Leaving.]
21:26 < plexdev> http://is.gd/dtrJ4 by [Ian Lance Taylor] in 2 subdirs of
go/src/ -- Build libcgo.so with $(CC), not the gcc on PATH.
21:26 < plexdev> http://is.gd/dtrJ7 by [Russ Cox] in 4 subdirs of go/ -- gc:
fix handling of types inside function bodies
21:27 -!- napsy [~luka@212.235.174.112] has quit [Ping timeout: 245 seconds]
21:27 < sauerbraten> i have a file gots.go and one main.go and in main.go i
import "./gots.go", but if i do gots.Search() it says it's undefined, though i
define them in gots.go...  why?
21:28 < cw> is gots.go using the package name gots?
21:28 < cw> oh, import ...  .go
21:28 < cw> isn't what you should be doing
21:29 < cw> import "./gots" should be fine
21:29 < cw> and make sure gots.[68] exists
21:29 -!- Project_2501 [~Marvin@82.84.92.36] has quit [Quit: E se abbasso questa
leva che succ...]
21:29 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
quit [Quit: Bye]
21:30 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
joined #go-nuts
21:30 < KirkMcDonald> sauerbraten: You don't import .go files, you import
compiled packages.
21:32 < sauerbraten> KirkMcDonald: i can compile gots.go, but not link it,
it says it is not package main (package gots) and main.main and main.init aren't
defined
21:35 < sauerbraten> ahh nvm..  got it work
21:36 -!- bechmoul [~joel@lolnet.org] has left #go-nuts []
21:40 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
quit [Quit: Bye]
21:40 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
joined #go-nuts
21:41 -!- sauerbraten [~sauerbrat@p508CFA36.dip.t-dialin.net] has quit [Remote
host closed the connection]
21:42 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
quit [Client Quit]
21:43 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
joined #go-nuts
21:43 < vrtical> sauerbraten: the package names are distinct from the file
names.  You could have a.go, b.go and c.go all making up the package foo (each of
them would start with the line 'package foo') and anything that used them would
just have to import foo
21:44 -!- matt2909 [~matt2909@host81-157-56-185.range81-157.btcentralplus.com] has
quit [Client Quit]
21:50 -!- Fish [~Fish@9fans.fr] has quit [Read error: Connection reset by peer]
21:58 -!- welterde [~welterde@not.welterde.de] has quit [Read error: Operation
timed out]
21:58 -!- NfNitLoop [~bip@2001:470:b9cc:beef::1] has quit [Read error: Operation
timed out]
21:59 -!- kw- [~aevirex@d86-32-213-87.cust.tele2.at] has quit [Ping timeout: 276
seconds]
22:01 -!- ShadowIce` [pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
22:01 -!- yashi [~yashi@dns1.atmark-techno.com] has quit [Ping timeout: 276
seconds]
22:01 -!- NfNitLoop [~bip@2001:470:b9cc:beef::1] has joined #go-nuts
22:02 -!- MattCampbell [~matt@ip68-102-47-79.ks.ok.cox.net] has joined #go-nuts
22:02 < MattCampbell> Does Go have a C FFI?
22:03 < KirkMcDonald> MattCampbell: http://golang.org/cmd/cgo/
22:05 < MattCampbell> Are there any plans to write a Go GUI toolkit, or Go
bindings for an existing toolkit?  I imagine that's outside Go's niche.
22:06 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has quit [Quit:
skelterjohn]
22:06 < KirkMcDonald> cgo does not yet support callbacks.
22:06 < KirkMcDonald> Which complicates binding to most GUI APIs.
22:10 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has joined #go-nuts
22:13 < plexdev> http://is.gd/dtuE4 by [Russ Cox] in 3 subdirs of go/ -- gc:
bug274
22:14 -!- welterde [~welterde@2001:470:1f0b:592:10:1:1:0] has joined #go-nuts
22:15 -!- cyclades [seal45@139.78.231.66] has quit [Ping timeout: 245 seconds]
22:19 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
22:21 < skelterjohn> MattCampbell: there is recent discussion about that on
the ML - the thread about a go IDE
22:21 -!- rinzai [~rinzai@81.129.148.230] has quit [Quit: Leaving]
22:23 -!- skelterjohn [~jasmuth@lawn-net168-in.rutgers.edu] has quit [Quit:
skelterjohn]
22:24 -!- napsy [~luka@212.235.174.112] has joined #go-nuts
22:28 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has quit [Quit: Mac
has gone to sleep]
22:29 < MaybeSo> anyone known when http://golang.org/doc/codewalk/sharemem/
first appeared ?
22:30 < plexdev> http://is.gd/dtvux by [Russ Cox] in 3 subdirs of go/ -- gc:
bug291
22:30 < plexdev> http://is.gd/dtvuy by [Russ Cox] in go/src/cmd/gc/ -- gc:
issue 901
22:30 < plexdev> http://is.gd/dtvuG by [Russ Cox] in 3 subdirs of
go/src/cmd/ -- gc: issue 894
22:30 < MaybeSo> oh, I guess I can check the revision control if it's
there...
22:30 -!- skelterjohn [~jasmuth@nat02-nbpwireless-ext.rutgers.edu] has joined
#go-nuts
22:32 < MaybeSo> ha!  Andrew Gerrand expanded the example he sent me in
usenet.
22:32 -!- awidegreen [~quassel@62.176.237.78] has quit [Remote host closed the
connection]
22:38 -!- kanru [~kanru@118-160-163-155.dynamic.hinet.net] has joined #go-nuts
22:40 -!- skelterjohn [~jasmuth@nat02-nbpwireless-ext.rutgers.edu] has quit [Quit:
skelterjohn]
22:49 -!- Venom_X [~pjacobs@71.21.124.111] has quit [Ping timeout: 240 seconds]
22:50 -!- alehorst [~alehorst@189.114.190.166] has quit [Quit: Leaving.]
22:54 -!- General13372 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has joined
#go-nuts
22:56 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has joined #go-nuts
22:58 -!- General1337 [~support@71-84-50-230.dhcp.mtpk.ca.charter.com] has quit
[Ping timeout: 246 seconds]
23:00 -!- ExtraSpice [~ExtraSpic@88.118.32.225] has quit [Ping timeout: 240
seconds]
23:07 -!- Linnk [~Linnk@ip-56-115.bnaa.dk] has quit [Remote host closed the
connection]
23:16 < plexdev> http://is.gd/dtxRe by [Robert Griesemer] in 2 subdirs of
go/src/pkg/ -- bignum: delete package - functionality subsumed by package big
23:16 < plexdev> http://is.gd/dtxRf by [Russ Cox] in 2 subdirs of go/ -- gc:
bug292
23:17 < plexdev> http://is.gd/dtxRs by [Russ Cox] in 5 subdirs of go/ -- gc:
bug293
23:18 -!- Shyde [~Shyde^^@HSI-KBW-078-043-070-132.hsi4.kabel-badenwuerttemberg.de]
has quit [Remote host closed the connection]
23:19 -!- lmoura_ [~lmoura@187.78.165.78] has joined #go-nuts
23:20 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed
the connection]
23:24 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has quit [Quit: Mac
has gone to sleep]
23:26 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has joined #go-nuts
23:30 -!- ender2070 [~ender2070@bas22-toronto12-2925103372.dsl.bell.ca] has joined
#go-nuts
23:35 -!- mxweas [~max@c-98-225-102-170.hsd1.az.comcast.net] has joined #go-nuts
23:35 -!- sioraiocht [~tomh@unaffiliated/sioraiocht] has quit [Remote host closed
the connection]
23:37 -!- tvw [~tv@e176001143.adsl.alicedsl.de] has quit [Remote host closed the
connection]
23:42 -!- Paradox924X [~Paradox92@178.119.188.72.cfl.res.rr.com] has quit
[Changing host]
23:42 -!- Paradox924X [~Paradox92@vaserv/irc/founder] has joined #go-nuts
23:45 -!- carllerche [~carllerch@208.87.61.203] has joined #go-nuts
23:49 < plexdev> http://is.gd/dtzqI by [Russ Cox] in 2 subdirs of go/ -- gc:
bug294
23:49 < plexdev> http://is.gd/dtzqN by [Russ Cox] in go/lib/codereview/ --
codereview: don't run gofmt with an empty file list
23:50 -!- napsy [~luka@212.235.174.112] has quit [Ping timeout: 240 seconds]
23:56 -!- yashi [~yashi@dns1.atmark-techno.com] has joined #go-nuts
23:59 -!- emmanueloga [~emmanuelo@190.247.41.202] has joined #go-nuts
--- Log closed Fri Jul 16 00:00:12 2010