Firefox で複数のタブを閉じる時の確認をしない設定変更

Firefox の「すべてのタブを閉じてよろしいですか?」

すべてのタブを閉じてよろしいですか?

Firefox のこのダイアログ、正直いらないですよね。

Firefox の オプション
消す方法を考えた時、[ツール] - [オプション] に 「同時に複数のタブを閉じる時は確認する」 があるのですが、実はこれではありません(笑)。
  1. アドレスバーに about:config と入力する。動作保証対象外になります!と表示されますが、無視して 「危険性を承知の上で使用する」 をクリックします。
  2. 検索バーに warnoncloseothertabs と入力します。
  3. browser.tabs.warnOnCloseOtherTabs が出てきますので、ダブルクリック。値が false 担っていることを確認。
  4. Firefox をすべて閉じて、再起動します。
  5. これでうっとうしい 「タブを閉じる確認」 からオサラバできます。お疲れ様でした。

IE11 は OS によりいつまで使えるか違うのでサポート終了日を一覧にまとめた

IE11 のサポートライフサイクルについて
IE 11 は、最新版にしている限り、OS のサポート期限と同じサポートライフサイクルとなっています。

2020 年 1 月 15 日(水)までサポート

  • Windows 7 の IE 11
  • Windows Server 2008 R2 の IE 11
    (Windows Server 2008(無印)の IE 9 はこの日までサポート)

2023 年 1 月 11 日(水)までサポート

  • Windows 8.1 の IE 11
  • Windows Server 2012 R2 の IE 11
    (Windows Server 2012(無印)の IE 10 はこの日までサポート)

2025 年 10 月 15 日(水)までサポート

  • Windows 10 の IE 11

2027 年 1 月 12 日(火)までサポート

  • Windows Server 2016 の IE 11

サーバー OS の IE を閲覧に使うことはないはずですが、IE のコンポーネントを使った「何か」のようなものはある…んですかね?

閲覧に使っているという話であれば、一般的には Windows 10 の 2025 年 10 月がデッドラインという認識で良さそうです。

モバイル Suica アプリのログイン画面でパスワードを忘れた場合

モバイル Suica のログイン画面

iPhone の モバイル Suica アプリを始めて使う場合、記名式の Suica を登録後、次にアプリを起動すると「ログイン画面」が表示されます。
ん? パスワードってなんだっけ? となりますね。

Chrome で hulu の「動画の再生中に問題が発生しました...」 が発生する

hulu のエラー画面
普段はアプリで観ているのですが、PC で観ようとしたらこうなりました。

Chrome と Firefox では「申し訳ございません。動画の再生中に問題が発生しました。更新ボタンを押していただくか、インターネットの接続状況をご確認ください」と表示されます。

調べたところ、解決方法はありません
IE で再生するしかないようです。

今どき IE のみ対応って……。

うざい日経のメール配信を停止する

日経からのニュースメール
日経から送られてくるメールを削除するのが日課という人は多いのではないでしょうか?w

New Tab Redirect がおかしいので一旦 削除した

新しいタブを開いた際に chrome://apps/ が消えない

chrome://apps/ が消えない

Google Chrome の拡張機能・New Tab Redirect。
Chrome 61 から? 新しいタブを開いた際に「chrome://apps/」が消えずに、そのまま検索キーワードを入力すると「(検索キーワード)chrome://apps/」とおかしなことになる減少が発生するようになりました。

アプリのショートカットから開けば良いので、一旦 削除しました。

Windows 10 で SONY ZX300 の USD-DAC の音が出ない

SONY ZX300 の USB-DAC が認識しない
SONY NW-ZX300。いいですよね。初日に買いました。
イチオシ機能の一つに、PC との接続をウォークマンの音質で楽しめる USB-DAC があります。

しかし、私もそうですが、これが動作せず音が出なくなる不具合が多数報告されているようです(Windows 10 だけ?)。

初回インストール時は音が出ますが、再起動すると「スピーカーまたはヘッドフォンが接続されていません」と表示され、認識されなくなります。

一応、USB-DAC 機能は SONY 製の Music Center for PC というソフトしか推奨されていませんが、どの音源でも(例えば YouTube )聴きたいところです。

