« 2011年7月 | トップページ | 2011年9月 »

2011年8月の4件の記事

2011/08/23

Ubuntu + SQLite3 + Ruby = 簡易データベースの準備

これまでPostgreSQLやMySQLでデータベースを構築して、Webアプリケーションを作成してきたけど、なんだかいつもしっくりこない。RDBMSを使っても、結局はローカルでアクセスする場合がほとんどだし、それほどトラフィックがあるわけでもなく、速度も要求されない。

僕の場合は、その多くがテストか小規模のものなので、わざわざこれらRDBMSを使わなくても簡単に利用できるものがあればそれを使ってもかまわない。というよりむしろ、そちらの方が便利が良い。

ということで、代替手段を探してみるとSQLiteというのが一番良さそう。

では早速Ubuntuにインストールしてみる。

http://techno.hippy.jp/rorwiki/?HowtoUseSQLite

上記URLを参考にして下記コマンドでインストールしてみる。

$ sudo apt-get install libsqlite3-dev sqlite3 swig

他にもlibsqlite3-0をインストールするように書いてあったけど、locateしてみたら入ってそうだったので除外してます。

次にRuby用のモジュールをgemでインストール。

$ sudo gem1.8 install sqlite3-ruby

まずはSQLite3の動作確認。

$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> create table `test` (
...> id integer primary key,
...> name varchar(255)
...> );
sqlite> .schema
CREATE TABLE `test` (
id integer primary key,
name varchar(255)
);
sqlite> insert into test values(1,'test');
sqlite> insert into test values(2,'test');
sqlite> select * from test;
1|test
2|test
sqlite> .quit

おぉ、動いてる動いてる。
なかなか面白いですね。

では次にRubyからの接続確認。

