[Qiita] インスタンスメソッド内での @ と self の違い
上記記事に関連するソース
(paiza.IOを使っています。)
2014年12月19日金曜日
2014年3月13日木曜日
スクラム開発の特徴と、チームメンバーの役割
特徴
・実践するのは簡単です!でも、修得するのは難しいです!・スクラム開発はフレームワーク(枠組み)です
・複雑で変化の激しい問題に対応するためのものです
X 対応する手段
O 対応する手段をみんなで模索しながら、製品を作り上げる
スクラム開発に登場する役割
プロダクトオーナー(1人)
・「何を作るか」の責任者・技術的な知識は必ずしも必要ではありません
・作成する優先順位を決定します
・ちゃぶ台返しOK(優先順位の変更、仕様の追加、変更、破棄)
・製品が仕様どおりかどうかチェックします
・製品をリリースするかどうか判断します
開発チーム(3〜9人)
・協力して製品を作り上げます・見積もりは開発者が決定します
・作業分担は立候補制です
・一つの作業に複数人でとりかかってもよいです
・むしろどんどん協力しましょう。スクラムですから!
・専門外の仕事も積極的に手伝いましょう
スクラムマスター(1人)
・「どのように作るか」の責任者・「スクラム開発よくわかんない」ってときはこの人に聞きましょう
・チームにスクラムのルールを守ってもらうよう促します
・チームを守り、支えます
・技術的な知識は必要です
※リーダーやマネージャーはいません
※スクラム開発にじゅうぶん慣れたら、
スクラムマスターもいなくてOKです
2013年5月28日火曜日
Rails3.2 ActiveRecordに関するメモ
ActiveRecordのサブクラスであるModel(以下Model)の機能に関する覚書。
一意性制約を定める
Modelに次のように記述する
validates_uniqueness_of :column_name
Migrationに次のように記述し、実行する
add_index :table_name, :column_name, :unique => true
validate?の挙動
前提条件:ModelAとModelBの間にリレーションが定められている
ModelA.valid?の戻り値がfalseの場合、
ModelB.valid?の戻り値もfalseとなる。
つまり、リレーションが定められているModelをsaveするときには、
すべてのModelでバリデーションが実行される。
saveで保存されるオブジェクト
前提条件:ModelAとModelBに多対多のリレーションが定められている
ModelA.saveを呼び出すと、下記のModelが保存される
(関連テーブルのインスタンスは自動的に生成される)
つまり、下記のようなコードで事足りる。
modelA = ModelA.new(hoge: 'hoge') #モデルAをインスタンス化
modelB = ModelB.new(foo: 'foo') #モデルBをインスタンス化
modelA.modelBs << modelB #モデルAとモデルBを関連付ける
modelA.save #関連テーブルのModelが自動生成され、すべてのModelが保存される
一意性制約を定める
Modelに次のように記述する
validates_uniqueness_of :column_name
Migrationに次のように記述し、実行する
add_index :table_name, :column_name, :unique => true
validate?の挙動
前提条件:ModelAとModelBの間にリレーションが定められている
ModelA.valid?の戻り値がfalseの場合、
ModelB.valid?の戻り値もfalseとなる。
つまり、リレーションが定められているModelをsaveするときには、
すべてのModelでバリデーションが実行される。
saveで保存されるオブジェクト
前提条件:ModelAとModelBに多対多のリレーションが定められている
ModelA.saveを呼び出すと、下記のModelが保存される
- ModelA
- ModelB
- ModelAとModelBの関連テーブルのModel
(関連テーブルのインスタンスは自動的に生成される)
つまり、下記のようなコードで事足りる。
modelA = ModelA.new(hoge: 'hoge') #モデルAをインスタンス化
modelB = ModelB.new(foo: 'foo') #モデルBをインスタンス化
modelA.modelBs << modelB #モデルAとモデルBを関連付ける
modelA.save #関連テーブルのModelが自動生成され、すべてのModelが保存される
2013年2月25日月曜日
2013年1月30日水曜日
coffeescript+jQueryでDOM操作
やりたいこと
coffeescriptで生成したjavascriptでDOM操作をしたい今回学んだこと
coffeescriptの1行目に$ ->
と記述することで、それ以下の命令がdocument読み込み完了時に実行される。
jQueryの下記の記述と同等。
$(function() {
//何らかの処理
});
ディレクトリ構造
shusuke@shusuke-VirtualBox:~/practice/coffee$ pwd/home/shusuke/practice/coffee
shusuke@shusuke-VirtualBox:~/practice/coffee$ tree
.
├── bin
│ └── hello.js <-coffeescriptをコンパイルしてできたJSファイル
├── lib
│ └── jquery-1.9.0.min.js
├── src
│ └── hello.coffee <-coffeescriptのソースファイル
└── view.html <-練習用のHTML
view.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="./lib/jquery-1.9.0.min.js"></script>
<!-- javascriptを読み込む -->
<script type="text/javascript" src="./bin/hello.js"></script>
</head>
<body>
<div id="apple">りんご</div>
<div id="banana">バナナ</div>
<div id="hoge">HOGE</div>
</body>
</html>
src/hello.coffee
$ ->console.log "LOG TEST"
hoge = $('#hoge')
msg = if hoge is null then "hoge is null" else "hoge is not null"
console.log msg
console.log hoge.html()
bin/hello.js
// Generated by CoffeeScript 1.4.0(function() {
$(function() {
var hoge, msg;
console.log("LOG TEST");
hoge = $('#hoge');
msg = hoge === null ? "hoge is null" : "hoge is not null";
console.log(msg);
return console.log(hoge.html());
});
}).call(this);
実行結果(HTML表示時のjavascriptコンソール)
[23:24:31.514] LOG TEST[23:24:31.514] hoge is not null
[23:24:31.515] HOGE
2012年3月5日月曜日
在庫数量の決め方(1)
必要以上に在庫を抱えないためには、必要以上に商品を仕入れないようにすればよい。では、仕入れる量はどのようにして決めればよいだろうか。
例えば、現在の在庫が最大である60個だとしよう。発注から入荷までに必ず2日かかり、1日に必ず20個の商品を売り上げている場合、発注数量はいくつにすればよいだろうか。
今日発注すると2日後に入荷する。売上ペースから計算すると、入荷時の在庫数量は20/60個となり、40個を補充することができる。よって、40個発注すれば、品切れを起こさず、かつ倉庫内に収めることができる。
では、在庫量をより少なくすることはできないだろうか。これを考えるには、発注から入荷までの時間と、売上ペースに注目するとよい。最大在庫数量を40個に設定すれば、2日に1度、商品を40個発注することで在庫を維持できる。
まだ改善の余地はある。発注から入庫までには2日かかるという制約はあるが、2日に1度しか発注できないという制約はない。つまり、毎日20個発注すると決めれば、最大在庫数量を20個まで減らすことができる。
これが、在庫管理の根本となる考え方だ。実際には、様々なことを考慮して、最大在庫数量や発注数量などを決定することになる。ここでは、説明を簡単にするために極端な例を示した。
例えば、現在の在庫が最大である60個だとしよう。発注から入荷までに必ず2日かかり、1日に必ず20個の商品を売り上げている場合、発注数量はいくつにすればよいだろうか。
| 在庫数量(個) | 60/60 |
| 発注から入荷まで | 2日 |
| 売上ペース | 20個/日 |
では、在庫量をより少なくすることはできないだろうか。これを考えるには、発注から入荷までの時間と、売上ペースに注目するとよい。最大在庫数量を40個に設定すれば、2日に1度、商品を40個発注することで在庫を維持できる。
まだ改善の余地はある。発注から入庫までには2日かかるという制約はあるが、2日に1度しか発注できないという制約はない。つまり、毎日20個発注すると決めれば、最大在庫数量を20個まで減らすことができる。
これが、在庫管理の根本となる考え方だ。実際には、様々なことを考慮して、最大在庫数量や発注数量などを決定することになる。ここでは、説明を簡単にするために極端な例を示した。
2012年3月2日金曜日
在庫を抱えすぎることによる弊害
在庫を抱えすぎると、店の経営に様々な問題が発生する。
第一に、在庫スペースの維持に費用がかかることだ。倉庫が大きければ大きいほど、地代や固定資産税がかさみ、経営を圧迫する。
第二に、需要の変化に対応するのが難しくなる。古い製品が在庫スペースを占領していると、新商品を仕入れることができなくなる。結果として、新商品を販売する機会を逃してしまう。
第三に、現金や預金が少なくなることで、資金繰りを悪化させる。仕入れに大量の資金を費やしたばかりに、取引先への支払いや借金の返済が遅れてしまうことがあり、黒字倒産になりかねない。
これらを踏まえて、適切な量の商品を仕入れることが在庫管理の基礎といえる。では、具体的にはどのように仕入れたらよいのだろうか。それについては次回。
2012年2月29日水曜日
在庫を抱える目的
在庫はなぜ抱える必要があるのだろうか。また、なぜ在庫を減らすことが良いと言われているのだろうか。
まずは、在庫を抱える必要性について、田中屋という八百屋を例に考えてみよう。
田中屋では、毎朝トマトを仕入れて、陳列棚に並べて販売している。陳列棚には100個のトマトを並べることが出来る。トマトは1日あたり約90個売れており、売れ残った分は毎日破棄していた。
ある日を境に、トマトの売れ行きが伸び始め、昼頃には全て売れてしまうようになった。夕方になってもトマトを求めて客がやってくるが、品切れのために売ることが出来ない。より多く仕入れれば品切れにならないのだが、陳列棚には100個までしか並べることができない。
そこで、店主はトマトを200個保管できる倉庫を用意した。倉庫の維持には費用がかかる。しかし、1日あたりトマトを300個売ることができるようになった。在庫を用意することで、品切れに対処したのだ。
このように、在庫を用意する目的は「販売機会の損失」を防ぐことにある。適切な料の在庫を持つことで、需要に対応して売上を伸ばすことができる。
では、在庫を大量に確保すればいいのかというと、そんなことはない。それについては次の記事で書こうと思う。
2012年2月27日月曜日
在庫管理を学ぼうと思った理由
僕がどんな人間か知っている人には「何を無茶なことを考えているんだ」と思われるかもしれないが、ゆくゆくは、自分でソフトハウスを立ち上げたいと考えてる。
そのために今できることの一つは、業務知識を学ぶこと。日商簿記3級を取得したのも、その一環。
簿記の勉強をしてみて感じたことがある。それは、会計に関する知識だけでは、他社のソフトウェアに対抗できるようなものを作れないということ。
会計処理の多くの部分は、会計法や簿記のルールに基づいて行われている。どの会社も似たような処理を行なっているので、IT化にあたってはパッケージソフトの導入がベターなんだ。となると、会計ソフトの開発で「他社との差別化」をするのはかなり難しいと思うんだよね。
会計知識と組み合わせることで、システム開発に役立つ知識は何だろうか。そう考えた時に頭に浮かんだのが「在庫管理」だった。
在庫管理に関しては法が整備されているわけではないので、会社ごとに独自のプロセスがあると考えられる。つまり、パッケージソフトでは手の届かないようなところを解決できるようなシステムを提案するチャンスがあると思うんだ。
さらに、在庫管理と会計処理を一括して行うことができるシステムを構築できれば、顧客の事務処理にかける時間をかなり削減できる。在庫情報をモバイル端末でリアルタイムに参照できるようにすれば、顧客の営業活動にも良い影響を与えられる。取引先の企業にもシステムを導入できれば、EDIの実現により、顧客の受発注処理をより効率化できる。
在庫管理に関する知識の他にも、学ぶべきことはたくさんある。まずは、今の自分にできるところから手をつけて、一歩ずつ着実に目標に向かって進んでいこう。
そのために今できることの一つは、業務知識を学ぶこと。日商簿記3級を取得したのも、その一環。
簿記の勉強をしてみて感じたことがある。それは、会計に関する知識だけでは、他社のソフトウェアに対抗できるようなものを作れないということ。
会計処理の多くの部分は、会計法や簿記のルールに基づいて行われている。どの会社も似たような処理を行なっているので、IT化にあたってはパッケージソフトの導入がベターなんだ。となると、会計ソフトの開発で「他社との差別化」をするのはかなり難しいと思うんだよね。
会計知識と組み合わせることで、システム開発に役立つ知識は何だろうか。そう考えた時に頭に浮かんだのが「在庫管理」だった。
在庫管理に関しては法が整備されているわけではないので、会社ごとに独自のプロセスがあると考えられる。つまり、パッケージソフトでは手の届かないようなところを解決できるようなシステムを提案するチャンスがあると思うんだ。
さらに、在庫管理と会計処理を一括して行うことができるシステムを構築できれば、顧客の事務処理にかける時間をかなり削減できる。在庫情報をモバイル端末でリアルタイムに参照できるようにすれば、顧客の営業活動にも良い影響を与えられる。取引先の企業にもシステムを導入できれば、EDIの実現により、顧客の受発注処理をより効率化できる。
在庫管理に関する知識の他にも、学ぶべきことはたくさんある。まずは、今の自分にできるところから手をつけて、一歩ずつ着実に目標に向かって進んでいこう。
2012年2月3日金曜日
Rails3.0にCapybaraとlaunchyを追加
Gemfileに下記の2行を追加。
gem 'capybara'
gem 'launchy'
bundle installを実行。下記のようなエラーがでる。
bundle install
-- 省略 --
Installing nokogiri (1.5.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... no
-----
libxslt is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-iconv-dir
--without-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-dir}/lib
--with-xml2-dir
--without-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.0/ext/nokogiri/gem_make.out
An error occured while installing nokogiri (1.5.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.0'` succeeds before bundling.
調べた結果、libxslt-develが必要らしいので、インストール。
yum install libxslt-devel
再度bundle installを実行。
bundle install
今度はうまくいった。
gem 'capybara'
gem 'launchy'
bundle installを実行。下記のようなエラーがでる。
bundle install
-- 省略 --
Installing nokogiri (1.5.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... no
-----
libxslt is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--with-iconv-dir
--without-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-dir}/lib
--with-xml2-dir
--without-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.5.0/ext/nokogiri/gem_make.out
An error occured while installing nokogiri (1.5.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.0'` succeeds before bundling.
調べた結果、libxslt-develが必要らしいので、インストール。
yum install libxslt-devel
再度bundle installを実行。
bundle install
今度はうまくいった。
2012年2月2日木曜日
一歩前へ!
社長(友人)「今度、とあるシステムをリプレースするから、設計をしてくれないかな」
僕「( ゜д゜)」
設計か・・・うむ、やってみる。やってやる。やってやるぞー!
現在は、既存システムのマニュアルや、社長の話を聞きつつ、データ構造やUIを設計している段階。ある程度まとまったら、一度クライアントと直に会って、詳細を詰めていく予定。
僕「開発方式はどうする?」
社長(友人)「まかせるよ」
僕「( ^ω^)」
システムの規模とウォーターフォールへの不信感から、反復式で設計をまとめた後に、反復式で製造することにした。製造はBDDで行おうと思ったんだけど、NetBeans+PHP+BDDという環境を整えるのに手間取りそう。普段使っているPHPUnitを利用して、TDDで開発する。TDDに関しては、業界で賛否両論あるのだが、やってみないことには何も実感できないよね。
製造が終わったら、操作説明書や運用手順書も作らないとな。
さあさあ、脱プログラマへの第一歩なのよ!(`・ω・´)シャキーン
僕「( ゜д゜)」
設計か・・・うむ、やってみる。やってやる。やってやるぞー!
現在は、既存システムのマニュアルや、社長の話を聞きつつ、データ構造やUIを設計している段階。ある程度まとまったら、一度クライアントと直に会って、詳細を詰めていく予定。
僕「開発方式はどうする?」
社長(友人)「まかせるよ」
僕「( ^ω^)」
システムの規模とウォーターフォールへの不信感から、反復式で設計をまとめた後に、反復式で製造することにした。製造はBDDで行おうと思ったんだけど、NetBeans+PHP+BDDという環境を整えるのに手間取りそう。普段使っているPHPUnitを利用して、TDDで開発する。TDDに関しては、業界で賛否両論あるのだが、やってみないことには何も実感できないよね。
製造が終わったら、操作説明書や運用手順書も作らないとな。
さあさあ、脱プログラマへの第一歩なのよ!(`・ω・´)シャキーン
2012年2月1日水曜日
Rails3でデータベースの日付を日本時間にする方法
Rails3では、データベースに日付を格納するときにUTCとするため、
日本時間のみを扱いたい場合はちょっと不便。
下記の方法で解決できる。
(参考URL: http://blog.libero-tecnologia.net/?p=40)
config/application.rbに下記2行を追加
config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
日本時間のみを扱いたい場合はちょっと不便。
下記の方法で解決できる。
(参考URL: http://blog.libero-tecnologia.net/?p=40)
config/application.rbに下記2行を追加
config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
2012年1月8日日曜日
Rails3.0 bundle install時のsqliteエラー解決方法
bundle install時に、次のようなエラーが出る場合がある。
An error occured while installing sqlite3 (1.3.5), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
適切なバージョンのsqliteをインストールしていないために、このエラーが起きるようだ。
yumでsqliteをインストールしてみたが、インストールされるバージョン(3.3)が古いために解決できなかった。
sqlite3.5以上のソースをダウンロードしてインストールしてみた。
**** RPM package creation selected ***
**************************************
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite-autoconf ]
3 - Version: [ 3070900 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: 2 #Nameを指定する
Enter new name:
>> sqlite
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite ]
3 - Version: [ 3070900 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: 3 #Versionを指定する
Enter new version:
>> 3.7.9
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite ]
3 - Version: [ 3.7.9 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: #Enterを押下
rpm -ivh /usr/src/redhat/RPMS/i386/sqlite-3.7.9-1.i386.rpm
sqliteがインストールされたことを確認する。
sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .q
Railsのbundle installを実行してみる。
bundle install
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
なんとかうまくいった。ほっと一息。
An error occured while installing sqlite3 (1.3.5), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
適切なバージョンのsqliteをインストールしていないために、このエラーが起きるようだ。
yumでsqliteをインストールしてみたが、インストールされるバージョン(3.3)が古いために解決できなかった。
yum install sqlite-devel #これではダメ!
sqlite3.5以上のソースをダウンロードしてインストールしてみた。
wget http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz
tar zxvf sqlite-autoconf-3070900.tar.gz
cd sqlite-autoconf-3070900
./configure
tar zxvf sqlite-autoconf-3070900.tar.gz
cd sqlite-autoconf-3070900
./configure
make
checkinstall -R --fstrans=no --exclude=/selinux
****************************************** RPM package creation selected ***
**************************************
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite-autoconf ]
3 - Version: [ 3070900 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: 2 #Nameを指定する
Enter new name:
>> sqlite
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite ]
3 - Version: [ 3070900 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: 3 #Versionを指定する
Enter new version:
>> 3.7.9
This package will be built according to these values:
1 - Summary: [ Package created with checkinstall 1.6.0 ]
2 - Name: [ sqlite ]
3 - Version: [ 3.7.9 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ Applications/System ]
7 - Architecture: [ i386 ]
8 - Source location: [ sqlite-autoconf-3070900 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
11 - Provides: [ sqlite-autoconf ]
Enter a number to change any of them or press ENTER to continue: #Enterを押下
rpm -ivh /usr/src/redhat/RPMS/i386/sqlite-3.7.9-1.i386.rpm
sqliteがインストールされたことを確認する。
sqlite3
SQLite version 3.7.9 2011-11-01 00:52:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .q
Railsのbundle installを実行してみる。
mkdir work_rails_check
cd work_rails_check/
rails new checkapp
cd checkapp/bundle install
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
なんとかうまくいった。ほっと一息。
2012年1月7日土曜日
CentOSにRails3.0を導入(CheckInstall使用)
今回、Rails3の導入にCheckInstallというツールを利用する。
CheckInstallの導入方法
以下Railsインストール手順
あらかじめgccをインストール
yum install gcc
あらかじめrpm-buildをインストール
yum install rpm-build
あらかじめzlib-develをインストール
yum install zlib-devel
あらかじめ必要なパッケージをインストール
yum install gcc gcc-c++ make perl zlib-devel openssl-devel readline-devel libxml2-devel bzip2-devel unzip libjpeg-devel libpng-devel freetype-devel rpm-build -y
Rubyソースコードをダウンロード(ruby-1.9.3-p0だと、Gemがうまく動作しない)
アーカイブを展開
コンパイルしてCheckInstallでRPMパッケージ化
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
Gemのバージョン確認。
gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
Railsインストール。(バージョン3.1.2だと、Railsバージョン確認でエラーが出る)
gem install rails -v 3.0
Railsバージョン確認
rails -v
Rails 3.0.0
以上でRailsのインストールが完了する。
できればRails3.1を使いたかったのだが、今回は妥協した。
CheckInstallの導入方法
以下Railsインストール手順
あらかじめ必要なパッケージをインストール
yum install gcc gcc-c++ make perl zlib-devel openssl-devel readline-devel libxml2-devel bzip2-devel unzip libjpeg-devel libpng-devel freetype-devel rpm-build -y
Rubyソースコードをダウンロード(ruby-1.9.3-p0だと、Gemがうまく動作しない)
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2
アーカイブを展開
tar xjf ruby-1.9.2-p290.tar.bz2
コンパイルしてCheckInstallでRPMパッケージ化
cd ruby-1.9.2-p290
./configure
make
make
checkinstall -R --fstrans=no
・・・途中でいろいろ聞かれるが、EnterキーでOK
RPMパッケージからrubyをインストール
cd /usr/src/redhat/RPMS/i386/
rpm ivh ruby-1.9.2-p290-1.i386.rpm
Rubyのバージョンを確認。rpm ivh ruby-1.9.2-p290-1.i386.rpm
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
Gemのバージョン確認。
gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
Railsインストール。(バージョン3.1.2だと、Railsバージョン確認でエラーが出る)
gem install rails -v 3.0
Railsバージョン確認
rails -v
Rails 3.0.0
以上でRailsのインストールが完了する。
できればRails3.1を使いたかったのだが、今回は妥協した。
(未完成記事)CentOSにRails3を導入(CheckInstall使用)
こちらの新しい記事を参照してください。
以下の記事は古いものです。
今回、Rails3の導入にCheckInstallというツールを利用する。
CheckInstallの導入方法
以下Railsインストール手順
あらかじめgccをインストール
yum install gcc
あらかじめrpm-buildをインストール
あらかじめzlib-develをインストール
yum install zlib-devel
Rubyソースコードをダウンロード
アーカイブを展開
コンパイルしてCheckInstallでRPMパッケージ化
ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]
ここまではうまくいったものの、Gemが使用できない。
どなたか解決できるかた、お願いできませんか(・w・;
gem env
<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:1:in `<compiled>'
以下の記事は古いものです。
今回、Rails3の導入にCheckInstallというツールを利用する。
CheckInstallの導入方法
以下Railsインストール手順
あらかじめgccをインストール
yum install gcc
あらかじめrpm-buildをインストール
yum install rpm-build
あらかじめzlib-develをインストール
yum install zlib-devel
Rubyソースコードをダウンロード
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.bz2
アーカイブを展開
tar xjf ruby-1.9.3-p0.tar.bz2
コンパイルしてCheckInstallでRPMパッケージ化
cd ruby-1.9.3-p0
./configure
make
make
checkinstall -R --fstrans=no
・・・途中でいろいろ聞かれるが、EnterキーでOK
RPMパッケージからrubyをインストール
cd /usr/src/redhat/RPMS/i386/
rpm -ivh ruby-1.9.3-p0-1.i386.rpm
Rubyのバージョンを確認。rpm -ivh ruby-1.9.3-p0-1.i386.rpm
ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]
ここまではうまくいったものの、Gemが使用できない。
どなたか解決できるかた、お願いできませんか(・w・;
gem env
<internal:gem_prelude>:1:in `require': cannot load such file -- rubygems.rb (LoadError)
from <internal:gem_prelude>:1:in `<compiled>'
CentOSにCheckInstallを導入する
CheckInstallとは?
ソフトウェアのソースコードからRPMパッケージを簡単に作成できるツール。
ソースコードをコンパイルしてインストールした場合、そのソフトウェアのアンインストールなどの管理がしづらくなる。RPMを利用してインストールすれば、管理が容易になる。
導入手順
参考URL http://mymo.blog8.fc2.com/blog-entry-2.html
RPMforgeレポジトリを設定
wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
デフォルトで無効になるように設定ファイルを次のように修正
vi /etc/yum.repos.d/rpmforge.repo
enabled = 0
RPMの署名を検証するキーを導入
RPMforgeのリポジトリを有効化
yum --enablerepo=rpmforge list
checkinstallのインストール
yum --enablerepo=rpmforge install checkinstall
ソフトウェアのソースコードからRPMパッケージを簡単に作成できるツール。
ソースコードをコンパイルしてインストールした場合、そのソフトウェアのアンインストールなどの管理がしづらくなる。RPMを利用してインストールすれば、管理が容易になる。
導入手順
参考URL http://mymo.blog8.fc2.com/blog-entry-2.html
RPMforgeレポジトリを設定
wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
デフォルトで無効になるように設定ファイルを次のように修正
vi /etc/yum.repos.d/rpmforge.repo
enabled = 1
↓enabled = 0
RPMの署名を検証するキーを導入
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
rpm --import RPM-GPG-KEY.dag.txtRPMforgeのリポジトリを有効化
yum --enablerepo=rpmforge list
checkinstallのインストール
yum --enablerepo=rpmforge install checkinstall
2011年11月26日土曜日
PHPUnitをNetBeansで使うときに「'".\php.exe"' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というエラーの解決方法
PHPUnitをNetBeansで使いたいんだけど、「'".\php.exe"' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」って怒られる・・・(´・ω・`)
調査した結果、
C:\xampp\php\phpunit.batの中にヒントが隠されていた。
(phpunit.bat 一部抜粋)
if "%PHPBIN%" == "" set PHPBIN=.\php.exe
つまり、システム環境変数に、下記のようなものを追加してやればいい。
調査した結果、
C:\xampp\php\phpunit.batの中にヒントが隠されていた。
(phpunit.bat 一部抜粋)
if "%PHPBIN%" == "" set PHPBIN=.\php.exe
つまり、システム環境変数に、下記のようなものを追加してやればいい。
結果、問題なくPHPUnitが動作するようになった。
めでたしめでたし。
2011年11月10日木曜日
変数名に漢字やかなを使っても良いものか?
最近のプログラミング言語では、シンボルとして日本語を認識できるものがいくつかあるらしい。僕はそういうものはScalaしか知らないけどね。Rubyもできるんだったかな・・・記憶があいまいだ。
事務系のプログラムを作るときに、変数名やメソッド名に日本語を使いたい時があるんだ。「貸倒引当金」とか「利益余剰金」とか、英語に翻訳するのがすごくめんどうなのよね。そのままローマ字表記で「kashidaore_hikiate_kin」とかにしてもいいんだろうけど、どこにアンダーバーをいれればいいのか迷う。例えば、引当金だったら「hikiate_kin」にするのか「hikiatekin」にするのか、悩んじゃう。
プログラミングの原則的には「シンボルは英語で定義する」なんだけど、それを守ろうとするあまりに作業効率が極端に低下するのであれば、例外を認めてもいいんじゃないかな。社内でしか使わなかったり、特定の業種に特化したりするシステムを作る上であれば、なおさらね。
事務系のプログラムを作るときに、変数名やメソッド名に日本語を使いたい時があるんだ。「貸倒引当金」とか「利益余剰金」とか、英語に翻訳するのがすごくめんどうなのよね。そのままローマ字表記で「kashidaore_hikiate_kin」とかにしてもいいんだろうけど、どこにアンダーバーをいれればいいのか迷う。例えば、引当金だったら「hikiate_kin」にするのか「hikiatekin」にするのか、悩んじゃう。
プログラミングの原則的には「シンボルは英語で定義する」なんだけど、それを守ろうとするあまりに作業効率が極端に低下するのであれば、例外を認めてもいいんじゃないかな。社内でしか使わなかったり、特定の業種に特化したりするシステムを作る上であれば、なおさらね。
2011年10月21日金曜日
一緒に遊べるアクションゲーム。
「星のカービィWii」発売まで、いよいよ一週間をきったよ。買おうかどうか迷っていたけれど、思い切って予約した。おそらくkonozamaだろうけどね。
据え置きゲーム機は、2000年に発売した「星のカービィ64」以来だから11年ぶり。でも、多人数同時プレイができる据え置きカービィは、1996年の「星のカービィスーパーデラックス」が最後だから・・・15年ぶりってことか。「毛糸のカービィ」は例外扱いさせてね。あれはもともと「毛糸のフラッフ」として開発されていたものが、途中でキャラクターとしてカービィを起用したものなんだよ。
僕が知っている協力プレイ可能アクションゲームは、
特に思い出深いのは「がんばれゴエモン2」。よく友だちと一緒に遊んでいて、最初のステージで白い招き猫を集めるのが恒例だったよ。ゴエモン、エビス丸、サスケ、それぞれの個性が強い点も面白い。コミックボンボンではエビス丸がゲイとして描かれていたけど、あれって公式設定なのか?
「毛糸のカービィ」は癒しゲー。一部の敵キャラクターはぶつかってもダメージを受けない。それどころか、いくらダメージを受けてもスコアが減るだけでゲームオーバーにならない。そしてグラフィックやBGMがめっちゃファンシー。彼女と一緒に遊んでみたいな・・・彼女いないけど。
やっぱり、協力プレイできるゲームは据え置きがいいなー。携帯ゲーム機だと、人数分の本体とソフトを用意しないといけないんだもの。ポケモンやモンハンみたいな「超」がつくほど人気のあるタイトルならいいけど、そうでなければ一緒に遊べる仲間がいなくてさみしい思いをすることがよくある。友だちが少ないとか言っちゃダメ。
据え置きゲーム機は、2000年に発売した「星のカービィ64」以来だから11年ぶり。でも、多人数同時プレイができる据え置きカービィは、1996年の「星のカービィスーパーデラックス」が最後だから・・・15年ぶりってことか。「毛糸のカービィ」は例外扱いさせてね。あれはもともと「毛糸のフラッフ」として開発されていたものが、途中でキャラクターとしてカービィを起用したものなんだよ。
僕が知っている協力プレイ可能アクションゲームは、
- 星のカービィスーパーデラックス
- 毛糸のカービィ
- NewスーパーマリオブラザーズWii
- がんばれゴエモン2
- ワイワイワールド2 SOS!!パセリ城
特に思い出深いのは「がんばれゴエモン2」。よく友だちと一緒に遊んでいて、最初のステージで白い招き猫を集めるのが恒例だったよ。ゴエモン、エビス丸、サスケ、それぞれの個性が強い点も面白い。コミックボンボンではエビス丸がゲイとして描かれていたけど、あれって公式設定なのか?
「毛糸のカービィ」は癒しゲー。一部の敵キャラクターはぶつかってもダメージを受けない。それどころか、いくらダメージを受けてもスコアが減るだけでゲームオーバーにならない。そしてグラフィックやBGMがめっちゃファンシー。彼女と一緒に遊んでみたいな・・・彼女いないけど。
やっぱり、協力プレイできるゲームは据え置きがいいなー。携帯ゲーム機だと、人数分の本体とソフトを用意しないといけないんだもの。ポケモンやモンハンみたいな「超」がつくほど人気のあるタイトルならいいけど、そうでなければ一緒に遊べる仲間がいなくてさみしい思いをすることがよくある。友だちが少ないとか言っちゃダメ。
2011年10月15日土曜日
そもそもMVCとは。
様々なフレームワークで用いられているMVCについての僕の認識を書いてみる。
フレームワークの入門者向け解説を読むと、Modelはデータを保持するだけのものだと勘違いすることがある(僕もそうだった)。Strutsの解説ではModel=Beanとされていることがあるし、Railsの解説でもgenerate modelでModelが作られるとされていることがある。間違いではないんだけれど、ちょいと言葉が足りないのではあるまいか。
一部の企業が採用している設計方針では、Modelを実現するために、ServiceクラスとModelクラスを作る。Serviceクラスではデータの編集を行い、Modelクラスではデータの保持を行う。このようにすることでクラスの役割はわかりやすくなる。このような場合でも、MVCに照らしあわせれば、ServiceクラスはMVCのModelの役割に含まれている。

このあたりを再認識することはけっこう重要だと思った。特にRailsを使う上ではね。
Viewは画面。これについては特に書くことはない。
Controllerは、ViewやModelの処理を起動するもの。
Modelはドメインモデルのこと。業務処理に合わせて、データを保持したり、データを編集したりするのがModelの役割。フレームワークの入門者向け解説を読むと、Modelはデータを保持するだけのものだと勘違いすることがある(僕もそうだった)。Strutsの解説ではModel=Beanとされていることがあるし、Railsの解説でもgenerate modelでModelが作られるとされていることがある。間違いではないんだけれど、ちょいと言葉が足りないのではあるまいか。
一部の企業が採用している設計方針では、Modelを実現するために、ServiceクラスとModelクラスを作る。Serviceクラスではデータの編集を行い、Modelクラスではデータの保持を行う。このようにすることでクラスの役割はわかりやすくなる。このような場合でも、MVCに照らしあわせれば、ServiceクラスはMVCのModelの役割に含まれている。
このあたりを再認識することはけっこう重要だと思った。特にRailsを使う上ではね。
登録:
投稿 (Atom)