そのうちドライバアップデートで直るかもしれませんが、とりあえず以下の方法で USB-DAC 機能を使用できます。

Music Center for PC で USD-DAC で聴く

Music Center for PC 設定
正攻法です。今のところこれで音が出るはずです。
  1. Music Center for PC を起動する。
  2. [ ツール ] - [ 設定 ] - [ オーディオ出力設定 ] を選択する。
  3. 出力モードを ASIO にする。
  4. Sony Audio Driver を選択して、OK ボタンを押下する。
この設定を行うと、一応音楽は聞けます。


ドライバを入れ直して USB-DAC で聴く

Windows のデバイスマネージャー
ややトリッキーな方法です。あまりオススメできませんが…。
  1. ZX300 を一度 PC から外す。
  2. デバイスマネージャーを開く(Windows キーを押して「dev」とか入れるとおなじみのが出ます)。
  3. サウンド、ビデオ、およびゲーム コントローラーを展開する。
  4. WALKMAN を選択して [ デバイスのアンインストール ] を行う。
  5. ZX300 を PC に接続する。
  6. デバイスに再び WALKMAN が認識され、自動的にドライバがインストールされる。
この方法なら、PC のすべての音が出るようになる…はずです。
ただし、再起動するとまた認識されなくなります。Oh...

管理ソフトの Music Center for PC などもそうですが、どうもソフトウェア周りがダメすぎる印象です。ハードウェアだけではなくこういう部分もしっかり作ってから出荷してほしいですね。

[追記]
なぜか? 正常動作するようになりました。
この手順が効いた?

USB-DAC機能用ドライバーダウンロード




C# 7.0 で「コンパイラの必須型 TupleElementNamesAttribute が見つからないため~」のエラー

エラーCS8137
C# 7.0 からメソッドの戻り値に複数の Tuple 型を返却できるようになり便利になりました。しかし、ターゲットフレームワークを.NET Framework 4.7 に変更していざ試してみるとビルドエラーが…。

エラー CS8137 コンパイラの必須型 'System.Runtime.CompilerServices.TupleElementNamesAttribute' が見つからないため、タプルを利用するクラスまたはメンバーを定義できません。参照が指定されていることを確認してください。

System.ValueTuple
どうやら NuGet から System.ValueTuple をインストールする必要があるとか。
System.ValueTuple で検索して、インストールします。

OneNote 2016 は規定のフォントを変更できない

OneNote の規定のフォントを変更するには、
[ OneNote オプション ] - [ 基本設定 ] - [ 規定のフォント ]
で変更できる「そうです」。

OneNote 2016 で既定のフォントを変更する - support.office.com

しかし、新しくページを作った際に、
規定のフォントはここで指定したフォントになりません。

OneNote2016 フォントが自動で切り替わる不具合 - answers.microsoft.com

不具合だそうです。
でも、おそらく次期バージョンまで修正されないでしょうね…。

C# 6.0 から Console.Writeline が簡単な書式で書ける

Console.WriteLine("Hi!");
Console.WriteLine("Hi!");
Hello World でお馴染み、みんなが大好きな Console.WriteLine メソッドが、C# 6.0 からは簡単な書式で書けるようになりました。
「cw」とタイプした後、Tab を 2 回押すやり方の方がひょっとしたら早いですけどねw

Backlog を無料で利用する方法

Backlog を無料で利用する方法
有料プランだけになったのか?と思いましたが、まだフリープラン自体は残しているみたいですね。右下に小さくリンクが設置してあります。

フリープランはスタータープランに近い感じですが、総容量は 100M です。
かなり少ないですね…。

フリープランで利用できる機能をおしえてください
https://www.backlog.jp/faq/service/post-71.html

git log コマンドプロンプトの操作方法

git log
git log でログを表示させた際に、(END)で止まってしまい、「なんだこりゃ、どのキーを押せばいいんだ!?」となったのでメモ。

git log ヘルプ
まず「h」を入力するとヘルプを出せます。

git

戻りたいときは「q」です。
これでコマンドプロンプトを開き直さなくていいですね。

Visual Studio でソースの編集箇所を git stash で退避する

git stash

改修作業中に「やっぱりこっちのバグを先に直して!」という声をかけられることも多々あります。
Git の場合、修正内容をコミットするか、元に戻さないとブランチを切り替えられませんが、git stash で修正内容を一時的退避することもできます。

