[FMX] Firemonkey에서 ODS 사용하기

2012.02.17 16:18
Firemonkey는 아무래도 Cross platform이다 보니 윈도우 API를 사용하는

OutputDebugString 등을 사용할 수 없습니다. 
근데, 너무 불편해요 ODS가 없으면 그래서 찾아보니

Window API를 사용할 수 있네요...
그것도 간단하게

uses에 Winapi.Windows를 추가하면 됩니다.
그리고 아래와 같이 예외(IFDEF)하시고 사용하시면

혹시 다른 플랫폼에서 문제가 생길 염려는 없겠죠^^

{$IFDEF MSWINDOWS}
  OutputDebugString(PChar(Format('우왕 ODS가 된다.', [])));
{$ENDIF}

끝~

험프리.김현수 파이어몽키

[IDE] 델파이 작업경로 바로가기

2012.02.10 10:10
델파이로 개발 작업 중 현재 소스 경로로 이동해야 되는 일이 종종 있죠...

그럴때마다 explorer를 실행해서 이동하려면 번거롭습니다. 

그럴때 유용한  기능을 소개합니다.

* 델파이 메뉴에 현재 작업 중인 작업경로를 여는 메뉴를 추가합니다.

우선 예전 아는 선배에게 들은 재미있는 이야기 하나.

선배는 핸드폰 관련된 개발 일을 했습니다. 

동료와 이야기 중 "Window CE에서는 탐색기를 어떻게 열어요?" 라는 질문에

근처에 있던 외국인 개발자 曰

"뭔 새끼? 탐새끼?"

-_-;

 
그래서 그 이야기를 들은 저는 그 이후로 탐새끼라는 단어를 주로 사용합니다. 

그러면 위의 탐새끼를 델파이에 등록해 보겠습니다. 

1, Tools > Configure Tools 선택
 

 2, [Add] 버튼 클릭 후 아래와 같이 입력 후 [OK] 클릭
 

3, Tools > 탐새끼 등록 확인

 위와 같이 등록하시면 "탐새끼"를 통해 현재 작업 중인 경로의 탐색기가 실행 됩니다.

참 좋은 새끼(?)죠?

끝~ 

험프리.김현수 Delphi/C++Builder 델파이, 작업경로이동, 탐새끼

구글캘린더에 ics 파일 등록

2012.02.07 19:52

구글 캘린더 참 편리하죠? 하지만 음력일자 등이 지원되지 않아 불편한 감이 있습니다.

그래서, 음력 달력 파일 등을 구글 캘린더에 등록하여 사용하는 내용을 소개 합니다.

0, 음력달력 생성

음력달력 생성기(hjLunarCalendarGenerator), 음력양력변환, 달력파일 생성(소스공개)


1, 구글 캘린더 방문

