FC2ブログ

boostを入れる

ようやっとBoost C++ Librariesを入れようと。

とりあえず業務では必要とする場面が無く、正規表現が必要な場合はPerlでちょちょっとお茶を濁してきたんだけれども、ちとregexが必要になったので。

んで何に入れようか、というところで、ぐちゃぐちゃになってもいたましくないもの、ってことで候補は、
どちらもフリーなので、どっちかで使えればいいかと軽く考えていたんだが、
まずBCC55。最新のboostライブラリ(1.33.1)では非対応とのこと。orz
そんでもってVC8。これはbjamが対応してない。orz

結局cygwinのgccに入れることに。

cygwinのシェルからまずbjamのコンパイル。
bjamについてくるbuild.shを叩く。
%>./build.sh gcc

できあがったbjam.exeをboostのフォルダへ持っていって、
%>./bjam.exe -sTOOLS=gcc --prefix=/usr/ install


ここからコンパイルが始まり、ひとっ風呂浴びてもお釣りがくるほど時間がかかるが、とりあえずこれで完成。あとはeclipseにcygwin/binのパス設定してできあがり。

そのままだと、#include <boost/regex.hpp>としても実際のパス(/usr/include/boost-1_33_1/boost)へパスが通っていないので、とりあえずMakefileに書いておいて。

regexを使ったモジュールのコンパイル、リンクとも問題なし。
なんと簡単便利なものよのぉぉ
スポンサーサイト

I・O DATAのHD-PLC

I・O DATAからもPLCアダプターが出ましたね
PLC-ET/Mシリーズ

野々村氏のブログでも批判されているように、製品の説明はいいことだらけ
実際に買って試してみようか、って気になってしまう(^^;

I・Oの中身がPanasonic製なのかどうかも気になるところ。
筐体のデザインが若干異なるが、同一製品のような感じ。

そのうちあちこちから個人ユーザのレビューが上がってくるだろうから、しばらくアンテナ張って様子を見ていよう。

出てきたPLC

以前にPLCでも書いたが、PLC(Power Line Communication)

PanasonicからPLCアダプターが2006/12/09発売されるとのこと。

BL-PA100KT
Panasonic-ニュース-「HD-PLC」方式を採用したPLCアダプターを発売


HD-PLC(High Difinition Power Line Communication)という独自の(ノイズ制御?)アーキテクチャを用いているらしい。

方向としては宅内家電のネットワーク接続を実現するというもので、インフラというよりも既にゲーム機等に搭載されている無線LANの対抗馬的な位置。

実行速度がTCPで55Mbpsということなので、100M有線とまぁだいたい同等ということらしいが、これは実際使ってみないとわからん。
しかし今のところ使う予定もなく(^^;

一般家庭内だと持ち運び可能な無線LANに対して、移動する必要の無い家電製品がターゲットになるのだろうが、その辺の便利度はモノが揃ってきてみないとなんとも。
過去に登場した「インターネット冷蔵庫」の情けない例もあるし。

各社、凄いお金注ぎ込んでると思うんだが、どうなるもんやら。
ちなみに値段は実売1~1.5万円程度だろうと。うーむ、えぇとこやねぇ(^^;

OpenOffice.org 2.0.4

 Use OpenOffice.org
OpenOffice.org(日本ユーザ会)で、OpenOffice.org 2.0.4が公開されている。

2.0になってBase(Database~MS-ACCESS相当)が追加になったので、MS-SQL Serverへ接続してみたが動作としては全く問題なし。
MS-ACCESSだと下手に開いていると排他がかかって他所から更新できなくなってしまったりする事があるが、とりあえずBaseでTableを開いている間でも、他所からの更新処理は行われているようなので安心して使える。
ただ操作方法など慣れるには少々時間が必要かもしれない。まぁTable単位で開いて簡単なフィルタ設定して閲覧するくらいであればACCESSと大差なく使えるだろう。

2.0.4からはExportするPDFにパスワード設定が可能になったし、OpenDocument対応ということもあって業務用文書を取り扱うオフィススイートとしちゃ最適なんだが、現場ではまだまだ普及度が低い。ちうかMS-Office一辺倒。

いい加減にExcelで文書作るのやめないとさ...

プロトタイプ宣言の無い関数2

どっかで書いたよなー、と探したらあった。
プロトタイプ宣言の無い関数

本日出会ったのは、
#include < stdio.h >
...
sprintf(buf, "%s", (char *)getenv("MYENV"));

64bit機で、sprintfSEGV
こいつの問題は以前も書いたように、getenvのプロトタイプ宣言が無いこと。
getenvstdlib.hで宣言されているのにインクルードしていない。
従って、getenvは、
int getenv(void)
とコンパイル単位内では解釈されてしまう。
(この処理系でのintは4Byte、char *は8Byte)
char *(8Byte)がint(4Byte)に切り詰められ、それをchar *(8Byte)にキャストする、というとんでもない話。

ここで(char *)と妙なキャストをしてくれなければ、コンパイラは”型が違うよ”と警告してくれたりするのだけれども、キャストしてくれたおかげで通常のwarningレベルでは素通りしてしまう。

warningレベルを上げることでやっと、
no proto-type ...declarated implicitly...

というようなメッセージが吐かれる。
『プロトタイプ宣言が無いので、暗黙の宣言としちゃうよ』、そのまんまの意味。

件のソースは前後の様子から、stdlib.hをインクルードしていない為に出たエラー/ワーニングに対して内容も見ずに、char *にキャストしてコンパイラを黙らせたような雰囲気。
しかもこれベースになるライブラリ。涙も出やしない。
たまたま落ちてくれたからいいようなものの、うまい具合に落ちなかったりした日にゃ目も当てられない。

こういうのを見ると、C++があれだけキャストに敏感である理由が良くわかる。

###
さらにタチが悪いものに、同様にプロトタイプ宣言が無いままで
long n = atol(str);
ってぇのもある。
これもwarningレベルを上げなければ素通りである。しかもintの範囲の値(負の数含む)しか返さずに平然と動く

### 2006/11/19 追記
暗黙に「intを返す」とされるのはC99では未定義と変更されている。
C99対応コンパイラでは警告を出してくれるものと期待するが...んー(謎
プロフィール

f_yamaki

Author:f_yamaki

アクセスカウンタ
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク