Day: January 3, 2007

名前空間とヘッダファイル

C++における名前空間の扱いと,それに関連する比較的最近のヘッダファイルの扱いについて調べてみた.名前空間って何だ?ヘッダファイルのインクルード 名前空間って何だ? C++では,名前空間を扱える. 名前は名前空間にあり,名前空間が異なれば,同一の名前を別のものを指し示すものとして扱うことができる. 名前空間は以下のように指定する.namespace 名前空間名{…名前の宣言…}{と}で囲まれた部分で使用する名前は,namespaceに続く名前空間名で示される名前空間に属する名前となる. 指し示す際は,名前空間とともに名前を指定する.名前空間名::名前以下に名前空間を扱うサンプルを示す. 実行結果を以下に示す. ヘッダファイルのインクルード

C言語

C言語をやってみよう,ふと思い立った.かなり久しぶりだ.大学当時Cは講義であった.学生時代怠けまくった結果(?)私はCよりも,趣味でやっていたJavaの方が書いたコードの行数は多い.だが,やはり「たしなみ」としてC言語はやっておかねばなるまい.基本(?)ライブラリ編プロセス制御シグナルパイプIPCPthreadSocket端末制御cursesCUnitOpenSSLを使用したCプログラミングその他 基本(?)ライブラリ編 とりあえず,ライブラリにある関数をいろいろ試してみる.もちろん(?)Debian環境で. ファイル操作2003-07-20T15:13+09:00 matsuGNU/Linuxシステムでのファイル操作について.ここでは特にシステムコールを用いてファイル操作する方法について.標準入出力ライブラリでのファイル操作2003-07-20T15:13+09:00 matsu標準入出力ライブラリを使用するとファイル操作がしやすく,バッファリングなども効くので便利である.標準入出力ライブラリによるファイル操作 その22003-07-20T15:13+09:00 matsu標準入出力ライブラリによるファイル操作についてもっと.書式付き入出力とストリームエラー2003-07-20T15:13+09:00 matsuprintf族とscanf族による書式付き入出力と,入出力時のエラーについて.コマンドライン引数の取得とgetopt2003-07-20T15:13+09:00 matsuコマンドライン引数を取得する方法と,それを簡単に行なうライブラリ関数getoptについて.コマンドライン引数の取得 その22003-07-20T15:13+09:00 matsu関数getopt_longは長い形式のオプションの取得に便利な関数である.これはGNU拡張らしい.長いオプションは大抵–で始まる.環境変数2003-07-20T15:13+09:00 matsuHOMEやUSERなど,環境変数に応じた処理をしたくなることもあろう.なので,環境変数を取得したり設定したりできると嬉しい.日付と時刻2003-07-20T15:13+09:00 matsuプログラムによっては日付や時刻を取得する必要がある.コンピュータで日付や時刻を操作する場合は,「エポックの起点」からの経過秒(もしくはミリ秒)をもとに行うことが多いようだ(もちろんlocaleも考慮する).「エポックの起点」はシステムによるが,UNIXではGMT 1970年1月1日0時らしい.epochを辞書で引いてみたら,「ある特徴のある時代」らしい.ネットで調べると,「基準時刻」と訳してあったりする.こちらの方がわかりやすいだろうか.ユーザ情報2003-07-20T15:13+09:00 matsuユーザ情報というと,アカウント名,uid,gidなどである.これらの情報が実際のプログラミングでどう使用されるのかは,ちょっとわからないが,取得できないよりはできるほうがいい.ホスト情報2003-07-20T15:13+09:00 matsuプログラムを実行しているマシンの各種情報の取得の仕方.ロギング2003-07-20T15:13+09:00 matsusyslog関数によるロギングについてリソース情報の取得と設定2003-07-20T15:13+09:00 matsuプログラムを実行する際のリソース情報(とくにリソースの制限)を取得する必要がある場合がある.マイクロ秒の取得とナノ秒でのスリープ2007-05-13T13:50+09:00 matsutime関数やsleep関数は秒単位でしか処理できないが,ミリ秒とかマイクロ秒とか,より高精度な処理をしたいときのための関数,gettimeofdayとnanosleepを試してみたプロセス制御プロセスがプロセスを生んで殺してまた生んで…..そして死ぬ.関数system2003-07-20T15:13+09:00 … More C言語

