サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
perezvon.hatenablog.com
2011 - 05 - 14 続cocos2d事始 - Menuを作る Python Layerを作る 前回作ったところまでで、最小限のSceneを作ってゲームに必要な要素を追加していく準備ができた。 SceneにはLayer, Menu, SpriteといったCocosNodeのサブクラスを追加していくことになるが、まずは一番基本的なLayerクラスを使って、背景を追加する。また、背景の描画にはtetricoのコードを参考に、pyglet経由でPNG画像を描画してみた。 # -*- coding: utf-8 -*- import os from cocos.director import director from cocos.scene import Scene from cocos.layer import * import pyglet from pyglet.gl import
2013-08-19 WordPressサイトのドメインを変更する WordPress MySQL WordPressで公開したサイトのドメインを後から変更するというのはあまりやらない操作だとは思いますが、どうしてもドメインを移したいとか、公開済みのサイトをコピーしてテスト環境を作りたいといった理由でやらなくてはならないこともあると思います。 基本的には下記のドキュメントに書いてある通りのことをやればいいのでしょうが、長いし、「ピーエッチピーマイアドミンで…せよ」とか非本質的なことを書いてあったりするので、僕がいつもやっている手順をメモとして残しておきます。 http://codex.wordpress.org/Changing_The_Site_URL マルチサイト機能が無効の場合 blog.example.comからblog.example.orgへのドメイン変更を行いたいとします。
2009-01-05 ユーザ・バーチャルホストの追加 RabbitMQ サーバ管理者ガイドをみながら、ざっとコマンドを確認。 ユーザの列挙 "list_users"でユーザを列挙する。初期状態ではguestだけのはず。 $ sudo /usr/sbin/rabbitmqctl list_users Listing users ... guest ...done. ユーザを追加する "add_user "でユーザを追加。 $ sudo /usr/sbin/rabbitmqctl add_user scott tiger Creating user "scott" ... ...done. ユーザを削除する "delete_user"でユーザを削除。 $ sudo /usr/sbin/rabbitmqctl delete_user guest Deleting user "guest" ...
2013-08-15 ChefでUbuntu 12.04にemacs 24.3をインストールする Emacs Ubuntu Chef Ubuntu 12.04 LTSは、各種パッケージのバージョンやデフォルトの設定に安心感があり、「本当に楽だ、4, 5年前のCentOSと同じくらい鉄板だ」というありがたみを毎日噛み締めております。 しかしながら、多少バージョンが古くて不満を抱くパッケージもなくはありません。その一つが emacsです。 開発サーバーとして使っていると、どうしても最新版に近いのemacsを使いたいので、今まではソースからコンパイルして入れたり、こちらの記事を参考にして、PPAから最新版をインストールしていたりしました。 http://gihyo.jp/admin/serial/01/ubuntu-recipe/0235 自分のためにインストールするならば、まあ手動で入れればい
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 JSON wire protocol.http://appium.io/最初は、AppiumはSelenium WebDriverとしてWebのテストだけに使えるものだと思っていたが、実はiOS/AndroidのネイティブUIの自動操作・自動テストにも使える(むしろそっちがメイン)ということを知って、さらに興味をそそられた。が、ドキュメントが少なく、地雷があり過ぎる印象があ
couchbase-python-clientはCouchbase社が開発しているCouchbaseのクライアント・ライブラリ。「Couchbaseとは何ぞ?」という方は、CouchDBのストレージをMemcache/Membaseに置き換えたKVSだと考えて頂きたい。https://github.com/couchbase/couchbase-python-clientPythonのMemcacheクライアントたちPythonのMemcacheクライアントだと、Pure Pythonなライブラリであるpython-memcachedと、libmemcachedバインディングのpylibmcが標準的なライブラリだと思う。http://pypi.python.org/pypi/python-memcached/http://pypi.python.org/pypi/pylibmc/が、両方と
nginx研究。client_body_*関連のパラメータを調整すると、メモリ内でのHTTP Request Bodyの扱い方を調整できるようだ。たとえば、以下のようにclient_body_in_file_onlyとclient_body_temp_pathを両方とも設定すると、POST(やPUT)でコンテンツがポストされた時に、client_body_temp_pathで指定したディレクトリに内容がファイルに書き込まれる。 http { client_body_in_file_only on; client_body_temp_path /tmp/nginx; } 中身を見てみると、こんな感じ。 # less /tmp/nginx/0000000004 content=aaaaaa&submit=%8F%91%82%AB%8D%9E%82%DE client_body_in_file_
一流のペチパーとやらにもなれば、「PHPのdefineはコストが高いからねー」とドヤ顔で語りつつ hidef なるものを使うらしい。http://pecl.php.net/package/hidefしかし、"PHP hidef"とかでググっても、インストールの仕方とかごく基本的なことはともかく、hidefを使ったアプリケーション設計とか、ラッパーライブラリとか(hidef単体で使うのはキツい)、運用のベスト・プラクティス的な記事は全然出てこない感じがするのだが、本当に一流のペチパーとやらは呼吸するかのごとくhidefを使いこなしているのだろうか? インストールhidefパッケージを提供しているディストリビューションはあまりないように見えるので、一番無難な方法、peclでインストールする。 $ sudo pecl install hidef RHEL系の場合、 $ sudo yum inst
昨日のエントリのChromeDriverを試した後、SafariDriverというなかなか有望そうだがイマイチちゃんと動いている感がないソリューションまで試した結果、iPhone向けWebアプリケーションのテストにはiPhoneそのものか、iPhoneシミュレーターを使うのが一番良いという結論に達した。 インストールiOS端末でSelenium(iWebDriver)を使うには、公式ドキュメントにある通り、レポジトリからコードをチェックアウトして、"./go iphone"でビルドする。要Xcode。 $ svn co http://selenium.googlecode.com/svn/trunk selenium $ cd selenium $ ./go iphone あるいは、selenium/iphone/iWebDriver.xcodeproj というXcodeプロジェクトを開い
WebKit、しかもiOSのWebKitでしか動かないコードを通して世界を良くしていますかっ!?(挨拶)前回似たようなエントリを書いた時には分からなかったのだが、SeleniumのChromeDriverでUser-Agentを変更するのは比較的容易だった。これでFirefoxではピクリとも動かないサイトでもテストできる!!Opera、IE、なにそれ?ChromeDriverでUser-Agentを変更するには、SeleniumのChromeDriverのWikiページにあるように、DesiredCapabilitiesオブジェクトに--user-agentオプションを渡してChromeを起動するようにしてやればよい。Java, C#, Rubyといった各言語ともインターフェイスはほぼ同じなのではないかと想像するが、Pythonの場合はChrome WebDriverのdesired_ca
Facebookと連携するアプリを開発していると「このユーザーのFacebookのユーザーIDを調べたい」ってことがよくある。 https://www.facebook.com/profile.php?id=123456789123445 のようにURL未設定のユーザーならば簡単なのだが、 https://www.facebook.com/{{ USERNAME }} みたいなURLを自分で設定しているユーザーの場合、どうするのが一番簡単かずっと分からなかった。 今日思いついた、一番お手軽と思える方法。例えば、Mark ZuckerbergのFacebook上のプロフィールのURLは、https://www.facebook.com/zuckなのだが、このURLのwwwの部分をgraphに変え、https://graph.facebook.com/zuckでブラウザなり、curlなりでアク
JavaScriptのコードの中にアプリの設定を定数として埋め込みたいことってありますよね。例えば、このFacebook Mobileのドキュメントにあるログインの例を借りると、 window.fbAsyncInit = function() { FB.init({ appId: FB_APP_ID, status: true, cookie: true, xfbml: true, oauth: true }); FB.Event.subscribe('auth.authResponseChange', function(response) { if (__DEBUG__) { console.log("Got auth.authResponseChange event"); console.log(response); } // Do something }); }; のように、あるメソ
この記事はPromise型を撤廃してFuture型に統一していくよ、という記事だと思うのだが、"try it out"といいつつ全くドキュメントがないので、どういう人を対象読者にしているのかなぁとびっくりしてしまう。そこで、Dartのユニットテストを参考に粛々と練習する。http://news.dartlang.org/2012/02/library-change-promise-out-future-in.htmlAPIリファレンスはこれ。http://api.dartlang.org/dart_core/Future.htmlhttp://api.dartlang.org/dart_core/Futures.html Completer最も単純と思われるパターン。Completerで処理を定義し、completeで処理を完了させる。Futureオブジェクトにアクセスするにはcomple
しばらく前は「Webアプリケーションのテスト自動化にはSeleniumよりWatirの方がよくね?」と思っていたが、Selenium2になってWebDriverが使えるようなり、Rubyで書かなくてはならないWatirより、Pythonで書けるSeleniumの方が断然楽だと感じている。仕事柄モバイルサイトの構築に関わることが多く、SeleniumなりWatirなりでUser-Agentをモバイルブラウザのものに変更したいと思うことが多いのだが、幸いにしてSeleniumの方はちゃんとドキュメントに書いてあった。(かなり前にWatirで同じことをやろうとして全然分からなくて挫折したのだが、今はどうなっているか調べていない。)http://code.google.com/p/selenium/wiki/TipsAndTricksドキュメントはJavaのコード例だけど、Pythonならば以下の
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バインディング。要Python2.7/3.2、PyPy1.6以上。インストールは、 $ pip install misaka Misakaのサイトに書いてある通り、使い方はとても簡単。http://misaka.61924.nl/例えば、 # -*- coding: utf-8 -*- import misaka content = misaka.html(u""" # ヘッダー H
LZOとSnappyは共に、圧縮効率は他に劣るものの、処理速度が早いことを売りにした圧縮ライブラリ。http://www.oberhumer.com/opensource/lzo/http://code.google.com/p/snappy/ インストールPythonで使うならば、LZOに関しては python-lzo-static を使うの楽なのだろうか?https://bitbucket.org/james_taylor/python-lzo-static $ hg clone https://bitbucket.org/james_taylor/python-lzo-static $ cd python-lzo-static $ pythnon setup.py install SnappyはPyPIに登録されているので、もしSnappyがインストールされているならば*1、 $ p
HTML5 Audioで使うために、MP3をOgg Vorbisに変換したい。最初、 $ ffmpeg -i audio.mp3 -y audio.ogg のようにffmpegを使って変換を行っていたが、やたらファイルサイズが大きくなるし、Chromeでは再生できても、Firefoxで再生できない。もしかしたらffmpegのコマンドオプションやコーデックの問題なのかもしれないけど・・・(当方の環境はDebian wheezyのaptで入れたffmpeg)ググった結果、MP3からOgg Vorbisの変換にはmpg321とoggencを使うのが良いらしいと分かった。 $ sudo apt-get install mpg321 vorbis-tools でmpg321とoggenc(vorbis-tools)をインストールして、 $ mpg321 audio.mp3 -w - | oggenc
何気なくtwitterを見ていたら、Redisの将来のリリースで導入されるdiskstoreというオプションを知った。masterブランチにはすでにコードがあるので、cloneしてビルドすれば試してみることができる。diskstoreが登場した背景はGoogle Groupのこのスレッドに詳しく説明されている。Redis diskstore - Redis DB | Google Group直接スレッドを読んで頂いた方がいいのだが、一言で云うと「総データ量がメモリーよりも大きい時に、Redis 2.0で導入したVirtual Memoryというアプローチよりも実装が楽」という風に理解した。メモリーに載らないデータをディスクに書くなんてごくごく一般的なアプローチだと思うが、Virtual Memoryを実装した後にそこに戻ってくるとはカッコいいぞ、antirez!まだ変更される可能性はあると
「Webアプリケーションの開発はEmacs(emacs-nox)で行うべき」というは幼稚園児でも知っている常識だが、JavaScript中心のアプリケーションではどうしてもフォーカスがブラウザに行ってしまう。そこで、PhantomJSを使えばターミナルから離れる必要がなくなり、生産性が格段に上がるのではないかと考えた。当方の環境はUbuntu 11.04。PhantomJSのインストールは難しくない。Ubuntuの場合、ここに書いておるとおり、 $ sudo apt-get install libqt4-dev libqtwebkit-dev qt4-qmake $ wget http://phantomjs.googlecode.com/files/phantomjs-1.2.0-source.zip $ unzip phantomjs-1.2.0-source.zip $ cd pha
apressの"Learn iPhone and iPad cocos2d Game Development"を読みながらcocos2dを勉強していくメモ。第5章はScene, Layer, Spriteの関連クラスの使い方の説明。Learn iPhone and iPad cocos2d Game Development作者: Steffen Itterheim出版社/メーカー: Apress発売日: 2011/01/25メディア: ペーパーバッククリック: 21回この商品を含むブログ (9件) を見る cocos2dのメモリ管理の実装パターンcocos2dのメモリ管理、インスタンス生成では、 + (id)scene; のようなメソッドでautoreleaseされたオブジェクトを返すのが流儀になっている。なので、自分でCCSceneのサブクラスを作る時には、この章のLoadingScen
『ハイパフォーマンスJavaScript』を読んだ。ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 4人 クリック: 500回この商品を含むブログ (16件) を見る全体として非常に良い本だと思ったのだが、9.3章の「JavaScriptファイルの前処理」の章だけで他の全てを圧倒するようなインパクトがあった。曰く、 #ifdef DEBUG console.log("debug!"); #endif のようなC/C++のプリプロセッサを使ったJavaScriptを書いて、 % cpp -P -C -DDEBUG script.js console.log("debug!!!"); のように"-P -C"オプションを使ってcppの前処理をかけてやると便利だよ
けっこう昔からある技術なのかもしれないが、@font-faceでローカルにインストールされていないフォントを指定してHTMLを描画することができることを知った。@font-face - MDC DocsMSDN Microsoft library の @font-faceCSS3 module: Web Fonts/W3C Working Draft以下はAthena Unicodeでギリシア語を表示する例。読みやすく表示されるのでかなりテンションがあがる。この機能はWebデザイナーよりもマイナー言語研究者や学生に有効そうだな。 html> head> meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> style type="text/css"> @font-face { font-family: "At
インストールcocos2dといってもiPhone版じゃなくてPython版の方。ここに書いてあるとおりにやれば環境は作れる。http://cocos2d.org/doc/programming_guide/installation.htmlが、実際はpygletもcocos2dもPyPIに登録されていて、依存関係もきちんと定義されているので、 $ pip install cocos2d で一発で入る。非常に楽。ドキュメントといい、PyPIといい、cocos2dは結構ちゃんとしている印象がある。Hello Worldドキュメントがちゃんとしているので、このブログ(チラシの裏)にわざわざ転載するまでもない。http://cocos2d.org/doc/programming_guide/writing_a_cocos2d_application.htmlそれにしてもPythonは楽すぎる。Ob
要素をindexで選択する1番目のフォームに何かを入力して投稿したいという場合は、 browser.forms[1].submit のようにformsプロパティを使えばよい。indexは1から始まるのが注意点。formに限らず、 # 最初のimg要素 browser.images[1] # 2番目のtable要素 browser.tables[2] のように要素名を複数形にすればだいたい通るようだ。以下のようなhtmlの場合、 html> body> p>spamp> p>eggp> p>hamp> body> html> p要素を取得するにはpsだった。pの複数形がpsなのは常識。 browser.ps[1].text == "spam" browser.ps[2].text == "egg" browser.ps[3].text == "ham" xpathで要素を取得する最初のdiv
【追記】バグではなく、YAMLの「落とし穴」らしいという結論に達しつつあります。PECLのyaml拡張はナウでヤングなPHPerが腐りきったSpycやSyck拡張のかわりに使うらしいYAMLライブラリ。が、 $yaml = EOD spam: 1,2 y: 1 EOD; var_dump(yaml_parse($yaml)); のようなコードで、 array(2) { ["spam"]=> int(12) [1]=> int(1) } のような出力結果になる。CentOS 5.5PHP 5.2.9 libyaml-0.1.2-3.el5と、Debian squeezePHP 5.3.3-6 libyaml-0-2 0.1.3-1という二つの環境で確認した。共にPECL yaml 1.0.1。PythonのPyYAMLで、 >>> import yaml >>> import cString
『【GDC2011】ジンガが振り返る『FarmVille』から『CityVille』で得た教訓』という記事が面白いです。『CityVille』は昨年8月頃に開発が始まったものの、明確なビジョンが定まらないままかなりの迷走があったそうです。一時は買収したオースティンのChallenge Gamesに開発を任せようという話もあったようです。社内で開発が継続され9月には既に遊べるバージョンが出来ましたが、決して面白いと言えるものではなかったそうです。明確なビジョンがないため、チームメンバーから寄せられる様々な意見が盛り込まれては要素が多いだけのものになっていたそうです。そこで企画書から脱却し、プロトタイピングに集中することで収拾していき、9月末に「見る」という要素が入り、徐々に改善していったそうです。友達の街を見たり、ヘルプをしてくれる友達が見える、といったものです。徐々に開発は進展していきます
オフィシャルドキュメントに書いてあることで十分だけど、練習をかねてチラシの裏に書いてみる。http://elsdoerfer.name/docs/flask-assets/インストール。 $ pip install Flask-Assets 単純なFlaskアプリケーションで試してみる。 # -*- coding: utf-8 -*- from flask import Flask, render_template from flaskext.assets import Environment, Bundle app = Flask(__name__) assets = Environment(app) # yui_js, yui_cssフィルターを使っているので # yuicompressorのパスの指定が必須 assets.config['YUI_COMPRESSOR_PATH'] =
Closure Compilerは言わずと知れたGoogle製のJavaScript最適化ツール。http://code.google.com/intl/ja/closure/compiler/昨日のYUI CompressorとかUglifyJSの話の続きで、この系統のツールを調査していたのだが、Closure Compilerはまた別の魅力があるように思える。「ああ、これは役に立つな」と思ったのがアノテーション機能。http://code.google.com/intl/ja/closure/compiler/docs/js-for-compiler.html例えば、@defineアノテーションを使って、 /** * @define {boolean} */ var ENABLE_DEBUG = true; if (ENABLE_DEBUG) { alert("debug!"); }
webassetsはWebアプリケーションのJavaScript/CSSの管理ユーティリティライブラリ。もっとわかり易く言うと、複数のJavaScriptファイルをまとめたり、圧縮してくれたり、URLに変更日時のタイムスタンプを付けてくれたりする便利ライブラリ。PyPIhttp://pypi.python.org/pypi/webassetsソースコードhttps://github.com/miracle2k/webassets ドキュメント http://elsdoerfer.name/docs/webassets/「よさげ」って言うより、個人的な感覚ではこれはかなりの優良ライブラリって感じがするが、いつの間にかJavaScriptとかCSSに関しては周回遅れもいいとこって状態になってしまっていたので自信がない。もしかしたら、同様のライブラリがあるかもしれない・・・インストールは例によっ
次のページ
このページを最初にブックマークしてみませんか?
『スコトプリゴニエフスク通信』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く