cactusman日誌 このページをアンテナに追加 RSSフィード

2012-02-02

[]Pythonのloggingで、GMailSMTPサーバからメールを送信したいときの設定

忘備録として。

はまった点はsecureに空のタプルを指定するという点。

とりあえずこれで動いてはいますが、本当にそれでいいのかというのはよく分かっていません。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'handlers': {
        'mail_handlers': {
            'level': 'ERROR',
            'class': 'logging.handlers.SMTPHandler',
            'mailhost': ('smtp.gmail.com', 587),
            'fromaddr': 'from_mail@gmail.com', 
            'toaddrs': ['to_mail_1@a.com', 'to_mail_2@a.com'], 
            'subject': 'error log',
            'credentials': ('from_mail@gmail.com', 'password'),
            'secure': (),
        }
    },
    'loggers': {
        '': {
            'handlers': ['mail_handlers'],
            'level': 'DEBUG',
        }
    }
}

あとは、こんな感じの書き方で直に出力することも可能ですね。

import logging
from logging.handlers import SMTPHandler

mailhost =  ('smtp.gmail.com', 587)
fromaddr = 'from_mail@gmail.com'
toaddrs = ['to_mail_1@a.com', 'to_mail_2@a.com']
subject = 'error log'
credentials = ('from_mail@gmail.com', 'password')
secure = ()

handler = SMTPHandler(mailhost, fromaddr, toaddrs, subject, credentials, secure)
logger = logging.getLogger('root')
logger.addHandler(handler)
logger.error('logging test')

それにしてもあんまり情報がないところ、みんなGMailで送信はしていないんじゃないかなと思ったりしてます。

2011-12-15

[]変数名とかクラス名とか

Java Advent Calendar 2011 12/13日*1担当のさぼてんです。


みなさん、普段あまり変数名とかクラス名とかを意識せずに付けていると思います。

え、命名には凝ってるって?

確かにそうだと思いますが、どの文字が使えるかとかはあまり考えずにやっていると思います。

例えば、アンダースコアが使えるとか、ハイフンは使えないとか、そういうのです。

殆どの人はJava言語仕様なんて読まないので、EclipseなどのIDEコンパイラからのエラーでなんとなく理解していると思われます。

僕もほとんど読んでないです。

じゃぁ、実際のところはとどうなんでしょうね。

Java言語仕様の3.8 Identifiers*2に記載があります。

http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.8

以下抜粋

Letters and digits may be drawn from the entire Unicode character set, which supports most writing scripts in use in the world today, including the large sets for Chinese, Japanese, and Korean. This allows programmers to use identifiers in their programs that are written in their native languages.
A "Java letter" is a character for which the method Character.isJavaIdentifierStart(int) returns true. A "Java letter-or-digit" is a character for which the method Character.isJavaIdentifierPart(int) returns true.
The Java letters include uppercase and lowercase ASCII Latin letters A-Z (\u0041-\u005a), and a-z (\u0061-\u007a), and, for historical reasons, the ASCII underscore (_, or \u005f) and dollar sign ($, or \u0024). The $ character should be used only in mechanically generated source code or, rarely, to access preexisting names on legacy systems.
The "Java digits" include the ASCII digits 0-9 (\u0030-\u0039).

英語を訳すの面倒くさいので、第二版ですが日本語訳もあるみたいなので、そちらを見てみます。

http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#40625

文字及び数字は,Unicode文字集合のどの文字であってもよい。Unicode文字集合は,中国語,日本語及び朝鮮語チョソノ)に対する大きな集合を含み,今日世界で使用しているほとんどの筆記スクリプトを扱っている。これによって,Javaプログラマは,プログラム中に,自分の母国語で書いた識別子を使うことができる。
Java文字は, メソッドACharacter.isJavaLetter(20.5.17)が true を返す文字とする。Java文字又は数字は,メソッドACharacter.isJavaLetterOrDigit(20.5.18)が true を返す文字とする。
Java字には,ASCIIラテン文字の大文字・小文字,つまり,A-Z (\u0041-\u005a)及びa-z (\u0061-\u007a),並びに,歴史的な理由によって,ASCIIの下線 (_又は\u005f)及びドル記号($又は\u0024)が含まれる。 $文字は,機械的に生成されたソースコードにおいてだけ,又は,まれには,過去のシステム上の既存の名前にアクセスするためだけに使用することが望ましい。
"Java数字"は,ASCIIの数字0-9 (\u0030-\u0039)を含む。

英数字と、記号としては_と$が使えますね。

あと、ユニコード文字列が使えます。

JUnitなどでメソッド名に日本語で書けるのも、この仕様のおかげです。

といっても、実際のプロダクトコードのほうには日本語でプログラミングしている人とかいないでしょうが、変な英語をつけるぐらいなら、いっそう日本語でそのまま書いてしまってもいいんじゃないんでしょうかね。


それはそれで置いといて、上記仕様からこんなか書き方もできるんじゃないんでしょうか。

public class _{
	public static void main(String[] args) {
		boolean x_x = true;
		String $_$ = "_";
		
		for(;x_x;)
			System.out.println($_$);
	}
}

無限ループしてるとかの野暮なツッコミはやめてください。

*1:すっかり忘れていて申し訳ないです

*2:日本語だと識別子と訳すらしいです

2011-12-05

[][]Dependency Graph View Plugin について

Jenkins Advent Calender 2011 5日目担当のさぼてんです。

残念ながらあんまり時間がなかったので、凝ったことはせずにPlugin紹介にします。


ご紹介するのはDependency Graph View Plugin についてです。

https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin

何がいいかというと、一目にわかると思います。

f:id:cactusman:20111205224214p:image

Jobの依存関係がひと目に見れます。

また、それぞれのJobはクリックするとJobの画面に遷移します。


次はid:kiy0taka さんです。

どんな爆笑ネタを仕込んでくるのか、すごく期待しています:)

2011-11-09

[][]Jenkins実践入門

献本いただきました。

技術評論社の傳さん、ありがとうございます。


今日のお昼過ぎに手元にとどきまして、さっそく読んでみました。

Javaに特化した内容が多いですが、JenkinsCI初心者にお勧めの一冊です。

CIとは何か?Jenkinsの使用するためのはじめの一歩的なところを丁寧に説明されています。

Jenkinsインストールから、SCMの具体的な設定方法、コンパイルJarへのパッケージングや、ユニットテストカバレッジ、静的解析(インスペクション)の具体的なやり方やデプロイなど、一通りCIで行えることが記載されています。

初心者は特に、何をしたらいいのかわからない、何ができるのかがわからない、ということで躊躇しがちですが、この本を読む限りそういうことはないでしょう。

また、もうすでにプロジェクトに導入し、使用している人たちにとっては、Viewのカスタマイズやファイル指紋、BTSなどのほかのツールとの連携など、より一層Jenkinsを便利に使う方法が記載されています。

それだけでなく、Jenkinsプラグインの開発方法や、分散ビルド、パフォーマンスチューニングなど、より深く使用するための方法も記載されています。

この本は内容のボリュームはあるのですがページ数が320ページほどで、このボリュームを説明するにはいささか少ない印象です。

あと100ページぐらい欲しいと思えるほど、もっと深く知りたい内容が含まれています。


簡単な紹介でしたが、今まさにJenkinsを使いたい、使ってる人にとっては一読してみる価値はあると思います。

プロジェクトに明日から使える、便利な方法や発見があるかもしれません。