- 구글에 방문합니다.(http://google.co.kr)
- 더보기 > 캘린더를 선택하여 구글캘린더로 이동합니다.

2, 새 캘린더 만들기

- 내 캘린더 옆의 “▽” 버튼을 눌러 팝업 메뉴 호출
- “새 캘린더 만들기” 메뉴를 선택합니다.

- 캘린더 이름에 만드실 달력 종류 (예> 음력 달력)를 입력하시고 [캘린더 만들기] 버튼을 클릭합니다.

3, 캘린더 가져오기

- 내 캘린더 옆의 “▽” 버튼을 눌러 팝업 메뉴 호출
- “설정” 메뉴을 선택합니다.

- 하단의 [캘린더 가져오기] 메뉴를 선택합니다.

- 캘린더 가져오기 : [파일선택] 버튼을 클릭하여 등록할 파일을 선택합니다.
- 반드시 위에서 캘린더를 선택하시고 [가져오기] 버튼을 클릭합니다.

- 한참(약 1분: 50년치 음력 데이터(4400건) 등록 시)을 기다리면 아래와 같은 결과가 화면에 표시됩니다.

- 캘린더로 돌아가기로 달력을 확인하시면 추가된 달력이 표시되는 것을 확인 할 수 있습니다.


끝~

| 관련글 

2012/02/07 - [공개프로그램/음력달력 생성기] - 음력달력 생성기(hjLunarCalendarGenerator)
2011/12/20 - [SW / Dev/정보] - 아이폰 기본달력과 구글캘린더 연동하기



험프리.김현수 기타정보 iCal, 구글캘린더, 달력파일, 달력파일 등록

  1. 제가 만든 구글캘린더, 구글주소록 프로그램 한번 써보세요.
    PC에서 쉽게 입력해두면 모바일로 접근하기도 편하고 ^^

    http://capofcom.tistory.com/9

  2. Blog Icon
    송상섭

    고맙습니다. 이런 프로그램이 필요했는데..
    잘 쓰겠습니다.
    감사합니다. 송상섭 드림

음력달력 생성기(hjLunarCalendarGenerator), 음력양력변환, 달력파일 생성(소스공개)

2012.02.07 10:48

2012-11-07 추가 - 블로그 정리하다. 기존 게시물을 날려먹어 다시 글을 등록했습니다.(아까운 소중한 댓글과 좋아요 ㅠㅜ)

2012-03-29 추가 -  하단에 소스공개 정보가 있습니다.

2015-12-28 추가 - 2017년 1월과 2월의 대월/소월 정보가 바뀐 버그를 바로잡았습니다.(JiNN 님의 댓글 감사합니다.)(v.0.9.2)


아이폰 캘린더 및 구글캘린더를 사용하면서 소소한 문제가 되는 음력일정을 자동 변환해 주는 프로그램입니다.

개인적으로 구글캘린더와 아이폰 연동 시 어르신 생신을 관리하기 어려워 직접 제작하여 공유합니다.
(소스코드도 곧 공개할 예정입니다.)  

음력달력 생성기(hjLunarCalendarGenerator)


기능은 아래의 3가지 입니다.

1, 음력 / 양력 변환
2, 음력일자 표시 달력 파일 생성
3, 음력 기념일 달력 파일 생성


1, 음력/양력 변환

음력변환 : 음력 년/월/일을 넣고 [음력을 양력으로 변환] 버튼을 누르면 변환된 양력 일자가 화면에 표시됩니다.
  - 윤달인 경우 [위 음력 일자가 윤달인 경우 선택하세요.] 체크박스를 체크하고 시도
양력변환 : 양력 년/월/일을 넣고 [양력을 음력으로 변환] 버튼을 누르면 변환된 음력 일자가 화면에 표시됩니다.

2, 음력일자 표시 달력 파일 생성

☞ 달력파일(ICS 포맷)을 생성하여 구글캘린더 등에 등록하는 기능입니다.

1, 달력범위 조정 : 달력 범위를 조정하여 연도를 조정 합니다.(해당 연도의 달력 파일이 생성됩니다.)   
2, 음력달력 표시 형식 선택
3, [달력파일 생성] 버튼 클릭
4, 파일저장 경로 선택 후 [저장] 버튼 클릭하여 달력 파일 생성    
5, 구글 캘린더 등록

 - 음력달력 테스트(녹색) : 음력이름으로 표시 항목으로 파일 생성 후 등록
 - 음력달력 테스트2(적색) : 5일 간격으로 표시 항목으로 파일 생성 후 등록 

3, 음력 기념일 달력 파일 생성

☞ 음력생일, 제사일 등과 같은 음력 기념일을 등록하고, 달력파일을 생성하는 기능입니다.

1, 달력범위 조정 : 달력 범위를 조정하여 연도를 조정 합니다.  
2, 기념일 추가 : [추가] 버튼을 클릭하여 “기념일 등록” 창을 호출합니다.
3, 기념일 등록 : 음력일자 및 기념일 내용을 입력하구 [저장] 버튼을 클릭합니다.

- 음력일자 : 음력 월과 음력 일을 입력합니다.(말일을 선택해야 하는 경우 [월의 말일로 처리] 체크박스를 선택합니다.) 

- 기념일내용 : 달력에 표시될 기념일 내용을 입력합니다.
4, [기념일 앞에 일자 표시] 체크박스 선택 시 달력에 표시되는 기념일 종류 앞에 일자가 표시됩니다.
5, [달력파일 생성] 버튼 클릭
6, 파일저장 경로 선택 후 [저장] 버튼 클릭하여 달력파일 생성    
7, 구글 캘린더 등록 


혹시 필요하신 기능이 있으시면 댓글달아 주세요.

2012-03-29 추가

해당 프로그램 소스를 공개합니다.

라이센스는 GPL이구요 Github를 이용하여 공개합니다.

프로그램은 델파이(Delphi 2010)라는 RAD Tool로 작성되었습니다.

GIthub 정보

 - https://github.com/hjfactory/hjLunarCalendarGenerator

 - Github 사용법([SW / Dev/오픈소스프로젝트] - GIT과 Github 안내

관심있으신 분은 참여해주시고 Follow도 신청해 주세요^^;

2012-03-29 추가 끝


개선된 내용

  • 2012-05-29 : v0.9.1 - 기념일 추가(신규) 창에서 [삭제] 버튼 누르면 오류 발생 해결


관련글


험프리.김현수 Team Thoth/공개소프트웨어 ICS파일, 구글캘린더, 음력 양력 변환기, 음력계산, 음력달력, 음력달력생성기, 음력변환, 음력일자 조회, 태그를 입력해 주세요.

  1. 구정이 다가오고 있습니다. 예전에 제가 만든 음력달력생성기입니다.
    이 참에 새해 음력생일 잊지 마시고 미리미리 등록해 놓으시라고 추천해 드립니다^^

  2. Blog Icon
    unity

    감사합니다. 정말 유용하게 잘 썼습니다.
    다만, 제 사용 환경 win7 64bit 에서 작은 문제가 있는 듯 하여 버그 리포팅 남깁니다.

    1. 기념일 달력 생성-추가-기념일 등록 창에 기념일 내용 입력시 커서가 네모나게 깜빡일 때 저장을 누르면 커서가 위치에 있던 곳의 글자가 사라립니다. 엔터를 누르면 안 사라지고요. 다 입력한 후 방향키로 오른쪽으로 한 칸 이동하거나, 스페이스바로 공백을 한 칸 넣어줘서 커서가 네모 모양이 아닌 1자가 되면 저장을 누르더라도 잘림없이 다 나타납니다. 추가한 기념일 내용을 다시 수정하는 경우에도 위와 동일하게 네모 모양 커서일때 커서가 위치한 곳의 한 글자가 사라지는 경우가 있습니다.

    2. 이건 기능 추가 건의인데요. 달력 파일 만들 때 SpecifiedData 파일이 폴더에 생기길래 창을 닫아도 입력 기념일 내용을 기억하는구나 싶어 달력 파일 생성 후 창을 닫고 다시 열어봤더니 47개 목록중 처음 9개만 빼고 (스크롤 바 생긴 이후의 목록은 전부) 다 사라졌습니다. 다시 시험해보려고 다 ㅈ우고 12개 정도 목록을 넣은 후 달력 파일을 생성하고 창을 닫았다 열었더니 이번엔 목록이 전부 다 사라졌습니다. 아까 9개 남았던 게 버그였겠지요. ㅎㅎ 한 번 입력한 기념일 목록을 txt나 db로 저장해 다시 불러내 쓸 수 있으면 좋겠습니다. 1~2년 단위로 음력 일정을 넣었다 전체 삭제하고 다시 새로 생성하는 일을 하려면 기존에 만들어놨던 기념일 목록을 다시 불러오는 기능이 필요할 것 같습니다. 뭐 안되면 할 수 없겠죠? ^^

  3. 버그레포팅 및 기능건의 감사합니다. 우선 기능의 경우 적극적으로 반영하겠습니다. 그리고 버그의 경우 확인하고 처리해야죠^^ 노력하겠습니다~ 다시한번 감사드립니다.

  4. 올려주신 버그 확인해 봤는데 환경문제인 것 같아요.
    제 테스트 환경도 윈도우7 64bit인데 동일한 버그가 나타나지 않네요.

    그리고 입력한 목록은 SpecifiedData.dat라는 파일이 실행파일과 같은 경로에 생성됩니다. 참고해주세요.

  5. 자료 감사합니다. 정말 구글캘린더에서 음력처리때문에 골치아팠는데 정말 좋은자료 만나 편안하게 사용할 수 있게 되었네요. ^^

  6. 편하게 사용하셨다니 그간 작업에 보람이 있네요^^
    앞으로도 잘 사용하시고 필요한 기능있으면 말씀해 주세요^^
    감사합니다.

  7. 마침 좋은 프로그램을 만나게 되어 고맙게 잘쓰고 있는데요
    음력달력을 설치했더니 핸드폰 바탕화면에 음력날짜가 10일마다 일정처럼 떠서 불편합니다
    삭제하고 싶은데 방법을 모르겠네요
    일일이 하나씩 삭제하려고 하니 엄두가 안나구요
    혹시 삭제하는 방법이 있나요?
    캘린더 초기화 말고 삭제하는 방법도 있었으면 합니다...

  8. 에고 기존 달력에 음력을 추가하셨나 보네요. 음력달력은 음력을 양력으로 변경해서 건건히 등록하기 때문에 캘린더를 하나 생성해서 등록하셔야 합니다. 안타깝게도 기존달력에 추가하신 것을 일괄적으로 지울 방법이 현재로는 없네요. 도움이 되지 못해 죄송해요 ㅠㅜ

  9. Blog Icon
    땡큐

    아. 그렇군요
    잘 모르고 설치한 제 탓이지요 ^^
    답변 감사드리구요
    앞으로 하시는 일 다 잘 되시고 좋은 일 있으시길 바랍니다 ^^

  10. Blog Icon
    망또차차

    구글링하다가 좋은프로그램 찾아서 편하게 잘쓰고 갑니다~

  11. 감사합니다^^ 좋다고 하시니 작업한 보람이 있네요^^

  12. Blog Icon
    bagnad

    매번 음력 기념일 입력한다고 고생했는데, 덕분에 달력을 한방에 정리했습니다.
    감사합니다. ^^

  13. 잘 사용하셨다고 하니 보람이 있네요^^

  14. Blog Icon
    오이김치

    감사합니다. 어르신들 생신이 문제였는데 해결됐네요^^

  15. 저도 처음 어르신 생신때문에 작업을 했지요^^
    잘 사용하시기 바랍니다.

  16. Blog Icon
    메롱꼬마별

    유용하게 잘 쓰겠습니다. 감사합니다.

  17. 네^^ 감사합니다.

  18. Blog Icon
    봉돌이

    고민을 한 방에 해결하는 프로그램이네요. 더 이상 확실한 방법이 없을 듯 합니다.
    정말 감사히 쓰겠습니다. ^^

  19. 네^^ 좋은말씀 감사합니다.~!!

  20. Blog Icon
    KY

    감사합니다. 덕분에 음력기념일을 구글 캘린더에 추가하여 잘 사용하고 있습니다. 누락된 음력 기념일을 추가하고 같은 파일명으로 저장한후, 구글캘린더에서 가져오기 실행하였더니, 추가한 기념일만 구글캘린더에 추가 된 것이 아니라 모든 기념일이 하루에 두개씩 표시됩니다. 구굴캘린더에 표시된 기존 기념일 전체를 한번에 삭제할 수 없나요?

  21. Blog Icon
    전경수

    와우 대박자료네요. 정말 잘 쓰겠습니다 감사합니다.

  22. 네 유용하게 사용하시기 바랍니다^^

  23. Blog Icon
    기발

    아이폰5 ios8.1 사용중인데
    기념일을 생성하면 한글폰트가 깨져 기호로 나옵니다.

  24. Blog Icon
    굿

    아이폰6에서 사용중인데 기념일 한글 폰트가 깨지네요
    또한 이벤트 추가말고 삭제법은없나요? 너무많아서 일일히 삭제하기가 힘들어요..

  25. 안타깝게도 삭제 기능이 없네요 ㅠㅜ
    그래도 새로운 캘린더를 만들고 해당 캘린더에 음력정보를 넣어 사용하기바랍니다. 그러면 캘린더를 통째로 지우면 음력정보도 통째로 지워집니다.

  26. Blog Icon
    경주

    달력 컴포넌트에서 우측상단의 년도를 클릭시 20개의 범위 안에서 선택할수있는데 이 범위를 늘릴 방법은 없나요?

  27. Blog Icon
    무척 유용

    아주 유용한 자료를 찾게 된 기념으로 댓글 한 방. ^^;

    올 초에 음력 달력이 필요해서 검색을 해 봤더니, 초장기간의 음력달력 ics 파일이 돌아다니던데, 아무래도 이 프로그램으로 생성한 파일 인듯?

    저건 너무 기간이 길어서 버리고(?), 다른 파일을 찾아서 사용 중인데 10일 간격으로 음력이 표시되고 어쩌고 하는걸 보니, 이 파일 역시, 김현수님이 만드신 이 프로그램으로 생성한 ics 파일 인 듯.

    여하튼 아주 대박인 프로그램입니다.

    이 프로그램 사용시 유의할 점은요.

    ******************************주의*********************************

    반드시 반드시 새로운 달력을 등록하셔서, 저 달력에서 이 프로그램으로 만든 ics파일을 불러 오세요.

    이 내용을 본문에 대문작만하게 하나 박아주세요. ^___^

    음력을 항상 확인할 것도 아닌데, 음력이 항상 켜져 있으면 귀찮잖아요? 그래서 필요할 때마다 저걸 켰다 껐다 하면서 사용하셔야 됩니다.

    위에 댓글을 보니, 벌써 기존 달력에 병합하신 분이 한 분... 쿨럭~

    공휴일이나 기념일 같은 경우에도 입맛에 따라, 새로운 달력으로 만드는 것도 괜춘. ^^;

    여하튼 이 프로그램 만드신 분이나 사용하시는 분이나 대박 나세요.

  28. Blog Icon
    JiNN

    안녕하세요. 좋은 자료 고맙게 썼습니다.
    그런데 오래된 글이라 이 댓글을 확인하실지는 모르겠지만 음력 2017년에 오류가 있는 것 같습니다. 다음, 네이버, 천문우주포털에서는 1월이 29일까지, 2월이 30일까지인데 이 프로그램에서는 1월이 30일, 2월이 29일까지네요. 이전이나 이후에도 이런 차이가 있는지는 잘 모르겠습니다. 우연히 내년과 내후년 기념일을 입력하다 보니 따로 검색해 직접 입력한 기념일과 이 프로그램으로 입력한 기념일이 차이가 나서 발견했거든요. 혹시 괜찮으시다면 이후 사용하실 다른 분들을 위해 수정해 주시면 좋겠습니다.
    다시 한번 감사드립니다.

  29. 천문우주지식정보(http://astro.kasi.re.kr/)를 참고해 음력 2017년 1월과 2월의 대월/소월이 뒤바뀐 부분을 수정했습니다.(v.0.9.2에 반영되었습니다.)
    의견 감사합니다.

  30. 구글스토어에서 캘린더 어플 마음에 드는 걸 찾았는데, 외국개발자가 만든 어플이라, 음력이 안 되서 아쉬웠는데, 사용후기에 여기서 음력달력 생성하고, 구글캘린더로 올리면 그 어플에서도 이용가능하다고 해서 방문했습니다.
    지금 달력은 잘 만들었습니다. 사용이 기대됩니다. 감사하게 잘 사용하겠습니다.

  31. 감사합니다.^^ 잘 사용하시기 바래요.

  32. Blog Icon
    unity

    잘 쓰고 있습니다!
    오류를 하나 더 발견해서 댓글 남깁니다.
    위 JiNN 님 댓글처럼
    2015년 12월이 29일까지, 2016년 1월이 30일까지인데
    이 프로그램에서는 12월이 30일, 1월이 29일까지네요
    올 음력 1.1~1.30의 생일이 하루씩 밀려서 뭔가 하다가 알았습니다.
    저야 기껏 개인적인 용도니 몇 명 안되서 수작업으로 금방 고쳤지만요. ^^
    좋은 프로그램 만들어 주셔서 합니다!

델파이 구조체(record) 사용 팁

2012.01.31 10:37

구조체(Record) 많이 사용하시죠?

생각보다 구조체를 사용하는 방법이 다양해서 소개하려 합니다.

우선 간단한 샘플
연/월/일 형식으로 데이터 입력 후 한번에 데이터 저장하는 코드입니다. 

type
  TRecordType = (rtData, rtStructure);

  TDateRec = record
    case TRecordType of
    rtData:       (Data: array[0..5] of Byte);
    rtStructure:  (Year, Month, Day: Word);
  end;
위와 같이 구조체가 정의 되어 있습니다.

2가지 타입(rtData, rtStructure)로 사용해 봅니다.
 
| rtStructure - 연월일 형식으로 입력
procedure TForm2.btnAddClick(Sender: TObject);
var
  Rec: TDateRec;
begin
  DecodeDate(dtpDate.Date, Rec.Year, Rec.Month, Rec.Day);

  AddDate(Rec);
end;

| rtData - 데이터 형식으로 저장
procedure TForm2.AddDate(ADate: TDateRec);
var
  FilePath: string;
  FS: TFileStream;
begin
  FilePath := ExtractFilePath(Application.ExeName) + 'test.dat';

  FS := TFileStream.Create(FilePath, IfThen(FileExists(FilePath), fmOpenReadWrite, fmCreate));
  try
    FS.Position := FS.Size;
    FS.Write(ADate.Data, SizeOf(ADate.Data));
  finally
    FS.Free;
  end;
end;

 위의 2가지 코드대로 하나의 구조체를 다양한 방식으로 사용가능합니다.
TRecordType 은 제가 임의로 2개를 정의한 것이므로, 여러개로 나누어 사용하여도 됩니다.
또한, 굳이 위 구조체가 아니어도 아래와 같은 코드로도 사용 가능합니다.

| Messages.pas의 window message record 
  TMessage = packed record
    Msg: Cardinal;
    case Integer of
      0: (
        WParam: WPARAM;
        LParam: LPARAM;
        Result: LRESULT);
      1: (
        WParamLo: Word;
        WParamHi: Word;
        LParamLo: Word;
        LParamHi: Word;
        ResultLo: Word;
        ResultHi: Word);
  end;
끝~

험프리.김현수 Delphi/C++Builder Delphi, Packed record, Record

hosts 파일의 이용

2012.01.30 16:56
회사 업무 중 도메인 관련되어 테스트할 일이 있어 hosts 파일을 이용했습니다.

hosts 파일이란?
 - 개인의 DNS 서비스 입니다. 
 - 웹페이지 요청 시 윈도우는 제일 먼저 hosts 파일을 먼저 검색합니다.
 - 특정 도메인 접근제한 및 개인 IP 등록 등의 용도로 사용가능 
말은 어렵습니다. 한번 보시면

| hosts 파일 내용

 - hosts 파일의 경로는 "C:\Windows\System32\drivers\etc\hosts" 입니다.
 - 파일 하단에 IP주소와 매칭되는 도메인을 공백으로 구분하여 입력합니다.

| 웹브라우저에서 사용 

 - hosts에서 등록한 도메인 사용하는 모습입니다.
 - 매번 testpc IP 기억하기 부담되어 hosts에 등록 후 사용합니다.
 - testpc 등 정상 도메인이 아닌경우 http://를 붙여 주세요.

끝~ 

험프리.김현수 기타정보 hosts, local dns

git에서 파일 무시하기(ignore pattern)

2012.01.27 10:59
제가 사용하는 TortoiseGit에는 TortoiseSVN과 다르게 GUI에서 ignore pattern을 제공하지 않습니다.

그래서 무시할 패턴을 작성한 파일을 수동으로 생성해야 합니다.

2가지 방법이 있습니다. ".gitignore" 파일 생성, ".git/info/exclude" 파일 변경
두가지 모두 파일의 내용은 동일합니다.

우선 .gitignore 방식으로 설명합니다.

1, 작업 디렉토리 최상위에 ".gitignore"파일을 생성합니다.
(또는 작업 디렉토리 최상위의 ".git/info/exclude"파일을 오픈합니다.)

2, 위의 파일을 메모장 등으로 엽니다.

3,  원하시는 제외 패턴을 작성하고 파일을 저장 합니다.(끝)

패턴 작성 시 참고사항은

# 이후의 내용은 주석 처리 됩니다.

제가 사용하는 델파이의 무시 패턴은 아래와 같습니다.(.gitignore 파일은 첨부합니다.)

*.dcu

*.~*

*.dproj.local

*.identcache

__history

*.drc

*.map

*.zip

*.exe

*.dll

*.elf

.gitignore
다른 패턴은 아래 링크를 확인하세요.
https://github.com/github/gitignore  


험프리.김현수 Team Thoth/오픈소스

  1. 두가지 방식중 .gitignore를 사용하는 방법은 저장소에도 영향을 미치므로 clone 하는 사람도 동일하게 적용이 가능한 것이고, .git/info/exclude로 무시하는 방법은 자신만 영향을 미치는 방법입니다. 상황에 맞게 사용하면 되지요 ^^

7인의 IT 북 콘서트 후기

2012.01.20 01:30

  2012년 1월 17일 광화문 올레 스퀘어에서 IT 저자 7인의 북 콘서트 행사가 있어 다녀왔습니다.  그날이 제 생일임에도 불구하고 발표 주제들이 평소 관심을 갖던 내용이어서 큰 기대를 안고 동료와 함께 갔습니다. 

  콘서트는 1부와 2부로 나뉘었고 제가 주관적으로 받아 들이기로는
1부는 스마트한 세상에서 살아가기 위한 마음가짐 및 방법이 주가 되었고,
2부는 변해가는 세상에 대한 대처방안이 주가 되었습니다.

  평소 제가 두리뭉실하게 꿈꾸고 막연히 원했던 부분을 각 저자들의 강연을 들으며 구체화 되기도 했고, 다시 다짐할 수 있는 좋은 자극제가 됐던 것 같습니다.
 
  그 생각 및 다짐을 다부지고자 저를 위한 강연 후기를 작성합니다.

 

| 공연준비 및 무대인사

  위 무대는 7명의 작가들이 강연 할 무대입니다. 앞쪽의 책은 중간중간 진행된 이벤트 당첨자에게 나눠줄 책들이며. 행사장은 약 250여 명의 참가자들이 가득 메웠답니다.
강연 전 두 분의 진행자가 나와 조용한 분위기를 바꿔놓은 재미있는 첫 번째 행사가 진행 됐습니다. 자신의 등에 판(?)을 붙이고 생판 모르는 주변사람들에게 소원을 물고 그 소원을 포스트잇에 적어, 상대의 등에 붙여주는 간단한 룰이었습니다. 그러면서 서로 인사도 하고 눈에도 익힐 수 있는 자리였습니다. 약 5분~10분 정도 진행 되었고, 그 중 제일 많은 포스트잇을 붙임 당한 5명의 사람에게 한 권의 책을 증정 했습니다.

위 행사로 조금은 분위기가 업 되었고 간단한 무대 인사 후 바로 콘서트가 시작되었습니다.

| 1부

1, 스마트하게 야성을 되찾기

김국현 -  평론가, 만화가, 개발자
  성장할 수 있었기에 모든 것이 덮어질 수 있던 시대는 가고 지금은 저성장 시대. 게다가 세계화와 정보화라는 돌이킬 수 없는 변화를 만난 우리들. 어떻게 노마드의 본능을 되찾을 수 있을까. 스마트워크란 결국 노마드워크. 우리 모두 언젠가는 우뚝 서야 할 바로 그 광야에서의 이야기.

개인적으로 제가 제일 인상 깊게 들었던 강연이었습니다. 왜냐하면 제가 하고자 하는 일들에 대한 막막함과 막연한 두려움에 일침을 주는 내용들의 연속이었습니다.
우선 제일 뇌리에 남았던 한 마디는…

축사에서 광야로

안전하고 단조로운 축사(직장)에서 수많은 사건(고려사항)이 있겠지만 자신의 의지대로 살 수 있는 광야로 나가야 한다. 왜?  마을 밖 저 광야에 대한 본능적 궁금함이 누구 에게나 있기 때문에, 그리고 언젠가(자의가 아닌 경우가 많음)는 가야 하기 때문에…

또한 3C의 순환자극이 있어야 한다.
1, CELEBRATE – 가치 창조의 기쁨을 공감하고 시장과 사회에 공표
2, CAPTURE – 가치를 포착
3, CONNECT – 다른 가치들과 이어지고

 “정말 내가 하고 싶었던 그 걸 그냥 지금 바로 하는 용기”, “객관적으로는 안될 것 같지만, 주관적으로 나를 부르는 길”, “고독과 결핍에서야 진정한 작품이 나온다” 등등 가슴이 요동칠 만한, 지금 제 상황과 딱 들어 맞는 좋은 이야기들을 들었습니다.

그리고, “지금은 안식, 안정의 과대평가 시대이다. 도전하라 삶은 어떻게든 이어진다. 너무 걱정하지 말아라”라는 말로 강연이 마무리 되었습니다.

2, 스마트하게 진화하기

김지현 / 다음커뮤니케이션 전략담당 이사, 카이스트 정보미디어 경영대학원 겸직교수, 
  2011년 대한민국은 스마트폰과 SNS가 트렌드를 지배했다. 심지어 스마트라는 단어는 IT를 넘어 사회, 경제, 문화의 키워드가 되어가고 있다. 디지털 시대를 넘어 스마트 시대에 접어든 지금, 우리 인류에게 필요로 하는 것은 스마트 시대에 맞는 역량과 능력이다. 대학생, 창업자, 직장인들이 새로운 시대에 가져야 할 업무력을 갖춘 호모스마트쿠스에게 필요한 스마트워크에 대한 이모저모를 살펴본다. 스마트 시대의 정의는 무엇이고, 이 시대에 우리에게 필요한 역량을 무엇인지에 대해 이해하고 보다 나은 준비된 인재로 거듭날 수 있는 방안을 알아본다.

총 45권의 책을 집필하신 김지현님이 두번째 강연자로 나섰습니다. 인류의 발전에 빗대어 현대인이 갖추어야 할 역량을 흥미롭게 설명해 주셨습니다.

호모 에렉투스와 호모 사피엔스는 도구를 사용할 수 있다는 공통점이 있지만, 호모 사피엔스는 불을 이용하는 것을 넘어 불을 만들고, 돌을 이용하는 것을 넘어 나무와 돌을 엮어 그 이상의 도구로 발전시키는 차이로 둘간의 생존 경쟁에서 호모 사피엔스가 살아남아 우리 조상이 되었습니다.

위의 예에서와 같이, 현재는 통섭의 사고를 하며, 급격히 진화하는 IT 도구를 다룰 수 있는 인재만이 이 시대를 이끌어 갈 수 있다는 교훈을 얻었습니다.
호모 사피엔스가 불을 피우는 것과 같은 0.001%의 차이가 결과론 적으로는 현생의 인류까지 오게 되었습니다.

1, 즐길 수 있는 일의 선택 – 행복
2, 부족함을 알고 배우려는 열린 마음 – 발전
3, 세상에 가치를 제공할 수 있는 명분 - 기여

위 3가지 항목은 “하고 싶은 것, 할 수 있는 것, 해야만 하는 것으로” 대변되며 서로 선순환 되어야만 한다.

3, 스마트하게 책쓰기

홍순성, 홍스랩 대표(혜민아빠), 인터뷰어 / 스마트워킹 라이프 저자 
  이번에 집필한 '스마트워킹 라이프' 책은 대중교통으로 이동하면서 스마트폰으로 대부분의 작업을 진행 했으며 "거리에서 시작해서 거리에서 완성되었다"고 볼 수 있다. 또 다시 인생의 5번째 책도 스마트폰으로 작성되어지고 있다. 그렇다면, 책을 집필하기 위해서는 준비 작업부터 수집 및 가공, 집필까지 복잡한 과정들이 거치게 되는데 이러한 작업은 꽤나 손이 많이 가고 꾸준하게 작성하지 못하면 스트레스를 동반하게 된다. 책을 집필하기 위해 일정 시간을 할애 할 수 있다면 모를까? 바쁘게 살다보니 시간을 제대로 사용할 수 없으니 스마트폰과 태블릿은 자투리 시간 투자는 책을 집필 할 수 있도록 큰 도움을 제공한다. 참고로 스마트워킹 라이프 책은 "나 자신이 가장 편리하게 일할 수 있는 환경을 구축하는 것"을 의미한다.

이 행사를 주관하신 홍순성님의 차례입니다. 사실 별 기대를 안하고 강연을 듣다, 상당한 욕심을 마음속에서 들끓게 했던 강연이었습니다.
그 이유는…

내 이름을 가진 한권의 책

평소 생각했던 것이 “내 이름으로 된 책을 딱 3권만 내고 싶다” 였습니다. 근데, 홍순성님께서 책을 쉽게 내는 법에 대해 강연을 해주셨습니다. 이런 횡재가^^

우선 이번에 출판하신 “스마트 워킹 라이프”는 거의 모든 내용을 이동 중에 스마트폰을 이용하여 작업하셨다고 합니다. 행사 참여 전 행사소개 글을 보고 “어떻게 그런 일을 할 수 있을까?” 하는 의문과 “정말? 과연?” 이라는 의구심이 더 컸습니다.
하지만 강연 내용을 들으며 가능하구나 나도 가능하겠다. 라는 생각까지 미쳤습니다.

우선 스마트폰 메모앱 중 최강인 “에버노트”를 활용했습니다. 저 또한 이동 중 생각나는 아이디어나 생각 등을 에버노트를 이용해서 작성하고 정리하는데 너무 유용하게 사용합니다.
하지만, 그 앱으로 책을 쓰시다니 대단하십니다.

1, 우선 하나의 노트에 목차를 구성합니다. 1장, 2장, 그리고 각 장별 1단락, 2단락, 3단락…
2, 목차에 해당하는 내용을 스마트폰을 이용하여 초고를 작성합니다.
3, 목차와 해당 노트를 노트링크로 연결합니다.
4, 이후 PC 등을 이용하여 수정 및 교정하여 출판합니다.

- 주제선정 : 가장 잘 할 수 있는 것, 가장 관심이 많은 것
- 자료수집 : 꾸준하게 검색, 쌓는다고 내것이 아님, 계속해서 목차 정리 필요

현재, 다음 책(에버노트 활용법?)도 위의 방식으로 작성하신다고 합니다.
그래서 저도 도전해 봅니다. 전 따라쟁이니까요.^^

1부 끝 – 저자와의 대화

1부의 3저자의 강연이 끝나고 저자와의 대화가 있었습니다.
기존 틀에 박힌 청중이 마이크로 질문하면 그에 답변하는 방식이 아닌 획기적인 방식으로 말입니다.
우선 행사 시작 전 백지를 2장 주셧습니다. “왜 주는거지? 메모하라는 건가?” 의문이 있었지만 요때 쓰려고 준거였습니다. 우선 종이에 저자 1명에 대한 질문을 적습니다. 그리고 본인 이름도 적습니다. 그리고 종이비행기를 만들고 모두 함께 무대로 날립니다. 어떻게든 무대로 보내야 합니다. 왜냐하면 저자가 무작위로 고른 종이비행기에 뽑히면 무려 6권의 도서를 받을 수 있는 대박 이벤트였습니다.
그렇게 저자들과의 대화는 즐겁게 진행됐고 저자분들은 모든 질문에 답변해 주신다고 종이를 모아 가셨습니다. 제 질문에도 답변 좀 주시지^^

그렇게 1부는 마무리가 되고 곧바로 2부가 시작 되었습니다.

| 2부

4, 가치있게 공유하기

명승은, 티엔엠미디어 공동대표 / 벤처스퀘어 대표 / 한국블로그산업협회 회장 / 큐레이션 감수
  정보통신 업계는 기본적으로 사람들이 더 많은 ‘소식’을 공유하고 자신의 판단력과 이해력을 지인과 ‘공유’하여 집단지성을 만들어낼 것이라고 보고 있다. 검색이 사람들의 기억력과 판단력을 보조해줄 것이다. 하지만 검색이 찾아내서 '평가'하는 기계적 알고리즘은 한계를 안고 있다. 누구나 이야기할 수 있다고 해서 아무나 남들로부터 인정받는 통찰력을 보여주기는 힘들 것이다. 그래서 새로운 소통형 전문가, 큐레이터가 새로운 조류로 떠오를 것으로 본다.

저자가 아닌 감수자로 이 행사에 참여하신 명승은 님. 평소에 본인이 꼭 쓰고 싶은 내용이 있었는데, 우연히도 그 내용과 일치하는 책을 읽어 달라는 출판사의 제의에 무려 200장 가까운 내용을 출판사에 보냈다는 열정이 있으신 분.

온라인 상에서 질 좋은 콘텐츠를 수집.공유하고, 다른 사람이 만들어낸 콘텐츠를 가치 있게 퍼블리싱하여 다른 사람이 소비할 수 있도록 시민 편집자 역할을 자처하는 콘텐츠 큐레이터가 앞으로 소셜 웹을 주도하게 될 것이다. 
- 스티븐 로젠바움

인간은 본인이 가치 있다고 생각되는 것을 공유해야 한다. 정보 공유는 본능이다.

정보 폭증의 시대 인간 중심의 발전적 회귀

현대 사회의 화두가 되고 있는 Bigdata  과거 정보 결핍의 시대에서 현재 정보과잉의 시대가 도래하고 있습니다.

“인류 문명이 시작된 이래 2003년까지 만들어진 데이터 양은 통틀어 5엑사바이트(EB)에 불과했습니다. 지금은 이틀마다 그만큼씩의 데이터가 새로 추가되고 있으며, 이 속도는 점점 빨라지고 있습니다.”
- 구글 CEO 에릭 슈미트 (2010년 테크노미 컨퍼런스)

과연 인간은 컴퓨터가 알려준 길로 갈 것 인가? 사람이 알려준 길로 갈 것인가?
(알고리즘 보다 인간에 대한 믿음)

결국은 사람 중심의 세상으로 다시 돌아가야 한다는 멋진 강연 이었습니다.

5, 가치있게 공유하기

정진호 SK커뮤니케이션즈 기업문화팀, Ignite Seoul 오거나이저, 프리젠테이션 마스터 역자
  프리젠테이션이란 무엇인가? 다양한 해석이 가능하겠지만 한마디로 표현하자면 소통의 예술이라고 말할 수 있다. 스토리와 시각적 자료를 이용해 자신이 알고 있는 것 원하는 것을 효과적으로 전달하고 청중과 공감하는 것은 다양한 기술이 어우러져야만 하는 종합예술이다. 프리젠테이션이란 결국 사람과 사람의 소통이라는 본질은 변함이 없다. 지혜로운 프리젠테이션은 소통의 본질과 사람을 이해하는 것이다

저도 간혹 내부 교육을 할 기회가 있는데 딱~ 개발자답게 교육을 했었네요. 몰라서 어쩔 수 없었죠^^ 이번 강연 이후는 조금 달라 질것 같습니다.

약 80개의 프리젠테이션 팁 중 가장 엑기스이며 실무에 바로 적용할 수 있는 7가지 팁을 소개하신 정진호 님.
실제 강연에서도 본인이 소개해준 모든 항목을 완벽하게 지키시는 프리젠테이션의 초고수.
강연에서 소개해 주신 팁은 아래와 같습니다.

1, 과유불급
2, 동시에 2가지만
3, 잠시멈춤
4, 따라읽기
5, 아이콘활용
6, 다시그리기
7, 프리젠테이션은 소통

위 팁의 내용을 설명하면,

과유불급(시간: 지나치면 모자람만 못하다)
- 과욕(시간에 맞지 않은 방대한 자료) 및 준비부족(자료 및 연습)으로 정해진 시간을 넘어선다.
- 연습, 연습, 연습(10% 정도 빨리 끝내기, 소리내어 말하기)

동시에 2가지만(읽기, 보기, 듣기)
- 사람은 동시에 2가지까지 집중가능
- 자료 작성 시 화려한 그림, 중요한 글과 함께 설명하지 말 것

잠시 멈춤(잠시의 관람시간을 제공)
- 청중의 집중도가 높아짐(약 3초 정도)
- 멈출 시기는 새로운 이미지, 복잡한 표, 발표자가 숨찰 때 등

따라읽기(반드시 하지 말아야 할것)
- 슬라이드는 문서가 아니므로 최소한의 구성을 놓고 설명 할 것
- 화면에 글자가 나오면 청중은 무의식적으로 따라 읽어, 읽기와 듣기로 과부하 걸려 집중력 저하됨

아이콘 활용(마법의 키워드)
- PNG 512 – 고해상(512x512)도 투명 이미지 포맷(PNG)으로 문서에 올리면 깔끔함
- 구글 이미지 등에서 “<키워드> png 512”로 검색

(퍼온것)다시그리기
- 웹에서 구한 통계를 그대로 넣지 말 것
- 이해하기 쉽게(가독성 높일 수 있도록) 의미있게 재구성 할 것

프리젠테이션은 소통

- 청중과 눈 마주치기, 미소띄우며 발표하기 연습
- 본인이 알고 있는 것을 효과적으로 전달하기 위함을 잊지 말 것

6, 신나게 일터바꾸기 

송인혁 / 화난원숭이들은 모두 어디로 갔을까 저자
  우리들은 모두 열정적이다! 단, 회사밖에서! 회사에서 일이 안되는 이유 두가지 M! 회의(Meeting) AND 관리자(Manager)! 인생 대부분의 시간을 보내는 직장이 이래서야 되겠는가. 하지만 회사가 바껴야 한다고 아무리 외친들 꿈쩍도 하지 않는다. 어떻게 해야 할까? 거대조직 삼성의 조직문화를 뒤흔들어놓고 있는 놀라운 현장의 비밀을 공개한다. 열정과 창의성의 새로운 비밀이 밝혀진다!

하필 앞 순서에 프리젠테이션 강연이 있어 부담스럽다고 엄살을 피우며 강연은 시작되었습니다.

학습된 무기력

어떤 실험실에서 원숭이를 대상으로 우리 천장에 바나나를 달고 다가오면 찬물을 끼얹어 스트레스를 주는 일을 반복했습니다. 그 원숭이들은 이후에 바나나 근처로 가지 않았고, 그 경험을 한 원숭이(고참) 한 마리와 새로운 원숭이(신참)을 교체했습니다. 그러자 고참 원숭이는 신참에게 다가가지 못하도록 강압을 하고 그 과정이 반복하여 신참만 남았는데도 신참 원숭이 들은 천장의 바나나를 따먹지 않았습니다.

위의 실험은 비단 원숭이에게만 해당하지 않습니다. 우리 주위를 보면 “원래 다 그런거지 어쩔 수 없어 그게 세상이야”하고 새로운 시도를 마다하는 모습이 일상입니다. 회사생활에서도 우리는 회사라는 판에 우리를 순응시키곤 합니다.

DigiLog(이어령) = Dialog + Analog

DIalog(남궁연) = 기술은 우리로 하여금 서로 만날 것을 요구합니다.

요즘 Social등의 기술 발전으로 다른 사람이 어떤 생각을 하는 지 쉽게 알 수 있고, 나와 비슷한 생각을 갖고 있는 사람에게 나의 의견을 쉽게 전달(RT, Like) 할 수 있는 시대가 되었습니다. 그러니 하고 싶은 것을 시도 하십시오. 뭘 해도 함께할 사람은 충분히 있습니다. 그리고 다른 사람이 하는 일에 동참하십시오.

위 대목에서 저는 또 다짐을 합니다. 도전해야 한다고, 현재 진행하는 오픈소스 프로젝트도 주위에 많이 알리고 동참을 바래야 겠다고.

7, 행복하게 소통하기 

김중태 / IT문화원(www.dal.kr) 원장. EBS자문위원, 한국인터넷진흥원 인터넷이슈리포트 편집위원
  주요 저서 '2015 IT혁명이 만드는 비즈니스 미래지도' '1인창조기업 컨설팅북' '하이퍼세대' 등
  it는 우리의 소통방식과 삶을 어떻게 바꿨으며 앞으로 어떻게 바꿀까? 스마트폰은 남녀의 소통, 외국인과의 소통방식을 어떻게 바꾸며 인류의 역사를 어떻게 바꿀까? ICT에서 I를 기계가 담당한다면 사람은 C를 위해 무엇을 준비해야 하나? 이런 질문에 대한 답을 찾아보며 암묵지시대의 행복한 소통법을 준비해보자.

연이어진 강연으로 몸이 지쳐있을 때 경쾌한 몸짓과 목소리로 등장하신 김중태님.

소통 -  원하는 내용으로 주고 받되 진실되게 이해될 때 소통

간단하게 사과를 예를 들어 소통의 어려움을 경쾌하게 설명해 주셨습니다. 빨간 사과를 생각하며 사과 색으로 색칠해 주세요 말하면 상대방은 녹색 사과를 생각하고 녹색으로 된 결과물을 내놓습니다.
남자와 여자의 차이도 몇 가지 예시로 설명 하셨습니다. 또한 단군이 뽀로로다라는 재미있는 비유까지 하시며 소통의 어려움을 설명하셨습니다.
소통은 상대의 눈으로 세상을 볼 때  가능합니다.

현재는 인류 역사상 최초로 언어 장벽이 없어진 시대(스마트폰의 구글 번역기 이용)입니다. 또한 다양한 기기로 인간이 기억해야 할 정보들을 기계가 담당하는 시대입니다. 또한 앞으로 10년 후에는 지금 보다 더 많은 일들을 기계가 처리하게 될 것 입니다.

그러면 ICT(Information Community Technology: IT)에서 I(정보)는 기계가 담당할 것이고 결국은 사람은 C(소통)만 담당하게 될 것 입니다.

예를 들어 스티브 잡스의 경우 애플에서 나와 디즈니로 간 적이 있습니다. 잡스는 토이 스토리와 디즈니에서 여성과 아이를 알게 되고 그 이후 애플로 돌아와 아이팟, 아이폰등을 감성적으로 만들어 성공 할 수 있었습니다.
또한 아이맥을 만든 사람은 변기 디자이너, 아이팟을 만든 사람은 말단의 음악광, 구글 로고를 디자인한 분은 고등학교 미술부 출신…, 재각기의 재능을 인정하고 소통할 수 있어 현재의 좋은 결과가 있었습니다.

더 많은 내용이 있었으나, 마지막 강연이어서 그런지 기억이 잘 나지 않네요^^.

2부 끝 – 저자와의 대화

2부에도 4분의 강연이 끝나고 종이비행기를 통해 저자에게 질문하는 시간이 있었습니다. 우문현답이라고 간혹 상품에 현혹되어 짦막한 질문에도 좋은 내용 덧붙여서 강연 못지 않는 답변들을 주셨습니다.

그렇게 총 3시간여의 강연을 쉬는 시간 없이 마치고 모든 저자들이 나와 인사하며 마무리 되었습니다.

| 강연을 마치고

집으로 돌아오는 지하철 안에서 강연을 들으며 메모했던 내용을 에버노트에 열심히 정리 했습니다. 물론 그 후로 느꼈던 감동을 더해서 말입니다
이 포스팅도 앞으로 제가 하는 일들에 직간접적으로 도움이 되는 내용이므로 최대한 잊지 않으려 작성했습니다.

단 위의 내용은 제 사견이 많이 들어갔을 수 있습니다.
앞으로 자주 이런 좋은 기회가 있었으면 좋겠습니다.

행사에서 받은 "스마트 워크"도 빨리 읽고 리뷰를 하고 싶네요.
(헌데 다른 책 몇권을 읽고 있어서...ㅠㅜ)

마지막으로 강연자료 공개되어 링크를 겁니다.


1. 강의 스크린캐스트 ( 슬라이드 화면 + 음성)
김국현 https://www.youtube.com/watch?v=hUZcsWN0WLQ 
김지현 https://www.youtube.com/watch?v=DT1du-STeFk 
홍순성 https://www.youtube.com/watch?v=6Ld85n3ZPCc 
명승은 https://www.youtube.com/watch?v=uZTyQgjV2fA 
정진호 https://www.youtube.com/watch?v=-PNANc1EjLE 
송인혁 https://www.youtube.com/watch?v=mYrdPNSpXGE
김중태 https://www.youtube.com/watch?v=qAUp8rcfLo8


2. 슬라이드 원본
김국현 PPT http://dl.dropbox.com/u/51516890/7ITBooks/1.pptx 
김지현 KEY http://dl.dropbox.com/u/51516890/7ITBooks/2.key 
김지현 PDF http://dl.dropbox.com/u/51516890/7ITBooks/2.pdf
홍순성 KEY http://dl.dropbox.com/u/51516890/7ITBooks/3.key 
홍순성 PDF http://dl.dropbox.com/u/51516890/7ITBooks/3.pdf
명승은 PPT http://dl.dropbox.com/u/51516890/7ITBooks/4.pptx
정진호 KEY http://dl.dropbox.com/u/51516890/7ITBooks/5.key
정진호 PDF http://dl.dropbox.com/u/51516890/7ITBooks/5.pdf 
송인혁 KEY http://dl.dropbox.com/u/51516890/7ITBooks/6.key
송인혁 PDF http://dl.dropbox.com/u/51516890/7ITBooks/6.pdf 
김중태 PPT http://dl.dropbox.com/u/51516890/7ITBooks/7.ppt

험프리.김현수 교육, 세미나 IT 북 콘서트, 김국현, 김종태, 김지현, 명승은, 송인혁, 스마트워크, 스마트워킹 라이프, 정진호, 큐레이션, 홍순성

Github와 로컬 환경 설정

2012.01.13 12:27
이번 포스트에서는 Github의 사용자 인증을 위한 SSH Key 등록에 관하여 설명합니다.
현재 저는 TortoiseGit을 사용하므로 Puttygen 및 pageant를 이용하여 SSH Key 생성 및 인증작업을 진행 하는 방식으로 설명합니다.

 
SSH Key 등록은 아래의 절차로 진행합니다.
1, SSH 생성(with PuTTY Key Generator)
2, 인증 에이전트(Pageant.exe)에 Key 등록
3, Github에 public key 등록

SSH 생성

 해당 작업은 TortoiseGit의 설치가 선행되어야 합니다. 만약, 설치 전이시면 설치를 먼저 해주세요.

PuttyGen 실행

시작 메뉴를 이용하여 TortoiseGit의 PuttyGen를 실행합니다.


Open SSH key 생성

 화면이 나오면 [Generate] 버튼을 클릭하면 아래와 같은 화면이 나옵니다. 아래의 붉은 큰박스에다 마우스를 올리고 임의로 마우스를 움직이면 상단의 프로그레스바가 증가하여 생성이 완료됩니다.


Private key 저장

 생성이 완료되면 아래와 같이 "Public key for pashing into OpenSSH authorized keys file" 등이 생성됩니다.
 
 우선 우리에게 필요한 Key 종류는 private key 이므로 [Save private key] 버튼을 클릭하여 저장할 경로를 선택(e.g.> C:\Users\<사용자명>\ssh 등)하여 PPK파일을 저장합니다.
 (선택사항)Key passphrase 항목에 암호를 입력하여 암호를 사용 할수도 있습니다.


우선 위의 윈도우는 닫지 않고 그냥 둡니다.(위의 Public key를 복사하여 Github에 등록해야 합니다.)

인증 에이전트에 Key 등록

Pageant 실행
 시작메뉴를 이용하여 Pageant를 실행합니다.


만약 화면이 보이지 않으면 트레이 아이콘을 확인하여 로드하세요.



Key 등록
 [Add key] 버튼을 눌러 위에서 저장한 Private key를 선택하여 Key를 등록합니다.(SSH Key의 passphrase를 입력하셨다면 입력하신 암호를 입력합니다.)


위 처럼 목록이 하나 생기면 성공입니다.

☞ 참고 : 위의 작업(Pageant 실행 및 Key 등록)은 윈도우 시작 시 자동으로 실행되지 않으므로 추가적인 작업이 필요합니다.

시작프로그램에 등록
시작메뉴에서 시작프로그램 항목의 팝업메뉴를 호출하고, 열기버튼을 선택하여 시작메뉴 윈도우탐색기를 호출합니다.


위에서 열린 윈도우에서 "새로 만들기 > 바로가기"를 선택합니다.


그리고, 위의 그림처럼 "pageant.exe"의 경로를 선택하고 그 뒤에(공백 한칸) SSH Private key 경로를 입력하여 바로가기를 만듭니다.

Github에 public key 등록

Github에 접속 후 로그인을 합니다.

SSH Public Keys 화면으로 이동
상단의 Account Settings 버튼을 클릭 후 SSH Public Keys 메뉴로 이동합니다.
Add another public key를 눌러 SSH key 등록 화면을 호출합니다.


Keys 등록
아래와 같은 화면이 나오면 PuttyGen의 Key를 복사하여 붙여넣기 합니다. Title 항목은 비우거나 구분이 가능한 제목을 입력하시면 됩니다. 그리고 Add key를 눌러 추가 합니다.



이것으로 SSH Key 등록까지 마쳤습니다.
다음 장에는 실제 저장소를 만들고 로컬에 가져와 수정하여 서버적용하는 부분을 설명하겠습니다.

 


험프리.김현수 Team Thoth/오픈소스

Windows용 Git Client(msysgit: Git for Windows, TortoriseGit) 설치

2012.01.13 02:05
이번 포스팅에서는 윈도우즈에서 Git을 사용할 수 있는 환경을 구성하는 방법을 설명합니다.
앞선 글에서 말씀드린 것과 같이 msysgit과 TortoiseGit을 대상으로 합니다.

msysgit은 윈도우용 Git 프로그램입니다.
TortoiseGit은 Git의 편한사용을 위한 사용자 인터페이스라고 보시면 됩니다.

설치는 아래 순서로 진행 됩니다.
 1, msysgit(Git for windows) 설치
 2, TortoiseGit 설치
 3, 설치 확인


msysgit 설치

제품 홈페이지가 변경이 되었습니다.(Github로 이동했습니다.) 다운로드 및 설치과정은 동일합니다.

  • http://msysgit.github.io/
이전주소
  • 제품 홈페이지(http://code.google.com/p/msysgit/) 방문
다운로드 탭에서 최신 파일을 다운로드 받아 실행합니다.
(첨언: Git-X.X.XpreviewYYYYMMDD.exe 형태의 파일을 받으세요.)


설치화면이 나오면 각 화면 확인하시고 다음, 보시다싶이 GPL 라이센스 입니다.

설치경로 선택 및 설치항목 선택하시고 다음

시작메뉴와 명령어 처리방식인데 그냥 다음 누르세요.

아래 화면에서 Use(Tortoise) Plink 선택

설치를 진행합니다.


설치를 완료합니다.

 

TortoiseGit 설치

 제품 홈페이지(http://code.google.com/p/tortoisegit/) 방문
다운로드 탭에서 환경에 맞는 파일 다운로드 후 실행합니다.


설치화면이 나오면 내용확인 후 다음버튼 누릅니다.

SSH client는 위의 msysgit과 동일하게 TortoisePLink를 선택합니다.

설치를 진행하시고

설치를 완료합니다.


설치 확인

설치는 어렵지 않게 끝나셨지요?
이후 제가 삽질한 SSH key 등록을 하시고 사용하시면 됩니다.

그전에 우선 설치 확인부터 해볼까요?

PC의 임의의 디렉토리에 마우스 오른쪽 버튼을 누르면 아래와 같이 "TortoiseGit" 메뉴가 나오면 정상 설치 된것입니다.
(Git Init Here, Git Gui, Git Bash의 경우 msysgit의 메뉴입니다. 64bit 환경에서는 보이지 않습니다.)


위 메뉴에서 Settings 메뉴를 선택하시고, 좌측 메뉴트리에서 Network 항목 선택하여 "SSH client"항목의 경로를 확인합니다.


이상으로 설치는 완료되었습니다.
설치된 프로그램으로 설정하고 사용하는 내용은 다음글에서 안내합니다.


험프리.김현수 Team Thoth/오픈소스 git, Git for windows, Git 소개, github, Github 소개, msysgit, TortoriseGit, 윈도우즈 Git, 토토이즈깃

  1. Blog Icon
    wooheaven

    msysgit 다음에 tortoisegit 을 설치했는데요...

    msysgit 설치 과정에서

    Git Setup 창에서

    Choosing the SSH executable 창이 보이질 않습니다.

  2. 버전이 업데이트 되면서 일부 과정에 차이가 있네요.
    "Use Plink"가 기본설정인 것으로 본것 같은데 설치할때 유심히 보시면 SSH관련된 항목이 보이실테니 잘 보시고 기본으로 설치하셔도 문제되지 않을 겁니다.^^

  3. Blog Icon
    hi

    Git Init Here, Git Gui, Git Bash 버튼이 안보여서 꽤나 고생해쓴데
    64비트라서 그렇군요ㅠㅠ..이 버튼이 없어도 정상적으로 사용할 수 있나요?

GIT과 Github 안내

2012.01.13 01:44

개인적으로 진행하는 오픈소스에서 Github를 이용하기로 하여, Github 사용법을 조사하여 포스팅 합니다.

순서는 아래와 같이 순서로 진행하겠습니다.


새로 시작하시는 분들에게 참고가 됐으면 하네요.

우선 기본적인 개념을 정리해 볼게요.

Git이란?

공식사이트 : http://git-scm.com/

 리누스 토발즈가 linux kernel 소스 관리를 위해 만든 소스 버전 관리 프로그램입니다.

 Git은 속도에 중점을 둔 분산형 버전관리 시스템(DVCS)이며, 대형 프로젝트에서 효과적이고 실제로 유용합니다.

 Git은 SVN과 다르게 commit은 로컬 저장소에서 이루어 지고 push라는 동작으로 원격 저장소에 반영됩니다.(로컬 저장소에서 작업이 이루어져 매우 빠른 응답을 받을 수 있습니다.)
 또한 받을때도 pull 또는 fetch로 서버에서 변경된 내역을 받아 올 수 있다.


공식 사이트에 나온 Git의 특징은 아래와 같습니다.


1, Distributed development  

 전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다.

 이러한 변경은 추가개발지점을 가져와, 로컬개발 지점과 동일하게 병합(merge)할 수 있다.저장소는 Git protocol 및 HTTP로 쉽고 효율적(특별한 웹서버 구성없이)으로 접근할 수 있다.


2. Strong support for non-linear development

 신속하고 편리항 branch 및 merge 지원, 비선형(여러갈래) 개발 이력을 시각화하고 탐색 할 수 있는 강력한 도구를 제공한다.

  
3. Efficient handling of large projects

 Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적이다. Git은 대부분의 다른 버전관리시스템보다 빠르게 요청한다. 그리고 일부 작업에서는 더 빠르게 진행한다.
 또한, 최근의 정상급 오픈소스 버전관리 시스템보다 장기간의 수정내역을 매우 효율적인 압축방법을 사용한다.


4. Cryptographic authentication of history

 GIt의 이력은  성공한 개발이력의 commit에 의해 개정명으로 저장된다. 일단 그것이 배포되면, 그것을 모르고 예전버전으로 변경하는것은 불가능하다. 또한, 그것들을 암호화 할수 있다.

  

5. Toolkit design

 UNIX의 전통에 따라, GIT은 C로 작성된 많은 소규모 도구모음이다, 그리고 많은 스크립트들이 기능 보강을 제공한다. Git은 새로운 기발한 작업을 위한 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공한다.

원문 - http://git-scm.com/about/


Github란?

공식사이트 : http://github.com/ 


 소셜코딩을 모토로 다른 사람들과의 협업할 수 있는 제일 좋은 방법이라 소개하네요. 
 이미 세계적으로는 큰 인기 몰이 중이나 우리나라에서는 아직 많이 알려지지 않았습니다. twitter, facebook, rackspace, digg, Yahoo, shopify, EMI, siz apart 등 쟁쟁한 업체들이 이미 github를 사용하고 있습니다.
 Github는 공개용 저장소(무료)와 개인저장소(유료)로 사용가능하며, 공개용 저장소의 경우 Github 사이트에 노출이 되어 다른 사람들과 쉽게 공유 할 수 있습니다. 

 Github는 본인인증을 위해 SSH Key를 사용하여 개인을 인증합니다. 사용방법은 다음장에서 설명하겠습니다.

 더 자세한 정보는 홈페이지를 통해서 확인 해주세요.


Github 가입 및 저장소 생성

github 홈페이지에 방문하여 "Plans, Pricing and Signup" 메뉴를 선택하여 가입합니다

무료 계정 생성 버튼을 이용하여 회원가입 하세요.

로그인 후 저장소를 생성합니다. 

Project Name이 저장소 명이 됩니다. 


우선은 저장소까지만 만들고 프로그램 설치 후 연동 해 보겠습니다.

프로그램 설치 등은 다음 글을 참고해 주세요.

관련글



험프리.김현수 Team Thoth/오픈소스 git, github, msysgit, TortoriseGit, 소셜코딩, 오픈소스

  1. Blog Icon
    제갈식

    좋은팁이네요, 좀 퍼가겠습니다.

    감사합니다.

    http://cafe.naver.com/iphonediy

  2. 네^^ 감사합니다.

  3. 좋은 정보 감사합니다.

    제 블로그에 링크 좀 할게요. :)

  4. 네 마음껏 퍼가세요^^ 조금 지난정보지만 유용하시길~

  5. Blog Icon
    SJKIM

    깃허브 개념을 가장쉽게 설명한 블러그중에 하나일것 같습니다. 감사합니다.

  6. Blog Icon
    seungyeon

    좋은정보 감사해요! 링크좀 할께용~!!

  7. Blog Icon
    이은영

    좋은글이네요 출저 표시해서 퍼갈게요 ㅎㅎ
    https://www.facebook.com/programmmmer

  8. Blog Icon
    야채소

    좋은 정보 감사드립니다! 깃 구조및 차이점.. 제가 궁금했던 것들 시원하게 긁어주시네요ㅎㅎ
    비공개스크랩 해갑니당...^^ (blog.naver.com/gayoun3)

2011년 한해를 마치며...

2011.12.30 19:12
"모든 걸 버리고 다시 시작하기."
 
2011년 시작할 즈음 다짐했던 생각입니다.

올 한해 돌이켜 보면 참 다사다난 했습니다.
하고자 하는 사업(?)이 실패로 끝나버려 그 여파로 한참 허덕였구요
그리곤 다시 재취업을 했답니다.

그 덕에 깨달은 교훈은 역시 사람은 잘하는 것 좋아하는 일을 하며 살아야한다는 사실과 난 사업가 체질은 아닌가 보다 하는 암울한 현실 ㅠㅜ

그래서 내가 좋아하는 분야에서 더 뻗어나가고 싶다는 생각을 많이 하게된 한해였습니다.

어느덧 삼십대 중반을 바라보는 아직은 늦지않은 나이에 도약하고자 도전을 합니다.

세상은 말합니다. 우리나라에서는
나이든 개발자는 관리자로 가는게 좋다고 아니 그래야 한다고
하지만 전 말합니다 "시러, 난 개발하는게 제일 재밌고 잘할 수 있다고..." 물론 속으로 ㅠㅜ

내년에는 그동안 해왔던 일들을 그리고 실력을 인정받도록 내보이는 일들을 하려합니다.
그래서 이 블로그도 다시 시작했고 지금 저 수면 아래에서 진행중인 오픈소스 프로젝트도 내년에는 공개하려 합니다.

그외에 하고자 하는 일도 모두 잘됐으면 좋겠습니다.

내년도의 마음가짐은
"세상아 내가 왔다. 나좀 봐줘."
내년 2012년은 더 높이 더 멀리 뛸 수 있는 계기를 많이 만들고 싶습니다.

이글을 보시는 분들(있으려나)도 새해에는 좋은일 행복한일 하고자 하시는 일들 모두 잘되는 한해이길 바라겠습니다.

앞으로 활동을 많이 하겠습니다.

iPhone 에서 작성된 글입니다.

험프리.김현수 생각

양력, 음력 기원 및 음력 날짜 변환 원리

2011.12.26 23:31
아이폰의 기본 캘린더를 사용하다보면 심플하게 잘만든것 같습니다.
구글 캘린더와 연동이 되어 기념일이나 잡다한 일정관리도 PC와 동기화도 잘되어 매우 유용하게 사용하고 있었지요...
하지만, 어르신(부모님, 처가어른)의 생신 입력하려고 음력을 기록하려 하자 턱 막히는 거에요.

그래서 음력을 이용하는 방법을 찾다보니 ICS파일로 음력을 등록할 수 있더라고요.

자 그럼 내가 할일은 음력 ICS파일을 만들어 보자 하여 음력 변환하는 원리를 분석 해보고 일부 포스팅 합니다.^^

1, 양력의 기원

 태양의 운행을 기준으로 만든 역법입니다. 양력은 지구가 태양을 한 바퀴 도는 지구의 공전을 기준으로 만드러 졌습니다. 양력의 1년은 365일이지만, 실제의 일년은 365.2422일입니다. 이 차이를 없애기 위해 4년 마다 윤년으로 하루가 늘어 366일이 된답니다. 


 양력은 바빌로니아가 최초로 보기도 합니다. 기원전 3000년 경 지구에서 바라본 태양의 위치가 조금씩 달라져 결국 본래 자리로 돌아온다는 것을 알았고, 그 주기가 약 360일 정도가 된다는 사실도 알게 되었습니다.

 그 결과  바빌로니아 사람들은 1년을 360일로 정하고 태양의 모양처럼 이를 원으로 만든 뒤, 그 원을 360개의 조각으로 나눠 한조각을 하루의 날자와 일치 시켰습니다.


 그 뒤 1천년 쯤 지나 이집트에서 다시 달력을 만들었는데, 당시 이집트 사람들은 나일강의 홍수가 일정 기간마다 되풀이 된다는 사실을 알고 1년의 주기도 365일 6시간 정도 된다는 사실을 밝혔습니다.

 그래서 이집트 사람들은 365일이라는 시간을 1년으로 정하고 나머지 6시간을 따로 모아 1460년째에 1년을 덤으로 만들었습니다. 

 지금의 달력과 당시 이집트 사람들의 달력을 서로 비교하면 한달에 50초 가량의 차이가 난다고 하네요.

 이집트에서 BC 18세기경 1년 365일의 태양력을 만든것이 기원이라 합니다. 


 그후 한참이 지나...

 고대 서양에서 춘분(밤보다 낮이 길어지는 때)을 한해의 기준점으로 보고 이달을 1월로 하여 1년에 10달 304일로 정하였으나, 황제 누마 폼페이누스는 1년을 12개월로 하고 355일로 하는 누마력으로 바꾸었습니다.


 * 율리우스(Julius)력

 B.C 46년 율리우스시저 시대에 1년이 365.25이란 것을 알게되면서 율리우스력에 채용하여 4년마다 1일을 더사는 윤년이 생겨났습니다.

 율리우스는 홀수달을 31일, 짝수달을 30일, 2월달은 평년에는 29일, 유년에는 30일로하여 1년을 365일로 만들었습니다.


 * 아우구스투스(August)

 율리우스시저가 죽은 후 아우구스투스가 로마 황제가 되었는데 황제의 생일이 8월 이어서 8월을 율리우스의 이름을 딴 7월과 마찬가지로 황제의 이름을 딴 아우구스투스(August)라 정하였습니다. 

 또한 홀수달은 31일, 짝수달은 30일이었으나, 자신의 생일이 낀 달은 길어야 한다며 8월을 31일로 바꾸고 이로 인해 8월부터는 짝수달이 31일, 홀수달이 30일이 되었습니다. 이렇게 하기 위해 2월달의 하루를 가져왔기 때문에 2월달은 하루가 더 짧아지게 되었습니다. 그리하여 7월과 8월은 연달아 31일이 되고 2월달은 평년에는 28일, 유년에는 29일로 되었습니다. 


 * 그래고리(Gregorian)력

 율리우스력은 실제 1년의 길이보다 약 11분 14초 정도가 길어 128년 마다 하루씩 길어지는 오차가 생깁니다.

 그레고리 13세 교황은 이 오차를 없애기 위해 윤년방식을 조금 수정 보완 하였는데...


 그 방법은 정상적으로 4년마다 유년을 넣으면 128년마다 하루가 남는다, 그래서 그래고리 교황은 100년마다 윤년을 넣지 않기로 했습니다. 그렇게 되면 400년이 되는 해에 112/128=0.875일이 모자라게 됩니다.

 그러므로 400년이 되는 해는 윤년으로 하기로 합니다.

 이런 방식으로 개량해도 400년마다 약 0.125일 정도의 오차가 발생합니다.

 (400년 - 128년 * 3 =  16년, 16년 / 128년 = 0.125일)


 그래고리력은 지중해 부근의 국가에서는 즉시 채택되었지만, 네덜란드 덴마크 등은 1700년 경 사용했고, 영국은 1750년경 러시아는 1918년에야 사용하게 되었습니다.

 우리나라는 그래고리력을 1986년 1월 1일부터 고종황제의 명으로 사용했습니다. 

양력 정리

0, 윤년은 2월에 하루를 더하여 29일 까지로 한다.

1, 4로 나누어 떨어지는 해는 윤년으로 한다. ( 예> 2008년 )

2, 100으로 나누어 떨어지는 해는 윤년이 아니다. ( 예> 2100년 )

3, 400으로 나누어 떨어지는 해는 윤년으로 한다. ( 예> 2000년 ) 


2, 음력의 기원

 달이 지구를 한 바퀴 도는 시간을 기준(달의 삭망을 기준)으로 만든 역법입니다.

 *  순태음력
 보름달에서 다시 보름달이 되는데 걸리는 시간을 한달로 잡은 달력입니다. 다시 말하면 달이 지구를 한바퀴 돌아 다시 그 위치로 돌아오기 까지는 29일 반 정도 걸립니다.
 이것을 1삭망월이라고 하고 1삭망월(
朔望月)은 29.53059일 입니다.
 한달이 약 29.5일이 되므로, 작은달(29일)과 큰달(30일)을 번갈아 두고 1년을 12달로 하면 29.5일 * 12달 = 354일 정도가 되는데 이름 순태음력이라고 합니다. 

  
 * 태양태음력
 순태음력(354일)은 태양력(365일)과는 11일의 차이가 생기는데 이 차이를 보완하기 위해 윤달을 넣어줍니다.  이렇게 윤달을 넣어준 달력이 실제 우리가 사용하는 태양태음력입니다.
 1태양년은 365.2422일이므로 순태음력(354일)은 1태양년보다 약 11일이 짧습니다. 그래서 3년에 한달 또는 8년에 석달의 윤달을 넣습니다. 
 만약, 윤달을 전혀 넣지 않으면 지금으로 부터 17년 후에는 5,6월에 눈이 내리고 동지·섣달에 더위로 고통을 바게 됩니다.

 예로부터 윤달을 두는 방법이 여러 가지로 고안되었습니다. 그 중 19태양년에 7개월의 윤달을 두는 방법을 19년 7윤법(十九年七閏法)이라 하여 가장 많이 쓰이는 방법입니다. 이에 의하면 19태양년은 235태음월과 같은 일수가 됩니다.

 19태양년 = 365.2422일 * 19 = 6939.6018일
 235삭망월 = 29.53059일 * 235 = 6939.6887일
 
 19년마다 양력과 음력 생일이 일치하게 되며 오차는 0.0879일(2.09시간) 정도로 두달력이 거의 맞아 떨어집니다.

  옛날부터 윤달은 썩은 달 이라하여 하늘과 땅의 신(神)이 사람들에 대한 감시를 쉬는 기간으로 그때는 불경스러운 행동도 신의 벌을 피할 수 있다고 널리 알려졌습니다.

 이 때문에 윤달에는 이장(移葬)을 하거나 수의(壽衣)를 하는 풍습이 전해 내려왔습니다.

 * 윤달 넣는법
 윤달은 24절기를 기준으로 들어갑니다.

   1월 2월 3월  4월  5월  6월  7월  8월   9월 10월  11월  12월 
 12절기 입춘 경칩  청명  입하  망종  소서  입추  백로  한로  입동  대설 소한 
 12중기 우수  춘분  곡우  소만  하지  대서  처서  추분  상강  소설  동지  대한 
 - 춘분, 추분 : 밤과 낮의 길이가 같은날(봄, 가을)
 - 하지, 동지 : 낮의 길이가 가장 긴날(여름), 밤의 길이가 가장 긴 날(겨울)

 위 표에서 24절기를 위아래로 번갈아 썼는데요, 위의 24절기는 태양이 움직이는 길(황도)을 24등분 하여 태양의 위치에 따라 절기의 이름을 붙인겁니다. 위의 춘분, 하지, 추분, 동지를 보시면 알 수 있듯이 태양의 움직임과 관련이 있습니다.

 태양의 움직임은 대략 360일 정도로 반복되므로, 이것을 24등분하여 약 15일 마다 마디를 만든것이 24절기이고 양력의 성격을 띠고 있습니다. 24절기가 사용되는 역법 자체는 음력, 정확히 태음태양력에서 사용되고 있으므로 음력에서 사용된다고 말할 수 있습니다.
 현재 우리가 사용하는 음력에서 사용되는 양력 요소라고 하는것이 가장 정확한 표현이 되겠네요.
 
 음력은 19년 동안 7번의 윤달을 둔다고 하였는데, 윤달을 결정하기위해 이 24절기가 사용됩니다. 24절기 중 중기가 음력의 달에 사용하는데 음력 한달에 중기가 들면, 그것으로 한달의 이름으로 결정합니다.
 우사가 든 달을 음력1월, 춘분이 든 달은 음력2월, 곡우가 든 달은 음력 3월이 됩니다. 우리가 11월을 흔히 동짓달이라 부르는 것도 11번째 중기가 동지이기 때문입니다.
 중기와 중기 사이가 음력 한달보다 조금 길기 때문에, 중기가 없는 달이 가끔 나타납니다. 
 바로 이런 중기가 없는 달을 윤달로 삼는 규칙을 무중치윤법(無中置閏法)이라고 합니다. 중기가 없는 달을 윤달로 삼는다는 뜻입니다.


 
3, 양력, 음력 변환 방법 

* 양력 / 음력 변환하기 전 준비 사항
 1) 음력 월별 대소월 구분 - 한국천문연구원(http://www.kasi.re.kr) 참고
 2) 윤달 정보와 윤달의 대소월 구분  - 한국천문연구원(http://www.kasi.re.kr) 참고
 3
) 특정 기준일의 음력과 양력 차이 일수(예> 1881년 1월 1일은 29일 차이: 양력 1월 30일이 음력 1월 1일)

 * 양력을 음력으로 변환하기
 1) 특정 기준일과 변환 대상일의 양력 일 수를 구한다.
 2) 1의 양력 일 수에서  기준일의 음력연도의 일수를 감하며 음력 년도를 증가한다.(단, 연도보다 일 수 가 적으면 중단)
 3) 2의 남은 일수에서 2의 음력 년도의 월수만큼 씩 감하여 음력 월을 증가한다.
 4) 3에서 남은 일수를 음력의 일수로 하여 음력일자를 구한다. 

 * 음력을 양력으로 변환하기
 위의 양력을 음력으로 변환하기 공식의 반대로 계산한다.

 

