月別アーカイブ: 2007年7月

MovableTypeを3.11から3.35へ変更

当サイトはMovableTypeを使用している。しばらくセキュリティホールやらスパム対策やらのメンテをしていなかった。
そんな近頃、本屋で「AjaxとPHPによるMovableType」なる本を見つけた。おもしろそうなのでチャレンジするのだ。まずは、この本が想定している環境に合わせて、MovableTypeのバージョンを3.3にアップグレード。データベースをバークレーDBからSQLのものへ変更。今回はMySQLより軽いと言われるSQLiteに変更した。
参考サイト:MTデータベースの相互変換CGIスクリプト

あと、アップグレード前にPHPをCGIで動かしていた設定をもとのに戻す。つまづいたら適宜対処し、なんとか作業は完了。
そして前述の本に従ってアクセスカウンタなどを付けてみた。なかなかおもしろい。
サイトをつぶさない程度にいじってみよう。

台風4号の爪あと

台風4号が私の住む地域にも大雨をもたらした。
道路は冠水し、床下浸水した家屋もあったようだ。愛鷹山の伏流水に恵まれる環境ならばこその、副作用である。
それに、自宅から100mほど離れた10mほどの段差がある斜面が崩壊した。コンクリートで固められた のり面が崩れ落ちていたのだ。昨夜遅くから水防団の方が監視していた。幸いにも崩れ落ちた場所は空き地であり、被害はなかった。
以前のその場所は竹林で覆われていた。30年前に大きな被害をもたらした七夕豪雨でも、竹林の斜面は崩れなかった。地下茎が土の流出を抑えてくれたのではないかと想像してしまう。ともあれ迅速な復旧作業を希望する。

リアルタイムふうOS

5月の連休の時、小規模な電子工作で使うリアルタイムふうなOSを作成した。
備忘録代わりに右にまとめた。「リアルタイムふうOS
いくつかの装置に利用したが今のところもくろみ通りに動作している。かといって細かいデバッグはしていない。

APIのプロトタイプ宣言を下記に示す。

/* Queueの初期化 割込禁止 */
void init_os( void );
/* メインルーチン */
void task_main( void );
/* TCB生成 割込禁止 */
tcb_type *create_tcb( void (*task)( byte state ));
/* メールボックス生成 割込禁止 */
mbx_type *create_mbx( char *msg_buff, byte size );
/* イベントフラグ生成 割込禁止 */
flag_type *create_flag( void );
/* セマフォ生成 */
sem_type *create_sem( byte size );
/* タスク起床 */
void start_task( tcb_type *tcb );
/* タスク起床 割込禁止 */
void start_task_i( tcb_type *tcb );
/* タスク終了とTCB解放 */
void exit_task( tcb_type *tcb );
/* タスク終了とTCB解放 割込禁止 */
void exit_task_i( tcb_type *tcb );
/* 起床事由の取得 */
byte get_trg( tcb_type *tcb );
/* 遅延遷移 */
void delay_task( tcb_type *tcb, word time );
/* タイムアウト設定 */
void set_timeout( tcb_type *tcb, word time );
/* タイムアウト解除 */
void clear_timeout( tcb_type *tcb );
/* 1msタイマ割込み 割込禁止 */
void timer_1ms_int( void );
/* メールボックスにメッセージ登録 */
byte send_msg( char *msg, byte len, mbx_type *mbx );
/* メールボックスにメッセージ登録 割込禁止 */
byte send_msg_i( char *msg, byte len, mbx_type *mbx );
/* メールボックスからメッセージ待ち */
void wait_msg( mbx_type *mbx, tcb_type *tcb );
/* メールボックスからメッセージポインタ取得 */
char *get_msg( mbx_type *mbx );
/* メールボックスからメッセージ長さ取得 */
byte get_msglen( mbx_type *mbx );
/* イベントフラグをセット */
void set_flag( flag_type *flag );
/* イベントフラグをセット 割込禁止 */
void set_flag_i( flag_type *flag );
/* メールボックスクリア */
void clear_msg( mbx_type *mbx );
/* イベントフラグをクリア */
void clear_flag( flag_type *flag );
/* イベントフラグをクリア 割込禁止 */
void clear_flag_i( flag_type *flag );
/* イベントフラグ待ち */
void wait_flag( flag_type *flag, tcb_type *tcb );
/* セマフォひとつ解放 */
void signal_sem( sem_type *sem );
/* セマフォで空き待ち */
void wait_sem( sem_type *sem, tcb_type *tcb );
/* タスクをスライスして継続実行 */
void slice_task( tcb_type *tcb );
/* 遷移時の状態変数を変更 */
void set_next_state( tcb_type *tcb, byte next_state );