Tag: perl



2016年 7月 4

YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa
2016/7/2 – 2016/7/3

選考方法が抽選でドキドキでしたが、無事(?)2日とも参加することが出来ました。

前夜

2日とも当選したので朝から参加しようと前泊。出発が思いのほか遅くなってしまい、品川周辺についたのが22:30まわっていたのでホテルの近場で軽く一杯飲んで帰るつもりが…常連さんと意気投合して3:00頃まで飲んでしまった…。青横ハイボールの常連さんありがとうございました。

初日

そんなこんなで初日から若干の遅刻。

聞いたトーク
  • MySQLと正規形のはなし
  • お前ら!!!!画面の中から出てこーーいい!!!!世の中は3次元だぞ!!!!!!!!!!!!!
  • 「全国タクシー」を支えるクラウドインフラ(AWSとAzureと、時々GCP)
  • Fluentdが新Plugin API実装においていかに自由すぎる旧APIとの互換性を確保したかの話
  • esa.io、その後の話
  • Lightning Talks 1日目 C room
懇親会

ジャスト100人の参加という事で「懇親会出るやつは信頼できる」名言頂きました。@hayajoさんとお話したり、ぼったくり(られ?)の話で盛り上がったり、半分くらい覚えてなかったり、幸せな時間を過ごしました。

3次会

@ytnobodさん、@ichigotakeさん遅くまでありがとうございました!内緒にしていましたが、実はあの後となりの中華屋で担々麺たべました。いや、食べたと思います。寝落ちしたらしく起きた時はお店片付け中だったので食べたかどうか記憶にありません…。

2日目

前日もやはり飲み過ぎて若干の遅刻。

聞いたトーク
  • あの日見たM-V-WhateverのModelを僕たちはまだ知らない
  • CPANの依存モジュールをもう少し正しく検出したい
  • HTTP/2でウェブサイトを高速化(実践編)
  • 突如見知らぬ言語に出会ってしまった俺達は
  • 開発フローケーススタディ
  • Lightning Talks 2日目 A room
懇親会(打ち上げ)

60名弱の参加で大盛況。やっぱり懇親会は楽しい。あと、新幹線の時間まで付き合って頂き感謝です。@ace_project++

さいごに

@uzullaさんをはじめスタッフの皆様、企画から準備、開催といろいろ大変だったと思いますが、本当に楽しいイベントありがとうございました!!#yapc8oji最高!!@__papix__くん来年がんばってください!

…あれ、飲んだ話しか書いてないや。


Filed under: 勉強会

Trackback Uri






2016年 5月 28

  • OSX El Capitan(10.11.5)
  • MAMPのバージョン 3.0.7.3 ※1
  • MySQLのバージョン 5.5.38

MAMPだとWarning (mostly harmless): No library found for -lmysqlclientのエラーでインストール出来ない。

mysql.hが存在しないため、別途インストールする必要があるようだ。

検索しているとC++ で MAMP の MySQL に接続する : あかぎメモ

まずこの記事の手順で、MySQL のヘッダファイルやライブラリを用意しておく。うまくいけば次のようなファイルができる。
/Applications/MAMP/Library/include/mysql/mysql.h
/Applications/MAMP/Library/lib/libmysqlclient.dylib

とある。このエントリーを参照してヘッダファイル等をインストールしてみる。

手順エントリー:Ruby on Rails 入門 (1日目) : あかぎメモ

$ brew install cmake
$ cd /tmp
$ curl -OL http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.29.tar.gz
$ tar zxvf mysql-5.5.38.tar.gz
$ cd mysql-5.5.38
$ cmake . \
    -DMYSQL_UNIX_ADDR=/Applications/MAMP/tmp/mysql/mysql.sock \
    -DCMAKE_INSTALL_PREFIX=/Applications/MAMP/Library
