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

IRC log for #mojo, 2015-01-26

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

All times shown according to UTC.

Time Nick Message
00:37 good_news_everyon joined #mojo
00:37 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/kS_r9A
00:37 good_news_everyon mojo/master d25c31d Sebastian Riedel: a few more controller examples
00:37 good_news_everyon left #mojo
00:42 andreoss joined #mojo
00:42 andreoss Mojo::Reactor::Poll: Write failed: Wide character in syswrite at /home/local/perl5/perlbrew/perls/perl-5.20.0/lib/5.20.1/x86_64-linux/IO/Handle.pm line 48
00:43 andreoss i'm experiencing this while trying to put "$dom" back to response
01:10 andreoss no ideas?
01:11 Grinnz how are you doing so?
01:11 andreoss utf8::encode kinda helps, but breaks all non-ascii characters
01:12 sri http://lmgtfy.com/?q=Wide+character+in+syswrite
01:13 andreoss sri: thanks. so it is on purpose.
01:14 andreoss i put Mojo::DOM in $res->body and it dies unless i do some magic utf8 transformations with it
01:14 cpan_mojo Mojolicious-Plugin-Prove 0.07 by Renee Baecker - http://metacpan.org/release/RENEEB/Mojolicious-Plugin-Prove-0.07
01:14 sri nothing magic about it
01:14 Grinnz you probably need to utf8-encode the response and set the content type so the browser knows it's utf-8
01:15 sri https://metacpan.org/pod/release/WOLFSAGE/perl-5.21.8/pod/perlunicook.pod
01:16 andreoss why $dom->to_string doesn't do it for me?
01:16 preaction because it can't know it needs to be done
01:16 sri it also doesn't care
01:16 sri Mojo::DOM is all character based
01:17 Grinnz the utf-8 encoding needs to happen on output, not when you get the dom
01:21 andreoss what is the right way to write Mojo::Dom in response's body than?
01:31 inokenty-w joined #mojo
02:18 klapperl_ joined #mojo
02:25 jberger andreoss: can you make a minimal example?
02:26 jberger I'm not saying that I think there is a bug, I'm just curious
02:26 Abu_Mohamed joined #mojo
02:31 Abu_Mohamed saravá
02:34 jberger sri: would it be possible to have Mojo::IOLoop::Stream's close event pass $? to the callback
02:35 jberger ?
02:39 jberger hmmm, nm, doesn't seem to help me here
02:58 jp- joined #mojo
03:07 asarch joined #mojo
03:11 good_news_everyon joined #mojo
03:11 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/1Rii-A
03:11 good_news_everyon mojo/master 748a2e1 Sebastian Riedel: improve commands and log messages to use less punctuation
03:11 good_news_everyon left #mojo
03:13 sri following the conventions used by the git commands
03:15 sri i might have missed one or two (in case anyone is looking for a simple task)
03:22 good_news_everyon joined #mojo
03:22 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/f2DYMA
03:22 good_news_everyon mojo/master d5bbb14 Sebastian Riedel: mention the port
03:22 good_news_everyon left #mojo
03:28 salparadise sri: how do you merge two collection objects together? trying to glue some files using -Mojo
03:29 sri duct tape
03:29 purl duct tape is, like, the Force ... it has a light side, it has a dark side, and it holds the Universe together. or the baby sitter's best friend or http://www.screwfix.com/app/sfd/cat/pro.jsp?id=14470&ts=82261 or platform agnostic or crap, use gaffer's tape
03:29 * salparadise tries duct tape
03:34 chansen joined #mojo
03:41 good_news_everyon joined #mojo
03:41 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/F-MbGQ
03:41 good_news_everyon mojo/master 32695ac Sebastian Riedel: more consistent log messages for missing files
03:41 good_news_everyon left #mojo
03:49 noganex joined #mojo
04:27 punter joined #mojo
04:37 phillipadsmith joined #mojo
04:48 rem_lex|pivo joined #mojo
04:58 hshong joined #mojo
05:15 jberger oh dear god, that might have been the toughest bug I've ever had to track down
05:15 jberger https://github.com/jberger/Test-Mojo-Phantom/commit/1cca5c4fdbf14705083454266e2e2a9e536457f0
05:15 jberger exception handling now mostly works
05:16 jberger I need to find a way to trigger exceptions at other js levels but other than that (and emitting the die message somehow) I think I've got it
05:56 crab joined #mojo
06:18 mgrimes joined #mojo
06:53 reneeb joined #mojo
07:01 dod joined #mojo
07:02 dod joined #mojo
07:09 basiliscos joined #mojo
07:10 ovnimancer joined #mojo
07:24 reneeb joined #mojo
07:52 McA joined #mojo
08:18 cpan_mojo MojoX-Encode-Gzip 1.11 by Renee Baecker - http://metacpan.org/release/RENEEB/MojoX-Encode-Gzip-1.11
08:19 eseyman joined #mojo
08:20 Vandal joined #mojo
08:30 trone joined #mojo
08:33 vytas joined #mojo
08:39 Lee joined #mojo
09:10 cpan_mojo Mojolicious-Plugin-Prove 0.08 by Renee Baecker - http://metacpan.org/release/RENEEB/Mojolicious-Plugin-Prove-0.08
09:29 nathanael joined #mojo
10:26 dod joined #mojo
10:33 cpan_mojo WWW-Crawler-Mojo 0.07 by Sugama Keita - http://metacpan.org/release/JAMADAM/WWW-Crawler-Mojo-0.07
11:14 fhelmber_ joined #mojo
11:29 arthas joined #mojo
11:44 alnewkirk joined #mojo
11:53 kwa joined #mojo
12:17 marmez joined #mojo
12:52 ladnaV joined #mojo
13:06 RenatoCRON2 joined #mojo
13:08 neilhwatson joined #mojo
13:16 Dandre left #mojo
13:16 Dandre joined #mojo
13:19 jberger reneeb++ preaction++ # perl weekly mentions
13:20 human39 joined #mojo
13:25 ignacio_ joined #mojo
13:39 zz_Foxcool joined #mojo
14:00 amon joined #mojo
14:05 Vandal joined #mojo
14:22 huguei joined #mojo
14:35 batman sri: have i understood it correctly that Mojo::Pg "max_connections" only has to do with "cached" connections?
14:35 batman i mean, i can still connect to pg 100 times, even if max_connections is just 5?
15:07 good_news_everyon joined #mojo
15:07 good_news_everyon [mojo] kraih pushed 2 new commits to master: http://git.io/oJOPNg
15:07 good_news_everyon mojo/master 68118e1 Oleg G: Prevent possibility deleting of pid file by child
15:07 good_news_everyon mojo/master aaf1d54 Sebastian Riedel: Merge pull request #735 from olegwtf/master...
15:07 good_news_everyon left #mojo
15:09 wingfold joined #mojo
15:14 sri so, i guess nobody cares about punctuation in commands and log messages :o
15:15 gryphon joined #mojo
15:17 batman sri: what do you mean?
15:17 batman "some message." vs "some message" ..?
15:17 sri https://github.com/kraih/mojo/commit/748a2e106336afd1bdb5ce0ebe7e161e7bf16387
15:18 batman hehe... i actually started using more [.!] in log messages after i started with mojo :D
15:18 batman but i'm fine with either
15:29 sh4 joined #mojo
15:33 Grinnz_ i tend not to use any, but i don't know if it makes a big difference to anything :P
15:35 jkramer lol, great commit
15:36 jberger no opinion
15:36 jberger in fact that is one of the few concepts that my OCD hasn't latched on to
15:37 jberger meaning even in my own work I'm not consistent on that
15:37 jkramer I like proper punctuation in logs as well as comments
15:38 pink_mist https://github.com/kraih/mojo/commit/748a2e106336afd1bdb5ce0ebe7e161e7bf16387#diff-6be2b0f672c3cc12d7ecbad53dff1710L167 <-- that line was removed, but not replaced?
15:38 bwf joined #mojo
15:39 jkramer I also refuse to use acronyms in places where camelcase is enforced (also a reason why I hate Java), because "Id", "Http" etc makes me sick
15:40 Grinnz_ ditto... i just avoid using camelcase
15:45 Ptolemarch joined #mojo
16:10 pink_mist jkramer: well "Id" would be fine if it was a psychology-related program :P
16:12 sri i do wonder why unix commands don't use punctuation in option lists though (perl -h, vim -h, curl -h...)
16:12 neilhwatson too much typing :) UNIXres are a lazy lot.
16:12 sri or at least no dots... commas are very common
16:13 sri normal sentences before or after the option lists always use correct punctuation again
16:13 sri it's a bit odd
16:14 sri for log messages it's a bit more controversial
16:14 nicomen I guess in lists and ending period is not needed
16:15 nicomen I thin I've seen: "Some sentence. Another sentence" in error msgs too
16:15 sri all the blog posts i could find seem to encourage proper punctuation... while actual log formats out there just don't do it :)
16:15 pink_mist wonder if p5p would accept a patch to add . to the end of all option descriptions in perl -h :P
16:16 sri also gotta like the inconsistent capitalization of some option lists...
16:16 sri vim has "usage:" and "Arguments:"
16:18 sri git too... "usage:" and "Generic options" and "Specific git-branch actions:"...lol
16:18 Grinnz_ sri: i think it's just a matter of "there's no reason to use punctuation when newlines are sufficient"
16:18 * sri shakes git
16:18 sri COULD YOU BE ANY MORE INCONSISTENT?!
16:18 Grinnz_ heh
16:21 nicomen vim and git are the least user friendly software I have ever used, try something made for humans ;)
16:21 Grinnz_ i dunno, git is pretty user friendly for a command line app
16:21 Grinnz_ it is pretty DWIM
16:22 nicomen you need to learn what you mean first
16:22 pink_mist vim is the most excellent editor I've used
16:22 nicomen vim is also DWIM
16:22 purl okay, nicomen.
16:22 Grinnz_ true, but thats with any source control :P
16:22 sri i guess most people consider option lists and log messages just tables with data, and don't use dots because of that
16:22 Grinnz_ vim will never dwim
16:22 cfedde nicomen: then use something else.
16:22 nicomen Grinnz_: if you remember all the konami codes to use, you better know what you mean
16:23 Grinnz_ i can't open vim and start typing text, so it's disqualified
16:23 nicomen cfedde: I do ;)
16:23 Grinnz_ because when i open a text editor, what i mean is to edit text
16:23 nicomen Grinnz_: but you didn't mean it to enter edit mode now did you!
16:23 Grinnz_ yes, i always meant that
16:23 nicomen hehe, why would you start an editor and want to edit stuff?
16:23 nicomen that doesn't make oh... ok
16:24 Grinnz_ :)
16:26 genio I like vim, but I've never really spent enough time to get good at multiple file editing quickly.  So, I atom it up
16:28 nicomen vim is ok when you learn it, git too, my point was that someone not focusing on user friendlyness in their interface, probably aren't very good in documentation consistency
16:30 jberger entering insert mode isn't so onerous
16:30 jberger and though you want to edit, that doesn't necessarily mean insert
16:30 jkramer :help in vim is pretty extensive
16:30 Grinnz_ no, but it's unintuitive
16:31 jberger but I think this is what tipped the scales for me
16:31 jberger https://github.com/jberger/dotfiles/blob/master/.vimrc
16:31 jberger self-contained configuration, including plugin installation
16:31 Grinnz_ o_0
16:31 Grinnz_ my .nanorc is like 5 lines
16:32 Grinnz_ ok, 8 lines
16:32 Grinnz_ though one is now redundant
16:32 jberger lines 3-20 are copy-paste from VAM, bootstrapping plugin installation
16:32 jberger the rest isn't all that weird
16:33 jberger so as long as vim can find that file, any vim I start is setup how I want it
16:33 Grinnz_ configurability is one thing; necessity of configuration is another
16:34 Grinnz_ granted i'd rather that than end up with gnome 3
16:34 sri different topic
16:35 sri which log message is better? "Routing to callback "140476040780688"" or "Routing to a callback"?
16:35 oleg joined #mojo
16:35 Grinnz_ that depends, is 140476040780688 meaningful?
16:35 sri that number being the refaddr
16:35 Grinnz_ ah
16:35 Grinnz_ probably not, then
16:35 jberger I wouldn't think so
16:36 Grinnz_ is there a way to alias callbacks? otherwise i wouldnt bother
16:36 oleg left #mojo
16:37 jberger I was about to suggest to set subname on it so that it is named relative to the route definition, but then I came up with about 3 edge cases even as I was typing
16:37 jberger routing to a callback is fine
16:38 Vertig0 joined #mojo
16:38 sri we also do "Rendering inline template "bcff5b05a91a439876bddf8a8a2be763"", but that's a bit more useful, since it's consistent between processes
16:39 Oleg joined #mojo
16:40 Grinnz_ don't inline templates still have a name?
16:40 Grinnz_ oh right, inline, not embedded
16:41 Grinnz_ nvm
16:42 sri i added those checksums to the log messages because we sometimes render two inline templates right after another, and there have been complaints about that (some people thought we logged the same message twice accidentally ;p)
16:44 Grinnz_ sure... i don't see any harm in including an identifier for callbacks, either... just not sure it's needed either
16:44 sri harm could be that it's not consistent between processes
16:45 sri you'd get different addresses for requests that look the same
16:45 Grinnz_ true
16:45 Grinnz_ where does the inline template identifier come from?
16:46 Grinnz_ checksum of the template itself?
16:46 sri checksum of the actual template + sorted list of stash value names
16:46 Grinnz_ ah
16:46 Ptolemarch joined #mojo
17:09 Ptolemarch joined #mojo
17:30 ashimema joined #mojo
17:48 Ptolemarch joined #mojo
17:57 huguei joined #mojo
17:59 basiliscos joined #mojo
17:59 sh4 joined #mojo
18:07 * tempire is still interested in being part of the perl6 port
18:21 good_news_everyon joined #mojo
18:21 good_news_everyon [mojo] kraih pushed 1 new commit to master: http://git.io/FmrU
18:21 good_news_everyon mojo/master e180c04 Sebastian Riedel: fix bug in Mojo::IOLoop where the callback passed to next_tick would receive the wrong invocant
18:21 good_news_everyon left #mojo
18:21 * sri is surprised nobody noticed that yet
18:24 jberger nice
18:24 jberger no one uses the callback I guess
18:24 jberger not callback, no one uses the invocant
18:25 sri yea
18:26 pink_mist (_instance(shift), @_) <-- that looks very iffy to me 0_o
18:26 pink_mist modifying @_ and using it in the same statement? =/
18:26 sri how so?
18:26 sri meh
18:27 sri i do sub { shift->foo_bar(@_) } all the time
18:27 pink_mist yes, but that's not separated by a ,
18:27 sri same thing to me
18:28 pink_mist I'm just not sure you can rely on the ordering there
18:28 sri unless there are some ambiguities in the language i might not be aware of
18:28 sri my ($foo, $bar) = (shift, shift); is a common idiom too
18:29 pink_mist never seen that one before
18:30 sri http://grep.cpan.me/?q=shift%5C%2C+shift
18:30 sri "708 distributions"
18:30 pink_mist that's not many at all :P
18:31 pink_mist but it seems to be used more than I expected, guess you can just ignore my fears then =)
18:31 pink_mist it's even used in the perl core I see :P
18:32 Grinnz i guess comma order is suitably expected, then
18:33 sri there was one funny special case i don't understand yet though
18:34 sri https://github.com/kraih/mojo/blob/master/lib/Mojo/IOLoop/Delay.pm#L21
18:34 sri that one cannot be written as sub pass { shift->begin(0)->(@_) }
18:41 Ptolemarch joined #mojo
18:46 rem_lex joined #mojo
18:55 marty joined #mojo
18:57 jberger I kinda wonder if &{shift->begin(0)}(@_) would work
18:57 jberger and if it does I might report a perl bug
19:01 sri nope, does not work
19:05 davido__ joined #mojo
19:06 sri even shift->begin->(@_) does work
19:06 sri it's really odd
19:21 jberger whaaaaa
19:22 jberger $_[0] and shift should not be interchangable there
19:33 genio that doesn't make sense to me.
19:35 davido___ joined #mojo
19:37 dotandimet joined #mojo
19:38 huguei joined #mojo
19:39 btyler_ <3 Mojo::IOLoop -- I just mixed Mojo::UA into someone's custom event loop by calling IOLoop->one_tick in the custom loop's 'eventLoop' callback
19:40 btyler_ so much fun, that was supposed to be a painful thing to do
19:42 hernan604 share the code with us
19:44 dotandimet joined #mojo
19:44 Vertig0 joined #mojo
20:00 btyler_ hernan604: well, a tad obscure, but: http://springrts.com/phpbb/viewtopic.php?f=64&amp;t=17130&amp;p=565289#p565289
20:00 btyler_ I work on an RTS game; there's perl software to run dedicated multiplayer servers
20:01 btyler_ this is a plugin for said hosting software
20:02 * sri decides to ask in #p5p
20:05 kaare joined #mojo
20:10 sri answer so far... "undefined evaluation order"
20:16 Grinnz joined #mojo
20:19 huguei joined #mojo
20:26 Grinnz_ joined #mojo
20:32 sri lulz
20:32 sri of course shift->begin(0)->&* works
20:32 sri i wasn't even sure what ->&* actually did... but it works
20:33 Grinnz lol
20:34 sri oh right
20:34 sri equal to &{shift->begin(0)}
20:34 sri which also works
20:34 * sri pokes jberger
20:39 Ptolemarch joined #mojo
20:40 jberger wait, my suggestion does work?
20:42 disputin joined #mojo
20:42 sri yea, without the (@_)
20:42 jberger :o
20:42 jberger sharing @_ explicitly
20:42 Grinnz oh god
20:42 jberger yikes
20:42 Grinnz i forgot that happens
20:42 Grinnz lol
20:43 jberger modern Perl4
20:43 jberger :P
20:49 sri that's actually very very useful for tail-call optimization
20:50 sri sub foo { @_ = ('foo', 'bar'); goto &foo; }
20:50 jberger yessir
20:50 jberger I do that when I see the need
20:52 sri kentnl came up with a minimal example that sums up the problem really well http://paste.scsys.co.uk/459374
20:54 reneeb joined #mojo
20:54 jberger just remember that python doesn't allow TCO at all, because guido says so
20:55 jberger and the recusion stack is limited to 1000 too btw
20:55 jberger http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html
20:55 jberger thus speaketh the guido
20:55 sri :)
20:56 Grinnz i have no idea what you guys are talking about now, but its ok
20:57 sri now that you mention it... i don't use TCO enough
20:57 sri i wonder if HTML could be rendered with TCO
20:57 sri https://github.com/kraih/mojo/blob/master/lib/Mojo/DOM/HTML.pm#L198-L244
20:57 andreoss` joined #mojo
21:00 jberger Grinnz: try this
21:00 jberger perl -Maliased=Devel::StackTrace -E 'my $i; sub doit { die StackTrace->new if $i++ == 90; &doit }; doit()'
21:01 jberger you get a stack trace that is 90 frames
21:01 jberger now put "goto" before &doit
21:02 jberger you basically say that you are done with the stack frame, even though you are still going to call one more function
21:02 jberger makes recursion a lot less heavy when all you care about is the result
21:02 rem_lex joined #mojo
21:02 Grinnz ah
21:02 Grinnz so, it doesn't return to the previous doit() call after?
21:03 jberger the next call replaces the current one
21:03 Grinnz right, i remember that functionality of goto now
21:05 Grinnz still something i would at least add a comment to, if i were to ever use it :P
21:09 sri # TCO
21:09 Grinnz lol
21:09 Vertig0 joined #mojo
21:09 Grinnz "What does goto have to do with total cost of ownership?"
21:12 Ptolemarch joined #mojo
21:12 jberger less money on RAM!
21:12 jberger :-)
21:12 sri \o/
21:20 ashimema joined #mojo
21:26 reneeb joined #mojo
21:51 Averna joined #mojo
21:54 Averna left #mojo
21:55 asarch joined #mojo
22:05 rem_lex joined #mojo
22:27 * jberger now has AssetPack in dev tree at $work
22:28 jberger that makes Mojolicious, AssetPack, Plugin::Humane, Minion, and ForkCall
22:28 * jberger hopes we know what we are doing :-)
22:28 jberger btw, the front-end dev was very interested in AssetPack when I showed it off
22:28 cfedde step 3? World Domination!
22:31 Grinnz is the assetpack plugin usable if i'm not using ep templates? just curious
22:31 Grinnz like, could i call it from the app and then stick the result in the template myself
22:32 Grinnz i might show it to the frontend guys and see what they think (they have a pretty complex system setup to handle this atm)
22:33 jberger Grinnz: do you have access to the controller in the template?
22:33 Grinnz no
22:33 jberger cause basically you can do anything you want if you do
22:33 odin22 joined #mojo
22:33 jberger seems like something you might want to do
22:33 Grinnz i mean, maybe, but i don't want to
22:33 Grinnz i don't like the idea of templates accessing perl state
22:34 jberger so don't do that :-P
22:34 Grinnz it's using template toolkit
22:34 jberger I guess you could generate the asset links and then pass them to the template
22:35 * jberger dislikes TT
22:35 jberger but I know others like it
22:38 Grinnz would that be something like: $self->asset('something.js', ...); my $asset = $self->asset('something.js'); # send $asset to the template?
22:39 jberger yeah
22:39 jberger but https://metacpan.org/pod/Mojolicious::Plugin::TtRenderer#c
22:39 Grinnz i'm not using that plugin
22:39 jberger k
22:40 Grinnz this kind of stuff makes me anxious, too PHP-ish
22:42 jberger I wonder about a pattern I have been falling into
22:42 jberger maybe I should ask
22:43 Grinnz also the main reason i am using a custom plugin for template rendering is because our templates are named .tmpl
22:43 jberger I have a couple huge templates I'm porting from HTML::Mason to Mojo
22:43 Grinnz no .tt or anything like that, it's known they're tt
22:44 jberger so sometimes, where there was a block of code in the template, I have been moving the logic to a controller method, and then invoking the method in the template
22:44 jberger for the most part, these are doing big db queries and returning a data structure
22:44 jberger I could stash them all, but there are a bunch and this seemed more expedient
22:45 jberger the data structure is then used in a typical acceptable template fashion
22:45 Grinnz that kind of thing i would do before the template is even involved
22:45 Grinnz but we don't have a lot of stuff where the database maps nicely to what the JS wants
22:46 jberger I would probably prefer it, but I worry about there being so many stash variables that that will get to look like a black art
22:46 jberger $c->get_data_for_this seems to look better than $data_for_this and having a controller method that gets huge
22:47 jberger but I keep debating it in my head
22:47 Grinnz you can still have it as a separate method, just called in the controller instead of the template
22:47 jberger I suppose
22:48 jberger maybe that's what I will do, port it this way, then go back and change those into stash variables
22:48 Grinnz thats essentially what all our DB queries are, some function in another module that queries the DB and returns a known data structure
22:48 jberger Grinnz: I'm working on getting the business logic into non-controllers, but getting them out of the template seems like a better first step than not
22:49 sri jberger: i think pull templates are fine
22:49 jberger is that the name of that pattern?
22:49 sri as long as the line between controller and model doesn't get blurry it's all good
22:50 jberger the next step will be to clarify that line
22:50 Grinnz i think keeping the business logic as isolated as possible is a good idea
22:50 jberger Grinnz: absolutely, but you didn't inherit the legacy code base I did
22:50 jberger :-P
22:50 Grinnz hehe
22:50 sri yea, if you pull or push the data from/to the template is not as important
22:51 jberger ok, I see how the name work,
22:51 jberger works
22:51 sri dunno if it's an actual pattern, but i see the name commonly
22:56 cpan_mojo Mojolicious-Plugin-ViewBuilder 0.05 by MUDLER - http://metacpan.org/release/MUDLER/Mojolicious-Plugin-ViewBuilder-0.05
22:58 disputin joined #mojo
23:02 kaare_ joined #mojo
23:03 jberger sri: sure, its kinda small to be called a pattern, but still having a name is useful
23:04 cpan_mojo Mojolicious-Plugin-ViewBuilder 0.06 by MUDLER - http://metacpan.org/release/MUDLER/Mojolicious-Plugin-ViewBuilder-0.06
23:04 Grinnz what's in a name?
23:05 Grinnz come on purl don't leave me hanging
23:24 jberger Grinnz: calling a controller method which returns data, versus stashing data
23:25 jberger pull vs push

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