Issue Driven Developmentの流れ

dev No Comments »

Issue Driven Developmentについて。

Issueてなんだ → 「issueは、“議論されるべき課題”であり、必ずしもすでに害や困難が起こっていることを意味しません」(problemとissueの違いについて - 英語 - 教えて!goo)
「タスク&バグ」という感じで捉えています。

Issueを書き並べて、いっこいっこ潰していく開発手法です。Ticket Driven Developmentと同じ。
[Think IT] 第3回:チケットドリブン開発でバグ削減! (1/3)

開発の流れは以下。Github使ってやってます。

マイルストーンの設定

Githubのissuesではマイルストーンを設定することができます。「○○機能リリース」などと設定して使っています。

Issueの発行

現システムに対しての改善点や必要な機能などを洗い出し、どのマイルストーンに対して必要なものかを設定します。登録時にできるだけ担当者も決めるようにします。

開発

自分にAssignされたIssueをひとつ選び、作業に入ります。Issueごとにブランチを切るとよいです。(Issue #111の場合はこんな)

% git checkout -b issue111

(適当に作業します)

% git add .
% git commit -m '○○機能追加.Close #111'

コミットログを↑のように書いておくとpush時にGithubのIssueが閉じられます。

% git checkout master
% git merge issue111
% git push

ここまでやるとGithubのIssueが閉じられます。

% git branch -d issue111

push後、不要なブランチを消して次のIssueに取り掛かります。これの繰り返しです。

作業をしてるとIssueの内容と違うポイントが気になって編集したくなったりしますが、そこはぐっと我慢してちゃんとIssueを発行し別ブランチで作業するようにします。後で変更点を確認したくなった場合に探しやすいです。
TiDDの説明にもありますが、チケット無しのコミット禁止を守ることで意図のわからない変更がなくなってよいです。

ひとつのissueに向かうことで作業が散漫にならなくてよいです。あと、issueがどんどん消えて行くととても気持ちよいです。

マイクロフレームワークまとめ

dev No Comments »

ちっちゃなWebアプリ作る際に便利なマイクロフレームワークのまとめ。
Fitzgeraldはメンテされてなさそう。他、漏れてるものあれば教えて下さい。

Software Design 9月号読んでる

dev No Comments »


水曜日(2011.8.24)に届いたSoftware Design 9月号読んでます。
ハートビーツの馬場さんの『障害対処のしくみの設計と二次災害を起こさない心がまえ』が面白かった。
サーバトラブルの対応で心がぽきっといっちゃいそうになった人は読むといいかも。

”[アラート通知は誰が受けるか]”
"すぐ対応できる人に、すぐに対応できるタイミングでアラートを発報する"
”休日に発生したアラートでも、休日明けに対応すればよいもの、休日明けにならないと対応できないものは、休日にアラート発報しないことが大事です。非番のエンジニアに荒アートを飛ばしても、疲弊するだけでいいことはありません”

"[障害が発生したら、どのような態度で臨む?]"
"基本的には全員がいっせいに全力で対応にあたらないことです。"

"[判断の軸を決めておく]"
"ポリシーに優先順位付けをして、並列なものを作らないこと"

"[障害対応のときに冷静でいるためのポイント]"
"呼吸・口調・タイプスピードを意図的にスピードダウンする"

他にもいろいろいいことが書いてある。

リニューアル作業での注意点

dev No Comments »

今日はとあるサイトのちょっとしたリニューアル作業をやったわけですが、ちょっと注意すべき点があるなと思ったのでメモ。

アップする順序

(capistranoとか使ったことないけど、使える環境であればあんまり気にしなくていいことなのかな? Filezillaとか使ってファイルをぽちぽち上げる場合の話です。)
何も考えずにやると、先にHTMLファイルをアップロードして、追加された新しい画像(まだアップされてない)が表示できない、とかありがち。
表示がおかしくなる時間をできるだけ短くしたいので、新規ファイル → 編集した既存ファイル の順にやるのがよい。
既存ファイルの上書きは、がーっと超スピードでやる。表示が崩れてる時間をできるだけ短くしたい。
フォルダまるごとぽいっと上げればいいじゃん、という意見もありそうだけど気が進まない。。サーバに.svnが意味なく上げられてたり、Thumbs.dbあったりするとおえーーーっとなる。それだけの理由ならFilterしろよ、という話だけど、やっぱり意図しないファイルの上書きなど起きそうで怖いのでごそっとアップはやりたくない。

キャッシュ対策

既存ファイルを上書きしたのにブラウザがキャッシュしてて見栄えが変わらない、おかしくなる、という事態も極力避けたい。ファイルの指定をしてるところでファイル名のお尻に"?YYMMDD"とかつけるとよさげ。

/* CSSで画像を指定する場合 */
ul#nav li {
  background-image: url(/path/to/nav.gif?110811);
}

とか。Railsとかだと勝手にCSSやJS読み込むところに付けてくれますね。CSSファイル内で背景画像指定してるところまでやってくれるのか未確認。

ローカルとリモートの同期ブラウズ

