digital matter

2008 年 11 月 のアーカイブ

iPhone SDKと"A signing identity matching this profile could not be found in your keychain."

iPhone SDK 2.2が出たタイミングで、そろそろ開発をしようと思い、ひとまず環境を構築中…

Xcodeのオーガナイザで、PROVISIONING PROFILESに「A signing identity matching this profile could not be found in your keychain.」と表示されて実機に転送できない現象があった。

色々調べて見たら、Developer ProgramのCertificatesから、自分で登録したキーをダウンロードしてキーチェーンに取り込まないといけなかったらしい。

登録してXcode再起動したら見事に実機に転送できるようになりました。

自分のところで作ったキーだからと油断してたわ…うぁー。

CakePHP 1.2でオーバーライドが効かなくなる

レアケースだし、何かしらのミスだと思うのだけど一応。

app_controller.phpをはじめ、app/側に何を置いてもcake/側のファイルが優先されてしまって処理が効かないという現象があった。

app/tmp/cache/以下のキャッシュファイルを全部消したら直った。

直らなくて数時間無駄にしてしまった…

CakePHP 1.2でXML-RPCサーバを作る

CakePHPでXML-RPCを受取る方法を調べていたら、タイムリーに超便利な方法が紹介されていた。

How to create an XML-RPC server with CakePHP (Articles) | The Bakery, Everything CakePHP

やることは2つ。

  1. xmlrpc.zipをダウンロードして、解凍してapp/vendorsに置く
  2. コントローラを書く

てっとり早く、上記サイトからxml_rpc_controller.phpをコピーして作成すると、設置も簡単に行える。

メソッドごとにコールバックを定義していけばOK。

前回のエントリ[Pythonで簡単にXML-RPCクライアント : blog.loadlimits - digital matter -]で書いたPython版のクライアントの場合はこんな感じで受け取れる。

<?phpApp::import('Vendor', 'xmlrpc');
class AddController extends AppController {
var $name = 'Add';
var $uses = array();
// The XML-RPC server object
var $server = null;
function index() {
// Disable debug information
// Required to generate valid XML output
Configure::write('debug', 0);
// Avoids render() call
$this->autoRender = false;
// XML-RPC callbacks settings
// Use this parameter to map XML-RPC methods to your protected or private controller methods
$callbacks = array();
$callbacks['sample.hogehogeAPI'] = array(&$this, '_saveData');
// Handle XML-RPC request
$this->server = new IXR_Server($callbacks);
}
function _saveData($data = array()) {
ob_start();
var_dump($data);
$str = ob_get_contents();
ob_end_clean();
return $str;
}
}
?>

結果はこんな感じ。

