行政刷新会議と歯みがきロボコン取材…
今朝、某テレビ局より電話がかかってきて、 歯みがきロボコン参加者の取材をしたいとのお話し。 細かく聞くと、行政刷新会議で、8020財団(80歳まで20本の歯) の活動の一環として歯みがきロボコンの名前が上がっているみたい。
ひとまず学校PRの一環になればとOKとしたものの、 関連の先生に了承をもらったり、歯科医師会さんに連絡する。
しかしながら、よくよく考えると、8020財団とロボコンなんて 無縁としか思われない内容だし、下手をすると「無駄な支出の 代表例」的なネガティブネタとして取り上げられる可能性も ありうると、心配になってきた。
その中で、取材時間などの連絡を受ける中で、 相手先より「歯みがきロボコンは、企業からの寄付金を中心に 運営されていることがわかったので、取材はナシに…」との 連絡を受け、取材はボツとなった。
実際、昨年度は運営資金に8020財団は含まれていたけれど、 今年は運営資金は利用していないこともわかりました。
歯みがきロボコンは、地域の子供や学生の創造意識の活性化という 点で、大きく意義のある活動と思って、協力させてもらっている。 決してムダなお金の使い方になっているとは思わないけど、 「優先順位」という言葉で指摘されると、弱いに変わりはない。 ひとまず、歯科業界様の寄付をうけ、これからも継続したいっす。
# ふぅ、危うくバンキシャ(?)のネガティブ・ネタになるところだった….
パソコンITの資格ランキング
Yahooの特集記事にて、転身に効きそうな「パソコン・IT」の資格ランキングが、 掲載されている。 どちらかというと、上位に記載されているのは、技術系以外の仕事をしている人が、 IT系もできるという意味で持っていると有利な資格のランキングになっているな…
- 1位:マイクロソフトオフィススペシャリスト(MOS)
- 2位:情報処理技術者試験/ITパスポート試験
- 3位:Excel表計算処理技能認定試験
- 5位:情報処理技術者試験/基本情報技術者試験
- 6位:シスアド技術者能力認定試験
- 7位:情報処理技術者試験/システムアーキテクト試験
- 8位:C言語プログラミング能力認定試験
自宅へのSPAM流量よりBOT拡大を感じる
自宅サーバのMRTGにて、メール流量の時間変化を観察しているが、 実質SPAMメールの流量変化観察と同じ。 んで、週変化グラフを見ていると、夜のゴールデンタイムになると 流量が減っている傾向が見える。 これから考えると、日本国内のBOTに感染しているパソコンが、 アイドリング状態になるのを狙ってSPAMをばら撒いているように思えてくる。 職場のパソコンがBOT感染で、アクティブ状態でSPAMをばら撒くという仮説も考えられるけど、 9-5以外の夜中にもSPAM流量があるしなぁ…

