2011年12月6日火曜日

USB Vender ID

USBのベンダーIDの取得方法

MAC

$ system_profiler SPUSBDataType
USB:

    USB High-Speed Bus:

      Host Controller Location: Built-in USB
      Host Controller Driver: AppleUSBEHCI
      PCI Device ID: 0x3b3c 
      PCI Revision ID: 0x0006 
      PCI Vendor ID: 0x8086 
      Bus Number: 0xfa 

        Hub:

          Product ID: 0x2514
          Vendor ID: 0x0424  (SMSC)
                       ^^^^ <- vender id

Linux

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
                       ^^^^ <- vender id

実行結果

参考

lsusb on OS X

2011年11月28日月曜日

ARC をソースで!?

前置き

iOSというかllvmでコンパイルするときのARCをソースで管理するときの話です。 この方法はMacでしかできないと思います。

結論

追記1(後で別に書くかも・・・)

[Target] -> [Build Phase] -> [Compile Sources] にてコンパイラフラグを個別に指定してできる。(参考元)

追記2 個人的には混在は嫌いなので、共有ものはライブラリにする方向でその中はARCのON/OFFに依存して統一して書いたのがよいと思う。

ソースで管理するなら、ライブラリを作成してそれを使用するのがいいと思いました。

判断方法

この方法が正攻法かは不明... orz
#if __has_feature(objc_arc)

一応ARCの設定方法

XCode 4.2 の SingleViewApp のとき対応方法

ARC の ON/OFF 対応ようヘッダーファイルを ARCHandle.h を作成

#if __has_feature(objc_arc)
#define AUTORELEASE(A) A
#define ARC_ON
#else
#define AUTORELEASE(A) [A autorelease]
#define ARC_OFF
#endif

AppDelegate.m を変更


// ARC ON の時は基本的に dealloc 書かないので丸ごと削除
#ifdef ARC_OFF
- (void)dealloc
{
    [_window release];
    [_viewController release];
    [super dealloc];
}
#endif


//
// マクロで autorelease を隠蔽したりしなかったり
//
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  self.window = AUTORELEASE([[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] );
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
   self.viewController = AUTORELEASE([[GVViewController alloc] initWithNibName:@"GVViewController_iPhone" bundle:nil]);
    } else {
   self.viewController = AUTORELEASE([[GVViewController alloc] initWithNibName:@"GVViewController_iPad" bundle:nil]);
    }
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController.m を変更

UILabel に ARC ON/OFFでラベルの内容をかえてます


#if __has_feature(objc_arc)
#define HELLO  @"Hello ARC"
#else
#define HELLO  @"Hello ..."
#endif

ARC ON
ARC OFF

2011年10月26日水曜日

diff android ios (順番はアルファベット順)

現段階での雑感

やっぱりMacはオサレ路線で見せプレイ系で使用して、開発はUbuntu(Linux)がよい

My レベル


android1.6 〜 (2.x系 未開発)〜 3.2 位 開発してみたことあり
iOSiOS 5 sdk 〜 最近やってる

比較


比較してみた表
OSの順序はアルファベット順
項目AndroidiOSWinner備考
Setupsdk解答、環境変数設定 …AppStoreからインストール終了引き分け

iOSはデバイスに開発アプリをインストール辺りで、証明書周りでハマるので惜しいところで引き分け

SDKandroid update だったようなコマンドでおkAppStoreでxcodeを Updateでおk引き分け

iOSはもうちょっとラップしたクラスを提供した方がいいと思う。CoreData周りでそう思った。ContentProviderはどうよって言われると、まぁまぁまぁって感じだけど...

iOSはアップデートの所でappleIDを聞かれるが同じIDでなくてもいけるのわからん

IDEEclipse?xcodeAndroid

基本的にemacs なのでどっちでもいいけど、xcode4系は駄目な気がする

Source & ResourcesJava , XMLObjective-C . XML?Android

xcodeがいろいろ隠蔽しすぎて嫌になります。nibファイルは自分で書くレベルじゃない?

APIまぁJavadocHeaderDoc?Android

