Skip to content

Instantly share code, notes, and snippets.

@wilfrem
wilfrem / gist:6482027
Created September 8, 2013 05:11
ServiceStack.OrmLite+MySQLのバグ?
多分、どっちが悪いってわけじゃないんだろうけど。。。
ServiceStack.OrmLiteのautoDisposeConnectionをfalseにしてMySQLを使うと1日ぐらいでConnection must be valid and Openっていうエラーが出るようになります
これはどうもMySQLのConnectionはプーリングしてるといつの間にかClose?Dispose?するっぽくて(長時間アクセスなしが入るかも)、それで上記エラーが出るらしい。
回避策としては常にOpenするようにしましょうとここには書いてある
http://bytes.com/topic/asp-net/answers/325128-system-invalidoperationexception-connection-must-valid-open
で、一方、ServiceStackはautoDisposeConnection=falseだと一度Openしたのは二度Openしないってのが入ってるので、いつの間にか死んでる接続につなぎに行ってエラーになる/(^o^)\
多分trueにすると解決しそうなので、これから試す
typedef struct{
BYTE waza[4];
WORD userId;
semi_long exp;//3バイト整数ってなんだ。組み込みだとあるのかそんなの
WORD DoryokuPoint;
}Pokemon;
int holdIndex;
Pokemon* selectedPokemon;
Item* items;
@wilfrem
wilfrem / gist:6271733
Created August 19, 2013 17:27
PlayStation Mobile Studio(PSM Studio)がWindows8でメニューが非表示になるバグの直し方
gtk#のバグらしい。GIMPでも発生してる
http://reddog.s35.xrea.com/wiki/GIMP2.8%E3%81%A7%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%A1%A8%E7%A4%BA%E3%81%8C%E6%B6%88%E3%81%88%E3%82%8B%E3%83%90%E3%82%B0%E3%81%AE%E5%AF%BE%E5%BF%9C.html
直し方
本家からgtk#の最新版上書きインストール。
http://www.go-mono.com/mono-downloads/download.html
@wilfrem
wilfrem / gist:6201158
Created August 10, 2013 16:55
ServiceStackのAuthPlugin(AuthFeature)でうっかりオープンリダイレクタ脆弱性を作らないようにする方法
AuthPluginは/authがContinueパラメータを受け取り、認証後はContinueパラメータで指定されたURLにリダイレクトする設計になっています
そして、Continueはホストも含めたフルURLを指定するため、オープンリダイレクタになってしまう危険性があります
対処法としては
AuthServiceクラスはstaticプロパティとしてValidateFnを持っており、これにdelegateをセットすると認証前にValidateFnにセットしたdelegateが呼び出されるようになります
なので、ValidateFnに入れるdelegateでContinueをチェックするようにし、ホワイトリストに無いhostを指定されたらリダイレクトせずに400/404を投げれば良い
@wilfrem
wilfrem / gist:6149336
Last active December 20, 2015 14:49
Linux上でJenkins+mono+NuGet.exeを動かすためのメモ
まずはJenkinsの設定でmsbuildのパスとしてxbuildのパスを教える
NuGetを動かすためにはMicrosoft.Build.dllが必要なのでダウンロードしてNuGet.exeに置く
http://headsigned.com/article/running-nuget-command-line-on-linux
(libmono-microsoft-build*ではダメだったので、多分バージョン違いかDLL違いかと。。。)
環境変数EnableNuGetPackageRestoreをtrueに設定する
mozroots --import --ask-remove を実行し、mozillaの証明書をmonoにインストール
@wilfrem
wilfrem / LuaUTF8.cs
Created July 10, 2013 16:40
UTF8文字列がソースコードに入っているとLuaのコンパイラが死ぬので、それを防ぐために非ASCII文字をLuaのエスケープシーケンスに置き換えるための拡張メソッド
public static class ScriptExtensions
{
static Regex rxNonAscii = new Regex (@"\P{IsBasicLatin}", RegexOptions.Compiled);
public static byte[] ToUTF8Bytes(this string text){
return System.Text.Encoding.UTF8.GetBytes (text);
}
public static string EncodeNonAsciiForLua(this string script){
return rxNonAscii.Replace (script, (m) =>
string.Join ("", m.Value.ToUTF8Bytes().Select ((it) => @"\" + it.ToString ().Trim ()))
);
@wilfrem
wilfrem / gist:5915339
Created July 3, 2013 03:52
Xamarin.AndroidでJavaインターフェイスを継承したいだけなのにIJavaObjectとかIDisposalとかも一緒に実装しなきゃいけなくなってウザイとき
Java.Lang.Objectを継承しなさい。C#で。
そうすると、勝手にDisposeとかJavaのポインタとか実装してくれる。
@wilfrem
wilfrem / AntiUIChattering.cs
Created July 1, 2013 17:07
チャタリング防止機構。Monitor使うのはやめたほうがいいかな……
/// <summary>
/// AndroidUIスレッドのチャタリングを防ぐための機構
/// </summary>
public static class AntiUIChattering
{
public static EventHandler<T> WrapHandlerWithArgs<T>(EventHandler<T> funcForUIEvent)
{
return (sender, e)=>{
if(!Monitor.TryEnter(funcForUIEvent))
return;
@wilfrem
wilfrem / xamarin.android.application.md
Created June 29, 2013 08:50
Xamarin AndroidでApplicationクラスを作成する方法

Xamarin AndroidでApplicationクラスを作成する方法

多分目的

  • なんか各ActivityでGlobalに使えるコンテキスト的なクラスが欲しいんじゃね?という時に使う

やり方

  • Applicationを継承したクラスを作る
  • protectedなコンストラクタ(引数ついてる方)を呼び出せるようなpublicなコンストラクタを使う
  • Application属性を付ける(勝手にAndroidManifestに追記してくれます)
@wilfrem
wilfrem / xamarin_gmap.md
Created June 23, 2013 17:21
Xamarin(Mono) AndroidでGoogle Maps API for Android v2を使うためのメモ

使うためのポイント

  • Google Maps API for Android v2をつかうためにはGoogle Play Serviceを叩く必要がある
  • Google Play Serviceを叩くクライアントは現状jarでしか提供されてない
  • jarをC#で使うためにはBinding Libraryが必要(サンプルので可。どちらにしてもIndie以上のライセンスが必要)
  • また、Google Play Serviceは4系向けなので、2系対応にはfragment対応が必要
  • Google APIに鍵登録必要なので注意
  • 必要となるパーミッションが分かりにくいので注意

##必要なパーミッション