'리눅스'에 해당되는 글 163건

  1. 2009.11.04 [9.10] 우분투에서 ibus 버그 픽스하기 1
  2. 2009.07.08 ubuntuone 서비스 사용하기 - 현재 베타
  3. 2009.05.28 리눅스용 플래쉬 하드웨어 가속 사용하기
  4. 2009.05.27 20090527] vimrc 설정
  5. 2009.05.27 autocomplpop 키워트 추천 - Vim plugin
  6. 2009.05.11 synkron - 리눅스용 usb 양방향 싱크 프로그램
  7. 2009.05.04 Windows Mobile 6 장치 리눅스에서 인식하기
  8. 2009.04.27 vmware 6.x 버젼에서 키보드 오동작시 해결법
  9. 2009.04.21 ppa 저장소 인증키 문제 해결
  10. 2009.04.21 ext4 파일 시스템 특징

[9.10] 우분투에서 ibus 버그 픽스하기


위의 파일을 다운 받아서 설치한 다음에 트레이에 있는 ibus 메뉴에 재시작을 클릭하면 된다.

ubuntuone 서비스 사용하기 - 현재 베타

http://ubuntuone.com
여기에 초대장을 신청하면 한 2달 있으면 온다.(진짜 온다...아마?)
현재 2GB 서비스는 무료, 10GB 서비스는 달에 $10... 비싸다...
서비스 형식은 DropBox와 비슷하다 하나의 디렉토리를 지정해서 거기에
공유하고자 하는 파일을 저장하면 다른 곳에 설치된 클라이언트에서 동기화
시켜주는 서비스다.

초대장을 받고 초기 설치 방법은 그림으로 설명~
참고로 설치할 때 사용하는 firefox을 사용하면 간단한 클릭만으로 저장소 등록부터 클라이언트 설치까지 끝낼 수 있다.

아직은 베타라 그런지 공유하고자 하는 디렉토리 지정을 할 수 없다. 아까비....

리눅스용 플래쉬 하드웨어 가속 사용하기

참고 사이트
http://blogs.adobe.com/penguin.swf/2008/08/secrets_of_the_mmscfg_file_1.html

mms.cfg 파일에 설정된 내용을 참고로 하드웨어 가속여부를 정한다.
mms.cfg 파일은 /etc/adobe에 위치해 있어야 하는데, 해당 디렉토리와 파일은 실제론 없다.

1. /etc/adobe 디렉토리 생성
2. mms.cfg 파일 작성, 내용은 아래 내용을 넣으면 된다.
OverrideGPUValidation=true


끝!!

20090527] vimrc 설정

"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vim 자체 옵션
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 백스페이스 사용
set bs=indent,eol,start
syntax on
colorscheme desert
set ts=4
"set nu
set syntax=c
"set ic
set shiftwidth=4
set formatoptions=croql
set smartindent
set autoindent
set expandtab
set nocompatible

" 파일인코딩
set fenc=utf-8
set fencs=utf-8,euc-kr,cp949,cp932,euc-jp,shift-jis,big5,latin1,ucs-2le

" 편집기록을 1000개까지 기억
set history=1000

" 검색어 강조 기능 사용
set hlsearch

" 검색시 파일 끝에서 처음으로 되돌리기 안함
set nows

" ().{} 에서 닫는 괄호를 입력할 때 일치하는 괄호를 보여준다.
set showmatch

set mousehide       " Hide the mouse when typing text

filetype indent on

" 영역이 지정된 상태에서 Tab과 Shift-Tab 으로 들여쓰기/내어쓰기
" 를 할 수 있도록 함
vmap <Tab>  >gv
vmap <S-Tab> <gv

" GUI이면, 시작시 크기, 위치 설정
"if has("gui_running")
"    set lines=100
"    set co=171
"    winp 4 4
"endif

" 시작시 전체화면으로 설정
if has("win32")
    au GUIEnter * simalt ~x
endif

