ipad(2)

5月だと言うのに、寒い。おまけに強い風も吹いている。近くの山は真っ白になったぞ。 北の方から、将軍様が攻めてきたから?

ipadに気象天気図なんていうAppを入れたんだけど、残念ながら提供されてる情報をうまく 読み取れない。読み取れないってのは、おいらの知識不足が災いしてるんだけどね。そこで、 『天気図がわかる』(技術評論社)なんて本を読んでみた。

技評って言うと、IT関係の出版社ってイメージが有ったんだけど、こういう本も出しているのね。 ちっとも知らなかったよ。

普通、天気図と言うと、地表の天気図を指すらしいけど、仕事で使う天気図って事で、数値 予報やら、高層天気図が活躍してるらしい。

特に、高層天気図で、850hPaは、日本付近では1500mぐらいの高度の天気図となり、地表や 海面の摩擦や熱の影響がなくなった天気図らしい。

550hPaは、5700mぐらいの高度の天気図。低気圧や高気圧の移動を予測するのに都合が良いそうな。 300hPaは、およそ9600mぐらいの所の天気図。対流圏の上層の流れを知るのに都合がよく、 航空会社必携らしい。なんたって、ジェット気流が流れているから、東西に飛ぶ飛行機は、 このデータを旨く活用して、燃費向上に役立てるとか。なかなか面白い世界だ事。

官庁で一番最初にコンピュータを導入したのは、気象庁。数値予報を 推進する為。でも、なかなかあたらない。なんたって、北京で蝶が羽ばたけばワシントンの 天気が変わるというぐらいのむずかしさ。初期値がちょっと変わるだけで、結果が大幅に 変わってしまう。その初期値さえも、観測点が不十分なため、抜けているエリアは推測 せざるを得ない。

そんな訳で、予想も幅を持たせる事にした。複数の初期値で未来を予測(占い)し、その結果を 株式でよく使われるようなローソクチャートにするって方法。この予想方法をアンサンブル 予報と言うそうな。数値予報モデルの種類って 事で、コンピュータのぶん回し状況が載ってた。

その他、全球モデルとか、 紫外線情報分布図とか、いろいろ載ってて、飽きないぞ。

あっ、予想天気図の解説の 解説なんていう、親切なページもあるのね。天気図記号も国内式と国際式が有るんか。 気象予報士になるには、こういうの知ってないとだめなのね。 へっぽこ気象予報士が語る気象学は、 現役の気象予報士さん。予報士と言えば、 おはよう日本に出て来る、渡辺蘭 ちゃんの経歴が素敵すぎるぞ。

サファリはなかなかいいぞ

ipadで初めてサファリに触りました。フラッシュやJAVAが無い世界もいいもんだ。Webとか見てる時、 字が小さいと思ったら、トントンと叩くだけで、見たい(と思う)所だけ上手に拡大して くれる。

これなら、Cのソースとかも快適に見られるに違いない。Cをhtmlに変換してサファリで 見るってのも有りかな。早速やってみよう。C語をhtml語に変換するには、手っ取り早く、 globalでいいな。出来たhtmlファイルは、Webサーバーに置かないとならんな。まさか、ipadの 中へは持ち込めそうもないから。。何たって、監獄ですからねぇ。

古いNotePCにサーバを立てよう。おいらが勝手知ったるWebサーバーは、apache 1.3までよ。 それ以降のやつは触った事もない。で、今更、1.3系なんて手に入るんか? 本家に行って みたけど、もうリンクも切れている。リンク先を想像しようにも、cgiが一枚噛んでいて、いく手を 阻んでいるよ。さあ、どうする? ひょっとして、FreeBSDのportsから入れられるかも?

行ってみたら、もうパッチが提供されていないので、ディコンになりましたですってさ。 ご丁寧な事に、pkg-deinstallなんて言うスクリプトまで用意されてた。

でも、Makefileをちょいと騙してあげたら、apache_1.3.42.tar.gzを取り出せたよ。 サーバー立てるのは簡単。3分もあれば動きだした。昔のやつは軽くていいねぇ。DAVだとか 余計な物、一切ない時代だったもの。

