블로그 이미지
관리할 시간이 별로 없다는 핑계 제출중... sbin

카테고리

sbin story (32)
who is sbin (0)
sbin's equipment (2)
C language (8)
travel (0)
ubuntu (8)
Mac (3)
book & sentence (11)
헛소리.. (0)
Total52,933
Today6
Yesterday6
누가 이전에 올린 메뉴얼로도 못 설치 하겠다고 해서 제가 설치하면서 명령어 리스트만 모았습니다.

이미 vi, gcc,qt등의 개발 환경 설치와 conky, cairo-dock, compiz등 데스크탑 환경 설정이 끝난 피씨에서 작업 한 것이기 때문에 문제가 발생 될 수 있습니다. 그에 대한 대응은 이전에 쓴 메뉴얼을 참조해 주세요.

1.단계 CLHEP 설치

cd 2.0.4.2
cd CLHEP
./configure
make
sudo make install
cd ../..
vi ~/.bashrc
G
o
export LD_LIBRARY_PATH=/usr/local/lib
[esc]
:wq

[ctrl]+[shift]+[n]

< 새로운 터미널에서>

2.단계 ROOT 설치
cd root
export ROOTSYS=~/GATE/root
sudo apt-get install libxft-dev libxft2-dev libxpm-dev
./configure
make
cd ..
vi ~/.bashrc
G
o
source $HOME/Gate/root/bin/thisroot.sh
[esc]
:wq

[ctrl]+[shift]+[n]

<새로운 터미널에서>
3.단계 geant 설치
= g4emlow 6.2가 설치 된 상황으로 판단 합니다.

cd geant4.9.2.p03
./Configure -build
==================================
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
[enter]
G4UI_NONE [enter]
G4UI_BUILD_XAW_SESSION[enter]
G4UI_BUILD_XM_SESSION[enter]
G4UI_BUILD_QT_SESSION[enter]
G4VIS_NONE[enter]
G4VIS_BUILD_OPENGLX_DRIVER[y][enter]
G4VIS_BUILD_OPENGLXM_DRIVER[enter]
G4VIS_BUILD_DAWN_DRIVER[enter]
G4VIS_BUILD_OIX_DRIVER[enter]
G4VIS_BUILD_RAYTRACERX_DRIVER[y][enter]
G4VIS_BUILD_VRML_DRIVER[enter]
[enter] <<all
===========================================
./Configure

cd ..
vi ~/.bashrc
G
o
source $HOME/Gate/geant4.9.2.p03/env.sh
[esc]
:wq

[ctrl]+[shift]+[n]

< 새로운 터미널에서>

4.단계 lmf
cd lmf_v3.0
./configure
make clean
make
cd ..
vi ~/.bashrc
G
o
export LMF_HOME=$HOME/Gate/lmf_v3.0
[esc]
:wq

[ctrl]+[shift]+[n]

< 새로운 터미널에서>


5.단계 Gate
cd gate_v6.0_p01
export GATEHOME=$HOME/Gate/gate_v6.0_p01
export G4VERSION=9.2
export G4VERSION9=2

source env_gate.sh

sudo apt-get install libxmu
make

Posted by sbin
이문제의 해결책의 출처는  마루님의 홈피 입니다.
http://floor.textcube.com/entry/VirtualBox-with-USB-Support-on-Ubuntu-904-jaunty

sudo usermod -a -G vboxusers username

마지막에 username만 자신의 컴퓨터 id로 변경하시면 됩니다....

이후엔 재부팅 해주시구요..^^
Posted by sbin
11월 2일 우분투의 새로운 버전이 공개 되었다.
이름 하여 9.10 - the Karmic Koala -
기분좋게 재설치 한후에 듀얼 모니터 설정을 하려고 nvidia-setting을 실행한 사람은 Fail이라는 문장 만 봐야 했을 것이다...>,.<
그래서 설정하지 안고 하나만 쓰면서 모니터링 하다 보니 아침 우분투 포럼에서 해결책을 제시한 뎃글을 발견했다..^^

그 내용은
Yeah, the sudo nvidia-xconfig command fixed the problem for me.. apparently the existing xorg.conf was corrupt/incomplete. Once I ran that, i check and it had much more info it the conf file.. then I ran sudo nvidia-settings again and clicked the save config to file button and it stuck. Rebooted and everything works.

이것이다. 해석해 보면 알수 있듯 sudo nvidia-xconfig를 이용 xorg.conf의 내용을 변경해 주어야 한다.
sudo nvidia-xconfig를 실행해 보면 기존의 xorg.conf를 백업하고 새로운 xorg.conf로 변경하겠다는 메시지가 출력된다.
실행후 sudo nvidia-setting을 실행 시키면 기존에 사용해온 대로 셋팅할 수 있을 것이다.( 이 내용은 이전에 올렸기 때문에 생략.)

그럼 모두 즐거운 우분투 생활~~~
----------------------------------------------------------------------------------------------------------------------------------
듀얼 설정을 찾아 오신분은 아래 링크로 이동하세요..
http://sbinroom.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-%EB%93%80%EC%96%BC-%EB%AA%A8%EB%8B%88%ED%84%B0-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0nvidia
Posted by sbin
  gate는 몬테카를로 시뮬레이션 툴입니다. gate의 홈페이지http://opengatecollaboration.healthgrid.org/에는 쥐를 PET으로 촬영하는 재미있는 이미지를 볼수 있습니다. 이와 같이 PET, SPECT등에서 나타나는 물리 현상을 계산해서 실제 실험때의 데이터와 같은 데이터를 얻을수 있게 해주는 강력한 시뮬레이션 툴입니다.
  일단 설명에 앞서 설치 피씨는 기본적인 프로그래밍에 필요한 vim이나 gcc,qt,ctags등이 미리 설치 되어 있는 pc입니다. 그렇기 때문에 아예 순수한 우분투 설치 피씨에서 생기는 문제가 이 글에서는 발생하지 않을 수 있으니 그경우 댓글을 남겨주세요. 최대한 도움이 되도록 노력하겠습니다.
  위 홈피에서 registration 절차를 통과한후 로그인하면 위 화면과 같은 게이트 다운로드 페이지로 이동할수 있습니다. 이중 마음에 드는 게이트 버전을 설치하면 됩니다. 같은 열에 명시 된 프로그램은 게이트 설치 전에 설치가 완료 되어야 합니다. 버전 또한 다르면 안되고 명시된 바에 맞추어 줘야 합니다. 이때 특히 주의 할 점은 gcc의 버전입니다. 현재(2009.10) gcc의 최신버전은 4.3이고 우분투 또한 기본으로 4.3으로 설정 되어 있습니다. 이 버전을 고쳐줘야 하는 것 입니다. 터미널을 열고 다음 명령을 입력합니다.
sudo apt-get install gcc-4.2 g++-4.2 ctags
 4.2버전의 컴파일러를 얻었으니 설정을 변경합니다.
sudo rm /usr/bin/gcc /usr/bin/g++
sudo ln -s gcc-4.2 /usr/bin/gcc
sudo ln -s g++-4.2 /usr/bin/g++
 이제 설치 준비가 완료 되었습니다. 위에서 설치한 ctags는 lmf의 설치에 필요 합니다.
 Gate와 관련 프로그램들을 다운 받아서 준비 합니다. 이 과정은 구글링을 통해 쉽게 처리 하실수 있으실 것입니다.
 @ 반드시 표기된 버전으로 설치하도록 하세요. 새로운 버전으 있다고 그걸로 하시는건 문제가 없을 확률이 높지만 추천하진 않습니다. 특히 geant의 경우 화면구성을 담당하기 때문에 디스플레이가 안되는 문제를 격게 되실수도 있습니다. ( gate 5.0에서 geant4.9.2를 설치하는 경우 이와 같은 문제가 발생합니다.)

1. CLHEP
  인스톨 과정을 시작합니다...^^
  위 5 아이들중 첫번째는 CLHEP입니다.
http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/
  위는 clhep의 다운로드 사이트 입니다.
http://wwwasd.web.cern.ch/wwwasd/lhc++/INSTALLATION/clhep-2.0.html
  위는 clhep의 인스톨 가이드 입니다.
  내용을 보면 아시겠지만 크게
./configure
make
make install
  로 구성됩니다.
  이때 설치는 /usr/local에 설치 되며 변경을 원할경우
./configure --prefix=[folder]
make
make install
  로 해주시면 됩니다.
  저 같은 경우 기본 설정을 격하게 사랑하기 때문에 폴더 설정 없이 /usr/local에 설치하도록 하겠습니다.
./configure 명령 후 스샷입니다.
이게 정상 설치가 되었을때 입니다.
위와 같이 나올 경우엔 c++의 설정 이 잘못 되었을때 입니다. 위의 gcc,g++설정을 다시 해 주시면 설치 될 것입니다.
  다음 명령으로 make 입니다. 이 명령은 clhep의 소스들을 컴파일 해서 설치 가능한 상태로 만드는 과정 입니다. 그러니 이 과정에서는 /usr/local에 설치하는게 아님으로 슈퍼유저의 권한 없이 make 명령을 내려 주도록 합니다.

  여기에서 중요한 팁을 드리겠습니다. 가끔 -l[xxx]와 같은 아이가 없다면서 빌드 에러를 출력하는 g++ or gcc를 보실수 있으실 것입니다. 이는 보통 범용적인 라이브러리 들이기 때문에 관련 검색어로 찾으시면 쉽게 찾으실수 있습니다. 예를 들어 -l[xxx]가 없다고 할 경우 sudo apt-get install libxxx 로 찾으면 관련 라이브러리를 찾으실수 있습니다. 하지만 이때 libxxx가 아니라 libxxx-dev을 설치 하셔야 한다는 것만 주의해 주세요.
  이와 같은 문제는 이 글dl 쓰여지면서 한번 이상은 발생할 것 이기에 그때 또 설명하겠습니다.
