投稿

5月, 2020の投稿を表示しています

VS Code+.Netでアプリを作る(No.12):VagrantでUbuntu20.04+MSQL8をインストール

イメージ
まず、Vagrantで20.04のVagrantfileを作成 共有ディレクトリdataも作成しておく。 $ vagrant init bento/ubuntu-20.04 $ mkdir ./data Vagrantfileが作成されるので少し編集。 $ diff Vagrantfile_old Vagrantfile_new 20c20 < # config.vm.box_check_update = false --- > config.vm.box_check_update = false 31c31 < # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" --- > config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 35c35 < # config.vm.network "private_network", ip: "192.168.33.10" --- > config.vm.network "private_network", ip: "192.168.33.10" 46c46 < # config.vm.synced_folder "../data", "/vagrant_data" --- > config.vm.synced_folder "./data", "/home/vagrant/data" 52c52 < # config.vm.provider "virtualbox" do |vb| --- > config.vm.provider "virtualbox" do |vb| 57,58c57,58 < # vb.memo...

VS Code+.Netでアプリを作る(No.11):MariaDBに接続するコンソールアプリ作成時にusing method 'mysql_native_password' failedで失敗

これ を参考にコンソールアプリでMySQLへ接続する。 一通り、mysqlへの接続環境は整えておく。 外部接続を許可する。 cat > /etc/mysql/conf.d/mysql.cnf << EOF [mysqld] bind-address = 0.0.0.0 ignore-db-dir = lost+found EOF ユーザー作成と、ユーザーからの内部、外部接続を許可しておく。 $ sudo mysql -u root -e 'CREATE DATABASE IF NOT EXISTS `homestead` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin;' $ sudo mysql -u root -e "CREATE USER IF NOT EXISTS devadmin@'localhost' IDENTIFIED BY 'Papy-1326';" $ sudo mysql -u root -e "CREATE USER IF NOT EXISTS devadmin@'192.168.%' IDENTIFIED BY 'Papy-1326';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON homestead.* TO devadmin@'localhost';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON homestead.* TO devadmin@'192.168.%';" $ sudo mysql -u root -e "GRANT ALL PRIVILEGES ON mysql.* TO devadmin@'192.168.%';" プロジェクトを生成し、MySQLのパッケージをインストールする。 $ dotnet new console –o mysqlefcore $ cd mysqlefcore $ d...

VS Code+.Netでアプリを作る(No.10):VertualBox環境でVS Codeを使う設定をする

イメージ
VS Code+.Netでアプリを作る(No.6):VMの準備 でVirtual Box+vagrantの環境はできている。 今度は、VS CodeをVirtual Box環境でリモート開発したい。 思ったより簡単だった。 $ vagrant ssh-config Host homestead HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/keisuke/vagrant/Homestead/.vagrant/machines/homestead/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL ForwardAgent yes ここでは、"Host homestead"と覚えておけばよい。 vscodeでリモート接続するConfigファイルを~/.ssh/configに書き込む。 $ vagrant ssh-config >> ~/.ssh/config 次にVS Codeを起動。 拡張機能で"Remote Development"をインストールする。 インストールしたら左下隅の青い><マークをクリックする。 ->センターに表示される"Remote-SSH:Connect to Host..."をクリック。 ->先程のホスト名をクリック。 すると、左下隅にホスト名が表示され接続されたことになる。 参考: VagrantでVScodeのRemote Developmentを使おう!

VS Code+.Netでアプリを作る(No.9):Microsoft.SqlServerをUbuntu20.04へインストールする