" 항상 status 라인을 표시하도록 함
set ls=2
" status 라인이 어떻게 나오게 할 지 지정
"set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\
"set statusline=\ %f\ %m%h%r\ [%P]\ %a\ %<%l:%v\
set statusline=%<%F%h%m%r%h%w%y\ %{strftime(\"%Y/%m/%d-%H:%M\")}%=\ col:%c%V\ ascii:%b\ pos:%o\ lin:%l\,%L\ %P
set laststatus=2

" 줄 간격 설정
"set lsp=1

" 인코딩에 대한 설정, 윈도우, 리눅스 구분
" set encoding=euc-kr
if has("unix")
    set encoding=euc-kr
elseif has ("win32")
    set encoding=cp949
endif

" 확장자가 txt로 끝나는 파일을 작성시 혹은 편집시 폭을 80으로 설정한다.
" 이는 80column이 넘게 되면 자동으로 Enter을 넣어 준것과 같은 효과를 낸다.
"au BufNewFile,BufRead *.txt set textwidth=80

" 자동으로 }닫는 매크로
"au BufNewFile,BufRead *.c imap { {<CR>}<ESC>O
"au BufNewFile,BufRead *.c imap ( ( )<LEFT><LEFT>

" 백업파일 생성금지
"set nobackup

" 백업파일 이음
"set backupext=.bak

" 키를 잘 못 눌렀을 때 삑 소리 대신 화면이 번쩍이게 변경
set visualbell
"set novisualbell

" 화면 우측 하단에 현재 커서의 위치(줄, 칸)을 보여준다.
set ruler

" C 프로그래밍을 할 때 자동으로 들여쓰기를 한다.
"set cindent

" 만약 79번째 글자를 넘어가면 \
"set textwidth=79

" great wildmode/wildmenu and console mouse
set wildmenu
set wildmode=list:longest,full
set mouse=a

"console-menu
source $VIMRUNTIME/menu.vim
set cpo-=<
set wcm=<C-Z>
nmap ,menu :emenu <C-z>

" 함수 닫기표시
set sm

" 현재 라인 highlight
"highlight CurrentLine guibg=yellow guifg=black ctermbg=yellow ctermfg=black
"au! Cursorhold * exe 'match CurrentLine /\%' . line('.') . 'l.*/'
"set ut=10

" 한화면이 넘는 줄끝에 >나 <를 표시하여 내용이 더 있음을 알린다.
" 자동 줄바꿈으로 크게 필요없다.
"set listchar

" 폴더설정이 되어 있는 파일을 열었을때 폴더 되어 있는 레벨을 설정한다.
" 기본값은 0이고, 모두 폴딩된다.
set fdl=1

" 소스 파일이 폴딩되어 있을 때 폴딩범위를 보여주는 컬럼의 수를 설정한다.
set fdc=3

"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 편리한 기능
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Tab 자동 완성시 가능한 목록을 보여줌
set wmnu

" 마지막 편집 위치 복원 기능
au BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\   exe "norm g`\"" |
\ endif



""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" device 개발용 path변수
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"set path=/source/fdik/kernel/linux/include,/usr/include


""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugin 설정
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ctags set
set tags=./tags,../tags,../../tags
if version >= 500
func! Sts()
        let st = expand("<cword>")
        exe "sts ".st
endfunc
nmap ,st :call Sts()<CR>

func! Tj()
        let st = expand("<cword>")
        exe "tj ".st
endfunc
nmap ,tj :call Tj()<CR>
endif

" cscope set
if has("unix")
    set csprg=/usr/bin/cscope
elseif has ("win32")
    set csprg=e:\util\cscope.exe
endif
set csto=0
set cst
set nocsverb
if filereadable("./cscope.out")
    cs add cscope.out
endif
set csverb

" man pages options
func! Man( )
    let sm = expand("<cword>")
    exe "!man -S 2:3:4:5:6:7:8:9:tcl:n:l:p:o ".sm
endfunc
nmap ,ma :call Man( )<CR><CR>


" TagExplorer 용 설정
" 리스트에 표시될 파일확장자 지정
let TE_Inlucde_File_Pattern='.*\.c$\|.*\.h$\|.*\.cap$\|.*\.bat$\'



" Taglist에 대한 설정
" Tlist가 가로로 열리게 만든다.
"let Tlist_Use_Horiz_Window = 0

" Tlist의 기본은 30
"let Tlist_WinWidth = 21
"let Tlist_Inc_WinWidth = 0

" Tlist을 좀 더 편리하게 조정한다.
function! MyTlist()
    exe 'Tlist'
    if exists('g:MyTlist') && g:MyTlist == 1
        let g:MyTlist = 0
        "exe ':<C-W> ='
    else
        let g:MyTlist = 1
        exe 'vert resize 95'
    endif
endfunction
"nnoremap <slient> <F7> :Tlist<CR>
"nnoremap <slient> <F7> :call MyTlist()<CR>

" EnhancedCommentify 주석 처리 plugin
" 블럭 처리한 후에 \c을 해 주면 "/* 블럭 내용 */" 으로 주석 처리 된다.
" 여러 줄이라면 각 줄마다 주석이 처리 된다.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 단축키 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 윈도우 탐색기를 띄워준다.
"map <C-e> :silent !explorer %:p:h:gs?\/?\\\\\\?<CR>
map <C-e> :20vs .<CR><F8>
map <C-l> :TagExplorer<CR>\
" <F2> 새 탭 열고 파일 열기
map <F2> :tabnew<CR>:
map <F5> v]} zf
map <F6> v[{ zf
map <F7> zo
map <F8> w
map <F9> +
map <F10> -
map <F11> <
map <F12> >
" 클립보드 복사, 붙여넣기
map <C-c> "+y
map <C-v> "+P

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ab 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
ab gtk GtkWidget
ab kern KERN_ALERT
ab false FALSE
ab true TRUE
"ab cpu CPU_IO(


"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Color
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 배경 검정색
set bg=dark
" 색상 밝게 하기
set nocompatible
let colors_name = "classic"
hi clear
hi Normal guifg=white guibg=black
hi SpecialKey guifg=#666666
hi NonText guifg=#666666
hi Directory guifg=#99FFFF
hi ErrorMsg guifg=#FFFFFF guibg=#FF9999
hi IncSearch gui=reverse
hi Search guifg=#000000 guibg=#999933
hi MoreMsg guifg=#99FF99
hi LineNr guifg=#FFFF99
hi Question guifg=#99FF99
hi StatusLine gui=reverse
hi StatusLineNC gui=reverse
hi VertSplit gui=reverse
hi Title guifg=#FF99FF
hi Visual gui=reverse
hi VisualNOS gui=underline
hi WarningMsg guifg=#FF9999
hi WildMenu guifg=#000000 guibg=#999933
hi Folded guifg=#99FFFF guibg=#666666
hi FoldColumn guifg=#99FFFF guibg=#666666
hi DiffAdd guibg=#9999FF
hi DiffChange guibg=#FF99FF
hi DiffDelete term=bold guifg=#9999FF guibg=#99FFFF
hi DiffText term=reverse guibg=#FF9999
hi Comment term=bold guifg=#99FFFF
hi Constant term=underline guifg=#FF99FF
hi Special term=bold guifg=#FF9999
hi Identifier term=underline guifg=#99FFFF
hi Statement term=bold guifg=#FFFF99
hi PreProc term=underline guifg=#9999FF
hi Type term=underline guifg=#99FF99
hi Underlined term=underline gui=underline guifg=#9999FF
hi Ignore guifg=#000000
hi Error term=reverse guifg=#FFFFFF guibg=#FF9999
hi Todo term=standout guifg=#000000 guibg=#999933



"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Plugins 설정
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" autocomplpop - 키워드 추천(자동 완성)
" 탭과 엔터로 자동 완성
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col-1]!~'\k'
return "\<TAB>"
else
if pumvisible()
return "\<C-N>"
else
return "\<C-N>\<C-P>"
end
endif
endfunction

inoremap <tab> <c-r>=InsertTabWrapper()<cr>

hi Pmenu ctermbg=blue
hi PmenuSel ctermbg=yellow ctermfg=black
hi PmenuSbar ctermbg=blue

" minibufexpllorer - 버퍼 상태 출력 및 이동
" Ctrl + hjkl 을 사용해서 버퍼 메뉴로 이동
" 버퍼메뉴에서 tab 또는 커서 이동으로 해당 파일에서
" enter 입력하면 해당 파일로 이동
" :bn 다음파일로 이동,
" :bp 이전파일로 이동
" :b!숫자 해당숫자 파일로 이동
let g:miniBufExplMapWindowNavVim=1
let g:miniBufExplMapWindowNavArrows=1
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplModSelTarget=1


autocomplpop 키워트 추천 - Vim plugin

기존 플러그인들은 단축키를 입력해야만 추천 단어를 보여줬다면, 이 넘은 입력을 하고 있으면 자동으로 추천 단어를 보여준다.

단어 선택 및 적용 키는 아래와 같다.

Tab, Enter, Ctrl+p, Ctrl+n

설치는 파일을 받아서 ~/.vim/plugin 에 카피해넣어주시고, 아래의 코드를 ~/.vimrc 에 살짝 추가해주시면 되겠습니다.

function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col-1]!~'\k'
return "\<TAB>"
else
if pumvisible()
return "\<C-N>"
else
return "\<C-N>\<C-P>"
end
endif
endfunction

