64bit 版 KaoriyaVim で突然の死

あるあるかもしれないけど、64bit 版 KaoriyaVim では、python の dll がロードできないと突然死にます。*1
なお、32bit 版だとエラーメッセージは出るけど落ちません。

ということで、64bit 版の python をインストールしましょう。

http://www.python.jp/download

環境

Windows8.1
64bit 版 KaoriyaVim 7.4.161

*1:ほんの一瞬 "ImportError: No module named site" と表示されるけど

Windows8 環境設定メモ

Windows8をセットアップした時のメモ。

Microsoft アカウント

Windows8 ではアカウントを Microsoft アカウントにできるのだけど、Microsoft アカウントの名前が日本語で登録してあるとホームディレクトリが ”C:\Users\太郎" みたいなことになってしまう。
しかも、一旦このディレクトリが作られてしまうとローカルアカウントに変更しても無駄。

回避するには Microsoft アカウントの名前を英字にしておくか、英字でローカルアカウントを作ってから Microsoft アカウントに紐付ける必要がある。

今回の場合、支給された時点で日本語アカウント名で作られていて回避できなかった。

結局、再インストールもめんどくさいので別のローカルアカウントを作って紐づけを変更。
元のディレクトリは残ってるけど無視することにした。

Chocolatey

http://chocolatey.org/

Windows 向けのパッケージマネージャ。
インストールは上記ページのコマンドをコマンドプロンプトで実行するだけなので楽ちん。

コマンド例

cinst hoge
chocolatey install hoge
chocolatey uninstall hoge
chocolatey -lo list

インストールしたもの

その他

ランチャーも色々探したんだけど、標準で使える "Win + R ファイル名を指定して実行” に落ち着いた。
普段使うものなんてたかが知れてるし、しばらくこれでやってみるつもり。

あと、ポート80 を使いたい場合に Skype の設定を変える必要があるんだけどストアアプリ版のSkypeだとポートが変更できないっぽかった。
http://community.skype.com/t5/Windows-8-1-from-Windows-Store/How-to-change-port/td-p/1173550

2013年振り返り

年末なので今年の振り返りです。
今年は個人的に大きな出来事があった年でした。

子供が生まれた

夏に子供が生まれて生活が一変しました。

何をするにも子供が最優先、自分の時間を作るのが一苦労です。
平日は妻一人に任せきりなので休日くらいは父親業しないとね。

大変なことも多いけど子供がいる生活は楽しいです。

退職 & 転職した

正確には本日付けで退職、年始から新しい会社で働きます。

最初に内定した会社が 2 週間後に倒産が決まるなどという事件もありましたが、とある Web 開発会社に入社することになりました。
来年は Web エンジニア見習いとしてがんばります。

勉強会とか

前半はだいたい月一くらいは参加してたみたいです。
初めてオンラインの読書会にも継続的に参加しました。
読書会駆動で本を読んでディスカッションするのはオススメです。

後半は子供の世話のためほとんど参加できませんでした。
子供の世話に慣れていないせいもありますが、自宅で PC を開くのもままならず勉強自体も通勤時間での読書が精一杯。

子供がもう少し大きくなるまではこんな感じですかね。

総括

子供最優先な生活になったため、思うように時間が取れなくなったけど概ね楽しく過ごせました。
だいぶ子供の世話にも慣れてきたし、転職して勉強すること多すぎるし、来年はもう少し自宅での時間をうまく使えるようにしたいです。

公開鍵暗号による暗号化 PDF の仕様ではまった

PDF 生成プログラムで公開鍵暗号暗号化したPDFが Acrobat で開くとデジタルID がありませんというメッセージが出て開けないという状態でしばらくはまってました。
とりあえず解決したっぽいのだけど、なんだか腑に落ちないところがあるのでメモ。

原因は PDF に埋め込む権限情報の値の 1bit 目を 0 にしていたから。1 にしたらあっさり開けるようになりました。

追記2013/12/12ここから
2bit 目 1、1bit 目 0 でも開けました。
どうも下位 2bit が共に 0 の場合がだめのようです。
追記2013/12/12ここまで

PDF リファレンスの Errata に設定値の説明が載っています。*1

Errata to Sixth Edition

5 ページの下部から抜粋。  

KEY TYPE VALUE
P integer (Required) A set of flags specifying which operations shall be permitted when the document is opened with user access. If bit 2 is set to 1, all other bits are ignored and all operations are permitted. If bit 2 is set to 0, permission for operations are based on the values of the remaining flags defined in Table 3.21a.

 
Table 3.21a

Bit position Meaning
2 Permit change of encryption and enable all other permissions.
3 Print the document (possibly not at the highest quality level, depending on whether bit 12 is also set).
4 Modify the contents of the document by operations other than those controlled by bits 6, 9, and 11.
5 Copy or otherwise extract text and graphics from the document by operations other than that controlled by bit 10.
6 Add or modify text annotations, fill in interactive form fields, and, if bit 4 is also set, create or modify interactive form fields (including signature fields).
9 Fill in existing interactive form fields (including signature fields), even if bit 6 is clear.
10 Extract text and graphics (in support of accessibility to users with disabilities or for other purposes).
11 Assemble the document (insert, rotate, or delete pages and create bookmarks or thumbnail images), even if bit 4 is clear.
12 Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this bit is clear (and bit 3 is set),printing is limited to a low-level representation of the appearance, possibly of degraded quality.

 
こんな重要情報が Errata にしか書いてないのもどうかと思うけど、この記述からは 1bit 目を 1 にしないといけないようには読めないのですが。
なんか読み方間違ってる?

