ディレクトリの一つ上のディレクトリをとる
ネタにもなれないような小ネタですが
そのものずばりなメソッドが無いかナーとググってみたんですが、バックスラッシュ探して文字列操作ってのが上位に出てきてそういものなのかな?と思って自作
public static string GetParentDirectory(string path) // pathはファイルでもディレクトリでも可 { if (path.EndsWith(Path.DirectorySeparatorChar.ToString())) path = path.Substring(0, path.Length - 1); return Path.GetDirectoryName(path); }
バックスラッシュの決め打ちが気持ち悪いのでPath.DirectorySeparatorChar
一つ上のディレクトリはPath.GetDirectoryName
メソッドで
一行目はpath
の最後がセパレーター(バックスラッシュ)の場合にPath.GetDirectoryName
が私の望むものを返してくれないのでそのために入れてます(AppDomain.CurrentDomain.BaseDirectory
などは最後にセパレーターがついて返ってくるんですよね)
異常値チェックしてないのでその辺は雰囲気で
どーでしょう?
de:code 2018に行ってきた
感想というか後で見る用のメモというかそんなの
セッション
DAY 1
KN01 基調講演
女性が活躍~とかそういうやつなのか平野さん以外全員女性だった。けど性別とか関係なくプレゼンの腕で登壇者を選んでほしかった (女の子がキャッキャウフフしているのを見るのは楽しいけどそういうイベントじゃないでしょ)
英語でしゃべってた3人のプレゼンはすごく安定してうまいと感じた。わざわざ日本に呼んでしゃべってもらうくらいの人だからなのか、私の中で英語補正が入っているのか
AD19 岩永さんのやつ
実を言うと.NET Frameworkはもうだめです。 突然こんなこと言ってごめんね。 でも本当です。
もうしばらくすると.NET Framework 4.8がリリースされます。
それが終わりの合図です。
って話だった気がする
AC14 高橋さんのMRのやつ
AC07 ユニティさんのMRのやつ
AI61 C#でニューラルネットワークを~
今回のde:codeから始まったシアターセッション (休憩中にEXPO会場で15分)
AD14 井上さんの.NETの話
クイズは全問正解できた。WPFのコードネームを覚えていた自分に関心した
DAY 2
AC02 かずきさんのデスクトップアプリの話
これからデスクトップアプリ作るならUWPだよね。サイドローディングが簡単になっているのは知らなかった
1803で増えたタイムラインに対応させる、っていうのは全然頭になかったのでなるほどって感じ (この手の技術について行けていない自分を再認識できた)
AD43 井上さんのVisual Studioの話
この辺は最新を追えている気がした
デモ見れてよかった
AD24 GitHubの人の話
エンタープライズ版なんてのがあるんだね
AC11 Windows MLの話
AD39 .NET CoreでCloud Native API~な話
dockerは必須
AD61 Blazorな話
シアターセッション
使えるけどまだ使っちゃだめよ、って話
使いたい
AC05 荒井さんのやつ
相変わらず見づらい、けど見ちゃう
Level 300なのでそんなに難しいことを言っているわけではなかった気がする (理解できないところが記憶から消されている可能性はある)
AD17 しばやん先生のやつ
ASP.NET Coreな話
冒頭で「シャッター音禁止」を明言してくれたので一度もシャッター音を聞かないで済んだセッション。超快適だった (音だけでなく写真撮る動作もうっとうしいし、全セッション写真禁止でもいいと思った)
話もデモも面白かった。 最終セッションなので1時間くらい延長してもいいのに (
クイズは全問正解できた
感想
アプリに不満はなかった。改善してるなーすごいなーって思った
今回から全席完全入れ替え制になってた。どこかでアナウンスしてたっけ?
twitterにスタッフに対する愚痴が流れたらしいけど、本職ってわけでもないだろうししょーがないとおもう。最後尾の札を持ったスタッフが列の中間くらいにいて多方面からそこに並ぼうとしているのはさすがにどうかと思ったけど
こういうのに参加しないとモチベーションが上がらないので行ってよかった
DateTimeOffsetの比較について
知っている人にとっては何をいまさら、な感じなことですが知らなくてググってしまったのでメモメモ
確認は.Net 4.7.2でやってます。それ以外の奴や今後のことは知らない
Q
var t1 = new DateTimeOffset(2018, 5, 15, 12, 0, 0, TimeSpan.FromHours(0)); var t2 = new DateTimeOffset(2018, 5, 15, 12 + 1, 0, 0, TimeSpan.FromHours(1)); var t3 = new DateTimeOffset(2018, 5, 15, 12, 0, 0, TimeSpan.FromHours(1)); Console.WriteLine($"{t1} : {t2} = {t1 == t2}"); Console.WriteLine($"{t1} : {t3} = {t1 == t3}");
DateTimeOffset
型のt1~t3の比較です
コンソールにどうでるかというと
A
2018/05/15 12:00:00 +00:00 : 2018/05/15 13:00:00 +01:00 = True 2018/05/15 12:00:00 +00:00 : 2018/05/15 12:00:00 +01:00 = False
t1とt3が異なるのは当たり前ですが、t1とt2は同じ値ということになります
DateTimeOffset.Equals Method (DateTimeOffset, DateTimeOffset) (System)
にも同じこと書いてあるのでそういうものなんですね (UTCでの比較しかしないのかな?)
注意
そういうものなんですが、そういうものだと気づかずに困ったのが変更通知するプロパティです
// こんなの作ってあったとして static ReactiveProperty<DateTimeOffset> Time = new ReactiveProperty<DateTimeOffset>(); Time.Value = t1; // 変更通知が飛ぶ Time.Value = t2; // この代入では変更通知が飛ばない
って感じになります
ReactivePropertyが悪いわけではないですよ
自分で書いてもif (_time == value) return;
とか書くしDateTimeOffset
が同じって言うなら同じ値なんですよね
気を付けよう