試しにローカルから接続してみたら、アクセス出来ない。はて、psで調べると、ちゃんとhttpdは 5つ立ち上がってるのに。こういう時は、httpd.confを見るに限る。

そしたら、おいらの嫌いな、8080 (port)で待機してたよ。で、ここにアクセスしたら、期待に沿わず、見れちゃったね って、挨拶があったぞ。ああーー、懐かしい。構築の流れは

cd little-st
gtags
htags -sanohITvt 'Welcome to little-st tour'
cd ..
mv HTML lst
tar cf - lst | (cd /usr/local/apache/htdocs; tar xf -)
w3m http://localhost/lst/

apacheは標準でインストールし、既に起動してるものとします。little-stの中にあるCのソースを htmlに変換。lstって名前で、Webからアクセス出来るように配置してみました。

これで、サファリからも無事にアクセス出来たよ。自前のサーバーってのも良いもんだな。 日経Linuxが、たまに特集を組む訳だ。

暫くこのにわかソースサーバーを見てたら、ちょいと不満が。。。 リンクが多すぎて、ちょっと 触っただけで、あらぬ所へ案内されちゃう。そうならないようにするには、拡大すればいいんだけど、 そうすると、全体を俯瞰するのが難しくなる。ふと思ったね。入力デバイスとして指を使う より、ツンツン棒みたいな物が欲しいと。女房も同じ悩みを抱えてた。 ちょっと触っただけで、とんでもない物が見えちゃう。おまけに元に戻れない場合も有るってね。

人類は、進化しないといけません。昔は食物を手づかみで食べていた。(この伝統をかたくなに 、守っている人達もいるけど)しかし、時代を下るにつれ、アジア圏では箸を使うようになった。 ヨーロッパ圏では、ナイフとフォーク、スプーンという道具が使われるようになった。

ipadを使う人も、指から棒に進化したっていいわけだ。専用のツンツン棒って売ってるのかな? ああ、調べてみたら、ツンツン棒じゃなくてスタイラスペンって言うみたいだ。 iPhone/iPad向けスタイラスペンまとめ とか 入力を効率化!スマホで使えるスタイラスペン&キーボード比較まとめ が紹介されてた。人類の進化は、独立発生的に起きるのね。100円ショップでも売ってるみたいだから、 割り箸を買うのりで買ってこよう。

iチェーンが出したゴミを拾ってみた (App編)

iチェーンでナップザック問題を解決すべく、いろいろなアプリの価格と(その予想)効果を 調べている。おいらが探すようなあれは、なかなか口コミ評判が書いてなくて、いきおい どんぶり予想になっちゃいます。

いろいろ見てくと、どうも最低価格は85円みたい。次は170円とか。これって、円高な頃の 1ドルを円貨にしただけじゃん。円安の昨今、最低価格は100円とかになるんだろうか? 外国産のアプリだと、4.99$ とか表示してあったり、期間限定バーゲンセールが有ったり して、思わず、アプルーチラシが欲しくなるぞ。

とある時、ipadに突っ込んであるアプリがアップデートされたよって、連絡が入ってきた。 迷わず、Windows上のiチェーンからアップデート。こうしておけば、いずれipad上にも同期 されるだろう。

で、古くなったアプリが、Windowsのごみ箱に棄てられていたよ。クックパッド-xx,xx,ipaとかの 名前が付いていた。(xxは、バージョン番号)

これを目ざとく見つけたOpenBSD人は、自分の住処にお持ち帰り。持ち帰る時は、和名を改めて 洋名にするのが、先祖代々からのしきたりだ。

持ち帰った、cookpad.ipaを解体してみっか。旨くすると脱獄の手がかりになるかもな。 まずは、正体を明かしてもらおう。

$ file cookpad.ipa
cookpad.ipa: Zip archive data, at least v1.0 to extract

ばらしてまえ。

$ file *
Payload:              directory
cookpad.ipa:          Zip archive data, at least v1.0 to extract
iTunesArtwork:        JPEG image data, JFIF standard 1.01
iTunesMetadata.plist: Apple binary property list

