venvとゆかいな仲間たち

【仮想環境作成するための色々なコマンド】
・以前はpyvenvというコマンドで仮想環境を作成していたが、Python3.6以降ではDeprecatedになる予定である。
・virtualenvの機能はPython 3.3からvenvという名前で取り込まれている。
・pyenvは結構ヘビーユーザーでないと使うの辛そう。
・これによく似たのにAnacondaのcondaコマンドもある。

【所感】
venvかcondaを使いこなせたらとりあえずOKかな。

【参考リンク】
www.zopfco.de

P22 Microdata

HTML中に検索エンジンなどのロボットにも読みやすいメタデータを埋め込むための規格

https://html.spec.whatwg.org/multipage/microdata.html

P3 pythonの有名なライブラリ

・NumPy(数値計算)
・SciPy(科学技術計算)
・pandas(データ解析)
・matplotlib(グラフ表示)
・scikit-learn(機械学習)
・Requests(HTTP)
Django,Flask(Webアプリケーションフレームワーク)
・Beautiful Soup,lxml(スクレイピングライブラリ)
・Scrapy(クローリング・スクレイピングフレームワーク)

P3 クローリングとスクレイピング

・クローリング
 Webページのハイパーリンクをたどって次々にWebページをダウンロードする作業

スクレイピング
 ダウンロードしたWebページから必要な情報を抜き出す作業

P3 広義のREST

XML over HTTPやJSON over HTTPをREST APIと呼ぶ場合もありますが、RESTという言葉はもう少し厳密な定義が存在している。

本書ではこうした広義のRESTをRESTと呼ばないようにしている。

Web API: The Good Parts

Web API: The Good Parts

 

 

RDSのスナップショットからリストアする際の注意点

削除してからでないと作成できない

現在作成しているRDSに対して、リストアという事ができない。
そのため、事前に削除してから、再度リストアするしかない。
よって、設定値などが不明な場合は、予めメモなどを取ってから削除を行い、リストア作業を行った方がベター。

自動スナップショットは削除のタイミングで消えてしまう

RDSのインスタンス削除の際に警告は表示されるが、過去の自動バックアップで取得したスナップショットは削除される。
そのため、削除の際には基本的には手動バックアップ(final)を取得しておくのが無難である。

作成時はサブネットグループを確認する

サブネットとは別にRDSにはサブネットグループというサブネットを束ねる概念がある。
これは、各AZに対して、どのサブネットを割り当てるかを定めるもので、対象RDSインスタンスのマルチAZをoffにしても設定する必要がある。
リストアを選択しても、リストア前の設定値が当該項目は引き継がれずにデフォルト値が設定されている。
そのため、リストア時には前回と同じ値を設定できているか確認を行う必要がある。
また、RDSは異なるサブネットに移動できないため、割り当てるサブネットグループ自体は変更可能であるが、異なるサブネットを設定しているサブネットグループに変更しようとすると怒られてしまう。
よって、誤ったサブネットグループを選択してRDSインスタンスを立ててしまった場合は、一度削除を行い再作成しないといけない。。

(非マルチAZの場合)指定するアベイラビリティゾーンを確認する

マルチAZでない場合は、どちらのアベイラビリティゾーンを使うかでサブネットが異なる可能性があるため、設定するアベイラビリティゾーンは確認しておいた方がよい。

セキュリティグループを後で変更する

(私のやり方が悪いだけかもしれないが)リストアのタイミングではセキュリティグループを選択する事ができない。そのため、リストア後のセキュリティグループが想定と異なっているかどうかを確認し、異なるのであれば変更を行う必要がある。

変更時は即時チェックボックスを付け忘れないこと

一番下にあるチェックボックスを付け忘れてしまうと、メンテナンスタイミングまで変更内容が反映されない(多分)。
また、他の設定も変更を行う事ができない。
このような状態になってしまうと、一度インスタンスを削除して再作成するか、メンテナンスタイミングまで待つしかない(と思われる)。

curlコマンド経由でTomcatにデプロイを行おうとすると403エラー

[事象]
以下の様なコマンドをシェルで実行し、Webコンソール経由のTomcatマネージャーではなく、シェルスクリプトからTomcatに対してデプロイを行おうとした。

curl --upload-file contextName.war "http://manager:password@localhost:8080/manager/text/deploy?path=/contextName&update=true"

結果、以下の様な403エラーが発生した。

(中略)
Caused by:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:The username you provided is not allowed to use the text-based Tomcat Manager (error 403)

[原因]
実行ユーザーにmanager-guiの権限は与えていたが、manager-scriptの権限を設定していなかった。

[対応方法]
実行ユーザーにtextベースで実行する際のユーザー権限を付与する。

<tomcat-users>
 <user username="manager" password="password" roles="manager-gui, manager-script"/>
</tomcat-users>

[蛇足]
Jenkinsを導入している環境であったため、実はシェルを使わなくてもビルド後にTomcatへデプロイする処理をJenkinsに設定してやるだけで実は良かった…。

[参考URL]
martin.podval.eu
Rocky Jaiswal | Deploying Java applications with Capistrano

詳解 Tomcat

詳解 Tomcat

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

[改訂第3版]Jenkins実践入門 ――ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)