2007年6月30日土曜日

winnt_acceptエラーとの戦い、そして敗北

 ある日気付いた。Apacheのログにエラーが出てることに。

[warn] (OS 121)セマフォがタイムアウトしました。 : winnt_accept: Asynchronous AcceptEx failed.
[warn] (OS 64)指定されたネットワーク名は利用できません。 : winnt_accept: Asynchronous AcceptEx failed.
 大量にと言う程ではないが、少なからず出ている。動作は特におかしいところが無かったので気付かなかった。でもそういえば、稀にResponseが帰ってこないことがあった。Windows+Apacheのサーバはいくつか見ているが、エラーが出てるのは1つだけ。

 Webで調べてみると、WindowsではデフォルトでAcceptEx()を使う設定になっているが、環境によってはこれがうまく動かない場合があるらしい。たしかに今回エラーが出てるのはちょっと特殊な環境かも。
 対策としてはこのAcceptEx()を使わないように、httpd.confにWin32DisableAcceptEx ディレクティブを追加すること。そうすると"BSD 形式の accept() API"を使うようになるらしい。

 mpm_winnt - Apache HTTP サーバ

 Apache2.0では <IfModule mpm_winnt.c> のところに追加すればいいらしいが、Apache2.2ではどこに追加するの?とりあえずhttpd.confの最後に追加してみたら、それでOKだった。

 ところが問題発生。ぐんぐんメモリ使用量が増えていく。止まらない。MaxRequestsPerChildを1000に下げても、メモリ使用量はWin32DisableAcceptExを追加する前に比べてずいぶん多い。

 結局、winnt_acceptエラーを回避するのは諦めた。エラーログが汚れるけどそれほど実害は無いので。メモリが逼迫するよりはマシでしょう。
 ところでこれについての情報が少ないのはWindowsだからだろうね。

2007年6月28日木曜日

MySQLでURLからドメイン部分を抜き出す方法

 MySQLに保存したURL(URI)からドメイン部分だけを抜き出す方法。いろいろやり方はあるが、SUBSTRING_INDEX()を使うのが一番簡単(スマート)そう。

SELECT SUBSTRING_INDEX('http://mysql.com/foo', '/', 3)

http://mysql.com
 スキーム(httpとかhttpsの部分)も取りたいなら、SUBSTRING_INDEX()をもう一つかましてやる。
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('http://mysql.com/foo', '/', 3), '/', -1)

mysql.com
 最後の引数がマイナスの場合、デリミタ(2つ目の引数で指定した文字)を右から数える。

 頻繁に使うならユーザー関数にすると使いやすいかも。そんなに使わないか。

参考:MySQL AB :: MySQL 4.1 リファレンスマニュアル :: 6.3.2 文字列関数

関連記事:
 MySQLのプレペアードステートメントはメモリレベルか?
 MySQLのデフォルトのストレージエンジンがInnoDBになる
 MySQL Query Browser がとても便利
 PostgreSQLのUPDATEの実態と、MySQLを早くする方法

2007年6月26日火曜日

Windows VistaやMS Officeを激安で大量に入手する方法

 使用目的は"開発環境整備やスキルアップに限定されます"が。その条件を満たすのなら、これを知ってるとものすごくお得。

Microsoft Partners - Microsoft Action Pack サブスクリプション 提供中

 主なところで、こんなMicrosoft製品が入手できる。これがたったの37,800円(!)

  • Windows Vista Business × 10
  • Office Enterprise 2007 × 10
  • Office Visio Professional 2007 × 10
  • Windows Server 2003 R2 Standard Edition × 1 (CAL × 10)
 他にもSQL ServerやWindows Small Business Serverもある。(Windows Small Business Server自体は要らなくても、含まれているExchange Serverにはちょっと興味ある。)

 贅沢を言えばVistaがBusinessなこととかWindows ServerがEnterpriseじゃないとかあるけど、実際問題あんまりそれが影響することは無い。

 Windows Server 2008が出たら考えてみようかな。Office 2009まで待つか?でも未だにOffice 2000使ってて不満は無いしなぁ。

2007年6月19日火曜日

各国語版のYouTubeとYouTubeのタイトル

 いつの間にかブラジル版など各国語版ができていたYouTube。前々からタイトル(titleタグ内のタイトルね)が素っ気ないのがもったいないと思ってたけど、各国語版のトップページが全て同じタイトルというのはいかがなものかと。国名付けなきゃ。

 でもよく見ると1つだけタイトルが違う国があった!それは日本版。わずかな違いだけど。日本版だけ、最後にピリオドが付いてない。コピー&ペーストで付け忘れた?少なくともここは共通処理にしてないんだね!

 それはそうと、動画は世界共通みたい。日本語版で見つけた折り紙・ターバン野口の折り方をイタリア語版で見ることができた。国別リソースファイルを使ったi18nかな?そういえばYouTubeってプログラム言語は何使ってんだろ。

