Monday, June 30, 2014

Memo of ImageMagickのメモ集

 Wikipediaによると、「ImageMagick(イメージマジック)は画像を操作したり表示したりするためのソフトウェアスイートである。GIF、JPEG、JPEG 2000、PNG、PDF、Photo CD、TIFF、DPXなど100種類以上の画像ファイルフォーマットに対応している。GPL互換でより制限が緩い独自ライセンスが適用されている。」

 ImageMagickのオフィシャルホームページはこちらです。

 linux上で、C/C++のプログラムで直接ImageMagickのライブラリを使いたい場合、以下のライブラリをインストールする必要があります。
ImageMagick-c++-devel.i686(64ビット環境は)ImageMagick-c++.x86_64
コマンドレベルで使うためのチュートリアルはExamples of ImageMagick Usage (Version 6)です。目的に合わせて実践的なコード例(シェル)は一杯あります。ImageMagickの活用に貴重な参考資料です。


参考リンク(主に英語):
ImageMagick C programming interface:Magick Wand、Pixel Iterator、Pixel Wand、Drawing WandなどのAPIの詳細な紹介と簡単なサンプロコード
GraphicsMagickswiss army knife of image processingと自称する画像処理の簡易ツールである。2002年にImageMagick 5.5.2から分岐されたが、そこからImageMagickプロジェクトから全く独立し、沢山の人によって改良されてきた。GraphicsMagick-devel.x86_64というパッケージがひつようである。
ImageMagic Users Guide:伝統的なユーザズガイド

Sunday, June 29, 2014

Cannot Synchronize Pictures on iPad/iTouchで写真を同期できない

iOSのユーザーインターフェースのメニューの簡潔さで絶賛する人もいます。

すべてのことを、ボタンひとつ、操作一つでできれば、何も言うことはないが、実際は全く違います。

すべてのデータはiTunesで管理されています。コピーや削除といった操作はありません。全部「同期」です。

しかし、最近となって気がついた:iPadにある写真は、iTunesで設定した内容と違うことです。

正確にいうと、同期対象フォルダにある新しい写真は全くiPadに反映されていません。

念のため、iTunesに接続して、2,3回同期をしてみました。それなりに時間を掛けて、処理してくれたようだが、iPadにある内容は、一向に変わらないです!

調べてみても、納得のいく回答はありません。

結局、以下の操作で何とか新しい写真を含む「同期」ができました。つまり、作り直しだ!何が「同期」だ??????

iOSやアップル製品は全く使い物になりません!

  1. iTunesのデバイスのメニューである「写真」を選ぶ
  2. 写真の共有元をクリックし、「フォルダを選択」を選ぶ
  3. 全く違うフォルダを指定する
  4. 「同期」をクリック。これでデバイスにあるものは新しい箇所の内容で置き換えられる
  5. 再び上記の「フォルダを選択」を選び、実際同期したいフォルダを選び、「同期」をクリック
実は、上記の操作でもそう簡単にうまくいかなかったです。

上記のステップ5では、初回はデバイスにほとんど何も入らなかったです。

まさかと思って、iPad)を再起動(ホームキーと電源ボタンを同時長押し)させて、再び同期をしてみると、今度かなり時間を書けて、ステップ1から4まで丹念に処理をしてくれたようです。

が、結果はほぼ同じで、写真のアルバムで見ると、ほとんど何もないです。同期フォルダは1万枚以上の写真もあるにもかかわらず!

今度、3回のチャレンジでは、iPadの同期中のステップ3(フォトライブラリを分析中)でさらに長い時間をかけて処理を行っています。

一体全体どれだけバカなシステムだろうか!なんで、毎回「写真をインポート中」と言っているのに、ちっとも正しい処理はできないでしょう。

さらに不思議なことに、合計サイズ52GBの写真を処理するのに、27GBのキャッシュファイルを同じフォルダに作ってしまっていることです。いったい何を考えてこんなめちゃくちゃなことをしているでしょうか。人のデスクをどんだけ無駄遣いしたいでしょうか。

最後に、やっとわかったのは、そのキャッシュファイルこそ問題のもとであり、それをバッサリ削除してしまわないと、その(古い)情報は永遠に使われます。

しかし、8千枚以上の写真を同期しなおすことになり、それはなんと半日(8時間?測る気もなかった)もかかるバカ長い作業です。

やはり、超バカなシステムだ!

Monday, June 23, 2014

Learning Resources of MATLAB 教室・チュートリアル・プログラム例など

 ライセンスを持っていれば、mathworks.comはよいスタートです。日本語版にはライセンス登録しなくてもアクセスできます。

入門編


中上級編

Friday, June 13, 2014

Microsoft Windows Command Cipher ディスクを完全消去するコマンド

 マイクロソフトWindowsのコマンドであるCipherには、ファイルやフォルダを庵語化するか、その解除を行う機能があります。
 実は、その同じコマンドでディスクの未使用空間を回復不能な状態にすることはできます。いわゆる完全しょきょです。

 Cipherのヘルプは以下の内容となっています。

