サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
tsucchi.hatenadiary.com
ハッシュリファレンスのデリファレンスで初心者っぽいハマり方をしたので、メモ。 #!/usr/bin/perl use strict; use warnings; use feature qw(say); my $aa = { aaa => { bbb => 'ccc' }, xxx => 'yyy', }; say "aaa"; say $aa->{aaa}->{bbb};#ok say "xxx"; say $aa->{xxx}->{bbb};#died say "finished"; こんな感じのプログラムを作って実行すると、 tsucchi@seasons[121]% perl a.pl aaa ccc xxx Can't use string ("yyy") as a HASH ref while "strict refs" in use at a.pl line 15.こんな感じ
このネタ、以前書いたのだけど、もう一度触れておこうかな。 鍵をかけたかどうかを記憶してくれる鍵 - デジマガネット 「EyeZu」は鍵自身が鍵をかけたかどうかを記憶してくれる。もちろんボタンを押すなどの余計な操作をする必要は一切ない。いつもの通りに鍵をかけるだけで記憶してくれる。これなら間違いなく施錠を確認できる。 いや、確かにすごいんだけど、小飼弾さんまで絶賛とは... これすご - 鍵をかけたかどうかを記憶してくれる鍵、EyeZu - 404 Blog Not Found なんでこの発想が今までなかったか。 (中略) それはさておき、我が家の鍵もこれと交換したいなあ。 確かに、発想はとてもすばらしいと思う。でも普通の家族だとたぶん機能しないと思うのだ。 サンプルとして、こんな家族でやってみよう tsucchi tsucchi妻 tsucchi子(まだいないけど) かぎを各自が持つ。鍵が
DB 設計の入門書です。初心者はもちろん、ある程度経験を積んだ人も自分の知識を整理するのに役にたつんじゃないかなー。*1 DB の本の場合、「理論」と「実践」のどちらかしか書いてないものが多かったりするのですが、この本は両方にふれて、かつトレードオフをきっちり説明しています。 また、「バッドノウハウ」や「グレーノウハウ」といったものにキチンとふれていて、さらに何故そういったものが生まれてしまうのかの説明とかもあって大変よかったです。 正誤表もあるのでみておくべし。っていうか、みんなよくこんなの見つけられるなー。(いくつか気づいたのもあったけど) さて、基本的にはとても良い本で、超おすすめ(まだ読んでない人は、今すぐこの下のアフィ付きリンクからポチって GW 中に読むべし! :-)なのですが、「ちょっと違うよなー」と思ったところもいくつかあったので、それについて書きます。 RAID1 につい
発見したのは結構前なのですが、twitter でつぶやいても(これとかこれ)、あんまり(っていうか全く)反響なかったのでこっちにも書いておきます。 Perl でテストを書いているときに、xUnit の setUp/tearDown*1を使いたい場合、Test::Classを使ってテストを書いて、setup, teardown を使うのが一般的かな、と思います。こんな感じね。 #!/usr/bin/perl use strict; use warnings; use Test::Class; MyTest->runtests(); package MyTest; use parent qw(Test::Class); use Test::More; sub set_up :Test(setup) { diag("setup"); } sub tear_down :Test(teardown)
YAPC::Asia 2011 の1日目の LT のちょい前くらいに、軽く twitter の TL みてたら、こんなのがありました。 JVN#51216285 DBD::mysqlPP における SQL インジェクションの脆弱性 で、そこにこんな風に書いてありました。 対策方法 DBD::mysqlPP を使用しない 開発者によると、「DBD::mysqlPP は、ジョークプログラムとして作成されたものであり、プライベートな利用や MySQL 通信プロトコルの読解を助ける用途にのみ利用し、それ以外の用途においては同一の API を持つライブラリである DBD::mysql 最新版の使用を推奨する」とのことです。 で、「それはないわー」、と思ったので、 http://b.hatena.ne.jp/tsucchi1022/20111014#bookmark-63059158 これほんとに作者
YAPC::Asia 2011 が終わりました。今年は前夜祭から参加することができ、さらに発表の機会もいただきました。去年も一昨年も楽しかったけど、今年は3倍くらい楽しかったです! 発表中や前後は結構いっぱいいっぱいだったので、あんまり覚えてないのですが、 http://twitter.com/#!/typester/status/125106726969163776 え゛、こんな状況だったの!?びっくりでした。。。モニタの外部出力の設定がよく分かんなくてハマったり、結構時間が余るつもりで作ったのに目いっぱいだったり、そういえば外で発表するのは初めてだったのでいろいろでした。 今回の発表で、ここ2年くらいいろいろやって blog に書いたりしてきたネタを大体使い切った感じなので、次はいつ発表できるかなー、という感じですが、またいつか発表したいです。 自分の発表以外のセッションも楽しめたし、
あんなテスト、こんなテスト(this and that about testing)View more presentations from Takuya Tsuchida.
ISO だか何だか知らんけど、会社では、インストールしたアプリケーションを届けないといけなくなった。めんどい。つーか、いちいち覚えてられないし、そもそも記憶ベースだと不正確だし。「Windows が覚えてるのなら、Windows にやらせればよくね?」と思って、コントロールパネルを開けたのだけど、「アプリケーションの追加と削除」の中身って、コピペできないのね orz。不便すぎ。 しゃーないので、自前で取得する物体を作ってみた。 正直なところ、これだと情報が過剰な上に、インストーラを使わないやつ(レジストリ書かないやつ)だと、取得できないっていう問題はある。でも記憶ベースよりはマシであろう。 参考にしたのは、この2つ。(1個はリンク切れだったので、archive.org から引っ張った) 「アプリケーションの追加と削除」エントリを取得するには?, - 参考:レジストリ、string()、Fo
はじめに ここ1年くらい、わりとまじめに DB 設計やってみて、うまくいったもの、失敗したものなど、いろいろ出てきました。その知見(というほどものじゃないけど)を書いてみようかなー、と思います。 僕は基本的にアプリ屋さん(+運用)なので、データモデルの綺麗さよりもアプリからの使いやすさ(+運用しやすさ)を重視してると思います。 前提 業務系のアプリケーションで、DB は MySQL を想定しています。*1。Web 屋さんとは違って、「COUNT したら返ってこない」、「ALTER TABLE が半日たっても終わらない」みたいな恐ろしいテーブルはありません。(とはいえ、データ量は GB 単位で、それなりにでかくて困ってるテーブルとかもあったりします) なお、アプリケーション更新のための停止が許されていて、スキーマの変更はある程度定期的かつ自由に可能となっています。*2 主キーについて いかな
(2011/08/19 追記あり) たとえば、こんなシェルスクリプトを作ってみて、 tsucchi@independent[102]% cat a.sh #!/bin/sh echo "aaa"; で、sh ではなく、Perl で実行してみます。 tsucchi@independent[103]% perl a.sh aaa すると、ふつうにシェルスクリプトとして、実行されます。 perl -cw つけたり、B::Deparse をかけようとすると、Perl として解釈されるっぽいです。 perl コマンドのオプションのつけ方にもよるのかもしれませんが、コンパイルよりも早い段階で、シェルとして解析されているっぽいですねー。ソース読まないと細かいことは分からないですが、こんなののために Perl のソース読むのか??? とりあえず、日本語 perldoc みても、この挙動は書いてなかったし、
きっかけはこの記事。変数とストアドプロシージャについて - Yet Another Hackadelic。 「DeNA もストアド使ってるんだー!?」と、素直に驚きました。ストアドって、いい面もあると思うのですが、なんだかんだ2年くらい MySQL のストアド使ってきて嫌な面ばっかり見えたので、その話を書こうと思います。 この辺から始まる一連のtweetを見てた人は見なくてもいいかも。 なお、ウチは、ちょっと古めのバージョン(5.1.35 くらいだっけ?)を使っているので、もし「5.X以降ならそんなことないよ!」とかあれば教えていただければ幸いです。 1. あんまり早くない ベンチマークはとっていないけど、「なんでコレがスローログ載るの」みたいなことがしばしばあります。件数の少ないマスタを一覧するだけ、とかそういうやつ。。。 2. スローログに載るのがストアドの呼び出しそのものになってしま
ちょっと前に、新しい CPAN モジュールを ship した関係で気づいたのですが、Perl 5.14 でモジュール作成すると、MYMETA.yml というファイルが生成されます。 と、いうか、5.14 というよりはどうやら ExtUtils::MakeMaker の 6.57 以降を使うと生成されるみたい*1。さらに、E::MM 6.57 はデベロッパリリースしか出ていないので、Perl 5.14 以外の環境だと、(明示的にデベロッパリリースを入れてなければ)たぶん META.yml が生成されないはずです。 で、何が困ったかというと、別の環境(5.8)でモジュールいじってみたら、MANIFEST と合わなくなっていてテストがこけたり*2、5.14 の環境でも、ShipIt 使おうとしたら、途中でエラーになって落っこったりします。MANIFEST.SKIP に MYMETA.yml を登
0. 前提 0.1 はじめに 以前、Perl のテストについてという記事を書きました。2008年の記事なのですが、現在もそこそこのアクセスがあるようです。 ただ、Test::More がアップグレードされて新しい書き方ができるようになったり、そもそも僕自身のプログラムの書き方が少しずつ変わってきているので、いつまでも古い記事を見てもらうのもどうかな、と思い、2011年バージョンをつくってみました。(ちょっとしか改定してませんが。。。)DB まわりのテストに関しては、また次回。 0.2 対象 Perl は書けるが、Perl のテストコードを書いたことが無い人。 0.3 動作確認環境 % uname -a FreeBSD over.tsucchi.mydns.jp 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Sun Feb 27 23:51:01 JST 2011
どっかで見たことあるコードなのだけど、どこで見たのか忘れちゃって、検索しようにもどう検索していいのか良くわかんない。で、試行錯誤したら再現できた。多分これであってるはず。忘れないようにメモメモ #!/usr/bin/perl -w use strict; use warnings; use feature qw(say); my $str1 = "AAA"; (my $str2 = $str1) =~ s/AAA/BBB/;#この書き方ね say $str1; say $str2; $str1 の内容を置換して、$str2 に突っ込むやりかた。($str1 の中身はそのまま)。 この書き方に名前はないのだろうか?検索したくても出来ない。でもオイラも名前思いつかない。 ちなみに、よくあるサンプルコードだと、 #!/usr/bin/perl -w use strict; use warning
実ファイルにアクセスできる場合: File::MMagic or File::MMagic::XS できない場合: File::MimeInfo の globs() File::MimeInfo の場合はこんな感じ。 use strict; use warnings; use File::MimeInfo qw(globs); my $type; $type = globs("a.txt"); warn $type; $type = globs("a.jpg"); warn $type $ perl a.pl text/plain at a.pl line 6. image/jpeg at a.pl line 8.実アプリで使うなら、globs は eval で囲っておくことと、content-type が取れなかったらデフォルトで application/octet-stream あたり
今年で2度目の参加となりました。 見てきたセッションのまとめ的な話は後で書く(と思う。書けなかったら申し訳ない)のでとりあえずメモ。 バッテリーの壊れたノートPCはただのゴミですね。持ってかなきゃよかったorz 去年より話を理解できてる気がする。素直に自分の進歩として受け止めておこう。(実はこれが一番嬉しかったりする) 今年の LT はめちゃくちゃ面白かった。すげー質が高かったですね。 「言語設計者たちが考えること」を購入して、Larry Wall さんのサインもいただきました。家宝にします。 周りに人がいなかったから少し話をすればよかったかなぁ。でもこういうときに何を話していいか、すごく難しいよね。。。 今年は Moose 関連の話は無かったなぁ。もうみんな当たり前のように使ってる、ってことなのかな。(オイラもそうありたいんだけどね。。。) 今年のタイムテーブルはいつお昼ごはんを食べる前
楽しかったけど、さすがに疲れたー。 昨日・今日のまとめは、そのうち書きます。(多分。hirataraさんがすげーしっかりまとめてるので、モチベーションが微妙ですが。。。) 見つけたスライドは随時ブクマしてます。 はてなブックマーク - tsucchi1022のブックマーク - yapcasia2010 以下雑談とか所感とか。 やっぱPCかスマートフォンがないと楽しみが減るなぁ。。。 ガラケー投票できなかったよ orz Xslate とか、ソース読んでみようかな。(ヘタレなので PP 版から) tokuhirom さんが作る、といってた高速な HTTPクライアントはすごく期待 コレかな? xaicron さんの話がすごくためになった。40分枠でやってほしかったなぁ。
Nagios のプラグイン書いたの続きみたいな話。 プラグインで使うスクリプト(check_hogehoge みたいなの)を好きな場所にインストールしたいのだけど、Module::Install でそれをどうやったらいいのか分からず悩んでました。 たとえば、Makefile.PL で、 install_script "check_hoge"; みたいにすると、/usr/local/bin あたりに突っ込まれてしまうので、Nagios 的にはあんまりうれしくない状況になってしまうのです。「デフォルトで /usr/local/nagios/libexec に入れつつ、カスタマイズ可能」ってのがやりたいことなのだけど、ぐぐってもあまり事例を見つけられず。。。 で試行錯誤した結果、 install_script 'check_hoge'; WriteMakefile( INSTALLSITESCR
Hudson をはじめてみました の続きみたいな話。(なのかな???) dannさんが最近、Hudson 導入した記事を書いています。 HudsonでperlプロジェクトのCI - Devel::Coverでcoverage取得 PerlプロジェクトをHudsonで継続的インテグレーション これを読んでたら、自分の Perl モジュールも Hudson で CI したくなってきました。設定したやり方は、基本的には上記の記事の内容なのだけど、ちょっと+αを。 Devel::NYTProf dann さんの記事には Devel::NYTprofについても同様にHudsonで実行しておくと、継続的にパフォーマンス状況を確認できるのでとても便利です。 とありましたが、これ、設定しようとすると結構ハマりました。多分こんな感じでいけるはず。 まず、「ビルド手順の追加」で「シェルスクリプト」を追加し、こ
年末で、もう仕事納めてますが、空気を読まずに仕事ネタです。メモだけとって、blog にアップしてなかったので。。。 最近、CI ツールを CruiseControl.net から Hudson に移行しました。 まず、Trac を(Hudson が入っている)最新バージョンまでアップグレードしてから、Hudson を最新バージョンに入れ替え。 あとは↓見ながら「サービス化」を実施 Hudson をちゃんと始めてみようと思います - かおるんダイアリー で、↓見ながら、MSBuild Plugin を有効化+NUnit の実施。 Redsolo’s blog site: Guide to building .NET projects using Hudson 基本的には、MSBuild Plugin でビルドし、バッチコマンドで NUnit を叩き、NUnit publisher で受けるだ
相変わらず面白いなぁ(悪い意味で) ベンチャー社長で技術者で: 「転職活動する暇があったらブログを書け」について SQLはさておき、弊社の入社試験に、「1から10までの自然数の合計を出すプログラムを書きなさい」というのがあるのですが、ほとんどの人はループで書けていた。足し算だからかな?ちなみに、もちろんわたしが望んでいる答えは、ガウスが8歳だか、10歳だかにあみ出したというあのやり方で、まぁ、いわゆる引っ掛け問題です。今まで正解者はいない(苦笑) どう考えても、 return 55; が正解だと思うけどね。この仕様でいいのなら。シンプルかつ高速だから。で、コメントでこんなこと言ってるの。 クイズとか試験ってのは言葉遊びみたいなところがあり、大手とか官僚はそういう能力を尊ぶところはあるでしょうが、一般社会ではそれではダメで、意図がまったく読み取れてないからゼロです。 客先で言葉遊びを始められ
もう一週間もたってしまいましたが、YAPC::Asia 2日目をまとめました。 ※あくまでも私の聞いた(つもりの)内容と私が書いたメモが元になっておりますので、実際のセッションや発言とは異なる可能性があります。今回は資料がアップされていることが多いので、資料も見てくださいね! How regular expressions work internally Jose Castroさん 資料: 現時点ではアップされていないようです Internally っていうから、コアな話かと思ったら、意外と初心者向けでした 箱を使って、マッチとかバックトラックとかを説明してて、いい感じでした 正規表現を説明する際のいい方法だと思う QA aaaaaaaaaa =~ /a+a+a+a+b/ のマッチ(バックトラックを延々繰り返すので非常に遅い)でアンカー($)をつけたらどうなる?(速くなるのではないか?)
(ごめんなさい。途中です)一応続き書きました。 自分の聞いてきたセッションを軽くまとめました。 ※あくまでも私の聞いた(つもりの)内容と私が書いたメモが元になっておりますので、実際のセッションや発言とは異なる可能性があります。今回は資料がアップされていることが多いので、資料も見てくださいね! プラコアでは Catalyst をこう使っています! / Plucore way of using Catalyst Daisuke Komatsu さん 資料(http://vkgtaro.jp/2009/09/11/yapcasia2009) プラコアという会社での、Catalyst の使い方事例 Catalyst + mod_perl での開発が多い たまに CGI::Application Catalyst はほぼルーティングのみ サービスクラスをつくり、 Catalyst からは独立させてい
今日は朝から行ってきました。 今年は初参戦でしたが、とても楽しかったです。 さてさて、細かい話は明日以降(ウチの小さな女王様のご機嫌次第です :-)書くとして、今日も雑談的なメモ。 Mac 率高い 今日も id:nekokak さんが面白かったです Job Queue はウチでも使いどころが多そうだから、検討してみよう 昼ごはんは「つかさ」に行きました 刺身定食が切れてた orz でも、しめ鯖旨かったので ok YAPC の運営の方々が用意した昼食(サンドウィッチ?)は余っていたみたい 地元の方に配ってましたw ちょっと申し訳ないことしてしまったなぁ CPAN Author 率高い つーか本当にびっくりした オイラもモジュール CPAN にアップしたいなぁ いつか発表もしてみたいっす
表題のとおり。でも今日は打ち合わせがあったので午前は出社。途中からの参戦となってしまいました。見てきたセッションのメモは土日か週明けにアップすると思います。 以下、雑談的なメモ YAPC::Asia は「やっぷしー・(あ|えい)じあ」と読むらしい スーツ少なっw そして男子率高っw 東工大に行ったのは某案件以来約2年ぶり 自分の中では、関ヶ原とか小牧・長久手とかそんな感じですね。。。(古戦場的な意味で) yappo さんと id:nekokak さんが面白かったです トピック的にも、技術的にも、おしゃべり的にも dann さんは、力強い文体から、自分の中ではマッチョなイメージだったのですが、実際は繊細そうな方でした つーか WAF を数時間で作れるってすげーよ。。。 自分の目の前で、id:dankogai さんがコケるのを見ましたw トラップ仕掛けたり、足をかけたわけではありませんよ、もち
夏休み中ですが、仕事メモ。 Unix 系の開発に、今まで cygwin を使っていたのですが、やっぱり「素の」Unix 環境がほしいなぁ、と思い、coLinux を導入してみました。 最初は coLinux のサイトから落とせる OS イメージファイルでごにょごにょしていたのですが、あっという間に disk full になってしまいました(1GB しかないんだよね)。そこで、CD イメージを使ってインストールしてみることにしました。やり方があんまり載ってなくて苦労しました。。。 本体のインストールとネットワークの設定 どこを見てもいいと思うけど、たとえば↓を見て、coLinux 本体のインストールとネットワークの設定だけやっておきます 軽快なLinux環境をつくれる、coLinuxのセットアップ手順 # もちろん OS イメージファイルを落として、coLinux がどんなものなのかひとしき
Test::More 自動試験をさらに便利にする - Perl入門〜サンプルコードによるPerl入門〜 no_planは、「テストを弱くするのでなるべく避けてください」とドキュメントにあるのですが、何が弱くなるのかよくわからない。 オイラも結構 no_plan 使ってしまうのだけどね、でもホントは良くないんだよね。exit されると、テストが途中で終了しちゃうんだよね。例を作るとこんな感じ。 #!/usr/bin/perl use strict; use warnings; use Test::More "no_plan"; # 以下テスト is( sum(1,2), 3);# => ok is( sum('a', 0), -1); #=> ホントは NG だけど、exit されて上が ok だからテストスイートが通ってしまう # これがテストされる関数。同一ファイル・パッケージにおいてる
仕事メモ。 C# でパスワードつきの Excel を取り扱おうとして、Excel._Workbook(だっけ?) の HasPassword()を使ってみたら、Open 時にすでにパスワードを聞いてくるダイアログが上がってしまいダメ。 Open 時に何とかするしかないなー、と思って MSDN 見ても書いてないし。。。 ぐぐってもあんまり情報がヒットしないし...(Open 時には、HasPassword() がダメってのは見つけたけど。。。つーか良く考えたら当たり前だしね。。。) で、Excel.Workbooks の Open の引数ちゃんと見たら、パスワード(と書き込みパスワード)のフィールドがあるので、「おぉ、これか」と思ったけど、「パスワード指定されてたらほげほげ」みたいな指定ができなさそうだし、つーか「そもそもこの引数 Object 型だけど、いったい何型いれるんじゃ?」みたいな
最近のお仕事の話とかデータベースのテストってみんなどうやってるんだろ?の続きみたいな話。 マーチン・ファウラーが Thought Works における、Ruby での開発について色々書いてます。(記事が書かれてすぐ邦訳されてた。ありがたやありがたや。) で、全編通して面白い記事なのですが、特に興味深かったのが下記のくだり。ちょっと長いけど引用します。 Martin Fowler's Bliki in Japanese - ThoughtWorksでのRuby - Active Recordのテスティング Active Recordの問題は、データベースアクセスコードをビジネスロジックと一緒にしてしまっていることだ。これでは、データベースダブルを作ることが難しい。 Mingleチームでは、Railsがデータベースと密接に結びついていることを受け入れ、本物のデータベースに対してすべてのコミット
次のページ
このページを最初にブックマークしてみませんか?
『tsucchi’s diary(元はてなダイアリー)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く