KUMA TYPE

猫、パソコン、プログラム、映画、ドラマ、アニメ、perl、etc.

【perlメモ】flockの使い方

flockはファイルの排他制御を行ってファイルが同時に書き込みアクセスされることによって破損するのを防ぐのに利用する関数です。割とよく使うのですが、一連の処理が割とうろ覚えになるのでメモっておきます。

flockを利用した一連の処理の流れとしては下のような感じ。

  1. ファイルのopen
  2. flockで排他制御
  3. seekでファイルのシーク位置をファイルの先頭に移動
  4. ファイルに書き込み
  5. truncateでファイルのサイズを変更。tellは現在のファイル位置(つまり現在のファイルサイズ)を返す。
  6. ファイルの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
Lenovo IdeaPad S10-3シリーズ 10.1型TFT液晶 ネットブック 0647AQJ

amazonでLeveno IdeaPad S10-3のスペック表を見ると結構いい加減。嘘も多いのでちゃんと、下記のメーカーのページにいってスペック表を見たほうが良い。

(続きを読む)

タグ :

ワサビの香りが花粉症に効果があるらしい?

ワサビ関連製品メーカーの金印は、本ワサビの香り成分に花粉症の症状を緩和する作用があることを、花粉症患者への臨床実験で確認したと発表した。実際に香り成分をかぐことで、鼻詰まりなどの症状に改善効果がみられた。

ワサビの香りが花粉症に効果! | ライフ:最新ニュース | nikkei BPnet 〈日経BPネット〉

ということは下のワサビスプレーが付いたマスクなどは効果があるということだろうか?

下のブログの記事の様に、『若者のワサビ離れ(笑)』が進んでいるらしいし、ワサビメーカーも色々と新しい活路を見出そうと必死なのだろう。

痛ニュー速報!: 【社会】「寿司はサビ抜きで」 若者のワサビ離れが進んでいる 「辛み」「苦み」を敬遠、好みは「マイルド」、成熟せず成長か

まあ、もう何年も寿司などたべていないが、やっぱり寿司も刺身もわさびがあったほうがうまいと思う。

なんか納豆を食べると血がサラサラになるとかの時と同じように眉唾な気もしなくもないが、花粉症で困っている人は一度試してみるといいかもしれない。プラシーボでも効果があればラッキーだし。

わさび抽出精油を配合したスプレーが付いているマスクです。風邪・花粉の季節にご使用ください。わさびPOWERのカゼ・花粉用マスク わさび抽出精油を配合したスプレーが付いているマスクです。風邪…
ユーペットギャラリー
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と進む。

20100773

ダウンロードページに進んだら適当なダウンロードサイトからインストーラーをダウンロードする。私はおすすめ(RECOMMENDED)になっているSity Hostingからダウンロードしてみた。

20100775 
2011年1月2日現在だとpalemoon-3.6.13-installer.exeというファイルがダウンロードされるのでこれを実行する。

20100774

XPの場合セキュリティー警告の画面が出るが[実行]をクリック。

20100779

解凍中の画面が表示されるのでしばらく待つ。

20100780

「Welcome to the Pale Moon Setup Wizard」の画面で[Next]をクリック。

20100781

Setup Typeの画面では無難に[Standard] を選択して[Next]をクリック。

20100782

Summaryの画面では通常はそのまま[Install]をクリック。

もしも、インストールパスを変更する場合は戻ってSetup Typeを[custom]にしてインストールをするとインストール先を指定できる。

デフォルトのブラウザーにしたくない場合は[Use Palemoon as my default web browser]のチェックを外す。

20100784

インストール中の画面になるのでしばらく待つ。

 20100785

インストール完了の画面[Finish] をクリックしてインストール完了。

20100786

初回起動時の画面

20100787


日本語化

日本語化するには日本語ランゲージパックを導入する。

The Pale Moon Project homepage

Pale MoonのサイトのトップページのメニューからDownload>Pale Moon language packsと選択してランゲージパックのダウンロードページに進む。

20100788

「ja.xpi: Japanese」をクリックしてダウンロード

20100789

Pale Moon自体でランゲージパックのページを表示してランゲージパックのダウンロードを行なうと簡単。下のように確認画面が出るので[Allow]をクリックする。

20100796 

補足:ランゲージパックを別ブラウザでダウンロードした場合は、ダウンロードしたja.xpiをPale Moonの画面上にドラッグドロップしてあげれば同じようにアドオンのインストール画面になる。

20100791

