投稿

2019の投稿を表示しています

Blazor(ブレイザー)は ASP.NET を再び輝かせるのか?

ASP.NET Core Blazor Microsoft は、ASP.NET Core Blazor を .NET Core 3.0 に正式に組み込みました。 ASP.NET Core Blazor の概要 厳密に言うと少し違うのですが、ブラウザで動く C# のようなものです。 JavaScript ではなく、C# の記述方法で SPA(シングルページアプリケーション)を構築することができるフレームワークです。 .NET  Standard DLL をウェブ上で実行することができます。 考え方としては、かつてあった Silverlight(懐かしいですね)のようなものですが、プラグイン無しに動くのは大きな進歩です。 近年では、登場からずっと放置プレイの ASP.NET MVC は既に時代遅れ。 Microsoft も諦めたのかと思っていました。 とはいえ手放しに喜べない MS と C# が大好きな現場では、試しに使ってみる人もそれなりにいると思います。 あとは、.NET Core が流行っているので、それらに感度が高い人とか。 しかし、この Blazor が、今後そういう現場のスタンダートとして採用されていくかというと、かなりハードルが高いと言わざるをえないと思います。 すでに優秀なフロントエンド開発のフレームワークがたくさんある 登場するのがちょっと遅かったと思います…。 .NET Core .NET Core 自体は、それなりに盛り上がっているのかもしれません。 しかし、業務で .NET(.NET Framework) を使ってきた企業ほど、.NET Core への対応が遅れている気がします。 .NET Framework の資産があるから、なかなか Core へ対応できないことと、今まで .NET を使っている企業ほど、Windows で楽にいろいろできる .NET Framework の便利さから離れられないのではないかと思っています。 .NET Core の思想は良いと思いますが、新規開発が行われない限り、採用はちょっと厳しいのではないかと思います。 C# VB6 を使っていた人は、.NET になったとき、C# ではなく、VB.NET を採用するケースが多かったと思います。そういう現場では、今から C# の

Chrome77 で font-face が効かなくなった

イメージ
Web サイトに指定してある「MS ゴシック」が見るに堪えないので、 Chrome の拡張機能 Stylus を利用して、独自 CSS を定義していました。 @font-face でフォントを強制的に書き換えて表示させていたのですが、 Chrome が 77 にアップデートされた途端、CSS が効かなくなり、忌まわしき MS ゴシック による表示に戻ってしまいました。 次のアップデートで修正されるのか不明ですが、なんとかして MS ゴシックを抹消したいです…。 そもそも、今どき font-family に MS ゴシック なんか指定するなよ、と思います。

Adobe のメールを配信停止する方法

イメージ
Adobeのアプリをダウンロードすると、登録されているメールアドレス宛に、 ダイレクトメールが頻繁に届くようになります。 正直、毎回削除するのもめんどくさいです。 ダイレクトメールの配信停止設定 Adobe のウェブサイト から「ログイン」画面に飛びます。 Adobe ID を作った記憶がなければ、アプリの利用開始時に ID を求められた際、Google か Facebook のログイン情報を使っているはず。 その場合、いずれかのボタンからログインできます。 「情報配信」をクリックすると、このような画面が表示されるので、 左側のメニューにある「アドビからのお知らせ」をクリックします。 「アドビからの最新情報」の「電子メール」のチェックを外して、 「保存」ボタンをクリックします。 これでメールが来なくなるはずです。

Mac ショートカットキーの矢印(⇧)ってどれ?

イメージ
まだ Mac に慣れていない… メニューバーにあるショートカットキーの案内のうち、 「 ⇧ 」 という表示があります。 これは何だろう… 矢印は Shift キー なるほど。 Shift は、ずらすことを意味しているから矢印なのだそうだ。 Mac の装飾キーの記号は、慣れないと分かりづらい https://beadored.com/mac-decorative-key-symbol/

PHPエラー Use of undefined constant はクォーテーションで囲んで修正する

イメージ
$today = getdate(); print $today[year]; 「今年」を表示させるだけのシンプルなソースです。 以前はこれで動いていました。 PHP のバージョンが 7.2 の新環境に移行させたところ、警告がでました。 Warning: Use of undefined constant year - assumed 'year' PHP7x系は必ずクォーテーションで囲む どうやら、シングルクォーテーションで囲まなければならないようです。 $today = getdate(); print $today['year'];

Angular 7 responseType がセットできない

イメージ
レスポンスタイプをセットする レスポンス全体を読ませる場合は、この様に書きます。 this.http.get (apiURL, { observe: 'response' });

Google Keep でインデントを行い階層化するショートカット

