apache起動時に
httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName
とFQDNが指定されていないと言われる場合
httpd.confに
ServerName host-name:80
を追加
2012年9月7日金曜日
[ports] 習うより慣れろ
ということで apacheのインストールをしてみた。いくつか壁にぶつかったが本質的な問題は以下
追記: config-recusiveしたのを削除したいときは、
cd /var/db/ports
rm -rf *
- ライブラリがインストールされない
- ライブラリがインストールされているが古い
- ライブラリがインストールされているがサーチパスに入っていない
まず一つ目 portsによるインストール方法
make config # コンパイルオプションの指定
make install clean # コンパイルしてコンパイル後に作業ファイルを削除
なお、依存関係のあるportsを再帰的にconfigしてくれる「make config-recursive」というおまじないも
追記: config-recusiveしたのを削除したいときは、
cd /var/db/ports
rm -rf *
次に2つ目
まず、古いバイナリを削除
make deinstall
そして、最新のソースを取得して、コンパイル
port fetch update
make install clean
Hint ) どこにどんなportsがあるかわからないときは、
本家サイトに行って検索
最後に3つめ
/etc/ld.so.conf
に望みのPathを追加後更新を反映するために下記を実施
ldconfig
また、portmasterというportsを管理するためのツールもあるらしい
まだまだ勉強が必要
2012年9月3日月曜日
Arduino始めました
今更感が果てしないですがArduino始めました
雑誌等で名前は聞いたことがあってこの度
あることをやりたくなってそれがArduinoでやるのが早そうなんで初めて見ました
そのあることは、だいぶ勉強が必要そうなので成功した折には、投稿するということで
秋葉原の千石電商に買いに行って来ました
事始めの課題としては、温度センサの値を「簡易Webサーバーから見れるようにする」です。
まず、買ってきたEthernetシールドのMACアドレスをメモします。
Arduino Uno上に実装してしまうと見えづらくなってしまうので注意が必要です。
こちらが、接続状況外観。Arduino Uno上にEthernetシールドを実装しております。温度センサには、「LM35DZ」(こちらは、秋月電子で購入)を使用。
こちらは、ブレッドボード側。
そして、こちらがArduino側。
きちんとLM35DZのデータシートを見て接続します。
次にArdunioのIDEのインストール。Arduinoのサイトより自分のプラットフォームの物をDLし、解凍。
なお、今回の開発は、Windowsで行なっています。次にArduinoとPCをUSBケーブルで接続します。ディバイスマニジャーを開き「不明なディバイス」と表示されているArduinoの項目を探して、プロパティより、「ドライバの更新」を選択。IDEのインストールディレクトリ内のdrivers\FTDI USB Drivers\を指定する。これでドライバのインストールは完了。ここで、セットされたCOMポートを確認しておく。
そして、\libraries\Ethernet\examples\WebServerディレクトリを自分の好きな開発用のディレクトリにコピーしてくる。これは、アナログポートの値を表示する簡易Webサーバーのサンプルである。
ここいらの情報は、適宜ググっていただきたい。
サンプルの変更ができたらいよいよ、プログラムをROMに書き込む。ここでIDEの「ツール-シリアルポート」ドライバインストール時に指定したCOMポートが選択されていることを確認する。
そして、ROMにプログラムを書き込み、Ethernetシールドに割り当てたIPアドレスにアクセスした結果が以下である。
analog input0が温度センサの出力である。Arduino のADコンバータは、量子化ビットが10bitである。そして、LM35DZは、今回の回路の場合0℃で0mV且つ10mV/℃で出力する。さらに入力電圧は、5Vである。
ゆえに温度は、
59/1024 x 5 x 1000 / 10 = 28.8 (℃)
となる。
雑誌等で名前は聞いたことがあってこの度
あることをやりたくなってそれがArduinoでやるのが早そうなんで初めて見ました
そのあることは、だいぶ勉強が必要そうなので成功した折には、投稿するということで
秋葉原の千石電商に買いに行って来ました
事始めの課題としては、温度センサの値を「簡易Webサーバーから見れるようにする」です。
まず、買ってきたEthernetシールドのMACアドレスをメモします。
Arduino Uno上に実装してしまうと見えづらくなってしまうので注意が必要です。
こちらが、接続状況外観。Arduino Uno上にEthernetシールドを実装しております。温度センサには、「LM35DZ」(こちらは、秋月電子で購入)を使用。
こちらは、ブレッドボード側。
そして、こちらがArduino側。
きちんとLM35DZのデータシートを見て接続します。
次にArdunioのIDEのインストール。Arduinoのサイトより自分のプラットフォームの物をDLし、解凍。
なお、今回の開発は、Windowsで行なっています。次にArduinoとPCをUSBケーブルで接続します。ディバイスマニジャーを開き「不明なディバイス」と表示されているArduinoの項目を探して、プロパティより、「ドライバの更新」を選択。IDEのインストールディレクトリ内のdrivers\FTDI USB Drivers\を指定する。これでドライバのインストールは完了。ここで、セットされたCOMポートを確認しておく。
そして、\libraries\Ethernet\examples\WebServerディレクトリを自分の好きな開発用のディレクトリにコピーしてくる。これは、アナログポートの値を表示する簡易Webサーバーのサンプルである。
ここいらの情報は、適宜ググっていただきたい。
サンプルの変更ができたらいよいよ、プログラムをROMに書き込む。ここでIDEの「ツール-シリアルポート」ドライバインストール時に指定したCOMポートが選択されていることを確認する。
そして、ROMにプログラムを書き込み、Ethernetシールドに割り当てたIPアドレスにアクセスした結果が以下である。
analog input0が温度センサの出力である。Arduino のADコンバータは、量子化ビットが10bitである。そして、LM35DZは、今回の回路の場合0℃で0mV且つ10mV/℃で出力する。さらに入力電圧は、5Vである。
ゆえに温度は、
59/1024 x 5 x 1000 / 10 = 28.8 (℃)
となる。
2012年8月27日月曜日
[gnuplot] 小技
pm3dでz軸をログ軸にする
set logscale cbpm3dでカラーバーに表示される数字のフォーマットを変更
set format cb "10^{%L}"
ylabelの位置を変えるset ylabel "hogehoge" -1,0
2012年8月26日日曜日
[c] 共有ライブラリの作成とライブラリ検索PATHについて
Ubuntu特有の作法でハマったのでメモ
まずは、ライブラリの作成
hello.h
hello.c
そして、共有ライブラリ作成。ここでは、ヘッダーファイルは、${HOME}/include/に置いておく。 出力するライブラリ名には、バージョンも含めた名前にしてみた。
use.c
そして、コンパイルが通り喜び勇んであせって
/etc/ld.so.conf.d/内に自分用の設定ファイルを適当な名前で作成してライブラリがあるPATHを記入する。
/etc/ld.so.conf.d/libmy.conf
hello.h
#ifndef HELLO_H #define HELLO_H void sayHello(); #endif
hello.c
#include#include"hello.h" void sayHello(){ printf("Hello!!\n"); }
そして、共有ライブラリ作成。ここでは、ヘッダーファイルは、${HOME}/include/に置いておく。 出力するライブラリ名には、バージョンも含めた名前にしてみた。
gcc -I ${HOME}/include/ -fPIC -shared hello.c -o ${HOME}/lib/libhello.so.1
そして、${HOME}/lib/にて、シンボリックリンクを作成。新しいバージョンができたらこのリンクを作り替える。
ln -s libhello.so.1 libhello.soさらにライブラリを使う側を実装。
use.c
#include"hello.h"
int main(){
sayHello();
return 0;
}
そして、コンパイル。
gcc -I ${HOME}/include -L${HOME}/lib -lhello use.c
-lで、「libhello.so」のlibと拡張子を除いたものを指定。-LでそのライブラリのPATHを指定する。そして、コンパイルが通り喜び勇んであせって
./a.outなどど実行すると。
./a.out: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directoryと叱られる。ライブラリの検索PATHに${HOME}/libが無いためである。ここで普通は、LD_LIBRARY_PATHに${HOME}/libを追加するのだが、Ubuntuでは、ldconfigを使うらしい。
/etc/ld.so.conf.d/内に自分用の設定ファイルを適当な名前で作成してライブラリがあるPATHを記入する。
/etc/ld.so.conf.d/libmy.conf
/home/hoge/libそして、設定を反映させるために
sudo ldconfigすると無事ライブラリを使用したプログラムを実行できる
./a.outまた、リンクするライブラリを確認するには、
ldd a.out
[c] 型の値範囲
バイナリデータを扱うようになって意識するようになったのでメモ
#include以下がi386環境での実行結果#include int main(int argc,char **argv){ printf("size of char: %d bit\n",CHAR_BIT); printf(" char range is %d -> %d\n",CHAR_MIN,CHAR_MAX); printf(" signed char range is %d -> %d\n",SCHAR_MIN,SCHAR_MAX); printf("unsigned char range is 0 -> %u\n",UCHAR_MAX); printf(" int range is %d -> %d\n",INT_MIN,INT_MAX); printf("unsigned int range is 0 -> %u\n",UINT_MAX); printf(" short range is %d -> %d\n",SHRT_MIN,SHRT_MAX); printf("unsigned short range is 0 -> %u\n",USHRT_MAX); printf(" long range is %ld -> %ld\n",LONG_MIN,LONG_MAX); printf("unsigned long range is 0 -> %lu\n",ULONG_MAX); return 0; }
size of char: 8 bit
char range is -128 -> 127
signed char range is -128 -> 127
unsigned char range is 0 -> 255
int range is -2147483648 -> 2147483647
unsigned int range is 0 -> 4294967295
short range is -32768 -> 32767
unsigned short range is 0 -> 65535
long range is -2147483648 -> 2147483647
unsigned long range is 0 -> 4294967295
以下がamd64環境での実行結果
size of char: 8 bit
char range is -128 -> 127
signed char range is -128 -> 127
unsigned char range is 0 -> 255
int range is -2147483648 -> 2147483647
unsigned int range is 0 -> 4294967295
short range is -32768 -> 32767
unsigned short range is 0 -> 65535
long range is -9223372036854775808 -> 9223372036854775807
unsigned long range is 0 -> 18446744073709551615
登録:
投稿 (Atom)


