Do Not Think!!!

Posted
Filed under 01010101
자바스크립트에서 Object의 Property를 이용하여 Hash 객체를 구현하는 예제코드입니다.

구현 예제 (Language : javascript)
  1. function Hash ()
  2. {
  3.     var m_objHash = new Object();
  4.    
  5.    
  6.     this.put = function (key, value)
  7.     {
  8.         m_objHash[key] = value;
  9.     }
  10.    
  11.     this.get = function (key)
  12.     {
  13.         return m_objHash[key];
  14.     }
  15.    
  16.     this.remove = function (key)
  17.     {
  18.         var temp = m_objHash[key];
  19.        
  20.         delete m_objHash[key];
  21.        
  22.         return temp;
  23.     }
  24.    
  25.     this.getKeys = function ()
  26.     {
  27.         var keys = new Array();
  28.         for (var key in m_objHash)
  29.         {
  30.             keys.push(key);
  31.         }
  32.        
  33.         return keys;
  34.     }
  35. }

Posted
Filed under 글로 기록하기
  • 기초 부족
  • 자신감 부족

어제일에 대한 원인이 무엇인지 곰곰히 생각한 결과입니다.

실패를 했고, 원인을 알았습니다.

이제 남은건 다시 실패하지 않도록 노력하는 것 밖에 없습니다.


Posted
Filed under 글로 기록하기
해결할 문제가 무엇입니까?

위 질문을 던져서 다음 두 가지를 확실히 해야 합니다.

첫째, 진짜로 해결하려는 문제가 무엇인지 팀 전체가 이해합니다.
둘째, 한 자리에 모인 모두가 같은 답을 공유합니다.


결국 사람이 생각해야 아이디어가 나옵니다. 무엇을 생각하는지, 어떻게 생각하는지, 왜 그렇게 생각하는지 ... 생각하지 않으면 아이디어가 나오지 않습니다.
Posted
Filed under 글로 기록하기
일정은 예측입니다.

예측은 확률입니다.

예측은 어렵습니다.

일정은 단어와 숫자 목록일 뿐입니다.

일정이 프로젝트에서 발생하는 모든 문제를 해결하지는 못합니다.


일정은 약속입니다.

전체에서 개인이 기여하는 바를 알 수 있습니다.

진행상황을 추적할 수 있습니다.


설계/구현/테스트 시간을 균등하게 나눕니다.

큰 일정은 여러개의 작은 일정으로 나눕니다.

좋은 설계를 해야 합니다.

회의적인 시각으로 일정을 작성합니다.



내가 할 수 있는건...

Posted
Filed under 글로 기록하기
예비군 훈련 통지서를 다운받기위해, 예비군 홈페이지에 들어갔습니다. 예비군 홈페이지를 접하면서 정말 느린 속도에 첫번째로 감동(?)받고, 전혀 사용자를 고려하지 않은 인터페이스에 두번째로 감동(?)받았습니다.

다른것은 모두 제쳐두고 예비군 홈페이지의 사용자 인터페이스에 대해 불만을 토로하고자 합니다.


다음은 예비군 홈페이지의 로그인 후 첫 화면입니다.

예비군 홈페이지의 로그인 후 첫 화면 보기


예비군 홈페이지에서는 예비군 훈련 통지서를 다운받을 수 있습니다. 하지만 위 화면 어디에서도 소집통지서를 다운받기 위한 링크를 찾을 수 없습니다. 결국 제가 속한 원북면대에 전화를 걸어 확인 할 수 있었습니다.

링크를 찾은 화면 보기

첫번째 사진과의 차이점을 확인 할 수 있나요?

링크 부분 확대한 화면 보기

계획시간의 6이라는 숫자를 클릭하면 통지서를 다운받을 수 있습니다.


이 화면을 보면서 사용자를 전혀 고려하지 않은 사용자 인터페이스가 사용자를 얼마나 불편하게 하는지 느낄 수 있었습니다.
Posted
Filed under 글로 기록하기
늦은감이 있지만, 토요일 (10일)에 스키장에 다녀왔습니다. 2월부터 찾아온 따뜻한 날씨에 이번시즌은 마감했었지만, 지난 한주동안 찾아온 꽃샘추위때문에, 한번 다녀왔습니다.

쉬는 토요일이라 아침부터 가서 타고 싶었지만, 여건상 야간/심야를 타기 위해 2시 30분쯤에 출발했습니다. 오전에 서울에 비가 내려 걱정했지만, 휘닉스파크에는 눈이 내리는 것을 확인하고는 설레는 마음으로 출발할 수 있었습니다.. 하지만 서울을 빠져 나가는데만 2시간이 넘게 걸려 정작 7시가 넘어서야 스키장에 도착했습니다.

