トップ «前の日(09-14) 最新 次の日(09-16)» 追記

2003-09-15

_ 2000lite & XPlite ?

98lite は知ってたけど、これは本当ならすごいな。

from スラド

Tags: Tool

2004-09-15

_ どうかなぁ?

Harukiからの平面波 経由

まるごとPHP! Vol.1 (impress)

現段階だと目次が分からないのでちょっと微妙だけど、表紙で確認できるだけで

  • PHP徹底攻略
    • 具体的な内容は不明
  • Windows, Linux への Apache, MySQL, PHP のインストール
  • PHP プログラミング基礎の基礎

が目立つ。vol.1 だから仕方ないっちゃーないんだけど、今後どうなるかによるかなぁ。一応謳い文句としては

本書は、新登場PHP5徹底解説、Webアプリ開発の基礎、ライブラリ、テンプレート/フレームワーク、セキュアプログラミング等々の話題満載。ビギナーからエキスパートまで、すべてのPHPユーザー必携の書です。

ということになっているので、ライブラリとかテンプレートなどの話が充実してこないと実際に PHP を活用するという段階には厳しい。

ただ、ML の迷走っぷりに歯止めを掛ける効果が出るならそれでもいいという考え方もあるな。例えば

が業務としてこういうリソースを充実させることで、コミュニティを開発よりの人と初心者にある程度セグメント化し、それぞれのセグメント内でのコミュニケーションを促進する。特に開発よりのコミュニティのパワーを維持することはゼンドジャパンにとって結構重要な命題だろうし。(違うのかな?)

この値段(2,000円)だと季刊くらいになるのかな?

Tags: Book PHP

_ Meta-CVS も textfile.org へ

結城さんの琴線に触れるかどうかはちょっと分からないけど(基本的に作業環境は Windows な人なので)、素の CVS でも Subversion でもない alternative な選択肢がもう少し広まってくれないかなぁ、なんてことを思っている。

Tags: 日々 Web

_ JPEG 絡みのあれやこれや。

  • IE 6
  • Office
  • .NET Framework

が上がってます。どれもビンゴかよ。

GDI+ のチェックツールは役に立つんだか立たないんだか。結局サードバーティの画像関係のツールはそれぞれにチェックが必要なんだよな。それとも Microsoft のコードだけが問題? あーダイナミックリンクしてあれば WindowsUpdate だけでオッケーってことか。

Tags: MS Security

_ ソフト業界はやっぱり生活がハード?--「時間の使い方」実態調査より

from CNET Japan

勉強している人の割合が10人に1人って意外と少ないと思ったり。まぁ Web などで目立つ人は当然勉強している割合が高くなるという程度のことだろうか。

Tags: 日々

_ ITSSユーザー協会

IT スキルスタンダードが話題になったのって去年だっけ? 今はこんなとこまできてるんだなぁ。

Tags: Web

_ PukiWiki の $script

設置ディレクトリ、アクセス方法に影響されない $script の設定

list( $script, $query ) = split( '\?', $_SERVER['REQUEST_URI'] );

この設定が必要な背景

  • PukiWiki の動作にはこの設定は特に必要ないということになっている
  • ところが $script を設定しないと、例えば localhost に設置した場合はホスト名が実際のものになったり、せっかく index.php という名前にして / だけでアクセスしてもそれが活きない
    • localhost からのみアクセス可能な設定にしたい場合、localhost へのアクセスが実際のホスト名を使ったアクセスになってしまうのはまずい
    • /path/ でアクセスしても /path/index.php になってしまうのはなんとなく気持ちよくない
  • 同じく設定していないと上のホスト名の問題で ssh portforward 経由などの編集が不可能(いくら localhost:8080 などでアクセスしても [編集] などのリンク先が本当のホスト名で置き換わってしまう)
  • 逆に http:// から設定してしまうとやはり portforward 経由や ssl を利用した場合に [編集] などが不可能
  • ホスト名を明記せずに /path/ だけで設定しても、パスが変わるたびに変更しなければならず、同じ本体を共有する Wiki を大量に設置する(WikiFarm のようなもの)場合はそれすら面倒

上の記述ならすべての問題を解決できる。

[2006-01-23 追記]1.4.6 では

Runtime error
Error message : $script: Invalid URI

ってエラーが出ますね。単一の URI しか認識しないんじゃ使いにくいんだってのが分からないのかな。もっと凝った処理で $script を生成しろってことか。いろいろ言われてるように、確かに PukiWiki はどんどん使いにくくなってるかもしれないな。

Tags: PHP

2006-09-15

_ xCHM 1.9 ANSI 版がいい感じ

最近ウノウの人が chmox 日本語対応版を紹介していたなぁ、ときらいな CHM ファイルで実験してみた。

検索できないじゃん

そりゃーないよ、そりゃーない。検索できないんじゃー困ります。ということで最近更新してなかった xCHM を落としてくる。

  • Unicode 版を起動。
    • 見事にバケバケ! やっぱりなぁ…。
  • ANSI 版を起動。
    • エンコーディングが不明だからお前選べと言われ、CP932 を選んだら普通に表示できた!
    • しかもインデックスも化けてないじゃん!
    • ascii でなら検索もできる!!