アドオンのインストール画面になるので[Install Now]をクリックする。

20100795

インストール中画面になるのでちょっとまつ

20100797

Palemoonの再起動確認が表示されるので[Restart Palemoon]をクリックする。

20100798

タブとか開いてるけどリスタートしていいか聞かれるので[Restart]をクリック。

20100799

インストール完了した旨が表示されるので[×]をクリックして閉じる。

20100800

日本語表示になるようにPale Moonの設定を変更する。

アドレス欄に[about:config]と入力。
Filter欄に[general.useragent.locale]と入力して絞り込む。
[general.useragent.locale]をダブルクリックする。

20100803

入力画面が表示される。初期値は「en-US」になっている。

20100804

「ja」と書き換えて[OK]をクリック。

20100805

Pale Moonを一旦終了する。終了時の確認メッセージが既に日本語になっている。

20100806

再度Pale Moonを起動してみるとメニューなどが日本語になっている。これで日本語化は完了。

20100807


Firefoxの設定を取り込む

Firefoxを既に導入している場合、今まで使っていたアドオンやお気に入りなどがあると思うが、それをPale Moonにコピーするには以下のページからツールをダウンロードして利用しFirefoxのprofileをPale Moonに取り込む。

Pale Moon –

ダウンロードしたpmmig.exeを実行する。

20100809

セキュリティー警告画面ではそのまま[実行]をクリック。

20100810

Pale Moonが起動中だと下の警告画面が出るので、Pale Moonを終了してから[OK]をクリックする。

20100811

「Pale Moon profile migration tool」の画面が表示されたら[Copy profile]をクリック。

20100812

Pale Moon Profile 上書きしちゃうけどほんとにいいですか?といった感じの確認画面が表示されるのでよければ[OK]をクリック。

20100813

Statusが「Copying.please wait…」になるのでしばらく待つ。

20100814

途中下の画面が表示された。「時間掛かるかも知れないんで、End押すと止まるしContinue押すと続けるよ」みたいな意味だと思うが、そのまま放置すれば勝手に進む。

20100815

Statusが「Completed.」になればOK。[Exit]をクリックして完了。

20100817

Pale Moonを起動してみるとFirefoxで利用していたアドオンやお気に入りなどprofileが全て取り込まれた。

20100820

注意点として、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を書いて実行してみると

20100770 
上記の様になるが、赤枠で囲ったところなどを注目すると分かるように、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文が上。

20100771
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文が上。

20100772

結果は上のとおり小数点2桁まで求められるようになった。

タグ :

2011年 謹賀新年

061029_1122~0001

明けましておめでとうございます。今年も宜しくお願いいたします。

今年は人並みに働いて忙しい年にしたいと思っています。

タグ :

オールクーポンAPIを使ってグルメ関連のクーポン販売情報を取得するプログラムを作成してみた。

グルメ オールクーポン グルーポン 共同購入 クーポン販売情報 – グルメルク

20100767

オールクーポンAPIを使ってグルメ関連のクーポン情報を取得するプログラムを作成してみた。グルーポンAPIよりXMLの出来とAPIの性能が良いのでプログラムの作成は格段に楽だった。APIで飲食のみのクーポン情報を絞り込んで取得できるのでベイジアンフィルタを使って選別する必要も無い。ただ何故か取得したXML中にキャラクタコード0x02が紛れ込んでいてXML解析モジュールが落ちたりすることがあったのであらかじめ0x02を取り除いたりする必要があった。データの信頼度がいまいちの様だ。XMLが素直な作りをしているのでXML::Simpleモジュールで普通にパースできて楽だった。グルーポンAPIはXML::Simpleのオプションで「ForceArray => 1」を指定してやらないとデータを取得するのが難しい。


関連記事


参考リンク

タグ :

【映画】『DEATH FILE2』(デスファイル2)の感想

DEATH FILE 2 [DVD]

無料動画GyaO!で映画『DEATH FILE2』(デスファイル2)を視聴した感想。2007年の日本のDVD映画。ジャンルはホラー、サスペンス。

DEATH FILE 2|無料動画 GyaO![ギャオ]|映画


出演:

長澤奈央秋山奈々川原真琴眞島秀和二階堂智


監督

福田陽平


あらすじ:

前作の続き、インターネット上のサイトDETH FILEが一般にも知れ渡り被害は拡大する。一方、唐沢実奈刑事は引き続き連続殺人犯の土橋徹を追うがなかなか捕まらない。そしてなかなか土橋を捕まえられないうちに自体は最悪の方向に進んでしまう。