プログラミングパズル
高専プロコンや歯みがきロボコンと、自分の関連するイベントもひとまず終了。 ただ、高専プロコンで課題自由部門の本戦参加ができなかったり、 歯みがきロボコンでもzeroからライントレースを作ったりという、 実践で頼りがいのある学生さんが少ない。
難しいことをああだこうだと指導するよりも、 興味を持って実際にプログラムを書く事が先決だろうと考える。 ゲームを作ってみるのも1つだけど、数値をうまく操る技術がないと、 キャラクターの動きも単調でつまらないはず。 ということで、プログラミングパズルにチャレンジしてもらうのがいいのではないかと考える。問題も極めてシンプルに….
プログラミングパズル
- x*yの計算をするプログラムを作成せよ。
ただし、乗算演算子*や除算演算子/は使わない事。 1000*1000の実行にかかる時間を、他の人のプログラムと比べてみること。 - 上記のプログラムを、for,while,do-while,goto文を使わずに記述せよ。
- 99の階乗(99!)を全ての桁を計算せよ。
ただし、言語付属のBIGNUM系パッケージは使わない事。
99の階乗は、Common Lispであれば、勝手にBIGNUMを使ってくれるので、 → (defun fact(n) (if (= n 0) 1 (* n (fact (- n 1))))) → (fact 99) 933262154439441526816992388562667004907 159682643816214685929638952175999932299 156089414639761565182862536979208272237 582511852109168640000000000000000000000 でも、BIGNUM相当を自分ですらすら書けて、普通のプログラマー。
ワード境界とビットフィールド
構造体の説明の後半として、メモリの使用量と関係深いワード境界とビットフィールドの説明を行う。 最初に、主記憶の不足とプログラムの関係として、仮想メモリとメモリ不足時にハードディスクアクセスが多発し、スピード低下について述べる。
ワード境界
struct A { char name[ 3 ] ; // イニシャルと点数の構造体? int point ; } a[ 4 ] ; 境界無視 境界配置 |NNNP| |NNNx| N:name |PPPN| |PPPP| P:point |NNPP| |NNNx| |PPNN| |PPPP| |NPPP| |NNNx| |PNNN| |PPPP| |PPPP| |NNNx| |PPPP|
CPUに比べて、主記憶の速度は遅いため、メモリアクセスは必要最小限にしたい。 しかしながらワード境界を無視すると、a[0].point の取得には、2回のメモリアクセスが 発生するため、処理速度が低下する場合がある。 このため、name 3文字の後ろに1byteの空きを設けて、ワード境界をまたがらない様に 構造体の要素を配置するのが一般的。
この話の前に、char=8bit=1byte=0..255(-128..0..127),32bitCPUなら、 int=32bit=4byte=-2^31..0..2^31-1といった復習を簡単に行った。
メモリインタリーブとよばれる方式を使うと、 ワード境界があっても最小限のメモリ参照で済むが、ハードウェアが複雑化する。 情報処理技術者試験を受けるのであれば、インターリーブも理解しておくこと。
ビットフィールド
struct YMD { int year ; int month ; int day ; } ;
といった構造体では、12byte のメモリを使用するけど、メモリ使用を減らすには、 year=0..2047,month=0..15,day=0..31と考えれば、20bitで十分。 メモリの使用量を減らすために、year , month , day を1つのint型で覚えるには?
ymd = year *10000 + month*100 + day ; printf( "月=%d" , (ymd % 10000) / 100 ) ;
という方法もあるけど、2進数として年月日を覚えるのであれば、
// YYYYYYYYYYY000000000 // or MMMM00000 // or DDDDD ymd = (year << 9) | (month << 5) | day ; printf( "年=%d" , ymd >> 9 ) ; printf( "月=%d" , (ymd >> 5) & 0x0F ) ; printf( "日=%d" , ymd & 0x1F ) ;
とすれば、int 型で、年月日を必要最小限のbit数で保存できる。 しかしながら、2進数演算は分かりにくいので、以下のようなビットフィールドを使えば簡単。
struct YMD { unsigned int year : 11 ; unsigned int month : 4 ; unsigned int day : 5 ; } ;
割り込みとOSの関係
先週の割り込みの説明を受け、その割り込みを使うOSの機能について解説を行う。 先週はこの計算機システムの授業直後に、子供のインフル発症が分かり自分の体調不良と 合わせて急遽自宅待機となったこともあり、 最初の雑談で新型インフル感染者がいないことを確認した。
割り込みとOSの関係
割り込みの応用の例として、タイマー割り込みを使ったマルチタスク処理を説明する。 割り込み発生時に、現プロセス情報を保存し、OS内の処理で実行待ち行列のプロセスより、 スケジューラが1つを選び、前回実行時のプロセス情報を復帰させながら、処理が切り替わる ことを解説。スケジューラについては、基礎的なラウンドロビンのみ。
次に入出力割込みを使った処理の説明として、最初に入出力プロセスが命令発行後に、 入出力待ちとなり、デバイスからの入出力割込みで状態を復帰し処理が継続されるまでを 説明する。次に、この時系列を、OSがどの様に介在するのかをさらに詳しく説明する形式で、 説明を追加する。
同じく入出力割込みを例にしながら、特権モードとユーザモードについて説明し、 ソフトウェア割り込みを用いてOS内の特権モードに移行し、呼び出しチェックをうけた後で、 デバイスドライバを呼び出し、デバイスに命令が伝わるまでを詳しく解説する。 これにより、ユーザプログラムが、 ハードウェアを直接操作しセキュリティチェックをかいくぐることができないシステムについて 理解してもらう。
ネットワークの導入説明
後半の青山先生の計算機アーキテクチャの講義までの残り講義数も少ないため、 早々に後半の説明目的のネットワークについて、導入説明を行う。
ハードウェア共有(プリンタサーバ)、データ共有(ファイルサーバ)、サーバの計算機能力の利用 の説明により、資源を共有することができることを説明する。 これに加え、処理依頼を複数のコンピュータで実行することの「負荷分散」や、 コンピュータ故障時のサービス停止のリスクを減らすことができる「リスク分散」について 説明する。
残り授業は11/16,11/27(曜日振り替え) の2日間のみ。
第3回歯みがきロボットコンテスト
福井県歯科医師会主催の、歯みがきロボットコンテスト第3回大会が、開催されました。 高専からも2台が参加しましたが、昨日のシード権取得の大会では準優勝ながらも、 今日の試合では、残念ながら負けてしまいました。
今年のルールでは、車体ルールでの制限が緩やかだったので、面白い車体があつまり、 盛り上がって楽しい試合でした。
リモコン部門
自律部門
第3回歯みがきロボットコンテスト(電子情報後援)
福井県歯科医師会主催の福井高専後援にて開催されている、 第3回歯みがきロボットコンテストが『いい歯の日』の11/8(シード権大会は11/7)に開催されました。 電子情報工学科では、選手としての参加の他、試合審判などの運営で協力させて頂きました。
電子情報から参加した2台の車体は、前日のシード権獲得のプレ大会の自律部門にて2位では ありましたが、11/8の大会では残念ながら、負けてしまいました。 決勝試合の動画風景は、こちらにて掲載しております。
自律部門(電子情報参加車体)
リモコン部門(小学生部門)
2009年11月8日(第137回)
今週は収録でお届けしました。
- 英語の囃子 第19回 吉田三先生、電子情報4年丸山さん
英語の桃太郎を読んでみよう
eng091108.mp3 - IT研究会で作ったゲームについて
Emacs+trampの再発見でWindows環境にMeadowを…
Emacsの中からリモートファイルの編集は、昔は ange-ftp をよく使っていた。 しかしながら、ftp がセキュリティ面から使われなくなり ange-ftp は使わなくなり、 最近は直接Loginが多かった。 先日、tramp という機能を見つけて、改めて Emacs 環境を整備。 Windows 環境にも Meadow を入れる。しかし、tramp を使おうと思っても、 意外と設定が必要であった。 .emacs.el の置き場所用に環境変数のHOMEを設定し、 同様に cygwin の PATH を通して、 "fakecygpty.exe" をインストール。
Linux Server,MacBook, Meadow のどの環境でも動く、.emacs.el を作成して、 気持ちのいい環境になりました。