アレがアレでアレ

(できれば)プログラミング関係のことを書きたい

ASP.NET Core DIのライフタイムの種類

ASP.NET CoreのDIで設定できるライフタイムについてのメモです。 DIについては特に説明しません。 インスタンスのライフタイム docs.microsoft.com 公式ドキュメントにはService lifetimesと書かれていますが、注入するインスタンスのライフタイムは以下の3…

C#で2分探索木

応用情報の午後問題を解いていたら2分探索木の問題が出てきて実際にC#で書いてみようと思いました。 ノードの検索と挿入は簡単でしたが、削除はちょっと複雑になるんですね。 実装 ノード namespace BinarySearchTree { public class Node { public int Valu…

依存関係逆転の原則

SOLID原則の1つである、依存関係逆転の原則について簡単にまとめたものです。 ※依存性の注入に関してここでは解説しません。 依存関係逆転の原則とは 定義 上位のモジュールは下位のモジュールに依存してはならない。どちらのモジュールも「抽象」に依存すべ…

ASP.NET CoreをDocker使ってHerokuにデプロイ & PostgreSQLを使う

C#

devcenter.heroku.com ASP.NET CoreはHerokuにデプロイできないものだと思っていたのですが、 HerokuのDockerコンテナを使ったデプロイ方法であれば、ASP.NET Coreも動くようなので試してみました。 Dockerを使用したHerokuへのデプロイ方法は2つあるようで…

Entity Framework Coreが生成するSQLクエリを確認する

ASP.NET CoreでEntity Framework Coreが生成するSQLクエリをログに出力してみます。 ここでは.NET Coreの組み込みのログ機能を使いました。 実行環境 .NET Core 3.1 SQLクエリのパラメーターをログに含める デフォルトでは、SQLクエリに渡されるパラメーター…

パスワードの保存方法について

Webアプリケーションのパスワード保存方法について、どのように保存すれば安全性が高まるのかのメモです。 パスワードをそのまま保存すると? パスワードを平文のままデータベースに保存し、なんらかの原因により、利用者のパスワードが外部に漏洩した場合、…

GitHubに草が生えない問題

GitHubにpushしてもcontributionsに反映されていなかったり、コミットユーザーのアイコンが正しく表示されない現象が起こってた。 調べたら単純にGitHubとgitクライアントのuser.emailの設定が異なるせいでした。 user.nameとuser.emailをどっちも合わせたと…

Git diffでShift-JISの文字化けメモ

​ コードがShift-JISの場合、git diffをすると文字化けする。 .git/configと.gitattributes​を以下のようにすることで文字化けしなくなった。 .gitattributes .csvの部分はsjisファイルの拡張子を記述 *.csv diff=sjis config [diff "cp932"] textconv=iconv…

Visual Studio 2017でTypeScriptのコンパイルを無効にする

ASP.NET MVC + TypeScriptでwebを書いていたんですが、 サーバー側の処理だけ動作確認したいっていうときにTypeScriptのソースにエラーが出ているとデバッグができないですよね。 webpack動かせばちゃんとエラーは分かるし、TypeScriptはvscodeで書くからVis…

累積和

競プロで知ったことのメモ。 簡単な概要 累積和とは前処理をすればの計算量で、区間の合計を求めることができるアルゴリズム。 例えば、長さの数字の配列があるとする。 2 6 1 9 5 8 4 から までの区間の合計を求めたいというときは、単純にからまでをループ…

webpackを使ってみる

webpack.js.org 前回、Babelについて書きました。 今回はwebpackの使い方をメモ程度のクオリティで書いていきます。 webpackとはなにか モジュールバンドラというものです。 モジュールバンドラとは複数のJavaScriptファイルをまとめて1つのファイルにするツ…

Babelを使ってみる

babeljs.io Babel、どんなツールか知っていたけれど使ったことなかったので試してみます。 webpack + Babelで使うのをよく見ますが、とりあえずBabelだけコマンドラインから使ってみます。 Babelとはなにか 簡単に言うと、新しいJavaScriptの書き方で書いた…

Raspberry PiにDockerで.NET Core環境を構築してみた

C#

ラズパイでC#を動かしたくて ラズパイ内に.NET Core環境をDockerで構築してみました。 バージョン .NET Core SDK 2.1 ラズパイの環境 Raspberry Pi 3 Model B Raspbian 9.1 Dockerインストール まずはDockerをインストールします。 以下のコマンド1つでイン…

参照渡し?値渡し?

C#

よくわかっていなかったので調べました。 参考記事 qiita.com 値渡し C#(というか多くの言語)では通常、メソッドの引数へは値渡しとなる。 値渡しとは変数の値をコピーしてメソッドの引数に渡すこと。 なので値を渡した変数をメソッド内で変更しても、元の変…

C#の構文メモ

C#

自分がC#書くときにいちいち調べてしまうものとかをメモとしてまとめようと思います。 内容とか順番はバラバラ ??演算子 null合体演算子と呼ばれるもの。 値がnullか判定してnullじゃないときは左、nullのときは右の値が返る int? i = null; var result = i …

C#のデリゲートとか匿名関数とか

C#

C#のデリゲートとかよくわかっていなかったんですが、こちらのすばらしい記事を読んだらなんとなく理解できたので忘れないようにメモ(ほとんど記事のまんまです) qiita.com デリゲートって デリゲートとはメソッドを参照するための型。 どうやらC#はメソッド…

Strategy パターン

Template Methodのお次はStrategyパターン Strategyって 英語で戦略という意味。戦略 = アルゴリズム。 アルゴリズムをクラスに実装することで、アルゴリズムを使用するときに切り替えられるようになるデザインパターン。 アルゴリズムの実行にインターフェ…

Template Method パターン

ライブラリとかフレームワークの使い方をアウトプットするのもいいけど、 もっと基礎力がつきそうなことのほうがいいのでは?と思ったのでデザインパターンとやらをお勉強してみることにしました。 というわけで、まずはTemplate Methodパターン Template Me…

ASP.NET フォーム認証

簡単なログイン機能を実装する時のメモ 認証チケットって 認証された際に発行される資格情報。 クッキーに保存され、以降はこの認証チケットを使って認証済みページにアクセスできる。 フォーム認証の準備 Web.configに以下を記入 <system.web> ... <authentication mode="Forms"> <forms loginUrl="~/login" timeout="1440" name="auth"/> </authentication> ... </system.web> loginUrl: 認…

ASP.NET MVC HTMLヘルパーのメモ

ASP.NET MVCには簡単にビューにHTMLをレンダリングできるHTMLヘルパーというものがあります。 Html.Action(), Html.Lavel(), Html.Editor()とか 自作のHTMLヘルパーをHtmlHelperクラスの拡張メソッドとして追加することで、元からあるメソッドと同じようにHt…

JavaScriptのスコープのメモ

関数によるスコープ 関数内{}で定義した変数は外から参照できない。 function h() { const x = 1; console.log(x); // 1 } h(); console.log(x); // Error 関数の仮引数も外から参照できない。 function h(i) { console.log(i); // OK } h('OK'); console.lo…