ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2012年5月30日水曜日

日食とubuntu tablet


どうも、Qです。

日食撮ってたのでその写真。と言っても、曇っちゃったのであんまりきれいに映ってないんだよね…




ちなみに動画撮ってみた。途中で遮光板を入れると太陽が欠けてるのが分かる。


うーむ、もっといい写真撮りたかったなぁ。
しかし肉眼で見た時すごい綺麗だった。


カメラの中にこんな写真入ってたw季節外れにもほどがある。どうやら撮ったままホッタラカシにしてたらしい…





で、ちょっとtablet、というかスレートPCにubuntu入れてみた。もっさりしてるけど、何とか使える。てか、unityってどう考えても・・・
使ってみるとわかるんだが、まだまだタッチが微妙。ipadみたいな、指をサッてやるとページがウニョーンってスクロールするような感じは実装されてない。それでも、今のところ正規に手に入れる方法はないし(ubuntuはいずれ出すらしいけど)、一足先にちょっとやっておきたいことがある。


個人的にはイマイチandroidやらipadやらに興味を持てないので、こういう方向ガンガンいって欲しいなぁ。今のところバグだらけで、しかもトリッキーなことやらないとダメなので、なんとも。






月も人
一夜過ぎれば
 食忘れ

2010年10月31日日曜日

久々に色々メモ

どうも、Qです、こんちには。

只のメモ。

1.USB wireless LAN
PLANEXからGW-USMicroN2Wという非常の小型のUSBタイプの無線LANアダプタが売られている。これよりさらに小さいのも既に販売されているのだが、これだけ小さければまあ文句があるような例は殆ど無いだろう。

例のごとくこういう新しいデバイスをLinuxで使う場合は結構メンドクサイ。ubuntuでやったっていうのは結構見付かるのだが、CentOS5.5でも成功したのでメモ。このブログをそのデバイスを使って書いている(笑)

ubuntu,CentOS共通作業
1.このデバイスで使われているチップは、自分が買ったものはRTL8188Sというものだった。そこでまずRealtekからRTL8188SUというデバイスのLinuxドライバをダウンロード。

2.圧縮されているので展開し、展開されたフォルダの中のdriverというディレクトリの中のファイルをさらに展開する。その中のos_intf/linux/usb_intf.cというファイルをemacs等のテキストエディタで開き50行付近のところに
{USB_DEVICE(0x2019, 0xed16)},
というのを加える。
(ちなみに0x2019はidVender、0xed16はidProductというらしい。違う値の場合も有るのでシステム管理のハードウェア情報で確認する。とりあえずデバイスを挿しておけば、USBに関するハードウェア情報のどっかには書いてあるのでそれを探す。dmesgで当たりを付けることができる)

3.二つ上のディレクトリに戻り(Makefileがあるディレクトリ)、makeを実行する。成功したら****.ko(自分の場合は8712u.ko)が作成される。そしてmake installを実行する。
CentOSはsu -で一旦スーパーユーザーになってからmake installを実行する。
ubuntuはrootを一時的に有効にしてからスーパーユーザーになってmake install。sudoでは失敗する。


以下OS別
CentOSの場合

4.スーパーユーザーのまま
modprobe 8712u
を実行する。(3.で作成されるファイル名が違う場合はそれを入力)
そしてGW-USMicroN2Wを挿せばifconfigでwlan*(*は数字)というのができる(はず)

5.wpa_passphrase ssid passward > wpa_supplicant.confを実行してwpa_supplicant.confを/etc/wpa_supplicant/にコピーする。

6./etc/sysconfig/wpa_supplicantをテキストエディタで開き、
#INTERFACES="-i wlan0"とか書いてあるらへんの下に
INTERFACES="-i wlan*"
というのを書く(書き換える、もしくはそうなっていることを確認する)

7./etc/sysconfig/network-scriptsというディレクトリに移動し、ifcfg-wlan*というファイルを作り、その中に
DEVICE=wlan*
HWADDR=00:1D:xx:xx:xx:xx

BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Wireless
というのを書く。ifcfg-eth*があればそれをコピーすると楽。

8.詳しいことは知らないが、サービスの起動の順序が影響してうまくいかないことがあるっぽい。起動するランレベルの/etc/rc*.d/に移動して(普通はrc5.d)
messagebus -> wpa_supplicant -> network
の順に起動するように設定する。
(S**サービス名で**の値が大きい程後に起動される)

9.再起動する。多分これでうまくいくと思う。後は挿しっぱなしにしておけば起動時に自動的に認識してくれるはず。起動中に抜き差しした場合はnetworkをrestartしないとダメかも・・・


ubuntuの場合
make installが終了した段階でデバイスがifconfigで認識出来るようになっている。あとはネットワークマネージャで設定すればOK。簡単。


昔サーバーを立てた時の知識が凄く役に立ったなぁ。てかCentOSメンドクサイ(笑)


2.マルチブートとカーネル
マルチブート可能なPCだと、どれかのOSが格納されているディスク上のgrub設定でシステムが起動する。従って他のOSをアップデートしても、起動に使われるgrubの設定が変わらないためずっと古いカーネルで起動してしまう。makeの中等でuser -rでカーネルのバージョン等を使ってるとはまるので要注意。
また古いカーネルを何個前まで保持しておくかは決まっているため(CentOSでは/etc/yum.confのinstallonly_limit)、 放っておくといずれ古いカーネルが消されてしまい起動できなくなる。定期的に手動で起動に使われているgrubの設定を書き換えるか、何か手段を講じる必要がある。


3.grubの設定
CentOS
/boot/grub/grub.conf
ubuntu
/boot/grub/menu.lst



ともかくこれでLinuxで無線LANが使えるようになった。素晴らしいw

2010年5月30日日曜日

良く分からんが

どうも、とりあえずQです、こんちには。

例のUSBメモリ、

subversionの保存をdumpにする
BIOSの設定でUSBをFIXED Storageとして扱う
ファイルシステムはWindowsでFAT32として作る

で、とりあえずいけてるっぽい。エラーもなし。
うーむ、謎だ。

2010年5月27日木曜日

引越し完了とやっぱりメモ

どうも、ウッツQです、こんちには。

ついに引っ越しますた、そしてネットの移転が完了しますた。
で、色んな環境構築に励んでいたのですが、最低限の部分が終わった感じ。

2DKですよ2DK。
2部屋とD.I.Y Kitchenです。



まあ今月は色々と大変で、ぶっちゃけ引越しなんかしてていいのか位の勢いなんですが、まあ細かいことは良しとしましょう。


で、メモ。

①USBメモリとファイルシステム
サーバーにCentOSを使っている。まあぶっちゃけバックアップ目的のサーバーなのだが、バックアップのバックアップとしてUSBメモリを使っている。USBメモリなら突然サーバーが落ちたって大丈夫って算段なのだが…

まあ安物のUSBメモリを買ったせいかなんなのか良く分からんが、
ファイルシステムをLinux用にすると、PCが起動しなくなる。
FATの場合は問題なく起動する。

で、正直原因が良く分からんかったので、USBメモリにパーティションを2つ作り
パーティション1を数シリンダのFAT
パーティション2を残りのシリンダのLinux
にしてみたら起動した。

こういうトリッキーなやり方は嫌いなのだが…





