パッド

ウィンドウは物理画面や親ウィンドウの範囲内に収まっていなければならない.パッドとはそのような制約なしに自由な大きさで作成できる論理画面である.パッドの利点パッドの生成,操作,削除なんちゃってless パッドの利点 ウィンドウはかならず画面内に収まっていなければならないので,「後で表示するかもしれないが今は画面外にあるデータ」はなんらかの方法で確保しておくか,表示するときに取得,生成などをしなければならない.後者の場合は処理が複雑になりがちである.前者はシンプルに実装できそうだが,リソースを食いそうだ.パッドはこの前者の実装に便利である.すなわち,パッドを使用すると論理画面にまとめて表示データを格納しておいて,必要な分だけ物理画面で表示することが可能になる.しかも簡単に. パッドの生成,操作,削除 なんちゃってless スクロールのところでなんちゃってmoreを作成した.そしてパッドには上記のような利点がある.ということで,パッドを使用するサンプルはなんちゃってlessにしてみた. これはlessっぽい機能を持つ.C-n,C-p,C-v,M-vで画面を上下にスクロールする.そして’q’で終了する.また,画面右端での折り返しはしない.そのかわりC-f,C-bでの左右のスクロールを可能にしてみた.ちょっと残念なのが,冒頭のいくつかのdefine文だ.たぶんどっかのヘッダなどで定義されていると思うのだが,発見できなかった.また,ハマった点は,最初はrefreshしてからでないといきなりprefreshしても起動直後になにも表示されないということだった(サンプル中,main関数のswitch文の手前).ただし,何も表示されていない状態でキーを押すとファイルが表示される.

popenとpclose

パイプのopenとclose.popenとpclose読み込む書き出す popenとpclose popenとpcloseは指定したsystem関数にパイプ機能を加えた感じで使用できる.実際shell経由で引数のコマンドを渡すので,オーバーヘッドは大きいがワイルドカードなどを使用できる.で,パイプを使用すると,あるコマンドの出力を別のコマンドの入力に使用できる.例えばdmesg | headでは,dmesgの出力がheadの入力となりそしてそのheadの出力が端末に出力される. 読み込む popenはファイルストリームを開く.pcloseは閉じる.popenではファイルストリームが読み込み用か書き込み用かどちらかを選択する.読むか書くかと聞かれたら,なんとなくまずは読んでみたい気がするのは私だけだろうか.読み込み用で開く場合,popenしたプロセスはコマンドラインでは|の右側ということになる.以下,popenで読み込み用パイプストリームを開いた場合のサンプル. popenの第二引数に”r”を指定すると読み込みモードでパイプをオープンする.そしてこのとき読み込みようのファイルストリームが返る.失敗するとNULLを返す.以下実行結果.2003年 4月10日木曜日21:50:48JST 書き出す 読んだら書きたい.書き込み用でパイプをオープンしたプロセスはコマンドラインでは|の左側ということになる.以下サンプル. popenの第二引数に”w”を指定するとパイプを書き込みモードでオープンする.そして書き込みようのファイルストリームを返す.失敗するとNULLを返す.以下実行結果.Message: # ####################################################################################### ### ## #### ################# #### #### … More popenとpclose

beanタグライブラリ

beanタグライブラリはstruts-bean.tldに定義されている.こいつを使用すると,sessionにあるbeanなどから値を取り出せたりする.Sessionにいれた値を取り出すSessionにいれたBeanから値を取り出すSessionにいれたBeanからさらにBeanを取り出してそのBeanから値を取り出すActionFormBeanの値を取り出す Sessionにいれた値を取り出す あらかじめ,Actionクラスなどで,request.getSession().setAttribute(“hoge”,”fuga”);としておけば,JSPで とするとfugaが出力される. SessionにいれたBeanから値を取り出す あらかじめ,Actionクラスなどで,Sample sample = new Sample();request.getSession().setAttribute(“hoge”,sample);などとしておいて, とすると,hogeのgetFuga()が呼び出されて,その返り値が出力される.実は先に説明したSessionにいれた文字列を取り出す例は,ここで説明するパターンの特殊な場合である.つまり属性propertyを指定しなければ,nameで指定したオブジェクトがそのまま(toString())出力される. SessionにいれたBeanからさらにBeanを取り出してそのBeanから値を取り出す あらかじめ,Actionクラスなどで,Sample sample = new Sample();request.getSession().setAttribute(“hoge”,sample);などとしておいて,JSPで などとすると,まず一行目で属性idで指定した変数fooにhoge.getFuga()の返り値が格納され,二行目でfoo.getFooValue()の返り値が出力される. ActionFormBeanの値を取り出す JSPでは,そのJSPへforwardしたActionで指定したActionFormBeanは自動的にsessionに突っ込まれるらしく,こちらで突っ込むことなく使用できる.したがって,struts-config.xmlで … More beanタグライブラリ

