「動かして学ぶ!Pythonサーバレスアプリ開発入門」に関する若干のメモ

この本。Flaskとaws lambdaあたりでサーバレスアプリケーションを作る方法。KDP的な感じが少し残る書き振り。一応これで最後まで辿りつくので悪くはないがいくつか難点。

指摘が既にあるがFlask 2系に対応していない。

M1 macユーザがJavaをインストールするときに素直にARM対応版を入れるとその後のコマンドがこける。x86版を入れてやる必要がある。

インデントが2文字で分かりにくく、Model周りのコード例が横幅の制約と改ページの自由度の影響で少し考えることになる。インデントの数を別の方法で示した方が良さそう。

括弧の多い条文を読むための小道具

以下はPythonのコードです。前から数分で書いて見直してないから雑なのは気にしちゃダメ。

targetの部分を読みたい条文に変更して

https://repl.it/languages/python3

に貼り付けてRunすればなんとなく読みやすくなるような気がするかも知れません。

target = "内閣総理大臣は、公益又は投資者保護のため必要かつ適当であると認めるときは、金融商品取引所、その子会社、その商品取引参加者(第百十二条第二項又は第百十三条第二項の規定により取引資格を与えられた者をいう。以下同じ。)、当該金融商品取引所に上場されている有価証券の発行者又は当該金融商品取引所から業務の委託を受けた者(その者から委託(二以上の段階にわたる委託を含む。)を受けた者を含む。以下この条において同じ。)に対し当該金融商品取引所、当該子会社若しくは当該商品取引参加者の業務(当該商品取引参加者にあつては、その行う商品関連市場デリバティブ取引に関するものに限る。)若しくは財産に関し参考となるべき報告若しくは資料の提出を命じ、又は当該職員に当該金融商品取引所、当該子会社、当該商品取引参加者若しくは当該金融商品取引所から業務の委託を受けた者の業務(当該商品取引参加者にあつては、その行う商品関連市場デリバティブ取引に関するものに限る。)若しくは財産の状況若しくは帳簿書類その他の物件の検査(当該子会社又は当該金融商品取引所から業務の委託を受けた者にあつては、当該金融商品取引所の業務又は財産に関し必要な検査に限る。)をさせることができる。"

target_list = list(target)
depth = 0

for listpoint in target_list:
  for n in listpoint:
    if n == "(":
      print("\n" , "  "*depth, end="")
      depth = depth + 1
      print(n)
      print("  "*depth, end="")
    elif n == ")":
      print("\n", end="") 
      print("  "*depth,n)
      depth = depth - 1
      print("  "*depth, end="")
    else:
      print (n,end="")

こんな感じだったのが,

内閣総理大臣は、公益又は投資者保護のため必要かつ適当であると認めるときは、金融商品取引所、その子会社、その商品取引参加者(第百十二条第二項又は第百十三条第二項の規定により取引資格を与えられた者をいう。以下同じ。)、当該金融商品取引所に上場されている有価証券の発行者又は当該金融商品取引所から業務の委託を受けた者(その者から委託(二以上の段階にわたる委託を含む。)を受けた者を含む。以下この条において同じ。)に対し当該金融商品取引所、当該子会社若しくは当該商品取引参加者の業務(当該商品取引参加者にあつては、その行う商品関連市場デリバティブ取引に関するものに限る。)若しくは財産に関し参考となるべき報告若しくは資料の提出を命じ、又は当該職員に当該金融商品取引所、当該子会社、当該商品取引参加者若しくは当該金融商品取引所から業務の委託を受けた者の業務(当該商品取引参加者にあつては、その行う商品関連市場デリバティブ取引に関するものに限る。)若しくは財産の状況若しくは帳簿書類その他の物件の検査(当該子会社又は当該金融商品取引所から業務の委託を受けた者にあつては、当該金融商品取引所の業務又は財産に関し必要な検査に限る。)をさせることができる。

こんな感じになります。


 
  
   

 
  
   
    
     
  
   

 
  
   

 
  
   
簿
 
  
   