ちなみにパスワードによる暗号化の場合も権限情報を埋め込むのですが、そっちは下位 2bit が 0 固定という罠。
同じと思い込んでいたので気づくのに時間がかかりました。

*1:Errata の内容はリファレンス本編には載ってない

Acrobat の暗号化 PDF 生成機能についての疑問

仕事で PDF の仕様を調べていて感じた疑問。
結論は無いですし、勘違いしてるかもしれません。

暗号化 PDF

PDF にはセキュリティ機能として、パスワードによる暗号化と公開鍵による暗号化の二種類の暗号化機能があります。
Acrobat 内の表記だとパスワードによるセキュリティと証明書によるセキュリティが該当します。
下記から選択できます。

  • ファイル->プロパティ->セキュリティ->パスワードによるセキュリティ
  • ファイル->プロパティ->セキュリティ->証明書によるセキュリティ

今回は公開鍵による暗号化についてのお話。
詳細は公式リファレンス(PDFファイル)の "3.5.3Public-Key Security Handlers" あたりを参照してください。

暗号化自体は、相手の公開鍵でドキュメントを暗号化して、使用した公開鍵情報を PKCS#7 形式で埋め込むという、いたって普通の方式です。

疑問

PDF 仕様的には公開鍵(と証明書)があれば暗号化はできます。

ですが、Acrobat で証明書によるセキュリティを選ぶと、デジタル ID (PKCS#12 ファイル)とパスワードを要求されます。
要するに秘密鍵が必要ということです。
参考 Adobe Acrobat Standard * デジタル ID

暗号化されたPDF を開くのにはデジタル ID とパスワードが必要です。
そうすると、どうやって安全にデジタル ID とパスワードを共有するかという問題が発生し、公開鍵暗号を使うメリットが減っています。

本来、相手の公開鍵のみを使って暗号化して送れば済むはず。
百歩譲って、暗号化したものを復号して内容確認したいという話だとしても、公開鍵だけで暗号化できるモードがあってもよさそうなのですがね。

公開鍵だけで暗号化できる製品もあるようなので、Acrobat がこの仕様なのはなんでだろうと思った次第。

組込み OS 自作しました

ちょっと前になりますが、『12ステップで作る組込みOS自作入門』という本を見ながら、低機能な OS を作ってみました。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

参考にしたサイト
12ステップで作る 組込みOS自作入門
2回目のC言語で『12ステップで作る組込みOS自作入門 』の通りに組込みOSを作ってみた - 三等兵

リポジトリ
https://bitbucket.org/y_sumida/kozos

感想

この本で作る OS "KOZOS" は組込み OS であり、それ自体に大した機能はありません。
本当に原始的な OS としての最低限の機能しか持ちません。
システムコールも少ししかないし、ファイルシステムだってないです。

でも、この機能の少なさが OS を学ぶ第一歩としてとてもよかったです。
ステップごとに少しずつ機能を拡張していく形式も、各ステップが無理なくできる分量でした。*1

いまどきの開発環境では低レイヤーの知識が直接必要とされることは少ないですが、知っていると知識の幅が広がるような気がします。
仕事で役に立つかどうかを差し引いても、OS を作るのはとても楽しい経験でした。
この本を手にとって良かったと断言できます。

本に書かれている 12 ステップは終わりましたが、暇を見つけて機能を追加していこうと思います。

この本を通して学べたこと

*1:私の場合は 1 ステップ 平均 2 時間くらいでした

TDDeXchange in Tokyo に参加しました

TDDeXchange in Tokyo - connpass
TDDeXchange in Tokyo #TDDeX - Togetterまとめ

書くのが少し遅くなってしまいました。
TDDBC には参加できなかったのですが、翌日のこれに参加してきました。

「TDD の自殺」 by @kyon_mm さん

以前、タネマキでも少しお話してもらった内容をより詳しくした内容でした。

後日、スライド見直しつつ、つらつら考えてみました。
ほぼプロダクトコードのコピーのような複雑なテストダブルや、テスト対象を実行するために別のクラスを生成して云々というようなコードをできるだけテストコードに書きたくない。
テストコードはテスト対象を呼ぶだけにしたいってことなのかなあと理解しました。

演習

お題が提示され、各自で演習。
ペアプロしてる組があったり、ソロでやってたり、別のことをやっていたりと自由です。
私は @PoohSunny さんと Groovy でペアプロしました。
課題自体はあまり進められませんでしたが、久々のペアプロはとても楽しかったです。
@PoohSunny さん、ありがとうございました。

半日でやるには少々ボリュームがありますが、独立した TODO に落とし込み易くて、ちょうどいい感じのお題でした。

今回は二人で相談して、データの持ち方を全部は決めずに徐々に肉付けするボトムアップな形で進めましたが、先の機能を見越して、ある程度じっくりデータ形式の最終形まで考えてから実装に着手するやり方も試してみたいところです。

懇親会

ビールやピザが運び込まれて懇親会開始。

演習について、他の方の考え方や進め方を聞くことができたのがよかったです。
今回のお題は TDDBC のようにステップ分けされていなかったので、各自バラバラな順序で実装していたのが面白いですね。

あと、品質特性のお話の中で ISO9126 が既に ISO25000 系に置き換わっているというのを知ることができました。

そんな感じで楽しく盛り上がりましたが、楽しい時間は早く過ぎるもので気づいたらお開きの時間。
みんなで片付け等をして撤収です。*1

主催の@kyon_mm さん、会場提供頂いた株式会社ドリコムさんと中の人 @sue445 さん、参加された皆さん、ありがとうございました。

*1:帰りの坂道が地味にきつかったです…