大きな効果を上げるために チューニンガソン#1~#3の改善率を見ると、アプリケーションや全体のアーキテクチャに手を入れないで改善できるのは最大でも10倍以下です。もちろん数倍速度が違えばサーバ台数を大きく減らせるので有意義なのは間違いないのですが、ISUCONやチューニンガソン#4のような飛躍的な高速化は望めないことがわかります。 つまりチューニングでは、単にパラメータ設定を変更するのみではなく、ボトルネックになっているコードやクエリ、アーキテクチャに的確に手を入れていくことで大きな効果を上げることができるのです。 ボトルネックの発見と解消が大事 システム全体の処理時間についてパレートの法則(経験則)を適用すると、「全体の処理時間の80%は20%の部分で発生している」ということになります。実際にシステム全体で一番ボトルネックになっている部分を解消しないことには、ほかの部分に手を入れても大
予告したサブルーチンの呼び出し方の謎です。 しかし、予告した割りには、上手くまとまらなかったのですが・・・以下のようになりました。 ◆ イントロ まず、Perlでのサブルーチンは関数と等価です。 そして、関数の呼び出し方には、『&』のファニー文字を付けたり、付けなかったり・・・。 また、関数名の後に『()』小カッコを付けたり、付けなかったり・・・。 またまた、『&』も『()』も付けなく、ベアワードになったりと・・・。 これらは、『組み込み関数やインポートしたモジュール関数』と『ユーザ定義関数』で意味が違ってきます。 なので、各々について対比して解説をしてみました。 尚、以下は、あくまでも私のコーディング方針で、強制的なものではありません。 ◆ 『&』ファニー文字について 組み込み関数やインポートしたモジュール関数は、『&』ファニー文字は付けない。 組み込み関数等に『&』を付けるとエラーにな
2009年02月22日22:31 Perl perlの波ダッシュの文字コード変換のまとめ perlの文字コード周りはなかなかカオスです。外部エンコードとか、perl内部での文字コードとか、UTF8フラグとか。UTF8フラグ?なにそれ?な人は、こことかここを見てみると良いかも。(・∀・) 基本的には外部から入ってきた時点でdecodeして、出力時にencodeしてやれば全て解決するんですが、「〜(波ダッシュ)」と「−(全角マイナス)」だけは特別です。注意が必要なのはこの2パターン。 ① utf8⇔shift_jis ② utf8⇔euc-jp ①については以前、perl utf8→sjisで文字化けという記事で紹介しましたが、encode時に、'sjis'では無くて、'cp932'を指定すればOK。※「〜」とか「−」はsjisには含まれていない文字なのが原因。 今回紹介したいのは②の場合です
NAME Unicode::Japanese::JA - 日本語文字コード変換 概要 use Unicode::Japanese; use Unicode::Japanese qw(unijp); # convert utf8 -> sjis print Unicode::Japanese->new($str)->sjis; print unijp($str)->sjis; # same as above. # convert sjis -> utf8 print Unicode::Japanese->new($str,'sjis')->get; # convert sjis (imode_EMOJI) -> utf8 print Unicode::Japanese->new($str,'sjis-imode')->get; # convert zenkaku (utf8) -> hank
開発メモその3です。今回は Perl のおはなし。 何年も前に作ったウェブアプリケーションのコードを開いてみたら黒歴史なコードが出てきて憂鬱な気分になる、そんな経験ありませんか。私はあります。ずっとそんな現実から目を背けて生きてきました。 さて、先日 Perl + CGI で書いて Apache::Registry で高速化している、実行環境が Apache に癒着した CGIアプリケーションを発見しました。おえ〜っ。一から作り直したい気持ちをぐっと堪えて、これを Plack 化したりとリフォームしていくとしましょう。その過程を以下記します。劇的ビフォア・アフター! ・・・とかは期待せず、地道な変更を積み重ねていくのがコツです。 方針 いきなりコードをがりがり書き換えていくというよりは、試行錯誤のしやすい環境に移行させていきながらリフォームを進めます。遠回りですが、結果的にその後の運用が楽
CONTENTS NAME DESCRIPTION CONCEPTS USING FILTERS WRITING A SOURCE FILTER WRITING A SOURCE FILTER IN C CREATING A SOURCE FILTER AS A SEPARATE EXECUTABLE WRITING A SOURCE FILTER IN PERL USING CONTEXT: THE DEBUG FILTER CONCLUSION LIMITATIONS THINGS TO LOOK OUT FOR REQUIREMENTS AUTHOR Copyrights #NAME perlfilter - Source Filters #DESCRIPTION This article is about a little-known feature of Perl called
こんにちは!ラブプラスとときメモ4の狭間で揺れ動いているxaicronです!! 今日は日本でプログラムを書いていたら避けては通れない気がする、Encodeの話をしようと思います! はじめに まず、この記事を読む前に、Perlのバージョンの確認をしてください。以下のようにやればバージョンが表示されます。 % perl -v ここで、5.8.1より下の数字ができてきた方は、Perlのバージョンアップをしてください。5.8.1より下のバージョンでは、Perlの内部文字コードが安定していないので、いい感じになりません。できれば5.8.8以上のバージョンを使いましょう。 それから、文字コードってなによって人も適当にWikiとかで調べてから読んだ方がいいと思います!! Encode.pm Encodeは昔のjcode.plやJcode.pmに代わる、現在の文字コード処理のスタンダードModuleです。
こんにちはこんにちは! エンジニア川端です。 春ですね。花見ですね。フェンリルでも、大阪城公園に花見に行ってきました。 花は桜木、男は岩鬼。美しい桜を見てリフレッシュです。 「Sleipnir 3 for Windows」を始めとする各プロダクトの開発者の面白い一面なども見る事ができ、楽しゅうございました。 花見に行くためには定時ダッシュしたいわけですが、そんな時に限ってバグを発見したり、テスト用のチェックシートが積み上がっていたりするものです。 繰り返し繰り返し行うテスト(レグレッション・テスト)は、できるだけ人手をかけずに行い、とっとと花見に 効率的な開発を行いたいもの。開発者のみなさんは色々工夫をされていることと思います。 私はラクダスキーなので、大体のものは Test::More とかでやってしまいますが、最近はちょっと「Selenium」も触ったりしてます。 「Selenium」
CONTENTS NAME SYNOPSIS DESCRIPTION How to Export Selecting What to Export How to Import Advanced Features Specialised Import Lists Exporting Without Using Exporter's import Method Exporting Without Inheriting from Exporter Module Version Checking Managing Unknown Symbols Tag Handling Utility Functions Generating Combined Tags AUTOLOADed Constants Good Practices Declaring @EXPORT_OK and Friends Pla
NAME Test::WWW::Mechanize::CGI - Test CGI applications with Test::WWW::Mechanize SYNOPSIS use Test::More tests => 3; use CGI; use Test::WWW::Mechanize::CGI; my $mech = Test::WWW::Mechanize::CGI->new; $mech->cgi( sub { my $q = CGI->new; print $q->header, $q->start_html('Hello World'), $q->h1('Hello World'), $q->end_html; }); $mech->get_ok('http://localhost/'); $mech->title_is('Hello World'); $mech-
CGIのエラーで defined(%hash) is deprecated at jcode.pl line 684. (Maybe you should just omit the defined()?) defined(%hash) is deprecated at jcode.pl line 693. (Maybe you should just omit the defined()?) というのが出てしまう。 原因はPerlのバージョンアップ?5.10までくらいなら問題ない。らしい。 1.Perlのバージョンダウン 2.エラーのあるdefined部分の削除 のいずれかで解決するっぽい?? 参考 perlのバージョンを5.10から5.12に上げたら、jcodeのエラーが出るようになった。 CGI全体でエラー(コメント欄に回答?がある) で、jcode.plからエラーのあったdefin
UTF-8 フラグ? 自分がわかりにくかったところとか、重要そうな点をまとめておきます。 まず UTF-8 フラグについて。UTF-8 フラグという名前だからややこしいんだけれども、結局のところ、Perl の内部でマルチバイト文字を 1 文字として扱える状態というのが UTF-8 フラグがついた状態です。そしてそれはあくまで Perl の内部で使うためのもので、そのままの状態で外部へ出力できるわけではありません。 UTF-8 フラグがついた文字列というのは、UTF-8 だとかそういうのとは全く別の文字コード体系、だと考えればいいと思います。(それはそれで正確ではないかも知れませんが。。ASCII は UTF-8 と同じようですし。) さて、ここまできて、取るべき選択肢は 2 つあります。まず、1 つめ。マルチバイト文字はこれまでどおりバイトコードとして扱う。2 つめは、Unicode に対
id:tomi-ru さんが [http://e8y.net/mag/015-encode/:title] というとてもプラクティカルな [http://search.cpan.org/perldoc?Encode:title=Encode] 入門をお書きになったので,わたしも違う切り口で書いてみたくなりました。 いちおうの基礎(読み飛ばし可) 文字セット, キャラクタセット, 文字集合, 文字集合 - Wikipedia エンコーディング, 符号化方式, 文字符号化方式 - Wikipedia この2つは異なります。とくに知らなくても下記の文書を読むことはできますが,理解しているとためになります。くわしく知りたい人は自習してください。 文字セットの例 Unicode JIS X 0208 ひらがなとかカタカナとか漢字とか ASCII 文字 エンコーディングの例 UTF-8 ISO-202
はじめまして。 最近Perlを始めたmyfinderです。 ほかの方が書いたCPANモジュールを紹介したりそれらを使ったTipsを書くCasual Trackということで、今回はテストに関連するモジュールについて書きます。 プログラムの「テスト」 テストを書くというのはデンタルフロスを使うようなもので、誰もが良いことだといいつつ、実際には軽視されがちだ。 なんて言われることもありますが、実際テストがないとプログラムの改修とか引き継ぎとかが非常に大変になりがちです。 また、CPANにアップされているモジュールの中には、モジュール本体よりもテストコードの量の方が多いものも多々あります。 なのでプログラムの質を保証したり、内容を的確に伝達するにはテストが欠かせないものであることは間違いないと思います。 早速使ってみる 例えば消費税の計算をしてくれるConsumptionTax::JPというモジュ
October 25, 201208:22 カテゴリ Test::Pretty の歴史 Test::More に subtest 機能がはいったのが 0.94 で、0.96 あたりから done_testing が不要になって、0.98 で $? の扱いがなおった、なんかそういうかんじの歴史がある(つまり現状は 0.98 に依存しないとまともにはつかえない)。 で、Test::More の subtest は TAP を拡張する形で実装されているわけだけど、まあみづらい。得に、subtest の結果が main test の方にもフィードバックされるという形式なんで、それがまあきつい。 そこで、対策として Test::Flatten というのができたりしている。 http://blog.livedoor.jp/xaicron/archives/52299545.html ここまではみ
cpanminusはCPAN::shellに変わるPerlのライブラリ管理システム。 cpanminusはPerl製のオープンソース・ソフトウェア。MOONGIFTではスクリプト言語の中では圧倒的にPerl製のソフトウェアを紹介することが少なかった。要因の一つにとにかくCPANを使ったインストールが面倒くさいというのがあった。 どんどんインストールされていく 起動しようとしてエラー、CPANでインストールして再実行、またエラー…そして最後の最後でCPANモジュールが依存できない。そんなことを繰り返しているとストレスで自然と避けてしまうというものだ。だが今後は違う、cpanminusを使えば良いのだ。 cpanminusはCPAN::shellに変わるCPANライブラリ管理システムだ。CPAN::shellの欠点として、依存するモジュールがある時に都度y(とは限らないが)で答えないといけない
なんてこった…CPANモジュールをnode.jsで動かしてしまうライブラリ「node-perl」 https://github.com/tokuhirom/node-perl/ ここ最近、プログラミング言語同士の壁が徐々に破壊されている気がします。あるプログラミング言語上で別なプログラミング言語を動くようにしたり、置き換えてしまったりするような類です。今回はその一つ、CPAN moduleをnode.js上で動かすという、かなり無茶な気がしなくもない、そんなソフトウェアnode-perlを紹介します。 var Perl = require('../index.js').Perl; var perl = new Perl(); perl.use('LWP::UserAgent'); var ua = perl.getClass('LWP::UserAgent').new(); var res
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く