グループウェア「アイポ」をGMOクラウドPublicにインストールする手順

GMOクラウドPublicの申し込みから起動まで約30分。
基本プランはZ10

# wget http://aipo.googlecode.com/files/aipo6010ja_linux.tar.gz

wgetに13分かかった。さくらの4〜5倍・・・。
(初期設定でターミナルポートの速度が1Mbpsなのでこれを10Mbpsにすると2分くらいでwgetできる。)

# tar zxvf aipo5020ja_linux.tar.gz
# cd aipo5020ja_linux
# tar zxvf aipo5020.tar.gz
# mv aipo /usr/local/

# yum install gcc

依存関係のtestにまた数分またされる。

# yum install zlib-devel readline-devel
# yum install nmap
# cd /usr/local/aipo/bin
# sh installer.sh
以上でインストール完了
# sh startup.sh
で起動して
http://(ipあどれす)/aipo/portal
にアクセスすればOK

インストールまではさくらのVPSの数倍の時間を要したが,
起動後のレイテンシは同程度。

さて,どちらを残して,どちらを使うかが思案のしどころ。

グループウェア「アイポ」を「さくらのVPS」にインストールする手順

さくらのVPSを申し込む。
ipアドレスとrootのパスワードがメールで送られてくるので,
その情報を使用してsshログイン

以下,コマンド
# wget http://aipo.googlecode.com/files/aipo6010ja_linux.tar.gz
# cd /root
# tar zxvf aipo5020ja_linux.tar.gz
# cd aipo5020ja_linux
# tar zxvf aipo5020.tar.gz
# mv aipo /usr/local/
# yum install zlib-devel readline-devel
# yum install nmap
# cd /usr/local/aipo/bin
# sh installer.sh

以上でインストール完了

# sh startup.sh
で起動して
http://(ipあどれす)/aipo/portal
にアクセスすればOK

さくらのVPSでDjangoを使えるようにする

Djangoを使えるようにするまでの設定メモです。

申込→30分でメールが来る→teratermを使いrootでパスワードログイン。

鍵認証を設定

~/.ssh ディレクトリへ移動し,以下のコマンド
ssh-keygen -t rsa
Enter キー→パスフレーズ入力→パスフレーズ再入力
これで,公開鍵 (id_rsa.pub) と秘密鍵 (id_rsa) が作成される。
公開鍵(id_rsa.pub)を
cat id_rsa.pub >> authorized_keys
で認証鍵として追加。
viで秘密鍵を表示させてコピペしてローカルに保存。これを使って認証する。
vi /etc/ssh/sshd_config
で,
PasswordAuthentication no
UsePAM no

iptablesを設定
http://sakura.off-soft.net/blog/sakuravps.html

fastestmirrorをインストール
yum -y install yum-fastestmirror
当初からインストールされるようになったっぽい。2011/03/09

インストールされているパッケージをまとめてアップデート
yum -y update

yup-updatesの代わりにyum-cronを入れる。
yum -y install yum-cron

rootのメールアドレスを設定
http://blog.mobf.net/archives/147

不要なサービスを停止
http://blog.mobf.net/archives/147

Apacheのインストール
http://sakuratan.biz/archives/2492

Pythonのインストール
yum install python*

PHPのインストール
yum install php*

mysqlのインストール
yum install mysql

でもって,mysqlを起動

mod_pythonのインストール
yum -y install mod_python

easy_install mysql-python

/home/ユーザ名/tmpにDjangoを落とす。
wget http://www.djangoproject.com/download/1.2.3/tarball/

落としたファイルを解凍
tar zxvf (ファイル名)

ここまでやったところで眠くなったので,今夜は終了。

2010/10/04 続き

Djangoをinstall
 $ cd Django-1.1.2
 $ sudo python setup.py install

Djangoを起動
$ django-admin.py startproject testproject
$ cd testproject
$ python manage.py runserver IPアドレス:ポート

と,まあ,ここまでで動く。