ブックマーク / bayashi.net (17)

  • Perlで仮想通貨の取引をする

    2017年、ビットコインに突っ込みきれなかった皆さんこんにちは。仮想通貨、買ってますかー?! さて、仮想通貨取引所は日国内にもいくつかあるのですが、 bitFlyer や coincheck といった取引所では API が用意されています。APIか、へー、どうせちょっとした参照ができる程度でしょ? と思ったかもしれませんが、マーケットの情報取得から資産状況、残高の入出金参照、そして当然のように取引自体の API までそろっています。 つまり、自動取引でウハウハの夢が見れるということですね!やったね! というところに、遅ればせながら気づいて、よっしゃ API 叩くぞ!!!っと思ったんですけど残念ながら Perl のライブラリはなさそうだったので正月休みにちょっと書きました。 WebService::Coincheck 書きましたと言っても Ruby/Python/PHP のクライアントがす

    Perlで仮想通貨の取引をする
  • perl5.22 おれの注目 features(changes)

    perl5.22 が登場したということで一通り Changes 読んでみた上で気になった点を列挙しておく。 キャプチャしない正規表現オプション n Non-Capturing Regular Expression Flag 正規表現に n オプションというのが加わったようだ。これまでは (?:nocapture) というように ?: を使っていたのが、/(nocapture)/n という風に n オプションで明示できる。これで ?: だか :? だか迷う必要がなくなった! Unicode 7.0 対応 Unicode 7.0 is supported ロシア通貨のルーブルの通貨記号文字が使えるってことですね! 無限大や数値ではない引数を渡すと、死ぬ Packing infinity or not-a-number into a character is now fatal chr("foo

    perl5.22 おれの注目 features(changes)
    perlcodesample
    perlcodesample 2015/06/03
    ばやしさんの、Perl 5.22注目ポイント。
  • Perl で Sitemap 生成するモジュール WWW::Sitemap::Simple 書いた

  • 勢いだけの3こすり半劇場!!!

    このエントリーは Perl Advent Calender 2014 の2日目の記事です。 Yokohama.pm #12 11/28(金) に開催された Yokohama.pm #12 で LT させて頂こうと思ってたんですが、高知でカツオのタタキべる方を優先してしまったためにお蔵寸前のネタを、ここに改めて投下します!! ちなみにお酒は入ってません!! うぇーい!! Acme::W 突然ですがみなさん Acme::W はもちろんご存知ですよね!! もしもわからないという方は、@dameninngenn さんの YAPC Asia 2010 伝説の LT を、ご覧ください!! 草www 生えちゃってるw よwwwwwwwww Acme::BeerSushi さて、続いては、@songmu さんの Acme::BeerSushi です!! こちらは Yokohama.pm #11 の ライ

    勢いだけの3こすり半劇場!!!
  • Perl で CLI コマンドを書く

    Perl で CLI コマンドを書く方法はいろいろある。 スクラッチで書く CLI 用フレームワークにのる パーツを組み合わせる ここでは、3番目の「パーツを組み合わせて」書く方法を解説する。CLI 用フレームワークに乗ると、簡単に書くことができるようになるが、副作用としてフレームワークにない要求に応えたくなったとき、実現するのが逆に手間だったりするので、できる限り必要な要素ごとにモジュールを組み合わせて CLI を構築する方法をとりたい。そうしておくと、なにか面倒な要求に応える場合にも、スクラッチで書かなければいけない箇所をパーツごとに限定できる。 CLI スクリプトの構成 一枚スクリプト 小さなものは一枚スクリプトでも OK かもしれないが、将来的に拡張するのであればコマンドから内部ロジックをモジュールに出した方が良い。 モジュール化 以下のように、some_command の内部ロジ

    Perl で CLI コマンドを書く
  • CLI 向けに rcfile 読んでくれるだけのモジュール #perl

    App::* をいろいろ書いていると、rcfile の仕組みを提供したいのだけど、毎回書くのが面倒くさい。 自分の場合は昔 module-starter から丸パクリしたコードをコピペしてたんだけど、そろそろ飽きてきたのでそれ用のモジュールを書いてみました。 Config::CmdRC CLI ツールで以下のように書くだけ。 use Config::CmdRC qw/.foorc/; これで、よしなにディレクトリを探索して、.foorc の中身を読んでくれます。 探索するディレクトリは以下のようになってます。 /etc $ENV{HOME} $ENV{CMDRC_DIR} . .foorc の中身は、Config::Simple で読めればなんでも OK です。(0.03 から好きな loader を使うこともできるようになってます) よしなに探索するディレクトリで事足りなければ、おれおれ

    CLI 向けに rcfile 読んでくれるだけのモジュール #perl
  • さくっと Perl のメトリクスを取得する

    ローカルにあるやつもリモートにあるやつも、ファイルごとでもディレクトリ内まとめてでも、よしなにサクッと Perl コードのメトリクスを取得したかったので書きました。 App::plmetrics cpanm App::plmetrics App::plmetrics をインストールすると、plmetrics コマンドが使えるようになります。 Perl::Metrics::Lite に同梱されている measureperl はローカルファイルまたはディレクトリを対象に解析を行いますが、plmetrics はローカルのものだけでなく、リモートの git リポジトリや tar.gz を対象に解析することが可能です。 plmetrics モジュール名で解析。--module $ plmetrics --module Test::AllModules /usr/lib/perl5/site_perl

    さくっと Perl のメトリクスを取得する
  • 成果: Perl QA Hackathon 2013 Satellite at Tokyo

    Perl toolchain 系の話題にキャッチアップしたかったのと、Test::* 系のモジュールを Hack するのもありだって聞いたので、わりと急でしたが Perl QA Hackathon 2013 Satellite at Tokyo に参加させて頂きました。 会場を提供してくださった FreakOut さん @coji さんありがとうございました。 Test::AllModules アプリケーションのモジュールをまとめて全部 use してコンパイルテストするモジュールであるところの Test::AllModules をちょいとアップデートしまして、use する処理を fork して行えるオプションをつけたり、use_ok なんかはコードを書かないでオプションだけで実行できるようにしました。 use Test::AllModules; BEGIN { all_ok( search

    成果: Perl QA Hackathon 2013 Satellite at Tokyo
  • Perl を学ぶとき、真っ先に覚えたいモジュール

    春ですね! 新年度ですね! Perl 書くことになってしまいましたか! 奇遇ですね! sigil が意味わかりませんか! 特殊変数がググれませんか! リファレンスが謎ですか! 1; の存在が不明ですか! オブジェクト指向が難しいですか! むしろオブジェクトじゃないコードの方がゆるくて大変ですか! XS が読めませんか! ええ、XS は僕もあんまり読めません>< さて、この春から Perl を学ぶことになった人も多いかと思いますが、なにはなくともこれまず覚えたら後が楽になるんじゃないかというモジュールを、いくつか紹介したいと思います! (まあ、自分の初期を思い返すと、この辺はやく知っておきたかったなあというリストです) Data::Dumper, YAML 変数(リファレンス)やオブジェクト(blessされたリファレンス)をダンプする用途では、Data::Dumper が一番メジャーのような

    Perl を学ぶとき、真っ先に覚えたいモジュール
    perlcodesample
    perlcodesample 2013/04/15
    覚えたいモジュール。もっとたくさん知りたい方は、Perlモジュール徹底解説もどうぞ。http://d.hatena.ne.jp/perlcodesample/20091116/1246679588
  • Log::Minimal のログファイルを log level とか PID ごとに出し分ける

    下の方に【追記】があるので参照必須。 Log::Minimal と File::Stamped を使うと、日付ごととか時間ごとにファイル名を分けて書き出すことが可能です。 で、タイトルの通り、log level とか PID ごとに出し分けたいなーと思いまして、File::Stamped::Extended 書きました。恐らく要求として多くないと思うのと、わずかながら速度が犠牲になるかと思い、別ディストリに。 以下のようにして、ログファイルパターンに $ と ! が利用できます。 use Log::Minimal; use File::Stamped::Extended; my $fh = File::Stamped::Extended->new(pattern => '/var/log/myapp.log.!!.$$.%Y%m%d'); local $Log::Minimal::PRIN

    Log::Minimal のログファイルを log level とか PID ごとに出し分ける
  • おれは、タブインデントを、許さない!!!

  • yg(App::YG) を LTSV に対応しつつ、色付き表示できるようにした

    LTSV 話題ですね。 【今北産業】3分で分かるLTSV業界のまとめ【LTSV】 - naoyaのはてなダイアリー これは乗り遅れまいと、ばーてぃかるぱみゅぱみゅ でおなじみの yg コマンドで LTSV ログに対応しました。 time:08/Feb/2013:12:00:00 +0900 host:192.168.0.1 req:GET / HTTP/1.1 status:200 time:08/Feb/2013:12:00:01 +0900 host:192.168.0.2 req:GET /update HTTP/1.1 status:200 上のような LTSV ログを、以下のように整形して表示します。 $ yg --ltsv share/ltsv ******************** 1 ******************** time: 08/Feb/2013 host:

    yg(App::YG) を LTSV に対応しつつ、色付き表示できるようにした
  • Test::NoLoad あるモジュールが use されてたらこける

    うちのプロジェクトではとあるモジュール使用禁止、とか、Moose 読まれんの嫌、とか。 なんかそういうのをテストで担保するためのモジュール Test::NoLoad 書いてみました。 test でやるんじゃなくて、実働してるアプリケーションでやる(もちろん開発環境だけとかですが)ようなアプローチもあるかと思いましたが、まあとりいそぎテストで実施。 check_no_load function was exported from Test::NoLoad use strict; use Test::AllModules; use Test::NoLoad; BEGIN { all_ok( search_path => 'MyApp', check => sub { my $class = shift; eval "use $class;1;"; }, ); } check_no_load(q

    Test::NoLoad あるモジュールが use されてたらこける
  • Test::MethodName メソッド名をちぇっくちぇっくちぇっく

    Test::NoLoad check_no_load とかいうメソッド書いた翌日に check_xxx がなんでダメなのか とかいうエントリーが TL に流れてきて涙目になった bayashi ですこんばんわー~。 涙でエディタが見えなくて苦労しましたが、じゃあ、ってんで 「check_XXX っていうメソッドダメ!」 みたいなのをテストできるモジュール書いてみました。 https://github.com/bayashi/Test-MethodName use Test::MethodName; all_methods_ok( 'MyApp' => sub { my $method = shift; return ( $method =~ m!check! ) ? undef : 'pass'; }, ); MyApp 以下のモジュールすべてのメソッド名に対して、コードリファレンスを実行

    Test::MethodName メソッド名をちぇっくちぇっくちぇっく
  • DOM Based XSS の報告

    実は、自分は以前 CGI 配布などやっておりまして、5年くらい前にメンテナンスも停止していたのですが、このたび、その CGI に関して、XSS の脆弱性が見つかったので、こちらでも報告したいと思います。 JVN#36339873 dopvSTAR* におけるクロスサイトスクリプティングの脆弱性 JVN#64756004 dopvCOMET* におけるクロスサイトスクリプティングの脆弱性 該当する CGI は dopvSTAR* と dopvCOMET* の 2 つです。いずれもサーバサイドに CGI、Web ページに JavaScript コードを追記してログを取得し、アクセス解析が行えるものです。 問題があったのは、配布サイトに掲載していたログ取得用の JavaScript コードです。現在は、問題点を修正済みです(CGI自体のダウンロードは数年前から停止しています)。現在もご利用の方が

    DOM Based XSS の報告
  • Module::Build に移行しても make したい

    以下のような Makefile.PL を書いておけば、Module::Build に移行しても伝統的な make でビルドすることを担保できる。 use lib qw/lib/; use Module::Build::Compat; Module::Build::Compat->run_build_pl(args => \@ARGV); Module::Build::Compat->write_makefile(build_class => 'Module::Build'); 見ての通り、Module::Build::Compat が Module::Build の前段に立ってくれる感じですね。 いまさら必要になる場面ってあるのか謎ですが。自分はずっとこれ入れてる。

    Module::Build に移行しても make したい
  • perl リファレンスは簡単

    新年度ですね!! サンプルコードは間違ってるかもしれないから、適当にワンライナーにでもして試してね!!! ただのハッシュのコピー まず、リファレンスでないハッシュだと "値" がコピーされるのを実行します! # ただのハッシュですね! my %foo = ( key => 1 ); # コピーしてみますよ! my %bar = %foo; # コピーした先で値を代入してみますよ! $bar{key} = 2; # おおもとの方は書き換わってませんね!あたりまえですね! print $foo{key}; # 1 こういうのがリファレンス HASH my $foo = { key => 1 }; print ref($foo); ARRAY my $bar = [1, 2, 3, 4]; print ref($bar); SCALAR my $baz = 123; my $hoge = \$b

    perl リファレンスは簡単
  • 1