5月
24
2009
0

Kindle for iPhone

Kindle1.png

産経新聞のアプリで新聞を読んだり,Papersで論文を読んだりと,iPhoneでスマートにドキュメントを読むことができるようになってきた今日この頃

特に書籍類は重たくて,雑誌とか文庫とかもiPhoneで読めると非常にウレシイ
さらに電子BOOKならではの検索機能とかブックマーク機能とかがあると最高

ご存じ微妙な存在感のAmazon Kindle
iPhone版が出たし,洋書を読むことも多いので試しに使ってみました

ちなみにiPhone版のKindleは無料ですがDLするにはiTunes Store USのアカウントが必要です
自分はNYにいた時に作ったアカウントで購入しました

Amazon USで書籍を買うと自動的にKindleアプリにDLされます
残念なことに日本のクレジットカードでは雑誌が購入できない模様

とりあえず無料のKindle BookをGET
“Harry Potter and the Chamber of Secrets” ならぬ “Harry Putter and the Chamber of Cheesecakes” です

もうちょっと高機能になるとうれしいけど,まずは日本でも販売開始して欲しい

Kindle2.PNG Kindle3.PNG

Written by h2 in: ガジェット | タグ:
1月
04
2009
0

iPhone/iPod Touchで802.1Xを使ったネットワークに接続

iPod Touchはもちろん3Gが使えるiPhoneであってもWiFiで接続したい場合は多いと思います
ところが最近の企業や大学は802.1Xを導入していて,ちょっと面倒な設定がいることも少なくありません
WWDCで「802.1Xをサポートするぜ!!」みたいなことを言ってた気がするし,部屋を一歩出ると802.1X認証が必要なので設定してみることにしました

実は以前から何度もやろうやろうと思って放置していたんです・・・がっ!!
最近またLast.fmにハマりだしたので,部屋から出ても聞き続けられるようにやってみました

いきなり面倒ですが,802.1Xの設定は本体で直接行うことはできず,専用の設定ツールでプロファイルを作成して本体に転送する必要があります

設定ツールはiPhoneのエンタープライズサポートサイトからダウンロードできます
インストールが完了すると,「アプリケーション」の「ユーティリティ」の中に「iPhone 構成ユーティリティ」というアプリがあるハズです

VPNなどの設定も行えるようですが,今回関係するのはWi-Fiタブの項目です
ちらっと見た限りでは,iPhone/iPod TouchはLeopardと同等のサプリカント機能を備えているようです

802.1X_1

SSIDやEAPの種類,その他の認証情報などを入力したら,メニューの「ファイル」から「書き出す」を選んでプロファイルを書き出します

プロファイルの転送方法はいくつか考えられますが,今回はメールに添付して送りました(一番カンタンなので)

iPhoneやiPod Touchで送信したメールを表示して,添付したプロファイルをタッチします

802.1X_2

あとは「プロファイル」という画面が表示されるので,「インストール」をタッチするだけです

802.1X_3

Written by h2 in: ガジェット | タグ:
1月
01
2009
0

iPod Touch 2.2 (5G77) も嘘つき?

あけましておめでとうございます!!

こんなテキトーなメモにも関わらず毎日チェックしてくれている人がいらっしゃるようで,ありがとうございます
メモしておきたいネタはいろいろあるんですが書く時間がなかなか取れないのが悩みです・・・
今年は更新頻度を上げられるよう努力します

実家のネットワークにiPod Touchをつなごうとしたんですが,新年一発目から見事にだまされました

以前iPod Touch 2.0 (5A347) は嘘つきという記事を書きましたが 2.2 (5G77) も嘘つきのようです

2.0 (5A347) では設定メニューとifconfigで表示されるMACアドレスが違うという話でしたが,2.1 (5F137) で修正されていました
ところが・・・なぜか2.2 (5G77) で再発しています

ボカシをいれてますが,偽のアドレスは前回と同じものです

最近はWEPやWPA-PSK(WPA2-PSKも同様)がスグに解析されてしまうので,パーソナルユースではMACアドレスフィルタリングなどを併用するのが必須ですが,JailBreakしないと正しいMACアドレスが分からないのは問題ですね

Written by h2 in: ガジェット | タグ:
12月
20
2008
0

不明なエラーが発生しました(1600)

PwnageToolで作成したカスタムイメージを使って復元しようとすると,時々発生する「不明なエラー1600」

自分もiPhone OS 2.1, 2.2の両方で発生

~/Library/iTunes/Device Support内のファイルを削除すればよいという情報もあるが,自分の場合それではうまくいかなかった

PwnageToolの指示を無視してDFUモードではなく,普通のリカバリモードで復元するとうまくいった

他の環境でもうまくいくのかは不明

情報求ム

Written by h2 in: ガジェット | タグ:
11月
12
2008
2