AXIS

SOAPエンジンであるAXISを使用して,Webサービスを作成,提供する方法について調査していく.基本編基本編AXISを使用してSOAP-HTTPバインドのWebサービス構築方法について調査してみる.AXIS入門(AXIS 1.2)2005-06-10T23:30+09:00 matsuSOAPエンジンであるAXISをインストールし,サンプルを動かしてみた.TCPMon(AXIS 1.2)2005-06-11T16:15+09:00 matsuシステムの動作を確認,調査するために,入出力を押えることは重要である.TCPMonはAXISとともに配布されるSOAP電文を中継,送受信するツールであり,Webサービスを提供するシステムの入出力を押えるのに便利であるので,これを試してみた.JWSでWebサービス構築(AXIS 1.2)2005-06-12T21:00+09:00 matsuやはり何事も動くものが無くては楽しめない,ということで,JWSを使用して簡単なWebサービスを構築し,それにリクエストするクライアントを作成してみた.WSDDの記述(AXIS 1.2)2005-10-07T17:30+09:00 matsuJWSを使用してWebサービスを提供できるようになったので,次にWSDDを記述してみる.Beanのシリアライズとデシリアライズ(AXIS 1.2)2005-10-08T16:00+09:00 matsuSOAPにてJavaオブジェクトを送受信する場合は,XML文書とJavaオブジェクトを相互に変換する(シリアライズ,デシリアライズする)必要がある.今回はBeanのシリアライズ,デシリアライズの方法を調査してみた.カスタムシリアライザとカスタムデシリアライザの作成(AXIS 1.2)2005-10-11T23:30+09:00 matsuシリアライザとデシリアライザは,自作することもできるらしいので,試しに作ってみた.SOAP Messaging(AXIS 1.2)2005-10-12T23:00+09:00 matsu今まで見てきた例は,SOAP RPCと呼ばれ,Webサービス呼び出しがコード上では単なるメソッド呼び出しに見えるものであった.今回はSOAP Messagingと呼ばれる,送受信XML電文をコード上でDOMのDocumentオブジェクトとして扱う例を見てみる.SOAP MessagingにおけるSOAP Bodyの操作(AXIS … More AXIS

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台形公式で積分の近似値を求めることができる.そこで,台形公式による積分算出プログラムを作成し,それを並列プログラム化してみる.

ギガビットイーサネットの調査

PC Clusterはネットワークで接続されたPCの集合である.多くの場合,その通信性能は計算性能に大きな影響を及ぼす.そこで,最近お手頃価格となってきた1000BASE-TのPC Clusterにおける性能への影響を調査してみた.基礎知識とギガビットイーサネット製品計測基礎知識とギガビットイーサネット製品ギガビットイーサネットに関する基礎知識とギガビットイーサネット製品について調査した.ギガビットイーサネットってなんだ?2003-08-05T00:00+09:00 matsuギガビットイーサネットに関する基本調査メルコ LGY-PCI32-GTの調査2003-08-20T00:00+09:00 matsuJumbo Frames対応のGbE NICであるメルコのLGY-PCI32-GTについて調査した.メルコ LCI-G1000T32の調査2003-08-18T23:00+09:00 matsuGbE NICであるメルコのLCI-G1000T32について調査した.メルコ LCI-G1000T64の調査2003-08-18T23:15+09:00 matsu64bit PCI用GbE NICであるメルコのLCI-G1000T64について調査した.メルコ LSW-GT-8Wの調査2003-08-20T01:00+09:00 matsuメルコのGbEハブLSW-GT-8Wについて調査した.NETGEAR FS2108の調査2003-08-20T01:00+09:00 matsuNETGEARのGbEハブFS2108について調査した.PLANEX FXG-08TEの調査2003-08-20T01:00+09:00 … More ギガビットイーサネットの調査

BASHスクリプト

BASHスクリプトは強力なのでうれしい.日常生活で,ガリガリBASHスクリプトを書いて快適ライフを送るのだ.基本編応用編実践編 基本編 ちょっとBASHスクリプトプログラミングやってみる用.基本的な構文が中心.スクリプトの作成2003-07-20T15:13+09:00 matsuBASHスクリプトファイルの作成方法リダイレクトとパイプ2003-07-20T15:13+09:00 matsuリダイレクトとパイプによって,入力や出力の流れを制御することができる.BASHでの変数について2004-03-14T23:45+09:00 matsuBASHスクリプトにおける変数の取扱について説明する.条件,ステートメントブロックとif文2003-07-20T15:13+09:00 matsuBASHスクリプトでの条件式とステートメントブロックについて説明し,それをもとにif文の書き方を説明する.for文2003-07-20T15:13+09:00 matsuBASHスクリプトにおけるfor文の書き方while文とuntil文2003-07-20T15:13+09:00 matsuBASHスクリプトにおけるwhile文とuntil文breakとcontinue2003-07-20T15:13+09:00 matsu繰り返し制御breakとcontinueはfor文,while文,until文(このページではこの三つをループと呼ぶ)で使用できるコマンドである.case文2003-07-20T15:13+09:00 matsuBASHスクリプトにはswitch文に相当するのとしてcase文がある関数2003-07-20T15:13+09:00 matsuBASHスクリプトでも当然(?)関数を定義して呼び出すことができる.select2006-01-17T01:00+09:00 matsuselectを使用すると,メニューを表示してユーザに選択を促すようなスクリプトの記述が容易になるようなので,ためしてみた.応用編込み入ったプログラミング用.ちょっと込み入った話や重要なコマンドの紹介.スクリプトの実行と環境2003-07-20T15:13+09:00 matsuスクリプトが実行される際の環境について.シグナルのトラップ2003-07-20T15:13+09:00 matsuシグナルとは非同期で生成されるイベントである.シグナルはシステムによって生成される.ユーザがプロセスを生成するには,ctrl-zとかctrl-cなど,そしてkillコマンドなどがある.BASHスクリプトではtrapコマンドによってプロセスがどのシグナルを受け取ったらどんな処理を行うかをあらかじめ登録しておくことができる.展開2003-07-26T11:21+09:00 matsuBASHの変数展開機能は豊富で使いこなせると効率的なプログラミングができる.ただし,BASH独自の機能が多いので,他のシェルスクリプトへの移植性が下がる.実践編基本編,応用編を踏まえて実際にBASHスクリプトを作成してみる.バックアップをCDRに焼く2003-07-20T15:13+09:00 matsuここまでの記述をもとに,バックアップをCDRに焼くBASHスクリプトを作成してみる.TV番組欄チェックスクリプト2003-08-25T20:45+09:00 matsu私はとあるキーワードがTV番組欄にないか,しょっちゅうチェックしている.この単調なルーチンワークを自動化すべく,スクリプトを作成した.Context Switch for … More BASHスクリプト

埋火

ちょっとしたものを集めてみた.分類が割とアレだがあまり気にしない.システム管理メモCactusツール使用メモJava5.0GNU EmacsSSLHttpClientMingでFlashコンテンツ作成システム管理メモシステム管理作業を行った際の諸々のメモ.キャプチャーカード導入記2003-01-11T00:00+09:00 matsuキャプチャーカードを買って来た.目的は…..何だっけ?否,「できるかできないか」それがまず問題なのだ.設定ファイルinterfacesについて2004-03-06T01:08+09:00 matsu/etc/network/interfacesの記述方法には,いろいろと(とくにモバイルマシンで)便利なものがある.LVMとXFS導入記2004-04-25T21:00+09:00 matsu余っているHDDをLVMで管理し,ファイルシステムをXFSとしてみた.玄箱の導入2004-11-03T23:40+09:00 matsu玄箱を導入してみた.Debian GNU/Linux(Sarge)でApache1.3とTomcat4をmod-jkで連係する2005-06-10T13:30+09:00 matsuたぶんプログラムUpstreamと同じだが,設定ファイルの配置,パッケージ間の整合という意味で(私は)ちょっと混乱したので,メモしておく.Debian GNU/Linux(Sarge)でqmailをインストールしてみる2005-08-10T02:00+09:00 matsu恥ずかしながら私はメールサーバを構築したことがない.これではいろんな実験,検証をする際に不便な場合があるので,構築してみた.Debian GNU/Linux(sarge)でUMLを試してみる2006-06-10T17:50+09:00 matsuUML(User Mode Linux)は,Linux上で動作するLinuxということで,Debian GNU/Linux(srge)上でDebian GNU/Linux(sarge)を起動してみた.複数のUMLを立ち上げてみる2007-01-09T00:20+09:00 matsu複数のUMLを起動してネットワークで通信できるようにしてみた.CactusCactusでServletやTaglibのテストの自動化に挑戦してみた.Cactusによるサーブレットのテスト自動化2004-07-06T00:10+09:00 matsuCactusによるサーブレットのテストの自動化について調査してみた.Strutsアプリケーションのテスト自動化2004-07-07T05:00+09:00 matsuServletTestCaseの拡張であるCactusStrutsTestCaseを使用して,Strutsを使用したWebアプリケーションのテストを自動化に挑戦してみた.ツール使用メモいろいろなツールを使用した際のメモ.gnuplotを使ってみた2002-02-23T00:00+09:00 matsugnuplotはグラフを書いてくれる.SSHについて2004-04-25T23:25+09:00 … More 埋火

GDB

GDBの使い方を調べてみた.将来的にはデバッガを使えるようになって効率的な開発をしていくのだ.入門編応用編GDBじゃないけど……入門編基本的なGDBの使い方とにかくちょっと使ってみる2003-07-20T15:13+09:00 matsugdbをとにかくちょっと使ってみた.breakポイント2003-07-20T15:13+09:00 matsuおそらく多くのデバッグ作業はbreakポイントとステップ実行で足りるものではないだろうか.ここではbreakポイントの設定方法を中心に記述する.breakポイントはいろんな方法で指定できるようだ.watch2003-07-20T15:13+09:00 matsu変数値の変化を追跡できるとうれしいかもしれない.continueとステップ実行2003-07-20T15:13+09:00 matsubreakした後処理を続けるにはcontinueで継続実行するか,step実行する.スタック2003-07-20T15:13+09:00 matsuJavaのExceptionクラスのprintStackTrace()は重宝する.で,gdbを使用するとCでもそれができる.シグナル2003-07-20T15:13+09:00 matsugdbではシグナルの制御もできる.ソースの表示2003-11-24T01:06+09:00 matsugdbからソースを表示できると嬉しい.GNU Emacsのgdbモード(?)を使用するとすごく便利でカッチョイイのだが,どのマシンにもGNU Emacsがあるとは限らないので,そんなときのためにソースの表示方法を示しておく.データの表示2003-07-20T15:13+09:00 matsuデータの表示ができないとデバッグもままならないしれない.処理を変更する2003-07-20T15:13+09:00 matsuデバッグ上で処理を変更してうまくいったらソースに反映する,なんてできると嬉しい.コマンド定義と初期化ファイル2003-07-20T15:13+09:00 matsu複数のgdbコマンドをまとめて定義したりgdb起動時に初期化ファイルに書いたコマンドを実行したりするとうれしい.コア2003-10-25T13:00+09:00 matsu多くのシステムにはgcoreというコマンドがあって,それを使用すると指定したプロセスのコアファイルを取得できるらしい.GNU/Linuxシステム(少なくとも私のマシン)には,gcoreはないが,gdbを使用すると容易にコアファイルを取得できる.さらにgdbにコアファイルを渡すことで,ダンプ時点のプロセスの状態を調べることができる.応用編入門編の事柄を踏まえて,GDBを使い込んでみたい.GDBによるテスト自動化への試み2004-01-20T23:45+09:00 matsu…GDBの機能を使用すると,テストを自動化できないだろうか…そんな疑問がよぎったのでちょっと試してみた.attach2003-11-29T21:00+09:00 matsuなんらかの理由でgdbからいきなり起動できないプログラムや,今運用環境で動いているプログラムをデバッグしたい場合などには,動いているプロセスにattachしてデバッグすることができる.GDBじゃないけど……GDBとは直接関係ないが,デバッグに役立ちそうなTIPsプロファイル(gcc)2003-07-20T15:13+09:00 matsuプログラムのパフォーマンスを効率的にあげるには,多く呼び出される関数や一番重い処理をする関数をチューニングする必要がある.ここではgccのプロファイルという機能を用いて呼び出し回数や実行時間を調べるための方法を書く.プログラムのフロー(cflow)2003-11-08T13:20+09:00 matsuctagsやetagsなんてすごいものがあるんだから,これぐらいできるだろうと思っていたら,やっぱりあった.cflowはある関数がどんな関数をコールするかを解析して表示してくれる.すなわちプログラムのフローを表示してくれる.cflowは結構古くからあるらしく,いろんな実装があるが,今回もcflow_2.0-15_i386.deb(これで一意に特定できるのかな?)を使用する.

Common Lisp

Lispを学んでどうするのか…emacsをカスタマイズしまくることぐらいしか思い浮かばないが,その思想等を学ぶことは何かと役に立つはずだ.というわけで,Emacs LispはおいといてCommon Lispをやってみる.基本編データ構造詳細入門編基本編なにはともあれCommon Lispでいろいろな式を書いてみる.準備2003-07-20T15:13+09:00 matsu実行環境についての記述とサンプルのための入出力についての記述.式と評価2003-07-20T15:13+09:00 matsu式の記述方法とその評価.データ2003-07-20T15:13+09:00 matsuLispにおけるデータについて概観する.変数の定義と代入2003-08-24T22:00+09:00 matsuLispにおける局所変数,大域変数,大域定数の定義と代入について.リストオペレータ2003-08-24T17:30+09:00 matsuリストオペレータについていくつか.if式2003-07-20T15:13+09:00 matsuLispプログラムは全てリストなので,if文といわずif式という.反復2003-08-24T21:00+09:00 matsuLispにおける反復の表現方法.関数の定義と呼び出し2003-08-24T20:25+09:00 matsuLispにおける関数の定義と呼び出しについて.練習 リストの最大値を返す2003-09-15T04:00+09:00 matsuここまで記述したLispの基本を踏まえて練習をいくつかやってみる.この頁ではリストの最大値を返す関数を作成してみる.練習 リストの要素のソート2003-09-15T06:00+09:00 matsu練習としてリストの要素をソートしてみる.データ構造LISt Processorという名前通り,リストはLispにおける基本的かつ中心的なデータ構造である.ここではコンスを通してまずリストについて前よりも詳しく記述し,さらにLispにおけるさまざまなデータ型やデータ構造についても記述する.コンス2003-09-23T18:30+09:00 matsuLispのリストはコンスと呼ばれる一対のポインタで構成される.このことを詳しく見ていくと,Lispにおけるリストをもう少し深く理解できる.リストの実体2003-10-08T21:00+09:00 matsu二つのオブジェクトへのポインタがあるとき,そのポインタが指す先は同じ実体なのか,同じ値の異なる実体なのか,といった疑問を解決してみたい.リストへのアクセス関数2003-10-11T18:00+09:00 matsuリストの任意のコンスや要素へのアクセスを可能にする関数の紹介.キューの実装にみる破壊的な関数2003-10-12T06:00+09:00 … More Common Lisp

PostgreSQL

PostgreSQLをやってみたいと思って早一年半,ようやく重い腰をあげてみた.引っかかっていたのは,DBで遊ぶためのデータがない,ということだ.この問題は依然残っているが,その内いいネタがなんか見付かるだろう.導入編PostgreSQLでSQL入門応用編メンテナンスlibpqを使用したDBアクセスプログラミングecpgを使用したDBアクセスプログラミングJDBCを使用したDBアクセスプログラミング 導入編PostgreSQLの導入についてインストールと設定2003-07-20T15:13+09:00 matsuPostgreSQLのインストールと設定について.psql2003-07-20T15:13+09:00 matsuPostgreSQLのフロントエンドpsqlについて.ちょっと使ってみる2003-07-20T15:13+09:00 matsupsqlでPostgreSQLに接続していろいろ試してみる.GRANTとREVOKE2003-07-20T15:13+09:00 matsuテーブル毎にユーザのアクセス権を設定できる.アクセス権を与えるのがGRANTで奪うのがREVOKEである.PostgreSQLでSQL入門恥かしながら,SQLに関してほとんど忘れてしまったので,PostgreSQLを実際に使用しながらSQL入門してみる.問題作成2003-12-07T00:00+09:00 matsuこのページでは練習用DBの問題作成を行なって,以降のページでそれをPostgreSQL上に構築し,その過程でSQL入門していこうと思う.テーブル作成2003-12-29T14:35+09:00 matsu制約とその指定方法について簡単に記述し,作成した問題に対して,テーブルを作成してみる.データ投入2003-12-13T20:50+09:00 matsuようやく準備ができたので,データを投入してみた.SELECT2003-12-14T11:15+09:00 matsuDBの構築ができたので,ここから本格的にSQLを試していこうと思う.まずはSELECT.SELECTその22003-12-14T21:50+09:00 matsuSELECTに関して前頁で書ききれなかったことを.表の演算2003-12-23T18:00+09:00 matsuなんかアレなタイトルだが,とにかく表を結合したりしてみた.UPDATE2003-12-23T20:30+09:00 matsuDBのレコードの更新にはUPDATEを使用する.DELETE2003-12-23T21:00+09:00 matsuDBのレコードの削除にはDELETEを使用する.VIEWとRULE2003-12-27T11:00+09:00 matsu仮想的なテーブルVIEWを使用すると頻繁に使用する複雑なSQL文の記述が楽になったりする.RULEはVIEWに対するINSERT,UPDATE,DELETEを行なうのに使用する.トランザクションと隔離レベルとロック2003-12-28T16:00+09:00 matsuPostgreSQLでのトランザクションについて調査してみた.さらにトランザクションの並列実行時の問題とそれに対処するためのトランザクション隔離レベルとロックについても調査した.カーソル2003-12-29T13:30+09:00 matsuSELECTではLIMITを使用しなければ,選択レコードを一気に出力する.これを任意の件数ずつ取り出すようにするには,カーソルを使用する.テーブルに関するTips2003-12-29T15:50+09:00 matsu一時テーブル,SELECT文の結果からテーブルを作成,既存テーブルの属性変更などをしてみた.参照整合性制約について2003-12-29T22:25+09:00 matsu参照整合性制約に関して,チェックの遅延と複数の外部キーがある場合の注意点について.シーケンスとシリアル型2003-12-30T17:00+09:00 matsuシーケンスという連番自動生成機能とシーケンスによるシリアル型について.継承2004-10-30T17:00+09:00 … More PostgreSQL