Visual StudioをMicrosoft Azure管理ツールとして使う

AWSやMicrosoft Azureの両者共に言えることなんですがWebの管理画面の使い勝手がそれほど良くはありません。例えばストレージやキューにデータを手動で置いたり削除したりするのはとても面倒です。Azureのキューに至ってはデータを閲覧できません。 Microsof…

Unity Cloud BuildでUnityのビルドやバイナリ配布を自動化しよう

お金を払ってProライセンスを使っている人に朗報です。Unityがベータ版として提供する Unity - Cloud Build を使えば、いわゆる継続的インテグレーション(CI)が簡単に行えます。 弊社では「レポジトリの特定のブランチを監視させ、変更があったらiOS版とAn…

UnityでのXcode設定をUnityEditorのスクリプトだけで自動化する

Unityが出力したiOS用プロジェクトの手動編集をなんとかしたいと考えていたら、同じような人がやはり多いようでいろいろな方法がブログエントリで紹介されていました。 UnityでXcodeのプロジェクト設定を自動化したい(c#でPostProcessBuildを書く場合) - Q…

Rails+Sidetiqでお手軽定時処理 on Heroku(無料!)

Railsで定時処理をやろうと思って色々トライしました。Sidekiq+Sidetiqを使ってHerokuの無料分で動作させることができたのでその手順を紹介します。 Railsでの非同期処理 古いものから新しいものまでいろいろ選択肢があります。 collectiveidea/delayed_job …

jQuery の関数をオーバーライドする方法

今回は、jQuery を使って$('#hoge').hoge()とした時に、元のhogeの機能に加えて追加のコードが走るようにしたいですね、というお話です。 普通の JavaScript で関数をオーバーライドする方法 こちらは JSer なら常識ですね。 var orgHoge = window.hoge; win…

UnityのTranslateにご注意

UnityのTransform.Translate関数には、じつはちょっと注意が必要です。 簡単に言うと、transform.Translate(Vector3.right)とtransform.position += Vector3.rightは異なるというお話です。 手順1 まず、原点に球体を用意します。 手順2 次にInspector上でPo…

UnityでOpenCVまとめ

Unityで画像処理と言うと、まだあまり需要がなさそうですが、Oculus Riftの流れ的にも、これからニーズが増えそうですなあ。 さて、弊社でもUnityでOpenCVを利用したくなったわけですが、現在パーフェクトな環境はまだなさそうです。 そこそこ調べたので、ま…

const int よりも int const と書こう、という提案

c++

……という提案を、試しにちょっとしてみます。 ポインタ型とconst C++er の皆さん、次のコードを正しく説明できるでしょうか? int hoge = 42; const int * p1 = &hoge; int const * p2 = &hoge; int * const p3 = &hoge; もちろん答えはこうなります: int h…

問.Cでオブジェクト指向プログラミングを行なえ

C

問.Cでオブジェクト指向プログラミングを行なえ。ただし「オブジェクト指向プログラミング」とは、次のような特徴を持つプログラミング技法であるものとする: オブジェクトの実装はオブジェクトのユーザーからは隠蔽される(カプセル化/隠蔽) 同一型のオ…

Javascriptを使ってiOSのWebViewからネイティブにデータを返そう

Swift使っていますか?弊社ではまだほとんど使っていません。今日もObjective-Cの話題です。 iOSアプリを作るとき、すでにWeb版で実装されている機能をiOSでもそのまま使いたいがためにUIWebViewを使うということがあると思います(あると言ったらある)。そ…

openFrameworksを使ったフレーム編集

概要 動画からフレームを抜き出してOpenCVで加工する環境をopenFrameworksで準備してみました。 日本語パス周りで少しハマったのでメモ代わりにブログに残しておきます。 動作環境 Windwos7 64bit openFrameworks0.8.4 visual studio 2012 professional open…

開発時に便利なUnityのTips

今週はUnity開発時のTipsをいくつか。 取り込んだ画像の画質が悪い Aniso Levelの引き上げることで、急な角度でテクスチャを見る場合にテクスチャの品質を向上させる。 ついでにpng等透過画像の場合はAlpha is TransparencyのチェックをONにする。 この項目…

GreaseMonkeyのGM_setValue()の値はどこに?

以前もご紹介した GreaseMonkey にて、GM_setValue() 関数がどこに値を保存するか、纏めてみました(Firefox のみ)。 以下、[@namespace]は GreaseMonkey スクリプトのメタタグ@namespaceに設定した値、[@name]は同じく@nameに設定した値、[設定項目]はGM_s…

fixedしたポインタにスコープを越えさせる

C#

皆さん大好き*1unsafeコード。 滅多にない事ですが、P/Invoke を使ってなんかいろいろと変な事をしていると、こんなコードを書きたくなってくる事があります: class Hoge { private byte[] m_ptr; public unsafe byte* GetPointer() { // &(m_ptr[0])を取得…

アニメ風レンダリングが簡単にできるBlenderのFreestyleを試してみた。

Blender2.67から利用できるようになったFreestyleレンダリングが面白そうだったので、以前作ってみた動画で試してみました。 以前作った動画 今までにBlenderとpythonを使って下記のような記事と動画を作りました。 Blenderの物理シミュレーションをpythonス…

Ansibleで自社Wordpressを移行を自動化

先日弊社Webサイト、http://www.cflat-inc.com のサーバーをAWSからさくらVPSに移行しました。元々t1.microを使っていたのですが、さすがに非力すぎて時折アクセスできないこともありました。かといってsmallを使うとスペックの割にコストがかかると考えさく…

CUDA6.0用にCPUとGPUの速度比較コードを修正

以前の記事でCUDAプログラミングする際に、CPUとGPUを切り替える方法を書いたのですが、 その2日後にCUDA6.0が正式リリースされ、Unified Memoryという 新しいメモリ確保の仕組みが提供されました。 メモリ確保が簡単に CUDA5.5まではCPUとGPUの両方にメモリ…

setTimeout() vs ハッカー、仁義なき戦い

早速ですが、以下のHTMLを見て下さい……。 <html> <head> <meta charset="UTF-8"> <title>サンプル1</title> <style> #counter { font-size: 3em; font-family: monospace; color: blue; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script> </meta></head></html>

下手な高速化で地獄を見たお話 ~ XCode編 ~

こういうエラーが起きました。 「Could not insert new outlet connection: Could not find any information for the class named」というエラー。 第一手:IDEIndexDisableという犯人 スタックオーバーフローさん等でいろいろ解決方法が載っており、それら…

Xcodeで余計なCleanを避けるスクリプト

XCodeでフォルダ内のファイルを全てプロジェクトに追加する方法には、二種類あります。 一つは「Create groups for any added folders」、もう一つは「Create folder references for any added folders」です。フォルダの色が黄色か青色か、という区別の仕方…

Parse.comのREST APIを使ったPush通知

複数のアプリに対してParse.comを介してPush通知を送りたい場合、Webインターフェースでポチポチやるのは効率が悪く、とても辛い作業になってしまいます。Parse.comのサイトはレスポンスが少し遅いなと感じる程度である上に、1回1回が退屈な作業を何度も繰り…

Unityで忍者アプリを作ってみた

さて、Unityで忍者アプリを作ってみました。 短期開発ですが、今回は欧米狙いの色が強いアプリに仕上げています。 忍者は愛を斬らないCFlatゲーム無料 Android版はこちら↓ https://play.google.com/store/apps/details?id=com.cflat.ninja フィールドはアセ…

C++からC++らしくJNIを呼んでみる

JNI(Java Native Interface)はJavaとCの連携技術です。Javaアプリケーションの一部ロジックをCで書いたり、さらにその中からJavaのメソッドを呼び出したりする事で、アプリケーションの実行環境が制限される代わりに高速化、あるいは非Javaプラットフォー…

cocos2d::CCGLProgramがアレなワケ

前回のオマケ的な何か。 前回記事の最後で、私は次のように書きました: ともあれ、上記の結果から、原則としてfor版を使いつつ、for版が使えない時にだけ非for版を使ってやればよさそうだとわかります。 実はこの部分にもこっそりと妙な罠が潜んでいるので…

ワールドカップに合わせてUnityでサッカーゲームを作ってみた

AppStoreの審査が開幕のブラジル戦に間に合うのかどうか、これが一番の懸案でしたが、1回リジェクトくらったため間に合いませんでした。コートジボワール戦にも間に合わず、何とかギリシャ戦には間に合ったという惨状です。 さて、会社でUnity Proも購入した…

空前のパズルブームを予想してCocos2dでパズルゲームを作ってみた

この度、弊社よりパズルゲーム『Fuse 〜 導火線パズルドカーン! 〜』(以下『Fuse』)がリリースされました。 Fuse(iPhone版) Fuse(Android版) 開発はCocos2d-x 2.2.2で行ないました(今までちょこちょことCocos2d-x関連の記事があったのは、これのため…

続・Cocos2d-xの輪郭線とか影回りを実用的に魔改造してみた

以前の記事に引き続き。 以前、「輪郭線が iOS と Android にしか対応していなくて云々」というような理由で GLSL を用いた輪郭線表示を行なうようにしましたが、これを Android で実行してみると機種によってはこうなります。 error C5013: profile does no…

☆C++11テクニック☆ 配列を配列で初期化する方法+α

C++

メンバー変数の初期化 例えば、こんなコードがあったとします。 template <class T> struct Hoge { Hoge(const T &v) : value(v) {} T value; }; template <class T> Hoge<T> make_hoge(const T &v) { return Hoge<T>(v); } #include <iostream> #include <cxxabi.h> #include <cstdlib> #include <memory> template <class T> std::</class></memory></cstdlib></cxxabi.h></iostream></t></t></class></class>…

ある三角形の頂点のうち、最後の頂点を求める方法

今日は小ネタです。三角形ABCの各頂点の座標が、a, b, c であるものとします。 この三角形ABCのうち、外から渡した座標 d, e のいずれでもない、最後の頂点を求めて下さい。ただし d, e は、必ず a, b, c のうちのいずれかと一致し、また d≠e であるものとし…

☆CSSテクニック☆Borderの継ぎ目

まず最初に、ありがちな次のようなものを作ってみました。HTMLはだいたいこんな感じ。 HTML+CSS3で作る×ボタン .popup { background-color: white; color: #888; border: solid 1px; border-radius: 10px; position: absolute; top: 5em; left: 5em; width:…

今度はiOSで散布図アニメーションを試してみた

セルフインスパイアな記事。先日Pythonによる散布図アニメーションを取り上げました。 pythonで散布図アニメーションを試してみた - 株式会社CFlatの明後日スタイルのブログ これと同じようなことをiPhoneでやってみました。 事前準備 アニメーションに使う…

boost::multi_arrayのランダムアクセスに注意

※下記の内容はVisual Studio2010でコンパイルしました。gcc 4.8.2でコンパイルすると結果が異なります。詳しくはコメント欄をご確認下さい。 便利なboost::multi_array 多次元配列を実装するときに便利なboost::multi_arrayですが、ランダムアクセスが遅いの…

一挙紹介!動画アプリで使ったCocoaPods

もはやiOS開発に欠かせない存在になったCocoaPods。先日弊社からリリースしたアプリでも、複雑なUIやありがちな機能を簡単に実装するものから実装を少しラクにするようなものまで、いろいろなものを使っています。 スポーツ動画アプリ全10種類 | 株式会社CFl…

複数種類のiPhoneアプリを同時開発するときのTips

先日弊社からiPhoneアプリをリリースしました。 スポーツ動画アプリ全10種類 | 株式会社CFlat iPhoneで気軽にスポーツ動画を楽しめるアプリケーションをリリースしました。AppStoreにて配信中です。 このアプリではスポーツのハイライトや試合結果、最新ニュ…

CUDAでプログラミングする前にやっておきたいこと

こちらの記事もご確認下さい。 CUDA6.0用にCPUとGPUの速度比較コードを修正 - 株式会社CFlatの明後日スタイルのブログ GPUとCPUの速度比較をしたい 以前CUDAでのプログラミングが完成した際に、CPUとの速度比較を行いたいという当たり前の要望が上がりました…

PHPで返す304 Not Modified(2)

PHP

前回は、Last-ModifiedとIf-Modified-Sinceを用いてファイル更新の有無を確認しましたが、同じURLが状態に応じて別のファイルを表示する事がある場合には、上手くゆかない場合があります。例えば、ユーザーログイン時には指定した画像、そうでなければ別の画…

PHPで返す304 Not Modified(1)

PHP

普段なら、Apacheがファイル更新日を確認して適切にクライアントに返してくれるはずの304 Not Modified。これを「PHPを介してファイル内容を表示しよう」と思った瞬間*1、単純に実装するとリクエストの度にファイルコンテンツを全て送る事になって、特に画像…

MBaaSのParseでiOSにPush通知を送るチュートリアル

弊社の神経衰弱アプリシリーズではPush通知にMBaaSで有名なParseを使っています。Parseを使うと超簡単にモバイルアプリの通知を発行することができます。 神経衰弱アプリ三部作 | 株式会社CFlat まだ使ったことはありませんが、モバイルアプリやWebアプリの…

pythonで散布図アニメーションを試してみた

最近pythonを触り始めたのですが、散布図をアニメーションさせる方法が分からなかったので調べてみました。 散布図はmatplotlib.plt.scatter(x,y)で作成する事が出来ます。 また、アニメーションをさせる方法は二通りのやり方があるようです。 animation.Art…

数値計算ライブラリLAPACKはiOS標準で使えた

数値計算用ライブラリで有名なLAPACKですが、iOSではSDKのフレームワークをリンクするだけで使えるようになります。個人的には数値計算はまったくのノーマークだったので驚きました。 準備 プロジェクトにAccelerate.frameworkを追加。 で、インポート。 #im…

これでほぼ完璧! C++シングルトン基底クラスの決定版!

C++

シングルトンパターンは、デザインパターンがさっぱりわからないプログラマーでも聞いた事があるかもしれないくらい有名であるにもかかわらず、真面目に実装しようと思うと様々な問題が発生してしまいます。 具体的には、 static変数の初期化順序が未定義で…

iPhoneで音声解析!FFTで周波数特性を得る方法

iOSで音声を録音するのはもちろんできますが、FFTのライブラリも標準で組み込まれていて手軽に使えます。今日は録音した音声ファイルを解析して周波数特性(パワースペクトル)を得るところまでを紹介します。意外とそのものずばりの方法はなかなか見つから…

要らなくなったら勝手に消えるDictionary

C#

Dictionary で外付けプロパティを ある程度C#を使っていれば必ず使うことになる、System.Collections.Generic.Dictionary 。C++で言うところの std::map コンテナに対応するコレクションです。 キーと値の対応付けが簡単に作れるので、既存のオブジェクトへ…

Basecamp社(旧37signals)が推奨するリモートワークでのセキュリティ対策

2014年2月5日に37signalsがBasecampに社名変更しました。そのBasecamp社が37signals時代に出した本の中で一番新しい「強いチームはオフィスを捨てる: 37シグナルズが考える」を読み終えました。私達CFlatではリモートワークをしてもいいことになっているので…

Cocos2d-xの輪郭線とか影回りを実用的に魔改造してみた

つまり、CCLabelTTF::enableStroke やら CCLabelTTF::enableShadow のこと。Android ではどうだか確認していませんが、少なくとも iOS ではこんな感じの問題が起こりました:(1) iOS 7 で非推奨になった機能を使っているので、iOS 7 では輪郭線色が正しく出…

これだけ読めば全部がわかるC++のoperator new/deleteオーバーロードの注意点

……とか言いながら、全然「だけ」に留まらない分量になってるのは仕様(C++の)。 なお本記事は、operator new/deleteの概念はある程度理解し、その気になればメモリリークしない程度のoperator new/deleteを実装できるC++erに向けて書かれたものです。operat…

C++プログラマーよ!std::make_sharedを安易に使うべからず!

C++

boost::shared_ptrやstd::shared_ptrの便利さは、boostやC++11に慣れた方であれば当然ご存知かと思います(もちろん、循環参照の危険性や、それを回避するためのweak_ptrの使い方まで含めて)。 しかし世の中というものはさらに便利にできていて、この便利な…

iPhoneでお手軽画像変形

概要 斜めの方向から撮影してしまったけど、後から正面から撮った画像が欲しくなった事はありませんか? 例えば、以下の写真ような場合です。 実はこれを正面から撮ったように画像を変形する事が出来ます。 そう。ホモグラフィならね。こんな感じに出来ます…

60分で始めるiOSアプリのUI自動テスト

iOSのアプリケーションではモデル周りのテストと同じぐらいUI周りのテストが重要な気がするのですが、画面のテストってちょっと面倒ですよね。その上Xcode標準のテストフレームワークでは画面遷移などのテストができません。そこで、統合テスト用のテストフ…

jQuery.ajax() のリクエストパラメータを、指定した文字コードで渡す

jQuery.ajax() のレスポンスを指定した文字コードで取得する系の話はその辺にごろごろ転がっていますが、逆にリクエストを指定した文字コードで行う系の話がほとんど見つからなかったので、ライブラリを作成しました。 考え方としては、通常は UTF-8 で行わ…