* 위의 변환 방법은 샘플 데이터 없이 설명하기가 무척 난해 하네요^^ 차후 프로그램 개발 후 샘플 데이터로 보충 설명이 필요할 것 같습니다. To be continue.

참고:  각종 카페, 지식정보, 블로그 등(두서 없이 자료 수집하느라 출처를 일일이 기록 못했네요.)

| 관련글 

2012/02/07 - [공개프로그램/음력달력 생성기] - 음력달력 생성기(hjLunarCalendarGenerator)

험프리.김현수 기타정보 양력기원, 양력음력, 양력음력변환, 음력기원, 음력변환

델파이 2010(2009)에서 DSPack 설치

2011.12.20 12:51
델파이 2009, 2010에서 설치 가능한 DSPack package(버전은 2.3.3) 입니다.

\src\DSPack\DSUtil.pas 가   \src\DSPack\DSUtils.pas 로 변경
(이유: Delphi DBX Framework인 DSUtil.pas와 충돌)
기존 작성된 소스는 주의 필요

DSPack project : 
DSPack is a set of Components and class to write Multimedia Applications using MS Direct Show and DirectX technologies.

험프리.김현수 Delphi/C++Builder

아이폰 기본달력과 구글캘린더 연동하기

2011.12.20 12:01

1, 구글 캘린더 생성
 - 이부분은 각자 알아서 하시길.

