p_chinのおっぱいブログ

UnityとPerlなど

UnityProject内でのコードレビューとComponent設計をする時に気をつけてる事

このエントリはUnity Advent Calendar 2015の6日目の記事になります。 前日のエントリは@hecomiさんのUnity で実行時にコードやコマンドを補完つきで実行できる uREPL を作ってみたでした。 デバッグがカッコ良くなるのもイケてますし、用途としてはコードを…

関数の宣言まわりで地雷踏んでUnityのmonoでInternalCompilerErrorが出てしまったのを解決した話

問題 以下の様なコードをUnityのmonoでコンパイルしたらInternalCompilerErrorを出してしまった。 コード public class Bomb { public void Explosion(float radius = 10f){} public void Explosion(Vector3 worldPos, float radius = 10f){} } public class…

BitmapFontの更新をSceneからの参照を保ったまま更新する手順

ある程度画面を作成してきたところでBitmapFontの更新があって、SceneからのUIFontの参照を保ったまま更新したいと思ってて悩んで解決に至ったのでメモ。 ※UIFontの公式の機能を使ってるだけです。 BitmapFontGeneratorで更新したいフォントデータ(.fnt, .pn…

Unityの4.2.2から変わってる俺得そうな変更をまとめた

なんかUnityの最新versionを使ってゲーム作りたかったり、そろそろiOS8のよさげなfeatureが出て運用中のタイトルのUnityVersionupもありそうだなと思ってたので 普段仕事で使ってるUnity4.2.2から最新までの変更を見てたので、まとめる。 ちなみに当方、Edit…

フロントエンジニアだけどYAPC::Asia2014に行ってきたので特に楽しかった講演とその感想

今年は1年以上、業務でPerlを触ってないけどまだ自分でも楽しめそうなセッションがあったので、主に 業務効率化 や リリース管理 などの話題に絞って講演に参加してた。 印象に残った講演と、その感想を書いて行く 1日目 完成されたシステムなどない。完成さ…

湯ナイト 2014 summerというイベントに行ってきた

湯ナイトSummarに行って来ました。 日本Androidの会Unity支部主催のイベントでした。 FaceBookグループを学生時代に見つけてからカジュアルに入ってずっとROM専だったけど、今回の湯ナイトのイベントもたまたま見つけて楽しそうだから参加してみた。 2泊3日…

UnityEditorで選択したファイルのGitHubのurlを開くEditorTool書いた

最近良く複数人で同じコードをチェックして問題のある部分を共有する事とかあって、 githubからでポチポチ目的のファイルまでたどり着くの頑張ったり UnityEditorからTerminalへファイルをD and Dしてpathを出して、それをコピペしてgithubのurlに貼付けて目…

良く切り替えるScriptDefineSymbolをEditorToolからサクっと切り替えられると便利

結構デバッグモードとかをDefineSymbolで制御してて、Edit->ProjectSettings->Player->OtherSettings->ScriptingDefineSymbolに文字列を直打ちして切り替えるの面倒だし間違えやすい。 なのでプロジェクト内で割と切り替える事の多いDefineSymbolGroupにEdit…

開発環境じゃなかったらLogを出さなくする仕組み

ストアに申請するビルドだけLog出さない様にしたりとか、できる namespase無しのこのクラスをプロジェクトに置けば、こっちが優先的に参照される 開発環境じゃなかったらLogを出さなくする仕組み

testflightのアップロードAPIにcurlでPOSTすると、レスポンスに'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)が返された問題あったけど治ってた

今日になってから、いきなりこのレスポンスが返される様になった気がする。 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) 被害 アプリケーションバイナリ自体はアップロード出来ていて、実機にinstallしても、特に問…

Unityのversionによって起動時にダイアログで警告を出すEditorScript書いた

versionが足りないと、以下の様な表示を出す様にした 取り急ぎ、version比較条件書き換えて表示させた 必要なAPI Unity起動時に、[InitializeOnLoad]Attributeを付けたクラスのコンストラクタを呼んでくれる。 InitializeOnLoadのリファレンス あと、Unityの…

TestFlightにapkをアップロードする時にInfo.plistやAndroidManifestに日本語が含まれてるから失敗した話

今回はアプリ名を日本語に設定(UnityのPlayerSettingsのProductName欄で)したapkをTestFlightのAPIをcurlコマンドで叩いてアップロードしようとして、その事件が起きたのでメモ 具体的にどういう失敗なのか? 試しにAndroidManifestに日本語が含まれてるapk…

