2012年6月2日土曜日

議論の種

自分の意見をまとめたいなあとか、人と議論したいなあ、とおもっているものをリストアップしようと思う。


  • 恋愛ってなんなんだ!(頭弱そうな議題!)
  • 某友人が唱える「効率よく彼氏を作る方法」についての考察
  • お互いに刺激を与えあう恋人関係は成立するのか、っていう話も議論したい。
  • あんた研究なにやってるよ?っていろんな人に聞きたい。
  • ITバブルや、アプリバブルがはじけたら、IT業界はどうなるんだろう。って話。
  • もしも今パソコンがなくなったら、私たちはどんな生活を送っているんだろう。って話。
  • Retinaディスプレイの台頭によるウェブ業界の今後。
  • もし私があなたで、あなたが私だったら、お互いどういう選択をして生きる?っていう話を議論してみたい。
  • WW2が終わって約70年、高度経済成長が終わって30年くらい。パソコンが普及して世の中ががらっと変わったのはここ10年くらいの話。「社会人」という概念が生まれたのはいつからだろう。そんな歴史やものごとの流れの速度をふまえて、これからの社会の変動や、社会人のありかた、ノマドワーカーという新しい働き方、目の前に迫り来る「シュウカツ」について考えてみると。って話。



最後のが一番気になるかなぁ。
3年生になって、最近、facebookの就活のグループにいれられたりして、本当にウンザリ。
お前らの人生のゴールはそこなのか。大学は就活のための予備校にすぎないのか? つーか、就活は今まで学んだことの結果であって、過程である学びの方が大切なのでは? 今は大学でしっかり学ぶことを優先するのが清く正しい大学生像なんじゃないの?と思うのですけどねえ。



ああ、私って馬鹿なんだなぁ

生きていて、
「ああ、私って馬鹿なんだなぁ」と思うことが多いか、
「周りが馬鹿すぎて嫌」と思うことが多いか。

私は圧倒的に前者である。


頭のよさとは


私の思う頭のいい人は、「自分の意見を自分の言葉で主張でき、なおかつその主張がわかりやすく人に伝えることができる人」である。やっぱりなんだかんだこの一点に限るなぁと思う。
単なる脳みそのスペックの善し悪しでいったら、記憶力があるだとか、何カ国語もしゃべれますだとか、人間関係の構築が上手であるとか、まぁ他にもいろいろと要素はあるだろう。けれど直感で「ああ、この人頭いいな」と思うときは、だいたい私が最初に挙げた条件にあてはまっている。また逆もしかり。「この人馬鹿だな」と思うときはだいたいこの条件にあてはまっていない。ちなみに私もまったく当てはまっていない。世のおばかさんの代表みたいなものか。てへぺろ。

私のおばか具合に関して言及する。
授業中に先生から意見を求められることがあっても絶対に手を上げて発言しないし、
(話を聞いても特にこれといった意見が生まれないから)
友達との無駄話にも中身がないし、
(たまに友達とよく議論してるって人いるけどとても羨ましい限り)
自分の意見を全世界に配信できるブログなるものも、私の手にかかればただのプログラミング備忘録になっていた。
さすがはおばか代表なのであった。

ちょいと時をさかのぼる。
私が、慶應大学SFCに合格したのは、いまからざっと2年半ほど前の話になる。
入学前に、慶應大学合格者が集う会が幾度か催され、私も足繁く通ったものだ。
そこで私はカルチャーショックを受けた。
「自分の夢について語ろう」
「日本の現状について」
「今まで自分がどのような活動を行ってきたか」
「自分の社会に対しての問題意識はどこにあるのか」
「セクシャルマイノリティについてどう思うか」
「どのような消費税制度が望ましいか」
フツーに奴らは議論していたのだ。え、議論って日常生活でするもんなの?ねぇ。
超カルチャーショックだった。
高校ではこんな光景ありえなかったな。受験のはなしとか先生の悪口とか人の恋愛ののろけばなしとかドラマの話とか、そんな身にならない話しかしてなかった気がする。

まあ、そんな風に議論が交わされることが多くなる中、自分に決定的にあるものが足りない事に気付いた。「日本語力」である。圧倒的に語彙力が不足している上に、自分の意見をうまくまとめる力がない。この脳力の欠如を、何人かに指摘されたこともあって、私自身すごくに気にするようになった。とりあえず自分はおばかなのだと悟った。

