タグ別アーカイブ: study

大阪Node学園 四時限目に参加した-


またまた、参加してから数週間たってしまいましたが、参加した記録を残しておきます!
前回の三時限目からちょうど1年ぶりぐらいの開催でした。
ただ、感想としては、、、とてもおもしろかった!!!

大阪Node学園 四時限目
開催日:2012/11/24(土)

内容としては、以下の様な流れでした!

・テストについて
・実務での実例(Slidrsについて)
・yeomanについて
・東京Node学園祭参加レポート


テストについて

@craftgearさん
サーバサイドのテストはフレームワークの紹介程度であとはクライアントサイドのブラウザテストの紹介でした。個人的にもブラウザのテストって、難しいなーと思っていたのでフレームワークの使い方などとてもわかり易かった。testacularがよさそうなのと、MVCフレームワークも色々出ているけどangular.js がよさそうだなと思った。

【サーバサイド】
テストフレームワーク:mocha, expect.js(chai.js)

【ブラウザテスト】
testacular (node 0.8 over)
Angular.jsを採用している

Testem (node 0.6 over)
実行結果をブラウザで表示できる

Angular.jsの機能テスト(e2eテスト (End to End)のテスト)が使いやすい
Angular_scenario.js(Angular.jsに同梱されている)

angular.js の実装例で用意されてる機能テスト(e2e)参考
https://github.com/angular/angular-phonecat
https://github.com/angular/angular-seed


実務での実例(Slidrsについて)

@kumatchさん スライド資料

Nodeの利用したサービス(スライド共有サーービス)での環境構築から実際の中身の実装までの結構細かい内容を説明してくれた。実際のサービスで使用している例だったので、Nodeを使う上でのnginxの設定方法やNodeのデーモン化など、本番運用でのキーポイントをいくつも挙げていただき、がとても参考になった。

【nginxの設定】

  • try_files
    (メンテナンスページなどへの切り替え)
  • X-Accel-Redirect
    (大きなファイルをユーザへダウンロードさせる時などはnodeがシングルスレッドなのでnode自身がファイル転送でロックされるのを防ぐため、ファイルを生成したあとはnginxへレスポンスを返させる)

【node.jsのプロセスの管理】
・supervisord
pythonで作られたもの。簡単に利用できる!!
※自分はPerlで利用するときは「daemontools」を使ってるなー

【アプリケーションはexpress3 で開発】
2.x -> 3.x マイグレーション情報

【Redisを利用】
キャッシュなどの保持に使っている

【MongoDBを利用】
データストレージとして使用している。
monkを使っている(MongDBを簡単に叩く時に便利な簡易的なツール)
mongooseではない

【クライアントサイド】
テンプレートエンジン:jade
クライアントJSライブラリ:knockout.js

依存するモジュールも解決できる
Node/AMD (サーバ/クライアント) 共通化モジュールを書く
AMD (Asynchronous Module Definition) は、Javascript のコードをモジュールとして定義して、非同期ないし遅延ロードするための仕組みです。

【Node,ExpressのTips】
●expressのresponseオブジェクトを拡張できる

    app.response.send401 = function (realm) {...};

●initialize function

【route.js】
module.exports = function(myapp) {
    var routes = {
        index: function(req, res, next) {...}
    };
    return routes;
}
【app.js】
var routes = require('./routes')(myapp);
app.get('/', routes.index);

●ガーベジコレクション
node.jsのガーベジコレクション 処理が落ち着いた段階でGCが走る。(アクセスが終わって数秒後に)

●nodeの起動オプションで、任意のタイミングでガーベジコレクションを発生させることが出来る

起動する時に以下のオプションをつける
% node --nouse_idle_notificatio --expose_gc app.jp
実際にGCをかけるときはプログラム上で以下のようにする.
global.gc();

http://devjar.me/post/22886448979/manually-run-gc-in-node-js

【node.jsのメモリ調査ツール】
node-memwatch

【おすすめ本】
「RESTful Webサービス」 オライリーの本
「Node.js入門」


YEOMANの紹介

yeoman公式
yeomanのソース

クライアントサイドのテスト/ビルドツール
railsのような機能がある.

強力なscaffolding
cofeescript sass compass を自動でコンパイルする
構文チェック(jshintを使った構文チェック)
画像最適化
自由なテンプレート
自動リロード(ファイルの変更を監視HTTPサーバの自動うでリロード)grunt.js
パッケージ管理(Twitter Bower)


東京Node学園祭参加レポート

この報告会の内容がいつも大阪Node学園で楽しみ。。
今回の東京Node学園祭は特にホームページを見てもわかるようにすごい豪華なメンツ。
Ustreamのビデオとスライドの資料もあるので、今後見てみようと思う!

DevLOVE関西2012Drive へ参加した


ちょっと遅くなったのですが、DevLOVE関西2012Driveに参加してきたので、メモったことやその都度思ったことをまとめてみたいと思います。

