WEB+DB PRESS Vol67

WEB+DB PRESS Vol.67

WEB+DB PRESS Vol.67

  • 作者: 川口耕介,山本和彦,おにたま,神林飛志,杵渕朋彦,中島聡,清水亮,齋藤正浩,高橋征義,ミック,みやけん,青江崇,須賀秀和,上新卓也,牧大輔,角田直行,はまちや2,大和田純,白土慧,太田昌吾,個々一番,Shawn M Moore,じゅんいち☆かとう,小野修司,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/02/24
  • メディア: 大型本
  • 購入: 15人 クリック: 253回
  • この商品を含むブログ (26件) を見る
献本いただきました。
技術評論社の傅さん、稲尾さんありがとうございます。


今月号のWEB+DB PRESSはJenkins特集です。*1
筆者は川口さんで、メインコミッター自ら書いています。
自分*2id:lino_s*3さん、id:ikikko*4さん、id:nahi*5さんやid:ssogabe*6さんたちがレビューをしているという、かなり豪勢なものになっています。
また、ページ数も50ページと多く、内容も多岐に渡り、蛙本や入門本にない情報も沢山織り込まれています。
川口さんがCIをどう捉えているのか、Jenkinsをどう扱うものとして設計しているのかが、特にコラムで、垣間見えます。
それだけでも一見の価値があると思っています。
Rubyについも記載があるため、これからRubyでJenkinsの導入を考えている方についてもお勧めします。*7


今月号のWEB+DB PRESSは、Jenkins特集だけでも十分おすすめできる内容です。
特に、入門本や蛙本と合わせて、読んでいただければと思っています。

*1:Jenkins以外の記事については割愛させて頂きます ご容赦ください

*2:自分はまぁ、おまけです

*3:入門本の作者の一人

*4:ユーザ会幹事にして、勉強会のメイン裏方

*5:言わずとしれたCRubyとJRubyのコミッター、Jenkinsのコミッターも

*6:ユーザ会幹事にして、コミッター

*7:PHPPerlPythonなどについては残念ながらありません

Jenkins(通称蛙本)

Jenkins

Jenkins

献本いただきました。
オライリー・ジャパンの高さん、ありがとうございます。


2月17日(金)のお昼ごろに手元に届いたところです。
ちょうど、デブサミでも先行販売*1していたようで、もうすでに手元にある人もかなりいると思われます。
この本については、Jenkins: The Definitive Guide の訳本になります。
位置づけとしては、Jenkins実践入門が初心者を対象としているのに対して、蛙本は中級者以上を対象としています。
Jenkins実践入門でさらりと触れられている各設定やPluginなどは、一段深く説明されています。
また、扱っている内容もより広くなっているため、Jenkins実践入門が物足りないと思われた方々にとっては、蛙本はおすすめです。


本書はRubyやGroovy、.Netなどについては少しは扱ってはいますが、メインターゲットはJavaであるため、Java以外のプロダクトについては自分なりに応用していく必要があります。
例えば、「6.3 Jenkins でのテストレポートの設定」ではテスト結果がxUnit形式に対応していない場合はxUnit Pluginを使ってみては、という記述があります。
また、7章以降については言語によらない話が多いため、その部分だけでもかいつまんで読む価値はあると思います。


あと、日本語訳本だけのオリジナル付録として、id:keike443 作の「付録B プラグインの開発」があります。
Pay! Framework Pluginを手本にPluginの開発方法を説明しているため、ちょっとPlugin作成してみようと思う方はお勧めです。


最後に、蛙本は今まさにプロジェクトで使っている人や、よりJenkinsを使いこなしたい人にはうってつけの一冊です。
今まさに悩んでいることや問題になっていることに対してのヒントがあると思います。

*1:デブサミではかなり売れ行きが好調だったとTwitterのTLから伺っています。

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

忘備録として。
はまった点は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で送信はしていないんじゃないかなと思ったりしてます。

変数名とかクラス名とか

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:日本語だと識別子と訳すらしいです

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
何がいいかというと、一目にわかると思います。

Jobの依存関係がひと目に見れます。
また、それぞれのJobはクリックするとJobの画面に遷移します。


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

Jenkins実践入門

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

献本いただきました。
技術評論社の傳さん、ありがとうございます。


今日のお昼過ぎに手元にとどきまして、さっそく読んでみました。
Javaに特化した内容が多いですが、JenkinsやCI初心者にお勧めの一冊です。
CIとは何か?Jenkinsの使用するためのはじめの一歩的なところを丁寧に説明されています。
Jenkinsのインストールから、SCMの具体的な設定方法、コンパイルとJarへのパッケージングや、ユニットテストカバレッジ、静的解析(インスペクション)の具体的なやり方やデプロイなど、一通りCIで行えることが記載されています。
初心者は特に、何をしたらいいのかわからない、何ができるのかがわからない、ということで躊躇しがちですが、この本を読む限りそういうことはないでしょう。
また、もうすでにプロジェクトに導入し、使用している人たちにとっては、Viewのカスタマイズやファイル指紋、BTSなどのほかのツールとの連携など、より一層Jenkinsを便利に使う方法が記載されています。
それだけでなく、Jenkinsのプラグインの開発方法や、分散ビルド、パフォーマンスチューニングなど、より深く使用するための方法も記載されています。
この本は内容のボリュームはあるのですがページ数が320ページほどで、このボリュームを説明するにはいささか少ない印象です。
あと100ページぐらい欲しいと思えるほど、もっと深く知りたい内容が含まれています。


簡単な紹介でしたが、今まさにJenkinsを使いたい、使ってる人にとっては一読してみる価値はあると思います。
プロジェクトに明日から使える、便利な方法や発見があるかもしれません。