ブックマーク / qiita.com/worthmine (28)

  • [perl]モジュールにデータディレクトリを同梱する - Qiita

    これは基礎の基礎なのかもしれませんが、気づいてから解決するまで3日以上ハマってたので共有します。 要旨 モジュールにYAMLなどのデータを同梱したディレクトリをつけて配布したい。 経緯 Data::Pokemon::GoというPerlモジュールをリリースしたんですけど、インストール時には読み込んでくれるdata/ディレクトリがイントール後には行方不明になってまして、なにがしかの方法(SCPなど)を使って呼び出し元のスクリプトの近くに相対パスでデータをコピーしてやらないと使えない状態が続いてました。1 調べてみてもなかなか良い記事が見つからず、うーん、こんなに難しいはずがないだろうと思ってました。 こんな英語の記事は見つけたんですけど、私はMinillaを使っているのでBuild.PLを直接編集できなかった(しても自動的に戻される)んですね。 で、ようやくたどり着いた記事がこちら。要するにd

    [perl]モジュールにデータディレクトリを同梱する - Qiita
    worthmine
    worthmine 2018/09/26
    モジュールにデータディレクトリを同梱する on @Qiita
  • PlackではCGI::Sessionはやめておいた方がいいという話 - Qiita

    こんな記事昔書いたんですけど、番環境では危険であることが判明したので共有します。結論はタイトル通りです。 事象 Plackの環境変数はサブルーチンの第一引数の(一般的にはmy $env = shiftとして取得される)ハッシュリファレンスである一方、CGI::Sessionは環境変数$ENV{REMOTE_ADDR}をコンストラクタで参照しており、CGIではない環境下において、これは常にundefになり、空文字列同士で同一のホストとして判定されてしまいます。 つまり、異なるセッションを同一として判定してしまう脆弱性(これセッションハイジャックですよね?)を引き起こします。 対策 Plackの側で都度$ENV{REMOTE_ADDR} = $env->{REMOTE_ADDR}などとする?(かなりの魔改造なので私は断念) 代わりにPlack::Sessionを使う まとめ CGI::Ses

    PlackではCGI::Sessionはやめておいた方がいいという話 - Qiita
    worthmine
    worthmine 2018/05/18
    PlackではCGI::Sessionはやめておいた方がいいという話 [Perl] on @Qiita
  • Perlのcaller()の返り値が覚えられないあなたへ - Qiita

    先ほどCPANモジュールをリリースしました。ええ、またとてもニッチです。 Caller::Easy(仮)というモジュールで、(主に私のような)組み込み関数であるcaller()の返り値を覚えられない人が対象です。 CPANとgithubへのリンクを貼っておきます。 要約 callerのリストコンテキストの返り値が何番目が何かしょっちゅうわからなくなるのでその度リファレンスをみています。 これをコピペして使う部分だけ使えばいいのかもしれませんが、 ( $package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash ) = caller(1);

    Perlのcaller()の返り値が覚えられないあなたへ - Qiita
    worthmine
    worthmine 2018/03/17
    Perlのcaller()の返り値が覚えられないあなたへ on @Qiita
  • CentOS7.1のminimal構成に入ってる/入ってないリスト - Qiita

    役目を終えて今日解約予定のVPSがあったので後学のために再インストールしてみました。 以前、GCCが入っていないようで詰まりましたので、プリインでどこまで入っているのか調査します。 前提 お名前VPSにコンソールからCentOS7.1をminimalでインストールし、sshでrootログイン。yum upgradeだけ実行した状態で比較的よく使うソフトをhoge -vまたはhoge --versionしてバージョンが確認できるかチェックします。 GCCは入ってない # gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with

    CentOS7.1のminimal構成に入ってる/入ってないリスト - Qiita
    worthmine
    worthmine 2018/02/28
    CentOS7.1のminimal構成に入ってる/入ってないリスト [Vim] on @Qiita
  • CentOSでgccへのパスが通ってない(と思われる)時の対処法 - Qiita

    $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --e

    CentOSでgccへのパスが通ってない(と思われる)時の対処法 - Qiita
    worthmine
    worthmine 2017/11/20
    CentOSでGCCへのパスが通ってない時の対処法 [Perl] on @Qiita
  • Data::Pokemon::GoというPerlモジュールをリリースした - Qiita

    Data::Pokemon::Goというperlモジュールをリリースさせていただきましたので、取り急ぎ日語版の解説をまとめさせていただきます。 共同編集者絶賛募集中! 正直、一人で更新/メンテするのは大変なデータ量(執筆時点で386種ですぜ!)なので、この場を借りてモジュールのコンセプトに共感してくださる(≒更新を手伝ってくださる)有志を募りたいと思います。 大元のデータはYAMLなので、言語問わず、YAMLの編集が可能な方であればどなたでもPRできます。よろしくお願いいたします。 モジュールの概要 現時点では「直接ソース読めよ」というレベルの英語ドキュメントしか用意できてませんので、日語のドキュメントを書くつもりでここに記しますね。 開発の動機 ポケモンGOにどハマりしてる割には、相性を全然覚えられなくて逐一ググってたので、LINE BOTを作成しました。 同じような悩みをお持ちの方

    Data::Pokemon::GoというPerlモジュールをリリースした - Qiita
    worthmine
    worthmine 2017/11/15
    Data::Pokemon::GoというPerlモジュールをリリースした on @Qiita
  • [Perl]連結したリストはスカラコンテキストで直感に反する返り値をとる - Qiita

    use Moose::Role; has zero => ( is => 'ro', isa => 'Num', default => 0 ); has num => ( is => 'ro', isa => 'ArrayRef[Num]', default =>sub {[1..9]} ); requires 'list';

    [Perl]連結したリストはスカラコンテキストで直感に反する返り値をとる - Qiita
    worthmine
    worthmine 2017/09/27
    Perlのサブルーチンの返値はスカラコンテキストで直感に反する挙動をする on @Qiita
  • [Perl]どうせ新しいモジュール書くならMoose使いましょ? - Qiita

    要旨 CGIの全盛時代に培ったPerl技術を、安全かつモダンに使える方法を私なりの方法で提供したいので、自作のモジュールの紹介とその作成方法について共有します。 こんなモジュールを作りました Text::Password::AutoMigration - generate and verify Password with any contexts 日語で要約すると Text::Password::AutoMigrationは怠惰な管理者のためのモジュールです。 パスワードのハッシュを新規作成する分にはSHA-5121を用いる一方、 認証においてはCORE::crypt,MD5,SHA-1 by hex,SHA-256及び SHA-512を自動的に識別します。 したがって、 このモジュールを使い DBに保存している認証用ハッシュを定期的に置き換えるだけ で、暗号化強度の低いハッシュから強

    [Perl]どうせ新しいモジュール書くならMoose使いましょ? - Qiita
    worthmine
    worthmine 2017/08/20
    どうせ新しいモジュール書くならMoose使いましょ? on @Qiita
  • [Perl] Mac に ExtUtils::PkgConfig をインストールする - Qiita

    経緯 GD.pmなどが昔は普通に(brew install libgdくらいで)インストールできてたのに、一旦削除したら再インストールができなくなった。 事象 こんな感じ $ cpanm GD --> Working on GD Fetching http://www.cpan.org/authors/id/R/RU/RURBAN/GD-2.66.tar.gz ... OK ==> Found dependencies: ExtUtils::PkgConfig --> Working on ExtUtils::PkgConfig Fetching http://www.cpan.org/authors/id/X/XA/XAOC/ExtUtils-PkgConfig-1.16.tar.gz ... OK Configuring ExtUtils-PkgConfig-1.16 ... N/A

    [Perl] Mac に ExtUtils::PkgConfig をインストールする - Qiita
    worthmine
    worthmine 2017/05/25
    Mac に ExtUtils::PkgConfig をインストールする on @Qiita
  • [正規表現] デリミタのエスケープに対応する - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    [正規表現] デリミタのエスケープに対応する - Qiita
    worthmine
    worthmine 2017/04/04
    デリミタのエスケープに対応する [Perl] on @Qiita
  • [正規表現]ASCII(非マルチバイト)だけの文字列を検出する - Qiita

    要旨 unicode(正確にはutf8)を前提に、全角か半角かわからない文字列を与えられている時にそれが確かにASCIIであると判別する正規表現を書けますか? ※タイトルが逆だったりと、何かとあれあったので整理しました。 結論 http://rubular.com/で色々試したところ /\P{ascii}+/ あるいは /\p{ascii}+/というシンプルな表記で(日語以外含む)「マルチバイト文字列」と「ASCIIのみの文字列」を判別できるということを発見しました。1 /\P{ascii}+/ は /[^_a-z\~\`\!\@\#\$\%\^\&\*\(\)\-\+\=\[\]\{\}\|\;\:\\'\"\,\.\<\>\/\?\/\d\s]+/i に相当します。 もちろん"Ascii"などの全角英数もきちっと判別できます。 ↑なんで\w使わないの?って思うかもしれませんが、per

    [正規表現]ASCII(非マルチバイト)だけの文字列を検出する - Qiita
    worthmine
    worthmine 2017/03/30
    非ASCII(マルチバイト)文字列の検出 [Perl] on @Qiita
  • [Perl] PSGI入門第五章 Log::Dispatch::Configでデバッグログを取る - Qiita

    LINE Bot AWARDSにエントリーしてたので更新が遅くなりました。しかし、このシリーズ、需要あんのかな… 日のお題 Log::Dispatch::Configでデバッグログを取る おさらい PSGI入門第一章 環境変数の一覧を出す PSGI入門第二章 CGI::SessionをPSGIで無理やり使う PSGI入門第三章 動的ルーティングを実装する PSGI入門第四章 Text::XslateでViewを分離 前提 記事ではLog::Dispatchのカスタマイズ方法は省略1します。 今までCGI::Carpなどにお世話になっていた人が主な対象です。 CGI::Carpの良かったところ(信者目線) carpoutでログファイルに出力できた点 fatalsToBrowserでログを見に行く手間を省けたところ 単純にdieやwarnを使うよりデバッグがしやすい点2 PSGIではデフォ

    [Perl] PSGI入門第五章 Log::Dispatch::Configでデバッグログを取る - Qiita
    worthmine
    worthmine 2017/03/14
    PSGI入門第五章 Log::Dispatch::Configでデバッグログを取る on @Qiita
  • [Perl]Log::Dispatch系モジュールとuse utf8の併存 - Qiita

    要旨 use utf8プラグマの影響下でLog::Dispatch(あるいはLog::Dispatch::Config)を使おうとすると"Wide character in print ~"なwarningが出る件について調査しました。 結論 configファイルに数行書き加えるだけでしたが、fileとscreenで指定方法が違います。 実装 use strict; use warnings; use Encode; use Log::Dispatch::Config; Log::Dispatch::Config->configure('./log.conf'); my $dispatcher = Log::Dispatch::Config->instance(); $dispatcher->info( decode_utf8 "再起動" ); # ↑全ての出力をencodeするため、us

    [Perl]Log::Dispatch系モジュールとuse utf8の併存 - Qiita
    worthmine
    worthmine 2017/03/06
    Log::Dispatch::Configとuse utf8の併存 on @Qiita
  • [Perl]PSGI入門第四章 Text::XslateでViewを分離 - Qiita

    日のお題 Text::XslateでViewを分離 おさらい PSGI入門第一章 環境変数の一覧を出す PSGI入門第二章 CGI::SessionをPSGIで無理やり使う PSGI入門第三章 動的ルーティングを実装する 前提 記事ではHTML5の生成に限って記述1します。(Text::Xslate自体は汎用のテンプレートエンジンですので、HTML5の生成に限らず様々な範囲で利用できます) CGI.pmの中にText::Xslateを理論上盛り込めます2ので、HTML5で動くCGIを作ることを否定しません。 PlackとText::Xslateは相互に独立したモジュールですので、別にPSGIを書くにあたってText::Xslateを利用ことは必須ではありません。 デフォルトのテンプレートであるKolonで記述3します。 HTML5自体の解説は省略します。 私も入門したてです。ツッコミ大

    [Perl]PSGI入門第四章 Text::XslateでViewを分離 - Qiita
    worthmine
    worthmine 2017/02/16
    PSGI入門第四章 Text::XslateでViewを分離 on @Qiita
  • [Perl]PSGI入門第三章 動的ルーティングを実装する - Qiita

    日のお題:動的ルーティングを実装する おさらい PSGI入門第一章 環境変数の一覧を出す PSGI入門第二章 CGI::SessionをPSGIで無理やり使う 背景 予告に書いてなかったんですけど、ここなかなかのハードルの高さだったの思い出したので共有します。 PlackをインストールしただけではRouterはインストールされない 選択肢がたくさんありすぎて、何が違うのか読まないとわからない。ヒットする順に Plack::App::Path::Router Plack::App::Path::Router::PSGI Router::Boom Rooter::Simple and so on え?これ全部読むの?手っ取り早く使いたいんですけど? で、第一章のように環境変数の取得から始めてみたら Plack::App::Path::Router::PSGIが一番私の肌に合う1 ということが

    [Perl]PSGI入門第三章 動的ルーティングを実装する - Qiita
    worthmine
    worthmine 2017/02/14
    PSGI入門第三章 動的ルーティングを実装する on @Qiita
  • [Perl] PSGI入門第二章 CGI::SessionをPSGIで無理やり使う - Qiita

    この記事には問題があります。 こちらをお読みください。 日のお題:CGI::SessionをPSGIで無理やり使う こ## おさらい 前章 PSGI入門 第一章 環境変数の一覧を出す 背景 新しいウェブアプリケーションを書くにあたって PCGIを使うべきか Mojoliciousを使うべきか悩んだ 調べてみたらセッションに大きく違いがあった Plackのセッションの実装は非常に簡素1 Mojoliciousのセッションはちょっと特殊2 中間が欲しいんだよね。ってかCGI::Sessionをそのまま移植したようなのが使いたい やってみた。 結論から先に書くとこうなります。 use strict; use warnings; use Carp; use Plack::App::Path::Router::PSGI; use Path::Router; use Plack::Request;

    [Perl] PSGI入門第二章 CGI::SessionをPSGIで無理やり使う - Qiita
    worthmine
    worthmine 2017/02/12
    PSGI入門第二章 CGI::SessionをPSGIで無理やり使う on @Qiita
  • [Perl] [連載]PSGI入門第一章 環境変数の一覧を出す - Qiita

    PSGI入門でググっても当の導入だけで実用的な実装が なかなか見当たらなくて辛かったので、記事でそのあたりをフォローしようと思います。 記事の対象 CGIの読み書きができる けど、Mojolicious使うにはためらいがある(私のような1) perl使い 必要な環境(というか記事では記載しない準備運動) perlまたはperlbrewなどのインストール2 cpanmのインストール3 Plack及びその他文に出てくるモジュールのインストール PSGIを直接書くメリット 番環境を用意するまではサーバー設定が不要4 RoRだとかMVCだとかを理解してなくても自分のperlの知識だけで書ける HTTPレスポンスの構造を理解してなくてもかけてしまう5 バイバイ(x)html4 & use CGI! ハロー!HTML5 & use Text::Xslate! バイバイuse CGI::Ca

    [Perl] [連載]PSGI入門第一章 環境変数の一覧を出す - Qiita
    worthmine
    worthmine 2017/02/10
    [連載]PSGI入門 on @Qiita
  • Macでperlbrewが正常に利用できない件を調査 - Qiita

    2017/01/25のMac(OS X 10.12.2)のiTunesのアップデートを適用したあたりからローカル環境での不具合に遭遇。 なんらかの理由で設定が変わった可能性も無きにしもあらずだが、iTunesを怪しんでる。 perl 関連のアップデートはしばらくしていない。 状況 cpanも cpanmもエラー、sudo cpanは立ち上がる。 なんだこれ? perl -vすら通らないさすがに勘違いっぽい dyld: lazy symbol binding failed: Symbol not found: _Perl_xs_version_bootcheck Referenced from: /Users/*/local/lib/perl5/lib/perl5/darwin-2level/auto/Cwd/Cwd.bundle Expected in: dynamic lookup dy

    Macでperlbrewが正常に利用できない件を調査 - Qiita
    worthmine
    worthmine 2017/01/27
    MacでPerl5.10.1が利用できない件を調査 on @Qiita
  • Plack/PSGIでアクセス数を計数するとsleipnirでは変になる - Qiita

    結論 sleipnir for Macのバグでした。 開発中のコードより、ざっくりと削ってみても再現するのでこれはもうよく分からない。 ググっても出ないのでQiitaのみんな、オラに力を分けてくれ! コード use strict; use warnings; use Carp; use Plack::App::Path::Router::PSGI; use Path::Router; use Plack::Builder; use Plack::Request; use lib './lib'; # Pwd.pl の保存先 use Data::Section::Simple; my $vpath = Data::Section::Simple->new()->get_data_section(); use Text::Xslate; my $tx = Text::Xslate->new(

    Plack/PSGIでアクセス数を計数するとsleipnirでは変になる - Qiita
    worthmine
    worthmine 2016/10/21
    Plack/PSGIでファイルのダウンロード数を数えたい [Perl] on @Qiita
  • [Perl] CGI::Session でログイン/ログアウトを管理する簡単なサンプル - Qiita

    概略 perlといえば一昔前のWebアプリケーション構築環境の代名詞だったわけですが、最近はPHPの台頭やRoRの普及に伴って完全に下火になっちゃってます、と、私もそう思っていましたが、考えが一変しましたので共有します。 今CGIが再びアツい miyagawaさんのPSGI/PlackにはCGI::Compileというモジュールが含まれており、過去のCGIスクリプトに手を加えることなくmod_Perl/Apacheをすっ飛ばしていきなりサーバーのいちプロセスとしてアプリケーションを常駐(つまりは単純に高速化!)させることが可能になっていることを発見しましたので、これまた再びアツいんじゃなかろうかと考える次第であります。 で、CGI::Sessionから考えよう 上記については別途記事を作成する予定です。まずはこの辺りの知識が不足してるとモダンでセキュアなWebアプリケーションを書くことがで

    [Perl] CGI::Session でログイン/ログアウトを管理する簡単なサンプル - Qiita
    worthmine
    worthmine 2015/05/07
    CGI::Session でログイン/ログアウトを管理する簡単なサンプル on @Qiita