Python Adventカレンダー2018の拾い読みメモ
Adventカレンダーは、その年のトレンドや目新しい話題が集約される。みんなで寄ってたかって書くから切り口も多様で、書き手は ”1年の締めくくり” と張りきって書くから読んで楽しい。Python Adventカレンダー2018から、現時点の自分の琴線に触れたタイトルを拾い読みしたのでメモを残す。
Python Advent Calendar 2018
https://qiita.com/advent-calendar/2018/python
Python その2 Advent Calendar 2018
https://qiita.com/advent-calendar/2018/python_python
まだまだ知らない概念や機能が多く、記事の内容をちゃんと理解するのはなかなか厳しいのだけれど、知らない用語はGoogle先生に聞いて、わからないことは適当にスルーし、コードはなるべく読んで(眺めて)「ほー、そういうもんか」と次に進む。脳内にPython周りのキーワードを増やすことを主目的に臨んだ。
以下、
- 並びはだいたいAdventoカレンダーの投稿日順、ただし同一テーマの記事があればどちらかに寄せた。
- メモの分量は、記事や扱うテーマに対する関心の高さに必ずしも比例しない。
- メモはその記事からの引用に限らない。WikiPediaなど他サイトで調べた内容も混じっている。
- 自分的にヒットだった記事には ★ をつけた
- Python標準ライブラリ:順序維持のbisect
- Python Kivyの使い方① ~Kv Languageの基本~
- requests-html で javasript のページ読みこむよ! ★
- 並列プログラミングに入門する
- Python + OpenCVで画像の類似度を求める 2018
- Pythonを用いた画像処理(openCV,skimage)
- Pythonユーザーなら知っておきたいのリストの仕組み
- 人間のためのイケてるPython WebFramework「responder」、そして作者のKenneth Reitzについて
- Pythonで話題のWEBフレームワークresponderでサンプルのtodoリストを作成 ★
- 2018年12月時点における、PythonのSOAPライブラリについて
- リスト内包表記入門
- 「Python×gRPC」で簡単!サーバー開発(Todoアプリ) ★
- Pythonコードの安全を保つSAST(静的解析)ツール ~Bandit, Pyt~
- Python本まとめ・2019年版 - Webとデータ分析を初心者が仕事にするまで ★
- まとめ - 印象に残ったキーワード(気になる順)
Python標準ライブラリ:順序維持のbisect
https://qiita.com/ta7uwtaka/items/d6d8f0ddb215c3677cd3
「bisect」は「二分探索」を利用することで効率よく、リストをソートされた状態に保つサポートをするPython標準ライブラリ。
import bise bisect.bisect_left(a, x, lo=0, h=len(a))
Python Kivyの使い方① ~Kv Languageの基本~
https://qiita.com/dario_okazaki/items/7892b24fcfa787faface
Kivy公式 https://kivy.org/
Kivy - Open source Python library for rapid development of applications that make use of innovative user interfaces, such as multi-touch apps.
KivyはPythonのNUI(Natural User Interface)でのマルチタッチアプリケーション開発のためのオープンソースライブラリである。MITライセンスで配布されている。 様々なプラットフォームで動作するように開発が進められている。Android、iOS、Linux、MacOS X、Windowsに加え、Raspberry Piもサポートされた。
特徴としては以下のとおりである。
- マウス、キーボード、TUIO、OS固有のマルチタッチイベントなど広範な入力への対応
- OpenGL ES 2のVertext Buffer Objectとshadersを使用したグラフィックライブラリ
- マルチタッチ対応のさまざまなウィジェット
- カスタムウィジェットを容易にデザインするための中間言語Kv
- KivyはPyMTにあるプロジェクトにおいて革新的なものである。
requests-html で javasript のページ読みこむよ! ★
https://qiita.com/ukisoft/items/a6cee061e5f50dec3530
- Requests-HTML: HTML Parsing for Humans (writing Python 3)! http://html.python-requests.org/
- 「Requests-HTML」はKenneth Reitz が開発した。この人はAPI処理で使うモジュール「Requests」や、Webフレームワーク「responder」の開発者。
- BeautifulSoupと同種のモジュール。bs4はAjaxで書き換えたページのパースに失敗することがあるが、Requests-HTMLは非同期処理ページを扱えて、かつ簡潔に書ける。
- 記事のコードを参考に、スクレイピングを試した。使いやすそうだ。
並列プログラミングに入門する
https://qiita.com/takey/items/917a48aa5d1882e125f4
子プロセスを実行・管理するライブラリ「subprocess」モジュールを使って、子プロセス実行、複数の子プロセス並列実行を "やってみた"記事。 PythonでもCPUリソースの制御や効率化処理レベルのモジュールがあると知った。
Python + OpenCVで画像の類似度を求める 2018
https://qiita.com/best_not_best/items/669aaa9e1b8de647d29d
OpenCV(Open Source Computer Vision Library)は、画像処理・画像解析および機械学習等の機能を持つC/C++、Java、Python、MATLAB用ライブラリ。画像変換、フィルタ処理、変形、物体判定、物体・顔認識、カメラの入出力などが行える。
DeepLearningを使わず、OpenCVで2枚の画像のヒストグラム比較、特徴点のマッチングを取るなどにより画像の類似度を求める試みの記事。
Pythonを用いた画像処理(openCV,skimage)
https://qiita.com/taka_baya/items/453e429b466ffaa702c9
同じくOpenCVネタ。
Pythonユーザーなら知っておきたいのリストの仕組み
https://medium.com/@yasufumy/data-structure-dynamic-array-f7cd008a2f20
Pythonのリストは要素の追加 (list.append) /削除 (list.pop) により、サイズが動的に変更される動的配列 (dynamic array)。動的配列の要素の追加 (list.append) /削除 (list.pop)の過程で配列サイズの拡大と縮小を高速に、リソースの無駄なく行うしくみの解説。
興味はあるが、今はいいかな。ざっと流し読み。
人間のためのイケてるPython WebFramework「responder」、そして作者のKenneth Reitzについて
https://blog.ikedaosushi.com/entry/2018/12/01/195512
- 2018秋に発表されたばかりのWebフレームワーク「responder」の紹介。
- 作者は前述「Request」「Request-HTML」「pipenv」のKenneth Reitz 。
- PythonのWebフレームワークが発表年軸で一覧されていた。Flask, Diangoぐらいしか知らなかった。
Pythonで話題のWEBフレームワークresponderでサンプルのtodoリストを作成 ★
https://note.mu/shimakaze_soft/n/ne47bc123dc83
前出記事にもある「responder」を使ったtodoリスト実装記事。
async def on_post(self, req, resp):
ん? defの前に知らないキーワードが。。
async 識別子、コルーチン関数だって。また知らないモノが出てきた ^^;;
"理解が追いつきません率" 高めなため、ひとまず「こんなもんか」と読み流す。ただし、「responder」はとても面白そうだ。近々使えるようになりたいリストに追加した。
Responderはflaskと違い、Falconと同様にクラスベースでの実装が行なえます。
チュートリアルや他の解説記事では普通にメソッドで実装を行っていますが、ここではFalconみたいにクラスベースでの実装方法を解説します。
- @api.background.task のデコレーターがふられているメソッドは、非同期で実行される。
- responderは非同期処理が簡単に実装できるのがチャームポイント。
2018年12月時点における、PythonのSOAPライブラリについて
http://thinkami.hatenablog.com/entry/2018/12/03/053937
曰く、「APIというと、最近はRESTやgRPCなどがメジャーですが、場所によってはSOAPがまだまだ使われています」。
へー、そうなんだ。記事はPython Wikiに一覧されたSOAPライブラリをそれぞれPython3.7で動くか確かめたというもの。いまいまはSOAPに興味がないので、そういう世界があるんだと思っておしまい。
リスト内包表記入門
https://qiita.com/frodo821/items/26131635eb16ee4b1467
リスト内包表記でstdinからの入力を受け取ってリストに格納。ほー、こういう書き方あるんやな。
「おまけ」のベンチマークは、リスト内包表記 vs.普通のループやlist()。
記事はやや迷走気味ながら面白い。
どんな人が書いてるのかと思ったら、高校生クリエーター・ユニットの片割れさんだった。Twitterやブログも興味深く覗かせてもらう。こういうワカモノが向こう数年のうちに何やら面白いこと始めるんだろうなぁ。頼もしいなぁ。。。って感想が年寄り臭いよ、ワタシww
「Python×gRPC」で簡単!サーバー開発(Todoアプリ) ★
https://qiita.com/RyuSA/items/8cfde13149c1b1b55a5d
gRPCを使ってTodoアプリを実装する記事。
- なにこの記事?! - コードがとても読みやすい。クラス名やメソッド名の命名が自然だからかな?なんとなくわかった気になるww
- gRPCは、HTTP/2を標準でサポートしたOSSのRPCフレームワーク。Googleが2015年に発表した。異なる言語のサーバー間でも型保証された通信が可能、高速。マイクロサービス構築上使い勝手がいい。
- REST APIの設計で消耗している感じたときのgRPC入門
- マイクロサービスバックエンドAPIのためのRESTとgRPC
- proto(ProtocolBuffers) 構造化されたデータ・フォーマット。messageで構造体を、serviceでRPCを書く。protoをPythonコンパイルして使う。
// TODOを作成するときのリクエスト message TodoCreateRequest { string todo_name = 1; string timestamp = 3; } // TODOを作成するときのレスポンス // messageの中に別のmessageを含むことができる message TodoCreateResponse { ServerResponseComponent response = 1; string timestamp = 2; } service TodoGateway { rpc TodoCreate (TodoCreateRequest) returns (TodoCreateResponse) {} rpc TodoShow (TodoShowRequest) returns (TodoShowResponse) {}; rpc TodoUpdate (TodoUpdateRequest) returns (TodoUpdateResponse) {} }
if __name__ == '__main__': # localhost:50051にTodoリクエストを送る準備 with grpc.insecure_channel('localhost:50051') as channel: stub = TodoGatewayStub(channel)
- 接続先を指定してstubを作成、show_todos(stub)のようにそのstubに向けてAPIを投げる。
Pythonコードの安全を保つSAST(静的解析)ツール ~Bandit, Pyt~
https://kusuwada.hatenablog.com/entry/2018/12/23/165526
- DevOps(デブオプス)は、開発 (Development) +運用 (Operations) からきた用語。開発担当者と運用担当者が連携して協力する(さらに両担当者の境目もあいまいにする)開発手法をさす。
- 「DevSecOps」はその発展系。DevOpsの迅速な開発ワークフローを回す上で、開発プロセスのより早い段階からセキュリティテストを組み込もうとするのが「DevSecOps」。2018年のトレンド、セキュリティテストも自動で回す時代に。
自動セキュリティテストには SAST, DAST, IAST と呼ばれるものがあります。 SAST: Static Application Security Testing(静的セキュリティ検査) - ソースコード自体を解析・検査して脆弱性を見つけ出すもの DAST: Dynamic Application Security Testing(動的セキュリティ検査) - 動いているアプリケーションに対して様々な入力を与え、その結果をもとに脆弱性の有無を判断する IAST: Interactive Application Security Testing - SASTとDASTのいいとこ取り。まずDASTで検査を行い、疑わしい部分をSASTで解析する
- この記事ではPythonで使えるSASTツールとして「Bandit」「Pyt」が紹介されている。
Python本まとめ・2019年版 - Webとデータ分析を初心者が仕事にするまで ★
https://shinyorke.hatenablog.com/entry/python2019
- #rettypyのなかのひとによる毎年恒例の記事とのこと。#rettypy「Pythonもくもく自習室」は connpass上でよくお見かけする。参加経験はまだないが、毎度応募多数で抽選になる人気の会という印象がある。
- 「Pythonを仕事にするまで、のイメージ」フロー
- 「独学プログラマー」は、自分にとっても 長く座右に置いて繰り返し読み返したい本になった。っていうか、昨年の夏にこの本に出会ってPythonを勉強する気になったのです、私。