忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/22 13:15 】 |
他の開発者と共同で作業する
iOSの場合

provisioningの共有

方法1.
自分(certificateを登録している人)から、相手(certificateを登録していない人)に共有する

1.1 キーチェーンアクセスから秘密鍵を取り出す
1.1.1 キー一覧から、 iPhone Developer: your nameを選択
1.1.2 右クリックし、「(iPhone Developer: your name)を書き出す」を選択
1.1.3 p12ファイルができる

1.2 相手のUIDをプロビジョニングに登録するhttps://developer.apple.com/account/ios/certificate/

1.3 秘密鍵(.p12)と、プロビジョニングを相手に渡す

1.4 相手をiosDevチームに登録する
1.4.1 https://developer.apple.com/account/#/overview/ から、Peopleタブを選択し、相手を招待
1.4.2 ここで、開発者アカウントが個人だと招待が不可。相手に自分と同じアカウントで入ってもらうしかなくなる

1.5 相手がXcodeでチームアカウントに入る

1.6 相手がプロビジョニングをセットし、ビルド。これで通る

1.7 課金用の作業準備
1.7.1 相手に新しいメールアカウントを用意しておいてもらう
1.7.2 sanboxテスターに登録する。iTunesの内部ユーザではない!


方法2. 相手の情報をプロビジョニングに含める(多分)

2.1 相手から、csrをもらう

2.2 プロビジョニングに、もらったcsrから作った証明書を含め、書き出す

2.3 プロビジョニングを相手に渡す。

2.4 相手をiosDevチームに登録する

2.5 相手がXcodeでチームアカウントに入る

2.6 相手がプロビジョニングをセットし、ビルド。これで通る



Androidの場合
https://play.google.com/apps/publish/

1. 相手にアクセス権限を付与
1.1 Google play developer Console →設定→ユーザアカウントと権限→新しいユーザを招待
1.2 権限は「プロダクトリーダー」。(apk登録も可能にする場合)

2. 相手にテストアカウントを付与
2.1 Google play developer Console →設定→テスターの管理→リストを選択(なければ追加)→編集→追加→保存



Firebaseの場合

1.1 Overview横の設定→権限をクリック
1.2 権限:
プロジェクト→編集者
その他→Firebaseルールシステム

PR
【2017/05/23 15:23 】 | 開発一般 | 有り難いご意見(0)
セキャプログラミング
http://www.ipa.go.jp/security/awareness/vendor/programming/index.html
【2016/09/27 13:05 】 | 開発一般 | 有り難いご意見(0)
オイラー角からクォータニオンに変換
quaternion &quaternion::SeTEuler(float yaw, float pitch, float roll){
float cosY = cosf(yaw / 2.f);
float sinY = sinf(yaw / 2.f);
float cosP = cosf(pitch / 2.f);
float sinP = sinf(pitch / 2.f);
float cosR = cosf(roll / 2.f);
float sinR = sinf(roll / 2.f);
SetValues(
cosR * sinP * cosY + sinR * cosP * sinY,
cosR * cosP * sinY - sinR * sinP * cosY,
sinR * cosP * cosY - cosR * sinP * sinY,
cosR * cosP * cosY + sinR * sinP * sinY
);
return *this;
}
【2016/09/27 12:36 】 | 開発一般 | 有り難いご意見(0)
空間内の三角形同士の衝突判定
GameProgrammingGems
空間内の三角形同士の衝突判定
1.一方の三角形が載っている平面の式を求める
ax + by + cz + d = 0
(a,b,c)は平面の法線。(a,b,c)を求めたら、平面上の一点(x0,y0,z0)を式に代入して d を求める
2.もう一方の三角形がその平面と衝突しているか調べる
2点A(x0,y0,z0),B(x1,y1,z1)があるとき、媒介変数tを用いて
a(x0*t + x1(1-t)) + b(y0*t + y1(1-t)) + c(z0*t + z1(1-t)) + d = 0
となり、これを解いて 0<= t <= 1なら衝突している
3.三角形を平面に投影する
4.三角形の頂点が、もう一方の三角形の内部にあるかどうか調べる
三角形の1辺に対して、頂点が重心と同じ側にあれば内側。これが3辺全部にあてはまれば内部にあることになる
両方の三角形について行う
一つでも当てはまる頂点があれば、衝突している
【2016/09/27 12:35 】 | 開発一般 | 有り難いご意見(0)
GoogleAnalytics
GoogleAnalyticsの使い方

カテゴリー
アクション
ラベル


◯グラフを作る時
値別のグラフは作れない


「グループ分け」の項目として、「イベントの値」は使えない。(「イベントカテゴリ」「イベントアクション」「イベントラベル」は使える)

だから
カテゴリ :パワーアップ
アクション:アイテム1
ラベル  :獲得時のプレイヤーレベル
値    :レベル値

というような形のイベントでは、求めるグラフは作れない

カテゴリ :パワーアップ
アクション:アイテム1-プレイヤーレベル
ラベル  :レベル値
値    :(適当な値)

