鎌倉 Python もくもく会 #3 に参加

Posted on Sat 23 February 2019 in misc • Tagged with python

鎌倉 Python もくもく会 #3 に参加しました。

雑なコードになってしまいました。サーバが持っている変数を PUT メソッドで更新するということを試しました。

サーバが持っている変数 status を、クライアントが読み取って、on と off を書き換えるようサーバにリクエストするプログラムです。サーバ側では変数の値をレスポンスボディに入れて返すようにしました。クライアント側では、レスポンスのステータスコードとボディを print するようにしました。

サーバのコードです。

#!/usr/bin/python3

from bottle import run, get, post, put, delete


@get('/status')
def read_status():
    return status


@put('/status/<status_url>')
def update_status(status_url):
    global status
    status = status_url …

Continue reading

ネット越しの L チカを描いてみる

Posted on Fri 22 February 2019 in misc • Tagged with python, raspberry pi, http

Raspberry Pi に Web API をつくって Ethernet 越しに L チカをさせて見たいと思います。なんとなく絵を描いてみます。

  • Raspberry Pi に LED を点灯・消灯させるプログラムを配置
  • Raspberry PI に LED を点灯させる Web API と消灯させる Web API を配置
  • PC に Web API を叩く HTTP クライアントを配置

ざっとこんな感じのものをつくる必要があるでしょうか。Raspberry Pi に L チカのプログラムを置くのではなく、点灯させる API と 消灯させる API を置きます。サーバ側もクライアント側も Python で書きます …


Continue reading

Python の Requests を読む

Posted on Thu 21 February 2019 in misc • Tagged with python, http

Raspberry Pi を使って Web API 越しにコミュニケーションさせたいと考えています。 操作する側の HTTP クライアントをどうやってつくるか調べてみました。標準ライブラリの urllib や http も調べて見たのですが、 Requests を使ったほうが良いようなことが書いてあったので、Requests を読んでみました。 ドキュメントではなくコードの方を。

コードを読むとは言っても、docstring からドキュメントを生成していたりするわけです。コードの中にドキュメントが書いてあります。それでもコードを読む習慣は身につけやすいでしょうから、それはそれで良しとします。

Requests と、前に使ったことのあるライブラリいくつかのコードを見てみましたが、 __init__.py を見て __main__.py があったら見るくらいで、とりあえず使ってみるくらいはできそうな感じです。

標準ライブラリは C だろうと思っていたのですが、そうでもなく Python です。教材には困らなそうです。


Continue reading

Udemy で Python 入門 2

Posted on Tue 19 February 2019 in misc • Tagged with python, udemy

昨日 に続いて Udemy の講座 Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする を見ました。

一気に長い時間見てもあまり頭に入らないですね。しかも 2 倍速。

  • リスト型変数や辞書型変数に入っているのは先頭のメモリアドレス
    • だから変数の代入では新しいリストにならない(これは昨日のところ)
    • だから関数のデフォルト引数に空リストを定義は良くない
  • クロージャとデコレータが難しかった

昼休みに 30 分、夜に 90 分くらい見ましたが、夜見たところは知らないこともそこそこあってなかなか大変でした。


Continue reading

Udemy で Python 入門 1

Posted on Mon 18 February 2019 in misc • Tagged with python, udemy

Udemy の講座 Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学び、実践的なアプリ開発の準備をする を見始めました。 前に見ていたもの と同じですが、頭からもう一度見ています。一度は見ているところを見たので新しいことはないのですが、大事なところを復習できました。

エラーにならないので間違いに気付きにくい事柄です。

  • 数値演算の順序が人間が計算するときと同じ
  • リスト型変数や辞書型変数に入っているのは先頭のメモリアドレス
  • 1, はタプル型で (1) は整数型

Continue reading

自作の便利スクリプトを便利に使う on Git for Windows

Posted on Fri 15 February 2019 in Make everything as code • Tagged with python, windows, git

Windows の「送る」は便利です。

ところで、プログラムを書いているとバージョン管理を使ってみたくなります。Git がメジャーなようなので、Git を使います。GitHub にコードを置いているプロジェクトも多いので、特に理由がなければ Git で良いでしょう。Cygwin や MSYS2 をインストールして Git のパッケージを使うというやり方もあるでしょうが、Git が公式に配布している Windows 用のパッケージを使うのが便利です。

