[Mac] phpでcurlが入って無かった

ちょっとお遊びでtwitter botでも作ろうかと思ってphpのOAuthライブラリのtwitteroauthを使おうと思ったら

PHP Fatal error: Call to undefined function curl_init() in /hogehogehogehoge/twitteroauth.php on line 199

って怒られた。

curlってwgetみたいなやつだっけ?
phpでそれ関係使ったこと無いので気付かなかったんだけど、phpでcurlを使えるようにしないとダメっぽい。
portでphp入れてたので以下でおkだった

$sudo port install php5-curl

Filed under: Internet,PHP,Programming — maesan 10:59 PM

WindowsでBasic認証のWebDAVをマウントできない件

ちょっとGB単位のファイルを遠隔地とやり取りしないと行けなくなって、なかなかオンラインストレージでそんな都合のいいのも少ないのでおウチのサーバーにWebDAVサーバー作っときゃイイんじゃね?って思ってやってみました。

サーバー構築方法

って言ってもApache2に標準でDAVのモジュール入っているので詳細は書きませんが、http.confとかでmod_davとmod_dav_fsが有効になってればおk
おウチのCentOSはデフォルトで有効になってた(前に自分でやったのかもしれないけど覚えてないw)
Debian系なら
a2enmod dav
a2enmod dav_fs
しとけばおk

んで設定を<Location>なり<Directory>なりでDavを指定する
今回はVirtualHostでやりたかったので以下の設定で試した

<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName dav.example.com
DocumentRoot /home/dav/public
<Directory /home/dav/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# ココからDAVの設定
Dav On
AuthType Basic
AuthName DAV
AuthUserFile /home/dav/.htpasswd
Require valid-user
</Directory>
</VirtualHost>

接続

Macの場合はFinderでcommand+kしたらネットワークのマウントできるので、URL入れてBasic認証のユーザーとパスワード入れたらおk、簡単

Windowsの場合にハマってしまった。
試したのはWindows7なのですが、マイコンピュータから「ネットワークの場所の追加」やったら「有効なフォルダではない」って言われるし、ネットワークから「ネットワークドライブの割当」ってやったら認証通らないし軽く途方に暮れた。。。

で、いろいろと調べてみるとどうやらWindowsの仕様ではWebDAVをマウントするためには、Basic認証の場合SSLでないとダメらしい。httpでBasic認証のWebDAVをマウントしたい場合はレジストリを書き換えればよいらしく、
¥HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥WebClient¥Parameters
のBasicAuthLevelを2に書き換えればおk
書き換え後はコマンドプロンプトでwebclientを再起動したら接続できるようになりました。
>net stop webclient & net start webclient

取りあえず素直にSSLの設定をすることにします><

参考

windows7でBASIC認証のかかったWEBDAVにログインできません

Filed under: Internet,PC — maesan 12:28 PM

[Python] MySQLdbでDictCursorとか知らんかったし

PythonでMySQLdbつかってデータを取得する時にこんな感じにやってた
DBはこのエントリーのやつとして

import MySQLdb

con = MySQLdb.connect(db="currency", host="127.0.0.1", port=3306, user='root', passwd='root')
sql = "select target, value, inverse, created from currencies order by created desc"
cur = con.cursor()
cur.execute(sql)
row = cur.fetchone()
print row

実行結果はこんな感じでタプルで返ってくる

(‘EUR’, 0.0089999999999999993, 111.111, datetime.datetime(2010, 12, 3, 22, 4))

この場合、為替レートととろうと思ったら row[2]とかしないといけないので全く直感的じゃないよね。
で、phpのmysql_fetcharray() したときみたいな辞書(ハッシュ)で扱いたいなぁと思ったのでこんなことやってみた。

fields = [field[0] for field in cur.description]
dict_row = dict(zip(fields, row))
print dict_row

こうすると望み通り辞書でデータが扱えるようになってうれしい

{‘inverse’: 111.111, ‘target’: ‘EUR’, ‘value’: 0.0089999999999999993, ‘created’: datetime.datetime(2010, 12, 3, 22, 4)}

って満足してたら実はDictCursorって便利なのがあったらしく

from MySQLdb.cursors import DictCursor

cur = con.cursor(DictCursor)
cur.execute(sql)
row = cur.fetchone()
print row

ってやったら上のと全く同じの取得できた><

{‘inverse’: 111.111, ‘target’: ‘EUR’, ‘value’: 0.0089999999999999993, ‘created’: datetime.datetime(2010, 12, 3, 22, 4)}

参考ページ

ジャンゴ バックエンドに依存しない DictCursor
pythonのmysqldbの使い方メモ

Filed under: Programming,Python — maesan 11:36 PM
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)
 iTunes Store(Japan)