ホーム » t-saitoh の投稿 (ページ 203)

作者アーカイブ: t-saitoh

2025年5月
 123
45678910
11121314151617
18192021222324
25262728293031

検索・リンク

どこかのt-saitohさんに…

週末に学生さんから職場宛にメールが届いていた。 「職場のメールじゃ土日は、携帯に!!」と伝えると、「送りましたよ!」との返事。 どうも職場のt-saitoh@ei…とID部は同じだろうと、t-saitoh@ezweb… 宛てに送ったらしい。 たしかに、t-saitohのIDは、パソコン時代からのお気に入りIDで、 @po.ttn.ne.jp やら、@auone.jp では、t-saitoh がうまく取れたけど、 いつもいつも"t-saitoh"が未使用ということは少ない。

基本原則、どこかでアカウントを申請する場合の優先順位、 "t-saitoh","tsaitoh","tsaitoh.net","tohrusaitoh",… あたりかな… ちなみに、http://tsaitoh.jp/ は、私じゃありません。 別人の"t-saitoh"は沢山いるので、ご注意を!!

プログラムの実行とメモリの利用

計算機システムの授業にて、先週のROM/RAMおよびブートローダの話の続きとして、 メモリ階層の話と、プログラムの実行方法について説明する。

メモリ階層

CPUの処理速度と主記憶の読み書き速度には差があり、CPUの方が速い。 このため、SRAM(半導体メモリによる高速・小容量メモリ)と、DRAM(電荷蓄積をつかった低速・大容量)を組み合わせて使い、SRAMによるキャッシュメモリをCPUとの間に置くことで、 よく利用するデータはSRAMによるキャッシュメモリに保存し、 必要に応じてDRAMによる主記憶に保存するようにすることで、 見かけ上、高速大容量のメモリがあるように見せることを説明する。 これに加え、補助記憶装置(ハードディスク)に、実行待ちのプログラムで一時的に 主記憶を使わないものは、ハードディスクに保存し主記憶を明け渡すことで、大容量の主記憶に 見せかける仮想メモリについて解説する。メモリ階層の最上部のレジスタも補足で説明する。

インタプリタ・コンパイラ

プログラムの実行方式として、インタプリタ方式とコンパイラ方式を説明し、 インタプリタ方式はすぐにプログラムの実行を始められるけど、いちいち命令変換が必要で、 処理効率が悪いことを説明する。コンパイラ方式は、手間をかけて機械語に変換するけど、 実行が始まれば余計な命令変換が不要で高速に実行できることを説明する。 また、インタプリタ方式は実行時にソースが必要となることから、処理内容が他の人に流用される危険性があることを紹介。

Javaによるバイトコードインタプリタ方式などの特殊な事例も紹介し、 その1つとしてMac OSが、68000⇒PowerPC⇒Intel とCPUが変わることで、 エミュレータなどが必要であったことを紹介する。

プログラムの実行までの説明として、コンパイラ・リンク処理などの流れを説明し、 中間コードやライブラリの考えを説明する。ライブラリの説明にあたり、静的リンク方式と動的リンク方式を説明し、メモリの有効利用やライブラリの修正の容易さを特徴としてあげた。

SQLの説明

前回の講義では、SQLの名前だけだったので、SQLの文法と機能について解説を行った。

  • データ問い合わせ(select)
  • データ操作(insert/delete/update)
  • データ定義(create table)
  • アクセス制限(grant)

SELECT について、抽出カラムの指定、 FROM節による結合(直積)・自己結合、 WHERE節による抽出条件などを 文法や例を交えて説明する。副問い合わせを使う検索は、次回講義にて。

データ操作については、参考にしている教科書では、文法が明確に記載されていなかったので、 随時Webにて解説ページを参考にしながら説明する。

データ定義については、CREATE TABLEについて解説し、CREATE VIEWについては、 概念を説明し、外部スキーマの実装として簡単に紹介する。

アクセス制限については、Webでの実験環境でもSQLiteを用いているため、使えないこともあり、 概念だけを説明する。

SQLの文法を説明したあと、文法を逆手に取ったSQLインジェクションのテクニックを説明する。

ふくいITフォーラムにてバトリオと同じドットコードによるアンケート

10/22,23の両日、ふくいITフォーラムの展示に参加してきた。 その会場では、ブースを見学すると赤・青・黄のシールをもらえて、3つそろうと景品がもらえるくじ引きができるようになっている。1等20型TV,2等デジカメということもあり、多くの参加者がくじ引きをした。 私も、出展の合間にブース見学でくじ引きに参加し、ティッシュ(;_;)をもらった。 ただ、その際に、見学の感想アンケートをするんだけど、その記入用紙が興味深かった。

