アナリティクスでいろいろ分析するにはExcelとかに落として作業
したいところですが手間がかかる。
Googleスプレッドシートでアナリティクスのアドインいれると
簡単にデータを展開できるようになる。
アナリティクスでいろいろ分析するにはExcelとかに落として作業
したいところですが手間がかかる。
Googleスプレッドシートでアナリティクスのアドインいれると
簡単にデータを展開できるようになる。
string filename = Path.GetFileName(sourceFilePath);
ログ出し用に使えますね。.Net4.5から用っぽい
public void Debug(string mess, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "", [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "", [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0) { string output = Path.GetFileName(sourceFilePath) + "-" + sourceLineNumber.ToString() + ":" + memberName + ":" + mess; logger.Debug(output); }
設定ファイルを別途置かないやり方。
AssemblyInfo.cs に追記
// read Log4Net Configuration file [assembly: log4net.Config.XmlConfigurator(Watch = true)]
App.Configに以下追記
<configuration> ... <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> ... <log4net> <!--通常ログ:単一ファイル出力 --> <appender name="InfoLogDailyAppender" type="log4net.Appender.FileAppender"> <file value="${APPDATA}\\会社名\\ソフト名\\Logs\\Info.log" /> <appendtofile value="true" /> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMax" value="WARN" /> <param name="LevelMin" value="INFO" /> </filter> <layout type="log4net.Layout.PatternLayout"><ConversionPattern value="%date [%thread] [%-5level] %message%n" /></layout> </appender> <!--エラーログ:分割ファイル出力 --> <appender name="ErrorLogDailyAppender" type="log4net.Appender.RollingFileAppender"> <!--ファイル名は日付ごと --> <param name="File" value="${APPDATA}\\会社名\\ソフト名\\Logs\\Error_" /> <param name="DatePattern" value='yyyyMMdd".log"' /> <param name="RollingStyle" value="date" /> <param name="StaticLogFileName" value="false" /> <param name="AppendToFile" value="true" /> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMax" value="FATAL" /> <param name="LevelMin" value="ERROR" /> </filter> <param name="MaximumFileSize" value="10MB" /> <param name="MaxSizeRollBackups" value="10" /> <layout type="log4net.Layout.PatternLayout"><ConversionPattern value="%date [%thread] [%-5level] %message%n" /></layout> </appender> <!--デバッグ用:分割ファイル出力 --> <appender name="DebugLogDailyAppender" type="log4net.Appender.RollingFileAppender"> <!--ファイル名は日付ごと --> <param name="File" value="${APPDATA}\\会社名\\ソフト名\\Logs\\Trace_" /> <param name="DatePattern" value='yyyyMMdd".log"' /> <param name="RollingStyle" value="date" /> <param name="StaticLogFileName" value="false" /> <param name="AppendToFile" value="true" /> <filter type="log4net.Filter.LevelRangeFilter"> <!--<param name="LevelMax" value="FATAL" /> --> <param name="LevelMin" value="TRACE" /> </filter> <param name="MaximumFileSize" value="10MB" /> <param name="MaxSizeRollBackups" value="10" /> <layout type="log4net.Layout.PatternLayout"><ConversionPattern value="%date [%thread] [%-5level] %message%n" /></layout> </appender> <root> <!--TRACE以上のログを記録 --> <level value="TRACE" /> <!--使用する Appender --> <appender-ref ref="InfoLogDailyAppender" /> <appender-ref ref="ErrorLogDailyAppender" /> <appender-ref ref="DebugLogDailyAppender" /> </root> </log4net> ... </configuration>
使うときの初期設定はこちら
ILog logger; logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
こうすると
C:\Users\ユーザー名\AppData\Roaming\会社名\ソフト名\Logs にログがたまる
Progress という名前のフォームを作って、
プログレスバー(progressBar1) と キャンセルボタン(button1)を貼り付ける。
コードは以下のように。
処理するのは文字列返す関数としている。
Progress.cs
// SetTitle() / SetFunction() で処理設定して ShowDialog()で実行 // 処理関数の中で p.Report(100); したら処理完了と判断する // その後 GetResult() でタスクで処理した結果の文字列受け取る // キャンセル時には"キャンセル"が帰る public partial class Progress : Form { CancellationTokenSource cancelTokensource; // キャンセル判定用 string m_result; // 返り値 // 初期化 public Progress() { InitializeComponent(); } // ウインドウタイトル設定 public void SetTitle(string aTitle) { this.Text = aTitle; } // 処理関数設定 public delegate string Func(IProgress<int> p, CancellationToken cancelToken); // デリゲート宣言 Func m_Func; public void SetFunction(Func aFunc) { m_Func = aFunc; } // 処理開始イベント Task<string> m_Task; private void Progress_Shown(object sender, EventArgs e) { cancelTokensource = new CancellationTokenSource(); var cToken = cancelTokensource.Token; var p = new Progress<int>(ShowProgress); m_Task = Task.Run(() => m_Func(p, cToken)); } // キャンセルボタンクリック private void button1_Click(object sender, EventArgs e) { this.button1.Enabled = false; // もう一回は押せなくする if (cancelTokensource != null) { m_result = "キャンセル"; cancelTokensource.Cancel();//キャンセルを発行 m_Task.Wait(); this.Close(); } } //表示更新用 private void ShowProgress(int percent) { this.progressBar1.Value = percent; // 100%で終了と判断する if( percent == 100 ) { m_Task.Wait(); m_result = m_Task.Result; this.Close(); } } // 返り値取得 public string GetResult() { return m_result; } }
こっちはProgressを使って重い処理を実行する呼び出し側
string 重い処理(IProgress<int> p, CancellationToken cancelToken){ // 重い処理する //... return "返り値"; } private void button1_Click(object sender, EventArgs e) Progress progress = new Progress(); progress.SetTitle("重い処理中"); progress.SetFunction(重い処理); progress.ShowDialog(); string result = progress.GetResult(); if (result == "キャンセル") { MessageBox.Show("キャンセルしました。"); } }
巨大データベースです。64bitExcelでも開けないサイズです。歩み足のデータのようです。
gz形式で圧縮されていますが、各取引所のデータがcsv形式で取得できます。
bitflyer,conincheck,Zaifとかあります。
NuGetでSelenium.SupportとSelenium.WebDriverをインストールして
実行ファイルと同じフォルダにMicrosoftWebDriver.exeがある前提。
MicrosoftWebDriver.exeはこちらからDL。
var service = EdgeDriverService.CreateDefaultService(); service.HideCommandPromptWindow = true; EventFiringWebDriver driver = new EventFiringWebDriver(new EdgeDriver(service)); driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5); driver.Navigate().GoToUrl(”http://hoge.com”);