「開発現場を、駆動せよ。」
というサブタイトルに引きつけられて、DevLoveに初めて参加しました。
基本的には、今興味のあることとして技術部門のセッションを聞いてきました!
開催日:2012年11月10日(土)


乙女ゲーを支える技術 – play2.0 + Scala の開発事例 –

粕谷さん(@daiksy)
利用技術:scala、Play2.0、Squery、MySQL、Git

基本的にはScalaでソーシャルゲームを開発したという内容で、Scalaは個人的に興味深々の分野で内容はとてもおもしろかった。
ScalaでWebアプリを作成する時のWebフレームワークはPlayフレームワークの1択とのことでした。

・始業前勉強会を行った
コップ本論読(Scalaの本) 
scala,Gitなど初めて使用する技術だらけだったので、朝の始業前にメンバーで勉強会をやっていたとのことです。

・一部scalaの書き方
「var」 再代入OK
「val」 再代入NG(再代入NGってのが関数型っぽい)

if文も関数なので値を返す。
以下のようにしてif文の条件でマッチしたらtest_valueという文字列を返す。

val huga :String = if (hoge>0) { "test_value" }

保守はしやすい
コード量が減り、見通しが良い(少ないコードのほうが保守しやすくなる)

【感想】
朝にチームで勉強会していたっていうところがいいなーと思った。
自分の現場でもこういう部分は取り入れていけたらいいなーと思う。


CIの何か

@kiy0taka さん

JenkinsのJobが遅くなってきた時の対処法

−パイプラインを使う
Build Pipeline Plugin
・一連で動作させていたjobを分割する (チェックアウト・コンパイル、テスト、チェックスタイル、findbugs)
チェックアウト・コンパイルのjob、テストのjob、チェックスタイルのjob、findbugsのjobそれらを
Linuxのパイプラインでつなぐようにjenkinsを実行する
・(重要)1個目のチェックアウトでビルドしたリビジョンをその他のjobでも使用するようにする。
取ってきたリビジョンをアーカイブする。Clone Workspace SCM Plugin

Promoted Builds Plugin
・buildのチェックを可視化する。各ビルドを総合して成功している場合はスターを付ける。
(ビルド、テストに依存関係をもたせられるってことかな?! 依存する全てが成功していたらジョブの成功(チェックOK)とする)

【感想】
Jenkinsは個人的にまだ使っているわけではないけど、今のプロジェクトで一部使用しているので、いろんなプラグインがあってとても参考になったー!導入できるものとかを精査してちゃんと使っていこう。


なぜ私はソニックガーデンのプログラマに転身できたのか?

@JunichiIto77 さん
プログラマーを一生の仕事にしたかった。

【それまでにやっていたこと】
ブログを書いていた
継続的に勉強していた
特定の技術に偏らないようにしていた
どの職場でもそれなりに認められていた
美しいコードが一番と考えていた

【ソニックガーデン採用方針】
半年くらいかける・コードを見る・一緒に働く

【選考期間中にやったことを振り返る】
素早く行動に移した
毎週必ず進捗報告した(出来たという報告だけでなく、全てにおいて報告した)
「郷に入れば郷に従え」を意識した。(ソニックガーデンの流儀に合わせるように努力した)

【感想】
プログラマとしての考え方はとても近いものがあったなー
共感出来る所がとても多かった。そして、これまでに300冊以上の本を読んできたっていうのはすごい尊敬できるー


まとめ

最後のセッションは別の予定があって参加できなかったのですが、こういうアジャイル開発の大きなイベントは初めての参加だったので、とても刺激的だった。
もっと自分も本を読んだり、コード書いたりしていこうと思う。

もっと、もっと、!!!

3分間で学ぶプログラミングードットインストール


こんばんわ!

scalaとgroovyが気になりすぎてヤバイ今日この頃です。

さて、皆さんプログラミング学習をする時どうしていますか?!

これヤバイっす!!めっちゃいいと思います。

 

3分間動画でマスターする初心者向け学習サイトードットインストール

自分がプログラミング学習をする時って本を買ったり、よく知っている人に聞くなどネット環境で同行できるっていう環境がなかった。しかし、今は、このサイト「ドットインストール」のようにオンラインで学習できる教材出ていますね。ただでさえネットの検索精度も上がっていろんなことが調べられるのに、こんな無料のビデオコンテンツがあるなんてほんといいですね。

試しにvimの講習をやってみましたが全16回だったかな?

ひとつのコンテンツが2分から3分くらいで、全部やっても約1時間で完了します。オライリーなどの書籍の範囲をすべて抑えているわけではありませんが、さわりを学習する、とっかかりとなるビデオコンテンツになっていました。

これマジで最高ですよ!!

RubyやCoffeScriptなどもあり、興味のある人はどんどん見ているといいと思います。