ギガビットイーサネットってなんだ?

ギガビットイーサネットに関する基本調査ギガビットイーサネットってなんだ?PCIバスオートネゴシエーション機能について半二重通信と大域幅フローコントロール ギガビットイーサネットってなんだ? ギガビットイーサネットとは,1000BASE-??なイーサネットであり,IEEE802.3xで標準化されている.そして,媒体に応じて以下の4つがある. IEEE ケーブル 1000BASE-T 802.3ab カテ5e(UTPケーブル) 1000BASE-SX 802.3z マルチモードファイバ 1000BASE-LX 802.3z マルチモード/シングルモードファイバ 1000BASE-CX 802.3z 2芯平衡型同軸ケーブル で,PCクラスタとの関係が気になるのは1000BASE-Tである.最近は5000円以下のカードも出てきており,PCクラスタのコストパフォーマンスに与える影響は非常に興味深い.1000BASE-TのNICは製品によって,全二重と半二重のものがあるらしい. PCIバス 100BASE-TXを使用していて,ネットワークがボトルネックになっているシステムにおいて,ギガビイーサは有効な解決策となるかもしれない.だが,ギガビイーサにしたところで,次はPCIバスがネックとなって性能が期待した程あがらないかもしれない.ギガビイーサで必要となるPCIバス幅と32bit … More ギガビットイーサネットってなんだ?

Restlet

Restletは,JavaでRestアプリケーションを構築するための,軽量フレームワークである.これを使用すると,サーバ,クライアントのどちら側のRestアプリケーションでも簡単に作成できそうなので,試してみた.基本(Restlet 1.1.1)WADL拡張(Restlet 1.1.1)基本(Restlet 1.1.1)まずは基本.バージョン1.0と1.1では多少雰囲気が異なるようだが,機能が充実してそうなtestingの1.1.1を試してみる.はじめにいつもの2008-11-28T22:30+09:00 matsuまず,Restletについて簡単に調査したあと,入門の手始めとして例によってHelloしてみる.リソースの基本バリエーション2008-11-29T01:10+09:00 matsuRESTなんだから,まずはリソースに注目してみたい.Restletではリソースを表現であるRepresentationクラスのサブクラスがいくつかあるが,そのうち基本的なものを試してみた.Restletのアーキテクチャと設定ファイル2008-11-29T22:50+09:00 matsu何となく動かせるようになったので,Restletのアーキテクチャについて,基本から調査してみる.Restletの主要なクラスをじっくり見てみる(その1 RestletとFilter)2008-11-30T03:15+09:00 matsuフレームワークとしてのRestletでは,Restletクラスを継承して,いろいろな機能をもったRestletクラスが提供されている.それをガチャガチャと組み合わせて,RESTシステムを構築する.ということで,どんな機能を持ったRestletがあるのかを調査してみた.Restletの主要なクラスをじっくり見てみる(その2 RouterとRoute)2008-12-07T12:45+09:00 matsuRouterは複数のRouteを持ち,Routeは要求に応じてスコアを返す.Routerはスコアとルーティングモードに応じてRouteを選択し動かす.Restletの主要なクラスをじっくり見てみる(その3 FinderとHandler)2008-12-20T09:15+09:00 matsuそろそろREST(Representational State Transfer)と言っている割りに,いつになったらその「Representation」が出て来るんだ?と思えて来る.HandlerはそのRepresentationを扱うResourceの親.そしてFinderはHandlerを見つけて生成するRestletである.WADL拡張(Restlet 1.1.1)Restletのバージョン1.1で追加された機能として,WADLに関する拡張機能は比較的重要なものではないだろうか.この機能によって,WADLファイルを読み込んで,アプリケーションを自動的に構成できたりするようだ.サーバ側でWADLを使用してみる2008-11-29T00:20+09:00 matsuWADL拡張機能を使用すると,リソースクラスとWADLファイルを作成するだけでサーバ側restletを構築できるTOPページ不安火FeatureAutomakeAXISBASHスクリプトCommon LispC++C言語GDBGTKHibernateJFreeChartJNIMPEGNMSPerlPostgreSQLRestletSpringStrutsTaglibXMLXUL埋火PC Clusterベンチマーク調査ギガビットイーサネットの調査MPIで並列プログラミングSoftwarehpl_filterSiteGeneratorGCMonHKBSoftware(En)SiteGenerator

