マックブックな日々(Macbook Geek)

Retina Macbook Proで行った設定、アプリのインストール、トラブル対策等の覚書

mbpの起動音を消す(mountain lion)

セミナーなどでMBPでメモを取りたいことがある。あるいは、「内職」したいことがある。
そんな時、静かな会場でMBPの起動音はかなり目立つ。音を消したい…と思ってもシステム環境設定にはそんな設定は見当たらない。起動音を消すアプリもあるようだが、できればアプリはミニマムにした いし、mountain lionではうまく動かないという投稿もある。

こういう時はコマンドラインの設定…というのが、最も自然な対策だろう、と思って調べると、こういう記事があった。感謝。

Google日本語変換を使う

Google日本語変換を使っている。
そこそこ満足しているが、便利になるほどもっと効率的に入力したいと言う欲求が強くなる。人間とはわがままなものだ。
体力と運動神経に任せてひたすらブラインドタッチの速度を上げる練習をしてもいいのだが、歳も歳なので、泥臭いことはやめてアタマを使ってみた。


1)変換プリセット
まず「環境設定」のページをカスタマイズする。
僕は以前のしがらみ?で、キー設定はATOKにしている。句読点、記号は自分のスタイルに合わせておく。
f:id:yasuda0404:20130606090421p:plain

2)よく使う文字のショートカット
自分の文章のスタイルによって、よく使う文字というのがある。これらを出すショートカットを覚えておくと、人生はかなり楽になる。
僕の場合は次だ。
「環境設定」パネルの、キー設定ーローマ字テーブル、「編集...」をクリックすると、文字(出力)とキー(入力)のテーブルが現れる。変更も可能だ。

僕がよく使う(…というか、もっと使って効率を上げたい)のは次。(【】はオリジナル設定、残りはデフォルト設定だ。)

文字 キー
x[
x]
z[
z]
z.
zh
zj
zk
zl

f:id:yasuda0404:20130606091906p:plain

iOS App開発:証明書、プロビジョニングファイルの作成覚書

iOSアプリ開発者証明書、App ID、プロビジョニングファイルについて、すぐ忘れてしますので、メモ。

iOS Dev Center - Apple Developerから、"Sign in"をクリック
f:id:yasuda0404:20130519175202p:plain

Apple ID/パスワードを入力
f:id:yasuda0404:20130519175329p:plain

右メニューiOS Developer Program-”Certificates, Identifiers & Profiles"
f:id:yasuda0404:20130519175709p:plain

"Certificates, Identifiers & Profiles"画面
Certificateは、開発者証明書。新たに証明書を作成する場合、"+"ボタンを押す。
f:id:yasuda0404:20130519175756p:plain

同じ種類のiOSアプリには共通して使えるが、開発用(Development)と配布用(Distribution)は別々に作る必要がある。
f:id:yasuda0404:20130519180440p:plain

"Identifiers"はアプリのID。アプリごとに固定IDを作成してもよいし、ワイルドカード("*")を使って、ひとつのIdentifierで複数のアプリIDに対応させることもできる。
Identifierの構成は、
Prefix (Dev Centerで指定される)+ID(ユーザが任意に指定できる)
で、ワイルドカードを使う場合は、IDに、"jp.xxxx.*"等と指定する。

"Devices"は、開発に用いるiOSデバイス。必要なiOS機器を登録しておく。

"Provisioning Profiles"は、開発者証明書、開発用iOS機器、Identifierをまとめたファイル。

Illustratorのスクリプトで外部ライブラリを参照する

Adobe IllustratorJavascript(jsx)で、よく使う関数をまとめた共通ライブラリを作って、外部ファイルとして読み込む方法は次の通り.

読み込む側のスクリプト(メインJSX)の冒頭に、

#include "インクルードするJSXファイル名"; 

と記述する。

注意点として、相対パスの基準はメインスクリプトの置かれた位置であり、スクリプトを適用するAIファイルの位置ではない、と言うこと。メインJSXがAIファイルと同じ位置に置かれていれば問題ないが、異なる階層の場合、注意が必要。

Flash/AirでiOSアプリを開発する

iOSアプリ開発のワークフロー Flash Professional CS6編 | ADC - Adobe Developer Connectionを参考に、Flash/AirでiOSアプリを開発してみる。
環境は、Flash CS6/Xcode4.6。


1.証明書(CSR)の取得

キーチェーンアクセスー環境設定...
f:id:yasuda0404:20130311191147p:plain

OCSP, CRLを共に「切」にする
f:id:yasuda0404:20130311191155p:plain

証明書アシスタント...ー認証局に証明書を要求...
f:id:yasuda0404:20130311192152p:plain

Apple Developerに登録したメールアドレスとパスワードを入力。「ディスクに保存」を選択。
f:id:yasuda0404:20130311192201p:plain

指定した場所にCSRファイルが書き出される。
f:id:yasuda0404:20130311192211p:plain

CSRをダブルクリックし、キーチェーンアクセスに登録。キーチェーンアクセスの「証明書」メニューで、'iPhone Developer...'を選択し、ファイルー書きだす…
f:id:yasuda0404:20130311202247p:plain

ファイル名を入力し、保存。P12ファイルのパスワード(任意)を入力、その後、キーチェーンのパスワード(Macのパスワード)を入力する。
f:id:yasuda0404:20130311202301p:plain
これで、p12ファイルができる。


2.プロビジョニングファイルの取得
Developer/Member Centerにログイン。メニューからiOS Provisioning Portalを選択。
f:id:yasuda0404:20130311191139p:plain

