2014/06/20(金)再度 FreeBSD10.0 で clang 環境構築検証(3) ~ mod_perl2.0.9 は Apache 2.4対応

2017/10/12 17:31 サーバ運営・管理
mod_perlは、2.0.9 から Apache 2.4 対応になるようです。
つい最近の 6/12 に Apache2.4 対応のコードが本流にまとめられたようなので、早速入手してみました。正式提供ではないので、開発元から、subversion で取得するしか入手方法がありません。
〔入手方法〕
svn checkout https://svn.apache.org/repos/asf/perl/modperl/trunk ローカルdir
問題なく、 Apache 2.4.9 に組み込まれ、動作するようです。
20140619.JPG
# Windows 対応でリリースが1年以上遅延している模様・・・

mod_perl 2.0.9-dev は、ソースコードの修正が2箇所必要です。
○1つ目
ERROR from evaluation of Apache-Reload/Makefile.PL:
Use of uninitialized value in substitution (s///) at
Apache-Test/lib/Apache/TestRun.pm line 1100.
このエラーはかなり前から出ていて、一向に対処されないのですが、
以下のようないつもの暫定対処で対応です。
(Apache-Test/lib/Apache/TestRun.pm 1100行目付近)
    while (my($k, $v) = each %args) {
+     if (defined $v) {
        $v =~ s/\|/\\|/g;
        $body .= "\n\$Apache::TestConfig::Argv{'$k'} = q|$v|;\n";
+     }
    }
(2013/09/26(木)の拙作記事 Apache 2.4.6 + mod_perl2 でも紹介済み)

○2つ目
コンパイルが順調に進んでいるかのように思えるところで、最終段階(オブジェクトファイルリンク処理)で、
/usr/local/src/mod_perl-2.0.9-dev/src/modules/perl/mod_perl.a(mod_perl.o):
In function `modperl_startup':
mod_perl.c:(.text+0xe6): undefined reference to `modperl_io_apache_init'

/usr/local/src/mod_perl-2.0.9-dev/src/modules/perl/modperl_io_apache.h:37:16:
 warning: inline function
      'modperl_io_apache_init' is not defined [-Wundefined-inline]
MP_INLINE void modperl_io_apache_init(pTHX);
               ^
mod_perl.c:252:5: note: used here
    modperl_io_apache_init(aTHX);
のようなメッセージがかなり大量に出て、エラー終了してしまいます。
これは clang 環境固有のもので、gcc 環境では出ません。

原因はやや難しい話ですが、 __inline__ 属性を与えているC言語関数の取り扱いの問題になります。
__inline__ 属性を与えた場合、 clang ではコンパイル時の最適化処理途上でその属性を適用しないと決めたときに、外部シンボルとして登録しない仕様のため、リンクすると「シンボルが見当たりません」的な不可 解なエラーになるということです。

こちらの後半のほうに簡単な説明があります → [C++11対応記念] clang/LLVMのインストールとGMPを使って円周率ベンチ。 〔ぞうさんの何でもノート〕

具体的には、__inline__ 属性を外してしまうことで対処してしまいます。
(src/modules/perl/modperl_common_util.h 22行目付近)
-  #ifdef MP_DEBUG
+  // #ifdef MP_DEBUG
   #define MP_INLINE
-  #else
-  #define MP_INLINE APR_INLINE
-  #endif
+  // #else
+  // #define MP_INLINE APR_INLINE
+  // #endif
この件は、バグ報告したほうがいいかも・・・ですね。
当方は英語がダメダメなので、他力本願で誰かお願い・・・というところですが。。

これらの対処を行ってから、コンパイルを行うことで、問題なく Apache 2.4.9 + mod_perl 2.0.9-dev 環境が構築できます。

2014/06/19(木)再度 FreeBSD10.0 で clang 環境構築検証(2)

2017/10/12 17:28 サーバ運営・管理
OpenLDAP 2.4.39 と PHP 5.5.13 の configfure スクリプトは、FreeBSD 10 上では、基本的に誤認識します。具体的には、
『共有ライブラリ .so が作成されない』
という現象になります。

原因は、FreeBSD 10.x を configure スクリプト側で FreeBSD 1.x と認識することにあります。
こちらがズバリです → FreeBSD 10-Releaseで共有ライブラリが生成されない問題 解決
PHP 5.5.13 の場合は、上記で示しているとおり、
sed -e 's/freebsd1\*/freebsd1\.\*/g' -i .bak aclocal.m4 configure /build/libtool.m4
として、FreeBSD 10.x を FreeBSD 1.x として取り違えないようにすることでこの問題はあっさり回避できます。

また、OpenLDAP 2.4.39 の場合は、
sed -e 's/freebsd1\*/freebsd1\.\*/g' -i .bak aclocal.m4 build/openldap.m4
sed -e 's/freebsd1\*/freebsd1\.\*/g' -i .bak contrib/ldapc++/aclocal.m4
とやれば、同様にこの問題は回避されます。

ですが、これは gcc 環境では、どういうわけか出たり出なかったりで、正直今までよく判っていなかったというのが真相。。orz
前回は、PHP5.5 の .so ファイルを手動で作ったし、、

PHP 5.5.13 の場合、これでも いざ configure を実行すると、

checking for DB4 major version... Header contains different version

と出て、途中で止まってしまう場合がある。

これは、FreeBSD ports にて BerkeleyDB をインストールした場合に、ディレクトリ構成が、configure スクリプトが意図していない構造であるのが原因です。
この問題を解決するために、configure スクリプトに下記の追加を行います。
(BerkeleyDB 4.8.30 を ports でインストールした場合・31,287行目付近~)
     elif test -f "$i/include/db4.8/db.h"; then
       THIS_PREFIX=$i
       THIS_INCLUDE=$i/include/db4.8/db.h
       break
+    elif test -f "$i/include/db48/db.h"; then
+      THIS_PREFIX=$i
+      THIS_INCLUDE=$i/include/db48/db.h
+      break
     elif test -f "$i/include/db4.7/db.h"; then
       THIS_PREFIX=$i
       THIS_INCLUDE=$i/include/db4.7/db.h
       break

これらの対策をコンパイル前に講じることが、現時点でのリリースバージョンでは必要です。

2014/06/18(水)再度 FreeBSD10.0 で clang 環境構築検証(1)

2017/10/12 17:27 サーバ運営・管理
以前、こんな記事こんな記事 で、clang 環境構築検証した記事をもっともらしく載せましたが、実は旧環境が温存された状態。
したがって、検証の質としては低いのです。

20140617.JPG
ということで、今度は FreeBSD 10.0 をクリーンインストールしてやってみました。
今回から、BerkeleyDB 4.8.30 をPorts から入れることにしました。

特に問題が無かった(従来と同じ手順にて構築出来る)のは
・SpamAssassin 3.4.0
・ProFTPD 1.3.5
・PostgreSQL 9.3.4

BerkeleyDB 4.8.30 を Ports からインストールしたために手順の変更が必要なのは
・Courier-Authentication Library 0.66.1
・Maildrop 2.7.1
・dovecot 2.2.13

構築環境が FreeBSD10 に対応していないため、ソースコードなどの変更が必要なのは
・OpenLDAP 2.4.39
・mod_perl 2.0.9-dev
・Apache 2.4.9
・PHP 5.5.13
・postfix 2.11.1

といった状況になりました。

FreeBSD10 にて、BerkelayDB をports からインストールした場合、そのディレクトリ構成が標準と異なりますので、Ports以外でアプリケーションをソースコードから構築する際、環境変数でその旨をコンパイラに教 え込む必要があります。

具体的には、アプリケーションのうち、ソースコードから構築する際、configure スクリプトを最初に実行させるタイプのものは、環境変数 CPPFLAGS に include ファイルパスを列挙する必要があります。こんな感じです:
setenv CPPFLAGS '-I/usr/local/include -I/usr/local/include/db48 -I/usr/include'
また、Courier-Authentication Library 0.66.1 と maildrop 2.7.1 は、環境変数 LIBS に -lssl を指定する必要があります。こんな感じ:
setenv LIBS -lssl
こうしないと、どういうわけか、SSL ライブラリがまともにリンクできず、コンパイルが見かけ上成功してように見えても実際は失敗していた、という羽目になります。

2014/06/12(木)作業場の一部改良

2017/10/12 17:24 雑多なトピック
ここ最近、機器設計・開発の請負作業があって、それがひと山越えたので・・・
これは作業直前 2014/05/29 の状況。。20140612_1.JPG

場所が手狭な上に常に左斜め前のディスプレイを向きながらの作業のせいか、
肩こり、偏頭痛、腰痛が酷くなり、これは作業姿勢のせいだと確信し、
どうにかしてディスプレイを正面に持ってきて、作業場所をせめてA4ノートが広げられる程度のスペースが欲しいということで、棚などを設置しました。

これが 2014/06/12 の状況。
20140612_2.JPG

5/30 の夜に作業開始し、終わったのは、 6/1 の未明でした。
この体裁で2週間近く作業していますが、肩こりがするものの、以前よりは症状が軽く、偏頭痛や腰痛は出なくなりました。作業姿勢は重要です(苦笑)。

2014/05/28(水)なんぢゃこりゃ だがロシアらしい・・・

2017/10/12 17:23 一行放談
久々の投稿が、どうでもいい内容なんですが・・・orz
屋外ステージの模様。。。一見、演出かと思ったらどう見ても本物の雪っぽい。。


モスクワでは大晦日夜の恒例行事でこういうイベントを数箇所でやるらしい、、
軍人(?)が雪が降る中で・・・(以下省略)

Dschinghis Khan(チンギスハン或いはジンギスカン)は、この曲を持ち歌にしているドイツのユニットグループです。
以前、こちらでも紹介しました → http://radio-electronics.basekernel.ne.jp/entry/661

最初は一応練習はしたかと思われるレベルのドイツ語なんですが、途中でロシア語に変わっています :-)

