Jenkins実践入門

想定読者は(Javaとsubversionを使って開発している)ユーザーかなぁ。内容も基本的な内容だし、実際軽く読めた。

例えばJenkinsは使ったことないけど、使ってみたいPython使いとかPerl使いがいきなり読んでも理解するのは難しいかなと思った。まぁ、他の言語でJenkinsを使う場合にどうしたらいいのかポインタくらい示しておいてくれてもイイような気がするが(見逃してるのか?)。

Python

Perl

Scala

ひととおり手を動かしてから8章まで読めば大体理解できそうな気がする。僕もPythonで一通り動かしてあったのでサラっと流し読み程度でよかった。

役に立ったのが9章からで

  • seleniumで自動的にテスト
  • バックアップとリストア
  • Jenkns Job Configuration History Plugin
  • Jenkinsアンドロイドアプリ

もう少し積極的にJenkinsを使っていこうっと。

今日の畑(111113)

雑草が生えまくっていたのでざっと草取りしたら2時間経ってしまった。

にんにくは順調に育っている

1321264610

さらに順調なのが人参

1321264603

少し間引いた。

1321264606

人参の葉はふりかけにすればいいのか、今度やってみよう

今日の収穫は、間引いたほうれん草と人参、浅葱

1321264608

家に帰ったら娘と一緒にプランターに土を入れてラディッシュの種を撒いた。去年は畑にまいて、しかもすじまきしたため間引くのが大変だったという経験を生かして、今年はプランターで点まき。

ちょっと遅いかなとも思うが、成長が悪いようだったら部屋の中に入れればいいやと。

息子の誕生日なので肉まんをつくった

息子の希望により、皆で肉まんを作った。娘が色々手伝えるようになったおかげで進捗速度がアップした。

子供作の肉まんを最初に蒸したので形が悪いが、味は良かった。餡のバリエーションをもう少し考えたいところ。

1321186819

ProductName ウー・ウェンの北京小麦粉料理
ウー ウェン
高橋書店 / 1680円 ( 2001-11 )


これも息子のリクエストによる、アイスのケーキ(カーズバージョン)

1321186822

これは個人的にはまぁまぁであった。というより家族的にもまぁまぁだった。

web配色

下のスライドを見たら、あとはkulerでも使えばいいと思う。

ProductName ウェブ配色 コーディネートカタログ
坂本 邦夫
技術評論社 / 2604円 ( 2011-02-23 )


ホップ、スキップ、ジャンプ (schemeで継続)

scheme 修行では早々に継続(letcc)が出てくる。

(define rember-upto-last
  (lambda (a lat)
    (let/cc skip
       (letrec
           ((R (lambda (lat)
             (cond
              ((null? lat) (quote ()))
              ((eq? (car lat) a)
               (skip (R (cdr lat))))
              (else (cons (car lat)
                  (R (cdr lat))))))))
         (R lat)))))

これはリストの中の指定した要素以降のリストを返す(要素が見つからなければすべてのリストを返す)

gosh> (rember-upto-last 'three '(one two three four five))
(four five)

なんでも継続によれば継続とは

「現在の計算を続行するための情報」

とある。つまりこれが継続ということだが、Scheme修行では別の表現がされていた(p.43)

letcc hopを通り過ぎたあと、(hop M)に遭遇する前にすべきだったことを忘れなさい。そしてMが何であっても まるで (letcc hop M)の値を求めたかのようにふるまいなさい

上のコードでは、skip (R (cdr lat))を通るときに今まで計算してきた情報を捨てて、(R (cdr lat))を実行する。つまり現在の計算を続行するための情報 を伴ってRにジャンプしている。

ProductName Scheme修行
Daniel P. Friedman and Matthias Felleisen
オーム社 / 2940円 ( 2011-06-15 )


舞茸、シメジ、豚バラの和風スープカレー

妻が同窓会で出かけていったので、夜は久しぶりに自作した。

昆布と鰹節でスープストックをつくって、炒めた豚バラと揚げたキノコを具にしたスープカレー

1321097323

出来はなかなかだと思うんだけど、子供達の食いつきは悪かった。あいつら、おやつにドーナツ食べていたからに違いない。

カレーが余っているので、明日はもう少し辛くしてソーメンでも入れて食べることにした。

ウェブデザインのつくり方、インターフェイスデザインの考え方。

「ウェブデザインのつくり方、インターフェイスデザインの考え方。」という本を読んだら、blogのデザインを弄りたくなったので、少し手を加えてみた。モバイル対応を目>的とした作業だったんだけど、結局モバイル対応はしてない。

本書を読めばデザインの基本的なレイアウトの話とか色の選択とか一通り押さえられるのでオススメですね。内容も図が豊富でわかりやすいし。

僕は、レスポンシブwebデザインに興味があったので、media-queryのあたりを読むために購入。

レスポンシブ・ウェブデザインってのは結局media-queryなんかを利用して

Media queriesはコンテンツを表示したブラウザの幅サイズを取得し、そのサイズに応じてCSSのプロパティを取捨選択するために使うプロパティです

というわけで、結局

さまざまな表示環境で同じHTMLをリソースとして活用できるようになります

とあるように、HTMLを使いまわす技法の一つということか。

一通り読んだあとで、じゃぁ、自分のブログシステムをレスポンシブ・ウェブデザインにしてみようとしたんだが、1カラムなんで別にフロートにする必要もないしサイドバー的なモノも用意してないから、特にやることがなかった。