感想

なかなかハラハラする展開もあっていい感じな一方で脚本がダメなのとヒロインほか数名の芝居の残念な人がいて違和感があって話にのめりこめない。それらがなければ結構面白く見られそうな作品ではある。脚本はセリフ回しがおかしい。小説ならいいけど一般的に人が言わないような言葉とか言い回しをがあって役者も演じにくそうな感じ。看護師が「多々有ります。」とかいうんだけど「多々有ります」とか文章ならまだしも普通口頭で使わないでしょ。他にも色々突込みどころも満載。


つっこみどころ:(ねたばれ)

  • 結局サイトは残ったまま。
  • っていうかサイトが消せないとかリアリティーなさすぎ。
  • サイト消せなくても一般人がアクセスできないようにブロックするとかできそうなものだけど、出来無いにしても専門家がそういう対策をしようとしたがなぜか出来ない的な描写があるとリアリティーが増すと思う。こういう映画を作る場合、都会では石を投げればIT技術者に当たるというくらいIT技術者が居るんだからそういう層に説得力がないと映画は当たらないと思う。
  • 犯人の居る工場の奥に一人で乗り込んでいくが、暗い工場の中を犯人が居るというのに拳銃も構えずに犯人の居る方に進んでいく。無用心にも程がある。リアリティー皆無。
  • 犯人に後ろから忍び寄られて首を閉められるが、犯人もナイフ持ってるのなら最初から刺せばいいじゃない。
  • 犯人に襲われて手を振りほどきやっとどこからか拳銃を取り出す。遅すぎ。
  • 拳銃持ってるのに撃たないで犯人にやられちゃうとかどうなの?
  • っていうか仕事休んでるのになんで拳銃所持してるの?お前はニューヨーク市警の警官か?
  • っていうか、妹の居場所最初から中学生に聞きに行けばよかったのに。
  • っていうか、中学生も知ってるんなら早く教えろよw。
  • っていうか、家族揃って犯人に恨まれてるんだから妹に護衛付けるだろ普通。危機管理能力なさすぎ。
  • 妹が死ぬのはなんていうか、ブラッド・ピットの映画「セブン」を彷彿させる。セブンも最初から嫁さん死にそうなフラグ立ちまくりでラストが読めてつまらない映画だった。
  • っていうか無断欠席したら普通保護者に連絡来ないの?
  • ラスト犯人に向きあってから撃鉄起こすとか遅すぎだろ。普通撃鉄起こしてから近づくと思うんだけど?
  • ラストは奇をてらったのだと思うが意味不明。
  • 俺なら妹が行方不明だとわかった時点で土橋殺してくれとDEATH FILEに書く。そして映画はハッピーエンドw。

評価:評価:2.5/5.0

タグ : , , ,

【映画】『DEATH FILE』(デスファイル)の感想

DEATH FILE [DVD]

GyaO!で映画『DEATH FILE』(デスファイル)を視聴した感想。2006年の日本のDVD作品。ジャンルはホラー、サスペンス。

DEATH FILE|無料動画 GyaO![ギャオ]|映画


出演

長澤奈央秋山奈々川原真琴入船加澄実眞島秀和


監督

福田陽平


あらすじ

亡き父と同じ刑事という職業を選んだ唐沢実奈が猟奇的な殺人事件の捜査を行うことになるが、その事件にDEATH FILEというウェブサイトが関係しているらしいことが分かる。


感想

ヒロインのドヤ顔の演技が残念。同僚刑事の芝居もいまいち。プロファイリングをドヤ顔で語るシーンの残念な感じが半端ないがDVD作品であんまりお金が掛けられていないことを考えると割とよく出来ている方だとは思う。とりあえず暇つぶしくらいにはなる。しかしながら、こういうインターネットや携帯電話などの電子機器関係ホラーは初期の着信アリ以外に面白かった試しがないのと二番煎じというかマンネリ感がしてもう賞味期限切れな感じである。『DEATH FILE2』も続けて見るつもりではあるが、この手の物はナンバリングが進むほどつまらなくなっていく傾向があるので期待はできない。映画やドラマだと子役のシーンになると大抵残念な感じになるがこの映画のサイト管理人役の子役の雰囲気は割といい感じ。「DEATH FILE2」も一応見てみようかと思うレベルなので見て損したと思う事はないと思う。

評価:評価:2.5/5.0

タグ : , , ,

 
© KUMA TYPE