カテゴリー「プログラミング」の37件の記事

2009年10月12日 (月)

Windowsのコマンドプロンプトをckwとnyacusで使いやすくする

Windowsで一番腹立たしいのは、cmd.exeの使いづらさです。pwdとかlsとか使えないし、ctrl-aとかctrl-eとかも使えないし、ヒストリも使いづらい!
で、単純に考えると、cygwin使えばいいじゃんってなるんだけど、cygwinってなんていうか、UNIXをエミュレートしてるんで、いや、そこまでUNIXじゃなくても。それならLinuxつかいますよ的なところがあります。
そんなわけで、Windows上でLinuxライクな環境ができないかなーと思っていたら見つかったので、ここにメモしておきます。

■何を入れるの?
・ckw
Windows上でのシェルのGUIラッパー。シェルの「表面的な操作性」を向上させる。標準ではcmd.exeをラップして、マウスのコピペが楽になったり、背景を透過させたり、日本語入力を半角/全角キーでできたりするようになるみたい。
で、こいつのミソは「シェルを選べる」こと。
すでにオリジナルの公開は終わっているみたいですが、幸いGPLだったおかげで修正版を公開されている方がいらっしゃいます。
http://d.hatena.ne.jp/hideden/20071123/1195822428
それに加えてさらにラップ対象のシェルの画面が残ってしまうバグの対処版も公開されていて、
http://blogs.wankuma.com/shuujin/archive/2008/10/15/158825.aspx
とりあえずこれをありがたくDL

・nyacus(にゃーかす)
  で、選ばれるシェルが、これ。tcshライクな操作性を持つ、cmd.exe上で動作するシェル。今回のキモ。
  ポイントは、Windowsネイティブアプリであることと、Unixの基本的なコマンドも内部的に持っていること。
  bashじゃないのが残念ですが、これでWindows上のコマンドプロンプトでLinuxのような操作感が得られます。
  http://www.nyaos.org/index.cgi?p=TEST+VERSION
  TEST VERSIONとはなっていますが、最新版で良いかと。

・vim
  ちょっとわき道にそれるますが、僕の一番好きなエディタ。xyzzyも良いんだけど、vimの軽快さ、自由自在さに慣れると、やっぱりvimが気持ちよい。xyzzyも慣れたいんだけどなー。
  ctrl-p,nで単語補完とか、*一発で単語検索とか、ビジュアルモードで行を選択して=一発で再インデントとか、qx...q -> @xでマクロとか。 xyzzyでもある程度はいけると思うんだけど。。。こちらは定番香り屋さんからありがたくDL
  http://www.kaoriya.net/#VIM72

■どうやって入れるの?
で、インストールですが、DLしたファイルを展開した後、ckwとnyacusは同一フォルダに配置。私は

[C:デスクトップ]$ ls -1 \freesoft\ckw
NYACUS.EXE
_nya
ckw.cfg
ckw.exe

こんな風に置いてます。で、ckw.cfgでシェルにnyacusを指定

Ckw*exec: c:\freesoft\ckw\NYACUS.EXE

その他ckw.cfgの詳細は、
http://blog.blueblack.net/item_358
を参考にさせていただきました。

それから上記フォルダをworkディレクトリとして起動するようにckwへのショートカットをデスクトップに作成。
#これはお好みで。PATHを通したりするのが上品なのかも。

vimはお好みですが、

freesoft\vim

配下に配置しました。

で、_nyaの設定ですが、プロンプトが改行が入っていまいちなので、一行になるように修正("$_"を消しただけ)。