array(6) {
  [0]=>
  array(1) {
    ["image"]=>
    string(4) "hoge"
  }
  [1]=>
  array(1) {
    ["username"]=>
    string(4) "name"
  }
  [2]=>
  array(1) {
    ["title"]=>
    string(10) "item title"
  }
  [3]=>
  array(1) {
    ["mail"]=>
    string(11) "user e-mail"
  }
  [4]=>
  array(1) {
    ["comment"]=>
    string(12) "item comment"
  }
  [5]=>
  array(1) {
    ["itemlist"]=>
    array(4) {
      [0]=>
      int(3)
      [1]=>
      int(2)
      [2]=>
      int(3)
      [3]=>
      int(1)
    }
  }

非常に便利。

Pythonで簡単にXML-RPCクライアント

Pythonでxmlrpclib使うと、簡単にXML-RPCが扱える。

FlashとサーバサイドでXML-RPC使おうとしたときに、サーバ側のAPIのテストと、XMLのサンプルをFlash作る人に渡したりするのだけど、それがちょこっと書くだけでできるので便利。何せ2行で済む。

# -*- encoding: utf-8 -*-
import xmlrpclib

print xmlrpclib.dumps(
    (
        {'image':xmlrpclib.Binary('hoge')},
        {'username':u'name'},
        {'title':u'item title'},
        {'mail':u'user e-mail'},
        {'comment':u'item comment'},
        {'itemlist':[3,2,3,1]}
    ), 'sample.hogehogeAPI')

結果はこんな感じに。

<?xml version='1.0'?>
<methodCall>
<methodName>sample.hogehogeAPI</methodName>
<params>
<param>
<value><struct>
<member>
<name>image</name>
<value><base64>
aG9nZQ==
</base64></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>username</name>
<value><string>name</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>title</name>
<value><string>item title</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>mail</name>
<value><string>user e-mail</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>comment</name>
<value><string>item comment</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>itemlist</name>
<value><array><data>
<value><int>3</int></value>
<value><int>2</int></value>
<value><int>3</int></value>
<value><int>1</int></value>
</data></array></value>
</member>
</struct></value>
</param>
</params>
</methodCall>

簡単すぎる…

んで、この結果をFlashの人に渡して、こんな感じで送ってくれと言える。

サーバのAPIをテストする場合は

# -*- encoding: utf-8 -*-
import xmlrpclib

server_url = 'http://sample.dev/add';
server = xmlrpclib.Server(server_url);

result = server.sample.hogehogeAPI(
        {'image':xmlrpclib.Binary('hoge')},
        {'username':u'name'},
        {'title':u'item title'},
        {'mail':u'user e-mail'},
        {'comment':u'item comment'},
        {'itemlist':[3,2,3,1]}
    )

こんな感じで書き換えてやればOK

RHEL 5.2でSkypeを使う

ニーズ度外視エントリシリーズ。

Skype for Linuxをダウンロード – 最新バージョンをダウンロード

SkypeのサイトにRedHat Enterprise Linux版はないので、一番可能性のありそうなCentOS版を持ってくる。

LinuxにRPMで公開鍵をインポートしてyum経由でSkypeをインストールするメモ – Knowledge Database IT

ほぼまんま、こちらの情報でOK。

$ wget http://www.skype.com/go/getskype-linux-centos
$ wget http://gd.tuwien.ac.at/infosys/phone/skype/rpm-public-key.asc

# rpm –import rpm-public-key.asc
# yum -y install skype-2.0.0.72-centos.i586.rpm

Loading "rhnplugin" plugin
rhel-x86_64-server-5      100% |=========================| 1.4 kB    00:00
Excluding Packages in global exclude list
Finished
Setting up Install Process
Parsing package install arguments
Examining skype-2.0.0.72-centos.i586.rpm: skype – 2.0.0.72-centos.i586
Marking skype-2.0.0.72-centos.i586.rpm to be installed
Resolving Dependencies
–> Running transaction check
—> Package skype.i586 0:2.0.0.72-centos set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
skype                   i586       2.0.0.72-centos  skype-2.0.0.72-centos.i586.rpm   19 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 19 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: skype                        ######################### [1/1]

Installed: skype.i586 0:2.0.0.72-centos
Complete!

こともなくインストール完了。

vncserverを起動して確認してみる。

$ vncserver -geometry 1024×769 -depth 16

で、WindowsマシンからこのサーバのIPアドレス:5901に接続してvncの画面上で

$ Skype &

見事Skype起動完了。簡単。チャットを使いたいだけなのでこれでOK。

Adobe AIR.dll

HKEY_LOCAL_MACHINESOFTWAREClassesAIR.InstallerPackageshellopencommand

c:PROGRA~1COMMON~1ADOBEA~1Versions1.0ADOBEA~1.EXE "%1"

と、謎のリスト。

LAUNCH
-launch
IS_INSTALLED
-isinstalled
WITH_RUNTIME
-withRuntime
URL
-url
RUNTIME
PLAYER_VERSION
-playerVersion
SANDBOX_TYPE
-sandboxType
SECURITY_DOMAIN
-securityDomain
HTTPS-https
USER_EVENT
-fromUserEvent
SEPARATOR
PSN_PREFIX
-psn_
SILENT
-silent
LOG_TO_STDOUT
-logToStdout
LOCATION
-location
DESKTOP_SHORTCUT
-desktopShortcut
PROGRAM_MENU
-programMenu
X1
-x1
UPDATE
-update
WITH_APP
-withApp
UPDATE_X1
-update:x1
INSTALL
-install
STDIO
-stdio
ARP_UNINSTALL
-arp:uninstall
UNINSTALL
-uninstall
INFO
-info
UPDATE_CHECK
-updatecheck
INSTALL_UPDATE_CHECK
-installupdatecheck
APPLY_UPDATES
-applyupdates
UPDATE_INSTALL
-updateinstall
EULA
-eula
EULA_ACCEPTED
-eulaAccepted
ELEVATED_INSTALL
-ei
ELEVATED_UNINSTALL
-eu

詳細不明。

Adobe AIR Application Installer.exe – AKABANA

CakePHP 1.2でオーバーライドが効かなくなる

レアケースだし、何かしらのミスだと思うのだけど一応。

app_controller.phpをはじめ、app/側に何を置いてもcake/側のファイルが優先されてしまって処理が効かないという現象があった。

app/tmp/cache/以下のキャッシュファイルを全部消したら直った。

直らなくて数時間無駄にしてしまった…