Reference : http://www.commandlinefu.com


위의 site 에서 쓸만한 녀석들만 모아서~


1. clear terminal screen

$ <ctrl> l

  - 그냥 ctrl + l (영문자 L 의 소문자)


2. 많이 쓴 command 를 출력해주는 script

$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head


3. 마지막 command 입력한 것을 script로 만들어줌.

 echo "!!" > foo.sh


4. 빠른 파일 이름 변환

$ mv filename.{old,new}


5. googlecl(google command line 사용법)

  - google 이 제공하는 service(docs, contact, calendar 등) 을 command line 에서 사용가능 하도록 지원.

  - 설치해야하는 package

    a. googlecl : http://code.google.com/p/googlecl/downloads/list 에서 최신버전

    b. gdata : https://code.google.com/p/gdata-python-client/downloads/list 에서 최신버전


위의 page에 접속해서 각각의 설치 방법을 활용


둘다 설치가 완료되었다면, google docs 를 vim 으로 editing 할 수 있는 방법이 있다. 다른 service 를 command 로 이용하는 방법은 http://code.google.com/p/googlecl/wiki/Manual 에 참조


$ google docs edit --title "Kernel Study" --editor vim

 최조 인증 확인을 하는데, 실행하면 login 화면이 browser를 통해 뜨고 로그인하면 인증번호를 제공함. 제공된 인증번호를 넣고 enter 하면 vim 에 docs의 내용과 함께 수정 가능하게 됨. 수정 이 후, 저장하고 종료하면 docs.google.com 에 특정 문서가 반영이 됨. 

'Development Tip' 카테고리의 다른 글

PuTTY 설정 값 공유하는 방법  (0) 2013.10.07
Git with eclipse  (0) 2013.04.04
Tips for VIM  (0) 2013.02.21
Use gerrit with git push command.  (0) 2013.02.20
Autoloading Cscope Database(cscope.out file)  (0) 2013.02.06

1. 한 line 의  character 가 80 자 이상인 것만 검색

  /\%>80v.\+


2. 한 line의 character 가 25 자 이하인 것만 검색

  /^.\{,25}$/

'Development Tip' 카테고리의 다른 글

Git with eclipse  (0) 2013.04.04
Tips on Linux  (0) 2013.03.11
Use gerrit with git push command.  (0) 2013.02.20
Autoloading Cscope Database(cscope.out file)  (0) 2013.02.06
Google Site Tool : File repository  (0) 2012.10.29

Repo 로 이루어진 project 중 하나의 git project 만 clone 을 받아(새로 생성 및 전체 project 가 필요없는 경우) 소스를 수정하고 repository 로 push 할 때, gerrit 을 이용하도록 하는 command 를 소개(?) 한다.


Git Clone

$ git clone ssh://username@hostname:29418/Repository_name.git


Modifiy

$ vi source.cpp


Git push

$ git push ssh://username@hostname:29418/projectname.git HEAD:refs/for/branchname


위와 같이 하면 gerrit review 에 commit 이 "open" 상태로 보이게 된다. 


일반적으로 git push <remote> <branch> 하면 gerrit review 없이 바로 submit 되기 때문에 review 를 받지 않게 되는데 위와 같이 진행하면 repo upload 하는 효과를 볼 수 있다.


git push 할 때마다 저렇게 길게 입력 하는 것보다 .git/config 를 수정하여 간편하게 할 수 있다.


$ cd <git repository>

$ vi .git/config

에 아래와 같이 추가

[remote "for-review"]