こんな私に対し、とある友人がアドバイスをくれた。
「プログラミングをはじめたら、論理的思考回路が養われると思うから、やってみるといいよ。プログラミングはロジカルに組まないとエラーが出るからね」
入学してから早くも2年半が経過し、プログラミングにどっぷりつかり始めた現在も、時々ふとその言葉が頭をよぎる。
つーか、今現在プログラミングにどっぷりはまった生活をしてるなうなんだけど、全然頭よくなんないんだけど!どうして!!!(悲鳴)


まあ入学してからは、まあそう頭のいい人ばっかりじゃないと気付けてよかった。安心した。


そもそも日本人って


余談になるが、先日知人から興味深い話を聞いた。
英語で「わたし」や「あなた」を指す言葉って何がある? 「わたし」だったら「I」、あなただったら「you」だね。
日本語で「わたし」や「あなた」を指す言葉って何がある?「わたし」は「ぼく」「拙者」「自分」「おのれ」「われ」など、「あなた」は「あんた」「お前」「自分」「おのれ」「われ」など。このように、日本語には「わたし」と「あなた」を表現するときの言葉が被っているものもある。そこから考察すると、日本人は個の意見と集団の意見の境目がないのかもしれない。すなわち自分の意見を言う事を強制することは日本人には向いていないんじゃないかな。
自分の意見がない私は典型的な日本人であるだけなのであろうか。
そもそもこの話を鵜呑みにしていいのか。


そもそもの話とまとめにならないまとめ


そもそも私がどうして、このようなブログを書こうと思ったか。

  • おばかをやめたい。
  • 自分の言葉で素敵なブログを綴る人に憧れている。(インターネットもぐもぐのはるな姉さんとか)
  • その為には自分の意見を文章に起こすという行為を日常的に行う必要がある。


まあそんなところである。
自分の意見を自分の言葉でブログに綴り、腐った頭を鍛え直そうという魂胆なのである。
(結局、意見というより自分の身の上話で終わったのだが)

まあそういった理由から、これからも定期的にこういうブログを書こうかなぁ、と思う。

ああ、それにしても長いブログになってしまった。
きっと賢い人はこんな下らないものでももっと端的に短くまとめられるんだろうな。あぁ。

2012年6月1日金曜日

【正規表現、javascript】Twitterの発言にリンクタグをつける


正規表現には方言があるらしい。
jsでTwitterの文言を正規表現処理したけど、結構むずかしかった。
とりあえず、"/g"ってすごい!
"/g"を書かないと、Tweet内のリンクを1つしか処理できない。
"/g"を書くと全部処理してくれる。
"/g"は偉大なのであった。

urlをリンクタグ処理
tweet = tweet.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&~\?\/.=]+/g, function(url) {
return url.link(url);
});
            
リプライをリンクタグ処理
tweet = tweet.replace(/@[a-zA-z_]*/g, function(reply) {
var no_mark_rep = reply.replace(/@/, "");
return reply.link("https://twitter.com/"+no_mark_rep);
});
            
