Magic Over Japan

みんな、みんな塗りつぶせ

Gitを使えるようになるために必要そうなものまとめ

Gitの話

Gitの話をやったけど難しいので復習用メモを書いておきます

最終的に理解するべきモノ(とりあえずココが理解できる様になるのが目標)
http://redmine.ut-gym.jp/attachments/download/21/git.pdf

  • 参考になりそうな本とか

Git入門
http://www.amazon.co.jp/dp/427406767X

入門Git
http://www.amazon.co.jp/dp/4798023809/

Progit 日本語版(英語版はぐぐって)
https://docs.google.com/file/d/0BxkaLAGEeWgLNDRhYzQ3MDgtNmQ1NC00ODZiLThmYzYtYmJlYWE5YzY2Mjkw/edit?hl=en

他に参考になりそうなもの
http://ja.wikipedia.org/wiki/Git
http://d.hatena.ne.jp/memememomo/20100421/1271806163
http://d.hatena.ne.jp/r7kamura/20110215/1297771813
http://www8.atwiki.jp/git_jp/pages/27.html


Github

GUI的な感じで便利らしい(ココも時間があったらフォロー)
Facebookの生のコードのやり取りとかも全部みれるよ!

その他

UT-StartupGymに今からキャッチアップするには的な
復習のために書いておこうかと

  • 基本的にはここにあがっているものをみる

http://redmine.ut-gym.jp/projects/psi-study-admin/files

http://d.hatena.ne.jp/utgym/20111110/1320940567
Winの場合はこれを立ち上げる
Macにはターミナルがあるから別に必要はなかったりするのかもしれない

  • ターミナルコマンドに関して

http://bowz.info/155

  • Vimの使い方に関して

http://d.hatena.ne.jp/JunichiIto/20120101/1325420213

  • あとPHPとHTMLとCSSについては開発する上で少しずつ覚えていく

後なにかありましたっけ?適宜コメントください。

あと全然関係ないですが、3/20に経営学初心者勉強会を予定しています。
興味あるひとはnao.ecoあっとジーメールまでメールください。

UT-StartupGYM 勉強会第③回

今回やったこと①

  • データベースを使ってみよう

参考資料はこちら
http://redmine.ut-gym.jp/attachments/download/18/%E3%80%90%E7%AC%AC3%E5%9B%9E%E5%88%9D%E5%BF%83%E8%80%85%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%80%91%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86.pdf

Twitterで自分がどんなリストに表示されているかをグラフィカルに表示するアプリ

②quichan.com(ANNOさん)
http://www.quichan.com/
動的なものはJQueryのフェードイン・フェードアウトを使用

③FBのAPIを利用して友達の趣味から動画を表示するアプリ

今回やったこと②

  • 掲示板を作ろう

MVCフレームワークを理解しよう
ほとんどのアプリはこれの変形で出来上がる

  • 実行権限の話

セキュリティ的に大事
ハックされないようにするために。

ポイント:プログラムを誰(=人)が動かしているか
phpファイルをvimで創るとする
phpファイルのオーナーが設定される。オーナーしか書くことは出来ないが見ることは他の人でもできたりする

  • ユーザー権限を間違えて実行している場合に出るエラーの実例

:permission denied
:grant
:refuse
→こういうエラーメッセージが出てきたらユーザー権限がおかしいんじゃないかとか疑う

view:HTMLを吐き出す
controller:HTMLで吐き出す値を作ってやる

  • openss1_random_pseudo_bytes

予測不可能性が高い(=第3者が知りえない、ユーザーだけが知っている)のでrandom関数よりも使う
(「暗黙的に送られる/明示的に送られる」の意味がちょっとわからなかったのでどなたか補足お願いします)
→結局postからは名前、文章のほかにこれが送られているので合計3つが送られる

  • csrf_tokenの意味について確認

フォームを創るときに「このフォームをユーザーが明示的にクリックした、自分のHTMLから送られている」ということを確認する意味で重要
Googleとかだと仕組みが必要ない→別のページから検索することもあるから
常に、「このデータは他の人が創ったフォームからしか入力しちゃいけないのか?/or not」を考えて実装させていくのが重要。
色々やり方はある(Ajaxを使うとか)。適宜学習。
ずっと同じCookieだと知られると毎回権限が奪われるので違うCookieを設定するのがよいかも

  • エラーを考慮する