もうしけないけど...AppleのClass Referenceは肌に合わない...

OSWin,Ubuntu(linux?), MacMacAndroid

Macって開発しにくくないですか?やっぱUbuntuかな

アプリ.apk.appiOS

作り手次第だけど、同じレベルならiOSじゃね?

2011年10月18日火曜日

環境整備 Ubuntu 11.10, Mac for HHKB

Ubuntu 11.4 から11.10 にアップグレードをした。

gcc は 4.6 になっていた。

Mac でHHKB のドライバをインストールしたが

環境設定にアイコンが出てこない。

のが正解なのだろうか?

2011年10月12日水曜日

Objective-C on Ubuntu 寄り

ここら辺は役に立つ模様の話

Objctive-c
http://developer.apple.com/jp/documentation/cocoa/Conceptual/ObjectiveC/index.html
HeaderDoc
http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html
GuideLine
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html
Style Guide
http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml

コンパイル周りの話

ubuntu では
gcc -lobjc -lgnustep-base -fconstant-string-class=NSConstantString \
      -I /usr/include/GNUstep -o xxxx ...
って感じなのだが mac では
gcc -framework Foundation -o xxxxx ...
となる

Ubuntuではまったところの話

@property を使用するためには、gcc 4.6 以降が必要らしい。(まだ未確認)
apt-get では取得できないので、ソースからビルドになります。
必要になるライブラリ(おそらく configure のオプションで OFFにしておけば必要ない。Offにできるかは未確認)
sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev
ビルド
gcc-4.6.1/   ソースディレクトリ
build-gcc/   ビルドディレクトリ
ビルドディレクトリにて
../gcc-4.6.1/configure --prefix=your_specified_path \
                               --exec-prefix=your_specified_path
make -j 3
make install

2011年9月16日金曜日

こんにちは android NDK

NDKを入れみました。
  1. 最初にすることは README.TXT を読む
  2. hello-jni を作成してインストール実行
をしてみました。

README.TXT 斜め読み


  • docs/CHANGES.html
    前のバージョンからの変更のリストありまっせ
  • docs/OVERVIEW.html
    機能とか制限とか重要な話らしい
  • docs/STABLE-APIS.html
    変更しないAPIだぉ
  • docs/INSTALL.html
    インストールの環境周り♪
  • docs/HOWTO.html
    便利なTipsです
  • docs/SYSTEM-ISSUES.html
    問題がない世界はないです。(意訳)
${ndk_home}/documentation.html も読むとイイカモ

hello-jni

下のコマンドを実行しました。

2011年9月13日火曜日

JOptionPane でパスワード入力

久しぶりに、swingのコードを書きました。

JOptionPaneでパスワードを入力するダイアログを出力するときのコードは、こんな感じでした。

String showPasswordDialog(Component parentComponent, String message) {
 JPasswordField pass = new JPasswordField();
 Object[] opts = new Object[]{message , pass};
 int opt = JOptionPane.showConfirmDialog(
   // 親Frame , 表示するObject, タイトル , ダイアログのオプション ← 文言はほぼAPI1.6からコピペ
   parentComponent, opts, null, JOptionPane.OK_CANCEL_OPTION);
 if (opt == JOptionPane.OK_OPTION) {
  return new String(pass.getPassword());
 }
 return null;
}

参考URL(パクリ)
Java Password Dialog

2011年9月9日金曜日

Huaweiのandroid端末の解像度

Huawei MediaPad { android:3.2 } に限らないと思います。
メモレベルの内容です。

MediaPadでは解像度をNormalとHighの2つが選べます。

使用されるdrawableとvaluesの対応は下の表になります。

ResolutionDPIDrawable,Values
Normal 213 hdpi
High 160 mdpi

High は hdpi, Normal は mdpi と思い込んでしまいますがち?

だったので注意が必要でした。

android developer page

Huaweiのandroid端末のusbデバック

Huawei MediaPad { Android:3.2 } は

ルートで権限で実行しないと認識できませんでした。


x adb start-server


o sudo adb start-server



原因は後で調べたいと思います。(T..T)