2018/12/16

C# 文字列分割の split で複数の条件を指定する

文字列分割の split で複数の条件を指定する
指定した区切り文字で文字列を分割する String.Split メソッド。
区切り文字としてよく使用されるのはカンマや半角スペースだと思いますが、DBから取得した人名フィールドを「 半角スペースか、全角スペース 」で分割して名字だけ取りたい場合があります。

本来は入力の時点で姓と名を分けて入力させていることが基本ですが、スペースを入れてもらって運用でカバーしているシステム少なくありません。

var name = "山田 太郎";
if (string.IsNullOrEmpty(name) == false)
{
    name = name.Split(new char[] { ' ', ' ' })[0];
}

この例は、Split で分割した後にインデックスを直接指定してあり、実はあまりよくない書き方です。
なぜなら、name が null だった場合は落ちるからです。

分割元の文字列の null チェックは、それぞれシステム毎に仕様が分かれるところなので、工夫する必要があります。

2018/11/24

ASP.NET MVC ActionLink で「 戻る 」

ActionLink で「 戻る 」
前の画面に「 戻る 」リンクを設置したいと思い検索をかけると、JavaScript を使用した history.back(-1) というようなサンプルがたくさん出てきます。

しかし、この方法は前画面のテキストボックス等の入力値が残ってしまうため、業務アプリでは要件を満たせない事もあります。

MVC の ActionLink を使った方法を探してみたら、Request の情報から、前の画面を取り出し、ActionLink で飛ばす方法がありました。

@Html.ActionLink("前の画面に戻る", null, null, null, new { href = Request.UrlReferrer })


firefox プロキシサーバーが見つかりませんでした

firefox で「 プロキシサーバーが見つかりませんでした 」が多発した際に行った対処方法。

他のブラウザーではウェブサイトが表示されるのに Firefox では表示されない
https://support.mozilla.org/ja/kb/firefox-cant-load-websites-other-browsers-can

Firefox で IPv6 を無効にする方法
  1. アドレスバー に about:config と入力し、Enter キーをクリックする
  2. "動作保証対象外になります!" という警告ページが表示されるため、
    危険性を承知の上で使用する をクリックする
  3. 検索欄に network.dns.disableIPv6 と入力する
  4. 設定リストの network.dns.disableIPv6 をダブルクリックし、値を true に設定する

CSS before や after 等の疑似要素に hover を設定する

疑似要素をつなげる順番が、思っていたのと違ってた。
:hover に対して、before や after をつなげる。

.hoge:hover:before
.hoge:hover:after

2018/11/10

The method 'Skip' is only supported for sorted input in LINQ to Entities

The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'.

Entity Framework の LINQ でデータを取得し、SKip を使おうとしたときのエラー。
データ取得時に Distinct() をしていたのが原因だった。

2018/11/06

Excelで名前の管理リストを表示させる

名前の管理リスト
Excel でシートをコピーする際に、
「 移動またはコピーする数式またはシートには、移動またはコピー先のワークシートに既にある名前 が含まれています。この名前を使用しますか? 」
というウザい表示が出ることがあります。

名前の定義が重複しているというエラーメッセージなのですが、名前の定義ってどこで確認するの? と探したのでメモ。

名前の管理リスト
数式 - 名前の管理

2018/10/30

ASP.NET Web サーバーでデバッグを開始できません(実行環境 ローカルIIS)

ASP.NET Web サーバーでデバッグを開始できません
Web サーバーでデバッグを開始できません。起動された URL に一致する Web サイトは IIS の一覧に含まれていません。
詳細については [ヘルプ] をクリックしてください。

プロジェクトの実行環境を ローカルIIS にしている場合、Visual Studio を 管理者権限 で実行しなければなりません。