ふーん、アートワークってのが、ipadのデスクトップに飾られるアイコンかな。アプルバイナリーのバラ仕方は知らないので 、荷物室の中を拝見。Tsukuru.appなんてdirが鎮座。(料理を)作るとは、ストレートな名前だな。 とにかく、その中へ入ってみると、脂肪の代わりに、pngファイルがいっぱい詰まってた。 それを取り除いて、骨格を見ると

-rw-r--r--  1 sakae  sakae      117 Feb  8 18:18 Entitlements.plist
-rw-r--r--  1 sakae  sakae     1446 Feb  8 18:17 Info.plist
-rw-r--r--  1 sakae  sakae        8 Feb  8 18:17 PkgInfo
-rw-r--r--  1 sakae  sakae      485 Feb  8 18:17 ResourceRules.plist
drwxr-xr-x  2 sakae  sakae      512 May  2 10:58 SC_Info
drwxr-xr-x  2 sakae  sakae      512 Feb  8 18:18 Settings.bundle
-rwxr-xr-x  1 sakae  sakae  4261136 Feb 14 19:56 Tsukuru
drwxr-xr-x  2 sakae  sakae      512 Feb  8 18:18 _CodeSignature
-rw-r--r--  1 sakae  sakae     5120 Feb  8 18:18 cookpad.db
-rw-r--r--  1 sakae  sakae     3524 Feb  8 18:18 dummy_receipt
drwxr-xr-x  2 sakae  sakae      512 Feb  8 18:18 en.lproj
drwxr-xr-x  2 sakae  sakae    14848 Feb  8 18:18 images
drwxr-xr-x  2 sakae  sakae      512 Feb  8 18:18 ja.lproj
-rw-r--r--  1 sakae  sakae      214 Feb  8 18:18 mail_template.txt

実行属性はTsukuruだけに付いてるな。これが実行用の本体か。iOSのフォーマットは さすがにunixでは認識しない。fileコマンドで聞いてみると、ただのデータだってさ。 (FreeBSDのfileさんに聞いてみると、Mach-O fat file with 2 architectures) さあ、どうする? こういう時は、stringsの出番。何か出てくるだろう。

$ strings -10 Tsukuru
 :
/usr/lib/dyld
/System/Library/Frameworks/Foundation.framework/Foundation
/System/Library/Frameworks/UIKit.framework/UIKit
/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics
/System/Library/Frameworks/QuartzCore.framework/QuartzCore
/System/Library/Frameworks/Security.framework/Security
/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices
/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration
/System/Library/Frameworks/CFNetwork.framework/CFNetwork
/System/Library/Frameworks/StoreKit.framework/StoreKit
/System/Library/Frameworks/MessageUI.framework/MessageUI
/usr/lib/libsqlite3.dylib
/usr/lib/libz.1.dylib
/usr/lib/libobjc.A.dylib
/usr/lib/libSystem.B.dylib
/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
 :

この他にも、面白い文字列が垣間見られたけど、独居房で謹慎を喰らいそうなので自粛。 でも、手の届かない所が想像出来るよ。

もう一つ、おもしろそうなのに、cookpad.dbなんてのがあるんで、sqlite3の復習をしてみっか。

$ sqlite3 cookpad.db
SQLite version 3.7.13 OpenBSD
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
history  keep
sqlite> .schema
CREATE TABLE "history" (id INTEGER PRIMARY KEY AUTOINCREMENT, word VARCHAR);
CREATE TABLE keep (id INTEGER PRIMARY KEY AUTOINCREMENT, recipe_id INTEGER, title VARCHAR, ingredient VARCHAR, author VARCHAR, thumbnail VARCHAR, main_url VARCHAR, author_url VARCHAR, description VARCHAR);
sqlite> select * from history;
sqlite> select * from keep;

当たり前だけど、中身はからでした。

iチェーンが出したゴミを拾ってみた (epub編)

もう一つ、ごみが出てた。人間失格の書籍。例によって、abc.epubとかにして持ってきて、 fileってやったら、OpenBSDではタダのデータですってさ。まあ、zipだろうってんで、展開 したら、

$ ls -F
META-INF/                  abc.epub                   iTunesMetadata.plist
OEBPS/                     iTunesArtwork              mimetype

んでもって、mimetypeなんていう証明書がついてたんで確認。application/epub+zip だってさ。

