のぶLab.

流しのソフトウェアエンジニアの雑記帳. Android, Scala, Clojure, Ruby on Railsなど

Template EngineをERBからSlimに移行する方法

ERBの記述が面倒なのでもっとシンプルなものはないかと探してみると、Slimが結構良さそう
特に"%"をたくさん打たずに済むのはうれしい

Gemfileの編集

Gemfileに以下を追加する

gem "slim-rails"
gem 'slim'

そして

$ bundle install

とりあえずこれでOK

erbファイルをslimにコンバート

既にerbで書いたものをslimにコンバートすることも可能
その場合はhtml2slimをインストール

$ gem install html2slim

以下のコマンドが使えるようになる
?

$ html2slim -h
$ erb2slim -h

ワンライナーでerbをslimに一括変更(参考はこちら)

$ for file in app/views/**/*.erb; do erb2slim $file ${file%erb}slim && rm $file; done

SublimeTextでslimのシンタックスハイライト

"Ruby Slim"を導入するとシンタックスハイライトが効くようになります
slim-template/ruby-slim.tmbundle · GitHub

Macでtreeコマンドを使えるようにする

Homebrewでさくっとインストールできるようです

$brew install tree

たとえばRailsアプリケーションをtreeで表示した場合

$rails new hanson
$tree hanson
hanson/
├── Gemfile
├── Gemfile.lock
├── README.rdoc
├── Rakefile
├── app
│   ├── assets
│   │   ├── images
│   │   ├── javascripts
│   │   │   └── application.js
│   │   └── stylesheets
│   │       └── application.css
│   ├── controllers
│   │   ├── application_controller.rb
│   │   └── concerns
│   ├── helpers
│   │   └── application_helper.rb
│   ├── mailers
│   ├── models
│   │   └── concerns
│   └── views
│       └── layouts
│           └── application.html.erb
├── bin
│   ├── bundle
│   ├── rails
│   ├── rake
│   └── spring
├── config
│   ├── application.rb
│   ├── boot.rb
│   ├── database.yml
│   ├── environment.rb
│   ├── environments
│   │   ├── development.rb
│   │   ├── production.rb
│   │   └── test.rb
│   ├── initializers
│   │   ├── assets.rb
│   │   ├── backtrace_silencers.rb
│   │   ├── cookies_serializer.rb
│   │   ├── filter_parameter_logging.rb
│   │   ├── inflections.rb
│   │   ├── mime_types.rb
│   │   ├── session_store.rb
│   │   └── wrap_parameters.rb
│   ├── locales
│   │   └── en.yml
│   ├── routes.rb
│   └── secrets.yml
├── config.ru
├── db
│   └── seeds.rb
├── lib
│   ├── assets
│   └── tasks
├── log
├── public
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── favicon.ico
│   └── robots.txt
├── test
│   ├── controllers
│   ├── fixtures
│   ├── helpers
│   ├── integration
│   ├── mailers
│   ├── models
│   └── test_helper.rb
├── tmp
│   └── cache
│       └── assets
└── vendor
    └── assets
        ├── javascripts
        └── stylesheets

エミュレータでAndroid Wearを動かしてみる

0. 準備

  1. Android StudioのVer0.8.0をインストール
  1. Android StudioをVer0.8.1にアップグレード
  1. SDKとかアップデート

1. プロジェクトの作成

  1. Android Studioを起動して"New Project"作成
  2. 好きなApplication Name を入力して"Next"
  3. "Minimum SDK"のバージョンを入力して"Next"
  4. Mobile向けのActivityを選択して"Next"
    • とりあえず "Blank Activity"
  5. Activityの名前を編集して"Next"
  6. Wear向けのActivityを選択して"Next"
    • "Blank Wear Activity"を選択
  7. Activityの名前を編集して"Finish"

