2007/04/17

emacs사용기



















예전에 사용해보려다가 포기한 Emacs가 Windows버전으로 친절하게 만들어져서
다시 설치해봤다. vi를 만족스럽게 쓰고 있었지만, 여러 파일 편집이 아무래도 부족해서
고민하고 있었는데...
vim7에서 등장한 tab이나, vim plugin으로 지원되는 explorer기능은 뭔가 조잡해서
사용하기 어려웠는데...
누군가의 스샷에서 emacs의 ecb플러그인을 보고 설치해봤는데, 감동이었다.
하지만, 사용하면서 조금씩 느끼는 불편함...
특히 vim에서 편하게 사용했던 기능들을 위해 항상 google을 옆에 끼고 살았다.
그 결과 emacs가 강력하다는 말은 완전 공감~!
그러나 초기 설치버전이 강력한게 아니라 계속 *.el 파일들을 (플러그인 개념) 추가해서
강력하게 만들어야만 한다는거....

세상에 오늘 redo기능이 없어서 고민하다가 redo.el 파일 찾아서 넣으니 동작함.
얼마나 더 추가해 나가야 불편함이 없을까....

2007/04/13

프로그램을 서비스 등록하기

    1. 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.
    2. Run regedit and navigate to this key: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicestracd.
    3. Create subkey Parameters.
      1. Add Application string value with exact fully qualified path to python, e.g., C:Python24python.exe.
      2. 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.
    4. Run the service using the standard Windows Services panel.
    5. Test it with your browser.

2007/03/13

Windows 2000/IIS 5.0에 기본으로 들어있는 IISReset.exe 유틸리티로 IIS 서비스를 멈추거나 다시 시작할 수 있으며, 필요하면 서버 컴퓨터를 재부팅할 수 있습니다. 로컬호스트 뿐만 아니라 컴퓨터 이름(NetBIOS Name)이나 IP address로 원격 연결하여 IIS를 리셋트시킬 수 있습니다.


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 /RESTART /REBOOTONERROR
This following will attempt to restart all running Web services, yet if either the stop or restart commands are not successful within two minutes, the computer will restart:
IISRESET /RESTART /TIMEOUT:120 /REBOOTONERROR
The purpose of the following commands, when saved to a batch file, is to stop all running Web services, copy the log files for the default Web server to a backup directory on the D: drive, and then start all Web services. However, if the stop command fails for some reason, it will not shut down the services, but simply exit the batch file:
@echo off
IISRESET /STOP /NOFORCE
if errorlevel == 1 goto EXIT
copy %systemroot%system32LogFilesW3SVC1 d:backupW3SVC1
IISRESET /START
:EXIT
Any of the preceding examples can be scheduled to run during non-peak hours for your server using Task Scheduler. For more information on how to accomplish this, search for Task Scheduler in Windows Help.


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

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.

Pattern Matching

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

Substitution

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.



from : http://www.linuxjournal.com/article/8919
- Extract하기

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"

XP에서는 기본으로 압축파일을 폴더 형식으로 지원한다.

쓸만한것 같아서 쓰고 있는데...

서버에 관리자가 알집을 깔았다가 지웠더니,

탐색기 나 바탕화면 맨 바닥에서 마우스 오른쪽 버튼을 누르면 생기는

'새로만들기>> 압축(ZIP) 폴더' 라는 녀석이 '새로만들기>> 새 알집(ZIP) 폴더' 라고 뜨는데

문제는 이렇게 생성한 압축파일은 에러가 난 파일이 생성되어 압축하거나 하는 작업을

할 수가 없다.

그래서 어찌저찌 찾은 것이...

C:WINDOWSsystem32zipfldr.dll 이라는 파일이다.

이녀석을

regsvr32 /u zipfldr.dll 이라고 실행해서 등록을 해제한다.

그리고 다시

regsvr32 zipfldr.dll 이라고 실행해주면, 재 등록 되는데

이런 과정으로 했더니 다시 원상복구되었다.
1. 쿼리 결과를 파일로 내리기

select top 100 *

from 테이블명

># c:output.txt


와 같이 하면 c:output.txt 에 컴마로 컬럼이 구분되고
row가 엔터로 구분되는 텍스트 파일이 생성된다.
>> 로 리다이렉션하면, 파일을 생성하지 않고 기존의 파일에 추가한다.

2. 쿼리결과+메시지까지 파일로 내리기

select top 100 *

from 테이블명

>& c:output.txt

로 하면 select 결과 뿐 아니라, 결과 메시지까지 파일에 생성된다.
예를들어...

%
% 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'.....
....

이런 식이다.

환율과 경제의 함수관계

환율과 경제의 함수관계