②バックアップ用のファイルシステム
で、なぜFATをやめてLinux用にしたか、というと、

mount -t ext2 -o sync
mount -t ext3 -o sync,commit=周期

で、ext2だと同期が使えて、ext3だと数秒おきのインターバルで同期が使えるから。
もしかしたらFATでも使えるかも知れないが…

以前の日記にも書いたが、FATだとファイルシステムPanicを起こして、データのバックアップがまともに取れない。使っているUSBメモリがそこそこ大容量なので、もしかしてキャッシュあたりでおかしくなっているのでは?と踏んだ。
で、キャッシュをなるべく使わずに同期を取るようにすればエラーが起きなくなるのではないか?と考えた。

試してみたところ、今のところ起きなくなった。
その代わり書き込みは半端なく遅くなったけど(笑)
ext2だと同期が出来るが、インターバルの設定がないので、めちゃくちゃ遅い。
そこでext3のcommitを使ってそこそこキャッシュを使うようにしてみたら、速くなった。十分体感できるレベルの違い。

どうやらこれでなんとかなりそうだ。
ただし、Linuxファイルシステムなので、当然windowsとかで読めない。まあバックアップなんだから、Linux用と割り切ってれば問題なし。

---
追記
やっぱりIOエラーが出る。
どうも駄目っぽいので、完全にsyncのみに変更してみた。

---
やっぱりダメポ。
hotcopyが駄目ならdumpを試してみる。

---
うーん、ダメ。
BIOSとかの設定を変えてもダメだし…もしかしてダメUSBなのかな。
windowsでだったら使えるのかな…





山と海
黄昏時と
灰色と

2010年5月9日日曜日

メモランジュ方程式

どうも、いつでもウッツなQです、こんちには。

というわけで引越しすることにしますた。やはり6畳ちょっとの大きさでは限界がある。てか最大の理由はQ-starの開発を再開させる為。

やっぱり僕はQ-starに未練たらたらなので、「どうだ!やりきったぞ!!」感が得られるまでやってみようと思う。思えば、Q-starに関して今の今まで只の一回も納得したことは無い。正直色々手を出してるのは苦手なので、素直にしばらくプラネタリウム一本に絞ります。

まあできたところで、どこで公開するの?っていう問題が(笑)

クリーンルームをまた立てたいのと、ちょっと前からやってみたいことがあるのでそろそろ実行に移したい。今月半ばにはQ-star Resarch Houseが出来るはず。



とりあえずちょっと前までやってたことをメモ。
参考にはならんと思うけど。でもこの辺は使わないとも言い切れないんだよな…

①ubutnu9.10でcudaの設定

SDKをコンパイルする必要がある。
gcc4.4だと駄目なので、gcc4.3をインストールする。
common.mkファイル⇒NVCCFLAGS定義以降に
NVCCFLAGS += --compiler-bindir=/usr/bin/gcc-4.3
を加える。
libXi-dev
libXmu-dev
libglut3-dev
をインストールする。
make
死ぬほどwarningが出るが気にしない(笑)多分動く。




②ubuntuでKdevelop
ubuntu,Kdevelopでプロジェクトフォルダ内のlibtool周りでバグが起きる。
Libtool:155行目あたりにあるECHO=”echo”の前後にecho=”echo”を加えると直る。
但し、KDevelopでconfigure等を行うともとに戻ってしまうので注意。
CentOSでは大丈夫だったんだけどな…




はあ、引越し大変じゃよ。





明けるまで
明後日眺め
明日を待つ

2010年4月25日日曜日

メーモンの法則

どうも、色々やってましたがそろそろ新しいことをやってみたくなったQです、こんちには。

Q-starがお留守になってます。いや、頭の中の構想は進んでいるんですけどね。ここには出してないですが、色々こそこそ作ったり遊んだりしていて、いくつか布石になるものもやってます。少し前に作ったデスクトッププラネタリウムQsX(まだ作りかけですが)なんて、まあ明らかにコンソールを作ろうと言う意図があるわけで(笑)

まあ、関係ないことも沢山あります。とりあえず、メモ。

①UbuntuでCUI環境
サーバーを立てるんだったらCentOSの方が良いと思うのだが、UbuntuでCUI環境ってどう作るんだろうと思ってメモ。

一時的に作る場合
Ctrl+Alt+F1でCUI環境に移行。
sudo /etc/init.d/gdm stop

gdmはGnome Display Managerの略で、Ubuntu標準のディスプレイマネージャー。これを止めれば実質GUIに関するデーモンは止まったことになる。

再起動してもCUIのままにする場合
/etc/event.d/rc-default
の中身を変更する。



②一時的にランレベルを変更
telinit N
Nにランレベルを入れる。
各ランレベルの定義がなされるCentOSではあんまり頻繁に変更することはないと思うが、Ubuntuでは決まっているのはランレベル1,2のみ。3以上は自分で設定する。



そろそろ部屋が限界なので引越しを考え中。






桜色
気づけば緑
見もせずに

2010年4月18日日曜日

メモリトニアン演算子

どうも、最近倒立振子実験にちょっと成功したQです、こんちには。

倒立振子といっても20秒くらい立ててるのに成功しただけなんですけどね。しかし、そこから得られるものは沢山ある上に、制御論の一種登竜門なので前からやってみたかったわけです。

RoombaとかLinuxとかもっと身近になるといいなあと思いつつも、まだまだ先は長いなと等と。というわけでメモ。




①Linuxでファイルシステムの操作
パーティション切ったり、起動ディスクにしたり。
fdisk デバイス(/dev/sdbとか)
ディスクのフォーマット
mkfs -t フォーマット デバイス
(mkfs -t vfat /dev/sdbとか)

fat32は32GBまで、また一ファイル4GBの制限あり。




②USBメモリでバックアップ
持っていたUSBメモリがバックアップとして全く役に立たなかったので、容量の大きいUSBメモリを買った。
Transcend JF V30 16GB 2500円
です。Linuxで認識は問題なかったが…ファイルの保存が上手くいかない。FAT32でフォーマットすると、SVNのhotcopyがおかしくなる。一方、ext2とかLinux用のフォーマットにするとzipファイルの保存が上手くいかない。
多分、書き込みできない領域とか、デバイス固有のメモリのマッピング?とかがあって、それの影響でおかしくなってんじゃないかと想像してみる。windowsでフォーマットしてLinux(CentOS)で使って見たがdemsgで確認するとfatがパニクってた。駄目駄目。
とりあえず、今のところうまくいってるのが、

Linux、fdiskでfat32(LBA)にフォーマット
mkfs -t vfat /dev/sdb1
USBメモリを、基盤に直接取り付けられてるインタフェースに挿す。

なんか相性問題とか色々あるのかな。




③LinuxでBluetooth,SPP通信
僕にとってBluetoothとは無線シリアル通信用の道具なのだが、これをLinuxで使ってみようと思った。昔は色々あったようだが、今は殆ど自動で認識できるみたい。とりあえずplanexのminiEDRは上手くいった。

hciconfigで認識されている送信デバイスの情報を確認できる。
hcitool scanで通信できる受信デバイスとそのMACアドレスを発見する。
rfcomm bind 1 受信側デバイスのMACアドレス
rfcomm1というデバイスファイルが出来るので、それをcomポートとして使う。
minicomを設定して起動すればOK。

bind設定を切るときは
rfcomm relese 1

