2014/06/30(月)PC-BSD10 を入れてみた(2)-日本語入力環境

PC-BSD で日本語を扱えるようにするには、幾つか設定をしなければなりません。
このあたりも面食らったのですが、言語や文化に依存するローカライズ環境ですので、ある程度ユーザ数が増えないと対応ということにはならないですね。。

以下、試行錯誤による記録ですので、余計なことや不足している内容があるかもしれません。

先ず、ログインページでロケールとキーボードレイアウトの設定をする必要があります。
ログイン画面の左下に注目すると・・・
20140701_1.JPG
ロケールとキーボードレイアウトを設定する項目があります。

ロケールは、
20140701_2.JPG
のように Japanese(ja) を選択、

キーボードレイアウトは、
20140701_3.JPG
のような選択をします。

これで、日本語の表示は出来るのですが、これだけでは日本語入力が出来ません。
何せ GUI 環境の知識・ノウハウが殆ど無いので、面食らったんですが、更に IBus の設定を行わなければなりません。

IBus というのは、Unix/Linux 系における「インプットメソッドフレームワーク」というもので、文字入力インタフェースをアプリケーションレベルで扱いやすくする仕組みのものらしいです。
IBus の設定は PC-BSD コントロールパネル → IBus の設定 で行います。
3つの画面全てに設定する必要があります。
先ず、最初の画面:
20140701_4.JPG
SHIFT キー + SPACE キーで入力切替を行う設定になります。
PC-BSD を以前から使っている人は、この設定がいいでしょう。
下の2つのチェックボックスは入れたままにすることをお勧めします。

次に、インプットメソッドの画面:
20140701_5.JPG
インプットメソッドの選択をクリックし、Japanase にマウスカーソルを選択すると、4つほど候補が出てきます。そのうちの2つを上記のように選択します。

最後に、詳細の画面:
20140701_6.JPG
システムキーボードレイアウトを使用する のチェックは外します。
これをチェックすると、英語圏のキーボードレイアウトになり、上手く入力できません。

設定を行ったあと、一旦ログアウトし再度ログインすることでこの設定が有効になります。
SHIFT + SPACE で IME 入力のON/OFF が出来るはずです。

また、PC-BSD 10 の日本語環境構築については、以下が参考になります:
PC-BSD 10 で日本語環境を整える。 〔ふうせん Fu-sen.〕

2014/06/29(日)PC-BSD10 を入れてみた(1)

FreeBSD が 10 になって久しくなりましたが、こっちのほう(PC-BSD) はどんなもんかということで、、
20140630_2.JPG

PC-BSD 8 以来ですが、PC-BSD 8 では、時折 GUI インタフェースの起動に失敗し、また日本語環境の構築が面倒だったのですが、PC-BSD 10 では、多少緩和されているようです。
正直なところ、まだ万人にお勧めできるレベルではありません。
だけれど、「もう少し」というところまで洗練されてきてはいます。

なにより、動作安定度が良くなっています。
インストールも正直面食らう内容があります。

まず、
・メモリ馬鹿食いで有名な ZFS ファイルシステムがデフォルト!
 しかも UFS なんぞ選べない!
・HDDの空き容量が(クライアントモデルの場合)50GB 以上無いとインストールできない(?)
・インストール時に選んだ言語を本環境にまともに引き継がない(?)

ZFS というのは、サン・マイクロシステムズが開発したストレージ(ファイル)管理システムで、まともに性能発揮するには、少なくとも 4GByte、推奨で最低 6GByte の物理メモリが必要と言われる代物です。
なので、当方のメモリ 1GByte なマシンには使い物にならないか、に思われたわけです。

ですが、実際にインストールして、起動させてみると、
ZFS NOTICE: Prefetch is disabled by default if less than 4GB of RAM is present;
to enable, add "vfs.zfs.prefetch_disable=0" to /boot/loader.conf.

のようなメッセージが出て、どうやら支障がないようになっている模様。
実際に大量のファイルを移動させてみたりすると、少し遅いという感はあるが、実用上問題になるほどではありません。
FreeBSD 10 で導入された、高速なファイル圧縮・伸張アルゴリズムが効いているらしいです。
また、ZFS にすると、ディスク領域の有効利用や領域拡張、RAID やミラーリングの構築がとても簡単になります。

前書きが長いですが、インストール時には GPT パーティションにてインストールするようにします。そうすることで後々の苦労が半減します。
2TByte 超えの HDD をサポート或いはUEFIブートをサポートするマザーボードであれば、たぶん、もれなく GPT に対応しているはずです。
#今どきは MBR ではなく、GPT に技術トレンドが移っているようです。

さて、無事にインストールして、パスワードなどの初期設定が済むと、以下のようになります。
20140630_1.JPG

インストールしたマシンのHDDは 80GByte × 2 なので、どうにかしてディスクの増設をしたい。
以下の手順で追加できます。
ZFS だから、手順さえ判れば、UFS のHDD追加よりも簡単です。
先ず、お気に入り → コンソール で、CUI端末を開き、root になり、以下を実行します。
# gpart create -s GPT ada1

HDDデバイス ada1 に GPT パーティションレコードを生成します。
エラーになる場合は、
# gpart destroy -F ada1

として、パーティションを強制削除します。

# gpart add -t freebsd-zfs ada1

HDDデバイス ada1 に ZFS パーティションを作成します。
サイズを指定していないため、ディスク全体にZFSパーティションを生成します。

# zpool add tank ada1p1

ZFS のストレージプール名 tank にada1 の割り当て領域を追加します。
PC-BSD では、デフォルトの ZFS プール名に tank が使われています。
これだけで領域拡張完了です。

以下のように、領域が拡張したことがわかります。
20140630_3.JPG
但し、領域変更と削除は少し面倒です。

2014/06/26(木)tenki.jp のRSS サービスは 5/13 で終了していた・・

弊社サイトのトップページに表示していた札幌の天気予報ですが、
元データを引っ張ってくるのに tenki.jp の RSS フィードを使っていました。
#利用規約的には、グレーゾーンでした。

誰も指摘してくれませんし、色々と業務があるので、気付かなかったわけですが、
新たな取得元の目処が付いたところです。今度は利用規約的にも問題無し。
#表向き法人サイトだし、データ取得に全くカネかけられないとなると、途端に提供元が限られるのが日本の現状・・・

そのうち、公表できると思います。
以下は、今まで使っていた RSS フィードの天気コード一覧。
報道機関各位に気象情報を提供する際、このコードが使われているようです。

今回、目処をつけた取得元では、天気コードではなくて、文字列で来るらしい。
正直、面倒くさいです。取得するためには、こちらで当該電文処理を行うサーバアプリケーションを先に構築しないといけません。。それも中身がかなり複雑だが情報は豊富。
自分メモとして天気コードを張っておきます。

100 晴れ
101 晴れ 時々 曇り
102 晴れ 一時 雨
103 晴れ 時々 雨
104 晴れ 一時 雪
105 晴れ 時々 雪
106 晴れ 一時 雨か雪
107 晴れ 時々 雨か雪
108 晴れ 一時 雨か雷雨

110 晴れ のち時々曇り
111 晴れ のち 曇り
112 晴れ のち一時 雨
113 晴れ のち時々 雨
114 晴れ のち 雨
115 晴れ のち一時 雪
116 晴れ のち時々 雪
117 晴れ のち 雪
118 晴れ のち 雨か雪
119 晴れ のち 雨か雷雨
120 晴れ 朝夕 一時 雨
121 晴れ 朝の内一時 雨
122 晴れ 夕方一時 雨
123 晴れ 山沿い 雷雨
124 晴れ 山沿い 雪
125 晴れ 午後は雷雨
126 晴れ 昼頃から雨
127 晴れ 夕方から雨
128 晴れ 夜は雨
129 晴れ 夜半から雨
130 朝の内 霧 後 晴れ
131 晴れ 明け方 霧
132 晴れ 朝夕 曇り
140 晴れ 時々 雨で雷を伴う

160 晴れ 一時 雪か雨
170 晴れ 時々 雪か雨
181 晴れ のち 雪か雨
200 曇り
201 曇り 時々 晴れ
202 曇り 一時 雨
203 曇り 時々 雨
204 曇り 一時 雪
205 曇り 時々 雪
206 曇り 一時 雨か雪
207 曇り 時々 雨か雪
208 曇り 一時 雨か雷雨
209 霧
210 曇り のち時々 晴れ
211 曇り のち 晴れ
212 曇り のち一時 雨
213 曇り のち時々 雨
214 曇り のち 雨
215 曇り のち一時 雪
216 曇り のち時々 雪
217 曇り のち 雪
218 曇り のち 雨か雪
219 曇 り のち 雨か雷雨
220 曇り 朝夕一時 雨
221 曇り 朝の内一時 雨
222 曇り 夕方一時 雨
223 曇り 日中時々 晴れ
224 曇り 昼頃から雨
225 曇り 夕方から雨
226 曇り 夜は雨

227 曇り 夜半から雨
228 曇り 昼頃から雪
229 曇り 夕方から雪
230 曇り 夜は雪
231 曇り海上海岸は霧か霧雨

240 曇り 時々雨で 雷を伴う
250 曇り 時々雪で 雷を伴う
260  曇り 一時 雪か雨
270 曇り 時々 雪か雨
281 曇り のち 雪か雨
300 雨
301 雨 時々 晴れ
302 雨 時々 止む
303 雨 時々 雪
304 雨か雪

306 大雨
307 風雨共に強い
308 雨で暴風を伴う
309 雨 一時 雪

311 雨 のち 晴れ

313 雨 のち 曇り
314 雨 のち時々 雪
315 雨 のち 雪
316 雨か雪 のち 晴れ
317 雨か雪 のち 曇り


320 朝の内雨 のち 晴れ
321 朝の内雨 のち 曇り
322 雨 朝晩一時 雪
323 雨 昼頃から 晴れ
324 雨 夕方から 晴れ
325 雨 夜は晴
326 雨 夕方から雪
327 雨 夜は雪
328 雨 一時強く降る
329 雨 一時 みぞれ


340 雪か雨
350 雨で雷を伴う

361 雪か雨 のち 晴れ

371 雪か雨 のち 曇り
400 雪
401 雪 時々 晴れ
402 雪 時々止む
403 雪 時々 雨

405 大雪
406 風雪強い
407 暴風雪

409 雪 一時 雨

411 雪 のち 晴れ

413 雪 のち 曇り
414 雪 のち 雨





420 朝の内雪 のち 晴れ
421 朝の内雪 のち 曇り
422 雪 昼頃から雨
423 雪 夕方から雨
424 雪 夜半から雨
425 雪 一時強く降る
426 雪 のち みぞれ
427 雪 一時 みぞれ





450 雪で雷を伴う

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倍必要なので、伝送方法の圧縮や処理方法などの実用化試験などが現在進められているようです。