ImageMagickのconvertでPDF→画像に変換するときの(他の)Tips

全部じゃなくて、特定のページを指定して変換したいときはこう

$ convert 'hoge.pdf[4]' hoge.png

数値はゼロオリジンなので、5ページ、になると思う。たぶん。

パスワード付きのPDFの場合はこちら

$ convert -authenticate パスワード hoge.pdf hoge.png

pdfはパスワードつけられて便利、という認識/用例も多いので、こういうオプション準備されてるのは嬉しいですね。

ImageMagickのconvertコマンドでPDFを画像ファイルに変換できる

ImageMagickのconvertコマンドで、いろいろと画像フォーマットの変換ができるのだが、これを利用して PDF を PNG に変換することもできる

$ convert hoge.pdf hoge.png

これだと、字がつぶれて見えない!というときがあると思うのだが -geometry ではうまくいかない ので注意。そんなときは

$ convert -density 128 hoge.pdf hoge.png

などと -density オプションを使う。

PowerMockでstatic methodのmock/stubが可能なようだ

Mocking static methods
Quick summary

1. Use the @RunWith(PowerMockRunner.class) annotation at the class-level of the test case.
2. Use the @PrepareForTest(ClassThatContainsStaticMethod.class) annotation at the class-level of the test case.
3. Use PowerMock.mockStatic(ClassThatContainsStaticMethod.class) to mock all methods of this class.
4. Use PowerMock.replay(ClassThatContainsStaticMethod.class) to change the class to replay mode.
5. Use PowerMock.verify(ClassThatContainsStaticMethod.class) to change the class to verify mode.

とのことで、私の中ではいままで djUnit一択だった、たとえば

  hoge = Calendar.getInstance()...

みたいなケースで、テスト条件にあった日時を返却する、なども出来そうな気がしてきました。
まだ試してませんが。

djUnitはほんと強力です。TDDによる設計の改善を狙うならば、VMOのような仕掛けは必要ないのかもしれませんが、やはりstatic-methodは随所で使われていたりしますのでこういうテストノウハウは今でも必要だと思います。

新年あけましておめでとうございます

新年あけましておめでとうございます。
"2010"という字面、いいですね。サイバーパンク。何を言ってるかよくわかりませんが。

今年もコツコツと前進していきたいと思います。もっといろいろと発信していきたいと思います。
音楽にハマってたような気がする2009年ですが、比重はそのままに、はてなダイアリーでのアウトプット量も増やしていきたいな、と。
(音楽のほうは、たとえばなんちゃってジャズピアノ講座アメーバブログにて連載続行中です)

組織規模と俊敏さの矛盾

私は、前職(企業)の規模は社員数千人、その後の転職先ではさらに大きくなり世界規模で数十万人の社員、そして現在の勤め先はMBO(Management Buy Out)を社員数十人、現在は百人以上、とそこそこ様々なバリエーションの規模の組織で働いてきているつもりだ。

大企業病」などと揶揄されることもある、組織の「意思決定の遅さ」「アクションの遅さ」というものは、組織の規模に比例しているなどと言われることが多いし、私自身も(部分的には)そう思う。私が見てきた企業には、すくなくともそういう部分はあったと感じる。

たとえば1000人規模の会社で15人編成のプロジェクトがあるとしよう。彼らがプロジェクトを企画し、立案し、推進し、達成にいたるまでは、なにかしらのプロセスへの準拠であれ、承認を得るための会議(しかも数種類あるはずだ)であれ、とにかく「遅さ」を生む要因が待ち受けている。

逆に、10人ぐらいの、小さなベンチャー企業が3社集まって、各社5人ずつがそのプロジェクトへ参加するようなケースを想像してみると、それは3社合同のちょっとしたプロジェクトということになり、各社とも社員の半数が参加しているわけだから、それなりに背負うものもあり、結構大変な調整が必要だろう。それでも、大企業のそれよりはいささか「俊敏」であると思われる(少なくとも私の経験上は...)。

すこし考えを巡らせると、10人しかいない会社が社員の半数を出すようなプロジェクトが頓挫した場合と、1000人の会社において、たかだか15人が参加したプロジェクトが頓挫した場合とを比較するなら、前者のほうがダメージが大きいにも関わらず、後者のほうが、より慎重に慎重に(鈍重に)事を構えている(ように見える)。つまり「失うものの大きさと俊敏さにはどうやら関係がない」というようなことも言えそうである。

資金力も人材も豊富であり(人が多ければ、体力も素質も様々で、優秀な人材も存在する確率は高くなるはずだ)、どう考えても大企業のほうが「ガンガンいこうぜ」でAボタン連打だけで押せ押せで勝利していけそうな戦闘シーンにおいて、結果としては、俊敏さ(大胆さ)を発揮せずにグズグズやっているのだ。そして、そんなことをしているうちに、成功というものは、どうやらなにかと俊敏なチームのほうに転がり込んでいくのだ。

その結果、柔よく剛を制すということわざ?よろしく、ベンチャー企業が大企業を尻目に怒涛の快進撃、ということが起こっていたりもする(大胆すぎて失敗する、とか神風特攻型のケースもたくさんあるとは思うので全部が全部ではない)。

私は、現在少なくとも中以上の規模と思われる組織に属しているが、だからこそ、俊敏さを追求し、10人程度の会社なんて人材力と資金力と、それを投入するスピードと懐の深さでもって「粉砕してやんよ!」という気概でビジネスをしたいなあ、などと思う。これは「ベンチャー死ねよ」という意味ではなく、いま自分が属する組織を競争優位に導くという当然のことを追及したい、と思っているだけのことだ。

そのためには本質的に「なぜ規模が大きくなった組織は (たいしてダメージのない行動に対しても) 鈍重になるのか」というところを見つけていかねばならないと思う。

メモ:scalaz

Scalaz (Scar-lah-zed) is a library written in the Scala Programming Language. One mandate of the library is to depend only on the core Scala API and the core Java 2 Standard Edition API. The intention of Scalaz is to include general functions that are not currently available in the core Scala API. Scalaz is released under a BSD open source licence making it compatible with the licence of the Scala project.

ということで、Scala向けのライブラリセットのようですが、初めて知りました。version 4に向けての作業が進んでいる、ように見えます。
こんなのが入りそう、とのことで

* scalaz.http

Data structures for writing web applications (based on the slinky prototype)

* scalaz.database

Data structures for JDBC

* scalaz.parser

Data structures for parsing

* scalaz.geo

Libraries for geographic calculations

* scalaz.concurrent

An implementation of actors for concurrency

* scalaz.memo

A library for automatic memoisation of computations

なかなか興味そそる内容が多いです。

IntelliJ IDEA9 + Scala Plugin インストールメモ

いろいろとうまくいかなくて苦労したので(2009/11/30現在)、メモとして残します。

あたりとかハズレとか言ってますが、Scala Pluginとの互換性の話です。

こんな感じでした。「ハズレダウンロード」でいつまでたっても Scala plugin が incompatible とかなってて悩んでた。