# option prompt $e[31;40;1m[$w]$_$$ $e[37;1m
option prompt $e[31;40;1m[$w]$$ $e[37;1m

あと、vimへのaliasを作成

alias vi c:\freesoft\vim\vim.exe
alias vim c:\freesoft\vim\vim.exe

その他の設定はここを参考にさせていただきました。
http://umeji.blogspot.com/2008/05/nyacusckw.html

その他、nyacusに付属していないツールについて
http://qwerty777.s57.xrea.com/winunix/command.htm
を参考にインストールすると良いかと。

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

2009年8月22日 (土)

iPhoneアプリで週末起業

何かのページで読んだのですがiPhoneアプリビジネスはいまやレッドオーシャンだそうで、すでにビジネスとしてのうまみはないのかもしれません・・・が、まだ夢はあると思います。

で、本書なのですが、タイトルからしていかにも流行のネタに乗っかった薄っぺらい本で、むしろSDKの解説本を買った方がよいかも・・・と思ったら、さにあらず。iPhoneアプリ開発ビジネスに関する、かなり具体的なノウハウ本になってます。

1章はiPhoneアプリビジネスの全体像、うまみや注意点について。2章はiPhoneに限らず、アンドロイドを中心に、NOKIAのシンビアンやMicrosoftのWindowsMobileなど、ケータイアプリ開発ビジネスの全体像について。3章は日本でのiPhoneアプリ開発者の紹介。

で、個人的には4章が本書のキモだと思います。iPhoneとMacを買ってから、自作のアプリがAppStoreに並ぶまでの事務手続きの「勘どころ」が書かれています。税務書類の書き方(裏技含む)だとか、提出方法だとか、アプリのサポートページの用意の仕方だとか、プロモーションのするための小技だとか。。。

iPhoneアプリを開発して、AppStoreに並べたい!と思っている人は、とりあえず本書を読むと、「ビジネス上の事務手続き」の面でかなりの稼動削減になるかと思います。

さて、あとはMacとSDK解説本を買わないと・・・

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

2009年3月18日 (水)

Firebugを使ってみた

このブログ、左右の幅が狭いなーとつねづね思っていたので、ちょっと広げてみた。広げるに当たっては、実践 Web Standards Design でCSSについて勉強しつつ、便利と評判のFirebugでHTMLの構造を調査した。

で、ごらんのとおり70pxほど幅が広がっているのだけど、Firebugは評判なだけあってすごい!

Firebugをインストールすると、右下に虫のマークが表示されて、それをクリックすると、Firefoxの下半分がFirebugの画面になる(Ctrl+クリックなら別ウィンドウで開く)。左半分にHTMLがツリー構造で表示され、属性(タグ)をクリックするとそこに設定されているCSSのスタイルが継承関係を含めて右半分に表示される。また、メニューの「調査」をクリックしてから、ページにカーソルを合わせることで、ページの見た目からその位置の属性(タグ)が一発でわかる。CSSやHTMLは編集ができて、修正がどのように見た目に影響するかがすぐに分かる。そんな感じで、Firebugでページ内を調べた結果、幅を広げるにはstyles.cssで定義されている#containerのwidthプロパティと、#centerのwidthプロパティを大きくすればよいことが分かった。

なので、ココログのカスタムCSS機能で、↓なのを追加してみた。もともとの#containerや#centerは上書きできなくて、同じ属性が下のほうに追記されるらしく、後勝ちのルールに従って有効になるみたい。

/*** styles.cssの上書き修正 ***/
/* 大枠のdiv属性 */
#container {
    width:772px; /* オリジナルは702px */
}
/* 本文枠のdiv属性 */
#center {
    width:570px; /*オリジナルは500px */
}

最初、#containerの"#"の意味が分からなくて苦労した。おそらくIDセレクタ(一意セレクタ)のことで、id="container"の属性を指しているんだろうとは思ったのだけど、その前にあるはずの「属性名」がない。div属性を意味するのか、それとも属性名を気にしない(idで一意に定まるので)のかなぁと想像したのだけど、この例がIDセレクタの項目に載ってない・・・なぜだーと思ってググったら、ユニバーサルセレクタ(全称セレクタ)"*"が省略されている形らしい。ユニバーサルセレクタの項目を見たら確かに載っていた。

"*"の後に属性セレクタ、idセレクタ、擬似クラスを続ける場合は"*"を省略することができます。

知らんわ~。

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

2009年2月14日 (土)

2009/2/14は・・・

記念すべき日

2009年  2月 14日 土曜日 08:31:30 JST
time_t = 1234567890
Happy Valentine's Day!
[lucy@fedora7 ~]$

アホプログラムを書いてしまいました・・・

[lucy@fedora7 ~]$ cat ./happyValentine.sh
#!/bin/sh

while :
do
        date
        TIME_T=`date +%s`
        echo "time_t = $TIME_T"
        usleep 500000
        if [ $TIME_T = 1234567890 ]
        then
                echo "Happy Valentine's Day!"
                exit 0
        fi
        clear
done

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

2009年1月 2日 (金)

ミニマルPerl

あけましておめでとうございます。本年もよろしくお願いいたします。

僕がperlの本をはじめて買ったのは確かPerlハンドブックとかいうタイトルで、2000年くらいのことだった。 今は無き秋葉原ヤマギワの在庫処分かなにかで、100円だった気がする。 しかし結局ちょっと読んだだけではさっぱり身につかず、Perlは難しい、苦手だ、という印象だけが残った。 ハンドブックというタイトルからも伺えるように、初学者向けではなかったのかもしれない。

それからつい最近まで、Perlはいつか覚えたいと思いつつも、苦手だなぁと感じながら来たのだけれど、 昨年、他の人が書いたPerlのスクリプトを使う機会があったので、改めてPerlを勉強する気になった。

書店のコンピュータ本コーナーに行くと予想通りO'REILLYのPerl本が何冊も並んでいた。タイトルだけで選ぶと 「初めてのPerl」になるのかな、でもミニマルPerlの「ミニマル」も魅力的だな、流石に「プログラミングPerl(ラクダ本)」はつらいだろうなぁ。 うーん。

結局「まえがき」を読んで分りやすそうだった「ミニマルPerl」を購入したのだが、大正解だった。(「初めてのPerl」については分らないけれど) 2008年を通して、もっとも実践的でためになった本だと思う。

本書は、Unix/Linuxユーザにとって、実務で役に立つ必要十分な文法に絞って Perlを解説している本である。なので、本書だけでPerlの全てが分るわけではない(らしい)。 しかし、実践という意味では、非常に役に立つ。 grep,sed,awk,findといった標準的なコマンドと、その機能をperlで実現する場合の具体的なコードが書かれており、それが元のgrepなどのコマンドの解説にもなっていてすごい役に立つ。なので、僕としては「perlを中心とした、Unixコマンドによるシェルプログラミングの実践」 といった感じで、本書を読んだ。Linuxのコマンドライン上ですごすことが多い人。シェルスクリプトを書くことが多い人。特に僕みたいな、Perlってスクリプト言語として強力らしいけど、難しいんだよなーと思っている人には是非。

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

2008年7月16日 (水)

入門UNIXシェルプログラミング

前から書いていることですが、いまやamazonのカスタマーレビューやら書評ブログ(というまでもなくGoogle)のおかげで、良書とよばれるものをとっても簡単に選び出すことができるようになりました。特にC言語やWordの参考書などは山ほど出版されていて、本屋で見ただけではどれが良いのか(それともそこで売っている本は全てダメなのか)判断できません。

ちょっと前までは、そんな風に判断する材料もなく、「雰囲気で」買わざるを得ませんでした。しかし今は違います。Wordについてよい参考書を知りたければamazonで検索します。Rubyについてよい本が欲しければamazonで検索します。。。

なのですが、たまに本屋で、「これは買わねばならぬ!」と衝動的に買ってしまうこともあります。それが本書でした。今年のテーマは「定番を読む」なので、それに合致していると思ったためでもあります。

本書はBourne Shell (/bin/sh)についての入門書/解説書です。邦題は入門と銘打っていますが原題は"Portable Shell Programing: an extensive collection of bourne shell examples"であり、内容は移植性に配慮する点も含め、非常に実戦的です(いまやlinuxでbashな環境がメジャーだと思うので、そこまで高い移植性が求められることは少ない気もしますが)。辞書的に使うつもりなので、まだ全部読んでいませんが、タイミングがないのでentryを書いておきます。

この前悩んでいた「ファイルを一行ずつ読んで処理する」も巻末のFAQにあっさり載っていました。shの関数が、まるで同名のコマンドがあるかのように扱えるという指摘になるほどと思わされました(本書を読むまで気づかなかった!)

