잠실 야구장이 제 앉은 자리에서 고개를 오른쪽으로 90도를 돌리면 직선방향으로 보입니다.

한국 시리즈여서인지 몰라도 3시부터 사람들이 들어가기 시작하더니 4시 30분 현재 야구장의 70%이상이 사람들로 메워져 있습니다.

추울텐데 대단한 열기네요~ 야구에 대한 열정이라고 봐도 되겠죠?
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/30 16:31 2008/10/30 16:31

가트너에서 IT 불황을 극복할 수 있는 대안을 발표했습니다.
http://www.techworld.com.au/article/264017/gartner_recommends_20_ways_cut_it_costs?fp=4&fpid=9

그 중 회사적인 측면에서 흥미를 끄는 것은 "서버들을 통합하고 가상화 할 것(16. Consolidate and virtualize servers.)"과 "가격 부담이 적은 제품을 사용할 것(Use commodity products wherever possible)"입니다.

Server consolidation 및 virtualization의 예를 들어보면 다음과 같습니다.

사용자 삽입 이미지

위와 그림에서 보는 것처럼 mail, web server의 사용량은 얼마 되지 않음에도 불구하고 서버를 한 영역을 차지하는 반면 groupware나 ERP Server의 경우에는 항상 자원 부족으로 서버 업그레이드 혹은 추가 도입을 고려해야 하는 부담감을 안고 있습니다. 이 때 이 글을 읽으시면 모두 같은 생각을 하시게 될겁니다. "Mail Server, Web Server 자원 좀 나눠주면 좋겠는데" 라고 말이죠

가상화를 통해서 다음과 같이 변경을 시킵니다.

사용자 삽입 이미지
Virtualization 서버들의 특징은 원하는 CPU/Memory를 각 영역에 할당할 수 있도록 하는 기능을 제공합니다. 따라서 위의 서버를 GFS(Global File System) 형태로 공유하도록 하고 HA구성을 통하여 솔루션 신뢰도를 높이는 한편 자원 사용률을 최대화 시킬 수 있다는 장점이 생깁니다. 또한 구동되는 애플리케이션들이 이미지 형태로 구성되어 있기 때문에 필요하다면 다른 서버로 복사만 하면 확장할 수 있는 특징이 있습니다. 또한 서버의 대수를 줄일 수 있기 때문에 IDC의 공간이라던지, PC 전기료 같은 것을 동시에 아낄 수 있습니다.

이와 같은 이유로 인하여 각 회사들이 가상화에 집중하고 있는 게 현실입니다. 이미 VMWare를 PC에 사용하고 계시는 분들이 계실텐데 이 때의 용어를 "Desktop Virtualization"이라 하여 클라이언트 영역으로 취급을 하게 됩니다.

서버 가상화나 클라이언트 가상화가 우리에게 가져다 주는 이점은 상당합니다.
이러한 이유가 가트너에서 IT 비용 절감 부분에 가상화를 넣은 이유가 된 것 같습니다.


크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/30 13:12 2008/10/30 13:12

사용자 삽입 이미지
모든 일에는 순서가 있습니다.

우리가 볼링을 칠 때의 목적은 항상 정해져 있습니다. 그 목적은 스트라이크겠지요. 스트라이크를 치기 위해서는 거쳐야 할 과정이 있습니다. 자세, 볼에 대한 릴리즈 같은 전위가 아니라 오로지 핀에 대해서만 생각해 보면 남는 건 핀밖에 없습니다. 즉 대상들이지요.

나름대로의 구성을 갖추어 자신을 맞춰주기를 기다리고 있습니다. 한 가지 확실한 것은 스트라이크라는 것은 1번 핀 이외의 것을 맞추어서는 해내기가 쉽지 않다는 것입니다. 거의 불가능에 가깝다고 하겠지요. 왼손잡이냐 오른손잡이냐에 따라 공략이 1, 2번이 될지 1, 3번이 될지 결정되지만 언제나 타겟에는 1번이 자리잡고 있습니다.

이러한 이론들은 우리가 일하는 모든 일상생활에 적용됩니다. 프로젝트를 진행하거나 자신의 계획을 세운다거나 할 때에 이런 1번 핀이 대체 무엇인지를 명확하게 알고 나아가야 합니다. 만약 자바 교육의 경우라면 기초를 뚫고 가는 관문이 1번 핀이 될 수 있겠지요.

