2013年3月26日火曜日

Grunt.jsでファイルを更新したらCoffeeScriptを自動compiileする

下の作業メモとは違うけどgrunt.jsのsample projectはこちら

https://github.com/float1251/grunt-sample-project


とりあえず作業ログを残します。
作業ログはcoffeescriptですが、githubはtypescriptでもやってます。
業務ではプラスしてjsとcssのminimifyとかもやるようにしました。

Grunt.jsでcoffeescriptをcompileする

# grunt-cliをinstall
npm install -g grunt-cli

# sample-projectを作成する
mkdir ~/sample-grunt

# 作成したdirectoryに移動する
cd ~/sample-grunt

# package.jsonを作成する
# あとで編集できるので全部変更しないでOK
npm init

#以下のコマンドを実行する
#--save-devとつけることでpackage.jsonにdevdepencyが追加される。
#そのため次からはnpm installコマンドで環境が設定できる。
npm install grunt --save-dev
npm install grunt-contrib-coffee --save-dev
# Gruntfile.jsを作成する
# URLからサンプルを持ってきて作成する.
# http://gruntjs.com/sample-gruntfile
# 今回はcoffeescriptで作成したが,jsのほうがいいかもしれない。
# json形式でのerror回避がcoffeescriptだと若干めんどくさい
module.exports = (grunt)->
    grunt.initConfig {
        pkg: grunt.file.readJSON("package.json"),
            coffee:{
                glob_to_multiple:{
                    expand:true,
                    cwd:"./coffee",
                    src:["*.coffee"],
                    dest:"js/",
                    ext:".js"
                }
             }
          }
    grunt.loadNpmTasks "grunt-contrib-coffee"
    grunt.registerTask("default",["coffee"])

# testのためcoffee
mkdir coffee
echo console.log\("Hello Grunt"\); > coffee/test.coffee

# coffee以下にファイルができていることを確認
ls coffee/
>test.coffee

# 以下を実行してErrorがなければOk
grunt

ファイルが更新されたらcoffeescriptをcompiliする

# grunt-contrib-watchを試す
npm install grunt-contrib-watch --save-dev

# Gruntfileに以下を追加する
grunt.loadNpmTasks "grunt-contrib-watch" 
watch:{
files:["coffee/*.cofffee"],
tasks:["coffee"]
}

# 以下を実行して watchされていることを確認
grunt