2014/05/08(木)桜は満開です

北海道では、いまどきが桜の見ごろです。
これは近所の桜の木(北26条西8丁目 北向き)。遊歩道に植樹されています。
一昨日あたりが満開でした。ちょっと散り始めたかな・・・というところです。
この近辺は、つい1週間前までは、路肩に雪が残っていました。はい。

これは白っぽいのと、花びらの形から見て、染井吉野と思いますが、北海道で一般的なのはエゾヤマサクラ(もう少し色が紅色が濃い。オオヤマサクラとも言うらしい)ですね。
20140508_1.jpg

気候的に染井吉野は植生できる北限に近いのが札幌です。
このあたりは、桜の木が何本か植樹されており、遠景はこんな感じ。
20140508_2.jpg

見にくいですが、2種類の桜の木が植樹されています。

2014/04/24(木)TV放送の画素数-4Kとか8Kって??

2017/10/12 17:19 雑多なトピック
パソコンでは意識する方々も多いですが、TV放送については、多くの方々はあまり意識していないのではないでしょうか。

コンピュータディスプレイとTV受像機は似て非なる代物ですが、
表示する部分だけは、液晶であってもブラウン管であっても同じものです。

つまり、フルカラーを発色できる細かい点の集まりが縦横に並んでいる点は同じです。
精細でリアルな映像は単位面積あたりの点の数をより多くすることで実現できることから、現在はいかに単位面積あたりの点の数を多くするか、ということに開発競争の主力が注がれています。
題名の4Kとか8Kがこの画面上の点の数を示す名称になります。

○2011年までのアナログTV放送
ご存知の方も居られるかもしれませんが、
日本のTV放送は、米国で実用化されたNTSC方式を採用していました。
走査線(縦解像度の該当)数は 525。有効ライン数は 483。
横方向の解像度は 640 ピクセルでした。
DOS/V の画素数(640x480) の策定根拠は、おそらくここから来ていると思います。

○現在のディジタルTV放送
日本のディジタルTV放送は、NHKが開発した ISDB と呼ばれる方式で、現在は南米の殆どの国やアフリカの一部でも採用されています。
走査線数は 1125。有効ライン数は 1080。
横方向の解像度は 1920 ピクセル(衛星放送)または 1440ピクセル(地上放送)です。
ですから、1920x1080 がTV放送の画素数です。

ISDB には大きく、
ISDB-S(衛星放送)、ISDB-T(地上放送)、ISDB-C(ケーブルTV放送)、ISDB-TSB(地上ラジオ放送)の4種があり、更にワンセグ放送の技術仕様などの細則が定められているようです。

○単なるハイビジョンとフルハイビジョンの違い
ハイビジョンはNHKの商標で、HDTV(High Definision TV/高精細度テレビジョン) というのが技術的な正式名称のようです。

TV受像機のカタログを見たことがある方はご存知かと思いますが、
「フルハイビジョン対応」と書かれたものとそうでないものがあることに気づくかと思います。これは、受像機自体の画素数です。

フルハイビジョンの画素数は 1920x1080。
「単なる」ハイビジョンの画素数は、たいてい 1366x768 です。
純粋に販売価格低減を図るためと思われます。
また、1366x768 の画素数は、別名「HD」と言われます。
また、縦方向の画素数が 650以上であれば、「ハイビジョン」と名乗ってよいことになっています。

2013年までに発売されたTVは、28インチ未満であれば、多くが「単なる」ハイビジョンです。つまり、 1366x768 の画素数です。
今年(2014年)になって、フルハイビジョン仕様のものが増えてきました。
気になる方は確認するといいでしょう。

