読者です 読者をやめる 読者になる 読者になる

Windows Azure command-lineと戯れる

Windows AzureでUbuntu 12.04.3 LTSのVMを立ち上げるまでの手順を、公式のドキュメントを読みつつ、淡々とメモしていく。 http://www.windowsazure.com/en-us/manage/linux/other-resources/command-line-tools/ Windows Azure command-lineはMacならばdmgを…

WordPressサイトのドメインを変更する

WordPressで公開したサイトのドメインを後から変更するというのはあまりやらない操作だとは思いますが、どうしてもドメインを移したいとか、公開済みのサイトをコピーしてテスト環境を作りたいといった理由でやらなくてはならないこともあると思います。 基…

ChefでUbuntu 12.04にemacs 24.3をインストールする

Ubuntu 12.04 LTSは、各種パッケージのバージョンやデフォルトの設定に安心感があり、「本当に楽だ、4, 5年前のCentOSと同じくらい鉄板だ」というありがたみを毎日噛み締めております。 しかしながら、多少バージョンが古くて不満を抱くパッケージもなくはあ…

virtualenvwrapper-4.0を使う

emacsがあればあんまり開発環境には拘らない方なので、virtualenvwrapperもウノウラボにこの記事を書いたころから、ずっと同じバージョンを使い続けてきた。 アップデートしなかった理由は、いつからかvirtualevnwrapper単なるシェルスクリプトではなく、vir…

Appiumを使ってMobile Safari上でSeleniumのテストケースを実行する

SeleniumのiPhone DriverはDEPRECATEDらしいので、代替として紹介されている Appium を試してみた。 Appium is an open source test automation framework for use with native and hybrid mobile apps. It drives iOS and Android apps using the WebDriver…

BrunchでChaplinアプリのプロジェクトを作る

プロジェクトの作成 brunchをインストールする。 $ npm install -g brunch brunch-with-chaplinをスケルトンにしてプロジェクトを作成。 $ brunch new myproject --skeleton=git://github.com/paulmillr/brunch-with-chaplin.git プロジェクトディレクトリに…

Riak Source Code Reading #1に参加しました

昨日開催された「Riak Source Code Reading @東京 #1」に参加しました。そして、Riakのbitcaskバックエンドとeleveldbバックエンドのコードに関して発表してきました。その時のスライドがこちら。 https://github.com/kuenishi/riak_scr_jp/blob/master/%231…

RiakのBackendのコードを読む(事前調査篇)

僕よりも詳しそうな人はいっぱいいるのに、なぜかRiak Source Code Reading @東京 #1の担当になってしまったので、Riakのbitcask, eleveldbバックエンドのコードを読んでいく。たぶん最終的にはgistかgithubに資料をまとめるけど、ここに書いてあるのはその…

couchbase-python-clientをmemcacheクライアントとして使う

couchbase-python-clientはCouchbase社が開発しているCouchbaseのクライアント・ライブラリ。「Couchbaseとは何ぞ?」という方は、CouchDBのストレージをMemcache/Membaseに置き換えたKVSだと考えて頂きたい。 https://github.com/couchbase/couchbase-pytho…

hidefを試す

PHP

一流のペチパーとやらにもなれば、「PHPのdefineはコストが高いからねー」とドヤ顔で語りつつ hidef なるものを使うらしい。 http://pecl.php.net/package/hidef しかし、"PHP hidef"とかでググっても、インストールの仕方とかごく基本的なことはともかく、h…

iWebDriverでテストする

昨日のエントリのChromeDriverを試した後、SafariDriverというなかなか有望そうだがイマイチちゃんと動いている感がないソリューションまで試した結果、iPhone向けWebアプリケーションのテストにはiPhoneそのものか、iPhoneシミュレーターを使うのが一番良い…

SeleniumのChromeDriverでUser-Agentを変更する

WebKit、しかもiOSのWebKitでしか動かないコードを通して世界を良くしていますかっ!?(挨拶)前回似たようなエントリを書いた時には分からなかったのだが、SeleniumのChromeDriverでUser-Agentを変更するのは比較的容易だった。これでFirefoxではピクリとも…

Facebookユーザー名からFacebookユーザーIDを調べる

