ハックライフノート

技術的な話とか、覚え書き

[Windows10]ドライブがエクスプローラーで2重に表示される

タイトル通りですが、Windows10のエクスプローラーの左ツリーでドライブが2重に表示される問題があります。

f:id:miyatakaTK:20180519170349p:plain

上のスクリーンショットにあるように、赤枠で囲んだ部分が余計に表示されています。

これ、何故こうなっているかと言うと、赤枠の方はどうもリムーバブルディスクとして認識しているせいです。

USBメモリとか、そういった仲間に分類されてるんですね。

なんでやねん。

見た目上あまりよろしいものではないので、赤枠の方の表示を消します。


1.レジストリエディタを起動する
Win + Rキー同時押しで「ファイル名を指定して実行」を開き、名前に「regedit」と入力してEnterします。

このショートカットキーは便利なので覚えておいて損はないです。


2.レジストリの編集
レジストリの編集は自己責任で、万が一に備えてバックアップを取ったほうが吉です。

レジストリエディタが開いたら、

コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders

に移動します。

そこに {F5FB2C77-0E2F-4A16-A381-3E560C68BC83} という名前のキーがあるので、削除します。

3.あら不思議
f:id:miyatakaTK:20180519171528p:plain

エクスプローラーを再起動しなくても、こんな感じで2重表示が解消されていると思います。

と言うか、リムーバブルディスクとして認識しちゃダメでしょ、ってツッコみたいですね。

[MySQL]レコードが無ければINSERT、あればUPDATE

誰だって一度は夢見るINSERT文とUPDATE文の両立・・・

まあ、方法は色々とあるんですが、今回はON DUPULICATE KEY UPDATEを使ってスマートに実現しましょう。

こんな感じのクエリを書きます。

INSERT INTO table (column1, column2, column3)
VALUES (1, 2, 3)
ON DUPULICATE KEY UPDATE
column2 = 20, column3 = 30;

普通のINSERT文の後ろにON DUPULICATE KEY UPDATEを付けて、アップデート対象カラムと値を書くだけ。

ね、簡単でしょ?

ただし、レコードの有無の判定をする為、いずれかのカラムがプライマリキー(主キー)である必要があります。

上記の場合、例えばcolumn1がPKだとして1という値が無ければ
column1=1
column2=2
column3=3
なレコードがINSERTされます。

逆に、column1に既に1という値が存在すれば、そのレコードは
column2=20
column3=30
といった感じにUPDATEされます。

1クエリで同時にINSERTとUPDATEができるので、便利ですよ。

[VB.NET]DataViewのコピーでやられた話

初めての記事がこんなニッチな内容だけど、とりあえず書き残しておく。

仕事上でVB.NETを使った業務アプリケーションの開発を行っていて、DataViewを初めて扱った時につまづきました。

 例えば、こんなソースコードを書いたとする。

Dim dv1 AS New DataView
(dv1に適当なデータを入れた後)
Dim dv2 AS DataView = dv1

これでまーdv1の内容をdv2へとコピーできたかな、と思ったら大間違い。

この状態でdv2を編集すると、dv1にも影響します。

いわゆる値渡しじゃなくて参照渡し的な動作をしてくれやがります。(どうなってるかは分からない)

なんで、もしDataViewをコピーしたい時は

dv2.Table = dv1.Table.Copy()

てな感じで、TableプロパティのCopy()メソッドを使ってやればOK。


余談
Dataうんちゃら関係って多いですよね、DataSetとかDataTableとかDataRowとか・・・

これらは仮想的なデータベースを構築してやるクラス群なんですよね。

動作は遅いらしいですけどね。