ハッシュをリンクタグ処理
tweet = tweet.replace(/[#]+[A-Za-z0-9-_-ヶ亜-]+/g, function(hash) {
var no_mark_hash = hash.replace(/[#]/, "");
return hash.link("https://twitter.com/%23"+no_mark_hash);
});

2012年4月27日金曜日

herokuでsqlite3を使おうとしたら詰んだ

-----

追記:Redis To Go を SQliteのかわりに使ったらわりと簡単に実装できました。
このアドオンおすすめです。

使い方もドキュメントに簡単に書いてある。
https://devcenter.heroku.com/articles/redistogo

-----

結論から言うと、herokuでsqlite3は使えないらしい。
postgresqlを使うらしい。

何時間もこれで詰んでたからすごく悲しい。

herokuマスターにたずねたところ、Redis To Goというherokuアドオンを代わりに使うとよいみたいです。これはNoSQLデータベースの一種で、ハッシュをデータベースのように扱えるようにしたようなかんじのものらしい。

使い方あんまりわからないので、HerokuでMySQL使えるようにした方が楽なのかなあと思ったり。

2012年4月25日水曜日

HerokuにRubyのコードをUPする

----
追記:
現段階では動いてはいますがサイトURLに飛べないです。
アプリケーションエラーがまだ消えてませんでした。

追記の追記:
プログラムを動かしながら、webプロセスを確保するには2dyno必要らしいので、課金しないとむりっぽいです。workingのdynoを1、webのdynoを1確保します。
その後、Procfileにあたらしくwebアプリに関する記述を追加し、
(私は「web: bundle exec thin start -p $PORT -e $RACK_ENV」って書いております)
$ heroku ps:scale web=1
とかすれば飛べるようになります。
でもherokuではプログラムからjsonへの書き出しが保証されていないみたいで、
結局この方法では実装できなかったという…w

----

RailsアプリをHerokuにUpしている例はたくさんあったのですが、RubyでかかれたコードをUpしている例は少なかったのでメモ。

はじめ、
・test.rb
・test.json
の2つのコードしかいれずにgit push heroku masterしたらpushできなかった。

いろんなサイトにこういう時はindex.phpのファイルをおけばいいと書いてあるが、
私が書いているのはphpじゃなくてrubyである。
index.phpをいれるとphpのコードとして認識されてしまう。

わからなすぎてHerokuの知り合いに質問してみると、
GemfileをいれるとRubyのコードとして認識されるらしい。

ほほー。

でもGemfileになに書いていれとくんだ?
まあとりあえずGemfileにはつかったgemをかいておいた。
それでbundle installしておいた。
やり方あってるのか心配だー

で、この段階でのfile構成

・test.rb
・test.json
・Gemfile
・Gemfile.lock(Gemfileをつくってbundle installしたら自動でできる)

これでもたしかダメだよってherokuさんに怒られた。
どうやらProcfileというものをつくらなきゃいけないらしい。

英語の資料あったぜ!
https://devcenter.heroku.com/articles/procfile

Procfileに関しては日本語資料がまだまだ少なくて、あんまり書き方わからない…

clockworkを使って、定期的に動くコードを書いていたので、
Procfileには
clock: bundle exec clockwork test.rb
と書いておいた。

clockwork参考資料:
Herokuでcron?もう古いかも、それ

ここのサイトすごく参考にさせてもらった。
それにしてもclockwork便利すぎてやばい。
1秒ごとにコードを動かしたりできる。なんかcron以上にすごい。

で、この段階のファイル構成。

・test.rb
・test.json
・Gemfile
・Gemfile.lock
・Procfile

これで、git push heroku masterは通るようにはなったんだけど、
heroku logs --tailでログをみているとエラーがでている模様。
これはアバウトに言うとwebアプリじゃないのにwebアプリの経路を断ち切っていなかったのが原因みたいで、

$ heroku ps:scale clock=1
とコマンドうったら治った。

なぜclock=1と書いているかというと、Procfileにclock: bundle exec clockwork test.rbと書いて、アプリ名をclockにすると指定したから。
1というのは1dynoをこのアプリにわりあてますよって意味らしい。
Webアプリは自動で1dyno確保しているけど、webアプリじゃないと自分でやらなきゃいけないらしいのです。
dynoって何?とりあえずよくわからないけどdynoってやつがわりあてられると動くらしい。

とりあえずこれで動くようになった!!わーい!!


で、この段階のファイル構成。

・test.rb
・test.json
・Gemfile
・Gemfile.lock
・Procfile
・index.html.erb

あ、なぜindex.html.erbが増えてるかというとね!
先輩にherokuでコードを共有しつつ作業をしていたら、
いつのまにかindex.html.erbを足してくれていた。

理由は正直よくわからないけど、まあ動いたからいっか。
index.phpを加えるのと同じノリなのかしらね。
(適当でごめんなさい)

以上、Herokuに関する適当なメモでした。

2012年4月20日金曜日

herokuで複数アカウントを管理する

----

追記:
複数アカウントを導入すると、どうしてもエラーまみれになってしまってうまくいかなかったので、複数アカウントにするのを諦めました。
しかし、もし複数アカウントでやるならどうやらaccountのプラグインを使うのが一番良いみたいです。

・heroku-accountsプラグイン
http://journal.sooey.com/162
・わたしはheroku-accounts導入しようとしたらいろいろこけまくって諦めてしまった。ねばって成功した人もたくさんいるみたいなので、とりあえず上のサイトを参考にしながら試してみるとよいかもしれない。

----

ayuminさんのところに詳しくは書かれていた。
http://d.hatena.ne.jp/ayumuaizawa/20120120

けれど、一応自分でもメモメモ。


$ heroku login
Enter your Heroku credentials.
Email: (herokuに新しく登録したアドレスを記入)
Password: (herokuのパスを入れる)

そしたらどっちのssh使うの?ってでてきた。

Found the following SSH public keys:
1) github_rsa.pub
2) id_rsa.pub
Which would you like to use with your Heroku account? 

