<< 4月 2012 | Home | 6月 2012 >>

CodeZineの記事書きました - 効率的に情報収集をして差別化を図れ!

CodeZineの記事を書きました。
効率的に情報収集をして差別化を図れ! CodeZine

デベロッパーサミットで講演させていただいたのがきっかけで記事を書くことになりました。
前回のデベロッパーサミットは「10年後も世界で通じるエンジニアであるために」というテーマだったので、世界で通じるためには、またエンジニアとして差別化を図るためには情報収集は大事、という内容を話しました。
で、具体的にどのように情報収集しているのかと聞かれることが多かったので自分なりにどのように情報収集をしているのかをまとめたのがこの記事になります。
「情報過多時代を生き抜くエンジニアの「情報収集術」 第1回」とある通り、(他に書き手がいれば)第2回、3回とリレー的に繋がる予定です。

やや長めの記事になってしまったけれども強調したいのは「情報発信が大事」ということ。

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

コマンドラインメモ - 指定したポートでリスンしているプロセスを殺す

良くlsofでプロセスを見つけてkillすることがあるのでワンライナーにしてみた。

たとえば2223ポートをリスンしているプロセスを殺したければ以下の通り。

lsof -i:2223|grep "LISTEN"|awk -F " " '{print "kill -9 " $2}'|sh

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

コマンドラインメモ - kestrel(とか)を殺す。確実に殺す #kestrel

Kestrelのシャットダウンに失敗することがあるのでメモ。

ps aux|grep java|grep kestrel|awk -F " " '{print "kill -9 " $2}'|sh


そもそもシャットダウンに失敗する根本原因は調べてない!

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

Software Design 2012年6月号 - GitHub入門書きました #gihyosd

標記の通り、Software Design6月号の読み切り記事を書かせていただきました。

Software Design 2012年6月号|gihyo.jp … 技術評論社

デザイナーがファイルサーバーやバックアップツールを使って共有/バックアップするのに比べ、Git(Hub)を使うと何が嬉しいのか理解していく様をストーリー仕立てに対話形式で説明しています。

・実はまだ(分散)バージョン管理システムを使ったことがなくメリットが分からないエンジニア
・既にGit(Hub)を使っているけれども非エンジニアになぜ必要なのか説明するのが難しい/面倒
という方々にオススメです。
(後者の方は本誌を買ってデザイナーさんなどに「これ読んで」とプレゼントしてあげてください!)

GitHub入門とうたいつつもこれを読めば一通り使いこなせるようになる!という記事ではありませんので悪しからず。



また、記事のイラストはTwitter APIポケットリファレンスの各章のトビラ絵を描いていただいたイラストレーター@m_senjiにお願いしました。約一年ぶりの夢のコラボ!!!!!!

そうそう、Twitter API勉強会の隠れ(?)マスコットキャラクターを描いてくださったのも@m_senjiです。
(あのキャラクター、実は名前があってトトちゃんと言います)

コンテンツ:
・第1特集
Webシステム,データセンターで普及が進むハイパフォーマンスコンピューティング技術
・第2特集
ユーザの行動解析できてますか?Fluentdで実現! 大規模データのログ収集&活用
・一般記事
直感的にわかる! GitHub入門 みんなが使っているGitHub!
・一般記事
Ethernetのパケットを解剖!「生」ネットワークプログラミング 【前編】パケットキャプチャの作り方

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

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

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

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

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

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

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

3. データベースの作成
ウチではMySQLを使っているので以下の様な感じ。

$ ./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 jira504 character set utf8;
Query OK, 1 row affected (0.04 sec)

mysql> Bye


以前データベースへのコネクションプールの設定は conf/server.xml 内にしていましたがこれはJIRAの管理画面から設定するように変更になりました。

4. JIRA Configuration Toolによるデータソース、JIRA_HOMEの設定
以前はatlassian-jira/WEB-INF/classes/entityengine.xmlを手動してデータベース接続先を指定していましたが、JIRA4.4以降では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_HOMEの設定
以前はユーザーのホームディレクトリ/jirahome をJIRAのホームディレクトリとして認識してくれた気がしますが、今回から明示的に指定する必要があるみたいです。
bin/setenv.sh の4行目に指定します
#
# One way to set the JIRA HOME path is here via this variable. Simply uncomment it and set a valid path like /jira/home. You can of course set it outside in the command terminal. That will also work.
#
JIRA_HOME=/Users/yusukey/jirahome/


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

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

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