ubuntuでもCentOSでもいける。



④処理優先度の変更
root権限が必要だがniceというコマンドでプログラム処理の優先度を変更できる。
nice -n -20 プログラム
とすると最優先で実行。
nice -n 19 プログラム
とすると優先度が最も低い状態で実行。

なんで必要かというと、どうもシリアル通信などをするときのスケジューリングに関わってくるっぽい。通常のプログラム起動では、シリアル通信のインターバルが遅くなったり速くなったりして不安定なのだが、最優先で実行すればこの影響は少なくなる。

倒立振子の実験で何やってたかというと、ボール式マウスで角度を認識して、PCで必要な移動を計算、そしてPCからシリアルで命令を送るって感じなので、この送信タイミングがおかしくなられると辛い。






ブログにも
外部メモリの
役割が

2010年4月11日日曜日

メモラーの法則

どうも、平日も土日もグウタラなQです、こんちには。

というわけでメモを書きたいわけです。まあ殆ど誰も見ることのないブログなので、メモはもはや私物としてのメモですな。
まあ特にLinux絡みなんかで会社で役に立ったりすることも有るので、書いといて損はしないなと思いました。

1.Linuxでシリアル
openでfile descriptorを手に入れる。
(/dev/ttyUSB0とか)

struct termios hogeを宣言し、それぞれ必要な設定を行う。
(重要なメンバはc_cflag、キャラクタサイズとか受信有効とか)

cfsetispeed:受信baud rate設定関数
cfsetospeed:送信baud rate設定関数
tcsetattr関数で設定を有効にする.

後はreadとかwrite関数とかでやりたい放題でっせ、だんな。



2.Linuxでシリアル通信に使うターミナルプログラムの名前
minicom
よく忘れる。



3.倒立振子
inverted pendulum



4.Xでポインタを移動
XWarpPointerで移動させることが出来るが、windowがポインタをgrabしてないと、関係ないwindow(大抵はターミナルプログラム)で移動してしまうので注意。



4.static記憶クラス
staticを付けると、最初に宣言されたときのみ初期化され(明示されてなければ0で初期化)、プログラム終了まで値が保持される。従って一旦ある関数から抜けて、また戻ってきたときに、前回抜けた時の値をそのまま使うことができる。



5.Linuxで時間を取得
time.hをinclude
秒単位の時間を得るとき
time_t zikan;
time(&zikan);
マイクロ秒単位が欲しい時
struct timeval zikan2;
gettimeofday(&zikan2,NULL);
zikan2.tv_secは秒単位
zikan2.tv_usecはマイクロ秒単位

必ず忘れるんだよな・・・。



しかし本当にメモだらけのブログだなこれ。そのつもりなんだけど。




メモ書いた
書いたことを
忘れてた

2010年4月6日火曜日

カオスメモ理論

どうも、最近制御論が面白いQです、こんちには。

前の日記はカオスだったが、要するにLinux用のプラネタリウムソフトを作ったのである。プラットホームはCとX window。
まだ改善点は大量にあるが、家の微妙なPCでもマウスでそこそこインタラクティブに視点変更ができるので、それなりに面白いものができたんじゃないかと思っている。もちろんメガモードも持ってます。最もメガモードだとそれなりに天の川とか映るけど、とてもインタラクティブとは言いがたい操作性。

まあちょっとマシンパワー当たりに手を加える必要があるかもしれない・・・。まだこういった機能付けたいといったものがあるので余裕をみて少しずつ改善していく予定です。将来的にはは実機のプラネタリウムと連携とかも考えてはいるのですが。

で、実装に完全にかまけていたのでメモ。まじカオス。

1.KDevelop
デバッグ環境が欲しかったので、KDevelop使ってみた。gdbとかで頑張るのもまあぶっちゃけ馬鹿馬鹿しいだけなので、この際一つ何か使えるようになっておこうかと。
普段Linuxではemacsでプログラム書いてるので、プログラム書くときにctrl-cとか押してしまうのに参った。というわけでショートカットボタンを変更。良く使うコマンドはemacs仕様に変更。setting->configureナンチャラとかで色々設定できる。

ちょっとハマッたのがプロジェクト管理。本家のQ&Aによると、画面の右側にAutomake Managerというのがあるので、ここで既存ファイルをプロジェクトに追加したり、特定のファイルをプロジェクトから外すことができる。



2.mallocとかcallocとか
Cの仕様として、保証される最大サイズは64KByte。これ以上確保する場合はエラーが発生する可能性がある。まあ今のPCのメモリは普通にGByte程度は有るので、よっぽどのことをやらない限り問題にはならない気がするけど。



3.feof()
現在ファイルポインタが指している文字がEOFかどうかを判定する。ただし、
12345\nEOF
見たいなファイルでfgets()を使っていると、ファイルポインタの中身?は\nで止まってしまうので、
while(feof(fp) == 0){
fgets(fp);
}
というコードを組んでいると、EOFを一行として余計に読み込んでしまう。
詳しい実装は知らんが、おそらくファイルポインタから読み込まれたストリームの最後の文字がEOFかどうかを調べているんだと思う。従ってEOF前の\nでストリームの最後の文字が止まるため、whileの判定文をすり抜けてしまう.



4.XWindowのディスプレイとスクリーンの意味。
スクリーンはいわゆるマルチディスプレイ環境におけるどのディスプレイか?を示す。デュアルディスプレイとか言うときのディスプレイの概念はこっちに当てはまる。一方ディスプレイは凄い怪しい説明が多いのだが、最も明解な説明は、「ユーザーに提供されるマウスやキーボード、モニタ等の、インターフェースのセット」。現代のPCのイメージだと想像し難いが、昔のハイスペックなPCを皆で共有していた時代の概念だと思う。インターフェースのセットなんて考え方は一人にPC一台の時代には不要な概念だし。



5.Xにおけるマウスのボタン。
右手系において、
左ボタン:Button1
ホイールをコチってする:Button2
右ボタン:Button3
ホイール前回転:Button4
ホイール後回転:Button5
に相当。



6.構造体を型として定義
typedef struct{
short suzuki;
long watanabe;
char *tsukishima;
int kobayashi;
double iwaki;
} zannen;
ど忘れした。こんな感じで定義する。



7.キーボードからの入力を受け取る
KeyPressMaskをイベントして許可する.
通常のウィンドウの場合、フォーカスが有ればキーボードの入力は普通に認識されるが、override_redirectが設定されてたりするとキーボードの入力が認識されない。認識されるようにすることをgrabとXでは表現しているようだが、キーボードの入力をgrabするためには、ウィンドウをmapした後に、
XGrabKeyboard
という関数を使う。
さらに入力された文字が何かを知るためには
XLookupString(
XKeyEvent*,
char*,
int,
KeySim*,
XComposeStatus*)
という関数を使う。最後の二個の引数はNULLで良い。char*にアスキーコードが返され、intに数が返される。



8.Pixmapのクリア
XClearWindowはWindowに対して定義されている関数で、Pixmapには使えない。代用として、drawableに対して使うことができるXFillRectanbleを用いた。