左メニューの'Devices'でiOSデバイスを登録(手順詳細省略)

同ー'App IDs'を選択
f:id:yasuda0404:20130311193846p:plain

Descriptionに任意のアプリ名、Bundle Seed ID (App ID Prefix)はアプリの識別番号。初回登録の場合、'Generate New'で作成するのが良い。
Bundle Identifier (App ID Suffix)はアプリ名だが、'*'を入れればアプリ名を指定しない証明書を作成できる
f:id:yasuda0404:20130311193838p:plain
以上を設定し、'Submit'をクリック

’Provisionong'メニューで、’New Profile’ボタンをクリック
f:id:yasuda0404:20130311194259p:plain

Profile Menuにプロファイル名を入力、App IDは先ほど登録したApp IDを選択。Devicesは登録したデバイスから、アプリを動かしたいデバイスを選択。
Certificateで、'Please create a Development Certificate'をクリック
f:id:yasuda0404:20130311194408p:plain

’Certificate’メニュー。承認待ちの証明書のチェックボックスをチェックし、承認する(Approve Selected)する。
f:id:yasuda0404:20130311195048p:plain

プロビジョニングファイルがダウンロード出来る状態になるので、ダウンロード・保存する。'アプリ名.mobileprovision'と言うファイル名になる。
f:id:yasuda0404:20130311195056p:plain


3.Flashの設定
Flashを起動。'Air for iOS' を選択。
f:id:yasuda0404:20130311191127p:plain

パブリッシューターゲットのスパナアイコンをクリック
f:id:yasuda0404:20130311192835p:plain

「Air for iOS設定」の「一般」タブで、iOSシミュレータのパスは、
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk
と入力。(シミュレータのバージョンは2013.3.11現在)。
f:id:yasuda0404:20130311192847p:plain

同「デプロイ」タブで、証明書に上で設定したp12ファイルとパスワードを指定。、プロビジョニングファイルに上で作成・保存したプロビジョニングファイル('アプリ名.mobileprovision')を指定。iOSデプロイタイプはまずは「クイックパブリッシューデバイスでのテスト用」とする。
f:id:yasuda0404:20130311203340p:plain

MacのWORDの表の一部が表示されない問題

MacのWORDで表の一部が表示されないことがある。変な文字コードが入ったのかと思っていたが、どうも既知のバグらしい。
対処方法は次の通り。

1)表を選択し、罫線ー表のプロパティ...。
f:id:yasuda0404:20130222154219p:plain

2)「文字列の折り返し」で「しない」を選択。「OKで表のプロパティ」ウィンドウを閉じる。
f:id:yasuda0404:20130222154228p:plain

Illustratorのjavascriptでクラスもどきを作る

Adobe Illustratorでの制作を自動化するためScriptを使ってみた。VB, AppleScript, javascriptの3つが使えるが、WinでもMacでも使える点でjavascriptが一般的なようだ。

作業の効率化の点で不便なのは、javascriptでクラスを使う術がないことだ。
そこで、http://www.phpied.com/3-ways-to-define-a-javascript-class/を参考にして、「クラスもどき」を扱う方法を確かめてみた。

1.関数を使う

var apple = new Apple("macintosh1");
apple.color = "reddish";
alert(apple.getInfo());

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = getAppleInfo;
}
 
// anti-pattern! keep reading...
function getAppleInfo() {
    return this.color + ' ' + this.type + ' apple';
}

これでクラス的な扱いが可能。しかし、この方法は関数をグローバルとして定義するため、関数名のコンフリクトがおきる可能性がある。
そこで、次の1.1、1.2のオプションがある。

1.1 内部関数

var apple = new Apple("macintosh11");
apple.color = "reddish";
alert(apple.getInfo());

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = function() {
        return this.color + ' ' + this.type + ' apple';
    };
}


1.2 関数をユーザ側で定義

var apple = new Apple("macintosh12");
Apple.prototype.getInfo = function() {
    return this.color + ' ' + this.type + ' apple';
};
apple.color = "reddish";
alert(apple.getInfo());

function Apple (type) {
    this.type = type;
    this.color = "red";
}


2.オブジェクト・リテラルを使う

var apple = {
    type: "macintosh2",
    color: "red",
    getInfo: function () {
        return this.color + ' ' + this.type + ' apple';
    }
}
apple.color = "reddish";
alert(apple.getInfo());

この場合、「Appleクラス」を定義する必要はない。ただし、var apple={...}を、appleの呼び出しより先に定義しておかねばならない。このため、クラスや関数のような自由度がない。


3.シングルトンを使う

var apple = new function() {
    this.type = "macintosh3";
    this.color = "red";
    this.getInfo = function () {
        return this.color + ' ' + this.type + ' apple';
    };
}

apple.color = "reddish";
alert(apple.getInfo());

この方法は、1.1と似ているが、「クラス」の扱いは2と同じく、オブジェクト・リテラルになる。

          • -

個人的には1.1がもっとも混乱がないと思う。1.2は「クラス」定義後にユーザが任意の関数を加えたい場合のオプションと考えれば良いだろう。

補足:
「クラス」メソッドに引数を渡す場合は、次のように記述する。(1.1の変形)

var apple = new Apple("macintosh");
apple.color = "reddish";
alert(apple.getInfo("11"));

function Apple (type) {
    this.type = type;
    this.color = "red";
    this.getInfo = function(no) {
        return this.color + ' ' + this.type + no + ' apple';
    };
}