増補改訂版Java言語で学ぶデザインパターン入門
オブジェクト指向のデザインパターンをやさしい表現で本格的に説明。内容が入門となっているが,デザインパターンをしっかり勉強できる。堅苦しくなく,とても親しみやすい表現が使われている。
Javaの勉強にも適している。特にインターフェイスを勉強するのにもとっても適している。
増補改訂版Java言語で学ぶデザインパターン入門
オブジェクト指向のデザインパターンをやさしい表現で本格的に説明。内容が入門となっているが,デザインパターンをしっかり勉強できる。堅苦しくなく,とても親しみやすい表現が使われている。
Javaの勉強にも適している。特にインターフェイスを勉強するのにもとっても適している。
京都コンピュータ学院の資料請求Webページの
https://support.kcg.ac.jp/kcg/apply.cgi
郵便番号から住所へ変換を以前作りました。
これについて。
この手のプログラムは,ほとんど別ウインドウが出てきて,確認のクリックを行う。
また,完全に一致するものしか,表示しないものが多い。JavaScriptが使えないとだめな場合が多い。
外部サービスはセキュリティ的に心配。
なので,独自ですることに。
ただ,作るからには,性能的に劣るものを作るのは,意味がないので色々工夫をする。
仕様:
・郵便番号が不完全や少しの間違いでも,ある程度の住所を表示する。
・JavaScriptは使わない。
・別ウインドウは使わない。
・1ページでやるけど,入力済みの他データが途中で消えたりしない
・番地入力わすれをしないように工夫する。
自動で出てくると,住所を全部いれた気分になりやすく,
番地をいれない人が多い。その対策もしておく。
方法:
変換データは以下から自由に入手できる。
http://www.post.japanpost.jp/zipcode/download.html
このデータをプログラムで加工して,
高速処理できるように最適化してから使います。
(必要な部分だけ取り出したCSVを生成するだけですが。)
さらに単純に一致する郵便番号を探すだけではなく,
微妙に間違えたり,一部しか郵便番号を入れていない場合でも,
近い郵便番号を探して出力しています。
たとえば,601-8407を入力すれば
601-8407の7桁 で検索し,あれば,それをなければ以下を処理
最後の2桁を00に書き換えるもしくは,601-84 の様に最後の2桁が
ない場合は,00を付け加えて,再度検索。
601-8400の5桁+00 で,後ろの2桁を00に書き換えて検索。
601-84 とか 601-8499 の様に下2桁を間違えても,ある程度対応し,
近い住所を表示する。
これでも見つからない場合は,
後ろの4桁を0000にして,同様に検索。
601-0000の3桁+0000
最初の3桁しか入力しないとか,後ろの4桁が間違っている場合に対応。
これでも見つからない場合は,発見できないと表示します。
秘伝C言語問答 ポインタ編
C言語を勉強していて,おそらく一番理解しにくいのがポインタ。
機械語やマクロアセンブラを使ったことがない人は,ほとんどこれで分からなくなるか,間違った使い方をしている。
使い方を間違えると,「不正な処理で異常終了」とか,「アクセス違反で異常終了」とかシステムにダメージを与えるプログラムとなってしまいます。とても危険です。
なんとなくしか理解していない人はこれを読むと理解が進みます!
ETロボコンの本選の結果について
今回,2回ともリタイアしてしまいました。
とても,残念です。
コースやルールは予選と本選は同じです。
でも,本選の全体の完走率は約50%ぐらい。
これは,全員予選を突破している人たちの完走率なので,本来ならば,完走率は100%になっているはず。
どうしてでしょうか?
光の環境の問題?
いえいえ。
今回は,光の状態は比較的安定していたので,あまり問題にはならなかった。(光が原因で失敗しているチームもいることはいましたが・・。)
また,予選から本選の間に若干時間があったので,予選のときよりもプログラムを改良しているはず。
なのに,完走率が低いのは?
考えられる理由は:
1.予選では,「挑戦的な走り」をしていなかったのが本選では「挑戦的な走り」に変更して見事に失敗した。
2.たまたまキャリブレーションを失敗した。
3.本選環境に適応できなかった。
のどれかでしょう。
で,私たちのチームはというと,1のパターンに思いっきりはまっています。
単純に走行し速く走るのもよいですが,やはりやるならば難所の突破を目指そうとか,色々挑戦しようとしたために,組み合わせていったときに,不具合やバグなどが出てきてしまったみたいです。
ETロボコンの本選に参加しました。
台風がきているというのに全50チーム参加していました。
このETロボコンの様子は動画でインターネット配信されるそうです。
詳しい状況はそちらでチェックしてください。
気になる私たちのチームですが,2回ともトラブルでリタイア(;;
残念ながら,うまくいきませんでした。
詳しい説明(いいわけ?)はまた帰ってから書こうと思います。
さて,当日,驚くべきことがおきました。
2位と3位が完全に同タイムとなってしまい,審査員の方々があわただしく(半ば混乱)してしまい,急遽サドンデス方式の再レースをすることとなりました。
そんなことってあるんですねぇ・・・。
また,明日もあるので,今日は寝ますって,日にち変わっている。。。現在午前2時30分です。起きれるかな・・・。
明日は本選です。
詳細なスケジュールはこちら:http://www.etrobo.jp/game.html
私たちのチームはこんな感じのレゴがレースを走ります。
学生と相談してラベルや旗をもう少し調整する予定です。
まもなく新幹線で東京へ出発します。
台風の影響が少し心配です。
もちろん,明日の本選の方が心配です。
上手くいけるでしょうか。
本選のコース環境と開発・練習コース環境は,明るさが結構違います。ライントレースロボットでは,この明るさの加減や,場所による明るさのムラにとても弱いので,ソフトウエアでいかにカバーできるか,または,いかに上手くキャリブレーション(光センサーの黒白灰色の値の閾値設定作業)が出来るかに,かかっています。
つまり,練習コースで上手く出来ても,本番コースでは全然だめな場合も珍しくないです。
仮にプログラムが完璧でも,キャリブレーションを失敗すると,正常に走れません。
レゴは,全体的にロボットとしての基本性能が低いので,ソフトウエアの方で一生懸命カバーしてやらないと,いけません。
それゆえに,ソフトウエアの技術力が問われる競技となっています。
また,光の状態は時間が経過すると微妙に変化するので,光の状態が良い時と悪いときがあります。勝つには運も必要です。
本選まで まともに作業が出来るのは今日が最後
明日の夕方から出発しなければならない。
なぜなら土曜日朝からあるからである。
つまり,最後の調整作業を終わらせなければならない。
開発風景。奥の扉がCINCSの部室の入り口。
コース全貌。
学生は二とも安定化電源を使っている。(コース左上側に2個ある灰色の箱がその電源)
電池を使うほうが本番に近いが,電池はしばらく使うと当然電圧が下がってくる。すると,モーターの速度が遅くなるので,同じ条件を維持しにくい。
(ステッピングモーターとかじゃないので,電圧によって回転速度やトルクがどんどん低下する。)
当然,有線走行なので,犬の散歩にしか見えない。
今日は雨のせいか,湿度が高い。
コースは紙に印刷してあるので,紙が伸びてびろびろんとなっている。
今日は本選の走行順が決定した。
http://www.etrobo.jp/team_honsen.html
4番目らしい。ゼッケンは8
現在,京都コンピュータ学院京都駅前校の新館にはLEDディスプレイがあり,動画が大画面で流れています。
私は,ここの動画を指示されている通りに流れる様,設定をしています。(内容を決めているわけでないです。)
このLEDディスプレイ,実は昼間と夜間の明るさが違います。
昼は明るくして昼間でも見えるようにして,夜間は暗くしてまぶしすぎないようにし,近隣への配慮をしています。
しかし,このLEDディスプレイには明るさを時間で調整する機能がありません。
明るさ調整を実現するには通常の動画と全く同じ内容で明るさが暗い動画を用意して時間帯によって流す動画を変えています。
動画を追加する毎に暗い動画を作成したり(動画が複数あると結構時間や手間がかかります),明るい動画と暗い動画の設定をそれぞれ設定が必要です。
また,動画を減らすときも2箇所設定を変更しなければならないので,ちょっと考えただけでも管理が大変です。
設定ミスとかで昼間用動画と夜間用動画を間違えたりすると,昼間暗くて見えなくなり,夜間まぶしすぎで,迷惑をかけたりもします。
他にも様々な要件があったので,非常に困難でした。
こうなると気合でなんとかなるレベルではないので結構困ってしまいました。
開発元に相談する前に,とりあえず何か,自分でプログラムを作成して出来る方法がないか少し調べてみました。
LEDディスプレイに画像を出す仕組みが簡単なことが分かり,動画管理・再生・明るさ自動調整をするソフトエウアを開発しました。
動画再生は,通常のWindowsで動画再生をする方法と同じ。
明るさ調整は,黒色の半透明ウインドウを動画部分に被せることで,実現しました。
(Visual C++で作成)
以前から半透明ウインドウって実用性ないなぁと思っていたが,今回はこのおかげで明るさ調整が簡単に実現できた。
動画管理が簡単で,かつ設定ミスをほぼ出来ないようになりました。
複数の動画の再生順番の管理や動画再生時の明るさを時間に連動して段階的に暗くするなどの機能を組み込んでいます。
夕方5時からだんだん暗くしていきます。
昼間の明るさを100%と,すると,
5時で70%の明るさ
6時で50%の明るさ
7時で30%の明るさ
8時以降は25%の明るさ
深夜から朝にかけては,どんな設定にしても,表示しない仕組みとなっています。
5時00分頃で 100%から70%になるので,一度確認してみてください。
京都情報大学院大学のウェブサイトのキャンパスライフのページ,
http://www.kcg.edu/campuslife/
は,ソフトウエアで自動生成しています。
これは,私の設計&開発したWindowsで動く専用ソフトでHTMLを生成して,アップロードしています。
Visual C++ 6.0で作成しています。
(ページの動的生成ではなく,静的にHTMLや画像をローカルで作成しHTMLファイルをアップロードしています。)
KCGI Web専用 3言語対応(日本語,英語,中国語)のアルバム作成ソフトです。
ボタン1つで生成やアップロードまで出来ます。
生まれて初めて,多言語対応ソフトを作成しました。
日本語はShift-JIS管理。英語はASCIIで,中国語は内部では,UNICODEにし,ファイルへの書き出しはUTF-8。表示は,フォントも中国語部分のみ中国語のフォントを指定などなど。
アップロード時は全て,UTF-8に変換しています。
1つのプログラム内で複数の文字コード管理をしていています。