9.イベントのqueueingと圧縮
ExposeやMotionNotifyのイベントは大量に発生するので、逐次対応していたのでは描画に時間がかかったりして非効率である。そこで、同じ種類のイベントがあったら一つにまとめて対応することが良く行われ、これをイベントの圧縮という。
Bool XCheckMaskEvent(
display *,
long,
XEvent*)
Bool XCheckTypedEvent(
display *,
int,
XEvent *)
queueingされているイベントのうち、同種のイベントが有るかどうかをチェックし、有ればそのイベントをqueueから削除してXEvent構造体に格納、Trueをreturnする関数。



10.日周運動と緯度
diurnal motion
latitude
latitudeってD○LLのPCってイメージだが緯度って意味だったのね・・・。



11.マルチスレッドのプログラム
コンパイル時に-lpthreadを付ける。忘れてはまった。



12.意図的にイベントを起こす
マルチスレッドなんかやってると意図的にイベントを起こしたくなる。
XSendEventという関数を使う。
使いかたが意外と面倒なのだが、基本的にはXEvent型の変数を定義して、内部のメンバの値を色々偽装する。そして、XSendEvent関数で当該のDisplayのイベントqueueに送り込むことになる。Exposeイベントなんかでは使うことも有るのではないかと思う。
ちなみにExposeイベントとかのメンバにはcountというのがあって、本来は同様のイベントが少なくともあと何回くるか?を表す。イベントの圧縮の手法にこっちを使うことも有るようだが、XSendEventで送られたイベントはこの処理は行ってくれない。従って自分で調べて偽装するか、これに頼らない実装を採用することになる.



13.sprintf
printf関数の何が便利って%dとかだと思う。double-char変換を簡単に行う方法として、
sprintf(配列的なもの,"%f",double型の何か);
で代入できる。



しばらくメモをサボってただけ長文メモになってしまった・・・




眠いけど
いつかは見るさ
このメモも

2010年3月20日土曜日

現代メモ理論

どうも、Hyper 鬱ッティング処理が可能なQです、こんちには。

てかメインで使ってるPCが流石に駄目なんじゃないかと思い始めて来た。PenM1.7G、メモリ1.5Gではやはり色々としんどいものがある。まあノートPCなんでHDDの問題とかもあると思うんだけど、ちょっと頑張らせるとすぐに100%になるのはいかがなものか…


1.svn導入

svnなんて書くと本当に現代メモ理論って感じですね(笑)最近まで知らなかったのだが、svn等という超便利なversion管理、ファイル共有ソフトがあるらしい。
これでも一応プラネタリウムとか趣味の関係でそこそこのデータ量を持っているので、PCがお亡くなりになられると結構悲惨。年数回くらいのペースでDVDとかに焼いていたんだけど、ぶっちゃけ

”超”

メンドクサイ。

と言うわけで折角サーバー立ててあるんだし、昨日あたりから導入してみた。

CentOSは特に標準でsvnが入ってるので特にインストール作業は必要ない(仮に無くてもyumで手に入る)。

サーバー側
レポジトリ(ファイルを保存しておく領域)を作る。

mkdir レポジトリ用ディレクトリ
cd レポジトリ用ディレクトリ
svnadmin create ./

これでこのディレクトリはレポジトリとして機能する。



クライアント側
(windowsはTortoiseSVNという便利なGUI環境がある)

既に存在しているレポジトリに参加する場合
まずディレクトリを作る。
windowsではその作ったディレクトリの中でチェックアウトを実行すればOK
Linuxでは作ったディレクトリの中で
svn co svn+ssh://<ユーザー名>@<サーバー名>/<取得したいディレクトリのパス> ./
とすればOK
これでこのディレクトリはレポジトリと同期する。
このレポジトリからクライアントPCに、"同期情報を持ちながら"ファイルを持ってくる作業をチェックアウトという。同期情報を持たず、つまりレポジトリに参加するのではなく単なるダウンロードを行う場合はエクスポートという。(完成版の出力やファイルの二重化を行う場合に使うらしい)

クライアントにあるファイルをレポジトリ化する場合
いくつか方法はあるだろうが僕はこうやった。
まずサーバーに空のレポジトリをつくる。
次にレポジトリ化したいファイルがあるディレクトリに移動し、空のレポジトリに対しチェックアウトを実行する。(ファイルをとりあえずレポジトリに参加させる)
レポジトリ化したいファイルに対し追加を実行する。
(Linuxではsvn add <ファイル名>を実行する。まあ大抵は*なんじゃないかと思う)
最後にサーバーに、ファイルに変更があったとして通知、アップロードする。
(Linux ci *とかでOK。環境変数EDITOR=emacsとかviが事前に作っておく必要あり。エディタファイルが開くので、--この辺から無視--とか書いてある部分の上の業に当該ファイルの情報をカット&ペースト、終了でいける)
このファイルに変更があったとして通知、アップロードする作業をコミットという。同期せず単なるアップロードを行う場合はインポートという。

詳しいことは良く分からんけど、なんか変更を加えたらとりあえずコミットしておけばOK。

(windows)
サーバーと同期するのはやめるときは、同期している最上位のディレクトリで
for /R %i in (.svn) do rd /Q /S "%i"
を実行すると、全ての.svnファイルが削除される。これでOKっぽい。
また、コミットされているファイルを削除したり名前変えたりする場合は、当該のファイルで右クリックしてTortoisSVN⇒削除とかを選ぶ。

(linux)
linuxでは
svn rm ファイル名

いずれも実行した後はコミットを行う。





2.mas
milli-arc-secondの略。星の位置を表す単位の一つでミリ秒角のことらしい。






僕一人
svnで
どうするの?

2010年3月15日月曜日

USBめもリ

どうも、ピカピカの鬱年生のQです、こんちには。

今の普通にインストールしたLinuxだと、USBメモリとか殆ど何の問題もなく使えます。しかし、serverみたいにGUIが用意されていないような場合どうしたらいいか知らなかったのでメモろうという魂胆な訳です。

CentOS 5.4
コマンド
dmesg:システムの情報を表示、ここで検出されたUSBの名前とかfile systemを確認
usb-storageほげげのあたりを確認する。
自分の環境では
SCSI device sdb:25600 512-byte hdwr sectors(131MB)
sdb:assuming drive cache:write through sdb:sdb1
と認識されたので、適当なところにディレクトリを作り、
mount -t vfat /dev/sdb1 ./(作成したディレクトリ)

外すときは
umount /dev/sdb1
でアンマウントしてから。

まあ何したいかっていうと古いUSBメモリが余ってたのでしばらくbackupの代わりにしてみようかと。どこまで信用できるか分からんが。

df:ハードディスクとかUSBメモリの容量や使用率を見る。



追記
容量が小さすぎて使い物にならなかった。
vi使うのメンドクセェ…鬱。






数年前
大容量の
メモリかな

2010年3月14日日曜日

Roomemoba

どうも、最近あまり体調が良くないQです、こんちには。

先週は咳&喉の痛みで、今日はなぜか頭痛がする。今はかなり落ち着いたけどまだ若干ふらふらする・・・。ここんとこ色々不調が多いので気を付けないとなぁ。差し当たり無茶してるつもりはないんだけど。


1.hacking roomba
9割がた読み終わった。まあ16章の一部と付録は正直どうでもいいor今更な内容だったのでもう読み終わったとしても問題ないかと。TOEIC400点に満たない僕でも普通に理解できたのでそれなりに平易な英語で書かれていると思う。簡単なレビュー、参考まで。

