Home > Tags > プログラミング
プログラミング
ObjectiveCふたたび
- 2009-11-15 (日)
- 記事
ちょっとアプリケーションっぽいものの構想ができたので、実現可能かどうか軽くXcodeに手を出してみることにする。教本は以前買ってあったヒレガス本と荻原本。荻原本は言語としての解説なので、Cocoaアプリからせめるヒレガス本と実によく馴染む。
うーむ、例がうまく動かん。「もうそれ使ってないよ」「将来消えるAPIだね」とかそういう警告は無視するにしても、何故だーー。
ヒレガス本の英語が優しくて助かる。
- Comments: 0
- Trackbacks (Close): 0
Processing 言語で遊ぶ
- 2009-11-12 (木)
- 記事
最近ビジュアライゼーションをやっていないので、Processingを試してみることにする。画像、アニメーション、音楽を容易にプログラムするための言語で、Javaに変換して実行される。そのため文法も Java っぽい。
まずは、ダウンロードしてOS Xにインストール。起動してみるとソースコードを入力するエディタが出た。千葉商科大学政策情報学研究科 プレゼンテーション法の講義を参考にいくつか改造しながら試してみると、大体要領がわかってきた。結構素直で使いやすい。
はまった点が一つ。Processing で obsolete な関数を使おうとするといきなりウェブに飛ばされてしまった。シンタックスハイライトしている部分と、そのページにあるChangesを見比べたところ、どうやら framerate(30); という部分が frameRate(30); になるらしい。一文字なおしたら無事makeが通るようになった。
しばし、MSXを思い出しつつサンプルコードをいじって遊ぶ。うーん、楽しい。矢張り結果がすぐ絵と音でわかるプログラミング環境って素晴しいものだ。
Gallery of Computationを見ると、色々な表現とそのソースコードが入手できる。しばらくはこれで遊べそうだ。
しかし、その前にIDE環境を整える必要がある。折角OS X にはXcodeという快適な環境があるので、使わないのはもったいない。
まずはMac Dev Centerから最新版の Xcode を入手して、3.2→3.2.1にアップグレード。色々参考にして
- Java Applet でプロジェクトを新規作成
- /Applications/Processing.app/Contents/Resources/Java/core.jar を作成したプロジェクトの lib フォルダに放りこむ(CLASSPATHはどこで通すんだ…?)
- resource ディレクトリに Processing で使う画像やフォントを放りこむ。今回は必要なし
とまでやって後はアプレット風味で遊ぼうとしたところで本日は終了。面倒すぎるので素直にProcessing単体で遊ぶかも。
- Comments: 0
- Trackbacks (Close): 0
GDB7.0でトレース逆流
- 2009-10-16 (金)
- 記事
GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた – 日記を書く [・w・] はやみずさん
ほほう、指定してからの部分だけとはいえ、break しなおさないでいいのは嬉しいな。スタックオーバフローでどの程度役にたつか試してみるか。
- Comments: 0
- Trackbacks (Close): 0
紀元前のWordPress(2)
- 2009-09-13 (日)
- 記事
ただひたすらに調べまくる。先日の調査は生温かったので、今度はきっちし追求。
WordPress, PHP , PHPのライブラリ、MySQL、DBの内容…全部しらべた結果、PHP の date(), gmdate() で ‘Y’ (4ケタ年号)を使った場合に問題となることが発覚。
PHPのBTSを見てみたところ、あった.PHP Bugs: #48276: date(‘Y’) returns 0000がそうらしい。
PHP 5.3.0RC2と、PHP 5.2.10あたりのバージョンで、アーキテクチャが PPC だと発現するようだ。そして今の環境は、PowerPC の Mac mini に、Leopard 付属の PHP 5.2.10。うん、あっている。
解決方法としては、こんなところかな。上のものほど根本的な解決。
- Apple がなおしてくれるのを待つ。
- PHP を独自ビルドにして、Apache が参照するモジュールを入れ替える。
- WordPress を適当にパッチをあてて動かす。
まず、Appleがなおしてくれるのは内容的に期待できない。脅威度が低かったりマイナーだったりするとセキュリティ上の問題でも延期するし。OSX Server ならばともかくクライアントだしね。
次のPHP独自ビルドは、できれば避けたい選択肢。きちんとmakeするのは正直しんどい。前にやった時は謎のドツボにはまって、画像がアップロードできないなんて状態になっていた。
というわけで、まずはお手軽に、それっぽい関数にパッチをあてて試してみる。案の定 wp-include/functions.php に current_time() なんてものがあったので、試しに改変。
return ( $gmt ) ? ereg_replace('0000', "20" . gmdate('y'), gmdate( 'Y-m-d H:i:s' )) : gmdate( 'Y-m-d H:i:s', ( time() + ( -9 * 3600 ) ) );
うーん、きいていないなあ。調べてみると各所で date(), gmdate() 使いまくりで全然使用されていない。ダメですな。
というわけで、gmdate() を使っている関数を列挙してみると…フムン。ふふ…いいさ…やってやるさorz
- import/blogger.php
- import/blogware.php
- import/rss.php
- includes/dashboard.php
- includes/template.php
- includes/upgrade.php
- options-general.php
- wp-admin/admin-ajax.php
- wp-admin/gears-manifest.php
- wp-admin/import/blogger.php
- wp-admin/import/blogware.php
- wp-admin/import/rss.php
- wp-admin/includes/dashboard.php
- wp-admin/includes/template.php
- wp-admin/includes/upgrade.php
- wp-admin/load-scripts.php
- wp-admin/load-styles.php
- wp-app.php
- wp-content/plugins/ktai_style/tags.php
- wp-content/plugins/post-gallery/thirdparty/phpthumb/phpThumb.php
- wp-content/plugins/post-revisions/post-revisions.php
- wp-content/plugins/wassup/lib/action.php
- wp-content/plugins/wassup/lib/main.php
- wp-content/plugins/wassup/lib/settings.php
- wp-content/plugins/wassup/wassup.php
- wp-content/plugins/wp-amazon/wp-amazon-plugin.php
- wp-content/plugins/wp-cache/wp-cache-phase2.php
- wp-content/themes/wp.vicuna.ext/functions.php
- wp-includes/class-simplepie.php
- wp-includes/classes.php
- wp-includes/formatting.php
- wp-includes/functions.php
- wp-includes/general-template.php
- wp-includes/js/tinymce/plugins/spellchecker/rpc.php
- wp-includes/js/tinymce/tiny_mce_config.php
- wp-includes/js/tinymce/wp-tinymce.php
- wp-includes/link-template.php
- wp-includes/post.php
- wp-includes/registration.php
- wp-links-opml.php
- wp-mail.php
- xmlrpc.php
一応野良ビルドのほうも試してみる。phpinfo() から適当にオプションをひっこぬいて…と。
./configure '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-dependency-tracking' '--with-apxs2=/usr/sbin/apxs' '--with-ldap=/usr' '--with-kerberos=/usr' '--enable-cli' '--with-zlib-dir=/usr' '--enable-trans-sid' '--with-libxml' '--enable-exif' '--enable-ftp' '--enable-mbstring' '--enable-mbregex' '--enable-dbx' '--enable-sockets' '--with-iodbc=/usr' '--with-curl=/usr' '--with-config-file-path=/etc' '--sysconfdir=/private/etc' '--with-mysql-sock=/tmp/mysql' '--with-mysqli=/usr/local/mysql/bin/mysql_config' '--with-mysql=/usr/local/mysql' '--with-openssl' '--with-xmlrpc' '--with-xsl=/usr' '--without-pear'
…面倒。やはり駄目か。
- Comments: 0
- Trackbacks (Close): 0
Amazon の Product Advertising API に対応してみた
- 2009-08-15 (土)
- 記事