rubyファイルを実行すると、shebangの書いてある1行目でInvalid charエラーが出た時の対処

Xvideos.rb:1: Invalid char `\357' in expression Xvideos.rb:1: Invalid char `\273' in expression Xvideos.rb:1: Invalid char `\277' in expression 上記の様なエラーが出る。 原因は、rubyやshファイルをBOM付きutf-8で保存してしまうと、何故かsheban…

foreachでコレクションを回す時に、回してるコレクションを操作してしまった時に起こるinvalidOperationException~

c#

なんか、foreachの部分でエラーが出てびびった // 実際にはhogeList.Clear使えばいいけどforeachで全要素を消したい時 foreach (hoge in hogeList) { hogeList.Remove(hoge); } これをやると、invalidOperationExceptionが投げられる invalidOperationExcept…

みなとみらいのドッグヤードで行われたプロジェクションマッピングみてきた

[イベント公式サイト] http://www.yokohama-landmark.jp/web/pickup/special/13dockyard_pm/top.html なんか、みなとみらいの過去から未来の建造を船に乗って冒険する感じの演出だった。 整理券が各時間帯毎に500枚まで配られてる。 その整理券が若い番号な…

UnityのAssetBundleのCacheについて

Cacheしてくれる条件 WWW.LoadFromCacheOrDownload(url, version);でurlに配信されているAssetBundleを取って来れるけど、どの条件でCacheを使うのか分からなかった。 どうやら、AssetBundleのversionで指定した物が以前にDownLoad済みで、且つCacheもストレ…

xcodebuildコマンドを打つと/Developer/usr/bin/xcodebuild' (No such file or directory)と出る時

しかしwhich xcodebuildすると/usr/bin/xcodebuildにあるから意味分かんなかった。 対処法 なんかXcode.app以下のxcodebuildを見てるみたいなので、sudo xcode-select -switch /Applications/Xcode.app/Contents/Developerすれば、Developperディレクトリ以…