上記エラーで合っていることは、「 Web サーバーでデバッグを開始できません 」という部分のみ(笑

2018/10/19

C# decimal で小数点を四捨五入して文字列にする

decimal型の変数を四捨五入して画面表示したい場合に便利な書き方。
d = 1000.4m;
// 切り捨てられ 1001 になる
var dValue = string.Format("{0:0}", d);

d = 1000.5m;
// 繰り上げされ 1000 になる
dValue = string.Format("{0:0}", d);

MVC なら、View 内に Razor で直接書くのもいいですね。


2018/10/14

C# int を bool に変換する

int を bool に変換

int を bool に変換

var flg0 = 0;
var flg1 = 1;

// false
var result0 = Convert.ToBoolean(flg0);

// true
var result1 = Convert.ToBoolean(flg1);

上記の方法で int を bool に変換することはできます。
…できるのですが、「 0 以外は全て true 」になる(笑)。

こういう変換が必要になるシーンは確かにあります。

しかし、 0 以外は true になってしまうことを理解してコーディングしないと、とんでもないバグの温床になるので注意。

【 参考記事 】

2018/10/08

悪いエラーメッセージの例


JRE POINT
https://www.jrepoint.jp/

例えば、ログイン時のパスワード間違いのエラーメッセージは、「 ○○文字以下で~です 」等の詳細な情報を与えると、パスワードをクラックされる危険性があるためか、曖昧なメッセージがいい、という意見もあります。
(個人的にはおかしいと思っていますが)

この画面は新規登録ですが、エラーメッセージをログイン時のそれと使い回しているのか、

「文字数が足りません。」

という、意味不明なメッセージが出ました。
実は私が入力したパスワードは、文字数が多く、「 記号 」と「 数字 」が足りなかったのです。

むしろ「 文字数大杉www」とでも出た方がわかりやすいです。

こういうのは、設計者が周りの意見を聞かず要件定義をしていると起こりがちです。

設計書に意見も言えない雰囲気があるか、誰も責任を取りたくから「 誰も何も言わない 」と、こういう「 ユーザーの方向を向いていない 」ものができあがってしまいます。

そんな現場に遭遇したら、使いづらいシステムにドロップキックをして。さっさと去りましょう。

ATOK passport のシリアルナンバー確認方法

ATOK passport のシリアルナンバー確認方法

登録製品・シリアルナンバーの照会
https://www.justsystems.com/jp/service/onl/search.html

このページ自体 わかりづらい のですが(笑)、ページ下部に「 次へ進む 」ボタンがあります。ページの指示に従ってログインして、シリアルナンバーを確認することができます。

2018/10/04

C# dictionary 型の引数を省略したメソッド

省略する際の初期値はどうするんだったかな?

調べたら、null で良いらしい。
初期値が null なので、扱いには気をつけないといけない。

static string GetUserName(Dictionary<int, string> keyValuePairs = null)
{
    return "John";
}

2018/09/25

ASP.NET MVC の EditorFor の書式を指定する

yyyy/MM/dd
ASP.NET MVC において、EditorFor の書式を指定する場合は Model に指定をする。

「 yyyy/MM/dd 」で表示

View
@Html.EditorFor(m => m.Hizuke)

Model
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime Hizuke { get; set; }

ApplyFormatInEditMode = true の規定は false。
編集時にも同じフォーマットを使用する場合は true にします。

2018/09/04

ATOK Passport のカード決済エラーは重大なバグ

ATOK Passport のカード決済エラー

ATOK Passport を契約しようとしましたが、正常に決済できるカードでも「 オーソリが失敗しました 」というエラーが出てしまい、契約できない事象に遭遇しました。

「 オーソリ 」が何のことかわからない人も多いと思いますが、カード決済の認証が通らなかったという事です。

「 え? でも、このカードで普通に買い物できるよ? Why??? 」

調べてみたら、これはバグっぽい動きですね。


オーソリエラーの原因

ATOK Passport の契約には、Jsst アカウントの登録が必須なのですが、このアカウントに登録されているカードが期限切れで使えなくなっていると、今回のエラーが出るようです。


カード情報を更新します。


無事に契約することができました!

今回のケースは、
  1. Just アカウントを持っていて
  2. 過去に Just My Shop で買い物をして
  3. その時使ったカードが期限切れ
こんなケースは無いかもしれません。
しかし、この事象に遭遇すると、購入できません。

今回の動きが仕様なら、せめてエラーメッセージを詳細にするべきです。

「 Jsut アカウントに登録されているクレジットカードの有効期限が切れています」

とかね。

2018/07/16

MDB が 更新されない(OleDbParameter)

MDB が 更新されない(OleDbParameter)
エラーが発生せず処理が流れていくのでタチが悪い。
SQL 文とパラメータが同じ順番になっていないとダメらしい。

例)このような SQL 文があったとする。

