やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Python

ニュース取得(インメモリDBとRAMディスクを使う)

まだ取りこぼしが起こりうる。

Pythonニュース取得が遅いので、BeautifulSoup4のHTMLパーサをlxmlに変更した

html.parserはPython製のため遅いらしい。そこでC言語製のlxmlにすると高速だとか。

Pythonニュース取得が遅いので、重複時はHTML取得しないようにした

RSSから30件のニュースを得て本文を抽出するまで10分近くかかった。20秒/1件。遅すぎる。

Pythonでフィードから得た日時テキストをUTC形式に変換してSQLite3DBへ挿入する

前回 * bashのブツを合併した。

Pythonでフィード(RSS/Atom/RDF)から取得された日時テキストをdatetime型に変換する

最新の環境構築が面倒なのでコード書いた。

Pythonでニュース取得してSQLite3DBに登録する(一意制約エラー時)

コンフリクトを変更した。

HTMLの本文抽出(readability-lxml)

最高だった。extractcontent3より良さげ。

PythonでRSSからニュースを取得しSQLite3DBに保存する

リポジトリを作り直した。いくつか修正。

Pythonのfeedparserで取得したRSS/Atomの日付をUTCにしたいが、死ぬほど大変そう

RSSの日付データはテキスト。その表現形式はUTC,JSTなどがありうる。これらをすべてYYYY-mm-ddTHH:MM:SSZ形式にしたい。SQLite3DBに登録するために。

列名でアクセスする(sqlite3.Row)

外部ライブラリを使わなくてもできる。

Python3.5.3におけるSQLite3のバージョンは3.16.2だった

私が自分でビルドしたやつは3.29.0なのに。

Pythonでカレントディレクトリを取得する os.getcwd()

ターミナルのcdコマンドで移動したものが反映される

PythonでRSSからHTMLの本文を抽出してSQLite3に挿入する(未登録のみ。UNIQUE制約でチェック)

DBにまかせてPythonコードを減らす。

Pythonで二分探索する

ソート済みリストの中から指定した値の位置を探す。高速に。

Pythonでソート(複数キーでdescとasc混在)

1キーずつ。ソート順位が低いほうから順に。

【textree】テキストから木構造データを作るPythonパッケージを公開した!

Py2, 3対応。改行やタブで作ったツリーテキストとオブジェクトを相互変換する。ノードを取得・編集する多くのメソッドがある。ツリー構造の編集も可。

バージョニングについて(PEPとsemver)

リリース修飾子のところは差異がある。

【python2と3の差異】3で`/`は実数除算。`//`で整数除算(TypeError: slice indices must be integers or None or have an __index__ method)

配列のインデックス値を除算で求めたらエラー発生した。

Copyright生成器を書きTestPyPIへアップロードした(python)

前回のpython版。

Copyright生成器を書いた(python)

前回のpython版。

PyPIパッケージ作成&更新自動化プラン

必要そうな項目を網羅。

PyPIパッケージ作成&更新ワークフローの自動化について考えた

どこがどれくらい自動化できそうか。

PyPIパッケージの作成から運用までのワークフロー

めっちゃ大変やで。

PyPIパッケージ登録に必要なもの

整理した。

PyPIパッケージ名に`_`アンダースコアを使うと勝手に`-`ハイフンに改名されて`import`できなくなる

PyPIパッケージ名でのトラブルをここに記す。

twineでアップロードに四苦八苦した結果、超絶に難しいことが発覚した失敗ログ

もうめちゃくちゃ。

pip自体を更新する(pip install --upgrade pip)

古いと問題になることがあるらしいので。

python setup.py bdist_wheel

wheelを使うとOS差異によるエラーを減らせるのだとか。

python setup.py sdist

PyPIで配布するための圧縮ファイルなどを作成する。

PyPIパッケージ構成(必要なもの)

なにが必要かわからんかったので調べた。