Windows8.1用にxkeymacsをビルド

追記 2015/8/14
たぶん、画面のサイズを125%とか150%にするとまたボタンが隠れてしまいます。根本的な解決にはならないのでご注意ください。


Surface3にxkeymacsをセットアップして立ち上げたけど、プロパティダイアログで、ボタンが隠れる問題に直面(^^;

xkeymacs-8.1

ダイアログリソースをいじればいいや、と思いxkeymacs-snap-110830のソースをダウンロードしてVisual C++ 2010 Express Edition + WDKでビルドしたんですが、以下のエラーでストップ。

Utils.cpp(461): error C2039: 'GetString' : 'CString' のメンバーではありません。

ふむふむ、GetStringがないんだったら、強引にキャストしてまえ!ってことで、

//修正前
memcpy(pMem, text.GetString(), nLength);

//修正後
memcpy(pMem, (LPCSTR)text, nLength);

で切り抜け。

xkeymacs.rcだけVisual Studio Communityで適当にサイズ修正。
プロパティーシートで使用されるフォントがメイリオになってしまうのが原因?
ソース追えるほどMFCに精通していないため、ダイアログリソースだけ場当たり的に修正してビルド。

今度はちゃんとボタンが表示されました。

xkeymacs-8.1-2

めでたし!

ファイルの置き場に置いてます (xkeymacs-only-win8.1) 無保証

最後にリリースされてから4年と久しくバージョンアップされていないようですが、
Windows10も出ることですし、ダイアログ関連のメンテナンスリリースしてほしい<m(__)m>

Surface3 & nasne

デスクトップPCにはPC TV with Nasneをインストールしていて、たまに見ることがあるのですが、あまり使わない。

ってことで、試しに買ったばかりのSurface3に体験版を入れて nasne 視聴を試みた。これでサクサク見れるようなら、PC側のアプリをライセンス解除してSurface3にライセンスを移そうと。

んぉ!? TVの視聴、録画番組も普通に再生できるやん!

まぁ、再生したのも10分ぐらいでしたが、特にカクカクして視聴に耐えられない、というレベルではないので十分やないかなー。

しかし・・・普通に再生できるのはちょっと意外でした。一昔前のネットブック時代のAtomプロセッサしか知らないから、これだけ性能が向上しているのには、ちとビックリしてます(^^;;; よっぽどGPUコアの性能がいいんでしょうね。

Surface3に限らず、Atom x7搭載機は結構使えますな!

ってなわけで、PC Tv with Nasne のライセンスを移行しよ。

Lightroom mobile

連休終わりますね。木・金と休み取ってる人は、後4日も休みですかね。出不精のおいらにとって連休は別の意味で苦痛だったりして(^^;

なんか「連休をエンジョイ(死語)していないオレ」的な自虐をブログやSNSとかで愚痴ってるのはよく見ますが・・・まぁ、全員が全員、充実した連休を過ごしているわけでもなく・・・特に社会人失格のおいらは、休みたいときは休めるし・・・世間で言うところの「連休」には、あまり有り難みを感じない・・・ああ、もうダメダメ人間ですね(^^;

休み中はせっせと写真の整理。(・・・ぐらいしかすること無いです(^^;;;
Lightroom CCでコレクション作成を延々とやってました。
本来、Lightroomは全ての写真画像を一つのカタログで完結して、カタログ内のコレクションで整理するように推奨されている(うろ覚えなのですが・・・)のですが、そのやり方だと手間がかかる上、画像データファイルを、直近1~2年のデータは内蔵HDD、それ以前のデータは普段はオフラインの外付けHDDに移動、と分けている関係で、一つのカタログでやろうとすると、常にオフラインの外付けHDDを起動していなければならず・・・。

んなわけで適当な規則で複数のカタログを作って運用中。
今まではこれで全然問題無かったんですが、iPadにLightroom mobileを入れて使うと問題が発生。。。Lightroomは一つのカタログでしか同期できない仕様。

ってなわけで、「Lightroom mobileのためだけに」同期用カタログを一つ作成。

  1. 他のカタログで、同期したいファイル群のコレクションを作成。
  2. そのコレクションをカタログに書き出す機能で書き出す。
  3. 書き出したカタログを「同期用」カタログ内からインポート。
  4. インポートしたらそのコレクションをLightroom mobile同期にマーク。

てな感じで、この連休中iPadで同期したい写真のコレクション作成を延々やってました。
外付けHDDに保存されている写真に関しては、コレクションをカタログに書き出すときに「元画像をコピー」することで同期したいファイルだけコピーするので内蔵ディスクも圧迫されずに済む。

ええ感じになってiPadでLightroom(もどき)で閲覧・補正(^.^)

ただ、他の皆さんが言われているように、iPadで色調補正しても、液晶の発色がまったく違うので、あんまり意味ないような・・・。そもそもLightroom mobileは何をするアプリなのか・・・それを言っちゃお終いですが・・・。

≪いずれもiPad Air / Lightroom mobile のスクショ≫
20150506_095035000_iOS 20150506_095215000_iOS
20150506_095319000_iOS 20150506_095414000_iOS

Lightroom CCのインストール

いつものようにLightroom5を立ち上げたら新しいバージョンがリリースした旨の通知が出たので何のためらいも無くAdobe Creative Cloudを立ち上げ、Lightroomを更新した。更新したというより、新しくリリースされたLightroom CCを新規インストールしてるみたいで、古いバージョン5.7は残ったままだった。

ここで問題が発生。Lightroom CCが立ち上がらん(^^;; Twitterで検索したら案の定同じ罠にはまっている人多数。どうやら一度サインアウトしないといけないらしい。なんつーか、インストーラ作成担当の奴を小一時間問い詰めたいよ。

サインインした後は普通に起動して、既存のカタログ更新して現像・・・できない・・・。
こんな感じ。
CDM91MeVAAA6MoF_orig

GPU支援がデフォルトでオンみたいで・・・環境設定のところで「グラフィックプロセッサを使う」のチェックを外すとちゃんと画像が表示された。

・・・いや、分かんないけどさ、こういうのって、インストーラーが自動検出して自動的にオン/オフするのがフツーだと思うんだが・・・最近は違うのか?(笑)

どうやら、僕のPC (Core i7 4770)の内蔵GPUでは使えないみたいで・・・いやいやいや、ちゃんと対応してるはず! ちゃんとドキュメント読んだもん! Intel HD Graphics 4600は使えるって!

ってなわけで、インテルのサイトから 「Intel Driver Update Utility」っつーのをインストールしてドライバを更新。途中でDWMが応答停止とか、訳分からないエラーが出たけど・・・気にしない。再起動してもういちどLightroom CCを立ち上げたら、今度はちゃんと画像が表示された。
キャプチャ

ってなわけで、色調整時スライダーを動かした時の画像描画のカクカク感が無くなり、スライダー動かすとそれに追随して画像が変化する。非常に現像処理(色調整)が快適! これだけでもアップデートの価値あり。

めでたし、めでたし(^.^)

この他の新機能(って言えるのかな~???)の顔検出とか(いまさら???) とか、フィルターブラシ( いまさら???) ってなPhotoshop使いの人には、どーでもいい機能は省く。まぁ、Photoshopとは用途が違いますからね。

packer(.NET版)を勝手に改造

これ、すごい。こんなスマートなビルの壊し方があるんすね。。。ビル爆破より地味だけど、なんかお金かかりそう。
http://www.bbc.co.uk/news/world-asia-21406927

それはともかく。

javascriptコードを圧縮するのに packer (http://dean.edwards.name/download/#packer) の.NET版をよく使っています。
が、.NET版は(たぶん)メンテされておらず?ソースコードも .NET Framework 1.0時代のものなので、見栄えがかなり悪いし、テキストボックスの入力が32KBに制限されていたり、とちょいと不満がくすぶっていました。
最近Javascriptコードを書くことが多くなって、頻繁に使い出すと、どうもこのUI自体が(僕にとっては)使いにくい。

で、あまり見た目を触らずボタン類の配置、ビジュアルスタイルの適用などを含めて改造。
自分用の書庫の意味もかねているので、ここにアップロード。

左がオリジナル。右がUI改造版
jspacker myjspacker

改造点は、

  • ボタン配置・レイアウトを変更した。
  • ビジュアルスタイルを適用するようにした。
  • ラベルを日本語化した。.configファイルでラベル編集可能。
  • テキストボックスの32KB制限を外した。
  • ファイルからの読込(Loadボタン)時に文字コードを判別するようにした。
    (文字判定にInternet Explorerのモジュールを使っているのでIEを削除している方(いないと思うけど)の環境では文字判定できません

ユーザーインターフェイスの部分(Visual C#のIDE上で編集できる部分)のみ修正したのでpacker本体のアルゴリズムには一切タッチせず。packer自体のバージョンは上がっていると思うので、たぶん古いアルゴリズムのままのはず。分からんけど。

プロジェクトのプラットフォームを.NET Framework 3.5にして、フォームを定義しているソースファイルでIDE機能のデザイナーで編集される部分のコードを分離( partial class化)してます。

<< Download from here if you need.>> もし必要ならダウンロードはこちら
(改造後のVisual C# 2008のプロジェクトソースも同梱してます。)
(なんか、chromeだと、危険だ!とか出てダウンロードできませんが、別になんも仕込んではいないです。)

使い方は・・・説明しなくても・・・(^^;;;
ラベルを英語にしたい場合は、Javascript packer.exe.config ファイルを開いて、

&lt;setting name=&quot;Lang&quot; serializeAs=&quot;String&quot;&gt;
&lt;value&gt;ja&lt;/value&gt;
&lt;/setting&gt;

の中の、ja の部分を ja以外、たとえば、en とかにしてください。
ラベルを修正したい場合は、configファイルの該当箇所を修正してください。ただ、ボタン幅は固定なので長さによってははみ出るかも?

でわでわ。