10進法のunicodeテーブル

unicode10進法は以下のとおり。
縦の数字と横の数字を足したものが、その文字のunicode番号となる。
(さらに…)

UWSCでunicode文字を順番に全部表示する

unicodeの文字を順番に表示させるには、番号を変えてchr関数を実行すればいい。
chr関数は、10進法のunicode番号を文字に変える。

unicode文字を順番に全部表示するサンプルコード
----------------------
for i = 1 to 65535

PRINT CHR(i)

next
----------------------

unicode10進法は以下のとおり。
縦の数字と横の数字を足したものが、その文字のunicode番号となる。

10進法のunicode

mecabで半角記号が名詞,サ変接続になるのを解決する

初期設定のmecabは半角記号がなぜか、名詞,サ変接続になる

-------------------------------
; 名詞,サ変接続,*,*,*,*,*
\ 名詞,サ変接続,*,*,*,*,*
-------------------------------

サ変接続の名詞とは、サ変動詞に繋げることができる名詞のこと。
後ろに「~される」「~した」「~する」「~せよ」などが続いても違和感の無い名詞。「後悔」する、「録画」した、「撮影」される、といった言葉。

記号は記号であって、サ変接続の名詞ではないので、これでは困る。

半角記号を「記号」と認識してしまうのは、半角記号がmecabにとって未定義の文字(未知語)で、未知語の記号を「名詞,サ変接続」に分類するように未知語用のファイルに定義されているからである。

なので、未知語用のファイルをいじれば、問題は解決する。

解決方法

1.未知語用のファイルを開く

ファイル名は、unk.def。
(unk は unknown の略。拡張子「.def」は定義ファイル。(Define))

ここにあった。(インストール前の辞書ディレクトリ内)
--------------------------------------------
/home/username/local/mecab-ipadic-2.7.0-20070801
--------------------------------------------

開くと、こんな感じで未知語の処理方法が書いてある。
--------------------------------------------
KANJI,1292,1292,12649,名詞,固有名詞,組織,*,*,*,*
KANJI,1289,1289,17340,名詞,固有名詞,人名,一般,*,*,*
KANJI,1288,1288,15295,名詞,固有名詞,一般,*,*,*,*
SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
NUMERIC,1295,1295,27386,名詞,数,*,*,*,*,*
ALPHA,1285,1285,13398,名詞,一般,*,*,*,*,*
ALPHA,1293,1293,18706,名詞,固有名詞,地域,一般,*,*,*
ALPHA,1292,1292,13835,名詞,固有名詞,組織,*,*,*,*
--------------------------------------------

「SYMBOL」の部分を変更。

変更後
--------------------------------------------
SYMBOL,1283,1283,17585,記号,一般,*,*,*,*,*
--------------------------------------------

2.辞書を再インストール

辞書を作り直す。

mecab-dict-indexを実行して再作成。
--------------------------------------------
/home/username/local/libexec/mecab/mecab-dict-index
--------------------------------------------

辞書再作成の詳細はこちらの真ん中より下らへんを参照。

参考ページ
こちら1  こちら2

さくら共有サーバーでImportError: No module named MySQLdbが出る

さくら共有サーバーに「MySQL for Python」をインストールしたときに、ImportErrorが出た。解決方法の覚書。

【環境と前提】
---------------------------------
・さくらスタンダードプラン
・/home/workroom/local以下に自前の python2.7 がインストール済み。(さくら標準のpythonとは別で)
・/home/workroom/local以下に MySQL for Python がインストール済み。
---------------------------------

import MySQLdb を行うとエラーが出るのだが、理解に苦しんだのはエラー発生の条件が限定されているということ。

エラー内容
---------------------------
Traceback (most recent call last):
File "python_test4.cgi", line 11, in
import MySQLdb
ImportError: No module named MySQLdb
---------------------------

エラーが出る、もしくは出ないのは次の場合。

エラーが出ない(問題なし)
---------------------------
1.自前のpythonにパスを通して、ターミナルで「import MySQLdb」したとき。

2.テキストファイルの先頭に「#!/usr/local/bin/python」と記述して、pythonスクリプトをアップロードして、さくら標準のpythonを使い、ブラウザで読み込んだとき。
---------------------------
この2つの場合は、問題なく動作する。

エラーが出る
---------------------------
1.テキストファイルの先頭に「#!/home/username/local/bin/python」と記述して、pythonスクリプトをアップロードして、自前のpythonを使い、ブラウザで読み込んだとき。
---------------------------
自前のpythonを使って、ブラウザでpythonスクリプトを読み込んだときだけエラーが発生する。

「.cshrc」に PYTHONPATH や LD_LIBRARY_PATH を設定しているのに、無い!といわれる。

いろいろ悩んだ結果、解決法。
pythonスクリプトの先頭の記述を変更した。

