さよならアメブロ

テーマ:
さよなら、アメブロ。
僕にはアメブロは合わなかったよ。

投稿するエディタが貧弱過ぎる。
見出しと段落が付けられず、HTMLタグで編集するなんてやってられない。

不満は「はてなBlog」に長々と書いておいた。

はてな参戦の理由

新しい記事は「はてなBlog」に書きます。
もしご興味があれば見て頂けると幸いです。

http://arachansan.hatenablog.com/
AD

古いPCを軽量Linuxで再利用(LXLE)

テーマ:
かなり前の話ですが、古いPCにUbuntu12.04 + LXDEを入れて 再利用すると言う話を書きました。

今の現状ではLXLEが一番いいと思っております。
ubuntu12.04LTS+LXDEといった組み合わせで チューニングされたディストリビューションです。
枯れた部分を使っているのでドライバーが無いといったことは 少ないものと思われます。 サウンド等のドライバーも動いています。
インストールはできるが音は鳴らないという事はLinuxでは結構ありがちです。 ubuntu12.04+LXDEだといちいちデスクトップを入れ直す等の手間があります。
lubuntuという方法もありますが、 軽量化を気にし過ぎて、 私の好みのLibreOfficeをプレインストールしていない等の不満があります。
LXLEに比べて音のコントロールが弱かったりもします。

以前、会社にあるFLORA310WDP4は捨てました。
今日日、PC133のメモリーのPCなんて介護したくありませんので。

FLORA310WDA2/DA3とPrius Air note 100Fは現役です。
LXLEは1.3GBもありDVDからでしかインストールができません。
Prius Air noteはDVD搭載なのにDVDからBootしてくれない困った奴です。
USBブートも失敗、PlopというBootツールでDVDからブートさせる事も失敗。
もう、ネットワークインストールしか無いということで、 ネットワークインストールを試し始めています。
正月前から実験を開始し、未だインストールにまではこぎ着けていません。

FLORA310Wについては分解してDVDドライブを付けてインストールを行いました。
管理を行う上で
x11vnc、
sshd
を常駐起動 -ultratransferオプションで
UltraVNCとのファイル転送に対応 と言った事を仕掛けておきました。

最後に
はてなBlogに引っ越します。
新しい記事は全てはてなBlogの方に書きます。
軽量Linuxのネタやネットワークインストールのネタも
はてなBlogに書きます。

http://arachansan.hatenablog.com/
AD

FreeTDS+DBLibで接続

FreeTDSはSybase,Microsoft SQL Serverとデータのやり取りをするためのプロトコルである。

これだけでは、PHPにデータを取得できない。

PHP側にもSybase、Microsoft SQL Serverとデータのやり取りをする関数を入れる。

図解するの下記のようになる。

DBLib(PHP) < - FreeTDS  <- SQL Server

インストールするライブラリ

php5-sybese

  • SQL Server,SybaseにアクセスするPHPのライブラリ
  • 上図ではDBLib(PHP)
  • PHPのmssql関数,sybase関数、dblib関数等が入っています。

freetds-common

  • SQL Server,Sybaseと通信するためのライブラリ
  • 上図ではFreeTDS

インストール方法

下記のようにapt-getでインストールします。

今回はソースからコンパイルはしません。

$ sudo apt-get install php5-sybase freetds-common

設定方法

freetds.confに設定を追加する。

条件は下記のようになる。

条件:

host:
  • SQL Server2008 R2 Express
  • WindowsXP SP3
  • IP: 192.168.0.3
  • Database username: sa
  • Database Password: password
client
  • Ubuntu 12.04.3 LTS
  • LAMP(Linux Apache MySQL PHP)インストール済み
  • $>sudo tasksel install lamp-serverでインストールしたものとする。

freetds.confの場所

freetds.confファイルは、検索すると2つある。

しかし、apache 等のサーバーが使うconfファイルは /etc/freetds/freetds.confである。

freetds.confの場所は以下のコマンドで確認できる。

プログラム 'tsql' はまだインストールされていません。  

次のように入力することでインストールできます:

sudo apt-get install freetds-bin

下記のようにインストールしましょう。

$ sudo apt-get install freetds-bin

$ tsql -C
Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /etc/freetds
     MS db-lib source compatibility: no
        Sybase binary compatibility: yes
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 4.2
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: no

freetds.conf directory:/ と太字になっている部分がfreetds.confのある場所です。

freetds.confファイル

設定条件もfreetds.confの場所も確認しました。

実際にfreetds.confファイルを編集します。

今回の設定条件だと freetds.conf は以下のように追加します。

$ sudo vi /etc/freetds/freetds.conf

##
## /etc/freetds/freetds.conf
##
[RDBSERVER] ##hostname になる
host = 192.168.0.3 ##接続するDBのIPアドレスを入れる 
port = 1433 ##SQL Server2000以降、標準のportは1433 
tds version  =  7.2 ##SQL Server2005,2008R2 Expressは7.2   
charset = CP932 ##SQL Server側の文字コードセット 
client charset = UTF-8 ##Client(Linux)側の文字コードセット
各パラメーターの詳しい設定項目は下記サイトのTable 3-2. freetds.conf settingsを参照

freetds.conf
設定を確認

tsqlというコマンドで接続できるかどうかを確認します。

接続ができれば設定はできています。

tsqlで接続

下記のように接続します。

$ tsql -S RDBSERVER -U sa -P password
locale is "ja_JP.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>

freetds.confの[ ]で囲まれた部分、 ここでは[RDBSERVER] を指定します。

-U username

データベースのユーザー名

-P passowrd

データベースのパスワードを指定します。

1> となっていれば接続成功

失敗していればfreetds.confの設定がおかしいかと思います。

下記のサイトを参照して原因を突き止めましょう。

http://freetds.schemamania.org/userguide/confirminstall.htm http://freetds.schemamania.org/userguide/serverthere.htm#SERVERTHERE.TSQL

tsqlでSQLを実行

ちなみにtsqlで接続後

下記のようにSQL文を実行します。

1>use master
2>go
1>select @@version
2>go
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (Intel X86) 
(1 row affected)
1> quit

quitで抜けます。

SQL Serverのバージョンを表示する為の特殊なSQL文。

SQL Serverのどのデータベースを指定していても実行できる。

1行だけ表示するのでテストで表示するのにぴったりです。

日本語テーブルが動くか確認

少し条件を厳しくして、 日本語データベース、日本語テーブル、日本語カラムを作成して表示させてみます。

1>create database 日本語テーブル達
2>go

1>use 日本語テーブル達
2>go

1>create table 名前リスト(
2>ID int IDENTITY(1,1) PRIMARY KEY,
3>名前 nvachar(40)
4>)
5>go

1>insert into 名前リスト(名前)
2>values(‘織田 信長’)
3>go

1>select * from 名前リスト
2>go
ID 1 (1 row affeted)
1>

文字化けしていなければ問題無し。

もし、文字化けしていればfreetds.confのcharsetとclient charsetを見直しましょう。

PHPからSQL Serverのデータを表示

$ tasksel lamp-server

でインストールされているものとします。

apacheのwwwrootに移動します。

$ cd /var/www

phpファイルを作成します。

$ vi mssql2008r2.php

---以下 msssql2008R2.php ソースコード

$server=’kyopcd08’;
$password='password';
$connection=mssql_connect($server,$username,$password);

if($connection !=FALSE)
{
        echo "Connection to the database server OK
";
}
else
{
        die("Couldn't connect");
}

$query_result=mssql_query("SELECT * FROM [日本語テーブル達].[dbo].[名前リスト]");
$row=mssql_fetch_array($query_result);

if($row !=FALSE)
{
        echo $row['名前'];
}
mssql_free_result($query_result);
mssql_close($connection);
?>
-----ソースコード 終わり

ブラウザで表してみましょう。

url: http://localhost/mssql2008R2.php

表示結果
Connection to the database server OK
織田 信長
AD