“모든 사람에게 예의를 다하고, 많은 사람에게 붙임성 있게 대하고, 몇 사람에게 친밀하고, 한 사람에게 벗이 되고, 아무에게도 적이 되지 말라” – 도종환의 《사람은 누구나 꽃이다 》중에서 –
오늘 동기 동생에게 내 미니홈피(싸이월드는 불가피하지 않는 한 쓰지 않는다) 프로필에 좋은 말이 적혀있다길래 뭔가하고 봤더니, 2006년 어느 날에 어디선가 보고 적어두었던 듯 하다.
나는 과연 저렇게 해왔나 돌아본다..
“모든 사람에게 예의를 다하고, 많은 사람에게 붙임성 있게 대하고, 몇 사람에게 친밀하고, 한 사람에게 벗이 되고, 아무에게도 적이 되지 말라” – 도종환의 《사람은 누구나 꽃이다 》중에서 –
오늘 동기 동생에게 내 미니홈피(싸이월드는 불가피하지 않는 한 쓰지 않는다) 프로필에 좋은 말이 적혀있다길래 뭔가하고 봤더니, 2006년 어느 날에 어디선가 보고 적어두었던 듯 하다.
나는 과연 저렇게 해왔나 돌아본다..
SVP에 다녀오면서 정말 훌륭한 동기들을 얻었다.
아주아주 오래전에 핸드폰을 산 후, 지금까지 진동으로만 해놨던 터라.. 벨소리를 들어본 적이 없었는데, 집에서 벨소리로 해놓으니.. 이건 뭐… 그래서 좋아하는 MP3 파일을 벨소리로 바꾸기로 했다. 모닝콜로도 사용가능하니 모닝콜용도 하나 더~ 생각해보니 예전엔 애니메이션 파일을 변환해서 지하철에서 잘도 보고 다녔는데.. ㅎㅎㅎ
1. 3GP 컨버터 설치
2. 3GP Customizer(v2.72) 설치
3. QuickTime(v6.5) 설치
4. 3GP Customizer 실행 후 “출력 형식”에서 “Mobile Phone” 선택. 그리고 맨 아래 “Make It!” 누르기.
5. 변환할 MP3 나 AVI 를 3GP 컨버터에 끌어다 놓으면 출력디렉토리에 생김.(이 때, 바가 모두 끝났다고 바뀌지 않음. 내부에서 뭔가 약간의 변환과정이 더 있는 듯. 끌어다 놓은 파일과 같은 이름의 k3g 파일이 생기면 OK.
6. k3g 형식을 mp4 로 이름바꿈.
7. MicroSD나 Anycall의 이동식디스크 기능을 이용해서 해당 드라이브의 System/cam/ 아래에 파일을 넣음.
8. 핸드폰의 나만의 벨에서 해당 동영상을 선택!
9. 끝!
그외에…
* 자막이 있는 애니메이션이나 영화파일의 경우 바닥으로 자막을 입힌 후 변환하면 됨. 이는 동영상 재생 기능으로 볼 수 있음^^
무료 프로그램 완벽 제거기 & 데이타 소멸기(Wipe Tool) Revo Uninstaller 1.75
멤버십 컴퓨터를 정리하는 중.. 컴퓨터 내에 내 보안카드 같은 것들을 저장해놨던 것이 맘에 걸려서 Wipe tools을 찾아 정리하기로 결정했는데, 의외로 하드디스크 단위나 파티션 단위로 청소해주는 무료 Wipe tools을 찾기가 쉽지 않았다. 그리고, 이미 난 그 파일들을 단순히 Shift Delete로 지워버린 상태..
검색해보니 위의 프로그램이 하드 내의 지워진 데이터를 복구 불가능하게 만들어 준단다.. 지금 돌리는 중인데 후에 한번 복구 프로그램을 돌려볼까 싶기도 하고.. 살펴보니 우리말도 지원하는데 좀 이상하게 되어있는듯-_-;; Portable Version으로 사용중인데, INI 파일들로 문자열들이 저장되어 있는 듯 하다. 조금 손 볼까…
아무튼 내 하드 내의 Source, Repository, 개인 정보 등등을 위 툴로 정리중!
특히나 개인 정보, 보안 정보들은 조심해야 한다.
멤버십 초기에 FTL에 관련된 과제를 하면서 보았던 FTL 기법 중 FAST에 관련된 것들을 잊어버리기 전에 정리해두고자 한다.
FAST는 FAST의 저자들이 BAST라고 이름붙인 기법의 원리와 문제점을 설명하고 이를 해결하기 위해
완전연관섹터변환(Fully Associative Sector Translation) 방식을 사용하는 것을 말한다. 즉,
BAST에서는 임의쓰기가 동시에 발생할 때 여러 논리블록에 대한 로그블록이 경쟁상태에서 모든 섹터가 사용되지 않고 합병되는
문제점이 있는데 이를 해결하기 위해 각 로그블록의 활용률을 최대한 높임으로써 각 로그블록이 블록 전체의 섹터가 모두 사용된
이후에 소거되도록 한다.
이를 위해서 최초 쓰기 연산시에는 해당 자리에 섹터 데이터를 기록하고, 덮어쓰기 연산시에 아래의 조건들을 검사하여 적절한 연산을 수행한다.
조건 1. (start_lsn mod 32 = 0) & (lbn = (start_lsn div 32) !∈ rw_lbn_set)
조건 2. (lbn = sw_lbn) & (start_lsn mod 32 = sw_sec_num)
조건 3. (lbn = sw_lbn) & (start_lsn mod 32 > sw_sec_num)
조건 4. (lbn = sw_lbn) & (start_lsn mod 32 < sw_sec_num)
조건 5. 조건 1, 2, 3, 4를 모두 만족하지 않는 경우
위의 1~4까지의 조건들은 모두 순차쓰기용 로그블록에 쓰여지는 경우의 조건들이다. rw_set_of_lbn은 임의쓰기용 로그블록
그룹에 기록된 섹터들의 논리블록들의 주소 정보이고, sw_lbn는 순치쓰기용 로그블록에 현재 쓰여지고 있는 논리블록 주소,
그리고 sw_sec_num은 논리 블록에 대해 순차적으로 쓰여진 섹터의 수이다.
조건 1의 경우 순차쓰기용 로그블록의 첫번째 섹터에 기록된다. 이 때, 순차쓰기용 로그블록에 이미 다른 섹터들이 저장되어 있다면 그 블록과 원본 데이터 블록간의 합병 연산이 발생하여 순차쓰기용 로그블록을 소거한 후 기록된다.
조건 2의 경우 순차쓰기용 로그블록에 기록된 데이터의 다음 위치에 추가(append)할 수 있는 쓰기연산이다. 순차쓰기용 로그블록의 모든 섹터가 순차적으로 다 기록된 경우 교환 연산을 한다.
조건 3의 경우 순차쓰기용 로그블록에 연이어쓰여지지는 않지만 기록할 수 있는 쓰기 연산이다. 이 때, 그 중간 섹터가 채워질 확률이 낮기 때문에 합병 연산을 수행한다. 이 때 비어있는 섹터들만 쓰기연산을 수행하여 교환연산을 수행하면 데이터 블록만 한번 소거하면 된다.
조건 4의 경우 순차쓰기용 로그블록에 이미 기록되어 있는 섹터들 중 일부분에 대해서 덮어쓰기가 발생하는 쓰기연산이다. 이 때는 데이터 블록과 로그 블록간의 합병 연산이 수행된다.
조건 5의 경우 임의쓰기용 로그블록에 기록하며, 기록할 위치는 로그블록에 마지막으로 기록한 위치 바로 다음이 된다. 만약, 로그
블록 그룹에 더 이상의 빈 섹터가 없으면 첫 번째 로그블록에 대해 합병 연산을 수행하여 공간을 확보한다. 합병 연산 수행시에는
원형 큐 방식으로 시작 로그 블록을 합병 연산의 대상으로 삼는데, 그 로그 블록에 쓰여진 섹터들의 논리 블록의 개수만큼
합병연산이 발생한다. 이 때 로그블록에서 최신 섹터를 찾아 이 최신 섹터의 내용을 예비블록에 기록하고 데이터 블록으로부터 나머지
최신 섹터를 복사한다. 로그블록에서 최신 섹터를 찾을 때는 큐의 마지막부터 역탐색(backward search)를 수행하고,
합병 연산의 대상이 아닌 역탐색으로 찾은 최신 섹터를 포함하는 로그블록에서 섹터를 복사하고 해당 섹터 번호를 사상테이블에서
-1로 설정하여 무효화(invalid)시켜 그 로그블록이 나중에 합병연산의 대상이 되었을 때 무시하도록 한다.
Subversion을 열심히 애용 중이던 나. KLDP의 “Perl도 git으로 전환…” 이란 글을 보고 Git란 것에 관심이 생기긴 시작했다. 리누즈가 만든 분산형 SCM 이란 이야기는 예전부터 들었으나 아직 사용해보지 않아 어떤지 잘 모르겠지만 Painless merging이 가능하다는 이야기에 매우 관심이 간다.
SVN으로 프로젝트 관리시에 branch한 트리에서의 Merge작업이나 한 트리의 작업내용을 다른 트리에 반영하기 꽤나 까다로웠던 것으로 생각되어 더 더욱 그렇다.
예전 과제시에 사용했던 Mercurial 역시 분산형 SCM으로 이 역시 많이 사용되는 것 같다. Subversion도 좋지만, 그 단점을 보완할 수 있는 툴이 있다면(TortoiseSVN과 같은 GUI Frontend가 존재한다는 것이 상당한 장점이지만) 역시 고려해보는 것이 좋겠다. Mercurial로 관리되던 소스 트리를 실제 과제시에는 익숙한 SVN을 사용했었기에 안타까웠던 마음도 이에 영향을 미치는 것 같다. ㅎㅎ
Mercurial에 관해서는 우리먈로 된 친절한 튜토리얼(Mercurial 사용 입문서)이 존재하고(과제시에 도움을 많이 받았다^^), Git에 관해서도 충분한 도움말이 있는 듯 보인다.
여러 SCM 들에 대한 간단한 설명과 사용법은 IBM DeveloperWorks의 리눅스 버전 컨트롤 (한글) 글이 도움이 될 것 같다. 말미에 Git 에 대한 사용법도 약간 나온다. 실제 사용을 위한 무언가를 준비해보아야 겠다. TortoiseSVN과 같은 GUI frontend가 있다면 더할 나위 없이 좋겠다. ^^
많은 사람들을 만나고, 세상엔 정말 뛰어난 사람들이 많이 있다는 것을 알게 해 준, 우물안 개구리였던 나를 뒤돌아보게 해 준, 내 눈을 더 크고 넓게 볼 수 있게 해 준, 그 곳! 삼성소프트웨어 멤버십에서 2009년 상반기 신입회원을 선발합니다.
어떤 다른 소프트웨어 관련 모임보다도, 풍부한 기술 인력 네트워크를 자랑하는 그 곳에서 더 많은 개발자들을 뵐 수 있기를 희망합니다.
저는 수원멤버십에서 활동 중이며, 혹시 수원멤버십에 지원하실 분이 있다면 메일, 댓글 환영합니다^^ 조그마한 힘이나마 도움을 드리겠습니다. 다음은 공고 내용입니다.
——————————————————————————————————–
[삼성전자 소프트웨어 멤버십 회원 선발 공고]
삼성전자 SW연구소에서 운영하는 삼성 SW 멤버십 `09년도 상반기 신규 회원 선발을
다음과 같이 진행합니다.
1. 선발 시기
□ 모집기간 : 08년 12월 15일 ~ 09년 1월 4일
□ 기술전형 : 09년 01월 12일 ~ 01월 17일 (서류합격자에 한 함)
□ 접수방법 : 멤버십 홈페이지( http://www.secmem.org )에서 인터넷 접수
2. 선발 분야
□ S/W (System, Application, Embedded, Mobile, Middleware, Multimedia)
□ H/W (SOC, HDL, DSP, Microcontroller, ARM, Robot)
□ Contents ( UCC/UGC -Web 2.0, Mobile Contents-LBS/Mashup Contents
Next-Generation Contents-Argument Reality/Mixed Reality )
※ 이번 기수부터 서울/경기 지역에 한해 컨텐츠 전문분야 인력도 약간명 선발
3. 선발 자격
□ 신입 자율채용 기준내 SoftWare부문 전략/유관학과의 재능있는 대학 재학생
□ 졸업 전, 최소 1년 동안 멤버십 회원으로 활동 가능한 인력
4. 선발 인원 : 약 ○○○명
5. 선발 지역 : 서울 (강남, 신촌), 수원, 대전, 대구, 부산, 광주, 전주 총 8개 지역
6. 특전 : 회원 활동 수료 후(졸업 시) 삼성전자 입사 희망 시, 특전 부여
【 참고 : 삼성 SW 멤버십이란? 】
1. 설립목적
: 소프트웨어 멤버십이란, 소프트웨어 및 관련 분야에 대한 재능과 열정이
있는 대학생들에게 연구, 개발에 필요한 모든 것들을 지원하여 창의적이고
실력 있는 삼성의 소프트웨어전문가가 되도록 지원하는 프로그램입니다.
2. 멤버십에서 바라는 인재상
: 열정적이고 창의적인, 소프트웨어에 재능이 있는 학생들입니다.
학년, 나이, 학교, 전공, 성별, 성적에 구애받지 않고 소프트웨어 분야에
대한 열정, 그리고 그 열정을 꽃 피울만한 실력이 갖춰진 학생이라면
멤버십 회원이 될 수 있습니다.
3. 멤버십 Program 이란?
: 소프트웨어 멤버십 회원이 되기 위한 절차를 거쳐 모든 시험과정에 합격한 뒤 멤버십 회원이 되어 활동 과정을 수료하는 사람에 한해 삼성전자에 입사 특전이 주어지는 제도입니다.
“VC++ 6.0을 쓰지 말아야하는 이유(http://minjang.egloos.com/1783328)” 라는 글을 읽고나서도 나는 별로 VC++ 6를 버리고 싶은 생각이 들지 않는다.
난 VC++ 6가 더 손에 착착 붙으니까.
익숙하지 않은 툴을 쓸 때의 그 느낌은 몸에 맞지 않는 옷을 입은 것처럼 코딩 작업을 매우 불편하게 한다. 물론 그 이후 버전에 익숙하지 않은 것은 내 천성적인 게으름 탓일 수도 있을거다. 흐흐흐..
그러나 MFC Application을 만들 때 굳이 VC.NET 이후 버전을 써야 할 이유를 느끼지 못한 것도 한 이유다. 그렇다고 그 이후 버전을 써야만 만들 수 있는 프로그램을 만드는 것도 아니었기 때문에.. 굳이 새버전이라는 이유로 내 손에 익은 단축키와 툴들을 버리고 굳이 옮기고 싶은 마음은 들지 않는다.
게다가, “VC++ 6.0을 쓰지 말아야하는 이유” 에서 쓰고 있는 이유들, 대부분이 아직 잘 와닿지 않는다.
“1. 보다 안전한 프로그래밍”에서의 _s버전의 함수를 쓰라는 건 나보고 특정 플랫폼의 함수에 종속되란 말로 들리고, 특히나 strcpy 같은 함수를 잘 사용하지 않는 나로서는 특별히 신경쓰이지 않는다. strcpy의 버퍼오버 플로우 같은 문제는 해묵은 문제이고 이와 관련된 이야기는 많이 들은 문제 아닌가?;
“2. 유니코드 프로그래밍” 같은 문제는 사실 프로그래머의 문제지 툴의 문제가 아니라고 생각한다.
“3. 보다 뛰어난 인텔리센스”는 VC++ 6의 인텔리센스 기능에도 만족해 했던 나로서 별로..;; Visual Assist를 써도 좋고..
“4. STL의 (거의) 완벽한 지원” 의 이유는 좀 써볼만하다고 생각하긴 한다.
“5. 뛰어난 IDE 매크로 사용”은 별다른 매크로를 사용하지 않아서인지도 모르겠다. 글에 나왔던 .cpp와 .h를 연결해주는 매크로 같은건 VC++ 6에서도 만들어쓴다. 나 같은 경우는 매크로를 쓰다가 Wndtabs에 아예 내장기능으로 들어가 있는 걸 보고 그 기능을 사용하는 중이다.
“6. 더 훌륭해진 컴파일러”는 약간 수긍. 그러나 더 빠른 컴파일러가 필요할 정도로 크리티컬한 상황을 MFC App.를 짜면서는 별로 느껴보지 못했다. 빠른 컴파일러가 필요하다면 인텔 컴파일러가 최고 아닐까?
“7. 더 괜찮아진 IDE” 는 개인차일 수 있으나, 난 VC++ 6의 IDE가 더 맘에 든다. 예전, C++ Builder의 IDE가 나중에 VC.NET의 인터페이스와 비슷해진 걸 써보고, “으.. 난 전꺼가 더 좋은데…” 한탄했던 기억이.. 게다가 클래스 위저드의 기능을 사용할 수 있다고 하나, “클래스 위저드를 사용하는 것”과 “클래스 위저드의 기능이 있는 것” 과는 매우 다르다.
“8. 멀티 코어의 사용”은 내가 아직 대규모 프로젝트에 투입되지 않아봐서 그런걸까.. 하지만, 컴파일 시간이 그만큼 길다는 것은 그 프로젝트의 구성 자체가 문제일 가능성이 더 높다.
“9. MFC/ATL의 변화” 는 MFC의 클래스들을 MFC 이외에서 사용하고 싶은 욕심이 없어서일까..;;
써야 하는 이유의 대두분이 나한테는 아직 써야하는 이유로 다가오지 않으므로, 고로, 그래서, 나는 아직 VC++ 6를 쓸란다.
그리고, 또 다른 이유는 “내가 좀 많이 게으르다.” 라는 것이다. 흐흐….
..라고는 하지만 이렇게 결론내기 좀 부끄러워 몇마디 더 하자면, 툴은 익숙한 툴이 좋고, 상황에 맞는 툴을 골라서 사용할 줄 아는 것이 현명하다는 것이다. 그리고 현재 내 상황은 아직 VC++ 6이 가장 적합한 툴이다. 흐흐..
우연히 멤버십 인트라넷을 보다가 다른 지역 게시판엔 뭐가 있을까 하고 보던 중에 대구 멤버십의 자유게시판에서 재밌는 글을 발견하고는 그 링크를 따라갔더니 재밌는 블로그가 나왔다. art.oriented(http://minjang.egloos.com/)
맨 처음 본 글은 “C로도 얼마든지 객체
지향이 가능합니다.“이다. 보던 중 정말 srand, rand가 전역변수를 쓰나? 나라면 static으로 scope를 줄텐데 하면서 glibc도 까보기도 하고, 글 내에 링크된 스레드 관련 부분에 관한 내용에 고개를 끄덕이기도 하고 하면서 재밌게 읽었다.
또, 컴퓨터 라는 분류에 재밌는 글들이 많은데 “gcc STL map iterator의 버그(?)” 라는 글에서는 왜 이 사람이 map을 iterator로 순회하면서 begin() 부터 –연산자를 써서 코딩하는 걸까 생각해보게 되었다. 저렇게 써도 되는건가? 그리고 저런 식의 코드를 만들어야 하는 상황이 생길까? 그런 상황은 무엇일까? 저렇게 쓰면 안되는거 아닌가? map을 쓰는 데 있어 저런 방식은 비정상적인거 같은데… map 자체가 저렇게 쓰라고 만든게 아닐텐데.. 등등..
다른 글들도 읽어보면서 얼마간은 좋은 생각거리들을 만들어 줄 수 있을 듯 하다.
Subversion은 지금까지 정말 열심히 쓰고 있는 버전 관리 툴이다. 필요에 의해 쓰게 되었고, 필요에 의해 익히게 된 유용한 툴이다. Subversion없는 프로젝트, 코딩은 이제 생각할 수도 없다. 그 초기에 설치하면서 썼던 설치기..
——————————————————————————————————–
목차
1 소개
2 설치
2.1 우분투 리눅스 설치
2.2 네트워크 설정
2.3 Subversion 설치
2.4 서비스 설정
2.4.1 xinetd 설치
2.5 저장소(Repository) 설치
2.6 Apache2와 연동
3 사용
1 소개
이 글은 내가 우분투 Breezy 를 설치 후 Subversion 을 설치해서 사용하기까지의 삽질을 정리하기 위한 페이지이다. 개인적인 목적으로(KLDP 에는 미안하지만 😉 ) 정리한 글임을 일러둔다.
클라이언트는 Microsoft Windows 에서 TortoiseSVN 을 이용한다.
2 설치
2.1 우분투 리눅스 설치
* 우분투 한국 사용자 모임 을 참조한다.
* 처음 사용자 ID 는 svnadmin 으로 설치하였다.
2.2 네트워크 설정
* 내부 네트워크에 192.168.0.166 으로 설정하였다.
2.3 Subversion 설치
* 시냅틱 패키지 관리자에서 Subversion 관련 패키지(Subversion, Subversion-tools, Subversion-helper-scripts(설치안해도 무방할 것 같으나 일단 추가))를 설치한다.
2.4 서비스 설정
2.4.1 xinetd 설치
1. 시냅틱 패키지 관리자에서 xinetd 패키지를 설치한다.
2. /etc/xinetd.d/ 밑에 svn 파일을 만들어 내용을 채운다.
1. sudo vi /etc/xinetd.d/svn
service svn
{
sockettype = stream
protocol = tcp
user = svnadmin
wait = no
disable = no
server = /usr/bin/svnserve
server_args = -i
port = 3690
}
2.5 저장소(Repository) 설치
1. /home/repository 디렉토리 만듦.
2. cd /home/repository
3. svnadmin create ProtoHan
4. /home/repository/ProtoHan/conf/passwd 를 참고하여 ProtoHan 프로젝트를 진행할 사람들의 계정과 비밀번호를 /home/svnadmin/SvnPasswd/JDL-740aDev 로 만든다.
5. /home/repository/ProtoHan/conf/svnserve.conf 을 편집한다.
1. vi /home/repository/ProtoHan/conf/svnserve.conf
6. Subversion 에서 추천하는 trunk/, branches/, tags/ 디렉토리를 만든다.
1. svn mkdir svn://localhost/home/repository/ProtoHan/trunk
2. 편집기로 Log 작성
3. 리비전 증가
4. svn mkdir svn://localhost/home/repository/ProtoHan/branches
5. 편집기로 Log 작성
6. 리비전 증가
7. svn mkdir svn://localhost/home/repository/ProtoHan/tags
8. 편집기로 Log 작성
9. 리비전 증가
2.6 Apache2와 연동
1. 시냅틱 패키지 관리자에서 Apache2 설치
2. Apache2 를 통해 ProtoHan 에 접근할 계정 설정
1. mkdir /home/svnadmin/ApachePasswd
2. cd /home/svnadmin/ApachePasswd
3. htpasswd -c JDL-740aDev <계정명>
4. <Password> 입력
3. /etc/apache2/mods-available/dav_svn.conf 편집
1. sudo vi /etc/apache2/mods-available/dav_svn.conf
4. sudo /etc/init.d/apache2 restart
3 사용
1. TortoiseSVN 다운로드(http://tortoisesvn.tigris.org/download.html) 후 설치
2. Repository 는 svn://192.168.0.166/home/repository/ProtoHan/trunk 혹은 http://192.168.0.166/ProtoHan/trunk 로 접근한다.