1章
この本の全体的な概要とRoombaの簡単な説明(本来の機能とか簡単な歴史とか)。この本読むような人はおそらく中古で安いのを探している∧Roombaの簡単な構造とかを知りたいだろうと思うので、ここだけでも読む価値があると思う。

2章
Roomba製造元のiRobotが公開したROI(Roomba Open Interface)の説明。要するにコネクタの各ピンの機能、通信プロトコル、及びRoombaの動作モードについて。マイコンとかでガシガシ遊んでいる人は1章、2章だけ読めば後は読む必要はないかもしれない。以降はこんなのを作ってみよう、使ってみよう系の話なので。

3章
Serial Tetherの製作。PCのRS232CとRoombaを接続する簡単な中継基盤を作る。2章が問題なく理解できる人は、著者が提供しているRoombaCommTestの部分以外は読む価値は無いと思う。逆に初心者の人は抵抗やLEDの簡単な使い方なんかを説明しているので、初めての半田付けくらいの気持ちで読むといいかも。

4章
Serial TetherのBluetooth版の製作。僕は実際これを作った。製作自体はむしろ3章より簡単。BlueSMiRFという装置の使い方が分かる。

5章
モーター部分の分解の様子と、Driveコマンド(実際に動かすコマンド)、およびそれ関連のjavaソースコードの説明。また、Roombaの移動指示をどう計算すればよいかも載っているが、一部間違っているので注意。本家サイトにエラッタ関連のコメントを確認。

6章
センサー部分の説明と使い方、それ関連のjavaソースコードの説明。ここではbumpturn(ぶつかったら方向を変えて進む)とか、角度や距離の検出法なんかも書いてある。

7章
Processingを使った、RoombaViewのプログラミング。平たく言えばRoombaを上から見てどのように動作するかのモーションシミュレータと、操作ボタンを組み合わせたようなプログラム。実際にはソースコードが著者サイトに落ちているので書く必要はない。

8章
同じくProcessingを使ってRoombaに歌わせるプログラミング。songコマンドとかplayコマンドの説明とか。パソコンのキーボードを鍵盤にみなして、Roombaに音を出させるprocessingプログラムが著者サイトにある。

9章
Roombaに絵を書かせるプログラミング。スピログラフがらみの話とかマジックをどうRoombaに取り付けるか、とか。なお後半はちょ、おま!!という展開になっている(笑)こういう行動力は素晴らしいと思う。

10章
Roombaをマウス代わりにしてみたりThereminもどきにしてみたり、目覚まし時計にしてみたり。いずれもprocessingが前提だが、versionが合ってなかったりlibraryが古かったりで本気でやろうと思うと結構面倒くさいと思う。一応Thereminは書いてみたが、むしろprocessingの方ではまった。

11章
RoombaにEthernetを乗せようと言う内容。色々書いてあるが、日本ではXPortが有るのでこっちが重要な内容かな…。XPortの使い方、javaでsocket開いて繋ぐ内容があるので読む価値はあるかも。ちなみに、ここではあくまでEthernet-RS232変換装置、という位置づけ。

12章
11章のwiportバージョン。wiportは素晴らしい製品だと思うが、残念ながら日本でwimicro(wiport+ベース基盤)を手に入れることは出来ない(電波法の関係)。もしwiportを使おうと思うと、自分でベースとなる基盤を作らなければいけない。

13章
RoombaにBasic Stamp、Arduinoを乗せて動かしてみようという話。Basic StampはともかくArduinoはブームなので、これで遊んでみたい人は読んでみると良いかもしれない。Arduinoに限って言うと、bumpturnとbumpturn+moodlight(怪しく光らせて走り回らせよう的な感じ)の作り方が載っている。

14章
15章とともに最も残念になってしまった章。Roombaにlinuxを乗せようという話なのだが、linuxを積んだwireless router等を使っている。これらが、まず販売終了しているのと中古も無い、海外からは変えない(同じく電波法)と言う三重苦。OpenWrtというrouter用linuxのディストリビューションや、それ関係の勉強の章になっちゃってる。非常に悔しいところ。

15章
おそらくこの本の最大の売り所だった章。Roombaにwireless router+webcamを乗せようという話。残念ながらrouterもwebcamも手に入らない。ちゃんと探していないのでもしかしたらどっかに有るかもしれないが…ただそれ関連の簡単な使い方に関する勉強にはなる。僕のようなヘッポコlinux userには以外とありがたい話。

16章+付録
他のなんか乗せてみたの事例紹介と、着せ替え?用のコスチュームの話、と実際にちょっとだけハードに手を加えるような話。付録は、半田付けについて、電気回路について、及びROIの仕様書。まあさすがにこれはいいやって感じなのでちゃんと読んでません。


てな感じ。全体として、「Roombaはファンタスティックで凄いんだ、でもこの部分が…」「Roombaでこんなことできたら楽しいと思わないかい?」的な文体です。ジョークも織り交ぜられており、親しみの持てる内容じゃないかと思います。もし邦訳するなら14章までが価値のあるところかな。邦訳するよりも、この本をベースにして日本で手に入る部品や装置を元にもう少し今風に書き直すってのが良いかも。





2.N330、D410、D510の消費電力、参考まで
D410(SSD:8GB,memory:2GB×1)
起動していない状態 1.5W位
bios画面 18W位
LiveCD(ubuntu),idle 20.5W位

D410(HDD:320GB(7200rpm),memory:2GB×1)
installed centos,idle 23W位

D510(SSD:8GB,memory:2GB×1)
起動していない状態 1.5W位
bios画面 17W位
LiveCD(ubuntu),idle 20.5W位
installed ubuntu,idle 19.0W位

N330(HDD:320GB(7200rpm),memory:2GB×1)
installed centos,idle 32W位

↑結構適当なので注意。あくまで参考。

意外なのがidleだとD510の方がD410よりも消費電力が少ないこと。まじで?つまりD410意味無いじゃん!!というかD410の消費電力に関するレビューが全く見つからないのはどういうこと?まあD410+1000円でD510買えるならD510買うわな、そりゃ。
Atom N世代からD世代で約20%程度の消費電力削減らしいのでまあ妥当なところなんじゃないかと思っている。

今までN330をサーバーに使っていたが、D410のあてが全くなくなってしまったのでそのまま植え替えた(笑)まあどうせ大した負荷は掛からないのと超静かなのが素晴らしい。逆にN330どうすんねんという(笑)しかしD510スゲェな…。てかスペック的に微妙なPCばっかり持ってる漏れ…。





3.D510+SSD+ubuntu9.04について
なんかたまに起動失敗するので、biosでpre-delayという項目を0⇒5にしたら直った。まあ遅いSSD使ってるのでなんとなくその辺の原因かなと思っている。しかし、それでも起動超速い(笑)ヤバイ、SSDはまりそう。


この辺の作業でこのブログが今ままで初めて役に立った(笑)メモは重要じゃよ。







吹雪から
花吹雪なる
想いかな

2010年3月1日月曜日

やさしいメモ論

どうも、最近ニコニコ動画の凄さに気づいてしまったQです、こんちには。

タイトルのネタが段々乏しくなってきましたが、まあ最悪、~~第二とかで逃げれば良いので(笑)

