DegitalOceanでのVSCode

degitaloceanでVSCode使おうとしてはまったので備忘録。

最初のイメージとしては、ターミナルの中から起動するイメージだったのですがクライアントのVSCodeを起動してアクセスする方式にしました。
(この方式だとPUTTYのターミナルはあまり必要なくなりました。)
躓いたのは、公開鍵の持ち方です。
・普通のフォルダに鍵ファイルを置いて指定すると怒られる。
 (ユーザフォルダなどに置くと良い)
・PUTTYGenで作成した公開鍵をOpen形式に変換したファイルを指定する必要がある。
 (PUTTYGenに変換機能あり)
の2点です。
詳しくは後程追記します。

Ubuntuのmigrateで失敗する

Windows10の環境で作成した、ユーザ認証用のDjangoライブラリ(django-allauth)を使用したプロジェクトをDegitalOceanにデプロイする際にはまったので備忘録です。
まず、
>python manage.py makemigrations
を実行すると
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration account.0001_initial is applied before its dependency accounts.0001_initial on database ‘default’.
などのエラーが表示されます。
どうもallauthで作成されるモデルが作成されていないため、作成さていないテーブルへカスタマイズ用の定義を追加しようとしたため、順番が違うよと言われているようだったので、再実行すると基本のテーブルが作成されているにも関わらず、カスタマイズ用のテーブルが作成されなくなりました。
>python manage.py showmakemigrations
でスケジュールを見てみると

account
[X] 0001_initial
[X] 0002_email_max_length
admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
[X] 0010_alter_group_name_max_length
[X] 0011_update_proxy_permissions
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
sessions
[X] 0001_initial
sites
[X] 0001_initial
[X] 0002_alter_domain_unique
socialaccount
[X] 0001_initial
[X] 0002_token_max_lengths
[X] 0003_extra_data_default_dict
と表示され、カスタマイズテーブルは無視されています。
そこで個別にmigrateしようとおもい、

>python manage.py makemigrations xxxx
(xxxx はアプリ名)
を実行すると、今度は
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration socialaccount.0001_initial is applied before its dependency accounts.0001_initial on database ‘default’.
と怒られます。
仕方ないので、env/lib/python3.8/…/socialaccount/migrationsの下を__init__.py以外を削除して実行すると今度は
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration account.0001_initial is applied before its dependency accounts.0001_initial on database ‘default’.
と怒られたので、同様にaccount/migrationsの下も__init__.py以外を削除。
これでやっと
>python manage.py makemigration xxxx
が成功しました。
書いてみると単純そうだけど、試行錯誤してる最中はもう直接create tableしちゃおうかとも思ったけれど、migrateの恩恵にあずかると、楽したくなるなあと思う今日この頃です。


Djangoのチュートリアルにあるchoice_set

これはQuestionテーブルが外部参照しているChoiceテーブルのデータ、という意味のようです。
これは、はじめてこのチュートリアルを実行する人はなやむかもなあ。
まず、抽出して表示するのがなんでChoiseデータなの?
ってところからおかしくない?
Questionテーブルの内容を表示させるところじゃないかなあ???

ところで、またも勝手な備忘録
Djangoの新しいプロジェクトを作るコマンド
>django-admin startproject mysite
Djangoの新しいアプリを作るコマンド
>python manage.py startapp myapp

セールスフォース・ドットコム

クラウド型のシステム開発基盤としては、Azure、Googleクラウド、AWSといったところが主なものかと思っていましたが、セールスフォース・ドットコムという会社のFource.com、Herokuというのがあるんですね。
なんと、持続化給付金の申請サイトはこの会社が手掛けたそうですし、トヨタ自動車KDDIみずほフィナンシャルグループ三菱UFJフィナンシャル・グループ損害保険ジャパン日立グループジョンソン・エンド・ジョンソンファーストリテイリングローソン株式会社日本総合研究所小田急電鉄楽天など、規模・業種を問わず多数の企業がこの会社のクラウドコンピューティング・サービスを導入しているそうです。
2009年には環境省経済産業省総務省が所管するエコポイントのインターネット申請システムを経済産業省から打診を受けてからわずか3週間でシステム開発を完了・稼働させたそうで、この会社、2019年度版日本の「働きがいのある会社」ランキング1位に選出されているそうで、クラウド=AWSと思っていましたが、Herokuもありかな?
Herokuはサーバーがアメリカにあるのでアクセスが難ありと聞いていましたが…