Git をインストールすると Bash も一緒にインストールされて Linux のコマンドが使えるようになります。Bash を起動すると $HOME/bin があれば PATH を通してくれます。自作の便利スクリプトはここに置いておくと便利に使えます。

ですが、Python をインストールするときに python.exe のあるところに PATH を通していないと、スクリプトを動かすときにスクリプトを引数にして Python ランチャー …


Continue reading

Python チュートリアルを読んだ そしてつかれた

Posted on Thu 14 February 2019 in misc • Tagged with python, tutorial

Python チュートリアルを見つけて、 読みました。 Udemy の講座を見て 知っていることが多いはずですが、なかなか進みません。

英語で読んだのでしかたないです。ドキュメントを書くのに英語は必要になるので効率悪いようでも英語は読んでおかなくてはと思います。まあ、つかれました。


Continue reading

Python チュートリアルがあったとは

Posted on Wed 13 February 2019 in misc • Tagged with python, tutorial

動画で勉強するのは良いですが、動画を見るのがはばかるときがあったりします。テキスト主体のサイトを探してみました。

そして、良いドキュメントがあるのを見つけました。しかし、一方でがっくりしました。 公式チュートリアル があるのに気付かなかったなんて。


Continue reading

def main() やるべきか

Posted on Tue 12 February 2019 in misc • Tagged with python

if __name__ == '__main__':

このブロックにコードを書くと スクリプトをモジュールとしてインポートしたときには実行されません。一方で、スクリプトをコマンドラインから実行したりすると実行されます。「関数の名前が '__main__' だったら」という意味の if 文です。

次のようにわざわざ main 関数を定義しているサンプルがあったりもします。

def main():
    print('Hello')

if __name__ == '__main__':
    main()

個人的には、無駄に C や Java に合わせているようで気持ちが悪いので、どうしたら良いのかざっと調べてみました。 if __name__ == '__main__': についてはブログ記事やら質問サイトやらたくさん見つかりましたが、main 関数の是非についてはあまり見つかりません。

意味のありそうなものは、この if ブロックの中に変数を書くと、グローバル変数になるので予想外のところで影響が出る可能性がある、ということでした。関数名は main にする必要はありません。

うまいこと関数で値を受け渡してしまえば変数ができてしまうこともないですし、このブロックからしか実行できない処理が多いということはモジュールとしては使えない機能が多いということにもなるでしょう。個人的にはやはり main …


Continue reading

ブログエンジンを変えようか

Posted on Mon 11 February 2019 in misc • Tagged with python, pelican, wagtail, blog, cms

ブログエンジンを変えたいなと思って、さらっと調べて見ました。結果的には現状のまま変わりなしということになりました。

現在は、 Pelican を使っています。静的にサイトを生成して HTML をサーバにアップロードする仕組みですので、どうしてもコマンドラインインターフェイスが必要になります。サーバを準備しておいてスマホから SSH でアクセスして作業をすることもできますが、キーボードなしで Vim を使うのもちょっとつらいです。PC で作業となるとどうしても帰宅後にブログを書くことになり、最近は夜ふかし傾向で望ましくないということもあります。

ブラウザでブログが書けたら昼間スマホで更新ができるかなという理由で、Content Management System(CMS) を検討しました。Python 製で開発がそれなりに活発だという Wagtail を試しに動かして見ました。PIP でインストールして起動すればすぐにブログが書けるというものではありませんでした。ただ、ドキュメントを読みながら少し手間をかければできそうではあり、それほど問題はありません。

しかし、CMS となると要は Web サイトをつくる Web アプリということになるので、サーバに実行環境が整わないと動かせません。この件も手間をかければ解決できることではありますが、サーバを乗り換えることになると費用もかかります。ちょっと簡単には難しいなということで今回は現状維持にしました。

まだ、ブログも始めたばかり。今は短い文章ばかり書いていますが、今後はどうなって行くかわかりません。短い文であればブラウザで書くことも大きな問題は無いかもしれませんが …


Continue reading