技術ブログ - 毎日が成長!

2011年10月 のアーカイブ

Backbone.js+CoffeeScriptを試してみる

2011年10月24日 by kawaguchi



こんにちわ、プログラマの川口です。今回はBackbone.jsをCoffeeScriptで記述し、Ruby on Railsと組み合わせて利用する簡単なパターンを試してみました。CoffeeScriptは非常に簡潔にJavaScriptを記述できる上に学習コストも低いのでおすすめです。最近はJavaScriptがプロジェクト全体のコードに占める割合が大きくなってきていますし、それに比例してやはりメンテナンス性や可読性が下がっていくこともあり事前に対応策が必須です。

Backbone.jsとは・・・とかは別にいいデスヨネ?dwangoさんのBackbone.js記事を見てください(完全にネタかぶりです、本当にありがとうございました)。

前準備

バージョンはこんな感じ。

  • Ruby on Rails 3.1.1.rc1
  • CoffeeScript version 1.1.2
  • Backbone.js 0.5.3
  • Underscore.js 1.2.0

セットアップまでを淡々と(´・ω・`) まずは今回利用するテーブルをサクッと作成します。 (今回は名前だけでおk)

次にRESTfulにusersテーブルにアクセスするためのController/Modelを作成します。

Controller
※Backbone.js側からアクセスされた際に結果を全てJSON形式で返すようにしています。

Model

表示画面作成

実際にブラウザからアクセスする画面も作っておきます。

ルーティング追加

Backbone.js組み込み

Backbone.jsと依存しているUnderscore.jsを組み込みます。下記の2つのページよりスクリプトをダウンロードして[app/assets/javascripts]へ保存します。

rails-3.1はデフォルトでSprocketsのrequireディレクティブによって自動的にJavaScriptファイルを読み込むように設定されいます。が、Backbone.jsはUnderscore.jsに依存しているのでSprocketsがファイル名順に読み込むとエラーとなるので少し修正が必要。

Backbone.js実装

実装は下記の通り。

この状態で[home/index]へアクセスしてusersテーブルに対して追加・削除を試してみてください。

ここまでを実装したコードをこちらにおいておきます。実際に動作させる場合はsqliteを利用しているので’bundle install’ / ‘migrate’後にサーバーを起動すれば無問題のはずですが自環境以外で試してないので動作の保証はできません。自己責任でどうぞ m9( ゚д゚)



今回は単純な構造で紹介しましたがこのようにバックエンドをRails・フロントエンドをjQuery+CoffeeScriptとすることで分業やテストもより簡単に書けそうですね。フレームワークを利用することによるメンテナンス性向上はもちろん上記のような設計によってRailsアプリがよりRESTfulな設計となり非常にスマートになる効果も期待できそうです。

 

ITpro EXPO 2011 出展レポート

2011年10月18日 by nagafuchi

こんにちは。展示会担当の永淵です。

2011年10月12日(水)から14日(金)まで3日間にわたって開催されましたITpro EXPO 2011 -クラウドコンピューティング2011-に出展しました。 今回は当社のクラウド導入事例をもとにサーバーワークスのクラウドサービスメニューをご紹介してまいりました。

当社代表の大石は3日間、Amazon Web Services ブース内ステージで「今すぐAmazonクラウドを行う3つの理由」と題し、プレゼンテーションを行いました。

得意の「切腹」ネタを披露したことが功を奏したのか、3日間を通して、ブース内でTOPの集客数を記録しました。

今回の展示会を通して、「クラウド」への関心が更に深まっていることを実感しました。お客様の疑問もこれまでの「クラウドって何?」という漠然とした疑問から「クラウドのセキュリティは大丈夫なの?」といった具体的な疑問に変わってきています。

電光石火のごとくサービスの形を変え進化していく「クラウド」のメリットを最大限お伝えしお客様に最適なサービスを提供していけるように精進していきたいと思います。

講演も含め、当社ブースにお立ち寄りいただいた皆様、本当にありがとうございました。

尚、当日の写真は当社の facebookページ でも公開しております。 ぜひご覧ください。

 

既存のMySQLサーバからRDSインスタンスへの移行をテストする

2011年10月17日 by yanase



こんにちはインフラエンジニアの柳瀬です。
今回の内容は少しエントリー向けの内容になるかと思いますが、既存環境のMySQLからRDSへ移行するテストについて記載したいと思います。
オンプレミスの環境でMySQLを使用されている方は多くいらっしゃるかと思いますが、そういった方がRDSへ移行される事を検討した際に何かしらの参考になりましたら幸いです。

今回はEC2上のCentOSにMySQLをインストールして10GBのテストデータを投入しました。
こちらのデータをRDSに移行したいと思います。
※RDSデータベースの作成方法はこちらのリンクをご覧頂けると分かりやすいと思います。

まず考える事がmysqldumpコマンドの–all-databasesオプションを使用して一気に移行する事ですね!
これを実施すると以下のようになります。

# mysqldump -u root -x --all-databases > dump.sql
# mysql -h swx-dbinstance.cuqlmsanjyh6.ap-northeast-1.rds.amazonaws.com -u swx -p < dump.sql 
Enter password: 
ERROR 1044 (42000) at line 22: Access denied for user 'swx'@'%' to database 'mysql'

RDS作成時に作成した管理ユーザがmysqlデータベースにアクセス出来ずにリストアに失敗します。
--all-databasesオプションを使用したdumpからのリストアはmysqlのシステム全体がリストアされるからです。
そのため、RDS移行時はこのようにDBを指定して個別にバックアップ&リストアする手順になりそうです。
この場合は移行前に作成したMySQLのユーザやパスワード情報は引き継がれませんので、ご注意ください。
また、リストア先のDBも事前に作成する必要があります。

# mysql swxdb -u swx -h swx-dbinstance.cuqlmsanjyh6.ap-northeast-1.rds.amazonaws.com -p
mysql> create database sample;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| innodb             | 
| mysql              | 
| sample             | 
| swxdb              | 
+--------------------+
5 rows in set (0.00 sec)

# mysqldump -u root sample > sample-dump.sql
# mysql -h swx-dbinstance.cuqlmsanjyh6.ap-northeast-1.rds.amazonaws.com -u swx -p sample < sample-dump.sql 

ちなみにDBのサイズが大きく、2段階に分けて移行を行いたい場合はバイナリログを使用した差分リストアが有効かもしれません。
こちらもリストア時にオプションにデータベースを指定する事でリストアが可能です。

# mysqlbinlog  -d sample /var/lib/mysql/mysql-bin.000021 > recover.sql
# mysql -h swx-dbinstance.cuqlmsanjyh6.ap-northeast-1.rds.amazonaws.com -u swx -p < recover.sql

大容量サイズのデータベースの場合は一度にリストアする事が難しいので、このような差分リストアも検討した方が良さそうです。