Ubuntu20.04LTSで Microsoft.SqlServerをインストールしようとした際、エラーが発生して前に進めなくなったので調査する。 $ dotnet add package Microsoft.SqlServer info : パッケージ 'Microsoft.SqlServer' の PackageReference をプロジェクト '/home/keisuke/dotnet/ContactBook/ContactBook.csproj' に追加しています。 info : /home/keisuke/dotnet/ContactBook/ContactBook.csproj のパッケージを復元しています... info :   GET https://api.nuget.org/v3-flatcontainer/microsoft.sqlserver/index.json info :   NotFound https://api.nuget.org/v3-flatcontainer/microsoft.sqlserver/index.json 657 ミリ秒 error: パッケージ Microsoft.SqlServer が見つかりません。ソース nuget.org には、この ID のパッケージが存在しません。 VS Code+.Netでアプリを作る(No.7):.Net Coreを使ってMySQL接続(インストール編) 参照。 使っているのはMySQLなのにasp-condegeneratorを使うためにSqlServerをインストールする必要があるなんて。。。 ということで、Ubuntu20.04LTSにSqlServerをインストールする。 1. パブリック リポジトリの GPG キーをインポートします。 $ wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - 2. SQL Server 2019 用の Microsoft SQL Server Ubuntu リポジトリを登録します。 $ sudo add-apt-repository "$(wget -q...

VS Code+.Netでアプリを作る(No.8):.Net Coreを使ってMySQL接続(実装編)

イメージ
ココ に沿って勉強します。 モデルを作成 ContactBook/Models/Contact.cs namespace ContactBook.Models { public class Contact { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } public string Phone { get; set; } public string Address { get; set; } } } DBコンテキストを作成 モデルとDBをつなぐDBコンテキストを作成します。 ContactBook/Models/ContactBookContext.cs using Microsoft.EntityFrameworkCore; namespace ContactBook.Models { public class ContactBookContext : DbContext { public ContactBookContext(DbContextOptions<ContactBookContext> options) : base(options) { } public DbSet<Contact> Contact { get; set; } } } ※DbContextはEntity Framework APIの重要なクラス。  Entity Framework(EF)では,DBへのデータの挿入,読み出し,更新,削除といった基本的な操作はDbContextを通じて行います。 DBコンテキストを登録 Startup.csにDBコンテキストを登録します。 MySQLの接続文字列はAppSettingsに設定しました。 ContactBook/Startup.cs using ContactBook.Models; using...

VS Code+.Netでアプリを作る(No.7):.Net Coreを使ってMySQL接続(インストール編)

ココ を参考に、ASP.NET Core MVC のスキャフォールディングを学ぶ。 ■ EntityFramwork、aspnet-codegeneratorをインストール $ dotnet tool install --global dotnet-ef 次のコマンドを使用してツールを呼び出せます。dotnet-ef ツール 'dotnet-ef' (バージョン '3.1.4') が正常にインストールされました。 $ dotnet tool install --global dotnet-aspnet-codegenerator 次のコマンドを使用してツールを呼び出せます。 $ dotnet-aspnet-codegenerator ツール 'dotnet-aspnet-codegenerator' (バージョン '3.1.3') が正常にインストールされました。 ※EF Coreツール(Entity Framework  Core Tool)   DB作成時のEntitiyモデルのテンプレートデザインを担当してくれる。 ※dotnet aspnet-codegenerator   「ASP.NET Core のスキャフォールディング エンジンを実行します。」と書いてあるので  ただのエンジン部分かな。 Refer to:  Entity Framework Core ツールのリファレンス - .NET CLI dotnet aspnet-codegenerator ■ MVCプロジェクト新規作成 ASP.NET Core MVCプロジェクトを作成する。 $ mkdir ContactBook $ cd ContactBook $ dotnet new mvc The template "ASP.NET Core Web App (Model-View-Controller)" was created successfully. This template contains technologies from parties other than Microsoft, see https://aka.ms/aspn...

VS Code+.Netでアプリを作る(No.6):VMの準備

.NetCoreを使ってDB接続してみたい。 まずは、VMを使ってGuestサーバを立ち上げる。 1.Virtual Box Install VirtualBoxのサイトを参考に、Debianへのインストールを行う。  /etc/apt/sources.listにリポジトリを追加。 $ sudo add-apt-repository "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" キーを追加。 $ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - $ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - To install VirtualBox, do $ sudo apt-get update $ sudo apt-get install virtualbox-6.1 参考 https://www.virtualbox.org/wiki/Linux_Downloads 2. Vagrant Instgall 単純にダウンロードしてインストールする。 VM環境構築 環境はこれを使った。 bento/ubuntu-20.04 homestead v9.5.1 homesteadのベースソースをダウンロードして初期化 $ vagrant init laravel/homestead $ git clone https://github.com/laravel/homestead.git ~/homestead $ bash init.sh これでHomestead.yamlができる。 vagrantを利用してsshアクセスするために必要。 Homestead.yamlのホスト、ゲスト間の共有フォルダはちゃんと設定しておこう。 $vim Homestead.yaml folders: - map...

