投稿

8月, 2011の投稿を表示しています

[linux] shred でディレクトリを完全削除する

VPSを引っ越したり(通常盗み見できませんが念の為)、HDDを破棄する場合など、削除したつもりのファイルの内容を残したくない場合、shred(シュレッド?)を使うと、ファイルの内容を意味のないデータで上書きしつつ削除できます。今回はさらに、findを使ってディレクトリ内のファイルをすべて削除してみました。 shredが無いときは、ファイルを削除した後、ランダムデータを空き領域いっぱいに書き込む方式でも十分かもしれません。 OS XにはsrmというSecureなrmコマンドがあって、FreeBSDではrm -Pを使うと良いようです。 # 注意:TARGET_DIR内の全てのファイルが再帰的に削除されます $ find TARGET_DIR -type f -print0 | xargs -0 shred --remove $ rm -rf TARGET_DIR # ディレクトリが残っているので削除します 参考 DSAS開発者の部屋:shredのあれこれ

Google Music Beta での文字化け回避方法 (foobar2000)

本日使い始めて気づいたのですが、音楽ファイルのアップロードに使用するクライアントの、ID3タグ中の日本語(Shift_JIS)の扱いに難があるようです。 クライアントは幸いにもUTF-8/UTF-16は理解してくれるので、ID3v2.4またはID3v2.3でUnicodeを使うように作り直すと上手くいきます。 ID3v1ではUnicodeは使われないみたいなので、削除した方が良いように思います。 ID3v2でも必ずしもUnicodeしかありえないかというとそうでもなく、Shift_JISが入っている場合もあるみたいです。 foobar2000では、Rebuild MP3 streamはタグを変更しないので、行ってもShift_JISのまま変化しません。Tag typeでID3v2.3→ID3v2.4の変更をするとついでにUnicodeになるようなので、この機能が使えます。このあとさらにID3v2.3に戻してもOKでした。 参考: foobar200 FAQ - MP3 tags (ID3v2) added or modified by foobar2000 are not read or are read improperly in application X or portable player Y. What can I do? > foobar2000 writes ID3v2.4 tags encoded as UTF-8 by default. Album ArtistはTPE2方式にのみ対応しているようなので、foobar2000の設定のAdvancedのところでTPE2方式を使うようにしてから、Album Artistの入っているファイルのタグを更新してください。 MusicManagerに更新日時の変化していないファイルのタグを再読み込みさせるにはServerDatabase.dbを削除します。 Windowsの場合は C:\Users\_USERNAME_\AppData\Local\Google\MusicManager\ServerDatabase.db を SQLite Database Browser などで開いて、Table: XFILESを覗くとアップロード終了を待たずに文字化け状況が確認でき...

[gae] Google App Engine (Python) を始める人用 Tips

まず最初に読むべきところは、 スタートガイド (いわゆるチュートリアル) 開発用サーバーでは、ファイルをいじってもサーバーを再起動する必要はなし。デプロイのコマンドは、appcfg.py update DIR API リファレンスは英語版のみに情報がある場合あり Channel API , Receiving Email 実際に動くコードをもっと見たい人は、 Google特製のサンプルコード集 JSON を扱うときは同梱されている simplejson を使う。 import simplejson simplejson.dumps({'foo': u'あいう'}, ensure_ascii=False) 参考: After installing new SDK this : from django.utils import simplejson does work anymore DEBUG ログが出るようにする方法と、PrettyPrinter を使ってネストしたデータを見る。 import logging, pprint logging.getLogger().setLevel(logging.DEBUG) pp = pprint.PrettyPrinter() logging.debug(pp.pformat(['foo', {'bar': 'buzz'}])) path のキャプチャの方法 class FooHandler(webapp.RequestHandler): def get(self, id): # /foo/123 へのリクエストなら、id = '123' app = webapp.WSGIApplication([ ('/foo/([0-9]+)', FooHandler), # 欲しいところを括弧しとく ], debug=True) webapp.util.run_wsgi_app(app) Windows の App Engine Launcher を使っていていちいちコマンドプロンプトが出てウザい:python.exe じゃなくて、pythonw.exe を...

[css] float や position:absolute についての詳しい資料

いくら検索しても、とりあえず目の前の仕事をこなそうという安直なサイトばかりが上位にヒットして、きちんと勉強できずイライラしている方も多いと思います。 そんな方には、W3C が公開している CSS2.1の仕様書 はいかがでしょうか。仕様書らしからぬヴィジュアルな例示が沢山あって、とても分かりやすく書かれています。 float や position はボックスの配置に関わるところなので、こちらのページに解説があります。 CSS2.1 Spec - Visual formatting model 勝手に要点をまとめると、 float はマージンの相殺がどうなるかという点。 position: absolute は、親要素であらかじめ意味なく position: relative しておくと、基準となる座標を選べる。 その他:勉強中です。