イメージ
Googke Keepのチェックリスト階層化 Google Keep のチェックリストは階層化できます。 チェックリストに変更するショートカットキー メモの状態からチェックリストに変更するショートカットキーを押します。 Ctrl + Shift + 8 「 メモ 」が「 チェックリスト 」に変更されました。 チェックリスト階層化のショートカットキ- 親のチェックリストを入力した後、Enter で次のチェックリストに移ります。 ここで、チェックリストを階層化するショートカットキーを押します。 Ctrl + ] チェックリストの階層が一段下がりました。 ( 階層はこれ以上下がりません ) 階層を戻したいときは、次のショートカットです。 Ctrl + [ ] を > ( 右側 ) 、[ を <( 左側 )だと考えると理解しやすいと思います。 これで Google Keep の入力が加速しますね!

McAfee で FTP 接続の許可を設定する

イメージ
Windows Defender のファイアウォール設定から、FTP の設定を行う時、 PC に McAfee がインストールされていると設定ができません。 McAfee の管理画面を開き(常駐アイコンから起動)、 セキュリティからファイアウォールメニューを開きます。 ここで、FTPの設定を行うことができます。

.NET Core で 'shift-JIS' is not a supported encoding エラー

イメージ
.NET Core 2.2 で Web API を作成していて、shift-JIS エンコードのファイル(CSVファイル)を返そうとした際、エラーとなってしまいました。 解決策 NuGetで「System.Text.Encoding.CodePages」をインストール。 エンコードを使う際に、下記の通り RegisterProvider を設定します。 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var enc = Encoding.GetEncoding("Shift_JIS");

jQueryでTabキーを押した時に処理を行う

どんなキーが押されたか、キーの番号を取得して判定する。 $(' {エレメントを指定} ').keydown(function (e) { var code = e.keyCode || e.which; if (code === 9) { // なにか処理 } });

Could not find module “@angular-devkit/build-angular” エラー

イメージ
npm start コマンドを実行しようとして、下記のエラー。 Could not find module “@angular-devkit/build-angular” 調べると、Angular 6.0 以降は、 @angular-devkit/build-angular が必要だとか。 インストールコマンド npm install --save-dev @angular-devkit/build-angular

Access GROUP BY で文字化けする

Access SQL で、 対象カラムのデータ型が「 長いテキスト(メモ型) 」の場合、 GROUP BY を使った集計で文字化けする。 データ型を「 短いテキスト 」に変更すれば解決するが、 データが既に登録されている場合は、フィールドサイズを超えたデータは切り捨てられてしまうので注意する。

Access パラメーターが少なすぎます

実在しないテーブル名やカラム名を指定した場合に出るエラー。 複数のテーブルを参照する場合に起こりやすい。 1を指定してください 2を指定してください 3を指定してください 等のメッセージが表示される。

Access ステートメントの構文エラーです

イメージ
テーブルやカラム名に、予約語が入っていないだろうか? SQL 文の中に、次のリンクにある単語が入っている場合、エラーが発生する。 Access の予約語と記号 え? これもダメなの? という単語も入っているのでチェックしてほしい。

C# string.Format の「入力文字列の形式が正しくありません」

イメージ
このエラーは引数の数が違う場合が多いですが、 指定した文字列(第一引数)に波括弧( { )が入っている場合、例外が発生し、このエラーメッセージが出ます。 波括弧を使いたい場合は、「 {{ 」と記号をつなげ、エスケープします。

預金種目コード

受取人預金種別 1:普通 2:当座 3:納税準備 4:貯蓄 9:その他

ソリューション内の1つ以上のプロジェクトが正しく読み込まれていません。

イメージ
ソリューション内の1つ以上のプロジェクトが正しく読み込まれていません。 詳細については、出力ウィンドウを確認してください。 このエラーの原因は、主にファイルのパスに関するものです。 プロジェクトの構成(フォルダ名)をエクスプローラーから変更した → .sln をテキストエディタで開き、変更したものに修正する。   フォルダの名前が長すぎる sln が置いてあるフォルダまでのパスが長すぎてもエラーになります。長いフォルダ名がないかチェックします。

MDB 更新可能なクエリであることが必要です

イメージ
MDB に書き込みができない場合のエラー。 IIS_IUSRS の権限は、フルコントロールが必要らしい。

Validation failed for one or more entities

Entity Framework で データの更新を行う際に出たエラー。 これは、Model に設定してあった属性(アノテーション)のエラーです。 例えば、[MaxLength(50)] だとしたら、登録しようとしているデータが 50 文字をオーバーしているのかもしれません。 Model をチェックしてみましょう。

確定申告の返信用封筒は82円切手じゃ足りない

イメージ
確定申告の書類を郵送するとき、切手を貼った返信用封筒を同封します。 82円切手一枚じゃ足りない ネットで検索すると、「 82円切手貼れば OK 」みたいなこと書いている人がいますが、足りません。 そもそも確定申告の書類の重さは人によって違います。 私の場合は決算書も必要なので、その分重くなっていたのでしょうね。 でも、82円では足りない気がしますね。

Gmail の POP が設定できない場合、アプリ設定を変更する

イメージ
メーラーから POP を使って Gmail にアクセスする場合、以下の設定が必要になります。 Gmail の設定で「POPを有効」にする。 アプリの設定で安全性の低いアプリのアクセスを「オン」にする。 POPを有効にする Gmailをブラウザで開き、歯車のマークから「設定」をクリックします。 メール転送と POP/IMAPを開きます。 POP ダウンロードで「すべてのメールで POP を有効にする」に設定する。 安全性の低いアプリのアクセスを「オン」にする Google のアカウントページを開く。 Googleのトップページの右上にあるアカウント名をクリックすると、 「Googleアカウント」ボタンがあるのでクリックする。 セキュリティをクリックする。 安全性の低いアプリのアクセスの「アクセスを有効にする」をクリック。 安全性の低いアプリの許可 トグルボタン をクリックして有効にする。 C#からPOPアクセスする場合に接続できなくて少しはまった。

ASP.NET MVC localhostで接続が拒否されました

IIS Express を使用して ASP.NET MVC のサイトをデバッグする際に、以下のようなエラーが出る事がある。 このサイトにアクセスできません localhostで接続が拒否されました 調べると、ポートを変える方法が推奨されているケースがあります。 これはソリューションのプロパティ - Web にある プロジェクトの URL のポートを変更する方法です。 ポートを変えてもダメだったので、他の方法として推奨されている、 ソリューションフォルダ以下にある「 .vs 」フォルダを消してからデバッグしてみる方法を試してみました。 すると、デバッグできるようになりました。 このあたりの挙動は原因がよくわからず、気持ちが悪いですね。

jQuery で moz-transform-origin 0 0 をセットする

どうやってセットするんだろうと思いましたが、こんな感じです。 // 左上に合わせたい $("#Hoge").css({ '-moz-transform-origin': 'left top 0' });

イベント発火って何?

いつからか JavaScriptの処理を呼び出す事を「発火」って書いている人を見かけるようになりました。 私は「発火」なんて言われた事は無いし、現場でも聞いた事がないのですが…JavaScriptをゴリゴリ書いている人の世界では普通なんでしょうか? かなり違和感。

Windows VPS の ConoHa を契約した

イメージ
以前、私は「 さくらのVPS for Windows Server」を利用していたのですが、不要になったため解約していました。 最近、再び Windows VPS が必要になったため、今回は GMO の Windows VPS サービス『ConoHa』を契約しました。

EF マイグレーション時にエラーが出て、DBの構造を更新できない

The target context 'コンテキスト名' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory. 特にカスタマイズしていなければ、DbContext を継承した Context クラスには、引数無しコンストラクターの base クラスで接続文字列をセットしているはずです。 public HogeContext() : base("Con") { } こんな感じ。 私は引数有りのコンストラクターで、接続文字列を場合分けしており、引数無しのコンストラクターは用意していませんでした。 public HogeContext(string KEY) : base("Con") { // 接続文字列を工夫して変更させている var con = Database.Connection.ConnectionString; Database.Connection.ConnectionString = string.Format(con, KEY); } これだと、マイグレーション時に冒頭のエラーが出ます。 Context 周りにもう少し柔軟性が欲しかったね。

URLがプロパティ内にありません(Google Search Console)

イメージ
みんな大好き Fetch as Google 新しい Google Search Console では、 URL検査 → URL入力 という手順で行います。 その際、 URL がプロパティ内にありません というエラーが出て、少しハマりました。 よく見てみると、開いているプロパティが違っていました。 「 http 」で登録されているプロパティに、 「 https 」で始まるアドレスを貼り付けていたのです。 そりゃダメだよ。 Google Search Console は http, https を厳格に区別しています。 正しいプロパティで Fetch as Google を行いましょう。

PowerShell 実行パスが取得できない

イメージ
スクリプトファイルを実行しているパスを取得したい場合、 Split-Path $script:myInvocation.MyCommand.path -parent で実行ファイルを省いたパスが取得できます。 しかし、PowerShell のコンソールでは上記コマンドは使えません。 こんなエラーが出ます。 引数が null であるため、パラメーター 'Path' にバインドできません。 考えてみれば当然ですね。 「 スクリプトファイル 」を実行しているパスを取得するのですから(笑)。 バッチから PowerShell を実行させようとして、この現象でハマりました。

Win7 では、Hyper-Vの拡張セッションは使えない

イメージ
仮想マシンに対しても コピー&ペースト ができる拡張セッションモード。 これはとても便利なのですが、Windows 8 から使える機能だそうです。 Windows 7 では使えない 仕様 です。

[ PowerShell ] zipファイルを解凍。既にあったら上書きする。

Expand-Archive -Path c:\Temp\Test.zip -DestinationPath c:\SysData\ -Force 「 -Force 」オプションを付けると、同名のファイルは上書きされる。 オプションを付けず同名のファイルがあった場合はエラーになるので気をつけよう。

[ PowerShell ] IISの物理パスを取得する

# 通常は「 C:\inetpub 」 Get-WebFilePath -PSPath "IIS:\Sites\Default Web Site" # 通常は「 C:\inetpub\wwwroot 」 (Get-WebFilePath -PSPath "IIS:\Sites\Default Web Site").FullName 設定を変更しなければ、IISのデフォルトウェブサイトの物理パスは「 C:\inetpub\wwwroot 」のはず。 ただ、念のため環境毎にきちんと取得したいよね、という場合に使う。

C# Access Insert 直後にオートナンバーの値を取得する

Insert後にオートナンバーのKEYを取得したい場合があります。 SQL文 "Select @@Identity" を実行し、取得します。 string query = "Insert Into User (name) Values ('山田一郎')"; string query_getkey = "Select @@Identity"; var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Test.mdb"; using (OleDbConnection connection = new OleDbConnection(connectionString)) using (OleDbCommand cmd = new OleDbCommand(query, connection)) { connection.Open(); cmd.ExecuteNonQuery(); cmd.CommandText = query_getkey; var ID = (int)cmd.ExecuteScalar(); }

ASP.NET MVC でチェックボックスを作り、値を取得する

ASP.NET MVC の HTML ヘルパーのひとつ、CheckBoxFor は全く役に立ちません。これだけで ASP.NET なんて使い物にならないと思う方も多いですよね。 チェックボックスを作る最も簡単な方法はこうなります。 注意しなければならないのは、 使用する Model の 変数の型(以下のサンプルで言うところの Kiyaku)は bool にしておくことです。 @Html.EditorFor(m => m.Kiyaku) bool にしているので、チェック ON で true が格納されます。 CheckBoxFor 意味ない。

C# ASP.NET MVC で bool を検証する

ASP.NET MVC のデータアノテーション(バリデーションチェック)において、bool ってどうやって判定するんだ? と、迷ったのでメモ。 [Display(Name = "利用規約")] [Range(typeof(bool), "true", "true", ErrorMessage = "{0}にチェックしてね!")] public bool Kiyaku { get; set; }

MVC の @Url.Action で # を使い、遷移先の ID に移動する

こんな感じ。 こんな書き方があるのですね。 <a href="@Url.Action("Index", "Home")#Hoge">トップページに戻る</a>

「 間違ったフォーマットのプログラムを読み込もうとしました 」の解決方法

イメージ
ファイルまたはアセンブリ ' アセンブリ名 '、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 もはや意味がわからないw プラットホームターゲットの変更 エラーメッセージで検索をすると、プラットホームターゲットが 32bit と 64bit で違うから AnyCPU に変更してビルドしよう! という回答が散見されます。 早速 試してみましたが…私の場合はこの方法では解決できませんでした。 アプリケーションプールの詳細設定を変更 次に試したのは、IIS の アプリケーションプール にある詳細設定から、下記の 2 点を変更する方法。 32 ビットアプリケーションの有効化 を True に変更 ユーザープロファイルの読み込み を True に変更 これで見事エラーが解消され、サイトが稼働するようになりました。 アプリケーション内に、32bit のライブラリが含まれている場合、アプリケーションプールの設定で 32bit アプリケーションを有効化しないとダメですね。 サードパーティー製のライブラリを使用する場合は、きちんと把握しておきましょう。

Bootstrap のモーダルを Esc で閉じなくする

属性値 data-keyboard="false" を追加する。 <div class="modal fade" id="sampleModal" data-keyboard="false" tabindex="-1"> </div>

EPSON Scan が 応答なし になる(Windows10)

EPSON Scan でスキャンする際に、ページ追加の確認が「 応答なし 」になり、それ以上スキャンができなくなる現象が発生しました。 以前はスキャンできていたにもかかわらず、です。 Windows のアップデートでこのような不具合が出ているのか、以下のドライバーを入れることで直りました。 https://www.epson.jp/dl_soft/readme/26076.htm (このドライバーも意味不明な場所にファイルを解凍しようとしたので、解凍ソフトから任意の場所に手動でファイルを解凍しました)