2013-12-24

컴퓨터 신간

컴퓨터신간 2013-12-24 - [자바스크립트 테스트와 디버깅] 포함 6종

자바스크립트 테스트와 디버깅
전용우 지음 / 인사이트 / 2013년 12월
소프트웨어 테스트 자동화 - 테스팅 전문가들의 생생한 사례연구 스토리로 익히는
도로시 그레이엄 & 마크 퓨스터 지음, 여용구 외 옮김 / 에이콘출판 / 2013년 12월
누구나 쉽게 쓰는 앱 디자인의 비결 - 핵심을 짚는 명확한 UX 디자인의 힘
로버트 후크만 주니어 지음, 심규대 옮김 / 에이콘출판 / 2013년 12월
열혈강의 영상 처리 프로그래밍 - 기초 알고리즘부터 라이브러리 활용까지
이희석 지음 / 이한디지털리(프리렉) / 2013년 12월
자바 7의 새로운 기능 - 100가지가 넘는 예제로 살펴보는
리차드 리스 & 제니퍼 리스 지음, 남기혁 옮김 / 에이콘출판 / 2013년 12월
마리아DB 따라잡기 - 구글이 선택한 차세대 데이터베이스 MariaDB
다니엘 바솔로뮤 지음, 이동국 옮김 / 에이콘출판 / 2013년 12월


http://blog.aladin.co.kr/755686115/6770191
at December 24, 2013 at 01:58PM

2013-12-10

스프링 파일 다운로드 가장 간단한 구현

스프링으로 파일 다운로드 구현할 때 보통 파일을 읽어서 복사하는 코드를 작성하게 된다. 하지만 한 줄로 해결하는 방법이 있더라.