色々検討していて、気がついたのはmedia-queryでCSSで切り替えるっていうのは結局CSSをいじることであってテンプレートをいじるのとは違うなぁと。例えば、モバイルデバイス向けにアドセンスを切り替えたりとか文書構造替えたりってのはテンプレートいじったほうが早いし、スマートだよなぁと。

結局WAFをいじくっているのであればそっちのテンプレートでゴニョゴニョと調整したほうが楽だよなぁと、自分はUserAgentみてWAFのテンプレート切り替えるほうが好きだわという結論に至り、レスポンシブ・ウェブデザインへの興味が急速に(指数関数のオーダーで)薄れたのであった。

とはいえ、スマホ判定したら別のURLにリダイレクトってのは好きじゃないかなぁ、意味論的に気持ち悪い気がする。それともlink rel="alternate"みたいな感じでどうにかできるのかな?

ここらへんがよくわかっていない。

ちなみにスマートフォンサイトを作るというテーマに絞るならば、以下の本が丁寧に説明してあって良いですね。

ProductName iPhone+Android スマートフォンサイト制作入門 (WEB PROFESSIONAL)
たにぐちまこと
アスキー・メディアワークス / 2499円 ( 2011-02-19 )


資本主義からの脱却

(株主)資本主義が行き過ぎだというのは同意するところで、じゃぁ次の世代はどうなんの?っていうあたりに興味がある。

個人のライフスタイルだと、幾つかの仕事を分散して持つっていう半農半Xとか、ニッチな仕事を束ねるような月三万円ビジネスとかね。これは、リスク分散として個人が取れる戦略のひとつじゃないかなと。

じゃぁ、社会はどういう方向に向かうのかね?

本書の主張は

経済システムの中心に生協的精神を設定して、最大利潤主義を除外すること

ProductName 資本主義からの脱却
エルヴェ ケンプ
緑風出版 / 2310円 ( 2011-03 )


金持ちに課税するのは当然だっていうスタンスで、巨万の富の遺産から税を徴収するべきというアイデアを再考すべきと述べている。

というような、アイデアが国連の一機関から1995年に既に提起されていたらしい。

Flaskでhamlish-jinjaを使う

Express+Jadeで幾つか書いていたらJadeの読みやすさに慣れてしまった。

FlaskでもHamlっぽい記法を使いたいなぁとググッてみたらhaml and flaskというエントリをみつけたので、この通りに入れてみた。

-extends "layout.html"

-block title
  Page Not Found

-block body
  %h1 << Page Not Found
  %p
    %a href="{{ url_for('show_entries') }}" << go somewhere nice

  %p << or find by tag
  %div.tags
  %script type="text/javascript"
    |$.getJSON('{{ url_for('show_jsontags') }}', null, 
    |  function(json){
    |    for (i in json.tags.sort()){
    |      $('div.tags').append("<a href=\"/tag/" + json.tags[i] + "\">" + json.tags[i] + "</a> ");
    |    }
    |  }
    |);

かなり読みやすくなった。入れ子をインデントで表現するのでPythonistaにはありがたいですね。ちなみにこっちがもとのjinjaのテンプレート。

{% extends "layout.html" %}
{% block title %}Page Not Found{% endblock %}
{% block body %}
  <h1>Page Not Found</h1>
  <p><a href="{{ url_for('show_entries') }}">go somewhere nice</a></p>
  <h1>or find by tag</h1>
  <div class=tags></div>
<script type="text/javascript">
$.getJSON('{{ url_for('show_jsontags') }}', null, 
function(json){
  for (i in json.tags.sort()){
   $('div.tags').append("<a href=\"/tag/" + json.tags[i] + "\">" + json.tags[i] + "</a> ");
  }
}
);
</script>
{% endblock %}

pipとかeasy_installで0.1を入れるとdiv#idとかdiv.classという記法が使えないので、GitHubの最新版を入れたほうがよいです。


ところで、HTML5においてセマンティクスが重視されると、デザインまわりはCSSに集約されていきHTMLタグとデザインっていうのは分離されていくと思うんですね(rdfとか昔っからあるし)。

セマンティクスってデザイナーというよりはプログラマー側が考えることだろうから、マークアップエンジニアとか呼ばれているヒト達はCSSエンジニアとかそういう名称になっていくの?

よくわからんので、今度誰かに聞いてみよう

ProductName HTML5&CSS3実践入門 最新Web標準を使いこなす (The Pragmatic Programmers)
ブライアンP.ホーガン
インプレスジャパン / 2940円 ( 2011-07-08 )


静岡(東部のあたり)ではHTML5の入門書の読書会をしています(宣伝)

Flask-Cacheを使ってみた

自作のブログシステムのなかにデータベースに頻繁にアクセスしすぎて困るAPIがあるので、Flask-Cacheを使ってキャッシュするようにした。

設定を読ませてからcacheの設定をしないといけない(まぁ当たり前か)のだけどapp.config.from_objectで読ませる前にCacheしてたらキャッシュが効かなくてちょっとはまった。

CACHE_TYPE = 'simple'

app = Flask(__name__)
app.config.from_object(__name__)
cache = Cache(app) # 設定読ませたあとに

ソースは読んでたらキャッシュのタイプはwerkzeugに任せているらしいので、そっちのドキュメントを読めば大丈夫な感じですね。