---------------------------
#!/home/username/local/bin/python
---------------------------

↓↓↓

---------------------------
#! /usr/bin/env -S LD_LIBRARY_PATH=/home/username/local/lib PYTHONPATH=/home/username/local/lib/python:/home/username/local/lib/python/site-packages:/home/username/local/MySQL-python-1.2.3:/home/username/local/lib /home/username/local/bin/python
---------------------------

ようは、「.cshrc」に記述してあったpython関係のパスの記述を、全部テキストファイルの先頭にもコピーした。

これで動いた。自前のpythonをテキストファイルの記述で動かすと、「.cshrc」に書いてあるパスは無視されるって事かな?

参考:こちら

テキストファイルのpythonスクリプトでcabochaがエラーになる

テキストファイルのpythonスクリプトでcabochaがエラーになったときの対処法。

ターミナルではpythonでcabochaが動かせるが、テキストファイルに記述したpythonスクリプトからcabochaを実行するとエラーになった。

【環境と前提】
・さくらスタンダードプラン
・/home/username/localに自前のpython2.7がインストール済み
・/home/username/localにcabochaがインストール済み
・テキストファイルのpythonスクリプトでのみ問題発生。

エラー内容(Apacheのエラーログ)
------------------------------------------------------
Traceback (most recent call last):
File "python_test2.cgi", line 5, in
import CaboCha
File "/home/username/local/lib/python2.7/site-packages/CaboCha.py", line 26, in
CaboCha = swig_import_helper()
File "/home/username/local/lib/python2.7/site-packages/CaboCha.py", line 22, in swig_import_helper
mod = imp.load_module('_CaboCha', fp, pathname, description)
ImportError: Shared object "libcabocha.so.4" not found, required by "_CaboCha.so"
------------------------------------------------------
テキストのpythonスクリプトだと、共有オブジェクトが見つからないよう。パスが通ってないということだろう。

解決方法

スクリプトの先頭の記述を次のように変更した。

------------------------------------------------------
#!/home/username/local/bin/python
------------------------------------------------------

↓↓↓

------------------------------------------------------
#! /usr/bin/env -S LD_LIBRARY_PATH=/home/workroom/local/lib /home/workroom/local/bin/python
------------------------------------------------------

参考:こちらのページの最後ら辺

Pythonで「あ」が「u'\u3042'」になる文字化けの対処法

python にて、mysql で select したデータがunicode型になる。
期待してない動作で、文字化けである。

たとえば
-----------------------------------
あいう ← 元データ

u'\u3042\u3044\u3046' ← print の出力結果
-----------------------------------

これは、文字列全体に文字コードを指定して解決できる。

-----------------------------------
print word

↓↓↓

print word.encode('utf-8')
-----------------------------------
unicode文字列をstr文字列(UTF-8)に変換している。

【さくら共有サーバー】pythonでmysqlを使えるようにする

pythonでmysqlを使えるようにした際の覚書。

概要をつかむための参考ページ

【環境と前提】
・さくらスタンダードプラン
・「/home/username/local」に自前のpython2.7がインストール済み

1.pythonでmysqlを利用するためドライバをインストール

ドライバは何種類かある中で「MySQL for Python」を選択。デファクトスタンダードらしい。

こちらからダウンロード(この時のファイル名、MySQL-python-1.2.3.tar.gz)

ダウンロード先は「/home/username/local」で、次に解凍。
解凍したフォルダに移動してセットアップを実行。

参考:こちら

セットアップコマンド
--------------------------------------------------
% python setup.py install --home=~/local

Traceback (most recent call last):
File "setup.py", line 5, in
from setuptools import setup, Extension
ImportError: No module named setuptools
--------------------------------------------------

エラーで出る。

setuptoolsがないとのことで、インストールする。

参考:Pythonで一番最初に入れるべきパッケージ
  こちらも参考

setuptoolsは、こちらからダウンロード

ダウンロード後、解凍し、フォルダの中へ移動。

コマンドを実行。
--------------------------------------------------
python ez_setup.py
--------------------------------------------------

インストールできたことを確認するため、コマンドを打って確認
--------------------------------------------------
easy_install
--------------------------------------------------
エラーは出るけど、コマンド自体が存在していることを確認。

setuptoolsがインストールできたので、「MySQL-python」に移動してsetupをリトライ。

コマンド
--------------------------------------------------
python setup.py install --home=~/local
--------------------------------------------------

今度は別のエラーが出る。

エラー内容
--------------------------------------------------
% python setup.py install --home=~/local

running install
Checking .pth file support in /home/username/local/lib/python/
/home/username/local/bin/python -E -c pass
TEST FAILED: /home/username/local/lib/python/ does NOT support .pth files
error: bad install directory or PYTHONPATH

