2010/12/12

pymongoをインストール

さっきの記事の環境にpythonからmongoを操作するためにpymongoをインストール

ぐぐるとeasy_install でインストール出来るらしい

easy_install は デフォルトでは入っていないと。。

sudo apt-get install python-setuptools

これでeasy_installが入るらしい

sudo easy_install pymongo

完了!簡単!

ubuntu 10.04 on さくらvps にmongoDBをインストール

mongoDBのHPに書いてある手順通りに

apt-add-repository 'deb http://downloads.mongodb.org/distros/ubuntu 10.4 10gen'

The program 'apt-add-repository' is currently not installed. You can install it by typing:
sudo apt-get install python-software-properties

ってエラーが返されたので
素直にしたがってpython-software-propertiesをインストール

sudo apt-get install python-software-properties

その後もう一度

apt-add-repository 'deb http://downloads.mongodb.org/distros/ubuntu 10.4 10gen'

リポジトリが無事追加されたので

sudo aptitude update

公開鍵の取得
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

その後安定版mongoDBのインストール
sudo aptitude install mongodb-stable

多分インスコできてるはず

2010/12/09

mysql5.1でeuc-jp(ujis)を使用する

久々に大ハマリ。
mysql4.0系で作られたアプリをmysql5.1系に移行する作業中

mysql5.1にeuc-jpでインポート出来なかった。
文字化けして????
みたいな感じになってた。

解決策は
my.cnfに

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

[mysql]
default-character-set=ujis

以上を追加。mysql再起動。
ハマったハマった

2010/12/08

さくらのVPSでダウンロード速度が遅いのを修正メモ

さくらVPSにてサイトを運営している。
環境はcentOS64it apache php mysqlというありがちなもの

普通にアクセスする分には問題なくおもえたが
プロバイダで固定IPを借りていて
固定IPでアクセスすると以上に遅い。1kB/sも出てない感じ
http以外のftp,scpなどでも遅い。

しかも、ubuntuからアクセスした場合は正常で
windowsからアクセスした場合のみ現象が現れる

最初パケットフィルタリングあたりで引っかかってるのかと思い
iptablesを再設定。
なんか一旦うまくいったかにみえたけど、翌日確認してみると遅いまんま
なんか別の原因があるのかと思いググってみると以下の記事を発見した

TSOが原因でさくらVPSへのウェブアクセスが異常に遅い
全く同じ現象だった。

記事に載っていたさくらのヘルプページにて解消方法が載っていた
さくらのVPSで「CentOS」を利用していますが、回線速度が遅くアクセスに時間がかかります。

環境依存性が強いので気づいてない人が多いっぽいけど
次回さくらVPSを借りるときには初期設定として忘れずにやっておきたいです。

2010/12/06

php5.3でphpMyAdmin2のインストール時に出るエラーの解消

Deprecated: Function eregi() is deprecated
のエラーが出る

/libraries/select_lang.lib.php 146行目


if (($envType == 1 && eregi('^(' . $expr . ')(;q=[0-9]\\.[0-9])?$', $str))
を以下のように書き換え
if (($envType == 1 && preg_match('/^('.$expr.')(;q=[0-9]\.[0-9])?$/i', $str))

eregiがphp6系から廃止されることによって出るエラーっぽい

すると今度は

Deprecated: Function split() is deprecated in ***** scripts/setup.php on line 610
というエラーが出た。

こちらもsplitが廃止(非推奨?)になることによって起こるエラーっぽい
上のファイル内にsplit関数が4箇所使われているので
それらをexplodeに置換すると直る

2010/12/05

python今後の学習マイルストーン

とりあえずdjangoをローカル(ubuntu10.04)上で動かしてみる。
とりあえずdjangoをgoogle app engine上で動かしてみる
とりあえずgae上でモバイルサイトを作ってみる
とりあえずdjangoでモバイルサイト、ガラケー用のサイトが作れるかを考慮してみる
python on gae でモバイルサイトで作成

pythonのクラス

モジュール


# -*- coding: utf-8 -*-

class testclass2:
def __init__(self , code , str = "init string"):
self.code = code
self.str = str

def setCode(code):
self.code = code
def setStr(str):
self.str = str
def showStatus():
print "code = " + self.code
print "str = " + self.str


これをメインで呼び出して

# -*- coding: utf-8 -*-

if __name__ == '__main__':
from mod000 import testclass2
testclass2 = testclass2(4 , "日本語")

testclass2.showStatus()



ってすると
TypeError: showStatus() takes no arguments (1 given)
てエラーがでる。
def showStatus(self)
にしないといけないとか?

showStatus(self)
にするとエラーが変わって
TypeError: cannot concatenate 'str' and 'int' objects
ってなったこれはstringとintを結合出来ないってエラーだな


def showStatus(self):
print "code = " + str(self.code)
print "str = " + self.str


これで動いた。
なんか引数のないメソッドが作れない?のに違和感を感じる。
まぁなんか思い違いしてるっぽいけど、
放置でいいやwそのうち分かる日がくるでしょう