inoremap <tab> <c-r>=InsertTabWrapper()<cr>

hi Pmenu ctermbg=blue
hi PmenuSel ctermbg=yellow ctermfg=black
hi PmenuSbar ctermbg=blue

synkron - 리눅스용 usb 양방향 싱크 프로그램

usb메모리 데이터 동기화를 도와준다.
http://synkron.sourceforge.net/

Windows Mobile 6 장치 리눅스에서 인식하기

Windows Mobile 6 리눅스 인식

• 저장소 설정
∘ deb http://ppa.launchpad.net/synce/ubuntu jaunty main
∘ deb-src http://ppa.launchpad.net/synce/ubuntu jaunty main
∘ sudo apt-key adv --recv-keys --keyserver subkeys.pgp.net 키번호

• 설치 프로그램
∘ librra-tools, librapi2-tools
∘ synce-sync-engine, synce-hal, multisync-tools,multisync0.90,opensync-plugin-evolution,opensync-plugin-synce


• synce-sync-engine 실행 후
∘ 장치를 연결 했을 때 synce-sync-engine에서 메세지가 나오기 시작하면 인식이 된거

• 파트너쉽 생성 하기
∘ synce-create-partnership "파트너쉽이름" "동기화항목"
‣ 동기화 항목은
• Contacts
• Calendar
• Tasks
• Files
∘ ex) synce-create-partnership "SCH-M480" "Contacts,Calendar,Tasks,Files"
∘ Files을 선택한 경우 위치는 사용자 홈디렉토리에 PDAFiles 디렉토리 밑에 파트너쉽이름으로 생성된다.

