風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Python

AES-GCMでの暗号化/復号の例(JavaScript(Web Crypto API)←→Python(PyCryptodome)相互変換可)

JavaScript(Web Crypto API)で記述されたAES-GCMを用いた暗号化/復号処理をPython(PyCryptodome)にデータ互換性をもたせながら移植しようとしたところ、いくつかハマりどころがあったのでメモしておく。 ハマりどころ Pythonに入れたPyCryptodomeが動作…

【覚書】Google Fusion Tables に Python でアクセスする手順

Google Fusion Tables の更新は、実際には、自前のLinuxサーバー等から自動的に行うことを考えているため、まずは Linux 端末上から Fusion Tables にアクセスできる方法を調べる必要がある。 この場合、Linux 端末側は、OAuth 2.0 クライアントとして Fusio…

【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュールを更新(0.0.2)

【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュールを試作 - 風柳メモ GitHub - furyutei/librtrt: Twitterで公式RT直後の発言を取得するためのPythonモジュール 更新内容 Rtrt#get_rtrt()の引数にlimit_rtrt_wait:公式RTされた時点か…

【librtrt】ホームやユーザタイムラインからRTを抜き出してRtRTする例

承前 user_timelineで自分のTLを持ってきて"retweeted_status"要素を持っているもので絞り込むと、自分がRTしたつぶやきのRtRTが探せるので、100RT以上のつぶやきのテストや「へー、みんなはこんなこと言ってるんだなー」という暇つぶしに使えます。絞り込ん…

【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュールを試作

GitHub 【librtrt】Twitterで公式RT直後の発言を取得するためのPythonモジュール 勢いで GitHub に登録してみたはいいものの、使い方がよくわからない…教えて偉い人。 使い方 準備 Python で PyYAML と tweepy を easy_install や pip 等でインストールして…

メール処理でいろいろとはまる

ascii と iso-2022-jp 混在の Subject がうまくデコードされない 新刊.net のアラートメールの Subject は、 Subject: =?ISO-2022-JP?B?GyRCPzc0KRsoQg==?=.net =?ISO-2022-JP?B?GyRCJSIlaSE8JUgbKEI=?=みたいになっているのだが(メーラ等で見ると "新刊.ne…

mysqldumpが無いレンタルサーバ等のMySQLデータベースをphpMyAdmin経由でバックアップするPythonスクリプト

背景 ファーストサーバ等ではmysqldumpが提供されていないので、MySQLデータベースのバックアップを取ろうとすると、バイナリファイルをそのまま落とすか、もしくはphpMyAdminでエクスポートする、といった方法しかない。 バイナリの場合はサービスをいった…

Jinja2のテンプレートってコンパイルできたんだ…(恥)

ドキュメントにはきちんと目を通そうという話 以前にパフォーマンス度外視で突貫で作ったシステムのボトルネックを調べていたら*1、固定的にテンプレートエンジンによるレンダリングが1〜2秒かかっていることに気づく。 あれ、Jinja2って、そんなに遅くなか…

【覚書】ファイルを1行/一定サイズ毎に処理する際のシンプルな記述

テキストファイルを 1 行毎に処理 これまで fp = open('sample.txt', 'r') #{ line = fp.readline() # → これと… while line: proc(line) # 1行毎の処理 fp.readline() # → これとが冗長 #} fp.close() のように readline() が2回出てくる冗長な書き方をして…

【覚書】リスト(list)→辞書(dict)変換

2つのリストから、1つ目をキー、2つ目を値とする辞書を作成 def two_list_to_dict(key_list, val_list): return dict(zip(key_list, val_list)) print two_list_to_dict(['a','b','c'],[1,2,3]) # {'a': 1, 'c': 3, 'b': 2} 1つのリストから、キーを要素番号…

TwitterアイコンURL取得APIのエンドポイントが変わりました

[2023/02/03追記] 提供を終了します Twitter APIの有料化に伴い、本サービスも提供を終了させていただきました。 いらすとやさんの画像をお借りしております [2018/04/09追記]再度、移動しました https 対応のため、エンドポイントを、https://furyutei.work…

Beautiful Soup 4 + lxml で無理やり XPath を使う(半ばネタ)

かなり無理やりなパッチ 回答もつきそうにないし、Beautiful Soup 4 で XPath を使う方法もわからないので、無理やり自己解決。 ダウンロード:bs4_plus_xpath.tgz Beautiful Soup 4 + lxmlで無理やりXPath from bs4 import BeautifulSoup from bs4_plus_xpa…

Beautiful Soupで同様のことをしてみる

承前 lxmlの代わりに、Beautiful Soup(2013/01/02現在 Beautiful Soup 4.1.3)ならできるか、と試してみました。 XPathが使えないのが難点なんだけど…。 例 #! /usr/bin/env python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup, NavigableStrin…

lxmlでテキストノードを除去する方法を知りたい

困っていること _ElementStringResult や lxml.etree._ElementUnicodeResult といったobjectをドキュメントツリーから除去する方法がわからないので、ご存じの方、教えてください。 lxmlは2.3.3、2.3.5、3.0、3.1beta1といったもので試したが、結果は同様。 …

さくらのレンタルサーバでユーザディレクトリ上にPythonをおいて外部モジュールを自由に導入する試み

前置き Google App Engineの料金体系改定によって、いろいろとモチベーションが下がったりもしましたが…。 せっかくPythonをかじりかけたことでもあるので、とりあえず、さくらのレンタルサーバ上でPythonを動かして、いろいろ試せるようにしてみようと思い…

Pythonで固定長リストの罠

そんなおおげさでもないけれど、はまるかも知れないのでメモ。 定数で初期化 >>> a=[0]*5 >>> a [0, 0, 0, 0, 0] >>> a[2]=1 >>> a [0, 0, 1, 0, 0] まあ、これは普通。 空dictで初期化 >>> a=[{}]*5 >>> a [{}, {}, {}, {}, {}] >>> a[2]['A']=1 >>> a [{'A…

Beautiful Soupのパフォーマンス改善について

BSXPath.pyをいじっていて…… どうも、想像以上にパフォーマンスが悪いので、ボトルネックを調べていたのですが……。 ひとつには、Beautiful Soup にも原因がありそうだということが分かりました。 例えば、全ノード検索(soup.findAll())は結構早いにも関ら…