2016년 1월 24일 일요일

C++ 알고리즘 공부


1. 파일 입출력

// NewPjt.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <fstream>

using namespace std;

#define MAX_NUMBER 1000

#define MAX_WORD 100

int generateRandomNumber(int);
void generateRandomNumberFile(char* randomNumberFile);
void readRandomNumberFile(char* sourceFile, int* outPutArray);

int _tmain(int argc, _TCHAR* argv[])
{
 int intArr[MAX_NUMBER];
 memset(&intArr, 0x00, sizeof(intArr));

 generateRandomNumberFile("number.txt");
 readRandomNumberFile("number.txt", intArr);
 return 0;
}


int generateRandomNumber(int maxNumber){
 return (int)(((double)rand()/(RAND_MAX+1)) * maxNumber); 
}

void generateRandomNumberFile(char* randomNumberFile){
 //파일 열기
 ofstream outFile(randomNumberFile);

 for(int i=0; i<MAX_NUMBER; i++){
  outFile << generateRandomNumber(MAX_NUMBER) << endl;
 }

 //파일 닫기
 outFile.close();
}

void readRandomNumberFile(char* sourceFile, int* outPutArray){
 char inputString[MAX_WORD];
 int idx = 0;

 if(!outPutArray){
  return;
 }

 //파일 읽기
 ifstream inFile(sourceFile);

 while(!inFile.eof()){
  inFile.getline(inputString,MAX_WORD);
  outPutArray[idx++] = atoi(inputString);
 }
 
 inFile.close();
}



2016년 1월 23일 토요일

파이썬 - 1 : 설치 및 기본중의 기본


파이썬(Python) 설치

[파이썬 3.x.x 설치]
 - 파이썬은 2.x.x 에서 3.x.x 로 업데이트 되면서 전혀 다른 언어라고 해도 된다고 한다.
 - 가장 큰 문제가 호환성인데, 서로 호환이 불가.
 - 문법적으로도 바뀌었다고 하는데, 아직은 잘 모르니 최신버전 3.x.x를 설치
 - 파이썬 설치 url : https://www.python.org/downloads/
 - Windows 7 인 경우 SP1 이상이어야 함.









2016년 1월 22일 금요일

서울 종로 - 청진식당

청진식당 오징어 불고기

 - 불고기 : 7,000원
 - 오징어 : 7,000원
 - 공기밥 : 1,000원





메뉴 참 단촐하다. 돼지불고기와 오징어.
나머지는 주류.



여기는 최소한 3명 이상을 추천한다.

돼지불고기와 오징어를 2:1 비율로 주문을 한 다음

돼지는 역시 바짝 익혀먹어야 하므로 먼저 익히고, 앵간히 익어갈 때 같이 나온 오징어를 넣고 같이 섞어섞어~



불고기와 오징어, 마늘을 넣고 상추쌈으로 먹으면 끝~



XX에 의하면 돼지들은 공기밥을 한공기 더 시켜서, 철판에 남는 양념과 무채를 볶아 먹는다고 하는데
우리는 각자 공기밥에서 크게 한스푼씩 떠서 남겨둔 다음 마지막에 철판에 볶아서 먹었다.



가격도 착하고 맛도 좋은 청진식당.

루비 - 2.1 : Class를 이용한 간단한 싱글톤 예제


간단한 싱글톤 디자인패턴 구현

<Tutorial-01-Class-Singleton.rb>
class MySingleton
 private_class_method :new # 객체 생성을 위한 유일한 method인 new 를 private 으로 정의

 @@singleton = nil

 def initialize(name, age)
  @name = name
  @age = age
 end

 def MySingleton.create(name, age)  # 싱글톤 객체를 생성하기 위한 클래스 메서드를 정의
  @@singleton = new(name, age) unless @@singleton
  @@singleton
 end

 def getMySingleton
  puts "My name is #{@name} and I am #{@age.to_s} years old"
 end

end

singletonTest1 = MySingleton.create("John lennon", 32)
singletonTest2 = MySingleton.create("Metalica", 33)

singletonTest1.getMySingleton  # 싱글톤 객체 생성, 유일한 객체
singletonTest2.getMySingleton  # 객체 생성 시도, 이미 생성된 객체 반환



2016년 1월 20일 수요일

사랑해요 구글 (Google의 고객감동 맞춤서비스)


출근해서 제일 먼저 하는건, 구글 크롬을 실행 시키는 것이다.

매일 보는 구글 로고화면이기에 무심코 지나쳤다.
보통 기념일이나 축제 혹은 유명인 탄생/기일 을 기리는 로고를 해놓는데 
오늘은 케익들이 잔뜩 있었다.

롤케익 컵케익 머핀 등등 케익들은 죄다 갖다놓은듯 하다.



나는 장난삼아서 '구글에서 내 생일도 챙겨주는사' 라고 생각했는ㄷ

생각뿐이 아니었나?

로고에 마우스를 오버해보니
Happy birthday Hyungon
이라는거 아닌가!

이런게 바로 고객사랑 고객감동 아니겠는가 하하하

사랑해요 구글

너무나 사랑스런 생일상


결혼 해도 국은 절대로 안끓이겠다고 다짐했던 와이프의 첫 미역국.

당일 아침은 힘들것 같다며 분명히 야근도 하고 임신 7개월차에 접어드는 피곤한 몸이었지만,
누구의 요리보다 완벽하고 맛있는 엄마 손맛 미역국을 완성했다.

주말 돼지갈비찜에 이어 미역국까지 한식 랭크A의 두 요리를 완벽하게 클리어한 대견함에 박수와 칭찬을 아낌없이 보낸다.



심플하지만 사랑과 정성이 가득 담긴 생일상
너무 고맙고 사랑스럽다.


2016년 1월 17일 일요일

서울 잠실 - 장미아파트상가 우리네코다리


믿고먹는 가성비 끝판왕 코다리정식

- 코다리정식 : 10,000원
- 코다리조림 : 27,000 / 35,000원

와이프의 추천으로 알게 된 이곳.

잘 차려진 맛있는 음식이 먹고 싶다.
그렇다고 고기가 많이 들어간 헤비한 음식은 별로 땡기지 않는다.
건강하고 소화에 도움이 되는 음식이 먹고싶다면,,, 여기로 가자!

여타 다른 맛집들 처럼 여기도 단일 메뉴다.

코다리 Only

점심 시간에는 근처 사무실 근무자들로 인산인해를 이룬다고 한다는데,
우리가 찾았을 때는 저녁시간을 약간 넘긴 터라 사람이 거의 없었다.

자리에 앉고 인원을 얘기하면 고소한 죽과 반찬이 차근히 나온다.

근데,,, 계속 나온다..