2, 아이폰에서 구글 계정 설정
 - 설정 선택
 - Mail, 연락저, 캘린더 선택
iPhone에서 Mail, 캘린더, 연락처 설정
 - 계정 추가 선택
iPhone에서 Mail, 캘린더, 연락처 계정 추가
 - Microsoft Exchange 선택 
 microsoft exchange
 - 이메일(구글계정으로 사용중인 이메일 주소) 입력
 - 도메인 입력안함
 - 사용자 이름(구글계정으로 사용중인 이메일 주소) 입력
 - 암호(구글계정 암호) 입력 
 - 다음 버튼 선택 
 - 동기화 할 항목 선택(캘린더 선택)
 - 기존 일정 및 연락처 놔두고 싶으면 반드시 "내 iPhone에 그대로 유지"를 선택

* 위 단계 진행 시 기본 캘린더만 표시됩니다.

3, 여러 개의 캘린더 사용 설정
 - Safari 브라우저 실행
 - m.google.com 이동
 - 하단의 언어변경 클릭


 - English (US) 클릭


  - Sync 아이콘 클릭


 
 - 계정 로그인(Sign in with your Google Account)

 - iPhone 선택

 - 사용할 캘린더 선택 및 아이폰 캘린더 확인

험프리.김현수 기타정보 구글캘린더, 아이폰, 아이폰구글연동, 아이폰구글캘린더