issetと条件文などを使ってerrorを出力させる
値を先に見ておいてからtokenを確認するのは値だけでも出してあげるため
controllerはpost, confirmの二つがあるが、viewのformはpostだけのものではなくconfirmのものでもある
だからcontrollerとviewは必ずしも1対1対応にはならない→このへんに役割を分離する意味がある
(このへんよくわかっていないので補足お願いします・・・)

  • ファイルを分離する理由(MVCパターンの原則)

非常に重要。
model/bbs のところにvalidate_postを「別関数にして」「別ファイルに」分けているのは理由がある
基本的な原則:controllerにはHTTP(WEBサーバー)に依存するものしか書かない。
POSTの内容が正しいかどうかはサーバーサイドとは全く関係ない話。
ブラウザからでなくてもよいので、ここは切りだしてmodelにする。
よくある誤解:modelはDBを扱うものだというのは誤解。上にあるような概念に基づいて分けるべき。

  • 確認すること

文字列の長さとかエンコーディングとかをみる
validate_postの部分をコードリーディングして覚える
&というのを書くと●●●(※ここがよくわからず。スミマセヌ)。

  • postを信用しちゃいかんということ

毎回validationを実行する
ユーザーの悪意を防ぐため
値を消さないように設計してやるのが実務的には重要。
エラーメッセージもちゃんと書いてやる。→そして消さないように値は戻してやる

  • リダイレクト

一旦別のページに飛ぶという命令を送る
完了しましたみたいな画面をブックマークしたらどうなるの
リロードしたときにもう一回ポストされちゃうとか
そういったことを防ぐためにそういう仕様にする
(※ここ微妙にわかってないので誰か補足を・・・)

  • 難しくないですよね

(すいません難しいです)
このパターンで全部できます
このコードに出てくるパターンさえ覚えていれば全部できる→だから頭に叩き込む
後は叩くSQLを変える
confirmいらなかったらconfirmとればいいしとか

  • Q.エラーメッセージのところで、データベースでしばらく待ってくださいというのは?

ハードディスクがいっぱいになっているという状況を想定している

  • sqliteのパスを変えてやればオフラインで動く

MVCパターンを理解するために色々作ってみる!

  • おさらい

1.VとCを分ける理由
条件分岐があるので一つの画面で複数の見た目があるので分ける
CはURLのパターンだと思ってもらうといい
CはURLに1対1(例:Mixi、日記というのは1:1。日記がありませんと日記が表示される場合はCは1個だが、Viewはふたつある。URLのパターンとコントローラーの数は1:1の関係→ここよく分からなかったのであとで調べないと)
2.CとMを分ける理由
Mに操作が集まっていたほうがいい。HTTPに関係のある話以外は全部Mに入れるべき。
「これってHTTPじゃなくてローカルアプリにしたときにどっちに入れるべき?」というのを考えて仕分ける。
エラーの文言はViewに入れるべきかなと思ったが、複雑になるかなと思ってModelに入れた。
「このボタンを押してください」というような文言だとHTTPに関するメッセージなので
そのサイトで統一されたルールが必要かも
3.MVCの中でMが一番ふわっとしてる
Mは勝手に書いてねみたいなフレームワークが多い
SQL or ORマッパー?→どれぐらい早くなるか、将来的なチューニングのしやすさなどでどっちをとるか考える
SQLで確実にコードは汚くなる。汚くなることを許容できるなら・・・。SQLで書くことの精神的なコストは大きい
ORマッパーの達人になってしまえばSQLはいらないのかも?

*PDO:SQLのライブラリ
*Git:ソースコード管理のためのソフト。今後も使える技術なので次回フォローしていきます。

参考リンク

  • sqlite3の基本操作まとめ

http://tterry.blog.so-net.ne.jp/2008-03-19-1

  • 入門ソーシャルデータ:ドット言語というものがあり、graphビズ?というライブラリで可視化できる。

↓のリンクからいけますが何でか分からないけど画像が表示されない。

感想

一番良いと思ったのは、やっぱりプログラマーの人の思考過程が見えることですね・・・!
そしてソースコードリーディングの重要性がわかりました。
良い基本的なコードというのを繰り返していくのが大事なんですねー。

