TIM Labs

2011年3月アーカイブ

はじめに

過去に私が Haskell を学び始めた時、 真っ先に疑問に思ったことは モナド の存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの本質が何なのか概要を示す。 正確な説明は 数多あるモナドについてのチュートリアル を参照されたい。

mercurialでは一度おこなったコミットは基本的には取り消せません。ブランチを作成するためにもコミットが必要なため、gitのようにカジュアルにブランチのリネームを行う事ができません。ここではそんな中でも何とかブランチをリネームするための3つの方法を紹介したいと思います。

これは新卒準備カレンダー 2011春の一記事です。
これから IT 業界に入ってくる人たちに向けて。

Javaの開発者でEclipseを利用されている方は多いと思います。 通常のEclipseをインストールするとJavaの開発用ツールが一式はいりますが、その中にJavaのデバッグツールも含まれます。

TomcatやJetty、WebLogicなどのWebアプリケーションサーバ上で動くWebシステムを開発する際、ローカルにWebアプリケーションサーバを入れその上で動かしながら開発を進めていくのが一般的だと思います。

EclipseではTomcatプラグインなどWebアプリケーションサーバ固有のプラグインでのデバッグ実行、もしくはEclipseに「サーバ」としてWebアプリケーションサーバを登録し、そこからデバッグ起動することでEclipseからデバッグをすることができます。では、手元のマシン(ローカル)以外で動いているアプリケーション(Webアプリはもちろんバッチなど)はどのようにしてデバッグすればよいのでしょうか。

問題

「トピックブランチをばんばん作ってある程度のところで統合ブランチへマージする」 という開発スタイルを行っていたとしましょう。 例えばバージョン1をベースにガリゴリとトピックブランチを作って統合ブランチへマージし、 一区切りついたところでバージョン2としてリリースするといった具合です。

マージするトピックの数が数個であれば特に問題はないのですが、 10や20になってくると git log を眺めてもどのトピックブランチが取り込まれているのか一目では分からなくなってきます。 例えば git log master..$topic の出力が空であれば $topic が取り込まれていないことは分かりますが、 10や20もトピックブランチがある状態ならばこんな方法で1個づつ調べる気は起きません。 どうにかして統合ブランチへ取り込まれたトピックブランチの一覧を抽出する方法はないでしょうか。

Javaのプログラムを実行した際、なんらかしらのバグや高負荷によりハングアップのような状態になることがあります。そうした際、jvmのスタックトレースを見ることでどこの処理まで到達しているか、またどの辺りでとまっているかを調査することが可能となります。

では、どのようにすればjvmで実行中のプログラムのスタックトレースを取得できるのでしょうか。

Mercurialは、Merucurial拡張という拡張モジュールを使って、Merucrialの挙動をいろいろ拡張できるようになっています。 デフォルトのままだと使いにくいので、Mercurialを使う上で便利にしてくれる拡張を設定しておきましょう。 デフォルトでバンドルされているMercurial拡張は、Using Mercurial Extensionsにまとめられています。

今回はGit使いがMercurial使いに転職するときに、Gitで実現できたことをMercurialで実現するための、組み込み拡張、および、サードパーティ製の拡張について紹介します。

SAStrutsで複雑なレイアウトのHTMLを組み立てるときtiles:insert、tiles:putを利用していました。しかし次の問題点からtiles:putの利用を取りやめてしまいました。

  1. tiles:putにはaddが存在しない。
  2. tiles:putでキャプチャした文字列は、2段目以降のテンプレートで参照できない。

そこでこれらの問題を解決するために、Railsのcontent_forに似せたカスタムタグライブラリtags-captureを作りました。

問題

「トピックブランチをばんばん作ってある程度のところで統合ブランチへマージする」 という開発スタイルを行っていたとしましょう。 トピックブランチでの作業中や統合ブランチへマージする前など、 状況確認のためにトピックブランチに対してどれだけ変更が行われているか調べることはよくあります。

コミットした数が大したことないのであれば単に git log を実行して 最初の数コミット分だけ眺めれば済む話なのですが、 余分なものが表示されると五月蠅いですし、 コミット数が増えてくるとさすがに面倒になってきます。 どうすれば必要な分だけ列挙することができるでしょうか。

mavenとclosure-compilerの統合方法はclosure-compilerのイシュートラッカーのIssue 37: Maven integrationで紹介されています。 ただ、ここで紹介されている方法は、リポジトリにコミットされているclosure-compilerのjarを呼び出す方法です。 なるべくjarをコミットしてたくないので、mavenの依存関係としてダウンロードされたjarを利用する方法について調べてみました。

テストしたい機能がデプロイされているかどうか確認するためにアプリのリビジョン番号を埋め込というのはよくある話です。

mavenでこの機能を実現するプラグインが存在しないか確認したのですが、とくに存在しなかったようなので、弊社のプロジェクトでは次の様な設定をpom.xmlに設定してリビジョン番号を取得しています。

問題

git submodule で他のリポジトリ(以下「サブモジュール」)の内容を埋め込むことが簡単にできるのですが、 ごく稀に追加したサブモジュールを削除したくなる場合があります。 サブモジュールの追加や更新は git submodule addgit submodule update で簡単にできるものの、 何故か git submodule rm サブコマンドはありません。 どうすれば削除できるのでしょうか。

このアーカイブについて

このページには、2011年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年2月です。

次のアーカイブは2011年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。