AWSで.Net CLiサンプル動かず?

AWSの.NetCoreのサンプルのコンソールアプリを動かしてみました。
結果、bash: line 1: hello/obj/project.assets.json: No such file or directory
と怒られました。
確かにobjフォルダの下にDebugフォルダも、exeもdllもできていません。
で、色々とネットで調べてみるとどうやらAWSで動かすために必要なファイルがサンプルのインストール手順だと不足していたようです。
コマンドプロンプトから
>dotnet restore
を実行したら、正常に実行されました。

Django3おすすめ本(+Kindleで検索できない)

kindleを以前購入したんですが、文字検索でちっとも目的の本が検索できないと思っていたら、問い合わせしようと思ってWi-Fiに繋げたら検索できました。
あほすぎて笑ってしまった。
ところで、↑のようなことやってる人が言うのもなんですが、Djangoやるなら、山田祥寛著「速習Django3 速習シリーズ」「現場で使えるDjango の教科書(基礎編)」横瀬明仁著は目を通した方が良いと思います。(山田祥寛さんすみません、余りにも差がありすぎですw)
MTV=MVCてのがわかっただけでも、ほかのフレームワークやってる人からすればもやもやがなくなるのではないでしょうか?
Prime会員だと無料で読めます。

Zoom

Qiita会議に参加しようかな?
ということで、Zoom入れてみました。
公式サイトはここです。
facebookアカウントでログイン

右上のリソースをクリックして表示された選択リストから “Zoomクライアントをダウンロード” を選択(画像だと弄ってたら選択リストが英語になったのでRESOURCE)

ミーティング用Zoomクライアントの “ダウンロード” ボタンをクリック
ダウンロードしたインストーラを実行

ミーティングに参加

AWS Summit Online 開催のお知らせ

クラウドの最新技術を “実際に手を動かして楽しみながら学ぶ” 23日間
開催期間 2020 年 9 月 8 日 (火) ~ 9 月 30 日 (水)  
◎詳細:
http://rd.itmedia.jp/33DW

これはちょっと参加してみたい!

話は違いますが、知り合いがアマゾンを騙ったメールにうっかり返信してしまったそうですが、アマゾンに問い合わせたところ、とても親切に対応して頂けたそうです。
勢いのある企業は、働き手も違う?

 

 

Cloud9とDjangoとWebサーバー起動と

Cloud9でPythonベースのWebシステムを構築する場合に使用するWebフレームワークですが、DjangoとFlaskが主なフレームワークのようです。
どちらを採用しようかググった結果、日本語環境が比較的整備されているDjangoにしようと思います。(;’∀’)
cloud9のコンソール画面でPythonのバージョンを確認します。

3.6.10ですね。2.x.系の方は3.x.系にアップグレードしてください。
Djangoの特徴としてプロジェクトごとに仮想環境を作成していくことが一般的な開発手順のようです。
次のコマンドで仮想環境を構築します。

コマンドの先頭に(venv)が表示されている場合、仮想環境に居るようです。
ではインストールしてみましょう。

pipが古いよって警告が出ていますが、Djangoは無事インストールされたようです。

Cloud9には既にMySqlがインストール済のようです。

起動/停止してみます。

はじめての起動時はパスワードなしで起動してください。

文字コードを確認します。

character_set_databasecharacter_set_serverlatin1ですね。
このままだと日本語を書き込もうとしたときにエラーで落ちるので、/etc/my.cnfに設定を追加します。
character-set-server=utf8mb4

mysqlを再起動します

