店主申し込み受付不具合について

申し込みフォームが上手く機能しない場合があるようで、お申し込み手続きでご不便をかけた方に、担当として申し訳なく思っています。すいません。

申し込みフォームの不具合について

http://d.hatena.ne.jp/shinobazukun/20080308/1204999411

メールでも申し込みは受け付けております。申し込みフォームが使えない場合はメールでお申し込みください。

urllib2でプロキシを参照しないようにする

urllib.urlopenはステータス404でも例外を発生してくれない。

urllib2.urlopenは404で例外を発生してくれるけれど、そのままだと環境変数のプロキシ設定を参照するようで、ちょっと困る場合があった。

というわけで、urllib2.urlopenでプロキシを設定|参照しないようにする方法を調べてみた。

Gist:227549

#!/usr/bin/env python
"""Python urllib2 proxy usage sample
"""
import urllib2

#今回はプロキシ設定を空にしておく
#proxies = {'http': 'http://www.example.com:3128/'}
proxies = {}

#プロキシハンドラーを作成して
handler = urllib2.ProxyHandler(proxies)

#プロキシハンドラーを指定してURL Openerを作成して
opener = urllib2.build_opener(handler)

#作成したURL Openerをインストールしてから
urllib2.install_opener(opener)

#普通にurlopenすると例外が発生してくれる
try:
    u = urllib2.urlopen('http://www.example.com/404NotFound.html')
    print u.read()
except IOError,error:
    print error

Pythonカテゴリ作ってみた。

Pythonで月末、月初。ついでに月を加減するadd_months

月初はまあいいとしても、月末、月の足し引きは、こんな方法しか思いつかず。

カッコ悪いが使えることは使える、と思う。

2008.3.14追記

  • calendarモジュールを使って月の日数を取得することで、月末計算をシンプルに。
  • add_monthsも見直し。

それほどカッコ悪くはなくなったんじゃないかと思う。修正の経緯

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""月末、月初のdatetime.dateオブジェクトを返す。
Oracleのadd_months互換の月加減。
"""
import datetime
from calendar import monthrange

def first_day(date):
	"""月初を返す"""
	return datetime.date(date.year, date.month, 1)

def is_last_day(date):
	"""月末日付ならTrueを返す"""
	return days_of_month(date.year, date.month) == date.day

def days_of_month(year,month):
	"""年,月の日数を返す"""
	return monthrange(year, month)[1]

def last_day(date):
	"""月末を返す"""
	return datetime.date(year=date.year, month=date.month, day=days_of_month(date.year, date.month))

def add_months(date,months):
	"""月を加減する。
	dateにはdatetime.dateクラスのオブジェクト
	monthsには整数で月数を指定する。
	月末をOracleのadd_months互換の方法で処理する。
	例えば、
	2007年2月28日(月末)に1ヶ月足すと3月31日(月末)。
	2008年2月29日(月末)に1ヶ月足すと2008年3月31日(月末)。
	2008年2月28日(月末ではない)に1ヶ月足すと2008年3月28日(同じ日)。
	"""
	if months==0:
		return date

	year, month = divmod(date.month + months, 12)
	year = year + date.year

	#ちょうど割り切れたら12月で、マイナス1年。
	if month == 0:
		month = 12
		year = year - 1

	#入力日付がその月の月末なら、加算後月の日数を。
	#そうじゃなければ入力日付の日。
	day = date.day
	if date.day > days_of_month(year, month):
		day = days_of_month(year, month)
	return datetime.date(year=year, month=month, day=day)

最新版はGist:227554をどうぞ。