iTunesMetadata.plistを開いてみると、アプルIDやら

        <key>artistId</key>
        <integer>173331980</integer>
        <key>artistName</key>
        <string>太宰治</string>
        <key>book-info</key>
        <dict>
                <key>languages</key>
                <array>
                        <string>ja</string>
                </array>

こんなデータがずらずらと並んでましたよ。で、肝心の本文は、

$ ls -F OEBPS/
Part001.xhtml   Part004.xhtml   Part007.xhtml   titlepage.xhtml
Part002.xhtml   Part005.xhtml   content.opf     toc.xhtml
Part003.xhtml   Part006.xhtml   css/

になってて、xhtmlって、htmlの改変版? 確認してみると

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns:epub="http://www.idpf.org/2007/ops" xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>人間失格</title>
<link rel="stylesheet" type="text/css" href="css/japanese.css" />
<meta charset="utf-8" />
</head>
<body class="vertical">
<div class="chapter">
<h1 id="prt1">はしがき</h1>

<p>私は、その男の写真を三葉、見たことがある。</p>

ボディのクラスが縦になってて、日本のどなたかが、横文字しか知らない連中に楯ついて、 縦を認めさせてくれたって事が分かる。tagには、確かrubyなんてのも有ったはず。rubyの コードを表示するってんじゃなくて、ルビですよってんだな。これ、最近知能低下が著しい 、大学生と、某電波芸者(ちゃらちゃらした、女性アナウンサー)向けの機能です。

嗚呼、ipadを手に入れてしまったばっかりに、収監されて、こんな事やってるおいらは、 人間失格だな。失格具合は、まだまだ続くぞ。

ischeme

んでもって、今度はipadでschemeしたいなんて不埒な考えが、頭を過ぎりました。

schemeで思い出すのは、ipad用のgambit。でも、これ有料なんで、今日は見送り。お店で 探してみたら、教育のカテゴリーでischemeなんて言う無料版が見つかった。

schemeで教育? ふと、疑問がよぎりましたが、アプリを実行してみて納得。何とSICPを 勉強してくためのツールだったのです。あらかじめSICPからのコードが入力されたタブ(ファイル)?が 用意されてて、それを引っ張りだして、即実行可能でした。

残念ながら用意されてるのは1章から3章までの主だったもの。どうせなら全章に渡って 用意しておいてくれれば良いのに。ああ、後ろの章になると、前の節で解説されたものが そのまま使われていたりするんで、実行単位として用意するのは大変か。

実習用にほぼ白紙のものも用意されてて、そこへ自分でコードを継ぎ足して、実行する 事も出来るようになってました。ほぼ白紙って書いたけど、

(begin

  ;; some code here, ex (display "Hello world")

)

なんで (begin ... ) で、囲んであるのでしょうかね? 隠れているreplはS式を一回だけ しか評価出来ない仕様だから? このbigenを取り除いて、どういう挙動を示すか、調べて みれ。いきなり省くのが怖かったら、letで代用してみるとかでもいいのか。

schemeってどんなもの? って、興味を持ったi電話しか持ってない(近頃の若者は、パソコン なんて面倒なものを持たないらしい)人は、試してみる価値有りよ。

jsany

iPadで何か作りたい。これ、ipadを手に した誰もが思う事(はは、一般の人と距離があるな) ってな事で見つけたのが、JavaScript Anywhere ってやつ。

JAVAじゃなくて、JavaScriptってのが、今風。 何たって世界で一番使われてるし、勿論サファリに入ってますからねぇ。ユーザー インターフェースも、サファリに任せてしまえば(作者さんも)楽出来そう。そんな訳で、 おいらも入れてみた。

メール機能が有ったんで、コードを輸出してみた。まずは、見栄えデータ。

@charset "UTF-8";

#test {
  color: blue;
}

次は、スクリプトを配布する土台。

<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width" />
  <title>mytest</title>
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <h1>mytest</h1>
  <div id="test"></div>

  <script src="script.js"></script>
</head>
</body>
</html>

そして、練習台が、こちら。おいらにとっちゃ、まだ意味不。

window.addEventListener('load', function(e) {
  document.querySelector('#test').innerHTML = 'Hello JS';
}, false);