You are attempting to install a package to a directory that is not
on PYTHONPATH and which Python does not read ".pth" files from. The
installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/home/username/local/lib/python/

and your PYTHONPATH environment variable currently contains:

''

Here are some of your options for correcting the problem:

* You can choose a different installation directory, i.e., one that is
on PYTHONPATH or supports .pth files

* You can add the installation directory to the PYTHONPATH environment
variable. (It must then also be on PYTHONPATH whenever you run
Python and want to use the package(s) you are installing.)

* You can set up the installation directory to support ".pth" files by
using one of the approaches described here:

https://pythonhosted.org/setuptools/easy_install.html#custom-installation-locations

Please make the appropriate changes for your system and try again.
--------------------------------------------------

どうもPYTHONPATHがエラーの原因のようなので、PYTHONPATHの設定を変更する。

ホームディレクトリにある「.cshrc」に以下を追加。
参考:こちら

--------------------------------------------------
setenv PYTHONPATH $HOME/local/lib/python:$HOME/local/lib/python/site-packages

setenv LD_LIBRARY_PATH $HOME/local/lib
--------------------------------------------------
※実際には「$HOME/local/lib/python」というフォルダは存在しない。あるのは「$HOME/local/lib/python2.7」。だけど構わない。

パスの確認は、コンソール画面で
-----------
python
>>>import sys
>>>sys.path
-----------

サーバーに再接続して、ふたたびsetupを試みる。

コマンド
--------------------------------------------------
python setup.py install --home=~/local
--------------------------------------------------

うまくいった。

おまけ。
別に機会に「MySQL for Python」をインストールしたときは、こんなエラーが出た。

エラー内容
--------------------------------------------------
% python setup.py install --home=~/local
running install
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

[Errno 2] No such file or directory: '/home/workroom/local/lib/python/test-easy-install-35897.write-test'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/home/workroom/local/lib/python/

This directory does not currently exist. Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
--------------------------------------------------
「python」という名前のディレクトリを作ってあげたら解決した。

UWSCでODBCを使ってmysqlに接続する

UWSCでODBCを使ってmysqlに接続したときの覚書。

【環境】
Windows7 64bitで接続。mysqlもlocalhostにある。

1.MySQL用のODBCドライバのインストール

windowsからmysqlに接続するため、MySQL用のODBCドライバをインストールをインストールする。参考

ダウンロードはこちらから

windows7は64bitを利用しているが、UWSCが32bitなので、ドライバは32bit版を選択する。
ダウンロードページで、「login」や「sign up」を求められるが、不要ならその下の「No thanks, just start my download.」のリンクから回避できる。

ダウンロードしたら、インストールする。

2.ODBCにmysqlの情報を設定する

インストールできたら、データソース(ODBC)をこちらから設定する。
---------------------------------
C:\Windows\SysWOW64\odbcad32.exe
---------------------------------

※こちらにあるのは64bit版なので、無効(32bit版windowsなら有効だろう)
---------------------------------
コントロール パネル\すべてのコントロール パネル項目\管理ツール\データ ソース (ODBC)
---------------------------------

設定時、インストールしたドライバが二種類表示されるが「MySQL ODBC 5.x Unicode Driver」を選択。「MySQL ODBC 5.x ANSI Driver」は、日本語WindowsではSHIFT-JISを意味するらしい。

※localhost以外のPCから接続できない場合は、こちら

3.UWSCでmysqlに接続してみる

参考ページ

参考スクリプト
Open メソッド (ADO Recordset)  
Fields コレクション  
FieldsコレクションとFieldオブジェクトの使い方

mysqlに接続するサンプルコード
-----------------------------------------------------------
objConn = CreateOleObj("ADODB.Connection")
objConn.Open("ODBCで作った名前") // コネクション(接続)実行

Dim RS = CreateOleObj("ADODB.Recordset")
Dim StrSQL = "Select * From テーブル名" //クエリ
RS.Open(StrSQL, objConn) // SQL実行 レコードセット取得

While ! RS.EOF
Print_ALLFields(RS) // 全フィールドのプリント
RS.MoveNext // 次のレコードへ
WEnd

sleep(100) //printが消えないように

//全フィールドのプリント
Procedure Print_ALLFields(a_RS)

Dim i, Str
For i = 0 To a_RS.Fields.Count - 1
Str = Str + "[" + i + " " + a_RS.Fields[i].name + " = " + a_RS.Fields[i].value + "]"
Next
Print Str

FEnd
-----------------------------------------------------------

【さくら共用サーバー】pythonでprint出力する

さくら共用サーバーで、pythonを使って、ブラウザに文字を出力する方法。

さくらインターネットスタンダードプランにはあらかじめpythonがインストールされているので、それを利用する。

