.NET Core 3.0 MVCで作成したプロジェクトをビルドした時に、ブラウザが起動しない

状況 Visual Studio for MAC バージョン8.3 .NET Core3.0 MVC (プロジェクトの作成直後) 2019年11月28日時点 ふと、C#でプログラムを書いてみたくなり、.NET Core 3.0 プロジェクトを新規作成し、GUIでビルドすると、起動するはずのブラウザが起動しなかった。 .csprojファイルをいじったりと無駄な努力をしてみたが、結局解決せず。 dotnet コマンドでビルドを行い、ログから開いているポート番号を確認した。 localhost:5000 にアクセスし、アプリが起動していることを確認できた。 どのポートを開くかは、launch.jsonで設定できるっぽい

launchBrowserがTrueになってるから、ビルド時にブラウザが立ち上がりそうな予感がするのに上手くいかないのは何故だろうか… バグなのか、設定が足りていないのか、分からぬ。。。

Azure PipelinesでBuidからDeployまで(node.js)

Azure Pipelinesを理解するにはとにかく色々とパイプに通すしかない! ということで、今回はnode.jsを通してみました。 業務にて、Docker imageをCIでプッシュする必要があったのですが、コンテナって何?って状態だったので、今回は実体のあるアプリケーションで、CI/CDを試してみました。 AzureのGUIは本当によくできていて、複雑なことをしようとしなければ、ほぼ直感で操作が出来るとチュートリアルをやりながら実感しました。 とはいえ、Azureを触る機会がない人に取っては、認知負荷がかなり大きいかと思うので、この記事を流し読みしてから、MSのチュートリアルをやってみるのもいいかもしれません。 それでは、やっていきます。 プログラムをローカルに持ってくる。

サンプルコードは、上記のリポジトリにあるので、取ってきましょう。 Azure DevOps 無料枠を使ってみた 例にならって、DevOpsにリポジトリをプッシュしておきます。 Azure Gitにリポジトリが作成されたら作業開始です。 Azure Gitのプログラムを Build する DevOpsでは、指定したブランチにコミットされるたびに、ビルドしてくれるAzure Pipelinesというツールがあるのですが、これを使ってみます。 コードのある場所(ここではAzure Git) コードのあるプロジェクト名 YAMLのテンプレート(種類が色々ありますが、それっぽいので大丈夫です。あとでいくらでも書き換えられます。) 最後に自動生成されたYAMLファイルをチェックして保存→実行しましょう。

生成されたファイルはこんな感じ。 上の塊から。 トリガー。ここではmasterブランチに変更がかかるたびにビルドが実行されるというトリガー ビルドを実行するための、クラウド上に存在するVM ビルド時にやりたい処理 コンソールに出力するログを出す 必要なnpmコマンドを実行してnodeの環境を整える こんな感じ、最初はYAMLファイルの書き方が分からなかったけど、結構適当でも大丈夫そう。大事なのは処理の順番。 変な空白とか入ってるとそれだけでエラーになるからそこだけ気をつけて、あとはトライ&エラーを繰り返すのみ。 ここのビルドはテンプレートのまんまで大体通ります。 Releaseしてみる こっからがCIへの第一歩。 デプロイを自動化していきます。 ここから先、GUIで操作するので操作に迷うことはほぼないと思うのですが、もし、作ったはずのリソースグループがドロップダウンに出てこない、サブスクリプションが表示されないとかの問題あれば、Service Connectionに原因があるかもしれません 公式ドキュメント 最初にRelease Pipelineを作成していきます。 Releaseのタブを選択し、Crateしたらまずステージングから設定していきます。 Deploy a node という選択肢があるのでこれを選んでみます。 左のArtifactも適当にBuildを選択し Create Releaseをしてみます。…

Azure Pipelineを使ってみた

今日は、Azure Pipelineに焦点を当てて記事を書いていきたいと思います。 まず、Azure Pipelinesが何かと言いますと公式ドキュメントにあるように Azure Pipelines is a cloud service that you can use to automatically build and test your code project and make it available to other users. It works with just about any language or project type. Azure Pipelines combines continuous integration (CI) and continuous delivery (CD) to constantly and consistently test and…

Docker で JupyterLab環境を構築してみた。