@RequestMapping(value="/{id}/download", method=RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource download(@PathVariable("id") SomeObj obj, HttpServletResponse response) {
    File file = myService.toFile(obj);
    response.setHeader("Content-Disposition", "attachment; filename=" + file.getName());
    /** 보통 아래와 같이 구현했었다. 이것도 간단하긴 한데...
    try {
        FileCopyUtils.copy(new FileInputStream(file), response.getOutputStream());
        response.flushBuffer();
    } catch (IOException e) {
        log.info("Error writing file to output stream. Filename was '" + file.getName() + "'");
        throw new RuntimeException("IOError writing file to output stream");
    }
    */
    /* 그냥 객체 하나만 던져주면 된다. */
    return new FileSystemResource(file);

}

2013-12-09

rm 명령어 안먹네?

왜 “rm -rf “XXX*.gif” 했는데 파일이 안지워질까? 머 차차 알아보기로 하고 일단…

$ find . -name "FILE-TO-FIND" -exec rm -rf {} \;
OR
$ find . -type f -name "FILE-TO-FIND" -exec rm -f {} \;

2013-12-03

mysql remote connection 설정

my.cnf 파일에서 bind-address를 0.0.0.0로 바꾸자. 특정 ip로 설정할 수도 있지만 localhost도 listen해야 하므로 두개 이상 설정해야 하고, 두개를 등록하는 방법은 없다. 0.0.0.0으로 하고 firewall을 세팅해야 한다.

bind-address        = 0.0.0.0
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

2013-11-28

구글 블로그는 아직도 markdown 지원을 안하네.

할 수 없이 wordpress에서 markdown 작성하고 ifttt를 이용해서 blogger로 복사하는 방식으로…

2013-11-14

CentOS에 headless로 VirtualBox 설치

$ sudo wget -O /etc/yum.repos.d/virtualbox.repo http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo
$ sudo yum -y install VirtualBox-4.3
어떤 버전이 repository에 있는지 알려면 virtualbox.repo 파일을 보면 http://download.virtualbox.org/virtualbox/rpm/el/ 경로가 있다.
호스트 OS에 맞게 선택하면 된다. 호스트가 어떤 릴리스인지 알려면 다음 명령어 사용.
$ cat /etc/*release

2013-10-10

아이폰4s 수리




내 아이폰4s.

3주 전에 앞면 액정 깨먹었는데 며칠 전에는 뒷면 액정이 깨졌다. 깨진 유리 표면을 손가락으로 만지다 피도 났다. 미세한 유리 알갱이가 엄지를 찌른 것. 집에서 아이들도 만지는데, 안되겠다 싶어서 얼른 테이프로 봉합. 그냥 이대로 쓸 수도 있겠다 싶었는데, 며칠 써보니 영 보기가 불편ㅎ다. 더구나 곧 5S 출시도 앞두고 있어서 바꿀 생각이고 현재 내 폰은 집사람 줄려고 생각하고 있었는데, 이대로 주기엔 좀 미안한 마음도 들고.

오늘 사무실 근처 "아이폰 수리"라고 창문에 붙여진 가게에 들러 가격을 물어보니, 아이폰4s는 아직 비용이 좀 나간다고.
  • 앞면은 15만원
  • 뒷면은 3만5천원
둘다 하면 공임비 좀 깍아서 18만원에 해주겠단다. 좀 비싸니 일단 생각 좀 해보겠다 하고 후퇴.

근처에 kmug 도 있어서 혹시나 싶어 방문. 내 폰은 이미 1년이 지나 별로 도움될 일은 없으리라 생각하면서도 일단 말이나 들어보자 했지. 번호표는 11명 대기. 책이나 읽으며 기다림. 46번 고객님 부름.
  • 앞면 액정 깨진거는 교체해야 한다고 함. 27만원.
  • 뒷면은 교체가 간단하다고 함. 진열장에 있는 뒷면 케이스로 5분만에 교체가능하다 함. 현금으로 1만원.
그래서 일단 뒷면만 교체했다. 뒷면은 거미줄처럼 깨졌지만 앞면은 유리에 줄이 간 정도라 테이프로도 좀 버틸만 하거덩. 

아이폰에 케이스 입히는 사람 이해를 못했는데(예쁜 디자인을 왜 껍데기 입히며 희생해야 하냐는거), 이번 같은 경우 당하면서 아이폰에도 케이스가 필요하다는 것을 절실히 느꼈다. 아이폰 깨져보지 않은 사람은 잘 모를 것이다. 

저번에는 아이폰 반납하고 새 아이폰 샀는데, 이제는 반납 안 할 생각이기 때문에 더욱 깨끗이 써야 한다. 비싼 기기를 푼돈에 반납하는게 좀 아깝고, 집에서 미디어 플레이어로 쓰든지 활용처도 생각해보면 다양할 수도 있을거 같다는 막연한 생각도 있고.

2013-09-26

컴퓨터 신간

컴퓨터신간 2013-09-26 - [만들면서 배우는 코코스2d-x Cocos2d-x 멀티 플랫폼 게임 프로그래밍 (퍼즐 & 슈팅) - 애니팡이나 드래곤 플라이트는 어떻게 만들까?] 포함 4종

만들면서 배우는 코코스2d-x Cocos2d-x 멀티 플랫폼 게임 프로그래밍 (퍼즐 & 슈팅) - 애니팡이나 드래곤 플라이트는 어떻게 만들까?
노재현 지음 / 한빛미디어(한빛아카데미) / 2013년 10월
전문가를 위한 C++ 1 - 개정판, C++11, STL, 템플릿, 디자인 패턴, 객체지향의 원리를 만나는 유쾌한 방법
마크 그레고리 외 지음, 권오인 옮김 / 한빛미디어(한빛아카데미) / 2013년 10월
전문가를 위한 C++ 2 - 개정판, C++11, STL, 템플릿, 디자인 패턴, 객체지향의 원리를 만나는 유쾌한 방법
마크 그레고리 외 지음, 권오인 옮김 / 한빛미디어(한빛아카데미) / 2013년 10월
iOS 6 핵심 정리와 실무 예제 마스터 세트 - 전2권 - 『The Core iOS 6 Developer's Cookbook (Fourth Edition) 한국어판』 + 『The Advanced iOS 6 Developer's Cookbook (Fourth Edition) 한국어판』
에리카 세든 지음, 동준상.송용근 옮김 / 에이콘출판 / 2013년 10월


http://blog.aladin.co.kr/755686115/6607189
at September 26, 2013 at 01:25PM

2013-09-11

erlang 설치

우분투 12.10의 경우 apt-get으로 설치하면 R14B04가 설치된다. 하지만 현재 스코어 R16B01이 최신버전인데...

가능하면 최신버전을 설치하는 것이 좋을 것 같고, 또 설치 과정이 좀 간단하면 좋을 것 같아서 찾아보니...

Riak 웹사이트의 얼랭 설치 문서가 잘되어 있는 것 같다. kerl이라는게 있었네. 여러 버전의 erlang을 관리할 수 있다고.

$ sudo apt-get install build-essential libncurses5-dev openssl libssl-dev fop xsltproc unixodbc-dev

$ curl -O https://raw.github.com/spawngrid/kerl/master/kerl; chmod a+x kerl

# ~/.kerlrc 파일에
KERL_CONFIGURE_OPTIONS="--disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --enable-darwin-64bit"

$ ./kerl build R15B01 r15b01

# 빌드가 끝나면
$ ./kerl install r15b01 ~/erlang/r15b01

# r15b01버전을 사용하자.
$ . ~/erlang/r15b01/activate

2013-07-29

공부의 목적을 알라! 
성적이 좋다고 원하는 삶을 
사는 것은 아니다. 
원하는 삶을 위해 필요한 공부를 해야 한다. 
스스로 공부를 하는 이유를 
모른다면, 평생 원하지 않는 숙제 만 할 뿐이다. 
      - 행복 바이러스 -

2013-07-17

커맨드라인에서 외부 IP를 알아 보자.

원본 기사

자세한 내용은 위 링크를 참조하면 된다. 간단한 내용은?

# 제일 간단하다.
$ curl ifconfig.me

# 더 안정적인 서비스라네.
$ dig +short myip.opendns.com @resolver1.opendns.com

# 아래와 같이 alias 등록해두면 편하겠지?
alias getmyip='dig +short myip.opendns.com @resolver1.opendns.com'

또, 브라우저에서 ifconfig.me 주소를 때려보면 더 자세한 정보도 볼 수 있다.

2013-06-27

컴퓨터 신간

컴퓨터신간 2013-06-27 - [데이터 마이닝 Data Mining - 데이터 속 숨은 의미를 찾는 기계 학습의 이론과 응용] 포함 9종

데이터 마이닝 Data Mining - 데이터 속 숨은 의미를 찾는 기계 학습의 이론과 응용
이안 위튼 외 지음, 이승현 옮김 / 에이콘출판 / 2013년 06월
머신러닝 인 액션 - 기계 학습 알고리즘으로 데이터 마이닝하기
피터 해링턴 지음, 김영진 옮김 / 제이펍 / 2013년 06월
테스트 주도 개발로 배우는 객체 지향 설계와 실천
스티브 프리먼 & 냇 프라이스 지음, 이대엽 옮김 / 인사이트 / 2013년 06월
칸반과 스크럼
헨릭 크니버그 & 마티아스 스카린 지음, 심우곤.인범진 옮김 / 인사이트 / 2013년 05월
데브옵스 - 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법
카일 랜킨 지음, 조남웅 외 옮김 / 위키북스 / 2013년 05월
프론트엔드 개발자를 위한 자바스크립트 프로그래밍
니콜라스 자카스 지음, 한선용 옮김 / 인사이트 / 2013년 05월
아마존 웹 서비스 클라우드 디자인 패턴 설계 가이드
타마가와 켄 외 지음, 박상욱 옮김 / 제이펍 / 2013년 06월
아마존 웹 서비스 완벽 활용법 - 365일 24시간 끄떡없는 웹 사이트 구축과 운영
제프 바 지음, 최용호 옮김 / 위키북스 / 2013년 04월
Android in Action - 다양한 예제로 학습하는 안드로이드 앱 개발법
프랭크 에이블슨 외 지음, 고종봉.강주희 옮김 / 인사이트 / 2013년 06월


http://blog.aladin.co.kr/755686115/6435291
at June 27, 2013 at 12:10AM

2013-05-01

mysql information_schema 이용하여 sql 문 일부를 생성하자.

일일이 타이핑 하기 귀찮으니...
select concat('r.',COLUMN_NAME,' = i.', COLUMN_NAME,',') FROM information_schema.columns where TABLE_NAME = 'USER';

@OneToOne @MapsId

@Entity
public class User extends BaseModel {
    @OneToOne(optional=false)
    @PrimaryKeyJoinColumn
    private UserExt userExt;
}

@Entity
public class UserExt extends BaseModel {
//    @Id Long id; // 이건 BaseModel에 정의되어 있음. 
    @MapsId
    @OneToOne
    @JoinColumn(name = "id")
    @PrimaryKeyJoinColumn
    @ForeignKey(name="fk_UserExt_User") // 이건 안먹더라.
    private User user;
...
}

그나저나 @OneToOne 매핑은 어렵구나. 1+n 문제 해결이 쉽지 않아.

2013-04-25

이제 나도 늙었나보다. 생각이 치밀하지가 못해. 자꾸 무언가 빠뜨린다. 버그도 많이 생기고.

2013-04-14

Mocks Aren't Stubs

Martin Fowler의 Mocks Aren’t Stubs이라는 글이 있는데, 제가 이 글을 3년 전 쯤에 심심풀이 삼아 번역을 했었습니다. 그냥 재미삼아 했고 구글 사이트에 올렸죠. 그 때는 테스팅에 대해 공부 좀 해 볼 요량으로 그런건데 여전히 TDD는 잘 못합니다. 그런데 며칠전 정상혁님이 이 번역글을 원문 글에 한국어 번역으로 링크를 추가하는게 어떠냐고 메일로 제안을 해 주셨어요. fowler에게 메일로 보내면 해 줄거라면서. 헤헤헤. 그래서 요청을 하려고 fowler의 메일 주소를 찾았는데, 못찾아서 페이스북 담벼락에 요청글을 남겼죠. 하지만 며칠이 지나도 답변은 없고… 그래서 메일을 다시 보냈더니 10분만에 응답! 링크 추가 완료. 진작에 메일을 보낼 걸… 페이스북은 자세히 안보는 모양입니다. About me 링크를 자세히 읽어 보는건데… 어쨌든 나름 유명한 아티클에 제 번역 글이 링크가 걸려서 좀 뿌듯해 지는 중입니다.

2013-04-12

컴퓨터 신간

컴퓨터신간 2013-04-12 - [스크럼으로 소프트웨어 제품 관리하기] 포함 4종

스크럼으로 소프트웨어 제품 관리하기
로만 피클러 지음, 박현철.류미경 옮김 / 에이콘출판 / 2013년 04월
소셜게임 디자인의 법칙 - 수익창출을 위한 전략과 기법
팀 필즈 & 브랜드 코튼 지음, 김호연 외 옮김 / 비제이퍼블릭 / 2013년 04월
프로 Git - 그림으로 이해하는 Git의 작동 원리와 사용법
스캇 샤콘 지음, 박창우 외 옮김, 숀 피어스 기술 리뷰어 / 인사이트 / 2013년 04월
아마존 웹 서비스 완벽 활용법 - 365일 24시간 끄떡없는 웹 사이트 구축과 운영
제프 바 지음, 최용호 옮김 / 위키북스 / 2013년 04월


http://blog.aladin.co.kr/755686115/6303625
at April 12, 2013 at 02:38PM