Word で 表が勝手に太字になるのを直す

Microsoft Word
表を挿入したときに左列が勝手に太字になってしまう事象の直し方がわかりました。

タイムリーのケースで内蔵ブルーレイドライブを外付け化

TIMELY OPTICAL-CASE525SATA

5 インチの内蔵ブルーレイドライブが余ってしまっていたので、眠らせておくのも勿体ないので外付け化しました。

Visual Studio の Git で存在しないリモートブランチを削除する

Visual Studio チームエクスプローラー
チームエクスプローラーのブランチでは、Pull Request 後に消したリモートブランチであっても表示が残ります。ローカルに複製された設定が残っているからです。

右クリックから「リモートからブランチを削除」で消していくのもいいのですが、これはフェッチコマンド(-p)で一発削除(整理)することができます。

  1. [アクション] - [コマンドプロンプト] を開く
  2. git fetch -p を実行する

git fetch -p
これでリモートに存在しないブランチ表示が消えます(現在のリモートリポジトリと同一になる)。

「対象のパスが長すぎます」を 7-Zip File Manager で一発削除する

対象のパスが長すぎます

「対象のパスが長すぎます」で削除できないファイルを削除する

ファイル名の長さは、対象のフォルダーに対して長すぎる可能性があります。短いファイル名に変更して再実行するか、またはより短いパス名がある場所に移動してください。

なにかの拍子に削除できないファイルが混入した際に、Windows のエクスプローラーからは削除できなくなってしまうことがあります。短いパス名にも変更できません。

これは Windows の化石のような互換性維持(フォルダ名+ファイル名の長さ限界)のための「仕様」なので、そのままでは削除できません。

一番簡単に削除したいなら 7-Zip File Manager というソフトを使います。

7-Zip
https://sevenzip.osdn.jp/

7-Zip File Manager

  • 削除したいフォルダを開きます
  • Shift + Delete を押下します(右クリックの削除では削除できない)

注意点として、この方法で削除した場合はごみ箱に移動せずに削除されることです。
誤って削除しないよう気をつけて実行しましょう。

Windows で MeCab のユーザー辞書をコマンドから作成する

Windows で MeCab のユーザー辞書をコマンドから作成する
MeCab のユーザー辞書を作成する方法です。ユーザー辞書を作成するための CSV を作成し、mecab-dict-index.exe を叩くだけです。MeCab がインストールされている必要があります。

Azure 上で Web.Config を設定する際にハマった

Azure Web.Config
Azure に配置した Web アプリケーションにおいて、アプリ設定から Web.Config の値を上書きすることができます。

Web.Config は " や & などを実体参照(" とか & 等)にエスケープしますが、Azure で設定する際にはエスケープせずにそのまま " や & と記述します。

接続文字列や URL 等でよく設定することなので、Azure に乗せたら動かない、ということが起こってしまいますね…。

[C# 7] int.TryParse の out 変数を省略する

C# 7 の TryParse

C# 7 の TryParse

TryParse 系は使用する前に変数を用意しておかなければならず、ときに無駄な変数を宣言するという微妙なコードになってしまうこともありました。
C# 7 からは第二パラメーターに渡す変数の仕様が少し変更されて便利になりました。

  • out にそのまま変数宣言ができるように
  • _ の登場により TryParse の変換結果がいらない場合でもスマートに書けるように
var s = "0";

// true, 判定だけをしたい
var b = int.TryParse(s, out int _);

// i は宣言されるため、以降の処理で使用可
int.TryParse(s, out int i);
// 1
i = i + 1;

out の後は var でも OK 。

C# 7.0で知っておくべき10の新機能(前編)
http://www.buildinsider.net/language/csharplang/070001

コマンドプロンプトでは Ctrl + V ではなく Alt + Space と E, P

コマンドプロンプトでの貼り付け

コマンドプロンプトの貼り付けショートカットキー

コマンドプロンプトでペーストを行う場合は、Ctrl + V ではなく、Alt + スペースキーでメニューを出した後、E, P と押します。

Selenium Builder と IE11 で UI テスト

Selenium の UI テスト

Selenium による UI テスト

http://www.seleniumhq.org/
Selenium はポピュラーな UI テストツールですが、Firefox のアドオンである「Selenium Builder」を使えば、テストケースをプログラムしなくてもテストケースを作成することができます。

ASP.NET MVC のカスタムエラーページ

エラー画面
ASP.NET で 404 等のエラーが発生した場合、デフォルトで用意されているエラー画面が表示されます。

Web.Config にカスタムエラーページを設定することで、独自のエラーページを表示させることができます。

<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="~/404.html"/>
</customErrors>
</system.web>

カスタムエラーページ
例)404 エラー発生時にルートに配置した 404.html を表示させる。