# coffee以下のファイルを修正して、jsファイルが出力されていることを確認する
※base_pathやcwdにはsrcに記載しているファイル名までのPathを記述する。
これを記述しないと
src:"src/*.coffee"
dest:"js/"
のときに
js/src/*.js
という形式になってしまう。

2013年3月6日水曜日

enchant.jsでまたも適当につくってみました

というわけでまたパズルゲームです。
今度はキーボードを押したらブロックが伸びていくタイプのものです。

前回の反省を生かして、
QUnitを導入し、単体テストを実施しました。
また前回はバージョン管理してなかったのでgitでバージョン管理を行いました。
commitのタイミングはチケットの作業が終わるくらいで一回行うように心がけました。

■反省点
・チケットの作業が終わってもcommitし忘れることがあった。
本当はredmineとgitを連携させたいんだが、ちょっと面倒。。。
・単体テストの粒度が甘く、本格的に結合していくときにバグが発生することがあった。
 もうちょっとテストの粒度を細かする。というかしっかりと境界値やテストに漏れがないか確認する。
・前回に比べればだいぶ綺麗だが、DRYっぽくなってない部分があったり、
一部メソッドの行数が長かったりするのは不満。どっかのタイミングでこれでもやろうかな
・何かJavascrioptというかcoffeescriptっぽく書けてないような気がする。
どっかのOSSとかを読んで見たほうがよいと思った(小並感)

次あたりからUnityで何かつくろうか、それともまたenchant.jsで何かつくるか、
はたまたAndEngineで何かつくるかは考え中。。。


○2013/03/07 追記
・作業時間は5時間弱でした。業後に2日かけて作りました。
これの半分くらいの時間で作れるようになりたいかな。

・ドキュメント残すようにする。
引数が何の型を想定して作っているのかよくわからなくなるので。
調べたらYUIDocというのがあるらしいので次はこれを導入してみる。

2013年3月5日火曜日

ライフゲームをさくっとつくった

ライフゲームなんてあるんですね。知らなかったです。

基本ルール
誕生
死んでいるセルに隣接する生きたセルがちょうど3つあれば、次の世代が誕生する。
生存
生きているセルに隣接する生きたセルが2つか3つならば、次の世代でも生存する。
過疎
生きているセルに隣接する生きたセルが1つ以下ならば、過疎により死滅する。
過密
生きているセルに隣接する生きたセルが4つ以上ならば、過密により死滅する。
(Wikipediaより引用)

参考URL
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3%83%A0
http://www.daily-labo.com/ygg18.html

ルールはすごい簡単なんでさくっと作ってみました。

すごい不思議な動きをするなぁと思いました(小並感)。

coffeescriptでテトリスつくってみた

バグがあるがそれなりに形になったので。

・CoffeeScriptというかJavaScriptでハマった。
・単体テストやらずに実装してたらバグが出た時にかなり困った。
・Cellとかもクラス化しとけばよかった。
  また作りが悪いのでリファクタしたくても単体テストがないのでやる気にならなかった。
・redmineでチケット切りながらやったけどMTVが保てるのでいいと思った(小並感)
・最後の最後にQUnitを導入。UnitTestがあるとやはり不具合修正のスピードは全然違う。
  QunitでCoffeeScriptでコンパイルしたjsを使用するには-bをつけてコンパイルする。
・ブロックの定義は4x4の配列よりもx,yを中心にどの位置に配置するかのほうがよかった。
  ex:(x,y)=(1,1)のT字ブロックの際はx=1,y=1 type=[[1,0],[0,1],[0,-1]]みたいに。

反省は次回に生かさないとね。
また気が向いたら作ってみますよ( ̄ー ̄)

2013年3月2日土曜日

適当につくっています



めっちゃ適当に作ってます。
enchant.jsは手軽につくれるので個人的に気に入ってます。
ただcoffeescriptというかjavascriptにイライラしてます。

とりあえず、最低限の機能すら実装できてないのでもっとちゃんと実装しないとなー

そしてUnityでのゲーム開発も進めないとだし。。。
時間が足りなすぎる^^;

herokuにredmineをdeployした


作業メモ。
一部漏れありますが、手順をそのまま残してます。
・最初最新版(2.2.3?)入れようとしたが、エラーが出たので速攻諦めて
記事通り2.2.2でやりなおした。

2.3でもいけたかもしれないが、どうだろう。
見やすく編集しなおそうかとおもたが面倒になったのでこのままでw

■Heroku上にRedMineをinstallする

環境
Mac moutain lion

参考URL
http://d.hatena.ne.jp/rochefort/20130107/p1
http://railsguides.net/2012/04/28/how-to-deploy-redmine-to-heroku/

・Heroku
herokuToolbelt for Mac OS
をDLしてインストールする

ターミナルを起動して
heroku login
Email:xxxxx
Password:xxxxx
を入力。
SSH Public Key は Yでおk

bundlerをinstall
sudo gem install bundler


git clone git://github.com/redmine/redmine.git
cd redmine
cp config/database.yml.example config/database.yml
>Could not find gem 'rails (= 3.2.12) ruby' in the gems available on this machine.
>Run `bundle install` to install missing gems.
と出たので
bundle install
を実行。

bundle install でerrorが出たので
errorに書かれていたとおり、
sudo gem install rmagick -v '2.13.2'
を実行。成功したら改めてbundle installを実行

->mkmf.logを見ると
Can't find magick-configと見えます。
http://d.hatena.ne.jp/ireiz/20110816/1313478957
http://stackoverflow.com/questions/164307/installing-rmagick-on-mac-os-x-with-macports

HomeBrewのインストール
http://mxcl.github.com/homebrew/
の下にあるコマンドをコピペして終了

brew doctor
>Your system is raring to brew.

brew install imagemagick
sudo gem install rmagick

でredmineのディレクトリに移動して改めて
bundle install

またError
wand/MagickWand.h......noとのこと
http://stackoverflow.com/questions/10063051/bundle-cant-install-rmagick-gem-on-mac-osx-10-7
をみて
mdfind MagicWand.h
でMagicWand.hのPathを確認
C_INCLUDE_PATH=/MagicWand.hのPath sudo gem install rmagick
でrmagic

http://www.pistolfly.jp/weblog/2011/03/centosimagemagick.html
http://www.pistolfly.jp/weblog/2010/07/sudopath.html

pkg-config command not found
brew install pkg-config

*正直色々やりすぎてどれが効果的だったかはよくわかりません。
とりあえず、pkg-configが入っていなかった。というのが一番と思われます。
これら以外にもbundle install しろやカスと怒られたので何度かbundle install してます。
これは明らかに私の手順が甘いからです。

-----
.gitignoreから下記を削除
Gemfile.lock
Gemfile.local
public/plugin_assets
config/initializers/session_store.rb
config/initializers/secret_token.rb
config/configuration.yml
config/email.yml

bundle install

rake generate_secret_token
なんかmysql2がたりんと言われましたがシカトしました(*ノω・*)テヘ

heroku create
git add -A
git commit -m "prepare for heroku"
git push heroku master
-----

結局できなかった。
herokuにdeployまでしたがapplictionErorrになって動かない。
redmineのバージョンを下げて実行する
2.2.2でやりましょう。

-----
■2.2.2で試している

brew install postgresql
bundle install
sudo gem install pg -v '0.14.1'
>can't find libpq
http://www.uponmyshoulder.com/blog/2011/cant-find-the-postgresql-client-library-libpq/
sudo su
env ARCHFLAGS="-arch x86_64" gem install pg

これでbundle install はOK

rake generate_secret_token

heroku create

git add -A
git commit -m "prepare for heroku"
git push heroku master
->SQLite3でエラーってる

GemFilesでSQLITE3の部分をコメントアウト
GemFiles.lockでも同様に行う
#コメントアウトしたらcommitするのを忘れずに

#configの修正
config/application.rbを修正
config.assets.initialize_on_precompile = false

config/environment.rbを修正
warningが出るので、exit 1をコメントアウト
heroku run:detached rake db:migrate
heroku run:detached rake redmine:load_default_data
heroku restart
heroku open

これでherokuにredmineがキタ━━━━(゚∀゚)━━━━!!