2013年12月 5日 (木)

bashの正規表現その2(不完全版)

久しぶりのエントリです。bashスクリプトの正規表現・・・とかいうタイトルで5年前に書いたのですが、これは、bash自身というよりも、exprコマンドで正規表現が扱えますよ・・・という内容でした。まぁそれはそれで良いと思うのですが、実はbash自身に正規表現の機能があるってことを最近知ったので、書いてみます。

お題

データを行毎に記録したテキストファイル(例:data.txt)がある。そのテキストファイルを1行ずつ読み取って、コマンドを実行したい。ただし、#で始まる行や空行は無視したい。

入力

$ cat data.txt 
one 
#two
thr#ee
four 
  
five 
six# 
se #ven
 
 nine 
ten 
$

解答と実行結果

[[ 対象文字列 =~ 正規表現 ]]
でマッチ/アンマッチの判定ができる。ポイントは、正規表現をダブルクォートで囲まない事。みたい。
$ cat regexp.sh 
#!/bin/sh 
TARGET_FILE="data.txt" 
while read LINE 
do 
    if [[ $LINE =~ (^#|^ *$) ]]
    then 
        continue 
    else 
        echo "$LINE" 
    fi 
done < $TARGET_FILE
 
$ ./regexp.sh
one
thr#ee
four
five
six#
se #ven
nine
ten
$ 

後方参照

さらには、括弧でくくった場所を
${BASH_REMATCH[x]}
で後方参照できる。
${BASH_REMATCH[0]} #-> マッチ全体
${BASH_REMATCH[1]} #-> 1番目の括弧
${BASH_REMATCH[2]} #-> 2番目の括弧
:

お題2

#記号を含む行を出力したい。加えて、該当行のうち#記号から行末までの文字列を抜き出したい。

解答と実行結果

$ cat ./regexp2.sh
#!/bin/bash
TARGET_FILE="data.txt"
while read LINE
do
    if [[ $LINE =~ ^[^#]*(#.*)$ ]]
    then
        echo -n "${BASH_REMATCH[0]},"
        echo    "${BASH_REMATCH[1]}"
    else
        :
    fi
done < $TARGET_FILE
 
$ ./regexp2.sh
#two,#two
thr#ee,#ee
six#,#
se #ven,#ven
$

メタキャラクタ

良く分からないのは、このbashの正規表現で使えるメタキャラクタです。数値の意味で\dが使えないのです。(文字'd'にマッチしちゃうみたい)どこかにbashで使える正規表現のメタキャラクタの一覧がないかなぁ。

| | コメント (0) | トラックバック (0)

2012年4月 4日 (水)

PC増強

気がつくと2012年も4月になってて、blogを全くupしていない・・・。なので、ちょっと前にPCの中身を入れ替えたのでメモしておきます。2月に下記のパーツを買って入れ替えました。

  • Core i5 2500K \15,880
  • P8Z68V-LE \11,980
  • DDR3 4G x 2 \ 2,750

マザーとCPUを交換したので、SSDに入っているWindows7はそのまま使えるか微妙だけどもしかしたら・・・と思っていたら、ものの見事にOS起動せず。あきらめて素直にWindows7をSSDに再インストールしました。

今回そもそもPCを増強しようと思った理由は、元のPCだとAndroidエミュレータがえらい遅いことでした。それでパーツ買い換えるかなぁと思って調べてみると、メモリがすごい安く(しかもDDR2よりもDDR3の方が安い!)、CPUもSandy Bridgeがかなり速くて仮想マシンも実用的な速度が出るらしい・・・

ということで、3ヶ月ほどDOS/V Power Reportを購読・熟読した上で、上記の様なスペックのパーツを買うことにしました。

HDDも買いたかったけど、タイの洪水の影響がまだ長引いているみたいで去年の9月のレベルまではまだ価格が落ちてきてないのであきらめました。

マザーはGA-945G-DS3 rev.2.0で長年お世話になったGigabyteちゃんにしたかったのですが、調べるとGigabyteはZ68マザーの評判がずいぶんと悪いので、無難なASUSにしました。残念。Gigabyteは箱のデザインが白くて好きなんですけど。それはともかく買ったP8Z68V-LEは、PS2のポートが1つあるのが僕にとってはありがたい。いまや貴重な(レガシー)ポートです。

CPUは、Core i7だとちょっと高くて僕の用途にはオーバースペックなので対象外、Core i3は逆に物足りなくなりそうなので対象外・・・ということでこれまた無難にCore i5になりました。

実際に組んで使ってみると、いたって快適です。これだと、わざわざオーバークロックとかはしなさそうなので、2500KとかZ68とか要らなかったかもしれないけど、「夢」とか「可能性」に投資したと思えば安いかなと。

その後VM Ware Playerを入れてCentOSとかFedoraを入れた話とか、Android開発環境をもう一度入れなおさないといけない話とか、今後書く予定。

では、また。

| | コメント (0) | トラックバック (0)

2011年11月21日 (月)

Androidアプリ開発その5

Eclipseではアプリの開発は「プロジェクト」って言う単位で管理されるんですね。なので、「ファイル(F)」→「新規(N)」→「プロジェクト(R)...」で「新規プロジェクト」ウィンドウを起動するところから。
ウィザード(W):欄で、「Android」→「Android プロジェクト」を選択して「次へ(N)>」。
「プロジェクト名:」欄に、「MyHelloAndroid」と書いて、あとはデフォルトで。ワーキング・セットって何かしら?ちょっと調べると、「複数のプロジェクトをひとつにまとめる物」みたい。プロジェクトのひとつ上の概念って思えば良さそう。とりあえずそう思うことにして、今回はいらないのでデフォルトのままオフにして、「次へ(N)>」。
ビルド・ターゲットを選べといわれて、なぜかデフォルトでAndroid 4.0にチェックが入っているんだけど、今回はTabletを意識して、「Android 3.2」で。チェックボックスの癖に排他(ラジオボタンの動き)になってるのはなぜ?とにかく「次へ(N)>」。
パッケージ名を指定してくださいと言われるので、パッケージ名を本ブログのURLから拝借・・・ってmoe-niftyはjavaのパッケージ命名規則に沿わないとな!んご!ハイフンだめですか!仕方ないので「com.moenifty.lucy.android.MyHelloAndroid」で。テスト・プロジェクトも作っておきます。で、「完了(E)」!

やっとこさ、プロジェクトができて、コーディングが始められる!
パッケージ・エクスプローラにMyHelloAndroidプロジェクトができていて、中身をたどっていくと、src配下に雛形ができているー。ふぃー最近の開発はコーディングにたどり着くまでが難儀じゃのぅ。

って、ググってみると、Wikipediaによると


パッケージ名に直接使うことができないインターネットドメイン名をパッケージに命名するルールは、Java言語仕様のsection 7.7で説明されている。

ハイフン(-)が使われているドメイン名をそのままJavaソースコードで使用するとコンパイルエラーを引き起こす。そのためハイフンが使われているドメイン名には、ハイフンの代わりにアンダースコア (_)を使用する。

とな!なので、パッケージ名を変えようとリファクタリングとか選択したら変になった(変える前のパッケージ名でRをimportする文が出た)ので、プロジェクトを削除して、再作成。パッケージ名は「com.moe_nifty.lucy.android.MyHelloAndroid」で。これでよし。

| | コメント (0) | トラックバック (0)

Androidアプリ開発その4

AVD(Android Virtual Devices)っていうのは、Androidのエミュレータに対して、特定のバージョンのハードをエミュレーションさせるための端末情報を保持する仕組みみたい。(汎用の)エミュレータ+(特定のバージョンの情報を保持する)AVDで特定の機種(バージョン)のAndroid端末をエミュレーションするっていう理解で良いのかしら。

とにかく、Eclipseを起動して、「ウィンドウ(W)」→「AVD Manager」で「Android Virtual Device Manager」を起動。
最初は中身が空で、No AVD availableなんて書いてあるので、「新規...」をクリックして「Create new Android Virutual Device (AVD)」を起動する。
「ターゲット:」欄をクリックして、好みのバージョンのOSを選択するんだけど、「Android x.x - API Level yy」ってのと、「Google APIs (Google Inc.) - API Level yy」ってのは何が違うんでしょ?(Google APIsを選ぶと、エミュレータ内でGoogle MapとかのGoogleのAPIも擬似ってくれるのかな?)とりあえず、なぜかタブレットを意識して、「Android 3.2 - API Level 13」を選択。すると、下の「ハードウェア:」欄に自動的にいくつかプロパティー項目が追加された。いろいろいじった方が良いのかも知れないけど、よく分からないので、とりあえずデフォルトで、名前は適当に「MyTablet3.2」。

image

これで「Create AVD」すると、元のAndroid Virtual Device Managerに今作ったAVDが追加された。ついでに2.3.3と4.0も作ってしまう。よく分からないので、パラメータはすべてデフォルトで。
image

さて、これでやっと準備が整ったみたいなので、やっとこさHello, Worldに取り掛かれます。

| | コメント (0) | トラックバック (0)

2011年11月10日 (木)

Androidアプリ開発その3

Eclipseってインストールが面倒なイメージがあったんだけど、へっぽこには「Pleiades All in One 日本語ディストリビューション」がよさげな感じ。http://mergedoc.sourceforge.jp/からJava版のFull All in Ore(JREあり)をダウンロード。最初はJREなし版が良いのかと思ったのだけど、Eclipse自体を動かすJREと、開発対象のAPを動かすJREは別の方が融通が利くからお勧めだそうで、それはご尤もと思ったので、JREあり版で。

なにやらlhaplusで展開すると長いパスが正しく展開できないにもかかわらずエラーを出さないので要注意とか。。。何も考えずにダブルクリックしたらデスクトップに展開されてあわててlhaplusの設定を変更。再度展開をすると、今度はアーカイブファイル名のフォルダが掘られたんだけど、例を見る限りパス名が長くなるパターンにはまってるっぽいので、再度lhaplusの設定を変更して三度目の正直で(多分)正しく展開が完了。上記サイトを良く見ると、pleiadesってフォルダを作ってその下に展開しているみたいなので、そのマネをして、展開されたフォルダ一式をc:\freesoft\pleiades配下に移動。

pleiades\eclipse\eclipse.exeのショートカットをデスクトップに作って、ダブルクリックしたら無事3.7 Indigoが起動した!

つぎは、ADT Plugin for Eclipseのインストール。Eclipseの「ヘルプ」→「新規ソフトウェアのインストール...」で「インストール」ウィンドウが起動するので、「追加(A)…」ボタンでhttps://dl-ssl.google.com/android/eclipse/を追加すると、中ほどのエリアに「開発ツール」なるものが表示されるので、それをチェックして、「次へ(N)>」をクリック。

なにやらいろいろ考えて(?)いるみたい。じっくりダウンロードとインストールをしてもらいましょう。しばらくするとインストール詳細とか出るので、そのまま「次へ(N)>」。ライセンス条項に同意して、「完了(F)」!

これで終わったと思ったらなにやらバックグラウンドではインストールが進んでいるみたいで、途中でセキュリティの警告が出た。よく分からないので、そのまま続行したら、終わったタイミングでEclipse再起動を促されたので、そのまま再起動。

するとまず「Welcome to Android Development」ってウィンドウが出たので、「Install new SDK」ではなくて、「Use existing SDKs」を選択して、パス「C:\Program Files (x86)\Android\android-sdk」を入力し、「次へ(N)>」。「Contribute Usage Statistics?」と聞かれるので、「Send usage statistics to Google?」にお好みがあるでしょうが、僕は「はい」と答えて、「完了(F)」!

さて、次はAVD (Android Virtual Device)の作成だ!

| | コメント (0) | トラックバック (0)

2011年11月 9日 (水)

Androidアプリ開発その2

SDKがインストールできて、その後Android SDK Managerが途中で止まったまま一晩たったのだけど、状況は変わらず。仕方なくウィンドウを閉じて、再度起動してみると、ほとんどのパッケージはインストールされているみたいだけど、例のKYOCERAのAPIを含むAndroid 2.3.3 (API 10)がNot installedになっていたので、そいつにチェックを入れて、再度ダウンロード・・・って、やっぱり動きがないな。んではと、再度ウィンドウを閉じて今度は、KYOCERAを飛ばしてSony EricssonのとGoogle APIsだけをチェックしてみると・・・

Downloading EDK 1.1 by Sony Ericsson Mobile Communications AB, Android API 10, revision 1
File not found: C:\Program Files (x86)\Android\android-sdk\temp\EDK-1.1.20110513.13-linux-x86.zip (アクセスが拒否されました。)
Downloading Google APIs by Google Inc., Android API 10, revision 2
File not found: C:\Program Files (x86)\Android\android-sdk\temp\google_apis-10_r02.zip (アクセスが拒否されました。)
Done. Nothing was installed.

とな!?なぜかC:\Program Files (x86)\Android\android-sdk\tempの書き込み権がないみたいなので、tempフォルダの「プロパティ」→「セキュリティ」タブ→「編集」→Usersに変更の許可を与えた。。。ら次はadd-onsフォルダもだめだってんで、そっちも同様にUsersに変更を許可。そしたらやっとこさAndroid 2.3.3 (API 10)のSony ErcssonとGoogle APIsが入った。しかし、なんでUsersの変更権限が要るんだっけ?Program Files配下だから?自前のC:\freesoftとかにしておけばよかったのかしら・・・

っとちょっと順番が前後しちゃったけど、こいつをやる前に、二つほど環境変数を設定。例によって「コンピューター」の「プロパティ」→「システムの詳細設定」→「詳細設定」タブ→「環境変数」で、システム環境変数に「新規」で

ANDROID_HOME
C:\Program Files (x86)\Android\android-sdk

あと、Pathを選択して「編集」で

Path
[元の値];%ANDROID_HOME%\tools

さて次はEclipseのインストールだけど、今日はここまで。。。Eclipseもまたどれを入れるのか悩みそう・・・

| | コメント (0) | トラックバック (0)

2011年11月 8日 (火)

Androidアプリ開発

いろいろあってAndroidアプリ開発を家でもやってみることにした。半年ほど前にMacBook上で環境構築してみたのだけど、画面が狭い(1280x800)のとメモリが少ない(2GB)ので、デスクトップ(Windows7 64bit)でやりなおしてみることにした。って今調べてみたら、デスクトップもメモリ2GBだったよ。。。

まずはJDKのダウンロードから。OpenJDKってのがあるんだっけ?と調べてみると、どうやらLinux版しかないみたい。なので、普通にOracle(!)からダウンロードすることに。JDKでググって最初のページがここ。

http://java.sun.com/javase/ja/6/download.html

ここ、画像がリンク切れになってたりしてメンテされてない感を漂わせてて大丈夫かしらと不安になる。ここのJDKダウンロードってリンクをクリックすると、JDK 6u23 ってところに表示が行くんだけど、上にスクロールすると最新は6u25なんだよね。単純にリンクが更新されていないだけ?それとも6u23がStableってことを言っている?しかもJavaFXとかって書いてあるし・・・怪しいなぁと思って、画面右のJava SDKs and ToolsのJava SEをクリック。

んご!こっちが正解じゃん!Java SE Downloadsって書いてあるし、最新はJava SE 7u1みたいだけど、さすがにそれはヤケドしそうなので、その下のJava SE 6 Update 29でいきますか。

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html

結局このページが求めてたものだ!Goolgeたん検索結果イマイチなんじゃない?それはともかく、ここのWindows x64版を、Accept License Agreement した上で、ありがたくダウンロード

x86版かx64版かで悩んでWikipediaで調べてしまったけど、Core2Duoで64bitOSならx64で正解だよね。

これでやっとこさJDKのインストールができる。ダウンロードしたjdk-6u29-windows-x64.exeをダブルクリックしてインストール開始。パッケージ選択はとりあえず全部入りで、インストール先もデフォルトで。入れ先はC:のSSDなんだけど、ちょっとだけ時間がかかった。2分くらいかしら。

インストールが完了したと思ってたらFirefoxがあがって、「Java Development Kit (JDK) Registration」だそうな。とりあえず、個人情報を入れたり、パスワードは大文字小文字混在じゃないとダメとかいうのを乗り越えて登録してみたのだけど、確認メールのURLをクリックして確認後やっとログインしてみたら、今度は会社の住所を入れろと!そこでやる気をそがれたので、登録はあきらめて先に進むことに。流石Oracleさん、金にならないアマチュアユーザは登録してもらわなくて結構って感じ?

次はAndroidSDKのダウンロード。こいつはJavaと違って分かりやすいところにあった。

http://developer.android.com/sdk/index.html

んご!ちょっと前に見たときはr13でなかったかしら?r15になってるし。とりあえず.Recommendedだという.exe版を落として、インストール。途中でさっき入れたJDK1.6を見つけたよとか、インストール先はProgram Files (x86)だよとか言ったりするかわいいヤツ。終わるとAndroid SDK Managerなるものが勝手に上がって、なにやら最新のパッケージ情報を取得しているっぽい(?)。4.0とか、3.2とか、2.3.3とか、興味のあるのをチェックして、「Install 20 packages…」するとLicenceの確認(?)されるので、いいよよろしく入れて頂戴と進めると、ダウンロード&インストールが始まった。なんか、いろいろと超大量にあるみたいで、時間がかかってる。10分くらいかかるのかなぁ。

'adb kill-server' failed -- run manually if necessary.

とか出てるのが気になる。あと、

Found Dual Screen APIs by KYOCERA Corporation, Android API 8, revision 1
Found Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

Downloading Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

なぜKYOCERA!?っていうか、このKYOCERAのAPI 10のダウンロードなかなか終わんないんすけど。current taskを止めるボタンを押しても止まらない・・・ってところで寝ることにします。

| | コメント (0) | トラックバック (0)

2011年3月 1日 (火)

強さと脆さ

あれ?こんな本出てたんだ?と思って手に取ってみたらブラックスワンの増補改訂版の「増補」部分を切り出した本でした。

タレブが頭が良すぎるのか、全体的に何を主張をしようとしているのか、僕にはぼんやりとしかつかめませんでした。

とりあえず、

  • 「第四象限」では油断がならないこと
  • 人は、運動や食事を規則正しく行うようには最適化されていないこと
  • ある事象がブラックスワンか否かは、立場によって変わること。9.11もテロリストにとってはブラックスワンではなかった

が印象に残りました。

「ブラックスワンが生じるのは第四象限」の説明で、単純なペイオフと複雑なペイオフっていうのが出てきましたが、ペイオフの意味がよく分かりませんでした。

タレブたんは頭が良いんだから、もっとみんなにわかるように伝えれば良いのになと思いました。なので、経済学者に「3つの象限ではあなたたちの理論はうまく当てはまるのだが」という風に話すと、話を聞いてくれる…って所は微笑ましかったです。


| | コメント (0) | トラックバック (0)

2010年12月 9日 (木)

Android開発

意外な事に、仕事でAndroidアプリの開発をやりそうな気配あり。早速Amazonで参考書を物色した。参考書がいくつか出ているなぁとは思っていたけど、本気で探した事が無かったので、改めて探してみると、決め手に欠けてどれを買うべきか悩む。定番本がまだ確立していればありがたいのだけど。それにしてもどれもにたようなタイトルで紛らわしい。Amazonの評価を頼りにすると、この辺が良さそうな感じだった。

  1. 評価はそこそこだが、2009年6月の出版がやや古いか。中身を見てみないと判断が難しい

  2. 評価は高く、分厚いとあって情報量も豊富そう。Androidの基本的な考え方が書いてあるというレビューがあるので、そこもポイント。2009年7月とやや古いのが弱点かも知れないがそこは別の本でカバーすべきかも。これは欲しい。

  3. Amazonの評価はそこそこで、タイトルに2.1を謳っているだけあって2010年5月と比較的新しい本。レビューを良く読むと物足りないところもあるようだが、とりあえずアプリの開発が一通りはできるようになるかなと。結局近所の書店で唯一見つけた本書を購入した。
Android2.1プログラミングバイブル(仰々しい名前)を読みながら、開発環境の構築まで今のところスムーズに進んでいるので、次、まずはサンプルアプリケーションの完成まで行きたいところ。

| | コメント (0) | トラックバック (0)

2010年10月25日 (月)

オレンジニュースって‥

もう、更新されなくなってずいぶんたちますが、オレンジニュース、すんごいタメになったサイトだったんですが、もう復活しないんですかね。
濃縮還元だけじゃ足りないです。
アレに変わるニュースサイトって無いですかね。。。。

| | コメント (0) | トラックバック (0)

«リファクタリング・ウェットウェア