<< 10月 2011 | Home | 12月 2011 >>

JIRA 4.4.3 のインストール/アップデート(バージョン 4.4 から) #JIRA #atlassian

JIRA はAtlassian社のJava ベースの人気バグトラッキングシステムで、JBossApacheCodehausでも使われています。
とっつきやすさと高機能をうまく両立しており、また見た目が洗練されている素晴らしい製品です。
オープンソースプロジェクトへは無償ライセンスを提供してくれるので私のプロジェクトでも使っています

今回は4.4から4.4.3へのアップデートをしました、新規インストールの手順もほとんど同じです。

1. 現行 JIRA のバックアップ、新規インスタンスでインポート
既存 JIRA インスタンスより、
ADMINISTRATION > Import & Export > Backup Data to XML
File name: jirabackup111123.xml > "Backup"

無事成功すると Data exported to: /Users/yusukey/jirahome/export/jirabackup111123.zip
と表示されます。(JIRA4.4からはzipで圧縮されるようになったみたい)
ここで現行インススタンスはシャットダウンします。

2. Atlassian より最新版をダウンロード
http://www.atlassian.com/software/jira/JIRADownloadCenter.jspaより atlassian-jira-4.4.3.tar.gz をダウンロードします。

3. データベースの作成

$ ./mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17958
Server version: 5.1.48 MySQL Community Server (GPL)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database jira443 character set utf8;
Query OK, 1 row affected (0.04 sec)

mysql> Bye


データベースを作成したら、以前は conf/server.xml 内にコネクションプールの設定をしていましたがこれはJIRAの管理画面から設定するように変更になりました。なのでウチのサーバーでは&コンテクストパスを"/jira"に設定しただけです。
<Context path="/jira" docBase="${catalina.home}/atlassian-jira" reloadable="false">


4. JIRA Configuration Toolによるデータソース、JIRA_HOMEの設定
以前はatlassian-jira/WEB-INF/classes/entityengine.xmlを手動してデータベース接続先を指定していましたが、今回からJIRA Configuration Toolという簡単なGUIで設定をできるようになりました。Configuration Toolはbin/config.shまたはconfig.batで起動できます。
または初回起動後にWebUIで設定することもできるそうです。

Configuration Toolの画面

データベース接続の設定内容は $JIRA_HOME/dbconfig.xml に、またJIRA HOMEはatlassian-jira/WEB-INF/classes/jira-application.propertiesに保存され、手動で変更することも可能です。

ちなみにdbconfig.xmlの内容はこんな感じになります。
<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
<name>defaultDS</name>
<delegator-name>default</delegator-name>
<database-type>mysql</database-type>
<jdbc-datasource>
<url>jdbc:mysql://localhost:3306/jira443?useUnicode=true&amp;characterEncoding=UTF8</url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<username>yusukey</username>
<password></password>
<pool-size>15</pool-size>
<validation-query>select 1</validation-query>
</jdbc-datasource>
</jira-database-config>


以前はMySQLで文字化け対策としてJDBCURLに useUnicode=true&characterEncoding=UTF8 と指定していましたが、Configuration Toolは自動的にこれらを追加してくれるみたいです。

5. server.xmlの設定
ウチのサーバではApacheをフロントに立ててAJPで接続しているのでAJPコネクタをセットアップします。また使わないHTTPコネクタは無効に設定。

<Server port="9005" shutdown="SHUTDOWN">
.
.
.
<!--
<Connector port="8080"
.
.
.

</Engine>
<Connector port="9009"
maxHttpHeaderSize="8192" maxThreads="20" minSpareThreads="20" maxSpareThreads="20" useBodyEncodingForURI="true"
protocol="AJP/1.3" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="600000" disableUploadTimeout="true" />
</Service>
</Server>


6. JIRA の起動
startup.sh より起動。start-jira.sh というスクリプトもあるけど何が違うのかは不明。

7. データのインポート
JIRA にアクセスし、インポート。
Import Existing Data
File name: /Users/yusukey/jirahome/export/jirabackup111123.zip
エクスポート時はディレクトリが固定されていて入力できないのにインポート時はフルパスで入力する必要があります。