이건 뭐 한정식 코스 수준으로 나온다.



양으로 많다고 해서 절대 양으로만 승부하지는 않는다.
반찬 하나하나 신선한 재료를 사용한 느낌이고 먹을 때 마다 건강한 음식을 먹는 기분이 든다.

맛있다고 급히 먹지 말고 천천히 꼽꼽 씹어서 먹자. 반찬과 밥은 리필이 되니까.

밥을 다 먹고 꼭 숭늉을 먹을 만큼의 속은 남겨놓자.

2016년 1월 15일 금요일

소스코드를 블로그에서 이쁘게 포스팅(초간단)


 Syntaxhighlighter 를 이용하여 소스코드를 이쁘게 포스팅하자

참조 URLhttp://blog.smarttutorials.net/2014/12/syntax-highlighter-blogger-using-google.html


[1부 syntaxhighlighter의 배신 - 난 왜 안됨?]

구글 검색으로 'syntaxhighlighter'로 해 보면 blogger에 설정(? 보다는 Ingegrate) 하는 방법이 나온다.
블로거의 템플릿 디자이너 메뉴에 들어가서 css를 반영하고 js를 임포트 하고 마지막으로 js코드를 집어넣는 과정이다.(참조 : http://anshnote.blogspot.kr/2011/07/syntax-highlighter-blogger.html)

근데! 문제는 이 설정이 내 블로그에는 적용 안된다는 것이다.

왜 안되는지 원인파악은 안됐다.(수 시간을 투자했지만 별로 의미 없고 다른 방법을 알았음으로 패쓰)

또 다른 방법을 물색하던 중 기존 방법보다 훨씬 초초초초 간단한 방법을 발견했다.
이 방법을 이용하면 결과물이 기존방법을 이요하는 것 보다 이쁘진 않다.
하지만 현재로선 나에겐 별다른 선택의 여지가 없어 보이고 이정도면 대만족이기 때문에 활용하기로 한다.

[2부 syntaxhighlighter의 귀환 - 설정편]

방법은 기존 설정방법과 동일하지만 절차가 3단계에서 1단계로 짧아졌다.
그리고 소스코드를 포스팅할 때 언어 별로 약간의 설정방법이 달랐지만 이 또한 심플해졌다.

 - 설정하기
블로거 어드민페이지 왼쪽 메뉴바 에서 '템플릿' -> 'HTML편집' 으로 진입한다.
'</head>' 태그를 찾아서 그 앞에다가 아래의 스크립트를 복사해서 붙여넣는다.
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js">
</script>

 - 사용하기
글 작성 시 'HTML' 모드에서 소스코드가 들어가는 부분을 <pre class='prettyprin'>...</pre> 태그로 감싼다. 대략 이렇게..
<pre class='prettyprint'>
  .....
</pre>
그럼 얘가 알아서 언어를 파악하거나 키워드를 파악해서 이쁘게 표현 해 준다.

지원 언어는 대략 아래와 같다.
HMTL5, CSS3,  PHP, SQL, Java, XML, Javascript, jQuery, Angularjs, Knockoutjs, Python, Bash, SQL, Makefiles, Ruby, VB, Awk, Perl, Pascal, Dart, Matlab, Clojure and etc.

내가 테스트해본 건 ruby, js, c, java 정도 인데 전부 성공!!


[3부 살짝 빠지지만 이쁜 소스코드 포스팅]

아래 샘플 테스트 결과
class Dragon

  def initialize name
    @name = name
    @asleep = false
    @stuffInBelly = 10  #위
    @stuffInIntenstine = 0  #소화중

    puts @name + ' is born.'
  end

  def feed
    puts 'You feed ' + @name + '.'
    @stuffInBelly = 10
    passageOfTime
  end

  def walk
    puts 'You walk ' + @name + '.'
    @stuffInIntenstine = 0
    passageOfTime
  end

  def putToBed
    puts 'You put ' + @name + ' to bed.'
    @asleep = true
    3.times do
      if @asleep
        passageOfTime
      end
      if @asleep
        puts @name + ' snores, filling the room temperature.'
      end
    end

    if @asleep
      @asleep = false
      puts @name + ' wakes up slowly.'
    end
  end

  def toss
    puts 'You toss ' + @name + ' up into the air.'
    puts 'He giggles, which singes your eyebrows.'
    passageOfTime
  end

  def rock
    puts 'You rock ' + @name + ' gently.'
    @asleep = true
    puts 'He briefly dozes off...'
    passageOfTime
    if @asleep
      @asleep = false
      puts '...but wakes when you stop.'
    end
  end

  private

  def hungry?
    @stuffInBelly <=2
  end

  def poopy?
    @stuffInIntenstine >= 8
  end

  def passageOfTime
    if @stuffInBelly>0
      # Move food from belly to intestine.
      @stuffInBelly       = @stuffInIntenstine  - 1
      @stuffInIntenstine  = @stuffInBelly       + 1
    else
      if @asleep
        @asleep = false
        puts 'He wakes up suddenly!'
      end
      puts @name + ' is starving! In desperation, he ate YOU!'
      exit  # This quits the program.
    end

    if @stuffInIntenstine >= 10
      @stuffInIntenstine = 0
      puts 'Whoops!' + @name + ' had an accident....'
    end

    if hungry?
      if @asleep
        @asleep = false
        puts 'He wakes up suddenly!'
      end
      puts @name + '\'s stomach grumbles...'
    end

    if poopy?
      if @asleep
        @asleep = false
        puts 'He wakes up suddenly!'
      end
      puts @name + ' does the potty dance...'
    end
  end #passegeOfTime
end

pet = Dragon.new 'Norbert'
pet.feed
pet.toss
pet.walk
pet.putToBed
pet.rock
pet.putToBed
pet.putToBed
pet.putToBed
pet.putToBed
var foo = function(){
 console.log("hello world");
}

public void main(String Args){
 return void;
}

var stt = "stringify";

Document.ready(){

}


루비 - 2 : Class의 이해


루비 클래스 샘플 코드

<Tutorial-01-Class.rb>

# 1. class 정의하기
class Song  #class 이름은 대문자로 시작하도록.

 def initialize(name, artist, duration)
  @name = name  # class의 멤버변수는 @xxx 형태
  @artist = artist
  @duration = duration
  @plays = 0
 end

 def getSong
  "my name is #@name and my nick name is #@artist, i love number #@duration"
 end

 def getSing
  'my name is #@name and my nick name is #@artist, i love number #@duration'
 end

end

song = Song.new('beatles', 'john lenon', 300);

puts song.getSong # 출력: my name is beatles and my nick name is john lenon, i love number 300
puts song.getSing # 출력: my name is #@name and my nick name is #@artist, i love number #@duration

# song.play 함수는 지금 이 시점에서는 정의되어있지 않기 때문에 compile error

# 2. 클래스변수의 이해 @@XXX
class Song   # Song 클래스 정의 추가
 @@plays = 0  # class 변수 <- Song 클래스의 모든 객체가 동일하게 사용
     # class 변수는 사용하기 전 반드시 초기화되야 함
 def play
  @plays += 1
  @@plays += 1
  "This song: #@plays plays. Total #{@@plays} plays."
 end
end

puts song.play   # @@plays 는 1

song2 = Song.new("meatalica", "daumdaum", 200)

puts song2.play  # @@plays 는 2

# 3. 클래스 메소드의 이해 
class Song
 # 클래스 메소드 정의방법 1
 def Song.classMethod1
  puts "This is class method 1 for Song class"
  
 end

 # 클래스 메소드 정의방법 2
 def self.classMethod2
  puts "This is class method 2 for Song class"
  
 end

 # 클래스 메소드 정의방법 3
 class <<self
  def classMethod3
   puts "This is class method 3 for Song class"
  end
 end

end

songClassMethodTest = Song.new("hello", "world", 100)

Song.classMethod3
Song.classMethod2
Song.classMethod1

# songClassMethodTest.Song.classMethod2  compile Error
# songClassMethodTest.classMethod2   compile Error

# 4. 클래스 접근제어
class Song
 public :getSong   # 기존 public, 변동 없음
 private :getSing, :play # 기존 public 을 private 으로
end

puts song.getSong # public 접근제어라서 함수 호출 가능
# puts song.getSing  클래스 접근제어를 변경해서 이제는 함수호출 불가

puts "////////////////////////////////////////////////////////
"

# 5. getter setter 
class Human
 attr_reader :name, :age, :gender # 멤버변수 getter

 def initialize(name, age, gender)
  @name = name
  @age = age
  @gender = gender
 end
end

human = Human.new("이승철", 50, "male")
puts "제 이름은 #{human.name} 이고 나이는 #{human.age}세 입니다."

class Human2
 attr_writer :name, :age, :gender # 멤버변수 setter
          # xxx= 이라는 함수를 내부적으로 생성
          # 객체.xxx = yyy 로 함수 호출 가능
 def name
  @name
 end

 def age
  @age
 end

 def gender
  @gender
 end
end

human2 = Human2.new
human2.name = "이승환"
human2.age = 60
human2.gender = "남"
puts "제 이름은 #{human2.name} 이고 나이는 #{human2.age}세 입니다."

class Human3
 attr_accessor :name, :age, :gender # 멤버변수 getter, setter
end

human3 = Human3.new
human3.name = "김완선"
human3.age = 80
human3.gender = "여"
puts "제 이름은 #{human3.name} 이고 나이는 #{human3.age}세 입니다."


서울 종로 - 종로구청 앞 국시랑


가성비가 뛰어나고 가격또한 최고인 국수집을 찾는다면 여기!!

 - 장터국수(잔치국수) : 3,000원
 - 비빔국수 : 5,000원
 - 사이드메뉴 계란 : 500원

광화문으로 출근하면서 찾은 보석중의 보석 '정국시랑'

사진에서 보는것 처럼 정말 작은 틈새 가게다.


입구에서 보이는 파란색 메뉴 현수막부터 정문까지가 이 가게 폭의 전부다.
10평도 안되어 보이는 공간이다.

1 복도 2 식의 좌석 구조, 10사람 들어가면 꽉 차 보인다.


메뉴들 모두 착한 가격이다.

정복해 본 메뉴라곤 장터국수와 삶은계란 한개 뿐이지만, 비빔국수와 떡만두국이 일품이란다.



단촐 해 보이지만 필요한것만 딱 있는 구성.

맛 또한 훌륭하다.

윈도우7 설정 - Areo 테마 적용 및 작업표시줄 미리보기 설정


작업표시줄 미리보기 설정

시작 → 검색란에 GPEDIT.MSC 엔터 → 사용자 구성 → 시작 메뉴 및 작업 표시줄 → 작업표시줄 미리보기 사용않함 → 사용않함 → 확인 →로그오프




출처 : http://answers.microsoft.com/ko-kr/windows/forum/windows_7-desktop/%EC%9C%887%EC%97%90%EC%84%9C/9d687c97-53f8-4d1e-94fb-792935ba3ae6?auth=1



Aero 테마 설정

Windows 7 Ultimate로 설치를 했는데, 내가 사용하던 것과 설정이 많이 다르다.
일단, 윈도우 사용중인 프로그램의 작업표시줄 아이콘 위에 마우스를 오버 해도 미리보기가 안나온다.(작업표시줄 색상도 별로)

윗 방법은 마소에서 추천해준 건데, 내가 생각하던 이슈는 아닌가보다.

내 손으로 찾아서 해결해봤다.

바탕화면 우클릭 -> 개인설정 -> Aero 테마 설정

이거 해도 반영이 안되면 그 밑에 문제해결을 눌르면 해결!


요렇게 미리보기가 생긴다.

2016년 1월 14일 목요일

대전 중구 - 은행동 성심당

대전의 명물 성심당

- 튀김소보로
- 부추빵

이번 여행의 두번째 메인 목적지가 바로 '성심당'!

성심당이 올해로 개업 60주년째란다.
그래서 가게 앞에 튀김소보로를 커다랗게 만들어서 홍보하고 있었다.


60년이나 되었다는 역사 치고는 건물이 상당히 신식이었다.

다른 몇십년 전통의 맛집이 그때의 분위기를 그대로 계승하는 반면에,
이곳도 은행동 거리에 다양하고 이쁜 여타 카페와 같이 이쁘게 꾸며놨다.


원래는 저기 위에 나오는 사진에서부터 줄이 시작되서 내부까지 이어진다.
내부에는 갖 구워진 빵들이 즐비했고 사람들은 저마다 쟁반과 집게를 들고 빵을 고르고 있다.


우리가 고른 빵은 부추빵과 튀김 소보로. 성심당 제일 인기많은 빵 1,2순위 이다.


튀김 소보로는 느끼할것이라는 처음 느낌과는 달리 담백해서 계속 먹을 수 있을 것 같았다.
바삭하고 달콤한 겉과 그 안에는 달콤한 팥이 들어 있었는데, 팥 또한 인위적으로 달게 만들지 않아서 자연스러움 달콤함이 입안을 맴돌았다.

부추빵을 선택했을 때 당연히 군산 빵집 '이성당'의 야채고로케만큼의 퀄리티를 기대했다.
하지만 첫 입에 풍부한 야채들을 느낄 수 있던 야채고로케만큼의 감동까지는 아니었다.
내 기대가 너무 컸던 탓일 수도 있다.

이참에 이성당 야채고로케를 더 주문하는 것도 나쁘진 않겠다.

성심당 투어를 마치고 우리가 향한 곳은 '성심당 부띠끄'.
성심당보다는 조금 더 고급진 베이커리를 판매한다.


그곳에서 건진 인생 케이크!! '딸기와살구싶다'

배합 공식은 대략 이런듯 하다.
 딸기 + 살구 + 얇은 크레페+ 생크림

정말 한번 먹기 시작하면 끊을 수 없는 맛이다.
생크림 케익이라는 게 먹다보면 느끼해져서 많이 먹기 힘든데, 딸기와 살구가 이 느끼함을 잡아준다.
크레페의 식감이 쫄깃함에 약간의 달직함이 더해져 정말 환상의 맛의 조합이다.

이번 대전 여행 1박 2일 여행동안 두번씩이나 방문해서 맛보았다.

반드시!! 두번 가라!!

루비 공부 참조 사이트

루비 - 1 : 설치 및 루비의 기본중의 기본


루비(Ruby) 설치

[일단 루비를 설치 하자]

 - 루비 설치 url : https://www.ruby-lang.org/ko/documentation/installation/#rubyinstaller
 - 설치방법 : 윈도우용 RubyInstaller 를 다운 받아서 실행
 - 텍스트 에디터로는 아직 뭐가 좋은지 잘 모르겠으니 일단 sublime을 쓰도록 하자
 - Sublime text 설치 url : http://www.sublimetext.com/2

 *설치 시 command line 명령어가 바로 먹도록 체크하는 박스를 꼭 체크하도록!


[루비 Command Line 명령어 (수시로 업데이트)]

 - ruby xxxx.rb : 작성된 루비 프로그램을 실행
 - irb : 루비 프롬프트 컴파일러


[루비 프로그램 작성]

루비 프로그램은 .rb 확장자로 된 소스파일을 가진다.
적절한 개발 Tool로 소스코드를 작성하여 command line 에서 'ruby xxx.rb'로 실행


루비 기본중의 기본

<Tutorial-00-Basic.rb>

# 루비 기본 중의 기본

# 1. 주석은 #(샾) 으로 시작

puts '이거슨 기본 출력 입니다.'
puts '한줄 입력 하는건 그냥 입력하면 되고,
개행은 그냥 엔터쳐서 입력하면 됩니다.'
puts ('함수 인자는 \'(\' 와 \')\' 안에다 써넣어야 하는데 생략도 가능합니다.')
puts '한줄에 하나의 표현식이라면 끝에 ;(세미콜론)을 생략할 수 있다.'

# 2. '작은따옴표'와 "큰따옴표" 차이점
$global = 'GLOBAL VARIABLE'
localV = 'LOCAL VARIABLE'
puts '작은 따옴표는 #$global 이거든 #{$global} 이거든 동작하지 않는다.'
puts "큰 따옴표는 #$global 이거도 #{$global} 이거도 잘 동작한다."
puts "#{$global} 은 #$global 이 가능하지만 #{localV} 는 #localV 가능하지 않다."
# $, @, @@ 등의 전역/인스턴스/클래스 변수는 중괄호 생략이 가능

# 3. 변수, 메소드 대소문자 구별 사용 원리
#def ThisIsFunc  # 함수 에러
def thisIsFunc
 thisIsLocalVariable = 0
 _thisIsLocalVariable = 0
# ThisIsLocalVariable = 0  # 지역변수 에러

 puts "이건 당연히 가능"
 puts thisIsLocalVariable
 puts _thisIsLocalVariable
 puts "지역변수, arguments, 메서드 이름은 반드시 소문자나 밑줄(_)로 시작해야 한다."
 puts "전역 변수는 $로 시작하고, 인스턴스 변수는 @로 시작하며, 클래스 변수는 @@로 시작한다."
 puts "클래스 이름, 모듈 이름, 상수는 반드시 대문자로 시작해야 한다."
end

#ThisIsFunc  # 함수호출 에러
thisIsFunc

# 4. 배열
thisArray = [0,1,2,3,4,5]
thisArray.each { |arr|
 puts "{}를 이용한 배열 값들 : #{arr}"
}
thisArray.each do |arr|
 puts "do end 를 이용한 배열 값들 : #{arr}"
end

wordArray = %w{유용한 팁 단어 배열을 쉽게 만들기}
wordArray.each do |arr|
 puts "\%w를 이용한 배열 값들 : #{arr}"
end

# 5. 분기문
if false
 puts "분기문 여긴 안들어옴"
elsif true
 puts "분기문 여긴 들어오지"
else
 puts "여긴 절대 들어올 일이 없지"
end

if true or false
 puts "true or false 니까 true"
elsif true and false
 puts "true and false 니까 false"
else
 puts "여긴 절대 안들어옴"
end

# 6. 반복문
while false
 # do nothing
end

while ((line = gets.chomp) != 'end')
 puts line.downcase 
end

# 7. 구문 변경자
valueTest1 = 3001
valueTest2 = 2999

puts "valueTest1(#{valueTest1}) : value가 3000보다 크면 출력" if valueTest1 > 3000
puts "valueTest2(#{valueTest2}) : value가 3000보다 크면 출력" if valueTest2 > 3000

# 8. 블록
#{puts "앞선 예에서와 같이 do~end 와 \{~\} 는 블록"}
#do
#    puts "이것도 코드 블록이다."
#    puts "이것도 코드 블록이다."
#end
 # 중괄호는 do/end 쌍보다 높은 우선순위를 갖는다.
# 한 줄의 블록에는 중괄호를, 여러 줄의 블록에는  do/end 쌍을 사용하는 것이 루비의 code convention 이다.

# 9. 해쉬 {'key' => 'value'}, 자바스키립트의 object 개념
map = {'첼로' => '현악기',
  '클라리넷' => '관악기',
  '드럼' => '타악기'}
puts map['첼로'].to_s + map['클라리넷'].to_s + map['드럼'].to_s + map['피아노'].to_s # map['피아노']는 nil을 반환

hashInstance = Hash.new('기본 value를 세팅')
puts hashInstance['nothing']

2016년 1월 13일 수요일

미들웨어 설계 고민

UI와 장비단을 담당하는 프론트와 중앙 집계 서버의 사이를 연결 하는 미들웨어를 만들자.

대충 이런식으로.

Front + Middleware <---> Server Computer

요 Front + Middleware 는 Client 가 되겠다.

내가 생각하는 Middleware 는 데몬처럼 돌면서 Front 프로세스의 Lifecycle을 관장하기도 해야 한다.

그리고 Front 와 Server Computer에서 오는 요청을 처리할 수도 있어야 한다.

Client 단에서 Middleware 는 http 서버 동작도 하면서 데몬역할도 하고,
Front에 먼저 메시지 요청을 push할 수도 있어야 한다. (요건 html web socket 으로 구현가능할듯)

 어떤 언어와 어떤 기술을 쓸까

후보
1. Node.js
 http://www.oss.kr/oss_repository14/549212
2. Python

대전 중구 - 은행동 광천식당

광천식당 명물 두부두루치기

- 두부두루치기
- 칼국수 사리
- 공기밥

나는 두부를 좋아한다.

회사 식당에서 연두부가 나오면 밥을 줄이는 한이 있더라도 연두부는 기본 2개씩은 먹는다.

두부두루치기가 어떻게 나오는지 배경지식 없이,
백종원 아저씨가 TV에서 너무 맛있게 먹는 모습에 이번 태교여행의 제 1목적지가 바로 이곳이 되어버렸다.

여느 전통있는 맛집 처럼 이곳도 정말 낡고 오래된 모습이다.

단촐하게 자리 잡아 두부두루치기 2인분에 공기밥, 칼국수를 주문한다.


국그릇에 가득 담겨온 두부 두루치기를 보라.
거일단 크기만해도 어마어마한데 저게 또 깊기도 하다.

처음부터 끝까지 두부라고 생각하면 된다.
아마 생 두부가 다섯모 정도는 들어가 있는듯 하다.

저렇게 나온 두부두루치기에 추가로 시켰던 국수 사리가 나오면 양념장과 적당한 두부를 얼른 덜어서 비빈다.

얼큰한 양념장에 비벼먹는 국수맛이 또 일품이다.

한참 먹다보면 매콤한 양념 덕에 입술이고 혓바닥이고 불이 나고 머리에선 땀이 비오는듯 하다.
이럴 때 하얀 치킨무같이 생긴 동치미 무를 아삭 씹으면 매운맛이 가신다.

그럼 다시 언제 매웠냐는 듯 멈추지 않는 젓가락질을 시작하면 된다.

두명이서 정말 배터지게 먹고 만오천원 정도 나왔던 것 같다.

이만하면 맛집 인정!

성남 분당 - 진미떡볶이

37년 전통의 즉석떡볶이 진미떡볶이

- 야채떡볶이
- 해물떡볶이
- 사리 : 쫄면, 야끼만두, 김말이
- 볶음밥

너무 맛있게 정신없이 먹어서 사진 찍는걸 잊었다.

주문은 야채떡볶이 밀떡으로,
사리는 중간에 주문이 안된다고 들어서 미리 주문,
라면은 불어 터질 수도 있으니 쫄면을 미리 넣어서 나중에 숟가락으로 퍼먹을 때 뚝 뚝 끊어질 정도로.

생활의 달인에서 나온 그 유명한 단무지
그냥 떡볶이를 먹는것도 맛있는데 얇게 슬라이스된 단무지를 싸서 먹으니,
매운맛과 밀떡의 약간의 느끼함이 중화되면서 계속계속 먹을 수 있게 해주는 것 같다.

떡볶이 2인분과 사리로 배가 터질 지경인데 여기다가 볶음밥 한개를 이미 주문해 놓은 상태.
하지만 문제없이 뚝딱 해결했다.

정말 만족스러운 한끼였다.
이건 분식이 아니라 요리다.

대전 태교여행 (1/8 ~ 1/9)


태아 정밀검사로 반차를 낸 김에 대전으로 간단히 여행을 떠났다.

후보군은 여러 지역이 있었다.

조건은
1. 같이 가보지 않은 지역
2. 교통이 편한 지역
3. 맛있는 먹거리가 많은 지역

처음에는 부산, 남해, 경주 같이 집에서 좀 멀고 사람들이 여행으로 많이 찾는 곳이 물망에 올랐다.
하지만 1박 2일 여행으로 너무 부담이 가는 거리라서 다른 곳을 물색하는 중에,
우리가 즐겨보는 프로그램 + 웹툰에서 2가지 먹거리가 눈에 들어왔다.

대전에만 있다는 '두부두루치기'와 대전의 명물 '성심당 케익'이 그것이다.

이번 여행은 이 두개만 점령해도 성공이다라는 마음으로 여행을 떠났다.


[숙소]
- 숙소명 : 토요코인
- 영문숙소명 : Toyoko-Inn
- 특징 : 일본 비즈니스호텔 체인
- 비용 : 5만원대 (2인 조식포함)
- 위치 : 대전정부청사 근처에 위치
- 주차 : 투숙객 무료

처음 호테 이름을 봤을 때는 무인모텔이 떠오르는 상호명이었다.
대략, 토요일 코인(현금) 을 이요하라는 정도,,,,??

하지만 일본 비즈니스호텔 체인이고, 대전 정부청사 근처에 위치해서 업무하기에 지리적으로 좋은 입지라고 한다.

호텔 방은 정말 깔끔하고 간결하다.
방문을 열고 '역시 일본이다' 라는 생각을 했다.
침실과 화장실로 구성된 구조인데, 화장실이 압권이다.

일전에 여행했던 오사카에서도 느낀건데 일본은 화장실을 정말 알뜰하게 만드는것같다.
마치, 방 안에 설치한 조립식 상품인 느낌인데
우리나라처럼 바닥에 타일이 있거나 실리콘으로 방수처리를 하지 않고
변기부터 욕조까지 일체형으로 되어있다.

침구 상태도 나쁘지 않고, 퀘퀘한 느낌도 없었다.

더욱이 매력적인 것은 5만원대의 숙박 비용에 조식까지 포함이다.
토스트와 빵으로만 끝나는 부실한 조식이 아니고,
밑반찬과 국, 흰쌀밥까지 나오는 은근히 실하다.


[유성온천]
- 상호명 : 유성호텔 대온천탕
- 비용 : 7,500
- 위치 : 대전 유성 온천지구 위치
- 특징 : 남탕에는 노천탕이 있음, 세신 비용이 만원~2만원대
- 주차 : 온천 이용객 무료

유성온천은 아침 일찍 다녀오는게 정말 진리인듯 싶다.
우리는 호텔 체크아웃시간에 맞춰 10시쯤에 방문했는데 이미 샤워부스는 만석이었다.
그리고 온천욕을 충분히 즐기고 이제 목욕을 하려는데, 목욕 좌석이 꽉 차서 기다려야 했다.
그래도 이만한 가격에 온천욕과 노천온천을 즐길 수 있다는건 엄청난 이득이다.

뜨끈하게 온천욕을 즐기고 아이스라떼 한잔은 정말 꿀이다.


[대전]
- 지역명 : 대전
- 한글이름 : 한밭
- 위치 : 서울에서 경부고속도로를 타고 2시간 쯤 떨어진 위치
- 특징 : 곳곳에 '한밭' 이라는 명칭이 많이 보인다.

고향이 대전인 회사 동료는 대학교를 인천에서 보냈다.
인천과 대전 중 어디가 더 낫냐 라는 질문에 그 친구는 대전은 기본적으로 계획도시라서 편한게 많다 라는게 답이었다.

직접 발로 밟고 돌아다녀 보니 그 말을 이해하게 되었다.
신도시 못지 않게 잘 닦인 길이며, 곳곳에 자연친화적 녹지들 그리고 대전 전체에 넓게 퍼져 흐르는 하천들이 잘 어우러져 있는 느낌이었다.


[한밭 수목원]
- 위치 : 대전 정부청사 근처, 대전엑스포 꿈돌이동산 근처
- 특징 : 흔히 생각하는 수목원 분위기는 아니고, 잘 가꾸어진 인공 공원 같은 느낌
- 주차 : 주말 무료 개방

전체적으로 잘 가꾸어지고 있는 것 같다.
한 겨울에 와서 그런지 푸르름도 없고 다채로운 색깔의 꽃들도 없어서 많이 아쉬운감이 있었다.
여름 혹은 봄에 왔었더라면 좀 더 이쁜 수목원을 감상할 수 있었겠다.

다행히 수목원 내부에 온실화원이 있어서 다양한 열대 식물들을 감상할 수 있었다.
한겨울에 열대 기후를 느껴보니 동남아에 여행 간 듯한 기분이 들었다.


[결론]

전체적으로 잘 먹고 잘 쉬다가 온 것 같다.

세계는 넓고 가고싶은 나라, 도시들이 너무나도 많다.

근데 나는 아직도 우리나라에 있는 멋진 곳들을 너무나도 모른다.

내가 잘 안다고 생각하지만 아직도 모르는 많은 이곳을 먼저 정복해보자.

2016년 1월 7일 목요일

첫번째 장난감 조립


드디어 도착했다. 공식 내 첫번째 장난감.

결혼한지 3년차에 되어서 , 이제야 제대로된 생일 선물을 골랐다며 기뻐하는 와이프의 하해와 같은 은총 덕에 향후 5년정도 신나게 가지고 놀 장난감이 생겼다.

신정 연휴가 끝나고 2016년 처음 맞는 월요일부터 신나게 노트북과 램을 주문 했고, 다음 날 동시에 받을걸 기대 했지만


요게 먼저 왔다.
그냥 비닐 패키지에 뾱뾱이 돌돌돌 쌓여서 왔다.


뾱뾱이를 돌돌돌 풀어서 왠 롯데껌 같은게 들어있더라.


그래도 제품은 성하게 왔다.
SAMSUNG 이라고 조그맣게 로고가 박혀 있지만, made in china 가 고개를 갸웃하게 만든다.
그래도 램슬롯에 꽂아서 8G가 보이는지만 확인하면 된다.

그리고 하루 더 보내고 수요일.
메인 장난감이 도착했다.
생각했던것 이상으로 패키징이 잘 되어있더라.

너무 흥분해서 Unpacking을 기록하진 못했지만, 샤오미 수준의 깔끔한 박싱 이었다.


언패킹을 마치고 2년전에 구매한 빈민에어(인민에어보다 하급)와 비교 샷.
빈민에어는 정말 빈한 모습이었던데 반해, 이번 U54X는 훨씬 고급스러워졌다.
이 가격에 이정도 외관 100% 만족.
가만히 보면 삼성 노트북 느낌도 난다.


이것저것 지저분한게 싫어서 컴퓨터 바탕화면도 TEMP폴더 아이콘 1개에 배경화면은 검은색 SOLID로 세팅해 놓는 나에게, 의미없는 CORE, OS스티커가 없는 모습은 더할 나위없이 좋다.



노트북 RAM을 설치해본 적이 없어 너무 긴장한 나머지 설치과정을 기록으로 남기진 못했다.
하지만, 추가설치한 SSD와 RAM이 이상 없이 인식된다.


나중에 윈도우8 설치할지 모르니 알고 있으라길래 찍어놨다.


지금 이 포스팅.
설치완료된 64비트 윈도우7를 품은 장난감으로 작성 중.


앞으로 잘 갖고 놀자.

나 나름 붐비치 선구자?

COC 이후로 슈퍼셀에서 열심히 밀어주고 있는 게임 '붐비치'


우연히 시작 한 이 게임은 한동안 나를 지배했었다.

자는 중에도 건물이 완성이 되었다는 푸쉬알람이 오면 다음 건물 업그레이드를 진행하고,
10시간 제작 걸어놓은 조각상의 결과물이 어떨지에 대한 기대감에 잠을 설치기도..

여튼, 내가 붐비치를 한창 하던 2014년때는 모든 사람들은 COC를 하고 있었다.
나름 회사에서 체계가 잘 잡힌 클랜도 있어서 주변사람들은 COC를 하라고 권했지만,
나는 꿋꿋이 내 갈 길을 갔다.

그리고 2016년, 게임상 최고 만렙(63) 도달을 눈앞에 두고 있는 와중에 로컬랭커에 먼저 진입을 했다.
지하철을 타거나 사람이 있는곳에 가면 심심찮게 붐비치를 즐기고 있는 사람들이 많이 눈에 띈다.

이제와 뿌듯한 느낌도 들지만, 여느 게임들이 그런듯 어느정도 수준에 올라오면 성취감이 줄어들게 되고 게임의 목적의식도 희미해져가서 결국엔 게임을 접게 되는데.
나도 지금 그런 시기이지 아닌가 싶다.

이제 점점 붐비치를 하는 시간이 줄어들고, 게임도 접겠지만
로컬랭커보드에 당당히 올라온 이름을 기록이나 해보자.



붐비치는 COC의 클랜처럼 작전팀을 구성할 수 있지만, 작전팀간의 전쟁은 아직 없다.(슈퍼셀에 의하면 아직 계획에는 없지만 고려는 하고 있다고.. / 충성 유저들을 위해서 더 많은 컨텐츠가 시급하다!!)
대신! 작전 이라는 개념이 있는데, 팀에 소속되어 있는 유저들이 합심하여 불가능할 듯 한 컴퓨터 기지를 작전을 짜서 점령하는 미션이다.

나도 초보시절부터 함께해온 팀이 있었지만, 회사 동료들을 모아서 5인 작전반을 꾸리고 아기자기하게 운영 중이다.


작전반 랭커 진입을 노리는 건 아니어도, 작전반과 함께 크는 동료들과 점점 더 어려운 맵을 점령해 나가는 맛이 있다.



슈퍼셀의 광고는 흥미롭고 재미있다. COC가 그랬고, 붐비치 또한 그렇다.
특히 이번 1/15 이벤트를 예고하는 광고가 재미있다.
기존 붐비치에 등장하는 캐릭터가 아닌 악당 테러박사를 주인공으로 해서 익살스럽게 표현했다.
분명 캐릭터는 영어를 말하는 입모양 이지만, 한국어 더빙과의 싱크로율이 상당히 높고 목소리 연기력 또한 일품이라는 생각을 했었다.
과연 저 목소리의 주인공이 누구일까... 궁금해 했었는데,
얼마 전 그 정답이 나왔따.




2016년 1월 5일 화요일

공부 - Spring + JSP

Spring을 활용한 JSP로 구현 된 웹페이지 분석 과제가 떨어졌다.


학부시절 처음으로 접했던 웹 프로그래밍.
ASP와 JSP 그리고 PHP를 만나서 놀라운 세계를 경험했었다.

그당시 프레임웍도 없었고, (있었다 해도 학습 의지가 부족하고 구글링 한다는건 내 자존심이 허락하지 않았..) 체계도 없이 배워서 엉망이었다.

그로부터 약 10년이 흘러 다시 AngularJS로 시작한 웹 프로그래밍,, 이건 신세계다.

그리고 다시 JSP로 돌아온 지금,
처음 웹 프로그래밍을 접했던때로. 새로운 언어를 공부하는 마음으로 다시 시작하자.


일단, 약 10분 만에 Spring JSP의 맛을 알게 해 준 포스트를 참조.
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

........

web.xml파일을 수정합시다.
[code]
<display-name>SpringHelloWorld</display-name>

  <servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>
     org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
  </servlet>

  <servlet-mapping>
   <servlet-name>springapp</servlet-name>
   <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
[/code]
*.htm으로 들어오는 요청에 대해서는 springapp서블릿을 사용하겠다는 얘기네요. 서블릿은 스프링프레임워크에 있는 DispatcherServlet이랍니다

DispatcherServlet의 제어 행위를 처리하는 설정 파일이 필요한데, 이것은 서블릿 이름에 -servlet.xml을 붙여서 작성합니다.
/WEB-INF/springapp-servlet.xml을 작성해봅시다.
[code]
<beans>
 <bean id="springappController" class="web.SpringappController" />

 <bean id="urlMapping"
  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <props>
    <prop key="/hello.htm">springappController</prop>
   </props>
  </property>
 </bean>

 <bean id="viewResolver"
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass">
   <value>org.springframework.web.servlet.view.JstlView</value>
  </property>
  <property name="prefix">
   <value>/WEB-INF/jsp/</value>
  </property>
  <property name="suffix">
   <value>.jsp</value>
  </property>
 </bean>

</beans>
[/code]
대충 보아하니 beans태그 안에 bean태그가 3개가 있네요. 첫번째꺼는 Controller이고, 두번째꺼는 urlMapping시켜주는데 /hello.htm으로 요청이 들어오면 springappController에게 넘기라는 걸로 보이는군요-_-;
세번째꺼는 선행자와 후위자를 정해놓는 뭐그런거 같습니다. 미리 써놓으면 항상 쓰이는 WEB-INF/jsp/파일이름.jsp 에서 앞 뒤 없이 이름만 써도 되니까요.

SpringappController.java를 작성해봅시다.
이놈은 Controller라는 인터페이스를 상속받습니다.
web이라는 패키지를 생성후 거기에다가 class를 생성합니다.
생성할 때 New Java Class화면에서 Interface부분에 Add버튼을 클릭해서 Controller를 선택해서 추가해주면 자동으로 해줍니다.
[code]
package web;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class SpringappController implements Controller {

 protected final Log logger = LogFactory.getLog(getClass());

 public ModelAndView handleRequest(HttpServletRequest arg0,
   HttpServletResponse arg1) throws Exception {
        String now = (new Date()).toString();
        logger.info("returning hello view with " + now);

        return new ModelAndView("hello", "now", now);
    }
}
[/code]
그냥 시간을 리턴합니다. new Date()로 시간을 생성해서 그걸 String으로 변환해서 now변수에 넣고, 로그를 기록하고, return할 때 now라는 변수는 now라는 이름으로 쓸 수 있게 hello파일에 넘겨줍니다. 이 hello는 앞 뒤 합치면 /WEB-INF/hello.jsp 가 되는 겁니다.

이제 /WEB-INF/hello.jsp파일을 봅시다.
[code]
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Hello :: Spring Application</title>
</head>
<body>
<h1>Hello World! - Spring Application</h1>
<p>Greetings, it is now<c:out value="${now}" /></p>
</body>
</html>
[/code]
now라는 변수를 c:out태그로 출력합니다. Controller에서 시간을 담아서 넘겨줬습니다.
아 그리고 jsp파일을 WEB-INF폴더에 넣는 이유는 JSP파일 접근에 대한 권한이 아마 우리한테 없고 SPRING에게 넘겨서 일껍니다-_-; 즉 직접적으로 접근하지 못하도록 하려고....-_-; 그런거 같습니다 ^^

was/SpringHelloWorld로 접속시 index.jsp를 실행하는데 없으니 하나 만듭시다.
index.jsp
<script>
location.href="hello.htm"
</script>
바로 hello.htm으로 포워드해줍니다-_-; 자 그럼 실행해봅시다.

[실행하면, hello.htm의 body태그 안의 내용이 나오고, '<c:out> 태그안의 now 변수 값으로 'SpringappController' 에서 handleRequest 함수를 통해 전달한 Date 객체가 출력된다.]

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
참조 : 머드초보님 블로그(http://mudchobo.tistory.com/116)

스프링을 공부하다 보면 제일 이해하기 어려운게 xml 문서가 아닐까 싶다.
위 블로그의 포스팅을 보면 xml과 JSP가 어떻게 엮여지는 지 나름 쉽게 설명해놓은거 같다.

공부 - 커리큘럼

Spring Framework의 이해
 - Hibernate 와 Mybatis
 - JSP
 - PHP

MEAN STACK 학습
 - Angular JS
 - Mongo DB
 - Express
 - Node.js

Ruby 공부
 - 지식 전무

Python 공부
 - 역시 전무.

Javascript 내재화
 - 그냥 닥치고 공부
ver.2016.01.06 

서울 종로 - 석탄회관지하 종로얼큰버섯칼국수와볶음밥

종로얼큰버섯칼국수와볶음밥 유일무이 대표메뉴 버섯칼국수와볶음밥

 - 세트 : 6,500원 (버섯칼국수 + 라면사리 + 볶음밥)
 - 인사동에 완전 동일한 가게가 운영 중, 거긴 6,000원



빨간 육수에 버섯과 칼국수를 넣고 끓인, 약간 고기 빠진 샤부샤부 같다.

버섯과 칼국수를 큼지막하게 떠서 먹고나면 육수와 라면사리가 리필된다.
참고로 라면사리는 양껏 리필해서 먹을 수 있다.(눈치는 덤)

육수를 졸이고 졸이면서 라면을 리필해 먹다보면 어느덧 라면육수덕에 국물이 걸죽해 지고 짭조름해진다.

이쯤되면 볶음밥을 시켜서, 걸죽해진 육수를 한국자 떠서 비벼먹으면

끝!

2016년 1월 4일 월요일

서울 종로 - 그랑서울 수하동

수하동 대표메뉴 곰탕 한그릇

 - 보통 : 10,000원
 - 특 : 13,000원 -> 내장류 추가
 - 날계란 : 300원




날계란은 필수는 아니지만 국물을 좀 더 부드럽고 담백하게 만들어준다.

채썰린 파를 셀프로 양껏 넣고, 간이 부족하다 싶으면 소금으로 입맛에 맞춘다.

약간 군내가 나기도 하지만 국밥처럼 말아져서 나온 밥을 한숟갈 크게 떠서 입에 넣고,
잘익은 깍두기 한입 베어물면 그게 꿀맛!

첫 술 부터 마지막 그릇째 들고 마시는 국물 한방울 까지 꿀맛!

공부를 위한 첫 장난감 구매의 조건


1. 값이 쎄지 말아야 한다.

2. 앵간한 성능은 해야 한다.

1,2를 합치면 다시 말해 가성비가 좋아야 한다.

그럼 얼마나 적당히 값이 나가야 하고 얼마나 앵간한 성능이어야 하는가.

컴공을 졸업하고 IT기업에 종사한지 어언 5년을 넘겼지만 아직도 하스웰, 브로드웰은 커녕
내 PC 사양은 펜티엄 150MHz냐, 펜티엄2냐 3냐를 못 벗어나고 있었다.

다행히 공부하고자 하는 열정으로 수일간을 노트북 사양 공부에 투자 했고 그 결과
'앵간한 성능'에 대한 정의가 내려졌다.

 - 최소 i5 듀얼 코어 (클럭수는 별 상관 없다. 3세대 이상 + 64bit 운영체제 지원, 단 저전력은 ㄴㄴ)
 - 램 4G 이상 (확장을 통해 최소 8G는 확보 해야 함)
 - Storage는 어차피 SSD를 활용할 생각이므로 멀티부스트가 있으면 좋겠다(구매에 돈이 들기때문)
 - 코딩 및 레퍼런스 웹사이트를 참조하는데 별 무리가 없는 15인치, 게다가 15인치 디스플레이를 놀리지 않을 정도의 활용성 높은 해상도

대략 이정도.

게임이 주 목적이 아니므로 그래픽 카드는 일찌감치 접었다.(쓸데 없이 가격만 높이는 X)


그럼 이제 세번째 고려사항이 나온다..

3. 최소 3년은 막 써도 문제 없을 정도의 내구성

A/S 좋고 튼튼한 제품은 역시 메이커만한 게 없으렸다. 하지만, 가격이 문제다.

요 며칠 간 노트북 검색에 매진한 결과 적정 가격은 60 미만으로 결정.

열심히 눈팅을 통해 몇개의 후보군이 눈에 들었다.

HP 파빌리온, MSI G50, 한성 U54X

브랜드파워는 역시 HP지만, 해상도가 딸린다.
이 와중에 중간급 브랜드 파워와 스펙이 모두 밸런싱이 잘 되었지만, 가격이 HP 파빌리온 급
브랜드파워는 아직 후달리지만 가성비 끝판왕, 게다가 스펙의 밸런싱이 끝장난다.

지금 이 블로그를 작성하는 데 사용되는 노트북이 바로 한성의 빈민에어.
1년여 간 사용해 오면서 끔찍한 자판배열과 터치패드 위치, 그리고 한번 안잡히기 시작하면 죽어라고 안잡히는 무선랜에 지긋지긋해지기도 했지만,
한번 더 속는 셈 치고 눈한번 질끈 감고 구매 결정을 했다.

아래는 U54X GA700의 풀 스펙이다


제조회사한성컴퓨터 (제조사 웹사이트 바로가기)등록년월2013년 11월
CPU 제조사인텔CPU 종류코어i5-4세대
CPU 코드명하스웰CPU 넘버i5-4210M (2.6GHz)
코어 형태듀얼 코어
디스플레이
화면 크기39.62cm(15.6인치)화면 비율와이드 16:9
해상도1920x1080
디스플레이 특징
LED백라이트눈부심방지
광시야각터치스크린
밝기자동조절회전LCD
베젤없음3D입체영상
메모리 특징
메모리 용량4GB메모리 타입DDR3L
HDD 특징
7200 rpmHDD 충격 보호
HDD 용량1TB익스프레스캐시
SSD 특징
SSDmSATA
M.2eMMC
SSD 용량
ODD 특징
ODD 종류ODD 옵션(선택)멀티부스트장착
GPU 제조사
AMD엔비디아
인텔기타
GPU 종류
AMD엔비디아
인텔HD 4600VGA 메모리시스템메모리공유
GPU 특징
AMD 크로스파이어엔비디아 SLI
듀얼 그래픽논옵티머스
운영체제 특징
운영체제운영체제 미포함비트수
네트워크 특징
100Mbps 유선랜1Gbps 유선랜
802.11 a/b/g/n 무선랜802.11 a/g/n 무선랜
802.11 b/g/n 무선랜802.11 n/ac 무선랜
4G LTEWiDi
모뎀블루투스블루투스 4.0
영상 입출력
HDMIDP포트
DVID-SUB
웹캠
단자
USB 2.0USB 3.0
USB 3.1썬더볼트
e-SATAIEEE1394
시리얼포트익스프레스카드
편의 기능
멀티 리더기숫자 키패드
블록 키보드키보드 라이트
침수지연키보드
보안 기능
얼굴 인식지문 인식
배터리 특징
리튬 폴리머탈착 불가능
배터리6cell어댑터65W
A/S 특징
월드워런티소비자과실보증
보증기간1년무게2.0 Kg
KC인증
적합성평가인증KCC-REI-ANM-SPARQ U54X 인증번호 확인
자율안전확인인증상세설명 / 판매 사이트 문의 인증번호 확인

출처 다나와 : http://prod.danawa.com/info/?pcode=2333651&keyword=u54x

여기에다가 DDR3L(저전력) 4G를 추가 하니 딱 60만600원.


오랫만에 공부에 대한 열정이 살아나고, 심사숙고 한 뽐뿌이니 만큼
기대된다.