ふええ〜 どっちだっけ〜 忘れちゃったよ〜

考えてみるに、多分(1)がgithubに登録したやつで、(2)が前にherokuに登録したとき発行したやつかなあ、多分。多分。

というわけで再びssh発行。


$ ssh-keygen(ようっし!発行!)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ikezawaayaka/.ssh/id_rsa): /Users/ikezawaayaka/.ssh/td_rsa(td_rsaとどのアカウントで使っているのかわかりやすい名前にしてみたキリッ)
Enter passphrase (empty for no passphrase): (普通にエンターでok)
Enter same passphrase again: (普通にエンターでok)
Your identification has been saved in /Users/ikezawaayaka/.ssh/td_rsa.
Your public key has been saved in /Users/ikezawaayaka/.ssh/td_rsa.pub.
The key fingerprint is:
28:bc:c4:06:a2:93:e3:92:06:cd:42:84:c9:36:5d:7c ikezawaayaka@ikezawa-ayanobana-no-MacBook-Pro-2.local
The key's randomart image is:
+--[ RSA 2048]----+
|oo. o.           |
|++ . . E         |
|o.o   .          |
|o= +   .         |
|B o * . S        |
|o= o o           |
|oo  .            |
|o                |
|                 |
+-----------------+

これでsshが3つになりまして、


$ heroku login
Enter your Heroku credentials.
Email: (メアド入力)
Password: (パスワード入力)
Found the following SSH public keys:
1) github_rsa.pub
2) id_rsa.pub
3) td_rsa.pub
Which would you like to use with your Heroku account? 3(3番目のつかうぜ!)
Uploading ssh public key /Users/ikezawaayaka/.ssh/td_rsa.pub


無事herokuに複数アカウントでログインできたわけであります。




2012年4月17日火曜日

Ruby on Railsでのアプリ開発の基本

今回は簡単なRailsアプリの開発をMac OS X でやっていきます。

・Ruby on Rails とは
Ruby on Rails(ルビーオンレイルズ)はオープンソースのWebアプリケーションフレームワークである。RoRまたは単にRailsと呼ばれる。その名にも示されているようにRubyで書かれている。またModel View Controller(MVC)アーキテクチャに基づいて構築されている。(Wikipediaより)

・開発環境を整える
MacにはRubyがデフォルトではいっています。
Rubyのバージョンを確認してみます。
ターミナルを開いて、以下のコマンドで確認します。
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]
続いて、Railsのバージョンも確認してみましょう。
$ Rails -v
Rails 3.2.1

Rubyのバージョンは1.9以上が望ましいので、1.9以下の方はアップデートを推奨します。
Railsはデフォルトでは入っていないので、インストールしましょう。

Railsのインストールは、
Macportをインストール後、
$ sudo port install rb-rubygem
$ sudo gem install rails
とコマンドをうち、Railsを導入します。

余談ですが、RVMとgemsetを利用して、RubyとRailsのバージョン管理をするととても便利です。

・簡単なアプリを作る
はじめてのアプリの定番はやはりToDoリストです。
本当にあっという間にできて感動します。

$ cd
$ rails new todo
$ cd todo

cdコマンドで、一番下の階層に移動し、rails new で新しいアプリを作成します。
今回はToDoリストをつくるので、アプリ名は「todo」とします。
そして再度cdコマンドで今度は新しくできたtodoのファイルへ移動します。

$ rails g scaffold note body:text title:string
$ rake db:migrate
rails g scaffold note body:text title:stringで、本文とタイトルが入れられるToDoリストを作ります。noteは適当につけた今つくった機能の名前です。アプリ名とかぶらないように気をつけます。
次に、rake db:migrateでtodo情報を登録するためのデータベースをつくります。
またまた余談ですが、firefoxのアドオンでSQLite Manegerというものがあるのですが、
このアドオンを入れるとデータベースを可視化することができます。

早速ブラウザで確認してみましょう。
ローカルでサーバーを立てて、確認。
$ rails s
ブラウザで「http://localhost:3000/notes」を開いてチェックしてみましょう。

ちゃんとこうなっていれば成功。



New Noteからいろいろと追加してみましょう!


以上で簡単にToDoアプリができました。

  • herokuで作った簡単にアプリを公開することができます。
  • twitter bootstrapを使うと見た目を簡単にtwitter風にすることができます。