Density | アイコンのピクセルサイズ | 画像リソース比率 |
---|---|---|
xxxhdpi | 192 x 192 | 400% |
xxhdpi | 144 x 144 | 300% |
xhdpi | 96 x 96 | 200% |
hdpi | 72 x 72 | 150% |
mdpi | 48 x 48 | 100%(基準) |
ldpi | 36 x 36 | 75% |
2017年2月24日金曜日
Android で必要になるアイコンのピクセルサイズと画像リソース比率の一覧です。
Android で必要になるアイコンのピクセルサイズと画像リソース比率の一覧です。
2017年2月23日木曜日
Dapper 複数のパラメータ指定
string sql = "SELECT * FROM USER_MST WHERE USERID = @UserId AND PASSWORD = @Password AND USER無効FLG = 0";
db.Open();
var recs = db.Query<USER_MST>(sql, new { UserId = iUserId, Password = iPassword });
db.Open();
var recs = db.Query<USER_MST>(sql, new { UserId = iUserId, Password = iPassword });
元ネタ
http://sweets-junkie.hatenablog.com/entry/2014/03/07/010004
C#で使える軽量なORマッパー「Dapper」についてのナレッジが貯まってきたのでまとめてみます。
#1 Dapperとは
C#で書かれた軽量なORマッパー。
ただし、クエリ生成やソース自動生成などの機能は備えていない。
その代り高速。ORマッパーを嫌う人は速度面を指摘するけど、気になることはないと思う。
とにかく多機能なORマッパーを使いたい人はEntityFramework使ってどうぞ。
#2 導入方法
NuGetから「Dapper」検索GO!!
#3 使い方
①単一テーブルをSelectしてみる。
対象のテーブルは以下。
基本的にはカラム名=変数名とする。大文字小文字は区別しない。
カラム名=変数名とならない場合はマッピングできないので、クエリ側でAS句を使い変数名と合わせる必要がある。
今回は以下のようなクラスを用意。
ソースの説明はコメントを参照されたし。
②複数レコード取得してみる。
対象テーブルは①と同じ。
③1対1の関係のテーブルをJOINして取得してみる。
対象のテーブルは以下。
ちなみに3つ以上のテーブルを結合する場合は、「con.Query」に3つ目のテーブルを追加して、splitOnにはカンマ区切りで区切り位置のカラム名を指定すればよい。
④ストアドプロシージャをよんでみる。
「sp_getUsers」というストアドプロシージャがあるとして。
http://sweets-junkie.hatenablog.com/entry/2014/03/07/010004
C#で使える軽量なORマッパー「Dapper」についてのナレッジが貯まってきたのでまとめてみます。
#1 Dapperとは
C#で書かれた軽量なORマッパー。
ただし、クエリ生成やソース自動生成などの機能は備えていない。
その代り高速。ORマッパーを嫌う人は速度面を指摘するけど、気になることはないと思う。
とにかく多機能なORマッパーを使いたい人はEntityFramework使ってどうぞ。
#2 導入方法
NuGetから「Dapper」検索GO!!
#3 使い方
①単一テーブルをSelectしてみる。
対象のテーブルは以下。
テーブル名:Users カラム:UserName、AgeDapperを使用してDBの取得結果をオブジェクトにマップするにはマップ先となるクラスを用意する必要がある。
基本的にはカラム名=変数名とする。大文字小文字は区別しない。
カラム名=変数名とならない場合はマッピングできないので、クエリ側でAS句を使い変数名と合わせる必要がある。
今回は以下のようなクラスを用意。
class User { public String UserName { get; set; } public int Age { get; set; } }では早速Usersテーブルの情報をUserクラスにマッピング。
public User GetUser() { // DBコネクションを取得(ここは適当 Connection con = ConnectionUtil.GetConnection("接続文字列"); // DBに投げるクエリ @UserName はパラメータ String sql = @"SELECT * FROM Users WHERE UserName = @UserName"; // クエリを実行して、取得結果をUserクラスにマッピング // パラメータは dynamic型で指定 // SingleOrDefault() を使うと、複数件取得できた場合に例外、0件取得の場合にNullを返してくれる。 // Single() を使うと、複数件取得、0件取得の場合に例外を発射する。 return con.Query<User>(sql, new { UserName = "三木眞一郎" }).SingleOrDefault(); }以上。これだけでマッピングされる。シンプルで超素敵。
ソースの説明はコメントを参照されたし。
②複数レコード取得してみる。
対象テーブルは①と同じ。
public List<User> GetAllUser() { // DBコネクションを取得(ここは適当 Connection con = ConnectionUtil.GetConnection("接続文字列"); // DBに投げるクエリ String sql = @"SELECT * FROM Users"; // クエリを実行して、取得結果をUserクラスにマッピング // List<User>にキャストする return List<User> con.Query<User>(sql); }以上。キャストするだけでListにもマッピングできる。
③1対1の関係のテーブルをJOINして取得してみる。
対象のテーブルは以下。
テーブル名:Users カラム:UserName、Age、JobId
テーブル名:Jobs カラム:JobId、JobNameJobsテーブルのマップ先としてUserクラスにJobクラスを定義する。
class User { public String UserName { get; set; } public int Age { get; set; } public int JobId { get; set; } public Job Job { get; set; } } class Job { public int JobId { get; set; } Public String JobName { get; set; } }UsersテーブルとJobsテーブルを結合してUsersクラスにマッピングしてみる。
public User GetUserAndJob() { // DBコネクションを取得(ここは適当 Connection con = ConnectionUtil.GetConnection("接続文字列"); // DBに投げるクエリ @UserName はパラメータ String sql = @"SELECT * FROM Users u INNER JOIN Jobs j ON u.JobId = j.JobId WHERE UserName = @UserName"; // クエリを実行して、取得結果をUserクラスにマッピング // Query<User, Jobs, User> は、<1つ目のテーブルのクラス、2つ目のテーブルのクラス、returnするクラス> // パラメータは dynamic型で指定 // splitOnには2つ目のテーブルの開始位置のカラム名を指定 // SingleOrDefault() を使うと、複数件取得できた場合に例外、0件取得の場合にNullを返してくれる。 // Single() を使うと、複数件取得、0件取得の場合に例外を発射する。 return con.Query<User, Jobs, User>( sql, (user, job) => { user.Job = job; return user }, new { UserName = "三木眞一郎" }, splitOn: "JobId").SingleOrDefault(); }以上。これも簡単。
ちなみに3つ以上のテーブルを結合する場合は、「con.Query」に3つ目のテーブルを追加して、splitOnにはカンマ区切りで区切り位置のカラム名を指定すればよい。
④ストアドプロシージャをよんでみる。
「sp_getUsers」というストアドプロシージャがあるとして。
public List<User> GetAllUser() { // DBコネクションを取得(ここは適当 Connection con = ConnectionUtil.GetConnection("接続文字列"); // DBに投げるクエリ String procedure = "sp_getUsers"; // クエリを実行して、取得結果をUserクラスにマッピング // CommandTypeにストアドプロシージャを指定 // List<User>にキャストする return List<User> con.Query<User>(procedure, commandType: CommandType.StoredProcedure); }
2017年2月20日月曜日
sqlcmdの使い方
sqlcmdの使い方
sqlcmd -S DBインスタンス -U ユーザーID -P パスワード -i sqlスクリプト
例
sqlcmd -S sv-sql2014\express -U develop -P kaihatu123 -i c:\temp\run.sql
オプション -E を使うと、Windpows認証になるので、 -U -Pは不要
sqlcmd -S DBインスタンス -U ユーザーID -P パスワード -i sqlスクリプト
例
sqlcmd -S sv-sql2014\express -U develop -P kaihatu123 -i c:\temp\run.sql
オプション -E を使うと、Windpows認証になるので、 -U -Pは不要
2017年2月15日水曜日
D言語で作られたIDE & UIライブラリ
D言語で作成されたIDEとUIライブラリ
すべてD言語で作成されているのが、凄い。
https://github.com/buggins/dlangide
D言語自体がcross platformなので、これで Android と iOSまで手を広げてくれたらと
思ったら、DLangUI自体が、Android APIに刺激されて作ったそうです。
iOSまで、手を広げて欲しい~
すべてD言語で作成されているのが、凄い。
https://github.com/buggins/dlangide
D言語自体がcross platformなので、これで Android と iOSまで手を広げてくれたらと
思ったら、DLangUI自体が、Android APIに刺激されて作ったそうです。
iOSまで、手を広げて欲しい~
2017年2月14日火曜日
MAGIC RIA 複数アプリを立ち上げた場合のライセンス振り分け
MAGIC RIA 複数アプリを立ち上げた場合のライセンス振り分け
magic.iniの設定値
MaxConcurrentUsersに使用するライセンス数を設定する。
MaxConcurrentRequestsも、同じ値を設定する。
iOS Apps Reject
iOS Applicationを申請しましたが、Rejectされました。
最初、Appleからは、File Shareするなら、ウンタラカンタラ〜(英語わかりません)
このアプリはFile Share使わないよ、って返したのですが
Xcodeのinfo.plistにUIFileSharingEnabled keyがあって、初期値でtrueだそうです。
※初期値でtrueは、やめて欲しいです。
数回やりとりを行なって、ようやく上記のけyをfalseにすることが分かりましたが
info.plistを検索すると、違うkeyがhitしました。
Application supports iTunes file sharing このkeyをNOに変更しました。
これで再度申請してみます。
最初、Appleからは、File Shareするなら、ウンタラカンタラ〜(英語わかりません)
このアプリはFile Share使わないよ、って返したのですが
Xcodeのinfo.plistにUIFileSharingEnabled keyがあって、初期値でtrueだそうです。
※初期値でtrueは、やめて欲しいです。
数回やりとりを行なって、ようやく上記のけyをfalseにすることが分かりましたが
info.plistを検索すると、違うkeyがhitしました。
Application supports iTunes file sharing このkeyをNOに変更しました。
これで再度申請してみます。
2017年2月10日金曜日
MAGIC 開発時の機能と操作: ナビゲータシートと特性シート
開発時の機能と操作: ナビゲータシートと特性シート
Magic eDeveloper V9Plus(V10も同様)では、開発時にナビゲータシートと特性シートを駆使します。デフォルトでは、図のように横並びになっていますが、これだと使いにくいように思います。
また、2つのシートを重ね合わせてタブ(下方に表示されます)で切り替える使い方もあります。
再度、分離させたいときは、Ctrlキーを押しながらマウスでドラッグします。
各対応端末ごとに、以下のいずれかのサイズ1枚以上
3.5インチ端末用 | 4インチ端末用 | 4.7インチ端末用 | 5.5インチ端末用 |
---|---|---|---|
640 x 920 | 640 x 1096 | 750 x 1334 | 1242 x 2208 |
640 x 960 | 640 x 1136 | 1334 x 750 | 2208 x 1242 |
960 x 600 | 1136 x 600 | ||
960 x 640 | 1136 x 640 |
iPad用 | iPad Pro | ||
---|---|---|---|
1024 x 748 | 2048 x 2732 | ||
1024 x 768 | 2732 x 2048 | ||
2048 x 1496 | |||
2048 x 1536 | |||
768 x 1004 | |||
768 x 1024 | |||
1536 x 2008 | |||
1536 x 2048 |
Xamarin Forms のdeviceの判別
// 従来のコード(obsolute) Deviec.OS == TargetPlatform.Android // これから推奨されるコード Device.RuntimePlatform == Device.Android
元ネタ
ぴーさんログ
2017年2月9日木曜日
Dapper Micro-ORM
Dapper Micro-ORMをLinq To SQLと比較しました。
結果は、Dapperが2倍速い。
約74万件のレコードを読み込む処理があり
今まではLinq to SQLで処理が遅いと言われていました。
Linq to SQLで約40秒
Dapperでは、約25秒ほどでした。
ここまで、処理速度が違うと、Dapperに乗り換えようと考えてしまいます。
※Linq to SQLだと、DBからClass作成は、Drag and Dropで作成してくれるし
SQL書かなくて良いし、楽出来るんだけど....
Linq to SQLがもっと早くなれば良いんだけど~
結果は、Dapperが2倍速い。
約74万件のレコードを読み込む処理があり
今まではLinq to SQLで処理が遅いと言われていました。
Linq to SQLで約40秒
Dapperでは、約25秒ほどでした。
ここまで、処理速度が違うと、Dapperに乗り換えようと考えてしまいます。
※Linq to SQLだと、DBからClass作成は、Drag and Dropで作成してくれるし
SQL書かなくて良いし、楽出来るんだけど....
Linq to SQLがもっと早くなれば良いんだけど~
2017年2月8日水曜日
.NET Core ORM
.NET Core用のORMを探していたら、.NET CoreのTeam Blogがあった。
https://blogs.msdn.microsoft.com/dotnet/2016/11/09/net-core-data-access/
この中で、Dapperのページを見ると、処理比較があり
.NET Coreでも、EFがあるから、EFで良いかな~と思っていたら
EFって、とっても重たいんですね。
DatabaseからClassを作ってくれる、Linq to SQLが個人的に楽できるから好きだったのですが
この処理比較を見て、愕然としました。
Dapperは、あの有名な StackOvewrFlowが使っている ORMらしいです。
StackOvewrFlowは、ASP.NET MVCを採用しているから
.NET Coreのライブラリも充実していた。
https://blogs.msdn.microsoft.com/dotnet/2016/11/09/net-core-data-access/
この中で、Dapperのページを見ると、処理比較があり
.NET Coreでも、EFがあるから、EFで良いかな~と思っていたら
EFって、とっても重たいんですね。
DatabaseからClassを作ってくれる、Linq to SQLが個人的に楽できるから好きだったのですが
この処理比較を見て、愕然としました。
Dapperは、あの有名な StackOvewrFlowが使っている ORMらしいです。
StackOvewrFlowは、ASP.NET MVCを採用しているから
.NET Coreのライブラリも充実していた。
2017年2月7日火曜日
SQL Serverの移行で使用 DatabaseをSQLに変換
スクリプトを出力 -> 出力項目を選択 -> 詳細オプション -> スクリプトを作成するデータの種類を
スキーマ から スキーマとデータ
に変更する。
2017年2月2日木曜日
MAGIC XPA RIA iOS用アプリ 起動時のurl
MAGIC XPA RIA iOS用アプリ 起動時のurlの設定
%EngineDir%\RIAModules\iOS\Source
settings.properties
ファイルを以下のように修正することでアプリケーションの特性を変更することができます。
URL
特性を空のままにした場合、ダイアログボックスが開き、エンドユーザが
URLを入力する必要があります。
URLに値を設定することで、初期表示 にurl入力が無くなる。
Setting.bundleの、item2に、接続するurlを指定する。
このurlは、外部設定のファイルを指定しました。
%EngineDir%\RIAModules\iOS\Source
settings.properties
ファイルを以下のように修正することでアプリケーションの特性を変更することができます。
URL
特性を空のままにした場合、ダイアログボックスが開き、エンドユーザが
URLを入力する必要があります。
URLに値を設定することで、初期表示 にurl入力が無くなる。
Setting.bundleの、item2に、接続するurlを指定する。
このurlは、外部設定のファイルを指定しました。
MAGIC RIAのセキュリティ設定 暗号化
MAGIC RIAのセキュリティ設定
暗号化
magic.iniの{MAGIC_SPECIALS] のセクション
SpecialClientSecureMessages=Y
SpecialClientCompressMessages=Y
暗号化
magic.iniの{MAGIC_SPECIALS] のセクション
SpecialClientSecureMessages=Y
SpecialClientCompressMessages=Y
登録:
投稿 (Atom)