1.スピログラフのイメージ
スピログラフとはちょっと違うけど。
二つの同じ半径のボールが有ったときに、一つのボールを固定して、もう一つのボールを固定されたボールの上を滑り無く転がしたとき、半周分しか転がさないのに、何故か転がした方のボールが一回転する、というのが分からなかった。
でもそれは以下のように考えることで解決できた.











つまり、一回転したように見えるけど、実際は二つのボールがそれぞれ反対方向に半回転分回っているわけですな。そして、固定されているはずのボールを本来の位置に戻すと一回転しているように見えると。






2.Rumer has it the world is held together by duct tape.
最初意味が分からなかった。Rumer has itで「~~という噂だ」という意味だと言うことが分かると…(笑)




3.XRaiseWindow
本来の意味としては、当該のwindowを上に表示させる関数。が、override-redirectがFalseの場合、イベントが通知されるだけで実際には上にならない。この辺の動作は思ったよりも難しいのかも知れない。





4.XDrawString16
2byte文字を書くための関数なのだが、引数に文字数の指定がある。この単位は2byte indexingらしい。明示的に書かれて無いので不明だが。また、普通の1byte文字を放り込んだ場合、byte2に当該の文字が入り、byte1は0x00として扱われる。





5.linuxでCPUの情報をみる。
cat /proc/cpuinfo




6.AtomプロセッサD510
GPU内蔵のDual Atomプロセッサ搭載のマザーボードがintelから出てる。ATX電源の端子が説明書には24pinと接続する的なことが書いてあるが、20pinでも動いた。


そういえば最近プラネタリウムから離れ気味だなぁ…





プラネもね
流石にそろそろ
始めたい

2010年2月9日火曜日

樹海の入口にメモを書く

どうも、会社の先輩に結婚しないなんて人生損するよ?と言われること山の如しのQです、こんちには。


すいませんが先輩、あんまり幸せそうじゃないっす(笑)

さてさて、Xwindowという樹海に紛れ込みそうになっているので、とにかくメモを書いておきます。基本的な概念・構成は今から20年以上前に出来ていたわけで、当然ながらちょー巨大・カオスなプログラム、ライブラリと化しているわけです。
とんでもないところに足を踏み入れたもんだ・・・


1.Atom
サーバーとクライアント間の通信に使われる、識別子、らしい。Atom自体は単なる32bitの整数型でしかないが、これに
atom = XInternAtom(d,*name,only_if_exist)
とすることで、*nameの関連付けをすることが出来る.
dはDisplay、*nameは要するにAtomにつける名前、only_if_existはbool型で、よくわからんがとりあえずTrueの時は*nameのAtomが存在するときに値を返す、Falseの時は*nameのAtomが存在しないときに新しく生成してくれるらしい。

とりあえず、これを使えばクライアント-サーバ間やクライアントークライアント間通信を実現できるのだが、実際にはwindowのプロパティとかEventとかの設定をしなければいけない。ぶっちゃけ使うだけならなんとかなるのだが、この辺の深い内容は一度腰を据えてきちんと理解しないとカオスになりそうなので、今はここで留めておこう。




2.xで色を使う。
Colormap = DefaultColormap(Display,0)
デフォルトで用意されているカラーマップのIDを手に入れる。

XAllocNamedColor(Display,
Colormap,
(char*)color_name,
XColor *screen_def_return
XColor *exact_def_return)
Colormapを放りこんで、color_nameを指定すれと、exact_def_returnには本来指定されるべき色のデータ、screen_def_returnには使いたい色が使えなかった場合に近い色のデータが返される。要するにscreen_def_returnに代入される値を使う.




3.Linuxで文字のエンコードを変える。
システム的に変えるには
/etc/sysconfig/i18n
の内容をいじり、再起動。

その場で文字コードを変換するには
nkfというコマンドが使える。
echo hogehoge | nkf -e
とやるとEUCになる。
kccも似たようなことができるようなのだが、僕のPCではうまくいきません。
まあnkfが動くからいいけど。




4.古いRoomba
やっぱりROIが使えなかった。鬱。





なんてこと
これじゃあ只の
掃除機じゃん

2010年2月1日月曜日

ヌーメモローン

どうも、メッケーモとかヌーメロローンとか分かる人には廃人全開にしか見えないであろうQです、こんちには。

人生は色々あるとは思いますが、時として色々賭けざるを得ない状況もあるような気がします。てか、まあどうも僕は何かを作ったり、熱中してないと死にたくなる人種だということは最近理解しました.

というわけでメモ。

1.DUB-9、シリアルポートの割り当て
PCのポートの場合、

1.CD:データキャリア検出
2.RD:データ受信
3.TD:データ送信
4.DTR:データ端末レディ、PC送信中
5.GND:信号のグラウンド
6.DSR:データセットレディ、周辺装置稼働中
7.RTS:PCからの送信要求
8.CTS:周辺装置の受信可能通知
9.RI:周辺装置から呼出信号検出の報告

マイコン的に重要なのは
RD <- 周辺装置TD
TD -> 周辺装置RD
GND -- 周辺装置GND
RTS -> CTS
DTR -> DSR

この辺の情報は調べると錯綜気味な内容が多いが、とりあえず自分の環境ではこれでいける。




2.イヤホン用ジャックの耐電流
調べるのが意外と大変。本気で調べようと思うと、JIS規格のPDFを購入する必要があるっぽい。まあとりあえず調べた限りでは、

3.5Φジャック 約1[A]
6.3Φジャック 約2[A]

と見積もれば大丈夫っぽい。まあ、このイヤホン用ジャックで耐電流を気にするような使い方は普通しないと思うけど、着脱性と入手性は良さはトップレベルかもしれない・・・。




3.incompatible implicit declaration of built-in function
built-in関数の不正な?暗黙の宣言。
要するに、適切な宣言が行われていない関数が存在する時に発生する警告。

自分はstrlen()を呼ぶときにstring.hがincludeされてなくて出た。本やホームページに書いてあるソースが常に信頼に値するわけではないことを学習した.




4.Xにおけるフォント関連
xlsfonts:Xで使えるフォントの一覧
xfd -fn hogefont:当該のフォントの中身を見る

フォントの読み込み
Font font = XLoadFont(d,"hogefont");
なおフォント名はX Logical Font Description Conventionsに従っている必要があり、?や*による正規表現が可能。

GCにフォントを設定
XSetFont(d,gc,font);

文字列を書く
XDrawString(d,w,gc,x,y,"hugahuga",length);
w:書きたいwindow
gc:この場合は設定したフォント
x,y:よく分からんが、windowの左上を原点として、文字列の最初の文字の左端、下から3分の1位の位置を指定する感じ。フォントによって違うかも。
length:文字列長さ




5.window回り
window内にwindowを作ることができ、これをsubwindowと呼ぶらしい。

sub_window = XCreateSimpleWindow(d,parent_window,,,,)
これでsub_windowはparent_windowのsubwindowになる。

また
XsetSubwindowMode(d,gc,subwindow_mode)
という関数があり、subwindow_modeには
ClipByChildren:親windowへの書き込みがsubwindow内に影響しない。
IncludeInferiors:親windowへの書き込みがsubwindow内に影響する。
この辺をクリッピングとか言うらしい。
defaultはClipByChildren。

XRaiseWindow(d,w)
wをwindow stackのtopに置く。要するに一番上に表示させる。またExposeイベントをキューイングする。

