The web in a box - a next generation web framework for the Perl programming language

IRC log for #mojo, 2017-02-09

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 jberger ferreira you were hoping that by line processing it would act as a kind of rate limit?
00:02 ferreira bpmedley: thx
00:05 jberger (Sorry just catching up, on my way to a vue.js meetup)
00:06 bpmedley ferreira : In retrospect, the second non-blocking example in the synopsis looks ideal: http://mojolicious.org/perldoc/Mojo/IOLoop/Delay  <-- Does the timer code make sense?
00:09 ferreira jberger: I was hoping that by line processing in a event-fashioned way, it would give chance to other non-blocking things to happen (which you pointed me is not reasonable)
00:10 jberger If I weren't on a train I could try to make an example for you
00:10 kiwiroy joined #mojo
00:11 jberger sri: do you have your concurrency limited url queue handy?
00:11 jberger (I have one too but it's aimed at crawlers)
00:11 zivester joined #mojo
00:11 jberger I can make one in about 30m if not
00:13 Grinnz ferreira: it's all about how you queue the operations; if each line has its own event, that does technically allow the event loop to run in between, but it's unlikely anything will queue into that spot in between unless the timing is weird
00:13 jberger Well anyway here's my spider https://gist.github.com/jberger/5153008
00:16 ferreira jberger: bpmedley: I will learn from your pointers. Many thanks
00:16 bpmedley ferreira : If you create another CLI program and start by copying 'n pasting from the synopsis we can help you further
01:09 stryx` joined #mojo
01:09 kiwiroy joined #mojo
01:19 jberger ferreira: https://gist.github.com/jberger/6960933d2a8355ff878d64df344ffa51
01:33 sugar joined #mojo
03:26 yysachinyy joined #mojo
03:26 yysachinyy_ joined #mojo
03:26 yysachinyy__ joined #mojo
03:26 yysachinyy___ joined #mojo
03:42 noganex_ joined #mojo
03:44 aborazmeh joined #mojo
03:45 kiwiroy joined #mojo
04:27 yysachinyy joined #mojo
04:27 yysachinyy_ joined #mojo
04:48 disputin joined #mojo
05:04 dboehmer_ joined #mojo
05:06 stryx` joined #mojo
05:13 disputin joined #mojo
05:28 yysachinyy joined #mojo
05:36 jamesaxl joined #mojo
05:43 disputin joined #mojo
05:45 disputin1 joined #mojo
05:45 disputin joined #mojo
06:28 yysachinyy joined #mojo
06:50 kiwiroy joined #mojo
07:01 rshadow joined #mojo
07:06 dod joined #mojo
07:08 dod joined #mojo
07:14 Vandal joined #mojo
07:14 dod joined #mojo
07:15 yysachinyy joined #mojo
07:26 kes joined #mojo
07:39 kes for debugging purpose (when routes in the app are create from plugins and not at one place at startup subroutine) it will be useful to have option: routes -vv which will show file:line where route is created
07:39 kes will not?
07:45 AndrewIsh joined #mojo
08:03 dod joined #mojo
08:09 rshadow joined #mojo
08:30 stryx` joined #mojo
08:49 cpan_mojo Mojo-Webqq-2.0.7 by SJDY https://metacpan.org/release/SJDY/Mojo-Webqq-2.0.7
08:56 dod joined #mojo
09:07 trone joined #mojo
09:29 kes here is problem: https://metacpan.org/source/SRI/Mojolicious-7.24/lib/Mojolicious/Routes/Pattern.pm#L72 When I want to force default value to rendered I supply its value as artument $r->render({ api => 1 }) but when :api equal to default it is not rendered.
09:30 kes It think there should be condition like: exists $values->{ $value } at that line
09:40 rshadow joined #mojo
09:56 marty joined #mojo
10:04 sugar joined #mojo
10:11 dolmen joined #mojo
10:12 sword_smith joined #mojo
10:26 irqq joined #mojo
10:38 rshadow joined #mojo
10:43 sugar joined #mojo
10:56 Dandre joined #mojo
11:22 foursixnine joined #mojo
11:29 sugar joined #mojo
11:35 px80 joined #mojo
11:36 px80 Hello fellas
11:36 px80 I have an issue to understand the synopsis in http://mojolicious.org/perldoc/Mojo/IOLoop/Delay
11:37 px80 why is in example 1 the delay sub only called when all $ends->() are called
11:37 px80 but in example 2 the first sub is called immeditaley
11:38 foursixnine joined #mojo
11:48 marty px80:  example #1: Synchronize    example #2: Sequentialize
11:48 dotan_convos joined #mojo
11:49 px80 marty: yes those two examples
11:51 px80 or is that meant to be an answer? I mean the examples state that already, that first one is about sychronize and secon done sequentialize
11:51 px80 the question is why it behaves that way
11:56 px80 ah I guess the magic is the wait->()
12:00 bpmedley px80 : Mojo::IOLoop->timer will call the sub you pass is, so the sub returned by $delay->begin will be called for you.
12:00 bpmedley *is --> in
12:08 px80 why is first Step in example#2 called immidiately and in example #1 its only called when $delay->begin->() is called?
12:08 kiwiroy joined #mojo
12:10 sri it's not called immediately, it's called once the event loop runs, and in the first example the ->begin's have already been called by then, delaying the first step
12:10 stryx` joined #mojo
12:11 sri if you leave out the for loop it should run immediately
12:11 px80 when I ommit the for loop in first example "BOOM" will never been printed
12:11 sri (immediately after the event loop starts ;p)
12:11 px80 ah no it will in fact
12:13 px80 I have to rethink :)
12:15 px80 ok then one last question to this
12:16 px80 §delay->begin inside the step (like two times in second step) does exactly what?
12:17 px80 its the callback yes, but what does it trigger
12:17 sri increment the counter twice and make two callbacks to decrement it again
12:17 sri so, if both are called it knows to start the next step
12:19 px80 ok second example is clear for me
12:19 px80 first one not :D
12:19 px80 as the $delay->begin is basically two operations there
12:20 px80 tricky too understand
12:21 px80 so I guess as soon as something registers for the callback, $delay->wait will never continue with a step until the callback returned
12:22 px80 I think I got it now
12:36 stryx` joined #mojo
12:47 tchaves joined #mojo
12:59 sugar joined #mojo
13:20 trone joined #mojo
13:25 itaipu joined #mojo
13:26 cpan_mojo Mojolicious-Plugin-JSLoader-0.06 by RENEEB https://metacpan.org/release/RENEEB/Mojolicious-Plugin-JSLoader-0.06
14:06 bwf joined #mojo
14:11 orev joined #mojo
14:17 gizmomathboy joined #mojo
14:17 sugar joined #mojo
14:32 Pyritic joined #mojo
14:38 polettix joined #mojo
14:42 px80 I just tried to construct the useragent object inside the delay subroutine before calling get()
14:42 px80 seems this doesn't wor
14:42 px80 s,wor,work,
14:43 nic hmm, "doesn't work"
14:43 purl "doesn't work" is *not* helpful
14:44 coolo sri: what irony - now we can't send unicode strings to amqp :)
14:44 px80 it's just that as soon as I create $ua outside the delay subroutine/step it does work
14:44 coolo (notably as part of the payload)
14:44 sri coolo: lol
14:45 sri coolo: but i bet you still can if you encode them first
14:45 px80 Mojo::Reactor::Poll: Timer failed: Can't call method "text" on an undefined value ...
14:45 px80 I bet this is expected behavior
14:46 px80 just curious about the way
14:46 px80 why*
14:47 nic I just checked on clairvoyant.com and it
14:48 px80 ah I need to declare $ua outside but can use the constructor ->new inside
14:48 * px80 is confused
14:49 px80 so "my $ua  = new Mojo::UserAgent->new;" inside of it doesn't work
14:49 nic because $ua is then not visible outside of that scope
14:50 px80 yeah but the next sub inside of delay uses: "my ($delay, $first) = @_;"
14:50 nic it's strange to be learning async before variable scoping
14:50 px80 and $delay is all needed
14:51 px80 its strange that people judge without knowledge
14:53 itaipu joined #mojo
14:56 px80 so I dont see any requirement why $ua must be visible outside of the delay subroutine scope
14:56 px80 maybe I'am wrong, but my code at least doesn't require it
14:58 sri you're using ->res instead of ->result
15:00 px80 yes
15:00 px80 should I've know the difference somehow? any pointer for me? but thanks for finding this out!
15:01 PryMar56 joined #mojo
15:01 px80 still, ->result doesnt work either
15:10 kiwiroy joined #mojo
15:14 gryphon joined #mojo
15:14 kaare joined #mojo
15:22 lluad joined #mojo
15:26 stryx` joined #mojo
15:34 itaipu joined #mojo
15:43 px80 ok here is an example: http://dpaste.com/03H5Y9G
15:43 px80 this does not work
15:43 sugar joined #mojo
15:45 stryx` joined #mojo
15:49 sugar joined #mojo
15:50 cpan_mojo Mojolicious-Plugin-Restify-0.05 by KWAKWA https://metacpan.org/release/KWAKWA/Mojolicious-Plugin-Restify-0.05
15:53 polettix joined #mojo
16:02 blonewolfs joined #mojo
16:08 stryx` joined #mojo
16:08 jberger px80: the user-agent object is the one that maintains all the connections and watches for data
16:08 jberger if it goes out of scope the connections are lost
16:09 kiwiroy joined #mojo
16:11 jberger it is conceptually similar to needing to keep a strong reference to the transaction in server context
16:18 px80 ok thanks for explanation
16:19 jberger np
16:20 tchaves joined #mojo
16:21 jberger note also, when you run that example you posted, you should see a warning "Mojo::Reactor::EV: Timer failed: Premature connection close at test.pl line 21."
16:22 jberger which is listed in the FAQ: http://mojolicious.org/perldoc/Mojolicious/Guides/FAQ#What-does-Premature-connection-close-mean
16:25 sugar joined #mojo
16:41 px80 jberger, thank you, quite helpful
16:43 px80 jberger, so the os closes the connection because of timeout
16:44 px80 but why is that code affected by that?
16:44 px80 hmmm
16:52 kaare joined #mojo
16:54 jlaffaye joined #mojo
17:09 kiwiroy joined #mojo
17:12 tchaves joined #mojo
17:19 dod joined #mojo
17:20 disputin joined #mojo
17:21 dod joined #mojo
17:24 itaipu joined #mojo
17:30 dod joined #mojo
17:40 sri yay, legion is out, and it's supposed to be the best marvel series yet :o
17:43 px80 cool :)
17:43 px80 sri: can I ask you a question again?
17:43 sugar joined #mojo
17:44 px80 or anyone
17:45 jberger yeah
17:48 px80 having a bit of problems to understand how I can embed the IOLoop logic into my code. All non-blocking calls receive callbacks, thats clear, but to essential start them I need to start the loop, like wit Mojo::IOLoop->start or with -->wait.
17:50 px80 Now, when I want that my code continues meanwhile I dont see how
17:50 px80 As ->wait() waits until the loop has finished and Mojo::IOLoop->start will never ened
17:51 px80 so I can parallelize all Mojo IO calls, but once I start the IO queue I can 't get out of it seems
17:51 px80 or do I missunderstand that?
17:52 polettix joined #mojo
17:53 jberger the loop stops once it has nothing to do
17:54 jberger and loops started delay ->wait are explicitly going to stop once their last step is executed
17:55 px80 can I paste here?
17:55 px80 few lines
17:57 px80 so this here
17:57 px80 for my $i (1 .. 10) {
17:57 px80 $ua->get( $url => sub {
17:57 px80 my ($ua, $tx) = @_;
17:57 px80 say $i.": ".$tx->res->dom->at('title')->text;
17:57 px80 });
17:57 px80 }
17:57 px80 Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
17:57 px80 this will never end
17:57 px80 i guess it because of the condition
17:58 px80 no its not
17:58 px80 it never ends
17:59 px80 maybe my question is stupid, not sure :D
18:01 px80 oh
18:02 stryx` joined #mojo
18:02 jzawodn left #mojo
18:02 px80 the callback "say" pops up for all 10 requests in under 1 second
18:02 px80 then 30 seconds nothing
18:03 px80 and then a "say" after the Mojo::IOLoop->start is called
18:03 px80 why that?
18:03 px80 thats 30s of blocking :D
18:05 jberger px80: please don't paste into the channel
18:07 jberger I'm not exactly sure what you are asking
18:08 px80 the code above, especially Mojo::IOLoop->start
18:08 jberger in nonblocking code the 10 requests are "queued" and then run after ->start is called
18:08 px80 yes
18:09 px80 the say in the callback shows up in 1s for all 10 requests
18:09 jberger and ->start doesn't return until the loop is stopped or the loop has nothing else to do
18:09 jberger probably, http is fast, probably faster than 1s
18:09 px80 yeah
18:09 px80 but after the start->
18:10 px80 I have another "say "finished";"
18:10 px80 which I didnt paste
18:10 px80 this pops up in 30 seconds
18:10 px80 so the loop takes 30seconds to terminate
18:10 px80 while all requests have finished in 1s
18:10 jberger ok, so first of all (and don't paste here) but please include everything that is run
18:10 jberger so that we can help
18:10 sh14 joined #mojo
18:10 jberger you should still make concise examples
18:11 jberger but it is confusing when you are talking about something we don't see
18:11 jberger I recommend gist.github.com btw
18:11 px80 ok
18:11 jberger so likely what is happening is that the transactions still are in the loop because of keep-alive
18:12 jberger s/transactions/connections/
18:12 jberger if you used delay->wait it wouldn't do that
18:12 px80 a request should terminate its TCP connection once HTTP has finished not?
18:12 jberger because it would rely on the callback counters
18:12 jberger no, keep alive is the default in HTTP/1.1
18:12 purl okay, jberger.
18:12 jberger purl forget keep alive
18:12 purl jberger: I forgot keep alive
18:13 jberger px80: try setting http://mojolicious.org/perldoc/Mojo/UserAgent#max_connections to zero before starting the requests
18:13 px80 so when Mojo has everything it wanted to have it doesnt close the HTTP
18:14 jberger probably right after createing the ua
18:14 px80 ok will try
18:14 jberger http/1.1 says not to
18:14 jberger opening connections is the most expensive part, depending on what you are doing
18:14 jberger if you were going to make 100 requests to the same url you'd want to reuse those
18:15 px80 and your other recommendation is to use delay->
18:15 jberger yes, because then it isn't waiting for the loop to have nothing to do, it is waiting for the tasks you need done to be done
18:15 jberger that is more "correct" from the perspective of what you are trying to accomplish
18:15 px80 but those need to be in the callbacks right? no other way to gt out of those?
18:16 jberger ?
18:16 px80 lets say I want to continue in my main program
18:16 good_news_everyon joined #mojo
18:16 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDzrp
18:16 good_news_everyon mojo/master beaa053 Sebastian Riedel: use the result method in all examples
18:16 good_news_everyon left #mojo
18:16 px80 everything which should happened in the meantime while all requests are executed must be called out of the ->delay callbacks
18:17 px80 the steps I mean :)
18:17 jberger not necessarily, this is all still just using the ioloop singleton
18:17 jberger delay just keeps track of the ones that it manages
18:19 px80 confusing for me
18:19 px80 I try to play with delay->wait to see if I can manage to continue in the main program while all requests are in progress
18:22 px80 if this is too low level what I'am asking about just say something guys
18:22 jberger by "the rest of the program" what do you mean?
18:22 px80 I don't want to annoy anyone
18:22 jberger everything else has to be non-blocking code too
18:23 jberger this is event loop not threading
18:23 jberger that is the same thing whether ->start or delay ->wait
18:24 px80 like queueing those requests and then continue to progress with all other code
18:24 px80 when callbacks from those requests happen, fine, if not the stuff is run meanwhile other things
18:25 jberger "the stuff" <-- is that blocking or non-blocking stuff?
18:27 jberger from how this conversation is going, I'm going to guess that it is blocking "other stuff"
18:27 jberger and suggest this FAQ and the one after it: http://mojolicious.org/perldoc/Mojolicious/Guides/FAQ#What-is-the-difference-between-blocking-and-non-blocking-operations
18:27 px80 yeah its just ordinary code
18:27 jberger so, while the other code is running the loop isn't running
18:27 px80 like math
18:27 jberger it doesn't work like that
18:28 jberger anything blocking blocks the loop
18:28 jberger remember, it is all a single execution thread
18:28 jberger you can "unblock" blocking code, like math, by using subprocesses to run code in forks
18:32 px80 so when I fire up the request queue via delay->wait then I *have* to wait until this queue has finished
18:32 px80 I cannot do anything in between?
18:32 px80 is that right? :-)
18:33 px80 (I really hope I got it now, don't want to make you crazy)
18:33 jberger I think you basically have the idea
18:33 jberger afk for a bit, sorry
18:33 px80 np :)
18:35 px80 so this is a bit different to lets say Node.js
18:36 good_news_everyon joined #mojo
18:36 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDzis
18:36 good_news_everyon mojo/master 24be949 Sebastian Riedel: our implementation follows the spec (closes #1052)
18:36 good_news_everyon left #mojo
18:36 px80 where all these things happen in the background
18:37 sri no
18:37 px80 and you dont need to wait until a loop has finished so that you continue with other things
18:37 sri if you use it right it's just like node.js
18:37 rshadow joined #mojo
18:37 px80 ok then I'am still stuck
18:37 px80 damnit
18:38 sri well, we are not good at teaching event loops, maybe look for other resources
18:39 sri if i knew how to teach it i would have written a guide
18:46 jberger px80 you CAN run other code mid loop, but it means that the loop isn't doing its job of checking for events
18:46 jberger If you keep in mind that there is only one execution thread you can see that it can only do one thing at once
18:59 px80 yeah but then how to continue with code once I kicked off delay->wait
19:00 px80 with loop of 1000 useragent gets, once I kicked off delay->wait, I need to wait to the finish of the loop, only then my main program can progress
19:00 px80 thats *not* how node.js works
19:05 sugar joined #mojo
19:09 dod joined #mojo
19:09 px80 so between starting the event-queue and ending it, I can do things
19:09 px80 here I don't see how
19:22 jesk hey px80, I tried it some days ago as well, same boat, I gave up. :>
19:25 disputin joined #mojo
19:26 marcus the tao of the loop
19:26 jberger px80: Node.js is also single threaded
19:26 purl okay, jberger.
19:30 jberger jesk: I'm sorry to contradict, but you never asked a unified question
19:30 jberger I'd be happy to help you if I knew what help you need
19:33 jberger px80: http://stackoverflow.com/questions/12052907/node-js-blocking-the-event-loop
19:34 jberger if you want to force some code to run synchronously after the loop is started (and thus blocking the loop) I can show you how to do that, but it isn't recommended
19:34 px80 In node I just write code, "external" calls like a get, happen asynchronously, so that I have code after kicking the call off, continueing to execute. I only see the delay->steps subs here who mig[C[C[C[C[C[Cht do this.
19:35 jberger px80: what you are asking for isn't possible, even in node.js, without something like threads or forks
19:36 px80 all syscalls are happening behind node itself in some form of threads
19:36 preaction async is not exactly threads
19:36 px80 didnt say that
19:37 px80 the loop of node.js waits for events to happen
19:37 px80 but the external calls, like basic i/o stuff which should be run in parallel are not done by a single thread
19:37 px80 just node ius single-threaded, waiting for an event to kick of the callback
19:38 px80 while I dont care about the logic behing it when I write code
19:38 preaction you said thread again, but async i/o does not necessarily require threads
19:38 px80 i kick of the call, and the callback cares about it
19:39 preaction the event loop will call the callback when the event fires, yes
19:40 px80 I'am doing hard to see an example in mojo how to accomplish same thing
19:40 preaction your callbacks aren't themselves async, and only one bit of Perl code is executing at any one time. this is the same as every JS interpreter (excepting Web Workers, which totally don't count)
19:40 preaction (which is why jberger mentioned this is how node.js works)
19:40 preaction how to do async file i/o? or what are you trying to accomplish?
19:40 preaction i got here late, so i missed the initial question
19:42 px80 i miss examples of 'how to build basic code with eg. the useragent kicking of thousands of GETs' while my code continues. Callbacks managing the event and possible return codes
19:42 preaction did jberger give you his examples?
19:43 px80 not sure, dont think os
19:44 px80 I believe I'am just not understood
19:44 px80 thats it
19:45 preaction no, i understand what you want. i just don't have an example ready. let me build one up quick
19:49 jberger px80: did you read the stackoverflow post I sent you?
19:50 jberger even though node lets you run synchronous (read: blocking) code while the loop is running (which mojo does too) the loop isn't spinning while that is happening
19:50 jberger so it isn't watching for the requests to finish
19:50 jberger those will only get checked once you've stopped blocking the loop
19:51 jberger it even suggests (as I am) that you need to split CPU-intensive (or otherwise code that doesn't return quickly) into another process
19:51 jberger which is why I'm suggesting Mojo::IOLoop::Subprocess
19:54 preaction POE might have more documentation on what cooperative multitasking means
19:54 sri this is a pefectly fine example https://github.com/openSUSE/desktop-file-translations/blob/master/50-tools/lib/SUSE/DesktopFileDownloader.pm#L66
19:56 preaction px80: this is approximately as simple as i can make the "do async things with Mojo::UserAgent" example: https://gist.github.com/preaction/973aa5603b0e167ebae3dbcd4e9a4b0d
19:56 preaction i trigger 5 jobs, and every time a job finishes it triggers another, keeping 5 jobs all the time
19:56 preaction now, if you want to do something CPU intensive during that, you need to cooperate with the event loop
19:57 preaction this happens in javascript too: often people will make a "recursive" function using `setTimeout( funcName, 0 )` so as to not block callbacks
19:57 sri we can't have these examples in the docs because they don't respect robots.txt
19:58 sri we've actually had such an example and got complaints
19:58 * sri is getting angry about this now
20:01 sri complain to the people that made me remove it back in the days...
20:01 jberger I have my URLQueue module in a gist that I don't have on CPAN because I don't want to get those complaints
20:02 pink_mist wouldn't it be a good idea to have core M::UA able to respect robots.txt?
20:02 jberger pink_mist: what?
20:03 preaction like, load up something that looks like robots.txt and ignore any outgoing requests to those urls? sounds like a maintenance headache
20:04 pink_mist jberger: respecting robots.txt is a feature that I think belongs in a useragent, so perhaps add that to Mojo::UserAgent?
20:04 sri which other user agent ships that?
20:05 pink_mist afaik the major browsers that do preloading of links respect it
20:05 jberger pink_mist: its a feature of spiders etc, not of useragents
20:05 kiwiroy joined #mojo
20:06 sri lol
20:06 jberger pink_mist: why should I have to setup a robots.txt to hit my own backend api?
20:06 pink_mist jberger: I'm not saying it should be on by default
20:09 sri browsers do not use robots.txt
20:11 sri and when i say robots.txt, i also mean cooldowns for peer addresses, which is much more important for concurrent requests
20:12 sri so you don't overwhelm servers even if robots.txt doesn't block you
20:12 sri this is really the bigger issue with teachin this stuff
20:16 sri honestly i'm tired of trying to not teach dangerous stuff
20:16 sri this comes up so much
20:16 sri and wears everyone here out
20:18 sri this was the old one https://github.com/kraih/mojo/blob/v3.0/lib/Mojolicious/Guides/Cookbook.pod#non-blocking
20:20 preaction px80: does this answer your question, or is there still some questions yet to be answered?
20:28 stryx` joined #mojo
20:42 Peppard joined #mojo
20:54 good_news_everyon joined #mojo
20:54 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDgTI
20:54 good_news_everyon mojo/master 4f7b22d Sebastian Riedel: show how to use a URL queue
20:54 good_news_everyon left #mojo
20:55 sri burn it all down, i don't care anymore!
20:55 sri http://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Non-blocking
20:58 jberger sri++
20:59 tyldis Sweet
20:59 jberger I might also CYA a little more and say something about site terms of service
21:00 jberger "respect robots.txt files, site terms of service, and ..."
21:00 jberger basically so people don't scrape google search
21:00 good_news_everyon joined #mojo
21:00 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDgTh
21:00 good_news_everyon mojo/master 4495cbe Sebastian Riedel: use our own server to make a point
21:00 good_news_everyon left #mojo
21:03 kiwiroy joined #mojo
21:04 jberger oh and a missing quotation mark
21:04 sri guess i might just write terms of service instead of robots.txt
21:04 sri yea
21:04 jberger I don't think it hurts to have both notes
21:04 jberger personally
21:04 * purl blushes
21:04 * jberger pushes purl down the stairs
21:04 * purl attaches herself to jberger using suction and a ham straw
21:06 good_news_everyon joined #mojo
21:06 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDgIY
21:06 good_news_everyon mojo/master ad9e47f Sebastian Riedel: fix typo in example
21:06 good_news_everyon left #mojo
21:11 irqq joined #mojo
21:15 marty_ joined #mojo
21:30 sri hmm, this is a real bug, but hard to test :S https://github.com/kraih/mojo/issues/1050
21:32 good_news_everyon joined #mojo
21:32 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDgYv
21:32 good_news_everyon mojo/master 9d9ed3b Sebastian Riedel: fix cleanup bugs in Mojo::IOLoop::Stream (closes #1050)
21:32 good_news_everyon left #mojo
21:35 sri the cookbook now has 1681 lines, maybe time to split it up
21:40 jberger I think there are easy splits for UserAgent and deployment
21:43 jberger IMHO
21:50 Grinnz separating the useragent and server stuff makes sense to me
22:32 marcus sounds like a solid plan
22:37 sri i don't see a plan
22:52 good_news_everyon joined #mojo
22:52 good_news_everyon [mojo] kraih tagged v7.25 at 33164ca: https://git.io/vDgRn
22:52 good_news_everyon left #mojo
22:52 good_news_everyon joined #mojo
22:52 good_news_everyon [mojo] kraih pushed 1 new commit to master: https://git.io/vDgRZ
22:52 good_news_everyon mojo/master e9d8ad3 Sebastian Riedel: bump version
22:52 good_news_everyon left #mojo
23:04 Pyritic joined #mojo
23:14 mpapec joined #mojo
23:19 cstamas joined #mojo
23:43 cfedde joined #mojo

| Channels | #mojo index | Today | | Search | Google Search | Plain-Text | summary