よくimagesってディレクトリがどこそこに作られてる場合がありますが、違うimagesディレクトリにアップしないための対策として、ローカルでディレクトリ移動したらリモートも同様の階層に移動する、同期ブラウズ機能を使うのがよいです。Filezillaでこの機能を使ってますが、たしかWinSCPにもあったと思います。

今日思ったのはこんなところです。
(明日からしばし盆休みです)

圧縮してDLしてrmする1日

dev No Comments »

今日はMTGの他はだいたいサーバの容量を空けるのに時間を費やしました凹

# tar cvfz dirname.tar.gz dirname

して、DLして

# rm -f dirname.tar.gz
# rm -rf dirname

今日は何を勉強しようか
@kyokutyo
kyokutyo

・・・あまり使ったことなかったtarを少し学んだくらい?すぐ忘れてまたググると思うけど。
早くサーバの容量を空けるだけの毎日から抜け出さねば。。

Pythonでパスからファイル名を取り出す方法

Python, dev No Comments »

Pythonでパスからファイル名を取り出す方法メモ。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import os
 
filepath = '/path/to/file.name'
filename = os.path.basename(filepath) # file.name

このサイトを参考にした。
ファイルをアップロードするための Python CGI スクリプト

Linuxで特定ポートを使用しているアプリケーションを調べる

dev, ubuntu No Comments »
% sudo lsof -i:5433
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres 1208 postgres    3u  IPv4   5730      0t0  TCP localhost:5433 (LISTEN)

postgresが5433で動いてる。Ubuntuアップデートと同時にPostgresもバージョンアップされたようで、8.4ではデフォルトで5433使ってるようだ。

ここ見てやった。
Linuxでアプリケーションが使用中のポート番号を調べる - 日々の報告書

svnでファイルの更新履歴を確認

dev, svn No Comments »

svnメモ。あるファイルの特定箇所の更新履歴を知りたいとき。

% svn log -v /path/to/file | lv
------------------------------------------------------------------------
r999 | kyokutyo | 2010-01-01 12:12:12 +0900 (金, 01 01月 2010) | 3 lines
変更のあったパス:
   M /path/to/file
   M /path/to/other1
   M /path/to/other2

○○変更

コメントを頼りに該当のコミットのバージョンを知る。ちゃんとコメント書いててよかった。

% svn diff -r 998:999 /path/to/file | lv

1つ前のバージョンと比較して更新箇所を確認。svn logとsvn diffとでタブを分けて見るといい。

Sinatra入門

dev No Comments »

Sinatraをいじってみた。
まずSinatraのインストール。

% sudo gem install sinatra

適当なディレクトリを作ってhello.rbを置いてみる。

% mkdir sinatra-project
% cd sinatra-project/
% vi hello.rb

hello.rbの中身。

 
#!/usr/bin/env ruby
 
require 'rubygems'
require 'sinatra'
 
get '/' do
  'hello'
end
 
% ruby hello.rb

して、http://localhost:4567/ をブラウザで開くと'hello'と表示される。

view使ってみる。hello.rbの修正

 
  'hello'
 

の部分を

 
  haml:index
 

に変更。

% mkdir views
% vi views/index.haml

index.hamlの中身。

 
!!! XML
!!! Strict
%html{html_attrs('ja')}
  %head
    %meta{'http-equiv'=>'Content-Type', :content=>'text/html', :charset=>'utf-8'}
    %title こんにちは
  %body
    #profile
      .left.column hello
 

ふたたび

% ruby hello.rb

してlocalshot:4567を開くとエラー画面。

hamlインストールしてみて、再度チャレンジしたらうまくいった。

% sudo gem install haml
% ruby hello.rb

出力されるHTMLは下記。

 
< ?xml version='1.0' encoding='utf-8' ?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang='ja' xml:lang='ja' xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <meta charset='utf-8' content='text/html' http-equiv='Content-Type' />
    <title>こんにちは</title>
  </head>
  <body>
<div id='profile'>
<div class='left column'>hello</div>
</div>
 
  </body>
</html>
 
[sinatra-project]
  ├ hello.rb
  └ [views]
      └ index.haml

おわり。

開発サイト閲覧中にKeyboard Shortcutで本番サイトを開く

bookmarklet, dev No Comments »

ローカル開発環境作る時のルールとして http://hogehoge.com/ というURLのサイトの場合、開発環境は http://hogehoge.com.kyokuto/ にするようにしてる。で、開発中にすぐ本番サイトが開けるようにしたかったのでブックマークレット書いた。

開発環境 http://hogehoge.com.kyokuto/fugafuga/dododo.html を見てる時には http://hogehoge.com/fugafuga/dododo.html が開かれる。URL中の'.kyokutyo'を削るだけ。こんなんでいいんだろうか。

簡単に本番サイトが開けるブックマークレット

FirefoxのCtrl+D(このページをブックマーク)を使ってなかったのでキーコンフィグでこのブックマークレットに割り当てた。まーまーよい。

Powered by WordPress | WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in