ともち屋

リスの写真とか、技術メモとか。

[Jenkins] Xcode5入れたらjenkinsビルドが通らない。

Xcode5をインストールしてくれた方が
Xcode4.6とXcode5を共存させるために、Xcode4.6をリネームしていたらしい。

xcrunコマンドを再設定することで治るそうな。

sudo xcode-select -switch /Applications/Xcode4.6.app/Contents/Developer

※ともち屋環境だとXcode4.6.appとリネームされていました。


これをJenkinsのビルド手順に追加してビルド実行すると見事にコケました。
パスワード入力してないので当然でした。

Jenkinsからsudo使う場合はパスワード入力要らないように設定します。

sudo /usr/sbin/visudo

でsudoの設定ファイルを開き

# Defaults requiretty          
Defaults:jenkins !requiretty   
jenkins ALL=(ALL) NOPASSWD:ALL

を追記してあげると無事にビルドが通るようになりました。

このアプリはXcode4.6で、これはXcode5でビルドしたい!
という要望があった際はビルド手順で都度指定してあげると良いかもしれません。



参考
Ubuntu12.04 VPSサーバ構築手順:CI環境構築 Jenkinsユーザのsudo処理有効化設定 - Shinya’s Daily Report覚えた、xcrun: Error: could not stat active Xcode path « イナヅマTVログ

mecanim勉強会の復習

f:id:tomocha0911:20130916222438j:plain

【満員御礼!】【Unity】誰でもできる!Mecanimを使ってゲームを作ろう【初級編】 : ATND
7/31に受講した勉強会の復習でこーいうの作ってみたり。


ついでに
PMD を Mecanim 出来る PMD2FBX & MMD4Mecanim を試してみた - 凹みTips
を試してみたり。
Lat式ミクが動く・・・!
ありがたやありがたや。

次は横スクロールで走らせてみよう。

ipa作ろうとすると「object file format unrecognized, invalid, or unsuitable」エラー

普段Unityで作ったiOS向けプロジェクトは、jenkinsを使って
Unity => Xcodeプロジェクト => ビルドして.app => .ipa
というように.ipaファイルを作っているのですが、
新規マシンにjenkins構築していたときに下記エラーが出て小一時間ハマったのでメモ。

/var/folders/dp/xxxx/T/xxxx/Payload/MyApp.app: object file format unrecognized, invalid, or unsuitable

CODESIGN_ALLOCATEにXcode下にあるcodesign_allocate入れれば動くよ!

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"

OSX Lionならね!という記事を見つけたので試してみました。

残念、新マシンはMountain Lionだった!
のが理由かはわかりませんが、上記方法ではだめでした。



結局は下記のようにターミナルでぽちぽち打って解決。
そもそも/usr/bin/にcodesign_allocateがなかったっていう。

sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate /usr/bin

ぐっでーーーん

暑すぎてまろんちゃんもこんな感じ。

f:id:tomocha0911:20130818210759j:plain

下は保冷剤をタオルで包んだ物。

ちょっと動くとここに来てぐでーんとしてます。

ぐでーんかわいい。

ASP.NET勉強会メモ

ASP.NETの某勉強会に出たので手元のメモを書き書き。

IISアプリケーションプールの統合パイプラインモード

IISASP.NETのパイプラインを1つとして扱えるようになった。
昔に作成した片方のパイプラインを専用で使わなければならないようなアプリは動かない可能性がある。

IISアプリケーションプール詳細設定

32bitアプリケーション有効化

サードパーティ製の32bitコンポーネント使うアプリケーションは
これをtrueにすればWowを使って32bit動作してくれる。

アプリケーションIDのビルトインアカウント

サービスで使用される「System」「Local Service」「Network Service」アカウントとは? − @IT

現在の推奨はApplicationPoolIdentity

カスタムアカウントで特定ユーザーの権限を与えることもできる。

ping応答最大時間

デフォ90秒。応答しないのが値を超えるとプロセスが強制的にリサイクルされる。

ワーカープロセス最大数

増やすとウェブガーデンになる。マルチプロセスで動作する。
(最近は仮想化が主流なので、使わないことが殆ど)

リサイクル

時間、メモリ制限でワーカープロセスをリサイクルできる。
予期せぬリサイクルには注意。
⇒セッションいきなり切れたりする。

IIS-サイトの設定

認証

windows認証(IEのみサポート)
ASP.NET偽装(windows認証で入ったアカウントの権限で実行できる)

アプリケーションプール

増やしすぎるとメモリがやばい。
ワーカープロセス増やすより多くメモリを確保する

web.configでユーザの操作を制御する

特定ディレクトリのみ匿名ユーザ拒否したい

例:MemberAreaというディレクトリ内のページはログインしてないと閲覧付加

<location path="MemberArea"><!--ディレクトリのパス-->
     <system.web>
       <authorization>
         <deny users="?"/><!--匿名ユーザを拒否する-->
       </authorization>
     </system.web>
  </location>