UPDATE Hoge SET name = @name, age = @age WHERE HogeID = @HogeID

この場合、パラメーターにセットする順番を、

  1. @name
  2. @age
  3. @HogeID
としないとダメ。順番が肝らしい。



IIS Microsoft.Jet.OLEDB.4.0 プロバイダーはローカルのコンピューターに登録されていません

IIS アプリケーションプールの設定
  1. 対象のアプリケーションが使用している、IIS アプリケーションプールの詳細設定を開く。
  2. 全般 - 32 ビットアプリケーションの有効化 を 「 True 」に変更する。

2018/07/07

Stylish を捨てて代替の Stylus をインストール

すべての閲覧履歴を収集していたとされ、ポリシー違反でブロックされた「Stylish」。こういう不誠実な拡張機能はさっさと捨てましょう。

Stylish 代替となる Stylus

Stylus は、Stylish から分岐したアドオンで、情報収集を行わない、オープンソースプロジェクトです。

インストールはこちらから。


Stylish の設定を取り込むこともできます。

Stylish のオプションから、「インストールされた全スタイルをバックアップする」 をクリック。


Stylus のオプションで、「スタイルをインポート」 をクリックして、先ほどバックアップしたファイルを読み込みます。読み込む際には、「 JSON ファイル 」ではなく「 すべてのファイル 」にします。

2018/07/01

外出用のイヤホンとして最高の品 Bose QuietControl 30


Bose のワイヤレスノイズキャンセリングイヤホン「Bose QuietControl 30」を買ってみました。

結論を言うと 「 外出時に使用するイヤホンとしては最高峰の品 」 です。

2018/06/10

サンディスクのレスキュープロがアクティベーションできない

レスキュープロのアクティベーション

サンディスクのコンパクトフラッシュ カードを購入すると、箱の中に小さな紙が入っています。これは、データ復旧ソフト 「レスキュープロ デラックス」 が一年間利用できる特典です。

しかし、紙に書いてあるシリアル番号を入力しても、「アクティベーションできない」 です。

これは 「シリアル番号」 ですから(笑)。


ます、
1.下記のURLをクリックして、アクティベーションコードを入力して下さい。
をクリックします。

レスキュープロのアクティベーションコード取得方法

いきなり英語のページが開きますが、上にある 「日本語」 をクリックすると、ちゃんと日本語になります。情報を入力していくと、アクティベーションコードが取得できます。


この 「アクティベーションコード」 を使うと、アクティベーションできます。


サンディスクのヘルプページにある、インストール手順書はこちらです。
サンディスクレスキュープロデラックスについて

2018/04/30

Blogger の管理画面が英語になった

Blogger の管理画面が、英語表記になってしまいました。
日本語表記に戻すための方法です。

Blogger Draft を止める



Blogger Draft を止めると、日本語表記に戻るようです。
Blogger Draft を使用している場合は、
URL が 「https://draft.blogger.com」 になっているはずです。


修正方法は、Settings → User settings → Use Blogger Draft を 「No」 にして、Blogger を開き直します。


URL が 「https://www.blogger.com/」なります。

2018/04/09

初期化文字列の形式が仕様に適合しません

初期化文字列の形式が仕様に適合しません

System.ArgumentException
初期化文字列の形式が仕様に適合しません。インデックス xxx で始まっています。
(xxx は数字)

これは、DB への接続設定が間違えている場合に起こるようです。

接続文字列は一番間違いやすい部分ですが、サーバーエクスプローラーで対象 DB へ接続し、対象 DB のプロパティから「接続文字列」を確認することができます。

2018/03/24

ベローチェの フリー WI-Fi のパスワード

ベローチェのフリー Wi-Fi
ベローチェに久しぶりに入ったら、見慣れないフリー Wi-Fi があったので接続してみました。カフェ・ベローチェ、シャノアール等で、フリー Wi-Fi サービスが開始していたようです。

