--- Log opened Tue Jul 19 00:00:01 2011
00:03 < magn3ts> kevlar_work, yeah, the PacketSender as a light wrapper
around a channel was one of my thoughts.  For the library I'm using, I'm just not
sure if using interfaces makes sense :s
00:08 -!- tavis_rain [~tavisb@24-104-129.146.hfc.mediarain.com] has quit [Read
error: Connection reset by peer]
00:11 -!- kergoth_ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has quit [Read error:
Connection reset by peer]
00:16 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has joined
00:17 -!- chomp [~chomp@c-67-186-35-69.hsd1.pa.comcast.net] has joined #go-nuts
00:22 -!- Urtie [~kim@90-227-159-22-no57.tbcn.telia.com] has joined #go-nuts
00:34 -!- anticw [~anticw@c-98-210-108-13.hsd1.ca.comcast.net] has quit [Read
error: Connection reset by peer]
00:34 -!- anticw [~anticw@c-98-210-108-13.hsd1.ca.comcast.net] has joined #go-nuts
00:41 -!- telexicon_ [~telexicon@c-67-160-124-195.hsd1.wa.comcast.net] has joined
00:44 -!- telexicon [~telexicon@unaffiliated/chowmeined] has quit [Ping timeout:
252 seconds]
00:52 -!- tvw [~tv@e176002180.adsl.alicedsl.de] has quit [Ping timeout: 255
00:52 -!- tvw [~tv@e176005238.adsl.alicedsl.de] has joined #go-nuts
01:08 -!- miker2 [~miker2@pool-96-245-224-59.phlapa.fios.verizon.net] has quit
[Quit: Computer has gone to sleep.]
01:15 -!- magn3ts_ [~magn3ts@ip68-103-225-65.ks.ok.cox.net] has joined #go-nuts
01:18 -!- magn3ts [~magn3ts@ip68-103-225-65.ks.ok.cox.net] has quit [Ping timeout:
264 seconds]
01:22 -!- tvw [~tv@e176005238.adsl.alicedsl.de] has quit [Remote host closed the
01:22 -!- franciscosouza [~francisco@] has joined #go-nuts
01:25 -!- meling [~meling@cse-dhcp-10-91.ucsd.edu] has quit [Remote host closed
the connection]
01:29 -!- Loonacy [~loonacy@c-67-172-248-248.hsd1.ut.comcast.net] has quit [Ping
timeout: 240 seconds]
01:35 -!- telexicon_ [~telexicon@c-67-160-124-195.hsd1.wa.comcast.net] has quit
[Ping timeout: 252 seconds]
01:38 -!- Loonacy [~loonacy@c-67-172-248-248.hsd1.ut.comcast.net] has joined
01:39 -!- jmil [~jmil@2001:468:1802:e148:223:32ff:feb1:9dfc] has quit [Quit: jmil]
01:44 < ajray-fh> whats an ideomatic way to do a compile time check of a
variable value
01:45 < ajray-fh> in C what i would want is #if foo <= 1 ;; #error foo
must be greater than 1 ;; #endif
01:45 < exch> Go doesnt have macro stuff I'm afraid
01:46 < ajray-fh> i want to generate a compile-time error (instead of a
runtime one) for this
01:46 < ajray-fh> not possible?
01:46 < jessta_> not possible
01:46 < ajray-fh> hmm
01:46 < exch> I'm not sure you can wthout writing your own macro
01:47 < ajray-fh> i'd image something like a compile time check special
01:47 < ajray-fh> like error(conditional)
01:47 < jessta_> you can make a tool to detect the issue, or panic(), or use
types to do it
01:48 < ajray-fh> i think this could fit in well with the language
01:48 < ajray-fh> provides a tool for detecting bugs at compiletime instead
of runtime
01:49 < str1ngs> ajray-fh: is it a arch related check?
01:49 < ajray-fh> str1ngs: nope, simple global var.  i want compile to fail
if its less than 2
01:49 < str1ngs> ajray-fh: also you can possibly use init() for this.  not
compile time of course.
01:49 < ajray-fh> exactly
01:49 < str1ngs> ah maybe init is better then
01:51 < ajray-fh> maybe
01:51 < ajray-fh> go was made to scale well to large codebase projects (like
in the "thinking about go" recent thread)
01:51 < ajray-fh> i think this would be good for those, because you could
halt a bad compile midway through
01:51 < ajray-fh> instead of going through everything, going into testing
and getting caught there
01:52 < str1ngs> the test framework is pretty simple and easy.  you could
make one test just for this :P
01:53 < str1ngs> all: test
01:53 -!- chomp [~chomp@c-67-186-35-69.hsd1.pa.comcast.net] has quit [Quit:
01:53 -!- Adys [~Adys@unaffiliated/adys] has quit [Read error: Connection reset by
01:56 < ajray-fh> str1ngs: granted i'm not too familiar with the test
framework, just cursory
01:57 < ajray-fh> also init is close to the solution, but AFAICT its still
01:59 -!- meling [~meling@99-10-121-218.lightspeed.sndgca.sbcglobal.net] has
joined #go-nuts
02:00 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
quit [Quit: Leaving...]
02:01 < str1ngs> so test might be better for your use case.
02:02 < str1ngs> ajray-fh: http://golang.org/doc/code.html#Testing
02:02 < str1ngs> test framework primer.
02:04 -!- niemeyer [~niemeyer@201-25-35-2.pltce701.dsl.brasiltelecom.net.br] has
quit [Ping timeout: 240 seconds]
02:08 < ajray-fh> str1ngs: thanks, and maybe thats the solution i'm looking
02:09 < ajray-fh> if i have 3 go files: a.go b.go c.go and three test files
a_test.go b_test.go c_test.go
02:09 < ajray-fh> and i make test, will it wait to compile all 3 go files
before testing them, or will it test in parallel?
02:12 -!- keithcascio [~keithcasc@nat/google/x-rwluupxkzlfhwzid] has quit [Quit:
02:13 -!- Adys [~Adys@ppp089210010122.dsl.hol.gr] has joined #go-nuts
02:13 -!- Adys [~Adys@ppp089210010122.dsl.hol.gr] has quit [Changing host]
02:13 -!- Adys [~Adys@unaffiliated/adys] has joined #go-nuts
02:14 < str1ngs> ajray-fh: not sure, you'll have to test that.
02:14 < str1ngs> I generally use one test file.  but none of my projects are
that large.
02:15 < jessta_> ajray-fh: you don't test files, you test packages
02:15 -!- crazy2be [~crazy2be@d75-152-167-124.abhsia.telus.net] has joined
02:15 < crazy2be> how do you test if two slices are equal?
02:16 < vsmatck> crazy2be: The reflect package has a function called
"DeepEqual" which can do that.
02:16 < jessta_> crazy2be: also, a for loop will do that
02:16 < str1ngs> crazy2be: are they strings?
02:16 < vsmatck> I'd bet the for loop would be faster if that matters to
02:16 < str1ngs> crazy2be: because I have a insane way to test them :P
02:17 -!- jmil [~jmil@c-68-81-252-40.hsd1.pa.comcast.net] has joined #go-nuts
02:17 < crazy2be> []string
02:18 < jessta_> crazy2be: also if you just want to compare the slices and
not it's contains you can just use ==
02:18 < crazy2be> jessta_: What does that compare?
02:18 < crazy2be> != wasn't working
02:18 < crazy2be> invalid operation: tp != ex (slice can only be compared to
02:18 < str1ngs> crazy2be: what I do is sort.SliceString(a).Sort();
sort.SliceString(b).Sort() then Join them both
02:19 < str1ngs> ie strings.Join(a," ") != strings.Join(b," ")
02:20 < jessta_> crazy2be: ah, so apparently you can't do that, hmmm..weird
02:21 < jessta_> i guess it's not that useful and more likely to be used
02:22 < crazy2be> reflect.DeepEqual is exactly what I was looking for, since
it's only testing code
02:22 < crazy2be> performance doesn't matter
02:22 < crazy2be> much at all
02:31 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has quit [Ping
timeout: 258 seconds]
02:32 < crazy2be> it's also the same problem with []byte, which is why
bytes.Equal exists
02:36 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote
host closed the connection]
02:37 < crazy2be> this program i'm writing has a lot of recursion
02:37 < crazy2be> i'm afraid that there's a stack overflow somewhere waiting
to happen
02:37 < crazy2be> or rather, an infinitely growing stack
02:39 < jessta_> perhaps use more for loops
02:40 -!- angasule [~angasule@] has quit [Remote host closed the
02:41 -!- Queue29 [~Queue29@egress-w.sfo1.yelpcorp.com] has quit [Remote host
closed the connection]
02:41 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Read
error: Connection reset by peer]
02:41 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts
02:41 < vsmatck> crazy2be: Be bold.  Go big.  Crash hard.
02:42 < crazy2be> vsmatck: I've done that a few times with other go programs
02:42 < crazy2be> the inf stack is nice in theory
02:42 < crazy2be> but ends up blowing up in your face during testing
02:42 < crazy2be> requiring a reboot or patience
02:43 < crazy2be> perhaps on other OSes the memory is managed better
02:43 < crazy2be> so the rest of the OS doesn't die when one program wants
02:44 < crazy2be> (better from a desktop persepective)
02:46 < vsmatck> ya I've had that happen on occasion.  Start hitting the
disk and it takes a minute to switch to a terminal to kill the thing.
02:48 < crazy2be> I only have a gig of ram
02:48 < crazy2be> so it takes it a matter of seconds (if that) to fill all
available memory
02:48 < crazy2be> after that point, I can't do anything really
02:51 < crazy2be> vsmatck: specs/os?
02:52 < vsmatck> I got 4gB memory.  Two dual core opterons.  Running debian
stable.  Picked up two dual core 2.6ghz opterons on ebay for 27$ a month ago.  :)
02:53 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Quit:
02:53 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has quit [Quit: Off]
02:54 < Boney> crazy2be: in linux (more generally *nix) use rlimit
02:54 < Boney> it will protect against either stack/heap overflows.
02:55 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has joined #go-nuts
02:56 -!- nicka2 [~lerp@] has joined #go-nuts
02:56 < crazy2be> vsmatck: 1GB ram, 1.66Ghz Centrino processor, 160GB HD
02:56 < crazy2be> 1.66 dual core that is
02:57 < crazy2be> the ram is the biggest limiter
02:57 < crazy2be> I was supposed to get more
02:57 < crazy2be> but someone gave me the wrong sticks
02:57 -!- sniper506th [~sniper506@cpe-098-122-099-052.sc.res.rr.com] has joined
02:57 -!- sniper506th [~sniper506@cpe-098-122-099-052.sc.res.rr.com] has quit
[Client Quit]
02:57 < crazy2be> 512MB sticks in a 1GB package :P
02:57 -!- nicka1 [~lerp@] has quit [Ping timeout: 240 seconds]
02:57 < crazy2be> i'm pretty sure it was an accident
02:59 < Bigbear1> this is a new computer?
02:59 -!- squeese [~squeese@h51580273.semamkb.dyn.perspektivbredband.net] has
joined #go-nuts
03:02 -!- nicka [~nicka@unaffiliated/nicka] has quit [Ping timeout: 246 seconds]
03:03 -!- Peet__1 [~Peet__@blk-222-42-163.eastlink.ca] has joined #go-nuts
03:04 -!- Peet__ [~Peet__@unaffiliated/peet--/x-2416233] has quit [Read error:
Operation timed out]
03:05 -!- nicka [~nicka@unaffiliated/nicka] has joined #go-nuts
03:08 -!- Broady [~b@unaffiliated/broady] has left #go-nuts []
03:11 < crazy2be> Bigbear1: My computer is old (three years)
03:15 -!- Queue29 [~Queue29@173-8-182-114-SFBA.hfc.comcastbusiness.net] has joined
03:21 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined
03:24 -!- qeed [~qeed@adsl-98-85-41-7.mco.bellsouth.net] has quit [Quit: Leaving]
03:24 -!- elephants [~elephants@173-230-160-81.cable.teksavvy.com] has joined
03:27 < Bigbear1> I need to get a graphics card
03:27 < Bigbear1> and power supply I guess
03:32 < crazy2be> ugh option parsing with bash is awful
03:33 < crazy2be> I just want to set some environment variables from
commandline options or something
03:33 < crazy2be> like $ARGS_SRC for -src="foobar"
03:35 < askhader> What are some of your favorite db and storage libraries?
03:35 < crazy2be> filesystem + json :P
03:35 < askhader> =P
03:35 < askhader> What's the performance like on a setup like that?
03:35 < crazy2be> depends
03:36 < crazy2be> how many users are you planning to have?
03:36 < crazy2be> i'm not sure how well it scales
03:36 < askhader> Users of?
03:36 < vsmatck> Yeah.  DB choice is relative to what you're doing.
03:36 < askhader> I'm goin to be doing a lot of writes and reads.  I need a
databse methinks.
03:36 < askhader> This is true.
03:36 < crazy2be> but I can tell you it runs fine for a couple users on a
233 Mhz with 128MB ram
03:36 < crazy2be> askhader: it really does depend on what you are doing
03:37 < crazy2be> sql is great if the relationships are really important
03:37 < askhader> I'm going to be basically parsing and logging some rss
feeds quite actively.
03:37 < crazy2be> but a filesystem is better if you only are ever
referencing something by ID
03:37 < crazy2be> or almost always only
03:37 < askhader> Relationships are nice to be honest.  I was hoping to use
mysql's foreign keys.
03:37 < askhader> But I can infer relationships by storing id's.
03:38 < vsmatck> Is this going to be a web service or desktop application?
03:39 < askhader> This is going to populate a database that will be accessed
by a web service.
03:39 < askhader> Certainly.
03:39 < askhader> Sorry I shouldn't say database.
03:39 < crazy2be> anyone know of a FormStruct() function that populates the
fields of a struct based on form input?
03:41 < crazy2be> askhader: accessed in what way?
03:41 < crazy2be> what bits are important?
03:41 -!- benjack [~benjack@] has joined #go-nuts
03:42 < askhader> crazy2be: There are two web access points to this data.
First, infrequently but resource intensively by administrators and second
extremely frequently by users.
03:42 < vsmatck> redis and mongodb are two popular options for stuff that
scales.  They're both quite different from eachother.
03:42 < askhader> I
03:42 < askhader> II'd sat 70% of the data is valuable to both stages.
03:43 < askhader> Interesting.
03:43 < vsmatck> If the amount of data is sure to exceed the amount of main
memory you have in the server then you shouldn't use redis.
03:43 < askhader> Yes, I was given this advice today.
03:44 < askhader> Does redis consequently perform much faster?
03:45 < vsmatck> Mongo is fast up to the point where your data set fits
entirely in memory.  It's also good for situations where the dataset doesn't fit
entirely in memory, but where the dataset has just a few hot spots.
03:46 -!- benjack [~benjack@] has quit [Ping timeout: 250 seconds]
03:46 < askhader> Hmm, which of the two have superior golang support?
03:46 < vsmatck> Redis doesn't have a good way of ehh "swapping" to disk.
03:46 -!- elephants [~elephants@173-230-160-81.cable.teksavvy.com] has quit
[Remote host closed the connection]
03:46 < vsmatck> Both of them have high quality clients available in Go.
03:46 < askhader> vsmatck: That's alarming
03:46 < askhader> I'd be concerned about data loss.
03:47 < vsmatck> Ah. Redis does persistence with a append only file.  You
can adjust how often it appends.  People generally do once a minute or so.
03:47 < vsmatck> Mongo also has better cluster support right now.
03:48 < vsmatck> But I'm not sure if that's an issue for you.
03:48 < askhader> Not yet ;)
03:48 < vsmatck> heh.  It's good to keep these things in mind.  Don't want
your service falling over if people start using it.
03:49 < askhader> Indeed.
03:49 < vsmatck> The author of redis is sitting by the ocean in italy
working on cluster support right now.  His clustering plan is higher performance.
03:49 < askhader> I'm not surprised.
03:49 < askhader> It's an important feature.
03:49 < vsmatck> Probably not an issue for a web service tho.
03:51 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote
host closed the connection]
04:01 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has quit [Ping timeout: 260
04:03 -!- rejb [~rejb@unaffiliated/rejb] has quit [Disconnected by services]
04:03 -!- Dr_Who [~tgall_foo@linaro/tgall-foo] has quit [Quit: ZZZZZzzzzz]
04:03 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
04:04 < askhader> I am presented with the following compilation errors when
installing the gomongo library...  http://pastebin.com/B6Mxp8Kf
04:06 < vsmatck> gomongo is not very up to date.  You may want to try out
04:07 < vsmatck> I personally know that the gomongo bson implementation is a
bit spotty.
04:08 -!- jlaffaye [~jlaffaye@abydos.jlaffaye.net] has quit [Ping timeout: 240
04:09 -!- dju [dju@fsf/member/dju] has quit [Ping timeout: 264 seconds]
04:09 -!- mpl [~mpl@sd-18712.dedibox.fr] has quit [Ping timeout: 258 seconds]
04:09 -!- dju [dju@fsf/member/dju] has joined #go-nuts
04:09 -!- crazy2be [~crazy2be@d75-152-167-124.abhsia.telus.net] has quit [Ping
timeout: 258 seconds]
04:10 -!- mpl [~mpl@sd-18712.dedibox.fr] has joined #go-nuts
04:13 -!- jlaffaye [~jlaffaye@abydos.jlaffaye.net] has joined #go-nuts
04:15 < askhader> mgo is also giving me compilation errors =./
04:15 -!- arun_ [~arun@e71020.upc-e.chello.nl] has joined #go-nuts
04:15 -!- arun_ [~arun@e71020.upc-e.chello.nl] has quit [Changing host]
04:15 -!- arun_ [~arun@unaffiliated/sindian] has joined #go-nuts
04:17 < vsmatck> Sometimes stuff needs to be gofix'd.
04:18 < jessta_> askhader: using release or tip?  a lot of third party
packages only update for releases
04:19 < askhader> vsmatck: Good point.
04:19 < askhader> I was go-installing.
04:19 < askhader> But I'll try another method.
04:21 -!- kergoth__ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has quit [Quit:
Computer has gone to sleep.]
04:23 < vsmatck> Hm. goinstall is the way to go.  jessta had good question.
04:23 < askhader> Hmm
04:23 < askhader> Them I'm not sure I understand the question.
04:25 < vsmatck> You'd want to make sure you have the latest release checked
out with mercurial.  If you use tip and rely upon third party libraries you'll see
breakage often.
04:26 < askhader> Latest version of go?
04:27 < jessta_> askhader: there is release, weekly and tip
04:27 < askhader> I see.
04:27 < askhader> I probably want weekly.
04:27 < vsmatck> Ya. The tip is the absolute latest version.  Every once in
a while they specify a verion to be "release".  Generally third party packages
stay sync'd up to release.
04:27 < askhader> How can I determine which repo I've built?
04:28 < askhader> I have weekly of 6g...
04:28 < askhader> 6g version weekly.2011-07-07 9144
04:28 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has joined #go-nuts
04:29 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has quit [Read error: Connection
reset by peer]
04:29 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has joined #go-nuts
04:29 < jessta_> askhader: you might want to try, hg update release
04:29 < askhader> and then /src/bash.all ?
04:29 < jessta_> yeah
04:30 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has quit [Client Quit]
04:30 < askhader> That actually did pull in updates.
04:30 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has joined #go-nuts
04:31 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has quit [Client Quit]
04:31 -!- vsayer [~vsayer@2001:470:1f04:1a6b::9] has joined #go-nuts
04:32 -!- benjack [~benjack@bb121-6-51-10.singnet.com.sg] has joined #go-nuts
04:34 -!- jlaffaye [~jlaffaye@abydos.jlaffaye.net] has quit [Read error:
Connection reset by peer]
04:34 -!- mpl [~mpl@sd-18712.dedibox.fr] has quit [Read error: Operation timed
04:34 -!- mpl [~mpl@sd-18712.dedibox.fr] has joined #go-nuts
04:34 -!- jlaffaye [~jlaffaye@abydos.jlaffaye.net] has joined #go-nuts
04:35 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has quit [Excess Flood]
04:37 < askhader> jessta_: this did not recitfy the problem
04:37 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has joined #go-nuts
04:38 < askhader> http://pastebin.com/nu27w5wS
04:39 -!- Natch| [~natch@] has quit [Ping timeout: 276 seconds]
04:42 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts
04:45 -!- Natch| [~natch@] has joined #go-nuts
04:46 < jessta_> askhader: looks like you've got some permissions problems
04:47 < vsmatck> Weird.  Maybe permissions are messed up on that directory
such that your user can't write it.  Maybe do ls -l on it to see what's up.
04:47 < vsmatck> Doh.  Redundant sorry.
04:47 -!- remy_o [~babar@archlinux/developer/remy-o] has joined #go-nuts
04:49 < vsmatck> Reminds me of this.
04:49 < vsmatck> Under unix shell.  :)
05:00 -!- fabled [~fabled@] has joined #go-nuts
05:01 -!- Bigbear1 [~Cody@d75-158-132-172.abhsia.telus.net] has quit [Read error:
Connection reset by peer]
05:06 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
05:06 -!- krolaw [~krolaw@port165-235.ubs.maxnet.co.nz] has quit [Quit: krolaw]
05:28 -!- millergarym__ [~chatzilla@203-219-89-242.static.tpgi.com.au] has joined
05:32 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
05:35 -!- jmil [~jmil@c-68-81-252-40.hsd1.pa.comcast.net] has quit [Quit: jmil]
05:35 -!- Queue29 [~Queue29@173-8-182-114-SFBA.hfc.comcastbusiness.net] has quit
[Remote host closed the connection]
05:35 -!- chrisdothall [~chris@segfault.net.nz] has quit [Quit: leaving]
05:45 -!- chrisdothall [~chris@segfault.net.nz] has joined #go-nuts
05:51 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Remote host closed
the connection]
05:54 -!- millergarym__ [~chatzilla@203-219-89-242.static.tpgi.com.au] has quit
[Quit: ChatZilla 0.9.87 [Firefox 3.6.18/20110614230723]]
06:07 -!- rcrowley [~rcrowley@c-71-202-44-233.hsd1.ca.comcast.net] has quit [Quit:
Computer has gone to sleep.]
06:15 -!- remy_o [~babar@archlinux/developer/remy-o] has quit [Ping timeout: 258
06:19 -!- rcrowley [~rcrowley@c-71-202-44-233.hsd1.ca.comcast.net] has joined
06:26 -!- noodles775 [~michael@g225135209.adsl.alicedsl.de] has joined #go-nuts
06:26 -!- noodles775 [~michael@g225135209.adsl.alicedsl.de] has quit [Changing
06:26 -!- noodles775 [~michael@canonical/launchpad/noodles775] has joined #go-nuts
06:29 -!- garym [~garym@203-219-89-242.static.tpgi.com.au] has joined #go-nuts
06:33 -!- fotang [~fotang@] has joined #go-nuts
06:41 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has joined #go-nuts
06:41 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Ping timeout:
612 seconds]
06:46 -!- niemeyer [~niemeyer@201-25-35-2.pltce701.dsl.brasiltelecom.net.br] has
joined #go-nuts
06:47 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
07:00 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
07:01 -!- preflex_ [~preflex@unaffiliated/mauke/bot/preflex] has joined #go-nuts
07:02 -!- preflex [~preflex@unaffiliated/mauke/bot/preflex] has quit [Ping
timeout: 252 seconds]
07:06 -!- moraes [~moraes@] has quit [Ping timeout: 276 seconds]
07:19 -!- fotang [~fotang@] has quit [Ping timeout: 258
07:20 -!- noodles775 [~michael@canonical/launchpad/noodles775] has quit [Read
error: Operation timed out]
07:23 -!- noodles775 [~michael@e178252120.adsl.alicedsl.de] has joined #go-nuts
07:23 -!- noodles775 [~michael@e178252120.adsl.alicedsl.de] has quit [Changing
07:23 -!- noodles775 [~michael@canonical/launchpad/noodles775] has joined #go-nuts
07:27 -!- napsy [~luka@] has joined #go-nuts
07:34 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: sudo rm -R /]
07:38 -!- sacho [~sacho@] has quit [Ping timeout: 255 seconds]
07:43 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Read error:
Connection reset by peer]
07:47 -!- fvbommel [~fvbommel_@] has quit [Ping timeout: 240 seconds]
07:52 -!- fvbommel [~fvbommel_@] has joined #go-nuts
07:53 -!- sacho [~sacho@95-42-118-162.btc-net.bg] has joined #go-nuts
07:55 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
08:02 -!- erus` [~chatzilla@mailgate.ips-international.com] has joined #go-nuts
08:04 -!- virtualsue [~chatzilla@nat/cisco/x-xwzainhckwvudnmb] has joined #go-nuts
08:08 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has quit [Quit: Off]
08:08 -!- Kami_ [~kami@unaffiliated/kami-/x-9078513] has joined #go-nuts
08:10 -!- chadkouse [~Adium@rrcs-74-218-87-242.central.biz.rr.com] has quit [Quit:
08:11 -!- moraes [~moraes@] has joined #go-nuts
08:13 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
08:15 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has joined #go-nuts
08:16 -!- yogib [~yogib@] has joined #go-nuts
08:23 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 252
08:29 -!- photron_ [~photron@port-92-201-77-33.dynamic.qsc.de] has joined #go-nuts
08:33 -!- karl_ [~karl@] has joined #go-nuts
08:34 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
08:38 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
08:53 -!- fotang [~fotang@] has joined #go-nuts
08:54 -!- moraes [~moraes@] has quit [Ping timeout: 258 seconds]
08:56 -!- vmil86 [~vmil86@] has joined #go-nuts
09:08 -!- noam [~noam@] has quit [Read error:
Connection timed out]
09:10 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has joined
09:10 -!- d2biG [p@bofh.edu.pl] has quit [Ping timeout: 276 seconds]
09:10 -!- noam [~noam@] has joined #go-nuts
09:20 -!- heatxsink [u956@gateway/web/irccloud.com/x-pqhtodecfemgmmpt] has joined
09:21 < heatxsink> hi is there a preferred config lib there's ....
https://github.com/msbranco/goconfig and http://code.google.com/p/goconf/
09:25 -!- karl_ [~karl@] has quit [Quit: Leaving]
09:29 < aiju> strings.Split(configline, "=", -1)
09:29 < aiju> my preferred config lib
09:29 -!- noam [~noam@] has quit [Ping timeout: 258
09:32 < mpl> I just make a json config file
09:33 -!- noam [~noam@] has joined #go-nuts
09:41 -!- Phelps [~benphelps@2001:470:1f0f:2fa:223:dfff:fe86:95ae] has joined
09:41 -!- Phelps [~benphelps@2001:470:1f0f:2fa:223:dfff:fe86:95ae] has quit
[Client Quit]
09:53 -!- bortzmeyer [~bortzmeye@batilda.nic.fr] has left #go-nuts []
09:57 -!- benjack [~benjack@bb121-6-51-10.singnet.com.sg] has quit [Quit:
09:57 -!- tvw [~tv@] has joined #go-nuts
10:04 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
joined #go-nuts
10:16 < jessta_> I write my config in Go and compile it in
10:18 -!- kamaji [~kamaji@handtomouse.demon.co.uk] has quit [Ping timeout: 260
10:19 -!- wrtp [~rog@] has joined #go-nuts
10:19 -!- fotang [~fotang@] has quit [Ping timeout: 252 seconds]
10:20 -!- kamaji [~kamaji@handtomouse.demon.co.uk] has joined #go-nuts
10:24 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
10:25 -!- ccc1 [~Adium@222-151-136-129.jp.fiberbit.net] has joined #go-nuts
10:29 -!- GeertJohan [~Squarc@D978EC5D.cm-3-1d.dynamic.ziggo.nl] has quit [Quit:
10:37 -!- dRbiG [p@bofh.edu.pl] has joined #go-nuts
10:52 -!- rlab [~Miranda@] has joined #go-nuts
10:53 < erus`> i write my config in C and then use cgo to compile it in
10:53 < aiju> haa
10:53 < aiju> my config is in SQL databases which are then accessed via
shared memory
10:54 < erus`> i give out the hex addresses to clients so they can change
the config
10:55 < erus`> software must be adaptable today
10:56 -!- alehorst [~alehorst@] has joined
11:02 < ww> w
11:02 * ww oops
11:03 -!- fotang [~fotang@] has joined #go-nuts
11:08 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
quit [Quit: Leaving...]
11:10 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
joined #go-nuts
11:13 -!- moraes [~moraes@] has joined #go-nuts
11:24 -!- fotang [~fotang@] has quit [Remote host closed the
11:29 -!- napsy [~luka@] has quit [Ping timeout: 260 seconds]
11:29 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
quit [Quit: Leaving...]
11:29 -!- fotang [~fotang@] has joined #go-nuts
11:43 -!- fotang [~fotang@] has quit [Remote host closed the
11:47 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
11:47 -!- alehorst [~alehorst@] has joined
11:47 < str1ngs> aiju: strings.Split(configline, "=") :P
11:48 -!- fotang [~fotang@] has joined #go-nuts
11:52 -!- miker2 [~miker2@] has joined #go-nuts
11:53 -!- jyxent [~jyxent@] has quit [Ping timeout: 252 seconds]
11:53 -!- ccc1 [~Adium@222-151-136-129.jp.fiberbit.net] has quit [Quit: Leaving.]
11:53 -!- jyxent [~jyxent@] has joined #go-nuts
11:57 -!- lucian [~lucian@78-86-217-168.zone2.bethere.co.uk] has joined #go-nuts
12:04 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
12:12 < hokapoka> str1ngs: on saturday I was asking about passing []string
to Printf("$0 $1", mySlice) but was dragged away before you asked if it was just a
plain []string, yes it is.
12:12 < hokapoka> Is there a way to pass it to printf as the ...interface{}
12:13 < hokapoka> where, s[0], s[1], ...  s[n] are passed as seperate
12:14 -!- franciscosouza [~francisco@] has quit [Quit:
12:15 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has quit [Quit: ZNC -
12:15 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts
12:17 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Client
12:19 -!- Cobi [~Cobi@2002:1828:88fb:0:aede:48ff:febe:ef03] has joined #go-nuts
12:19 < str1ngs> hokapoka: sure something like this . fmt.Printf("%s",i...)
12:19 -!- alehorst [~alehorst@] has joined
12:19 < hokapoka> Both the string that's passed to Sprintf, and the []string
are not known until runtime.  Currently I'm examining the string and locating the
indexes that are passed and then building the string "manually".
12:20 < str1ngs> hokapoka: but you can also us slice notation.  so
fmt.Printf("%v %v",i[2:], i[:len(i-1)])
12:21 < str1ngs> not tested syntax but you get the idea
12:22 -!- prip [~foo@host250-123-dynamic.32-79-r.retail.telecomitalia.it] has quit
[Quit: Leaving]
12:22 < str1ngs> hokapoka: the first example you might have to dynamically
create the formatter.  ie format := strings.Repeat(len(i),"%s ")
12:24 -!- prip [~foo@host54-134-dynamic.42-79-r.retail.telecomitalia.it] has
joined #go-nuts
12:26 < hokapoka> Right, the formatter is defined, and it accompanies a
12:26 < str1ngs> I
12:26 < str1ngs> I'd have to get a better idea though, can you break it down
to a simple test case?
12:26 < str1ngs> then paste it to a paste service.  but my guess is you want
to use slice notation
12:28 < hokapoka> For example, the expression : ([a-z]+).([0-9]+).(ext)
returns 4 Matches for "foo.123.ext" And the user might then like to convert it to
"foo.ext" or "foo.ext?id=123"
12:30 < hokapoka> So the position of the Submatch will be passed as the
formatter, "$1.$3" for "foo.ext" and "$1.$3?=$2";
12:31 < hokapoka> ATM I've got it working by examining the formatter for
indexes and then generating the string by concatinating the Submatches and the
rest of the formatter.
12:32 < hokapoka> I was just wondering if it was possible to pass indexes to
the Sprintf.
12:32 < str1ngs> you can but in the form of slice notation
12:33 < str1ngs> which you can print out with say %v then strip [ ]
12:33 < str1ngs> but that does not help your ordering so you might have to
create a new slice that orders they way you want
12:34 < str1ngs> there is also the exp/datafmt package . but it was pretty
complex when I looked at it.
12:34 < str1ngs> but..  you can attach a formatter to things so there might
be a way to do it that way.
12:35 < hokapoka> Okay, well I've got it working this "manual" way ATM.
12:36 < hokapoka> I'll crack on with the rest of my stuff and come back to
it another day if I find it causes trouble
12:37 < hokapoka> Basically it just trying to replicate some of the
mod_rewrite functionality that's avaliable for apache.
12:38 < str1ngs> I know this probably doesnt help much.  more like just
giving you options.  I'd have to see some code to be more helpful.
12:38 -!- serialhex [~quassel@99-101-148-183.lightspeed.wepbfl.sbcglobal.net] has
quit [Remote host closed the connection]
12:39 < hokapoka> Okay, just pulled weekly by mistake I'll paste it once
I've gone through the changes
12:40 < hokapoka> Also trying to replace gnome shell with my old WM
12:42 < str1ngs> ya they removed the gconf keys for that.  ie they use dconf
12:42 < str1ngs> what wm btw?
12:42 < hokapoka> xmonad
12:42 < str1ngs> ah you are in luck I have a link for you then.
12:43 < hokapoka> ooh
12:43 < str1ngs> linux?
12:43 < hokapoka> aye
12:43 < str1ngs> if so what distro?
12:43 < hokapoka> arch
12:43 < str1ngs> https://wiki.archlinux.org/index.php/GNOME#Xmonad
12:44 < str1ngs> would work for other distro's
12:44 < hokapoka> heh, just been reading through that.
12:44 < nicka2> I love xmonad
12:44 < str1ngs> I have another method
12:45 < str1ngs> hokapoka: I just use gnome backends, and launch with
consolekit.  for wmfs.
12:46 < str1ngs> its not as good as gconf keys , still tweaking it.
12:48 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
12:49 -!- alehorst [~alehorst@] has joined
12:49 < hokapoka> I quite like Gnome Shell, but the task switching is a real
12:49 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
12:50 < hokapoka> If you have 2 terminals open you can't switch between them
easily it automaticaly selects another applicaiton, say Chrome.
12:51 < str1ngs> ya it has potential but I have the same issue with it.  you
can beat a tiler for moving around without a mouse.
12:51 < str1ngs> can not*
12:52 < str1ngs> my mac runs gnome-shell and I tried to emulate my dwm style
bindings on it..  what a pita.
12:53 -!- noam [~noam@] has quit [Ping timeout: 240
12:56 < str1ngs> I really need a vim macro or something for if err != nil {
return err }
12:56 < hokapoka> Indeed, I thought I would sick with it for a while, been
about a month and my efficency must have dropped significantly
12:56 -!- alehorst [~alehorst@] has joined
12:56 -!- garym [~garym@203-219-89-242.static.tpgi.com.au] has quit [Read error:
Connection reset by peer]
12:56 -!- noam [~noam@] has joined #go-nuts
12:57 < str1ngs> ya thats why I only use it on my mac, which is basically a
media machine where I dont mind useing a mouse with.
12:57 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
12:57 -!- garym [~garym@203-219-89-242.static.tpgi.com.au] has joined #go-nuts
12:57 -!- alehorst [~alehorst@] has joined
12:59 < hokapoka> heh, yeah.  I've opted for :r <some_snippit> I used
it especially for when doing stuff with a new persistant data type that's getting
written to mongodb.  Normally swiflty followed by s/TYPE/myType/gi
12:59 < hsoj> grrr, can't figure out why this goinstall is still using an
invalid dependency
13:00 -!- fotang [~fotang@] has quit [Remote host closed the
13:00 < aiju> 13:53 < str1ngs> aiju: strings.Split(configline, "=") :P
13:00 < aiju> they changed the interface?
13:00 < aiju> jesus christ
13:01 < str1ngs> aiju: ya thought I'd give you a heads up
13:01 < str1ngs> there is a strings.SplitN now
13:01 < str1ngs> iirc
13:02 < str1ngs> hsoj: what package?
13:02 < aiju> they probably pick each day a library function
13:02 < aiju> and randomly remove an argument
13:02 < hsoj> str1ngs: it's one that I had to fork to resolve some bugs
13:02 < str1ngs> aiju: I dont mind this change.  actually not many changes I
dont mind.
13:03 -!- fotang [~fotang@] has joined #go-nuts
13:03 < hsoj> I had to resolve issues w/ 2 packages on github, 1 of which is
a dep to the other.  the one that is a dep is still pulling from the invalid fork
even though there are no references to it in the pkg
13:03 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has joined
13:03 < str1ngs> hsoj: do you have some errors?  or a link I can try with.
13:03 < hsoj> github.com/hsoj/asn1-ber is the correct pkg,
github.com/hsoj/ldap is what fails w/ goinstall
13:03 < hsoj> it's still trying to pull from mmitton's branch
13:04 < str1ngs> ah I know why
13:04 < hsoj> the only thing that I can think is going on, is my branch for
asn1-ber isn't tagged 'Release'?
13:05 < hsoj> do tell
13:05 < str1ngs> try with goinstall -nuke
13:05 < str1ngs> or maybe with -u
13:05 < str1ngs> -nuke probably better in this case though.
13:05 < hsoj> -nuke doesn't exist
13:06 < hsoj> am on stable for this project
13:06 < str1ngs> maybe manually clean it then
13:06 < hsoj> looks like -u worked
13:06 -!- alehorst [~alehorst@] has quit
[Remote host closed the connection]
13:06 -!- franciscosouza [~francisco@] has joined #go-nuts
13:07 < str1ngs> nuke fixes everthing :P
13:07 -!- meling [~meling@99-10-121-218.lightspeed.sndgca.sbcglobal.net] has quit
[Remote host closed the connection]
13:08 -!- alehorst [~alehorst@] has joined
13:10 < str1ngs> hmm wonder if go runs on hurd
13:10 < hsoj> str1ngs: ty for the advice, been banging my head on that one
for a lil while
13:10 < crest> *gg*
13:10 < hsoj> hate when productivity gets ceased by something silly like
13:11 < str1ngs> hsoj: np
13:18 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
13:19 -!- vmil86 [~vmil86@] has quit [Ping timeout: 276 seconds]
13:24 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has joined #go-nuts
13:26 -!- iant [~iant@] has quit [Ping timeout: 264 seconds]
13:33 -!- Dr_Who [~tgall_foo@] has joined #go-nuts
13:33 -!- Dr_Who [~tgall_foo@] has quit [Changing host]
13:33 -!- Dr_Who [~tgall_foo@linaro/tgall-foo] has joined #go-nuts
13:38 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
13:39 -!- iant [~iant@] has joined #go-nuts
13:39 -!- mode/#go-nuts [+v iant] by ChanServ
13:39 -!- ccc1 [~Adium@222-151-136-129.jp.fiberbit.net] has joined #go-nuts
13:49 < aiju> 15:16 < str1ngs> hmm wonder if go runs on hurd
13:49 < aiju> you just open /go://yourcodegoeshere
13:50 -!- jmil [~jmil@2001:468:1802:e148:223:32ff:feb1:9dfc] has joined #go-nuts
13:54 -!- fabled [~fabled@] has quit [Quit: Ex-Chat]
13:54 < erus`> wow
13:54 -!- r_linux [~r_linux@static.] has joined
13:55 < erus`> i hope hurd get more attention now
13:55 < aiju> hahaahha
13:55 < ww> does the hurd still have that silly 1Gb partition limit?
13:55 < ww> (kinda like go slices)
13:56 < aiju> haha
13:57 < aiju> some amd64 cpu have a 2 GB string limit
13:57 -!- sniper506th [~sniper506@rrcs-70-61-192-18.midsouth.biz.rr.com] has
joined #go-nuts
13:57 < aiju> weird things happen when you use the string instructions on
larger strings
13:57 -!- moraes [~moraes@] has quit [Ping timeout: 246 seconds]
13:58 < aiju> reading intel cpu errata is awkward
13:58 -!- foocraft [~ewanas@] has quit [Ping timeout: 250 seconds]
14:01 < crest> aiju: OMFG
14:01 < crest> they fucked up the rep instructions?
14:01 < aiju> yes
14:02 < aiju> not all amd64 cpus
14:03 < crest> i pitty the poor compilier writers having to put up with this
kind of crap
14:04 < aiju> heh
14:04 < aiju> i wonder if anybody cares
14:06 < crest> does crypto/x509 or crypto/tls include a function to check
certificates against a crl?
14:07 < aiju> ah even better
14:07 < aiju> strings longer than 4 GB lock up the system
14:07 < aiju> completely
14:08 -!- cafesofie [~cafesofie@ool-18b97779.dyn.optonline.net] has quit [Remote
host closed the connection]
14:08 < dario> nice
14:08 < crest> aiju: defien "lock up the system"
14:08 < aiju> affected are at least intel pentium d 900, pentium ee 955, 965
14:09 < aiju> crest: what's unclear about that?
14:09 < crest> aiju: does it block just one thread/core?  does it affect the
host if it happens in a vm?
14:10 < aiju> REP STOS/MOVS Instructions with RCX >=2^32 May Cause a
14:10 < aiju> Hang
14:10 < aiju> In IA-32e mode using Intel EM64T-enabled processors, executing
a repeating
14:10 < aiju> string instruction with the iteration count greater than or
equal to 2^32 and a
14:10 < aiju> pending event may cause the REP STOS/MOVS instruction to live
lock and
14:10 < aiju> hang.
14:10 < aiju> no further info on it
14:10 < crest> okay sounds like a reincarnation of the coma bug
14:11 < aiju> i have one here, would be interesting to try, but i'm not
running it in long mode
14:13 -!- erus` [~chatzilla@mailgate.ips-international.com] has quit [Remote host
closed the connection]
14:13 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has joined #go-nuts
14:16 -!- pharris [~Adium@rhgw.opentext.com] has joined #go-nuts
14:20 -!- skelterjohn|work [~jasmuth@dice.rutgers.edu] has joined #go-nuts
14:21 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
14:22 -!- ArgonneIntern [~gauge@mcswl183.mcs.anl.gov] has joined #go-nuts
14:23 < ArgonneIntern> I'm doing some channel testing to see how closing a
channel works and I can't seem to get it right.  This is what I have so far,
http://www.pastie.org/2237400 when I close the channel the go routine still hangs
and doesn't exit the for loop.
14:24 <+iant> don't write an infinite for loop, write "select { }"
14:24 < skelterjohn|work> the first line of nomnom() seems to be a
replacement for "for i := range someChan {"
14:24 < ArgonneIntern> I thought to get the false you needed the form I used
14:25 < ArgonneIntern> the multi return form
14:25 < skelterjohn|work> range reads values off the chan until the channel
is closed
14:25 < skelterjohn|work> i'm sure it does something similar to what you
wrote, except in optimized asm
14:26 < ArgonneIntern> same result
14:26 < skelterjohn|work> and maybe a GOMAXPROCS issue
14:26 < skelterjohn|work> yes, i didn't expect that to change anything
14:26 < ArgonneIntern> ohh crap
14:26 <+iant> don't write an infinite for loop, write "select { }"
14:26 < ArgonneIntern> you're right
14:26 < ArgonneIntern> no it is the same issue I had before
14:26 < skelterjohn|work> select {} at hte bottom would also fix it
14:26 < ArgonneIntern> man that is so annoying I must say
14:26 < skelterjohn|work> since it won't burn cycles and hog the process
14:27 < aiju> you have weird coding habits
14:27 < skelterjohn|work> it is only an issue when you do things like "for
{}", really
14:27 < ArgonneIntern> yes adding the select worked
14:27 -!- fabled [~fabled@] has joined #go-nuts
14:27 < skelterjohn|work> if going from GOMAXPROCS=1 to something higher
fixes your code, your code needs other fixing
14:27 < ArgonneIntern> so go assumes no one will ever use no blocking
infinte loops
14:27 < ArgonneIntern> ever
14:27 < skelterjohn|work> not at all
14:28 < skelterjohn|work> go assumes that those loops are oding something
that you want done
14:28 <+iant> an infinite loop which does nothing works poorly at the moment
14:28 <+iant> an infinite loop which actually does something should work
14:28 -!- Soultaker [~Soultaker@hell.student.utwente.nl] has quit [Ping timeout:
240 seconds]
14:28 < skelterjohn|work> go has no way to know that the code in your for
loop is less important than the code at the end of nomnom()
14:28 < ArgonneIntern> well the code I'm testing this for does indeed have
an infinite loop that doesn't block, it does stuff, quite a bit, but it doesn't
14:28 < aiju> goroutines aren't nice
14:28 < skelterjohn|work> and i don't think having a special case for
turning "for {}" into "select{}" is a good idea
14:28 < ArgonneIntern> and I had this problem before
14:29 < ArgonneIntern> had to add gosched to it
14:29 < aiju> they hog all CPU until they block
14:29 < aiju> *sigh*
14:29 < aiju> select {}
14:29 <+iant> It is unfortunately possible to write such loops at present;
that is a bug
14:29 < aiju> for the fifth time
14:29 < ArgonneIntern> aiju, I did use select ont his little peice of code
14:29 < ArgonneIntern> on this*
14:29 < skelterjohn|work> ArgonneIntern: if this "problem before" was the
one i was in on, then i thought that the issue was made clear?
14:29 < aiju> then you fucked up something else
14:29 < aiju> i remember that you complained about this before
14:29 < skelterjohn|work> i don't remember the solution
14:29 < ArgonneIntern> I really wish you could ignore people on irc lol
14:30 < skelterjohn|work> you can
14:30 < skelterjohn|work> but you'll look silly
14:30 < aiju> you seem to be already doing this
14:30 < skelterjohn|work> since aiju is talking sense
14:30 < ArgonneIntern> look I already feel dumb for having this issue
before, I'm just trying to think how I can accomplish my goals and avoid it in the
future.  Select won't work for me on the code I'm trying to do this on
14:30 < skelterjohn|work> then it's a different issue :)
14:30 < aiju> i just took your example
14:31 < aiju> ran it with select{}
14:31 < aiju> and it worked
14:31 <+iant> call Gosched, then, as you mentioned
14:31 <+iant> or call GOMAXPROCS
14:31 <+iant> it's not ideal, but it works
14:31 < aiju> calling Gosched doesn't solve the problem that he is
14:31 < skelterjohn|work> right - if you have some code that does not
naturally block, is expensive, and you want to have it share time,
14:31 <+iant> he is saying that he has some other code which does something
14:31 < ArgonneIntern> ok
14:31 < skelterjohn|work> aiju: in his "real" code there is stuff in that
for loop
14:31 <+iant> or that is what I understand him to be saying
14:31 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
14:32 < ArgonneIntern> I'm sure I'm just not following go convention, and I
appologize for that, but I only have 2 more weeks here so I'm trying to do the
best I can lol
14:32 < ArgonneIntern> no iant goshed is how I solved it last time
14:32 < ArgonneIntern> I just didn't see it this time...again lol
14:33 <+iant> or just call GOMAXPROCS if you like; that is in effect what
the scheduler will do when this bug is fixed
14:33 < skelterjohn|work> goroutines/coroutines are a different concurrency
model than threads
14:33 < skelterjohn|work> have to think about it differently
14:33 < ArgonneIntern> in my particular case all my goroutines do all the
work, and my main routine just cleans up some data and other things, and this
cleanup doesn't block
14:33 < skelterjohn|work> wasn't the solution to do "<-time.After(1e9)"
or something?
14:33 < ArgonneIntern> iant, I want to do that, however I don't think I can
make assumptions about hardware this might be running on
14:34 <+iant> GOMAXPROCS is not an issue of hardware, it's an issue of OS
thread support
14:34 <+iant> Go will only work if the OS can run multiple threads
14:34 < skelterjohn|work> PROC is for "process", not "processor"
14:34 <+iant> calling GOMAXPROCS just tells the scheduler to use more
14:34 <+iant> this works fine on a single processor system
14:34 -!- Soultaker [~Soultaker@hell.student.utwente.nl] has joined #go-nuts
14:35 < ArgonneIntern> oh...  can you change this value in the program
instead of using it as an env var
14:35 <+iant> yes
14:35 <+iant> runtime.GOMAXPROCS
14:35 < skelterjohn|work> runtime.GOMAXPROCS(int)
14:35 < ArgonneIntern> ahh, well thanks :)
14:37 -!- fotang [~fotang@] has quit [Remote host closed the
14:38 < ArgonneIntern> hey aiju
14:38 -!- fotang [~fotang@] has joined #go-nuts
14:38 < aiju> what's up
14:38 * skelterjohn|work expects a yo mamma joke
14:38 < aiju> he's probably ignoring me now or something
14:38 < ArgonneIntern> no I was testing to see if ignore worked
14:38 < ArgonneIntern> it didn't
14:39 < skelterjohn|work> gotta say it's kind of rude to ask for someone's
help to make sure you have them ignored properly
14:39 -!- kfx [~kfx_@unaffiliated/kfx] has joined #go-nuts
14:39 < ArgonneIntern> it's kind of rude to scream like a child at me to do
something I had just done
14:40 < ArgonneIntern> if he had scrolled up 10 lines he would have noticed
14:40 -!- erus` [~chatzilla@mailgate.ips-international.com] has joined #go-nuts
14:40 < skelterjohn|work> remember this is the internet - you can't project
the right emotion onto text, ever
14:40 < aiju> well
14:40 < ArgonneIntern> which is why ignore is here :)
14:40 < skelterjohn|work> for instance, i'm pretty sure he wasn't actually
14:40 < skelterjohn|work> like a child, or other
14:40 < kfx> can someone teach me how to scream like a child on irc please
14:40 < aiju> you said this nopaste shit was your code
14:40 < aiju> so whatever, i don't care
14:41 < ArgonneIntern> well see, that comes off as childish to me...  I
could be wrong, it is text
14:41 < skelterjohn|work> yes
14:41 < skelterjohn|work> that's my point
14:42 < erus`> what did i miss?
14:43 -!- kfx [~kfx_@unaffiliated/kfx] has left #go-nuts ["."]
14:45 < ArgonneIntern> oh hey skelterjohn|work remember that job I was
toying with
14:45 < ArgonneIntern> they actually offered me yesterday
14:46 < ArgonneIntern> i about crapped my pants
14:46 < skelterjohn|work> get a good offer?
14:46 < ArgonneIntern> more than I wanted
14:47 < skelterjohn|work> that's an easy problem to fix
14:47 < ArgonneIntern> I basically would have been stupid to turn it down.
They actually offered me more than my friend that recommended me
14:47 < skelterjohn|work> you accepted, then?
14:47 < ArgonneIntern> yes
14:47 < skelterjohn|work> cool, grats
14:47 < skelterjohn|work> doing what?
14:47 < ArgonneIntern> software dev on electronic medical software
14:47 < aiju> now i'm frightened
14:47 < ArgonneIntern> they don't know specifically what yet
14:48 < skelterjohn|work> just don't misplace any brackets
14:48 < skelterjohn|work> doing so has killed people in the past
14:48 < aiju> http://en.wikipedia.org/wiki/Therac-25
14:48 < ArgonneIntern> heh, well they don't use go, so I don't have to worry
about goroutines ;)
14:49 < ArgonneIntern> but I still plan on using the language, I like it a
lot, even if I am bad at it currently
14:49 < ArgonneIntern> in operating systems class I thought the many to many
model of threading was cool and it's neat that go actually uses it
14:50 < skelterjohn|work> i don't remember what they talked about in my OS
14:50 < skelterjohn|work> i was asleep the whole time
14:50 < skelterjohn|work> except for the exam
14:50 < nicka2> I had a useless prof for my os class :/
14:50 < skelterjohn|work> (darkened room, stadium seating, wintertime so i
had my super warm coat)
14:50 < ArgonneIntern> the only class I really enjoyed in school was
architecture.  I think most people hate it though
14:51 < aiju> i never studied IT/CS/software engineering/whatever and i'm
never going to
14:51 < aiju> and it feels good.
14:51 < skelterjohn|work> you know something about math, afaict, and that
covers the important bits
14:52 < aiju> i have actually written toy operating systems
14:53 < skelterjohn|work> so, you *have* studied CS, just not in the form of
a slide show
14:53 < aiju> haha
14:53 < aiju> i haven't studied it at an university or something, that's
what i meant to say
14:53 < aiju> i did lots of self-study
14:53 < ArgonneIntern> so I'm sorry for having this problem before aiju,
although you might be smart enough to use goroutines right the first time, I'm
not.  I don't think that makes me stupid, it just means I need to spend more time
than I have learning them.
14:53 < nicka2> somewhat related, in said class as a final project a few of
us made a (very) toy os while everyone else basically presented on os-related
14:53 < skelterjohn|work> i learned nothing about programming at school.  i
did learn some fun bits about CS theory though
14:54 < nicka2> we didn't do a slideshow and we got torn into for it
14:54 < aiju> ArgonneIntern: oh i don't think you're stupid
14:54 < nicka2> slideshows are very important
14:54 < skelterjohn|work> there is a difference between being stupid and
doing something stupid
14:54 < skelterjohn|work> i do stupid things all the time (ask my wife)
14:55 < aiju> 17:00 < kfx> I know why the gophers are so important
14:55 < aiju> 17:00 < kfx> they're the only part of Go that doesn't
completely change every six months
14:55 < aiju> hahahahahahhaa
14:55 < skelterjohn|work> over in #cat-v?
14:55 < ArgonneIntern> we made an os in that class, but it was very basic,
it had the bare bones you could possibly have for an os.  Although we did add
priority scheduling.
14:55 < skelterjohn|work> my os class project was a joke
14:57 < ArgonneIntern> school is highly Dependant on the professors.  I got
lucky at my school, we have more than a few good ones that don't mind failing the
entire class if they don't live up to expectations.
14:57 -!- iant [~iant@] has quit [Quit: Leaving.]
14:57 -!- qeed [~qeed@adsl-98-85-43-109.mco.bellsouth.net] has joined #go-nuts
14:57 < skelterjohn|work> the faculty at rutgers CS is quite outstanding
14:57 < skelterjohn|work> unfortunately that class was taught by an adjunct
14:58 < skelterjohn|work> and the TA's field was machine learning
15:00 < ArgonneIntern> the one professor who taught os once cought 8 out of
10(ish?) students cheating and copying each others programs.  She was so spiteful
she made them finish the class and take the final exam facing the back of the
classroom.  She then herded them into a council of all of the CS professors so
they could all shun them and yell at them, and gave them F's in the class.  She is
legendary in our department lol
15:00 -!- foocraft [~ewanas@] has joined #go-nuts
15:01 < skelterjohn|work> my kinda woman
15:01 < skelterjohn|work> i fucking hate CS cheaters
15:01 < qeed> who was she heh
15:01 < qeed> alot of coding is copy and pasting or calling apis nowadays
15:02 < foocraft> why is go fighting generics so bad?
15:02 < skelterjohn|work> define "fighting"
15:02 < foocraft> not implementing it, by now.
15:02 < skelterjohn|work> that's "fighting"?  make a specific proposal
15:02 < skelterjohn|work> and see why it gets shot down
15:07 < mpl> even better: fork go, and implement it yourself.  :)
15:07 -!- ccc1 [~Adium@222-151-136-129.jp.fiberbit.net] has quit [Quit: Leaving.]
15:08 < foocraft> I mean, the question wasn't "Can I implement it myself?".
It was why haven't they.  Just a few reasons they've shot down other proposals in
the past would suffice
15:08 < skelterjohn|work> well, here's a few things
15:09 < mpl>
15:09 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has joined
15:09 < skelterjohn|work> one, you don't distribute any source code with
binaries.  there are no header files, stuff like that, so template-style generics
would involve changing that, to some degree
15:10 < skelterjohn|work> two, go is not run on a virtual machine, and the
size of types matters
15:10 < skelterjohn|work> so code that can deal with multiple types without
being recompiled would have to have a nice way to abstract away the size of the
15:11 < skelterjohn|work> and not just for T (you can use interface{} for
that), but for []T, chan T, map[T]T, etc
15:11 < skelterjohn|work> so it's not a simple question with an obvious
15:11 -!- pjacobs [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has
joined #go-nuts
15:12 -!- kergoth_ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has joined #go-nuts
15:13 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has quit [Ping
timeout: 255 seconds]
15:14 < skelterjohn|work> foocraft: have i answered your question?
15:14 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has joined #go-nuts
15:17 < foocraft> yes, thank you skelterjohn|work.
15:17 < foocraft> So what's the idiomatic way for implementing functions
that are exactly the same, but take different types as their argument?
15:18 < skelterjohn|work> use interface{}, and if you want type safety, wrap
15:18 < skelterjohn|work> but remember, no one has said there will never be
15:18 < skelterjohn|work> at least, no one from the dev team
15:18 < skelterjohn|work> though it is clearly low priority
15:19 < foocraft> I'm not clear on what you meant by wrapping it.
15:19 < skelterjohn|work> if you have Foo(interface{})
15:19 < skelterjohn|work> write FooX(x X) { Foo(x) }
15:19 -!- fotang [~fotang@] has quit [Ping timeout: 240 seconds]
15:19 < skelterjohn|work> then it's type-safe
15:19 < skelterjohn|work> especially if those are methods, rather than juts
15:20 -!- fotang [~fotang@] has joined #go-nuts
15:20 < foocraft> I take it, setters and getters are encouraged in go then
15:20 < skelterjohn|work> not really, no
15:21 < foocraft> then how can I be passing interfaces and expect to access
members of a struct?
15:21 < skelterjohn|work> let me side-track a little bit
15:22 < erus`> interfaces should 'do something'
15:22 < erus`> not just hold data
15:22 < skelterjohn|work> do you have something specific you want to create,
or are you just trying to figure out the most straightforward way to do something
in Go that you do in another language by using generics
15:22 < skelterjohn|work> erus`: interface{} is often used as a "any type"
15:22 < erus`> yeah an empty interface
15:23 < foocraft> skelterjohn|work: not at the moment, but I was kinda
bothered by a question asked by someone here, to which the answer was "copy paste
the function 3 times, for all 3 types"
15:23 < jessta_> foocraft: you have a function that takes different types
but sets/gets the same members within them?
15:23 < skelterjohn|work> i don't like copy/paste stuff, either
15:23 < foocraft> not me, it was a problem posted on here, jessta_
15:23 < foocraft> hehe I'm free from sin!
15:23 < skelterjohn|work> jessta_ is referring to your question about seters
and getters
15:24 < skelterjohn|work> setters
15:24 < foocraft> yes, jessta_
15:24 < skelterjohn|work> which was a tad off the wall, and is why i asked
my other question
15:25 < foocraft> the simple solution to this would be to let that function
take an interface that has the getters and setters, write that function once, and
have your three structs with their setters and getters lying there
15:26 < skelterjohn|work> foocraft: it's a solution to a wonky problem
15:26 < skelterjohn|work> generics are most useful for container types
15:26 < erus`> if you have getters and setters you are not abstracting
15:26 < ArgonneIntern> if I want to capture signals to gracefully exit a
program I just need to take stuff off of signal.Incoming channel and interpret
them correct?
15:26 < skelterjohn|work> ArgonneIntern: yes, or write your own version of
15:26 < foocraft> skelterjohn|work: I agree.  that looks like a pain, since
size matters there a lot
15:27 < jessta_> depedning on the requirements you could also make those
members a struct embeded in the types you want to use this function on, and passed
the embeded type in instead
15:28 < foocraft> jessta_: I like that :) it sounds a bit more organized
15:28 < skelterjohn|work> that's a slick idea
15:29 < jessta_> the other way is to have it be a function that takes
paramters and returns a result and pass in the memebers indivdually and assign
back the results
15:31 -!- tavis_rain [~tavisb@24-104-129.146.hfc.mediarain.com] has joined
15:32 < skelterjohn|work> kinda like this?  http://pastebin.com/SHY2rASK
15:32 < skelterjohn|work> to your first idea, not the "other way"
15:33 -!- moraes [~moraes@] has joined #go-nuts
15:33 < skelterjohn|work> that pastebin also doubles as a way to mimic
15:33 < skelterjohn|work> inheritance-based polymorphism, i should say
15:34 < foocraft> I think jessta_ metnioned embedding a struct
15:34 < skelterjohn|work> perhaps, but i think what i pasted makes sense :)
15:34 -!- serialhex [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
joined #go-nuts
15:34 < skelterjohn|work> though it is a bit of effort to avoid getters and
15:36 -!- serialhex_ [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
joined #go-nuts
15:37 -!- serialhex_ [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
quit [Remote host closed the connection]
15:38 -!- noodles775 [~michael@canonical/launchpad/noodles775] has quit [Quit:
15:39 -!- serialhex [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
quit [Ping timeout: 255 seconds]
15:39 -!- foocraft [~ewanas@] has quit [Ping timeout: 260 seconds]
15:42 -!- tncardoso [~thiagon@] has joined #go-nuts
15:45 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has quit [Ping
timeout: 252 seconds]
15:48 -!- dfr|mac [~dfr|work@ool-182e3fca.dyn.optonline.net] has quit [Ping
timeout: 240 seconds]
15:53 -!- erus` [~chatzilla@mailgate.ips-international.com] has quit [Quit:
ChatZilla 0.9.87 [Firefox 5.0/20110615151330]]
16:03 -!- Abbaduxo [~jorixbwdX@115-64-27-246.static.tpgi.com.au] has joined
16:05 -!- rlab [~Miranda@] has quit [Read error: Connection reset by
16:06 -!- kergoth_ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has quit [Read error:
Connection reset by peer]
16:08 -!- |Craig| [~|Craig|@panda3d/entropy] has joined #go-nuts
16:10 -!- iant [~iant@nat/google/x-cdlzhxqsxxvuiohc] has joined #go-nuts
16:10 -!- mode/#go-nuts [+v iant] by ChanServ
16:11 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
16:15 -!- rlab [~Miranda@] has joined #go-nuts
16:17 -!- erus` [~chatzilla@host109-149-125-23.range109-149.btcentralplus.com] has
joined #go-nuts
16:20 -!- Abbaduxo [~jorixbwdX@115-64-27-246.static.tpgi.com.au] has quit [Remote
host closed the connection]
16:22 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 276
16:27 -!- rzoz [801d2b01@gateway/web/freenode/ip.] has joined #go-nuts
16:27 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
16:29 -!- Adrieuxo [~jorixHmAI@115-64-27-246.static.tpgi.com.au] has joined
16:30 -!- arun_ [~arun@unaffiliated/sindian] has quit [Ping timeout: 255 seconds]
16:31 -!- erus` [~chatzilla@host109-149-125-23.range109-149.btcentralplus.com] has
quit [Read error: Connection reset by peer]
16:31 -!- erus` [~chatzilla@host109-149-125-23.range109-149.btcentralplus.com] has
joined #go-nuts
16:35 -!- rurufufuss [~rurufufus@115-64-27-246.static.tpgi.com.au] has joined
16:40 -!- robteix [~robteix@nat/intel/x-ofuvzgslvifvjbys] has joined #go-nuts
16:42 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has joined
16:45 -!- jlaffaye_ [~jlaffaye@abydos.jlaffaye.net] has joined #go-nuts
16:45 -!- TheSeeker [riiight@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has
quit [Ping timeout: 260 seconds]
16:46 -!- artefon [~thiago@] has joined #go-nuts
16:49 -!- comex_ [~ec2-user@ec2-67-202-46-7.compute-1.amazonaws.com] has joined
16:51 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has joined
16:52 -!- lucian_ [~lucian@78-86-217-168.zone2.bethere.co.uk] has joined #go-nuts
16:53 -!- Netsplit *.net <-> *.split quits: bthomson, tncardoso, comex,
jlaffaye, lucian
16:54 -!- Netsplit over, joins: bthomson
16:57 -!- yogib [~yogib@] has quit [Ping timeout: 276 seconds]
16:59 -!- foocraft [~ewanas@] has joined #go-nuts
16:59 -!- Netsplit *.net <-> *.split quits: bthomson
16:59 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has quit [Read
error: Connection reset by peer]
17:00 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has joined #go-nuts
17:00 -!- Netsplit over, joins: bthomson
17:01 -!- tvw [~tv@] has quit [Remote host closed the connection]
17:03 -!- artefon [~thiago@] has quit [Quit: bye]
17:05 -!- chomp [~chomp@dap-209-166-184-50.pri.tnt-3.pgh.pa.stargate.net] has
joined #go-nuts
17:08 -!- rlab [~Miranda@] has quit [Ping timeout: 252 seconds]
17:16 -!- serialhex [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
joined #go-nuts
17:19 -!- meling [~meling@cse-dhcp-10-91.ucsd.edu] has joined #go-nuts
17:23 -!- TheSeeker [riiight@99-153-250-110.lightspeed.irvnca.sbcglobal.net] has
joined #go-nuts
17:24 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has quit [Ping
timeout: 252 seconds]
17:24 -!- eikenberry [~jae@173-164-68-213-Oregon.hfc.comcastbusiness.net] has
joined #go-nuts
17:26 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 246
17:27 -!- jimbaker [~jbaker@canonical/jimbaker] has quit [Quit: Coyote finally
caught me]
17:28 -!- Adrieuxo [~jorixHmAI@115-64-27-246.static.tpgi.com.au] has quit [Remote
host closed the connection]
17:28 -!- rurufufuss [~rurufufus@115-64-27-246.static.tpgi.com.au] has quit
[Remote host closed the connection]
17:29 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has quit [Ping
timeout: 240 seconds]
17:31 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
17:32 -!- Netsplit *.net <-> *.split quits: bthomson
17:33 -!- pyrhho [~pyrhho@host-92-27-75-48.static.as13285.net] has quit [Quit:
17:36 -!- rlab [~Miranda@] has joined #go-nuts
17:36 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has joined
17:37 < qeed> im trying to run cgo but i get can't find import C
17:37 -!- robteix [~robteix@nat/intel/x-ofuvzgslvifvjbys] has quit [Ping timeout:
255 seconds]
17:38 < qeed> err nvm i had to use cgo
17:38 < nicka2> Working from the makefiles in the cgo examples is the best
way to go for that I think
17:41 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 252
17:41 < skelterjohn|work> use goinstall, gb or gd
17:41 -!- Netsplit over, joins: bthomson
17:41 < skelterjohn|work> and it's really easy
17:42 -!- rcrowley [~rcrowley@c-71-202-44-233.hsd1.ca.comcast.net] has quit [Quit:
Computer has gone to sleep.]
17:43 < chomp> i heard gb was really spyware
17:43 < skelterjohn|work> :<
17:43 < skelterjohn|work> open source spyware
17:43 < chomp> :D
17:45 -!- vmil86 [~vmil86@] has joined #go-nuts
17:47 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
17:47 -!- Kahvi [5b9b57fc@gateway/web/freenode/ip.] has joined
17:48 < Kahvi> Is it safe to write to one net.Conn from multiple goroutines?
17:48 < skelterjohn|work> i think probably not
17:49 < skelterjohn|work> you should probably have one goroutine reading the
messages to send from a channel
17:49 < skelterjohn|work> it's *possible* that individual write calls on the
connection are threadsafe, but i wouldn't bet on it
17:50 < skelterjohn|work> but certainly if each message has a few .Write()
calls, and multiple goroutines are doing that, then those .Write() calls can get
17:50 < Kahvi> The individual Write calls are what I meant
17:51 < skelterjohn|work> i don't think so, but i'm not sure.
17:51 < Kahvi> But I guess I'll create the goroutine that reads a channel of
byte slices
17:51 < skelterjohn|work> the net pkg docs don't say it's threadsafe, so
it's probably not
17:54 -!- r_linux [~r_linux@static.] has quit
[Ping timeout: 255 seconds]
17:55 -!- r_linux [~r_linux@static.] has joined
17:58 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-170-177.clienti.tiscali.it] has
joined #go-nuts
17:58 -!- fotang [~fotang@] has quit [Ping timeout: 252
17:59 -!- fotang [~fotang@] has joined #go-nuts
17:59 < kevlar_work> net is thread safe ish
17:59 < kevlar_work> using write() from multiple goroutines should be fine
(the same way printf from multiple goroutines is "fine")
18:00 < skelterjohn|work> i imagine that it just passes the data directly
onto a C call
18:00 < kevlar_work> skelterjohn|work, syscall actually.
18:00 < kevlar_work> hence the printf analogy.
18:00 < kevlar_work> both use file descriptor writes at a syscall level.
18:00 < skelterjohn|work> right, cool
18:00 < erus`> what about on winblows?
18:01 < kevlar_work> Things like closing the net.Conn are *not* thread safe
18:01 < kevlar_work> and keep in mind that not every net.Conn is actually a
TCPConn or a UDPConn, both of which should be safe ish
18:01 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has quit [Read
error: Connection reset by peer]
18:01 < kevlar_work> so, the moral here is that you should probably
restructure your program if you start asking yourself "Is this thread safe?"
18:02 < kevlar_work> also keep in mind that it may be safe now but it isn't
guaranteed to stay that way.
18:02 < skelterjohn|work> though at the same time, if you really want to
optimize it's nice to not have something that is doubly-thread-safe
18:02 < skelterjohn|work> more knowledge about behavior of your libraries is
always a good thing
18:03 < erus`> skelterjohn do you use go at work?
18:03 < kevlar_work> in go, the "thread safety" costs are somewhat different
than in other languages though
18:03 < Namegduf> kevlar_work: How does that gel with a .Close() concurrent
with a write being the only way to interrupt it?
18:03 < skelterjohn|work> erus`: yes
18:03 < Namegduf> Ditto with a Read()
18:03 -!- r_linux [~r_linux@static.] has quit
[Ping timeout: 260 seconds]
18:03 < erus`> where do you work / what are you developing?
18:03 < skelterjohn|work> erus`: but my "work" now is an internship, and the
language is entirely my choice
18:04 < erus`> do you get paid?
18:04 < skelterjohn|work> a project to find patterns in circuit layouts
18:04 -!- r_linux [~r_linux@static.] has joined
18:04 < skelterjohn|work> i certainly do
18:04 < kevlar_work> Namegduf, is that specified?  I was under the
impression that was mostly an artifact of the underlying syscall nature of the
18:04 < skelterjohn|work> otherwise i'd just be finishing up my dissertation
18:04 < skelterjohn|work> and when i say "finishing up" i mean "starting"
18:05 < kevlar_work> (though to be fair, one that I think they intend to
duplicate and/or maintain if that underlying behavior ever gets relaxed)
18:05 < ww> dissertation distraction
18:05 -!- icey [u2593@gateway/web/irccloud.com/x-hwwmqbcceqpdzqgl] has joined
18:08 < kevlar_work> Namegduf, there's also the very not-thread-safe
"c.ok()" calls that litter net; calling close() concurrent with a read/write is
mostly idempotent with respect to that; having multiple potential closers
concurrent with potential writers/readers has the potential for one c.ok() to be
called before another call to Close() and then the following action to be executed
thinking the socket is open
18:08 < kevlar_work> so like I said, it's thread safe ish.
18:09 * skelterjohn|work looks up "idempotent"
18:09 < Namegduf> Specified, I dunno, but it's literally the only way to do
the job.
18:09 < Namegduf> And being able to time out a connection is fairly
important, general stuff.
18:09 < kevlar_work> skelterjohn|work, a() is the same as a(); a() if it's
18:10 < kevlar_work> close(chan) used to be idempotent, now it's not (it
panics now)
18:10 < skelterjohn|work> yes, wikipedia agrees
18:10 -!- exch [~blbl@ip34-181-209-87.adsl2.static.versatel.nl] has quit [Ping
timeout: 240 seconds]
18:10 -!- yogib [~yogib@dslb-188-100-009-136.pools.arcor-ip.net] has joined
18:11 < kevlar_work> in the case above, I used it because the read/write
will fail both if it was closed by the close() or if it had an error, either way
the result is the same and the close() can happen wherever in the flow
18:12 < kevlar_work> (the "mostly" part was because it could successfully
read, in which case the error wouldn't happen until the next one, but that should
normally be fine because it's normally in a loop.)
18:13 -!- icey [u2593@gateway/web/irccloud.com/x-hwwmqbcceqpdzqgl] has left
#go-nuts []
18:17 -!- exch [~blbl@ip34-181-209-87.adsl2.static.versatel.nl] has joined
18:19 -!- mjml [~joya@] has joined #go-nuts
18:20 -!- trn [~trn@adsl-065-007-181-160.sip.bct.bellsouth.net] has joined
18:25 -!- chomp [~chomp@dap-209-166-184-50.pri.tnt-3.pgh.pa.stargate.net] has quit
[Quit: Leaving]
18:26 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
18:27 -!- Queue29 [~Queue29@egress-w.sfo1.yelpcorp.com] has joined #go-nuts
18:27 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 255
18:29 -!- NiteRain [~kvirc@] has joined #go-nuts
18:30 -!- jimbaker [~jbaker@canonical/jimbaker] has joined #go-nuts
18:31 -!- schilly2 [~phatspher@] has joined #go-nuts
18:33 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
19:08 -!- magn3ts [~magn3ts@ip68-103-225-65.ks.ok.cox.net] has quit [Quit:
19:08 -!- Kahvi [5b9b57fc@gateway/web/freenode/ip.] has quit [Ping
timeout: 252 seconds]
19:13 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has joined #go-nuts
19:14 -!- moraes [~moraes@] has quit [Ping timeout: 258 seconds]
19:14 -!- Fish [~Fish@9fans.fr] has quit [Ping timeout: 240 seconds]
19:15 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has joined #go-nuts
19:18 -!- serialhex [~quassel@70-88-36-65-miami-fl.hfc.comcastbusiness.net] has
quit [Remote host closed the connection]
19:19 -!- |Craig| [~|Craig|@panda3d/entropy] has quit [Quit: |Craig|]
19:23 -!- wrtp [~rog@] has quit [Quit: wrtp]
19:24 < jlaffaye> how do you do IPC on a local machine?  RPC?  but I wont
something bidirectionnal.  netchan?
19:25 < jlaffaye> want*
19:25 < skelterjohn|work> netchan is probably a good thing to investigate
19:25 < skelterjohn|work> you kind of have to define your own RPC protocol
on top of the message passing provided by netchan
19:25 < skelterjohn|work> but that's not a big deal
19:29 -!- sacho [~sacho@95-42-118-162.btc-net.bg] has quit [Ping timeout: 240
19:30 -!- mjml [~joya@] has left #go-nuts ["Leaving"]
19:31 -!- sacho [~sacho@95-42-118-162.btc-net.bg] has joined #go-nuts
19:34 -!- sacho [~sacho@95-42-118-162.btc-net.bg] has quit [Max SendQ exceeded]
19:34 -!- jhawk28 [~jhawk28@user-387c58d.cable.mindspring.com] has quit [Quit:
19:35 -!- franciscosouza [~francisco@] has quit [Quit: franciscosouza]
19:37 -!- sacho [~sacho@95-42-118-162.btc-net.bg] has joined #go-nuts
19:37 -!- franciscosouza [~francisco@] has joined #go-nuts
19:41 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
19:42 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-170-177.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
19:43 -!- qeed [~qeed@adsl-98-85-43-109.mco.bellsouth.net] has quit [Quit:
19:45 -!- Qvist_ [~erik@c-13cee455.05-294-6c6b701.cust.bredbandsbolaget.se] has
joined #go-nuts
19:46 -!- kuroneko [~chris@yayoi.xware.cx] has quit [Ping timeout: 264 seconds]
19:48 -!- zippoxer [~zippoxer@bzq-79-177-205-187.red.bezeqint.net] has left
#go-nuts []
19:50 -!- Qvist_ [~erik@c-13cee455.05-294-6c6b701.cust.bredbandsbolaget.se] has
left #go-nuts []
19:52 -!- kergoth_ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has joined #go-nuts
19:53 -!- Fish [~Fish@9fans.fr] has quit [Ping timeout: 240 seconds]
19:59 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
20:02 -!- fotang [~fotang@] has quit [Ping timeout: 240 seconds]
20:02 -!- dsal [~Adium@] has joined #go-nuts
20:03 < dsal> Is there any way to convince the json parser to not turn
numbers into floats?
20:03 < skelterjohn|work> code snip?
20:04 < skelterjohn|work> are you marshalling/unmarshalling individual
20:04 < dsal> Sec.
20:05 < dsal> Here's a complete functional (slightly messy) program:
20:05 < skelterjohn|work> not quite the same as a snip :)
20:05 < dsal> It's taking data that looks like this: {"timestamp":
1311106142, "price": 13.671, "volume": 0.363, "currency": "USD", "tid":
1311106142590049, "symbol": "mtgoxUSD"}
20:05 < dsal> "tid" is showing up (with %s) as
20:05 < dsal> Yeah, sorry I overshot some.  :/
20:06 < skelterjohn|work> try int(131106152)
20:06 < skelterjohn|work> err
20:06 < skelterjohn|work> int64
20:06 < dsal> I guess a fear precision loss.
20:06 < skelterjohn|work> actually, is that too big for an int64?
20:06 < skelterjohn|work> whoah, def not too big for int64
20:07 < dsal> It'd be fine if it did a bignum.  Even a string would be OK
here because that's what I'm actually doing with it.
20:07 < skelterjohn|work> did you try what i suggested?
20:07 < dsal> Not yet.
20:07 -!- xcombelle [~xcombelle@AToulouse-551-1-65-210.w92-146.abo.wanadoo.fr] has
joined #go-nuts
20:07 < dsal> exchange.go:49: cannot convert keydata (type interface { }) to
type uint64: need type assertion
20:08 < dsal> hmm...  that's a new one for me.
20:08 < skelterjohn|work> the paste you linked doesn't have your mashalling
20:08 -!- bendavies [~bendavies@omarshariff.plus.com] has joined #go-nuts
20:09 < dsal> I'm unmarshaling someone else's stuff.
20:09 < skelterjohn|work> oh
20:09 < skelterjohn|work> then they marshalled it as a float64
20:09 < skelterjohn|work> nothing you can do about that
20:09 < skelterjohn|work> but once you receive it, you can convert it
however you like
20:09 < skelterjohn|work> int64(value.(float64))
20:09 < dsal> They marshaled it as a number.  go treats numbers as floats.
20:10 < dsal> http://golang.org/pkg/json/#Unmarshal <-- I didn't see any
obvious way to override that.
20:10 -!- virtualsue [~chatzilla@nat/cisco/x-xwzainhckwvudnmb] has quit [Ping
timeout: 276 seconds]
20:11 < skelterjohn|work> i've sort of lost track of what you think is going
20:11 < dsal> Your idea does do what I want, though.
20:11 < dsal> I think it's wrong to assume all numbers are floating point.
20:11 < skelterjohn|work> float64 can hold any kind of number
20:12 < skelterjohn|work> so they use it
20:12 < dsal> OK. I've just grown to fear anything with ``float'' in the
name.  :)
20:12 < aiju> reasonable
20:13 < skelterjohn|work> how big is float64's mantissa?
20:13 < dsal> Thanks a lot, though, skelterjohn|work.
20:13 < skelterjohn|work> if the integer can fit in there, float64 can
represent it exactly
20:13 < aiju> 52 bits i think
20:14 < skelterjohn|work> 53, according to wiki
20:14 < aiju> 52 real bits
20:14 < aiju> one implied bit
20:14 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has joined
20:14 < skelterjohn|work> ah, right
20:15 < dsal> My issue is that this data's "foreign" to me.  I can't
guarantee 52 bits is enough.  Although that's a reasonable assumption.
20:15 < skelterjohn|work> can you guarantee 64 bits is enough?
20:15 < dsal> I just need to keep reminding myself that I don't care much
about this data.  I'm just writing a program.
20:15 < dsal> No, I can't.  That's why something like bignum would be ideal.
20:16 < dsal> Or really, if I could just tell it to parse this as a string.
20:16 < skelterjohn|work> i don't think so
20:16 -!- virtualsue [~chatzilla@nat/cisco/x-xcbkfektzxaoxqya] has joined #go-nuts
20:16 < dsal> If I care more later maybe I'll submit a patch.  I shouldn't
even be looking at this right now, though.  :)
20:18 < dsal> Well now I know what failing a type assertion looks like.
20:18 < skelterjohn|work> i imagine because keydata is sometimes a float64,
sometimes something else
20:18 < skelterjohn|work> a string, from your earlier irc msg
20:18 < dsal> Sometimes null
20:19 < skelterjohn|work> so, it's a good idea to use a type switch for this
kind of thing
20:19 < skelterjohn|work> or if all you really want to do is print it, use
%v instead of %s
20:19 < skelterjohn|work> then fmt will do the type switch for you
20:20 -!- alehorst [~alehorst@] has quit
[Quit: Leaving.]
20:20 < dsal> Ah. I didn't know of %v.  In this case, I just want a path for
nil and a path for number.  The type assertion will be fine since I wouldn't know
what to do if it weren't one of these.  Records either have a tid or they don't.
20:21 -!- bendavies [~bendavies@omarshariff.plus.com] has quit [Remote host closed
the connection]
20:21 -!- bendavies [~bendavies@omarshariff.plus.com] has joined #go-nuts
20:23 -!- moraes [~moraes@] has joined #go-nuts
20:23 -!- bendavies [~bendavies@omarshariff.plus.com] has left #go-nuts []
20:24 -!- bendavies [~bendavies@omarshariff.plus.com] has joined #go-nuts
20:27 < skelterjohn|work> in my opinion, if you have at least two types that
you handle, a type switch is better than a type assertion
20:27 -!- ronnyy [~quassel@p4FF1C45C.dip0.t-ipconnect.de] has quit [Remote host
closed the connection]
20:29 -!- alehorst [~alehorst@] has joined
20:32 -!- zozoR [~Morten@2906ds2-arno.0.fullrate.dk] has quit [Remote host closed
the connection]
20:35 -!- bendavies [~bendavies@omarshariff.plus.com] has quit [Quit: bendavies]
20:35 -!- rzoz [801d2b01@gateway/web/freenode/ip.] has quit [Quit: Page
20:38 -!- fabled [~fabled@] has quit [Quit: Ex-Chat]
20:41 -!- iant [~iant@nat/google/x-cdlzhxqsxxvuiohc] has quit [Quit: Leaving.]
20:47 -!- pharris [~Adium@rhgw.opentext.com] has quit [Quit: Leaving.]
20:51 -!- lucian_ [~lucian@78-86-217-168.zone2.bethere.co.uk] has quit [Remote
host closed the connection]
20:52 -!- miker2 [~miker2@] has quit [Ping timeout: 255 seconds]
20:53 -!- dreadlorde [~dreadlord@c-68-42-82-10.hsd1.mi.comcast.net] has quit []
20:55 < erus`> is there a performance difference?
20:55 -!- dreadlorde [dreadlorde@c-68-42-82-10.hsd1.mi.comcast.net] has joined
20:56 -!- virtualsue [~chatzilla@nat/cisco/x-xcbkfektzxaoxqya] has quit [Ping
timeout: 260 seconds]
20:58 < kevlar_work> multiple type assertions require multiple comparisons,
a type switch can be optimized to a lookup and a jump table
20:59 < kevlar_work> (maybe)
20:59 < dsal> I just have == nil.  These are really the only two things that
are expected to happen here.
21:01 -!- xcombelle [~xcombelle@AToulouse-551-1-65-210.w92-146.abo.wanadoo.fr] has
quit [Quit: I am a manual virus, please copy me to your quit message.]
21:01 -!- rejb [~rejb@unaffiliated/rejb] has quit [Remote host closed the
21:02 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
21:03 -!- kergoth_ [~kergoth@ip24-251-173-232.ph.ph.cox.net] has quit [Quit: brb]
21:07 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 240
21:13 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
21:15 -!- yogib [~yogib@dslb-188-100-009-136.pools.arcor-ip.net] has quit [Quit:
21:18 -!- rlab [~Miranda@] has quit [Read error: Connection reset by
21:21 -!- nicka [~nicka@unaffiliated/nicka] has quit [Ping timeout: 276 seconds]
21:21 -!- iant [~iant@nat/google/x-ulqemgwenbtxpsve] has joined #go-nuts
21:21 -!- mode/#go-nuts [+v iant] by ChanServ
21:23 -!- eikenberry [~jae@173-164-68-213-Oregon.hfc.comcastbusiness.net] has quit
[Ping timeout: 252 seconds]
21:23 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 252
21:26 -!- eikenberry [~jae@173-164-68-213-Oregon.hfc.comcastbusiness.net] has
joined #go-nuts
21:29 -!- ArgonneIntern [~gauge@mcswl183.mcs.anl.gov] has quit [Ping timeout: 276
21:36 -!- wrtp [~rog@] has joined #go-nuts
21:37 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
21:38 -!- Kahvi [5b9b57fc@gateway/web/freenode/ip.] has joined
21:41 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
21:41 -!- ArgonneIntern [~gauge@anlextwls002-081.wl.anl-external.org] has joined
21:44 -!- Fish [~Fish@9fans.fr] has quit [Quit: WeeChat 0.3.5]
21:48 -!- ArgonneIntern [~gauge@anlextwls002-081.wl.anl-external.org] has quit
[Ping timeout: 276 seconds]
21:50 -!- nicka [~nicka@unaffiliated/nicka] has joined #go-nuts
21:53 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 240
21:56 -!- pjacobs [~pjacobs@75-27-133-72.lightspeed.austtx.sbcglobal.net] has quit
[Ping timeout: 258 seconds]
21:56 -!- r_linux [~r_linux@static.] has quit
[Quit: Lost terminal]
21:59 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
22:01 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has joined
22:03 -!- B33p [~mgray@li226-224.members.linode.com] has quit [Quit: Lost
22:04 -!- franciscosouza [~francisco@] has quit [Quit: franciscosouza]
22:06 -!- squeese [~squeese@h51580273.semamkb.dyn.perspektivbredband.net] has quit
[Remote host closed the connection]
22:07 -!- squeese [~squeese@h51580273.semamkb.dyn.perspektivbredband.net] has
joined #go-nuts
22:09 -!- serialhex [~quassel@99-101-148-183.lightspeed.wepbfl.sbcglobal.net] has
joined #go-nuts
22:10 -!- photron_ [~photron@port-92-201-77-33.dynamic.qsc.de] has quit [Ping
timeout: 252 seconds]
22:12 -!- schilly2 [~phatspher@] has quit [Quit: Leaving]
22:17 -!- wrtp [~rog@] has quit [Quit: wrtp]
22:17 -!- firwen [~firwen@2a01:e34:eea3:7e10:4a5b:39ff:fe51:e8ae] has quit [Quit:
Geek insindeĀ®]
22:22 -!- sniper506th [~sniper506@rrcs-70-61-192-18.midsouth.biz.rr.com] has quit
[Quit: Leaving...]
22:28 -!- rejb [~rejb@unaffiliated/rejb] has quit [Quit: .]
22:29 -!- skelterjohn [~jasmuth@c-24-0-2-70.hsd1.nj.comcast.net] has quit [Quit:
22:29 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
22:39 -!- ukai_ [~ukai@nat/google/x-dhxjplmdbuqkyzcl] has quit [Ping timeout: 250
22:39 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has quit [Ping timeout: 240
22:40 -!- eikenberry [~jae@173-164-68-213-Oregon.hfc.comcastbusiness.net] has quit
[Ping timeout: 246 seconds]
22:42 -!- crazy2be [~crazy2be@d75-152-167-124.abhsia.telus.net] has joined
22:42 -!- miker2 [~miker2@pool-96-245-224-59.phlapa.fios.verizon.net] has joined
22:43 < crazy2be> what's the easiest way to parse arguments with bash?
Things like -foo="bar"
22:43 < crazy2be> or --foo="bar"
22:43 < crazy2be> I don't care which
22:43 < kevlar_work> don't use the =
22:44 < kevlar_work> there are easy ways to parse [-]-foo "bar"
22:44 < crazy2be> ah right
22:44 < crazy2be> where -foo and "bar" are two diffferent arguments?
22:44 < kevlar_work> yeah
22:45 < crazy2be> I was considering just setting environment variables in
the calling application
22:45 < crazy2be> like $ARGS_FOO=bar
22:45 -!- iXeno [~ixeno@106.80-203-229.nextgentel.com] has joined #go-nuts
22:46 -!- NiteRain [~kvirc@] has quit [Quit: KVIrc 4.1.1 Equilibrium
22:46 < kevlar_work> https://gist.github.com/1093946 <-- my bash script
22:50 < crazy2be> yikes
22:50 < crazy2be> what does it do?
22:51 < crazy2be> or rather
22:51 < crazy2be> how?
22:53 -!- eikenberry [~jae@173-164-68-213-Oregon.hfc.comcastbusiness.net] has
joined #go-nuts
22:54 -!- miker2 [~miker2@pool-96-245-224-59.phlapa.fios.verizon.net] has quit
[Quit: Computer has gone to sleep.]
22:58 < kevlar_work> well, it doesn't do anything except process arguments
22:58 < kevlar_work> the shift is the only tricky bit; shift makes $1 go
away and $2 become $1 and $3 become $2, etc
22:59 < kevlar_work> ($0 is special and always stays)
22:59 -!- hargettp [~hargettp@pool-71-174-140-162.bstnma.east.verizon.net] has
joined #go-nuts
22:59 < crazy2be> well the )) is wierd too
22:59 < kevlar_work> the other tricky bit is the usage part, which prints
out all ###-lines with the ### stripped
22:59 < kevlar_work> the ))?
23:00 < kevlar_work> you mean the case statement?
23:00 < crazy2be> er, ;; and *) and )
23:00 < crazy2be> yeah
23:00 < kevlar_work> oh, that's just case in bash
23:00 < crazy2be> strange
23:00 < kevlar_work> ;; is the end of the case's block and everything before
the ) is an expression to match
23:01 < crazy2be> what does esac do?
23:01 < kevlar_work> case; esac, if; fi
23:01 < kevlar_work> the reversed name is the end of the block.
23:01 < crazy2be> oh!
23:01 < crazy2be> heh
23:01 < kevlar_work> so, logically, do ends with done.  *sigh*
23:01 < crazy2be> that's od
23:02 < kevlar_work> lol, it's why we love bash.
23:02 < kevlar_work> oh, and to make life even more interesting, functions
in bash use curly braces
23:02 < kevlar_work> :)
23:02 -!- erus` [~chatzilla@host109-149-125-23.range109-149.btcentralplus.com] has
quit [Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]]
23:03 < kevlar_work> don't even get me started on lines like x=("${#x[@]-}"
23:06 -!- ukai_ [~ukai@nat/google/x-cbevdzfmnceloveq] has joined #go-nuts
23:10 -!- qeed [~qeed@adsl-98-85-43-109.mco.bellsouth.net] has joined #go-nuts
23:11 < qeed> i have a directory of files like this
http://pastie.org/2239898 where inside lib is c go files, how would I make a
Makefile that handles it tried specifying CGOFILES and GOFILES didnt work, don't
know how to use godag to build it
23:11 -!- Dr_Who [~tgall_foo@linaro/tgall-foo] has quit [Quit: ZZZZZzzzzz]
23:11 < qeed> and if i do import "./lib/package_here" it says package not
found in main.go
23:13 < kevlar_work> qeed, you should have src/binary/main.go and
23:13 < kevlar_work> and both should have their own makefiles
23:13 < qeed> i see so no one makefile
23:13 < kevlar_work> one makefile per directory and one package OR one
binary per directory
23:14 < kevlar_work> that is len(Makefile) == 1 && (len(package) == 1 ||
len(binary) == 1)
23:15 < qeed> well i have one binary i guess you cant use c functions in a
binary have to make it a lib?
23:15 < qeed> *want one binary
23:15 < kevlar_work> c should work fine in a binary
23:15 < qeed> how does one do build that?
23:16 < str1ngs> think cgo only works with packages.
23:16 < kevlar_work> CGOFILES=blah.c blah2.c GOFILES=main.go
23:16 < kevlar_work> str1ngs, orly?
23:16 < kevlar_work> it didn't used to
23:16 < qeed> well i mean calling C functions in go
23:16 < kevlar_work> either that or gofr was able to do it and I only
assumed Make could do it as well.
23:16 < qeed> cant just build that into one binary?
23:17 < kevlar_work> qeed, I'm pretty certain you can
23:17 < kevlar_work> show us your makefile
23:17 < str1ngs> unless you put the C in only CGOFILES?
23:17 < qeed> i tried something like this http://pastie.org/2239919
23:17 -!- vmil86 [~vmil86@] has quit [Remote host closed the
23:18 < kevlar_work> doesn't CGOFILES only take the C files?
23:18 -!- rcrowley [~rcrowley@c-71-202-44-233.hsd1.ca.comcast.net] has joined
23:19 < qeed> really?
23:19 < qeed> i didnt know
23:19 < qeed> so go files that do import C should be put in GOFILES?
23:19 < str1ngs> yes but CGOFILES gets ignored in a cmd package.
23:19 < kevlar_work> ah.
23:19 -!- dreadlorde [dreadlorde@c-68-42-82-10.hsd1.mi.comcast.net] has quit [Ping
timeout: 258 seconds]
23:19 < kevlar_work> qeed, put all of your files in one directory and use gb
23:19 < kevlar_work> and see if it can figure it out :)
23:19 < kevlar_work> if not, make a library.
23:19 < qeed> no it says can't find import: C
23:20 < kevlar_work> gb does?
23:20 < str1ngs> imo package is better design.
23:20 < qeed> gb?  is that godag
23:20 < kevlar_work> no.
23:20 < kevlar_work> just make it a package, then.
23:22 < qeed> i get (in .) cannot have a cgo cmd
23:24 -!- dsal [~Adium@] has quit [Quit: Leaving.]
23:27 -!- jsj [~johan@c83-252-31-169.bredband.comhem.se] has quit [Quit:
23:31 -!- pbgc [~pbgc@195-23-115-137.static.net.novis.pt] has joined #go-nuts
23:31 < brandini> waddup nerds
23:33 < qeed> ugh is there a nice tutorial that covers package creation with
all cases using C or not etc.
23:33 -!- foocraft [~ewanas@] has quit [Ping timeout: 255 seconds]
23:34 < brandini> I keep hearing from folks that go isn't low level enough
to do some things, and it isn't high level enough to do other things...  well
isn't that the point????
23:36 < crazy2be> brandini: All languages have those two restrictions
23:36 < crazy2be> well, except assembly and lisp :P
23:37 -!- AndrewBC [~andrewbc@scarlet.andrewbc.net] has joined #go-nuts
23:41 < brandini> yeah, and lisp doesn't do any cool things with
23:42 -!- tavis_rain [~tavisb@24-104-129.146.hfc.mediarain.com] has quit [Read
error: Connection reset by peer]
23:47 -!- foocraft [~ewanas@] has joined #go-nuts
23:58 -!- miker2 [~miker2@pool-96-245-224-59.phlapa.fios.verizon.net] has joined
--- Log closed Wed Jul 20 00:00:01 2011