再度キャラクタセットを確認します。

Django用のユーザーとDBを作成します。

権限を付与します。

以上でmysql側の設定は終了です。

ちょっと横道にそれちゃいますが、
仮想環境は複数の開発を行う場合、それぞれのプロジェクトによって必要となってくるライブラリなどが異なってくるため、環境の競合がが発生しないためにプロジェクトごとに仮想環境を作って管理していこうというものですが、Pythonの標準ツールとしてvenvがあります。
venv以外にもvirtualenvなどのサードパーティ製のツールを使用しても仮想環境を作成することは可能です。ちなみに、venvで作成した仮想環境から抜けるには、
>deactivate
を実行します。

では、Djangoのサンプルを起動するところまで頑張ってみたいと思います。

任意のフォルダを作成し、gitからDjangoのサンプルアプリを取得します。

仮想環境を起動します。

サンプルの起動準備をします。

マイグレーションでサンプルアプリのデータベースを作成します。

サーバーを起動します。

ただし、アプリサーバは起動していますが、まだAWSのファイアーウォールとdjangoのホスト制限のせいで外部からアクセスできません。
これからその設定をしていきます。

Cloud9のメニューバーから’Go To Your Dashboard’を選択します。

サービスをクリックし表示画面から、’EC2’を選択します。

EC2のダッシュボードが表示されるので、「実行中のインスタンス」をクリックします。

EC2インスタンスの一覧が表示され、1つしかない場合、選択状態になっています。
画面下部にはその詳細が表示されていますが、そのうち「パブリック DNS (IPv4)」の欄に表示されているのが、URLの中央部(ホスト)になります。
この前に”http://”を、後に”:8000″をつけてアクセスしてください。

次に、セキュリティグループの欄をクリックします。

インバウンドルールを設定するダイアログが表示されるので、「ルールの追加」をクリックし、TCPカスタムを選択し、ポートの欄に8000を入力します。最後に、追加をクリックします。これで、ファイアーウォールの設定画変更され、8000番ポートのアクセスが許可されます。

上記の、「パブリック DNS (IPv4)」の欄に表示されている内容に、前に”http://”を、後に”:8000″をつけてアクセスしてください。

この時点で、Djangoのアプリにアクセスすることができます。
ただし、ホスト制限に引っかかり、下記のようなエラーが表示されます。

DjangoのALLOWED_HOSTSを設定する

まず、開きっぱなしのCloud9のIDEで、アプリケーションのディレクトリにあるconfig/settings.pyを開きます。
その中ほどまでスクロールし、ALLOWED_HOSTSというリストに、先程の「パブリック DNS (IPv4)」の欄に表示されている内容を追加します。
もう一度、:8000で終わるURLにアクセスして下さい。

サンプルアプリが起動しました。

次回は、このサンプルのDBをSQLiteからMySqlに変更したいと思います。

Gitのリモートリポジトリの移動

リモートリポジトリの移動は色々とあるようですが、簡単そうな方法で。
移動先のフォルダを初期化します。

ローカル側に一度リモートリポジトリのクローンを作成し、カレントフォルダをクローン作成先に変更します。

初期化した新しいリモートリポジトリへPushします。

以上です。

動的に読み込んだJavaScriptのソースがデバッグで表示されない

これはそう言われればなんとなく理解できるのですが、最初なんでPF12押しててソースでないんだ???
しゃーないconsole.logでだすか・・・
なんて思ってましたが、debugger;っていれるとデバッグモードであればそこで止まってくれます。
単純に止めたい行の前にdebugger;って入れてください。
そこでブレークします。
本番モードだとブレークしません。
IEでも、chromeでも大丈夫でした。
chromeだとその後ブレーク設定するとそこでブレークしました。
IEだとスルーするような?

AWS Lambda