DateTime.TryParse の out を省略する

C# DateTime.TryParse
TryParse メソッドでは第二パラメーターに対応する変数を out と共に渡さなければなりません。
var s = "2000/01/01 0:00:00";
var d = new DateTime();
DateTime.TryParse(s, out d);
TryParse を判定だけに使いたい時には out を省略したいですが、省略自体はできない仕様です。
しかし、以下の書き方で一行で完結させることができます。
var s = "2000/01/01 0:00:00";
// value は変数名。なんでもいい。
DateTime.TryParse(s, out DateTime value);
ちなみに、int の TryParse ではこの書き方はできません。
C#6.0 の言語仕様策定で却下されたそうです。

【関連記事】

ASP.NET MVC の Razor で Bootstrap Popovers の改行ができない

Bootstrap Popovers の改行ができない
Bootstrap の Popovers で改行をしたいときは、html: true に設定して、改行コード(br タグ)を入れれば改行されます。

ただし、ASP.NET MVC の Razor の値をセットしたい場合は、 @Html.Raw() で、HTML エンコードされていないデータをセットする必要があります。
Razor の値はそのままでは HTML エンコードされて出力されるため、
がそのまま出力されてしまうのです。

ASP.NET MVC での $ is not defined

$ is not defined
$ is not defined とは $ が定義されていないという残念なエラーですが、$ は jQuery の定義です。

ASP.NET MVC では、App_Start 内に Script や CSS をバンドル(まとめる)するための設定を書きますが、これを参照するページ(デフォルトでは _Layout.cshtml)では読み込み順序に気をつけなければいけません。

Script.Renderの記述
内に Style.Render を書いて、
直前に各種 js を書きます。

Bootstrap の Popover に CSS を適用させる

Bootstrap の Popover
Bootstrap の Popover に対して自作の CSS を適用させようとした際に、class 名を設定しても当たらなかったのでメモ。
Popover は JavaScript で生成されるエレメントのため、デフォルトのクラス名で指定する必要があるらしい。

.popover-title {
}
.popover-content {
}

TS2304 名前 '$' が見つかりません。

TS2304 名前 '$' が見つかりません。
jQuery は初期設定では、TypeScript(.ts)内で読み込めません。これは、型定義ファイルが無いからです。

型定義ファイル(d.ts)を落とす

jquery.TypeScript.DefinitelyTyped
型定義ファイルは様々ありますが、NuGet から「jquery.TypeScript.DefinitelyTyped」を検索するのが簡単です。

パッケージのダウンロードが完了すると、Scripts フォルダ配下に typings > jquery > jquery.d.ts が配置されます。

C#で複数行の文字列を改行ごとに分割する

複数行の文字列を改行ごとに分割する
文字列に対してある文字を元に分割したい場合(CSV ファイル等)、Split メソッド一発で簡単に分割できます。
var text1 = "あ,い,う,え,お"; 
// 「あ」「い」「う」「え」「お」の配列になる 
var result1 = text1.Split(','); 
改行コードの場合は、こんな感じ。
var text2 = "あいうえお\r\nかきくけこ\r\nさしすせそ"; 
// 「あいうえお」「かきくけこ」「さしすせそ」の配列になる 
// StringSplitOptions.RemoveEmptyEntries は空行が無視される 
var result2 = text2.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 

ローカルにある SQL Server 2016 Express への接続方法

Management Studio 17
SQL Server 2016 Express に Management Studio 17 から接続します。

インスタンス名の確認

SQL Server インストールセンター
基本的に SQL Server のインスタンス名は固定ですが、バージョン違いで色々とインストールされているとわからない場合があります。