VS Code+.Netでアプリを作る(No.5):ブレイクポイントを貼ってデバッグを行う

イメージ
デバッグの方法は2つ コンソールに出力する ブレイクポイントを貼って動きを確認する。 1. コンソールに出力する。 これは簡単。 名前空間:using System; Console.WriteLine("{0} - {1}", pet.Name, pet.Age); 2. ブレイクポイントを貼って動きを確認する。 launch.jsonにパラメータを追加 {     "version": "0.2.0",     "configurations": [         {                 "requireExactSource": false         },         {             "name": ".NET Core Attach",             "type": "coreclr",             "request": "attach",             "processId": "${command:pickProcess}"         }     ] } これで実行すると、以下のエラーが発生。。。。 ....最適化されており....デバッグ オプションの [マイ コードのみ] 設定が有効になっています。 解決策:最適化を無効化する。 $ dotnet run --no-restore で、実行すれば解決した。 参考: Microsoft .Net Document(Console.WriteLine メソッド) C# LINQ の使い方(Select, ...

VS Code+.Netでアプリを作る(No.4):WebAPIを作る

イメージ
WebAPIプロジェクトを作る。 このサイト に沿って作成していく。 Step 1 Check dotnet core .NetCoreのバージョン確認。2.0より上位である必要がある。 $ dotnet --version 3.1.300 Step 2 Creating a new web api project プロジェクトを作成する。 重要なのはnewの後のテンプレート選択。今回は"webapi"で。 種類を確認したければ、 $ dotnet new -h で参照できる。 $ dotnet new webapi -n TestWebAPI The template "ASP.NET Core Web API" was created successfully. Processing post-creation actions... Running 'dotnet restore' on TestWebAPI/TestWebAPI.csproj...   復元対象のプロジェクトを決定しています...   /home/keisuke/dotnet/TestWebAPI/TestWebAPI.csproj を復元しました (141 ms)。 Restore succeeded. Step 3 Open project with Visual Studio Code 既存のControllerは使わないそうだ。 Step 4 Create Models Folder 何か、ルートのファイルを選択(上図は、Startup.cs)し、new folderアイコンを選択し"Models"としてフォルダを作成する。 Step 5 Create Products class Models(Entity)を作る。 using System ; namespace Models { public class Products { public string Code { get ; set ;} public string ...

VS Code+.Netでアプリを作る(No.3):Windows.Formsを使ってアプリを作る

イメージ
やっと、プログラミングができる。 プロジェクトを見てみると、プロジェクトルートに以下2ファイルがある。 Program.cs msbox.csproj 参照コンポーネントは、msbox.csprojファイルに記述する必要がある。 ●msbox.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup>   <OutputType>Exe</OutputType>   <TargetFramework>net472</TargetFramework> </PropertyGroup> <ItemGroup>   <Reference Include="System.Windows.Forms"> </ItemGroup> </Project> ●Program.cs using System; using System.Windows.Forms; namespace msbox {     class Program     {         static void Main(string[] args)         {             Console.WriteLine("Hello World!");            MessageBox.Show("!! Hello World !!");         }     } } ここで疑問がある。 System.Windows.FormsからMessageBoxが連想できるのか? これはもう、 .Net Core APIのドキュメント を読んでSystem.Windows.Formsにどんなクラスがあるのか覚えるしかなさそうだ。 デ...

VS Code+.Netでアプリを作る(No.2): C# .Net Error: OmniSharp server load timed out.

$ dotnet new console --target-framework-override net472 -lang c# -o msbox でプロジェクトを作成し、VS Codeを使おうとすると、OUTPUTコンソールに .Net Error: OmniSharp server load timed out. というエラーが。。。 を見ると、 そもそもこのmonoとは、(参考: ココ ) 「.NET Framework」互換オープンソース開発プラットフォームであり、Monoライブラリーを適用している。 開発環境「Xamarin」の基盤 勉強になりました。 なので、monoをインストールする。 $ sudo apt install gnupg ca-certificates $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF $ echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list $ sudo apt update $ sudo apt install mono-devel vscodeを再起動すると、直ってる。 もうひとつ対策としては、 で、File->Preferences->Settings(CTRL-P+,)から"Edit in settings.json"をクリックして "omnisharp.useGlobalMono": "never" を追加すると、直るらしい。 単純に「 ココ を参考に真似してみよう」と思ったが、やはり世の中そう簡単にはいかないようです。 参考サイト: VSCodeで.NET Frameworkを利用する。-.NET Framework利用のための手続き Download Stab...

VS Code+.Net Coreでアプリを作る(No.1):環境作成

パッケージのインストール UbuntuでVS Codeを使って.Net Coreを勉強したい。 ひとまず、 このサイト を真似して自分の環境に合わせていこう。 インストールするパッケージは以下の通り。 .Net Core   C#   ■ .Net Core $ wget https://packages.microsoft.com/config/ubuntu/19.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb ■ C# VS Code上でCTRL-P でコマンドパレットを開く。 $ ext install ms-dotnettools.csharp を実行し、インストールする。 アプリ環境作成 VS CodeのTerminalより以下を実行 $ dotnet new console --target-framework-override net313 -lang c# -o msbox --target-framework-override net313 framework versionを指定する  ※Frameworkバージョン情報は こちら -lang c# 言語はC# -o msbox フォルダ名はmsbox コマンド 'dotnet' が見つかりません。次の方法でインストールできます: dotnetコマンドが動かない。 エラー発生、.Net Coreを以下の方法でインストールし直す。 $ 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 $ sudo apt update $ sudo apt-get install apt-transport-https $ sudo apt-get update $ sudo apt-get in...

Django Rest FrameworkのGET、POSTのコード例

Django Rest Framework の View での GET 、 POST の書き方をメモっておく。 1. GET 以下の2種類書いておく。 1-1.Model をそのまま Serialize して Response する 公式サイト そのままです。 @api_view(['GET','POST']) def snippet_list(request): if request.method== 'GET': snippets = Snippet.objects.all() serializer = SnippetSerializer(snippets, many=True) return Response(serializer.data) 1-2.request から直接パラメータを指定して値を取得する def get(self, request, format=None): if "rule" in request.GET: param_value = request.GET.get("rule") res_data = {'data': param_value} return Response(res_data,status=status.HTTP_200_OK) else: return Response({“Error”:”0”},status=status.HTTP_404_NOT_FOUND) 参考: Django Rest Framework Status Codes 日記 REST_API の使い方  ↑ curl を使った GET 、 POST リクエストが詳しく書いてある。参考になる。

Visual Studio CodeでVirtualenvを動かす

イメージ
Visual Studio CodeでVirtualenvを動かす。 1. Virtualenvのインストール   前回の記事 を参考。 2. env環境をプロジェクトのワークスペースに置く。 3. Ctrl + Shift + P でコマンドパレットを開く。 4. "python interpreter "を入力すると、以下の選択肢が出てくる。 5. 一番下に.env環境が表示されているので選択すると、設定完了。 6. Terminalを開くとvirtualenv環境になっていることが確認できる。 便利だ! 参考リンク: Visual Studio Code Download Using Python environments in VS Code

Ubuntu20.04LTSへDjango Rest Frameworkをインストールする

Django Rest Frameworkのインストール 環境:Ubuntu20.04LTS 基本はDjango Rest Frameworkの 公式サイト に沿ってインストールする。 pythonモジュールを追加するためにpipをインストールする。 $ sudo apt install python3-pip python, pipで実行できるようシンボリックリンクを作る。 $ ln -s /usr/bin/python3 /usr/bin/python $ ln -s /usr/bin/pip3 /usr/bin/pip 環境を汚染させないようVirtualenvを用意してその中でいろいろ試す。 $ pip install virtualenv venvで実行できるよう、シンボリックリンクを貼る。 $ ln -s ~/.local/bin/virtualenv ~/.local/bin/venv プロジェクト 直下でenv環境を作成する。 $ venv env 以下のコマンドで有効化。 $ source env/bin/activate  (<==>deactivate) 試しにアプリを作成するのは 公式サイト に沿えばいい。