AWS入門中
はじめに
AWSのアカウントを作成したので、チュートリアルを行いながら、忘れやすそうな事柄についてメモしておく。(リンクも張っておく)
鍵の保管場所
Windows
チュートリアルの推奨通り、
C:\user\{ユーザー名}\.ssh\MyKeyPair.pem
にキーペアを保存。.sshフォルダを作るには".ssh."とフォルダ名の最後にドットを追加すると先頭ドットが可能になる。
Mac
ダウンロードするキーペアを MyKeyPair.pem というファイル名で ~/.ssh ディレクトリに保存。ダウンロードしたら chmod 400 でRead権限を自分のみに変更する。
インスタンスへの接続(SSH)
Windows
Git for Windowsをデフォルト設定でインストールする。(Bashを使うため?既にインストールしてあった。)デスクトップ上右クリックメニューにGit Bash起動があるのでそれを使う。
ssh -i 'c:\Users\ユーザ名\.ssh\MyKeyPair.pem' ec2-user@{Instance's_public_IP_Addr}
pemファイルは上記のキー保管場所、ユーザ名は「ec2-user」でよい(最初、AWSのアカウント名かと思った)。インスタンスへの接続切断はexitで。(切るだけなのでshutdownではない)
Mac
Macの場合、ターミナルからデフォルトのSSHでアクセスする。
ssh -i ~/.ssh/MyKeyPair.pem ec2-user@{Instance's_public_IP_Addr}
他はWindowsの時と同様。
インスタンスの削除
EC2コンソールの Action > インスタンスの状態 > 削除 で。(リストにはterminated状態で残る。)
Python学習(書籍Fluent Pythonより)
ソースコード
写経したコードは以下のとおり。__init__に関しては特筆する必要はないでしょう。(自分には必要だけれど)
from math import hypot class Vector: def __init__(self, x=0, y=0): self.x = x self.y = y def __repr__(self): return 'Vector(%r, %r)' % (self.x, self.y) def __abs__(self): return hypot(self.x, self.y) def __bool__(self): return bool(abs(self)) def __add__(self, other): x = self.x + other.x y = self.y + other.y return Vector(x, y) def __mul__(self, scalar): return Vector(self.x * scalar, self.y * scalar) v1 = Vector(2, 4) v2 = Vector(2, 1) print(v1 + v2) # Vector(4, 5) v = Vector(3, 4) print(abs(v)) # 5.0 print(v * 3) # Vector(9, 12) print(abs(v * 3)) # 15.0
各メソッドの機能
__repr__
offcial string representationとある。ソースコードにもあるprintなどで表示される表現を規定する、ってことでいいんでしょうか。(__str__()は文字列型へのデータ変換?なのでこれとは別。)
__abs__
組み込み関数abs(object)で呼ばれた時の動作。
__bool__
truth value testingとあるので、if文の条件に使うのか。
math.hypot()
なんだこれ、ってことでリファレンス。
9.2. math — Mathematical functions — Python 3.7.0 documentation
Return the Euclidean normとあり、まんまsqrt(x*x + y*y)と書いてあるのでベクトルの長さですね。
リファレンス
上記の特殊関数を調べるのに参考にした。
3. Data model — Python 3.7.0 documentation
追記
このページも結構良さそう。
特殊メソッド名 - Dive Into Python 3 日本語版
メモ:Go langのインストール
インストール記録
Goをインストールしたので、その時の操作の記録。(Go Langのインストールページを見ればいいのだが、いちいち見に行くのが面倒なのと指示通りに設定したか確定できないため)
手順
ダウンロードしたmsiファイルを起動。デフォルトのc:\goにインストール。
インストーラがPATH環境変数をc:\Go\binに通してくれる、と書いているが、実際は%GOPATH%\binが設定され、GOPATH環境変数自体はc:\Users\my_account\goなので、新たにPATHにc:\Go\binを追加する。
インストール確認
%USERPROFILE%goに移動して(c:\Users\my_account\go)、src/helloディレクトリを作成&移動。サンプルのhello.goファイルを作成して、コマンドラインでhelloディレクトリから >go build & >hello で動作確認完了。
スクリプト実行(2018/9/4追記)
下記より
> go run filename でコンパイル(exe出力)せずに実行可能。
ユニティちゃんを歩かせる
はじめに
ユニティちゃんを(既存のPrefabでなく)前後に移動させることができたので記録として残します。
参考サイト:
準備(配置や設定)
適当にオブジェクトを(真似して)配置します。(配置の際にVキーでの頂点スナップというのも少し覚えました。)
配置したのはユニティちゃんのモデルだけなので、以前のように配置して即動かせるという訳でなく。
まずunitychanという名前でAnimator Controllerを作成し、それを予めunitychanモデルにAdd ComponentしておいたAnimatorのController欄に入力。
アニメーターunitychanの状態遷移を以下のように設定。
遷移条件のためのパラメータSpeedを設定。最初、パラメータの追加の仕方が分からず頭が?になりました。公式サイトのチュートリアル重要。
立ち、前進、後退のモーションにそれぞれユニティちゃんアセットのWaitと歩行前後をあてがって、(Foot IKもつけておきます)
状態遷移に条件(ここで前述したパラメータを使用。他に移動状態から立ち状態に戻る遷移もあります。)を設定し、Has Exit Timeのチェックを外します。外さないと状態遷移が即時発生しない?要勉強。
物理影響を与えるためRigidbodyを、地面を突き抜けないようCapsule Colliderをそれぞれアタッチ。
(Capsule Colliderの底の丸みのせいか、最初X,Z軸の回転を制約していなかった時、実行してしばらく経つとモデルがすっころがることに気付きました。)
スクリプト
ユニティちゃんの移動処理、およびAnimator ControllerのSpeedパラメータを操作するためのスクリプトをユニティちゃんにアタッチします。
Study for Unity that Charactor moving forward and ...
ありゃ。
(最初、移動方向は画面の左右X軸方向なので、Vector3.rightかと思ったのですがTransform.Translate()はrelativeTo変数がデフォルトだとモデル自身の軸になるので前後させるためにVector3.forwardに修正。)
Transform.Translate - Unity スクリプトリファレンス
完了
方向を修正して、前後に歩くようになりました。以上。
Numpyのrandom.choice()
はじめに
以下の本を進行中。4章に入って、後でも役に立ちそうな関数があったのでメモ。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
random.choice()
本の中で大量の訓練データの中から少数のデータをランダムに抽出して学習するミニバッチ学習が行われており、それで使うのがnumpy.random.choice()
numpy.random.choice — NumPy v1.15 Manual
ただ本の中だとreplace引数をFalseにしていないので、少ない確率でデータの重複が起こる可能性が残っている?
gist6e3645fdfde5fc430527ec0c5705ef8e
pパラメータとか
出現確率を制御できるみたいなので後で調べる。
勉強:ニューラルネットワーク:活性化関数
はじめに
下記の本を進めていく上で、メモとして。
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る
実装とグラフ出力
コードはこう。
gist1b625c7cd56ab79cd814d173deda40de
出力されるグラフ。
配列、リストをスペース(何かの文字列)区切りで出力する方法 in c#, python3
はじめに
よく問題を解いている paiza (競技プログラミング&就活サイト)で問題を解く際、配列やリストデータをスペース(または何某かの文字)区切りで出力することが多くあるので備忘録として書き残しておく。
C# や Pythonと複数の言語でやってみてどちらも Joinという名前の関数を使うと簡単だとわかり、以降、自分のググラビリティがあがったなあ、と思う。
C#
stringクラスのJoin関数で第一引数に区切り文字列、次に区切り対象の配列を当てればよい。
gist75b9b1467cd1e8b4d95173efe04e6b70
Python3
区切り文字列のjoinメソッドを呼び出して、引数に文字列のリスト(文字列でないとダメ)を当てる。数値のリストといった場合はmap関数でstr関数をマップするのが楽。