目の前に僕らの道がある

勉強会とか、技術的にはまったことのメモ

perl

$GREP_OPTIONSが原因でperlのビルドが失敗した件

perl-5.14.2を使いたいなと思い、何気なくperlbrew経由でインストールしようとしたら、なにやらビルドに失敗してしまいました。 % perlbrew install perl-5.14.2 # ... 中略 # Bのビルドに失敗している模様 Running Makefile.PL in ext/B ../../miniperl -I.…

特定ネットワーク内のマシン情報が知りたい。続き

特定ネットワーク内のマシン情報が知りたい。 http://d.hatena.ne.jp/masasuz/20110416/1302964053 の続きNet::SNMPはノンブロッキング通信ができるので、試してみた。ソースはこんな感じ。結果はこんな感じ。同一ネットワークにだいたい220ノードくらいあり…

特定のアドレスブロックのノードに対してほげほげしたい。

Net::IPを使うタイプ 直感的じゃないし、動作がもっさりしています。 Net::Netmaskを使うタイプ こっちの方がやりたいことが何となく明確かな。 PODをざっと読んで書いたので、こういう使い方で良いのかはちょっと調べないと。

Class::Singletonを試してみる。

何気なしにソースを眺めてみたら短かったので試してみた。 とりあえず、覚えるべきは、instance()とhas_instance()、_new_instance()のみ。 instance() インスタンスを返す。まだ生成されていない場合は_new_instance()を呼んで新しいインスタンスを生成する…

MySQL::Sandboxを試してみた。