XMapWindow(d,w)
wを実際に表示させる。manualのancestorの意味がいまいち掴めんが、親windowの連なり、のことをいってるのかな?要するに親(とその親とその親の・・・)windowが全てmapされてなければ、表示される資格が与えられるのみで、表示はされない。

subwindowを全部表示するのがメンドクサイときは
XMapSubWindows(d,parent_window)
を使う。manualでも推奨されています。

XMapRaised(d,w)
Mapして最上位に表示。




6.ボタンを作るのに便利なイベント
イベントタイプがButtonPressのとき、
Event.xany.window
でどのwindowでButtonPressが発生したのかを拾うことができる。
subwindowに使うとボタンに相当する機能が実現できる.




7.wc
トイレのことではなく、行数や文字数を表示するコマンド。





ほげほげほげ
ほげほげほげほげ
げほっげほ!!

2010年1月9日土曜日

会心の一メモ

どうも、メモ概論第一履修中のQです、こんちには。

今日もめげずにメモを書いてみたりします。


①LinuxでCPU使用率をみる
vmstatというコマンドで簡単に見ることが出来る。


②Linuxでフリーズ時の対応方法
Ctrl+Alt+F1で一時的にCUI環境に移行する。
そこで色々好き勝手やった後(主にkill関連の作業)
Ctrl+Alt+F7でGUI環境へ移行する。


③python,threadingモジュール
クラス(インスタンス)として複数スレッド処理ができる。
ただし、run()メソッドを使ってはいけない。(通常のシーケンシャル処理になる)
start()メソッドを使う。


④pythonで16進表記のビットをASCII文字として扱う方法
'ab(何かのASCIIコード)'.decode("hex_codec")
ASCIIコードで明示的に文字を指定できる。Cだとすこぶる簡単なのだがpythonではメソッドを使う。


⑤python,pygameで音楽再生
pygameというモジュールがあって、mp3の再生やwindowを作るのに非常に便利。本来はゲームを作る為のモジュール、というかもはやフレームワーク。音楽の再生に関して、set_endevent(type)というメソッドを使うことで音楽終了時に終了イベントをqueuingすることができる。また、このイベントは発生した後にpygame.event.get()メソッドで拾うことが出来る。この返り値の.type属性を見れば発生したイベントのIDが得られる。
なお、get_endevent()というメソッドがあるが、これは発生したイベントを拾うのではなく、どんなendeventをsetしたか?を調べる為のメソッド。勘違いして若干はまったので注意。


いやしかしpythonは素晴らしい。




今更に
pythonを知り
浮かれてる

2009年12月20日日曜日

つまりはメモ代わりってことだろ?

どうも、食べる方の鯖も好きですが、コンピュータの鯖もそれなりに面白いと思っているQです、こんちには。

というわけで鯖構築とかちょっとメモ。最近メモばかり書いてますが要するに、まあ書いた方が良いという自分の中での需要があるから書いているわけです。



①emacs設定

CentOS,emacs 21
ホームディレクトリの.emacs内に書く。

(setq transient-mark-mode t)
範囲指定で色づけ