参考サイト Dockerfile, docker-compose.ymlの引用元 DockerでJupyterLabを構築する コンテナの外部からアクセスする方法 コンテナに外部からアクセス(ポートフォワード) はじめに JupyterLab環境をAzure上に用意して、どこからでもデータ分析できるようにしたら面白そうだなと思い、コンテナにJuyterLabを入れる検証を行いました。 コンテナ起動まで まず、Dockerfileとdocker-compose.ymlを用意します。

Dockerfile

DockerHubからjupyter/datascience-notebookをプルして、pipでJupyterlabを入れているだけ 次に、docker-compose.yml

フォルダマウントの参考サイト:Docker-docs-ja – Compose ファイル・リファレンス 80番ポートを開けておき、コンテナが起動した時に、jupyter labコマンドが入力されるように設定します。 これで全ての準備が整ったのでイメージを作成からコンテナ起動まで一気に行きます。

ここでコンソールに出てくるtokenというやつがJupyterLabにログインする時のパスワードになります。 127.0.0.1:80からアクセスできることが確認できました。 コンテナを止める時は以下のコマンドで

pyenv について

【GitHub】:Simple Python Version Management: pyenv はじめに pyenvはPythonのバージョン管理と切替を容易にするツールであり。UNIXの思想(single-purpose tools that do one thing well)にしたがって作られています。 How to use pyenvは高いレベルにおいて、Pathに実行可能ファイルを注入し、割り込みをします。これによって、複数のPythonバージョンの中から、アプリケーションに対して適切なバージョンのみを実行させることができます。 Understanding Path Pythonコマンドやpipコマンドを打つとOSがディレクトリ のリストを探索し、実行可能なファイル名を見つけます。このディレクトリ のリストのことを環境変数と呼びます。 ディレクトリ リストは、コロンによって分けられています。

上記の環境変数の場合は、左から順に探索されるため、/usr/local/binが探索結果になります。 Under standing Shims pyenvはPATH(環境変数)の前にShimディレクトリ を挟むことで動作します。

redhaningと呼ばれるプロセスを通して、pyenvはディレクトリ 内のShimsを維持することで、全てのバージョンごとにpython, pipコマンドなどが動作するようになっています。 Shimsは軽量で、以下のようなシンプルな行程で処理を行います。インストール後に、pipコマンドを入力すると、 実行可能なpipというファイルを環境変数の中から探します。 pipという名前のShimsを見つけます。 pipという名前のShimを実行します。 Choosing the Python Version Shimを実行した時に、pyenvはどのPythonバージョンを実行するのかを以下のソースから決定します。 PYENV_VERSION環境変数。pyenv shellコマンドで、現在のShellセッションに環境変数を設定することができます。 アプリケーションで特定のバージョンを使いたい時は、カレントディレクトリにある.python-versionをpyenv localコマンドで修正することができます。 ルートディレクトリ に行くまでの間に、最初に見つかった、.python-versionファイルが適用されます。 $(pyenv root)/versionグローバルな環境変数は、pyenv globalで修正することができます。pyenv globalはsystemを使うことを推奨しています。 NOTE…

pythonからC#で書いたプログラムを呼び出す環境を作成する

pythonnetが動く環境を構築 最終的にやりたいこと 【Qiita】Pythonから.NETを呼び出す方法とついでにその逆も まず pip install が上手くいかない C#でSeleniumを制御するプログラムを書いて、それをPythonで制御する環境を作りたいと思い、 【Git Hub】github.com/pythonnet/pythonnet をPCに導入しようとしたのですが、

というエラーから抜け出せなかったのでその時の備忘録。 Pythonのバーションを変えたり、足りていななさそうなパッケージを足したり色々試しても解決せず、最終的に完成したDocker imageをpullすることにしました。 Docker で解決 Docker のいいところは、環境に依存しないというところ。 ということで、Macに pythonnet を直入れするのではなく、pythonnetパッケージがDocker imageにJupyter notebookを入れる方向に方針転換。 イメージの作成からコンテナ起動まで 【Docker Hub】pythonnetが入っているDocker image python3系がいいので

でイメージをpullし

docker imageを確認し、コンテナを作成します。 RUNする時に、ブラウザからJupyter notebookを開きたいので、8001ポートを開けておきます。 Docker上でJupyter notebookを動かす コンテナが起動したら、

でコンテナの中に入ります。コンテナの中に入ってしまえば、あとはpipコマンドが使えるので楽勝

