Photoshop用JSXで矩形選択していない状態でselectionのプロパティにアクセスすると謎のエラー

すごくニッチな内容です。

矩形選択していない状態で下記のスクリプトを実行すると、謎のエラーが起こってスクリプトが中断されます。

var selection = activeDocument.selection;
var bounds = selection.bounds; // -> ここでエラー
alert("Hi!"); // -> 沈黙

念のため、hasOwnProperty()でプロパティの存在をチェックしてみてもtrueが出る。

var selection = activeDocument.selection;
alert( selection.hasOwnProperty('bounds') ); // -> true

最後にtry-catchしてみる。

var selection = activeDocument.selection;
var bounds;
try {
  bounds = selection.bounds;
} catch(e) {
  alert(e); // -> エラー: 該当する要素はありません。
}

ないならundefined返してください(切実)

解決策

try-catchで回避するしか思い浮かばないです。

var selection = activeDocument.selection;
var bounds;
try {
  bounds = selection.bounds;
} catch(e) {}

Adobe Extension Builder 3でCC 2014用の拡張開発環境を構築

Photoshop用の拡張を作ろうとしたら、CC 2014になってFlashベースのパネルがサポート外になってConfigureが使えないみたいなので(この影響でインストールできない拡張がいっぱい…orz)、Extension Builder 3で開発環境を整えてみました。

Java SE のインストール

Eclipseを動かすのにJava SEが必要なのでインストールします。

Eclipse のインストール

Eclipse Downloadsでダウンロードしてインストールします。エディションはStandardでOKですが、バージョンは3.6以上にしてください。 日本語環境にしたければPleiadesを導入してください。

Extension Builder 3 のインストールと設定

Adobe Extension Builder and Creative Cloud 2014の通りにインストール・設定を済ませます。

終わり

導入がいちいちめんどくさいですが、これでなんとか無事に出来ました!

Hexo+Github+Werckerでブログ構築

静的サイトジェネレータでブログを作ろうと思って、 Static Site Generatorsを見た感じ、

あたりが良さそうだと思い、少し触ってみたら、

  • Metalsmithはコードをゴリゴリ書かないとブログを作れない
  • Hexoはymlファイルを少し変更するぐらいで、ほとんどコマンド1発でブログが作れる

という感じだったので、Hexoで作ってみました。

今回は、ブログのソースをgithubリポジトリにUPして、werckerでビルド、github.ioリポジトリにデプロイする形にしてみました。

Hexo

インストールとブログの作成

まずは、公式サイトに載っている通りにインストール・ブログ作成します。

$ sudo npm install -g hexo
$ hexo init blog
$ cd blog
$ npm install

テーマを変更する場合は、テーマ内の.gitディレクトリを削除しておくこと。 テーマ内にはたいてい設定ファイルがあるのでサブモジュールにするのもダメです。

$ git clone https://github.com/hexojs/hexo-theme-light.git themes/light
$ rm -rf themes/light/.git

設定

_config.ymlを好きなように修正します。

$ vim _config.yml

静的ファイルの生成

CSSやHTMLなどの静的ファイルを生成します。

$ hexo generate

HTTPサーバーを起動

HTTPサーバーを起動してブラウザで確認し、問題がないか確かめます。

$ hexo server

Github

  1. ブログソース用のリポジトリと、github.ioリポジトリ作っておきます。
  2. Authorized applicationsでPersonal access tokensを作成します。publicリポジトリなら、repoのチェックを外してpublic_repoにチェックを入れること。トークンは忘れないようにどこかに保存しておきます。
  3. ブログソース用のリポジトリの設定で、Collaboratorsにwerckerbotを追加します。

Wercker

wercker.ymlの作成

wercker.ymlをブログプロジェクト下に作成します。

box: wercker/nodejs
build:
  steps:
    - npm-install
    - script:
        name: Install Hexo
        code: |
          sudo npm install -g hexo
    - script:
        name: Generate static files
        code: |
          hexo generate
deploy:
  steps:
    - script:
        name: Get commit message
        code: |
          export COMMIT_MSG=$(git log --pretty=format:"%s" -1)
    - script:
        name: Configure git
        code: |-
          git config --global user.email "user@email.com"
          git config --global user.name "user"
          rm -rf .git
    - script:
        name: Deploy to github pages
        code: |-
          cd ./public
          git init
          git add .
          git commit -m "$COMMIT_MSG"
          git push -f $GIT_REMOTE master

アプリの作成・設定

Werckerでブログソース用のリポジトリを指定してアプリを作成した後、デプロイ先をCustom Deployで作成します。

f:id:yuukichi41:20140816213201p:plain

f:id:yuukichi41:20140816212811p:plain

GIT_REMOTEには先に取得しておいたパーソナルアクセストークンを使用し、https://{ACCESS_TOKEN}@github.com/{USERNAME}/{USERNAME}.github.io.gitのように指定してやります。

最後に

ブログソースをgit pushしたらWerckerが自動でgithub.ioリポジトリにデプロイするので少し待ちます。 github.ioにきちんとファイルがpushされていたら終わりです。お疲れ様でした。

golangでUTF-8-MAC→UTF-8

UTF-8-MACUTF-8に変換したくて四苦八苦していたんですが、UTF-8-MACUTF-8正規化したもので、iconvが独自に命名しているものとのことで、そこら辺を踏まえて調べてみたら、

この記事に正規化の方法が載ってたので、これを参考に

import "code.google.com/p/go.text/unicode/norm"

func DenormalizeUnicodeString(str string) string {
  buf := []byte(str)
  buf = norm.NFC.Bytes(buf)
  return string(buf)
}

こんな感じでいけました。

cgoを使用してiconvを使っても出来るんですが、クロスコンパイルが面倒なことになるので簡単な方法が見つかって何よりでした。

Google Chrome 64-bitでiCloudブックマークが使えない

どうもXmarksだとブックマークがおかしなことになるので、WindowsだけでもiCloudブックマークにしておこうと思って設定ポチポチしてて気付きました、Chrome 64bitだとiCouldブックマークが使えない・・・。

Chrome用の拡張自体はインストール出来るのですが、iCouldコントロールパネルでブックマークをONにしようとしても拡張がインストールされているのを認識してくれないみたいで出来ませんでした。

拡張のインストールパスの参照に失敗してるだけだと思うのでiCouldコントロールパネル側のアップデートを待つしかないっぽいですね。もしかしたらシンボリックリンクかなんかでいけるんだろうか・・・?

とりあえず仕方ないので32bit版に戻しました。。。