アーカイブ - 8月, 2015



2015年 8月 26

YAPC::Asia Tokyo 2015
8/20〜8/22

ブログを書くまでがYAPCなので簡単なレポートを。

days0

21日は朝一からLarryのトークがあるので前泊で参加。前夜祭には残念ながら間に合わなかったけれど、タイムライン見る限りだとかなりの数(500〜600?)が集まっていた様子。用意されていたドリンクが瞬殺されていたとか。

Gunma.webの@kanayannetも泊まりできているとの事なので明日に備えて飲みに行くことに。

days1

今回の会場は東京ビッグサイト。初めて行ったのだけど、でかい施設。
ビックサイト

聞いたトーク

Larry Wall

@moznion

今年も無限コーヒーあった。

無限コーヒー

カップがオシャレ

カップ

Larryと近藤さんにサインを頂いた。

サイン

ノベルティの数々

今回も個人スポンサー枠での参加だったのでたくさんのノベルティが入っていた。Tシャツが2枚入っていたので着替えに重宝しましたw

YAPC::Asia Tokyo2015 ノベルティ

で、今回の特に良かったのはYAPCオリジナルタンブラー。このサイズとても良い。芋焼酎ロックで飲む時に最適なサイズです。今年買うか迷っていたのでグットタイミングでした。

YAPCタンブラー

懇親会

YAPC::Asia Tokyo 2015 懇親会

600人分用意されていたそうで、かなり大きな会場でした。いろいろな人と交流出来て楽しかったです。

2次回

Mishima.pmの@dokechinさんと飲み歩き

days2

聞いたトーク

【特別企画】YAPCあるある が聞きたかった

ランチセッションのお弁当。豪華。

ランチセッションの弁当

懇親会

五反田で行われた懇親会に合流させてもらいました。片道エスカレーターという不思議なお店に。

隣に階段があるのに…。

2次回、3次回…

days3(?)

YAPC::Asia 2015 Hackathon

Microsoftの品川セミナールームで行われました。実はずっと参加するか迷っていたのですが、初日の懇親会の帰りに出会った@tatsushi_dさんと迷った挙句、勢いでエントリーしたのでした。

Microsoft

眺めは最高!
セミナールーム

無限お菓子
無限お菓子

午前中はYAPCスピーカーのBen Ogleさんと@mizchiさんのトーク。Electronに関して色々知見を得ました。それと、Microsoftの方のトークを聞きました。Macを広げた視聴者を目前に自虐ネタ、面白かったです。

Hackathon自体、参加するのが初めてだったので何をするか分からなかったのですが、基本もくもく会の様子。特に作業を考えていなかったので発表にあったElectoronを触ってみることに。

Qiitaにあったサンプルアプリの作成エントリーを写経しながらサンプルアプリを動かしました。

途中、Microsoftのデータセンター模型の見学ツアーに参加したりして有意義な時間を過ごしました。

連日の飲み明かしで体力の限界を感じ、17時頃退散。あ、同じフロアにいたイベントはこちらとは雰囲気が正反対だった模様。ガッデム。

最後に

参加者総勢2130人と最大規模で行われた今回のYAPC。YAPC::Asia Tokyoとしては今回が最後になるとの事で非常に残念ではありますが、沢山の人に出会えたこと、様々な刺激を受けたことに感謝したいと思います。

また、今回のYAPC及びにいままでのYAPCを支えて下さった運営スタッフの方々、お疲れ様でした!

YAPC++
YAPC++

追伸

地方.pmを開催してみるのも良いかもしれません。


Filed under: 勉強会

Trackback Uri






2015年 8月 1

plenvをhomebrewでインストールしたから?

  1. 新しいユーザー作成
  2. gitでplenvインストール
  3. Web::Scraperインストール

やはりscraperコマンド使えない…。

$ find ~/ -name scraper
.cpanm/work/1437464088.4723/Web-Scraper-0.38/bin/scraper

ソースはあるようなのだが…。しかたがないので手動で設置。

scraper コマンドを作成

~/.plenv/shims に他のコマンドが置いてあるようなので、ここに設置。

$ cd ~/.plenv/shims
$ touch scraper
$ chmod 755 ./scraper

catしたscraperコマンドのコード

先程作ったファイル(コマンド)を編集する。1行目は #!/usr/bin/env perl に変更すること。

#!/usr/bin/perl
use strict;
use warnings;

use Config;
use Term::ReadLine;
use Data::Dumper;
use HTML::Entities;
use URI;
use Web::Scraper;
use YAML;

sub WARN() {
    return sub {
        warn $_->isTextNode
            ? HTML::Entities::encode($_->as_XML, q("'<>&))
            : $_->as_HTML(q('"&<>), "", {});
    };
}

my $print = sub {
    if ($ENV{PAGER}) {
        open my $pager, "|$ENV{PAGER}";
        print $pager @_;
    } else {
        print @_;

    }
};

my(@stack, $source);

my $stuff   = process_args($ARGV[0])
    or die "Usage: scraper [URI-or-filename]\n";

my $term    = Term::ReadLine->new("Web::Scraper");
my $scraper = scraper { run_loop($_[0], $term) };
   $scraper->user_agent->env_proxy;

my $result  = $scraper->scrape($stuff);

sub process_args {
    my $uri = shift;

    if (!-t STDIN and my $content = join "", <STDIN>) {
        $source = [ 'stdin' ];
        return \$content;
    } elsif ($uri && $uri =~ m!^https?://!) {
        $source = [ "URI", $uri ];
        return URI->new($uri);
    } elsif ($uri && -e $uri) {
        $source = [ 'file', $uri ];
        open my $fh, "<", $uri or die "$uri: $!";
        return join "", <$fh>;
    }

    return;
}

sub run_loop {
    my($tree, $term) = @_;
    while (defined(my $in = $term->readline("scraper> "))) {
        if ($in eq 'd') {
            $Data::Dumper::Indent = 1;
            warn Dumper result;
        } elsif ($in eq 'y') {
            warn Dump result;
        } elsif ($in eq 's') {
            $print->($tree->as_HTML(q('"&<>), "  ", {}));
        } elsif ($in eq 'q') {
            return;
        } elsif ($in eq 'c') {
            print generate_code($source, $stack[-1]);
        } elsif ($in =~ /^c\s+all\s*$/) {
            print generate_code($source, @stack);
        } else {
            my $res = eval $in;
            warn $@ if $@;
            push @stack, $in unless $@;
        }
    }
}

sub generate_code {
    my($source, @stack) = @_;

    my $code_stack = join "\n", map { "    $_" . (/;$/ ? "" : ";") } @stack;
    my($var, $stuff) =
        $source->[0] eq 'stdin'         ? ('$input', '\join "", <STDIN>') :
        $source->[0] eq 'URI'           ? ('$uri',   qq(URI->new("$source->[1]"))) :
        $source->[0] eq 'file'          ? ('$file',  qq(\\do { my \$file = "$source->[1]"; open my \$fh, \$file or die "\$file: \$!"; join '', <\$fh> })) :
                                          '...';

return <<CODE;
#!$Config{perlpath}
use strict;
use Web::Scraper;
use URI;

my $var = $stuff;
my \$scraper = scraper {
$code_stack
};
my \$result = \$scraper->scrape($var);
CODE

}

とりあえず scraperコマンドが使えるようになった。


Filed under: perl

Trackback Uri