閑話休題。
若干脱落気味の私。宿題も今回やれてないのでキャッチアップしないといけないです・・。
*というのもゲームのちからで世界を変えよう会議のOffline Meetingの準備におわれていたからでして・・・
ゲーミフィケーションとかシリアスゲームとかそういうのをもっと広めていって、世の中をもっとGamefulにしていこうよみたいな活動をやっています。

いややっぱそういう甘い考えじゃだめだな。活動があるとか全く関係ないですね。すみません。
せっかくamachangさんに教わる機会があるのにキャッチアップできてないとか大損失すぎる。
これじゃアイデアを実現するどころの話じゃないな。聞く姿勢の問題。。

脱落しているっぽい理由がvimとかnanoとかのエディタとターミナルを使いこなせてないからだと思う。
(そしてそれを勉強会で勉強するというのも変な話でどこにでも書いてあることだから自分で勉強すべき)
その辺復習できるよいものはないですかねえ。
プログラマーのひとショートカットかつようしすぎててちょっとはやさてきについていけないところがある

キャッチアップ対策

  1. エディタ、ターミナルを完全にマスターする
  2. もう一度録音データを聴き返してわからないところをわかるまで調べる
  3. 多分用語とか言葉がわからないからついていけない部分が多いので、わからない単語がないように潰す。

時間を見積ながら動かないといけないですね・・・

*多分今回プロジェクトは立てずにどこかにJoinする形でやりたいかなと思ってるんですけどだれかやとってください

謹賀新年

あけおめことよろ(Twitterを落とす呪文)!

さて、今年の抱負ですが、まずはゲーミフィケーションの理論の理解そして実践ですね。
他にもあるのですが、一応このBlogはWEBサービスの開発周りに特化したブログなので!!
とりあえず14日のUTGYM企画会に向け、鋭意企画考え中です。
もし賛同してくださる方がいれば、是非一緒に作りましょう!!

14日までにor21日までに、Twitterで1個BOTとか作ったりしたいですねえ。。
そのためには今までの復習と、どっとインストールとかその辺も参考にしつつ勉強しないとな!

ドットインストールで思い出したのですが、インターネットを学習に使うためのコンテンツが日本でも増えてきています。

ソーシャルラーニングで学校いらず!?インターネット学習の現在とこれから
http://blogs.itmedia.co.jp/sasaki/2011/12/2012e--a86a.html

なかなか興味深い記事ですよねー。
ではでは。

12/25 気になる記事まとめ

たまにはてなから、プログラミング初心者用の記事を抽出して読んでいく作業を開始してみることにしました。
フレームワーク」「node.js」「大規模開発」とか色々気になるワードはあるのですが、今読んでもなかなか良くわからない気がするので、とりあえず自分でちゃんと書けるようになるまでは入門っぽいのだけ選別します。


中学生からわかるiPhoneアプリ開発入門。第1回 。
http://www.appbank.net/2011/12/24/iphone-news/342008.php

[Creative][Android][Githam]空き時間にスマフォでソースコードが読める『CodeLibrary』をリリースしました!
http://d.hatena.ne.jp/hamhei/20111224/1324734053
→ちょっと難しめ

HTMLからツイッターbotの作り方まで無料で教えてくれるプログラミング学習サイト『ドットインストール』が素敵
http://www.danshihack.com/2011/12/22/junp/webservices_dotinstall.html
今やってます。

JavaScriptをもっと上達したい人へのヒント(JavaScript おれおれ Advent Calendar 2011 – 24日目) | Ginpen.com
http://ginpen.com/2011/12/24/hints-for-jser/
→ちょっとむずかしい。

ちびこーどさんの記事。

昨日のUTGYMでid:amachang先生がchibicodeさんの話をしてて「誰それっ!?」と思ったアナタ!

私が記事を書いているのでそれを参照して下さい!すっごい方なんですよっ

「20歳を過ぎてからプログラミングを学ぼうと決めた人たちへ」講演まとめと感想
http://kotoyumi.blog59.fc2.com/blog-entry-64.html

この記事の中でchibicodeさんが語っている、「知識のグラフ」の概念が、

今回のid:amachang先生の、

プログラムを学ぶためのロードマップ
https://cacoo.com/diagrams/KEzduTiEHpW5dTYB

これに似てるなーと思いました。