2009年7月28日火曜日

Haskellはじめました -その2-

HDBC-sqlite3のインストールはできたみたいだけど、GHCiの実行時にモジュールが読み込めずにエラーになる。ん~、なんか足りないんだろうな。

GOOGLE先生に聞いたところ、以下のページにたどりついた。
http://software.complete.org/software/wiki/13/FrequentlyAskedQuestions

ようするに
①SQLiteのサイトから"sqlite-source-${current version}.zip"をダウンロードする。
②解凍して"$GHC_HOME/include/"にコピーする。
③同様に"sqlitedll-${current version}.zip"をダウンロードする。
④解凍して"$GHC_HOME"と"%windir%\system32"にコピーする。
※「$GHC_HOME」は、コマンドラインで「ghc --print-libdir」で表示できる。



GHCi, version 6.10.2: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
Prelude> :module Database.HDBC Database.HDBC.Sqlite3
Prelude Database.HDBC Database.HDBC.Sqlite3> conn <- connectSqlite3 "C:\\Users\\
Public\\Documents\\test.db"
Loading package syb ... linking ... done.
Loading package array-0.2.0.0 ... linking ... done.
Loading package containers-0.2.0.1 ... linking ... done.
Loading package bytestring-0.9.1.4 ... linking ... done.
Loading package old-locale-1.0.0.1 ... linking ... done.
Loading package old-time-1.0.0.2 ... linking ... done.
Loading package Win32-2.2.0.0 ... linking ... done.
Loading package mtl-1.1.0.2 ... linking ... done.
Loading package time-1.1.4 ... linking ... done.
Loading package convertible-1.0.5 ... linking ... done.
Loading package utf8-string-0.3.5 ... linking ... done.
Loading package HUnit-1.2.0.3 ... linking ... done.
Loading package base-3.0.3.1 ... linking ... done.
Loading package random-1.0.0.1 ... linking ... done.
Loading package QuickCheck-1.2.0.0 ... linking ... done.
Loading package filepath-1.1.0.2 ... linking ... done.
Loading package directory-1.0.0.3 ... linking ... done.
Loading package process-1.0.1.1 ... linking ... done.
Loading package haskell98 ... linking ... done.
Loading package testpack-1.0.2 ... linking ... done.
Loading package HDBC-2.1.1 ... linking ... done.
Loading package HDBC-sqlite3-2.1.0.2 ... linking ... done.
Prelude Database.HDBC Database.HDBC.Sqlite3> :type conn
conn :: Connection
Prelude Database.HDBC Database.HDBC.Sqlite3>



つながった!

2009年7月26日日曜日

Haskellはじめました -その2-

Cabalの基本的な使い方が解ったので、Haskellでデータベース接続をするべくHDBCのインストールに挑戦。
DBはお手軽なSQLiteで試したい。



C:\Users\Dog\Downloads\Hackage\HDBC-sqlite3-2.1.0.2>runghc setup configure
Configuring HDBC-sqlite3-2.1.0.2...
setup: Missing dependency on a foreign library:
* Missing C library: sqlite3
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.



あらら早速エラーです。
なにやら依存するファイルが足りないとか。「--extra-include-dirs」とか「--extra-include-dirs」オプションを指定しろって?
SQLiteのサイトからsourceとDLLを拾ってくる。それらを解凍し、「--extra-include-dirs」と「--extra-include-dirs」にフォルダを指定してみる。



C:\Users\Dog\Downloads\Hackage\HDBC-sqlite3-2.1.0.2>runghc setup configure -
-extra-lib-dirs=C:\Users\suzuken\Downloads\sqlitedll-3_6_16 --extra-include-dirs
=C:\Users\suzuken\Downloads\sqlite-amalgamation-3_6_16
Configuring HDBC-sqlite3-2.1.0.2...



あ、今度は通った。
installまで実行して、GHCiで



Prelude> :module Database.HDBC Database.HDBC.Sqlite3
Prelude Database.HDBC Database.HDBC.Sqlite3> conn <- connectSqlite3 "test"



あれ?エラーになるぞ?
まだなにか足りないらしい。。。

2009年7月23日木曜日

Haskellはじめました

HaskellがやりたくてWindowsVistaにGHCをインストールしたのだが、普段上業務用アプリケーションの開発に携わっているため、データベースを使いたくなってくる。
GHCにはデータベース関連のモジュールは入っていないらしい。というか、どうやって入れるんだ?

HaskellにはCabalというパッケージシステムがあるらしい。

パッケージはHackageDBというサイトで公開されている。

Cabalパッケージを手動インストールするには、ダウンロードしたファイルを解凍し、以下のコマンドを実行する。

runghc Setup.hs configure
runghc Setup.hs build
runghc Setup.hs install

具体的には以下のような感じ。



Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

C:\Users\suzuken>cd C:\Users\dog\Downloads\Hackage\HDBC-2.1.1

C:\Users\dog\Downloads\Hackage\HDBC-2.1.1>dir
ドライブ C のボリューム ラベルは OS です
ボリューム シリアル番号は 00XX-0X0X です

C:\Users\suzuken\Downloads\Hackage\HDBC-2.1.1 のディレクトリ

2009/07/23 22:01 <DIR> .
2009/07/23 22:01 <DIR> ..
2009/05/30 05:15 26,527 COPYING
2009/05/30 05:15 844 COPYRIGHT
2009/07/23 22:01 <DIR> Database
2009/05/30 05:15 2,060 HDBC.cabal
2009/05/30 05:15 79 Setup.lhs
2009/07/23 22:01 <DIR> testsrc
4 個のファイル 29,510 バイト
4 個のディレクトリ 11,231,596,544 バイトの空き領域

C:\Users\suzuken\Downloads\Hackage\HDBC-2.1.1>runghc Setup.lhs configure
Configuring HDBC-2.1.1...
Setup.lhs: At least the following dependencies are missing:
convertible >=1.0.1,
testpack -any,
time >=1.1.2.4,
utf8-string -any

C:\Users\suzuken\Downloads\Hackage\HDBC-2.1.1>


runghc Setup.lhs configureの後、パッケージの依存関係がチェックされ、必要なパッケージとそのバージョンが表示されるので、それらをインストールしてから、再度インストールする。

2008年6月7日土曜日

Debian Etch で NetCommons

最近個人的に興味を持っているCMS「NetCommons」を見よう見まねでDebian Etchにインストールしてみた。
NetCommonsの詳細は公式サイトを参照されたい。
http://www.netcommons.org/

NetCommonsはPHP+MySQLという環境で動作するということなので、GNOMEのメニューからSynapticを起動して必要なパッケージをインストールする。

NetCommonsの公式サイトで推奨されているPHPのバージョンは4みたいだけど、PHP5での動作実績もあるようなので、「php5」(バージョン5.2.0-8+etch11)を選択。さらにMySQLを使用するので「php5-mysql」も選択しておく。(←最初、このモジュールを選択しなかったためにハマった。)
さらに「mysql-server」(バージョン5.0.32-7etch5)を選択してインストール。

Debianの場合、MySQLの初期化は不要。
# ./scripts/mysql_install_db --user=mysql
みたいなことはしなくてよいらしい。

インストール直後のMySQLにはrootユーザーでログインできるが、パスワードが設定されていない。rootでログインし、パスワードを変更しておく。

# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
-> WHERE user='root';
mysql> FLUSH PRIVILEGES;

rootで使うのは気持ち悪いので、適当なユーザーを作成しておく。

mysql> GRANT OPTION;GRANT ALL PRIVILEGES ON *.* TO mysql@localhost IDENTIFIED BY 'mysql' WITH GRANT OPTION;

NetCommonsの公式サイトからコアパッケージ用「NetCommons-1.1.3」をダウンロードしてきて展開。あとは公式サイトのインストール手順にしたがって、インストールするだけ。
http://www.netcommons.org/nc_manual/japanese/admin_manual/index.html

2008年5月31日土曜日

DebianでCanon PIXUS ip4300を使う

先日インストールしたDebian Etch。
ネットワークにも正常につながって、日常的に使うデスクトップOSとして、ほとんど問題ないレベルになってきたが、ひとつやってないことがあった。
プリンタの設定である。

手持ちのプリンタはCanonのPIXUS IP4300。
非常に性能が良く、気に入っている。

ドライバのインストール方法を調べたところ、Canonのサイトからrpmパッケージをダウンロードできることが分かった。
http://cweb.canon.jp/drv-upd/bj/other.html#linux

目的のドライバをダウンロードした後、alienというツールを使って、インストールする。
$ su
# alien cnijfilter-ip4300-2.70-2.i386.rpm

Warning: Skipping conversion of scripts in package cnijfilter-ip4300: postinst postrm
Warning: Use the --scripts parameter to include the scripts.
cnijfilter-ip4300_2.70-3_i386.deb generated
多少Warningが表示されたが、debパッケージが作成されたらしいので
# dpkg -i cnijfilter-ip4300_2.70-3_i386.deb
でインストール。
CUPSの再起動。
# /etc/init.d/cupsys restart
Restarting Common Unix Printing System: cupsd.
CUPSのGUI(http://localhost:631/)にアクセスして、プリンタを追加。

これだけ。
無事、プリンタが使えるようになりました。

エクソダス

なんだかmixiの閉塞感がイヤになったので脱出することに決めた。

もちろんSNSの良さは分かる。
ある程度のプライバシーを公開することで、近い人間と、より深く交流できる。

だけど、もともと1つだったWebという世界を、無数の小さな国に分断してしまったということも事実だろう。
Webの良さをもっと体験したい。
つたない文章でも公開し、ホームページを作り、Webから得た情報を利用するかわりに、自分が発信する情報で、すこしでもWebに貢献できたらと思う。