C:\Windows\system32>cipher /help
NTFS パーティション上のディレクトリ [ファイル] の暗号化を表示または変更します。

  CIPHER [/E | /D | /C]
         [/S:ディレクトリ] [/B] [/H] [パス名 [...]]

  CIPHER /K [/ECC:256|384|521]

  CIPHER /R:ファイル名 [/SMARTCARD] [/ECC:256|384|521]

  CIPHER /U [/N]

  CIPHER /W:ディレクトリ

  CIPHER /X[:EFS ファイル] [ファイル名]

  CIPHER /Y

  CIPHER /ADDUSER
         [/CERTHASH:ハッシュ | /CERTFILE:ファイル名 | /USER:ユーザー名]
         [/S:ディレクトリ] [/B] [/H] [パス名 [...]]

  CIPHER /FLUSHCACHE [/SERVER:サーバー名]

  CIPHER /REMOVEUSER /CERTHASH:ハッシュ
         [/S:ディレクトリ] [/B] [/H] [パス名 [...]]

  CIPHER /REKEY [パス名 [...]]

    /B        エラーが発生した場合に中断します。既定では、CIPHER は
              エラーが発生しても実行を続行します。
    /C        暗号化されたファイルに関する情報を表示します。
    /D        指定されたファイルまたはディレクトリの暗号化を解除します。
    /E        指定されたファイルまたはディレクトリを暗号化します。後で追加
              されたファイルが暗号化されるようにディレクトリをマークします。
              親ディレクトリが暗号化されていない場合、暗号化されたファイルは、
              変更されるときに暗号化を解除されます。ファイルおよび親
              ディレクトリを暗号化することをお勧めします。
    /H        隠しファイルやシステム属性のファイルを表示します。既定では
              これらのファイルは省略されます。
    /K        EFS で使用するための新しい証明書およびキーを作成します。
              このオプションが指定されると、その他のオプションはすべて無視
              されます。

              注意: 既定では、/K によって現在のグループ ポリシーに準拠する
                    証明書とキーが作成されます。ECC が指定されている場合、
                    指定のキー サイズによる自己署名証明書が作成されます。

    /N        このオプションは /U を指定した場合にのみ動作します。
              このオプションにより、キーが更新されなくなります。ローカル
              ドライブ上のすべての暗号化ファイルを探すために使用されます。
    /R        EFS 回復キーと証明書を作成してから、それらを .PFX ファイル
              (証明書と秘密キー) と .CER ファイル (証明書のみ) に書き込み
              ます。管理者は、ユーザーの回復キーを作成するために .CER の内容
              を EFS 回復ポリシーに追加し、個々のファイルを回復するために
              .PFX ファイルをインポートすることができます。SMARTCARD
              が指定されている場合は、回復キーと証明書をスマート カードに
              書き込みます。.CER ファイルが生成されます (証明書のみ)。.PFX
              ファイルは生成されません。

              注意: 既定では、/R は 2048 ビット RSA 回復キーと証明書を作成しま
                    す。ECC が指定されている場合、その後にキー サイズ 256、384
                    または 521 が指定されている必要があります。

    /S        指定されたディレクトリと、その下にあるすべてのファイルとサブ
              ディレクトリに対して指定された操作を実行します。
    /U        ローカル ドライブのすべての暗号化ファイルを参照しようとします。
              これにより、現在のユーザーのファイル暗号化キー、または回復キーに
              変更があった場合、これらが更新されます。このオプションは /N 以外
              の他のオプションでは動作しません。
    /W        ボリューム全体で利用可能な未使用のディスク領域から、データを削除
              します。このオプションを選んだ場合は、他のオプションはすべて無視
              されます。ローカル ボリューム上のどの場所にあるディレクトリでも
              指定することができます。ディレクトリがマウント ポイントである
              場合、または別のボリュームのディレクトリを指し示す場合は、その
              ボリュームのデータが削除されます。
    /X        EFS 証明書とキーのバックアップを、指定された名前のファイルに
              保存します。EFS ファイルが指定されている場合は、ファイルの暗号化
              に使用されている現在のユーザーの証明書のバックアップが作成され
              ます。指定されていない場合は、ユーザーの現在の EFS 証明書とキー
              のバックアップが作成されます。
    /Y        ローカル PC 上の現在の EFS 証明書を縮小表示します。
    /ADDUSER  指定された暗号化ファイルにユーザーを追加します。CERTHASH が指定
              されている場合は、この SHA1 ハッシュを含む証明書が検索されます。
              CERTFILE が指定されている場合は、ファイルから証明書が抽出
              されます。USER が指定されている場合、CIPHER は Active Directory
              ドメイン サービス内でユーザー証明書を検索します。
    /FLUSHCACHE
              指定されたサーバー上で、呼び出し元ユーザーの EFS キーのキャッシュ
              をクリアします。サーバー名が指定されていない場合は、ローカル
              コンピューター上の呼び出し元ユーザーのキー キャッシュがクリア
              されます。
    /REKEY    指定した暗号化ファイルを、構成済みの EFS の現在のキーを使用する
              ように更新します。
    /REMOVEUSER     指定されたファイルからユーザーを削除します。CERTHASH
                    は削除する証明書の SHA1 ハッシュである必要があります。

    ディレクトリ  ディレクトリのパスです。
    ファイル名    拡張子を伴わないファイル名です。
    パス名        パターン、ファイル、またはディレクトリを指定します。
    EFS ファイル  暗号化されたファイルのパスです。

    パラメーターを指定せずに CIPHER を実行すると、現在のディレクトリとディレクト

    リに含まれるすべてのファイルの暗号化状態を表示します。複数のディレクトリ名
    やワイルドカードを指定できます。複数のパラメーターを指定する場合は、パラ
    メーターをスペースで区切ってください。

