2011年7月31日日曜日

crontabメモ

crontabの使い方メモ。

■crontabとは?

設定した時間になったら、設定したコマンドを実行する子です。

■crontabの設定例

crontabに-eオプションをつけることで、設定ができます。
実行すると、画面が切り替わります。初めて設定する場合は白紙?な画面。
以降は、viエディタなかんじで記述します。
設定項目は左から「分」「時」「日」「月」「曜日」「実行コマンド」で書く。


$crontab -e

//(例1)毎時10分になると「hello」と出力。
10 * * * * echo "hello"

//(例2)毎日12時になると「iitomo」と出力
00 12 * * *  echo "hello"

//(例3)2分おきにdateコマンドを実行して、ログファイルに出力
*/2 * * * * date >> /Users/dateLog.log


■crontabの確認


crontab に -lオプションをつける。

$ crontab -l
*/2 * * * * date >> /Users/dateLog.log

//実行確認
$ ls
dateLog.log

$ view dateLog.log
Sun Jul 31 15:14:01 JST 2011
~
~
~
~
~
~
~
~
~
~                                                     
"dateLog.log" [readonly] 1L, 29C

■実行するユーザーを限定したいとき

-u オプションをつけてユーザーを限定します。

//user1さんの設定するcrontabを表示する
$crontab -u user1 -l


以上!

2011年7月30日土曜日

Redmineを試してみた。

今回はRedmineというOSSの紹介してみようかと思います。


Redmineというのは、プロジェクト管理のソフトウェアでウェブブラウザを介して使われるものなのですが、OSSなので自由に誰でも使えます。
(ベースはruby on railsらしい)

とりあえず試しにインストールしてみました。

