アーカイブ - 9月, 2013



2013年 9月 29

前にRubyの勉強会に参加した時に irb を教えてもらって、便利だったのでPerlでも同じようなことが出来ないかググったら出来るみたい。

Perl5 で REPL(Read-Eval-Print-Loop)をつかいたければ、perl -de 1 をつかえばいい。

  DB<1> $x = 1;
  DB<2> print $x;
1

ただしレキシカルスコープが保存されないとの事。

my $x = 1;
print $x;

が正しく動作しない。

で、解決法として Eval::WithLexicals が紹介されている。付属の tinyrepl コマンドを使えばレキシカルスコープが使える。その代わりにグローバル変数を使うと怒られる。

$ tinyrepl
re.pl$ $x = 1;
"Error!"
"Global symbol \"\$x\" requires explicit package name at (eval) line 1, <FIN> line 1.\nBEGIN not safe after errors--compilation aborted at (eval) line 3, <FIN> line 1.\n"

コマンドラインでちょっとコードを試したい時とかに使うくらいなので、レキシカルスコープとか要らないかな。で、面倒なので ipl コマンドで perl -de 1 が使えるようにしておく。Pathが通っている場所に

$ vi ipl

#!/bin/sh
perl -de 1

$ chmod +x ipl

ってコマンド作っておく。

すぐに追記: postしたらすぐに教えて頂いた。最近ではreplyっていうのがおすすめらしい。

perlのREPL近状 – やわらかコード

なるほどググると情報ありますね。あとで試してみよう。


Filed under: perl

Trackback Uri






2013年 9月 29

プロファイルIDの設定

# Insert your numeric Analytics profile ID here. You can find it under
# profile settings. DO NOT use your account or property ID (UA-nnnnnn).
my $profile_id    = "1234567";

とあるけど、迷ったのでメモ。

なお、現在ではプロファイルIDではなくビューIDという名称になっている。

Advent Calendarに

https://www.google.com/analytics/web/#report/visitors-overview/aXXXXXXXXwYYYYYYYYpZZZZZZZZ/

「XXXXXXXX」「YYYYYYYY」「ZZZZZZZZ」の部分にはそれぞれ数値があてはまるのですが(桁数は8桁固定ではない),これらのうちの「ZZZZZZZZ」がプロファイルIDとなります.

とあって、URLから分かるみたい。Analyticsの管理画面からだと アナリティクスの設定 > ビュー設定 にある。

Analytics

Analytics

取得できるデータ一覧

Dimensions & Metrics Reference – Google Analytics — Google Developers

参考


Filed under: perl,perlモジュール

Trackback Uri






2013年 9月 27

エラーredirect_uri_mismatch

refresh_access_tokenの取得

Google AnalyticsのAPIを活用してごにょごにょしたくてPerlでGoogle AnalyticsへアクセスするならNet::Google::Analyticsが便利 – ゆーすけべー日記を参考に試していたのだけれど、refresh_access_tokenが取得できない。

use Net::Google::Analytics::OAuth2;

my $oauth = Net::Google::Analytics::OAuth2->new(
    client_id     => 'your_client_id',
    client_secret => 'your_client_secret',
);

$oauth->interactive;

refresh_access_tokenを取得するのに上記のようなコードを実行する。

$ ./analytics.pl 
Please visit the following URL, grant access to this application, and enter
the code you will be shown:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=your_client_id&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fanalytics.readonly

Enter code: 

実行すると表示されるURLにアクセスして入手できるコードを入力し

エラー内容はこんなの

エラーredirect_uri_mismatch

The redirect URI in the request: urn:ietf:wg:oauth:2.0:oob did not match a registered redirect URI

このエラーはリダイレクトするURIが正しく設定されていないため表示されるので引数を足してあげるとうまくいく。

my $analytics = Net::Google::Analytics->new;
my $oauth = Net::Google::Analytics::OAuth2->new(
        client_id => 'your_client_id',
        client_secret => 'your_client_secret',
        redirect_uri => 'http://localhost/oauth2callback',
);
$oauth->interactive;

らしいのだけど、まだエラーが出る。

解決方法

Google Cloud Consoleへ行ってAPIの設定をする

https://cloud.google.com/console#/projectへ行き、設定する。

特に重要そうな項目は

  • 「APIと認証 > 登録済みアプリ > OAuth 2.0 クライアントID」の項目中の「リダイレクトURI」を設定する
  • 「APIと認証 > 登録済みアプリ > 同意画面 の設定

ここに漏れがあるとエラーになります。また、ここで設定するリダイレクトURIとリクエストするredirect_uriが一致しないとエラーが出ます。

Refresh tokenが表示されない対処

Net::Google::Analytics::OAuth2 ’3.01′ では approval_prompt、access_type のパラメータは、考慮されていないようなので refresh_token の取得スクリプトに表示されたものに approval_prompt=force&access_type=offline を追記してアクセスし

という事なので、先程のURLに approval_prompt=force&access_type=offline を足してアクセスすればおk.

参考

Filed under: perl,perlモジュール

Trackback Uri






2013年 9月 25

※何故か記載が全体的にORDER BY句になっていたので修正…

DBIx::SkinnyでGROUP BY句を使う

DBIx::SkinnyでGROUP BY句は使えないっぽい。マニュアルにも無い。Tengでは使えるみたいだけれど。resultsetでSQL組み立てれば出来るのかと思ったのだけれどどうも無理っぽい。

で、ググっていたらテストにそれらしい記述があるのを発見。ただし、DBIx::Skinny::Pager のテスト。
https://github.com/walf443/p5-dbix-skinny-pager/blob/master/t/02-functional.t

$rs->group({ column => ‘カラム名’ });

どうやら groupというメソッドがあるようだ。やっぱりマニュアルに載ってないけど。