微妙に灰色に見えるアンケート記入用紙に、特殊なボールペンで丸をつけるだけで自動集計される。


出展元掲載の拡大されたニセモノバトリオコード

この用紙、整備不良のコピー機でコピーしたようにうっすらと灰色がかったように見えるけど、実はコーディングされたマイクロドットが一面に印刷してあり、小型カメラのついたボールペンが、マイクロドットを読み取りアンケート結果を自動で集計できる優れもの。 一枚のアンケート用紙の回答項目毎に、違うマイクロドットが印刷してあるみたい。 これと同じ技術は、ゲームセンターのポケモンバトリオに使われている。最初これを見かけた時は、100円のパックにRFID内蔵させているものと思っていたけど、実は パック表面に印刷されたマイクロドットを読み込んでいる。

ちょっと疑問だったのは、マイクロドットが印刷されているから、安いコピー機やプリンタ用紙だと、読み取りエラーが多発すると思うんだけど、用紙はボールペン書き込みで使い捨て。逆に考えれば、ちょっと高めの解像度のコピー機?プリンタ?であれば十分、印刷できるということなんだろう。 ITフォーラムの会場なんだし「このアンケート用紙、面白いでしょ!!」と、 もっと説明してもよかったんじゃないかと….

4EI学生作品のプラネタリウム制御の展示

最後に頑張って、GoogleSkyを動かす所まで完成できました。 0910231156_320x240.jpg

ふくいITフォーラム参加中

0910221521_320x240.jpg

10/23追記:昨日の展示では動かない車体でしたが、 急造でライントレースプログラムを書き、動くようにしてみました。 オムニホイールによるタイヤの動きは、見学の方にも興味を持ってもらえたようでした。

オムニホイールによる歯みがきロボット

車体はそれなりに形にはなったかな。後は学生さんにまかせよう。 0910211029_320x240.jpg

HRにてN年後の目標

先日、4年生のインターンシップ報告会があり、将来の自分の仕事を少しでも 考える時間ができたと思い、ホームルームにて、 『{1,3,5,10}年後の目標と、そのためにすべきこと』をA4用紙に記入してもらった。

  • 1年後:3年で進路変更の人もいるだろうし、4年で進路にむけて真剣に考える時期。
  • 3年後:就職した人は1年目、進学なら3年編入直後。
  • 5年後:さらに進学した人は大学院、就職した人は3年目で慣れてきたところ。
  • 10年後:27才頃。OBと話したりすると、転職するひとや、結婚する人も出てくる年齢。 私自身もこの頃に高専に転職したなぁ…

本当は、20年後も書いてということも考えたけど、自分自身の10年後も語れない気がするので、 今回はやめておく。 10年後はかけないなぁ…とか、色々と『書けない』と言う人も多かったけど、 紙に書くだけでなく、考えるきっかけを作ってほしいのが目的なので、無理強いはしない。

いい時期だと思うので、OBに声をかけて、進学や就職に関係するOB談話の時間を、 HRの中でやってもらおうかと考えていたりする。

2分探索木の生成

先週は2分木の操作のプログラミングであったが、今日は入力データを2分木に追加する処理を 説明する。追記すべき場所を末端まで移動しながら探し、追加する処理は、以下の通り。

int key ;
struct Tree* top = NULL ;
struct Tree** tail ;
for( tail = &top ; (*tail) != NULL ; /*none*/ ) {
if ( (*tail)->data == key )
break ;
else if ( (*tail->data > key )
tail = &( (*tail)->left ) ;
else
tail = &( (*tail)->right ) ;
}
if ( (*tail) == NULL )
(*tail) = tcons( key , NULL , NULL ) ;

この処理の動きを説明した後、データが昇順や降順に与えられると、枝が一方向にのみ 成長し、検索処理が O( N ) になってしまい、本来の O( log N ) にならないことを説明する。 このような場合、枝の途中で、繋ぎ換えを行えば枝の深さが減らせることを説明する。 これを全体に施し、最適化を行う方法として、AVL木を紹介する。

このような2分木の欠点としては、1データあたり2ポインタを必要とし、メモリの 利用効率としては悪いことを説明する。

この説明にあたり、32bit = int 、32bit = pointer で 説明をするが、最近のコンピュータであれば、Over 4GB になれば、32bit では不十分で あることを示し、64bit OS などが普及してきたことを関連情報として説明する。 2^64 = 16 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024 = 16 EB( Exa Byte )

これらのメモリの使用効率を改善して、2分木と同様の左右の枝の概念を持つ方法として、 2分ヒープを紹介する。

歯みがきロボコンCM

歯みがきロボコンのコマーシャルなどが、 そろそろ始まるらしい。 その一部の写真を見せてもらった。

0910202119_448x267.JPG

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー