2008年3月31日月曜日

【MySQL】 ネットワークからアクセスするための権限を与える。

デフォルトの設定ではMySQLサーバにネットワークから接続できない。
すなわち、ローカルホストからしかSQLがたたけない。
これは不便だ。

そこで、以下のコマンドでネットワーク越しにSQLの発行を可能にする。


# mysql -u root -p
mysql> update mysql.user set password=old_password('abcd1234') where user='root';
mysql> grant all privileges on *.* to root@192.168.11.10 identified by 'abcd1234' with grant option;
mysql> flush privileges;


*abcd1234はあなたのパスワード
*rootは変更したいmysqlユーザ
*192.168.11.10は接続したいmysqlクライアントのIPアドレス

LAMP等でWebサーバとMySQLサーバを物理的に分離したときにもこれは必要だ。

ラベル:

2008年3月28日金曜日

【相関くんのブログ】 グラフ描画とCSSデザインテンプレート

グラフの描画にはhtml5.jpを使うことにする。
【JavaScript】 html5.jpでグラフを描画する。

MSIEでちゃんと出ないけど、多分こちら側の問題。

GoogleのVisualization APIも良さそうだが、とりあえずhtml5.jpで動いているので。
Introducing the latest AJAX API: Google Visualization API

問題はサイト・デザインだ。いつもこれが引っかかる。
と色々悩んでいたが、良いサイトが見つかった。
Free Web Templates

使用目的に関わらず、フリーで使える。
ただし、フッターのリンクはそのまま残す必要がある。

ラベル: , ,

2008年3月27日木曜日

【JavaScript】 html5.jpでグラフを描画する。

HTMLのページでグラフを描画する時はいつも悩ましい。

方法としては、
Flash
Java
JavaScript
CSS
などが思いつくが、html5.jpにとても使い易くて、完成度が高いJavaScriptライブラリがあるので、使ってみた。

http://html5.jp/library/index.html




ラベル等にhtmlタグを使用することはできない。

IE6, 7で試したがうまく動作しない。
FirefoxとSafariは問題ない。
iPod TouchでもOK。

ラベル:

2008年3月26日水曜日

【Python】 ビープ音の出し方

Pythonでビープ音を出すには

>>> print '\a'

とするか

>>> print chr(7)

とする。

ラベル:

【相関くんのブログ】 はじまり

Djangoでなにかウェブアプリを作ろうと思う。

最近、サブプライム問題とか原油高とか穀物高とか対ドル円高とか株安が経済ニュースを賑わしている。
日経平均株価の上下を注視していると、NASDAQなどの米株指数と同じような動きをしていることに気づく。
そこで、相関関係があるのか気になった。

日米株価は相関しているか
大和総研/コラム株価と金利の相関係数ランキング

ま〜、基本、日米の株価に相関関係があると言えるようだ。

最近の相関関係がいつでもオンラインでわかるようなアプリを作ってみたくなった。
また、相関関係が強い銘柄は、外国人投資家の影響をより強く受けている可能性が高い。
こういう銘柄は案外、実力どおりの値がついていなくて過小評価されていることも多いだろう。
こういった企業は今のような状況、すなわち、外国人投資家がとりあえず、キャッシュ欲しさに日本市場から引き上げたときに買い時になる。

最後に断っておくが、私は株の素人だ。

アプリの開発は以下で済ませる。
OS:Ubuntu
DB: MySQL
Web: Apache
Lang: Python
Framework: Django

ラベル: ,

2008年3月25日火曜日

【Ubuntu】 RARアーカイブを解凍したい。

Ubuntu 7.10 Gutsy

UbuntuでRARファイルを解凍する方法。
書庫マネージャからZIPやTARと同じように解凍できる。

まず、Synapticパッケージ・マネージャーのmultiverseをオンにする。
システム→システム設定→Ubuntuのソフトウェア
からmultiverseをオン

rarのインストール
# sudo apt-get install rar

以上で書庫マネージャーがRAR形式に対応する。
かんたん、かんたん。

ラベル:

2008年3月22日土曜日

【Ubuntu】 8.04 Hardy Beta登場!

次期Ubuntuとなる8.04 Hardy Heronがダウンロードできる。
http://www.ubuntu.com/testing/hardy/beta

主な変更点は
Xorg 7.3
Linux kernel 2.6.24
GNOME 2.22
Firefox 3 Beta 4
Vinagre (VNC Client)
Brasero (CD/DVDオーサリング)
Inkscape 0.46 (PDFサポート)
ActiveDirectory
iSCSIサポート
Wubi (Windows上の仮想ファイルシステムにUbuntuをインストール)

Wubiの標準搭載によりパーティションを切らずにUbuntuを試せる。
たくさんのWindowsユーザが試す可能性がある。
最大の注目点は十分な安定性を確保できるかどうか。
高い安定性を提供できれば、多くのPCユーザがUbuntuを利用する日も近いのでは。

PCがWeb端末となりつつある今日、Windowsに固執する理由は少ない。
Windowsを起動する理由は個人的にはiTunes (iPod Touchの同期)くらいだ。
Webアプリを使ったりWebアプリの開発にはUbuntuの方がプラットフォームとして優れていると実感している。

ラベル:

2008年3月18日火曜日

【まとめ】 Django実践:インストール、設定、コーディング


ラベル: , ,

【Python】 Djangoモデルでデータベース・アクセス:SQLとの対応編

Python 2.5, Django 0.96

環境構築がまだの人はここを参考に。
【Python】 Djangoのインストールと設定

models.pyについては
【Python】 Djangoモデルでデータベース・アクセス:宣言編

1. INSERT/UPDATE

INSERT

import models
my_obj = models.MyObj(name='ぱいそん', age='31')
my_obj.save()


UPDATE

import models
my_obj = models.MyObj.objects.get(100)
my_obj.age = 21
my_obj.save()


2. SELECT
全部

import models
my_objs = models.MyObj.objects.all()


主キーで

import models
my_obj = models.MyObj.objects.get(100)


値一致で (WHERE name='パイソン')

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')


値比較で (WHERE age>=20)

import models
my_objs = models.MyObj.objects.filter(age__gte=20)

アンダースコア「_」は2個。
__gte: >=
__lte: <= __gt: >
__lt: < ソート (ORDER BY age)

import models
my_objs = models.MyObj.objects.filter(age__gte=20).order_by('age')

ORDER BY age DESCの時はorder_by('-age')

制限 (LIMIT 10)

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん')[:10]
*kawasaqさんのご指摘により訂正。ありがとうございます。
[10]→[:10]


複数条件を指定

import models
my_objs = models.MyObj.objects.filter(name='ぱいそん').filter(age__gte=20).order_by('-age')[2]

ラベル: ,

【Python】 Djangoモデルでデータベース・アクセス:宣言編

Python 2.5, Django 0.96

環境構築がまだの人はここを参考に。
【Python】 Djangoのインストールと設定

myprj/myapp/models.pyを編集することになる。

1. primary key (主キー)を設定したい。

id = models.CharField(maxlength=200, primary_key=True)
primary_key=Trueを指定しないと勝手に主キーのカラムidが作られる。
2. 数値

i = models.IntegerField(core=True)
f = models.FloatField(max_digits=10, decimal_places=3)
max_digits: 整数の桁
decimal_places: 小数点以下の桁
3. 文字

c = models.CharField(maxlength=200)
t = models.TextField()
4. 日付

dt = models.DateTimeField('date created')
d = date = models.DateField('date created')
auto_now=True: 現在の日付が自動で書き込まれる
5. 外部キー

user = models.ForeignKey(UserInfo)
6. その他共通オプション(引数)

unique=True: ユニークOn
db_index=True: インデックスOn
maxlength=200: 値の長さ指定

ラベル: ,

2008年3月17日月曜日

【まとめ】 セマンティック・ウェブ





ラベル: , ,

【まとめ】 LAMP環境構築:MySQL, Apache2, Python, Django on Ubuntu 7.xx




ラベル: , , , , ,

【まとめ】 Ubuntu:OSのインストールと設定







ラベル: ,

2008年3月16日日曜日

【Python】 Djangoテンプレートのfor文とかif文とか

Djangoのテンプレートでif文やfor文を使いたいとき。

詳しくはこちら。
Djangoテンプレート言語ガイド

1. for 文

<html>
<body>

{% for x in xs %}
<p>{{x}}</p>
{% endfor %}

</body>
</html>


forloop.first:最初のループならTrue
forloop.last:最後のループならTrue
forloop.counter:初期値1のループ回数
forloop.counter0:初期値0のループ回数

2. if文

<html>
<body>

{% if x and not y %}
<p>{{x}}</p>
{% endif %}
{% if y and not x %}
<p>{{y}}</p>
{% endif %}

</body>
</html>


3. ifchanged文

<html>
<body>

{% for x in xs %}
{% ifchanged x %}
<p>{{x}}</p>
{% endifchanged %}
{% endfor %}

</body>
</html>


4. ifequal, ifnotequal


<html>
<body>

{% ifequal x y %}
<p>{{x}}, {{y}}</p>
{% endifequal %}

</body>
</html>


5. include (URL指定), ssi (ファイル指定)
{% include "foo/bar.html" %}

{% ssi /home/html/foo/bar.html %}

ラベル: ,

【Ubuntu】 ディスク使用量の調べ方

Ubuntu 7.10 Gutsy

1. おおざっぱに:システム・モニタ
起動方法はこれ。
システム→システム管理→システム・モニタ

システムタブに全体で使用可能な空き容量が表示されている。
ファイルシステムタブでパーティションごとの詳細が見れる。

2. フォルダごとに:ディスク使用量の解析
起動方法。
アプリケーション→アクセサリ→ディスク使用量の解析

家アイコンをクリックすると現在のユーザホーム以下のディレクトリのディスク使用量がディレクトリ単位で表示される。

3. ファイルごとに:ls -alhF
調べたいディレクトリに移動して、例えば、
# cd /var/log

# ls -alhF

a: 「.」ではじまる隠しディレクトリ・ファイルも表示
l: サイズ、権限、更新日
h: サイズをk、M、Gなどの単位でわかりやすく表示
F: ディレクトリをわかりやすく表示

ラベル:

2008年3月15日土曜日

【MySQL】 文字化け解決法 (UTF-8)

MySQL 5.0, Ubuntu 7.10 Gutsy

これだと文字化けする、ダメな例。

mysql> STATUS;
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1



mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


/etc/my.cnfを編集(apt-getでインストールした場合は/etc/mysql/my.cnf)

[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake


mysql再起動

この設定は新たにデータベースを作成すると反映される。
mysql> create database mydb

すなわち、既存のデータベース、テーブルの設定は古いまま。

UTF-8にしたときの正しい例。

mysql> STATUS;
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8



mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


文字コードの設定はデータベースごとに持っているので、

mysql> use mydb

してから、STATUS, SHOW VARIABLESしたほうがよい。
Db charactersetがlatin1のままだと文字化けする。

ラベル: ,

【Ubuntu:動画】 デスクトップを録画する(スクリーンキャスト) gtk-recordMyDesktop

Ubuntu 7.10 Gutsy, GTP-recordMyDesktop 0.3.4




# sudo apt-get install gtk-recordmydesktop


起動するには
アプリケーション→サウンドとビデオ→gtk-RecordMyDesktop
とメニューをたどる。

録音はしないので、音質のチェックを外す。
設定からディレクトリを変更する。
他はそのまま。

別名で保存でファイル名を指定する。
録音ボタンで録画開始。

あるいはメニューバーの赤い丸をクリックすると録画が始まる。

メニューバーの隅にアイコンが出る。
これをクリックすると録画が止まって、エンコードが開始される。
動画フォーマットはogg形式だ。

動画フォーマットを変更するにはWinFFが便利だ。
【Ubuntu】 ffmpegフロントエンド、WinFFで動画コンバート(変換)

ラベル: ,

2008年3月12日水曜日

【Ubuntu】 テーマ(外観の設定)をUbuntu 8.04風の(つもりの)Hardy Mariuxに変更

Hardy Mariux Theme on Ubuntu 7.10 Gutsy



Hardy Mariuxというテーマをインストールしてみる。
Hardy Theme GNOME - Look.org

ここからHardy_Theme_by_MariuxV.gzをダウンロードする。

解凍した中にReadme.txtがあって、Compizなどの設定法も書いてある。

では、実際のHardy Mariuxテーマの適用方法。

1. 壁紙の設定。
デスクトップを右クリックして、背景の変更から、以下を選択する。
Hardy-Mariux/Wallpaper/Tavel With Wallaper Clean_Orange - by petergui.jpg

2. GTK theme
# sudo aptitude install gtk2-engines-murrine
Hardy-Mariux/GTK/Hardy-Mariuxを/home/[username]/.themesにコピーする。
外観の設定を起動して、カスタマイズ→コントロール→Hardy-Mariuxを選択する。
タブを色に切り替えて、選択したアイテムの色を好みに合わせる。
続いて、インストールからHardy-Mariux/Icons/Tangerine.tar.gzを選択する。

3. Emerald
Hardy-Mariux/emerald/Hardy.emeraldをダブルクリック。
開くボタンを押して、適用する。

4. GDM
ログイン画面→ローカル→追加ボタンを押す。
Hardy-Mariux/GDM/Glossy Mariux.tar.gzを選択する。
Mariux Glossy Hardyを選択して、閉じる。

Compizの設定は現状を残したいので、省略。

ラベル:

【Ubuntu:動画】 ffmpegフロントエンド、WinFFで動画コンバート(変換)

WinFF 0.33 on Ubuntu

Ubuntuで使える手軽な動画コンバーターWinFFを紹介する。

WinFFはffmpegのフロントエンド。
flv, mpeg4, m4v, mp4, mov, avi, divx, mkv, wmvなどをコンバートできる。
フォーマットの対応はffmpegが対応するかどうかで決まる。

各種コーデックをインストールするには以下を参考に。
【Ubuntu】 medibuntuでコーデックを楽々インストール

WinFF本家よりDebian/Ubuntu用をダウンロードする。
http://biggmatt.com/winff/downloads/

ダウンロード後は自動でインストールしてくれる。
起動するには
アプリケーション→サウンドとビデオ→WinFF

iPod Touch等で観たいときはConvert toでH.265 iPod Linux 16:9を選ぶ。
Convertボタンでffmpegのコンソールが起動して、コンバートが始まる。

複数のファイルを連続して変換するには
Edit→Preferences→Pause when finised encoding
のチェックを外す。

Multithreading for Dual Core Processing
をオンにするとマルチコアCPUでコンバートが早くなる。

ラベル: , ,

【Ubuntu】 テーマ(外観の設定)を変更してみる

ここからテーマを入手できる。
http://www.gnome-look.org/

今回はDarker themeをインストールしてみる。
http://www.gnome-look.org/content/show.php/Darker+theme?content=32768
からUbuntu download(Darker Theme) (19 KByte)を選択する。

次にダウンロードしたファイルをホームの.themesに展開する。

システム→設定→外観の設定からDarker Themeを選択するとウィンドウなどが変化する。
カスタマイズボタンから好みに合わせることができる。
Darker themeはメニューの色がトリッキーなので、コントロールHumanに戻したほうが使い易かった。

こちらも参考に。
【Ubuntu】 テーマ(外観の設定)をUbuntu 8.04風の(つもりの) Hardy Mariuxに変更

ラベル:

【Ubuntu】 USBの外付けHDなどをアンマウントできない(取り出せない)とき

Ubuntu 7.10 Gutsy

USBの外付けHDやUSBメモリーを使用後アンマウントして取り外したいが、ファイルブラウザーの右クリックのコンテキストメニューからアンマウントできないときがある。

そういうときはターミナルから
sudo umount /media/[DRIVE LABEL]
とするとあっさりアンマウントできてしまう。

ラベル:

2008年3月11日火曜日

【MySQL】 UTF-8対応 SQLクライアントツール MySQL Query Browser

Ubuntu 7.10 Gutsy MySQL 5.0

MySQLのSQL GUIツール、MySQL Query Browserを紹介する。
UTF-8も問題なく表示できる。もちろん日本語OK。

インストールはいたって簡単で、追加と削除からチェックマークをつけて、変更を適用ボタンを押すだけ。


アプリケーション→プログラミング→MySQL Query Browserを選んで起動。
rootユーザ等でログインする。


右側のSchemataからdatabaseを選んでSQLを打ち込む。
テーブルをダブルクリックしてもOK。


ToolsPreferencesからパスワードを保存できる。

Ctrl+Tでタブを追加できる。

ラベル:

2008年3月8日土曜日

【Python】 Djangoをapt-getでUbuntuにインストール

Ubuntu 7.10 Gutsy

Djangoをapt-getしてインストールする場合を紹介する。

Djangoを本家からダウンロードしてセットアップする場合は以下を参考。
【Python】 Djangoのインストールと設定

DjangoはPythonのWebフレームワークで最近勢いがある。
DjangoはPythonのWebフレームワークだ。
Ruby on RailsやPHP Symphonyと比べてパフォーマンスは結構良いらしい。
Framework Performance in Ruby on Rails
Rails performed much better than Symfony. And Django performed much better than Rails.


Djangoをインストールする前に以下の準備が必要。
【Ubuntu】 apt-getでインストールした場合のLAMP (Python)の設定

では、Djangoのインストール。

# sudo apt-get install python-django


DocumentRootに移動。
デフォルトでは/var/www

# cd /var/www
# sudo django-admin startproject myprj
# ls


Apache2の設定。
# sudo gedit /etc/apache2/sites-available/default



<Location "/myprj/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
SetHandler python-program
PythonPath "['/var/www'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myprj.settings
PythonDebug On
</Location>



Apache2を再起動。
# /etc/init.d/apach2 restart

ブラウザで確認。
http://localhost/myprj

Djangoに付属している開発用serverでも確認する。
# cd /var/www/myprj
# python manage.py runserver
http://localhost:8000/myprj

開発用serverの利点はpythonスクリプトの変更が即座に反映されることと、デバッグ情報をターミナルに出力できることだ。

次にアプリケーションを登録する。
# python manage.py startapp myapp

ディレクトリ構造はこうなるはず。

[DocumentRoot]
|-myprj
|-myapp


/var/www/myprj/settings.pyを編集する。

DEBUG = True
TEMPLATE_DEBUG = True

DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'myprg'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'mypassword'
DATABASE_HOST = '127.0.0.1'
DATABASE_PORT = '3306'

TIME_ZONE = 'Asia/Tokyo Japan'

TEMPLATE_DIRS = (
'/var/www/myprj/myapp/template',
)

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'myprj.myapp'
)


アプリケーションは複数登録できる。
ので、プロジェクトは複数のアプリケーションを持つことができる。

myappに移動して、models.pyを編集。


from django.db import models

# Create your models here.

class User(models.Model):
username = models.CharField(maxlength=200)
password = models.CharField(maxlength=200)
description = models.TextField()
score = models.IntegerField()
datetime = models.DateTimeField(auto_now=True)



MySQLをUTF-8に。
/etc/mysql/my.cnfを編集。
# sudo gedit /etc/mysql/my.cnf


[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake


MySQL再起動。
# /etc/init.d/mysql restart

MySQLにデータベースを作成する。


# mysql -u root -p
mysql> create database myprj
mysql> quit



/var/www/myprj/myapp/models.pyとデータベースを同期する。
# python manage.py syncdb

/var/www/myprj/myapp/models.pyにクラスを追加すると同期する必要がある。
ただし、クラス属性(プロパティ)を変更しただけだとDBに変更が反映されない。
その時はALTER TABLEのSQLをコールする必要がある。
あるいは、データが不要ならテーブルをドロップして同期する。

/var/www/myprj/myapp/modes.pyの実例


# python manage.py shell
>>> from myprj.myapps.models import *
>>> User(username='foo', password='brabra', description='Hello', score=0).save()
>>> User(username='hoge', password='brabra', description='Good-bye', score=0).save()
>>> us = User.objects.all()
>>> for u in us:
>>> print u.username, u.password, u.datetime



/var/www/myprj/myapp/views.pyの実例


from django.shortcuts import render_to_response, get_object_or_404
import models
def index(request):
users = models.User.objects.all()
return render_to_response('index.html', { 'users': users })



/var/www/myprj/myapp/template/index.htmlの実例


<html>
<body>
{% for user in users %}
<p>{{user.username}}, {{user.password}}, {{user.description}}</p>
{% endfor %}
</body>
</html>



/var/www/myprj/urls.pyを編集。

(r'^myprj/myapp/$', 'myprj.myapp.views.index')


Apacheを再起動。
/etc/init.d/apache2 restart


ブラウザで以下にアクセス。
http://localhost/myprj/myapp/

動作が確認できたら、/var/www/myprj/settings.pyを編集する。
DEBUG = False
TEMPLATE_DEBUG = False
これをしないとDBのSQLクエリーがメモリーに残り、メモリーリークのような振舞になる。
設定を有効にするためにApacheの再起動もわすれずに。
[Django オンラインドキュメント和訳]
Django がメモリリークを起こしているのですが、なぜですか?
Django が実行している生の SQL クエリを見られますか?

ラベル: , , , ,

【Ubuntu】 apt-getでインストールした場合のLAMP (Python)の設定

【Ubuntu】 LAMP (Linux, Apache2, MySQL, Python一発インストールのつづき。

apt-getでインストールした場合はhttpd.confを直接編集しない。
/etc/apache2/sites-available/defaultを編集する.

cd /etc/apache2/sites-available/
sudo gedit default


<Directory /var/www/>を以下に変更する.


<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig
Order allow,deny
allow from all

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>



テストスクリプト/var/www/test.pyを編集する(sudo gedit /var/www/test.py).


def index(req):
return "Test successful"



Apache再起動。

# sudo /etc/init.d/apache2 restart


ブラウザで
http://localhost/test.py
にアクセスして確認する.

PythonとMySQLの接続方法は
【Python】 MySQL-pythonのインストール
を参考に。

ラベル: , , , ,

2008年3月7日金曜日

【Python】 datetime.dateによる日付の演算

Pythonで日付を扱うときはdatetime.dateのお世話になる。


>>> import datetime
>>> d = datetime.date(2008, 2, 29)
>>> print d
2008-02-29


>>> print d.year, d.month, d.day
2008 2 29


15日後を得る。

>>> next = d + datetime.timedelta(15)
>>> print next
2008-03-15

ちゃんと月が翌月になっている。

ある月の最後の日にちが知りたいときは、

>>> import calendar
>>> calendar.monthrange(2008, 2)[1]

とする。

昨日、今日、明日がしりたいときは、

>>> today = datetime.date.today()
>>> print today
>>> print today - datetime.timedelta(1)
>>> print today + datetime.timedelta(1)

ラベル:

【MySQL】 全文検索パラメータft_min_wordを変更してみる

最近のMySQLにはFULLTEXTというタイプのインデックスがサポートされている.
これは全文検索を可能にする。
日本語に対応するには少し工夫が必要だ。

検索のパフォーマンスがいまいちなので、ft_min_wordというパラメータを変えてみた。
ft_min_wordはインデックスに加える最小の文字数を定義する。
/etc/my.cnfを編集。

[mysqld]
ft_min_word_len=2

[myisamchk]
ft_min_word_len=2


MySQLを再起動する。(apt-getでインストールした場合はsudo /etc/init.d/mysql restart)

# [mysql]/bin/mysqladmin shutdown -u root -p
# [mysql]/bin/mysqld_safe --user=mysql
# Ctrl+Z
# bg


確認。

# sudo [mysql]/bin/myisamchk --help


インデックス修復。

# sudo [mysql]/bin/myisamchk --recover --ft_min_word_len=2 [mysql]/var/mydb/mytbl.MYI


以下、参考。
Fine-Tuning MySQL Full-Text Search

ラベル:

2008年3月6日木曜日

【Ubuntu】 LAMP (Linux, Apache2, MySQL, Python)一発インストール

LAMPをapt-get一発でインストールする。

LAMPは
Linux←ここではUbuntu
Apache←ここではApache2
MySQL←ここではMySQL5.0
PHP、PerlなどLL (Lightweight Language)←ここではPython

以下でインストールをシミュレーションする。

sudo apt-get -s install apache2 mysql-server python-mySQLdb libapache2-mod-python

提案パッケージや推奨パッケージで必要なものがあれば加える。

実際のインストール。130MB弱の容量が必要。

# sudo apt-get install apache2 mysql-server python-mySQLdb libapache2-mod-python

途中、MySQLのrootパスワードを入力するだけ。

Apache2のテスト。ブラウザで
http://localhost
にアクセスして確認。

Apache2の起動と停止。

# sudo /etc/init.d/apache2 start
# sudo /etc/init.d/apache2 stop


MySQLに接続して確認する.

# mysql -u root -p


MySQL停止と起動

# sudo /etc/init.d/mysql stop
# sudo /etc/init.d/mysql start


LAMPの設定方法は別エントリーにて。
【Ubuntu】 apt-getでインストールした場合のLAMP (Python)の設定

ラベル: , , , ,

2008年3月5日水曜日

【Python】 PythonとMySQLの日付値の相互変換

Pythonでは日付はdatetime.dateで表現される。

>>> import datetime
>>> d = datetime.date(2008, 3, 5)


MySQLでは日付は2008-03-05などと表されるので、Y-m-d形式に変換する。

>>> d_mysql = d.strftime('%Y-%m-%d')


MySQLからSELECTで得られた値xをdatetime.dateへ変換するとき。

>>> tmp = x.split('-')
>>> d = datetime.date(int(tmp[0]), int(tmp[1]), inttmp[2]))

ラベル: ,

【Ubuntu】 使っていないパッケージをアンインストール

apt-get autoremoveで使用していない(依存関係がない)パッケージを自動で削除できる。


# sudo apt-get install
# sudo apt-get autoremove


何かをアンインストールした時はapt-get autoremoveしたほうが、ディスクスペースを作れて良さそう。

ラベル: ,

2008年3月3日月曜日

【Ubuntu】 リソース大食いのTrackerを停止する

Ubuntu 7.10 Gutsy

Ubuntuをインストール後、PCがやたら重いとTrackerが悪さをしている可能性がある。

システム・モニタでプロセスを確認する。

システム→設定→Tracker検索ツールを起動する。
これがないときは追加と削除からTracker検索ツールをインストールする.

Enable indexing
Enable watching
のチェックをはずしてTrackerを無効化する.

ラベル: ,