先輩にMySQL::Sandbox便利だよと言われたので、ちょっくら試してみる。 その前に。開発環境の構築。 今回はいつものDebian lenny君ではなくUbuntu 10.10 amd64なのでまずPerlの環境を作るところから。 cpanmのインストール optbin_dir=${HOME}/opt/bin if [ …

MogileFSを触ってみる

状態確認 mogadm --trackers=192.168.1.100:7003 check 統計情報 mogadm --trackers=192.168.1.100:7003 stats ドメインリスト mogadm --trackers=192.168.1.100:7003 domain list デバイスリスト mogadm --trackers=192.168.1.100:7003 device list

ifconfigの出力をパースしてみる

こんな感じ? 正規表現がちょっとアレかなあ。 #!/usr/bin/env perl use common::sense; my @interfaces = split /\n\n/, `LANG=C; /sbin/ifconfig -a`; my %reg = ( link_encap => qr/Link encap:(\S+)/, mac_address => qr/HWaddr\s(([[:xdigit:]]{2}:){5}[…

YAPC::Asia 2010へ行ってきたよ。

今回もメモ書きレベル以上に推敲できなかったです。慶事の都合上初日しかいけなかったので、1日目だけのメモ書きです。 cloudforecast 長野雅広さん PDCAがだいじ 監視はCheckフェーズ 障碍監視 ping応答 http ssh 応答 ロードアベレージ ツール nagios moun…

.tの拡張子のファイルもTracのシンタックスハイライト有効にしたい。

デフォルトだとperlのテストスクリプトはシンタックスハイライトしてくれないので、設定に付け足した。 [mimeviewer] mime_map = (中略)text/x-ada:ads:adb,text/x-perl:t下記のような形式で書くっぽい。 text/x-(種別):(拡張子)

Net::SSH::Perlを使ってみる

とりあえずこんな感じで、サーバに入って適当に設定情報をとってくるスクリプトを書いた。 #!/usr/bin/env perl use strict; use warnings; use Net::SSH::Perl; my $ssh = Net::SSH::Perl->new('SERVER'); #鍵を省略した場合は、${HOME}/.ssh/id_dsaを参照…

Net::SSH::Perlのインストールが失敗するときは。

gmp.hが無いとMath::GMPのインストールで止まっちゃうよ。 sudo aptitude install libgmp3-dev cpanm Math::BigInt::GMP cpanm Net::SSH::PerlついでにMath::BigInt::GMPをいれないと、こんなwarningsが出る。 Math::BigInt: couldn't load specified math l…

Shibuya.pm行ってきた。

メモ書き程度なんでまとまってないです。 Perl Language Update dankogaiさんperl6の話 rakudo だいぶ速くなったよ 三項演算子は??と!! 関数のネストができる スコープも正しく扱われる try-catch使えるよ muti dispatch 俺俺演算子 OOP selfが使える ドット…

これは入れる必要があるんじゃねっていうPerlモジュール。

自分への覚え書きです。随時追記します。 入れている Bundle::CPAN Bundle::LWP YAML YAML::Tiny Config::Tiny JSON Moose MooseX::Getopt Archive::Zip # これがないと怒られる Email::MIME Email::Send Readonly DBIx::Class DBIx::Skinny Cache::Memcache…

perlbrewを使ってみる。

忘れがちな脳のための覚え書きです。ダウンロードとインストール。 curl -LO http://xrl.us/perlbrew chmod +x perlbrew ./perlbrew installperlbrewの初期化 $HOME/perl5/perlbrew/bin/perlbrew init設定ファイルに追記。 % cat >> .zshrc # perlpbrew sour…

Yokohama.pm#6 x PerlCasual#3 に行ってきたよ

自分が気になったところのメモなので細かいところは網羅できてないです。 kazeburoさん - リソース監視ツール・フレームワークCloudForecastの紹介 途中からだったので話の流れが分からず。 typesterさん - WebアプリケーションエンジニアのためのiPhoneアプ…

API経由でWassrをいじってみた。2

Net::Wassrはすでに偉大な先駆者が作成*1されているので、Net::WassrMinusと名付けました。 とりあえず、一通りのAPIは実装したのですが、public_timelineとrepliesのAPIに投げるとはステータス500が返ってきてしまいます。引数とは間違っていないはずなので…

API経由でWassrをいじってみた。

最近、Wassrをいじることが多くなってきたので、API経由でいろいろできたら便利かなと思いちょっと作ってみました。 ただ、JSONの仕様を勘違いしており、予想外に時間がかかったため、投稿スクリプトしかできませんでした。 一応、ユーザのヒトコトを取得で…

ファイルテスト

最近、シェルスクリプトを読むことが多くなったので、備忘録『詳解シェルスクリプト』、『入門bash』、『初めてのPerl』を参照しましたが、実行していないので合っているかどうかは保証しません。 sh bash perl trueの条件 -d -d -d ディレクトリの場合 -e -…

LWP::UserAgentを使ってみる

今日のknew new things1日1つ以上アウトプット。日々コレ日常。Twitterスクリプトの時に書いたけど、備忘録。WEB APIからJSONテキストが返ってくる時、ほげほげするためのコード。 動かしていないから間違っているかも…。 use LWP::UserAgent; use JSON; my …

DBIx::Skinnyでマルチバイト文字を含む時の注意

DBIx::Skinny::JA::Introによると、マルチバイト文字を扱うカラムはinstall_utf8_columnsに設定しないといけない。

URL文字列のエンコード

今日1番のはまりどころだった。 use URI::Escape; my $escaped_uri = uri_escape($raw_string); my $unescaped_uri = uri_unescape($encoded_string);

Dancerを試してみた 4

今回は設定に関してです。ここまで分かれば簡単なアプリケーションは作れるかな。後はデプロイに関しても調べなきゃいけないとは思うのですが、外部公開とかしない限りは組み込みスタンドアロンサーバで十分なのでしばらく放置します。テストに関しては時間…

Dancerを試してみた 3

ほとんどPODに書いてあるような内容です。ほぼ備忘録です。 ルートパスのワイルドカードマッチ ルートパスにはワイルドカード'*'を含むことができます。それぞれのワイルドカードに一致した内容はsplatを通して取得することができます。下記の例の場合、最初…

Catalystメモ

自分用Catalystの備忘録です。いつものごとく他の人には役に立ちそうにないです。 インストール Perl5.8のActivePerlレポジトリにしかパッケージが無いっぽいです。少なくとも5.10.1には無かったです。 ppm install Catalyst::Devel スケルトン作成 ※Perl\bi…

File I/Oとか

備忘録です。Perlベストプラクティスを読んで、ちょっと実験。前の会社のコードは基本方針全部破っていたなあとかふと思った。PerlのFile I/Oに関する基本方針 ファイルハンドルに裸のワードを使用しない 3項のopenを使用する open,closeエラー時は例外を発…

テスト駆動開発入門を Perlで写経してみた。 12

ついに加法 やったこと Bankクラスの仮実装 plusメソッドの追加 RubyとPythonでやったときはExpressionインタフェースを作ったのですが、今回今のところインタフェースが必要とは思えないので、作ってません。 lib/Money.pm package Money; use strict; use …

テスト駆動開発入門をPerlで写経してみた。 11

諸悪の根源 やったこと DollarクラスおよびFrancクラスの削除 冗長なテストの見直し 不要なコードを削除したのですっきりしました。 lib/Money.pm package Money; use strict; use warnings; use Carp; use version; our $VERSION = qv('0.0.3'); use overlo…

テスト駆動開発入門を Perlで写経してみた。 10

興味深い時 (times) やったこと times()メソッドをMoneyクラスに移動 等値性の評価をクラスではなく、通貨で行うようにした。 サブクラスはコンストラクタだけなので次回以降、取り除いていきます。 lib/Money.pm package Money; use strict; use warnings; …

テスト駆動開発入門を Perlで写経してみた。9

生きている時(times) DollarクラスとFrancクラスのコンストラクタを共通化 通貨単位を返すcurrency()メソッドの実装 times()メソッド内でのファクトリメソッドの使用 DollarクラスとFrancクラスでスーパークラスのコンストラクタを呼んでいますが、この処理…

テスト駆動開発入門をPerlで写経してみた。 8

オブジェクトの生成 今回は、クライアントコード側でDollarクラスやFrancクラスの内部実装を意識させないためにファクトリメソッドを定義しました。Moneyクラスのfranc()メソッドおよびdollar()メソッドがそれに当たります。原書ではMoneyクラスを抽象メソッ…