テンプレートテスト
ブログの説明
ブログの説明2
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
Home
›
Archives for 10月 2018
2018/10/31
image
NO IMAGE
NLog の 例外情報内のスタックトレースの改行を無効化する
update
event_note
label
NLog
NLog で例外情報にスタックトレースも含んで出力を行っていると、通常は改行が含まれてしまいます。
これを無効化するには `replace-newlines` を使用するしかないようです。 ```xml ${replace-newlines:${exception:format=ToString}} ``` 別の文字に置き換える場合の例 ```xml ${replace-newlines:replacement=|:${exception:format=ToString}} ```
## 参考 URL - https://stackoverflow.com/questions/42205626/exception-stack-trace-in-one-line
Read more
2018/10/26
image
NO IMAGE
Word のフィールドの自動更新に関するオプションの挙動
update
event_note
label
Word
Word のオプション設定でフィールドの自動更新を設定できますが、ちょっと謎の挙動していたので調べてみました。
## 環境 - Microsoft Word 2010 ## 設定内容 フィールドに関するオプション設定は以下の2つがあるようです。 - [基本設定] > [印刷前にフィールドを更新する] - [詳細設定] > [印刷] > [印刷するときに変更履歴を含むフィールドを更新する] 私の環境では前者が OFF で後者が ON だったので、これがデフォルト値だと思われます。 後者のほうはよくわかりませんが、前者のほうについて挙動を調べてみました。 ### [印刷前にフィールドを更新する]にチェックが入っている場合 1. PDF 変換時に、目次を更新するダイアログが表示される 2. 印刷プレビュー([ファイル] > [印刷] を選択)を行った時点で目次を更新するダイアログが表示される 3. 目次以外のフィールドは 1,2 のいずれの場合でも更新される 4. フィールドがロック(Ctrl+F11)されている場合は、1,2 のどちらでもそのフィールドは更新されない ### [印刷前にフィールドを更新する]にチェックが入っていない場合 1. PDF 変換時に、**目次のページだけが更新される** 2. 印刷プレビュー([ファイル] > [印刷] を選択)を行った時点で**目次のページだけが更新される** 3. 目次以外のフィールドは 1,2 のいずれの場合でも**更新される** 4. フィールドがロック(Ctrl+F11)されている場合は、1,2 のどちらでもそのフィールドは更新されない ## まとめ 以上より、目次以外のフィールドは、[印刷前にフィールドを更新する] のチェックの有無に関わらず全て更新されました。 ということは、[印刷前にフィールドを更新する] の設定は目次限定と言ってよいのでしょうか? そして、[印刷前にフィールドを更新する] のチェックがなしでも、目次のページだけは更新されるという挙動、意味不明です。 フィールドコードか何かの設定によるものなのかどうか? そして、目次以外のフィールドを自動更新したくない場合にはどうすればいいのかわかりません。 もともとこれを知りたくて挙動を調べてたので、何か知っている方がいれば教えていただきたいです。
## 参考 URL - https://oshiete.goo.ne.jp/qa/2103165.html?order=asc&isShow=open
Read more
2018/10/24
[C#] 例外メッセージボックス
update
event_note
label
.NET Framework
C# でデスクトップアプリケーションを作成していて、致命的な例外が発生した場合にどうユーザーに通知しようか悩んでいたところ、例外メッセージボックスというがあるのを知ったので、試してみました。
## 環境 - Visual Studio 2017 ## 準備 以下のページによれば、例外メッセージボックスを使うには `Microsoft.ExceptionMessageBox.dll` への参照を追加する必要があるとのことです。 - https://docs.microsoft.com/ja-jp/sql/database-engine/dev-guide/program-exception-message-box?view=sql-server-2014 ソリューションエクスプローラーより該当のプロジェクトを右クリックし、[追加] > [参照] を選択します。 そして、`Microsoft.ExceptionMessageBox` を追加しようとするのですが、どこを探しても見つからない・・・。 その代わりに `Microsoft.SqlServer.Data.Tools.ExceptionMessageBox` というのを見つけたのでこれを使いました。 よくわからん・・・。
また、実際にコードを記述していくと `System.Windows.Forms` も必要だったので、あとで追加しました。 ## サンプルコード ```cs var box = new ExceptionMessageBox(ex, ExceptionMessageBoxButtons.OK, ExceptionMessageBoxSymbol.Error); var handle = Process.GetCurrentProcess().MainWindowHandle; var owner = System.Windows.Forms.Control.FromHandle(handle); box.Show(owner); ```
## 参考 URL - https://docs.microsoft.com/ja-jp/sql/database-engine/dev-guide/program-exception-message-box?view=sql-server-2014
Read more
2018/10/23
image
NO IMAGE
Word でフィールド更新しても相互参照が更新されない
update
event_note
label
Word
Word を使っていて、相互参照がフィールドの更新を行っても更新されないことがありました。
環境は Word 2010 です。 で、ちょっと調べてみたら以下の記事を発見。 - http://office-qa.com/Word/wd684.htm 修正の仕方を気を付けるしかなさそうですね。
Read more
2018/10/19
image
NO IMAGE
Visual Studio で保存時にコードを自動整形する
update
event_note
label
Visual Studio
Visual Studio では `Ctrl+K Ctrl+D` でコードの自動整形が行えますが、これを保存時に自動で行うためにプラグインをインストールします。
有名なのは `Productivity Powers Tool` というプラグインですが、他にもいろいろな機能が一緒に入ってしまうので、シンプルにコードの自動整形に限定したプラグインとして、`Format document on Save` というプラグインを紹介します。 環境は Visual Studio 2017 です。 - メニューから「ツール」→「拡張機能と更新プログラム」を選択 - 「オンライン」から「Format document on Save」をダウンロードする。 Visual Studio を再起動したら有効になります。 メニューの「ツール」→「オプション」に新しく「Format document on Save」が追加されており、保存時にコードを自動整形するファイルの拡張子などを指定することもできるようです。
Read more
2018/10/16
TortoiseGit で SubTree を使用する
update
event_note
label
Git
label
TortoiseGit
と書いておいて何ですが、現時点では TortoiseGit は SubTree に対応してませんので、コマンドで実行する必要があります。
## 対象とするモデル 以下のようなモデルを例とします。 **SubTree で他のリポジトリを取り込む側(親プロジェクト)** - SubTreeTest_Parent1 - SubTreeTest_Parent2 **SubTree で他のリポジトリに取り込まれる側(子プロジェクト)** - SubTreeTest_Child ## 親プロジェクトに子プロジェクトのリモートリポジトリを登録 ```sh git remote add
``` 今回は以下のようにしました。 ```sh git remote add child http://xxx/ ``` 尚、これは TortoiseGit でも設定可能です。 **TortoiseGit でのやり方** 右クリック > [TortoiseGit] > [設定] を選択します。 サイドメニューから [リモート] を選択し、`リモート` に任意の名前を、`URL` にリポジトリの URL を入力し、[新規に追加]を押します。
## 親プロジェクトに子プロジェクトをサブディレクトリとして追加 親プロジェクトに子プロジェクトのリモートリポジトリを登録したら、次に子プロジェクトをサブディレクトリとして追加します。 ```sh git subtree add --prefix=
--squash
``` `
` には子プロジェクトを取り込んだ際のディレクトリ名を指定します。 既存のディレクトリ名と重複しないようにします。 `
` は前述のリモートリポジトリの登録で `
` に指定したリポジトリ名です。 `
` はコミットまたはブランチ名です。 また、`--squash` オプションをつけると、親プロジェクトに取り込む際にコミットを一つにまとめてくれます。 今回は以下のようにしました。 ```sh git subtree add --prefix=SubTree_Child --squash child master ``` 親プロジェクト内に `SubTree_Child` というフォルダが作成され、その中に子プロジェクトの中身が入っているのが確認できると思います。 ここまでで SubTree による子プロジェクトの取り込みは完了です。 ## 親プロジェクト内で子プロジェクトの変更を行う 上記までの SubTree の設定が完了していれば、あとは親プロジェクト内で子プロジェクトも自由に変更できます。 コミットやプッシュも通常通りできますが、親プロジェクト内で変更した子プロジェクトの内容を、子プロジェクトのリモートリポジトリに反映させる(プッシュする)場合には、以下のコマンドを実行します。 ```sh git subtree push --prefix=
``` `
` `
` は `git subtree add` を実行したときと同じです。 `
` にはプッシュしたい子プロジェクトのブランチを指定します。 ```sh git subtree push --prefix=SubTree_Child child master ``` ## 子プロジェクトの変更を親プロジェクト内に反映する 子プロジェクトのリモートリポジトリが更新されていた場合、その変更内容を親プロジェクト内の子プロジェクトに反映させる(プルする)場合には、以下のコマンドを実行します。 ```sh git subtree pull --prefix=
--squash ``` `
` `
` `
` は `subtree push` のときと同じです。 `--squash` も `subtree add` のときと同じです。 ```sh git subtree pull --prefix=SubTree_Child child master --squash ```
## 参考 URL - http://qiita.com/takahashi-kazuki/items/0c34b3bc5da6700d38a5 - http://japan.blogs.atlassian.com/2014/03/alternatives-to-git-submodule-git-subtree/
Read more
2018/10/15
image
NO IMAGE
[C#] Math.Round で四捨五入
update
event_note
label
C#
C# で四捨五入を行いたい場合、`Math.Round` を使えば簡単ですが、その挙動についてメモしておきます。
## 小数点以下を四捨五入 ```cs Console.WriteLine(Math.Round(0.44)); Console.WriteLine(Math.Round(0.45)); Console.WriteLine(Math.Round(0.54)); Console.WriteLine(Math.Round(0.55)); ``` **出力結果** ``` 0 0 1 1 ``` ## 小数点以下第二位で四捨五入 `Math.Round` の第二引数で、四捨五入をする桁を指定します。 ```cs Console.WriteLine(Math.Round(0.44, 1)); Console.WriteLine(Math.Round(0.45, 1)); Console.WriteLine(Math.Round(0.54, 1)); Console.WriteLine(Math.Round(0.55, 1)); ``` **出力結果** ``` 0.4 0.4 0.5 0.6 ``` `0.45` の結果が `0.5` ではなく `0.4` になっています。 これは、`Math.Round` のデフォルトの挙動が**最近接偶数への丸め**になっているからだそうです。 **最近接偶数への丸め**についてはググってください。 普通の四捨五入を行いたい場合は、以下のように `MidpointRounding.AwayFromZero` を指定します。 ```cs Console.WriteLine(Math.Round(0.44, 1, MidpointRounding.AwayFromZero)); Console.WriteLine(Math.Round(0.45, 1, MidpointRounding.AwayFromZero)); Console.WriteLine(Math.Round(0.54, 1, MidpointRounding.AwayFromZero)); Console.WriteLine(Math.Round(0.55, 1, MidpointRounding.AwayFromZero)); ``` **出力結果** ``` 0.4 0.5 0.5 0.6 ```
Read more
2018/10/04
image
NO IMAGE
[C#] Cryptowatch API で取得した JSON をデシリアライズする
update
event_note
label
C#
予想外にはまったのでメモしておきます。 パーサーは Newtonsoft.Json(JSON.NET) を使用します。
Cryptowatch API で取得したデータは以下のような JSON 形式となっています。 ```json { "result": { "60": [ [1481634360, 782.14, 782.14, 781.13, 781.13, 1.92525], [1481634420, 782.02, 782.06, 781.94, 781.98, 2.37578], [1481634480, 781.39, 781.94, 781.15, 781.94, 1.68882], ... ], "180": [...], "300": [...], ... "604800": [...] } } ``` インタプリタ言語とかだと何も考えずにデシリアライズ可能なのですが、これを C# でデシリアライズしようとすると結構面倒です。 (もっと簡単な方法があれば教えていただきたいです) まず、`result` 以下のキー(`60`とか`180`とか)がクエリに応じて動的に変わるので、`Dictionary` を使用します。 また、値の部分が配列の入れ子になっているので、`Dictionary` の `Value` は `List` の入れ子にします。 さらに最下層の Value が整数だったり浮動小数だったり、時刻は Unix タイムなので DateTime 型に変換したいとかあるので、`List` の型は `String` にしておき、後で個別にパースしていきます。 まずデシリアライズ用の型として以下のような構造体を定義します。 ```cs public struct CryptowatchResponse { public Dictionary
>> Result { get; set; } } ``` 以下のようにして Cryptowatch からデータを取得してデシリアライズします。 ```cs var before = DateTimeOffset.Now.ToUnixTimeSeconds(); CryptowatchResponse json; using (var client = new HttpClient()) using (var response = client.GetAsync($"https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc?before={before}").Result) { var contents = response.Content.ReadAsStringAsync().Result; json = JsonConvert.DeserializeObject
(contents); } ``` 尚、ここでは `HttpClient` を `Using` していますが、普通はコンストラクタ等でインスタンス化して使いまわすようです。 (詳細はググってください) さらに、ここから `string` 型で持っている値を適切な型に変換します。 (文字列のままで良ければこれは不要です) まず各要素の値を入れるための構造体を以下のように定義します。 ```cs public struct CryptowatchData { public DateTime Time { get; set; } public double Open { get; set; } public double High { get; set; } public double Low { get; set; } public double Close { get; set; } public double Volume { get; set; } } ``` あとは愚直に変換してくだけです。 例えば、一分足のデータを変換したい場合は以下のような感じです。 ```cs var records = new List
(); foreach (var record in json.Result[60]) { records.Add(new CryptowatchData() { // unixtime から JST に変換する Time = DateTimeOffset.FromUnixTimeSeconds(long.Parse(record[0])).LocalDateTime, Open = double.Parse(record[1]), High = double.Parse(record[2]), Low = double.Parse(record[3]), Close = double.Parse(record[4]), Volume = double.Parse(record[5]), }); } ``` もっと簡単に書けないかなぁとは思いますけど、とりあえずこんな感じです。
## 参考 URL - https://blog.okazuki.jp/entry/2014/04/19/235806
Read more
新しい投稿
前の投稿
ホーム
Translate
Popular Posts
TortoiseGit でコミットメッセージを変更する
image
NO IMAGE
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
[ASP.NET Core] 前のページ(遷移元)の URL を取得する
image
NO IMAGE
外部 DLL を NuGet パッケージに含める方法
image
NO IMAGE
[C#] SonarQube で .NET アプリケーションのコード解析を行う
image
NO IMAGE
[ASP.NET Core] Form value count limit 1024 exceeded のエラーが発生した
image
NO IMAGE
マージ元ブランチとマージ先ブランチ
TortoiseGit でリモートリポジトリのタグを削除する
image
NO IMAGE
C# で GitHub からリリースバージョンを取得する
[Jenkins] エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
Apache
3
AppVeyor
2
AsciiDoc
3
ASP.NET Core
55
Atom
4
AWS
2
AWS Cloud9
4
blockdiag
1
Blogger
10
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
Codecov
1
CSS
1
Docker
28
DokuWiki
4
Doxygen
1
draw.io
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
2
Firefox
5
Git
12
GitBook
4
GitBucket
7
GitHub
7
GitLab
30
Go
1
Google
1
Google Cloud Platform
1
Grafana
5
HTML
5
IIS
8
InfluxDB
6
JavaScript
7
Jenkins
7
Linux
25
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MVC
1
MVVM
6
NLog
3
Node.js
3
npm
1
OpenSSL
3
ownCloud
2
Pine Script
1
PlantUML
5
PowerShell
7
Prism
2
Python
11
Razor
3
Redmine
30
remark.js
2
rocketchat
4
Ruby
3
SignalR
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
t
1
TestLink
2
Tomcat
2
TortoiseGit
10
TortoiseSVN
2
Trading View
1
Travis CI
1
Ubuntu
13
Visual Studio
39
Visual Studio Code
9
Vue.js
8
Windows
56
Windows 10
4
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
1
Xamarin
1
xUnit
5
アプリケーション
1
デザインパターン
1
テスト
3
バッチファイル
2
ぴよ
3
プログラミング
3
ライセンス
1
ラベル
3
ラベル1
2
英語
2
雑記
1
書籍
1
数学
1
正規表現
1
Blog Archive
►
2022
(1)
►
2月
(1)
►
2021
(24)
►
5月
(7)
►
4月
(8)
►
3月
(2)
►
2月
(2)
►
1月
(5)
►
2020
(60)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(7)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
▼
2018
(100)
►
12月
(1)
►
11月
(11)
▼
10月
(8)
NLog の 例外情報内のスタックトレースの改行を無効化する
Word のフィールドの自動更新に関するオプションの挙動
[C#] 例外メッセージボックス
Word でフィールド更新しても相互参照が更新されない
Visual Studio で保存時にコードを自動整形する
TortoiseGit で SubTree を使用する
[C#] Math.Round で四捨五入
[C#] Cryptowatch API で取得した JSON をデシリアライズする
►
9月
(6)
►
8月
(10)
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)