perlでgoogleログイン

perlgoogleにログインし、ログインしないとアクセスできないコンテンツへのアクセスを可能にする。
Mechanizeを用いて行う。

WWW::Mechanizeのインストール

$ cpanm WWW::Mechanize

ログインするgoogleアカウントのconfigファイルを作成

$ cat .config.pl

return +{
    Email => 'xxxxxxxx@gmail.com',
    Passwd => '***************',
};

ソースコード

#!/usr/bin/env perl

use strict;
use warnings;

use WWW::Mechanize;

# login
my $login_url = 'https://www.google.com/accounts/Login?hl=ja&continue=http://www.google.co.jp/';

my $mech = WWW::Mechanize->new();
$mech->get( $login_url );
$mech->submit_form(
    form_number => 1,
    fields => do '.config.pl',
);

# access google contents
$mech->get('https://www.google.com/........');
print $mech->content();

rubyでgoogleログイン

rubygoogleにログインし、ログインしないとアクセスできないコンテンツへのアクセスを可能にする。
Mechanizeを用いて行う。


perlでやったことをrubyでやる。
perlでgoogleログイン - 勉強めも

gemのインストール

$ gem install mechanize

ソースコード

#!/usr/bin/env ruby

require 'rubygem'
require 'mechanize'
# require 'kconv' # <- マルチバイト文字列があるとき必要?
require 'pp'

def main()

   agent = Mechanize.new

    login = 'https://www.google.com/accounts/Login?hl=ja&continue=http://www.google.co.jp/'
    agent.get( login );

    form = agent.page.forms.first
    form.Email  = 'xxxxxxxxx@gmail.com'
    form.Passwd = '***************'

    agent.submit(form)

    agent.get( 'https://www.google.com/.......')
    puts agent.page.body
end

main()

lionでのper環境

lionOSでperl使おうと思うと、ちょっと今までと違ったのでメモ。


システムperlとして最初から5.12.3という新しめのものがはいっているが、lionOSの使用なのかほとんどのモジュールがビルド失敗するような形になってしまう。
(cpanmを使ってLWP::UserAgentいれようとおもったけどできなかった)


調べるとperlbrewも現状ではpatchをあてないとうまく動作しないことがわかったので、あててみる。
http://www.perlbrew.pl/FixLion.html

$ export PERLBREW_ROOT=${HOME}/perl5/perlbrew
$ curl -k -L https://raw.github.com/gist/962406/93cd90f5e6c6a86073afb3815f0ea06c3c9e99ed/patchperl -o ${PERLBREW_ROOT}/bin/patchperl
$ chmod +x $_

$ perlbrew install perl-5.15.1

これでうまくインストールできるようになり、cpanmでのモジュールインストールも問題なく行えるようになった。

ROCK IN JAPAN 2011にいってきた

人生初ライブをROCK IN JAPAN 2011でデビューしました。
見たアーティストとか来年への目もとか。

  • Route
    1. 7時起床。友人二人をひろって現地へ。
    2. 渋滞なし。サービスエリアによってもおつりがくる。
    3. glassステージへ。Puffy、乾杯、蟹たべにいこう。
    4. lakeステージへ移動し、スガシカオ。すごい人数。
    5. 再びglassステージへ。ACIDMAN。まだLIVEに乗り切れない。2列目でえんやこら。一番日差しがつよかった。ばて。
    6. lakeステージでFact。おめん。
    7. 途中で切り上げて森のガーデンでごはんかってムック。ビジュアル系。
    8. 途中で切り上げてONE OK ROCK。フロントをこころみるがスタート直後のもみくちゃに耐えきれず少し後ろの方へ。でもいいね!!
    9. これがライブか!!
    10. 少しばてながら、三たびglassステージへ移動。
    11. 9mm うおおおおお!はいっ!!はいっ!!LIVE!!LIVE!!
    12. ばてばてというか、もうだめ。
    13. coldrainに移動しながらの水分補給 -> 寝
    14. 吉井さん。エルレのギタリスト登場。
    15. BRAHMAN。ダイブ!ダイブ!!ダイブ!!!
    16. 花火。
    17. 帰路。高速乗るまでが渋滞。それいこうはスムーズ。
    18. 11時くらい、着
  • 反省
    • 靴必須。ビーサンだめ。もったいないことした!!
    • タオルは多めに。最低2枚。1枚は大きなタオル。(物販でタオルを買うというのがベストな気がする。)
    • 飲み物とか食べ物とか中途半端にもっていくくらいなら、手ぶらでいって現地調達がベスト。
    • うちわが意外と武器になった。
    • 出発する前の準備として、かえったら風呂はいって寝るだけ、みたいな状況を作っておくと◎
    • このアーティスト知ってる!となったらオールラウンドに聞いておく。のれる。
    • このアーティスト興味あるー、はフロントいくには厳しい。いくならそれ相応のテンションと覚悟で。


来年もまたいきたい!!

PHPで大きい数値を比較する

phpの32bit環境で大きい数値を比較したい。
比較対象の数値データはデータベースに保存されていて、いくつかに分かれている。
それぞれの数値をSELECTで取得し、加算して比較する。

そのさい、

if ( intval( $num1 ) < intval( $num2 ) ) {

のようにintvalで「数値化」して比較していた。


上記のような状態でソースコードがあり、数値が大きくなったときに条件式がうまく動かない、というバグがあるらしい。
調べたら、intvalは数値をintとして変換するため、32bit環境では限界がある。

http://php.net/manual/ja/function.intval.php

比較しているのがbyte単位での数値だったので、KB/MB単位で比較するようにするか、GB単位ほどの比較であればfloatにキャストすればいいかなと思った。

<?php
    $num = '12345678901234';

    var_dump( $num );
    var_dump( intval( $num ) );
    var_dump( (int)$num );
    var_dump( (float)$num );

string(14) "12345678901234"
int(2147483647)
int(2147483647)
float(12345678901234)

macでruby初め

インストール

$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10]
  • 後ほど、rvmに切り替えた。

入門してみる


ちょっとまだ慣れない。

さくらのレンタルサーバでデフォルトのシェルを変更する

perlbrewをさくらのレンタルサーバで使おうと思ったら、bash読み込む時点でsetenvコマンドがないといわれた。

bash: setenv: command not found
bash: setenv: command not found
bash: setenv: command not found

調べると、setenvコマンドはcshなどの場合の環境変数設定コマンドで、bashでは使えない。
そもそもデフォルトのシェルがcshっぽいので、それをbashに変えて、再度perlbrewのinit処理をした。

$ chsh -s /usr/local/bin/bash
Password: (loginパスワード)

$ ~/perl5/perlbrew/bin/perlbrew init
$ source ~/perl5/perlbrew/etc/bashrc