Posts Tagged ‘2年次’

(Ref/提言) 魔法の 10000 時間

月曜日, 8月 10th, 2009

(出典: あなたも「天才」になれる? 10000 時間積み上げの法則

自分も考えてみるに、「どんなデータでも解析できる」「研究に必要な基礎技術は全部身に付いた」と自信が持てるまでには、修士から数えて約8年かかりました。この集中した時間の投入があったからこそ、なんとか一人前になれたわけで、これ以外には方法はなかったように思います。

しかし「なんだ、それではやはりダメじゃないか」「自分には時間がないから無理だよ」と決めつけるのは早いと思います。10000 時間の積み上げは、なにも 10000 時間経たないと変化がないと言っている訳ではなく、常に上昇しながらの 10000 時間だからです。

もし、あなたが一生を費やしても実現したい、大成させたいと願っているスキルがあるのなら、次の 10-12 年、毎日何らかの形でそのスキルを磨く「仕組み」を取り入れるのは有効かもしれません。

似たような事例は他にもいろいろと出ていますので,それぐらい普遍的なことなのでしょう.

そして,上記引用先でも触れられていますが,仮に1万時間を10年かけてやろうとすると1日3時間弱で達成できますが,仕事をしながら毎日3時間別のことのために確保し続けるのは容易ではありません.だからこそ【学生時代の積み上げがいかに大切かということを表しているといっていいと思います。(同出典)】なのです.

あなたは人生をかけてやり遂げたいものがありますか?
もしあるのなら,今からどのぐらい時間を割くべきか考えて行動に移すべきです.
もしないのなら,まずは夏休みをそれを探すための時間に使ってはどうですか?

関連URL

夏休みの(継続して実行する)目標設定のススメ: プログラミング編

金曜日, 8月 7th, 2009

学生の皆さんはそろそろ夏期休暇に入りますね.
だいたい40日ぐらいになるようですが,この機会に何か一つで構わないので続けて頑張る目標を見つけ,継続して実行しましょう!

どんな苦手な物であっても,文字通り毎日少しで構わないので続ける事で得られる物があります.
何でもやらないまま放置しているとあっという間に失ってしまいますが,継続することで定着率が大きく変わります.

以下,1〜3年次向けの「夏休みの課題」設定例です.


(Opinion) プログラミングが何やってるのかサッパリ分からない!

ターミナル上で動かすことを前提としたゲームで構わないので,ミニゲームを作ってみましょう.

  1. まずはポーカーのようなトランプゲームや,数当てゲーム,バックギャモンのようなボードゲーム等,何かしらゲームを一つ選びます.
  2. そのゲームをどのように実行したいか,ユーザとしての立場から使い方を設計します.
  3. ユーザを希望通りに遊ばせるために,システム側がどのような入力を受け取り,どのように処理し,どのように出力すべきかを検討します.
  4. ゲームの開始から終了までの動作フローを整理し,疑似言語やフローチャートでプログラミングします.
  5. 疑似言語やフローチャートとしてシステム全体を描く事ができれば,その設計図を元に一つずつ機能を実装&テストを繰り返していきます.
  6. 全ての機能を実装し終えたら,システム全体を通した動作確認を行い,何も問題が出なければそれで終了!

このように,「プログラミング」はシステム開発全体における一部分でしかありません.何か作りたい物を最初に決め,その詳細を検討してから実現に向けて取り組む事で,少しでもプログラミングの意味が見えてくるのではないでしょうか?

(Quiz/2年次) アルゴリズムとデータ構造: Spotlightでの例

火曜日, 8月 4th, 2009

(出典: Wikipedia:データ構造

データ構造(データこうぞう、英 en:data structure)とは、計算機科学において、データの集まりをコンピュータの中で効果的に扱うため、一定の形式に系統立てて格納するときの形式のことである。
ソフトウェア開発において、データ構造についてどのような設計を行うかは、プログラム(アルゴリズム)の効率に大きく影響する。そのため、さまざまなデータ構造が考え出されている。

Mac OS X の Spotlight では,OSが標準で処理可能なテキスト文章であれば,Word 等のバイナリファイルの中身も含めて検索対象とすることが可能である.

Spotlight が対象とする検索対象とは,一つのファイル内には複数の単語が記述されており,さらにそのような文書が大量にある.このような膨大な文書を検索対象としつつ,ユーザーの入力した検索キーワードが含まれる文書を適切に列挙する必要がある.

上記を踏まえて,以下のクイズに答えよ.

  • 文書内のキーワードをリストで表現するとし,文書毎に異なるリストでデータを格納すると仮定する.すなわち,文書1にキーワードA,Bがある場合,そのデータを格納しているリスト1には「A->B」,文書2にキーワードA,C,Dがある場合,そのデータを格納しているリスト2には「A->C->D」と格納されているとする.この場合のメリット・デメリットを検討せよ.
  • 同様に,文書内のキーワードを木構造で表現しているとする.この場合のメリット・デメリットを検討せよ.
  • それ以外の適当なデータ構造は無いだろうか?

(Quiz/2年次) 情報工学実験1/2: 手続き型プログラミング,イベント駆動型プログラミング

火曜日, 7月 28th, 2009

(出典: イベント駆動型プログラミング

イベント駆動型プログラミング(イベントくどうがたプログラミング)は、起動すると共にイベントを待機し、起こったイベントに従って処理を行うプログラミングパラダイムのこと。フロー駆動型プログラミングと呼ばれる従来のプログラミングパラダイムに対する概念。「イベント駆動」は「イベントドリブン (event-driven)」とも呼ぶ。

C言語のような手続き型プログラミングなど,プログラミング・パラダイム(方法論)として様々な方法が提案,実現されている.

上記を踏まえて,以下のクイズに答えよ.

  • 手続き型プログラミングとイベント駆動型プログラミングを比較した場合,互いの利点・欠点はどのような点が挙げられるだろうか?
  • 手続き型プログラミングで実現が困難な例を挙げよ.それは何故困難なのだろうか?
  • 上記で挙げた困難な理由は,イベント駆動型プログラミングであれば解決できる,もしくは多少なりとも簡易に実装することが可能だろうか?

zshのススメ

金曜日, 7月 24th, 2009

金曜日はクイズじゃなくていろいろ紹介でもする曜日にしてみるテスト.
実体としてはその週毎に異なると思いますw

閑話休題.

栄えある(?)1回目は「zshのススメ」.
何はともかくやってみるべし.


Step1: zshをインストールする.

EasyPackage.app を起動して,shells/zsh をインストールしましょう.
これで分からない人は,以下のようにしてください.

  1. EasyPackage.app を起動.
  2. 上部メニュー「パッケージメニュー」から【一覧を取得】を選択.「Log」にいろいろ出力されると思いますが,2009年7月時点で以下のように local と latest のバージョン番号が 0.2.26 になっていればOK.もし異なっていたら,上部メニュー「EasyPackage」から【EasyPackageの更新】を選択しましょう.

    local epkg ver.0.2.26
    latest epkg ver.0.2.26

  3. アプリケーション内の左パネルから[shells]をクリックし,右パネルに表示される[zsh]を選択.
  4. 上部メニュー「パッケージ」から【インストール】を選択.


Step2: 動かしてみる.

漢のzshを開いて,「第24回 グッバイ野郎ども! コピペではじめるzshファイナル」から設定ファイルをコピペして動かしてみるべし.

これで分からない人向けの解説.

  1. 黒背景で表示されている「リスト1 コピー&ペースト対応${HOME}/.zshrc ファイル」をコピー.
  2. emacs でファイル .zshrc を新規作成する.

    prompt> emacs -nw ~/.zshrc

  3. 開いた .zshrc に,さっきコピーした設定ファイルをペーストし(張り付けして),保存する.
  4. zsh を起動する.仮起動するだけなら以下のようにするだけです.

    prompt> zsh


Step3: 何が凄いのか.

まずは漢のzshの第1回から3回ぐらいまでを読んでみましょう.

これで凄さが分からない場合には,ヒストリ機能の凄さを味わうために取りあえず以下の手順1〜手順3を試してみてください.

(手順1) 「test」と書いたhoge.txtを作成し,Webサーバにアップする.

accountは各自のアカウント名(e095700など)にしてください.

prompt> emacs hoge.txt
prompt> rsync -auvze ssh ~/Sites/ account@www.ie.u-ryukyu.ac.jp:~/public_html/

以下のように暗号化の為に RSA キーを使うかの確認が始まりますが,必要な事ですので yes と答えて接続してください.

The authenticity of host ‘www.ie.u-ryukyu.ac.jp (133.13.48.7)’ can’t be established.
RSA key fingerprint is xx:xx,,,xx.
Are you sure you want to continue connecting (yes/no)?


(手順2) ファイルがアップロード出来た事を確認する.

Safari で以下のURLを参照しましょう.test と表示されますか?

http://www.ie.u-ryukyu.ac.jp/~account/hoge.txt


(手順3) ファイルを更新して再度アップロードする.

まずは hoge.txt を開いて,test2 にするなり少し編集して保存しましょう.

prompt> emacs hoge.txt
prompt>

 ここで,通常のシェルでヒストリを利用するには「カーソルキーで上(もしくは Ctrl^p)」を押したりします.今みたいに「ついさっき」使ったばかりのコマンドであればそれでも簡単に見つかりますが,いろいろ作業しているとごちゃごちゃするし,「1週間前,1ヶ月前」のコマンドだったりする事もあるでしょう.
 そんなとき,zsh であれば「rsync」まで入力してから「カーソルキーで上」を押すと,そのコマンドに関するヒストリだけを遡ることが出来ます.つまり,

prompt> rsync

まで入力してから「Controlキー + P」を押すと

prompt> rsync -auvze ssh ~/Sites/ account@www.ie.u-ryukyu.ac.jp:~/public_html/

青字部分が自動で補完されます.

 もちろん,同じ rsync コマンドを使った異なる履歴(違う引数を指定して実行した履歴)があれば,「Controlキー + P や、Controlキー + N」を押す事で随時遡ったり,前に進んだり出来ます.


関連リンク

(Quiz/2年次) 情報工学実験1/2: Make

火曜日, 7月 21st, 2009

(出典: Wikipedia:Make

make は、プログラムのビルド作業を自動化するツール。コンパイル、リンク、インストール等のルールを記述したテキストファイル (Makefile) に従って、これらの作業を自動的に行う。

このように適切な Makefile さえ用意してあげれば,誰でも中身を確認する事無く自前でプログラムをコンパイルし,実行ファイルを生成できるようにするのが make である.

上記を踏まえて,以下のクイズに答えよ.

  • 「インストール等のルールを記述したテキストファイル (Makefile)」とあるが,そのルールはどのように記述するのだろうか?
  • 複数のルールを記述するにはどうすれば良いだろうか?
  • 複数のルールが記述されている場合には,引数無しで make コマンドを実行した場合にどのように処理される(どのルールを選択する)か?
  • こちらで意図したルールを選択して実行するにはどうすれば良いだろうか?

(Quiz/2年次) 情報ネットワーク: ネットワークアドレス

火曜日, 7月 14th, 2009

IT用語辞典:ネットワークアドレスより)
ネットワークアドレスとは、IPアドレスを構成するビット列のうち、個々の組織が管理するネットワーク(サブネット)を識別するのに使われる部分。

 インターネットのような巨大なTCP/IPネットワークは、複数の小さなネットワーク(サブネット)に分割されて管理されており、IPアドレスもネットワークアドレス部とホストアドレス部に分かれる。このうち、ネットワーク全体の中でサブネットを識別するのに使われる部分がネットワークアドレス部である。

上記を踏まえて,以下のクイズに答えよ.

  • 情報工学科ではLANを含めいくつかのサブネットワークで構成されている.各々のネットワークアドレスは何か? もしくはどのような構成になっているだろうか?
  • 異なるネットワークに接続された機器同士が通信するために必要なネットワーク機器は何か?
  • そのネットワーク機器は,情報工学科内にあるだろうか?

(Quiz/2年次) 情報工学実験1/2: OSS (ex. PHP) の導入

火曜日, 7月 7th, 2009

PHP 5.3 リリース 多数の機能追加、140以上のバグを修正 : CodeZineより)

 PHPグループでは6月30日(現地時間)、PHP 5.3.0をリリースした。PHP公式サイトよりダウンロードできる。

 今回のバージョンアップにより、名前空間のサポートや遅延静的束縛(Late Static Bindings)、ラムダ関数およびクロージャなど、数多くの機能追加と140以上のバグフィックスが施されている。変更内容の詳細は、PHP 5 ChangeLogから確認できる。

PHP とは「PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)とは、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系である。(Wikipedia:PHPより)」であり,オープンソースソフトウェアとして提供されている.

上記を踏まえて,以下のクイズに答えよ.

  • オープンソースソフトウェア(Open Source Software, OSS)とは何か?
  • PHPのソースはあるライセンスの元で公開されている.それはどのようなライセンスか?
  • PHPは標準でインストールされている事が多く,その場合にはコマンドラインから「php -v」とすることでインストールされているバージョンを確認することができる.インストールされているPHPのバージョンを調べよ.
  • 今回 PHP 5.3.0 がリリースされたが,これをインストールするにはどうすれば良いか調査し,インストールせよ.

(Quiz/2年次) 情報社会と情報倫理: 穂苅先生集中講義より

火曜日, 6月 30th, 2009

おはようございます!(挨拶は先制攻撃です)

先週末は6/27-28(土日), 名護青年の家宿泊集中講義に参加し,様々な視点から人生・生き甲斐・因果応報・自己研鑽・努力・人格陶冶・リーダーといった事柄について興味深い話を見聞きする事が出来た事と思う.その中の一つに,

表現には心の表現と体の表現があり,
 想い→言葉→行動
を巡らせる事で「習い性となる」.つまり,強制的であったとしても行動を何度も意識して実行する事で,いつしかそれが心に反映される.

といった話題があった.

上記を踏まえて,以下のクイズに答えよ.

  • 心に残った提言を挙げよ.
  • 具体的に行動に移しているだろうか?移せていないならばそれを達成する(今後に活かす)にはどのようにすれば良いだろうか?
  • 舟木先生より,「映画「男はつらいよ」の世界観は昭和の時代である.現在同じテーマで描くのであればどのような映画になるだろうか?」との提言があった.あなたの思い描く寅さん像と,競争を避けて通れない現代社会等,考えさせられる要因があまりに幅広いが,要点を絞って検討してみよ.

(Quiz/1,2年次) プロジェクト・デザイン: グループ作業

金曜日, 6月 26th, 2009

いくつかの課題/演習等では,一つのプロジェクトを複数人で担当し,リーダーが中心となって目的達成に向かって協力しながら取り組む事を求めている.グループ作業をする際,情報共有や進捗確認,問題点の洗い出し,成果物の集約等を如何に効率良く行えるかが肝となる.

上記を踏まえて,以下のクイズに答えよ.

  • グループ作業を効率良く進めるためにどのような工夫が考えられるか,検討せよ.
  • 情報共有や成果物集約等を支援するようなツール(ソフトウェアやwebサービス等)にはどのようなものがあるか,調査せよ.
  • ソフトウェア開発の際には「バージョン管理システム」を使う事が一般的である.どのようなバージョン管理システムがあるか,調査せよ.