hagetak's blog

どうも、はげたかです。

『理系の子』レビュー - ★★★★★ (満点)-

天才は、何を考え、何を思い、生み出すのか。

理系の子 高校生科学オリンピックの青春 (文春文庫 S 15-1)

理系の子 高校生科学オリンピックの青春 (文春文庫 S 15-1)

内容(「BOOK」データベースより)

インテル国際学生科学フェア―それは高校生による科学のオリンピック。世界中の予選を勝ち抜いた理科の自由研究が集い、名誉をかけて競う。出場した少年少女たちは、どんなふうに育ち、なぜ科学に魅せられ、どんな研究をやってのけたのだろう?十歳で独力で爆薬を製造、やがて「核融合炉」の製作に挑んだ少年。自閉症を持ついとこのため画期的な教育プログラムを生み出した少女。少年院で非行少年たちの眠れる知の才能を発掘した熱血理科教師。ハンセン病に感染してもへこたれず、らい菌の徹底研究を開始した少女。そして小さな虫を手がかりに太古の地球環境を解明した日本人の少女。ほか研究に青春をかけた理系少年少女たちの感動の実話。科学はこんなにもおもしろい。

“サイエンス・フェア”とはアメリカで盛んに行なわれている科学教育イベントとのこと。中高生が、科学の自由研究をイベント会場に出品し、その評価を競うコンテストのことだ。その頂点にあるのが、インテル国際学生科学フェア(Intel International Science and Engineering Fair, Intel ISEF)である。このイベントは、インテルISEFの400万ドル相当の賞金がある。手にする可能性は、誰にでもあるのだ。(実際にこの本を読んでみると、こいつはいける!と思った人物が意外な賞を取っていたり。これは、ぜひ読んで身て欲しい。)運のいい一握りの者が、数十万ドルを獲得するだろう。大学へ進学して卒業するまでの充分な学費を稼ぐものも出てくるにちがいない。医者、宇宙飛行士、技術者など、ずっと思い描いていた夢の職業に就くことができるか、2,3時間のうちに決まるのだ。 そう、【賞金・奨学金で、貧しい子どもたちが大学に進めるようになる】のだ。

この科学のオリンピックにはいくつかの物語がある。この本『理系の子』は、何人の物語についてかかれている。

彼らのエピソード

ここでは、自分のお気に入り(書きやすい)「ミツバチに挑戦した少女」のエピソードを述べる。他の物語については、実際に読んでもらいたい。

その少女、イライザ・マクニットは、モデル活動等を行っていた少女である。彼女は、科学に偏見「科学はオタクのもの」「科学はクールじゃない」を持っていた。しかも、科学が苦手で、モデル活動を行っていて有名でいたため、科学男子にからかわれていた。「こんな実験もできないの?」「これをやるとどうなると思う?」

ある先生と出会い、サイエンスフェアに参加することになった。彼女は、「ミツバチ」で挑戦することにした。この調査には困難があったが、なんとかサイエンスフェアを勝ち進み、ISEFの挑戦権を得た。

今まで科学と芸術は両立できないと考えていた彼女だったが、受賞後のゲストコメント(曖昧)で...

また、電波天体のひとつパルサーの発見につながる研究をしたジョスリン・ベル・バーネルは。椅子に座ったまま屈みこみ、ハンドバックをあさって薄いノートを引っ張り出した。宇宙に関する詩をこのノートに書き写しているのだとベル・バーネルは言った。子供のことからずっと詩を書き留めているけれども、それを口にしたことはほとんどないというのだ。でも、ちょうといい機会なので打ち明けましょう。わたしは科学と芸術が大好きです。それどころか、このふたつは完璧なカップルだと思っています、とベル・バーネルは言った。

「わたしたちは厳格にものごとを実証していかなければなりませんが、創造力、常識にとらわれない、とんでもない発想が必要なんで す。そもそもの仮説というのは、そこから生まれます」

この言葉により、彼女は両立をすることを考えた。また、サイエンスフェアを通して、彼女は取られる側から撮る側になったりと色々エピソードがあった。

理系の子 高校生科学オリンピックの青春 (文春文庫 S 15-1)

理系の子 高校生科学オリンピックの青春 (文春文庫 S 15-1)

簡単スクレイピング(ruby)

はじめに

簡単なrubyスクレイピングを書いてみる。(真似してみる) といっても、これをスクレイピングというのかわからない。 とりあえず抽出できた喜びを伝えたいので、記事にする。

スクレイピング

$ irb

re2.1.1 :001 > require 'nokogiri'
 => true 
2.1.1 :002 > require 'open-uri'
 => true 
2.1.1 :003 > doc = Nokogiri.HTML(open("http://nokogiri.org/"))