2007年6月18日月曜日

PEAR::Mail_mimeDecode独立記念日

 PEARのMail_mimeDecodeがMail_Mimeから独立して独自のパッケージになっていた。たしかにMail_mimeDecodeはよく使うがMail_Mimeを直接使ったことはない。別パッケージになった方が分かりやすくていい。さっそくupgradeしようと思ったけど思わぬ苦難で四苦八苦。(ちなみに環境はWindows。)

 まず素直にupgradeしようとしたらエラー。installでもエラー。エラーメッセージを見るとchannelをupdateしろと。はい、updateしました。
 それでもinstallできない。エラーメッセージを見るとPEARのInstallerのバージョンが古いらしい。1.6以降にしろとのこと。Webで調べてもPEARのInstallerのバージョンアップ方法が見当たらない。どうやるんだろ?とりあえずPEAR::PEARをupgradeしてみる。なんかいろいろ更新された。でもInstallerはバージョンアップしない...。

 そこで初心に戻ってgo-pear.batを実行!なんか手応えあり。でもまだInstallerのバージョンが古い。
 もう一度PEAR::PEARをupgrade。お!やっと1.6になった。これでInstallerも1.6になるかな?
 Installerも1.6になったみたい。よしよし。でもMail_mimeDecodeをinstallしようとするとMail_Mimeのバージョンが古いと怒られた。-aオプション付ければ依存するパッケージもupgradeしてくれると思ったのに。
 仕方ないのでMail_mimeDecodeをupgradeしてみる。するとupgradeできたみたい。でも、mimeDecode.phpファイルが無くなっている!これは困った。
 復活されるためにMail_mimeDecodeをinstallする。するともうinstallされてるよと言って取り合ってくれない。無いから入れようとしてるのに。
 こうなれば-fオプションを付けて力づくでinstall。すんなりinstall成功。意外と素直。mimeDecode.phpファイルもちゃんと復帰してる。

 既存ファイルの新パッケージというレアな状況と勘違いとかが重なって苦労した。教訓としては、PEARが出してくれるエラーメッセージをよく見て、それに従って1つずつ進めるのが一番近道だということかな。

2007年6月17日日曜日

MySQL Query Browser がとても便利

 いまいちマイナーな存在であることが不思議なのが、MySQLのクライアントツール「MySQL Query Browser」。MySQL GUI Toolsに含まれている。DBのクライアントツールとしての基本機能は全てある。グラフィカルな表現についてはSQL Serverには負けるけど、SQL実行の解析もできるみたい。
 PostgreSQLのPgAdminでは何回かバグに悩まされたけど、MySQL Query Browserは今のところ問題無し。見た目も流麗だし、よくできてると思う。今さら他のクライアントツールには変えたくないなぁ。

関連記事:
 MySQLのプレペアードステートメントはメモリレベルか?
 MySQLのデフォルトのストレージエンジンがInnoDBになる
 MySQLでURLからドメイン部分を抜き出す方法
 PostgreSQLのUPDATEの実態と、MySQLを早くする方法

2007年6月16日土曜日

FFmpegで動画を分割 苦戦メモ

 Web上を漁ってもなかなか解決策が見つからずに思いつき&トライ&エラーで少しずつ前進。まだ壁があるけど、とりあえず分かったことをメモ。

  • -ssは先頭に・・・開始時間を指定するパラメータ"-ss"はパラメータの中の先頭にするといいみたい。(でも静止画を切り出すときは先頭でなくても問題ないんだけど・・・?)
  • 3GPPの音声コーデックはAACで・・・出力ファイルをDoCoMoなどで使う3GPPにする場合、音声コーデックを指定しないと音声コーデックはAMR(ナローバンド)になるみたい。これだと動画の分割がうまくいかない(映像と音声のずれが大きくなるから?)。なので音声コーデックにはAACを指定する。(-acodec aac)
  • (2007/06/18 追記)-fsは小さめに・・・出力ファイルのファイルサイズを制限するパラメータ"-fs"を指定しても、その値より大きなファイルができてしまうので少し小さめの値を指定する必要あり。どのくらい小さめにするかは動画の内容次第。
  • (2007/06/18 追記 その2)-fsと-ssは仲が悪い?・・・パラメータ"-fs"と"-ss"を両方指定しようとするとうまくいかないことがある。一般的な動画から3GPPに変換するときなんか、うまくいかない。でも3GPPから3GPPを作るときは両方指定しても大丈夫みたい。
  • (2007/06/19 追記)3GPPでステレオ音声にするには・・・3GPPで音声コーデックを指定しないとステレオ(-ac 2)にできない。ステレオにしたかったら音声コーデックとしてmp3かaacを指定する必要がある。
  • (2007/06/19 追記 その2)3GPPから3GPPへの変換・・・3GPPから3GPPに変換する場合、元の3GPPの音声コーデックがACCだとエラーになる。元の音声コーデックはMP3とかにしておくこと。
 FFmpegのバージョンによっては使えるパラメータも違うみたい。日本語資料も少ないし、なかなか険しい道だ。