(5)先週の小さい技術メモを全部まとめた(perl,unity,c#)

perl ファイル演算子便利 http://www2u.biglobe.ne.jp/MAS/perl/ref/filetest.html 適切なファイル情報が引けるので、existなら-eに代用出来る unity Object.DestroyImmediate 該当のオブジェクトだけでなく、そのオブジェクトが参照してるAssetも削除してし…

WebPlayerでtwitterの投稿ページを開く

twitterの投稿ページを投稿する文字指定して開く というのを試して盛大にハマッたのでメモ。 結論としては、OpenURL関数使うのが一番いい。 jsとcsのURIエンコーディング問題 OpenURL関数とExternalEval関数 WebPlayerのデモ jsとcsのURIエンコーディング問…

perlで時間を固定するの処理で色々ハマった時のメモ

クライアントサイド(Unity)の時間依存の処理(2013-07-10〜2013-07-20までにログインしたら報酬プレゼントとか)のテストを書きたかったので、サーバの時間を固定する処理が欲しくて書いた時に悩む事が多かったのでメモ BEGINEブロックでCORE::GLOBAL::timeな…

Unity終了時にSaveされてないAssetがあった時の確認画面を分かりやすくする方法

SaveしてないAssetがある状態でUnityを終了させようとすると、「saveしてないぞ!」っていう確認のdialogが出るは皆さんご存知だ。 これをもっと見やすくする方法があった ただ単にUnityのPreferences(cmd+,)のGeneralにある、Verify Saving Assetsをtrueに…

(4)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

perl Data::Validatorの、hashで引数渡さなくても良いStrictSequenceというのもある http://search.cpan.org/~gfuji/Data-Validator-1.03/lib/Data/Validator.pm#___top リファレンスの例文 sub hoge { state $rule = Data::Validator->new( foo => 'Str', )…

Mouseを少し使ってみた

初めてMouseを使ったクラス作ったりしたので、その覚え書き 多分ドキュメント読めばOKな内容だ。 使用例 package Fugu::Base; use Mouse; #Mouseのコード書くぞ(><) has life => ( is => 'rw', #get,setを許可 isa => 'Int', #Validateもしてくれる required…

perlでメソッドや関数を作る時に気をつけたい事のメモ

最近一つの機能をガーッと実装して、気付いたら分かりにくいコードを量産してたので、下記に今後から気をつけたい事をメモる そもそも関数にする理由 関数名の先頭にアンダースコアを付けて外部クラスから呼ばれたくないアピールできる 複雑な処理をする場合…

tmuxのコマンドモードのkey-bindをC-mにして死んだ

今朝、「なんかtmux上だけENTER効かないんですけどー」ってなってた CR = C-m, LF = C-jに標準で割り当てられてる だからC-mにコマンドモードのkey-bindに割り当ててたらENTER押せなかった まとめ テストに出るらしい

(3)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Tool ILSPAY http://sourceforge.net/projects/sharpdevelop/files/ILSpy/ DLLをデコンパイルするツール duコマンド サーバ内で使うと一時的に負荷がかかるのであまり良くない http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230748/ ディレクトリ内…

n+1問題を体験しました

ORM使ってて、便利で余裕キメてたらn+1問題を起こしてた。 n+1問題とは 1回目 のselectで、あるテーブルのレコードの集合を取ってきて、更にまた別のテーブルから先ほど取得したレコードデータ使用して n回 selectクエリを発行してしまう現象だ。 うまく説明…

エラーのハンドリングはコントローラーで

MVCパターンを利用したフレームワークのArkとか使ってると、基本的にModelで出たエラーをControllerの、例えばhoge/errorというアクションに渡してクライアントにエラー文を送ったりする。 Modelでエラーを丸め込んで投げちゃうのは良くない 以下の様な感じ …

MySQLのカラム型の使い分けについてなど

DB

db設計する時にカラムに与える型の選び方とその理由について教わった。 MySQL公式見たら他にもカラム型あったけど、今回は良く見るカラム型について書く signとunsign c#とかだとintとuintという表記でこの2つは分かれている signはマイナスも含んだ表現(int…

(2)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Tool pandoc Textile、MarkDownからHTMLまで相互変換できるらしいし、便利そう http://johnmacfarlane.net/pandoc/try/ Perl 変数名の頭文字の*マーク 正規表現と同じで、全ての型に対応するものらしい。 http://d.hatena.ne.jp/chaichanPaPa/20090617/12452…

XamarineStudioでviモード使えたけど物足りなくて止めちゃった

perlはvimで書いててUnityはXamarineで書いてるから、ちょっと怠くなってきたのでPrefarenceに便利項目無いか探してみたらviモードで操作出来るの知った。 でも、デフォルトの状態だと、Ctr+vのVisualBlock使えないし、コマンドモードのコマンドも打ちづらい…

perlの素の例外処理

perlには例外処理が無いからTry::Tinyとかの例外処理用のモジュールがあるって認識だったけど、違った。 evalの例外処理について Try::Tinyは以下のevalを使った例外処理の記述をtry{}catch{}にして例外を返してくれるモジュールだった。 eval { die 'fugu' …

(1)先週覚えたけどブログにする程ボリューム無いから全部まとめてメモ

Const.pmとconfig.pl 環境によって変更する値はconfig.plで そうじゃないのはConst.pmで管理した方がいい config.plが膨らんじゃうのも見づらい トランザクションについて メソッドの中で多くのDB操作をするならば、メソッドの中でトランザクション宣言した…

nginxでAssetBundleを配信する時にハマった

nginxでAssetBundleを配信 AssetBundle(.unity3dファイル)はバイナリで、ブラウザで読めないので表示やダウンロードは出来ないようだ 正しく配信されてるかどうかはcurlコマンド使ってターミナル等から確認するのが良い unity3dフォーマットファイルのConten…

HTTP::Request::Commonからperlのファットコンマなどを思い知った

POSTメソッドの引数に無名配列の中にハッシュの様な物が入ってて意味分かんなかった #色々省略してるけどこんなん POST($url, [ fugu => 'kawaii', oppai => 85, ]); あれ?配列の中にhash(の様な書き方)を入れると展開されるんじゃなかったっけ? もちろん…

SharpUnitの処理の解説~Unity3D_TestRunnnerについて

職場の先輩方がSharpUnitをUnityのテスト用に色々改造してたので、自分もやりたいな〜と思っててコード読んでたけど、一回読んだ内容を忘れて読み直したのでメモしておこう。 一つの記事に全て書くと分かりにくいし長文読むの怠いから、分けて書く。 今回はS…

Dictionaryの拡張メソッド書いてみた

c#

ジェネリックメソッド初めて書いた。 あと、第一引数にthisを使う事によって、既存クラスの拡張メソッドを作れるなんて知らなかったので良かった。 今のところはdictionary("result", "ok");みたいにしないと値取れないけど、将来的にはdictionary["result"]…

githubでbranchの状態を過去に戻したいときのあれこれ

pushしたけどイケてないcommitがあったので、消したかった時に起きたカナシミと、その対処法について かなりテンパったんやで... こんな感じでミスした イケてないcommit以前のcommitのhashを直で指定してcheckoutした hashに名前着いてないし、current bran…

passwordを守るハッシュ法について

チャレンジレスポンス認証を教えてもらったからブログ書こうと思ったけど、書く事多くて怠そうだったので、まずハッシュ法についてまとめる事にした。 ハッシュって何? ハッシュ(hash)・ド・ビーフのハッシュと同じで肉を「細切れ」とか「散らす」みたいな…

git merge --no-ff {branch_name}とgit-new-workdirとpush.default simpleについて聞いた

gitについて色々教えてもらったのでメモ でも、半分くらい怖くないGit読めばいい感が出てる記事になると思う git merge --no-ff {branch_name} 怖くないGitの40枚目から説明ある --no-ffオプション付ければgitがfastforwardな処理をしてしまう場合でも、丁寧…

jenkinsのGitPluginでコミットメッセージが文字化けした話

日本語メッセージが文字化けして辛かった。 jenkinsの設定見たら文字コードがASCIIになってたので 今回jenkinsはdeamonizeしてたので、runスクリプトに export LANG=ja_JP.utf-8 を追加したら治ってutf-8使ってくれる様になった 以下のページを参考にしてる …

jenkinsでカバレッジレポートを出力しようとしたらGraphic N/Aエラーが出た話

以下の様なエラーが出た 問題っぽいのが2つある どっちもやってダメだったら辛そう 1. jenkinsの起動オプションにエラー画像の指示通り-Djava.awt.headless=trueを追加する 直接jenkins.warに引数を渡すか java -jar path/to/jenkins.war -Djava.awt.headles…

perlのクラスメソッドとオブジェクトメソッドの違い

なんか、今更感あるけど認識が甘かったので先輩に教えてもらった。 確認の為に、以下にまとめてみた。 #!/usr/bin/env perl use 5.016; use warnings; use utf8; use autodie; package Oppai { # コンストラクタ newじゃなくても良いけど慣例的にnew # コン…

Text::Xslate::Syntax::Kolonのテンプレートについて

便利そうな仕組みがあって先輩に教えてもらったのでメモ PHPのincludeみたいの使えたり、他にも色々あった 詳しくはドキュメント参照して分からなかったら見てください コードみてみる kawaii.tx : cascaed common::oppai {title => "タイトルに値を渡して…

killコマンドとかシグナルとかサービスの起動停止の話

killコマンドはプロセスを殺すの? 正確にはプロセスに対してシグナルを送信している killコマンドは引数指定しないデフォルトの状態だとTERMシグナル(正常終了)を送る killコマンドはプロセスにシグナル(プロセスに要求する振る舞い)を送るコマンドだった …

cpanm DBD::mysqlをやった時にハマった事

こんにちは!ぴーちんです! cpanm DBD::mysqlしたら、以下のようなエラーが出ました!! DBD::mysql::db do failed: alter routine command denied to user ''@'localhost' ユーザーが指定されてない!と言われてる気がします ソースファイルから手動でmake i…

MacBookProに紅茶ぶっかけてカナシミを背負った話

事件 先週のとある朝、寒いので布団をかけてぬくぬく座りながら MBPと同じテーブルでコップに紅茶を注いでから、日課のブログを書こうとした時 布団がコップに引っかかって 紅茶をMacBookProにこぼしてしまった すぐに電源を切って機体を逆さまにして外部に…

plenvのバージョン管理について

入社して配属先について、初日にやったことを忘れてたのでリマインドがてらメモ 詳しくはplenvの作者tokuhirom氏の記事を見て、分からなかったら以下も見てみると良い インストールしてみよう plenv install 5.16.3 --as=5.16 --as={name}でバージョンに自由…

Tengのpager機能使った時のメモ

Tengのsearch_with_pager関数を使えばレンダリングの結果にページャ機能をよしなに付けてくれるらしい ドキュメントはTeng::Plugin::PagerとData::Page::NoTotalEntries見れば雰囲気つかめると思う Controllerのコード見る sub list :Local { my($self, $c) …

Xslateのテンプレート内でperlの関数を実行する方法

DBからのデータをリストにしてテンプレートで表示させたいときに テンプレートに<p><: $oppai :><p>とか繰り返し書いてたら面倒くさい forとかで要素自動生成したいと思ったら、 Text::Xslate::Syntax::Kolonに、そんな機能があったから使ったからメモ 前提知識として、読む前</p></:></p>…