いつも場当たり的にググりつつbashとshの境界もあいまいのままスクリプトを書いている僕みたいな人にとっては、shのルールとサンプルとFAQが一通り載っている本書は常備する価値があると思います。

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

2008年6月28日 (土)

Sleipnir2カスタマイズテクニック

最近FireFox3が話題ですが、今僕が使っているブラウザはSleipnir2です。Sleipnir1系の歴史が途絶えるちょっと前くらいから使っていて、その時はどうなるかと思っていたのですが、Sleipnir2となって復活したのち、安定してきた頃を見計らって1.6系から乗り換えました。

Sleipnirといえばカスタマイズが肝なのですが、項目が多く、それほど活用していませんでした。なところで、本書を本屋で見つけて、バカみたいに分りやすそうだった(←褒め言葉)ので、買ってみました。

急いで補足しておくと、カスタマイズテクニックと銘打っていますが、副題に小さく書いてある「オリジナルスクリプトを作る」の方が内容を正しく表しています。今数えてみたら、アイコンの配置や設定の変更については5ページ分しか書かれていませんでした。

で、何が書かれているかというと、「Sleipnir2の環境で、自分で書いたVBScriptやJScriptを動かして何かするための方法」です。 Sleipnir2のメニューにある「スクリプト」って何なんだろうなぁ。どうやって使うんだろうなぁ。って思っていたのですが、とりあえず、本書を読めば、初めの一歩は踏み出せます。

ユーザへの入力を促す方法、出力する方法、クリップボードを使ってやり取りする方法、マウスで選択した文字列を取得する方法、Webのサービスを利用する方法、などが具体的に書いてあります。

そういうわけで、VBScriptやJavaScriptの入門のきっかけとしてもいいと思います。系統的な理解はできませんが、とりあえず何をしなければならないのかは分ります。

難点は二つ。ひとつは、上司に「これ何の本?」と聞かれて説明がうまくできなかったこと。

  • る「えーと、Sleipnirっていうブラウザ上で、JavaScriptを走らせるための本・・・(うーん、ちょっとちがうかな)」
  • 上「え?JavaScriptってブラウザ上で動くもんじゃないの?」
  • る「あ、いや、自分でローカルに書いたJavaScriptを表示させたページに反映できたりするんですよ」
  • 上「それって何がうれしいの?」
  • る「うーん。。」

・・・Sleipnirでスクリプトが走らせられるとどんなうれしいことがあるんでしたっけ??<根本的な疑問

もうひとつは、誤字が多いこと。ちょっと萎えます。いきなり「ブックマークレットとは」という見出しでSleipnirの説明が始まります(索引にも反映されてます)。Messageやdocumentのつづりが誤っていたり。。。編集がイマイチなのか?と思ったら、末尾に読者用ページのURLが用意されていたりしますね。 と思ったらこれ、なんかただの紹介ページ+ソースのダウンロードサービスみたいですね。。。

Sleipnir2のスクリプトって何?使ってみたいけど良くわからないってひとにおススメです。

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

2008年6月23日 (月)

bashスクリプトで正規表現

前書き

僕が正規表現をよく使うのは、vimで文字列の検索や置換をするときですが、たまにシェルスクリプトの中で使いたくなることがあります。そういう時普通はperlで書くのでしょうが、あいにく僕はperlがつかえない(orz)ので、毎回edやらgrepやらsedやらawkやらを調べて場当たり的に解決しています。で、この前、後輩に質問されて「う、こんな簡単なことなのにどうやったらいいのか分らないなんて!」とショックを受けたことがあったので、調査結果をメモっておきます。

問題

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

解答

exprコマンドは、正規表現を解釈する(!)ので、それを使う。

#!/bin/sh
TARGET_FILE="data.txt"
while read LINE
do
        if expr "$LINE" : "#" > /dev/null || [ -z "$LINE" ]
        then
                continue
        else
                echo "$LINE"
        fi
done < $TARGET_FILE

注意点は、exprの標準出力を/dev/nullに捨てることと、正規表現の先頭に暗黙のうちに"^"(行頭)が付加されること。

以下実行例:

[lucy@fedora7 regexp]$ cat data.txt
one
#two