WordPress で利用していた Amazon Reloaded の代わりを作成するべく調査。適当にRubyでライブラリを漁ってみると、Yoosee さんのAmazon Product Advertising API を Ruby から使うがひっかかったので読んでみる。これならば今回の目的に合いそうだ。
することは単純
- Amazonの検索フォーム
- 検索結果を中サイズの画像と、アフィリエイトリンクで出す
- リンクからSEO用の書名部分を削る
- できたものを、コピー&貼り付けしやすいように textarea 要素で表示する
70行程で目的のものが完成。ほとんどの部分は、ベタでHTMLを埋めこんだ(今回は自家用かつ小規模なのでこれで充分)行数。
うむ、これならば使えそうだ。
- Comments: 0
- Trackbacks (Close): 0
Amazon の Product Advertising API に挑戦してみた
- 2009-08-13 (木)
- 記事
8/15から、Amazon の検索結果を外部から使うAPIが、サービスの秘密鍵を取らないと利用できなくなる。
仕方がないので、まずは Amazon のアフィリエイトのページから、API のキーを取得しようとしてみる。うぇ、これは米国 Amazon で取得だからアカウントが別なのか。別ページに日本語で逐次解説が用意されていなかったら、投げだしていたな。そんなこんなで Access Key ID と Secret Access Key を取得。
WordPress で現在利用しているのはAmazon Reloaded for WordPress。しかし、これは最新のAPI変更に対応していない。仕方がないので他に適当に数個試してみるも、使い勝手が良いものがなかなか無いし、そもそもAPIに対応していないものばかり。
wp-amazon (Amazonリンク生成)も試してみたけれども、何故か検索結果が出ない。
またか、また作るしかないのか。そりゃ、やろうと思えばできるけどねえ。面倒な。
しばらくはテキストのみでAmazonのページで一々リンク生成するしかないか。と思って試してみたら、1×1 のウェブバグ画像が漏れなくついてくる罠。なんだこの行儀の悪いものは。誰か私に素直に画像とリンクを張りつけさせてくれ。
- Comments: 0
- Trackbacks (Close): 0
フォト蔵用俺ツール作成
- 2009-08-01 (土)
- 記事

