영삼이의 IT정보2012. 6. 19. 15:34

NSDate는 순수하게 시각값을 가진 오브젝트
실제로 그냥 출력을 하면 UTC(협정시)의 형태를 보여준다.

NSLog( @"%@", [ NSDate date ] ); -> 2012-06-11 08:02:34 +0000

시각값을 가지고 작업을 할 때에는 Time Zone 문제가 항상 존재하는데, NSDate 하나로는 해결하기 힘들다.

이때 시각값에 특정 포멧을 넣어 작업을 하기 위해서는 NSDateFormatter라는 것이 필요하다.

밑의 그림은 연습 프로그램의 일부이다.

NSDateFormatter의 메소드인 setTimeZone,  setDateFormat
setTimeZone은 특정 Time Zone을 설정할 수 있다.
setDateFormat은 표현하고자 하는 시각 포멧을 설정할 수 있다.

setDateFormat에서 설정할 수 있는 포멧은 잘 검색해 보길 바라고...
setTimeZone을 통해 정할 수 있는 NSTimeZone에 대해서 조금 더 설명해 보겠다.

NSTimeZone의 메소드 중 timeZoneWithName:( NSString * )을 사용했다. ( 위 소스에서 strCurRegion 부분 )
여기에서 NSString에 들어가는 텍스트가 중요한데, 내가 확인한 바로는 416개가 존재했다.
몽땅 여기에 써 넣을 수도 있겠지만, 직접 확인해보길...

해당 텍스트는 NSLog( @"%@", [ NSTimeZone knownTimeZoneNames ] )를 통해 알 수 있다.
결과값은 NSArray 이므로 쓰기 쉬울 것이다.


우리나라에서 표준시로 쓰고 있는 GMT+0900은 "Asia/Seoul"로 표현되어 있다.
"Asia/Tokyo"로 써도 똑같다는 것은 비☆밀 -ㅅ-;



또한 NSDateFormatter로 각각의 시각 성분을 뽑아낼 수도 있다.

이런식으로 각각의 성분을 뽑아서 따로 사용할 수도 있다. 


특정 시각을 설정하고 싶을 때에는 NSDateComponents를 사용한다.

또 여기에서 NSCalendar가 나오는데 이건 나도 자세히는 모르겠다...
아무튼 이런식으로 특정 시각 값을 가진 NSDate 오브젝트를 얻을 수 있다.


마지막으로 NSDateFormatter에서 dateFromString이라는 메소드가 있는데, 2012-06-11 08:02:34 +0000 이러한 텍스트를 넣어주면 
그에 따른 시각값을 가진 NSDate 오브젝트를 얻을 수 있다.


시각 값 조작하는 코드가 너무 많은 것 같아서 조금 헛갈리는데, 나는 이 정도로만 사용할 것이다.

NSDate의 메소드 중에는 timeIntervalSince... 시리즈가 있는데, 타이머에 사용할 시간이나, 두 시각 값 사이의 차이 시간이라든지 여러가지로 활용할 부분이 많을 것이다.

Posted by 다오나무
SVN2012. 6. 18. 10:13

[SVN] Subversion 명령들


 Subversion 에서 사용되는 기본적인 명령들을 알아보자.  IDE (통합 개발환경)을 사용하면 쉽게 사용할 수 
있는 기능들이지만 커맨드 사용법을 알아두면 유용하게 사용할 수 있다.  커맨드를 직접 사용해 보면 내부동작을 
좀 더 쉽게  이해할 수 있으며 특히 자동화 스크립트를 작성할 때 도움이 된다.  
(소스관리 프로젝트를 위해 svn 명령을 사용할 경우와 svn 자바 라이브러리를 다룰 때도 도움이 된다. )


다음과 같은 순서로 Subversion 사용방법을 알아보겠다. 
1 저장소 생성
2 프로젝트 생성
3 프로젝트 저장소에 임포트(import)
4 작업본(working copy)  내려받기(checkout) 
5 woking copy에 파일 추가(add)
6 로컬 수정사항 커밋(commit)
7 저장소 변경사항 업데이트 받기 (update) 
8 브랜치/태그 (저장소 파일 복사/이동)
9 저장소 파일 삭제 
10 working copy 정보 보기




