Posted at 2012-01-04 20:48:39 under テクノロジ (by key)

衝撃!Squeeze標準のredisは1.2.6だった。

mybike.jpのサーバ移行に伴いデータの引越しを検討していたところ、 memcachedに入っているセッションデータが移せなくて涙した。 redis なら永続化してくれるので、こんなことは無い…と考え、 新サーバではredisをキャッシュストレージに利用しようと誓いました。

で、 django-redis-cache を利用しようとしたところ、 SETEXなんてコマンドはねーよ!とエラーを吐かれて発覚。SETEXコマンドはredis 1.3から追加されており、 コマンド一つでデータ登録とageの設定が行えるものらしい。

とにかく、redis 1.2.6を使うわけには行かなくなった。あれこれググッたところ、 squeeze backportsというapt-line(sidからのbackportかな?)にredis 2が含まれており、 これを呼び出すことでsqueeze環境でredisが使えるようだった。

利用方法は

  1. apt-lineにエントリを足す
  2. aptをアップデートする
  3. redis-serverパッケージをインストール

とする。

具体的には次のようにします。

/etc/apt/sources.listを編集:

deb http://backports.debian.org/debian-backports squeeze-backports main

aptのアップデート:

apt-get update

redis-serverパッケージをインストール:

apt-get -t squeeze-backports install redis-server

これであなたも快適redis 2生活!

元ネタはこちら

Posted at 2012-01-04 01:26:36 under テクノロジ (by key)

Garminデバイスは一部のファイルフォーマットでsemicircleというやつを返してくる(例: Garmin Edge 800)。 最初、何のことだかわからず、この妙な数値はいったいどうやって使えば良いのだろう?と頭をひねったもんですが、 軽くググッてみたところ簡単に度に変換出来るようだったのでメモ。

# semicircle to degrees
latitude * (180.0 / pow(2, 31))
longitude * (180.0 / pow(2, 31))

ということでした。

Tags: gis, python
Posted at 2011-12-03 10:46:29 under テクノロジ (by key)

MyBike.jpで使ってるRabbitMQがいつの間にかクラッシュしてたので対策。 環境はDebian 5.0, RabbitMQは 公式のapt lineから インストール。

Continue reading
Posted at 2011-11-25 23:44:23 under テクノロジ (by key)

本日もsudsを利用してpythonでaffiliate windowをいじくるテスト。 昨日の例 に習ってザクッと初期化。

import suds
url = 'http://v3.core.com.productserve.com/ProductServeService.wsdl'

client = suds.client.Client(url)

userauth = client.factory.create('UserAuthentication')
userauth.sApiKey = 'あーぶらかたぶらー'

client.set_options(soapheaders=userauth)

商品リストはgetProductLst()を呼び出す。デュラエースを探したいなら次のようにする。

client.service.getProductList(sQuery='SHIMANO DURA-ACE')

結果。

(reply){
   oProduct[] =
      (Product){
         iId = 128559266
         iCategoryId = 252
         iMerchantId = 3395
         iAdult = 0
         sName = "Shimano Dura-Ace 7900 SPD SL Road Pedals - 2011"
         sAwDeepLink = "http://www.awin1.com/pclick.php?p=128559266&a=101730&m=3395&platform=cs"
         sAwThumbUrl = "http://images.productserve.com/thumb/3395/128559266.jpg"
         fPrice = 164.99
      },
      (Product){
         iId = 128559456
         iCategoryId = 252
         iMerchantId = 3395
         iAdult = 0
         sName = "Shimano Dura-Ace 7900 35mm Carbon Front Road Wheel - 2011 (Clincher)"
         sAwDeepLink = "http://www.awin1.com/pclick.php?p=128559456&a=101730&m=3395&platform=cs"
         sAwThumbUrl = "http://images.productserve.com/thumb/3395/128559456.jpg"
         fPrice = 551.99
      }
(略)

解ってしまうと意外と簡単。サービスに組み込むにはいくつか気を付けないといけないなーと思ったのは以下。

  • そもそも処理が遅い。秒単位で時間がかかる。
  • iMerchantIdのような外部参照があるので別途取得する必要がある。

Tags: python
Posted at 2011-11-25 01:37:19 under テクノロジ (by key)

Affiliate Window API のサンプルコードがPHP版しかないのでPythonで何とかしてみたメモ。まだまだ調査中。

import suds
url = 'http://v3.core.com.productserve.com/ProductServeService.wsdl'

client = suds.client.Client(url)
userauth = client.factory.create('UserAuthentication')
userauth.sApiKey = 'あーぶらかたぶらー'

client.set_options(soapheaders=userauth)
client.service.getCategoryTree()

結果。

(CategoryTree){
  oCategory[] =
     (Category){
        iId = 97
        sName = "Clothing & Accessories"
        sDescription = "Clothing & Accessories"
        iAdult = 0
     },
     (Category){
        iId = 61
        sName = "Computers & Software"
        sDescription = "Computers & Software"
        iAdult = 0
     },
     (Category){
        iId = 4
        sName = "Electronics"
        sDescription = "Electronics"
        iAdult = 0
     },
     (Category){
        iId = 634
        sName = "Entertainment"
        sDescription = "Entertainment"
        iAdult = 0
     },
     (Category){
        iId = 173
        sName = "Gifts, Gadgets & Toys"
        sDescription = "Gifts, Gadgets & Toys"
        iAdult = 0
     },
     (Category){
        iId = 99
        sName = "Health & Beauty"
        sDescription = "Health & Beauty"
        iAdult = 0
     },
     (Category){
        iId = 421
        sName = "Home & Garden"
        sDescription = "Home & Garden"
        iAdult = 0
     },
     (Category){
        iId = 361
        sName = "Home Appliances"
        sDescription = "Home Appliances"
        iAdult = 0
     },
     (Category){
        iId = 540
        sName = "Jewellery"
        sDescription = "Jewellery"
        iAdult = 0
     },
     (Category){
        iId = 246
        sName = "Sports"
        sDescription = "Sports"
        iAdult = 0
     },
     (Category){
        iId = 347
        sName = "Telephones & Faxes"
        sDescription = "Telephones & Faxes"
        iAdult = 0
     },
     (Category){
        iId = 586
        sName = "Tickets"
        sDescription = "Tickets"
        iAdult = 0
     },
     (Category){
        iId = 328
        sName = "Travel"
        sDescription = "Travel"
        iAdult = 0
     },
     (Category){
        iId = 493
        sName = "Vehicles, Parts and Accessories"
        sDescription = "Vehicles, Parts & Accessories"
        iAdult = 0
     },
}

Tags: python