Facebookと連携するアプリを開発していると「このユーザーのFacebookのユーザーIDを調べたい」ってことがよくある。 https://www.facebook.com/profile.php?id=123456789123445のようにURL未設定のユーザーならば簡単なのだが、 https://www.facebook.com/{{…

serializeしたオブジェクトの継承元が変わったらunserializeできるのか?

PHP

疑問点。PHPにおいてオブジェクトをserializeし、その後そのオブジェクトの継承関係が変わったら、正しくunserializeできるのか?検証コード。親クラスなしのDogというクラスのインスタンスをserializeしたファイルに書きだした後、Dog name = $name; } publ…

xgettextの使い方のメモ

いつも使い方を忘れてしまうxgettextの使い方のメモ。とは言っても、xgettextのlanguageオプションで正式に対応しているプログラミング言語以外で、シングルクォートもダブルクォートも共に文字列として扱える言語を念頭においている。以下の翻訳抽出元コー…

FacebookアプリでQUOTA_EXCEEDED_ERRというエラーになったら

Chrome 17.0.963.56(Mac)でFacebook JS SDKを使って遊ぼうとしたら、下記のようなエラーに見舞われた。 Uncaught Error: QUOTA_EXCEEDED_ERR: DOM Exception 22ググってみたら、このエラーの意味はlocalStorageの容量の上限を超えた場合に出るらしい。しかし…

UglifyJSの--defineと--define-from-moduleが便利すぎる