1. 저장소(Repository) 생성
가장 먼저 해야할 일은 저장소를 생성하는 작업이다. 저장소 생성에 관련된 내용은 지난 포스팅을 참고하기 바란다. 
svnadmin create --fs-type fsfs  MyRepository





2.  프로젝트 생성
이제 저장소에서 관리할 프로젝트를 위한 최초 디렉토리 구조를 로컬상에 생성한다. 
다음과 같은 구조로 "문서관리 시스템"을 위한 디렉토리 구조를 생성하였다. 







3. 프로젝트 저장소에 임포트(import) 
이제 로컬에 생성한 프로젝트를 저장소로 옮기자. 이 작업은 공유를 위한 프로젝트 최초 기본파일을 구성하는 단계이다. 
아래 명령으로 로컬 프로젝트 파일을 저장소로 복사한다. 

 svn import  -m "First DMS Project Import"  ./dms

저장소에 프로젝트 파일들이 옮겨졌기 때문에, 로컬 상에 있는 프로젝트 파일들을 삭제하자. 
이제 저장소에 있는 파일들이 모든 공유 문서들의 원본이 되고, 변경이 추가될 때마다 그 이력이 버전별로 관리가 된다. 




4. 작업본(working copy) 내려받기(checkout)
여러 사람이 저장소에 접근하여 산출물을 공유할 수 있게 되었다. 저장소에 있는 프로젝트 파일들을 
로컬상에 먼저 내려 받아보자.  로컬상에 자신이 다루게 되는 프로젝트 파일들을 작업본(working copy) 이라고 한다. 
작업본 내 모든 디렉토리에는 숨김파일 .subversion 이 생성되며 디렉토리 내 파일들의 목록과 수정사항들이 관리된다. 

svn checkout svn://repository_ip_address/MyRepository/trunk dms 

※ svn 명령들은 -r (revision) 옵션을 주어 아래와 같이 특정 리비전의 파일들을 다운 받을 수 있다. 
svn checkout -r  7 svn://repository_ip_address/MyRepository/trunk dms




5. 작업본에 파일 추가 (add) 
내려받은 작업본을 기반으로 자신이 담당한 모듈을 개발해 나가면 된다.  
새로운 파일을 작업본에 추가하고 싶은 경우,  새로운 파일을 생성하는 것만으로는 되지 않는다. 
작업본 파일목록에 명시적으로 새로 생성한 파일을 번영해 주어야 한다. 다음과 같은 명령을 사용한다. 
svn add build.xml




6. 로컬 변경사항 커밋 (commit)
작업본에 대한 모든 수정사항은 커밋을 해야 저장소에 반영이 된다.  파일 하나하나를 수정할 때마다 
커밋을 하는 것은 좋은 방법이 아니다.  에러가 발생하는 파일들을 저장소에 반영하면 업데이트를 받은 다른 팀웍들의 
작업에도 영향을 주기 때문이다. 되도록이면 명확한 단위작업별로 구분하여 완전히 동작하는 수정사항만을 커밋하는
것이 좋다.  커밋을 할 때마다 -m 옵션으로 변경사항에 대한 메시지를 반드시 달아주어 변경에 대한 정보를 알수있게 하자
svn commit -m "Added build.xml ant file"




7 저장소 변경사항 업데이트 받기 (update) 
작업본 checkout 이후부터,  작업을 시작하기 전에 저장소 최신 변경사항을 update 받아 작업본을 최신버전으로
유지하는 것이 좋다. 저장소와 작업본 사이에 버전 차이가 커질 수록 나중에 commit이 충돌문제가 발생할 수 있기
때문이다.  다음 명령으로 저장송 변경사항을 작업본에 최신화시킨다. 
svn update