이번에도 문제 없이 설치 되었습니다. 그럼 make install 이전에 이 파일들을 체크하는 명령어를 내려 보겠습니다. make check로 이건 clhep의 개발자들이 추가 해 놓은 것이니 다른 프로그램에서는 왠만해서 안먹히는 명령어죠..^^
 
8가지 test중 1가지가 문제가 있습니다. 하지만 전 이 clhep를 전문으로 쓰는게 아니라 문제를 해결할 방법을 모르겠습니다.( 또 이전 게이트에서는 이 문제를 무시하고도 잘 실행 되었습니다.) 아시는 분은 지식을 나누어 주세요..^^

  다음 과정으로 make install 입니다. 이제 컴파일된 소스가 /usr/local에 설치될 순서인 거죠. 헌데 우분투의 특성 상 보통 유저는 슈퍼유저의 권한을 가지고 있지 않습니다. 그래서 명령어는 다음으로 변경 됩니다.
sudo make install
  간단합니다. 슈퍼유저 권한을 빌려서 명령어를 실행하는 것입니다.
이걸로 clhep의 설치가 완료 되었습니다.
  이후의 설치에서 프로그램들은 clhep를 사용합니다. 헌데 이녀석들에게 clhep의 위치를 알려줘야 겠죠.
  터미널을 열고  명령을 내립니다. vi ~/.bashrc
  이후 키입력은 Go 이후에
export LD_LIBRARY_PATH=[clhep 설치 폴더]/lib
  를 입력후 :w을 입력합니다.

다음과 같이 입력 되었죠. :q를 입력하고 빠져 나옵니다. 이제 새로운 터미널이 열릴때 마다 clhep의 위치는 저절로 등록 됩니다.
  이걸로 첫번째 프로그램 clhep의 설치가 완료 되었습니다.

2. root
  root는 범용적으로 여러곳에서 사용되는 아이이다 보니 우분투에서도 기본 저장소에 등록 되어져 있습니다. 하지만 Gate를 사용하시려 하는 경우 이를 사용할수 없습니다. 이유는 Gate가 실행되기 위해 쉘에서 특정변수를 지정해야 합니다. 하지만 기본 설치시 이것이 불가능 하기 때문에 절대 받아서 설치해야 합니다.
http://root.cern.ch/drupal/
  관련 파일과 문서는 여기서 획득합니다.
  따로 installguide의 경우 root 폴더의 readme/install이라는 이름으로 있습니다.
  root의 설치는 2가지로 분류 됩니다.
  환경변수 지정형과 /usr/local 설치 형 입니다.
  이때도 역시 환경변수 지정으로 해야 합니다. /usr/local설치시 눈물을 머금고 처음부터 다시 하셔야 할 수도 있으니 주의 하세요.
  명령어 리스트는 다음과 같습니다.
export ROOTSYS=<path>/root
 ./configure --enable-roofit --disable-xrootd --build=debug --disable-krb5 (ubuntu 9.10) or
 ./configure
make
  @ ubuntu 9.10 에서 Krb의 버전 변경에 따라 root의 기본설정으로는 설치가 불가능 합니다. krb5를 끄는 위쪽 명령을 사용하세요.
export 는 그냥 잘 쳐주면 끝이니까 skip하구요.
  첫번째 명령어 ./configure
  실행하면 에러가 발생합니다. 위에서 설명한 library 관련 에러 입니다.
상황에 따라서는 더 많이 발생하거나 더 적게 발생합니다. 전 여기서 멈추었지만 이전에 만든 가이드에서는 이 이전 x11에서 멈춤으로 인해 qt4를 설치 했군요. 이번엔 이미 설치 되어 있어서 곧바로 libXpm으로 이동했구요.
  아무튼 이 문제의 해결은 간단합니다.
sudo apt-get install libxpm-dev
  입니다.
  이후 다시 ./confiqure 명령을 내리면