$ make -j 3
$ cp -v libmysql/*.dylib /Applications/MAMP/Library/lib
$ mkdir -p /Applications/MAMP/Library/include/mysql
$ cp -v include/*.h /Applications/MAMP/Library/include/mysql

.bash_profileの設定

インストール時に参照されるMySQL関連のパス等を.bash_profileに書いておく。

参考:

cpanmでDBD::mysqlを入れる – Qiita

DBD::mysql – Environment Variable

# export path for MAMP
export PATH="$PATH:/Applications/MAMP/Library/bin/"
export DBD_MYSQL_CFLAGS=-I/Applications/MAMP/Library/include/mysql
export DBD_MYSQL_LIBS="-L/Applications/MAMP/Library/bin/mysql -lmysqlclient"
export DBD_MYSQL_EMBEDDED=
export DBD_MYSQL_CONFIG=/Applications/MAMP/Library/bin/mysql_config
export DBD_MYSQL_NOCATCHSTDERR=0
export DBD_MYSQL_NOFOUNDROWS=0
export DBD_MYSQL_SSL=
export DBD_MYSQL_TESTDB=test
export DBD_MYSQL_TESTHOST=localhost
export DBD_MYSQL_TESTPORT=3306
export DBD_MYSQL_TESTUSER=root
export DBD_MYSQL_TESTPASSWORD=root

DBD::mysqlのインストール

cpanm DBD::mysqlcarton installでインストールできた。

※1 執筆時、MAMPの最新バージョンは3.7だったがMySQLのバージョンは5.5.38と同じものだった

Test::mysqld(Harriet)を使う場合

とりあえずcould not find mysql_install_dbというエラーが出るので、対処する。

上記手順を行うとmysql_install_db/Applications/MAMP/Library/scriptsにある。まずは実行権限を付ける。

$ chmod +x /Applications/MAMP/Library/scripts/mysql_install_db

PATHを通してもFATAL ERROR: Could not find ./bin/my_print_defaultsというエラーが出るのでシンボリックリンクを作る。

$ ln -s /Applications/MAMP/Library/scripts/mysql_install_db /Applications/MAMP/Library/bin/mysql_install_db

Filed under: perl,perlモジュール

Trackback Uri






2016年 4月 7

amon2-setup.pl --flavor=Large MyApp で作成したLarge flavorのAmon2アプリのリリース管理にMinillaを使ってみようとしらうまくいかなかったので試行錯誤してみた。

まずはMinillaに最適化

minil migrate

Minillaで管理するのに必要なファイルの作成や.gitignoreに追加等してくれる。

必要なディレクトリに空ファイルを作成

Large flavorのアプリで言うと db ディレクトリが必要だが、amon2-setup.plで作成した状態だと、.gitignoreは下記の状態になっている。

db/.gitignore

*
!.gitignore

これを下記のように修正して、db/gitkeep という空ファイルを新規作成する(gitkeepというファイル名でなくてもいい)

db/.gitignore

*.db
!.gitignore

touch db/gitkeep

当然、git add & git commitは忘れずに。こうする事で minil test する時にディレクトリが作成され、ログファイルやdbファイルが無い!というようなエラーにならない。

ハマりどころ

注意点は ドット で始まるファイル(例えば.gitkeep)ではダメだということ。 理由はドットで始まるファイルしか無いディレクトリはminil test時に.build内に作成されないため。proveコマンドだとテスト通るけどMinillaのtestだと通らない。

他にもログファイルの保存用ディレクトリ等にも同じように対策することが出来る。ディレクトリが必要だけど、ファイル自体は管理しない時にはこのhackが有効かも。

雑感

Changesを使ってリリースログ書いたり、git tagをつけてくれたり、githubにpushしたりを自動化出来るので便利。問題はMinillaの使い方として合っているのか?ってこと。どうなんだろ?

追記2016-6-7

ドットから始まるファイルを含ませたい場合はminil.tomlで設定可能っぽい

Minilla – CPAN モジュールオーサリングツール – perldoc.jp

FileGatherer.include_dotfiles
[FileGatherer]
include_dotfiles = false
デフォルトでは、ドットから始まるファイルは、ディストリビューションに含まれません。 この設定はファイルとディレクトリの両方に及びます。


Filed under: Amon2,perl

Trackback Uri






2016年 3月 29

Minillaでモジュールを作る練習として Amon2のロギングにLog::Handlerを使う で書いたコードをモジュール化してみる。

Amon2-Plugin-LogDispatch を参考に(ほぼforkしたもの)をgithubに上げるところまで出来た。

ソースコードは以下。

clicktx/p5-Amon2-Plugin-LogHandler

test全く書いていない。

Amon2アプリで使う

プラグイン読み込んで設定を書く。CPANに公開されていないモジュールだとcartonで管理するのよく分からないから、forkしてモジュール名を変更して使う。

該当コミットは以下。

Merge branch ‘feature/plugin-loghandler’ · clicktx/p5-App-Amozon@0eaa4db

MyApp.pmと同じ階層にリネームしたLogHandler.pmを置いて、

__PACKAGE__->load_plugin('+MyApp::Log');

でプラグインとして読み込んでる。

__PACKAGE__->load_plugin('LogHandler'); で呼び出すには、Amon2/Plugin/ 以下にプラグインファイルがある必要があるから +がつく呼び出し方しているけど、使い方あっているか模索中。

Minillaを使ってみて

とにかく簡単にPerlモジュールが書ける大変便利なツールと実感。素晴らしい。


Filed under: Amon2,perl

Trackback Uri






2016年 3月 28

cpanm Minilla

minil new My::Mod

My-Modディレクトリが作られてその中にモジュールのテンプレートがさくせいされる。

githubにあたらしいリポジトリを作る

  • App::phつかうと便利らしいので入れる。
  • ディレクトリ名でリポジトリが作られる
    • p5-my-mod 等にディレクトリ名を変更しておくと吉
  • 最近のバージョンなら最初から設定(minil.toml)にname=”My-Mod”ってかいてあるっぽい

足りないモジュール入れる

minil releaseする時に不足しているモジュール。cpanmで入れると良い。

  • Version::Next
  • CPAN::Uploader

ライセンスを変更すると Software::License もひつようらしい。

Minilla で Perl モジュールをつくる – Qiita

エラーログ1

$ minil release
Release engineering requires Version::Next, but it is not available. Please install Version::Next using your preferred CPAN client at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/Release/BumpVersion.pm line 16.

Minilla::Error::CommandExit at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/Logger.pm line 56.
Minilla::Logger::errorf(“%s\x{a}”, “Release engineering requires Version::Next, but it is not ava”…) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/CLI.pm line 60
Minilla::CLI::ANON(“Release engineering requires Version::Next, but it is not ava”…) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Try/Tiny.pm line 115
Try::Tiny::try(CODE(0x7fb06481f840), Try::Tiny::Catch=REF(0x7fb064884db0)) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/CLI.pm line 63
Minilla::CLI::run(Minilla::CLI=HASH(0x7fb06481f6f0), “release”) called at /Users/clicktx/.plenv/versions/5.20/bin/minil line 6

エラーログ2

$ minil release
Release engineering requires CPAN::Uploader, but it is not available. Please install CPAN::Uploader using your preferred CPAN client at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/Release/UploadToCPAN.pm line 11.

Minilla::Error::CommandExit at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/Logger.pm line 56.
Minilla::Logger::errorf(“%s\x{a}”, “Release engineering requires CPAN::Uploader, but it is not av”…) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/CLI.pm line 60
Minilla::CLI::ANON(“Release engineering requires CPAN::Uploader, but it is not av”…) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Try/Tiny.pm line 115
Try::Tiny::try(CODE(0x7ff70980c840), Try::Tiny::Catch=REF(0x7ff7099343b0)) called at /Users/clicktx/.plenv/versions/5.20/lib/perl5/site_perl/5.20.3/Minilla/CLI.pm line 63
Minilla::CLI::run(Minilla::CLI=HASH(0x7ff70980c6f0), “release”) called at /Users/clicktx/.plenv/versions/5.20/bin/minil line 6

CPANにアップロードしない設定にする

minil.toml に設定書けば上のエラーでないかも。

[release]
do_not_upload_to_cpan=true

バージョンを上げる時

  • Changesファイルを編集する。{{$NEXT}}のすぐ下に今回の変更点などを追記。
Revision history for Perl extension My-Mod

{{$NEXT}}
    - second version ←ここに追記する

0.01 2016-03-28T11:07:45Z
    - original version
  • minil release コマンドでバージョン上げる

My/Mod.pmのour $VERSION = "0.01";our $VERSION = "0.02";に自動で変更され、commitされる


Filed under: perl

Trackback Uri