AWS Lambdaとはなんでしょう?
Amazonの説明によると”AWS Lambda はサーバーをプロビジョニングしたり管理する必要なくコードを実行できるコンピューティングサービスです。 “ということですが、どうやらアプリだけ用意すればそのほかのリソース云々は気にせず、使用量に応じた料金だけお支払いいただければよろしいですよ!ということのようです。
(かなり大雑把な説明ですみません。)
これは、ベンダーはサーバーを持たずに開発だけすればよく、ユーザーもサーバーを維持&メンテナンスする必要がなく、開発費用とアプリの使用頻度に応じて決められた料金を負担すれば良いことになります。(この使用頻度に応じた料金もかなり安価だと思いますし、使用していない時間帯は費用が発生しません。)しかも、無料利用枠があり、1 か月ごとに 100 万件の無料リクエスト、および 40 万 GB-秒のコンピューティング時間が、それぞれ含まれます。
これは小さな会社にとっては、アイデア次第で大化けできる可能性を秘めたツールと言えそうです。

AWS SDK for Python

AWS SDK for Python(別称:BOTO3)を構築してみます。
前提条件は、IAMアカウントの取得、AWS CLIがインストール済であることです。
ここを参照して、構築します。
Windowsなので、コマンドプロンプトから、
>py -m pip install boto3

BOTO3とは、Pythonを介してAWSを操作するためのライブラリです。

まずは、サンプルアプリケーションを実行してみます。
このチュートリアルに従って実行します。
画面下方にある”モジュール1を開始する”ボタンをクリックします。

AWSコンソール画面から、cloud9を選択し、”Create environment”ボタンをクリック

続いて、環境名とその説明を記入して、”Next step”ボタンをクリック

構築環境は今回デフォルトのままで、”Next step”をクリック

“Create environment”ボタンをクリック

IDEが作成されると、次のようなウェルカム画面が表示されます。

ここでチュートリアルだといきなりgithubからソースをもってきて実行しろとなってますが、ちょっといきなりなので、ここではお決まりの文言をコンソールに表示するだけにしておきます。

赤まるの中のステータスを入力して保存(File → Save)します。
右上のRunをクリックして実行します。

コンソール画面が表示され、処理結果が出力されます。

以上です。

ネットで調べていると、Cloud9のPythonのデフォルトが2系になってるとか出ていますが、私がやった限りでは、デフォルトは3系になっていました。
もしうまくいかなければ、↓が必要かもしれません。

sudo yum -y update && sudo yum -y install python36

蛇足ですが、保存した環境を再度開くのは、ハンバーガーメニューからです。

カテゴリー AWS

MacへのLibreOfficeのインストール

ここからダウンロードしてインストールして下さい。
同意して無料ダウンロードを開始をクリックします。
許可をクリック
ダウンロードしたdmgファイルをクリックします。
展開したファイルをアプリケーションフォルダへ移動します。
以上でJavaのインストールは終了です。
ここからダウンロードします。
下のLibreOffice 6.3.6のダウンロードボタンをクリックします。
ダウンロードしたファイルをクリックします。
しばらくすると上図の画面が表示されるため、指示にしたがって、LibreOfficeをアプリケーションフォルダに移動します。
LaunchPadからLibreOfficeを起動してみます。
続いて、日本語化を行います。
先ほどの画面の”・翻訳されたユーザーインタフェース:日本語(Torrent,情報)”をクリックすると、日本語化のパッチプログラムがダウンロードできます。
ダウンロードしたファイルをダブルクリックします。
左上のLibreOffice Language Packをダブルクリックします。
開くをクリック
インストールをクリックし、インストールを開始します。
インストールが完了しましたので、LibreOfficeを起動してみます。
※日本語化を確認するためには、一度LibreOfficeを完全終了させる必要があります。
無事表示されました。
以上でLibreOfficeのインストールは終了です。
これで、やっと息子から頼まれた有給管理表を作成できます。

MAC ショートカットキー

久しぶりにMAC miniさわったら、基本のショートカットキー忘れてるし😞