2GB 이상 파일크기 구하는 함수

2011.12.19 10:51
function FileSize(const AFileName: string): Int64;
var
  srData: TSearchRec;
  FileData: DWORD;
  SizeHigh, SizeLow: Integer;
  RetVal: array[0..7] of Byte;
begin  Result := -1;
{$IFDEF MSWINDOWS}
  FileData := FindFirst(AFileName, faReadOnly, srData);
  if FileData <> 0 then
    Exit;

  SizeHigh := srData.FindData.nFileSizeHigh;
  SizeLow  := srData.FindData.nFileSizeLow;
  ZeroMemory(@RetVal[0], SizeOf(RetVal));
  Move(SizeLow, RetVal[0], 4);
  Move(SizeHigh, RetVal[4], 4);
  Move(RetVal[0], Result, 8);
{$ENDIF}
end;

험프리.김현수 Delphi/C++Builder Delphi, 델파이, 파일사이즈

SQL Server 이중화 종류

2011.12.19 10:45
회사에서 필요해서 잠깐 조사한 내용입니다.
사내 SQL Server가 간혈적으로 문제가 되어 이중화 방안 조사한 내용 올리네요.

방법

설명

특징

미러링

주 서버와 미러 서버로 구성되며 장애 발생시 자동 장애조치 수행 할 수 있는 모니터 서버 추가 가능