以前はインポートが進んでいるのか、実は裏でOutOfMemoryErrorが発生しているのかわかりませんでしたが今回からインポートの進捗状況が表示されるようになりました。便利!

インポート中の状況表示

8. アップグレード完了!
以上でバージョンアップが完了。

9. メールセッションの設定
以前、JIRA の管理画面からは Google Apps 等 SSL しか受け付けない SMTP サーバを設定することはできず、server.xmlにメールセッションというのを設定しておく必要があったのですが今回から(?) PROTOCOL: SECURE_SMTP というのを指定することで SSL で SMTP サーバに接続できるようになりました。

メールサーバの設定画面

関連記事:
JIRA 4.4 のインストール/アップデート(バージョン 4.3.4 から) #JIRA #atlassian - 侍ズム
JIRA 4.3.4 のインストール/アップデート(バージョン 4.3 から) - 侍ズム
JIRA 4.3 のインストール/アップデート(バージョン 4.2.2 から) - 侍ズム
JIRA 4.2.2 のインストール/アップデート(バージョン 4.2.0 から) - 侍ズム
JIRA Git Plugin のインストール - 侍ズム
JIRA 4.2 のインストール/アップグレード(バージョン 4.1 から) - 侍ズム
JIRA 4.1 のインストール/アップグレード(バージョン 4.0.2 から) - 侍ズム
JIRA 4.0.0 から JIRA 4.0.2 へのアップグレード - 侍ズム
アトラシアン(Atlassian)製品の価格と購入方法
Atlassian が JIRA4 をリリース - 指名ユーザライセンス制を導入 - 侍ズム
JIRA 3.13.1 へ FishEye プラグイン 2.3 をインストール
JIRA をバージョン 3.13.1 へアップデート - 侍ズム
FishEye 1.6.3 のインストール
JIRA をバージョン 3.12.3 へアップデート

このエントリーをはてなブックマークに追加   

ATOKが間違えて覚えてしまった省入力候補を忘れさせる方法 #atok #mac

「こん」と入力すると「コンシューマキーコンシューマシークレットアクセストークンアクセストークン」とかやたら長い意味不明の省入力候補が出てくる症状に悩まされていました。

ものすごい変換候補

Twitter APIポケットリファレンスを書いているときに間違って覚えられてしまったものと思われます。

削除しようと辞書ツールを起動してみるものの、辞書に登録されていないようで見つからない・・・。
調べてみたところ ctrl + del で忘れさせられるみたい。
省入力候補・推測変換候補を削除する:ATOK即効テクニック

MacのdeleteキーはWindowsでいうところのbackspaceなので、ctrl + delのかわりにctrl + fn + deleteで削除できました。


めでたしめでたし。

このエントリーをはてなブックマークに追加   

Twitterで使っているScalaで書かれたオープンソースのメッセージキューサーバー、Kestrel

Kestrelは大規模かつ高速に運用できるメッセージキューサーバーです。Twitterで使っています。
ソースはhttps://github.com/robey/kestrelよりチェックアウトできます。

・特徴
Kestrelは特徴として
- memcachedプロトコルをサポートしており、クライアントのプラットフォーム非依存
- Scalaで書かれており、高速なJVMの恩恵を受けることが出来る
- 全部で2500行ほどとシンプル
- 基本メモリベースで高速だがメッセージはファイルシステムにジャーナルが記録されており耐障害性が確保されている
- キューから取り出したメッセージをクライアントがacknowledgeするまで捨てないことで処理漏れを防ぐことができる
といったことが挙げられます。


・Memcachedプロトコル
Memcachedプロトコルの基本は非常に簡単で、setコマンドで値をセット、getコマンドで値の取得を行います。
Kestrelはメッセージキューサーバなので一度値を取得すると消えてしまうのが特徴です。
以下、Memcachedのプロトコルを簡単に説明した動画です。

