NINA HOUSE

技術ブログ作ってみる

【Razor Pages】属性で承認できるよ

属性がスーパー便利です

webページで表示するページに認証が必要かどうか制御する方法って色々ある。セッションとか。
フレームワークだとルートで定義したりするけど、.NET Coreでももれなくそうする。

が、ルーティングで認証ありページに定義してるのに「このページは認証いらないな」みたいなページがある場合。
Razor Pagesではたった一行で実現できる。

namespace xxx
{
    [AllowAnonymous]     //これ
    public class xxxModel : PageModel
    {
        public void OnGet()
        {
             ......
        }
    }
}

[AllowAnonymous] !!!
便利だなー。逆に単純に認証かけたい場合は、
[Authorize]でいけます。

docs.microsoft.com

他にはこんなのがあります。

garafu.blogspot.com

【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アカウントを作成する

docs.microsoft.com

Azure無料アカウント

  • 12か月無料で使えるアカウント
  • 最初の30日間に利用できる$200米国ドルのクレジットつき
  • 特定の製品については期間越しても無料でアクセスできる

Azureの購入オプション

  • Azure.comより直接購入
  • Microsoftの担当者をからの購入
  • Microsoftパートナーから購入

Azureの課金について

Azureサポートオプション

種類によって受けられるサポートが変わるのでよく確認する。
- Basic - Developer - Standard - Professional Direct

詳しくはこちら↓

azure.microsoft.com

コミュニティのサポートはこちら↓
f:id:nina-b:20210603122744j:plain

【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せずにコミットはこまめにしてあげるのも良いですね。 コミットメッセージ(参考)についてはこちら↓

qiita.com

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でもいけます。

docs.microsoft.com