vmware 6.x 버젼에서 키보드 오동작시 해결법

윈도우키나 한영키가 제대로 동작하지 않을 때
/etc/vmware/config 에 아래 내용을 추가해 준다.

xkeymap.nokeycodeMap = TRUE
xkeymap.keysym.Hangul = 0x0f2
xkeymap.keysym.Hangul_Hanja = 0x0f1

ppa 저장소 인증키 문제 해결

간만에 업뎃 좀 하려고 했더니 다음과 같은 에러가 발생되었다.
W: GPG error: http://ppa.launchpad.net hardy Release: 다음 서명들은 공개키가 없기 때문에 인증할 수 없습니다: NO_PUBKEY 60D11217247D1CFF
W: apt-get update를 실행하면 이 문제를 바로잡을 수도 있습니다.

음.. 최근에 Launchpad 에서 이것저것 달라졌다고 메일이 온 적 있는데, 그것 때문인가?
여튼 구글링..

아래 명령어를 사용하면 해결. 중간에 키 넘버는 자신의 에러 메세지에 있는 넘버.
$ gpg --keyserver subkeys.pgp.net --recv 60D11217247D1CFF
$ gpg --export --armor 60D11217247D1CFF | sudo apt-key add -

ext4 파일 시스템 특징

며칠 후면 발표될 우분투 9.04부터는 ext4 파일시스템을 사용할 수 있다고 한다. 얼마전 발표된 페도라 11 테스트 버전에는 디폴트 파일시스템으로 ext4를 사용하고 있다. 이제 리눅스 진영에서는 ext4를 기본 파일시스템으로 사용하는 것이 더욱 늘어날 전망인데, ext4의 특징에 대해서 한번 알아보고자한다.

