【perlメモ】flockの使い方
flockはファイルの排他制御を行ってファイルが同時に書き込みアクセスされることによって破損するのを防ぐのに利用する関数です。割とよく使うのですが、一連の処理が割とうろ覚えになるのでメモっておきます。
flockを利用した一連の処理の流れとしては下のような感じ。
- ファイルのopen
- flockで排他制御
- seekでファイルのシーク位置をファイルの先頭に移動
- ファイルに書き込み
- truncateでファイルのサイズを変更。tellは現在のファイル位置(つまり現在のファイルサイズ)を返す。
- ファイルのclose
flock(FILE,8)でファイルのロックを解除しないのはcloseすると自動で解除されるからです。flock(FILE,8)で解除してからcloseすると、ファイルをcloseする前に排他制御が解除されて隙が生まれるため、flock(FILE,8)とclose(FILE)の間に他のアクセスがあった場合ファイルが破損する可能性が出てくるためclose(FILE)で自動で解除してもらうほうがファイルの破損の可能性が低くなります。
sample.pl
#!/usr/bin/perl
use strict;
use warnings;
open(FILE,"test.txt") || die $!;
flock(FILE,2);
seek(FILE,0,0);
print FILE "abcdefg\n";
truncate(FILE,tell(FILE));
close(FILE);
ちょっとデバッグログを出力したい時の為の簡単なサンプル。(最大1000行までデバッグログを保存するという仕様の場合。)
Windows上のperlで利用するのを前提に最後の行はcp932になっているが、他の文字コードで標準出力したい場合は他の文字コードを指定すればOK。デバッグログにはutf-8で出力。モジュールを使うまでもないちょっとしたデバッグ時に使っている。
sample2.pl(utf-8)
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
my $dbglog = ‘deblog.txt’;
#デバッグログファイルが無いときは作る
unless( -e "$dbglog"){
open(FILE,">$dbglog") || die $!;
close(FLIE);
}
&debug_print("abcdefg\n");
#====================================================================
# &debug_print( str );
#====================================================================
sub debug_print{
open(FILE,"+<:utf8","$dbglog") || die $!;
flock(FILE,2);
my $str = decode_utf8($_[0]);
my @dbglog = <FILE>;
push(@dbglog,$str);
while(scalar(@dbglog) > 1000){
shift(@dbglog);
}
seek(FILE,0,0);
foreach(@dbglog){
print FILE $_;
}
truncate(FILE,tell(FILE));
close(FILE);
print encode(‘cp932’,$str);
}
安いネットブックを探してみた。
ベッドに入って寝ながらGyaOとか見たいなーと思ってたのでちょっとネットブックがほしい。安いネットブックをAmazonで見ていたら価格だけで安いなーと思ったのは下の3機種、どれもアマゾンのネットブックの売れ筋ランキングでも5位以内に入っている。値段も3万円未満。性能的にもちょっと比較してみたが、基本的にはほぼ同じ。Leveno IdeaPad S10-3はCPUがIntel Atom N455で他の二つはIntel Atom N450違いはN455のほうがDDR3メモリーに対応しているのでパフォーマンスが上がるかも知れない程度。Windows XP搭載機がよければ「MSI Wind U135-1429JPA」か「ASUS EPC1001PX-WHM」になる。
Lenovo IdeaPad S10-3シリーズ 10.1型TFT液晶 ネットブック 0647AQJ
Lenovo IdeaPad S10-3シリーズ 10.1型TFT液晶 ネットブック 0647AQJ
amazonでLeveno IdeaPad S10-3のスペック表を見ると結構いい加減。嘘も多いのでちゃんと、下記のメーカーのページにいってスペック表を見たほうが良い。
タグ :
ワサビの香りが花粉症に効果があるらしい?
ワサビ関連製品メーカーの金印は、本ワサビの香り成分に花粉症の症状を緩和する作用があることを、花粉症患者への臨床実験で確認したと発表した。実際に香り成分をかぐことで、鼻詰まりなどの症状に改善効果がみられた。
ワサビの香りが花粉症に効果! | ライフ:最新ニュース | nikkei BPnet 〈日経BPネット〉
ということは下のワサビスプレーが付いたマスクなどは効果があるということだろうか?
下のブログの記事の様に、『若者のワサビ離れ(笑)』が進んでいるらしいし、ワサビメーカーも色々と新しい活路を見出そうと必死なのだろう。
痛ニュー速報!: 【社会】「寿司はサビ抜きで」 若者のワサビ離れが進んでいる 「辛み」「苦み」を敬遠、好みは「マイルド」、成熟せず成長か
まあ、もう何年も寿司などたべていないが、やっぱり寿司も刺身もわさびがあったほうがうまいと思う。
なんか納豆を食べると血がサラサラになるとかの時と同じように眉唾な気もしなくもないが、花粉症で困っている人は一度試してみるといいかもしれない。プラシーボでも効果があればラッキーだし。
![]() |
わさび抽出精油を配合したスプレーが付いているマスクです。風邪… ユーペットギャラリー by rakutool |
こういうマスクに貼り付けるタイプもあるらしい。
花粉症は今花粉症ではなくてもずっと身体に少しずつ蓄積されいていつか限界になりコップから水があふれるように突然花粉症を発症すると何かで聞いたことがあるので、その時に備えて一応知識として覚えておこうと思う。
タグ :
早く正月おわらないかな~
隣の神社の初詣客がならす鈴がうるさくてかなわない。マジで寝られないレベル。年明けはひどかった。耳栓買っとくんだった。
タグ : つぶやき
高速軽量化されたFirefoxクローン『Pale Moon』をインストールしてみた。
GIGAZINEの記事をみてPale Moonを早速インストールしてみることにした。GIGAZINEの記事を見るとFirefoxをWindows専用にチューンしたものでレンダリングなどもオリジナルのFirefoxよりも高速らしい。消費メモリーも少ないらしい。最近はGoogle ChromeをメインブラウザにしているのでFirefoxはFirefox+Sage++でRSSリーダーと化しているがこれは使わない手は無いだろう。
Windowsのみに最適化することで高速化しているFirefoxクローン「Pale Moon」 – GIGAZINE
Firefoxと完全互換の高速起動が可能な軽量ブラウザ「Pale Moon」 | フリーソフト,Windows PC活用情報局
インストール方法
Windows 2000以降に対応しているようだ。
The Pale Moon Project homepage
上記ページでメニューからDownload>PaleMoonと進む。
ダウンロードページに進んだら適当なダウンロードサイトからインストーラーをダウンロードする。私はおすすめ(RECOMMENDED)になっているSity Hostingからダウンロードしてみた。
2011年1月2日現在だとpalemoon-3.6.13-installer.exeというファイルがダウンロードされるのでこれを実行する。
XPの場合セキュリティー警告の画面が出るが[実行]をクリック。
解凍中の画面が表示されるのでしばらく待つ。
「Welcome to the Pale Moon Setup Wizard」の画面で[Next]をクリック。
Setup Typeの画面では無難に[Standard] を選択して[Next]をクリック。
Summaryの画面では通常はそのまま[Install]をクリック。
もしも、インストールパスを変更する場合は戻ってSetup Typeを[custom]にしてインストールをするとインストール先を指定できる。
デフォルトのブラウザーにしたくない場合は[Use Palemoon as my default web browser]のチェックを外す。
インストール中の画面になるのでしばらく待つ。
インストール完了の画面[Finish] をクリックしてインストール完了。
初回起動時の画面
日本語化
日本語化するには日本語ランゲージパックを導入する。
The Pale Moon Project homepage
Pale MoonのサイトのトップページのメニューからDownload>Pale Moon language packsと選択してランゲージパックのダウンロードページに進む。
「ja.xpi: Japanese」をクリックしてダウンロード
Pale Moon自体でランゲージパックのページを表示してランゲージパックのダウンロードを行なうと簡単。下のように確認画面が出るので[Allow]をクリックする。
補足:ランゲージパックを別ブラウザでダウンロードした場合は、ダウンロードしたja.xpiをPale Moonの画面上にドラッグドロップしてあげれば同じようにアドオンのインストール画面になる。
アドオンのインストール画面になるので[Install Now]をクリックする。
インストール中画面になるのでちょっとまつ
Palemoonの再起動確認が表示されるので[Restart Palemoon]をクリックする。
タブとか開いてるけどリスタートしていいか聞かれるので[Restart]をクリック。
インストール完了した旨が表示されるので[×]をクリックして閉じる。
日本語表示になるようにPale Moonの設定を変更する。
アドレス欄に[about:config]と入力。
Filter欄に[general.useragent.locale]と入力して絞り込む。
[general.useragent.locale]をダブルクリックする。
入力画面が表示される。初期値は「en-US」になっている。
「ja」と書き換えて[OK]をクリック。
Pale Moonを一旦終了する。終了時の確認メッセージが既に日本語になっている。
再度Pale Moonを起動してみるとメニューなどが日本語になっている。これで日本語化は完了。
Firefoxの設定を取り込む
Firefoxを既に導入している場合、今まで使っていたアドオンやお気に入りなどがあると思うが、それをPale Moonにコピーするには以下のページからツールをダウンロードして利用しFirefoxのprofileをPale Moonに取り込む。
ダウンロードしたpmmig.exeを実行する。
セキュリティー警告画面ではそのまま[実行]をクリック。
Pale Moonが起動中だと下の警告画面が出るので、Pale Moonを終了してから[OK]をクリックする。
「Pale Moon profile migration tool」の画面が表示されたら[Copy profile]をクリック。
Pale Moon Profile 上書きしちゃうけどほんとにいいですか?といった感じの確認画面が表示されるのでよければ[OK]をクリック。
Statusが「Copying.please wait…」になるのでしばらく待つ。
途中下の画面が表示された。「時間掛かるかも知れないんで、End押すと止まるしContinue押すと続けるよ」みたいな意味だと思うが、そのまま放置すれば勝手に進む。
Statusが「Completed.」になればOK。[Exit]をクリックして完了。
Pale Moonを起動してみるとFirefoxで利用していたアドオンやお気に入りなどprofileが全て取り込まれた。
注意点として、Firefoxのprofileを取り込むとPale Moonのprofileが上書きされるので先に日本語化を行なうとprofileの取り込みによって無効化されてしまうのでまたメニューなどが英語に戻ってしまう。その場合は再度日本語化の手順を行なう。
とりあえずよさそう(軽くなった様な気もする)なのでしばらく使って様子を見ようと思います。
#ちなみにFirefoxを火狐と書くのは厨二病っぽくて嫌いですw。だいたいどう考えても入力もFirefoxと英文字で打ったほうが早いしわざわざ火狐と書く意味がわからない。厨二としか思えない。
【SQLiteメモ】小数点以下を取得するには
Ajaxの勉強がてらに投票プログラムを作ってみた。 – KUMA TYPE
上記で配布している投票プログラムで作成されたデータベースで評価の平均点を求めようと思う場合。
テーブル名:TBL_VOTE
1 entry_id INTEGER UNIQUE 記事ID
2 vote_num INTEGER 投票回数
3 totalpoint INTEGER 総合点数
テーブルも構造は上の様になっている。
select totalpoint/vote_num, vote_num,totalpoint FROM TBL_VOTE ORDER BY totalpoint/vote_num desc
そして評価平均を求めるために、総合点数÷投票回数という単純な計算で値を求めようとして上のようなSQLを書いて実行してみると
上記の様になるが、赤枠で囲ったところなどを注目すると分かるように、17/4、9/2など明らかに割り切れない値でも小数点以下が取得出来ていない。これはデータの型がINTEGERで整数型として定義されているためなのでcastで型をREAL型に変更する必要がある。
select cast(totalpoint as REAL)/vote_num, vote_num,totalpoint FROM TBL_VOTE ORDER BY cast(totalpoint as REAL)/vote_num desc
castの使い方はcast(カラム名 as 型名)となる。
実際にcastを適用したSQL文が上。
castを使用した結果小数点以下も取得できるようになった。さらに、小数点以下を四捨五入して必要な桁数分取得するにはround関数を利用する。
round関数の使い方はround(カラム名[,小数点以下の桁数])
select round(cast(totalpoint as REAL)/vote_num,2), vote_num,totalpoint FROM TBL_VOTE ORDER BY cast(totalpoint as REAL)/vote_num desc
round関数を適用したSQL文が上。
結果は上のとおり小数点2桁まで求められるようになった。
タグ : SQLite
2011年 謹賀新年
明けましておめでとうございます。今年も宜しくお願いいたします。
今年は人並みに働いて忙しい年にしたいと思っています。
タグ :
オールクーポンAPIを使ってグルメ関連のクーポン販売情報を取得するプログラムを作成してみた。
グルメ オールクーポン グルーポン 共同購入 クーポン販売情報 – グルメルク
オールクーポンAPIを使ってグルメ関連のクーポン情報を取得するプログラムを作成してみた。グルーポンAPIよりXMLの出来とAPIの性能が良いのでプログラムの作成は格段に楽だった。APIで飲食のみのクーポン情報を絞り込んで取得できるのでベイジアンフィルタを使って選別する必要も無い。ただ何故か取得したXML中にキャラクタコード0x02が紛れ込んでいてXML解析モジュールが落ちたりすることがあったのであらかじめ0x02を取り除いたりする必要があった。データの信頼度がいまいちの様だ。XMLが素直な作りをしているのでXML::Simpleモジュールで普通にパースできて楽だった。グルーポンAPIはXML::Simpleのオプションで「ForceArray => 1」を指定してやらないとデータを取得するのが難しい。
関連記事
- グルーポンAPIを使ってグルーポン情報を取得してその中からグルメ情報だけ選別して表示するプログラムを作ってみた。 – KUMA TYPE
- グルーポン(共同購入クーポン)系サイトAPIまとめ – KUMA TYPE
参考リンク
タグ : perl
【映画】『DEATH FILE2』(デスファイル2)の感想
無料動画GyaO!で映画『DEATH FILE2』(デスファイル2)を視聴した感想。2007年の日本のDVD映画。ジャンルはホラー、サスペンス。
DEATH FILE 2|無料動画 GyaO![ギャオ]|映画
出演:
監督
あらすじ:
前作の続き、インターネット上のサイトDETH FILEが一般にも知れ渡り被害は拡大する。一方、唐沢実奈刑事は引き続き連続殺人犯の土橋徹を追うがなかなか捕まらない。そしてなかなか土橋を捕まえられないうちに自体は最悪の方向に進んでしまう。
感想
なかなかハラハラする展開もあっていい感じな一方で脚本がダメなのとヒロインほか数名の芝居の残念な人がいて違和感があって話にのめりこめない。それらがなければ結構面白く見られそうな作品ではある。脚本はセリフ回しがおかしい。小説ならいいけど一般的に人が言わないような言葉とか言い回しをがあって役者も演じにくそうな感じ。看護師が「多々有ります。」とかいうんだけど「多々有ります」とか文章ならまだしも普通口頭で使わないでしょ。他にも色々突込みどころも満載。
つっこみどころ:(ねたばれ)
- 結局サイトは残ったまま。
- っていうかサイトが消せないとかリアリティーなさすぎ。
- サイト消せなくても一般人がアクセスできないようにブロックするとかできそうなものだけど、出来無いにしても専門家がそういう対策をしようとしたがなぜか出来ない的な描写があるとリアリティーが増すと思う。こういう映画を作る場合、都会では石を投げればIT技術者に当たるというくらいIT技術者が居るんだからそういう層に説得力がないと映画は当たらないと思う。
- 犯人の居る工場の奥に一人で乗り込んでいくが、暗い工場の中を犯人が居るというのに拳銃も構えずに犯人の居る方に進んでいく。無用心にも程がある。リアリティー皆無。
- 犯人に後ろから忍び寄られて首を閉められるが、犯人もナイフ持ってるのなら最初から刺せばいいじゃない。
- 犯人に襲われて手を振りほどきやっとどこからか拳銃を取り出す。遅すぎ。
- 拳銃持ってるのに撃たないで犯人にやられちゃうとかどうなの?
- っていうか仕事休んでるのになんで拳銃所持してるの?お前はニューヨーク市警の警官か?
- っていうか、妹の居場所最初から中学生に聞きに行けばよかったのに。
- っていうか、中学生も知ってるんなら早く教えろよw。
- っていうか、家族揃って犯人に恨まれてるんだから妹に護衛付けるだろ普通。危機管理能力なさすぎ。
- 妹が死ぬのはなんていうか、ブラッド・ピットの映画「セブン」を彷彿させる。セブンも最初から嫁さん死にそうなフラグ立ちまくりでラストが読めてつまらない映画だった。
- っていうか無断欠席したら普通保護者に連絡来ないの?
- ラスト犯人に向きあってから撃鉄起こすとか遅すぎだろ。普通撃鉄起こしてから近づくと思うんだけど?
- ラストは奇をてらったのだと思うが意味不明。
- 俺なら妹が行方不明だとわかった時点で土橋殺してくれとDEATH FILEに書く。そして映画はハッピーエンドw。
評価:
【映画】『DEATH FILE』(デスファイル)の感想
GyaO!で映画『DEATH FILE』(デスファイル)を視聴した感想。2006年の日本のDVD作品。ジャンルはホラー、サスペンス。
出演
監督
あらすじ
亡き父と同じ刑事という職業を選んだ唐沢実奈が猟奇的な殺人事件の捜査を行うことになるが、その事件にDEATH FILEというウェブサイトが関係しているらしいことが分かる。
感想
ヒロインのドヤ顔の演技が残念。同僚刑事の芝居もいまいち。プロファイリングをドヤ顔で語るシーンの残念な感じが半端ないがDVD作品であんまりお金が掛けられていないことを考えると割とよく出来ている方だとは思う。とりあえず暇つぶしくらいにはなる。しかしながら、こういうインターネットや携帯電話などの電子機器関係ホラーは初期の着信アリ以外に面白かった試しがないのと二番煎じというかマンネリ感がしてもう賞味期限切れな感じである。『DEATH FILE2』も続けて見るつもりではあるが、この手の物はナンバリングが進むほどつまらなくなっていく傾向があるので期待はできない。映画やドラマだと子役のシーンになると大抵残念な感じになるがこの映画のサイト管理人役の子役の雰囲気は割といい感じ。「DEATH FILE2」も一応見てみようかと思うレベルなので見て損したと思う事はないと思う。
評価: