ThinkPad X60sとFedora15

Counter


もくじ
イントロダァクション
手に入れた端末
うんちく
AC電源
Fedora 15(32bit)のインストール
WLAN設定
Audacityのインストール
UA-1Gで録音
MonoDevelopのインストール
MonoDevelopでC#のソースを動かす
Wineのインストール
LibreOfficeのインストール
MOZCのインストール
おわりに
番外:指紋認証デバイスの追加・低消費電力化
番外:ファイアウォール設定ツール
番外:ログインできないときは
番外:Thinkpadの特殊キーを使いたいとき
番外:ネタ
番外:JDをビルド死体
番外:FTPサーバ
番外:Sambaサーバ
番外:HTTPサーバ(Apache) + futaba.php
番外:Geditでgrepしたい
番外:Qt入れてみよう
番外:数値計算とか

イントロダァクション
熱い夏ももうじきですね。今年は節電ムードで電車もあついあつい。
ふと、UA-1Gを使ってスタジオで録音したくなったのでノートPCを探しにアキバへ。
そこにあったのはシュタインズゲートの選…いや、ジャンクPC屋に埋もれてたX60sでした。
よし、今回はちょっとまゆしぃを救い・・・いや、リッチなLinuxマシンでもつくろうと思いつき購入。
やってくうちにだんだん録音と関係ないネタばかりになりましたが、備忘録ということで。。。
※今回はプログラマネタが多いのできっとつまらないです。
SambaとかSCPとかは扱っていません。デスクトップユースです。

手に入れた端末
ThinkPad X60s
起動OK, LCD OK
筐体一部割れ
OSなし
バッテリー死亡
ACアダプタなし
¥15000
�����OS�������������� on Twitpic
こいつぁひでえ!
�������������� on Twitpic
ビフォアーアフター的な

LCDが割れているのはさすがにちょっと面倒なので、BIOSまで問題ないものを購入。OSなんぞいるか!
まだそんなに安くはないけど元が20万と考えると激安感はある。
おっことぬしさまで筐体の角が割れてるけど使ってりゃ見えないしどうでもいい(爆

うんちく
はい。ここはテストには出ないので飛ばしておkです。
ThinkPad X60sの仕様はこちら
X60sはちょうどCoreシリーズが載り始めたころのThinkPadで、レノボから出ているやつ。
スペックとしてはX40シリーズの正当後継と言える機種でモバイルとして使い易いサイズ。
ドライブは付いてないので外付け必須。
2006年発売なので既に5年経っているわけだが、CPUはCore系だし充分な感じはする。
さて、X60sだが、初期型と後期型で載っているCPUが違う。
今回買ったのは後期のCoreDuoの1.66GHz版(L2400)。初期はCoreDuoの1.5GHzなのでちょっとクロックは低い。
その後、マイナーチェンジでX60(訂正:X61でした)っていうのが出てこれにはCore2Duoが載っている。
なので、本当にお買い得なのがあればX60(訂正:X61でした)をおすすめする。
X41とX60sでは並べて使ってみると圧倒的にX60sの方が早いし静かです。
X60sはスペック上、Windows7も普通に動きそうな感じですが、今回はLinuxにフォーカスしてお届けしますwww

AC電源
やる夫AAみたいな感じで帰ってきて、AC電源をさすと動かないお。。。
店の電源で起動チェックはしてきたので本体ではない。
動く電源つけたっていってたじゃねーか!!聞き間違いかよ!ムキーーー!!
しょうがないので翌日もう一回アキバへ。。。
X60sの電源は20Vになってしまったので、X40シリーズのものは使えない。
ジャンクでも¥1500しやがる。おおおお。レノボおおお。

Fedora 15(32bit)のインストール
さて、OSなしなのでまずはOSをゲットしないといけない。
イケナイ方法は使わず、よいこも真似できる超正攻法で。

最近流行りのLinux OSといえばまぁUbuntuでしょうが、正直あんまり普通過ぎて面白くない。
てか既に何回も仮想マシン作ってるから全然面白くない。
あとDebian系ではなくRedHat系がやっぱ欲しい。RedHat系でデスクトップにも使えるDistは。。。
1. Fedora
2. Scientific Linux
3. CentOS
4. Mandriva Linux
5. Vine Linux

シュタゲ的にはCERNの絡んでいる「2.Scientific Linux」一択なのだが
学術用なので録音とか遊びには向かなそうだ。
まぁ、もともとRH系は鯖用途がメインだしそれはしょうがない。
「3.CentOS」は仕事でビルド鯖で使ってたのだが、最近開発が迷走しているのでちょっと敬遠。
となると、1/4/5だが、Fedoraは先月(2011/5)にGNOME3を載っけたということなので非常に興味深い素材だ。
これはUbuntuのGUIがUnityを選択したためGNOME最新GUIは今のところFedoraだけっぽい。
Fedora Core時代に一回触ってるし、これしかねぇ。

Fedora Project
個人的にLinuxデスクトップのHPは嫌いだ。先進的だの素晴らしいだの美化しすぎだっつーの。
それはさておき、まずはイメージファイルをダウンロード。
Fedora 15 デスクトップ版
GNOME3の32bit版

X60sでは64bit版は動かなかった。3回くらいやってダメだったので解析もせず放置。
ドライバ等考えると32bitの方が動きそうなので32bit版をダウンロード。
XPマシンでDeepBurnerなどでisoイメージを焼く。
で、CDドライブに突っ込んでおもむろにPowerON。
LiveCDなのでガガガガっと読み込んで起動する。LiveCDなのでこの時点ではHDDには何も書かれません。

起動したら左上の「アクティビティ」をぽちっとおすとDockみたいのが出てくる。
Dockの一番下にディスクにインストールみたいなのがあるのでクリック。
あとはここのサイトの手順でインスコした。
LiveCDだと日本語選択しても日本語にならない。英語でインストールしていってインストール終わったら
「System Settings」の「Region and Language」から日本語を選んで再起動。
参考
DVDだとうまく行くらしいが…。メディアがもったいない。


Q1. で・電源の切り方が分からない!
右上をクリック -> メニュー出現 -> ALTキーをおしてみましょう。
おおエクペリエンス!わかりづらいんじゃボケ!

Q2. で・デスクトップがねぇ!
GNOME3では旧世代のガラクタ置き場は許しません。
GNOME3こそ洗練された美しい姿なのです。
旧世代の人はカスタムしなさい


これってどうなのよ・・・
デスクトップはアプリケーション -> アクセサリ -> ファイルで見られます。
慣れればまぁ使い易いですが…。WindowsキーとALT+TAB使いまくり。
ツールはターミナルから以下でいける。
$ sudo yum install gnome-tweak-tool
こちらはroot権限ではNG
$ gnome-tweak-tool 

やっぱこの位はやりたいよね。。。
デスクトップ表示

バーのカレンダー表示を変更

変更後は再起動しないと反映されません。ログオフでも良さそうだが一応。
※使ってみるとGNOME3はデスクトップがすぐ出せないので
「デスクトップ表示」はあまり意味がない悪寒…。

・Fedora 15でThinkPadのセンタースクロールを効かせる方法
こちらを参考に
以下のテキストファイルを「/usr/share/X11/xorg.conf.d/」にコピーして再起動する。
20-trackpoint.conf

・電源切るときピッってうるさい
BIOSの設定で切れるよ。BIOSへは電源OFF/ONでF1メニュー連打して入る。

・RARとかどうやんの?
定番と思われるunrarが見つからないのでmakeでインストール。
ここのRAR 4.01 for Linuxを落としてきて
端末起動。tar zxvf hogehogeで解凍。suでrootにして、makeすれば入る。
こういうのやらなきゃいけないからおすすめできないんだよなぁ…。
> unrar e file.rar

・FTPとかどうやんの?
FileZillaがGUIだし個人的に使い易い。WindowsのFFFTPみたいなもの。

・ちくしょう作ったテキストが全部UTF-8になるじゃねぇか!
我慢できなかったらWineでお気に入りのエディタを使う。
Fedora15のGEDITはなんだかしらんがShift-JISがうまく開けない…?

・いろいろ試してみたのだが、Shift-JISはどうも相性が悪い。昔からだけど。。。
今のところShift-JISファイルの編集はWine経由でNotepad++を使うのがベストかも。
サクラエディタの最新はWineではまともに動かなかった。キーバインド系に何があるようだ。

とりあえずemacsなら問題なくSJISファイルも編集できた。
どうも未だにキーバインドが慣れない。。。

・マルチコーデック対応はこちらのサイトが詳しい。
この人詳しいな…。コマンドラインになっちゃうけど・・・。
====================
su
(パスワード入力)
rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
yum install gstreamer-ffmpeg gstreamer-plugins-ugly gstreamer-plugins-bad \
gstreamer-plugins-bad-free-extras \
gstreamer-plugins-bad-nonfree
====================
これを全部入れとくといろいろと捗る。まじで
逆にこれを入れとかないとmp3エンコーダのLameが入らないのでいろんなところで困る。
Lameが入るとRythmboxとかリッピングで指定できるようになる。
mp3����� on Twitpic

WLAN設定
ぶっちゃけここまではデフォルトが日本語化されてないのが面倒なだけで日本語化してしまえば大して難しくない。
スタンドアローンでは意味が無いのでネットにつなぐ。
いきなりWLANでおk。昔のようにドライバファイルを探しにコミュニティのログを漁るなんてことはない。

WLANの設定メニューだが少し分かり辛い。
1. スタートメニュー -> ネットワーク -> 無線 を選択。
2. 無線をON(ThinkPad本体もONにするのを忘れないで)
3. ネットワーク名のところに「▽」みたいなボタンがあるのでクリック
4. その他
5. ネットワーク名(SSIDと同じでいいぽい)とセキュリティを設定
WLAN on Twitpic
X60sの純正WLANでやればこれで繋がると思います。

繋がったらまずはアップデート。失敗したら再起動してもう一回トライ。ダメだったら要調査。。。
アクティビティ -> アプリケーション -> システムツール -> ソフトウェアの更新

あとはFlash Playerかな・・・。
ここで.rpmファイルをゲットして叩く。

Linuxはコマンドラインの方が便利な時が多い。が、なれないうちはGUIのパッケージマネージャの方が安全。
端末を立ち上げると
/ (root) - home  - (user名)のところにいる。
cd : ディレクトリ変更
ls : そのフォルダにあるファイルを表示
su : root権限取得
sudo : root権限で実行
Fedoraのアプリはroot権限であれば大体以下のコマンドで入れられる。XXXはアプリ名。
yum install XXX

Audacityのインストール
インストールは簡単。ソフトウェアの追加と削除からAudacityを検索。
Audacity on Twitpic
Multitrack audio ediorがAudacityのことなので入れる。
一応再起動したほうがいいかも。

UA-1Gで録音
UA-1G使えるかよくわからなかったのでとりあえずUSBポートにさしてみた。
あ、使えたwww
�����UA1G����������������������... on Twitpic
Fedora15ではALSAがデフォルトで入っているようでさすだけで動いた。
多重録音するときは入出力をUA-1Gに設定しておかないと遅延が大きすぎてエラーになる。(ちゃんと設定すれば行けそう)
Fedora15 + Audacity + UA-1G������ on Twitpic
意外とすんなり動いて拍子抜け感がある。良かった良かった。

ギターつないで録音テスト。
録音サンプル

どうもサンプリングレートは44.1kHzの32bit float以外はなんか不安定。
↓みたいな設定で多重録音時のブチブチノイズは消えた。
デバイス設定
Audacity  device setting on Twitpic
録音設定
Audacity recording setting on Twitpic
品質設定
Audacity quality setting on Twitpic
ディレクトリ設定
Audacity directory setting on Twitpic

MonoDevelopのインストール
ここまでで目標は達成したわけだが、もうちょいいじって見たくなった。
別に職場で使うわけでもないのだが、最近デスクトップ触ってなかったので勉強がてら…。

個人的にこれから来そうな雰囲気のあるMonoDevelopっていう開発環境を入れてみた。
いわゆるJavaのようなもので.NETのソースが動くという優れもの。
.NET準拠のソフトならWindows, Linux, Macで動く、らしい。
使ってみた感じではLinuxのRADツールとしてはかなり強力と思われる。
GUIの実装方法としては最初にFixedを作らないとパーツが置けないのを除けば大体同じ。
パーツのイベントはダブルクリックではなくプロパティのシグナルから登録する。
monodev on Twitpic

MonoDevelopでC#のソースを動かす
ちゅうわけでさっそくネットに落ちているC#サンプルを動かしてみる。
C#は説明すると長いので勉強してみてください。JavaかC++読めればできるよ!
個人的にはLinux上でGUI + C#が簡単に動いたことに衝撃を受けた。
超時代遅れ?
こんな感じ。Eclipseと変わらんね。
Yahoo�HTTP������������C��信����楽�����... on Twitpic

Wineのインストール
Wine
いわゆるWine is not an emulator	。WindowsのアプリケーションをLinux上で実行できる環境。
歴史は結構古いので触ったことのないプログラマなら一度は触っておいた方がいい。
現状GUIのアプリケーションも相当動く。ただし完璧に動く訳ではない。
あと基本日本語環境ではない上にコミュニティ開発なので結構不安定。
パッケージマネージャでWineを検索してインストール。エディタとかゲーム等にどうぞ。
ディスクで正規版チェックしてるソフトで仮想ドライブ判定してるやつとか
日本語OSチェックしてるやつは動かないよ!やると違法かもよ!
notepad++ on wine on Twitpic
サクラエディタはキーが動かなかったorz
ちなみに今読まれているこのファイルはLinux上でWine + Notepad++で編集ちう。
もしLinuxでShift-JISの編集でハマったらこれがおすすめ。CRLFも当然問題ないし。

LibreOfficeのインストール
OpenOfficeとケンカ別れ(?)になったLibreOffice。WORDとかExcelとかパワポなど作りたいときにどうぞ。
・LibreOffice Spreadsheet Application		: エクセル
・LibreOffice Drawing Application 			: Visio
・LibreOffice Presentation Application 		: パワポ
・LibreOffice Word Processor Application 	:ワード
ぶっちゃけこれだけあればおk。OpenOfficeと何が変わったのか分からない。。。
calc app on Twitpic

MOZCのインストール
標準日本語入力のAnthyがちょっと不安定なのでMOZCを日本語入力にしてみる。
Anthyはなんだか知らんけど1回目の変換した時に文字が消えたりしてイライラする。
MOZCはGoogle日本語入力のLinux版。ちょっと辞書は違うけど変換性能は同等なのでおすすめ。

インストールはこれで。
# sudo yum -y install ibus-mozc

デフォルトはAnthyなので以下でデフォルト日本語入力を変更する。
# ibus-setup

パッケージ管理でも入れられます。
mozc on Twitpic

仕事で使っていてもGoogleIMEはMS-IMEより誤変換少ないので
Linux上でこれだけ使えるIMEが動くというのは結構すごいことだ。
Androidでも早く動くようにならないかな。

どうもGTKをアップデートすると半角/全角キーで切り替えができなくなるらしい。(2011/7/4現在)
ダウングレードすれば戻るとさ。
ダウングレードがいやな時はCtrl + Spaceで。
どうやら修正されたようだZE!(2011/7/10)

てかここの方ほんと情報早いな!

おわりに
さぁ!このくらいできりゃノートPCとして充分だろ!
と思ってたらさっそくRewriteができなくてしょぼんぬ…。

今のところかなりの安定度。結構ヘビーユースしているがほとんどクラッシュはない。
クラッシュしても不安定になることはない。
ニコ動、Youtube、Flashゴリゴリサイトも普通に動く。
タダ環境でこれはなかなかいいのではないでしょうか?相当遊べますぜ!

個人的な経験上、Linuxを試すときのコツ。
有名どこのハイスペックマシンを使う。
ハードをケチると面倒くさいことが次々に起きるので注意。
VAIOも特殊ドライバが多いのであんまよくない。やっぱThinkPadでしょ!
desktop on Twitpic\
ThinkPad X60s on Twitpic

Fedora Core時代に触った時と比べるといろんなデバイスのドライバが安定していると感じた。
特にWLANのあのクソ面倒くさい手書き設定がなくなったのが非常にうれしい。
WLAN使うのにソースからコンパイルとか苦行以外の何者でもないだろ。


X60s欠点:
右手下のパームレストが超熱い!
熱源はWLANモジュールらしいけどこれじゃ乗せてられない。。。
それ以外は文句ない性能何だけどなぁ…。


指紋認証デバイスの追加・低消費電力化
2011/8/19追記
外装が割れていたのでパームレストのところだけヤフオクで購入。
1000円くらい。
ついでに指紋認証付きのものに変更した。

�������証��������������������... on Twitpic

マザーボードには何故かコネクタが付いているので、ポン付け可能。
Fedoraも指紋認証は結構前からサポートしているようですぐ使えるようになった。

������������証����������... on Twitpic

設定は、「システム設定」->「ユーザーアカウント」の「指紋認証ログイン」から。
ただ、これでログインは出来るんだけど、キーシリングでパスワード入力が必要らしく
ダイアログがでてしまうのであまり便利にはならない。
セキュリティは上がるけど。。。

で、この指紋認証デバイスをつけたあとからどうもバッテリーの減りが早い。
PowerTOPで計測してみると500mW近く食っているバカ食いデバイスということ判明。
> USB device: Biometric Coprocessor (STMicroelectronics)
powerTOPの「tunable」メニューでこのデバイスのAutoPowerOFFを設定できるので
絶対設定しておくことをオススメする。
(これを設定しないとバッテリー駆動が20分程度短く感じる)

fedora15向けPowertopのrpmはversion1.9x系しかリリースされておらず、
このバージョンだとPowertopが実際に設定しているコマンドが表示されないっぽい。
ハマっている方がいるかもしれないのでPowertopが設定しているファイルを書いておく。

以下の一行を「/etc/rc.d/rc.local」に書き加えとけば、いちいちPowertopから設定する必要はない。
 echo auto > /sys/bus/usb/devices/5-2/power/level

デフォルトはlevelがonになっているので戻すときはrc.localから削除すればおk。

ファイアウォール設定ツールの場所
触っていない期間が長すぎたのと、GNOME3でメニューがガラ変されたので
ファイアウォールのGUI設定ツールを探しまわるハメになった。

こちら
鯖管なら常識なのかもしれないけど、fedora出たての頃のコマンドと変わったようだ。
もうない : system-config-security-level
いま : system-config-firewall

ALT+F2 -> system-config-firewall

で、以前はメニューから簡単にたどれたが、GNOME3のシステム設定メニューからは消えている。
どこにあるかというと
アクティビティ -> アプリケーション -> その他 -> ファイアウォール
オーマイガッ!これはシステム設定においてくれよ!とアメリカ人のように嘆く。

fedoraは数年前の記事を読んでしまうと余計にハマることが多いねぇ。

ログインできないときは
再インストール。するのは3日くらい悩んでからにしましょう。
いろいろいじって遊んでいたらログインできなくなった!ので対処法。

何をやってしまったかというと、ホームディレクトリを変更しようと/etc/passwdをいじくった。
アホなので、ディレクトリを作成もせずpasswdだけ書き換えて再起動したらエラーでログインできなくなった。

あたしってほんとバカ。

とかつぶやきながら回復方法を調査。録音したデータとかあるので割と必死で。

fedora15はデフォルト設定だと、GUIからはrootでログインできないっぽいので、
まずはCUIでログインさせる。

大事なことなので二回言うけど、GUIへの戻し方を書いておく、GUIへの戻し方を書いておく
CTRL+ALT+F1〜7のどれかがGUIが起動してる

で、本題はこちら。fedora15の場合、CTRL+ALT+F2などでCUIログインできる。
CUIにしたらrootでログイン。こっからはCUIのviまたはemacs必須。
login : root
パスワードはrootの

ここまでくればあとは編集したファイルを戻すか、新しくユーザを作ればいい。
vi /etc/passwd
など

ユーザの追加など
http://kazmax.zpp.jp/linux_beginner/useradd.html

Thinkpadの特殊キーを使いたいとき
ThinkpadにLinuxを入れているとどうもThinkpad特有のボタンが余っていて気になる。

世の中には便利なツールがいっぱいあるものでtpbというThinkpadのボタンを全部使えるようにしてくれる
ツールがあるのだ。
fedora15用のrpmはないのだけれどもfedora13用のrpmでも問題なく使えたのでご紹介。

こちら
これをインストールすると/etcの下に「tpbrc」というファイルができる。
これをviとかで編集する。

ThinkVantageキーを押すとどっかのサイトにアクセスするようにしたいときは以下のコメントを外して有効にして
THINKPAD    /usr/bin/X11/xterm -T ntpctl -e ntpctl
すぐ下に以下を追記する。
THINKPAD    /usr/bin/firefox http://www.yahoo.co.jp/

で、一回ログオフして再ログインすればキーが効くようになっている!
fedora15はvolumeキーでUIが出ないので困っていたがtpbを入れるとUIが出るようになります。
ちょっと感動。

こちらが詳しい(英)

ネタ
------------------------------
SLがふと見たくなったので
slコマンド
ヘッダが見つからずmakeがエラーになったら
こちらを参考に入れる
yum install ncurses-devel

Share photos on twitter with Twitpic
ちくしょういい動きしやがる…。
------------------------------
暇なので2ch環境を整えるメモでも書く。
5年くらい前とあんまり変わっていないな。。。
IPAモナーフォントがライセンスの関係で同梱されなくなったディストリビューションもあるようなので
フォントインストールをメモっておく。昔ながらの方法が確実だが、便利なGUIツールも出てきている。

■AAのズレはIPAモナーフォントを入れるとだいぶマシになる。
tar.gzを落としてきて解凍してttfファイルをインストール。

フォントのインストールはGUIのFontmatrixっちゅうのが使いやすいのでおすすめ。
パッケージマネージャでfontmatrixで検索かければ出てくる。
GUIは↓な感じ。
Share photos on twitter with Twitpic

[手順]
1. ファイル -> インポートで解凍したttfファイルを選択。
2. 一覧にインストールしたフォントが出てくるのでチェックを入れる
3. 再起動

※このツール、フォント追加時にロケール変更されることがあるっぽいので、
ファイル名とかが正しく表示できなくなったら/home/XXX/.bashrcとかに
 export LANG=ja_JP.UTF-8
でLANGの環境変数をもとに戻すように書いとくなどで対策。
多分localeいじってなければ特に問題はでないはず。

■2chブラウザ JD
yum install jd

王道のLinux 2chブラウザ。X60sでの個人的に好きな設定は
3ペイン表示。タブ表示なし
スレビューフォントはIPAモナーPゴシックの13
ポップアップフォントはIPAモナーPゴシックの11
板・スレ一覧フォントはVL Pゴシックの10

■Firefox + chaikaでAAフォントにはIPAモナーフォントPゴシック指定

このあたりは好みの問題でふね。。。
------------------------------
番外:JDをビルドしたい
ちょっと自分用メモ
目的 : JDのソースコードをビルドしたい。できればEclipseで。
※すみません。紛らわしいので、グダグダ書いていた間違った手順は消して書き直しました。(2011/9/4)

・Eclipse3.6(Hellios)インスコ
 パッケージマネージャから入れる。language pack for Japaneseで日本語化
・subversive(SVNのプラグイン)導入
 今時CUIってのはいろいろ捗らないのでEclipseのプラグインでやっちまいましょう。
 こちら
[↑とだいたい同じだけど一応手順]
1. ヘルプ -> 新規ソフトウェアのインストール
2. 「有効なソフトウェアサイト」をクリック
3. フィルタに「http://download.eclipse.org/releases/helios」と入力
  「Helios Milestone Repository」を選択してOK
4. WorkWith:のドロップダウンリストに
  「Helios Milestone Repository - http://download.eclipse.org/releases/helios」
  が追加されるので選択
5. フィルタ入力に「subversive」と入力。ちょっと待つ.
6. Collaborationの以下2つにチェックを入れて「次へ」
  - Subversive SVN JDT Ignore Extensions(Optional)(Incubation)
  - Subversive SVN Team Provider(Incubation)
7. そのまま進むとインストールされる。Eclipse再起動
8. ウィンドウ -> パースペクティブを開く -> その他 -> SVNリポジトリー・エクスプローラー
   めんどいのでショートカット登録
   ウィンドウ -> パースペクティブのカスタマイズ -> ショートカット
   サブメニューの「ドロップダウンリストからパースペクティブを開く」
     「SVNリポジトリー・エクスプローラー」にチェック
9. SVNのウィンドウが出るのでSVNリポジトリのところで右クリック
10. 新規 -> リポジトリー・ロケーションでUrlにJDのリポジトリを書く
 http://svn.sourceforge.jp/svnroot/jd4linux/jd/trunk
11. クラス図のリポジトリ
 http://svn.sourceforge.jp/svnroot/jd4linux/jd/trunk
12. ソースをチェックアウトする。srcで右クリック -> チェックアウト
 チェックアウトする際には新規プロジェクトウィザードで「Makefile Project with Existing Code」を選択すること。
 これをやらないとEclipseでmakefileを使ってビルドできない。
参考

Share photos on twitter with Twitpic

 - プロジェクトウィザードでチェックアウト先のディレクトリを聞かれるので、jdなどのフォルダを作って指定する。
 - コンパイラも聞いてくるので「Linux GCC」を指定

■ビルド
[ライブラリ]
まずはINSTALLのテキストを一読しておいたほうがいい。
INSTALLテキストに書いてあるライブラリが必須。~develが入っていない場合はパッケージマネージャから入れられる。
- gtkmmは
 yum install gtkmm24-devel
- open-sslも使ってるみたいなので「-devel」のやつをパッケージマネージャか入れる。
 yum install openssl-devel
- gnutlsも使ってるみたいなので「-devel」のやつをパッケージマネージャか入れる。
 yum install gnutils-devel
[ビルド]
1. チェックアウトしたソースのトップディレクトリにautoconfがおいてあるので作者推奨の
 ./autoreconf -i
 でconfigureを作る。(CUI)
2. configureをかける(CUI)
   ./configure
 -> ここでエラーになったらdevelのなにかが足りない。パッケージマネージャで検索して入れる。
3. フルビルドをぽちっとな

キタ━━━━(゚∀゚)━━━━ッ!!
Share photos on twitter with Twitpic
Eclipseでビルドすると生成されたバイナリが見やすい。
このバイナリは叩けば普通に使える。

ちなみにCUIでやる場合。
 ./autoreconf -i
 ./configure
 make

…こっちのほうが激しく楽な気もしないでもないがEclipseでやることが重要!たぶん!
Eclipseでやるとプログレスバーとかでて気分的にいいよ!ちょっと重いけど!

SVNの最新リビジョンのJD。
Share photos on twitter with Twitpic

Eclipseはコールグラフとかクラスのポップアップとかすぐに使えるので
初期の構造解析には非常に便利。
コールグラフを使いたいときは、インデックス作成が必要。
プロジェクトのトップディレクトリで右クリック -> Index -> Refreshen All Files

ごろ寝しながらソースコード解析してみるとコマンドラインよりEclipse使ったほうが操作が楽。
ごろ寝 + Trackpointで操作できることが重要。

マウスオーバーで画像読み込みできないかソースを見てみたけど
articleviewbase.cppの中でURLをステータスバーに表示しているようだ。
ここで読み込もうとしたけど構造上結構変更が必要そう。。。

Share photos on twitter with Twitpic

もう一点、JDの仕様で自分的に使いづらいのが右クリックメニューの画像の削除が
二段階になっているところ。特に二段にする必要を感じないのだが。。。
これもarticleviewbase.cppの中にメニューの定義がある。これは変更が簡単だったので修正してビルド。

しかしX60sはすげぇパワフルだ。
Eclipseでビルドしながらfirefoxで20タブくらい開いてJD起動してても普通に動く。
会社のPCでやったら固まるな。

番外:FTPサーバ
だんだん実用的なネタも増えてきた気がするが、プログラムのテストにFTPサーバが欲しくなったのでFTPサーバとして使ってみる。
実用編は別にしようかな。。。Samba, Apacheあたりやればほとんどの機能は使えることになるし。。。

定番のvsftpd
su
yum -y install vsftpd

ユーザーリストは「デフォルトアクセス不可」なユーザーを記載するようになっているので変更
cd /etc/vsftpd/
vi vsftpd.conf
以下を追記する
 userlist_deny=NO
tcp_wrapperも別に使わなくていいのでコメントアウト
 # use tcp_wrapper for user access

で、ユーザリストを全削除
 vi user_list
 全部消す
 ログインさせたいユーザを追記する。
パスワードは普通のログイン時に使うものが使われるので設定不要。

別にローカルだからどうでもいいんだけど、他ディレクトリへのアクセスを禁止しておく。
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
↓
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

chroot_listに、参照できなくするユーザーアカウントを記述する。(ファイルがなければ新規作成でおk)
vi /etc/vsftpd.chroot_list

ここまでで一旦vsftpdを再起動させる。vstfpd.confをいじったときはこれをやらないと反映されない。
service vsftpd restart

その他、Linux側の設定
・デーモン起動の設定
こちらが非常にわかりやすかった。
以下を実行
chkconfig --level 35 vsftpd on
確認
chkconfig --list vsftpd

・ファイアウォールの設定でftpを有効にする
 アプリケーション -> その他 -> ファイアウォール -> 信頼したサービス

・はまったのがSELinuxの設定。これは知らなかったorz
こちら
 CUI : system-config-selinux
 GNOME3 :  「アプリケーション」->「その他」->「SELinuxの設定」
ftpでフィルタして関係ありそうなものをallowにする
SELinuxはマジではまりそう。仕事でなくてよかった〜。

FFFTPでつながったらできあがり!
現状ロケールがUTF-8なのでフォルダ名がSJISでアクセスすると当然バケバケ。
FTPクライアントで接続オプションの文字コードを設定すれば綺麗に読める。

番外:Sambaでサーバ
ゆるゆりの録画でもみながらSambaを入れてみよう。\アッカリーン/
Linuxをファイルサーバとして運用されている方が大半だと思う。
書き換えの多いファイルはLinuxのファイルシステムで運用すると、精神衛生上いい気もする。
http://hesonogoma.com/linux/FileSystemBenchmarkResults-01.html
個人的にはSolarisのZFSとLinuxのBtrFSがファイルサーバ用途としては本命と思っている。
が、ファイルシステムの組み込みが難しそうなのでやってない。。。もう一台マシンがあればZFSマウントしてみたいねぇ。
BtrFSはまだベータなので手を出すには早いかなと思っております。
今んとこ、コストが許されるならSSD + ZFSが最強か(あえて厨二病っぽく)
個人的には今後正式リリースが出てくるbrtfs(ばたーえふえす:B木 File System)をぜひ触ってみたい。

ここでは普通のWindows向けに公開するファイルサーバを構築してみる。
SELinuxの設定を忘れないようにすれば昔のLinuxの構築手順と一緒です。

さて、御託はどうでもよくて、まずはSambaをインストール。
 su
 yum -y install samba

仕事で「GUI?ハァ?Viだろ常考?!」という方もいたので、ここの説明は邪道なのかもしれない。
てか普通業務用のサーバはGUI起動させないもんな。。。
が、個人利用なのでGUI設定ツールは入れておく。だってめんどくさいんだもん。
 yum -y install system-config-samba

・ファイアウォールの設定
「アプリケーション」->「その他」->ファイアウォールの設定
Sambaのポートを開けておく。

シェルスクリプトで設定する場合
「/etc/sysconfig/iptables」が設定ファイルだが、正直IPv6など考えると手動設定はきつい。
アクセスのチューニングに関してもGUI使ったほうが視覚的にわかりやすいと思う。

・SELinuxの設定も。これマジ忘れる。
 CUI : system-config-selinux
 GNOME3 :  「アプリケーション」->「その他」->「SELinuxの設定」
 -> Sambaで使いそうなとこににチェック(一応これで使えました…が合ってるか不明)
Share photos on twitter with Twitpic

・Sambaの設定
以下のコマンドでSambaのGUI設定ツールを起動
 system-config-samba

GNOME3のメニューから起動させたいときは
 「アプリケーション」->「その他」->「Samba」
また「その他」か。。。

・Sambaのユーザー追加
Sambaユーザー追加にはLinuxのログイン用アカウントが必要なので必要であれば作る。

GUIツールなら大した手間もない。
Share photos on twitter with Twitpic

Sambaの認証モードの設定。平文はダメよ。
 認証モード:ユーザー
 暗号化パスワード:はい
Share photos on twitter with Twitpic

公開ディレクトリの設定
Share photos on twitter with Twitpic

アクセス権の設定
Share photos on twitter with Twitpic

とりあえずこれでサービス開始
 service smb start

サービス動作確認
 service smb status

vsftpdとおんなじ要領でマシン起動時に自動でデーモン起動させる設定
 chkconfig smb on

設定確認
 chkconfig --list smb

HostPCの名前がLocalHostだとわけわからんので
以下のファイルのHost名を変更する。
 /etc/sysconfig/network

ifconfigでLinux側のIPアドレスチェック。

Windowsからだとこれでアクセスできる…はず。
root権限で作ったディレクトリはホームディレクトリの下にあってもアクセスできないのでちょっと注意。
基本はユーザーのホームディレクトリがアクセス可能。
あと、特に気をつける必要があるのはSELinuxの設定忘れ。
これを設定しないとchmodでアクセス権変更したのにアクセスできないよ〜。となる。

いやぁSELinuxめんどくせぇ!

だいぶ、濃ゆいノートPCになってきたな。。。

番外:HTTPサーバ(Apache)

Apache Killerが騒ぎを起こしたので
最新ソースをコンパイルしてインストールしてみる。

まずはApache Killer対策済みの最新ソース(2011/9/17時点)を取得。
Apache 2.2.21

とりあえず、解凍
     tar zxvf httpd-2.2.21.tar.gz

ディレクトリへ
     cd httpd-2.2.21

コンフィギュする。コンフィギュってかわいい呼び方だと思わない?
    ./configure

configureの--prefixオプションでインストールディレクトリを変えられるがそのままで。
デフォルトは「PREFIX=/usr/local/apache」

makeする
    make

インストールする
    make install

設定ファイルは「/usr/local/apache2/conf/httpd.conf」

ファイアウォールのHTTP用ポートを解除。

起動
# service httpd start

Apacheがすたーとできないんですけど!!(はかせ声)
Starting httpd (via systemctl):  Job failed. See system logs and 'systemctl status' for details.

・・・イカン。Apache再インストールしても、Firewall切ってもSELinux全殺ししても同じエラーで起動できん。。。なぜだ。他のブログではできてるのに。。。

どうも最近はserviceではなく、systemctlで制御するのが主流になってきているらしい。
これとか
    systemctl status httpd.service
    ここでエラーが吐かれていたらなんか足りない。

Apache起動コマンドの詳細なエラーの確認はgracefulをつけると出てくる。
/etc/rc.d/init.d/httpd graceful

SSL関連のエラーが出ていたらこれを入れて再インストール
ふぅ・・・
yum -y install mod_ssl

いろいろやってみたんだけどうちのPCでは80ポートを何かが占有しているらしく
エラーになってしまう。8080ポートに変えて再起動したらlocalhostに接続できた。
謎すぐる。。。危ないな。

どうもKDE, XFCEを入れてアンインストールしたらおかしくなっていたらしい。。。
どうしようもなかったので再インストールしたらなおった。
これでいいのかって話だけど、デスクトップ環境を入れるときは気をつけましょう。

サービスを起動できたら、「http://localhost/」にアクセス。
Apacheのテストページが見えたらおk。
ローカルLANなら「http://"IPアドレス"」でアクセスチェック。

=====
ふたばのPHPスクリプトでも置いてみよう。(ぶっちゃけ結構めんどい)

■PHPモジュールのインストール
まず、PHPをソースからインストール。
rpmから入れるとapacheへ自動設定しないので非常に手間がかかるので注意。

RedHat系はPHPの一部モジュールが生成されないことがあるようなので気をつける
  http://www.oklab.org/language_c/php5_0_2_install_bug.htm

しょうがないのでこっからソースを落としてきてtar zxvfなどで解凍

.soファイルを生成するためには以下をいれておく必要があるっぽい。
 yum -y install httpd-devel

./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs
 -> libxml2がないとか言われる。ファッキン!

はぁはぁ…。めんどくさくなってきた。。。
 yum -y install libxml2-devel 

make
make install

 成功すると↓こんな感じ。apacheのmoduleに自動で置かれる。

[root@fedora_pc php-5.3.8]# make install
Installing PHP SAPI module:       apache2handler
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' libphp5.la /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp libphp5.la /usr/local/apache2/modules/
cp .libs/libphp5.so /usr/local/apache2/modules/libphp5.so
cp .libs/libphp5.lai /usr/local/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /home/shin/Downloads/php-5.3.8/libs'
chmod 755 /usr/local/apache2/modules/libphp5.so
[activating module `php5' in /usr/local/apache2/conf/httpd.conf]
Installing PHP CLI binary:        /usr/local/php5/bin/
Installing PHP CLI man page:      /usr/local/php5/man/man1/
Installing build environment:     /usr/local/php5/lib/php/build/
Installing header files:          /usr/local/php5/include/php/
Installing helper programs:       /usr/local/php5/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/php5/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/php5/lib/php/
[PEAR] Archive_Tar    - already installed: 1.3.7
[PEAR] Console_Getopt - upgraded:  1.3.0
[PEAR] Structures_Graph- upgraded:  1.0.4
[PEAR] XML_Util       - already installed: 1.2.1
[PEAR] PEAR           - upgraded:  1.9.4
Wrote PEAR system config file at: /usr/local/php5/etc/pear.conf
You may want to add: /usr/local/php5/lib/php to your php.ini include_path
/home/shin/Downloads/php-5.3.8/build/shtool install -c ext/phar/phar.phar /usr/local/php5/bin
ln -s -f /usr/local/php5/bin/phar.phar /usr/local/php5/bin/phar
Installing PDO headers:          /usr/local/php5/include/php/ext/pdo/

■PHPの設定(今回はデフォルトでおk)
/etc/php.iniのメモ
↑これでphp.iniを設定してみる

apache再起動時にlibphp5.soの実行でSELinuxがギャーギャー言ってきたら
chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t '/usr/local/apache2/modules/libphp5.so'

■ふたばのスクリプト設置
ふたばのスクリプトはこちら
lzhはlhaで展開し、phpを/var/www/http/futaba下にコピー。(ここはApacheの公開ディレクトリによって変わる)
    lha e futaba051031.lzh
このPHPスクリプトだが、SJISで書かれているので、Linuxサーバの場合UTF-8などに変換しないと文字化ける。
nkfコマンドで文字コードをUTF8へ変換。一応バックアップしとく。
 nkf -w futaba.php > futabautf.php
 mv futaba.php futabasjis.php
 mv futabautf.php futaba.php

ディレクトリ構成とパーミッションの設定(chmodで)をサイトに書いてあるとおりに設定。

SELinuxの設定がめんどくさすぎて力尽きた。ごめんなさい orz

■今すぐSELinuxを切る
echo 0 > /selinux/enforce
■次回起動時からずっとSELinuxを切る
/etc/selinux/config で SELINUX=disabled

system-config-httpdでhttpd.conf自動生成
 sudo system-config-httpd
 -> 手書きやっぱめんどくさいので…
    「仮想ホスト」 -> 「デフォルト設定の編集」 -> 「パフォーマンス」
    に公開するディレクトリを追加

ライブラリの参照位置が変わってしまうので、libphp5.soを/etc/httpd/module下にコピー

PHPを実行できるように"system-config-httpd.conf"のfutabaディレクトリ設定に追記する。
    vi /etc/httpd/conf.d/system-config-httpd.conf

vi /etc/httpd/conf.d/system-config-httpd.conf
に以下を追加
 LoadModule php5_module        modules/libphp5.so

 ここはsystem-config-httpdで追加されるところに追加
 DirectoryIndex index.php index.html index.htm index.shtml futaba.php
 
	Options all
    Options ExecCGI
    Addtype application/x-httpd-php .php .php3
    AllowOverride none
 

設定したら
 service httpd restart

ブラウザで「http://localhost」に接続してみる

とりあえず、キタ━(゚∀゚)━!
����������� on Twitpic

ローカルLANの別PCからもアクセスできてるしまぁいいだろう。。。

Internal server errorになったら以下を確認
 /var/log/httpd/error_log
 /var/log/httpd/access_log

※PHPのSELinux設定は以下でいけるっぽいが他にもあるらしくうまく動かんかった。。。
chcon -c -v -t textrel_shlib_t '/etc/httpd/modules/libphp5.so'

SElinuxの設定は、おいおい追記するかも。。。
仲間内のみで運用するならこれでもいいか。。。

ちょっと危険な気がするが、自鯖をグローバルIPでつないでみるテスト。
ケータイの3G回線からアクセス。動作自体は問題なし。
ワイヤレスLANのノートPCサーバができた。特に意味はない。停電には強いかもしれない。
�����IP����示����������BB�������������貧弱�����... on Twitpic

YahooBBのマンションタイプ回線だとネットが不安定すぎてサーバには向いてない気がする。
うちは部屋のいっぱいある賃貸なので、昼間の学生がいない時間帯だと上り下りともに10Mbps前後。
夜は2Mbps以下になることもある。
光なんだけどorz

番外:Geditでgrepしたい
LinuxのGUIエディタのスタンダードGedit。
Windowsのメモ帳よりは使いやすいけどいろいろやるにはちょっとしょぼい。
特にgrepがデフォルトで入っていないのがめんどくさい。

Geditのプラグインでfile-searchっていうのがある。
が、Gedit3.x.x系では動かない。

こちらのブランチで開発版だがGedit3.x.x系対応してる。
Downloadから落として解凍して、「/home/XXX/.local/share/gedit/plugins」にコピー。
ディレクトリなければ作る。

Gedit起動して「編集」 -> 「設定」 -> 「プラグイン」 -> 「File Search」
なかなかナイスです。
Share photos on twitter with Twitpic

個人的にはエディタはGrepと関数一覧とタグジャンプが使えれば満足なので
CTAGSを使えるプラグインを入れよう。

まずはCTAGSを導入。
ここから「ctags-5.x.tar.gz」を
落としてきて解凍。
 ./configure
 make
 make install

端末を起動してtagを作りたいディレクトリで
 ctags *
tagファイルが生成される。

gedit-source-code-browser
Downloadsからダウンロードしてきて解凍。「/home/XXX/.local/share/gedit/plugins」にコピー。
「編集」 -> 「設定」 -> 「プラグイン」 -> 「Source Code Browser」
にチェックを入れる。
「表示」 -> 「サイドパネル」を開いてみると、下のタブにいる。
tagファイルがあれば関数・変数・構造体などなど見られる。

こんな感じで
gedit�便��使���� on Twitpic

いいかんじですね。Windowsでも使いたい。

番外:Qt入れてみよう
マルチプラットフォームGUI環境のQtでも入れてみよう。

ここから
「Linux/X11 32-bit」を落としてくる。実行権限を変更。
 chmod u+x Qt_SDK_Lin32_online_v1_1_3_en.run

叩く
 ./Qt_SDK_Lin32_online_v1_1_3_en.run 

GUIのインストーラが起動するのでそのままインストール。
使い方はまだ。。。なんか操作体系が違うなぁ…。

番外:数値計算とか
「計算機屋かく戦えり」という本が中古で¥300で手に入ったので読んでみたところ
あまりにかっこよすぎてX60sで意味もなく数値計算をやってみたくなった。


コンピューターと計算にはロマンがある。数学嫌いですけど!

今の組み込み屋だとあんまし触る機会がない気がするけど、
Linuxは数値計算関係が充実しているので触ってみる。

-----
まずはスクリプトでお手軽にやりたいとき。
三角関数くらいは触る機会があるかも。。。面倒な数式の反復計算をやりたいときはスクリプトがいいね。
一般人としてはこれで十分だ。
 bcコマンド
こちら

-----
Linuxでプログラミングする利点として、GNU関係のライブラリがネイティブに使える点が
あると思っています。
なので、C/C++プログラムの高速さを利用してゴリゴリ計算したい変態さんには以下がおすすめ。
数値計算入門書読みながらで自分で組むよりよっぽど早いコードになると思われ。
WindowsならCygwinじゃなく、VMWare使ってネイティブに近い状態で使うほうが使いやすい気がする。

GSL(GNU Scientific Library)

使い方は
1. gslをインストール
 yum install gsl-devel
2. Cソースで使いたいAPIのヘッダを以下のように読み込む。
 #include <gsl/gsl_XXXX.h>
3. ここの方のサンプルコピペでcファイル作成
4. gcc test_gsl.c -lgsl -o test_gsl
5. ./test_gsl

-----
こんなのもある。
GMP(GNU Multiple Precision Arithmetic Library)

使い方は
1. GMPをインストール
 yum install gmp-devel
2. Cソースでヘッダを読み込む
 #include <gmp.h>
3. こちらにGMPのπ焼きプログラムがある。
コピペで2関数を1ファイルにまとめて作成
4. gcc test_gmp.c -lgmp -o test_gmp
5. 100万桁計算してみる。
 ./test_gmp 1000000 1 > result.txt

結果。X60s(CoreDuo 1.66GHz)で100万桁 25秒
geditは結果のテキストを開いたら固まった。emacsは開ける。さすが!
-----
25.640 sec.
3.14159265358979323846264338327950288419716
9399375105820974944592307816406286208998628
0348253421170679821480865132823066470938446
0955058223172535940812848111745028410270193
・・・略
6031561403332127284919441843715069655208754
2450598956787961303311646283996346460422090
106105779458151

面白いけど俺のアタマでは応用できましぇん。
エクセルで足りてしまうお仕事ですので。。。

つづく

-----------------------------
今後やってみたいやつ
・Handbrake使ってみる
・LinuxでAndroid環境構築
http://lap.mydns.jp/xoops/modules/xpwiki/166.html
・monodevelop + GTK#プログラミング


参考サイトさま
独学Linux
うつ病 けんけんのFedora、FreeBSD勉強日記。
Codezine

↑TOP↑