MPIで並列プログラミング

MPIによる並列プログラミングに関して調査してみた.MPI入門MPI入門MPIによる並列プログラミング入門.MPIってなんだ?2003-08-23T13:00+09:00 matsuMPIがなんなのかを調査した.MPIでhelloを作成してみる.2003-08-23T16:00+09:00 matsuhelloを出力する簡単なサンプルをとおしてMPIプログラミングを開始する.台形公式と並列計算プログラムの例2003-10-30T08:00+09:00 matsu台形公式で積分の近似値を求めることができる.そこで,台形公式による積分算出プログラムを作成し,それを並列プログラム化してみる.

SpringでのMIMEのサポート(Spring1.2.1)

SpringはMIMEもサポートしているらしいので,試してみた.SpringでのMIMEサポートメール送信処理の記述setTextサンプル実行 SpringでのMIMEサポート Springでの,MIMEサポートは以下のような状況である.MailSenderの実装クラスはJavaMailSender.MIME形式のメールを構築するためのヘルパークラスがある.このように,さほど大がかりなものではないが,文字コードの扱いに関して,APIとしてややこしい部分があるので,その点に注意. 本頁のサンプルでは,MIMEで非マルチパートメールとマルチパートメールを送信するものを作成した. メール送信処理の記述 メール送信処理を記述する,MimeMailBLImplを以下に示す. setText MimeMessageHelperを使用すると,いちいちsetTextなどをする際に文字コードを指定する必要がない. コンストラクタのものが設定される. MimeMessageHelper#setTextには,その設定が楽になった分,HTMLメールか否かの引数がある.setText(String text)通常のテキストを設定する.setText(String text, boolean html)第二引数で,HTMLメールか否かを指定する. 第二引数に応じて,Content-Typeがtext/htmlに変化する.setText(String plainText, String htmlText)プレーンテキストと,HTMLテキストの両方を設定する. これは両方メールに記述し,メールクライアントにて表示を選択するようなメールである. サンプル実行 … More SpringでのMIMEのサポート(Spring1.2.1)

JNDIにてDataSourceを取得する設定(Spring1.2.1)

Springにて,HibernateのDataSourceをJNDIで取得する方法を調査してみた.JNDIによるDataSourceの設定Tomcatでのセキュリティ設定Servletコンテキストの設定デプロイと動作確認 JNDIによるDataSourceの設定 以下に本頁のサンプルのbeans.xmlを示す. id値sampleDataSourceがポイントである. classをJndiObjectFactoryBeanとし,あとはJNDI名を指定するだけである. 本頁のポイントは以上である. あとは以下の各要素を設定すると動作確認ができる.Springを使用したサーブレットのサンプル作成Tomcatでのセキュリティ設定DataSourceの設定を含むServletコンテキストの設定デプロイと動作確認これらのトピックはそれぞれ別頁に記述されており,本頁のサンプルではそれらを総合して動作させる. Tomcatでのセキュリティ設定 本頁のサンプルではシステムプロパティや設定ファイルを読み込むので,PermissionErrorが発生するかもしれない. ここでの主題ではないので,ざっくりと以下のような設定を行う.grant codeBase “file:/WEBアプリケーションのパス/-” {permission java.security.AllPermission;};これはザルな設定なので,重要な環境では,必要最小限の許可のみを行うようにする. 設定ファイルは,Debianな環境では/etc/tomcat4/policy.d/04webapps.policyになると思う. Servletコンテキストの設定 デプロイと動作確認 まず,warファイルを作成する.$ ant warできあがるspringsample.warを,先でservlet.xmlで設定した${webapp.docbase}に配置する. … More JNDIにてDataSourceを取得する設定(Spring1.2.1)

