mac(lion)で、存在しないドメインをhostsに書いたのだけど、
なぜかDNSを見に行ってしまっている。

dns lookupがタイムアップになって、その後始めてhostsで指定したIPにリクエストが行ってる感じ。

pingだとすぐ通じるのだけど、ブラウザだと上記挙動。。。

ネットで検索したらlionからhostsよりDNSが優先されるようになったっての見つけたけど、誰か解決策しらないかしら。




追記
自動プロキシスクリプト(pac)使うか。。。


追記
とくになかをしたわけではないけれど,hosts優先で利くようになった。。。。
原因はわからないけど良かった良かった。

追記
結局なおらなkったので別の方法で解決しました

macでwindowsキーボード使うなら


mac book air使ってるんですが、家で本格的に作業するときは、
外部ディスプレイ+外付けキーボード&マウスって感じで作業してます。
ただmacwindowsキーボードの組み合わせは「英数キー」「カナキー」が使えなくて不便です。

その場合の入力切替はcommand+spaceが普通だと思いますが、eclipseの補完をcommand+spaceに割り当ててるので無効にしてしまってます。



microsft製キーボード前提で、こちら
のintelipointをインストールすることで、windowsキーボードの

  • 無変換キーを英数キー
  • 変換キーをカナキー

に割り当てることができます。



そのほか、音量・曲のスキップ・任意割り当てキーなど様々な機能の調整が可能です。
microsoftのキーボードだけに聞くので、mac book air本体のキーボードには影響ないので安心です。


自分に合うキーボードを探していろいろ試していた時期に出会ってそれからずっとmicrosoftのキーボードです。
もともと肩こりがひどかったのが実際だいぶ楽になったので、気になる人はお店とかで触ってみるといいと思います。

microsoftのエルゴノミック製品一回慣れるとは離れられないくらい気持ちいですよ。

安全にパスワードを教える方法

パスワードをネット越しに教えたい場合なんかに、
チャットとかメールとかいろいろあるけど、ちょっと心配だったりしますよね。

相手が、macとかLinuxだった場合はこんな方法使うと安全で便利です。


方法

例えば「hello world」ってパスワードを教えたい場合、
以下のコマンドをターミナルに入力して暗号化

echo "hello world" | openssl enc -e -aes-256-cbc -salt | base64

実際はこんな感じ

# echo "hello world" | openssl enc -e -aes-256-cbc -salt | base64
# enter aes-256-cbc encryption password:[解凍用パスワードを入力]
# Verifying - enter aes-256-cbc encryption password:[解凍用パスワードを入力]
U2FsdGVkX1/QAnOuv0KxePA2ue9COqx4sK5Qt9B8u/Q=


解凍用パスワードが「test」だった場合、「U2FsdGVkX1/QAnOuv0KxePA2ue9COqx4sK5Qt9B8u/Q=」って文字列が出力されるので

echo "U2FsdGVkX1/QAnOuv0KxePA2ue9COqx4sK5Qt9B8u/Q="  | base64 -D | openssl enc -d -aes-256-cbc -salt

このコマンドと解凍用パスワードを相手に教えればOK。



※1つのメールで両方書いたら意味ないので、コマンドはメールで、解凍パスは電話やチャットなど別々の経路で教える必要がありますよ




上では暗号化アルゴリズムとしてaes-256-cbc使ってますが、暗号化・復号化はopensslつかってるので

aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx idea
idea-cbc idea-cfb idea-ecb idea-ofb
rc2 rc2-40-cbc rc2-64-cbc rc2-cbc
rc2-cfb rc2-ecb rc2-ofb rc4
rc4-40 seed seed-cbc seed-cfb
seed-ecb seed-ofb zlib

など様々な暗号化方式使えます。
とはいえ特別な理由がなければ、aes-256-cbc以外選ぶ事ないと思います。

TitaniumのViewに加えたメソッドでsetで始まるメソッドはコールされない

以下のようにViewに対して追加したメソッドのうち、小文字のsetで始まるメソッドは何故かコールされない。

関数

var view = Ti.UI.createView();
view.setHoge = function(  ){
	alert('setHoge');
}
view.SetHoge = function(  ){
	alert('SetHoge');
}
view.hogehoge = function(  ){
	alert('hogehoge');
}
view.hogehoge();//hogehoge
view.SetHoge();//SetHoge
view.setHoge();//not called!