앞으로 5년을 바라봤을 때 제 1번 핀이 무엇인지 생각해 보고 있습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/29 15:18 2008/10/29 15:18

JBoss의 특징은 한 마디로 요약하면 developer oriented web application server라는 점입니다. 다시 말하면 다양한 xml configuration을 이용하여 설정을 최대한 유용하게 한다는 것인데 이게 또한 장점이면서 단점입니다.

JMX Consolidation을 이용하여 모든 작업을 web console에서 작업하도록 해야 사용자들이 xml설정에 대한 실수을 줄일 수 있을 뿐더러 보다 쉽게 접근할 수 있을텐데요.

그러한 프로젝트의 일환으로 community에서는 jopr이라는 프로젝트를 진행하고 있습니다. WebLogic 8 version의 admin console같은 형태로 구성되어 있습니다.

http://www.jboss.org/embjopr/

간단한 데모는 다음과 같습니다.

http://www.jboss.org/file-access/default/members/embjopr/freezone/demo/embjopr-demo.swf
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/29 14:52 2008/10/29 14:52

위의 제목처럼 엔지니어를 찾고 있습니다. 일년에 천만원이냐구요? 아닙니다. 한달에 천만원입니다. 월봉 1000만원이면 고액 소득자에 포함되니 세금 대략 25% 정도 감하고도 750만원은 건질 수 있겠네요.

현재 진행하려는 프로젝트에서 사람을 구하고 있고 요건은 다음과 같습니다.
1. 고객사의 아키텍처 요건을 보고 어떠한 요소기술들이 필요한 지 결정하고 솔루션을 제공
2. 향후 발생할 수 있는 문제 등을 미리 파악하여 안전 장치를 만들 수 있는 사람
3. Java의 기초 통달자(API, Thread, Network 능숙)
4. 엔터프라이즈 환경을 볼 줄 아는 능력(EAI, SOA 등)
5. WAS 등의 문제가 발생했을 때 문제를 분석하는 능력 및 해결 방안을 제시할 수 있는 능력

간략하게 적어보면 위와 같습니다.

제가 아는 지인 몇 분을 빼놓고는 고객사 프로젝트에 나가서 위와 같은 사람을 찾는다면 정말 진주를 캔 심정이겠지만 아직까지 보지 못했습니다. WAS 엔지니어의 경우에는 5번 사항에는 탁월할지 몰라도 1번의 컨설팅 능력을 보유하지 못했을 확률이 많고 또한 엔진은 볼줄 알되 소위 엔진을 만들 수 있는 능력은 없을 수 있기 때문입니다.

마지막으로 가장 큰 게 의사소통 능력인데 아는 건 많이 아는 데 전달력이 부족하다거나, 커뮤니케이션 스킬이 부족하여 "결국 다 해주게 될 것을" 싸우며 하게 되는 경우라던지 별별 문제가 다 생길 수 있습니다.
 
낙관적이고 긍정적인 (optimistic & positive) 사고는 향후 일이 안끊기게 하는 최고의 수단이라는 것만 알고 있다면 별 문제는 없을 것입니다.

도전 하실 분? 참고로 고객은 국내(결국 세계)에서 최고로 까다로운 No.1 슈퍼갑입니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/23 12:25 2008/10/23 12:25

어느 덧 가을이 찾아왔습니다. 세미나의 시즌이 찾아왔다는 이야기지요. 요즘은 그래서 워크샵 같은 거 할 수 있는 호텔 잡는 거 조차 하늘의 별따기입니다.

제가 다니는 회사에서 많지는 않지만 세미나가 시작되었습니다. 오픈 소스 개발자, 각 industry별 세미나 등등. BEA 다닐 때 세미나, 컨퍼런스 정말 많이 했습니다. 덕분에 많은 후원품을 받을 수 있어서 지금도 집에 가면 가방, 옷, 우산, iPod, 메모리, 카메라, 레저 용품 등 셀 수 없이 많은 BEA로고를 가진 물건들이 있습니다.