자동 장애조치 수행 가능(장애 시 미러서버가 주서버 역할 대행)

SQL Server 2005 Standard, Enterprise 이상 지원
개발 단은 DB Connection string만 변경하면 됨

로그전달

주 서버와 동일한 보조 서버 구성 후 주 서버 트랜젝션 발생 시 주 서버의 트랜젝션 로그를 보조 서버에도 전달되도록 설정하는 방식

비상시 수동으로 장애조치(주 서버 변경) 필요
개발 단에서 장애감지 및 조치 방법 처리 필요

복제

여러 대의 서버로 데이터베이스 개체를 배포 후 데이터베이스간 동기화를 수행하여 일관성 유지하는 방식

각 서버로 접근가능

게시서버 / 배포서버 / 구독서버 구성
개발 단에서 장애감지 및 조치 방법 처리 필요

MSCS

여러 대의 DB 서버에 분산접속(공유 스토리지 사용)

Heartbeat라인을 통해 각 서버간 상태를 서로 체크

상당히 고가, 디스크(스토리지) 장애 시 복구 불가



참고자료
서적: 뇌를 자극하는 SQL Server 2008 – 19. 데이터의 고강용성(P.937) – 방법 안내 및 실습 수록됨
이중화 종류 소개 - http://manshei.tistory.com/86 