windows認証を使いたい
    <authentication mode="Windows">
    </authentication>
ログインのリダイレクト先を指定
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880"></forms>
    </authentication>
特定のユーザのみにアクセス許可する
 	<system.web>
       <authorization>
         <deny users="?"/><!--匿名ユーザを拒否する-->
         <allow users="Training,hoge"/><!--特定ユーザーのみ-->
         <deny users="*"/><!--それ以外を拒否-->
       </authorization>
     </system.web>

Unityでスマートフォンのスリープを無効にする

各プラットフォームでプラグイン作ってごにょごにょしないといけないのか・・・
めんどくせぇ

って思ってたら下記でいけるのかー
Unity Script Reference:

さすがUnityさん痺れる。

SQLServer勉強会のメモ

某所でSQLServer基礎についての勉強会があったのでメモ。

口頭の説明のメモなので間違ってるかもしれない。
ちげぇ!とかあったらコメント頂ければ幸いです。

導入時のハマりポイント

NetLibが入っていない
・プロトコルが違う(SQL Serverで設定できる。普通はTCP/IP)

SQL ServerをWindows認証(推奨)で使う。

ネットワークにパスワード情報とか流れない。セキュア。
SQL Serverマシンをドメインに参加させること必須
・アクティブディレクトリの知識が必須

メモリ管理

・メモリバッファに読み込んで操作する
・バッファにない場合は追加で読み込んで操作する

パラメータクエリ

・実行計画が使いまわされるので高速
・文字列でクエリを送ると毎回違う実行計画⇒コンパイルなので低速

ローカルのサーバへ接続

  1. .
  2. localhost
  3. (local)

でも繋がる

レポートを使おう

[スキーマ]右クリック⇒[レポート]で色々なレポートを参照できる。

メモリ管理ちょっといい話

SQL Serverのメモリ割り当てを自動にすると、利用可能なメモリを最大限に使う。
他のプロセスがメモリを要求すると、SQL Serverは自分のメモリを解放して渡す。

インスタンス名とポート

デフォルトインスタンスは1433ポート
その他はランダムポートになる。
接続できないーとかの時はポートも疑う。

復旧モデルって?

  1. 単純

デメリット:データベースバックアップのみ。トランザクションログを使って復旧はできない
メリット:定期的にログを消してくれるので容量節約。

  1. 完全

メリット:データベースバックアップ+トランザクションログで復旧できる。
デメリット:トランザクションログを消さないのでどんどん容量を圧迫していく。トランザクションバックアップの手間が必要になる。

データベースサイズの自動拡張

実は拡張する度にデータベースを止めるので、パフォーマンス低下に繋がる。
特に%での拡張はヤバイ。どんどん拡張サイズが増える。サイズ指定拡張おすすめ。
初期サイズ、拡張サイズを考えて物理設計をする必要がある。

完全復旧モデル+%拡張だと自動拡張しまくってガンガンパフォーマンス落ちるから注意。

dboの謎

database owner の略。既定のスキーマ

textデータ型

別テーブルにデータを持たせ、自テーブルはポインタだけを持つ。
nvarchar型の範囲のmaxを4000以上にした場合もtext型と同様になる。
※インデックス貼れない。

楽観的同時実行制御(OCC)

開始時には特に排他処理など行なわず、完了する際に他からの更新がされたか否かを確認し、
もし他から更新されてしまっていたら自らの更新処理を破棄し、エラーとする。
パフォーマンスが良い。

悲観的同時実行制御(PCC)

誰かが更新してるかもしれない
⇒ロックをかけてから更新処理
※ロック失敗したら誰かが更新している。

インデックスチューニングのポイント

  1. 選択数が多い順に結合インデックスを作る。
  2. インデックスを定期的に再構築して最適化する。

長く使うとB木が偏ってくる。

tempDBを高速なディスクに作る

大量ソート時tempdbが使われるので、なるべく早いディスクで作ると
パフォーマンスが良くなる。

UNIONのひみつ

重複を省く⇒結合時に内部的にソートしている
つまりでかいデータセットだとパフォーマンス低下に繋がる。

UNION ALL はソートせず、重複省かないので、パフォーマンスは良い。

パフォーマンスチューニングする際、プロファイラを使って・・・

  1. 実行時間を見る

どこが時間かかってるか?

  1. 実行プランを見る

index使ってるか?

  1. indexを見る

どこにindex貼るか?実際に貼って実行、を繰り返す

パフォーマンスチューニングのポイント

  1. 統計情報を更新しつつ、チューニングする

実行プランが正しいのが出てこない
SQL Serverは自動で更新するようになっている

  1. SQLServerは8Kブロック

ブロックをうまく使えるような行サイズにすると
検索が高速になる。ブロックまたがりは重い。