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, 델파이, 문자비교