・かな漢字変換
 Control + Spaceキー
 ※今回キーボードにANKER繋げたら@が打てず、システム環境設定→キーボード
  で、日本語キーボードを追加してもなんも変化なし。
  ググったら、スクロールした一番下にある変換学習のリセットボタンをクリック
  したらうまくいくかもってことで、リセットしたら正常に表示されました。

・スクショ
 Shift + Command + 3(or4)キー
 (3は全体、4は部分選択)
 Shift + Command + Control + 3(or 4)キーだとクリップボードにコピー

・LINEの送信
 これは設定で変えられるんだけれど、メニューバーのLINE→設定→トーク
 で今はCommand + Enter

完全に自分のためだけになってる💦

AWS CLI

AWSのコマンドラインインタフェースである、CLIをインストールします。
ここでは、Windows64bit版をインストールします。
ダウンロードサイトでダウンロードし、実行します。

カテゴリー AWS

Visual StudioとGit

Visual StudioでGitを使用するのは比較的簡単です。
ただし、リモートリポジトリを例えば社内サーバーに置きたい(githubでもPrivateにすればセキュリティ上問題ないと思われますが)場合など少し面倒です。
TortoiseGitを使えば簡単ですが、今回はGitだけという縛りがある場合です。

まず、リモートリポジトリを社内サーバーへ作成します。
(ここでは、クライアントから、ファイルサーバーへアクセスしています)
対象のフォルダでgit bushを起動します。
起動したgit bushの中で
>git init –bare –share
(’-‘はどちらも2つ続けます。↑だと1つに見えますね。)
と打鍵しenter
オプションの–bareは中身のないリポジトリであること指定して、–shareはリポジトリを複数のユーザによって共有可能なものにしています。

※ここでの//NAS26A52D~がこのリモートリポジトリのURLになりますのでメモっておきます。


サーバー側はこれだけです。

続いてクライアント側です。
管理したいソースが格納されているローカルフォルダでgit bushを実行します。

>git init
と打鍵し、enter
続いて、リモートリポジトリoriginいう名前で追加します。
>git remote add origin リモートリポジトリのURL
(余談ですが、リモートリポジトリはURLでなくても指定できるようですが、\\NAS26A52D\ark_pub\Gitではだめでした。)

画像に alt 属性が指定されていません。ファイル名: image-43.png


リモートリポジトリの追加を確認します。
>git remote -v

これだけだとVisual StudioでPushできないので、アップストリームを設定しPushします。
>git push –set-upstream origin master
(originはリモートリポジトリ、masterはローカルリポジトリ)

以上です。
これで共有できましたので、共有先ではgit cloneでリモートリポジトリを取得します。
空のフォルダでgit bushを実行し
git init
続けて、
git clone リモートリポジトリのURL
を実行すれば、リモートリポジトリからソース一式が取得できます。

カテゴリー Git

AWSのMFA認証設定とIAMユーザー作成

AWSでの2段階認証を行うための設定についての備忘録です。

まず、アカウントを作成した後、MFA(Multi-Factor Authentication)の設定を行います。
MFAはユーザー名とパスワードによる認証に加えて、2要素認証を行う仕組みです。
この設定は、悪意を持った第三者からの不正ログインを防ぐことなどが目的です。
MFAには仮想MFAデバイスとハードウェアMFAデバイスの2種類があり、仮想MFAデバイスはスマートフォンなど(PC用ソフトもあるらしい)にインストールし、使用します。
ハードウェアMFAデバイスはGemalto社製の物理デバイスを購入して利用します。
私は仮想MFAデバイスとして、iPhoneにGoogle Authenticatorをインストールしました。

AWSマネジメントコンソールへログイン
AWSマネジメントコンソールへログインしたら、メニューバーのアカウント名をクリックしてマイセキュリティ資格情報を選択します。

つづいて、表示された画面から “多要素認証” を選択し、”MFAの有効化” ボタンをクリックします。


MFAデバイスの管理ダイアログが表示されますので、仮想MFAデバイスを選択し、”続行”ボタンをクリックします。

仮想MFAデバイスを起動して、認証コード1、2を設定します。”MFAの割り当て”を選択し、正常設定されたことを確認します。