험프리.김현수 기타정보 SQL Server, 로그전달, 미러링, 복제, 이중화

[Delphi] Wild Card 문자비교

2010.03.23 12:33
문자열에서 Wild Card('?': single character, '*': multi character)를 포함하여 비교한다.
function MatchString(ASource, APattern: String): Boolean;
  function _MatchPattern(element, pattern: PChar): Boolean;
  begin
    if 0 = StrComp(pattern, '*') then
      Result := True
    else if (element^ = Chr(0)) and (pattern^ <> Chr(0)) then
      Result := False
    else if element^ = Chr(0) then
      Result := True
    else
    begin
      case pattern^ of
      '*': if _MatchPattern(element, @pattern[1]) then
             Result := True
           else
             Result := _MatchPattern(@element[1],pattern);
      '?': Result := _MatchPattern(@element[1],@pattern[1]);
      else
        if element^ = pattern^ then
          Result := _MatchPattern(@element[1],@pattern[1])
        else
          Result := False;
      end;
    end;
  end;
var
  pSource, pPattern: PChar;
begin
  pSource   := StrAlloc(Length(ASource)+1);
  pPattern  := StrAlloc(Length(APattern)+1);
  try
    StrPCopy(pSource,   ASource);
    StrPCopy(pPattern,  APattern);

    Result := _MatchPattern(pSource, pPattern);
  finally
    StrDispose(pSource);
    StrDispose(pPattern);
  end;
end;
출처 : 인터넷 어딘가...:-)
// sample
var 
  source: string;
  target: string;
begin
  source := 'abcdefg';
  target := 'ab*e?g';  // correct('cd' = '*', 'f' = '?')

  if MatchString(source, target) then  
    ShowMessage('Correct match')
  else 
    ShowMessage('Incorrect match')
  ;
end;

험프리.김현수 Delphi/C++Builder Delphi, 델파이, 문자비교