タグ

ブックマーク / www.drk7.jp (28)

  • 文字コード変換ミスによる文字化けパターンと想定される原因 - drk7jp

    とあるシステムでデータベースから引いてきたデータの表示が文字化けするという不具合がありました。 データベース内のデータとしては文字化けしていない状態で格納されていることはわかっていたので、どこかしらの文字変換で化けていることはわかっています。まずはどの誤変換により文字化けするのか原因切り分けのために、decode/encode の組み合わせによる文字化けパターン一覧を作りました。おかげさまでどのパターンに類するものか判別することができ、無事に改修することができました。 その話はまた別にするとして、今も昔も変わらず文字化けに悩む人は意外と多いと思います。誤変換結果一覧は原因解析の参考になると思い、記事としてまとめることにしました。 文字コード変換ミスによる文字化けパターンを可視化するプログラムと一覧表 まずは誤変換を生成する perl スクリプトです。プログラムはとっても簡単で、「文字化けで

  • perl と CrenaHtml2jpg を使って大量のサイトを自動キャプチャする方法

    大量のサイトのキャプチャ画像を取得したい!そんな要件のお仕事もたまにあるでしょう。 実際、そんな要件に答えるために随分昔に作ったツールがありましたが、最近また利用する機会があったのでブログのエントリとして記載しておこうと思いました。 過去イロイロと検証した結果ですが、Windows + IE + CrenaHtml2jpg によるキャプチャ画像が一番いけてる画像が取得できる結論に達しました。CrenaHtml2jpg とは http://dip.picolix.jp/disp5.html で公開されているサイトキャプチャツールで非常に良くできたツールです。一般的な使われ方としての GUI 提供板貝に、サーバ向け?としてコマンドラインから内部的に IE を起動して描画してキャプチャ画像を出力する機能を有しています。動作中はもちろんパソコンが重くなるし、コピペが若干動作が怪しくなったりしますが

  • IO Accounting 機能で I/O 負荷の高いプロセスを特定

    随分久々の Linux ネタです。以前にロードアベレージに関する考察などの記事も書きましたが、多くのサーバーサイドエンジニアはサーバ負荷と日々戦っていることかと思います。過去多くの場合、負荷の原因特定はおおよそ下記のような手順で分析をしていたことかと思います。※詳しい手順は別エントリとして記載予定。 top をみて上位に張り付いているプロセスを確認しつつ CPU or I/O のどちらが原因か判別 ps を使ってプロセスの状態を確認して(T),(D)の状態から CPU or I/O のどちらが原因か判別 vmstat で procs の r, b の数、swap の si, so の状態、I/O の bi, bo の状態を確認 iostat を使って disk の read/write の状態をさらに詳しく確認 sar を使って os の状態をさらに詳しく確認 おおよその原因特定から設定を

  • CPAN 最速検索を自サーバにコピーってみた

    とあるので、自分用にサーバに、まるごとコピってみました。Ajax で使うための辞書データ生成は perl でさっくりとでっち上げました。公開されていない perl 部分以外は、まるっとコピーしただけですが、これで満足しているので、これ以上のメンテは予定してません・・・。 http://www.drk7.jp/pub/js/cpanmala/ えーっと・・・まぁ CPAN 最速検索がどういうものかってのは、最速インターフェース研究会 :: CPAN最速検索 を観て頂ければOKとして、データ生成の perl プログラムは晒しておきますので、ご自分のサーバでやりたい方は、どうぞご自由にお持ち下さい。 CPAN 最速検索の設置手順書 http://cpan.ma.la/index.html を保存する。 ここから保存もできます。 http://cpan.ma.la/ie_xmlhttp.js を保

  • perl で Captcha 認証(セキュリティ画像)をやる方法について

    ユーザ登録とかでロボット等でのスパム登録を防止したりって用途に使われているアレです。こんなヤツ。 最近はブログのコメントとかのスパム防止でもよく見かけます。まずは基礎知識。このような画像で認証を行うことを Captcha っていいます。wikipedia の情報を引用すると、 CAPTCHA(キャプチャ、"Completely Automated Public Turing test to tell Computers and Humans Apart"; コンピュータと人間を区別する完全に自動化された公開チューリングテスト)は チャレンジ/レスポンス型テストの一種で、ユーザが人間であるかどうかを決定する計算処理に使われる。この用語はカーネギーメロン大学のLuis von Ahn、マヌエル・ブラム、Nicholas J. Hopper、IBMのJohn Langfordによって2000年に

  • 二度押し防止の onsubmit で disable にするやつ :: Drk7jp

    もう2年ほど前に話題になったアレなんですけど、今更ながらあるサービスでこの仕組みの導入を検討しています。 onsubmit で submit ボタンを disable にしてユーザビリティを良くする - naoyaのはてなダイアリー submit ボタン disable 技の罠 - naoyaのはてなダイアリー onsubmit で submit ボタンを < disable にしてユーザビリティを悪くするのはやめてください - のヮの うんこ♥ onsubmit で disable にするやつ - 鷹の島 onsubmit の disable 化ですが既に議論が終わっているように、onsubmit disable の実装方法として、 onsubmit イベント発生時に submit 要素を disable にして値をサーバへ渡すための hidden 要素を生成する方法 setTimeou

  • cronolog で Apache ログをロギング時にファイル分割

    Apache のログの管理って意外と面倒です。通常は Apache 付属の rotatelogs で日時でログローテートして仁別に切り出されたログを圧縮して保存なんて運用をされているかと思います。例えば、全ログ + 日別のログを保持するなら CustomLog /var/logs/access.log common TransferLog "|/usr/local/apache/bin/rotatelogs /var/logs/access.log 86400"

  • Perl で作る画像類似検索システムの考察

    今日はとてもショッキングな出来事がありました。あまりにショックがでかいので何かに没頭しなければ気が紛れそうにありません。と言うわけで全く専門分野でもないし当面使う予定もないのですが、1年ほど前にちょっと気になっていた画像の類似検索についていろいろ調べてみました。 どうやら ImgSeek ってソフトが結構有名らしいです。最新バージョンは 0.86 で Linux Only です。1つ前のバージョン 0.85 は Windows binary があります。 過去にいくつか画像類似検索ソフトを試したような記憶がありますが忘れてしまいました(vector でも結構類似検索ソフトありますね)。まずは windows binary 版をダウンロードしてきて実行してみました。 それなりに使えそうな予感がします。Linux 向けの imgSeek-0.8.6.tar.bz2 をダウンロードしてインストー

  • Win32::OLE で Excel を操る perl スクリプト

    えーつい最近、Spreadsheet::WriteExcel について聞かれました。ちょっとしたサンプルプログラムを教えたついでに Win32::OLE のサンプルも教えたのでどうせならブログのネタにと記事にしてまとめておきます。よく考えたら、以前 Spreadsheet::WriteExcel が 2.10 から便利になっている件について を書いたときに まずは、Win32::OLE まわりで参考になるサイトまとめです。Win32::OLEモジュールだけでも目を通しておくと良いと思います。 Win32::OLEモジュール(日語チョウ訳) Ver. 0.14 Win32::OLE - OLE Automation extensions - search.cpan.org Win32 の Perl を使用している Excel を自動化する方法 Perl講座 PerlからOLEを使用する 読

  • VMware が頻繁にディスクアクセスして OS 全体が固まる件

    こんな現象が発生するようになったのも XP + VMware 5 → Vista + VMware 6ベータ にしてからなのですが、物理メモリもたっぷりのっていて空きメモリもある状態にもかかわらず、VM を起ち上げていると頻繁にディスクアクセスが発生してマシンが数分間フリーズしたかのごとく固まる現象が続いています。 以前物理メモリが 2GB だった時は、まぁ〜しょうがないか〜と思っていたのですが今は 3GB のっていて(ホントは4GBだけど OS が 32bit なのでうまく認識しない・・・)コレは流石にキツイ。ってことで原因を調べてみました。 まずはリソースモニタを起ち上げて VM を使ってディスクアクセスが発生するのを待つ。すぐに発生した。 どうやら VMware の .vmem ってのが頻繁にディスクアクセス(read)を行っている模様。もう少し様子を見てみる。 こんどは頻繁にディス

    pmakino
    pmakino 2007/05/06
    うちの場合は「頻繁に」じゃなくて「ゲストOS起動時に」だけど原因は同じかな
  • Oracle でセッション管理するならどうする? :: Drk7jp

    以前、セッション管理に向いているデータベースは MySQL ? Oracle ? という記事で OracleMySQL のパフォーマンス差について書いたことがありますが、新年度の技術開発に向けてまた改めて検証をしています。世の中いろいろな事情で 商用 DB を使っている人は大勢いるでしょう。Oracle を使ってセッション管理をする必要だってあるかもしれない。 と言うわけで今回は、Oracle でセッション管理するならどうする?編です。比較対象として MySQL でのパフォーマンスも計測しています。Oracle とか MySQL は実行環境でパフォーマンスが結構異なるので、一応検証環境はこんなかんじ。 検証マシンスペック VMware 6.0.6000 上に構築した raw-disk タイプの仮想環境 Intel(R) Core(TM)2 CPU 6700 @ 2.66GHz mem

  • Spreadsheet::WriteExcel = Perl で Excel 出力

    業務系アプリを書いていると、csv 出力ぢゃなくて、Excel データそのものを出力できたらなぁ・・・と思うことがあると思います。そこで、 PerlExcel データを生成する方法と日語を扱うときの注意点をまとめてみました。 環境構築編/必要な Perl モジュールをインストールします。 下記コマンドを root 権限のあるユーザで実行してください。 perl -MCPAN -e 'install Spreadsheet::WriteExcel' perl -MCPAN -e 'install Spreadsheet::ParseExcel' perl -MCPAN -e 'install Unicode::String' 日語を含む Excel データの生成例 #!/usr/bin/perl -w use strict; use Jcode; use Unicode::Stri

  • JIS X 0213:2004(JIS2004) で本当に文字化けする文字

    とします。Perl で文字コードを操作する方法は、Encode.pm と旧Jcode.pm (0.8系)がメジャーどころなので、その2つについて調査しました。Encode.pm に関しては、Encode::JP と Encode::JIS2K を対象としました。 まず結論から。Encode::JIS2K を使う限り、文字化けする SJIS コードは以下の35文字です。 JIS2004 で追加された10文字:879F 889E 9873 989E EAA5 EFF8 EFF9 EFFA EFFB EFFC カ行に半濁音(゜)を付けた文字など一部の文字: 82f5 82f6 82f7 82f8 82f9 8397 8398 8399 839a 839b 839c 839d 839e 83f6 8663 8667 8668 8669 866a 866b 866c 866d 866e 8685 8

  • VMware の仮想ディスクを物理ディスク構成に変更する方法

    前エントリ「VMware で仮想ディスクのサイズを変更したくなったとき」の最後の項目で、仮想ディスクのパフォーマンスを向上させるために物理ディスク構成の仮想ディスクへ移行する方法を書きましたが、もう少し詳しく書こうと思います。 HDBENCH でパフォーマンスを計測するために、Windows Vista を guest OS とした場合をやったので順に説明をしたいと思います。ちなみにパフォーマンスの結論から先に言うと、Core 2 DUO が VT 対応の CPU だからかもしれませんが、物理ディスク構成の場合、DISK 性能はフルにでていると思われます。ストレス 0 です。 前エントリと同様の手順ですが、VMware の仮想マシン設定から物理ディスクを追加する。PhysicalDrive0 は今使っている Windows が入っている HDD なので、それ以降の PhysicalDriv

  • VMware で仮想ディスクのサイズを変更したくなったとき :: Drk7jp

    VMware 仮想ディスクマネーシャ(VMware Disk Manager)を使用する事で、コマンドラインから、仮想ディスクファイルの作成、管理、変更が可能です。 1) コマンドシンタックス vmware-vdiskmanager.exe -x <拡張後のサイズ> 仮想ディスクファイル.vmdk これで仮想ディスク容量の変更はOKです。これで、仮想環境上からみれる物理ディスクの容量は増えます。 仮想ディスク容量を増やした後どうする? 上記のコマンドで仮想ディスクを増やしただけでは OS 上から使用可能な容量は増えません。パーティション情報も変更してやる必要があります。商用の Partition Magic とか持っていなくても、GParted Live CD を使えば、パーティション情報を変更することができます。ISOイメージをダウンロードして、VMware の仮想 CD-ROM の「I

  • Lighttpd 1.5 系がスゴイらしい

    はてブで lighty のブログがあることを知ってブログを見てみました。lighty の中の人が書いてます。 ナント、lighty 1.5 系が pre release されているではありませんか! なんでも、1.5 系は いままでより 80% のスループット向上が見込めると書かれています。激速の lighty が更に高速になるってわけですよ。Σ(゚Д゚; Using Async IO allows lighttpd it overlap file-operations. We send a IO-request for the file and get notified when it is ready. Instead of waiting for the file (as in the normal sendfile()) and blocking the server, we ca

  • 【続】やはり Perl はメモリ喰いな言語。データ型の内部構造

    以前、「やはり Perl はメモリ喰いな言語。データ型の内部構造」という記事を書いたことがあるのですが、自分で書いておきながらしばらく立つと完全忘却してました。時代は変わって、今仕事で運用しているサーバは、64bit 版のOSです。 最近になって、DB のテーブルのデータを加工・集計しながら CSV にダンプするってプログラムが、データ数が非常に多いときに、1.5 GByte ほどメモリをいつぶしているってことに気がつきました。理由は至って簡単なのですが、結構ハマリどころなので備忘録として記事にしておくことにしました。 みなさん、仕事とかでは特にそうだと思うのですが、DBI の処理って何らかのラッパーを書いて使っていると思います。僕は適当に書くとよくやってしまいがちなのですが、イメージ的には、こんな処理の流れのコードを書いていました。 (・・・えっ?そんなへぼコード書いてない??・・・す

  • やはり Perl はメモリ喰いな言語。データ型の内部構造

    use Devel::Size::Report qw/report_size/; # 1bit, 1byte, 2byte, 3byte, 4byte(=32bit), 5byte my $b = [ 0, 0xFF, 0xFFFF, 0xFFFFFF, 0xFFFFFFFF, 0xFFFFFFFFFF ]; print report_size($b, { indent => " " }); # null, length=1, 2, 3, 4, 5 my $c = [ '', '1', '10', '100', '1000', '10000' ]; print report_size($c, { indent => " " }); Size report v0.10 for 'ARRAY(0x8c8bc28)': Array ref 192 bytes (overhead: 92 byte

  • 【備忘録】CPAN Author の登録手順とモジュールの登録手順 :: Drk7jp

    えーっと、一応 CPAN サイトを読みまくったのですが、英語が苦手なためか、ずーっと CPAN Author の登録手順やら CPAN へのモジュール登録手順がわかりませんでした・・・orz 幸いなことに、社内のモヒカン族な方に PAUSE ってキーワードを教えて頂きました。ググッたらすぐに情報でてきました。この前の Shibuya.pm でライトトークされてた、kawasaki さんのサイトに [Perl] 作成したモジュールをCPANで公開する手順 とそのまんまのタイトルで手順でてました。PAUSE ってキーワードがわからないと、このページにすらたどり着けなかったです・・・orz ってことで、以下登録までの備忘録。 1. PAUSE(Perl Authors Upload Server)のアカウントを取得します http://pause.perl.org/pause/query?ACT

  • 今後は RHEL から Oracle Unbreakable Linux に switch ですな

    【Enterprise Watch】米OracleエリソンCEO、“同じレベルで価格は半分以下”のRed Hat Linux向けエンタープライズサポートを発表 経由で知ったのですが、オラクルが Unbreakable Linux Program ってプロダクトが発表されました。残念ながら、Oracle OpenWorld に参加していないので詳細知らず、Enterprise Watch からの引用ですが、 単純に言ってしまうと、Red Hat Linuxを対象としたサポート契約をOracleと締結できるようになるというもの。従来から、Oracleではデータベース等の製品のサポートの一環として、プラットフォームとなるOSに対するサポートも提供しているが、今回のプログラムは、Oracle製品ユーザー向けではなく、Red Hat Linuxそのものを対象として、データベース等の同社のエンタープラ