で jupyter を起動します。 Jupyter起動時にポートを開けて外からアクセスできるようにする必要があります。 8001番ポートが空いているので、このポートからアクセスすれば、Jupyterが使えるようになります。 「clr」がインポートできれば、PythonからC#のプログラムを読み込む準備ができました。 参考サイト 参考:dockerでjupyter notebookが動く環境を付け加える作業

Azure CLIとAzure PowerShell、どっち使う問題

4日間、Azureチュートリアルを迷走して、一番困ったのが、Azure CLIが何なのか分からなかったという点でした。 4日間、迷走した僕の結論としては、Azure PowerShellとAzure CLIのどちらを使うか迷っているということであれば、Azure CLI一択ということです。 その理由としては以下の通り。 チュートリアルのほとんどがAzure CLIコマンドで書かれている。 Azure CLI はBash向けに開発されているので、Bashが入ってさえいればどの環境でも同じコマンドで操作ができる。 コマンドがazから始まるので、ドキュメントを読んでいて、どのコマンドがAzure CLIなのかが分かりやすい。個人的にはコマンドを調べる時にも調べやすいと感じた。 最初、ローカルなBashとAzure上のBash(Azure CLI)の違いが分からず、ドキュメントを読む以前の問題だったた。この時に、Azure CLIさえ入れておけば大丈夫と知っていたら、作業を何時間短縮できたか… ということで、AzureコマンドラインはAzure CLI一択という結論に至りました。 Azure PowerShellは機能をモジュール単位で提供しているため、使いこなすのが大変そうという印象があったことも、Azure PowerShellを敬遠した一つの理由です。 それでは、良いAzureライフを!! Azure コマンド ライン インターフェイス (CLI)

Azure pipeline – Build anaimage –

Docker周りの知識がまだまだ甘々なので、「英語のドキュメントを読んでみたシリーズ」の第一弾はデプロイ編とします。 原文 読了までの所要時間: 4 分 Azure Pipelines Azure Pipelines can be used to build images for any repository containing a Dockerfile. Building of both Linux and Windows containers is possible based on the agent platform used for the build. AzurePipelinesはDockerfileを含んだリポジトリのビルドを行うために利用することができます。 LinuxやWindowsコンテナのビルドは、agent platformによってのみ可能となる。 Get the code Fork the following repository containing a sample application and a Dockerfile:…

Google for Jobのトップページを読んでみた

Google for Jobs: Everything you need to know to optimize for better ranking 今日は、求人情報を横断的に検索できるサービスである「Google for Job」の公式トップページを読んでいきます。 修飾詞な部分は訳さなくても、意味が取れるため、読みやすいようにカッコ付をしていきます。 This tool gives in-house SEOs an edge to rank organically with job ads (in a fiercely competitive recruiting market). このツールは、(競争の激しい人材紹介市場において)組織的なSEO対策を提供します。 Looking for a new job can be a stressful experience. Even taking away the emotional part of the…

Azure PowerShellを導入してみた。

業務にて、Docker ContainerをAzure上にデプロイする必要があったのですが、Azure Powershellの存在を知ったのが今日だったこともあり、時間内に作業が終わらせられませんでした。 今日やろうとした作業:「チュートリアル:Azure Container Registry タスクを使用して、クラウドでコンテナー イメージをビルドしてデプロイする」 Azure Cloud Shellが使えれば楽勝なんだろうけど、権限の問題で使えなかった。仕方なくAzure PowerShellでやる方法も模索するも上手くいかず… エンジニアであるからにはコマンドラインから、クラウドを華麗に扱えるようになりたいですね!! ということで、今日はAzure PowerShellのドキュメントを読んでいこうと思います。 まずは、コマンドでAzure Power Shellを入れていきます。Macユーザーはお馴染みのbrewコマンドで、WindowsユーザーはChocolateyを使いましょう。

インストールを確認します。記事を書いている時のバージョンは6.2.3でした。

モジュールをインストール。 cross-plattformを目指すために、必要な機能をモジュールで提供しているみたいです。詳しくはDocumentへGo

赤線部のURLをブラウザで叩き、赤線部のコードを打ち込んで、Azure PowerShell経由でAzure Portalにログインすることができました。 MacやLinuxをよりもWindowsのPowerShellに慣れているという方は、Azure CLIではなくて、Azure PowerShellを使うのもアリかもしれません。 参考:YES YOU CAN! USE POWERSHELL IN MACOS TO CONNECT TO MICROSOFT AZURE 公式:Install the Azure PowerShell module