週記くらい

  • Profile

Monthly Archives: March 2007

ワイルドカードでファイルの種類を指定

Posted on 2007/03/22 by smeghead

id:utadaq:20070321:1174481679

特定のディレクトリ以下のファイルを全部読み込む

**が再帰的に展開される機能は、zshだけじゃなかったかな?と思って、bashで試したら、bashでも機能した。


zshのワイルドカードでは、更に*(/) とか *(.) *(*) とかも指定可能です。

$ echo tmp/**/*(.)

これで通常ファイルのみを展開するとか。

$ echo tmp/**/*(*)

これで実行可能ファイルのみを展開するとか。

覚えきれない程あるみたいです。

使える指定には以下のようなのがあります

* /:ディレクトリ

* @:シムリンク

* .:通常ファイル

* ^:否定

追補:以下の指定もできるらしいですが、私は使ったことがありません。

* *:ディレクトリでない実行権のあるファイル

* r:読み込み権のあるファイル

* w:書き込み権のあるファイル

* x:実行権のあるファイル

* R:他人に読み込み権のあるファイル

* W:他人に書き込み権のあるファイル

* X:他人に実行権のあるファイル

* f値:値で指定したアクセス権のファイル

* U:自分が所有するファイル

* G:自分が所属するグループのファイル

* u値:値のユーザが所有するファイル

* g値:値のグループが所有するファイル

* s:setuidされたファイル

* -:次の指定にシンボリックリンクを含む

* =:ソケット

* p:名前付きパイプ(FIFO)

* ^:それ以降の指定の否定

http://q-eng.imat.eng.osaka-cu.ac.jp/~ippei/unix/?UNIX%BA%A3%C6%FC%A4%CE%B5%BB%2Fzsh#l9

全部使いこなしたら、find使う頻度が減るな。(無理だけど)

Posted in zsh | Leave a comment |

流行

Posted on 2007/03/20 by smeghead

最近、emacsやvimが見直されている風潮があるように感じます。特にvim。

KaoriYa版のvim7が試験公開状態なので、まだ、vim6.4を使ってます。

Windowsでは、KaoriYaのvim。linuxでもKaoriYaのパッチを利用してます。KoRon様々状態


でも、結構大きな変更があるようなので、そろそろ試し時かな?

http://subtech.g.hatena.ne.jp/secondlife/20060524/1148449119

vim7を試す前の疑問

  • vimでtabって。:ls と :b を1ステップでできるのが利点?
  • Omni completion(構文解析補完てこと?)は凄そう。でも<C-P><C-N>(開いてるファイルから補完)や<C-X><C-K>(辞書補完)も既に強力だったよ。

我ながらネガティブ。

Posted in vim | Leave a comment |

windowsのgvimからcygwinのgrepやzshを使う

Posted on 2007/03/20 by smeghead

vimから:grepで検索したときに、cygwinのgrepを使って検索するように以下を設定した。

set grepprg=grep\ -nH

これで、vimから正規表現含みでgrepできるようになった。


と思っていたら、findstr(windows付属のコマンド)でも正規表現できたみたいでした。

C:\> findstr /?
(略)
正規表現クイック リファレンス:
.            ワイルドカード: 任意の文字
*            繰り返し: ゼロ個以上の直前の文字またはクラス
^            行位置: 行頭
$            行位置: 行末
[class]      文字クラス: セットの任意の 1 文字
[^class]     逆クラス: セット以外の任意の 1 文字
[x-y]        範囲: 指定した範囲の任意の文字
\x           エスケープ: メタ文字 x のリテラル使用
\<xyz        単語位置: 単語の先頭
xyz\>        単語位置: 単語の終わり
FINDSTR の詳細な正規表現に関しては、オンライン ヘルプのコマンド リファレンスを
参照してください。

でも慣れてるgrepの方がいい。


ついでに、外部コマンド呼出し時のshellも変更した。

set shell=c:\\cygwin\\bin\\zsh

これで、zshの機能が使えるようになったので、vimの中で

:r!echo {1..10}

とやると

1 2 3 4 5 6 7 8 9 10

が挿入されるようになった。他に有意義なzshの利用方法って何があるだろう?

Posted in cygwin, vim, Windows | Leave a comment |

DIまわりについて(1)

Posted on 2007/03/17 by smeghead

1年前くらいから、世の中の流れに従う形でDIコンテナ(Spring)を使用した開発を行っていました。極最近は、wicketやGuiceの良さが話題になっていて、新しい流れが出始めているようです。


