ここを雛形に作ってくといい感じ
c#でユニークid 生成
世界で重複することがない、ユニークな128bit(16byte)のランダムな数値であるGUID値を生成する。
using System; // Guid,Console class GuidSample { public static void Main(string[] args) { String id = Guid.NewGuid().ToString("N"); Console.WriteLine(id); } }
BitMEX API で引数boolの場合 ToLower()で小文字にしないと無視されるよ
たとえば
https://testnet.bitmex.com/api/v1/trade/bucketed?symbol=XBTUSD&binSize=1h&partial=True&count=1&start=0&reverse=False
だと
partial / reverse が無視されてデフォルトになっちゃう。
https://testnet.bitmex.com/api/v1/trade/bucketed?symbol=XBTUSD&binSize=1h&partial=true&count=1&start=0&reverse=false
にしないとダメ。
Nugetでインストールできる Bitmex.NET はこのへんバグってるくさい。
C# による JSON 相互変換 (Json.NET 利用)
List<>とかの配列をjsonに変換
class Book { public int Id { get; set; } public string Name { get; set; } public string Asin { get; set; } } ... using using System.Collections.Generic; using using Newtonsoft.Json; .... // 日本語ちゃんと出力されるようにしておく Console.OutputEncoding = new UTF8Encoding(); // せっかくだからリスト構造を作ってみる List<Book> books = new List<Book> { new Book{ Id = 1, Name = "野望の王国 1", Asin = "B00M84FTOS"}, new Book{ Id = 2, Name = "アカギ 1", Asin = "B00DVYTZ12"}, }; // 普通の JSON テキスト構築 Console.WriteLine("-------- normal json --------"); string jsonString = JsonConvert.SerializeObject(books); Console.WriteLine(jsonString); // インデント付きの JSON テキスト構築 Console.WriteLine("\n-------- formatted json --------"); string formattedJson = JsonConvert.SerializeObject(books, Formatting.Indented); Console.WriteLine(formattedJson);
DomainModelからViewModelに詰め替える時には退屈だしエラー積み込むかもしれんからバカ正直にコード書かずにAutoMapperとか使おうぜ(超訳)
AutoMapperとは、その名の通り、オブジェクト同士を自動でマッピングしてくれるライブラリ
nugetでインストールして使おう
PM> Install-Package AutoMapper
Prism.Mvvmのインストール
NuGetパッケージの管理からは探せなかったので
パッケージ マネージャー コンソールから
PM > Install-Package Prism.Mvvm -Version 1.1.1
Excel VBAでUnix Timestamp(ミリ秒付き)を取得する
Option Explicit Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME) Private Function GetMillisecond() As Long Dim tSystem As SYSTEMTIME On Error Resume Next GetSystemTime tSystem GetMillisecond = tSystem.wMilliseconds End Function ' (参考)http://d.hatena.ne.jp/KuroNeko666/20070821/1187689020 Public Function GetUnixTimestampWithMilliseconds() As Variant Dim ut As Variant ' ut = ((Now - 25569) * 86400) - (3600 * 9) ' "- (3600 * 9)"は日本の時差を差し引いている。 ' ut = ut * 1000 ' ut = ut + GetMillisecond ut = (((Now - 25569) * 86400) - (3600 * 9)) * 1000 + GetMillisecond GetUnixTimestampWithMilliseconds = ut End Function Private Sub Test() Debug.Print "(Node.js) new Date().valueOf() === ", GetUnixTimestampWithMilliseconds End Sub
ExcelVBAで小数計算の誤差対策としてCurrency(通貨)型にすると精度が上がる
万事解決というわけではないが おかしい数値になるケースが減る
Dim d As Currency
C# で Thread.Sleepじゃなくて Task.Delay 使ったほうがよさげ
Thread.Sleep Method は、スレッドを止めるメソッドだから、スレッドがブロックされます。だから、この非同期処理が、メインと同じスレッドを使っているとしたら、メイン側のスレッドも停止します。
Task.Delay Method (TimeSpan, CancellationToken) こちらは特定の時間の後、Taskの実行が終了しますので、スレッドをブロックしません。
await か .Wait() は必要だよ
NuGetでインストールできるBitFlyerライブラリ BitFlyer.Apis
インストール
PM> Install-Package BitFlyer.Apis
なにかとpythonでbot作る人多いのでC#情報少ないですねー