Archive for September, 2006

価格.com のAPIを使って最安値情報をRSSで

Sep 27 2006 Published by funaki under つくる

価格.comのAPIが公開されました。
今自分が欲しい商品があって、その最安値情報をRSSで取得したかったのでさくっと作ってみました。

いろいろ説明不足で不親切なサービスのような気もしますが、、ひとまず公開。

価格.com の最安値情報をRSSで

どうしてもこういうロゴを一度使ってみたかった、というのもあります。(Web2.0 Logo Creator by Alex P

6 responses so far

using API; Web APIの最新情報を載せたブログを開設

Sep 19 2006 Published by funaki under つくる

using API;

Web API(ウェブサービス)に関するニュースをお届けします。

日本で公開されているAPI一覧に(下書き)と書いて公開したまま清書していなかったのですが、ここ数日APIが続々公開されたのに触発されて専用のブログを立ち上げることにしました。

コンテンツ系に手を出すのは初。APIを公開しているサイトももちろん取り上げていきますが、ゆくゆくはAPIをつかって面白いハックを披露しているサイトを発掘していきたいと思っています。ご期待ください!

One response so far

libpqxx(PostgreSQLのC++用ライブラリ)を使ったメモ

Sep 17 2006 Published by funaki under いじる

PostgreSQLのC言語用ライブラリはlibpqで、C++用のライブラリはPostgreSQL7.3からlibpqxx、それ以前はlibpq++という名前だったようです。libpqは割とドキュメントやサンプルが豊富ですが、libpqxxはPostgreSQLのドキュメントからは分離しておりサンプルが少なかったので使ったときのメモ。

ダウンロードはlibpqxxのサイトから。インストールは解凍して./configure, make, make installで問題なし。PostgreSQLは8.1.4、libpqxxは2.6.8。

libpqxxのチュートリアルには動くコードが見当たらず、ソースの中のtest/test000.cxxなどがサンプルになる。
コンパイルがそのままでは通らなかったので以下のコマンドを打つことになりました。

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
$ pkg-config --libs libpqxx

コンパイルは以下のように。

$ g++ -Wall test.cpp -lpqxx -lpq

test.cppの中身。

#include <iostream>
#include <pqxx/pqxx>

using namespace std;
using namespace pqxx;

int main()
{
    try {
        connection Conn("dbname=test");
        work T(Conn);
        result R(T.exec("select * from test"));
        for (result::const_iterator c = R.begin(); c != R.end(); ++c) {
            cout << c[0].as(string()) << endl;
        }
        T.commit();
        Conn.disconnect();
    } catch (const exception &e) {
        cerr << e.what() << endl;
        return 1;
    }
    return 0;
}

No responses yet

Google Calendar APIを制御するPHPのクラス(未完成)

Sep 16 2006 Published by funaki under いじる

Google Calendar APIを使ってアプリを作ろうと思っていましたが、お蔵入りして未完成のPHPで書いたライブラリだけが残ったので公開しちゃいます。未実装のメソッドも多いですし、エラー処理も適当ですが。

http://www.zuzara.com/pub/GCalender_Service.phps

<?php
require_once 'GCalender_Service.php';
$c =& new GCalender_Service('mailaddress', 'password');
$data = $c->get();
print_r($data);

GoogleのドキュメントはもちろんあるのですがサンプルがJavaとC#なので実際の通信内容を理解するのに時間がかかりました。。

認証の部分が複雑。Google Account Authentication
には2つの認証方式が説明されていて、上記のコードで実装したのはInstalled Applications用です。HTTP1.1のパイプラインは使えない模様なのでいちいち3回アクセスすることになり若干重い。

APIでアクセスするURLにprivateとpublicがありますがそれによってReadOnlyだったり違いがあるので注意(参照)。

なお、HTTPSの通信を行うのでPHPのコンパイルオプションに–with-opensslが必要になります。残念ながらロリポップでは使えず、チカッパなら使えます。

No responses yet

picks!リニューアル、深追い.comに移行

Sep 14 2006 Published by funaki under つくる

picks!をリニューアルしつつ深追い.com(closed)(さくらの専用サーバ)に移行しました。

ロリポップの限界は、1日2万PVといったところでしょうか。思いがけずHDDの容量200M制限に引っかかり、HDDを増量したのでまだしばらくは耐えられそうでしたが、ピーク時のレスポンスが悪かったのと追加したい機能もあったので専用サーバへ。容量がオーバーしたのはアクセスログのファイルサイズが肥大化したためだと思われます。

専用サーバでFedoraCore5を選択したのでPHP5を初運用。しばらくしてノウハウがたまってきたらいろいろ書こうと思います。

2 responses so far

PHP5.1.4でPDOとPEAR::DB, MDB2のベンチマーク

Sep 07 2006 Published by funaki under いじる

以前にPHP5.1.0RC1でPDOとADODB、PEAR::DBのベンチマークを取りましたが、今回は5.1.4でADODBの代わりにMDB2を加えてやってみました。zuzaraのサービスの一部をさくらの専用サーバに移行しようと考えていて、OSでFedoraCore5を選択するとPHP5.1.4になります。

PDO PEAR::DB PEAR::MDB2
PostgreSQL8.1.4 0.008 0.035 0.048

MDB2はどのぐらい速いのかなぁ、期待して試したのですがいまいち?
機能もメソッド名もほとんど同じなので5系ではやはりPDOがよさげ。
なお、testテーブルは1000行のデータが入っています。

pdo.php

<?php
require_once('Benchmark/Timer.php');
$timer = new Benchmark_Timer(true);
try {
    $dbh = new PDO('pgsql:host=localhost;dbname=funaki', 'funaki', '');
    $sth = $dbh->prepare("select * from test");
    $sth->setFetchMode(PDO::FETCH_ASSOC);
    $sth->execute();
    $data = $sth->fetchAll();
} catch (PDOException $e) {
    die($e->getMessage());
}

pear_db.php:

<?php
require_once('Benchmark/Timer.php');
$timer = new Benchmark_Timer(true);
require_once('DB.php');
$db = DB::connect("pgsql://funaki@unix(/tmp)/funaki");
if (PEAR::isError($db)) {
    die($db->getMessage());
}
$sql = "select * from test";
$db->setFetchMode(DB_FETCHMODE_ASSOC);
$data = $db->getAll($sql);

pear_mdb2.php:

<?php
require_once('Benchmark/Timer.php');
$timer = new Benchmark_Timer(true);
require_once('MDB2.php');
$db = MDB2::connect("pgsql://funaki@unix(/tmp)/funaki");
if (PEAR::isError($db)) {
    die($db->getMessage());
}
$sql = "select * from test";
$data = $db->queryAll($sql);

No responses yet

coLinux+GentooでWindows上にLAMPな開発環境構築

Sep 04 2006 Published by funaki under いじる

Development Environment Conferenceも近く開催されるので自分の自宅での開発環境を書いてみる。

長いことVirtualPC2004のお世話になっていましたが先月辺りからcoLinuxに移行しました。coLinuxの方がコンパイル等CPUを使う作業は快適になった感じ。VMwareは試していませんがXを使うわけでもないので今のところcoLinuxで満足。

インストールやネットワークの設定手順等ははてブで「coLinux」タグを探したり、普通にGoogleで探せば解説サイトがたくさんあって助かります。デフォルトだと仮想のHDDは2Gで構築されるので、もう少し増やしておいた方がよかった。。(参照:ハードディスクを増やす

前提条件:

  • ノートPC1台で構築
  • ウェブアプリを作る以上、動作確認にIEは必要&サーバはLinux

インストールしたもの:

  • coLinux 0.6.4
  • Gentoo-2005.1-stage3-ext3

coLinuxの設定ファイル:

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" path="\DosDevices\c:\Program Files\coLinux\Gentoo-2005.1-stage3-ext3" enabled="true" />
    <block_device index="1" path="\DosDevices\c:\Program Files\coLinux\swap_512Mb" enabled="true" />
    <bootparams>root=/dev/cobd0</bootparams>
    <initrd path="initrd.gz" />
    <image path="vmlinux" />
    <memory size="256" />
    <network index="0" type="tap" />
</colinux>

Swapの設定:

# mkswap /dev/cobd1
# swapon /dev/cobd1
# vi /etc/fstab
/dev/cobd/1             none            swap            sw                     0 0

apache+PHP+PostgreSQL(LAMPと言いつつPostgreSQL):

# emerge apache
# emerge postgresql
# emerge --config =postgresql-8.0.8
# touch /var/log/pgsql
# chown postgres /var/log/pgsql
$ pg_ctl -D /var/lib/postgresql/data -l /var/log/pgsql start
# USE="-* cli apache2 postgres unicode ctype fastbuild gd hash iconv memlimit nls pcre pic posix pdo reflection session sockets spl ssl tokenizer truetype zlib xml" emerge php
# emerge PEAR-DB
# emerge samba
# vi /etc/samba/smb.conf
[www]
  comment = www
  browseable = yes
  path = /var/www/localhost/
  writable = yes
  create mask = 0644
  force create mode = 0644
  directory mask = 0755
# useradd -d /home/funaki funaki
# smbpasswd -a funaki

PHPのコンパイルオプションをUSEで決めていますが、詳細はGentooのサイトを参照。emergeがしっかり依存関係解決してくれてすごいなぁ、と思いました。何も入っていないところからぽちぽちコンパイルして入れていくのは結構楽しい。

Gentooのbashはデフォルトのエディターがnanoだったりしてコアな雰囲気が漂っていますがvimを入れつつ、viに変更。

$ tail ~/.bashrc
export EDITOR=vi
export LANG="ja_JP.utf8"

ついでにほとんどいじっていませんが~/.screenrc

vbell off
encoding utf8
termcap xterm* G0:KJ=utf8
escape ^Vv
hardstatus string "[screen %n%?: %t%?] %h"

puttyでWindowsからログインしてscreen+vimでがしがし書くこともあればWindows上からSamba+gvimで書くことも。vimのバージョンは7。以前あれこれいじりましたが、結局7の新機能はあまり使わず。

gvimの設定ファイルはこんな感じです。以前よりだいぶ設定項目が減りました。UTF-8しか使わない、など汎用的ではないです。今入れているプラグインは、

  • closetag.vim
  • EnhancedCommentify.vim
  • matchit.vim
  • minibufexpl.vim

No responses yet