【Razor Pages】属性で承認できるよ
属性がスーパー便利です
webページで表示するページに認証が必要かどうか制御する方法って色々ある。セッションとか。
フレームワークだとルートで定義したりするけど、.NET Coreでももれなくそうする。
が、ルーティングで認証ありページに定義してるのに「このページは認証いらないな」みたいなページがある場合。
Razor Pagesではたった一行で実現できる。
namespace xxx { [AllowAnonymous] //これ public class xxxModel : PageModel { public void OnGet() { ...... } } }
[AllowAnonymous] !!!
便利だなー。逆に単純に認証かけたい場合は、
[Authorize]でいけます。
他にはこんなのがあります。
【WSL2】systemctlが動かなかったので試したこと順
環境
WSL2
Ubuntu20.04
問題
xxx@DESKTOP-HBDVB67:/mnt/c/Users/xxx$ sudo timedatectl set-timezone 'Asia/Tokyo' System has not been booted with systemd as init system (PID 1). Can't operate. Failed to create bus connection: Host is down
確認すると、
xxx@DESKTOP-HBDVB67:/mnt/c/Users/xxx$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 892 580 ? Sl 10:06 0:00 /init root 40 0.0 0.0 892 80 ? Ss 10:14 0:00 /init root 41 0.0 0.0 892 80 ? R 10:14 0:00 /init h-baba 42 0.0 0.0 10040 5016 pts/0 Ss 10:14 0:00 -bash h-baba 935 0.0 0.0 10616 3180 pts/0 R+ 10:16 0:00 ps aux
原因
手順
これ入れる github.com
.NET をインストールする前に、次のコマンドを実行して、信頼されたキーの一覧に Microsoft パッケージ署名キーを追加し、パッケージ リポジトリを追加します。
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb
ランタイムをインストールする
SDKとランタイムがあるが、Asp .NET Coreのアプリを作るわけではないのでランタイムの方をインストール
sudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y aspnetcore-runtime-5.0
バージョンが違う場合はこちらを参照 docs.microsoft.com
genieのインストール
curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash
これはエラーになる
sudo apt install apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo nano /etc/apt/sources.list.d/wsl-transdebian.list
これを追加↓
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ focal main
追加できたら[Ctrl]キーを押しながら[O]キーを押し、「y」と入力して[Enter]キーを押して上書き保存してください。さらに[Ctrl]キーを押しながら[X]キーを押すとエディタを終了できます
sudo apt update sudo apt install systemd-genie
やっとgenieのインストールに成功!
genie -s
起動しようとしてまたエラー
公式でも言ってるけどwaiting for systemd !!!!!!! とタイムアウトエラーになる
タイムアウトの原因サービスを確認し、そのサービスを無効化
sudo systemctl mask systemd-remount-fs.service sudo systemctl disable multipathd.socket sudo systemctl disable getty@tty1.service
一回ログアウトし、再度genie -s
で起動
xxx@DESKTOP-HBDVB67-wsl:~$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.0 109812 12836 ? Ss 11:17 0:01 systemd root 50 0.0 0.0 51484 15396 ? S<s 11:17 0:00 /lib/systemd/systemd-journald root 70 0.0 0.0 19560 4992 ? Ss 11:17 0:00 /lib/systemd/systemd-udevd ......
変わった!!
【AZ-104】Azureアカウントの基本
Azureアカウントを作成する
Azure無料アカウント
- 12か月無料で使えるアカウント
- 最初の30日間に利用できる$200米国ドルのクレジットつき
- 特定の製品については期間越しても無料でアクセスできる
Azureの購入オプション
Azureの課金について
- サブスクリプションごとに課金
- logical container(論理コンテナーと訳されてる)
- サブスクリプションによって制限がある場合があるので(例えば「Express Route回線の最大数は1サブスクリプションで10まで」など )、この制限を考慮してサブスクリプションを追加する必要があったりする
- 基本は請求書管理のセクションなどでわけたりする
Azureサポートオプション
種類によって受けられるサポートが変わるのでよく確認する。
- Basic
- Developer
- Standard
- Professional Direct
詳しくはこちら↓
コミュニティのサポートはこちら↓
【git】とりあえずこれだけ使えればなんとかなるgitコマンドまとめ
よく使うgitコマンドまとめ
チーム開発するようになってようやくちょっとずつ覚えてきました。一人だとまずコンフリクトしないしね。
普段はVisual Studioの「git管理」でやってるのでとっても甘やかされてました。GUI最高。
久々コマンド打たなきゃいけなくなった時にてんぱったので基本のよく使うやつまとめます。随時増やす。
これからローカルで作業
git branch
まず自分がどのブランチにいるか把握。
git checkout [ブランチ名]
ブランチ切り替え。これやってからコード書きましょう。
ブランチ増やすときはgit checkout -b [ブランチ名]。
git pull
ブランチを最新にしましょう。pullでfetch + mergeなので、なんか怪しいときはfetchからやってもいいかも。
git merge [ブランチ名]
自分がいるブランチに他のブランチを統合。ここで言う「他のブランチ」はローカルじゃなくてリモートのものなので注意。
git branch -d [ブランチ名]
いらないブランチ消すとき。
これからリモートにあげたい
git status
絶対確認。変更したファイルがわかります。
git add [ファイル名]
git status
確認せずgit add .
(.は全部あげるとき)とかするとつむ原因。
めんどいけどファイル名指定してあげてく方が確実。(と思う)
git commit -m "コミットメッセージ"
コミットするとき。すぐpushせずにコミットはこまめにしてあげるのも良いですね。 コミットメッセージ(参考)についてはこちら↓
git push
コミットをリモートリポジトリにあげましょう。pushのあとにブランチ名指定してあげる方が確実。
いろいろやったけどわけわからなくなって元に戻したいとき
gitはバージョン管理なので元に戻れます。
git log
コミットの履歴が見れるのでハッシュ値(コミットの番号みたいな)調べましょう。
git reset --hard [ハッシュ値]
これで戻れます。
git reset --hard ORIG_HEAD
まちがってリセットした時はこれで直前のリセットを取り消せます。「直前の」ね。
作業中に他のブランチでの作業が必要になったとき
できるだけコミット&プッシュしとけばいいんだけど、そうもいかないとき。
git stash
コミット前の変更を一時退避します。ブランチ変更前に使います。
名前つけたりすると複数管理できるけど、コマンドだけで操作するときはそもそも多用しない方が良いと思うのでこれでよし。
これ使いこなせるとコンフリクト結構回避できる気がする。
git stash pop
他のブランチでの作業を終えた後もどってきたとき。退避した作業を復元できます。
git覚えるならソースツリーとかで覚えたほうが早かったなと思います。もしかしたら今後導入するかも。
【C#】コンストラクターについて
コンストラクターとは
オブジェクトを生成するために呼び出される特殊なメソッド。
例)
public class Program { public static void Main(string[] args) { var dog = new Dog(); Console.WriteLine($"{dog.Name}, {dog.Age}才"); } } public class Dog { public Dog() //←これ { Name = "nina"; Age =3; } public string Name { get; set; } public int Age { get; set; } }
Nina, 3才
このnew Dog()
で新しくインスタンスを生成した時にコンストラクタの中身が呼ばれる。(=初期化)
中身が指定されていない場合(空のコンストラクター)はそれぞれの型の既定値(デフォルト値)は呼び出される。
(stringならnull、intなら0、boolならfalseなど)
引数を与えることもできる
このようにも書ける。
public class Program { public static void Main(string[] args) { var dog = new Dog("Nina", 3); Console.WriteLine($"{dog.Name}, {dog.Age}才"); } } public class Dog { public Dog(string name, int age) { this.Name = name; this.Age = age; } public string Name { get; set; } public int Age { get; set; }
Nina, 3才
【C#】大文字小文字を区別せずに文字列を比較する
大文字小文字を区別せずに文字列を比較
「文字列完全一致で条件分岐!」って状況の方がなかなか少ない気もします。(主観です)
ソートや検索機能など実装するときに使えます。
単純に文字列を比較する場合は比較演算子を使います。
var sample1 = "nina"; var sample2 = "NINA"; if (sample1 == sample2) { Console.WriteLine("True"); } else { Console.WriteLine("False"); }
もちろんFalseです。
これをTrueにしちゃいましょう。
var sample1 = "nina"; var sample2 = "NINA"; if (sample1.Equals(sample2, StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("True"); } else { Console.WriteLine("False"); }
これでTrueになりました。
どこが大文字でも小文字でも関係なくなるので、もちろんNinaでもniNAでもいけます。