トップ «前の日(05-07) 最新 次の日(05-09)»

PC関係のメモ


図書館で勉強 / IMEツールバーの機能を呼び出すショートカットキー / データ構造 / 撮影会 / gccでC++のコンパイル / NULLを定義しているヘッダ

図書館で勉強

先日書いたとおり、日曜日なので図書館でお勉強開始。

先週と同じ「岩波講座ソフトウェア科学3 アルゴリズムとデータ構造」をメインに、近くにあった、「コンピュータ英語活用辞典」をアームレスト代わりに積んでおく。

アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)(石畑 清)

コンピュータ英語活用辞典(三島 浩/相磯 秀夫)

IMEツールバーの機能を呼び出すショートカットキー

Ctrl+F10

すぐ忘れるのでメモ。

http://homepage2.nifty.com/winfaq/c/ntperf.html#1376

データ構造

今日は基本的なデータ構造について勉強。

「岩波講座ソフトウェア科学3 アルゴリズムとデータ構造」で言うと「1.3 基本的データ構造」。

撮影会

昼食ついでにデジカメの撮影会。

公園を散歩しながらマクロモードを使って花などを撮影する。友人に貸りたIXY DIGITAL 600の性能の高さに驚く。

Canon IXY DIGITAL 600で撮影した写真(リサイズのみ)。黄色い花は普通のマクロ、白と紫の花はデジタルマクロを使って撮影。

IXY DIGITAL 600で撮影した写真1IXY DIGITAL 600で撮影した写真2

CONTAX SL300RT*で撮影した写真(リサイズのみ)。どちらもマクロモードを使って撮影。

SL300RT*で撮影した写真1SL300RT*で撮影した写真2

gccでC++のコンパイル

クラスにコンストラクタを実装して

gcc hoge.cpp

としたらエラーが出てコンパイルできない。

hoge.cpp: undefined reference to `vtable for Hoge'

Hogeはクラス名。

下記ページを参考に-lstdc++をつけるとコンパイルできた。

gcc hoge.cpp -lstdc++

標準ライブラリを使ってないのにstdc++が要るって言うのがよくわからないけどそういうことらしい。毎度指定するのは面倒(環境変数で解決出来る気も)だし出力ファイル名も変えたいから、Makefileを覚えて使おうかな。

NULLを定義しているヘッダ

何もインクルードしていないファイルをgccでコンパイルしたら

hoge.cpp:21: error: `NULL' undeclared (first use this function)

恥ずかしながら「NULLって処理系内部で定義されてるんじゃないの?」と思った。

そういえばどこかのヘッダーで

#define NULL 0

って定義してあった気がしなくもない。こういうときC言語をきちんと勉強してないことがばれる。K&Rを再読したほうがいいのかも。

で、どこで定義されてるのか考えてみた。stdio.hだけインクルードするコードでもNULLは使えた記憶があるので、stdio.hだろうか。と一瞬考えたがすぐに、多分stdio.hも他のヘッダーをインクルードしてるんだろうと思い直す。

調べてみたところstddef.hで定義されていることがわかった。大抵他のインクルードファイルから間接的にインクルードされるので、今まで気にしたことがなかった。

http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide50-1.html

NULL とはヘッダファイル stddef.h で定義された定数(マクロ)で,それ自体 NULLポインタ定数です。但し,NULLポインタ定数 NULL を使うには,次のヘッダファイルのいずれかを読み込むことが必要です。

stddef.h,stdio.h,stdlib.h,string.h,time.h,wchar.h
最終更新時刻: 2008年07月16日
コメント(5) [コメントを投稿する]

Before...

_ hajime [>drry 本当です。最近のデジカメ使うと自分って上手いじゃん!と調子に乗ってしまいます。 >_ あんまり深く考え..]

_ CEO [カメラはいい!最近特にそう思います。奥が深いし・・・。]

_ hajime [デジカメは昔のカメラと違って、いろんな設定を試してすぐにその場で結果を確認できるのがいいですね。]


Effective C++ 原著第3版 購入 / [Web制作]PhotoshopでRSSアイコンを作る手順 / [programming]品質工学 / [Web制作]高速道路フォント / [programming]Word/Excel等のバイナリファイルのフォーマット仕様 / [programming]vua.dll for VisualC++6.0 - ビルド番号自動更新アドイン

Effective C++ 原著第3版 購入

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)(スコット・メイヤーズ/小林 健一郎)

C++の書籍としては最も影響を受けたのがこれの第2版。今でもよく参照する。

第3版が邦訳されたと知って早速購入。

PhotoshopでRSSアイコンを作る手順

Photohop: RSS-Icon Standard in Variationen

高速道路フォント

5r4ce2[Fiber Force2] pumpCurry's Website - fontworks at hogera.com

高速道路の文字を再現しよう計画

Word/Excel等のバイナリファイルのフォーマット仕様

Microsoft Office製品(Word/Excel等)のファイルフォーマットはバイナリフォーマット((-但し2003以降はXMLベースになってたかもしれない。要調査。-))で、その仕様はMSDNで参照できる。また、これらを扱うためのライブラリもオープンソースで存在する。

vua.dll for VisualC++6.0 - ビルド番号自動更新アドイン

Win32工作小屋 - ビルド番号自動更新アドイン for VisualC++6.0

Tags: programming
最終更新時刻: 2008年09月06日

PostgreSQL 9.0.3をインストール

CentOS 5.6(on さくらVPS)にPostgreSQL 9.0.3をインストールした。

# tar xvfz postgresql-9.0.3.tar.gz
# cd postgresql-9.0.3
# ./configure

起動スクリプトをコピーする。

# cp contrib/start-scripts/linux /etc/init.d/postgresql

起動スクリプトを書き換える。

#PGDATA="/usr/local/pgsql/data"
PGDATA="/var/pgsql/data"

起動スクリプトに実行権限をつけて自動起動するように登録する。

# chmod 755 /etc/init.d/postgresql
# chkconfig --add postgresql

起動ユーザ/グループを作成する。

# groupadd postgres
# useradd -g postgres -d /var/pgsql postgres

postgresユーザでデータベースを初期化する。

# su - postgres
$ mkdir /var/pgsql/data
$ /usr/local/pgsql/bin/initdb -D /var/pgsql/data -E UNICODE --no-locale

ここまででサービスの起動が可能となるため、rootユーザで起動させてみる。

# /etc/init.d/postgresql start

再度postgresユーザに変更。.bash_profileに環境変数の初期化処理を追記する。

export PATH="$PATH":/usr/local/pgsql/bin
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=/var/pgsql/data
export MANPATH="$MANPATH":$POSTGRES_HOME/man
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"

確認を実施する。

$ psql -l
                              List of databases
   Name    |  Owner   | Encoding | Collation | Ctype |   Access privileges
-----------+----------+----------+-----------+-------+-----------------------
 postgres  | postgres | UTF8     | C         | C     |
 template0 | postgres | UTF8     | C         | C     | =c/postgres          +
           |          |          |           |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C         | C     | =c/postgres          +
           |          |          |           |       | postgres=CTc/postgres
(3 rows)

以上で完了。

最終更新時刻: 2011年05月06日