위 스크린 샷은 install 까지 나왔지만 이는 제가 실수로 기본 설정 설치했을때 스샷이고 make만 뜨게 되어 있습니다.
앞서 과정을 잘 이행 하셨다면 이후에는 별문제 없으실 것입니다.
두번째 명령어 make (메뉴얼에서 듀얼 코어의 경우 -j2옵션을 넣으라고 합니다.
하지만 저는 -j2옵션에서 이전에 에러 난 적이 있어서 그냥 make를 즐겨 사용합니다.
이제 이녀석의 환경 변수를 지정해줘야 합니다. 하지만 이아이는 자신의 환경변수를 bin/thisroot.sh 라는 스크립트 파일에 정의해 놓습니다. 그에 따라 우린 요구하는 환경변수를 다 설정할것이 아니라 그냥 이 스크립트 파일을 bashrc에서 읽어 오게 하면 됩니다.
방법은 source <path>/thisroot.sh 입니다.

~/.bashrc라는건 이미 알고 계시죠. 이 gate의 폴더는 계속해서 사용될 것이기 때문에 GATEHOME이라는 환경변수를 추가 했습니다. 그후 해당 파일을 추가하는 거죠.

3. geant 입니다.
  이녀석도 저장소에 있지만 gate5.0이 요구하는 수준이 아니더군요. 그래서 받아둔 4.9.1.p03버전을 설치 합니다.
  다행인지 불행인지 사용자가 많아 진다면 geant도 최신버전을 우분투가 기본 지원하겠죠.
http://geant4.slac.stanford.edu/installation/
  geant4의 홈페이지에서 제공하는 가이드 보다 자세한 가이드 입니다. 상당히 잘 정리 되어 있으니 우분투에서 설치시 필요한 명령어만 나열하고 스샷을 보이는 형태로 진행 하겠습니다.
  첫번째로 해야 할일은 g2emlow라는 라이브러리를 현재 geant의 설치 폴더에 추가해 주어야 합니다.
http://geant4.web.cern.ch/geant4/support/source/G4EMLOW.6.2.tar.gz
  geant 폴더의 하위에 data라는 폴더를 만들고 이파일을 복사 한뒤 우클릭 여기에 풀기를 실행 합니다.( 텍스트가 좋으신 분은 anyway)
  즉 geant[version]/data/G4EMLOW[version] 이라는 폴더 안에 g4emlow의 내용이 다 있어야 합니다.
  완료 되었다면
  ./Configure -build
  geant의 configure는 사용자가 지정하는 셋팅을 이용해서 설치 합니다. 그 설정은 다음 url을 따라하시면 됩니다.
http://geant4.slac.stanford.edu/tutorial/installation/Geant4.9.2.p02/Linux/Geant4Build.txt
 @ 중간에 g4emlow의 폴더를 확인 하는 부분이 있습니다. 버전이 다르다면 변경해 주셔야 겠죠.
  저같은 경우 6.2를 받았는데 5.2를 요구해서 다운 그레이드 할려다가 폴더명만 바꾸어 설치 했습니다.
  하지만 왠만하면 요구하는 버전으로 깔아 주세요...ㅡㅡ;;( 11월 19일)

 이 위치는 앞서 가이드라인의 일부 입니다.
 잘따라 하셨다면
  이화면을 보시게 됩니다. 다음 명령은
./Configure
이런 결과을 보시게 되고 폴더에는 env.sh라는 파일이 생성됩니다.
이제 터미널이 켜질때 마다 이 환경설정을 지정해 주도록 .bashrc에 다음 코드를 추가 합니다.
source <path>/env.sh
이제 터미널을 열때마다 이 환경이 추가 됩니다. 하지만 이녀석...시끄럽습니다. 켜지면 어떤아이가 추가 되었는지를 통보합니다.
  이렇게 됩니다. 그래서 사일런트 마법을 영창합니다. env.sh의 상단에 다음 코드를 추가 하시면 조용해 집니다.
g4non_display='X'
입력후엔 조용해 질것입니다.

4.LMF
  이제 막바지 입니다.
  lmf의 압축을 해제 하신후
  document/LMF.pdf
  가 가이드 입니다.
  명령어는
./configure
make clean
make
  입니다. 문제 없이 설치 하실수 있으실 것 입니다.
  완료라면 congratulations라는 메시지를 보시게 될 것입니다.
  에러가 발생하면 ctags를 설치해 주시면 될 것입니다.
sudo apt-get install ctags 입니다.
  요구하는건 etags인데 왜 ctags일까 라는 의문이 생기 시나요?
  ctags안에 etags가 통합되어 들어 가 있습니다.
  이제  lmf를 환경 변수에 추가해 주어야 합니다.
export LMF_HOME=<path>/lmf_v3.0입니다.
이제 드디어 최종 보스 Gate입니다.

5. Gate
  Gate 의 인스톨 가이드는 Gate 홈피에서 다운 받으시면 됩니다. 그런데 그 내용이
---------------------------------------------------------------------------------------------------------------------------------------------------------------
1.3 Installing GATE
There is no automated procedure for the GATE installation. Following the 5 next steps to install
GATE :
  1. Download the GATE sources and data files into a new directory;
  2. Set the environment variable GATEHOME to this directory;
  3. Adapt the GATE configuration script env_gate.csh to your environment (next section);
  4. Launch the configuration script env_gate.csh by typing source env_gate.csh;
  5. Type make or gmake (depending on the name for the GNU version of make on your
      system).
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
이게 다입니다.
  참 쉽군요.
  일단 환경 설정을 해야 합니다.
export GATEHOME=<path>
  이건 .bashrc가 아닌 터미널 명령으로 처리 합니다.

다음 명령은 source env_gate.sh 입니다.
간혹 실행이 안되고 터미널이 종료 될 경우에는 위 source가 아닌 sh로 해보세요...
그러면 머가 문제인지 뜨게 됩니다. 그 문제를 해결후 다시 source로 실행해 주시면 됩니다.

이런 메시지가 뜨게 됩니다. G4VERSION이라는 변수가 없다는 군요.
강제로 만들어 줘야 겠네요.
G4VERSION=9.2
G4VERSION9=2
완료 되었습니다.

이제 make만 치시면 Gate설치 종료 입니다...^^ 긴시간 수고하셨구요..^^
Gate의 실행파일은 <gate_path>/bin/Linux-g++/Gate입니다.
이녀석을 ln을 이용해서 /usr/bin상에 심볼릭 링크 생성을 해주시면 편하게 사용하실수 있을거에요..^^
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
아래 yudoldosa님의 에러 해결 방법입니다.

좌측은 find명령어로 관련 파일을 서치한 결과 입니다. clhep가 설치된 폴더에 위치한 관련 파일을 확인 하실수 있습니다.
이 경로를 우측과 같이 .bashrc에 추가해 주세요.
Posted by sbin
 이번 장에서는 스왑 기술을 다루겠습니다.
 모두가 알고 있는 기술이죠. 프로그램을 배우면서 여러번이나 반복 학습한 기술입니다. 간단하죠. 두개의 변수가 가지고 있는 데이터를 상호교환합니다.

void swap(int &a,int &b){
	int temp;
	temp	= *a;
	*b	= *a;
	*b	= temp;
}

 기본형은 위와 같고 정말 간단한 함수 입니다. 헌데 이게 왜 거창하게 프로그래밍 스킬 씩이나 될까요?
 프로그래밍 스킬이 되는 이유는 바로 사용법에 있습니다.
 우린 수많은 프로그래밍 기술을 배우게 됩니다. c, c++을 하며 포인터를 다루는 법이나 구조체 등을 다루는 법을 배우고, 자바를 배우면 객체 지향을 배우게 됩니다. 머 요즘은 객체 지향이 아닌 목적지향이 대세죠..^^
 헌데 우린 이렇게 배워온 스킬을 전혀 사용하지 않는 경향이 있습니다.
 위의 swap이 대표적이라고 할 수 있습니다.

 그럼 swap을 사용하는 대표적 구조가 무엇일까요?
 전 위에서 목적지향을 언급했습니다. 이때 필요 하죠 우린 필요에 의해서 일정 변수를 전역으로 지정하고 사용하게 됩니다. 다른 파일에선 볼수 없는 변수 이지만 파일 내부에선 사용이 자유롭죠.
 이 파일 안에 펑션 A가 있습니다. 그런데 이녀석은 전역 변수 b를 사용하는 군요 그런데 우리는 A와 같은 기능을 하되 b와 형태가 같은 c변수를 가지고 실행 하길 바랍니다.
 이때 A를 다시 전역 변수가 아닌 전송 받은 녀석으로 처리하게 변경하는 방법이 많이 사용 됩니다. 하지만 이는 속도 저하를 불러오게 됩니다. 자신이 연산하는게 외부에도 보내준 주소를 이용하는 것이라고 하면 일정 언어에서는 속도가 저하되게 되죠. 이를 보완하는 방법이 swap입니다. 그냥 b와 c의 형태가 같으니 연산전에 둘을 교체해두고 연산후 다시 교체하면 되는 일이죠.
 여러 반론이 나올수 있습니다. 우선은 가장 큰 반론 "우아한 퇴보" 컴퓨터는 만들어 지고 난뒤 가장 큰 이슈가 항상 일하게 하는 것이었죠. 하지만 컴퓨터의 발전은 너무 빨랐고 사람들은 이 이슈를 포기했습니다. 이걸 "우아한 퇴보" 라고 하죠. 즉 컴퓨터는 사용자 보다 연산이 빠르고 그렇기 때문에 사용자의 입력을 기다린다. 입니다. 실제로 이는 많은 분야에서 타당합니다. 우리는 동영상을 시청하면서 웹서핑도 하죠 이는 컴터가 두가지를 모두 처리할 수 있을 정도로 빠르기 때문입니다. 이런 컴터를 사용하는데 왜 프로그래머가 고작 1,2초를 줄일려고 더 힘든길을 택하는가 이죠.
 이는 프로그래머들 사이에서는 충분히 큰 이슈죠. 1.컴터가 빨라졌는데 왜 속도 최적화를 해야 하는가 차라리 보완이 쉽게 하자. 아니다 2.그래도 우리는 사용자를 위해 빠른 프로그램을 짜야한다. 전 눈치 채셨겠지만 후자 입니다.
 전 의공학쪽을 하거든요. 그 중에서도 방사능, 혹은 울트라 비전의 장비들에 이미징이 전문 입니다. 그렇다 보니 한번의 구동에 엄청난 시간을 할애하거든요.
 이런 분야는 저뿐만이 아닐 것입니다. 영상 공학쪽이나 네트워크는 짧은 시간 안에 많은 일을 해야하죠. 그렇기 때문에 우린 우아한 퇴보 든 머든 빨라야 한다는 것입니다.
 이게 이번 장에서 제가 말하고자 하는 첫번째 쾌속화입니다. 그럼 두번째 이번엔 시간 보장입니다. 이도  swap을 쓰게 됩니다. 이번엔 추상적인 설명보다 제 경험을 바탕으로 쓰겠습니다. 얼마전 유명 대회 출품 목적으로 영상처리를 하게 되었습니다. 이 과정에서는 당연히 전프레임과 현재 프레임을 비교 해야 했습니다.이를 위해 저는 현 프레임을 전프레임 변수에 할당해야 했죠. 문제는 간단히 해결 할 수 있죠. 첫번째 입니다.
	memcpy(prevImage, currentImage, imageScale);
    memcpy(prevImage, currentImage, imageScale);
간단한 솔루션이죠..^^..c에서 제공하는 기본 함수 이니 속도도 보장 됩니다.(기본 함수는 최적화가 되어 있는 상태로 릴리즈 됩니다.)
두번째 입니다.
	double * temp;
	temp	= currentImage;
	prevImage	= currentImage;
	currentImage	= temp;
이번엔 스왑 기술입니다. 실제 메모리에 할당된건 두 이미지(currentImage, prevImage)입니다. 이 구문을 통해 두 변수는 서로 자신의 값을 변경합니다. 다음 프레임을 처리할때에는 currentImage가 재할당 되지만 이는 전 프레임이 아닌 전전 프레임의 내용이니 상관없고 prev는 전프레임의 내용을 담고 있으니 조건 충족이죠.
 
  위 둘은 결국 같은 일을 합니다. 결과는 물론 여러가지로 다르지만 이건 프로그래머가 일부로 한것이니 문제 없겠죠. 그럼 이둘이 프로그램에 주는 효과는 무엇일까요?

 능숙한 프로그래머(속도 쪽으로)라면 눈치 채셨죠. 첫번째 알고리즘에 러시안 페인트공이 있습니다. 첫번째 알고리즘은 imageScale만큼의 메모리를 복사 하죠. 헌데 이는 이미지의 크기에 따라 변화합니다. 이 수치는 극히 짧을 수도 있고 수만,수백만의 크기일수도 있습니다.
 이에 반해 두번째는 그냥 3번 주소 재할당이 있었고 이는 imageScale의 크기에 상관없죠.

  이게 두번째 이슈 입니다. 프로그래머는 불확정 시간동안 프로그램이 구동하게 해서는 안됩니다. 이런걸 허용하면 처리해야할 데이터의 크기가 커졌을때 그 크기의 증가량 만큼만 쓰면 될 실행시간이 크기의 제곱 세제곱의 시간으로 늘어 나게 됩니다. 이게 러시안 페인트공의 무서운 점이죠. 사태가 이때 까지 가면 우린 무엇이 문제를 야기하는지도 찾기 힘들어 지죠..^^

여기서 제 이슈는 두가지였습니다.
1. 프로그래머는 프로그램이 빠른 시간안에 구동 되도록 보장해야 한다.
2. 프로그래머가 보장 못하는 정도의 시간을 쓰게 해서는 안된다.
추가로 하나 입니다.
 + 우리가 배운 수많은 프로그래밍 기법들은 조금만 변경해도 얼마든지 고급 프로그래밍 기술이 될 수 있다.
둘다 속도에 관한 이슈였죠..^^ 허접하지만 봐주셔서 감사합니다...^^
Posted by sbin
  얼마전에 다른 랩에서 버린 lcd17인치 모니터를 슬쩍했습니다...^__^..
  왜 버렸을까 하고...켜보니...앗....blu(back light unit)이 나갔다..ㅡㅡ;; 결국 쓰레기를 주워온건가 하고.....버릴려다가...무한한 공대 마인드가 해부해야해~~~라는 명령을 내림에 따라....회사 구석에 모셔두었다...ㅎㅎ 그러다 어느날 실험용  pc셋팅을 위해 무심코 연결뒤 한참 후에 보다...어라~~~이녀석...blu나갔었는데..ㅡㅡ;; 멀쩡히 켜있다...알고 보니 blu가 나간게 아니라 형광등 수명이 다 되어 켜져도 늦게 켜지는 현상....그게 발생한것....ㅎㅎㅎ 그래서 서브 모니터 등록...헌데...우분투에서 듀얼 모니터 쓰는 법에 따른 정보를 검색했지만 쉽게 나오지 않았고 그래서 여러 뻘짓과 외국 사이트 독해로 어찌 어찌 성공했으니....이제...필요한 분들께 이 지식을 뿌릴차례..^^

  ㅎㅎ 서론이 길었죠...암튼 시작 합니다.

  퀴즈~~~우분투 설치후 젤 처음 하는 일은???
  정답.....nvidia독점 드라이버 설치..^^ 그래야 이쁜이 컴피즈가 opengl을 활용해서 멋진 화면을 보여 줄테니 까요...

  헌데 이녀석은 보통 설치후에 내팽개쳐 두기 마련...특별히 설정할게 없을만큼 알아서 잘 해 주니까요..^.~
  하지만 듀얼 모니터 설정은....이때 하드웨어 드라이버와 함께 깔린 nvidia-setting-manager가 필요 하답니다.
  듀얼 모니터를 쓰시려면 일단...당연히 두 모니터를 컴터에 연결하셔야 겠죠...그후 터미널에서 명령을 내립니다.

  sudo nvidia-settings

  시스템>>관리 에도 관련 아이콘이 있지만 이녀석은 무시....왜냐....우린 하드웨어를 건드리게 됩니다....당연히 루트 개정없이는 불가능 하겠죠..^^

  그러고 나면 이렇게 귀여운 펭귄이...방가방가 하는 엔비디아 설정 패널이 열립니다.
  우리가 원하는 듀얼 모니터에 대한 설정은 두번째의 x server Display configuration 에 있습니다....당당히 클릭~~
 

  그럼 위와 같은 창이 열릴텐데요.. layout의 두개의 박스가 각 모니터를 의미 합니다. 만약 두개가 아니라면 아래  Detect Displays버튼을 누르세요...그래도 안뜨면 접속 불량 이겠죠.
  설정이 안되어 있다면 서브 모니터는 disabled로 되어 있을거에요. 그럼 하단의 디스플레이 메뉴에서 model 리스트 박스를 클릭 꺼져있는 녀석을 선택합니다. 그러면 resolution등은 사라지고 model 명과 configuration만 남아 있을 거에요...
  그럼 configure라는 단추를 클릭...

  이제 스샷과 같은 선택 창이 나오죠..^^
  이중 첫번째 disabled는 당연히 사용하지 않겠다는 이야기니까 무시구요. 두번째 separate xscreen 과 twin view가 듀얼 모니터를 지원해 주는 옵션입니다. 그럼 설명
  separate x screen : 두개 의 모니터를 따로 따로 관리 한다
                             장점 : 한쪽 모니터를 회전시킨다고 해도 반대편은 그대로 유지 된다.
                             단점 : 한쪽 모니터에서 열린 프로그램은 그 모니터에서만 사용 가능하고 다른 모니터로 전송할 수 없다.
  twin view : 두개의 모니터를 마치 하나의 모니터 같이 관리한다.
                             장점 : 두 모니터간 파일 이동이 자유 롭다.
                             단점 : 모니터 회전시 두 모니터가 같이 회전한다.

  이 둘중 하나를 선택하시고 layout 창에서 서브 모니터의 화면을 원하는 위치로 드래그 하시면 됩니다. 또 Enable Xinerama 옵션이 있습니다. 이경우 separate x screen 의 단점이 제거 되고 완전하게 다른 큐브를 가진 두개의 디스플레이를 보게 되신다고 합니다. 허나...치명적 단점....openGL을 사용할 수 없다...즉...emerald 나 compiz가 사용 불능...또 카이로 독도...openGL이 꺼진 카이로 독을 보시게 됩니다. 패널티 치고는 너무 크죠..^^ 그래서 저도 안쓰고 있습니다.
  설정을 마치셨으면...아래 apply버튼를 누르세요...그후 Save to configuration file 버튼을 누르시면 설정이 저장 됩니다. 이제 로그 아웃 하셨다 들어 오시면 설정 종료..^^만약 적용이 안되었다면 루트 개정으로 열지 않으신 거에요..sudo nvidia-settings 입니다.

  보통 사람들은 twin view를 많이 사용하신다고 합니다. 한쪽 모니터에서 연 파일을 다른 모니터로 못 옮기는 separate의 단점이 너무 큰것이겠죠.
  그래서 저도 처음 twin view를 사용해 봤습니다...한 10분정도요..ㅡㅡ;; 그런데 때려 쳤죠..ㅡㅡ;; 애초의 목적에 어긋 나더군요.
  전 메인 모니터가 터미널을 보고 있던 불여우를 보고 있던지 서브 모니터는...메신저창을 보여 주거나 작업 결과물을 보여주길 바랍니다. 그런데 둘이 같이 회전해서야...그냥 조금 커진 메인모니터 하나를 쓰는 격이 잖아요... 그래서 불편해도 separate를 쓰기로 했습니다.
  지금은 아주 편하게 사용하지만 처음엔 당연히 그렇지 않았었죠. 두 모니터간 창이동이 제한 되는건 생각보다 너무 큰 패널티 더군요....게다가 기본 설정이 메인 모니터로 되어 있어서 웬만한 프로그램은 메인모니터에 열린답니다. 서브 모니터에서 켜지게 하려면 프로그램 각각에 --screen=1이라는 설정을 추가해야 하죠...처음엔 카이로 독의 아이콘에 이 설정을 추가해줬습니다. 하지만 불편합니다. 이건 서브 모니터에서 많이 키긴 하지만 가끔은 메인 모니터에서 키고 싶을때도 있죠...또 이 --screen 옵션이 안먹는 프로그램도 있습니다.
  그래서 고민 했죠....그러던 중 혹시 카이로 독이 아닌 awn이라면 어떨까 하고 켜봤습니다....결과는 cairo와 다를바 없더군요...헌데...서브모니터의 프로그램 메뉴에서 awn을 켜봤습니다. 헉....이건 screen 명령이 없는 오리지널 아이콘 인데도 서브 모니터에 켜지더군요 거기다 하나더....이 awn에 등록된 아이콘들은 모두 서브 모니터에 디스플레이 합니다..앗 해결책이네요..^^
  그 결과물은 다음과 같습니다.

왼쪽이 메인 1600x1050 이구요 오른쪽이 서브 1280x1024 입니다.
메인 모니터는 카이로 독이 관리하고 서브 모니터는 AWN이 사용하죠. 서브 모니터쪽은 AWN탑재 프로그램이라는 제한이 있지만 원래 사용량이 적으니까 서브 모니터 인거죠..^^ 또 필요 하면 --screen=1 옵션을 사용하면 처리 되겠죠..^^
또 서브의 경우 작업공간을 확장할 방법을 못 찾겠더군요...그래서 우분투 기본설정인 2개의 작업공간으로 사용하고 있습니다.

마지막으로 결론 및 정리 입니다.
   우분투에 듀얼 모니터 시스템은 2가지가 있다.
    1. separate X screen
    2. tween view
   전자는 모니터를 따로 관리하고 후자는 통합관리 한다.
   즉 우분투의 동작에 있어 전자의 두 모니터는 서로 다른 하드웨어, 후자는 같은 하드웨어같이 취급한다.(작업공간 통합, 분할)

   tween view를 원할 경우 그냥 사용하면 된다. separate X screen의 경우 awn에 서브 모니터에서 사용할 프로그램들의 아이콘을 만들고 이후 awn을 서브 모니터의
  프로그램>>보조프로그램>>Avant window Navigator
  에서 열고 서브 모니터에서 구동할 프로그램은 이 awn dock을 사용한다.
  그렇지 않을경우 터미널이나 "alt+f2"키를 이용하여 구동하며 프로그램구동 명령 에 --screen=1 옵션을 준다.
Posted by sbin
  이번엔 누구나 알듯한 ctags에 대해 다루도록 합니다..^^

  ctags는 속도가 빠른 vi에게 날개를 붙여 주는 프로그램이죠..^^
  ctags라는 날개를 얻음으로서 vi는 함수들 사이를 마구 마구 날아다닐 것입니다.

  vi의 장점은 숙련 되었을때 높은 에디트 능력과 속도를 제공한다는 데에 있습니다. 그 주요점은 검색&치환 입니다.windows를 사용할때 우린 검색 기능은 사용하지 않습니다. 드라이브 전체를 뒤지는 일이 있어도 윈도우의 내장 검색 기능은 무시해 버리죠...왜냐하면 한번 돌리면 퇴근해야 하니까요..ㅡㅡ;; 하지만 리눅스는 다릅니다. 현재 제 피씨의 하드 디스크는 320기가와 서브 백업용으로 1테라 입니다. 320기가는 거의 모든 영역을 사용하고 있구요. 하지만 리눅스의 검색명령을 내리고 키보드 옆에 커피를 몇 모금 마시고 나면 결과물이 나와 있습니다. 또 그 이후 검색은 몇초 걸리지도 않구요. (아마 내부적으로 태그를 사용하겠죠..^^) 이런 리눅스의 장점은 vi에서도 적용 됩니다. vi의 검색 및 치환 기능은 최고라고 해도 별 문제 없을 것입니다.(vol.1참조) ctags는 이런 기능의 확장이 됩니다.
  연관되는 함수의 태그를 생성해두고 사용자가 원할때 그 태그를 이용 원하는 함수로 이동시켜 주는게 ctags의 기능 입니다.

  일단 설치..^^
  sudo apt-get install ctags
  간단하죠..^^ 하지만 이걸로 끝일리는 없습니다. 우리는 프로그램을 짜면서 수많은 시스템 함수들을 사용합니다. ctags는 당연히 그녀석들의 태그도 가지고 있어야 겠죠..^^( 전 별로 시스템 쪽 태그는 사용하지 않습니다. 이 보다는 http://www.cplusplus.com/ 를 더 애용하는 편입니다. ) 웹에서 리눅스 커널 소스를 검색하시면 바로 찾으실수 있으실 거에요. 이 녀석을 원하는 곳에 풀어 놓으시고 폴더 안에서 ctag -R 명령을 내립니다. 이는 ctags가 사용할 tags 파일을 생성하는데 -R 옵션으로 인해서 제귀적(하위 폴더 포함) 생성을 하게 됩니다.
  자 폴더에 tags라는 이름의 파일이 생성 되었죠. 이제 vi가 이 tags파일에 접근하게 해줘야 겠죠..^^ 또 .vimrc파일 입니다.

set=./tags,/home/sbin550/workspace/kernel/linux-2.6.22.4/tags,../tags

  이녀석이 필요한 태그들을 링크하는 거죠..^^ 저같은 경우 시스템 커널의 소스가 제 workspace에 kernel이라는 폴더 안에 있군요. 이렇게 연결 해주셨으면 이제 ctags는 시스템 함수도 쉽게 찾아 줄것입니다.

  이제 vi를 쓰면서 ctags를 애용해 주시면 됩니다.
  사용법은 다음과 같습니다.

  :sts [함수명]
  :tj [함수명]

  입니다. printf함수를 찾고 싶다면 :tj printf라고 치면 되는 거죠. 그럼 유효한 함수 리스트가 디스플레이 되고 우린 그중 원하는 걸 선택하면 됩니다.sts와 tj의 차이는 창분할에 있습니다 tj는 현재 창이 이동하지만 sts는 창이 수평 분할 하게 됩니다. 전 이중 tj를 추천합니다. 왜냐하면 창이 분할 될 경우 창들 간 커서를 이동하는 명령을 이용하서 코딩해야 하는데 전....이게 귀찮아서 안쓰다 보니..ㅡㅡ;; 기억과 절교 했더군요....또 분할 된 화면을 좋아하는 프로그래머는 없지 않을까요....코드는 한번에 봐야 제맛이죠..^.~ 또 tj의 경우 이동 전 커서의 위치를 stack 에 넣어 둔답니다 그래서 언제든 돌아 가고 싶을때 "ctrl + t"만 눌러 주면 됩니다.^^
  이를 통해 우린 함수 사이로 마구 종횡무진 뛰어 다닐수 있습니다. 헌데 먼가 2%부족한 감이 있죠...:tj [함수명]입력하기 귀찮습니다. 그리고 저같은 경우 보통 함수 명도 모든 의미를 담아야한다는 주의 (sbin programming skill vol.2 참조) 이기 때문에 함수명이 상당히 깁니다. 이걸 언제 다 입력하고 있나요....제 .vimrc를 보시면 set tags 아래 추가적인 설정이 되어 있는 걸 보실 수 있으실 것입니다.
if version >= 500
     func! Sts()
         let st = expand("")
         exe "sts ".st
     endfunc
     nmap ,st : call Sts()
 
     func! Tj()
         let st = expand("")
         exe "tj ".st
     endfunc
     nmap ,tj :call Tj()
 endif
   bash로 출력했더니 이상한 값이 좀 변하거나 쓰래기 값이 들어 갔네요..>,.< 첫줄 gt는 if version >= 500 입니다.
   또 endif뒤의 명령은 무시해 주세요. 원본의 위의 스샷에 있죠...^^
 각각 sts와 tj를 쉽게 사용할 수 있도록 만들어 주는 펑션입니다. 이는 "유닉스.리눅스 프로그래밍 필수 유틸리티" 의 저자가 설정한 내역이구요..전...스크립트 언어를 잘 모릅니다...ㅜㅜ;; 곧 배워 둬야 겠다고 생각은 하고 있지만요... 제가 붙여 쓴 이상 설명도 불가능 한건 당연지사..^^ 여러분도 스크립트 언어를 공부하실게 아니시라면 특별히 분석하실 필요는 없겠죠..^^ 하지만 리눅스를 쓰면서 제가 느낀 바로는 언제 제대로 배워야 할듯한 언어 더군요..^^ 암튼 이녀석들을 .vimrc에 입력해 주세요. 이제 함수명을 다 입력하실 이유는 없습니다.
  원하는 함수를 호출 하는 부분에 커서를 위치 시킨후 ",tj"를 입력하세요. 머 매우 미약한 스크립트언어 이지만 제가 분석한 바로는 커서가 위치한 문자열을 기초로
  :tj [문자열]
  명령을 내려주는 거죠..^^ 그렇기 때문에 커서 아래에는 원하는 함수의 이름이 써있어야 합니다...^^
  또 하나 관련된 태그가 없습니다. 라는 메시지가 출력될 경우 "ctrl + shift +n"을 입력하세요..^^ 그럼 같은 폴더로 새로운 터미널이 뜨죠 거기서 입력합니다 ctags -R 당연히 내용은 tags파일을 새로 갱신하는 것입니다. 다시 창을 닫고 명령을 내리면 이동할 거에요...안되면 철자가 틀린거죠..^^

  vol 3.는 너무 짧네요..^^ 원체 ctags자체가 기능은 정말 좋지만 딱히 설명할 건 없는거 같아요..>,.< 이외 에도 ctags에는 만은 명령어(대략 20가지) 가 있지만 전 안쓰니까 설명도 안 합니다. 여러분도 한번 훌어 보시면 저와 같은 결론을 내리시게 될거 에요.
  정말 필요한 정보는 이렇죠
  원하는 함수에 커서를 두고 ,tj 입력시 함수 선언부로 이동
  "ctrl+t"를 누를 경우 이전 함수(,tj로 이동 진전 위치)로 이동

이상 입니다...^^

 그럼 vol.4에서는 cscope를 다루겠습니다.
Posted by sbin
  블로그 유입 량을보면....단연 vi와 coding 이 제일 많지만 간혹 리눅스 설치에 관한 유입이 있더군요....
  그래서 절대~~~~즉흥적으로.....설치에 관해서 적습니다.....
  일단 설치~~우분투 이미지를 다운 받는다....간혹 dvd판이 더 좋은가바..@.@ 라는 생각으로 dvd판 이미지를 다운 받으시는 분 있습니다.( 초창기 저임..ㅡㅡ;;) 하지 마세요...dvd판은 우분투를 오프라인에서 사용할때를 위해 온라인으로 서비스 되는 모든 저장소 까지 같이 이미지 안에 넣어두는 케이스 입니다....그냥 cd판을 다운 받으셔서 굽거나 usb메모리에 넣으세요...그후 부팅을 이동식 디스크로 한뒤 설치에 들어가시면 됩니다..^^ 이정도는 하실수 있으시니까 리눅스를 써보시려는 것이겠죠..^^ 자세한 설명은 생략.....

단...주의점이 있습니다.
1. cd판에는 랭귀지 팩이....없습니다. 그래서 설치가 한글로 된다고 해도....설치 마지막 부분에서는 온라인에서 랭귀지 팩을 다운 받아 설치 합니다. 그 후에 해도 되지만 귀찮으시잖아요??? 그럼 어떻게 하느냐...설치 선택후 시간등을 설정하는 화면에서 과감하게 설치 취소를 해주세요..
  그러면 이동식 디스크로 우분투가 구동한뒤 바탕화면에서 설치 바로가기가 있습니다. 우측 상단에 보면 네트웍 상태를 나타내는 창이 있죠....왠만한 랜카드는 이미 잡혀 있습니다.(최신형 제외....제 메인컴(asus p5q메인보드)은 랜은 못 잡아서 보조로 달았었죠..)그 네트웍이 제대로 잡혀 있는지 확인하세요...유선은 당연히 될 테고 무선은 장치를 선택해야 겠죠...그후 설치하시면 됩니다.

2. 중간에 설정하는 비밀번호를 꼭 기억하세요....시스템을 건드리게 되면 항상 필요 합니다...^^

  우분투의 설치는 정말 쉽습니다. 우분투 뿐 아니라 다른 리눅스도 매우 쉽죠...(페도라까지는 해봤습니다.) 헌데 깔고 나면 에이 이게 머야~~~
라고 하시며 버리게 될 것입니다...우분투 자체만 쓰셔서는요....그럼 이제 부터 추가 설치에 들어 갑니다...^^

1. vim, gcc << 프로그래머만....

sudo apt-get install vim gcc*

  여기선 gcc전부를 설치하게 했지만 필요한 거만 골라서 하셔도 됩니다. 리스트는 gcc후 빈공간없이 "TAB"키를 누르시면 나오게 됩니다.
  우분투는 vi를 제공하지만 30년전에 나온 vi는 우리에겐 안 맞겠죠..^^ vim을 다시 설치 하세요..^^

2. dock

sudo apt-get install avant-window-navigator

  아마 철자가 틀렸을 거에요...전 다쳤지만.... avant만 친후 살포시 "TAB"키를 눌러 주시면 명령어가 자동 완성되게 해주는 기특한 우분투를 보게 되실 겁니다.....

  헌데 전 이녀석을 서브 모니터에서 쓴 답니다.( 이후 듀얼모니터 설정하기에 관해 블로깅 할거고...그때 설명할께요)
메인 모니터에서는 cairo-dock을 사용합니다.
헌데 이 cairo-dock이 기본 제공되는 저장소는 테마도 없고...암튼...절대 쓸만하지 않습니다. cairo-dock과 ubuntu 키워드로 검색하시면 새로운 저장소와 설치에 대해 블로그 해놓으신 분이 있습니다....찾아보세요..^^

  또...이녀석의 경우 문제점이 하나 있습니다. 그건...시작프로그램 동작시....타 프로그램 보다 늦게 떠야 합니다. 이유는 화면 분할 정보등이 안 온상태로 갱신되거든요...그럼...사용하실때 불편하구요. 그렇기 때문에 스크립트 파일을 만드세요...형태는
sleep 15
cairo-dock -o
입니다. 이 스크립트 파일을 시작 프로그램으로 등록하면 만사 ok

3. compiz

  제가 블로깅한 내용을 보시면 가끔 나오는 동영상에서 화면이 획획돌고 창들이 흐믈거리며 마우스로는 줌을 당기고 해제하죠...이건 컴피즈를 사용함으로서 가능해 집니다. 일단 명령어
sudo apt-get install compiz compizconfig-settings-manager emerald fusion-icon
입니다.
  설치후 메뉴에 시스템 도구를 보시면 퓨전 아이콘이 생기고 실행 시키면 오른쪽 위 키보드 설정 옆에 똑같이 생긴 아이콘이 생깁니다. 그 아이콘을 클릭할때 생기는 메뉴를 이용해서 자신의 입맛에 맞게 디스플레이를 설정하시면 됩니다.

4. virtual-box
  이녀석은 버츄얼 머신의 일종으로 우분투 위에서 다른 오에스(주로 윈도)를 띄우게 해주죠.....우리나라의 웹서비스를 이용해야 하는 입장에서는 아무래도 필요한 녀석입니다. 이녀석도....새로운 저장소로 등록하고 하셔야 하니 구글링하시구요..^^ 기본 저장소에 있는 녀석의 경우 이동식 디스크 설정등이 안되는 버전 입니다. 그렇기 때문에 선에서 다른 버전을 받는거구요 선에서 받는 버전의 경우 이메일 주소와 사용자 이름을 입력해 주어야 하고 선에서 하는 거니까 스팸은 없겠죠...^^

  이녀석의 설치 설명은 귀찮은 이유가 첫번째 그리고 두번째로 이미 많은 블로거들이 올려 놓은 정보이기에 그분들에 대한 예우 두번째로 여기서 접습니다. 추가 정보는 구글링..^^

5. conky
  이녀석은 선택사항 입니다. 이건 화면에 백그라운드 같이 실행 되면서 사용자가 원하는 정보를 디스플레이 합니다. 시스템 정보나 시간, 메신저(pidgin(네이트온 플러그인 가능)) 정보등을 보여 주죠...

  전 이녀석의 전문이 아닙니다. 그래서 구글링 쪽을 추천하구요..^^

http://durl.me/23mz << 여기서도 충분한 정보는 얻을수 있으실 겁니다..^^

6. 한글 입력 설정 (나비)
  우분투에서 기본으로 잡혀있는 scim이라는 한글 입력기는 어딘가 모르게 멍청합니다..ㅡㅡ;;
  우리 모두 똑똑한 나비로 바꿔봅시다. 
  터미널 명령을 내려주세요...
  sudo im-switch -c
 그러면 여러가지 입력기 들이 나오는데요...그중 nabi의 번호를 눌러주고...엔터...그후 로그 오프한번 하시면...완료 됩니다...^^
Posted by sbin

  이번 편에선 미리 써 놓았던 데로 키 매핑입니다.
  말이 키 매핑 이지...이건 사용자가 원하는 데로 하는 거니까....이번 편의 부제목 대로 플러그 인쪽에 가깝겠죠...

  앞서 저는 vi의 유용한 키들을 설명하였습니다. 그런 키들은...혼자서 사용되는것 보다 여러키가 복합적인 효과를 주는게 더 많습니다.
  첫번째 설명할 폴딩,폴딩해제 기능이 그런것이라고 볼수 있죠.


  우선 프로젝트를 들어 가야 겠죠...이번엔 복수의 파일을 같이 열도록하겠습니다. 명령은 다음과 같은 형태죠.
  vi *.c src/*.c
  복수의 파일을 여는 이유는 태그리스트와 버퍼익스플로러를 설명하기 위함입니다...
  그럼 설명보다 스샷..ㅋㅋ


  보시면 함수 하나가 이름만 남고 접혀져 있죠...이게 폴딩 기능 입니다....이건 기나긴 코드를 볼때 필요한 기능 이다~~~~라고 설명하지만....제가 보기엔 쓸데 없는 기능 중 하나 입니다. 자신의 프로그램을 짜는 프로그래머( 복사 & 붙여넣기 에 익숙한 사람 제외)라면 자신이 찾는 코드가 대충 몇 번째 줄에 있는지 알수 있습니다. 위에 있는 코드가 자신이 찾던 코드가 아니라고 해서 폴딩 해가며 찾을 이유가 없죠. 또 폴딩하지 않고 코드만 조금 봐도 이녀석이 어떤 기능을 하는지 알구요.....보통 코드를 분석 할때 많이 쓰이 더군요....제 경험상으로는요....그러니 자신이 짠 코드라면 별로 필요 없는 기능 이겠죠. 이녀석 대신 버퍼 익스 플로러도 있으니까요....

  암튼 하는 법은 위의 vimrc에서 볼수 있듯 폴딩시 v]}zf 해제시 zo 이구요 이건 각 명령어들이 요약된것입니다.

  자 다음 둘은 태그 리스트와 버퍼 익스 플로러 입니다. 이녀석들을 키 매핑 해놓고 암만 눌러 바야 vi는 오류 메시지만 출력합니다. 왜냐하면 이 둘은 플러그인 이거든요..^^ 자 할 일이 따로 생겼습니다. 구글링~~~ 키워드는 'vim bufferexplorer' 입니다.

  제가 링크를 붙이지 않는 이유는....여러분이 해 놔야지 다음에 무리없이 하시게 되기 때문이죠..^.~..
자 검색 결과를 이용해서 태그리스트 를 받습니다. 압축을 풀면 두개의 폴더가 나오는 것을 보시게 될 것입니다.(파일만 달랑 나오면 다시 받는걸 추천해 드립니다.)

  그럼 이제 터미널을 여시고 명령
  sudo nautilus
  무슨 명령인지 아시죠..^_____^..터미널로 그냥 옮기실 분은...any way~~~
  열린 노틸러스의 폴더는 /usr/share/vim/vim[version]/으로 이동 시키시구요. 그럼 압축 풀어서 나온 폴더들과 동일 폴더가 있는 vim 폴더에 도착하실 겁니다. 하지만 안의 내용물은 당연히 다르겠죠 taglist쪽의 내용물은 맞는 폴더에 카피해 넣습니다. 이과정에 루트 개정이 필요하기에 sudo 명령을 내려달라구 요청한거구요..^^

  즉 지금까지의 과정은 bufferexplorer플러그 인을 받아서 /usr/share/vim/vim[version]/ 폴더에 덮어 씌운것입니다.

  이 녀석의 기능은 열려 있는 파일간의 이동 입니다.
  매번 파일 버퍼사이를 오가는 것보다 버퍼 익스플로러를 이용하는 편이 당연히 편리합니다.
  추가로 제일 위의 .vimrc스샷에서 "=====파일 버퍼 간 이동======" 관련 매핑은....전 전혀 사용하지 않구요. 이녀석도 열려있는 파일간의 이동 기능 입니다. 하지만 어떤 파일이 어느 순서로 열려있는지 모르면....황이죠...하지만 버퍼 익스플로러는 파일의 이름을 보여주고 선택하게 하기때문에 편리하답니다.

  다 끝내 셨으면 .vimrc에서 키매핑을 하시구요.(전 'f4'로 되어 있습니다.)
  다수의 파일을 한 vi에서 여신후 :BufExplorer를 입력하시거나 매핑한 키(저같은 경우 'f4')를 누르세요.
  그럼 열려있는 파일 리스트가 나오게 됩니다. 그 파일들 중 편집을 원하는 파일을 화살표나 jk키를 이용해서 선택해주면 그파일로 편집창이 이동한 것을 보실수 있으실 것입니다. 써 보시면 정말 유용한 플러그 인이라는 것을 알게 되실 것입니다.


자 다음은 태그리스트 입니다. 설정은 똑같이 vim Taglist로 하셔서 설치 하시구요.
이녀석은 창을 분할 하면서 열려있는 파일과 파일이 가지는 매크로, 전역 변수, 함수의 리스트를 보여 주고 원하는 곳에서 엔터 입력시 해당 위치로 이동 시켜주는 녀석입니다. 말이 필요 없겠네요...동영상을 통해 어떤 녀석인지 확인해 보세요..^^


  보시면 f5키를 눌렀을 때(매핑된 키) 창이 좌우로 분할 되며 좌측에 커서가 위치합니다. 그후 태그리스트와 같은 방법으로 원하는 함수로 이동한뒤 선택해 주면 커서가 오른쪽 창으로 넘어 오며 우측 창에선 선택한 함수가 있는 곳으로 이동하게 됩니다. 다시 매핑된 키를 누르면 사라지구요..^^

  그다음은 자동완성 기능 입니다.....이 기능은 원래 vol.1에 들어 가야 했는데 제가 깜박했더군요...절취선 아래 적으려다가 원악 중요한 내용이라서 이렇게 vol.2의 마지막을 장식하게 되었습니다.
  자동 완성 기능은 프로그래머 에게 있어서 매우 중요한 기능입니다. 그 중요성은 앞서 "sbin programming skill vol.2"에서 다룬 적이 있죠....그렇기때문에 당연히 vi 도 이 자동완성 기능을 제공 합니다. vi의 경우 "ctrl + p" 와 "ctrl +n"이 자동완성 키가 되겠습니다. 전 그냥 "ctrl + p"만 외우고 있는데 책을 보니 n도 있더군요.
  비쥬얼 스튜디오의 자동완성 기능을 써보신 분은 정말 짜증나는 점을 하나 발견하셨을 것입니다. 이노무 자동완성은 원하는 것을 찾을려면 한참 스크롤을 내려야 합니다...ㅡㅡ;; 이는 정렬방식에 큰 문제가 있다는 의미 이지요.
vi의 자동완성은 코드를 분석합니다. 자신이 연결된 모든 파일을 검사(시스템 포함) 하고 그 순서는 코딩중인 위치로 부터 위로 향합니다.  정렬도 마찬가지로 커서 에서 위쪽으로 제일 가까운 해당 값들이 정렬되구요.."n"의 경우 아래로 검색하여 아래쪽의 해당값이 먼저 올라 오구요. 이건 다른 정렬보다 훨신 편리 합니다. 변수는 대부분이 지역인 경우가 많고 지역변수는 커서 근처에 선언, 사용되었기 때문에 이런 정렬방식은 원하는 값을 바로 찾는다는 의미 이지요....이도 동영상을 준비 했습니다....헌데 제가 마우스 줌을 너무 당겨서 전체적으로 찍히진 않았더군요..^^ 죄송합니다.....그래도 어떻게 구현되는지는 이해 하실수 있으실거에요..^^

 그럼 vol3는 ctags를 다루도록 하겠습니다...^^
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
오늘도 나오는 절취선..^____^ 확인차 재생 해본 결과....vi를 모르시는 초보자 분들은 잘못 이해 하실거 같아서요..^^ 리눅스의 터미널은 마우스 명령따위 깡그리 무시합니다. 당연히 vi에서의 마우스 명령도 무시되죠. 제가 마우스를 사용한것은 보시는 분의 시선이 보셔야 할곳에 있게 하기 위함이나 화면의 줌을 당기기 위함입니다. 절대 마우스로 함수등을 선택하는 것은 불가능 합니다. 오해하지 말아주세요..^^
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0731 틀린 내역 수정 되었습니다....지적해주신 a2님께 깊은 감사를 그리고 그전에 보신 분들께 석고대죄를..>,.<
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dr.Jung님께서 주신 조언에 의하면 vi에 마우스 명령을 처리할수 있게 해주는 명령어가 있더군요..^^
위에 써놓은 마우스에 관한 내역은 틀렸습니다.
함수 선택 등의 작업을 할수 있겠네요.
개인적인 의견으로 추천하지 않습니다. 마우스를 쓰지 않고 키보드로 줄수있는 여러 vi편집 명령( vol.1참조)을 사용했을때 이점은 매우 많으니까요..^^
Posted by sbin
누군가 요청했던 vi로 코딩하기 시리즈를 블로깅하려고 합니다..>,.<

이 블로그에서는 어떤 종류가 있는지 전부 나열하고 전부 설명하는 진부한 짓 안합니다...ㅡㅡ;;
그런건 위키 백과 뒤지세요......링크 첨부는 생략......왜냐하면 그정도 찾는건 인터넷 갓 시작한 사람도 할 줄 알고 모르는 사람이라면 배워야 하니까요..^____^

여기선 오로지 제가 vi로 코딩하면서 필요했던 것들만 쓰겠습니다. 그러니 실무에 적합할 것이고 내용은 부족할 것입니다. 자신이 제가 소개한 것들을 충분히 쓴다고 생각 된다면 한번쯤 위키백과를 검색하시거나 제가 추천해둔 리눅스 프로그래밍 필수 유틸리티 책을 보세요~~~

그럼 시작 합니다..^.~

우선 설치~~~~ 이게 왜 필요하냐는 아우성이 초큼 들리는데..... 필요 합니다..ㅡㅡ;; 왜냐면 제가 첨에 이거 때문에 뻘짓했거든요.....

일단 리눅스의 종류는 여러가지가 있죠....그중 어떤 리눅스(페도라) 는 vim(vi의 확장 이하 vi) 최신 버전을 기본 설치 하지만 최소화된 채로 말그대로 클라우드 컴퓨팅에 가까운 배포(우분투)를 하는 리눅스는 옛날 옛적 택스트 시절의 vi 를 설치합니다. 그 시절의 향수를 느끼고 싶은게 아니라면.....터미널에 다음 명령을 내려주세요~~~~
sudo apt-get install vim gcc
리눅서라면 이정도는 아시죠...gcc는 특별한 사유가 없는 이상 최신판을 사용해 주시구요~~~

일단 제 .vimrc의 설정 입니다. 기본 틀은 추천했던 필수 유틸리티에서 제공된 녀석과 같습니다. 그걸 제가 아주 조금 손본 상태죠.
앗....ctags까지 넣을려다 보니 제가 입력한건....안나왔네요..ㅡㅡ;; 머 간단한거고 이번장에서는 그것만 설명하려하니 글로 쓰겠습니다.

set hlsearch  << 검색된 글귀에 음영을 씌워 글귀의 위치를 알려줍니다. 저같이 검색을 많이 쓰는 사람은 필수 입니다.
set nu  << 스샷의 왼쪽에 숫자들 보이시죠?? 라인 넘버 입니다. 이녀석들을 나오게 해준답니다.
syn on << 글자에 맞는 색상을 입혀줍니다. 프로그래머라면 당연히 입력해야죠...^^

set ts=8
set sw=4
set sts=4 요녀석들은 탭에 관한 설정을 해줍니다. 설정한지 오래 된 후 안건들였 더니 정확한 내용은 모르겠어요.....궁금한 분은 구글링하시구요...^^ 이 설정 후 탭은 4칸으로 정의 됩니다. 보통 프로그램은 8칸을 쓰는데 (비쥬얼 스튜디오) 프로그래머 라면 4칸이 더 편하실 거에요...좌유로 길게 늘여진 프로그램.....썩 보기 좋진 않찮아요. 그래서 전 비쥬얼 스튜디오를 쓸 때에도 4칸으로 줄여서 씁니다.

그 다음 기본 변수는 모르겠습니다.....저도 기본 뼈대는 카피라서..ㅎㅎㅎ 그 뒤의 내용은 이후 버전에서 하거나 스킵하겠습니다. 제가 스킵한 부분으면....저도 잘 안쓰는 거니까....필요하면 공부하세요..>,.<

좋은 블로거는 친절해야해 근데 난 친절하지 안찮아??? 난 아마 안델거야~~좋은 블로거...ㅠ,.ㅠ

그럼 다음 장에서 할 내용은 제끼고..ㅡㅡ;;

기초 vi로 돌아 옵니다. ㅎㅎㅎ

vi는 3가지 명령모드가 있죠... 하나는 ex모드 였나...그거고 하나는 편집, 하나는 수정(<-아닐수도 있음 머...그게 중요하진 않찮아요?) 입니다.
편집모드는 말그대로 편집하는 것입니다. vi는 켜지면 ex모드 입니다. ex모드에서 상황에 따라 편집모드로 가는 방법은 여러가지가 있습니다. 일단 i 자신의 위치에서 삽입모드 설정, s 커서 위치 지우고 삽입모드 설정 a 커서 다음 위치 삽입 o 다음줄 삽입....그 외에도 수정모드로 들어가는 여러가지가 있는데 생각 안나네요....아시는 분은 댓글 플리즈..................이지만.....귀찮으시죠..초보자인데....외우기....간단하게 하나만 하죠...키보드에 insert키를 누르세요....삽입 모드 입니다. 한번 더 누르세요 수정모드입니다....참~~~쉽죠잉~~~
하지만  위에 제가 언급한 아이들이 있었다는 것 잊지 말아 주세요....오른손이 기본 자판 배열에서 안떠난다는게 vi의 최대 장점중 하나 입니다. 언젠가는 i,s,a,o를 누르는 것에 익숙해 지셔야 합니다....머 그전에 마우스로 안간다는 것만으로도 장족의 발전이지만요..^^

그리고 편집모드에서 ex모드나 수정모드로 가실때는 esc키를 누르시면 됩니다.
왼쪽 ex 가운데 편집 오른쪽 수정
참....위에 삽입모드와 수정 모드라고 했는데....이건 편집모드에서의 수정모드 이지 ex,편집,수정 할때의 모드는 아닙니다....편집시 수정모드는 그냥 한글을 쓰실때 수정모드와 같은 거에요.

자 편집 모드 설명은 접겠습니다. 더 할게 없거든요....창을 텍스트 창으로 만들었으니 열심히 글만 쓰시면 데요....그럼 ex모드와  수정 모드인데 ex모드 부터하고 정~~~말~~~중요한 수정 모드로 가겠습니다.
ex모드에서는 세가지만 기억하세요 e,w,q 추가로 ! ( 당연히 이외에도 많은 명령어가 있으니 필요 하신 분은 검색하세요~~)
e는 열기
w는 저장
q는 종료
!는 강제 입니다.
e text.txt
는 text.txt를 열거나 만듭니다.
w는 저장이고 이후에 전달자가 있으면 그이름으로 저장합니다.
q는 종료 이고 !는 강제 입니다. vi에서 파일이 수정 되었으면 w를 입력하지 않고 q를 누를 경우 저장하지 않았다고 종료 시키지 않습니다. 헌데...편집에 실수해서 저장하기 싫다면 q!를 누를경우 수정된 내용은 갱신되지 않고 강제 종료 되는 거죠.....

그럼~~~~정말 정말 중요한 수정 모드 입니다. 제가 이걸 설명하면서 ex모드의 명령어를 수정 모드라고 소개 하기도 할 것 입니다. 하지만.....그 기준은 누가 만든 건가요....전 제가 만든 기준을 사용 합니다. ex모드의 명령이지만 수정이라는 범주에서 많이 사용 되니까 전 수정 모드로 분류하는 것입니다. 여기에 대해서는 딴지 걸지 말아 주세요~~~

수정은 말그대로 문서를 수정하는 것 입니다. 편집 모드의 수정과 무엇이 다르냐구요???  타 편집기에서 오른손의 위치가 다릅니다. 다 른 편집기에서 사용자의 손이 마우스에 가있다면 이건 vi에선 수정 모드 입니다. 수정 모드에선 화살표나 hjkl키를 이용해서 커서의 이동이 가능합니다. 역시 초보자는 화살표가 편하지만( 저도 아직 화살표를 더 많이 쓴답니다.) hjkl키를 사용 함으로서 오른손이 떠나지 않게 노력해 주세요..^^
이 모드에선 중요한게 너무 많습니다.
일단 'v'키 입니다. 이 키는 마우스를 드레그하는 효과를 부여합니다. 일정범위를 택하는 거죠...
'v'를 누른 뒤 커서를 옮기면 커서가 있던 자리부터 옮겨진 자리까지 선택됩니다. 이후 삭제하시거나 카피하실수 있게 되는 거죠.
응용으로 'ctrl+v'와 'shift+v'가 있습니다. 전자는 블록 선택(줄단위가 아니라 커서의 원래 위치와 마지막 위치가 그리는 직사각형 영역 선택) 이구요 후자는 줄 단위 선택입니다.
왼쪽 보통 선택'v' 가운데 라인선택 'shift+v' 오른쪽 블록선택 'ctrl+v'
다음은 'd'입니다. 이녀석은 삭제 기능을 합니다. 글자 몇개정도는 'v'키를 이용해 선택한뒤 'd'를 눌러 삭제 하시구요.....
정말 중요한건 지금 부터죠...vi의 강점이 나온답니다.

'd'키를 두번 누르세요....커서가 있던 줄이 사라집니다. 'd''1''0''d'를 누르세요 'd'와 'd'사이에 10이라는 숫자가 들어갔죠 커서 위치 포함 아래로 10줄이 삭제 됩니다. 와우~~~ 우린 더이상 문서의 일정영역을 삭제하기위해 마우스로 드레그 한뒤 delete키를 누르지 않아도 된답니다.

다음은 'y'입니다. 이녀석은 카피 입니다. 사용자가 지정한 영역을 버퍼에 넣습니다. 사용법은 'd'와 같습니다. 'y'를 두번 눌러 한줄을 카피 하시던지 'y'사이에 숫자를 넣어 복수 행을 카피하세요~~

버퍼에 카피했으니 이번엔 문서에 붙이셔야 겠죠 'p'를 누르세요 커서 바로 다음에 버퍼에 저장한 내역이 붙습니다. 참~~쉽죠잉~~

이제 'u'입니다. u는 취소 명령입니다. 'd'를 잘 못 눌러서 원치 않는 행이 사라졌다면 u를 누르세요 복구해 줄것입니다. 또한 이 명령의 결과는 vi의 버퍼에 차곡차곡 쌓입니다......근데 이게 또 그렇게 심하게 필요하진 않아요.....필요한 사람은 검색..^^

장시간의 레이스~~~힘드시죠~~~ 마지막은 당연히 정말 중요한 녀석입니다...검색과 치환이죠....약간의 논설을 할테니 필요 없으시면 논설은 스킵하고 바로 검색과 치환 설명을 읽으세요..ㅎㅎ

검색과 치환.....이건 제가 리눅스를 쓰면서 리눅스의 최대 장점이라고 생각합니다. 윈도우의 경우 검색명령은 쓰지도 않고 쓰게 된다면 명령후 퇴근합니다.....다음날 출근 뒤 되어 있는지는 의문이죠....하지만 리눅스의 경우....명령을 내린뒤....커피 한잔 타오면 검색은 종료 되어 있습니다. 또 처음 검색때 태그가 생성 되어 있기 때문에 이후 검색은 명령과 동시에 결과를 출력하죠....매우 빠른 검색 이게 리눅스의 엄청난 장점이죠....이건 vi에서도 당연히 적용 됩니다.

그럼 이제 실무 vi의 검색명령은 /입니다. 수정중에 /를 입력하고 뒤에 원하는 문장을 넣으면 되죠....헌데 찾기만 하는 것으론 부족하시죠...치환 명령도 있습니다. 기본틀은 다음과 같습니다.

:[범위]s/[검색문구]/[치환문구]/[옵션]

첫번째 범위는 % 이거나 라인 넘버 입니다. 이것때문에 전 vi의 라인 넘버 표시를 켜놓는 것이랍니다.
10,13s라고 하면 10번째 줄부터 13번째 줄까지가 범위가 되는 것입니다.
%의 경우 문서 전체를 검색하는 것이구요.

검색문구와 치환문구는 아시죠..^^ 단 이 둘은 스크립트 인식됩니다. 그래서 /와 같은 특수 문자는 \를 붙여줘야 한다는 거 잊지 마세요....귀찮다고 생각 될지 모르지만 스크립트 인식은 이 귀찮음보다 훨씬 많은 이득을 제공 합니다. 제가 쓰는 스크립트만 적죠

$ 줄의 끝 부분을 지정합니다.
^ 줄의 처음 부분을 지정합니다.
& 치환 문구 위치에 넣을경우 검색문구가 그대로 적용 됩니다.

이 실예는 다음과 같습니다.
:10,15s/^/\/\/
이 명령의 결과는 10~15줄을  주석처리 합니다.
반대로
:10.100s/^\/\//^
는 10~100줄까지 중 줄단위 주석으로 잡혀있는 모든 줄을 주석해제합니다.
이런 아이들은 써보시면 금방...익숙해지고 좋아질 것입니다.

마지막 옵션 부분에서 제가 쓰는 건 오직 둘 'g'와 'c' 입니다.

'g'는 줄에서 다수를 선택합니다.(g가 없을 경우 그 줄에 검색결과가...2 이상이라고 해도 첫번째 것만 치환합니다.)
'c'는 치환전에 사용자에게 치환 유무를 물어 봅니다.

당연히 이 이상은....필요하시면 공부하세요

만약 치환에 실수를 하셨다면 그냥 'u'를 누르세요 치환 전의 상황으로 되돌려주는 착한 vi를 보실수 있으십니다. 그리고 나서 :입력후 위쪽 화살표 한번 눌러주시면 이전에 입력한 치환 문이 나올테니 잘못 된 것만 수정해서 다시 명령 내리시면 뎁니다...^^

머..제가 vi를 쓰면서...쓰는 것들만 나열했습니다. 이후에 꼭 필요하다고 생각되는게 있다면...절취선과 함께 추가 될것이구요....
허나 아마 없을거에요....그럼...다음에는 위 스샷에서 키 매핑에 있는 아이들에 대한 설명을 하겠습니다...^^
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vimrc를 요청하시는 분은 보내 드립니다...많으면 첨부하구요..^^
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
글 올리고...일하려다...저도 모르게 여기 안써 놓은 기능을 쓰더군요...ㅡㅡ;; 정말 중요한 기능인데...
ex,수정 모드에서 :후 숫자를 쳐보세요...해당 라인으로 이동합니다. :1000이라고 치시면 파일의 1000번째 줄로 커서가 이동하는 거죠..^^
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
별로 신경 안쓰고 쓴 글인데 너무 많이 읽어 주셔서...ㅡㅡ;; 내일까지 스샷첨부해서...좀...이쁜 글로 만들어 놓겠습니다..>,.<
관심에 감사드립니다...^^
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
또 추가하는 군요..^^ 수정모드에서의 명령입니다. 'g''g' (g키 연속입력)수정모드에서 이 키는 파일의 제일 첫줄로 이동합니다. 또 대문자 'G'는 글의 제일 끝줄로 이동하죠....이 명령은 여러가지로 사용 됩니다. 중간에 'y'키나 'd'키등을 넣을 수 있거든요 'y'키를 삽입 할 경우 'g''g''y''G'가 되겠죠...이러면 파일 전체가 카피 됩니다. 또 'g''g''d''G'의 경우 파일 전체가 삭제 되구요. 또 추가 키 '='이녀석은 수정 모드에서 자동 들여쓰기 기능을 합니다. 'v'키로 영역 선택후 '='을 누르면 그 영역에 자동 들여쓰기가 적용 되는 거죠 마찬가지로 'g''g''=''G'를 이용 글 전체에 자동 들여쓰기를 적용 시킬수도 있구요. 이 기능은 매우 중요합니다. 왜냐하면 디버그를 돕거든요 프로그램 짜다 보면 괄호가 덜 닫혀있다는 메시지를 많이 보실 것입니다. 이경우 'g''g''=''G'를 입력하면 들여쓰기 기능때문에 닫히지 않은 괄호를 쉽게 찾으실수 있죠..^^
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0722 스샷 첨부 하였습니다...ㅡㅡ;; 많이 늦었죠...약속한거 보다....스샷보다 사용법을 동영상으로 올리는게 나을 것 같아...새벽에 찍어 놨는데....안올라 가네요..ㅡㅡ;; 내일 서브 PC나 노트북으로 다시 해봐야 겠어요..^^

Posted by sbin

최근에 달린 댓글

최근에 받은 트랙백

글 보관함