20 modules i haven't yet talked about

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

5 comments

Comments 1 - 5 of 5 previous next Post a comment

  • + miyagawa Tatsuhiko Miyagawa 2 years ago
    VIdeo o f this talk is now available at http://conferences.yapcasia.org/ya2008/talk/1026
  • + miyagawa Tatsuhiko Miyagawa 2 years ago
    claes: I’ll check it out. I just installed libjs-dev or something on debian but i couldn’t find the equivalent on OS X, at least when I tried to install the module the night before the presentation :)
  • + claes claes 2 years ago
    SpiderMonkey and OS X works just fine together. In fact, that’s what I develop JavaScript.pm on.

    I keep a install under ~/local/js17/(lib, include, bin, mac) and make sure the lib dir is in my DYLD_LIBRARY_PATH. Hateful yes, but it works.
  • + miyagawa Tatsuhiko Miyagawa 2 years ago
    it was just 20 minutes :)
  • + rjbs Ricardo Signes 2 years ago
    Very cool! How long did you take to deliver this talk? any(5,20)->minutes?
Post a comment
Embed Video
Edit your comment Cancel

2 Favorites, 1 Group & 1 Event

20 modules i haven't yet talked about - Presentation Transcript

  1. use HTTP::ProxyPAC; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $uri = URI->new(\"http://portal.titech.ac.jp/proxy.pac\"); my $pac = HTTP::ProxyPAC->new($uri); my $res = $pac->find_proxy(\"http://www.google.com/\"); if ($res->direct) { # ... } elsif ($res->proxy) { $ua->proxy('http' => $res->proxy); }
  2. use JavaScript::Runtime; sub init { my($class, $code) = @_; my $runtime = JavaScript::Runtime->new; my $context = $runtime->create_context(); for my $func (@HTTP::ProxyPAC::Functions::PACFunctions) { no strict 'refs'; $context->bind_function( name => $func, func => sub { &{\"HTTP::ProxyPAC::Functions::$func\"}(@_) }); } $context->eval($code); bless { context => $context }, $class; }
  3. package HTTP::ProxyPAC::Functions; # stolen from HTTP::ProxyAutoConfig sub isPlainHostName { my ($host) = @_; return (($host =~ /\\./) ? 0 : 1); } sub dnsResolve { my ($host) = @_; return unless isResolvable($host); return inet_ntoa(inet_aton($host)); } sub myIpAddress { return inet_ntoa(inet_aton(hostname())); }
  4. use pQuery::DOM; my $v = pQuery::DOM->fromHTML('<div id=\"foo\">bar</div>') ->getElementById('foo')->innerHTML;
  5. use pQuery::DOM; no capitalization ‘pQuery::DOM’; my $v = pQuery::DOM->fromHTML('<div id=\"foo\">bar</div>') ->get_element_by_id('foo')->innerHTML;
  6. use PHP::Session; my $session = PHP::Session->new($id); # session id my $id = $session->id; # get/set session data my $foo = $session->get('foo'); $session->set(bar => $bar);
  7. when = 60.days.ago datasize = 200.megabytes
  8. use autobox; use autobox::DateTime::Duration; # equivalent to DateTime::Duration->new(months => 1, days => 2); $duration = 1->month + 2->days; # equivalent to DateTime->now->add(years => 2); $datetime = 2->years->from_now; # equivalent to DateTime->now->add(months => 4, years => 5); $datetime = (4->months + 5->years)->from_now; # equivalent to DateTime->now->subtract(days => 3); $datetime = 3->days->ago;
  9. my $ttl = 608400; # 7 days
  10. my $ttl = 608400; # 7 days 604800
  11. my $ttl = 24 * 60 * 60 * 7; # 7 days
  12. use Time::Duration::Parse; my $ttl = parse_duration “7 days”;
  13. $x = “\\x{5bae}”; # Unicode $y = “\\xe5\\xae\\xae”; # UTF-8 $z = $x . $y;
  14. $x = “\\x{5bae}”; # Unicode $y = “\\xe5\\xae\\xae”; # UTF-8 $z = $x . $y; \\x{5bae}\\x{e5}\\x{ae}\\x{ae}
  15. use Encode; $x = “\\x{5bae}”; # Unicode $y = “\\xe5\\xae\\xae”; # UTF-8 $z = $x . decode_utf8($y);
  16. use Encode::DoubleEncodedUTF8; $x = “\\x{5bae}”; # Unicode $y = “\\xe5\\xae\\xae”; # UTF-8 $z = $x . $y; $z = decode(“utf-8-de”, $z);
  17. my $latin1_as_utf8 = \"[\\xC2\\xC3][\\x80-\\xBF]\"; my $valid_utf8_regexp = <<'.' ; [\\x{00}-\\x{7f}] | [\\x{c2}-\\x{df}][\\x{80}-\\x{bf}] | \\x{e0} [\\x{a0}-\\x{bf}][\\x{80}-\\x{bf}] | [\\x{e1}-\\x{ec}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}] | \\x{ed} [\\x{80}-\\x{9f}][\\x{80}-\\x{bf}] | [\\x{ee}-\\x{ef}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}] | \\x{f0} [\\x{90}-\\x{bf}][\\x{80}-\\x{bf}] | [\\x{f1}-\\x{f3}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}] | \\x{f4} [\\x{80}-\\x{8f}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}] . sub decode { my($obj, $buf, $chk) = @_; $buf =~ s{((?:$latin1_as_utf8){2,3})}{ _check_utf8_bytes($1) }ego; $_[1] = '' if $chk; # this is what in-place edit means Encode::decode_utf8($buf); } sub _check_utf8_bytes { my $bytes = shift; my $copy = $bytes; my $possible_utf8 = ''; while ($copy =~ s/^(.)(.)//) { $possible_utf8 .= chr( (ord($1) << 6 & 0xff) | ord($2) ) } $possible_utf8 =~ /$valid_utf8_regexp/xo ? $possible_utf8 : $bytes; }
  18. use utf8; use URI::Find; my $text = <<TEXT; Japanese Wikipedia home page URL is http://ja.wikipedia.org/wiki/ TEXT my $finder = URI::Find->new(\\&cb); $finder->find(\\$text); sub cb { warn shift } # http://ja.wikipedia.org/wiki/
  19. use utf8; use URI::Find::UTF8; my $text = <<TEXT; Japanese Wikipedia home page URL is http://ja.wikipedia.org/wiki/ TEXT my $finder = URI::Find::UTF8->new(\\&cb); $finder->find(\\$text); sub cb { my($uri, $orig) = @_; } # http://ja.wikipedia.org/wiki/
  20. use Lingua::JA::Hepburn::Passport; my $hepburn = Lingua::JA::Hepburn::Passport->new; $hepburn->romanize(\" \"); # KATO SHUHEI
  21. my $user = “miyagawa”; my $pass = “blahblah”; $api->login($user, $pass);
  22. use LWP::UserAgent::Keychain; my $ua = LWP::UserAgent::Keychain->new; $ua->get(\"http://proteceted.example.com/\");
  23. <?xml version=”1.0”?> <heroes>Larry & Schwern</heroes>
  24. <?xml version=”1.0”?> <heroes>Larry &amp; Schwern</heroes>
  25. <?xml version=”1.0”?> <shout>I &hearts; Perl</shout>
  26. <?xml version=”1.0”?> <shout>I &#x2665; Perl</shout>
  27. <?xml version=”1.0”?> <div> <a href=”/search?q=YAPC&Asia”>link</a> </div>
  28. <?xml version=”1.0”?> <div> <a href=”/search?q=YAPC&amp;Asia”>link</a> </div>
  29. <?xml version=”1.0”?> <rss> <channel> <item> <summary>YAPC rocks</summary> <xhtml:body> YAPC <xhtml:strong>really</xhtml:strong> rocks. </xhtml:body> </item> </channel> </rss>
  30. <?xml version=”1.0”?> <rss xmlns:xhtml=”http://www.w3.org/1999/xhtml”> <channel> <item> <summary>YAPC rocks</summary> <xhtml:body> YAPC <xhtml:strong>really</xhtml:strong> rocks. </xhtml:body> </item> </channel> </rss>
  31. use XML::LibXML; my $parser = XML::LibXML->new; my $doc = $parse->parse_string($xml);
  32. use XML::Liberal; my $parser = XML::Liberal->new(‘LibXML’); my $doc = $parse->parse_string($xml);

+ Tatsuhiko MiyagawaTatsuhiko Miyagawa, 2 years ago

custom

6921 views, 2 favs, 2 embeds more stats

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 6921
    • 6918 on SlideShare
    • 3 from embeds
  • Comments 5
  • Favorites 2
  • Downloads 35
Most viewed embeds
  • 2 views on http://hype-free.blogspot.com
  • 1 views on http://localhost

more

All embeds
  • 2 views on http://hype-free.blogspot.com
  • 1 views on http://localhost

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Groups / Events