どうも、色々やってましたがそろそろ新しいことをやってみたくなった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からシリアルで命令を送るって感じなので、この送信タイミングがおかしくなられると辛い。
ブログにも
外部メモリの
役割が
倒立振子といっても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はマイクロ秒単位
必ず忘れるんだよな・・・。
しかし本当にメモだらけのブログだなこれ。そのつもりなんだけど。
メモ書いた
書いたことを
忘れてた
というわけでメモを書きたいわけです。まあ殆ど誰も見ることのないブログなので、メモはもはや私物としてのメモですな。
まあ特に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型の何か);
で代入できる。
しばらくメモをサボってただけ長文メモになってしまった・・・
眠いけど
いつかは見るさ
このメモも
前の日記はカオスだったが、要するに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年4月5日月曜日
室内製写真を観測写真と偽装
室内産の天体写真を実際に観測した写真と偽り発表したのは景品表示法違反に当たるとして、文○省は4月4日、「Q-star」や「QsX」の名でプラネタリウム関連の発表をしている○県○市のプラネタリウム製造会社「Q-star研究所」に、再発防止を求める措置命令を出した。
文○省によると、Q-star研究所は今年4月初頭、QsXを用いて自社工場で撮影した室内産の天体写真を、mixiやブログ等で発表。この際、紹介文や付帯情報に「観測写真」と記載したという。QsXは、200万個の星空のシミュレータソフトとして知られており、類似のフリーソフト等と比較して、操作の簡便さやインタラクティブ性に特化している。
昨年4月、実際の天体写真観測用の手段が無くなり、社長が社長に偽装表示を指示。社長はmixiで「X windowを使えば実際の写真を撮りに行かなくても大丈夫だと思った」と説明しているという。
○○技研のプラネタリウム問題専門家、○○社長は「昨今の技術の進歩を考えれば、プラネタリウムを用いた天体写真の偽装は十分可能であり、早急な対策が必要」と述べた。
以下問題となった写真


(Q-star広報)
文○省によると、Q-star研究所は今年4月初頭、QsXを用いて自社工場で撮影した室内産の天体写真を、mixiやブログ等で発表。この際、紹介文や付帯情報に「観測写真」と記載したという。QsXは、200万個の星空のシミュレータソフトとして知られており、類似のフリーソフト等と比較して、操作の簡便さやインタラクティブ性に特化している。
昨年4月、実際の天体写真観測用の手段が無くなり、社長が社長に偽装表示を指示。社長はmixiで「X windowを使えば実際の写真を撮りに行かなくても大丈夫だと思った」と説明しているという。
○○技研のプラネタリウム問題専門家、○○社長は「昨今の技術の進歩を考えれば、プラネタリウムを用いた天体写真の偽装は十分可能であり、早急な対策が必要」と述べた。
以下問題となった写真
(Q-star広報)
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で
どうするの?
てかメインで使ってる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月19日金曜日
フラッシュめもリ
どうも、anywhere,anytime、ウッツ!!なQです、こんちには。
たまにXのプログラムを書いていたのだが、Xserverが動いているPCの上でXclient動かすのはXの本質を捉えていないと思い、XserverとXclientを分離して動かしてみた。
なんて書くとちょっとそれっぽいが、なんてことは無い、
自分のLinuxPC⇒SSH⇒サーバーにlogin
サーバー上でxeyesというアレを起動
サーバー⇒x_onnection(TCP)⇒自分のLinuxPC上に表示
しただけ。だけど、思いのほかやってみるとメンドクサかった。
とりあえず、最低限のやるべきこととして、
Xserver側(上記で自分のLinuxPCに相当)で
Xhost + 192.168.xxx.xxx
(192.168.xxx.xxxからのアクセスを受け付ける)
ファイアウォールを切る(TCP,6000番を開けるでもOK)
自分のLinuxはCentOSなので
管理⇒ログイン画面からTCPのコネクションを受け付ける
ようにする。
次にXclient側(上記でサーバーに相当)で
僕はbashなので、
export DISPLAY=192.168.yyy.yyy:0
(要するにXserverが動いているPCのIPアドレス)
でxeyesを実行すればOK。
ついでに
XOpenDisplay("192.168.yyy.yyy:0")
というプログラムでも遠隔でいける。まあ直書きするのはどうかと思うけど(笑)
このスタイルってちょうど20年くらい前の、高性能な演算装置を皆で共用して使っていた時代の使い方そのものなんだよな。この時代には既に、遠隔とか外部から接続とかディスプレイ環境に関するサーバーとクライアントとかが出来ていたってのは驚く。
今はPCスタイルが普通なので何の意味もない。仮想的に計算環境を借りてきた時代じゃなくて、もはや自分のPCを仮想化する時代だし・・・僕のPCはスペック低いので無理だけど。といってもサーバーがAtomD410だから、計算環境を借りる意味すら怪しいのか(笑)
まあちょっとやってみただけですが…
このブログ
もはや只の
メモ帳で
たまにXのプログラムを書いていたのだが、Xserverが動いているPCの上でXclient動かすのはXの本質を捉えていないと思い、XserverとXclientを分離して動かしてみた。
なんて書くとちょっとそれっぽいが、なんてことは無い、
自分のLinuxPC⇒SSH⇒サーバーにlogin
サーバー上でxeyesというアレを起動
サーバー⇒x_onnection(TCP)⇒自分のLinuxPC上に表示
しただけ。だけど、思いのほかやってみるとメンドクサかった。
とりあえず、最低限のやるべきこととして、
Xserver側(上記で自分のLinuxPCに相当)で
Xhost + 192.168.xxx.xxx
(192.168.xxx.xxxからのアクセスを受け付ける)
ファイアウォールを切る(TCP,6000番を開けるでもOK)
自分のLinuxはCentOSなので
管理⇒ログイン画面からTCPのコネクションを受け付ける
ようにする。
次にXclient側(上記でサーバーに相当)で
僕はbashなので、
export DISPLAY=192.168.yyy.yyy:0
(要するにXserverが動いているPCのIPアドレス)
でxeyesを実行すればOK。
ついでに
XOpenDisplay("192.168.yyy.yyy:0")
というプログラムでも遠隔でいける。まあ直書きするのはどうかと思うけど(笑)
このスタイルってちょうど20年くらい前の、高性能な演算装置を皆で共用して使っていた時代の使い方そのものなんだよな。この時代には既に、遠隔とか外部から接続とかディスプレイ環境に関するサーバーとクライアントとかが出来ていたってのは驚く。
今はPCスタイルが普通なので何の意味もない。仮想的に計算環境を借りてきた時代じゃなくて、もはや自分のPCを仮想化する時代だし・・・僕のPCはスペック低いので無理だけど。といってもサーバーがAtomD410だから、計算環境を借りる意味すら怪しいのか(笑)
まあちょっとやってみただけですが…
このブログ
もはや只の
メモ帳で
登録:
投稿 (Atom)