ただ、「Spring,S2がいい」「今度はGuiceだ」と世の中の流れに沿っているだけでは自分の進歩がないので、背景を整理する必要があるはずです。


テストしにくいクラス

DIを使わない開発をする場合、やはりテストしにくいクラスを作ってしまいがちです。要するに、テスト対象が使用するインスタンスをテスト対象のクラスで気楽に生成してしまうため、テストで検証したいロジックを局所化できないという状況になり易いです。


これは、DIコンテナを使用することで解決してきたことです。


テストとは

オブジェクト指向でのテストとは、インスタンスがある状態にあるときに、メソッドを実行したら、その後期待した状態になるかどうかを確認することです。メソッドの仕事は前提条件の元で何らかの処理を行い事後条件を得ることであり、テストとは前提条件と事後条件を比較することです。なので前提条件と事後条件を設定したり参照したりできる必要があるはずです。


  • 前提条件
    • インスタンスの状態
      • private定義のインスタンス変数の状態は、設定できません。→問題
    • 引数
      • 引数は、テスト時に指定できるので、設定可能です。
  • メソッドのロジック
    • 前提条件に対して何らかの処理を行う。
  • 事後条件
    • 戻り値
      • 戻り値は、テスト時に取得できるので、参照可能です。
    • インスタンスの状態
      • private定義のインスタンス変数の状態は、参照できません。→問題

テストを難しくしていること

メソッドのロジックのテストを難しくしているのは、インスタンス変数の状態を操作できないためということが言えます。


解決策

テスト時に、前提条件となるインスタンスの状態を指定できれば、メソッドのロジックをテストし易くなります。

DIコンテナにinjectしてもらうことを前提とすることで、テストの前提条件を設定(mockに置き換えたり)できるようにしテストをし易くする。テスト対象のクラスからデータ依存(インスタンス変数や使用しているクラス)を排除して、テスト対象を純粋なロジックに限定するのに役立っている。

ネガティブに考えると、カプセル化を崩して、副作用のない構造化プログラミング 副作用のない関数にしてるって言えるのか?

  • 3/19追記:「副作用のない関数」の方が雰囲気的に正しそうなので修正。

密接な依存関係を持つ実装クラス

なんだっけ?

以前は、S2界隈のブログを見て理解したつもりになってたのですが、今ちゃんと説明できません。(??)


依存関係が引き起こす問題

各クラスが強い依存関係があると、修正を行うときのリスクや影響範囲が特定しにくくなるのでよくない。


原因

使うクラスをnewしてることにより、使うクラスの実装依存が高くなる。または、単純に設計に失敗していることも考えられる。


解決策

使うクラスをnewしちゃって結合が強くなる問題は、インスタンスの生成は使用する部分と切り離して、使う側ではinterfaceとして使用することで、依存関係が密結合になるのを防ぎます。具体的な解決方法として、インスタンス生成を別のところ(DIコンテナ)にしてもらいます。


DIしておけば、実装クラスの切り替えが簡単というのが売り文句だった気がしますが、実装クラスを切り替えたことはありません。

厳密にはinterface経由にすることで疎結合が実現できるわけではないはずです。設計に失敗していれば、それは設計からやり直しか?


まとめ

なんだか、まともに理解できていないし、所々間違っていそうな自分に気づいただけでも収穫かな。

つづく。

Posted in java | Leave a comment |

起動時にセッションを指定する方法

Posted on 2007/03/14 by smeghead

毎回、マウスを使ってセッションを選択するのが鬱陶しいと思い、起動時の引数などでセッションを指定できないのかと思い、調べたらビンゴの記事を見つけました。

http://blog.iwa-ya.net/2006/08/13/154507

putty -load <session name>

だそうです。

早速CraftLaunchに設定しました。

Posted in putty | Leave a comment |
« Previous Page
Next Page »

Pages

  • Profile

Archives

  • September 2018
  • August 2018
  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (93)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (29)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (2)
  • neta (5)
  • node (2)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (49)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (8)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (17)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

Subscribe

  • Entries (RSS)
  • Comments (RSS)

Pages

  • Profile

Archives

  • September 2018
  • August 2018
  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (93)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (29)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (2)
  • neta (5)
  • node (2)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (49)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (8)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (17)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

CyberChimps WordPress Themes

© 週記くらい@やーづ

With Google+ plugin by Geoff Janes