で、ラベルでグルーピングしてイベント数のグラフを作ることになる



◯セグメントを作る方法

参考ページ

この画面から作る


こうなる
【2016/05/06 19:25 】 | 開発一般 | 有り難いご意見(0)
収益自動集計スクリプト
毎日いろんな広告の情報を取ってくるのが面倒くさい。
というわけで自動化した。

まず、wgetとかで情報を取得するところからやろうとした。
が、当然認証とかしないと取って来れない。ちょいと面倒くさい。
APIとして用意されてる訳でもない。
htmlを解析する…というのはありえないとして。
csvを取ってくるのが常套だろう。

が、そこはめんどいので、とりあえずcsvをダウンロードするのは手動でいったん妥協。


Rubyスクリプトで、csvを解析して必要な情報だけを取り出す部分を作成する。

RubyにはCSVクラスがあり、若干の癖はあるものの、CSVの読み込み、書き込み、アクセスなどいろいろ便利にやってくれる。
参考

CSVファイルの中身を一気に全部読み込むには

table = CSV.table(filename)


とする。tableはCSV::Tableクラスのインスタンスになり、超便利にデータにアクセスできる。
ただし日本語が取り込めないので、日本人としては使いどころは限定される。


CSVファイルの中身を一行ずつ読み込むには

CSV.foreach(filename) do |row|
:
:
end



を使う。rowは配列になる。


エンコードを指定することもできる。
第2に引数に指定。

CSV.foreach(filename, encoding: 'Shift_JIS:UTF-8') do |row|


とすると、Shift_JISのCSVファイルを読み込み、UTF-8に変換して扱うことができる。便利。


ファイル自体の文字コードをUTF-8に変換する場合は

$ nkf -w --overwrite filename


とする。(-w がUTF-8に変換するオプション。 -s だとShift_JIS、-e だとEUC-JPになる)


出力は

CSV.open(filename, "wb") do |csv|
csv << row1_data
csv << row2_data
:
:
end


となる。

◯コツ
入力ファイル名はスクリプトの第1引数で指定
出力はファイル名指定でもいいが、そのまま標準出力させたほうが扱いやすいともいえる。
ただ、2重配列をそのまま
p data
という感じで出力してもcsvファイル形式にはならないので、おとなしく引数で指定しよう
([["2015/07/01", "1000"], ["2015/07/02", "2000"], ... のように、角カッコやダブルクォートがついてしまう)


◯ディレクトリ
広告ごとに各ディレクトリを作成。
中に、同名のスクリプトを置いておく。


top
+-- nend
+-- parse.rb
+-- imobile
+-- parse.rb
+-- admob
+-- parse.rb



各ディレクトリに入って、各社管理画面からダウンロードしてきたcsvを使えば、1社ずつデータを抽出できる。


◯全部まとめて

さて、全社まとめて処理したい。
先ほど作った各社のparse.rbを呼び出す、統括スクリプトとでも呼ぶべきスクリプトを作る。

スクリプトファイル名は同じにしてあるので、topディレクトリで

#{ad}/parse.rb
を実行すればいい。

ダウンロードしてきたcsvファイルの指定だが、
各社思い思いの名前になっている。
(nendだと、nend_m_20150801_20150804.csv 、imobileだと 日別レポート_20150801-20150804.csv、 admobだとadmob-report.csv など)
ダウンロードして、毎回毎回ファイル名を変更するのはごめんだ。
このファイル名のまま実行できるようにしたい。
特定のディレクトリにそのファイル1つだけを入れる、とかすれば

`ls path/to/dir`.chomp


とかでできるが、毎回全csvファイルを別ディレクトリに保存するのもめんどい。
dataディレクトリは1つで、ファイル名を検索するのがよい。
というわけで、

`ls -1r path/to/dir nend_m_*.csv`.gsub(/\n.*/, "")


というふうにした。
ls -1 オプションは、ファイルを1行ずつ表示。
ls -r オプションは、ファイル名を降順に表示。最新の日付の入ったファイル名から取得するイメージ。(YYYYMMDDじゃなかったらダメになるものもあるきがするが)
gsubは、2行目以降を削除している。


結果出力は
#{ad}/output.csv
のようにやはり名前を統一しておく。


csvに全部まとめた最終出力を行い、
Numbersで自動で開く。

`open -a Numbers #{outfilename}`




で、ダブルクリックで実行できるようにするため、
シェルスクリプトからこのRubyスクリプトを呼び出す。

#! /bin/sh
cd `dirname $0`
ruby correct.rb



このシェルスクリプトを右クリックし、「このアプリケーションで開く」 で「ターミナル」を指定
これで、Finderでダブルクリックで実行できるようになった。

キモは
cd `dirname $0`
で、カレントをファイルの場所に移動させたい。
これが必要なので、Rubyスクリプトをダブルクリック実行させてもうまくいかないのだ。


【2015/08/05 18:09 】 | 開発一般 | 有り難いご意見(0)
| ホーム |