パスワード

パスワードはこの様になっているそうです。

  • ベローチェ
    SSID: +veloce_free_wifi
    パスワード: velocewifi
     
  • コーヒーハウス・シャノアール
    SSID: +chatnoir_free_wifi
    パスワード: chatnoir
     
  • カフェ・ラ・コルテ
    SSID: +lacorte_free_wifi
    パスワード: lacortewifi
     
  • カフェ・セジュール
    SSID: +sejour_free_wifi
    パスワード: sejourwifi
導入店舗は今後増えていくとは思いますが、こんなリストがありました。

ベローチェの Wi-FI の速度を測ってみた

カフェ・ベローチェ鍛冶町店で平日の 14 時頃。ストレスなしでした。

ちょっとした空き時間に喫茶店で PC を開くこともよくありますが、こういうサービスがあると嬉しいですよね。

2018/03/18

Visual Studio で 「アクセスが拒否されました」 でビルドできない

アクセスが拒否されましたのエラー
大幅に名前空間を変更したりリネームをした場合などに、古い dll が元の名前空間を参照していてエラーになってしまうことがあります。

そして、ビルドをかけようとすると、roslyn フォルダが邪魔してファイルのコピーができない。

エラー内容は、

xxxx へのアクセスが拒否されました。

と出ます。

bin フォルダを削除しようとしても、ファイルがロックされていて削除できないという状況…。

VBCSCompiler.exe がファイルをロックしている

VBCSCompiler.exe
Visual Studio を終了させても、なぜか 「VBCSCompiler.exe」 のプロセスがそのまま生きていて、ファイルをロックしている場合があります。

Visual Studio を一旦 終了させて、タスクマネージャーから VBCSCompiler を終了させてからもう一度ビルドして解決しました。

VBCSCompiler を終了させればファイルは消せるはずですが、一度システムを再起動して、bin を削除する方法があります。
再起動面倒くさい、という場合は、Unlocler というソフトを使用する方法もありますね。


2018/01/28

SQL Server でインスタンス固有のエラー

インスタンス固有のエラー
環境を変更した際によく出る 「インスタンス固有のエラー」 ですが、これはサーバー名を間違えている場合が多いようです。
特に開発中には SQL Server の Express 等のバージョンを使用することが多いですが、Data Source の指定方法をチェックしてみる必要があります。

ローカルの SQL Server Express への接続例。
<add connectionstring="Data Source=.\SQLEXPRESS;
Initial Catalog=DatabaseName;
Integrated Security=True;
MultipleActiveResultSets=True" 
name="ConnectionStringName" 
providername="System.Data.SqlClient">
</add>

2018/01/23

DataTable の名前が設定されていませんエラーでシリアライズ化できない

DataTable の名前が設定されていません
system.web.services.protocols.soapexception サーバーは要求を処理できませんでした。
DataTable をシリアライズ化できません。
DataTable の名前が設定されていません。
久しぶりの ASP.NET。
DataTable を返却する Web サービスを追加して実行するとこんなエラーが。

解決策は、エラーの通り DataTable に名前を追加すること。
var dt = new DataTable();
// 名前はなんでもいい
dt.TableName = "TableName"

2018/01/05

iPhone X 用に Belkin のワイヤレス充電パッドを買った

Apple Store にある純正品よりも安いのが良いですね。高速充電は対応していませんが、そもそも寝る時に充電するので高速充電の必要がなければこれで十分でしょう。

裏は白くなっています。ゴム足のようになっているので、滑らずに固定できます(それほど抵抗があるわけではない)。

充電が終わってもランプが点き続けていますが、そういう仕様のようです。ちょっと残念ですが、機能的にはちゃんと充電してくれるので気にしないようにします。


2018/01/04

Ctrl + Del で Google 日本語入力の不要な候補を削除する

間違えて確定した候補を削除する(Google 日本語入力)

間違えて確定した候補を削除する

Google 日本語入力で、間違えて確定してしまった単語を削除したい場合は、Ctrl + Del で消すことができます。

このショートカットキーは、よく見ると下に出てます。

Related Posts Plugin for WordPress, Blogger...