Monday, June 9, 2014

All about Standard MIDI File Format SMFフォーマットのすべて

  スタンダードMIDIファイル(Standard MIDI FileSMF)は、MIDI用ファイルフォーマットの一つである。Format0/Format1/Format2の3タイプが存在する。一般的に用いられている拡張子は .mid。標準MIDIファイルとも呼ばれる(wikipedia)。

  DTMやMIDI コンピュータ音楽に付いてはDesk Top MusicとMusical Instrument Digital Interfaceの概略を説明してくれます。

 「SMFの基礎知識」もよくまとまったMIDIの説明です。

 C言語でMIDI(SMF)データを読んでみる!は自分で一からMIDIファイルを読み込むプロ部ラムを作成する例です。

 テキストファイルからMIDIファイルを作る方法はメモ帳などで入力したテキストファイルからMIDIファイルを作成するオンライン・ソフトウェアである。PerldocにはMIDIライブラリの使用例があります。

 PerlにはMIDIというMIDIファイルの読み込み、作成、修正、書き出し用のライブラリがあります。

 Perl and MIDI: Simple Languages, Easy MusicはPerlのMIDIライブラリの活用方法を詳細に紹介しています。特にMIDI::Simpleというサブ・ライブラリでは、以下のような記述で音楽を簡単に作成することができます。
my @phrases =(
   [ Cs, F, Ds, Gs_d1 ], [Cs, Ds, F, Cs],
   [ F, Cs, Ds, Gs_d1 ], [Gs_d1, Ds, F, Cs]
);
@bass_line = ( F, Cs, Ds, Gs_d1, Gs_d1, Ds, F, Cs);
midi<->CSVMIDICSCというプログラム(Perl)を提供し、以下のようなCSVフォーマットで記述した楽譜をMIDIフォーマットに変換できます。その逆の変換(MIDIファイルをCSVに変換)もできます。それに、簡単なコーラスを自動的に追加したり、キーを変えたりすることも簡単にできます。
 0, 0, Header, 0, 1, 480
 1, 0, Start_track
 1, 0, Tempo, 500000
 1, 0, Key_signature, 2, "major"
 1, 0, Time_signature, 9, 3, 27, 8
 1, 0, Title_t, "Another Jig Will Do"
 1, 0, Text_t, "Z:id:dc-slipjig-1"
 1, 0, Note_on_c, 0, 69, 105
 1, 239, Note_off_c, 0, 69, 0
 1, 240, Note_on_c, 0, 71, 80
 ...
 ...
 1, 34560, End_track
 0, 0, End_of_file
MIDI XML Format
 おーぷんMIDIぷろじぇくと:Windows環境で動作するオープンソースのMIDIデータ作成・編集用ライブラリ『MIDIDataライブラリ』(DLL)。ここには、世界樹(MIDIシーケンサーソフト)、MIDIてすたー(MIDIコントローラー・キーボードソフト)、自動どらむ(自動ドラム演奏ソフト)、MIDIせれくたー(MIDIマッパー出力先選択ソフト)というソフトウェアと、MIDIIOライブラリ(MIDIメッセージ入出力用ライブラリ)、MIDIDataライブラリ(MIDIデータ作成・編集用ライブラリ)、MIDIClockライブラリ(MIDI時刻計測用ライブラリ)、MIDIStatusライブラリ(MIDI音源状態管理用ライブラリ)、MIDIInstrumentライブラリ(MIDIインストゥルメントライブラリ)等のDLLライブラリがあります。

 MIDIシーケンサーソフト『世界樹』の概略については、このページで分かりやすく説明されています。

 HomeRoomからは、無料のMIDI・サウンドデータをダウンロードできます。

 ところで、日本のオープンソースのリストは大変面白いまとめで、自分で何かのアプリケーションを作りたい人には参考になるものです。

 因みに、無数な方法はあるが、MIDIファイルを再生するには TiMidity++という無料なソフトもあります。また、高機能かつ使いやすい MIDI シーケンサーとして和製のDominoもあります。詳細についてはPCユーザーなら「パソコンで作曲するための知識」は大変参考になります。