ちなみにview.setHoge();を始めに実行するとそれ以下のコードも実行されない。
set〜〜というのは何かで予約されているのだろうか・・・
調べたけどわからず・・・

TitaniumにてViewを継承したクラスを作る

TitaniumではViewの生成は
Ti.UI.create~~という専用のメソッドを使うため、prototypeを使った継承などが使えません*1

ただ用途ごとにViewを継承したクラスを定義していきたかったので、ぱっと見継承したっぽく見せかけるメソッドを用意してみました。

関数

//app.js
var root = this;
//ViewもしくはWindowなどのUIオブジェクトを継承したクラスを作成
function createViewClass( parentView , props ){
	var func = function(){
		var view = Ti.UI["create"+parentView]( arguments[0] );
		for( var i in props ){
			view[i] = props[i];
		}
		if( view['__construct'] ){ view.__construct.apply(view,null); }
		return view;
	}
	return func;
}
//パッケージを生成。
function createPackage( ns ){
	var nsList = ns.split('.');
	var currentObj = root;
	while( n = nsList.shift() ){
		if( currentObj[n] == undefined ){
			currentObj[n] = {};
		}
		currentObj = currentObj[n];
	}
}

サンプル

createPackage('toytools.test');

//create extended view(or window) class
toytools.test.TestImageView = createViewClass(
	'ImageView',
	{
		_var1:null,
		__construct:function(  ){
			//コンストラクタ
			//newの時の引数はViewのコンストラクタが持っていってしまうため、引数は持てない
			//第二引数以降を使うことも考えたけどとりあえず無しで
		},
		setVar:function( var1 ){
			this._var1 = var1;
		},
		getVar:function(){
			return this._var1;
		}
	}
);

//
var image = new toytools.test.TestImageView({url:'http://k.yimg.jp/images/top/sp/logo.gif'});
var win = Ti.UI.createWindow();
win.add( image );
win.open();
image.setVar('hogehoge');
alert( image.getVar() );

*1:new Ti.UI.ImageView()みたいなことはできない

MacBookAir+Parallels(windows7)キーボード設定まとめ

MakBookAirを買ったついでに、今までのBootcamp+Parallelsの環境から完全にParallelsの環境に移行してみました。

macはいいけどキー配置はwindowsのほうが。。。ってことでwindows感覚で使えるmacのキー配置設定まとめ

具体的にはキーボードの左下の部分を

- A S ...
Shift X X ...
Command(Ctrl) Option(Win) Control(Alt) ...

という配置(括弧の中はparallelswindowsでのキー配置)にかえます。
上記設定にするとコピーやペーストなどもwindowsキーボードと同じ感覚で使えるので、初めてmac触る人とかでも違和感なく触れるかと思います。
※キーボードは日本語キーボードです

macのキーボード設定の変更

設定>キーボード>修飾キー

CapsLock Command
Control 無効
Option Option
Command Control

parallelsのキーボード設定

コヒーレンスモードの場合altおしながらツールバーparallelsマークをクリックすることでparalellsのメニュー表示
parallelsメニュー>環境設定>キーボード

※これはやらなくても多分平気

windowsキーバインド変更

Change Keyをダウンロードしてキーバインドを以下のように変更

Ctrl Alt
Win Ctrl
Alt Win

windowsキーボードをつなげる場合

以上のことをやった上で
設定>キーボード>修飾キー

CapsLock CapsLock
Control Command
Option Control
Command Option

macことえりの設定

ツールバーの右上にある[あ]みたいなマークをクリック>環境設定
windows風のキー操作にチェック

windowsIMEの設定

http://inforati.jp/apple/mac-tips-techniques/windows-hints/how-to-turn-on-ms-ime-in-macos-boot-camp.html
これをやると、windowsでもmacと同じように「英数」「かな」キーで、「半角英数」「ひらがな」を切り替えられるようになります


以上

以上で、macwindowsがほぼ同じ感じで操作できるようになります。
今どっちだっけ?とかなやまずシームレスにキーボード操作できるのでwindows使いがmac触るときにはオススメです。