펭귄(초보자용) 슬로프에서 한번 타고, 슬로프 상태가 너무 안좋아서 호크(초/중급자용)에서 계속 탔습니다. 몽블랑 정상까지 한번 올라가보고 싶었지만, 바람이 너무 불어 리프트를 타고 정상까지 올라갈 엄두가 나지않아 포기했습니다. 약 5시간동안 호크에서만 계속 탔는데, 이번 시즌 가본 스키장중에서 제일 만족스러웠습니다. 상단부와 중단부 설질은 매우 좋았고, 하단부에는 아이스가 군데군데 있었습니다. 사람도 거의 없었습니다. 리프트 대기시간은 제로였고, 타이밍만 맞으면 슬로프를 혼자 타는 황제보딩도 할 수 있었습니다.

다양한 슬로프를 타지 못한게 아쉽지만, 이번 시즌중에 제일 만족스러웠습니다.


Posted
Filed under 01010101
new String(byte[] buffer)에서 charset 문제에서 MS-Windows와 Linux등의 두개 이상의 다른 OS에서 자바 프로그램을 실행시킬경우 한글 문제를 해결하기 위한 내용을 다뤘습니다.

이번에는 반대로 Java에서 저장한 데이터를 .NET 프로그램에서 읽기 위한 방법입니다.

이번에도 Java 프로그램은 MS-Windows와 Linux등 두개 이상의 다른 OS에도 동작합니다.


예를들면 다음과 같이 동작하는 프로그램입니다.
.NET 프로그램 <----- DB, File, Network <----- Java 프로그램(MS-Windows, Linux등에서 동작)


이때에는 string을 만들때와는 반대로 명시적으로 charset을 사용해서 string을 인코딩(string -> stream)해야 합니다.

즉, 다음과 같은 코드 대신

(Language : java)
  1. byte[] buffer = str.getBytes()


다음과 같은 코드를 사용합니다.

(Language : java)
  1. byte[] buffer = str.getBytes("MS949") // MS949로 인코등해서 stream을 만듭니다.


.NET 프로그램과 Java 프로그램을 모두 UTF-8로 만들면 이런 문제를 생각하지 않아도 됩니다.
하지만,
.NET 프로그램이 만들어져 있는 상황에서, Java로 프로그래밍을 해야 한다면, 특히 데이터를 같이 사용해야 한다면, 이런 방법을 사용해서 한글 문제를 해결해야 합니다.

Posted
Filed under 글로 기록하기
콜럼버스의 달걀은
콤럼버스가 신대륙을 발견한 후, 콜럼버스의 업적을 깎아내리는 사람들에게 달걀을 세워보게 했을 때 아무도 세우지 못하자 달걀 한쪽을 깬 후 달걀을 세우고는 남이 먼저 하고 난 다음에는 쉽지만, 처음 하기는 쉽지 않다

고 얘기한 일화입니다.

이 일화는 발상의 전환을 설명하고 있습니다. 그리고 지금도 발상의 전환을 설명하면서 가르치고 있는 일화입니다.


신영복 교수님의 처음처럼이라는 책을 보면서 저는 다른 생각을 해 봅니다.

달걀은 애초에 세우지 못하게 생겼습니다. 타원형으로 생겼기 때문에 달걀은 멀리 굴러가지 못합니다. 즉, 달걀이 타원형인 것은 생명을 지키기 위한 하나의 수단입니다. 다시 생각해 보면 콜럼버스는 생명을 쉽게 깨는 발상의 전환을 합니다. 실로 콜럼버스는 아메리카 대륙에서 자신의 욕심을 채우기 위해 수많은 생명을 살육했습니다.



달걀을 깨는 발상의 전환이 아니라, 달걀이 왜 타원형으로 생겼는지 생각해보는 발상의 전환이 아쉽습니다.

Posted
Filed under 01010101
Java에서 JDBC 프로그래밍을 시작하기 위한 내용을 간단하게 정리합니다.


JDBC 프로그래밍 순서

1. JDBC Driver 로딩
Class.forName(JDBC Dirver Class);


2. DB Connection 획득
Connection connection = DriverManager.getConnection(url, user, password);


3. Statement 획득
Statement statement = connection.createStatement();


4. SQL 쿼리 실행
ResultSet resultSet = statement.executeQuery(query);


5. ResultSet 처리
while (resultset.next())
{
}


6. 사용한 자원 반환
resultSet.close()
statement.close()
connection.close()


7. 성능을 위해 1, 2 대신 Connection Pool을 이용해서 Connection을 획득
(벤더에서 제공하는 DataSource 이용)
Context context = new InitialContext();
DataSource dataSource = (DataSource)context.lookup(JDBC JNDI);
Connection connection = dataSource.getConnection();




참고

Posted
Filed under 글로 기록하기
사용자에게 프로그램이 어떤 기술로 만들어졌는지는 필요하지 않습니다.
사용자에게 프로그램이 어떤 환경에서 실행되는지는 필요하지 않습니다.
사용자에게 프로그램이 어떻게 실행되는지는 필요하지 않습니다.


사용자는 어떤 기능이 있는지가 중요합니다.
사용자는 에러가 없는게 중요합니다.



사용자는 기술이 아니라 기능을 원합니다.