ということでマカーで CHM 好きなら xCHM の ANSI 版がオススメですよ。

Tags: CHM OSX

2007-09-15

_ 長野1日目

妻籠宿

木曽路はすべて山の中にある。

いやー。

つか木曽路どころじゃなくてみんな山の中だもの。

※ 写真がドアンダーなのは明かりを引き立てる演出と手ぶれ対策を兼ねてます(こすい)

Tags: 日々 Photo

2008-09-15

_ AVCHD の取り回しに苦労する

ビデオカメラありますね。まぁご家庭用のちっこいやつ。最近のやつはあんな小さいのにハイビジョン撮影ができるそうな。マジすか。そんな機能要るの?だいたい、レンズあれ(すげー小さい)だよ?

と思いながら、できることには興味あるのでハイビジョンで撮影してみた。しかしうちにはハイビジョン対応テレビはないし、当然のように blu-ray の作成環境も再生環境もない。つまり、撮っても活かしようがないのは分かっていたけど、どんなもんか味わってみたいと。

しかしこのハイビジョン録画の機能がなかなかくせ者で、どういう風に録画するかが最近まで安定していなかったらしい。blu-ray と HD DVD の戦いの影響がこの辺にまで出ていたのかどうか、あまり詳しくないけど、ここ1年くらいでようやく AVCHD 一本の方向に固まってきたみたい。ちょっと古いモデルを探すと HD 対応でも記録方式の違うカメラがちらほら見つかるので、ビデオカメラ買おうとしてる人は気をつけた方がいいよ。下手に中古とか手を出さない方が無難。

で、その AVCHD、ビデオの圧縮が H.264 で音声が AC-3 で、多重化に MPEG2-TS を使っている、らしい??? あーこの辺全然追いかけてねぇ。とりあえず iMovie で取り込めるよ、という情報を頼りに「おぉ、それなら大丈夫」と安易に判断してやってみた。*1

これが間違いのもと。

実は現状、Mac で動く AVCHD を取り込める動画編集ソフトは基本的に AVCHD(というかH.264 ?)をそのまま編集できない。ということで実際には Apple Intermediate Codec というものに変換しながら取り込みを行ってくれる。まぁ昔は MPEG を直接編集するなんて考えられなかったもんね。そういうことだ。

気づけば Mac のディスク容量が全然ない。おや?

そうです、H.264 の圧縮が解かれた動画ファイルは結構でかい! 1時間で40GBという大きさに達するとな!

cf. Final Cut Pro 5: HDV および Apple Intermediate Codec について

ちょうどハイビジョン撮影で1時間撮影できるものだったんだけど、自分の Mac はこれを 2回分取り込むことはできないくらいの容量しか空いてなかった。調子に乗って撮影した動画を取り込もうとしてハタと気づく。

ディスクないっす。

そこから今度はビデオの書き出しについて調べる。撮る前に調べておけよ。

手元にあるのは iMovie '08 のみ。これで H.264 のムービーを吐き出すことはできる。やってみよう。

……。あれ?

960x540 までしかサイズがない。こちとらフル HD で撮影してんだぞ?

と思ったら QuickTime を使って書き出すとフル HD のままイケるらしい。よーし実験実験。

……。2時間半? たかが8分のプロジェクトを書き出すのに2時間半?

無理っすよ。これは常用できねぇ。フル HD なめてた。

ということで現在は以下のように書き出してる最中。

フル HD で撮影してしまったものに関しては QuickTime を使わずに書き出せる最大サイズ 960x540 で書き出し。これをデータとして DVD に焼くことに。元のフル HD のまま書き出してもディスク容量的にはたかが 8GB なんだけど、いかんせんエンコードに時間が掛かりすぎて現実的じゃない。でもフル HD から 960x540 のサイズへのエンコードであれば、手元の環境*2で実時間の2〜3倍くらいの時間でなんとかなる。

新規に撮るものはもう SD で撮る。これだって昔のビデオよりはきれいな訳だし、DVD にそのまま焼ける。それに AIC を経由したりとか面倒がない。大幅な時間短縮。どうせあのレンズ、あの内蔵マイクで撮っているのだ。欲張るな。欲張っちゃいかん。何より、

オレはそういう作業に時間を掛けるのは好きじゃない。

*3

cf.

AVCHD - Wikipedia

[2008-09-21 追記]

iMovie '08 は AVCHD のカメラからの取り込みではなく、H.264 のムービーファイルの取り込みに関しては AIC に変換など一切行わずにサムネイルとキャッシュの作成だけを行うことができる。どうにかして H.264 のムービーをファイルで取り出せれば問題は解決するような気がするけど、いかんせん AVCHD からファイルをそのまま取り出す方法は今のところ Mac 上ではなさげ。うーん、惜しい。

*1 細かいことを言うと HD 以降のバージョンで HD は対応してるんだけど、AVCHD 対応となると Intel Mac じゃないとダメ。

*2 MacBook Core 2 Duo 2.4GHz/2GB/160GB