iPhone/iPod Touch Serial Communication How-To

iPhone and iPod Touch has an UART interface for serial communication, and the device file of serial port on iPhone/iPod Touch is /dev/tty.iap.
Since iPhone OS is based on Mac OS X, 4.4 BSD extensions are available.
You should note that index numbers of c_cc array declared in termios.h doesn’t much termios(4) explanations in 4th Berkeley Distribution man page on Leopard.

Collin Meyer wrote a good tutorial “iPhone/iPod Touch Serial Port Tutorial” about non-canonical serial communication on iPhone. 
His code is almost all right, but I can’t agree in some points:

Accessing via UART interface may damage your iPhone/iPod Touch, so try at your own risk.

Basic termios settings for non-canonical mode may be as follows:

cfmakeraw(struct termios*);
c_iflag = 0;
c_oflag = 0;
c_cflag |= (CREAD|HUPCL);
c_cflag &= ~CSTOPB;
c_cc[VMIN] = ???>1; (cf. http://www.sbin.org/doc/unix-faq/programmer/faq_4.html#SEC60)
c_cc[VTIME] = ???;
cfsetspeed(struct terios*, speed_t);

The following is a simple chat program with non-canonical mode communication.

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

int main (int argc, const char * argv[]) {
  struct termios org_termios_s;
  struct termios my_termios_s;
  struct termios org_termios_c;
  struct termios my_termios_c;
  int fd = -1;
  char buf_r[128], buf_s[128];
  int i, j;

  // Open serial port
  if((fd = open("/dev/tty.iap", O_RDWR | O_NOCTTY | O_NONBLOCK)) == -1) {
    perror("open");
    exit(EXIT_FAILURE);
  }
  if(ioctl(fd, TIOCEXCL) == -1) {
    perror("TIOCEXCL");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(fcntl(fd, F_SETFL, 0) == -1) {
    perror("clear O_NONBLOCK");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Get original termios
  if(tcgetattr(fd, &org_termios_s) == -1) {
    perror("get serial original termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  if(tcgetattr(fileno(stdin), &org_termios_c) == -1) {
    perror("get console original termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Make my termios
  my_termios_s = org_termios_s;
  cfmakeraw(&my_termios_s);
  my_termios_s.c_iflag = 0;
  my_termios_s.c_oflag = 0;
  my_termios_s.c_cflag |= (CREAD|HUPCL);
  my_termios_s.c_cflag &= ~CSTOPB;
  my_termios_s.c_cc[VMIN] = 0; //can't detect modem hungups (cf. http://www.sbin.org/doc/unix-faq/programmer/faq_4.html#SEC60)
  my_termios_s.c_cc[VTIME] = 0;
  cfsetspeed(&my_termios_s, B19200);

  my_termios_c = org_termios_c;
  cfmakeraw(&my_termios_c);
  my_termios_c.c_iflag = 0;
  my_termios_c.c_oflag = 0;
  my_termios_c.c_cflag |= (CREAD|HUPCL);
  my_termios_c.c_cflag &= ~CSTOPB;
  my_termios_c.c_cc[VMIN] = 0;
  my_termios_c.c_cc[VTIME] = 0;

  // Change terminal settings
  if(tcsetattr(fd, TCSANOW, &my_termios_s) == -1) {
    perror("set my serial termios");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(tcsetattr(fileno(stdin), TCSANOW, &my_termios_c) == -1) {
    perror("set my console termios");
    close(fd);
    exit(EXIT_FAILURE);
  }

  // Main loop
  while(1) {
    j=read(fd, buf_r, 128);
    if(j > 0) {
      for(i=0; i<j; i++) {
        write(fileno(stdout), &buf_r[i], 1); //unrecommended use of write
      }
    }
    j=read(fileno(stdin), buf_s, 128);
    if (j > 0) {
      if(buf_s[0] == 'Q') {
        break;
      }
      for(i=0; i<j; i++) {
        write(fd, &buf_s[i], 1); //unrecommended use of write
      }
    }
  }

  // Revert orginal terminal settings
  if(tcsetattr(fd, TCSANOW, &org_termios_s) == -1) {
    perror("revert serial terminal settings");
    close(fd);
    exit(EXIT_FAILURE);
  }
  if(tcsetattr(fileno(stdin), TCSANOW, &org_termios_c) == -1) {
    perror("revert console terminal settings");
    close(fd);
    exit(EXIT_FAILURE);
  }

  printf("n"); // just cleanup
  close(fd);
  return 0;
}

Enjoy!

Written by h2 in: ガジェット | タグ:
11月
10
2008
0

Android Emulatorのスキン

Android SDKのEmulatorはスキンを変更することができる

デフォルトのスキンは
SDKのトップディレクトリ/tools/lib/images/skins
にあるのでこの中に入れるのもアリだが,-skindirオプションでフォルダを指定することもできるみたい 
スキンの指定は-skinオプションで行う

ちょっと探しただけで,T-Mobile G1, iPhone, Armadillo-500 FX用のスキンが見つかったので,試してみた

まずSDKオリジナル(左から順に,HVGA-P, HVGA-L, QVGA-P, QVGA-L)

androidskin_sdk-hvga-p androidskin_sdk-hvga-l androidskin_sdk-qvga-p androidskin_sdk-qvga-l

T-Mobile G1

androidskin_g1

iPhone(左から順に,HVGA-P, HVGA-L #他にQVGAもあり)

androidskin_iphone-p androidskin_iphone-l

Armadillo-500 FX

androidskin_a500fx

ちなみに,Ctrl+F12を押すとビューを回転させることができる

Written by h2 in: ガジェット | タグ:
11月
09
2008
0

Android 1.0 SDK

android

iPhone SDKの制約(ドックコネクタを使ったアプリはダメ,iTunesフォルダへのアクセス不可などなど)と基準のわからないアプリの選別,NDA縛りにうんざりしてきた今日この頃,最近ソースが公開されたり,搭載ケータイが発売されたりと話題の多いAndroidに浮気してみてた

実は,既に実機(SL-C1000)で動かしてみた後で,順番が逆な気もするがエミュレータを使った開発環境を整えてみる
はじめてAndroid SDKが公開されたときにちょっと試しに使ってみたが,それ以来触ってない
今年9月には1.0がリリースされて,いよいよAPIの仕様も固まって安定してきた模様

セットアップは超簡単(セットアップというのもおこがましい)
自分はMacでやったけど,LinuxやWindowsでもほとんど同じ(Mac以外だとJavaやPython,Antのインストールがいるかもしれない)

  1. 公式サイトからSDKをダウンロードしてくる
  2. ZIPファイルを展開(どこでもいいけど自分は /Applications にした)
  3. 複数バージョンの管理が簡単なようにシンボリックリンクを作成(別にやらなくてもOK)
  4. $ cd /Applications
    # ln -s android-sdk-mac_x86-1.0_r1 android-sdk

  5. PATHを通す(.bash_profile に追加)
  6. export PATH=/Applications/android-sdk/tools:$PATH

これだけ

Android SDKはiPhone SDKと違って,情報には事欠かない
iPhone SDKの完成度の高さ(特にInterface Builder)はさすがだと思うが,Objective-Cというマイナー言語(個人的には非常に好きだが・・・)を使っている以上,もっとオープンにして,好きなアプリを作れるようにせんとデベロッパーは離れていく
Android搭載機種が増えれば立場は逆転するような気がするのはオレだけなのか?

Written by h2 in: ガジェット | タグ:
10月
29
2008
1

iPod Touch 2.0 (5A347) は嘘つき

パケットキャプチャしてて気づきました

なんと,設定メニューとifconfigで表示されるMACアドレスが違う!!

なんでパケットが拾えんのか大分悩んだのに・・・

証拠画像はこの通り

 

NICのメーカーまで違うw 
ちなみに正しいのはifconfigの表示

これは製造メーカーを隠すための偽装なのかバグなのか・・・
2.1 (5F137) では同じアドレスが表示されてます

Written by h2 in: ガジェット | タグ:
10月
10
2008
0

libid3tag on iPhone / iPod Touch

iPod Touch実機上でlibid3tagをビルドしていて,見事にハマりました

ビルド自体はちょっと細工して何とか終了して,/usr/lib 以下に配置!!

サンプルプログラムを書いてみたところ,Abort trapで落ちてしまう

場所は,frame.c line 173

でも・・・

mp3ファイル変えたら普通に動いた(^_^)v

原因はちゃんと調べてないので推測やけど,たまたまタグがおかしいファイルを使ってたみたい

libid3tagの使い方は,このページを参考にしました

後から気づいたんやけど,Cydiaにバイナリがありました (>_<)

Cydiaってあまり開発系のパッケージがないので期待してなかったんやけど,チェックしとけばよかった

Written by h2 in: ガジェット | タグ:
10月
05
2008
0

termios構造体メンバc_cc配列の要素番号が違う

iPhone/iPod Touch用のプログラムを書いていてハマったこと

タイトルのまんまやけど,termios構造体メンバc_cc配列の要素番号が,termios(4) と termios.h で一致しなくてハマった・・・

マクロを使えば意識せずにすむんやろうけど,ダンプしてると変更が反映されてなくて悩んだ

manのtermiosページは「4th Berkeley Distribution  April 19, 1994」となってて古いのは分かるけど,せめてセクション4はちゃんと更新してほしい→Apple

Written by h2 in: ガジェット | タグ: , ,

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co