作っているwebアプリはページング処理をするために丁度 DBIx::Skinny::Pager を使ってたのでこの方法で。

コード

  my $rs = $self->resultset_with_pager('MySQLFoundRows');
  $rs->select([qw/
        entry_id
        entry_title
      /]);
  $rs->from(['entry']);
  $rs->group({ column => 'category' });
  $rs->add_where( entry_status => 'public' );

構築されるSQL

SELECT SQL_CALC_FOUND_ROWS entry_id, entry_title
FROM entry
WHERE (entry_status = ?)
GROUP BY category

生SQL使えばいい問題なんだけどね 😛


Filed under: MySQL,perl,perlモジュール

Trackback Uri






2013年 9月 23

YAPC::Asia 2013 個人スポンサーの提灯

公式サイト:YAPC::Asia Tokyo 2013
2013/9/20-22で行われたYAPC::Asiaに初めて参加してきました。日頃からCPAN含め、Perl mongersの方々には(間接的に)お世話になっているので感謝の意味も含め個人スポンサー枠で参加しました。なんとTシャツ付き。写真のミニ提灯も特典として会場に飾られていました。

ノベルティグッズ

YAPC::Asia Tシャツ

YAPC::Asia 2013 パンフレット&配布ノベルティを全て紹介を読んで知ったのですが、ホントは個人スポンサー特典として別のTシャツもあったみたい…orz 残念

会場

会場の慶應義塾日吉キャンパスは、非常に設備が整っていました。建物とかトイレとか超キレイだし、コンビニやTULLY’S、Barまであって、こんな所で日頃からキャッキャウフフしていると思うと暴発しろ!って思いますね(ウソ

メインホールは全席電源完備(最前列には無かったですね)で、ノートやスマホの電源確保出来て非常に助かりました。最後の方で気がついたのですが、座席ごとにミニテーブルがあってこれ使うとノート置くのに最高に便利でした。

ブース

会場にはいろいろなブースが出ていました!
ブース
ブース
ブース

ネットワーク

会場内はネットワークも充実していて、ストレス無くネットに繋がって、postしまくり出来ました。ネットワークチームに感謝!
ネットワークチームの方々

レポート

各セッションのレポートはgihyoや他の方のエントリーで確認すると良いと思われます。参加者が書いたエントリーも続々!

各トークのレポートは時間が開いた時に別エントリ書きます(多分)

2013/9/21

現地に到着したのがお昼くらいだったので、日吉でおすすめなラーメンを食しに。到着早々、ビールとラーメン頂きました。ゲフ。
極楽汁麺 らすた

個人的に聞いたセッション

大人のYAPC

非公式イベントながら個人的にメインイベント。このために宿泊で参加したようなものですが・・・詳しくは書けません(汗)書くと牧さんが◯しにやってきます。

内容はxxxxxx。

やっぱり自分の居場所はここだ、と。そんな感じのイベントでした。全然分かりませんねw ただ、まじめに研究して作ったものを還元しているという意味では他のサービスと変わらないと思います。…難しい。もう、参加者特典としか言い様がないですね、これは。参加できたのはラッキーでした!

2013/9/22

個人的に聞いたセッション

途中、(心の)師匠であるゆーすけべーさんにサインをねだり、webアプリに関してのアドバイスを頂いたり氏のセッションの感想など談話できました。ベストスピーカー賞おめでとうございます!

2日目はトーク聞きながら #yapcasiaでpostしまくりました。電波楽しい。

ランチ交流企画

2日目のランチセッションに申し込んでいたのですが、開催数日前にランチ交流企画があるのを知り、こちらの方が楽しそうかな?と思い、事前にランチセッションをキャンセルさせて頂きました。

朝グループ分けのくじを引いて、当日の12:00に集合。グループ分けの後、お弁当がもらえるグループを発表するという流れ。自分のグループは「16」で4人揃ったのですが、お弁当がもらえるグループは素数…orz

でも、結構余ったようで結果的にお弁当を頂きました。会場内は飲食禁止でしたので、外で食事しながら、懇親させて頂きました。ぼっち参加者にもやさしい企画で感謝!

YAPC::Asia 2013 勝手に後夜祭

atnd YAPC::Asia 2013 勝手に後夜祭

気付くのが遅く、補欠でエントリしていたのですが、主宰のご厚意で枠を広げて頂いたようで参加することが出来ました。参加者60人超と大所帯で、貸し切りのお店の中はキャパ以上のperl mongersで埋まっていました。

お好み焼き、もんじゃ、海鮮なんかを焼きながらのビールで最高!鉄板焼きのお店ということで、その熱も手伝って激アツな懇親会でした!

酔った勢いで宮川さんにもサイン頼めたし最高!(もっとねだりたかったけど)
YAPCで貰ったサイン
ゆーすけべーさんと弾さんと宮川さんのサイン入りホルダー

勝手に後夜祭の後夜祭

後夜祭は帰りの電車の都合上、早々に切り上げて帰宅する予定だったのですが、なぜか hachioji.pm界隈の方々と始発まで飲み明かすことに。どうゆう経緯で参加することになったか全く覚えていません(汗

とりあえず八王子まで移動し、居酒屋さんにて朝まで飲み明かしました。

今後のPerlやYAPCについての熱い話が聞けたりして貴重な時間を過ごせました。せっかく懇親できたのにだいぶ酔っててtwitter IDの交換忘れてて残念な感じなので覚えがある方フォローなりmentionなり飛ばして頂けたら幸いです!

YAPCはずっと気になっていたのだけれど、なかなか参加する機会に恵まれずにいたので参加できて本当に良かったです!

YAPC最高!来年の開催も期待しています!


Filed under: 勉強会

Trackback Uri