インポート中の状況表示

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

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

メールサーバの設定画面

関連記事:
JIRA 4.4.3 のインストール/アップデート(バージョン 4.4 から) #JIRA #atlassian - 侍ズム #samuraism
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 へアップデート

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

共通のフォロワーを抽出 #ruby

最近Rubyに触れているので慣れるためにTwitter APIを叩くサンプルコードを書いてみました。

指定したTwitterユーザー(2アカウント以上)の共通のフォロワーを出力するコード。

コンパクトにあっさりと、それなりにRubyっぽいコードになっている気がします。
jsonのパーサーを使わず正規表現で力業で抽出してるのがミソ(?)。&で配列の共通要素を抽出できるのがめちゃめちゃ強力!

Rubyの文法はざっくりとわかったけど大事なのは言語の文化。JavaでRubyっぽくは書けないけどRubyでJavaっぽくは書けてしまいそうなので慣れないといけませんね。

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

【最新版】Maven Central Repository へのライブラリ登録方法 #maven

Maven Central Repository へのライブラリ登録方法を4年前に書きましたが、今ではこの方法は使えません便利ライブラリ・フレームワークを書いている人はこれを参考にガシガシ登録してもらえれば幸いです。

当然ですが、全ての方法は本家maven.apache.orgに書いてあります。
Guide to uploading artifacts to the Central Repository
はい、英語です。ナナメ読み難しいですね。

押さえておくべき点を日本語で並べます。
1. 必要なメタデータを書いておく
pom.xmlはパッケージング方法やdependencyさえ書いておけばプロジェクトのビルドに差し支えありませんが、Maven Central Repoに登録するにはソースコードがどこにあるのか、ライセンスは何なのかといったビルドには直接必要ないメタデータも記載しておく必要があります。
Twitter4Jのpom.xmlを参考に埋めておけばok。

2. pgpでjarを署名する
以下のページを参考にPGPでjarを署名します。
How To Generate PGP Signatures With Maven - Repository - Confluence

3. Sonatypeにartifactを登録する
SonatypeはMavenのプロジェクト管理ツールを出している会社で、OSS向けには無償で利用できるoss.sonatype.orgがあります。
Sonatype.org: Nexus
また手抜きですが、以下のページを参考にSonatype JIRAにアカウント作ってくださいというリクエストを出します。
Sonatype OSS Maven Repository Usage Guide - Repository - Confluence

参考までにTwitter4Jのリクエストはこれ
[#OSSRH-183] request for creation of a maven repository for Twitter4J - Sonatype JIRA

4. mvn releaseプラグインでSonatypeにリリースする
mvn release:prepare; mvn release:perform でリリースできます。
また事前に以下の様に settings.xml にsonatypeのid、パスワードを記載しておく必要があります。

<settings>
<servers>
<server>
<id>sonatype-nexus-staging</id>
<username>yusuke</username>
<password>*********</password>
</server>
</servers>
</settings>

releaseプラグインを呼び出すコマンドは以下の通り。
$ mvn release:prepare -Darguments="-Dmaven.test.skip=true"
$ mvn -e release:perform -Dgpg.passphrase=**** -Darguments="-Dgpg.passphrase=**** -Dmaven.test.skip=true"

5. oss.sonatype.org でリリースする
releaseプラグインでリリースしたものはsonatypeには入りますがまだCentral Repoには入りません。
oss.sonatype.orgにログインして、Build PromotionのStaging Repositoriesをクリック、自分のartifactを選択してClose→publishします。NexusよりStaging Completed,Promotion Completedとメールが二通来てから1時間くらいするとCentral Repoに反映されます。


以上非常にざっくりとした解説ですが、何か詰まった点があれば@yusukeに聞いてください。加筆していきます。

関連記事:
2012-05-07 - @vvakame の日記

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

ジョン・カーター

を観た。
http://www.disney.co.jp/johncarter/

オープニングから圧巻の展開。ついて行けない観客を待つこともなくグイグイ先に進む。

星間ワープ、異星人、飛空艇、戦争、恋愛、ヒーロー、アリーナでモンスターによる公開処刑、火星文明、で構成される映画。
レッドプラネット、マイティー・ソー、スターウォーズ、スターゲート、アバター、Unreal初代ソロプレイを全部一緒にした感じ。

詰め込みすぎ・・・。
娯楽作と割り切れば楽しいかな?

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