BeanFactoryPostProcessorとPropertyPlaceholderConfigurer(Spring1.2.1)

BeanFactoryPostProcessorは,BeanFactoryをインスタンス化した後に,そのインスタンスを引数にとり,何らかの処理をするものである.アプリケーションの起動後の初期化パターンとして使えることがあると思う.BeanFactoryPostProcessorの一つ,PropertyPlaceholderConfigurerは,設定ファイルであるbeans.xmlでの設定値を更に外部プロパティファイルへと移動することが可能な機能を持つらしいので,BeanFacotryPostProcesssorの挙動確認を兼ねて試してみた.BeanFactoryPostProcessorの組み込みPropertyPlaceholderConfigurerサンプルドライバ BeanFactoryPostProcessorの組み込み BeanFactoryPostProcessorは,インタフェースであり,以下のメソッドを宣言している.void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)ここで,アプリケーションにBeanFactoryPostProcessorを組み込むというのは,以下の作業を指す.BeanFactoryPostProcessor具象クラスの作成. あるいはSpringFrameworkにある上記具象クラスの選定. 本頁のサンプルでは,あるいはSpringFrameworkにあるPropertyPlaceholderConfigurerを使用する. この詳細は後述.BeanFactoryクラスの生成.上で作成あるいは生成したBeanFactoryPostProcessorクラスの生成.BeanFactoryPostProcessorのpostProcessBeanFactoryを呼び出す. 引数は先に生成したBeanFactoryオブジェクトである.postProcessBeanFactoryメソッド内で何をするかは,各アプリケーション毎の要件による. で,上の手作業でハードコードする手順だと,BeanFactoryPostProcessorはBeanFactory生成後処理の,統一的な仕組みを提供するということ以外にあまり意味はない. ところが,BeanFactoryを拡張したApplicationContextは,上記の作業のいくつかを自動的に行ってくれる. すなわち読み込んだbeans.xmlにBeanFactoryPostProcessorの具象クラスがあればそれを検出,生成し,該当beans.xmlを読み込んだBeanFactoryを引数としてpostProcessBeanFactoryを実行してくれる. BeanFactoryPostProcessor自身もbeans.xmlに記述することで,柔軟に初期化処理のモジュール化やDIが可能となる. PropertyPlaceholderConfigurer PropertyPlaceholderConfigurerは,beans.xmlに設定シンボルを記述し,そのシンボルに別プロパティファイルのプロパティ値を埋め込む. 以下はPropertyPlaceholderConfigurerを使用する本頁のサンプルのbeans.xmlである. ${…}で記述された部分は,今までならそのまま文字列としてbeanにsetされていたが,PropertyPlaceholderConfigurerの働きにより,プロパティファイルの値に置き換えられる. 例えば,プロパティファイルにsampleBean.value1=HOGEとあれば,beans.xmlの${sampleBean.value1}という記述はHOGEと置き換えられて処理される. この置き換えのタイミングは,PropertyPlaceholderConfigurer#postProcessBeanFactory呼び出し時である. サンプルドライバ … More BeanFactoryPostProcessorとPropertyPlaceholderConfigurer(Spring1.2.1)

breakとcontinue

繰り返し制御breakとcontinueはfor文,while文,until文(このページではこの三つをループと呼ぶ)で使用できるコマンドである.breakcontinue break breakはループを抜けるように指示する.while :doecho hogebreakdone上の例で:はtrueコマンドと同じである.trueコマンドは必ずtrueを返す.すなわち上の例は無限ループだが,hogeと一回表示したあとbreak文でループを抜ける.breakは一つの数値パラメータをとることができる.この数値(正の整数)で抜けるループの数を指定することができる. continue continueは次の繰り返しに飛ぶように指示する.while :doecho hogecontinueecho fugadone上の例も無限ループである.hogeを表示したあと,continueによって次の繰り返しに飛ぶ.したがって,fugaと表示されることはない.continueも一つの数値パラメータをとることができる.この数値(正の整数)でどのループの次の繰り返しに飛ぶかを指定できる.