使っていたサービスがエラーしか返さないようになったので、さくっと作ってみる。要求仕様はこれ以上にない位明確なので、設計も実に明快。
横240pxのサムネイル画像と、元ファイル本体へのリンクを作るだけのものを Ruby の cgi, xmlsimple あたりででっちあげて終了。
これで写真がとりあえず復活。
ソースコードは短いのだが、セキュリティ対策を考えずに作った自家製ツールのため非公開とする。流石に職業柄抜けており少々の手間で治るとわかっているものをそのまま出すのは恥かしい。
- Comments: 0
- Trackbacks (Close): 0
シェルコード! シェルコード!
- 2009-07-23 (木)
- 記事
会社の上司Aの肝煎りで、一日部内で業務を止めてシェルコードに関する集中勉強会をする。
普段は Ollydbg ばかりで、Immunity Debuggerは初めて使ったが、DLL 内のトランポリン用命令の探索がさくっとできるのは便利そうだ。一々ダンプさせてgrepさせていたのが馬鹿のように思える。
そして、今はシェルコードですらインタラクティブ+ヴィジュアルで構築の時代なのか。昔ちまちまと禁止文字を考えながらやっていた時代は遠くなったものだ。まあ、それでも色々と手法は必要なわけで、初心者がすると大変なわけだが…。
知っている知識の実践と確認という点があるとはいえ、色々とためになる時間だった。
- Comments: 0
- Trackbacks (Close): 0
Macでは「何回も何回も観てニヤニヤ」以外に何がバレるのか
- 2009-07-05 (日)
- 記事
高木浩光@自宅の日記 – Macでは「何回も何回も観てニヤニヤ」がバレる
mdls でファイルを開いた日付の一覧が見えるというので、他にはどんなものが見えるのかを調べてみた。
「Mac OS X システム管理」によると、属性の本体は各ボリュームの .Spotlight-V100 にある。わざわざインデックスを作りなおさせなくても、このファイルさえどうにかすればいいように見える。
ただ、内容的にかなり複雑なようなので変更は mdutil(1) を介せと同書にあった。mdutils を使うと、# mdutil -E / でインデックスの削除&再作成となる等いくつかの操作ができるようだ。
指定できる属性は、Apple の Spotlight Metadata Attributesに詳しい。
共通部分(Common Metadata Attribute Keys)だけでもこれだけあるので、本気で調べれば色々と見つかりそうだ。日付関連だけでも kMDItemAttributeChangeDate(最終変更日), kMDItemContentCreationDate(作成日), kMDItemContentModificationDate(変更日), kMDItemDueDate(到着日?不明), kMDItemLastUsedDate(最終利用日)とある。
- kMDItemAttributeChangeDate
- kMDItemAudiences
- kMDItemAuthors
- kMDItemCity
- kMDItemComment
- kMDItemContactKeywords
- kMDItemContentCreationDate
- kMDItemContentModificationDate
- kMDItemContentType
- kMDItemContentTypeTree
- kMDItemContributors
- kMDItemCopyright
- kMDItemCountry
- kMDItemCoverage
- kMDItemCreator
- kMDItemDescription
- kMDItemDisplayName
- kMDItemDueDate
- kMDItemDurationSeconds
- kMDItemEmailAddresses
- kMDItemEncodingApplications
- kMDItemFinderComment
- kMDItemFonts
- kMDItemHeadline
- kMDItemIdentifier
- kMDItemInstantMessageAddresses
- kMDItemInstructions
- kMDItemKeywords
- kMDItemKind
- kMDItemLanguages
- kMDItemLastUsedDate
- kMDItemNumberOfPages
- kMDItemOrganizations
- kMDItemPageHeight
- kMDItemPageWidth
- kMDItemPhoneNumbers
- kMDItemProjects
- kMDItemPublishers
- kMDItemRecipients
- kMDItemRights
- kMDItemSecurityMethod
- kMDItemStarRating
- kMDItemStateOrProvince
- kMDItemTextContent
- kMDItemTitle
- kMDItemVersion
- kMDItemWhereFroms
kMDItemUsedDate が無いのは、何故だろう。Xcode 3.0 リファレンスマニュアルで MDItem Class を見ても無かった。謎だ。
- Comments: 0
- Trackbacks (Close): 0
OpenSocial@mixi
- 2009-04-26 (日)
- 記事
mixi Developer Center (ミクシィ デベロッパーセンター)
mixi がmixiアプリという名前でOpenSocial対応したとのことなので、試そうとしてみる。どうやら、専用に http://platform001.mixi.jp/ というサイトがあるので、そこに登録&利用する形態らしい。アクセスには別途の登録が必要なので、通常利用の人に利用してもらえるわけではないわけだ。ついでに言えば、goo と比べて若干API側で制限があるらしい。
というわけで、一気に気力が減退しつつも、OpenSocial の API と mixi 提供のサンプルを見比べて色々考えてみる。
アイドレスがらみで色々できると面白そうだなとは考えたのだが、文殊から取れるデータが、検索まではできそうだが国名が無かったり性質上個人ページに誘導できそうにない、などで若干利用するには難しい。藩国個々のページは多彩すぎてフォローしきれない。
おまけに最大の問題として、現在はまだ敷居が高いので対象層に使われない。フィードバックを受けることがなければその場の一発屋で終わる。
まあ、そういうわけで今回はほとんど調べただけ。
- Comments: 0
- Trackbacks (Close): 0
Ruby Gems の罠
- 2009-03-26 (木)
- 記事
仕事で久しぶりに CGI を組もうとして、gems の罠にはまる。
require ‘dbi’
した時だけエラーになると思ったら、gems で入れたものは rubygems を require してからでないと使えないとは。普通にコマンドラインだと何なく実行していたので、無断に半日程はまってしまった。
- Comments: 0
- Trackbacks (Close): 0
WordPress をキャッシュつきのまま iPhone/iPod touch 対応させる
- 2009-03-21 (土)
- 記事
p2ex を iPod touch で見てみると、きちんと対応しており、メニュー画面からして対応したものになってくれる。内容も、きちんとタップで引用箇所が見えたり、外部を別ウィンドウで開いたりで、なかなかに見やすくてGOOD。
勢いで、WordPress の方も Ktai Style (携帯対応プラグイン)とWPtouchを入れて、モバイル対応にする。Ktai Styleは意図的にiPhone非対応なため、iPhone/iPod touch 用にわざわざ別に入れている。
実際に閲覧してみると、WP-Cache が効いてしまい PC 用の画面のままでうまく見えなかったので、Ktai Style のサイトにあるものを参考に、wp-content/wp-cache-config.php を編集し、$cache_rejected_uri
の前にキャッシュ無視判定を入れる。なお、WordPress の管理画面から WP-Cache の設定を変更すると消えてしまうので要注意。
$ua = $_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(iPod|iPhone)/', $ua)) {
$cache_enabled = false;
$super_cache_enabled = false;
}
なお、User-Agent の判定は、iPhone/iPod touch のUAが以下になっているとの情報(複数の情報より)から適当にマッチさせている。
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; ja-jp) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A110a Safari/419.3 Mozilla/5.0 (iPod; U; CPU like Mac OS X; ja-jp) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3
- Comments: 0
- Trackbacks (Close): 0
Flickr の制限にひっかかった
- 2009-02-22 (日)
- 記事
無料アカウントでは表示するのが最近200枚までとの事なので、それ以上なら消すかプロアカウント($2/month)を買えということらしい。
Flickr を利用してきた理由は主に3つ。
- iPhoto から一括リサイズ/アップロードできる
- コメントをつけて alt や title に反映できる
- 画像だけサーバを分散することによるボトルネックと転送量の解消
まあ、どれもそんなにたいした理由ではないので、今迄のはそのままにして、今後は WordPress 本体の機能に戻してもいいかな。
と思って iPhoto 用の WordPress Upload Plugin を探してみたのだが、意外に無い。Photonは動かなかった。
妥協するとこんな感じかな。
- export は自前でやる。リサイズも iPhoto で。
- アップロードのみ自動化。
- 貼り付けは今迄通り頑張る。
投稿プロトコルとして、RFC5023 に対応した AtomPub と、MT 等との互換性のある XML-RPC wp が使えるようだ。
…自作するしかないのか?
今回は全部手動でやったが、何故かウェブ上から表示画像がリサイズできなくて困る。しかもこれ、リサイズできたとしても表示画像の幅を変えているだけだから無駄なんだよねえ。はやくなんとかしないと。
- Comments: 0
- Trackbacks (Close): 0
WSH を使ってみた
- 2008-11-27 (木)
- 記事
仕事で少々ウェブの自動操作が必要となったので、WSH(Windows Script Host)を使ってみる。WSH の本体となる wscript.exe (WindowsXPに普通に付属している)を通じて実行する際には、VBScript, JavaScript などが選べるが、今回は楽したいので慣れている JavaScript を選択。
この連載の第11回にあるように、InternetExplorer Object オブジェクトを利用すれば、とりあえずどこか目的のページを開くところまではできる。
そして、後は JavaScript らしく DOM で適当な a 要素のノードを探して、click() メソッドでリンクを移動。これで、基本的な操作は大体できた。
ちょっと MHTML で印刷したいとかもあったが、調べた結果強引に SendKeys メソッド でキーコードを適当に Sleep を挟みつつ送信するしか無さそうだったので、実行。
うねうねと微妙にIEが自動操作される謎のプログラムができた。まあ…使えればいいか。
ZIP ファイルの作成方法も調べていたら見つけたが、PK の識別子と若干のZIPファイルヘッダを含んだバイナリファイルをテキストファイル扱いで作成、その後 XP の機能で ZIP フォルダとして開いて、入れたいファイルをコピー、という実に漢らしい方法。なんというバッドノウハウ。Windows ではコマンドラインの ZIP を探すのは難しいし、仕方がないのか。
- Comments: 0
- Trackbacks (Close): 0
表に出たズーミング・ユーザ・インタフェース(ZUI)
- 2008-10-17 (金)
- 記事
Lookup! せんせーしょん:次元を超えた画像解析技術——「Deep Zoom」と「Photosynth」を体験する (1/4) – ITmedia +D PC USER
Zooming user interface(ZUI)をSilverLightという商用ライブラリで公式実装しましたという話。元となったPad++からすると十数年、やっと表に出てきたのかという感慨となる。
そのため関連研究も多く、国内でも Apple で iPhone の日本語 UI に関わっている増井俊之氏の LensBar や、高田哲司氏の見えログも、ドキュメントの詳細度をズーミングするという部分において、ZUI の延長線上にあると言える。iPhoneの操作なども一部そうだし、映画「ジュラシック・パーク」で「UNIXならできるわ!」と使われていたインタフェースもこの系列だ。
現在はまだ本当に超高解像度にズームするだけのようだが、元々のZUIの意義からすると、ズームした状態と引いた状態それぞれにおいて UI が動作する状態になってもおかしくはない。
要素技術は既にあり、例えば、Appple の Spaces は画面を分割した上でそれぞれの画面状況を一望できる。これで直接操作さえできれば、1レベルの段階的ZUIと言っても過言ではない。近年やっとOSに実装されはじめた仮想画面だが、元々そういうものをまとめて視点を拡大/縮小しながら取り扱おうというのがZUIである。
インタフェース研究に貪欲でありしっかりとした研究基盤を持つマイクロソフトが出してきたということは、将来の姿についても実験的には考えているのだろう。3D では LOD(Level of detail)という類似技術があたりまえのように備わっている。将来の姿が楽しみだ。
- Comments: 0
- Trackbacks (Close): 0
Home > Tags > プログラミング
