Python
stackoverflowのNumpy type hints in Python (PEP 484)という記事で nptyping というライブラリが紹介されていました。 import numpy as np from nptyping import Array def foo(array: Array[np.float64]) -> str: ... また、shapeも含めて指定できるようで…
同僚からFastAPIを薦めてもらって、バリデーションの機構が便利(そして早い)ということを教えてもらいました。 その中でjsonリクエストのアノテーションに使われているライブラリがpydanticで、FastAPI以外でも、辞書オブジェクトのバリデーションやキャス…
最近、Pythonでコードを書いていて、薄々「継承で使うのはmix-inクラスだけでいいんじゃないか」と感じています。ここでいうmix-inクラスというのは、以下の記事で述べられているような「インスタンス変数を含まず、メソッドのみを持つ多重継承用のクラス」…
Pythonはドキュメントが整備された言語ですが、専門的な用語も多く「結局この機能をどう使えば良いんだ」と思ってしまうことがあります。 この間同僚と abc モジュールの話になり、「結局何のメリットがあんのや」という話になりました。私は abc.ABC を使う…
今日は @classmethod と @staticmethod の使い分け方が話題になりました。私はなんとなく「コンストラクタが複数ある場合は @classmethod を使う」ようにしています。ただ、他の使い道も自分が知らないだけであるんじゃないかと思い、少し調べてみました。 …
休みの時間を利用して、こちらのSageMakerのサンプルを試していました。 aws.amazon.com 問題 ただ、ローカルのPC(Mac Book)から利用する場合、下のStackOverflowにある通り、エラーが出て get_execution_role 関数が使えません。 stackoverflow.com def t…
PythonのWEBフレームワーク、Djangoのチュートリアルはひととおり通したものの、実際にプロダクトを作るには不安な状態で、これからどう学ぶべきか悩んでいました。 そんな中、『現場で使える Django の教科書』という本がなかなか良さそうだったのでこれを…
docs.djangoproject.com 私はpipenvを利用したいので、GAEのPython3.7のサンプルアプリケーションにある .gcloudignore を参考にしつつ、Pipfile 、 Pipfile.lock などを追記します。 # This file specifies files that are *not* uploaded to Google Cloud …
久しぶりに会社でWEBアプリケーションを書くことになりそうです。レポーティング用アプリケーションで凝ったシステムは必要ない(はず)なので、分析担当のメンバーも理解しやすいPython(Django)を選ぼうと思っています。 ひとまず、こちらのチュートリア…
モジュールの外からアクセスするクラス( from sample import SampleClass )のために、以下のようなモジュール内のprivateな関数に利用するコードを書いていました。 # sample.py class SampleClass(object): def public_method(self): __private_function() …
この記事はPython その2 Advent Calendar 2018の遅れてきた15日目の記事です。 最近、クローリング用のプログラムのasyncioを使った並行処理のプログラミングをしており、「asyncioのベストプラクティス」という趣旨の記事を書こうと思っていたのですが、自…
pyppeteerで非同期でクローリングする実装をしていて、エラー時に自動でbrowserとpageを開き直してリトライ…って考えてたんですが、あまりにリトライ処理が煩雑になるので 毎回処理したい固定長のurlのリストを受け取る レスポンスはrequests-htmlのものが便…
Pythonの著名なHTTPクライアントライブラリのrequestsに似たAPIで、シンプルなAPIでスクレイピングに必要な機能が実装されています。実際には他のいくつかのライブラリをラップしています。 Requests-HTML: HTML Parsing for Humans (writing Python 3)! — r…
「巨大なテキストファイルをジェネレーターとして読み込み、100万行ごとに分割し、別々のファイルに保存する」という処理を書いてました。 数百行ごとに分けるのならリストにして分割するのですが、今回は分ける単位が1000万行ごとなので一度にメモリに載せ…
プログラミング言語PythonのカンファレンスPyCon JP 2017に参加してきました。そこで勉強になったこと、これから勉強したいことをまとめた個人的なリストです。 いろいろなセッションの内容については、既にいろいろな方が素晴らしい記事を書いているので、…
昨日書いたコードで、「有向非巡回グラフ(Directed acyclic graph)をきれいにプロットする」ということが課題として残っていました。 ところが、よく考えたらDAGはワークフローエンジン等でよく使われている概念で、ワークフローエンジンで、タスクの順番…
特にデータ分析周りの仕事で、 「プログラムを書く」前に「設計」と「プログラミング言語の選定」が必要 「プログラミング言語の選定」の前に「設計」が必要 「設計」の前に「稟議を出す」「個人情報についての取扱を調べる」が必要 … といったような、タス…
サラリーマンたるもの、日々の情報収集は欠かせません。 そのため、気になる業界ニュースをチャットに通知するクローラーを実装して使っているのですが、度々未知のエラーが出てしまいます。 叩いたら粉まみれ。PCデポ決算修正の内容とは https://t.co/9HEJy…
最近Pythonで自然言語処理をしていて、複数のライブラリを利用していると、どうしてもリストや辞書のややこしい変換が増えてきます。 categories = ['サーバル', 'かばん', 'サーバル'] lines = [ ['ここ', 'は', 'さばんな', 'ちほー'], ['食べ', 'ない', '…
以前書いたスクリプトを書き直して、PyPIからインストールできるようにしました。 github.com pypi.python.org
先程の記事に引き続き、AWS LambdaでPython3.6が使えるようになったので、過去にPython2.7で書いたバッチ処理のレガシーコードをLambdaに移行しています。 まずは、下の記事で書いた「ツイッターを検索した結果を自動リツイートする」コードを移行します。今…
RとPythonのチャットワーク用ライブラリを、APIのバージョンアップに早めに対応しました。 ライブラリの実装練習に作った割に、なんだかんだ自分でいろいろと利用しているのでビックリです。 help.chatwork.com v1からv2への移行期間として、下記の停止日ま…
実際には、ここ1年くらいSlackに通知していたものを、「ログ残んないしざっと見るとき不便だな」と思ってたので、はてなブログに自動投稿するように作りました。 TumblrやBloggerとか、JekillとかPelicanとかでS3に静的ページを作ることも考えたのですが、既…
海外のニュースを簡単に通知できないか試そう(試したい)という記事です。 国内の業界ニュースは当然追っているにせよ、海外に面白い動きがあるのに、全然把握できていないことは多々あります。 とはいえ、私は英語が得意ではないため、自分の興味のあるニ…
不動産関連のニュースを自動でスクレイピングで集めていたのですが、 Python2から3に移行する際にOAuth認証に移行しようとして、ずっと面倒でサボっていました。 Rubyでは、既にgemの形で実装している方がいました。記事の内容も素晴らしかったし、コードも…
以前練習で作ったライブラリを、仕事でも後輩のタスクで使うようになった(らしい)ので、PyPIに公開してインストールできるようにしました。 pypi.python.org 登録手順など、こちらのページを本当に助けられました。ありがとうございます。 qiita.com テス…
後輩が数値計算を使う、簡単なバッチ処理をPythonで書き始めました。 一応私もPythonの知識ならそれなりにあるのでいろいろ教えられることは(まだ)あります。 そのための予行練習としていろいろまとめておきます。 正直、自分よりもっと数値計算やプログラ…
Github上にアップした自作のPythonモジュールをインストールしようとしたところ、UnicodeDecodeErrorが出てしまいました。 $ pip install --upgrade git+https://github.com/takeshi0406/twlist_to_urllist Exception: Traceback (most recent call last): F…
友だちが「Rubyはいろいろなメソッドがあって柔軟だから、 そっちに慣れちゃうとPython書くときちょっと困るんだよね」と言っていました。 たしかに、Rubyは「配列やハッシュに対してこんな機能があればいいな」と感じたとき、 そのデータ型のリファレンスを…
WEBサイトの改修を検知するプログラムがそれなりにうまくいきそうなのですが、改修があったときにyamlの文字列を見てもピンと来ません。 kiito.hatenablog.com というわけで、PythonからSeleniumを介してPhantomJSを動作させ、 スクリーンショットを撮ること…