タグ

ブックマーク / songmu.jp (13)

  • おそらくはそれさえも平凡な日々: 結局、target="_blank"で良いんじゃ?

    ここのところ、公私共にサイトを作っていた。特に何も参考にせず、コピペもせず、clearfixをぱぱっと書けたのがちょっと成長かな、と思ってみたり。 てことで、作ったサイト。まだ作りかけの感がぬぐえません。もうちょっと飾り気をつけないとね。 一部DreamWeaverを使っていたわけですが、案外DreamWeaver上のブラウザが役に立たなかったので、機能としてはテンプレート機能を活用したくらい。基エディターモードだし。 最近作っていたWebアプリケーションの中で、印刷画面を別窓表示させたい部分があって、ちょっと別窓について調べてみた。最近ポップアップブロックとか結構陶しいじゃないですか。 別に社内で使う分にならまだしも、お客様が使用中にブロックされたりしたら洒落にならないので。 別窓を開かずに、ページ遷移の中できっちりコンテンツを見せられるのが優れているってのは正しくも有り、理想論。

  • CPANモジュールは依存モジュールのバージョンを固定しない方がいい | おそらくはそれさえも平凡な日々

    Perl界隈ではCarton周りのtoolchainが整ってきて「これからはsemantic versioningやー」みたいな意識が高まりそうですが、そういうルールに則ってバージョニングをするのは大いに結構だとは思うのですが、バージョン違いのモジュールを同一プロセスで共有するとかそういうことはPerlではできないのでどちらにせよ注意が必要です。 まあ、バージョン違いのモジュールを共有できたところで、バージョン違いのオブジェクトが変なところに渡って死ぬみたいな話もあったりなかったりするらしいので夢を見過ぎるのも良くないですね。 それとタイトルのとおりですが、CPANに上げるモジュールの場合はバージョンは固定したり最大バージョンを決めない方が良いでしょう。 例えば、 Super::ORM が Mouse 2.0に固定依存 Hyper::WAF が Mouse 3.0に固定依存 だったりすると

    CPANモジュールは依存モジュールのバージョンを固定しない方がいい | おそらくはそれさえも平凡な日々
  • おそらくはそれさえも平凡な日々: パスワードはサーバー側で生成したほうが良いんじゃないかという話

    いつまで文字列ベースのパスワードを使うんだって話は置いておいて、Webサービスのパスワードはもはや、人間には覚え切れない領域に達しているわけです。 サービス毎に異なるパスワード 大小英数数字記号混じり12文字以上 みたいなのは必須で、それに加えて意味があるかどうかは甚だ不明ですが、定期的に変更必須みたいなポリシーがあるところもありますね。 言ってしまえば、もはや人間が覚えられる程度の強度のパスワードでは弱すぎるわけで、そうなるともう否応なしにパスワード管理ツールを使うしかありません。 そのような「パスワードは覚えきれない」という前提に立つと「もはや覚えやすいパスワードを使う必要がないという」逆説が生まれます。 となると、もう、パスワードはサービス側がランダムな文字列を発行してしまって、それを強制的に使わせる形で良いんじゃないかとふと思いました。以下の様な具合です。 大小半角英数数字記号混じ

  • おそらくはそれさえも平凡な日々: もにかじでオレオレ監視ツールについて話してきました

    オレ自身を監視するツールって話なんだけどな!発表資料は以下。 オレオレ監視ツール 自分が触っているアプリケーションでのタイプ数を可視化するツールです。 なんか手元のMacにGrowthforecastが簡単に入らなかったのでカッとなって VPS上に構築しました。これで僕の行動が世界中からまるわかりです! 3/11追記 手元にHRForecast立ててそれで代用したのでURL消しました 適当に設定したら偶然にも調度良く赤系(iTerm,Macvim)が仕事、緑系(Chrome, Limechat) がサボり系になりました。Limechatがちゃんとライム色になっているのが素晴らしいですね。 仕組みとしてはごく単純で以下のような感じ。 KeyRemap4MacBookをdebugをONにしてキーイベントをログ出力 Slateでアプリの切り替えを検知してそれをログ出力 それらのログをtailで読

  • おそらくはそれさえも平凡な日々: 今週のおーぷんそーす活動と、Dist::MakerのModule::Build対応とか

    深夜のテンションで「おりゃっ」とpullreqを送りつける今日この頃、皆様いかがお過ごしでしょうか。 そんな雑なpullreqに対応してくださってる皆様、当にありがとうございます。 てことで、今週のpullreq活動。 愛用させてもらっているモジュール雛形作成ツール。 Module::Build対応とModule::Buildを使った雛形DefaultMBをpullreqして0.07でshipit してもらいました。 以下のようにすればM::B形式で簡単にモジュールが作成できます。簡単ですね! % cpanm Dist::Maker # 設定。設定ファイルの位置は ~/.dim/config % dim config --import-from-gitconfig % dim config template.default DefaultMB # 雛形作成 % dim init My::

  • おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史

    最近同僚が次々とCPAN Authorになってて良い流れだなーとか思っています。 ただ、CPANへのモジュールの上げ方がわからないとか、M::Iを使えばいいのか M::Bを使えばいいのか、それらがそもそも何やってるのか分からないという話も 聞くので、僕自身もその辺の知識を整理してアップデートしました。 とりあえず、今はModule::Buildを使っておけば良いんじゃないかと 思っていますが、そこに至る歴史的経緯をまとめてみます。 大体、以下に書いてあることに加えて、最近の動きを書いています。 Module::Build:MakeMakerの後継者を目指して PerlでCPAN形式のモジュールを配布する場合は、Makefile.PLなりBuild.PLなりを モジュール作者が用意して、それがインストールに必要なファイル類を自動生成 するという流れになっています。 既存の雛形を使うと色々ファ

  • おそらくはそれさえも平凡な日々: 2013年のGetopt::Long

    完璧な引数処理モジュールなどといったものは存在しない。完璧なGetopt::Longが存在しないようにね。 バッドノウハウの宝庫として有名なGetopt::Longですが、なんだかんだでデファクトで、gnu parallel等、名の知れたコマンドラインツールで使われていたりします。標準モジュール縛りでサクッとコマンドラインツールを書くこともあるでしょうし、そうではなくても、Getopt::Longで片付くことも多いので、個人的なベタープラクティスとかtipsとかを書きます。 Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 大事なことは上の記事に書いてあるので、まずはこれを読んでください。 サンプルコード 僕がスクリプトを書くときのの雛形は大体以下の様な感じ。 #!/usr/bin/env perl =head1 DESCRIPTI

  • おそらくはそれさえも平凡な日々: 運用におけるcrontabのテストとParse::Crontab

    Vixie cron形式のcrontabをparseするモジュールをリリースしました。 Vixie cronと言えば、けんじおじさんに「カビ臭い」とかdisられそうな代物ですが、なんだかんだで利用している人は多いでしょうし、僕も使っています。 https://metacpan.org/release/Parse-Crontab 最近携わるプロジェクトではcrontabはリポジトリ管理しているのですが、それをあまりちゃんとテストをしてなかったので、それを解消すべく書きました。 以下の様に、crontabのテストを書くことが可能です。 use strict; use Test::More; use Parse::Crontab; my $crontab = Parse::Crontab->new(file => 'data/crontab.txt'); ok $crontab->is_vali

  • おそらくはそれさえも平凡な日々: #isucon2 で連覇させてもらってきました

    主催の皆様素晴らしいイベントの提供当にありがとうございました。 まさかの2連覇ですが、@fujiwaraの恐ろしさを再認識するとともに、@typesterのチート性能を見せつけられた感があります。 まずは個人的な反省点から 去年よりかは大分成長しているつもりだったのに、@fujiwaraとの力関係が何もかわっていなかったことに衝撃 @typester(Redis期)がRedis使ってくることはわかっていたのに、競技中に brew install redisとかやってるのはダサすぎ ということで、isucon2を振り返ります。 事前準備 事前にIRCチャンネルを作っておいてnopate botを呼んでおいたくらい。カヤックから別チームも出ていたので、お互いのチャンネルには入らないという紳士協定。 去年の経験から、revサーバーに直接gitリポジトリを作れれば捗ることは分かっていたので、その

  • おそらくはそれさえも平凡な日々: shipped Plack::Middleware::Auth::OAuth

    Plack::Middleware::Auth::OAuthをリリースしたのでお知らせします。 https://metacpan.org/release/Plack-Middleware-Auth-OAuth ソーシャルゲーム開発等、OAuthの署名検証が必要な場面では必須のモジュールかと思います。ご活用ください。 いきなりバージョンが0.03になっているのはこれまでCPANに上がっていなかった中で変更が加えられてきたからです。そもそもこれは@hidekさんがgithubにあげているもので、僕は一回pull reqを送ったくらいです。それを@hidekさんの許可を得て僕が代理でCPANに上げました。 このモジュールは社内で活用していたので、CPANにあげて欲しいなーと思っていたのですが、YAPCの前夜祭後の飲み会で@hidekさんに「上げてもらえませんか?」みたいな話をしたら「あれ、まだ上

  • おそらくはそれさえも平凡な日々: awkの代わりにperlを使おう

    perlのコマンドラインオプションには-aってのがあります。これはawkモードです。perl --help見るとautosplit modeとか書いてありますが。 perlは-pや-nオプションを渡す事によってファイルを一行づつ処理してくれますが、その時に-aオプションを渡すと@F配列にフィールドの情報を自動的に入れてくれます。 フィールドのセパレータはデフォルトではスペースですが、-Fオプションで指定可能です。 カンマ区切りのテキストの、最初のフィールドだけを表示したい場合は以下の様な感じ。 % cat test.txt server1,1343363124,30,/video.php server2,1343363110,20,/profile.php server3,1343363115,7,/login.php server1,1343363105,8,/profile.php %

  • おそらくはそれさえも平凡な日々: PerlのIdiomをCPANモジュールを使って可読性を高くしてみる

    今年からKayac技術部では以前以上にPerlを推進する方向で進めています。そんな中でこれまでPerlを書いたことのないエンジニアにもPerlを書いてもらうことも多くなってきたのですが、PerlのIdiomがやはりわかりづらいんだなぁということを感じています。 割りとサクッとやっつけでコードを書くことが出来るのもPerlの良い点ですが、まあ分かりづらいよね...、と言うことで最近はPerlに慣れない人に対しても可読性が高くなるように多少心がけています。 てことで、PerlのIdiomとそれを読みやすくしたものを幾つか。 ファイル一気読み こんな感じで書いてしまうことが多いと思います。 use autodie; も併用することが多いので、or dieとかも書かない感じ。 my $content = do {local $/; open my $fh,'<:utf8',$file_name;<

  • おそらくはそれさえも平凡な日々: モダンなPerlを「読む」上で覚えておくとよい構文 第2回「リストを理解すれば配列とハッシュをより活用できる」

    第1回から大分時間が空きましたが、なんと続きます。「次回は無名関数について書く」とか書いていましたが、先にリストについて言及することにします。 混同されがちですがこのエントリーでは「リスト」と「配列」を厳密に違うものとして扱います。結論を先に簡単に言ってしまうと、リストを配列に代入すれば配列になるし、リストをハッシュに代入すればハッシュになるということです。 Perlの式は値を返す サブルーチンに限らずPerlのあらゆる式は評価された値を返します。返された値は代入先があれば代入され、代入先がなければ捨てられます。 値を返さないケース ブロックは値を返しません(doを使えばブロックに値を返させることが出来ます)。例外的にuse文やpackage文は値を返しません。この二つはコンパイル時にコードを実行する前に最初に評価されるので値の返しようがありません。 さて、題です。Perlの式の値の返し

  • 1