8 브랜치(branch)와 태그(tag) 
특정시점의 문서버전(예를 들어 1차 개발버전과 같은...)에 대한 복사본을 남겨두고 싶을 때 브랜치를  사용한다. 
브랜치를 사용하면 복사본이 생성되고,  이후 수정작업들은 다시 작업본에 계손 수정되어 나간다.   branch는 가지라는 뜻으로
현재 작업버전에 대해 분기점이 되는 버전이라는 의미를 갖는다.  태그는  브랜치와 비슷한 의미를 갖지만, 분기되어 
완전히 작업이 완료된 버전(첫번째 릴리지 버전과 같은...)이며  이름표를 달아서 알아보기 쉽게 표시를 한다. 
svn에서 브랜치와 태그를 생성하는 명령은 copy 로 동일하다.  태그 생성시는 t 옵션을 주어 이름표를 달아준다. 

브랜치 생성 
svn mkdir -m "Create branch directory" svn://repository_ip_address/MyRepository/branches
 

svn copy -m "Creating release branch for 1.0"  svn://repository_ip_address/MyRepository/trunk  \
                                                                          svn://repository_ip_address/MyRepositorybranches/RB-1.0


태그 생성 
 svn mkdir -m "Create branch directory" svn://repository_ip_address/MyRepository/tags
 

svn copy -m "Tag release 1.0.0" svn://repository_ip_address/MyRepository/branches/RB-1.0 
                                                    svn://repository_ip_address/MyRepository/tags/REL-1.0.0




9. 저장소 파일 삭제 (delete)
저장소에 있는 파일을 삭제하는 명령은 다음과 같다. 파일 삭제후 update 를 수행하면 작업본에도 반영이 된다. 
 
svn delete -m  "Remove branch 1.0" svn://repository_ip_address/MyRepository/branches/RB-1.0 




10. working copy 정보보기 
다음명령으로 작업본 리비전 정보와 저장소 루트, 최신 수정일 등의 정보를 확인할 수 있다. 
svn info 

Posted by 다오나무
SVN2012. 6. 18. 09:35

작업 디렉토리에 무턱대고 새로운 파일을 만든다고 해서 버전 관리 대상에 들어가지 않는다. 새로운 파일을 리비전에 

포함시키려면 다으모가 같이 svn add 명령을 사용해야 한다.

svn add test1.c test2.c


파일을 추가했다면 svn commit 을 통해 저장소에 반영해야 한다.



반대로 리비전에서 파일을 제거 하려면 

svn delete test1.c test2.c  

를 사용하고 위와 마찬가지고 commit 해야 한다. 


rename 으로 파일 명이나 디렉토리명 변경

svn rename test1.c main.c   // test1.c 를 main.c 로 변경


'SVN' 카테고리의 다른 글

SVN error : resource out of date; try updating 해결  (0) 2012.06.26
맥용 SVN 서버 설치  (0) 2012.06.26
Subversion (SVN) 명령어  (0) 2012.06.18
SVN 명령어  (0) 2012.06.18
Posted by 다오나무
SVN2012. 6. 18. 09:28

SVN 명령어

SVN client를 console 화면에서 사용하는 명령어에 대해 알아 봅시다.
console 화면에서도 update, commit, delete , checkout 등 모두 가능합니다.

1. check out
   소스를 repository에서 가져오기 위해서는 check out을 하여야 합니다.
    svn checkout --username svnID repository주소
   
    그 후 passoword를 입력하면 됩니다.

2. source commit
    서버상에 수정된 소스를 올리기 위해선
     svn commit 소스파일명

     만약 commit 시에
     "commit failed (details follows) 
     Could not external editor to fetch log message; consider setting $SVN_EDITOR 관련 된 에러가 발생한다면 아래와 같이 조치를 취한다.
  
 그후   계정의 home 디렉토리로 이동하여
     vi .profile
     export SVN_EDITOR=/usr/bin/vi
     저장 후 . ./.profile
     
     다시 svn commit을 하게 되면 vi 창이 열리면서 log를 쓰라고 나옵니다. log 작성후 파일 저장후 나가기 (:wq!) 하시면 commit 됩니다.