$ irb
irb(main):001:0> require 'sqlite3'
LoadError: no such file to load -- sqlite3
from (irb):1:in `require'
from (irb):1
from :0

何?...ちょっと調べてみたらgemで入れたものはgemをrequireしないとだめなのね。
しかも、どこに行ってもActiverecordを使った接続の解説ばかり...なんだか気に入らない。

ということで、純粋なライブラリを入れ直し。

$ sudo apt-get install libsqlite3-ruby

またirbで接続確認。

$ irb
irb(main):001:0> require 'sqlite3'
=> true
irb(main):002:0> db=SQLite3::Database.new(""sample.db"")
=> #<SQLite3::Database:0xb7ac2878 @closed=false, @handle=#
irb(main):003:0> sql =<<EOFrnirb(main):004:0"" insert into test values(3, 'ddd');rnirb(main):005:0"" EOFrn=> ""insert into test values(3, 'ddd');""rnirb(main):006:0> db.execute(sql)
=> []
irb(main):007:0> exit

おおぉ、いきましたね。
では、次に入力した内容をコマンドラインで確認してみます。

$ sqlite3 sample.db
SQLite version 3.4.2
Enter "".help"" for instructions
sqlite> select * from test;
1|test
2|test
3|ddd
sqlite> .quit

パチパチパチ...
ということで、SQLiteが使えるようになりました。Accessみたいにデータをファイルでやりとりできるから僕にはかなり便利。

これから、MySQL用に作ったライブラリをSQLite3用に転用する作業をしてみようかな。

参考URL

http://sqlite-ruby.rubyforge.org/sqlite3/faq.html

| | コメント (0) | トラックバック (0)

2011/08/20

Ubuntu + PM-A900 + ダウンロードといくつかのコマンド = 印刷 + スキャン

Ubuntu 9.xの時の記事です。少し古いですが、アップしてみます。
今では、少し手順が違うみたいだけど、LinuxでもEPSON製プリンターとスキャナーが使えるという事に変わりはないので、参考までに。

##### ここから #####

我が家のプリンターはEPSONの複合機PM-A900で、印刷も画像の取り込みもできます。
普段はMacで作業しているので、何の問題も感じたことはありませんが、せっかくなのでUbuntuでも同じような作業ができるかどうか試してみました。

結果から先に言うと、多少不便はあるものの充分使えています。

では、下記に作業手順を書いてみます。

まず、印刷について。

プリンタの電源を入れ、PCのUSBポートにUSBケーブルを接続します。すると、メニューバーにプリンタドライバが見つかりませんとかいうメッセージが表示されますが、無視してシステムメニューのシステム管理から「印刷」を選択。

新規プリンタをクリックすると一覧にPM-A900があるのでこれを選択し、「データベースからプリンタドライバを選択」でEpsonを選び、モデルからPM A900を選択します。そしてデフォルトのまま、「進む」をクリックしたら、使用できるようになりました。

簡単!

次はスキャン。

EPSON AVASYSのホームページからLinux用ドライバをダウンロードします。

http://avasys.jp/hp/menu000000300/hpg000000249.htm

僕がダウンロードしたのは、スキャナドライバの「iscan-2.10.0-1.c2.i386.rpm」です。

端末を起動して、ダウンロードしたフォルダに移動後、下記のコマンドを実行。

$ sudo alien iscan-2.10.0-1.c2.i386.rpm
$ sudo dpkg -i iscan_2.10.0-2_i386.deb

次に設定ファイルの編集。

$ sudo vi /etc/sane.d/dll.conf

末尾に「epkowa」を追加し、これで準備完了。

$ sudo iscan

とコマンドを入力すると、スキャン用ソフトが無事起動し、スキャンに成功しました。

Linuxもどんどん機能が充実してきているなと実感させられます。

| | コメント (0) | トラックバック (0)

2011/08/19

Ubuntu + Apache2 + Ruby + ちょっとした手順 = CGI実行環境

せっかくなので、UbuntuでもRubyのCGIを動かす手順をまとめてみたりします。

注) ユーザー名は仮にXXXとします。

1.Webサーバのインストール

$ sudo apt-get install apache2

2.公開用ディレクトリの編集

$ sudo mkdir /home/www
$ sudo chown XXX.XXX /home/www
$ cd /var/
$ sudo mv www www.000
$ sudo ln -s /home/www www

これでXXXのユーザ権限で自由にWebページを作成できるようになります。
試しに、サンプルページを作ってみます。

$ gedit /home/www/index.html


<html>
<body>
  This is a test.
</body>
</html>

ブラウザを起動して、http://localhostを確認すると、きちんとテストページが出力されるはずです。

3.スクリプト実行用の準備

apacheの設定ファイルを変更します。以下のコマンドを実行し、

$ sudo gedit /etc/apache2/sites-enabled/000-default

12行目にある「None」を「All」に書き換えます。

AllowOverride All

保存したら、以下のコマンドでapacheの再起動。

$ sudo /etc/init.d/apache2 restart

4.Rubyスクリプト確認

以下のコマンドを実行し、.htaccessファイルを作成します。

$ gedit /home/www/.htaccess


Options +ExecCGI
AddHandler cgi-script .rb
DirectoryIndex index.rb

先ほど作成したサンプルファイル(index.html)を削除し、別のインデックス用ファイルを作成します。

$ rm /home/www/index.html
$ gedit /home/www/index.rb


#!/usr/bin/env ruby
print "Content-type: text/html\n"
print "\n"

print "<html>"
print "これは<b>CGI</b>のテストです。"
print "</html>"

保存したら、実行権限を付与します。

$ chmod a+x index.rb

再びhttp://localhostを確認。

文字化けしていたので、エンコーディングを合わせてやるときちんと出力されました。

| | コメント (0) | トラックバック (0)

2011/08/18

Mac(Apache) + Ruby + 少しの労力 = CGI

先日サービスを終了した松江SNSにて公開していた記事を少しずつ転載してみたいと思います。
ネタは古いですが、古いネタは意外とすぐにネットから消えてしまうようなので、きっと誰かのお役に立てるはず。

MacでApacheとRubyを使ったCGI動作設定のメモです。

調べてわかったこと

・設定ファイルは"/private/etc/httpd"の中
・個人用設定ファイルは"/private/etc/httpd/users"の「ユーザー名.conf」
 *Lepardでは"/private/etc/apache2/users"
・公開用ディレクトリは"/Library/WebServer/Documents"
・個人公開用ディレクトリはホームの中にある"Sites"

ということで、個人用設定ファイルを確認すると

<Directory "/Users/XXXX/Sites/">
Options Indexes MultiViews
AllowOverride none
Order allow,deny
Allow from all
</Directory>

となっているので、

$ sudo vi /private/etc/httpd/users/[ユーザー名].conf

を実行し、

AllowOverrride All

と書き換える。
ちなみにviでの上書き保存をして終了する方法は「esc」を押してから「:wq」と入力して「return」。

個人公開用ディレクトリに移動して、htaccessの設定を変更するため、

$ cd
$ vi ~/Sites/.htaccess

を実行し、

Options +ExecCGI
AddHandler cgi-script .rb
DirectoryIndex index.rb

と入力。

システム環境設定で「共有」を選択し、サービスの「パーソナルWeb共有」にチェックを入れると準備完了。

下記のスクリプトを作って「text.rb」という名前で保存してみる。

#!/usr/bin/ruby

print "Content-type: text/html

"
print "Test"

ブラウザを立ち上げ、

http://192.168.0.28/~XXXX/test.rb

にアクセスし、無事にテストと表示されることを確認。

| | コメント (0) | トラックバック (0)

« 2011年7月 | トップページ | 2011年9月 »