○ やっと4K・8Kの意味です・・
4Kは、画素数 3840x2160 のもの(派生もので 4096x2160 がある)、
8Kは、画素数 7680x4320 のもの(派生もので 8192x4320 がある)を指します。

「K」というのは、度量を表す際に 1000を意味する「キロ」のKです。
横方向が約 4000前後のものは4K,横方向が約8000前後のものは8Kとなります。
また、フルハイビジョン(1920x1080) 画面4枚分の表示能力があるので4K,8枚分の表示能力があるので8Kという言い方も出来ます。

画面を表示する際の情報量も現在のフルハイビジョンの4倍、8倍必要なので、伝送方法の圧縮や処理方法などの実用化試験などが現在進められているようです。

2014/04/23(水)コンピュータディスプレイの画素数

2017/10/12 17:16 雑多なトピック
20140424.jpg
これは、1920x1080 の画素数を持つ 23インチのパソコン用液晶ディスプレイですが、
最近はこの画素数のディスプレイが事実上の標準(デファクトスタンダード)になっていて、今後はこの画素数を基準に画素数が増えていくような勢いを感じます。

画素数は、一応標準化されてはいるものの、実際は、実にいろいろな規格が見事に派生・乱立しており、ここでは発達過程を記すために主なものを抜粋したものを掲載しておきます。

日本独自
画素数(規格名)コメント
160x100 NEC PC-8001 で採用
320x200(CGA)1980年代前半に発売された多くの 8bit パソコンで採用
640x200 1980年代前半に発売された高級8bit パソコンで採用
640x400(DCGA)MZ-2500,PC-9801 などで採用
1120x750 PC-98ハイレゾモード,FMR-60,FMR-70などで採用


上記の画素数は現在では、640x400,1120x750を除き、対応するディスプレイ自体が市販されていません。


アクペクト比 4:3 系列
画素数(規格名)コメント
320x240(QVGA)VGA の4分の1の大きさという意味で Quarter VGAという意味
640x480(VGA)DOS/V パソコンの標準表示モード
800x600(SVGA)Super VGA
1024x768(XGA)extented grafhic array。前世代の デファクトスタンダード。
1152x864(XGA+)
1280x1024(SXGA)17インチ-19インチディスプレイでの標準。アスペクト比5:4。
1600x1200(UXGA)Ultra XGA の意味だが、SVGA 4枚分の大きさになる。
2048x1536(QXGA)Quad XGA。XGA 画面4枚分という意味。


アクペクト比 16:9 系列
画素数(規格名)コメント
1280x720(HD 720p)FullHD(1920x1080) 画面の3分の2の大きさ。単に 720p と呼称することもある。
1366x768(HD)標準高解像度。現在はワンランク下の機器に採用されることが多い。
1600x900(HD+) 
1920x1080(FHD)Full HD。現在は、この画素数が標準になっている。TVのフルハイビジョンもこの画素数。
2560x1440(WQHD)25インチ以上の大型ディスプレイ向け。
2880x1620(3K)画素数が FullHD の3倍。
3840x2160(4K/QFHD/UHDTV 2160p)Full HD 4枚分の大きさ。
7680x4320(8K/UHDTV 4320p)Full HD 8枚分の大きさ。

2014/04/16(水)やっと積雪が無くなった

おおよそ、4ヶ月半ぶりに雪が消えました。
(日陰にはまだ残っているが・・・)
昨シーズンほどではなかったですが、今回の冬も積雪は多かったです。
ここ数年は、平年より多いです。
20140416.jpg

4月20日前後に雪の可能性が若干ありますが、それを過ぎれば、平野部で雪が降るほど寒くはならないでしょう。
ただ、札幌の場合、平年より気候的にはやや寒いまま推移しています。

2014/03/24(月)まだ積雪は多い

本日、午後の様子:
20140324_1.jpg
出入口に水溜りが出来ているので、あの場所だけでも雪割り(実質は氷割り)をしなければならないんですが、充分な時間がとれないので、放置状態です...orz

札幌付近は、この時期としては平年の2倍程度の積雪になっています。
今週は、高層天気図などを見ても1週間程度は暖気がずっと入り込む予報になっており、急速にこの雪が解ける感じです。

20140324_2.jpg
ということで、私設観測所の気温(右側)も、今年最高を記録しています。
設置場所の問題で、低めに大きくぶれるので、設置場所変えたほうがいいのだろか、と思案しています。ただ、百葉箱みたいなのが無いと、適切な設置場所が無いんですが。。