남들 앞에서 발표한다는 것 쉽지만은 않은 일입니다. 발표에 관한 책도 많이 읽고 항상 논리정연하게 말하고 대화하는 방법을 터득하기 위하여 지금도 노력하는 데 잘 안됩니다.

세미나의 시즌입니다. 본인에게 유용한 세미나는 반드시 시간을 내고 돈을 내서라도 들어야 합니다. 혼자서 끙끙대는 것보다 하루 시간내서 보는 게 10배 이상의 효과가 있을 것이라 자신합니다.
경품만을 노리는 독수리가 되어도 상관없습니다.
가서 졸아도 상관없습니다.

무언가 얻을 수는 있으니까요.
크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/17 21:06 2008/10/17 21:06

I don't know why I can't type Korean alphabet sometimes on this computer. It seems TTML editor  bug in tattertools.

This source is a start point for monitoring JBoss application such as JMS message count, memory current and so on. Many customers don't want to buy a subsription for JBoss Operations Network(JON), so we have to give alternative monitoring tools for them.
 
If you want to run this application, you should download jfreechart library from jfreechar.org site.

package com.jboss.monitor;

/* ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.
 *
 * Project Info: 
http://www.jfree.org/jfreechart/index.html
 *
 * This library is free software; you can redistribute it and/or modify it under the terms
 * of the GNU Lesser General Public License as published by the Free Software Foundation;
 * either version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
 * in the United States and other countries.]
 *
 * --------------------
 * DynamicDataDemo.java
 * --------------------
 * (C) Copyright 2002-2004, by Object Refinery Limited.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited).
 * Contributor(s):   -;
 *
 * $Id: DynamicDataDemo.java,v 1.12 2004/05/07 16:09:03 mungady Exp $
 *
 * Changes
 * -------
 * 28-Mar-2002 : Version 1 (DG);
 *
 */
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A demonstration application showing a time series chart where you can
 * dynamically add (random) data by clicking on a button.
 *
 */
public class DynamicDataDemo extends ApplicationFrame implements ActionListener {

 /**
  *
  */
 private static final long serialVersionUID = 1L;

 /** The time series data. */
 private TimeSeries series;

 /** The most recent value added. */
 private double lastValue = 100.0;
 
 /** Diplay recent value */
 final JLabel data = new JLabel("Current Value :");

 /**
  * Constructs a new demonstration application.
  *
  * @param title
  *            the frame title.
  */
 public DynamicDataDemo(final String title) {

  super(title);
  this.series = new TimeSeries("JMX Data", Millisecond.class);
  final TimeSeriesCollection dataset = new TimeSeriesCollection(
    this.series);
  final JFreeChart chart = createChart(dataset);

  final ChartPanel chartPanel = new ChartPanel(chart);
//  final JButton button = new JButton("Add New Data Item");
//  button.setActionCommand("ADD_DATA");
//  button.addActionListener(this);


  final JPanel dataPanel = new JPanel(new BorderLayout());
  final JPanel content = new JPanel(new BorderLayout());
  dataPanel.add(data);
  content.add(chartPanel);
  content.add(dataPanel, BorderLayout.SOUTH);
  chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
  setContentPane(content);

 }

 /**
  * Creates a sample chart.
  *
  * @param dataset
  *            the dataset.
  *
  * @return A sample chart.
  */
 private JFreeChart createChart(final XYDataset dataset) {
  final JFreeChart result = ChartFactory.createTimeSeriesChart(
    "Dynamic Data Demo", "Time", "Value", dataset, true, true,
    false);
  final XYPlot plot = result.getXYPlot();
  ValueAxis axis = plot.getDomainAxis();
  axis.setAutoRange(true);
  axis.setFixedAutoRange(60000.0); // 60 seconds
  axis = plot.getRangeAxis();
  axis.setRange(0.0, 200.0);
  axis.setAutoRange(true);
  return result;
 }

 // ****************************************************************************
 // * JFREECHART DEVELOPER GUIDE *
 // * The JFreeChart Developer Guide, written by David Gilbert, is available
 // *
 // * to purchase from Object Refinery Limited: *
 // * *
 // *
http://www.object-refinery.com/jfreechart/guide.html *
 // * *
 // * Sales are used to provide funding for the JFreeChart project - please *
 // * support us so that we can continue developing free software. *
 // ****************************************************************************