左のターミナルがKestrelサーバ、右のターミナルがクライアント。telnetで直接memcachedプロトコルを喋ってます。
1. setコマンドでfooというキーでbarという値をセット
2. getコマンドでfooを取得
3. 再度getコマンドで取得しても値は空
というシナリオです。


・永続化
先の説明の通り、Kestrelはメッセージを永続化するのでサーバーが落ちて再起動してもメッセージをちゃんと取り出せます。
以下、動画によるデモ。

左のターミナルがKestrelサーバ、右のターミナルがクライアント。
1. setコマンドでfooというキーでbarという値をセット
2. Kestrelサーバをシャットダウン、再起動
3. telnetコマンドで再接続(サーバ起動まで何度か繰り返してます)
4. getコマンドで値が取得できる(サーバがジャーナルから値を復旧させた証拠)

・ブロックフェッチ
普通のMemcachedのようにキャッシュサーバとして使う場合は指定したキーの値が空であれば空だとすぐ返せばいいんですが、メッセージキューでるKestrelではキューが空の場合クライアントが繰り返しポーリングをするのは非効率的なのでメッセージがセットされれるまでクライアントをブロックさせるプロトコル拡張が行われています。
以下、ブロックフェッチのデモ。キー名に t=***** と追加するところがコツ。

左上がKestrelサーバ、右がクライアント1、左下がクライアント2
1. getコマンドでfooというキーを取り出してもすぐに空が帰ってくる
2. クライアント1で、get foo/t=10000000(1万秒末)コマンドでfooキューに値が入るのを待つ
3. クライアント2でfooキューに値をセット
4. ブロックフェッチしていたクライアント1で値がとれる(ポーリングの必要がない)

・リライアブルフェッチ
クライアントがメッセージを取得して、そのメッセージの処理が終わる前に落ちてしまった時にメッセージが消えてしまっては困ります。そこで、やはりMemcachedプロトコルに拡張を施しクライアントが確認のメッセージ(close)を送るまでサーバでメッセージを保留しておく機能があります。
以下デモ

左上がKestrelサーバ、右上がクライアント1、左下がクライアント2、右下がクライアント3
1. クライアント2、3でブロックフェッチかつリライアブルフェッチ
2. クライアント1でfooキューに値をセット
3. クライアント3に値が渡される
4. クライアント3がcloseをせずに接続を切る
5. クライアント2に値が渡される
6. クライアント2で取得した値を処理した旨(/close)と、次のメッセージをリライアブル&ブロックフェッチ
7. クライアント1でfooキューに値をセット
8. クライアント2で値が取得できる

・Kestrelのフォーカス外
KestrelはJava標準のJMSよりも簡単に利用でき、またサーバもクライアントもマルチプラットフォームという特徴がありますが一般的なMOMにできてKestrelに出来ないこともあります。

- メッセージの順序保証
Kestrelはいくらでも分散デプロイすることができ、超大規模に運用することができます。ただ、それぞれのサーバーが独立して動くので順序は保証されません。同じサーバーへ届いたメッセージは届いた順に配信されますが、クラスタ全体では「たいだい順序通り」に配信されることになります。

- トランザクション
Kestrelのメッセージ受信、配信処理はトランザクショナルではないのでデータベースやその他のリソースとの処理内容をアトミックに扱うことはできません。例えばメッセージを受信してacknowledge(closeコマンド)を送る前にクライアントが落ちた場合はメッセージが二度処理されることになります。

関連記事:
twitterでも利用されているメッセージキュー Kestrelを試す - ゆろよろ日記

タグ :
このエントリーをはてなブックマークに追加   

Evernoteでスタイルなし貼り付けをデフォルトにする方法 #evernote_hack

家と会社で別のマシンを使うようになり、最近もっぱらメモ類はEvernoteに書きためています。
・クラウドに(恐らく)セキュアに保存され、複数のMac、iPhone、iPadで共有できる
・文書を横断して検索しやすい(マシンを横断検索できるSpotlightの方が好きだけど)
・タイプしているそばから保存してくれるのでマシン固まった!→保存してない!!→死亡ということがない
、といった点で重宝してます。