以下の文字をテキストエディタにコピペして保存。
保存時の拡張子は「.cgi」にする。(「.py」でない。)
-------------------------
#!/usr/local/bin/python
# -*- coding: utf-8 -*-

print "Content-type: text/html\n"
print "hello world "
-------------------------

そして、「www」フォルダ以下に入れる。

-----気をつけるが何点かある-----

1.「/usr/local/bin/python」は自身のサーバー環境を確認。
2.改行コードは「LF」にする。
3.アップロードしたファイル及び、ディレクトリのパーミッションは「755」か「705」にする。
4.「Content-type: text/html」は必須。無いと Internal Server Error になる。詳細はこちら
--------------------------------

さくら共用サーバーにcabochaをインストールする

さくら共用サーバーにcabochaをインストールした際の覚書。

cabochaのインストールや利用方法についてはこちら

前提として、mecab0.97が入っている。
インストール場所は、/home/username/local とする。

1.CRF++をインストールする

----------------------------------------------------
//ダウンロード。「https」だとエラーが出る。
wget http://crfpp.googlecode.com/files/CRF%2B%2B-0.58.tar.gz

tar xzvf CRF++-0.58.tar.gz //解凍

//「$HOME」が「~(チルダ)」だとエラーが出る。
./configure --prefix=$HOME/local

make install //インストール。
----------------------------------------------------

2.cabochaをインストールする

最新版であった「cabocha-0.67」をダウンロードした。
MeCab (0.993以降)が必要と記述されていたが、構わず進めた。

----------------------------------------------------
wget http://cabocha.googlecode.com/files/cabocha-0.67.tar.bz2
----------------------------------------------------

続けて、以下のコマンド。
----------------------------------------------------
tar xzvf cabocha-0.67.tar.bz2
cd cabocha-0.67
./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only LDFLAGS="-L$HOME/local/lib" CPPFLAGS="-I$HOME/local/include" --with-mecab-config=$HOME/local/bin/mecab-config
make
make install
----------------------------------------------------

すると、make installのところでエラー発生!

エラー内容
----------------------------------------------------
morph.cpp: In member function 'virtual bool CaboCha::MorphAnalyzer::parse(CaboCha::Tree*) const':
morph.cpp:197: error: 'mecab_lattice_new' was not declared in this scope
morph.cpp:203: error: 'MECAB_ALLOCATE_SENTENCE' was not declared in this scope
morph.cpp:203: error: 'mecab_lattice_add_request_type' was not declared in this scope
morph.cpp:207: error: 'mecab_lattice_set_sentence2' was not declared in this scope
morph.cpp:209: error: 'mecab_parse_lattice' was not declared in this scope
morph.cpp:211: error: 'mecab_lattice_strerror' was not declared in this scope
morph.cpp:214: error: 'mecab_lattice_get_bos_node' was not declared in this scope
morph.cpp: In static member function 'static void CaboCha::MorphAnalyzer::clearMeCabLattice(mecab_lattice_t*)':
morph.cpp:223: error: 'mecab_lattice_clear' was not declared in this scope
morph.cpp: In static member function 'static void CaboCha::MorphAnalyzer::deleteMeCabLattice(mecab_lattice_t*)':
morph.cpp:228: error: 'mecab_lattice_destroy' was not declared in this scope
*** [morph.lo] Error code 1

Stop in /home/username/local/cabocha-0.67/src.
*** [all-recursive] Error code 1

Stop in /home/username/local/cabocha-0.67.
*** [all] Error code 1

Stop in /home/username/local/cabocha-0.67.
%
----------------------------------------------------

エラー内容の詳細は不明だが、mecabとcabochaのバージョンが合ってないことがエラー原因と当たりをつけて、cabochaのバージョンを下げてリトライ。
(後日、新しい最新のmecab入りにcabocha-0.67を試みたところ、エラーも出ずインストールできた)

cabocha0.60のインストール
----------------------------------------------------
wget http://cabocha.googlecode.com/files/cabocha-0.60.tar.gz
tar xzvf cabocha-0.60.tar.gz
cd cabocha-0.60
./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only LDFLAGS="-L$HOME/local/lib" CPPFLAGS="-I$HOME/local/include" --with-mecab-config=$HOME/local/bin/mecab-config
(make) ← 実行コマンドを読み返したが抜けていた・・・
make install
----------------------------------------------------

あっさりインストールできた。

cabochaを実行
----------------------------------------------------
/home/username/local/bin/cabocha
----------------------------------------------------

※パスも通しておく。パスが通っているにもかかわらずcabochaが実行できない場合は、サーバーに再ログインする。

テキストファイルに書いたpythonスクリプトからcabochaをimportを試みるとエラーになる場合は、こちら

mecabをインストールしたら、これもやる。
----------------------------------------------------
mecabで半角記号が名詞,サ変接続になるのを解決する
----------------------------------------------------