3. source update
    서버상에 버전업 된 소스를 local에 업데이트 하기 위해서
    svn update

4. 파일 추가시
    local에 있는 파일을 서버상에 append 할때
    svn add 소스파일명
    svn commit

5. 수정한 소스를 server 의 소스와 sync 할 경우
    svn revert 소스파일명

6. repository를 clean 할 경우
    svn cleanup
    svn delete 소스파일명
    svn commit

Posted by 다오나무
우분투2012. 6. 15. 22:54

1.
sudo -i 하여 루트가 되어 작업
또는 엑스에서 gksu gedit /var/www/localhost/phpinfo.php 루트권한으로 작업
2.  
sudo chown -R 본인계쩡.본인계정 /var/www 
하여 소유권을 주면 된다.
예 ) sudo chown -R test.test /var/www 

Posted by 다오나무
우분투2012. 6. 15. 22:17

FTP 서버


설치 ::

1. 우분투에서는 vsftp라는 패키지를 설치하면 간단하게 외부에서도 FTP로 접속할 수 있다.
$ sudo apt-get install vsftpd


2. 설치가 끝나면 환경설정을 해줘야한다. vsftpd.conf 파일을 열어 설정사항을 수정한다.
$ sudo vi /etc/vsftpd.conf


3. 아래 항목을 찾아 주석을 제거하고 아래와 같이 옵션을 수정한다.

 anonymous_enable = NO             // 기본값은 YES인데 NO로 변경. 익명 사용자의 연결을 허용하는 옵션
 local_enable = YES                      // 주석제거. 로컬 계정 사용자의 접속 허용 여부 옵션
 write_enable = YES                     // 주석제거 
 

4. 재시작
sudo /etc/init.d/vsftpd restart    또는
sudo restart vsftpd


※ 참고
- 포트번호는 기본적으로 21로 고정되어 있다.
  포트 변경시 설정 파일에 아래와 같이 추가하면 된다.
  listen_port = 포트번호 

- 기본 접속 경로는 '/home/계정' 이다.

Posted by 다오나무
우분투2012. 6. 15. 21:00

우분투 안에

기본적으로 내장되어 있는 원격 제어

포트번호는 5900 이 기본이다.


참고하자.


Posted by 다오나무
우분투2012. 6. 15. 20:48

설치할때 언어를 한국어로 하시지 않으셨나보네요.



 한글 언어 팩 설치
$ sudo apt-get install language-pack-ko language-pack-gnome-ko language-pack-gnome-ko-base

하셔서 설치하시고 제어판에서 주 언어를 한글로 바꾸시면 될 듯 

성공하시기를 바랍니다.

Posted by 다오나무
우분투2012. 6. 15. 19:52

alt + F2 입력
update-manager
[Ubuntu 소프트웨어] 탭에서
Settings (설정)
other (기타)
[대한민국]에서 ftp.daum.net/ubuntu로 변경합니다. 

If do not see ftp.daum.net, click choose best server.
And then you can see ftp.daum.net server.
Good luck.

우분투 11.04를 설치하고, 가장 먼저 해야할 일 같다.
왜냐하면 다른 서버들은 조금 느린 감이 있고, 검색을 해 보니 daum 서버 속도가 괜찮다고 하기 때문이다.



Posted by 다오나무
우분투2012. 6. 15. 19:24

1. 설치하기
  • $ sudo apt-get install phpmyadmin

2. 설정하기
  • $ sudo vi /etc/apache2/apache2.conf

맨 마직막에 아래 구문 추가
  1. # Enable PhpMyAdmin
  2. Include /etc/phpmyadmin/apache.conf

Apache 재시작
  • $ sudo /etc/init.d/apache2 restart

PhpMyAdmin 접속
  • http://localhost/phpmyadmin

3. 삭제하기
  • $ sudo apt-get remove phpmyadmin

Posted by 다오나무