2.1.1 :004 > doc.css('a').each do |e|
2.1.1 :005 >     puts e
2.1.1 :006?> end

# この'a'の中身を抽出する

2.1.1 :004 > doc.css('a').each do |e|
2.1.1 :005 >     puts e[:href]
2.1.1 :006?> end

こんな感じ!

参考スライド

ターミナルでフォルダ作成し、瞬時に作成したフォルダに移動する関数

はじめに

フォルダを作成し、そのフォルダに移動するのがすごく面倒だった。

ターミナル上では、

mkdir hoge

cd hoge

って感じだ。hoge を2回打つのがすごく面倒くさい。

ということで、オリジナル関数を作成してみた。

mkcd

.zshrc(.bashrc)に以下を記述。

function mkcd(){ 
  mkdir $1 && cd $1
}

これでこの問題は解決だ。

使用方法

~/ $ source .zshrc

~/ $ mkcd hoge

~/hoge $

といいかんじだ。 これで作業効率が少しだけ上がりそうだ。

Error: `gem install pg -v '0.17.1'

はじめに

Rails4で実戦的なブログを作成(その1) - Qiita

を元に、実践的なブログを作成してみる。

が...

sudo bundle install

で早速躓いて何も手を付けられない状態だった。

`gem install pg -v '0.17.1'

An error occurred while installing pg (0.17.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.17.1'` succeeds before bundling.

このエラーが出た場合

postgresql をインストールする必要がある。 このインストール方法は2通りある。

  • apt-get でインストール
  • brew でインストール

自分は前者で解決しようとして、 apt-get をインストール = > fink をインストールしようとした。 しかし、これもエラー。

2日間 ずーっと頑張っていたが結局解決できず。

そして、今...

brew でインストールする方法が簡単に見つかった。

Terminal で

brew install postgresql

を入力するだけで解決。

はああああああああああ。もったいない。

まとめ

sudo bundle install

で以下のエラーが出た場合の解決策

An error occurred while installing pg (0.17.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.17.1'` succeeds before bundling.

brew install postgresql

を入力すれば解決できる。

A server is already running時の対処(Rails)

以下のコマンドでサーバーが立ち上がらない時の対処

% rails s

                                                        
=> Booting WEBrick
=> Rails 4.1.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
A server is already running. Check /Users/<username>/Dropbox/<applicationName>/tmp/pids/server.pid.
Exiting

この場合、 server.pid を削除すればOKなので

カレントディレクトリにいる場合、以下のコマンドを打つ

% rm /tmp/pids/server.pid

これで解決。

解決できない場合は、ターミナルを一旦閉じればおkだと思う。

zsh で yo をインストール、実行する方法

はじめに

少しAngularJSを深く学びたいと思い、様々なサイトを参考にしている。 そこで、AngularJS用のジェネレーターを導入すると書いてあったので、自分も導入してみた。

AngularJS入門

以下にインストール方法・実行方法を載せる。

yo をインストールする

1. yo (YEOMAN) をインストール

npm install -g yo

2. AngularJS用ジェネレーターの導入

pm install -g generator-angular

3. compassの導入

gem install compass

以上がインストール方法である。 次に、 zsh で実行する方法を述べる。

zsh で実行する

インストール後、実行してみると...

yo -v command not found: yo とエラーが出る。

Yo ( Yeoman )をインストール時に、以下の項目を見つけた。

      export NODE_PATH=$NODE_PATH:/Users/hagetak/npm/lib/node_modules
    Or run this command
      echo "export NODE_PATH=$NODE_PATH:/Users/hagetak/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc

/.bashrc に PATH を通しているのが分かる。 つまり zsh 自体にPATHは通っていないため、PATHを通す必要がある。

vim .zshrc (zsh ユーザなら少しは精通してると思うので少し省略をする)

以下の記述を追加する。

export PATH=$PATH:~/npm/bin
export NODE_PATH=$NODE_PATH: ~/npm/lib/node_modules

記述後、

source .zshrc

を実行すると使えるようになる。

JavaScriptでオブジェクト指向的プログラミングをする

はじめに

授業で JavaScriptオブジェクト指向的な使い方を学んだものの、 期間が空いたため忘れてしまった。 復習のため、以下のスライドを参考にし勉強をした。

コーディングメモ

var Person = function(name){
    this.name = name;
}
Person.prototype.name = 'nanashi'
Person.prototype.say = function(){
    console.log('I love ' + this.name);
}

/*  この時の Person の中身 
Person: {
    this.name = name
    prototype: {
        name = 'nanashi'
        say:function(){
            conosle.log('')
        }
    }
}

*** prototype以降を参照する方法 ***
Person.prototype.name //=> 'nanashi'
* name に何が入ってない場合、 'nanashi' が参照される
Person.prototype.say()

**********************************/