JavaScriptのコードの中にアプリの設定を定数として埋め込みたいことってありますよね。例えば、このFacebook Mobileのドキュメントにあるログインの例を借りると、 window.fbAsyncInit = function() { FB.init({ appId: FB_APP_ID, status: true, cookie: t…

Dart練習帳: Future/Completer

この記事はPromise型を撤廃してFuture型に統一していくよ、という記事だと思うのだが、"try it out"といいつつ全くドキュメントがないので、どういう人を対象読者にしているのかなぁとびっくりしてしまう。そこで、Dartのユニットテストを参考に粛々と練習す…

Dart事始

どこまで真剣なのかよく分からないDartであるが、Dartのアップデートブログはけっこう頻繁に更新されており、Dart VMを組み込んだChromiumがリリースされたという話を聞いて、少しは触ってみようという気になった。 http://blog.chromium.org/2012/02/tech-p…

Jasyプロジェクトを作成する

前提条件 Python 3.2とpip、それにJasy 0.4.6がインストールされているものとします。 $ pip install https://github.com/wpbasti/jasy/zipball/0.4.6 ディレクトリ構成 最初にプロジェクトのトップディレクトリを作る。ここでは設定ファイルに記載するプロ…

Jasyを使ってJavaScriptアプリケーションを作成する - セバスチャン現る

JasyはZyngaの俊英Sebastian WernerによるJavaScriptビルドツール(Python3製)。coreは同氏によるJavaScript Framework。 https://github.com/wpbasti/jasy https://github.com/wpbasti/core coreが大規模なJavaScriptアプリケーションを作るためのモジュール…

Jasyを使ってJavaScriptアプリケーションを作成する - 最適化

Jasy/Coreの使い方をなんとなく語るシリーズの第一回。順番が間違っている気がするが、第一回はJasyのJavaScript最適化機能について。解説の順番が間違っている気がするが、Python3.2とpipをインストールした上で、 $ pip install https://github.com/wpbast…

Selenium WebDriverでUser-Agentを変更する

しばらく前は「Webアプリケーションのテスト自動化にはSeleniumよりWatirの方がよくね?」と思っていたが、Selenium2になってWebDriverが使えるようなり、Rubyで書かなくてはならないWatirより、Pythonで書けるSeleniumの方が断然楽だと感じている。仕事柄モ…

shelveの"dbm.error: db type could not be determined"というエラー

MacPortで入れたPython3.2.2*1でshelve.openを使おうとして、"dbm.error: db type could not be determined"というエラーが出た。 % python [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for m…

Misakaを使ってmarkdown文書をHTMLに変換する

Misaka is a Python (2.7 and 3.2) and PyPy (1.6) binding for Sundown. And Sundown is a Markdown library written in C and it's really fast. http://misaka.61924.nl/ MisakaはCで書かれたmarkdown parserであるSundownのPythonバインディング。要Pyth…

LZOとSnappyの圧縮効率・処理速度を比較する

LZOとSnappyは共に、圧縮効率は他に劣るものの、処理速度が早いことを売りにした圧縮ライブラリ。 http://www.oberhumer.com/opensource/lzo/ http://code.google.com/p/snappy/ インストール Pythonで使うならば、LZOに関しては python-lzo-static を使うの…

tmuxのscreen-keys.confのtypo

もうscreenからtmuxに乗り換えて久しいのですが、長年使用してきたscreenのキーバインドが体に染み付いてしまい、screen互換にカスタマイズして使っております。カスタマイズと言っても、CentOS(EPEL?)のtmuxのRPMにある /usr/share/doc/tmux-{{ VERSION }}/…

PhantomJSを使ってWebSocketの開発を行う

「Webアプリケーションの開発はEmacs(emacs-nox)で行うべき」というは幼稚園児でも知っている常識だが、JavaScript中心のアプリケーションではどうしてもフォーカスがブラウザに行ってしまう。そこで、PhantomJSを使えばターミナルから離れる必要がなくなり…

チーム開発でのplistの管理方法

複数名のチームでCocoa/Cocoa Touchのアプリケーションを開発している状況で、誰かがplistの設定ファイルを間違ってコミットしたからアプリケーションが動かなくなったといった状況を防いだり、開発中は自分固有の設定を使いたいとする。ぱっと思いついた方…

apressのcocos2d本を読む - 第5章のメモ

apressの"Learn iPhone and iPad cocos2d Game Development"を読みながらcocos2dを勉強していくメモ。第5章はScene, Layer, Spriteの関連クラスの使い方の説明。Learn iPhone and iPad cocos2d Game Development作者: Steffen Itterheim出版社/メーカー: Apr…

apressのcocos2d本を読む - 第4章のメモ

apressの"Learn iPhone and iPad cocos2d Game Development"を読みながらcocos2dを勉強していくメモ。今日は第4章。この章は、加速度センサーを使ってプレーヤーを動かし上から落ちてくるクモを避けるというゲームを作っていきながら、cocos2dプロジェクトで…

apressのcocos2d本を読む - 第3章のメモ

apressの"Learn iPhone and iPad cocos2d Game Development"という本を読んでいる。ざっと眺めた感じでは、cocos2dのサイトにあるドキュメントよりは包括的で、ずっと良い参考資料だなという印象がある。apressのサイトからサンプルコードもダウンロードでき…

cocos2dプロジェクトにテストを追加する

cocos2dのテンプレートから生成したばかりのプロジェクトのTargetにはテストが追加されていない。Xcode4でこれを追加する方法のメモ。アプリケーション名はMyAppとします。 Add Targetsで"Cocoa Touch Unit Testing Bundle"を選択 ターゲット名は通常、「(ア…

OCMockをApplication Testで使う

最初この記事を見てstatic libraryではなく、OCMock.frameworkを使う方法を試していたのだが、この方法ではApplication Testではうまくいかない。 http://iamthewalr.us/blog/2008/11/ocmock-and-the-iphone/ OCMockのWebサイトに書かれている通り、static l…

続cocos2d事始 - Menuを作る

Layerを作る 前回作ったところまでで、最小限のSceneを作ってゲームに必要な要素を追加していく準備ができた。SceneにはLayer, Menu, SpriteといったCocosNodeのサブクラスを追加していくことになるが、まずは一番基本的なLayerクラスを使って、背景を追加す…

続cocos2d事始

大型連休前にPython版cocos2dを触ってみて、予想通りインストールしてサンプルをちょっと動かしただけで飽きたわけだが、ここ数日iPhone版のcocos2dも少しいじっていて、「基本的な概念が同じならばPythonでやった方がプロトタイピングにはいいかも」と思い…

Cのプリプロセッサを使ってJavaScriptの前処理を行う

『ハイパフォーマンスJavaScript』を読んだ。ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 9人 クリック: 1,176回この商品を含むブログ (31件) を見る全体と…

@font-faceが便利

CSS

けっこう昔からある技術なのかもしれないが、@font-faceでローカルにインストールされていないフォントを指定してHTMLを描画することができることを知った。 @font-face - MDC Docs MSDN Microsoft library の @font-face CSS3 module: Web Fonts/W3C Workin…

MP3をOgg Vorbisに変換する

Ogg

HTML5 Audioで使うために、MP3をOgg Vorbisに変換したい。最初、 $ ffmpeg -i audio.mp3 -y audio.ogg のようにffmpegを使って変換を行っていたが、やたらファイルサイズが大きくなるし、Chromeでは再生できても、Firefoxで再生できない。もしかしたらffmpeg…

cocos2d事始

インストール cocos2dといってもiPhone版じゃなくてPython版の方。ここに書いてあるとおりにやれば環境は作れる。 http://cocos2d.org/doc/programming_guide/installation.html が、実際はpygletもcocos2dもPyPIに登録されていて、依存関係もきちんと定義さ…

CanvasのfillStyleにcanvas/SVGを指定する

チラシの裏。canvasのfillStyleにcreatePatternを使って生成したCanvasPatternオブジェクトを指定する場合、createPatternにはcanvasやSVGを指定できるのか試してみた。canvasはChrome安定版やFirefox4.0だけでなく、iPhone4やAndroid端末(SC-02B)でも表示さ…

auの一部の端末のFlash Playerは9ストップ以上のグラデーションを表示できない

久しぶりにブログを更新したと思ったら、Flash/FlashLiteのような死滅しつつある技術について書いていてすみません。完全にチラシの裏です。auの一部のFlashLite Playerには9ストップ以上のグラデーションを表示できないという制限があるようです。僕はW43H…

チラシの裏

PHPのMemcache::deleteがなぜかfalseを返す・・・と思って調べていたのだが、 http://jp2.php.net/manual/ja/memcache.delete.php これか・・・・!? the Memcache::delete(key) function is broken on several combinations of memcached+pecl-memcache co…

yaml拡張の奇妙なバグ?

【追記】バグではなく、YAMLの「落とし穴」らしいという結論に達しつつあります。PECLのyaml拡張はナウでヤングなPHPerが腐りきったSpycやSyck拡張のかわりに使うらしいYAMLライブラリ。が、 int(12) [1]=> int(1) }のような出力結果になる。 CentOS 5.5 PH…

全俺が泣いた - チラシの裏

『【GDC2011】ジンガが振り返る『FarmVille』から『CityVille』で得た教訓』という記事が面白いです。 『CityVille』は昨年8月頃に開発が始まったものの、明確なビジョンが定まらないままかなりの迷走があったそうです。一時は買収したオースティンのChallen…

Flash-AssetsでJavaScript/CSSを管理する

オフィシャルドキュメントに書いてあることで十分だけど、練習をかねてチラシの裏に書いてみる。 http://elsdoerfer.name/docs/flask-assets/ インストール。 $ pip install Flask-Assets 単純なFlaskアプリケーションで試してみる。 # -*- coding: utf-8 -*…

Closure Compilerのアノテーションが便利

Closure Compilerは言わずと知れたGoogle製のJavaScript最適化ツール。 http://code.google.com/intl/ja/closure/compiler/ 昨日のYUI CompressorとかUglifyJSの話の続きで、この系統のツールを調査していたのだが、Closure Compilerはまた別の魅力があるよ…

UglifyJSがよさげ

https://github.com/mishoo/UglifyJS UglifyJSは、node.jsで書かれたJavaScriptの圧縮ライブラリ。 Additionally with this switch we’ve moved to using UglifyJS from the Google Closure Compiler. We’ve seen some solid file size improvements while u…

webassetsがよさげ

webassetsはWebアプリケーションのJavaScript/CSSの管理ユーティリティライブラリ。もっとわかり易く言うと、複数のJavaScriptファイルをまとめたり、圧縮してくれたり、URLに変更日時のタイムスタンプを付けてくれたりする便利ライブラリ。 PyPI http://pyp…

FitNesseが本当にソフトウェアテストの未来を示しているかが分からない - チラシの裏

FitNesseはAcceptance TestingをWikiフォーマットで記述するためのフレームワーク・ライブラリ。 http://fitnesse.org/ 『実践アジャイルテスト』や『ビューティフルテスティング』で肯定的に紹介されているプロダクトだから、ちょっと気にしているのだが、…