2007/04/17
emacs사용기
예전에 사용해보려다가 포기한 Emacs가 Windows버전으로 친절하게 만들어져서
다시 설치해봤다. vi를 만족스럽게 쓰고 있었지만, 여러 파일 편집이 아무래도 부족해서
고민하고 있었는데...
vim7에서 등장한 tab이나, vim plugin으로 지원되는 explorer기능은 뭔가 조잡해서
사용하기 어려웠는데...
누군가의 스샷에서 emacs의 ecb플러그인을 보고 설치해봤는데, 감동이었다.
하지만, 사용하면서 조금씩 느끼는 불편함...
특히 vim에서 편하게 사용했던 기능들을 위해 항상 google을 옆에 끼고 살았다.
그 결과 emacs가 강력하다는 말은 완전 공감~!
그러나 초기 설치버전이 강력한게 아니라 계속 *.el 파일들을 (플러그인 개념) 추가해서
강력하게 만들어야만 한다는거....
세상에 오늘 redo기능이 없어서 고민하다가 redo.el 파일 찾아서 넣으니 동작함.
얼마나 더 추가해 나가야 불편함이 없을까....
2007/04/13
- Run InstSrv with following arguments: InstSrv tracd SrvAny.exe. You can use any name instead of tracd here. Sometimes fully qualified name is required for SrvAny.exe.
- Run regedit and navigate to this key: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestracd.
- Create subkey Parameters.
- Add Application string value with exact fully qualified path to python, e.g., C:Python24python.exe.
- Add AppParameters string value with following data: C:Python24Scriptstracd -p 8080 -a repo,C:Repositorytrac_passwd,SVN C:Repositorytracrepo. If you used different repository folder, change values accordingly. Make sure that full path to tracd is specified. Note that it is configured to run on 8080 TCP port.
- Run the service using the standard Windows Services panel.
- Test it with your browser.
2007/04/03
2007/03/14
2007/03/13
IISReset 유틸리티는 net start/stop 명령과 비슷하지만, IIS 프로세스를 좀더 다양한 옵션으로 리셋트할 수 있는 것이 다릅니다. 물론 W3SVC, SMTPSVC, MSFTPSVC, IISAdmin 등 인터넷 서비스를 한꺼번에 다룰 수 있습니다. ( 참고 )
IISRESET.EXE (c) Microsoft Corp. 1998-1999
사용법:
iisreset [컴퓨터 이름]
/RESTART 모든 인터넷 서비스를 중지한 다음 다시 시작합니다.
/START 모든 인터넷 서비스를 시작합니다.
/STOP 인터넷 서비스를 중지합니다.
/REBOOT 컴퓨터를 다시 부팅합니다.
/REBOOTONERROR 인터넷 서비스를 시작할 때, 중지할 때 또는 다시 시작할 때,
오류가 생기면 컴퓨터를 다시 부팅합니다.
/NOFORCE 인터넷 서비스를 성공적으로 중지하지 못하는 경우,
인터넷 서비스를 강제로 종료하지 않습니다.
/TIMEOUT:val 인터넷 서비스를 성공적으로 중지하기 위해 필요한
대기 시간 제한 값(초)을 지정합니다. 이 시간 제한이
만료되면, /REBOOTONERROR 매개 변수가 지정된 경우에는
컴퓨터를 다시 부팅할 수 있습니다.
기본값은 다시 시작하는데 20초, 중지하는데 60초,
다시 부팅하는데 0초입니다.
/STATUS 모든 인터넷 서비스의 상태를 표시합니다.
/ENABLE 로컬 시스템에서 인터넷 서비스를 다시 시작할 수 있습니다.
/DISABLE 로컬 시스템에서 인터넷 서비스를 다시 시작할 수 없습니다.
Examples:
The following command will attempt to restart all running Web services and reboot the computer if the command is not successful for any reason:
IISRESET /STOP /NOFORCE
if errorlevel == 1 goto EXIT
copy %systemroot%system32LogFilesW3SVC1 d:backupW3SVC1
IISRESET /START
:EXIT
2007/03/07
2007/03/06
IIS 로그에서 유니크한 라인 추출하기
IIS의 로그에서 방문한 페이지 목록을 뽑을 일이 생겼다.
중복된 페이지는 제거하고 페이지 목록만을 뽑기 위해,
아래와 같은 과정을 진행하였다.
$ awk '{print $8}' *.log |sort|uniq|grep -v ".[jpg|gif|css|js]"|grep
"user_mgmt"
결과는 아래와 같이 나왔다.
/user_mgmt/...
/user_mgmt/...
...
...
Variable Mangling in Bash with String Operators
Variable Mangling in Bash with String Operators
By Pat Eyler on Mon, 2006-03-13 02:00. Software Here's a quick and updated HOWTO for using string operators in bash to manipulate variables.Editor's Note: This article has been updated by its author. Thank you, Pat.
Have you ever wanted to change the names of many files at once? Or, have you ever needed to use a default value for a variable that has no value? These and many other options are available to you when you use string operators in bash and other Bourne-derived shells.
String operators allow you to manipulate the contents of a variable without having to write your own shell functions to do so. They are provided through "curly brace" syntax. Any variable can be displayed as ${foo} without changing its meaning. This functionality often is used to protect a variable name from surrounding characters.
$ export foo=foo
$ echo ${foo}bar # foo exists so this works as expected
foobar
$ echo $foobar # foobar doesn't exist, so this doesn't
$
By the end of this article, you'll be able to use it for a whole lot more.
Three kinds of variable substitution are available for use: pattern matching, substitution and command substitution. I talk about the first two variables here and leave command substitution for another time.
In pattern matching, you can match from the left or from the right. The operators, along with their functions and examples, are shown below:
Operator: ${foo#t*is}
Function: deletes the shortest possible match from the left
Example:
$ export foo="this is a test"
$ echo ${foo#t*is}
is a test
$
Operator: ${foo##t*is}
Function: deletes the longest possible match from the left
Example:
$ export foo="this is a test"
$ echo ${foo##t*is}
a test
$
Operator: ${foo%t*st}
Function: deletes the shortest possible match from the right
Example:
$ export foo="this is a test"
$ echo ${foo%t*st}
this is a
$
Operator: ${foo%%t*st}
Function: deletes the longest possible match from the right
Example:
$ export foo="this is a test"
$ echo ${foo%%t*st}
$
Although the # and % identifiers may not seem obvious, they have a convenient mnemonic. The # key is on the left side of the $ key and operates from the left. The % key is on the right of the $ key and operates from the right. (This is true, at least, for US qwerty keyboards.)
The operators listed above can be used to do a variety of things. For example, the following script changes the extension of all .html files so they now are .htm files.
#!/bin/bash
# quickly convert html filenames for use on a dossy system
# only handles file extensions, not file names
for i in *.html; do
if [ -f ${i%l} ]; then
echo "${i%l} already exists"
else
mv $i ${i%l}
fi
done
Another kind of variable mangling you might want to employ is substitution. Four substitution operators are used in Bash, and they are shown below:
Operator: ${foo:-bar}
Function: If $foo exists and is not null, return $foo. If it doesn't exist or is null, return bar.
Example:
$ export foo=""
$ echo ${foo:-one}
one
$ echo $foo
$
Operator: ${foo:=bar}
Function: If $foo exists and is not null, return $foo. If it doesn't exist or is null, set $foo to bar and return bar.
Example:
$ export foo=""
$ echo ${foo:=one}
one
$ echo $foo
one
$
Operator: ${foo:+bar}
Function: If $foo exists and is not null, return bar. If it doesn't exist or is null, return a null.
Example:
$ export foo="this is a test"
$ echo ${foo:+bar}
bar
$
Operator: ${foo:?"error message"}
Function: If $foo exists and isn't null, return its value. If it doesn't exist or is null, print the error message. If no error message is given, it prints parameter null or not set. In a non-interactive shell, this aborts the current script. In an interactive shell, this simply prints the error message.
Example:
$ export foo="one"
$ for i in foo bar baz; do
> eval echo \${$i:?}
> done
one
bash: bar: parameter null or not set
bash: baz: parameter null or not set
$
The : in the above operators can be omitted. Doing so changes the behavior of the operator so that it simply tests for the existence of the variable. This, in turn, causes the creation of a variable, for example:
$ export foo="this is a test"
$ echo $bar
$ echo ${foo=bar}
this is a test
$ echo ${bar=bar}
bar
$ echo $bar
bar
$
These operators can be used in a variety of ways. A good example would be, in the case when no arguments are given, to give a default value to a variable normally read from command-line arguments. This example is demonstrated in the following script:
#!/bin/bash
export INFILE=${1-"infile"}
export OUTFILE=${2-"outfile"}
cat $INFILE > $OUTFILE
Copyright (c) 2005, 2000 by Pat Eyler. Originally published in Linux Gazette issue 57. Copyright (c) 2000, Specialized Systems Consultants, Inc. The material in this article may be distributed only subject to the terms and conditions set forth in the Open Publication License, v1.0 or later.
SET TEMPORARY OPTION Temp_Extract_Name1 ='../../../../../../../../u/users/ukira1/backup/output.smkim';
SET TEMPORARY OPTION Temp_Extract_Name2 ='';
SELECT TOP 100 * FROM dba.employee;
SET TEMPORARY OPTION Temp_Extract_Name1 = '';
첫줄같이 한 이유는 Temp_Extract_Directory라는 옵션으로 폴더를 정해줄수 있지만,
내가 dba권한이 없어서 안된단다...
그래서 편법으로 대충 루트까지 갔다가 내 폴더에 쓰도록 한다.
- LOAD 하기
이렇게 하시면 되겠다~LOAD TABLE dba.employee_2
(
컬럼1,
컬럼2,
...
)
FROM '/u/users/ukira1/backup/output.smkim'
QUOTES OFF
ESCAPES OFF
FORMAT 'ascii'
DELIMITED BY ','
ROW DELIMITED BY 'n'
total commander와 cygwin을 사용하다보면, 현재 폴더에서 cygwin을 실행하고 싶은 때가 있다.
cygwin을 실행하면 현재 폴더가 c:/cygwin/home/<user> 폴더로 옮겨지기 때문에 꽤 불편하다.
그래서 현재 폴더로 이동하게 하는 방법을 생각해봤는데..
일단, c:/cygwin/cygwin.bat를 편집한다.
SET CUR_DIR=%CD%
위 한줄을 추가해주고...
c:/cygwin/home/<user>/.bashrc
를 편집한다.
CUR_DIR=${CUR_DIR//\///} # 변수내의 문자를 /로 바꿔준다.
CUR_DIR=${CUR_DIR//"/} #변수내의 "문자를 없앤다.
CUR_DIR="/cygdrive/${CUR_DIR//:/}" #변수내의 : 문자를 없애고 맨 앞에 /cygdrive/를 붙여준다.
cd "$CUR_DIR"
쓸만한것 같아서 쓰고 있는데...
서버에 관리자가 알집을 깔았다가 지웠더니,
탐색기 나 바탕화면 맨 바닥에서 마우스 오른쪽 버튼을 누르면 생기는
'새로만들기>> 압축(ZIP) 폴더' 라는 녀석이 '새로만들기>> 새 알집(ZIP) 폴더' 라고 뜨는데
문제는 이렇게 생성한 압축파일은 에러가 난 파일이 생성되어 압축하거나 하는 작업을
할 수가 없다.
그래서 어찌저찌 찾은 것이...
C:WINDOWSsystem32zipfldr.dll 이라는 파일이다.
이녀석을
regsvr32 /u zipfldr.dll 이라고 실행해서 등록을 해제한다.
그리고 다시
regsvr32 zipfldr.dll 이라고 실행해주면, 재 등록 되는데
이런 과정으로 했더니 다시 원상복구되었다.
select top 100 *
from 테이블명
># c:output.txt
와 같이 하면 c:output.txt 에 컴마로 컬럼이 구분되고
row가 엔터로 구분되는 텍스트 파일이 생성된다.
>> 로 리다이렉션하면, 파일을 생성하지 않고 기존의 파일에 추가한다.
2. 쿼리결과+메시지까지 파일로 내리기
로 하면 select 결과 뿐 아니라, 결과 메시지까지 파일에 생성된다.select top 100 *
from 테이블명
>& c:output.txt
예를들어...
%
% 100 record(s) selected -- actual I/O 0
% select time including I/O 0.594 seconds - current time 15:48:41
'200702','4386761402596004','3','200701','P005967279','P000011379'.....
....
이런 식이다.
2007/02/06
로그파일 내의 중복 라인 제거
중복된 페이지는 제거하고 페이지 목록만을 뽑기 위해,
아래와 같은 과정을 진행하였다.
결과는 아래와 같이 나왔다.$ awk '{print $8}' *.log |sort|uniq|grep -v "\.[jpg|gif|css|js]"|grep
"user_mgmt"
/user_mgmt/...
/user_mgmt/....
...
...
2007/02/02
Oracle SQL: Single-row functions.
TO_CHAR(x[, fmt[, nls]])
Takes up to three arguments, where x is either a date or a number, fmt is a format string specifying the format that x will appear in, and nls specifies language or location formatting string.
If x is a date, fmt is a date format code.
If x is a number, fmt is a numeric format code.
Oracle에서 데이터 형식을 바꿔주는 함수.
숫자 값을 2자리로 맞춰줘야 하는데, 한자리 값인 0-9에 대해서 0을 붙여주기 위해서,
이와같은 함수가 Sybase에서도 필요하다.
그래서 꽁수로
RIGHT function [String]
Function Returns the rightmost characters of a string.
Syntax RIGHT ( string-expression, numeric-expression )
right('00' + convert(varchar(2),vn_cnt), 2);
와 같이 해준다.
2007/02/01
vimrc 설정하기
주로 Window환경에서 gvim을 사용하기 때문에 윈도우 환경에 맞춰서 작성되었습니다.
"줄번호를 표시한다.
set nu
"자동으로 띄어쓰기를 한다.
set autoindent
"파일의 저장인코딩을 utf-8로 한다.
"set fileencodings=utf-8
"화면 문자의 인코딩을 cp949로한다.
set encoding=cp949
"한화면을 넘는 줄을 줄바꿈하지 않는다.
set nowrap
"한화면이 넘는 줄의 끝에 >나 <를 표시하여 내용이 더 있음을 알린다. set listchars=extends:>,precedes:< "탭의 길이를 4문자로한다. set tabstop=4 "탭을입력하면 space로 변환한다. set expandtab "indent를 할때 띄울 빈칸의 개수 set shiftwidth=4 "gvim에서 선택할 폰트 set guifont=돋움체:h10:cANSI "ctrl-F5를 누르면 현재 파일을 저장하고 파이썬으로 실행한다. map:w :!python %
filetype on
"컬러스킴을 vcbc로 설정한다. 컬러스킴은 http://www.vim.org에서 받을수 있다.
colorscheme vcbc
"syntax highlight 를 켠다
syntax on
"W도 w와 같이 동작한다.
cmap W w
"insert모드에서를 누르면 IM을 disable시킨다.
inoremap:set imdisable
"visual이나 select모드에서 의 매핑이다.
"i,a,o를 누르면 IM을 disable시킨다.
nnoremap i :set noimdi
nnoremap I :set noimdI
nnoremap a :set noimda
nnoremap A :set noimdA
nnoremap o :set noimdo
nnoremap O :set noimdO
if has('multi_byte_ime')
highlight CursorIM guibg=green guifg=NONE
endif
" vim -b : edit binary using xxd-format!
augroup Binary
au!
au BufReadPre *.bin let &bin=1
au BufReadPost *.bin if &bin | %!xxd
au BufReadPost *.bin set ft=xxd | endif
au BufWritePre *.bin if &bin | %!xxd -r
au BufWritePre *.bin endif
au BufWritePost *.bin if &bin | %!xxd
au BufWritePost *.bin set nomod | endif
augroup END
"------------------------------------------------------------------------------
" Standard stuff.
"------------------------------------------------------------------------------
set nocompatible " Disable vi compatibility.
set textwidth=0 " Don't wrap words by default.
set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set showmode " Show current mode.
set ruler " Show the line and column numbers of the cursor.
set ignorecase " Case insensitive matching.
set incsearch " Incremental search.
set noerrorbells " No beeps.
set modeline " Enable modeline.
set esckeys " Cursor keys in insert mode.
set gdefault " Use 'g' flag by default with :s/foo/bar/.
set magic " Use 'magic' patterns (extended regular expressions).
set ttyscroll=0 " Turn off scrolling (this is faster).
set ttyfast " We have a fast terminal connection.
set hlsearch " Highlight search matches.
set nostartofline " Do not jump to first character with page commands,
" i.e., keep the cursor in the current column.
" Allow backspacing over everything in insert mode.
set backspace=indent,eol,start
" Path/file expansion in colon-mode.
set wildmode=list:longest
set wildchar=
" Enable syntax-highlighting.
if has("syntax")
syntax on
endif
"------------------------------------------------------------------------------
" Function keys.
"------------------------------------------------------------------------------
" F1: Toggle hlsearch (highlight search matches).
nmap:set hls!
" F2: Toggle list (display unprintable characters).
nnoremap:set list!
" F3: Toggle expansion of tabs to spaces.
nmap:set expandtab!
" F4: Write a ChangeLog entry.
map:r !c:\\cygwin\\bin\\date.exe +\%Y/\%m/\%d A 김석민 * |
" F5: Insert current date.
map:r !c:\\cygwin\\bin\\date.exe +\%Y/\%m/\%d
"------------------------------------------------------------------------------
" Correct typos.
"------------------------------------------------------------------------------
" English.
iab beacuse because
iab becuase because
iab acn can
iab cna can
iab centre center
iab chnage change
iab chnages changes
iab chnaged changed
iab chnagelog changelog
iab Chnage Change
iab Chnages Changes
iab ChnageLog ChangeLog
iab debain debian
iab Debain Debian
iab defualt default
iab Defualt Default
iab differnt different
iab diffrent different
iab emial email
iab Emial Email
iab figth fight
iab figther fighter
iab fro for
iab fucntion function
iab ahve have
iab homepgae homepage
iab logifle logfile
iab lokk look
iab lokking looking
iab mial mail
iab Mial Mail
iab miantainer maintainer
iab amke make
iab mroe more
iab nwe new
iab recieve receive
iab recieved received
iab erturn return
iab retrun return
iab retunr return
iab seperate separate
iab shoudl should
iab soem some
iab taht that
iab thta that
iab teh the
iab tehy they
iab truely truly
iab waht what
iab wiht with
iab whic which
iab whihc which
iab yuo you
iab databse database
iab versnio version
iab obnsolete obsolete
iab flase false
iab recrusive recursive
iab Recrusive Recursive
" German.
iab cioa ciao
iab Cioa Ciao
iab nciht nicht
iab zeimlicher ziemlicher
iab zeimlich ziemlich
iab scheisse schei??e
iab Scheisse Schei??e
iab morgne morgen
iab Morgne Morgen
" Days of week.
iab monday Monday
iab tuesday Tuesday
iab wednesday Wednesday
iab thursday Thursday
iab friday Friday
iab saturday Saturday
iab sunday Sunday
"------------------------------------------------------------------------------
" Abbreviations.
"------------------------------------------------------------------------------
" My name + email address.
ab uhh 김석민
" Quit with 'q' instead of ':q'. VERY useful!
map q :q
"------------------------------------------------------------------------------
" HTML.
"------------------------------------------------------------------------------
" Print an empty tag.
map! ;h5hi
" Wrap an tag around the URL under the cursor.
map ;H lBi3hi
"------------------------------------------------------------------------------
" Miscellaneous stuff.
"------------------------------------------------------------------------------
" ROT13 decode/encode the selected text (visual mode).
" Alternative: 'unmap g' and then use 'g?'.
vmap rot :!to A-Za-z N-ZA-Mn-za-m
"------------------------------------------------------------------------------
" File-type specific settings.
"------------------------------------------------------------------------------
if has("autocmd")
" Enabled file type detection and file-type specific plugins.
" filetype plugin on indent
filetype plugin on
" Drupal *.module and *.engine files.
augroup module
autocmd BufRead *.module,*.engine set filetype=php
augroup END
augroup sql
autocmd BufReadPre,FileReadPre *.sql set tabstop=4
autocmd BufReadPre,FileReadPre *.sql set expandtab
augroup END
" Python code.
augroup python
autocmd BufReadPre,FileReadPre *.py set tabstop=4
autocmd BufReadPre,FileReadPre *.py set expandtab
augroup END
" Ruby code.
augroup ruby
autocmd BufReadPre,FileReadPre *.rb set tabstop=2
autocmd BufReadPre,FileReadPre *.rb set expandtab
augroup END
" PHP code.
augroup php
autocmd BufReadPre,FileReadPre *.php set tabstop=4
autocmd BufReadPre,FileReadPre *.php set expandtab
augroup END
" Java code.
augroup java
autocmd BufReadPre,FileReadPre *.java set tabstop=4
autocmd BufReadPre,FileReadPre *.java set expandtab
augroup END
" ANT build.xml files.
augroup xml
autocmd BufReadPre,FileReadPre build.xml set tabstop=4
augroup END
" (J)Flex files.
augroup lex
" autocmd BufRead,BufNewFile *.flex,*.jflex set filetype=lex
autocmd BufRead,BufNewFile *.flex,*.jflex set filetype=jflex
augroup END
" (Nu)SMV files.
augroup smv
autocmd BufRead,BufNewFile *.smv set filetype=smv
augroup END
endif