Project Eulerの日本語訳へのリンクを張るuser script(2015/4/30時点)
Project Eulerの日本語訳へのリンクを張るuser scriptを更新しました。
Chrome 42.0.2311.90 m
Tampermonkey 3.10.84
で動作確認してます。
// ==UserScript== // @name ScriptEuler // @namespace http://d.hatena.ne.jp/yatt/ // @description link euler project problem to http://odz.sakura.ne.jp/ // @include https://projecteuler.net/archives* // ==/UserScript== (function(){ var lst = document.getElementsByClassName('id_column') var prefix = 'http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%20' for (var i = 1 ; i < lst.length; i++) { var no = lst[i].innerHTML var a = document.createElement('a') a.href = prefix + no a.innerText = no lst[i].innerText = '' lst[i].appendChild(a) } })()
関連
pythonのrequestsライブラリの更新に追従
http://d.hatena.ne.jp/yatt/20121017/1350480131
requestsについて書いた記事ですが、既にAPIが変わってしまっていたので、
同じ動作をするコードを書きました。
対象はrequests 2.6.0です。
はてなダイアリーにログイン
変わりません。
#! /usr/bin/python2.7 import requests s = requests.session() params = { 'name': 'your account name', 'password': 'your password', } r = s.post('https://www.hatena.ne.jp/login', params=params) print r.text
OAuth認証
OAuthの処理が、requests_oauthlibという別ライブラリに切り出されました。
requestsとは別途、インストールしておきましょう。
$ pip install requests_oauthlib
また、レスポンス文字列をjsonにデシリアライズする処理が
プロパティ.jsonからメソッド.json()に変わりました。
http://docs.python-requests.org/en/latest/api/?highlight=response#requests.Response.json
#! /usr/bin/python2.7 import requests from requests_oauthlib import OAuth1 auth = OAuth1( 'consumer key', 'consumer secret', 'access token', 'access secret', ) url = 'https://api.twitter.com/1.1/statuses/home_timeline.json' r = requests.get(url, auth=auth) print r.json()
OAuth認証してストリーム処理
UserStreamなどのストリームを扱う場合の引数の渡し方が変わりました。prefech=Falseからstream=Trueになっています。
http://docs.python-requests.org/en/latest/user/advanced/?highlight=stream#body-content-workflow
#! /usr/bin/python2.7 import requests from requests_oauthlib import OAuth1 auth = OAuth1( 'consumer key', 'consumer secret', 'access token', 'access secret', ) import json url = 'https://userstream.twitter.com/2/user.json' r = requests.get(url, auth=auth, stream=True) for line in r.iter_lines(): if line == '': continue print json.loads(line)
grequestsも変わらず使えるようです。なんかちょっと遅い気はしますけど。
ANAのシーズンチャート2015国内線
シーズンチャート
http://www.ana.co.jp/amc/reference/tukau/kokunai_6.html#a01
ANAのシーズンチャート、期間がテキストでしか示されなくてよく分からない・・・。
年間カレンダー的なものを探しても見つけられなかったので自分でカレンダーを作って整理しました。
続きを読むPython2.7でGMailから日本語メールを送信する
以前使っていたスクリプトを紛失してしまったので、ざっと書き直してこっちにもメモ。
#! /usr/bin/python2.7 # coding: utf-8 """ stdinの内容をGMailで 自分自身に送る """ import smtplib host, port = 'smtp.gmail.com', 465 username, password = 'XXXXXXXXXXXXXXXXXXXXX@gmail.com', 'YYYYYYYYYYYYYYYYYYYYY' import sys import os content = sys.stdin.read() # unicodization for enc in ['utf-8', 'cp932', 'euc-jp']: try: content = unicode(content, enc) except: pass subject = content.splitlines()[0].strip() body = content # build mail message message = u"""From: %s To: %s Subject: %s %s """ % (username, username, subject, body) # normalize newline character to CRLF message = message.replace('\r\n', '\n') message = message.replace('\r', '\n') message = message.replace('\n', '\r\n') message = message.encode('utf-8') smtp = smtplib.SMTP_SSL(host, port) smtp.ehlo() smtp.login(username, password) smtp.sendmail(username, username, message) smtp.quit()
Pythonのdict内包表記でキー衝突が起きたらどうなるか
- 後勝ち?
- 不定?
- 重複した値はリストになる?
検証
# 1. 重複しないケース print {i:i for i in range(10)} # => {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9} # 2. 重複するケース。昇順 print {i+(10-i):i for i in range(10)} # => {10: 9} # 3. 重複するケース。降順 print {i+(10-i):i for i in range(10,-1,-1)} # => {10: 0}