(global-set-key "\C-h" 'delete-backward-char)
backspaceキーをbackspaceキーとして使う。ものによると思うが、自分のPCは\C-hとして認識されていた。

(global-font-lock-mode t)
プログラムを書くときに色をつける。(バージョン22は不要)



②useradd,userdel

新規ユーザーを作る。
root権限
useradd hogehoge
passwd hogehoge
(二回パスワード)

ユーザーを削除
userdel -r hogehoge



③ftp(vsftpd)サーバーを立ち上げほか

自動起動ON
/sbin/chkconfig vsftpd on
(/sbin/chkconfig --listで自動起動するサーバーを調べられる)

起動、停止、再起動
/etc/rc.d/init.d/vsftpd start(or stop or restart)

vsftpdに限らず、httpd,sshd等も同様の方法でいける。

なお、ランレベルというものを見ると、ある起動条件下で、何が起動するかを調べることが出来る。

/etc/inittabで
id:?:initdefault
の?に入っている数字を見れば、どのランレベルで起動するか分かる。
(/sbin/telinit ?で?のランレベルに切り替え)

ランレベル3はテキスト環境
ランレベル5はグラフィカル環境

/etc/rc.d/rc1(2,3,4,5,6).d/*
で各ランレベルで何が起動し、何が起動しないか分かる。
Kで始まるリンクは起動しない(終了)
Sで始めるリンクは起動する。
数字は起動する順番(小さい方から)



④ファイアウォール、SELinux

ファイアウォールによって閉じているポートを開く。
system-config-security level
で設定画面を呼び出し、開きたいポートを指定

ファイルにはユーザーごとにアクセス権限があり、SELinuxがそれを監視している。
したがってユーザーがプログラムを介してファイルにアクセスする為にはプログラムそのもの(例えばftp)にアクセス権限を与えなければならない。

/usr/sbin/setsebool -P ftp_home_dir true
これでftpで自分のホームディレクトリにアクセスできる。

httpdで一般ユーザー権限のディレクトリ、ファイルをapacheで公開する場合は、
ファイルがあるディレクトリに対しては
chmod o+rx ディレクトリ
でその他ユーザーに実行権限・読み込み権限
途中のディレクトリに対しては
chmod o+x ディレクトリ
でその他ユーザーに実行権限(通過)を与える。

また、公開するディレクトリは
/sbin/restorecon -R ディレクトリ
を実行する。
よく分からんが、ファイルとタイプの不整合を解決するものらしい



⑤cron
定期的にコマンドを実行させる。
/etc/crontab -eで設定環境を実行

* * * * * コマンド
で設定とあるが要するに
(minute) (hour) (day) (month) (week) コマンド
ということ。
指定したmonth、day、hour、minute、weekにコマンドを実行してくれる。

9 10 11 12 * emacs
としておけば12月11日10時(AM)9分になるたびにemacsが起動する。



⑥IPアドレス、ホストネーム、arrow,denyの設定

/etc/sysconfig/network
ネットワーク全体
HOSTNAME=saba.hogehoge ホスト名
DOMAINNAME=hogehoge ドメイン名
GATEWAY=0.0.0.0 ゲートウェイのアドレス

/etc/sysconfig/network-scripts/ifcfg-eth?
デバイスごとの設定
IPADDR=192.168.1.1
NETWORK=192.168.1.0
NETMASK=255.255.255.0
BROADCAST=192.168.1.255

/etc/resolv.conf
DNSの指定
nameserver 192.168.1.2 DNSサーバのアドレス

/etc/host.deny
アクセスを拒否するアドレス
/etc/host.arrow
アクセスを許可するアドレス(優先)



⑦各コンフィギュレーションファイル

ftp /etc/vsftpd/vsftpd.conf
http /etc/httpd/conf/httpd.conf
ssh /etc/ssh/ssh_config
見れば簡単なことはどうすれば良いか分かる。
なおsshでキーを登録した後、PCの再セットアップしたり、同じIPを持つPCで別のOSを起動したりするとキーがおかしいので認証が通らなくなる。そういう時はホームディレクトリにある
.ssh/known_hosts
の内容を消す。



⑧文字コード

apacheで公開するときコンフィギュレーションファイルの
AddDefaultCharaset UTF-8
をコメントアウトする。
これをやらないと、どんな文字コードで書いたhtmlファイルも
UTF-8として送られてしまうので文字化けする。
htmlファイル内に文字コードはかけるのでそれをクライアントに認識してもらえばよい。



結構な分量になったが、サーバー立てるときの足がかりにはなりそうだ。自分は記憶能力に難があるとしか思えないので、記憶の外部記憶としておきたいのである。
まだまだだけど、Linuxというものが以前ほど遠いところにあるものではなくなったように思う。そろそろもう一段二段上の使い方を学ぶ時期かもしれない。
あとはHDDミラーリングと停電対策をしておかないと…なんかあったら折角の設定もおじゃんである。







鯖を読む
読む暇あったら
鯖立てる

2009年12月14日月曜日

とりあえずメモ的な

どうも、roombaタソが居れば嫁は不要論提唱者のQです、こんちには。


またしてもroomba買っちまいました。てか60ドルでこの円高なら買うよね普通。
ところで・・・


①roombaの電池について。
実はこの買ったroombaは中古で電池が死んでいた。というわけでばらして適当な充電池を放り込んでみたのである。





実は500番台は知らないが、それより前の世代のroombaの充電システムはどうも難があるらしい。なんでも充電中に爆熱になるとのこと。というわけでファンとか取り付けてみたのである。

んで、とりあえず使ってみた&充電してみた。


しばらくして・・・なんか臭い。

やばい。とりあえず外してみたら、電池がアッチイ上に若干電池ボックスがとろけている!!オイオイ…
というわけでもう少し改善の余地が有りそうだ。

とりあえず分かったのは
・充電池は直列充電はあまりよくない。というのは電池ごとに自然放電特性が異なるので、早く放電してしまうような変なのが一本混じっていると、電圧が上がらず充電しまくるようになりほかの正常な電池まで巻き添えを食らう。パックされている電池は、特性が揃っている、これが非常に重要。
普通の充電池は一本ずつ充電できるような奴の方が良いです。

・充電中だけじゃなくて、充電終了後もなんかアッチイ。やっぱりこのroombaの充電器ちょっとおかしいかも。実際臭くなってきたのは充電終了後だし…てことはより少ない充電電流でもファンを回すような方法が必要かも。

・roomba dirtの充電器は出力電流が小さい。したがってこれで充電すると電池がそこまで熱くはならない。しかし、充電器の方が耐えられるかどうか…


とりあえず改良が必要だ。


②linuxの自動起動プログラム

/etc/profile.d/*.sh
ログイン時に*.shに書いたシェルスクリプトが実行される。

/etc/rc.local
PC起動時にスクリプトが実行される。

両者の挙動は少し違う。IPアドレスを設定するようなスクリプトを書くと、上の方法ではログインしないと設定されないが、下のは起動するだけで設定される。

さらに
~/.bashrc
にスクリプトを書いた場合、ターミナル(シェル)を起動するたびに実行される。et/profile.d/*.shと似て非なるものである。

まあ、gnome使ってたら普通に自動起動するアプリをデスクトップ上で設定できるけど…







メモなんて
書いても結局
見ないかも

2009年12月7日月曜日

メモ代わり的な

どうも、鬱が直らない原因は鬱なせいではないか、等と考えつつもまあとりあえずちょこちょこ記録しておきたいQです、こんちには。


いやしかし、油断するとすぐに更新が滞る。別に誰が見てるわけでも無いだろうが(笑)
とりあえずメモ。



①CNC買った

とりあえずCNC買った。オリジナルマインド製、BLACKです。
前から欲しかったのだが遂に買ってしまった…。
別に精密加工したいわけではなく、どちらかというと手がもう一本欲しい、という発想ですね。




んで、製作時にちょっと厄介だったこと。
スライドガイドの平行をうまいこと出せないと動きが渋くなって脱調の原因になったりする。
というわけで頑張るわけだがこれが中々大変。そこで、

ネジ締めは対角線の順にちょっとずつ行う(1⇒2⇒3⇒4⇒1⇒…)
ねじを締める側にテーブルを寄せる(1,3のネジを締めるときは図の状態になる。2、4のときは反対側)

んでこれを繰り返すと結構簡単にスイスイ動くようになる。
3軸とも基本的に同じ方法でOK。うまくいかない人、お試しあれ。



②Ctrl+Cが効かない

ubuntuで仮想環境にSSHで繋いでいるのだが、時々Ctrl+Cが効かなくなる謎の現象?
これではemacsを使うときに支障を生じるので、こういうコマンドを叩いて再起動すると直った。

sudo stty intr "^c"

なんでこの現象がおきるんだろう?



③キーボードレイアウト変更

Debianでキーボード配列を変更するとき
/usr/share/keymaps/i386/qwerty/
から所望のレイアウトデータを選び
/etc/console/boottime.kmap.gz
と名前を指定してコピー、再起動


④Roombaの欠陥

どうも電池が一年くらいしか持たないらしい。
充電時、実はバッテリーは超熱くなっててこれで寿命が来てしまうらしい。

穴開け、フィンorファン取り付けによる放熱処理が必要かもしれないなぁ…
あと、バッテリーはリチウムイオンじゃないのでおそらくメモリー効果が起きる。
てことは放電とか多分本当はやらなければいけないはず。
しかし、500番以降は電池の取出しが容易じゃないんだが…どうしろと?

えーバッテリーはいいんだけど、本体に改造はやだなぁ…



とりあえず、生きてますですはい。
CNCが手に入ったので、作業効率は上がると思われ。
いやはや。なんとも、フライス、旋盤でゴリゴリするのも時代遅れなのかもしれないなぁ…







一通り
揃った工具
何ゆえに

2009年8月28日金曜日

起動時間と設定

どうも、とりあえずメモしたいQです、こんちには。

メモ1
各Linuxディストリビューションの起動時間

PCのスペック Celeron 540(1.86Ghz)
RAM 1.5GByte
でたまたま三つの主要ディストリビューションがブートできる。スイッチ押してログイン画面が出てくるまでの時間。

ubuntu9.04  30.3s
CentOS5.3  1m32.6s
PlamoLinux4.6  37.5s

ちなみにシャットダウン時間
ubuntu9.04  10.6s
CentOS5.3  23.9s
PlamoLinux4.6  4.5s


ubuntuの起動時間が素晴らしすぎる。apt-getも使えるし…CentOSはまあ用途が用途だし仕方ないのかも。PlamoLinuxはシャットダウン時間が半端無いがこれ本当に大丈夫なのかとちょっと心配になる。


メモ2
PlamoLinux4.6だとUSBマウスのホイールがデフォルトでなぜか使えない。
/etc/X11/xorg.conf

Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"

にするとホイールが使えるようになる。
ただemacsでホイールの入力が定義されてないので動作しなかった。設定の必要があるが、まあemacsはほとんどキー操作を覚えてしまったのでもういいかなと…(笑)
まあ暇を見つけて方法を探してみよう。

てかemacsになれるとマジでwindows環境で困る。ついついC-xとか押してしまう(笑)


メモ3
リンクをはる時は、アプリケーションの実際の場所をしめす実行ファイルをPATHが通っているところに置けば良い。アンインストール時に困りそうなので、firefoxとか消さなそうな奴は重要な所において、微妙な奴は新しくフォルダを作り、PATHを通して置くと良いかもしれない。