関連記事:
 DoCoMoのFlash Lite3用動画を作るための覚え書き
 コマンドラインから使えるMPEG4エンコーダ
 現在のWebサイトに求められるUIとは?
 「無料動画サービスまとめ」に追加

2007年6月15日金曜日

PHPの計算が融通が利く件について

 PHPで下のような計算をしたら当然エラーになると思ってた。

echo ('3dogs' * '2eyes');
文字列を数値にキャストできないよ!ってエラーになると思ってた。
でも結果は普通に「6」。文字列の先頭の数値の部分だけを計算し、後ろの文字列は無視するらしい。
 使い方によっては便利そうだけど、うっかりミスの時にエラーが出ないために気付かずに想定外の計算がされるかもしれないのはちょっと怖い。

2007年6月8日金曜日

MS Moneyって誰が使うの?

 MicrosoftといえばWindows、Office、Exchange。もろにビジネス向けだ。そんなMicrosoftの異質なソフトがMoney。「個人マネー管理ソフト」って一般的な日本人が使ったらただの家計簿?Microsftのエンジニアの何パーセントか(0.何パーセント?)はこのMoneyの改善に勤しんでるわけで。

 まあ、Microsoft Kitchenよりはよっぽどマシだろうけど...。

2007/07/27追記というか追アソシエイト。

2007年6月5日火曜日

FeedCreator.class.phpを使いこなすポイント

 以前PHPで簡単にRSS/Atomフィードを生成FeedCreator.class.phpについて少し書いたが、久し振りにまたこのPHPをいじった。以前は気付かなかったカスタマイズポイントもあるので、改めてまとめてみる。(以下の記述は現時点の最新版ver.1.7.2についての記述。)

  1. 文字コード
    PHP(FeedCreator.class.php)を使ったRSSの生成が参考になる。UTF-8ならたぶん変更なしでいけると思う。
    (2007/10/12 追記: フィードの種類により文字コードが決まってた。AtomフィードはUTF-8だからUTF-8ならそのままでOK。他のフィードは変更が必要。いっそclassをextendsするのも良いかも。)

  2. エントリの日時
    159行目のTIME_ZONEの設定を変える。通常は""にすればいい。セットする側のロジックでは、セットする日時の形式としてUnixタイムスタンプ、RFC-822形式(例: Mon, 15 Aug 05 15:52:01 +0000)、ISO-8601形式(例: 2005-08-15T15:52:01+0000)が使える。

  3. クライアントキャッシュ期限
    635行目のコメントアウトを外すと、クライアント(Webブラウザ)側のキャッシュが有効になる。サーバ側のキャッシュ期限と同じ日時になるので、負荷を考えるならクライアントでもキャッシュをさせた方が良い。

  4. Atomの場合のHTMLの挿入
    Atomフィードの本文(?)にHTMLを記述する方法に書いたように、Atomフィードの場合は本文にHTMLを入れたい場合はそのままではダメ。1143行目のsummaryタグにtype属性で"html"等の指定が必要。詳細はAtomフィードの本文(?)にHTMLを記述する方法参照。

 久し振りに触れてみて思ったのは、このPHPってよく作りこまれてるなぁということ。それだけに設定部分を分かりやすくしてファサードを絞ってないのが惜しい。

関連記事:
 RSS/Atomフィードを生成したりSitemapを作成するPHPライブラリ

2007年6月4日月曜日

Firefox カスタマイズ状況 2007/06

 すっかりFirefoxに慣れてきた今日この頃。今さらOperaには戻れない...。現在の設定と入れてるものは以下のとおり。


about:config等

window.oepn()を別タブで開く
Another 朝顔日記 - window.open() の挙動
 サイズ指定のWindowは、別タブでそのサイズで開きたいけどできない。Operaはできたなのになぁ。