큰 용량의 파일시스템 지원
ext4 파일시스템은 볼륨의 크기를 1 exabyte 까지 지원한다. 또 하나의 파일의 크기를 16 terabyte 까지 지원한다.
exa는 EB로 표시한고, 십진수로는 1000의 6제곱, 10의 18 제곱 이고 이진수로는 1024의 6제곱 또는 2의 60 제곱이다.
참 고로 엑사바이트가 어느 정도인지를 가늠하기 위해서 몇 가지 알아보면, 1 엑사바이트는 50,000 년 분량의 DVD 품질의 비디오 데이터의 크기와 같다. 2008년 12월 전세계에서 사용한 월간 인터넷 트래픽의 양이 5 ~ 8 엑사바이트 정도라는 통계가 있다.

계산을 쉽게하기 위해서 1시간짜리 DVD 영화는 4GB 용량을 차지한다고 생각하면,
4GB 영화를 바이트로 계산하면, 4 * 1024 * 1024 * 1024 = 4294967296 byte
1 엑사바이트를 바이트로 계산하면, 1 exabye =
1152921504606846976 byte
이를 나누어보면 268435456 (시간)이 나온다.
다시 하루는 24시간이므로 24로 나누면, 11184810 (일)이 나오고,
다시 1년은 365일이므로 365로 나누면, 30643 (년)이 나온다.

ext4를 사용하면, 하나의 디스크 볼륨으로 이정도 용량을 사용할 수 있게된다는 얘기다.

Extents 사용
extents 는 ext2/ext3 파일시스템에서 사용되던 블록매핑 스킴을 대체하여 도입되었다. 익스텐츠는 한 범위의 연속된 물리적 블록으로 큰 파일에 대한 성능을 향상시키고 조각화를 줄인다. ext4에서 하나의 단일 익스텐츠는 4KB 블록크기의 연속 공간으로 128MB까지 맵핑할 수 있다. inode에는 4개의 익스텐츠를 저장할 수 있다. 4 익스텐츠보다 큰 파일에 대해서는 나머지 익스텐츠를 Htree에 인덱스한다.

과거 파일시스템과 호환성 유지
ext4 파일시스템은 ext3, ext2와 호환성을 유지한다. 이로써 ext3, ext2 파일시스템을 ext4로 마운트할 수 있다. 이점은 새로운 블록 할당 알고리즘 등 ext4의 새로운 특성을 ext3이나 ext2에 사용할 수 있다는 점때문에 약간의 성능 향상을 기대할 수 있는 부분이다.
ext3 파일시스템은 부분적으로 ext4와 미래 호환성을 갖는다. 즉 ext4 파일시스템은 ext3 파티션으로 마운트할 수 있다.(마운트할 때 ext3 파일시스템으로 인식된다.) 그러나 ext4 파티션에서 extents를 사용한다면, ext3 파일시스템으로 마운트할 수 없을 것이다.

Persistent pre-allocation
ext4 파일시스템은 파일에 대하여 디스크상의 pre-allocation을 고려한다. 이에 대한 현재 방법론은 대부분의 파일시스템이 파일이 생성될 때 0에서부터 확보한 공간만큼 파일의 전체를 쓰는 것이다. 이 방법은 이제 ext4에서는 사용하지 않는다. 대신 ext4와 XFS를 포함한 이러한 기능을 가진 파일시스템을 위한 fallocate() 시스템 함수가 리눅스 커널에 추가되었다. 이는 미디어 스트리밍, 데이터베이스 등의 어플리케이션에 유용한 기능이 될 것이다.

Delayed allocation
ext4 는 allocate-on-flush라고 알려진, 다른 말로 delayed allocation이라고도 부르는 파일시스템 성능 향상 기술을 사용한다. 이는 다른 파일시스템이 데이터가 디스크에 쓰여지기 전에 필요한 블록을 할당하는 것과는 달리, 데이터가 디스크에 쓰여질 때까지 블록 할당이 지연되는 기술이다. 이는 성능 향상을 가져오고 실제 파일 크기에 기초하여 블록 할당을 수행하므로 조각화를 방지한다.

32,000개의 서브디렉토리 제한이 없어짐
ext3 에서는 하나의 디렉토리에 생성할 수 있는 서브디렉토리는 32,000개로 제한이 있었다. ext4에서는 64,000개로 늘어났다. 그리고 "dir_nlink" 특성으로 이 제한을 넘어설 수도 있다. 지속적인 성능향상을 위하여 충분히 큰 디렉토리 ext4에서는 htree 인덱스를 기본으로 사용하도록 되어있다. 이 특징은 리눅스 커널 2.6.23부터 포함되어있다. htree는 dir_index 기능을 사용한다면 ext3에서도 사용할 수 있다.

Journal checksumming
ext4 는 신뢰성을 위해서 저널에서 체크섬을 사용한다. 저널이 가장 많이 사용되는 디스크 파일중 하나이기 때문이다. 이 특징은 저널링 프로세스 기간동안 디스크 I/O를 피하는 이득을 제공하여 약간의 성능 향상을 가져온다. 저널 체크섬 기술은 위스콘신 대학의 IRON File Systems라는 연구에서 영감을 얻었다.

온라인 조각모음
온라인 조각모음에 대한 몇 가지 제안이 있지만, 아직 커널에 포함되지는 않고 있다. 조각화를 방지하기 위해 사용되는 유명한 기술이라도 오래 사용하다보면 조각화된다. ext4는 개별 파일에 대한 조각모음 또는 전체 파일시스템에 대한 조각모음 툴을 제공할 계획이다.

빠른 파일시스템 검사
ext4 에서는 할당되지않은 블록 그룹과 inode 테이블 섹션에 대해서는 할당되지않은 것으로 표시한다. 이는 e2fsck가 파일시스템을 검사할 때 무시하도록하여 검사 시간을 크게 단축시킨다. 이 기능은 리눅스 커널 2.6.24에 구현되어있다.

다중블록 할당
ext4 는 한번에 파일을 위해서 다중블록을 할당한다. 이는 디스크에서 연속된 블록을 할당할 수 있게되어 조각화를 줄인다. 다중블록 할당은 O_DIRECT를 사용할 때 또는 지연할당이 활성화되었을 때 활성화된다. 파일에 대하여 많은 블록이 동시에 쓰여질 수 있도록 한다. 현재 커널에서는 파일시스템에 각 블록은 별도로 할당받도록 되어있다.

타임스탬프의 향상

컴 퓨터가 더 빨라지고 리눅스가 미션크리티컬한 어플리케이션에 많이 사용됨에따라 초 단위의 타임스탬프로는 충분하지 않게 되었다. 이를 해결하기 위해서 ext4는 나노초 단위의 타임스탬프를 제공한다. 또 타임스탬프 필드를  2 bit 확장하여 2038년 문제를 500년 연장시켰다.
prev 1 2 3 4 5 6 ··· 17 next