ほりえもんは、収監されてた時に、刑務所Now なんて本を出していたようだけど、原稿の 搬出とかは、どうしたんですかね? 面会者が入れ替わり立ち代り彼に会って、口述筆記 でもしたんでしょうか? それとも、検閲者特権とかで、日本で一番早く彼の原稿を読めた んでしょうか? わざわざこの本を読む気もないけど、そこら辺の説明が書いてあったら、 こっそりと真実を教えてくださいな。

vim for ipad

連載記事 「いまさら聞けないVim」に iOSで使えるVimが登場なんて記事がある事を思い出した。まさかおいらがアプル監獄へ収監される なんて、思いもしなかったよ。収監記念に入れてみた。

けど、字がちっちぇー。年寄りいじめの最たるものですよ。でも年寄りは多少は知恵が有るんで カスタマイズすれば、何とかなるんじゃなかろうか。フォントサイズ変更とかでぐぐりましたよ。 そしたら、

:set guifont=Courier:h24

とかすればいいよって、外国の方が吼えていた。早速、.vimrcに設定してあげたよ。おいらの 場合は、そこまで目の老化は進んでいなかったので、h16で手を打った。この番号が簡易視力検査値に なりそうだな。

上記を教えてくれた方は、他にも面白い事を書いていたんでTipsを分けてもらった。 曰く、vim房の中での整理のしかた

:e hoge.vim
:call mkdir( .vim/colors/ )
:w .vm/colors/hoge.vim

カラースキーマを書き、それ用の整理場所を用意し、所定の場所に配置(書き込み)する。 ここに出てきた mkdir の他に便利な関数が有るんだろうか? 思わず、helpが参照してる evalを調べちゃったよ。rename(from, to)とか 使えそうだな。

この方、もう一つTipsを書いていてくれて、

:e /

なんじゃ、/ って、ディレクトリィーを編集しようっての? 調べてみたらvimに標準添付されてる netrwって言うファイラーが立ち上がって くるのでした。さすが、emacsとタイマン張ってるな。emacsがdiredを繰り出してくるんで、 vim側は、netrwで対抗しようって訳か。

説明によれば、ディレクトリィーの所にカーソルを合わせてRETURNを叩けば、そのdirが展開 表示されるはずなんだけど、アプル監獄の刑務官のいじめにより、機能しない。 牢屋主が居て、そのあたりを旨く工夫されてましたよ。 ここは、まあ、主に従っておこう。

アプル監獄の中のvimじゃちょっと不便なので、普通の環境でnetrwを使ってみる。 起動は、vim . でいいよ。

自分が居る、dirがls表示される。i を押すと、lsの表示形式が変わる。(4種類) そのうちの ツリー表示を選んで、dirを展開してみた。展開する時、普通はRETURNキーを叩くけど、t を 叩くと、tag付きの画面が増えて行く。画面間の移動は、gt でいいんだな。

tag付きが嫌なら、v とか o で、縦や横に画面を割って表示してくれる。 下記は、t で、tag付き画面にしたもの。

 NetrwTreeListing 1  NetrwTreeListing 2                                        X
" ============================================================================
" Netrw Directory Listing                                        (netrw v140)
"   /home/sakae/z
"   Sorted by      name
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec
" ============================================================================
../
z/
| Payload/
| | Tsukuru.app/
| cookpad.ipa
| iTunesArtwork
| iTunesMetadata.plist

一番上の行に、NetrwTreeListing 1、NetrwTreeListing 2 とあるけど、これが画面のtagに なっている。

" ============================================================================
" Netrw Directory Listing                                        (netrw v140)   
"   /home/sakae/z                                                               
"   Sorted by      name                                                         
"   Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.
"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec   
" ============================================================================
../                                           0 Thu Apr 11 08:42:09 2013        
Payload/                                      0 Thu Apr 11 08:40:50 2013        
cookpad.ipa                            11733490 Thu May  2 14:29:45 2013        
iTunesArtwork                             39614 Thu May  2 10:58:44 2013
iTunesMetadata.plist                       1948 Thu May  2 10:58:44 2013        ~                                                                               ~                                                                               

こちらは、言わずと知れた、ls -l 風な表示。これで、emacsと対決出来る(かな)。