RSSリーダーにGoogle Readerを追加
A FreeBSD GIMPer Firefox2でGoogle Reader をRSS reader として追加する方法
 ワンクリックで設定できる。

メモリ関連の設定
Mozilla Re-Mix: 効果歴然!Firefoxのメモリ使用法を変更して軽快に動作させる方法。
 2番目についてはFirefoxやThunderbirdのメモリ消費量を劇的に減らす方法 - GIGAZINEにも書いてある。

メモリ関連の設定 その2 new
Firefoxのメモリ食いを小食にする (うむらうす)


Extension(=機能拡張=アドオン)


マウスジェスチャ
Viva! ubuntu:Firefoxのマウスジェスチャ、こりゃ便利!「All-in-One gestures」 - livedoor Blog(ブログ)
 何は無くとも。

クライアントサイドWeb(HTML/CSS/JavaScript)のデバグ
IT戦記 - FireBug の新しいバージョンが便利すぎる件について
 やっとこの凄さが分かってきた。表示中のHTML/CSSを変更してその結果が確認できたり。バックグラウンドでやり取りするJavaScriptの中身が見えたり。クライアントサイドのWebの統合開発環境という感じ。

Greasemonkey
Greasespot
 少しずつ猿たちが増えてきた。

del.icio.us連携
Going My Way: 検索速度が速くなり、Firefox のカスタムキーワード機能も利用可能な Firefox 用 Add-ons 「 del.icio.us Bookmarks 」

HTML構文チェック
少しきびしいHTML構文チェック « BirDesign
 これを無視できるくらいの広い心が必要なんだろう。

はてなブックマークカウンタ
miniturbo.org::Product はてなブックマークカウンタ

IEで開く
IE View - Launch pages in IE from Firefox

アンカータグ生成
Make Link : CopyURL+ よりも使いやすい Firefox 拡張機能 : PamGau

PageRankをステータスバーに表示 new
Live PageRank :: Firefox Add-ons

HTTPヘッダ表示 new
【特集】Webアプリケーション開発者向け Firefox拡張機能 33+1選 (25) HTTPヘッダ操作系「Header Monitor」「Header Spy」 | エンタープライズ | マイコミジャーナル
 Header Spyを採用。
【特集】Webアプリケーション開発者向け Firefox拡張機能 33+1選 (24) HTTPヘッダ操作系「LiveHTTPHeaders」 | エンタープライズ | マイコミジャーナル
 Header Spyのために必要。

User-Agent設定
携帯電話サイト作成ツール・Firefox + user agent switcher
 たまに役に立つ。

Googleツールバー
Google Toolbar for Firefox
 英単語の和訳ツールチップ以外、役に立っていない。削除候補?


Greasemonkey

del.icio.usページ内編集のEnterキー制御
blog.8-p.info : del.icio.us の IME まわりをましに
 これありがたい。 

del.icio.usにfaviconを表示
fav.icio.us2 – Userscripts.org

Google検索結果をスクロールで次ページへ+はてブ数表示 new
Firefox Greasemonkey Scripts
 GoogleAutoPager Custom。スクロールで次の検索結果に行くのはあまり使ってないなぁ。

Google検索結果にPageRankを表示 new
徒然ぶろぐ > Google 検索結果に PageRank を表示する Greasemonkey
 直接役には立たないけど、無くすと寂しく感じる。

Google検索結果にfaviconを表示 new
ドレッシングのような - 『 色んなところにfaviconを - cameraLady』の改良
 faviconが好きな自分に気付いた。

Google検索結果にはてなブックマーク数を表示
いぬビーム - Google x はてブ(Greasemonkey版)
 Google AutoPage Customを使う場合はこっちは使わない。

Google Readerにはてなブックマーク数を表示 new
ヒビノキロク - grb+-20061113.user.js
 はてブ数が多くても少なくても関係なく見るんだけど、なぜかはてブ数を表示させたくなる...

Google Calendarに天気予報を表示
Googleカレンダーをもっと便利に使うための13のツール&Tips | P O P * P O P
 あまり使わない。

Google Calendarの現在時刻に赤ラインを表示
Google Calendar Display Current Time Line – Userscripts.org
 表示されないなと思ったらバージョンアップしてた。無くてもいいんだけどね。


その他

スマートキーワード new

404 Blog Not Found:Firefox - スマートキーワードをSmarterに
 del.icio.us、Yahoo!辞書とかを使うのに便利。


今回の退場者

ショートカットキー表示
MOONGIFT » キーボードショートカット習得支援「asdf-jkl」
 忘れてて使わないのでアンインストール。

ブログ アーカイブ

tags