 /**
  * Handles a click on the button by adding new (random) data.
  *
  * @param e
  *            the action event.
  */
 public void actionPerformed(final ActionEvent e) {
  if (e.getActionCommand().equals("ADD_DATA")) {
   final double factor = 0.90 + 0.2 * Math.random();
   this.lastValue = this.lastValue * factor;
   final Millisecond now = new Millisecond();
   System.out.println("Now = " + now.toString());
   this.series.add(new Millisecond(), this.lastValue);
  }
 }

 /** ***************************************************************************** */
 /* CAPTURE JMX DATA HERE */

 /** ***************************************************************************** */
 public void captureData() {
  final double factor = 0.90 + 0.2 * Math.random();
  lastValue = lastValue * factor;
  final Millisecond now = new Millisecond();
  System.out.println("Now = " + now.toString());
  // AHAHAHAHAHAHAHAHAHAHHAHAHA
  // series.add(new Millisecond(), lastValue);
  series.addOrUpdate(new Millisecond(), (int)lastValue);
  data.setText("Current Value : " + (int)lastValue);
 }

 /**
  * Starting point for the demonstration application.
  *
  * @param args
  *            ignored.
  */
 public static void main(final String[] args) throws Exception {

  final DynamicDataDemo demo = new DynamicDataDemo("New Data Demo");
  demo.pack();
  RefineryUtilities.centerFrameOnScreen(demo);
  demo.setVisible(true);

  while (true) {
   demo.captureData();
   Thread.sleep(1000);
  }
 }

}


 

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/14 11:18 2008/10/14 11:18

잘못 들어선 길을 알려주는 페이지로 오늘 처음 알았는 데 조금 놀랬습니다.
404에 웬 놈이냐~ 생각했는데 손에 든 지도를 보고 그냥 피식 웃었네요.

사용자 삽입 이미지

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/14 10:45 2008/10/14 10:45

원래 하고자 했던 jbossian 사이트를 태터툴즈를 이용하여 심플하게 작성해보려고 했었는데 에이전시에서 개발해 놓은 템플릿을 이용하여 작성을 한 모양입니다.

스타일시트도 잘 맞지 않거니와 UI 부분을 다른 웹 사이트를 따라 하다보니 국내 사용자에게 조금 불편한 점이 있지 않나 생각합니다.

어찌하면 좋을까요.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/09 10:17 2008/10/09 10:17

사용자 삽입 이미지
이번 주 월요일에 민방위 훈련장을 다녀왔습니다. 분단의 현실 때문인지 나이가 40세되기까지 민방위 훈련을 통해 국방의 의무를 다해야 한다는 서글픈 면이 있습니다. 작년에 훈련을 받을 때는 동네에서 지정한 날짜에 맞추지 못해 전국의 민방위 훈련장을 인터넷으로 검색해서 작년 12월초에 우리나라에서 가장 마지막으로 있었던 영등포구 민방위 훈련장에 참석을 했드랬지요.

동네의 차이가 있어서 그런걸까요? 작년만 하더라도 90년대 초에나 만들어졌을 법한 화생방 비디오 테이프 등을 틀며 4시간을 보냈었습니다. 하지만 올해 받은 훈련에서는 상당히 일상 생활과 관련된 내용으로 수업을 채웠는 데 다음과 같습니다.
- AIDS 예방법(한국 AIDS 연대)
- 일상 생활 응급 처치 및 구호법(수지 소방서 구급대)
- 생활 안전(재난 협회)

대략 이런 훈련을 받게 되면 책을 읽거나 조는 게 일반적이었는 데 이번에는 정말 열심히 들었습니다. 재밌게도 하거니와 우리 일상 생활에서 나타날 수 있는 현상에 대해서 아주 자세하게 설명을 해주어서 나도 모르게 경청을 하게 됐었네요. 모르던 사실도 많이 알게 되어서 정말 좋았습니다.

아참, 그리고 언제나 그렇듯 훈련이라는 용어만 나오면 군복을 입히지 않아도 여기저기 아예 잔디밭과 벤치에 드러누워서 자는 사람은 어디나 있더군요. 예비군 훈련인줄 알았던 모양입니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/10/08 10:16 2008/10/08 10:16