*3 一瞬ではあるけれど、もう一メーカーに囲い込まれて専用の DVD ライターとか用意した方が楽なんじゃねーかと思った。でもそれだけはやっちゃいかんと踏みとどまれた。


2018-09-15

_ 超今さらExpress触ってみた - その5 Loggerを改善する -

超今さらExpress触ってみた - その4 やっとテスト書けるよ - の続き。

背景

超今さらExpress触ってみた - その1 Expressって生々しすぎない? - で express の middleware として morgan という logger を導入したけど、これは HTTP request に応じて自動で吐くやつ。

expressjs/morgan: HTTP request logger middleware for node.js

今回は手動の方の話。

winstonにしてみる

今回の Express アプリの目的はあくまで Cloud Functions なので、log は Stackdriver Logging に送られることになる。

Stackdriver - ハイブリッド モニタリング | Stackdriver | Google Cloud

Stackdriver Logging に Node.js からログを送るライブラリとしてオフィシャルに紹介されているのは

Bunyan または Winston プラグインを使用するか、Node.js 用 Stackdriver Logging クラウド クライアント ライブラリを直接使用して、Node.js アプリケーションから Stackdriver Logging にログを書き込むことができます。

https://cloud.google.com/logging/docs/setup/nodejs

にあるように、

の二つ。

シンプルなのは bunyan の方だと思うのだが、winston は transport レイヤーをカスタムすることができ、logger から例えば Webhook や Mail で送信するといったことを手軽に実現できる機能がある。

今回はこれを期待して winston を採用してみようと思う。

組み合わせて試したのは以下のバージョン。

  • winston 3.1
  • logging-winston 0.9

実は、上の組み合わせは

undefined is a legacy winston transport. ...

と ERROR が起きてしまう。ただし、実際には動作する。という状態なので、安心したい場合は winston@2 系列と組み合わせるのがよいと思う。

最近のアップデートで 0.10.x 系で winston 3 対応している様子は分かるんだけど、中の依存で Node 6 がたぶん意図せず弾かれたり、ややこしい感じなので慌てない方がよさそう。

winstonを入れてみる

というわけで改めて必要なのはこれ。

winstonjs/winston: A logger for just about everything.

winston で logger を作る際の超基本的な構造はこんな感じになります。

logger.js

const winston = require('winston')
const logger  = winston.createLogger({
  level,
  format,
  transports
})

module.exports = logger

もうちょっと具体的に書くと、以下のようにしておけばとりあえず動く。

const winston = require('winston')
const logger  = winston.createLogger({
  level: 'info',
  format: new winston.format.simple(),
  transports: [new winston.transports.Console()]
})

module.exports = logger

で、index.js(function 側)では

const logger = require('./logger')

module.exports.test = (req, res) => {
  logger.info('ok')
  res.send('200 ok')
}

のように logger を呼び出して叩く。これで少なくとも functions-emulator では問題なく console に出力される。

この logger は morgan のような express middleware ではないので、function のコードで require していきなり使えます。

Cloud Functions用にlogging-winstonを追加

googleapis/nodejs-logging-winston: Node.js client integration between Stackdriver Logging and Winston.

Google Cloud Functions からは console が STDOUT だから自動的にログが Stackdriver Logging に流れてくれる、ようなことはない*1。そこで winston に Stackdriver Logging 用の transport を追加する。

const winton           = require('winston')
const {LoggingWinston} = require('@google-cloud/logging-winston')
..
snip)
..
const transports = [
  new winston.transports.Console(),
  new LoggingWinston()
]
..
snip)
..
const logger = winston.createLogger({
  level: 'info',
  format: winston.format.simple(),
  transports
})

module.exports = logger

てな感じ。

IAM Roleを足す

念のため、メモ。実際に Stackdriver Logging へログを送るには以下の permission ( Role )

logging.logEntries.create ( Logs Writer )

が要ります。ただ、Function に限って言えば Function の実行権限を持っていれば Logging への write 権限も普通はあると思います。

何が嬉しいのか

これで何が嬉しいかというと、とりあえず log level の記述が Stackdriver Logging の期待するものとだいたい一致するところ。

なんでここが気になるかというと、

ログを書き込む

Cloud Function からログラインを得るには、console.log か console.error を使います。

snip)

  • console.log() コマンドには INFO ログレベルがあります。
  • console.error() コマンドには ERROR ログレベルがあります。
  • 内部システム メッセージには DEBUG ログレベルがあります。

https://cloud.google.com/functions/docs/monitoring/logging

あれー、Warning とかどうすんだー? というのが気になったから。

もう一つ大事なのは format. 例えば timestamp を自動で入れることもできるし、すべての backtrace を入れた JSON ログ*2を作ることもできる。そのうえで Stackdriver Monitoring と組み合わせると、ログ → 監視 → 通知 → 対応(修正)をスムーズに行うことができるようになる。はず。

そのうち

Cloud Functions の外からでもこの組み合わせだけであれこれ ( Project ID とか ) 設定すればイケるんじゃないかと思っているので、今度試す。

*1 GAE とかはそうなってるはず

*2 Stackdriver Logging 用語では protoPayload