four
five
six#
se #ven

ten
[lucy@fedora7 regexp]$ ./regexp.sh
one
four
five
six#
se #ven
ten

まとめ

exprで正規表現を扱えるとは知りませんでした。expr string : regexp もしくは expr match string regexp でもよいみたいです。標準出力にはマッチした文字数がでるみたいです。また、\( \)で囲ってある部分があれば、そこの文字列がでるそうな。詳細はこの辺で。

でもbashのfor文だと、行区切りではなくて、空白区切りでループされてしまうので、1行内にブランクがある場合はどうしたらいいんでしょね。これまたFAQの類だと思うんですが、また分ったら書きます。

というわけで、while read LINE do ... done < $TARGET_FILE構文(?)で修正したプログラムを載せてみました。

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

2008年6月 7日 (土)

CODE COMPLETE 第2版 下

上巻からほぼ半年かかって、やっと読了した。しばらく机の上に飾ってあったのだが、ふと読み始めたところやはり面白く、一週間ほどで最後まで読みきった。

下巻に残されたテーマは、目次を見ながら僕なりの分け方で言うと

  • 品質向上のための手段
  • テストについて
  • デバッグについて
  • リファクタリングについて
  • コードチューニングがそれほど有効ではないということ
  • コードチューニングの戦略
  • 構成管理
  • デイリービルドのススメ
  • プログラミングのツールのススメ
  • コードのレイアウトに関する細かい議論
  • コードの読みやすさについて
  • プログラマに望まれる気質について(粘り強さが良いとは限らない)
  • さらなる情報を得るために

といったところ。

自分に甘いせいかついついバグを出してしまう僕には、品質の向上やテストについては耳が痛い部分もあったが、精神的に楽に品質の向上を図れる手法があればいいなと思う。

チューニングについては、著者はそもそもコードをチューニングして何とかするよりも設計から見直した方が有効であることや、コンパイラの最適化によって、必ずしも見かけ上の最適化が実行バイナリで最適になるとは限らないことなどから、あまり乗り気ではない様子。ただ、必要な場面では必要になってくるかもしれないとの事。

構成管理についてはsubversionをもっと活用していきたいところ。デイリービルドについては僕はまだ実現していない。実現させて幸せになりたい。

ツールについては、具体的な名前ではなく、種類の紹介がされている。つかいこなせば便利だとは思うが、チームへ新しいツールを導入するには、自分で使ってみて、良さや使い方を十分分った上でないと難しい気がして、使いこなす自信がないために結局導入が進まないという面があると思う。ただ、ツールの導入には前向きになるべきだという教えを受けたのは収穫。

レイアウトについては微笑ましかった。参考になる部分、「いやーそうかなー」という部分もあったが(著者もそういう指摘があるだろう事は自覚しているようだ)レイアウトについてまとまった議論がされているのは注目に値する。

気質についてはついついサボりがちな自分にとっては非常に耳が痛かった。ついつい目の前の作業で楽をしようとしてしまう事。抽象化のレベルをついついごっちゃにしてしまうこと。知的な誠実さに欠けること(★これはキモに銘じないと!★)。この辺は僕にって大事な改善ポイント。

最後、さらなる情報を得るためにレベル別のおススメ書籍リスト(ソフトウェア開発者の読書計画)があったのがありがたい。先に進むために読もうと思う。

というわけで、上巻よりは抽象度が上がった印象があるが「心構え」について教わったような気がしてやはり得るものはあったと思う。目の前のコードと文法書だけ見るのではなくて、どうやったら上手にコードが書けるのか、開発が楽にできるのか、知るためには是非。開発者としてのレベルを上げたい方も是非。

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

2008年5月21日 (水)

ruby雑感

unfuddleにリポジトリは作ってみたものの、何をやるかが問題だ。rubyの練習でもしようか。

ためしに文字列のSHA1ダイジェストを算出するプログラムを書いてみたら、ほぼ1行で書けた。

何かネタはないかなー。実用的なところでは、やはりWindowsオートメーションなんだろうか。ExcelとかWordとか腹立つことが多い。

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

より以前の記事一覧