2. エミュレータの設定

  1. ADB Managerを起動
  2. "Create"を押してエミュレータの設定
    • "Device"に"Android Wear Round"もしくは"Android Wear Square"
    • "Target"に"Android 4.4 - API Level 20"
    • "CPU/ABI"に"Android Wear ARM"
    • "Skin"に"Android Wear Round"もしくは"Android Wear Square"
    • "Emulation Options"の”Use Host GPU”にチェック

3. 起動

  1. Android Studio上部の"Select Run/Debug Configuration"(三角ボタンの左にあるもの)を"Wear"に設定
  2. "Run"

エミュレータが起動して "Hello XXXX World"と表示されればOK

YeomanでMEAN(MongoDB, Express, Angular.js, Node.js)アプリケーションを作る

こちらで紹介されている手順を参考に、
Yeomanを使ってMongoDB, Express, Angulaar.js, Node.jsで構成されたWebアプリケーションを立ち上げます。

前提

Yeomanはインストール済みの状態とします。
ちなみに私はBoxenを使ってインストールを行いました。
http://atsuya046.hatenablog.com/entry/2014/03/04/234757

MEANアプリケーション用genelatorのインストール

"generator-angular-fullstack"をインストールします。

npm install -g generator-angular-fullstack

MEANアプリケーション作成

mkdir mean_app
cd mean_app
yo angular-fullstack mean_app

インストールするものを聴かれます。
MongoDBがデフォルトでNなので注意して下さい。

起動

grunt serve

この時に以下のエラーが出る場合はMongoDBを起動していない可能性があります

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [localhost:27017]

MongoDBを起動し、再度アプリケーションを起動して下さい。

mongod
grunt serve

ブラウザでYeomanで作成したアプリケーションが表示されればOKです。
http://localhost:9000

Yeomanを使ってAngularJSアプリケーションの作成

最近Yeomanが私の周囲でアツいようなので、試してみました。

今回はBoxenで必要なものをインストールして
Angular.jsを使用したアプリケーションのひな形作成まで。

Boxenで必要なものをインストール

yo, grunt, bowerをインストールします。
manifest.ppに以下を追加して下さい。

nodejs::module { 'yo': node_version => 'v0.10.21' }
nodejs::module { 'grunt-cli': node_version => 'v0.10.21' }
nodejs::module { 'bower': node_version => 'v0.10.21' }

script/boxen でYeomanを使えるようになります。

generator-angularのインストール

Yeomanで簡単にAngular.jsを導入したアプリケーションのひな形を作成することができます。
npmを使ってインストールして下さい。

npm install -g generator-angular

アプリケーションの作成

以下のようにしてアプリケーションを作成することができます。

mkdir angular_sample
cd angular_sample
yo angular

Yeaomanが実行されます。
モジュールのインストールなどいろいろ聴かれるので、適当に答えて下さい。

Gruntでアプリケーションを実行

以下のコマンドでアプリケーションを実行することができます。

grunt server

以下にアクセスして起動確認
http://127.0.0.1:9000/

GOFデザインパターンをPythonで - State

こちらの写経です。

State

状態をクラスで表現するパターン。
状態によって振る舞いが変更される場合に効果的。

GOFデザインパターンをPythonで - Iterator

こちらの写経です。

Iterator

要素の集まりをもつオブジェクトの各要素にアクセスする方法を提供する。
各要素へのアクセス方法はオブジェクトの内部仕様に依存しない。

GOFデザインパターンをPythonで - Observer

こちらの写経です。

Observer

あるオブジェクトが状態変化したとき、自動的に変更を観察者に通知する仕組みです。
ここではDataクラスのセッターでnotify()メソッドを呼び出すことで、状態変化時に通知を行います。

GOFデザインパターンをPythonで - Factory Method

こちらの写経です。

Factory Method

インスタンスの生成を直接行わず、それを担うメソッドに任せる。
これによって生成するインスタンスを柔軟に変更することができる。

GOFデザインパターンをPythonで - Singleton

今回はこちらを参考にしました

Singleton

唯一のインスタンスであることが保証されたクラス。
グローバル変数問題やテスト難化などがのため使用には要注意。