fetch = +refs/heads/*;refs/remotes/origin/*

url = ssh://hostname:29418/repository_name.git

push = HEAD:/refs/for/branch_name


fetch = 에 origin은 remote name 임(git branch -a 로 확인)


위와 같이 수정하고 push 할 때는

$ git push for-review

하면 됨.


reference : https://git.eclipse.org/r/Documentation/user-upload.html


'Development Tip' 카테고리의 다른 글

Tips on Linux  (0) 2013.03.11
Tips for VIM  (0) 2013.02.21
Autoloading Cscope Database(cscope.out file)  (0) 2013.02.06
Google Site Tool : File repository  (0) 2012.10.29
Ubuntu Console mode booting  (1) 2012.08.31

Origin url : http://vim.wikia.com/wiki/Autoloading_Cscope_Database


$ cscope -i <cscope files> 한 output database file 을 ~/.vimrc 에서

if filereadable("cscope.out") cs add cscope.out

endif


방식으로 추가하면 cscope.out 이 있는 directory 에서 vi /path/to/source/file 의 형식으로 open 해야 database file이 loading 된다.


대형 프로젝트에서 directory를 이동하며 source를 보는데, source trace 를 위해 project 최상위 directory(cscope.out file 이 위치하는)로 이동하는 번거러움을 없애기 위해 ~/.vimrc 에 script 를 찾아냈다.


~/.vimrc 에 위의 내용을 복사해서 붙이면 어느 path 에서나 cscope.out 을 찾아 loading 한다.


'Development Tip' 카테고리의 다른 글

Tips for VIM  (0) 2013.02.21
Use gerrit with git push command.  (0) 2013.02.20
Google Site Tool : File repository  (0) 2012.10.29
Ubuntu Console mode booting  (1) 2012.08.31
switch remote/branch by repo  (0) 2012.08.30

예전부터 memory 단편화 문제는 여기서(LWN) 많이 다루어져왔다. 요약하면, system 이 수행되며 memory page 들은 흩어지는 경향이 있으며 이로 인해 물리적으로 연속적인 page 들을 할당하기가 어려워진다. 가능한 한 higher-order(multi-page)을 위한 요구를 피하기 위한 많은 작업들이 kernel 에 있었기에 대부분의 kernel 기능들은 page 단편화에 의해 문제가 발생하지 않았다. 하지만 아직까지 high-order page 할당이 요구되고 있으며, 이와 같은 code의 할당 요청은 단편화된 memory에 의해 실패하는 것이다. 


어떤 경우에는 이 같은 노력이 악화될 수도 있었다. 요즘 processor 는 4K page 로 제한을 두지 않고 더 큰 page(huge page) 를 process 의 address space에서 운영이 가능하다. huge page 사용을 통해 실제 성능향상을 얻을 수 있기 때문이다.(큰 page 로 운영되기 때문에 page fault 가 줄고-한번 fault 날때 크게 가져오기 때문-, 시스템 전체에 page 개수 운영이 많지 않아 TLB 를 통한 address변환이 빠르게 되어 성능향상이 있다.

참조:https://lwn.net/Articles/423584/) Huge page 를 사용할 경우 시스템에서는 충분히 크고 잘 정렬된 메모리 영역을 찾을 수 있어야 한다. 어느 시대에 수행되던 시스템이든 이런 영역을 찾는 것에 대해 고민이 많았을 것이다. 


몇년동안 커널 개발자들은 이런 메모리 단편화를 완화하기 위해 많은 시도를 해왔다. 그 결과로 ZONE_MOVABLE, lumpy reclaim 같은 기술이 나왔다. 


Mel Gorman 아저씨(?)가 memory comaction을 commit 했는데, 그 내용을 살펴 본다.

간략하게 시스템 메모리의 page 가 16개라고 가정하고 시작한다. 


 0

10

 11 12  13  14  15 

시스템 운영 후 위와 같이 메모리를 사용하고 있다면(빨간색 블럭이 현재 사용되고 있는 메모리다) 실제 buddy 입장에서 보면 연속적인 2개의 page 조차도 할당 할 수 없다. buddy는 항상 블럭을 쌍으로 관리하고 있으며 앞에서 부터 0과 1을 상위 order page 로 보기 때문에 쌍을 맞춰 보면, 7번과 8번을 연속적으로 할당 해줄 수 있는 것처럼 보이지만 buddy 입장에서는 7번의 쌍은 6번이고 8번의 쌍은 9번 page 가 되므로 연속적으로 두개의 page를 할당 할 수 없는 상태이다. 


이런 상태에서 2개의 page 요청이 들어왔다면, memory compaction을 시도하게 된다. 알고리즘을 살펴보자


먼저 0(맨 하위)에서 부터 scan을 시작한다. scan하여 옮길수 있는 page를 찾는다.


Movable pages ----->  1  -----> 3, 4 ----> 5


10  11  12  13  14  15 

반면에 15(상위)에서 역으로 free 상태의 page(migration 를 수행할) 들을 검색한다


Movable pages ----->  1  -----> 3, 4 ----> 5


10 11 12 13 14 

15 


                                                                                                                           7, 8 <----- 11, 12 <----- 14 <-- free pages


이렇게 하여 가운데 쯤에서 두 가지의 scan은 맞나게 되면 page migration을 시도한다. 사용되는 page 들은 뒷쪽으로 free한 page들은 앞쪽으로 모은다. 결과적으로,


10 11 12 13 14 

15 


위의 그림과 같이 8개의 연속적인 page 를 얻을 수 있다. 이로 인해 high order 의 page를 필요하다면 얻을 수 있게 된다. 


위의 그림은 간략하게 memory compaction을 표현한 것이다. 실제 시스템에서는 메모리도 크고 compaction이 하는 일이 많다. 그로 인해 큰 chunk의 연속적인 메모리를 확보할 수 있게 된다.


하지만 모든 page 들이 옮길 수 있는 것은 아니다!!! 퉤! 거의 모든 user space page 들은 옮길 수 있고, 옮겨진 page 로 인해 page table entry 들도 같이 수정이 필요하다. 그리고 kernel 이 direct 로 접근하는 메모리 영역의 page들은 옮길 수 없다. 하지만 이로 인해 kernel 이 접근하고 있는 non-movable page 들 때문에 연속적인 memory segment 를 가지지 못하는 경우가 발생하니, kernel 에서도 movable, non-movable page 들을 가질 수 있도록 하고 있다. 하지만 여기에도 문제가 있다고는 하는데 자세한 내용이 없어서 pass.


compaction은 언제 수행되는지 확인하면, 

   1. /proc/sys/vm/compact_node 에 node number 를 write 하면 compaction 이 수행된다. (NUMA system 이 아니라면 0인가?)

    2. system 이 high-order page 를 요청했는데 실패 한다면 수행된다. 실제 할당할 수 있는 memory 는 있지만 연속적인 공간의 부재로 memory allocation 이 실패하는 경우가 될 것이다. 


이런 경우가 아니라면 memory page migration은 시스템에게 많은 비용을 지불 하는 것으므로 compaction은 idle 상태로 유지한다. 사실 compaction을 피할 수 있다면 더 좋다고 한다. 

'Linux Kernel Study > Linux Weekly News - 번역' 카테고리의 다른 글

Virtually mapped kernel stacks  (0) 2016.07.06
Extended system call error reporting  (0) 2015.11.27
[LWN] A taste of Rust  (0) 2013.04.27

다른 사람에게 googling 을 대신 해주는 link 를 만들어 준다. 


http://lmgtfy.com/


사이트에 진입해서 

검색어를 입력하고 Google Search 를 누르면


이렇게 나오는데 아래 파란색 버튼 중 "shorten" 을 click 하면 주소를 짧게 만들어 준다. 그 link 를 직접 browser 에 넣어보면 어떻게 해주는지 알수 있다.



'Etc.' 카테고리의 다른 글

Youtube streaming 을 PC 로 download  (0) 2012.08.09
Ubuntu Video 가 푸르게(blue)로 나오는 현상 제거  (0) 2012.08.09
Ubuntu 12.04 Upgrade 이후 client error  (0) 2012.05.01
[영화] I Am Number Four  (0) 2011.02.28
Christmas 분위기???  (0) 2010.12.22

1. Google 에 가입하기

  - www.google.com 에서 "Google 가입하기" 하면 최상위 검색 결과를 보면 된다.

  - 검색하기 귀찮으신 분들을 위해 검색까지 해주겠슴

    http://bit.ly/TPoXrn <== "Google 가입하기" 검색


2. Google Site 시작 page

  - http://www.google.com/sites/help/intl/ko/overview.html


  - 아래 시작하기를 누르면 Site 를 만들수 있는 menu가 나온다.


3. Site 만들기.


4. Site 설정



- 템플릿을 Classroom site 로 설정했다.


5. File repository page 만들기



- 페이지 설정 



  - 완성



 위에서 처럼 파일 추가가 가능한 page 가 생성된다. 


문제는 이 page 가 어디에 들어갔는지 알수가 없다는 것이다.. 음.. 페이지 설정 시 "Home 아래에 페이지 배치" 를 통해 menu 에서 볼수 있도록 하는 것이 좋겠다. 


나는 추가관리 ==> 사이트 관리 ==> 최근 사이트 활동 의 항목을 통해 다시 찾음. 


오래전에 한번 써보고 이런 기능이 있는지 모르고 그만 뒀다가 file repository로 사용하기 위해 다시 찾아서 사용법이 기억이 나질 않는다. 



'Development Tip' 카테고리의 다른 글

Use gerrit with git push command.  (0) 2013.02.20
Autoloading Cscope Database(cscope.out file)  (0) 2013.02.06
Ubuntu Console mode booting  (1) 2012.08.31
switch remote/branch by repo  (0) 2012.08.30
redmine tip  (0) 2012.03.26

Ubuntu Console Mode booting


Vmware 에 ubuntu 설치해서 build 나 code 작성 등 GUI 가 굳이 필요없는 환경이 필요할 경우가 있다.

현재 사용하고 있는 랩탑이 64bit architecture 인데 32bit Ubuntu 를 쓰고 있어서(설치할 당시에 별로 신경안쓰고 설치를 했더니...), chrome os build 를 위한  환경이 필요했다.

참고로 chrome os 는 64bit architecture 에서만 빌드 지원되면 32bit 에서 빌드하려면 시간과 노력이 든다.(시도했지만 실패했다 ^^) 


architecture 가 64bit 이지만 32bit OS 가 설치 되어 있더라도 vmware로 64bit OS가 설치 가능하다.


그래서 vmware 에 64bit Ubuntu 를 설치하고 light 하게 운영하기 위해 GUI 를 제거 할 수 있도록 환경을 구성하고 자 찾아본것이다. 


1. update 

  $ sudo apt-get update 


2. install lightdm, ubuntu 12.04 에는 이미 설치가 되어 있음.

  $ sudo apt-get install lightdm 



3. /etc/default/grub 수정

  $ sudo vi /etc/default/grub

a. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" line을

       GRUB_CMDLINE_LINUX_DEFAULT="text" 로 수정

b. GRUB_HIDDEN_TIMEOUT=0 주석처리

4. grub update

$ sudo update-grub


5. lightdm disable : 사실 이작업을 하는 이유를 모르겠음. 설치했다가 지우는 작업이므로.

$ sudo update-rc.d -f lightdm remove


6. restart ubuntu

console mode 로 진입함


만약, 그 상태에서 gui 로 진입하고 싶다면

$ startx


console mode 로 부팅 후에, ssh 만 설치해서 사용하는 중이다.


Reference : http://www.techienote.com/2012/01/disable-gui-boot-in-ubuntu-11-10.html

'Development Tip' 카테고리의 다른 글

Autoloading Cscope Database(cscope.out file)  (0) 2013.02.06
Google Site Tool : File repository  (0) 2012.10.29
switch remote/branch by repo  (0) 2012.08.30
redmine tip  (0) 2012.03.26
Cscope, Ctags 를 원하는 file만.  (0) 2012.02.23

repo 를 이용해서 remote branch 를 변경하는 방법


1. repo init 을 새로 해주어야 한다

  $ repo init -b <remote branch>


2. 모든 project 에 local branch 생성

  $ repo start <new local branch name> --all


3. sync 

   $ repo sync -j<thread>


'Development Tip' 카테고리의 다른 글

Google Site Tool : File repository  (0) 2012.10.29
Ubuntu Console mode booting  (1) 2012.08.31
redmine tip  (0) 2012.03.26
Cscope, Ctags 를 원하는 file만.  (0) 2012.02.23
Ubuntu 11.10 application : Terminator  (0) 2012.02.20

Youtube 영상을 PC 로 download 해주는 service 가 있다.


Site : http://offliberty.com/


Google I/O 영상이나 강좌가 있다면 Mobile로 옮겨서 network 끊김 걱정없이 어디서나 볼 수 있다는 것이 장점이 될 듯 하다. 


출처에서 말하 듯이 2차 배포를 하기 위해 이 서비스를 이용하는 것은 저작권에 문제가 있을 것이다. 


Video와 audio 두가지 형태로 제공 한다.


출처 : http://techit.co.kr/8791


-----------------------------------------------------------------------------------------------------------------------------------

Youtube 영상에서 자막을 srt 파일로 download 하는 방법


1. Google2SRT Download

  - Window, Linux 모두 동작함. 기본적으로 같은 interface 이므로 linux에서 방법을 살펴본다.

  - download site : http://google2srt.sourceforge.net/en/download.html

  - Download Link를 클릭하여 download 


2. zip file로 download 됨.

  $ cd path/to/dowload/

  $ unzip Google2SRT-0.5.3.zip


3. 실행

  $ run.sh



이런 화면이 뜹니다. Google Subtitles 에 동영상 url 을 입력하고, "READ" click

그러면 아래 박스에 지원되는 language check 한 뒤에 "Go!" 를 click

그러면 SRT subtitiles 로 지정된 file이 생성된다.


Window에서는 같은 디렉토리에 run.bat 이 있습니다.



'Etc.' 카테고리의 다른 글

Let me google that for you  (0) 2012.10.29
Ubuntu Video 가 푸르게(blue)로 나오는 현상 제거  (0) 2012.08.09
Ubuntu 12.04 Upgrade 이후 client error  (0) 2012.05.01
[영화] I Am Number Four  (0) 2011.02.28
Christmas 분위기???  (0) 2010.12.22

+ Recent posts