ここ(http://redmine.jp/download/)からダウンロードして、All in oneインストーラを使っていれてみました。オフィシャルじゃないのですが、ちょろっと試してみる分には、こっちでいいかなと思ってこっちにしました。

Macに入れたので、Macを選んで、zipを落として解凍してウィザードたちあげーの、インストール!

とりあえず試しに「飲み会プロジェクト」を立ち上げてみました。



で、一人でやるわけものでもないので、メンバーも追加できたりします。このメンバーにつける権限によって、プロジェクトそのものを管理できる人にしたり、報告だけさせる人にしたりなどいろいろできます。



またまたプロジェクト管理に必要な、wikiだったり共有すべき情報を発進するニュース掲示場所だったり、プロジェクトの進捗管理ができるガントチャートが作成できるようになります。

Redmineでは「チケット」と呼ばれるものがあって、これが要はたぶん「タスク」ってことになってると思います。これを追加/更新していくと、ガントチャートに反映されるようになってます。




















ガントチャートも、スケジュール予定と現在の進捗割合、そして今日の日付が赤いラインで表現されるので、現在の進捗割合がスケジュール予定と比較してどうなのかが一目で分かります。







こういうのを、(すごい地味だけど)エクセルで管理することもできますが、まあなんか自動化してくれるほうが楽だし嬉しいですねー。

10分くらいしかいじってないですが、まあなんか使いやすそうなので試してみると良いんじゃないかなーと思いました!

*チュートリアル?みたいなのがあって、見るだけでもなんとなく雰囲気がわかるのですが、実際自分で触ると結構楽しいので、おすすめ。

2011年7月23日土曜日

【振り返り】プロジェクトマネージメント的な。


前にプロジェクトマネジメントなメモとかいって、投稿したのですが
それについての振り返りをしようかと。

特に「進捗状況の「見える化」」について。

結論としては

・ちょっと工夫した進捗報告の方法が案外良かった!
・自分ができてるとおもっても、できてないってことを実感した

っていう2点です。




では長々と書いてみます。

今回いろいろ縁あって?プロジェクトマネージャーという役割をいただいて、約2週間程行動していたわけですが、まあいろいろありました。
難しいなと感じることがたくさんあって、メンバーに迷惑をかけたなと思うことが今でもたくさんあって。それでも最終日に「お世話になりました」とか丁寧に声をかけてくださったりするメンバーもいて。

そんな中で、進捗をどう周知させるか、っていうのが私の中の一つの課題でした。

私が進捗を把握するのは、ぶっちゃけ簡単で、「どうなってますか?」と聞けばいいのだけど、メンバーが他のメンバーの進捗を知ったり全体の進捗を知るのは難しそうだったので(それぞれやることがおおくて、それで精一杯的な)、
1~2時間に1回のペースでチーム内の進捗報告会を行うことにしてました。そうすることで、私も進捗を把握できるし、メンバー同士も進捗を把握できると思ったから。



そう思ったんですけど、実際はできてませんでした。



あるチームメンバーから「もっと全体の状況を把握したい」と言われて、「え、チーム内進捗会してんじゃん」と思ったんですが、、、

要は、自分の進捗をどうまとめるか、どう表現するかに夢中で、他のメンバーの進捗報告に耳を傾ける余裕はあまりなかったようです。。。

原因としては2点かなと。

(1)余裕をなくしてしまうほどのスケジュールの詰めっぷり(原因は私の時間管理ミス)

(2)「このチーム進捗会は、チームとして全員で進捗を把握するもの」というのを明確に示していなかった(たぶんメンバーは、私のための時間だと思っていたと思われる)

もちろん、「メンバーに聞く気がないのがそもそも!」っていう意見もあるかもしれないけど、たぶんそんなもんだと思う。
中学/高校のときのホームルームの日直の話なんて、誰も聞かないのと一緒でw

そして、どうしたらいいかなーとかんがえて、上の人とも相談した結果

「メンバーの進捗報告を他のメンバーにさせる」ってことをしてみました。

つまり、普通はAさんの報告はAさん自身がするんだけど、そうではなくて、Aさんの報告はBさん、Bさんの進捗はAさんが報告する。というかんじにしました。

そうすると

・他人の進捗をまず「理解」するところから始まるので、その人の進捗は嫌でも把握することになる。
・他人の進捗をしどろもどろながら代わりに報告してるとなぜか「聞いてあげよう」的な空気が生まれるw
・よくわからないけど、盛り上がる

ってことになって、結構いいかんじになりました。

ーーーーー
何かしなければならないことがあって、それに対しての対策を何かしらしたとします。
それだけで「よし、できてる」と思うのは、かなりおバカさんでした。

もっとちゃんと、ある意味「疑いの目」を持って、状況をじっくりと観察して、目標を達成できているかどうかを判断することが重要だな思った訳です。

ーーーーー

#なにこれ、日記?w

2011年7月18日月曜日

【Linux】root に パスワード

メモすぎるメモ。

Ubuntuでいろいろやっててroot権限になろうと思ったらパスワードを聞かれた。
でもパスワード設定した覚えがない。。。と思って調べてたら、
インストール時にはrootのパスワードは設定しないらしい。
なので、設定。


gunso@ubuntu-vm:~$ sudo su -
[sudo] password for gunso: 
root@ubuntu-vm:~# 

2行目で、現在のユーザー(ここではgunsoさん)のパスワードを聞かれている。入力すると3行目のようにrootに変身したことがわかる。

とりあえずrootにはなった。今度はパスワード設定。

root@ubuntu-vm:~# passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully


#passwdでパスワード設定。
設定したいパスワードを2回入力して、successfullyでした。

一応、できたかどうかテスト。


root@ubuntu-vm:~# su - gunso
gunso@ubuntu-vm:~$ su
パスワード: 
root@ubuntu-vm:/home/gunso# 


gunsoさんになってからの、rootさん。
無事できました。

【参考ページ】

2011年7月16日土曜日

VMware PlayerでUbuntu

というわけで仮想化ってみました。

VMwareとは、ホストOS(普通にPCに入ってるほう)上で仮想的にもう一つのOS(ゲストOSともいう)を動かしてしまうデキル子です。

今回はWindowsVistaにVMware Playerを使ってUbuntuを入れてみました。その手順をメモメモ。

【VMWare Playerのダウンロード&インストール】

・まずはダウンロードです。以下のサイトからダウンロードします。

会員登録(といっても、名前とアドレスくらい)をして、VMware Playerをダウンロードします。


・exeファイルを実行するとウィザードが立ち上がるので、それに沿ってインストールをします。
・基本的には「次へ」でOK。保存先とかを変更したいときは適宜変更してください。
・インストール完了後、再起動が求められるので、再起動しておきます。
・デスクトップにショートカットをつくるとこんなかんじです。


【Ubuntuのダウンロード】
・以下のページにある、「ubuntu-ja-8.04-vmware-i386.zip(仮想マシン本体) (md5sum: 4a4bfa740222d7adb6855dd53fcc646f) 」からzipファイルをダウンロードします。

740Mくらいあって、重いので(さらにイーモバだと遅い)、昼寝でもしましょう。

・出来たら、解凍します。



【Ubuntu起動!】

・まずは、VMware Playerを起動しましょう。起動したら「開く」を選択します。


・先ほど解凍したフォルダの中にある、「Ubuntu.vmx」を選びます。

・そうすると、Ubuntuが動いたっぽい画面に出ます。



・しばらくすると、勝手に色々セットアップに向けて頑張ってくれます。



・きれいなGUIが出てきて、いよいよセットアップです。まずは言語。日本語がいいので、日本語にします。キーボードも日本語。タイムゾーンも東京です。




・最後のユーザー作成。ごくごく普通です。



・これでほぼ完了です。最後に以下のようなウィンドウが出ます。これに関しては以下のURLにいろいろ対処法が書かれていますが、私は無視しました。。。ちなみにVMwareToolがあると、ゲストOSとホストOS間でテキストのコピペができるなど便利な感じなります。



【ログイン→色々遊ぶ】

・セットアップ完了したので、早速ログインしてみます。ログイン画面にユーザーIDとパスワードを入力して、ログインします(ちなみに私はここでログイン名を勘違いして10分くらいムダにしました)。VMのウィンドウを最大化するとこんな感じの画面です。リモートデスクトップ的な感じですね。




・ログインできたら、とりあえずウェブみたりコンソール立ち上げて、lsコマンドとかで遊んでました。これで完成です!

 


というわけで、Linux環境で勉強します。。。


#本当はLPICの勉強とかもするわけだから、CentOSのほうがよかったみたい。。。
#このブログもVistaから更新なわけですが、Vistaはもうアレすぎてアレ。

2011年6月25日土曜日

JFreeChartによるグラフ描画

JFreeChartを使うと、javaで割と簡単にグラフを作成することができる。
グラフの種類も様々で、円グラフや棒グラフ、折れ線グラフなど基本どころはもちろん、3DグラフなどExcelでできることはだいたいできそう(たぶん)。
例えば、DBと接続してればそのデータをすぐに可視化できたりする。

まずは、ここからダウンロードしてjarファイルを読み込みます。
ちなみにJFreeChartのwebページはこちら。このページにもサンプルがあるのでおしゃれです。


今回はサンプルということで書いてみました(なので、DBは使わず)。

まずはデータ準備。本の売り上げを表すグラフをつくろうかなということで、Bookクラスと売り上げを管理するクラスをつくります。


public class Book {
 
 /** 本のタイトル */
 private String title;
 /** 本の売れた総数 */
 private int amount;
 /** 月*/
 private int month;
 
 public Book(String t,int a, int m){
  this.title=t;
  this.amount=a;
  this.month=m;
 }
 
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 public int getAmount() {
  return amount;
 }
 public void setAmount(int amount) {
  this.amount = amount;
 }
 public int getMonth() {
  return month;
 }
 public void setMonth(int month) {
  this.month = month;
 }

}

import java.util.ArrayList;
import java.util.List;

public class AmountManager {
 private List list;

 /**
  * 売り上げ情報(1月から4月までとする)をリストにいれる。
  */
 public AmountManager() {
  List books = new ArrayList();
  Book b1 = new Book("もしド○", 30, 1);
  Book b2 = new Book("もしド○", 10, 2);
  Book b3 = new Book("もしド○", 40, 3);
  Book b4 = new Book("もしド○", 100, 4);
  Book b5 = new Book("△△コナン", 60, 1);
  Book b6 = new Book("△△コナン", 90, 2);
  Book b7 = new Book("△△コナン", 10, 3);
  Book b8 = new Book("△△コナン", 40, 4);
  books.add(b1);
  books.add(b2);
  books.add(b3);
  books.add(b4);
  books.add(b5);
  books.add(b6);
  books.add(b7);
  books.add(b8);
  this.list = books;
 } 
 
 /**
  * リストを返す
  */
 public List showAll(){
  return this.list;
 }
}

以下はグラフを書くためのクラスです。ウェブで使えるようにしたのでサーブレットになっています。

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;


public class ChartSample extends HttpServlet{
 @Override
 protected void doGet
  (HttpServletRequest req, HttpServletResponse resp)
     throws ServletException, IOException {

  // グラフ生成用の元データを用意
 //(データベースとかでひろってきた場合もリストでもってくれば良いかと)
  AmountManager amountManager = new AmountManager();
  List list=amountManager.showAll();

     // グラフの基となるデータセットを用意
  DefaultCategoryDataset data=new DefaultCategoryDataset();

     // データセットに項目名と値のを順にセット
  for (Book book : list) {
   //addValueの引き数は「縦軸の値, 項目, 横軸の値」の順番
   //ただし、第2引数と第3引数は文字列なので変換が必要
   String xValue=Integer.toString(book.getMonth());
   data.addValue(book.getAmount(), book.getTitle(), xValue);
  }
  
     //グラフを生成
     //第1引数:グラフのタイトル
     //第2引数:横軸ラベル
     //第3引数:縦軸ラベル
     //第4引数:dataset()でつくったオブジェクト
     //第5引数:値の向き
     //第6引数:凡例を表示かどうか
     //第7引数:オンマウスにした際に情報を表示を作成するか
     //第8引数:URLを作成するかどうか
     JFreeChart objCht=ChartFactory.createLineChart
    ("カテゴリーA内商品別 月次売上","月","万円",
    data, PlotOrientation.VERTICAL,
                true,false,false);

      //バイナリ出力ストリームにJPEG形式で画像を出力600×400ピクセル)
     resp.setContentType("image/jpeg"); 
     ServletOutputStream objSos=resp.getOutputStream();
     ChartUtilities.writeChartAsJPEG(objSos,objCht,600,400);      
 }
}



#なんかソースのところに</book>みたいなのが表示されるの何でしょう。。。そんなの書いてないのに、、、(java書くときは抜いてください)



このサーブレットを実行すると、結果が出ます。




割と簡単だし、サンプルみるといろんなグラフが書けそうです。