マシンにどのインスタンスで SQL Server が入っているのかは、SQL Server インストールセンターの「インストール済み SQL Server 昨日の検出レポート」で確認できます。

SQL Server 2016 セットアップ検出レポート
SQL Server 2016 セットアップ検出レポートという html が出力されます。
インスタンス名は、おなじみ「SQLEXPRESS」です。

Management Studio から SQL Server Express へ接続

SQL Server Management Studio 17
Management Studio からは、接続先マシン名と対象インスタンスで接続できます。
ローカルからなので、localhost\sqlexpress となります。

float で高さがずれる問題を overflow の設定で直した

floatでコンテナの高さがずれる問題
float で div コンテナを横並びのレイアウトを組んだ際に、高さがズレてしまう事象が発生。

原因がいまいちわからなかったのですが、float を格納している div コンテナに overflow: hidden; を入れて解決しました。

float のデモページも参考になります。

Clear Float Demo
http://webdesignerwall.com/demo/clear-float/

C# の i++ と ++i におけるインクリメントについて

C#のインクリメントの違い
C# においてインクリメントを行う場合は、「i++」など、「++」と表記することが多いです。しかし、「++i」のように「++」を頭に持ってきても同様の動きとなります(内部的には若干異なるらしい)。

数字をインクリメントする

// インクリメント 
var i = 0; 
i++; 
// 1 
Console.WriteLine(i); 
++i; 
// 2 
Console.WriteLine(i); 

i++を文字列にする

しかし、以下のような書き方をすると…
var i = 0; 
// 0 
Console.WriteLine(i++.ToString()); 
ひょっとすると想定した結果ではないことに驚くかもしれません。
「i++」は、インクリメント前の数値が返却されます。

++iを文字列にする

では、こう書いたらどうなるでしょうか?
var i = 0; 
// 1 
Console.WriteLine((++i).ToString()); 
「i++」は、インクリメント後の数値が返却されます。

二つの式を比較すると、「++i」の場合はカッコで括らないと ToString() できません。「i++」はそのまま ToString() できます。これは i そのものを返却するからですが、このあたりの挙動を見ると、内部的に異なった動作であることが理解できます。

ちょっとした違いなのですが、あまり気にしないで書いている部分なので、ちゃんと動作確認をしないととんでもないバグが出てしまう可能性があります。

もちろん、一番わかりやすいのはこのような書き方です。
var i = 0; 
i += 1; 
// 1 
Console.WriteLine(i.ToString()); 

ファイルパスから拡張子を除いたファイル名を取得する

ファイルパスから拡張子を除いたファイル名を取得

ファイルパスからファイル名を取得する

System.IO.Path クラスには、ファイル名を操作するための便利なメソッドが用意されている。例えば、ファイルパスからファイル名を取得する場合は、GetFileName メソッドを使う。
var filePath = @"C:\hoge\hoge-1\test.text"; 
// test.text 
var fileNameWithExtension = Path.GetFileName(filePath); 

ファイル名から拡張子を除く

取得したファイル名から拡張子を除いたファイル名だけを抽出したい場合は、ChangeExtension で拡張子を置換してしまえば取り出せる。
var filePath = @"C:\hoge\hoge-1\test.text"; 
//test 
var fileName = Path.ChangeExtension(Path.GetFileName(filePath), null);; 

C#で先週の月曜日や日曜日を取得

DayOfWeek という enum から今日の曜日を引き、さらに 6 日前の日付まで遡る(AddDays)することで算出します。

var today = DateTime.Today; 
// 先週の月曜日 
var mondayOfLastWeek = today.AddDays(-(int)today.DayOfWeek - 6); 
// 先週の日曜日 
var sundayOfLastWeek = today.AddDays(-(int)today.DayOfWeek - 7);

C#の匿名型をリストにする

C#の匿名型をリストにする
匿名型はリストにすることもできます。
var anonymous = new[] 
{ 
    new { hoge= "ほげ", hogehoge = 10 }, 
    new { hoge= "ほげー", hogehoge = 20 }, 
    new { hoge= "ほげーー", hogehoge = 30 }, 
}; 
 
// foreach で回す 
foreach (var a in anonymous) 
{ 
    Console.WriteLine(a.hoge); 
    Console.WriteLine(a.hogehoge); 
}