これで設定は完了しましたので、一度サインアウトして、再度サインインして問題がないかを確認します。
サインイン時には仮想MFAデバイス(私の場合iPhoneのAuthenticator)を起動してパスワードログインした後、要求されるMFAコードに、Autenticatorで表示されるコードを入力します。

IAMユーザ-の作成
続いてIAMユーザ-(ユーザーアカウント)の作成を行います。
実際のAWSの操作ではAWSアカウントは使用しません。
AWSアカウントはUNIXなどのrootアカウント的な位置づけでしょうか、通常の操作はこれから設定する、IAMアカウントを使用します。

AWSマネジメントコンソールでサインインします。

表示された画面のメニューバーの”サービス”をクリック後、”IAM”をクリックします。
続いて、ダッシュボードでユーザーを選択し、”ユーザー追加” ボタンをクリックします。
必要事項を入力後、”次のステップ:アクセス権限”をクリックします。

ユーザーをグループに追加を選択し、”グループ作成” ボタンをクリックします。
グループ名を入力し”グループの作成”ボタンをクリックします。

作成したグループを再度選択し、ユーザーを作成します。

続いて、タグを作成します。
タグは、例えば一時的にあるプロジェクトを立ち上げた場合などにその担当者だけで管理したい場合などを想定して作成するものだと思っています。
これはまだ確証があるものではないので、確認が取れ次第ご報告しますということで、許してください。

必要事項を入力して、”次ステップ:確認”をクリックします。
内容を確認して、”ユーザー作成”ボタンをクリックします。
アクセスキーID、シークレットアクセスキーは後々必要となってくるものですので、csvダウンロードするなどして大切に保管し、他人には公開しないようにしてください。
続いて、アクセス権限のポリシーを追加します。
ポリシーにはAWS管理ポリシーとカスタマー管理ポリシーがあります。
AWS管理ポリシーは非常に便利な機能ですが、AWSが自動で更新するため、アカウントの厳密な管理という意味では難があります。
そこで、カスタマー管理ポリシーを利用します。
IAMのダッシュボードから、ポリシーを選択後、”ポリシーの作成”ボタンをクリックします。
カスタマー管理ポリシーですが、既存のAWS管理ポリシーをコピーすることができます。
ここでは、AWS管理ポリシーの”AdoministratorAccess”をコピーします。
“AdministratorAccess”を選択し、”インポート”をクリックします。
複写されたことを確認します。”ポリシーの確認”ボタンをクリックします。
ポリシーの名前と説明を入力し、”ポリシーの作成”ボタンをクリックします。
うまく作成されたようです。ポリシー一覧の2行目に表示されています。
続いて、作成したポリシーをIAMグループに付与したいと思います。
IAMダッシュボードから、グループを選択し、一覧のグループ名から該当するグループ名を選択します。
表示された画面でアクセス許可タグを選択し、”ポリシーのアタッチ”をクリックします。
先ほど作成したカスタマー管理ポリシーを選択し、”ポリシーのアタッチ”をクリックします。
IAMグループにポリシーが付与されたようです。
IAMダッシュボードでユーザーを選択し、一覧から該当ユーザー名をクリックします。
ポリシーが設定されていることを確認します。
ダッシュボードを開くと、IAMパスワードポリシーの適用だけがチェックされていません。
IAMパスワードポリシーの適用を選択し、”パスワードポリシーの管理”ボタンをクリックします。
ダッシュボードでアカウント設定を選択し、”パスワードポリシーを設定する”ボタンをクリックします。
パスワードポリシーを設定し、”変更の保存”ボタンをクリックします。
パスワードポリシーが更新されたことを確認します。
ダッシュボードの項目がすべてチェックされています。
注意が必要なのは、この一連の作業では、IAMアカウントにはMFAは設定されていません。
MFAを設定する場合はAWSアカウントと同様の設定を行う必要があります。
これでやっとAWSの準備作業が終わった???
カテゴリー AWS