ただ、キニナル点がいくつか・・・
1. 行番号、ケタ数が表示されない
原稿を書いていて文字数を気にしたい場合など不便。モノ書きはIntelliJ IDEAでしてます。

2. シンタックスハイライトがされないまぁ、コードを書くためのものではないので、やっぱIDEを使えってことでしょうね。ただ文章がメインの中にちょっとだけコード例を書く場面とか結構あるのでシンタックスハイライトしてくれるとうれしい

3. テキスト編集の挙動が時々変
例えば "12345"と書いて、2と3の間にカーソルを移動してエンター、"12"と"345"の二行に分かれた状態で"345"の先頭にカーソルと移動してバックスペースを押すと"12345"ではなく、1行目"345"、2行目"12"となる。たぶんバグ。
4. テキストがスタイル付
メモが主な用途ではテキストのフォントタイプとか色とか分ける必要がないです。でもWebサイトからとかExcel文書からとかコピペするとスタイル付で貼り付けられてしまい、見た目がチグハグになってしまいます。定期的に全テキスト選択、フォントタイプ設定、色を黒に設定、フォントサイズ統一、とかやるのは面倒すぎ。

といったところ。
1.〜3.については解決策が見つかっていませんが、4.についてはOSの機能を使うことで回避できることがわかりました。
やり方は簡単。システム環境設定のキーボード→キーボードショートカットでEvernoteのショートカットを上書きすること。デフォルトではcmd+vがスタイル付、shift+cmd+vがスタイルなしになっているので逆に設定します。
多くの場合スタイルなしで良いので(というかスタイル付で貼り付ける必要性を感じたことがない・・・)、だいぶスッキリしました。

システム環境設定でショートカットを上書き


ショートカットが入れ替わった様子

このエントリーをはてなブックマークに追加   

PCのウイルスを根こそぎ削除する方法

「PCのウイルスを根こそぎ削除する方法」を献本頂きました。ありがとうございます。

長年マカフィーに勤める著者がマルウエア(≒ウイルス)がどのような被害をもたらすのか、どうやってPCに感染するのか、またどのようにしたら感染を防げるのかといったことを体系的に説明しています。

ネットワークにつながなければPCは役立たないくらいネットワークが重要な時代で、マルウェアの感染を完璧に防ぐことはできないと思います。本書がユニークなのは感染してしまった場合にいかに被害を最小限に抑えるか、またどうやって復旧させるのかということも説明している点です。

主にWindowsにおけるウイルスの状況を説明していますが、ほとんどがMac、スマートフォンなど別のプラットフォームでも共通のことが書いてあるのでモヤモヤと「ウイルス怖い・・・」と思っている方は(思っていなくても!)一読すると良いでしょう。

モヤモヤっと「あぶないよ!対策しないと!」と訴えかけるだけでなく、技術的な側面からマルウェアが如何にしてソフトウェアに入り込んだり自身を隠したりするのかといったことも説明しているのが面白いです。
トロイの木馬を作成するツールなどが存在することはこの本を読んで初めて知りました。

目次:
第1章 PCに潜むマルウェアの実体
第2章 マルウェア感染による被害
第3章 マルウェアの感染機能
第4章 マルウェアはなぜなくならないのか
第5章 マルウェアを駆除する
第6章 マルウェアに感染しないために
第7章 感染被害の最小化と復旧
第8章 マルウェアとの戦いは続く



Mac用のアンチウイルス製品の情報はこちらに詳しく書いてあります。
Mac(マック)向けウイルス対策ソフト一覧 【製品&無料セキュリティ】

関連記事:
戦闘機資料がサーバー移動 三菱重工へのサイバー攻撃 - MSN産経ニュース
ID、パスワード流出の可能性、衆院サーバー不正アクセスで - MSN産経ニュース
asahi.com(朝日新聞社):日本大使館にもサイバー攻撃 公務パソコン数十台感染 - 社会

このエントリーをはてなブックマークに追加