linux에서 특정 문자열을 치환하는방법에는 여러가지가 있는데
'Tools'에 해당되는 글 17건
- 2009/11/02 linux에서 문자열 치환 하는 방법
- 2009/09/09 [mac os x] ls 결과를 색깔로 구분해서 표시하기
- 2009/05/17 Windows vista에서 Visual Studio 2005의 호환성 문제 해결
- 2009/05/16 Windows XP and Widows Vista 에 Visual Studio 6.0 설치 하기
- 2009/05/08 Visual Studio 2008 black color scheme
- 2009/03/26 Daemon tools 대신 쓸만한 가상드라이브 프로그램 Virtual CloneDrive
- 2009/03/15 티스토리 스킨에 SyntaxHihglighter 2.0 적용 하기
- 2009/03/14 svn과 trac 기본 사용법
- 2009/03/14 Trac에서 소스코드 브라우저에서 소스코드의 한글이 깨져서 보일때
- 2009/03/14 Trac의 url 디코딩 관련 사항 (1)
ls 결과를 색깔로 구분해서 표시하기
Mac OS X 에 설치되어 있는 ls 명령은 -G 설정 혹은 CLICOLOR 환경 변수와 함께 사용되면, 결과들을 색깔별로 구분해서 나열할 수 있습니다. 여기에 표시되는 색깔들의 구분은 LSCOLORS 환경 변수를 따로 지정해서 사용자의 입맛에 맞게 변경할 수도 있답니다.
그래서, 예를 들어 만약 디렉토리 표시 색깔을 기본 파란색에서 노란색(원래 d값은 갈색을 나타내지만, 실제로는 노란색과 비슷하게 표시됩니다)으로 바꾸려면 터미널 초기 설정 파일(tcsh: ~/.cshrc, bash: ~/.profile)에 다음과 같이 설정해 줍니다.
tcsh shell일 경우:
코드:
setenv CLICOLOR 1
# use yellow for directories listing
setenv LSCOLORS dxfxcxdxbxegedabagacad
bash shell일 경우:
코드:
export CLICOLOR=1
# use yellow for directories listing
export LSCOLORS=dxfxcxdxbxegedabagacad
여기에 더해서, alias인 alias ls="ls -G" 설정을 추가해 주면 매번 ls 명령을 입력할 때마다, -G 설정을 입력할 필요가 없게 됩니다.
참고로, 기본 LSCOLORS의 설정값은 "exfxcxdxbxegedabagacad"이며, 변수의 속성들은 각기 쌍을 이루며 글자색과 배경색으로 묶여 있습니다. 여러 속성들의 순서는, 다음과 같습니다:
1. directory 2. symbolic link 3. socket 4. pipe 5. executable 6. block special 7. character special
8. executable with setuid bit set 9. executable with setgid bit set
10. directory writable to others, with sticky bit 11. directory writable to others, without sticky bit
그리고, 색깔을 나타내는 지시자들은 다음과 같습니다:
a black
b red
c green
d brown
e blue
f magenta
g cyan
h light grey
A bold black, usually shows up as dark grey
B bold red
C bold green
D bold brown, usually shows up as yellow
E bold blue
F bold magenta
G bold cyan
H bold light grey
x bdefault foreground or background
그
래서, 예를 들어 기본 설정값인 "exfxcxdxbxegedabagacad"는 일반 디렉토리의 경우, 파란색 글자(e)로 기본
배경색(x)을 바탕으로 표시되고, 심볼릭 링크(symbolic link)는 심홍색 글자(f-magenta)에 기본 배경색(x)을
바탕으로 표시되며, 뒤의 기타 속성들도 이러한 형식을 취합니다.
자세한 ls 관련 설명은 man ls로 설명서를 불러내어 읽어보시기 바랍니다.
Windows Vista에서 공식적으로 지원되는 Visual Studio 버전은 2005 이상입니다.
하지만 2005 버전에서도 호환성 문제가 발생 합니다.
이에 대한 패치는 Visual Studio 2005 서비스팩1과 비스타용 서비스팩 1 업데이트를 설치하면 해결될 수 있습니다.
Visual Studio 6.0은 XP나 Vista에서 설치가 되지 않는 경우가 있습니다.
이미 10년(정확한 출시일은 모르겠네요 10년쯤 된듯..)이나 된 개발툴을 아직도 써야 한다는 현실이 우울한거지
최신OS인 XP와 Vista를 탓할 문제는 아닌듯 합니다.
아무튼 MS의 KB에서 방법을 제시하고 있지만 방법이 너무 복잡하고 그마저도 않된다는 사람들이 많습니다.
서치를 하다 발견한 어느분 블로그에 나와 있는 방법을 소개 합니다.
바로 수동으로 설치 하는 방법 입니다.
여기서 X는 CD 드라이브의 문자, YYYYYYYYYY는 CD키 입니다. CD키는 하이픈(-)은 생략 합니다.
이렇게 실행을 했는데 "먼저 설치 마법사를 실행해야 합니다" 라는 메세지가 나온다면 다음 내용처럼 레지스트리 파일을 만들어서
레지스트리에 해당 내용을 추가해 주면 됩니다.
레지스트리 파일을 만드는 방법은 아래 내용을 테스트 편집기를 이용해서 파일로 저장하면 되는데 확장명을 .reg로 저장 하면 됩니다.
그리고 저장된 이 파일을 더블 클릭해서 실행하면 레지스트리에 내용이 추가 됩니다.
아래는 레지스트리 파일 내용 입니다.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\Setup]
"VsCommonDir"="C:\\Program Files\\Microsoft Visual Studio\\Common"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Visual Studio 98]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Visual Studio 98\SetupWizard]
"aspo"=dword:38395356
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Visual Studio 98\SetupWizard-1033-ENT]
"heuristics"=hex:00,00,00,00,00,00,00,00
원문 출처는 http://eyefocus.byus.net/tt/180 입니다.
Exported-color-2009-05-08.vssettings |
비주얼 스튜디오의 폰트와 배경색을 터미널의 화면 처럼 검정색 바탕으로 꾸며 봤습니다.
흰색 바탕도 괜찮지만 클리어 타입 폰트들의 가독성도 검정 바탕에서가 더 좋은거 같고
일단 뭔가 있어 보입니다 ㅋㅋㅋ
비주얼 어시스트를 사용 하신다면 추가 color 설정을 디폴트 버튼을 누르면 검정색용 디폴트 컬러로 마춰 질겁니다.
비주얼 어시스트가 디폴트 컬러를 2가지를 가지고 있더군요.
그리고 일부 설정을 조금만 손보시면 뭔가 있어 보이는 코딩 화면을 쓰실 수 있습니다. ㅎㅎㅎ
간편하게 이미지 파일을 마운트해서 cd나 dvd로 인식을 시켜 주니까요..
하지만 데몬툴즈가 상용화 되면서 무료 버전에는 각종 애드웨어가 포함되어 있어서 설치가 까다로워지고
프로그램의 덩치도 점점 커지는거 같아서 맘에 들지 않더군요.
그러던 중에 발견한 것이 Virtual CloneDrive 라는 프로그램 입니다.
크기도 매우 작은편이고 설치도 간편 합니다. 이상한 애드웨어도 없구요..
설치후 사용하는 방식은 데몬툴처럼 트레이에 등록 되서 사용 하는 방식이 아니고
그냥 이미지파일을 더블클릭 하면 바로 마운트 되어서 사용이 가능 합니다.
다운로드 주소는..
http://www.slysoft.com/en/download.html
개발자들 블로그에 돌아 다니다 보면 아래와 비슷한 모양의 소스를 보실 수 있을 겁니다.
// ExFile.cpp : 응용 프로그램에 대한 클래스 동작을 정의합니다.
//
#include "stdafx.h"
#include "afxwinappex.h"
#include "ExFile.h"
#include "MainFrm.h"
#include "ExFileDoc.h"
#include "ExFileView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CExFileApp
BEGIN_MESSAGE_MAP(CExFileApp, CWinAppEx)
ON_COMMAND(ID_APP_ABOUT, &CExFileApp::OnAppAbout)
// 표준 파일을 기초로 하는 문서 명령입니다.
ON_COMMAND(ID_FILE_NEW, &CWinAppEx::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CWinAppEx::OnFileOpen)
// 표준 인쇄 설정 명령입니다.
ON_COMMAND(ID_FILE_PRINT_SETUP, &CWinAppEx::OnFilePrintSetup)
END_MESSAGE_MAP()
// CExFileApp 생성
CExFileApp::CExFileApp()
{
m_bHiColorIcons = TRUE;
// TODO: 여기에 생성 코드를 추가합니다.
// InitInstance에 모든 중요한 초기화 작업을 배치합니다.
}
// 유일한 CExFileApp 개체입니다.
CExFileApp theApp;
이건 SyntaxHighlighter를 이용 해서 만든 겁니다.
간단하게 그 사용 법을 알아 보겠습니다.
우선 SyntaxHighlighter를 다운로드 받습니다.
http://code.google.com/p/syntaxhighlighter/ 에서 최신 버전인 2.0을 다운로드 받으시면 됩니다.
그다음은 압축을 푸시고 변경 하고자 하는 스킨(현재 스킨이겠죠..)에 scripts폴더와 styles폴더에 있는 파일들을 모두 업로드 합니다.
그다음은 아래 처럼 스킨의 html에 추가해 주시면 됩니다.
...
<SCRIPT src="./images/shCore.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushBash.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushCpp.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushCSharp.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushCss.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushDelphi.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushDiff.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushGroovy.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushJava.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushJScript.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushPhp.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushPlain.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushPython.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushRuby.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushScala.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushSql.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushVb.js" type=text/javascript></SCRIPT>
<SCRIPT src="./images/shBrushXml.js" type=text/javascript></SCRIPT>
<LINK href="./images/shCore.css" type=text/css rel=stylesheet>
<LINK href="./images/shThemeDefault.css" type=text/css rel=stylesheet>
...
</HEAD>
하지만 shCore.js는 반드시 포함 시키셔야 합니다.
그리고 다음 부분은 <body> 태그가 끝나기 전에 넣어 주세요.
그냥 <head>안에 같이 넣어도 되기는 하는데 간혹 스킨에 따라서는 안되는 경우도 있습니다.
SyntaxHighlighter.config.clipboardSwf = './images/clipboard.swf';
SyntaxHighlighter.all();
</script>
그 다음엔 사용 하는건 아래 처럼 표시 하고자 하는 소스 부분을 직접 태그로 사용 하시면 됩니다.
class="brush: " 부분에 해당 하는 언어를 적어 주시면 됩니다.
function test() : String
{
return 10;
}
</pre>
더 자세한 내용을 SyntaxHihglighter 홈페이지에 보시면 자세히 나와 있고요.
svn Repository 생성
저장소가 위치할 디렉토리로 이동한다 (ex : c:\svn_repos)
다음 형식 대로 명령을 실행 한다.
trac 프로젝트 생성
다음 형식 대로 명령을 실행한다.
{trac 프로젝트의 경로}는 trac 프로젝트가 저장될 디렉토리 입니다. (ex: c:\trac\test)
trac 웹어드민 권한 주기
이 기능은 version 0.11 이후 부터 지원 하며 해당 유저에게 TRAC_ADMIN 권한을 부여 합니다.
다음과 같은 형식의 명령을 수행 해서 권한을 부여 할 수 있습니다.
{trac 프로젝트의 경로}는 trac 프로젝트가 저장되어 있는 디렉토리 입니다. (ex: c:\trac\test)
{유저아이디}는 .htpassword 파일 상의 유저 아이디 입니다.
프로젝트의 소스파일이 UTF8이 아닌 eucKR(cp949)형식으로 되어 있을 때, Trac의 소스브라우저에서 소스 파일의 한글이 깨져 보이는 문제가 발생합니다.
다음과 같이 trac.ini 파일의 default_charset 값을 설정해서 이 문제를 해결할 수 있습니다.
[trac]
default_charset = euc-kr
바로 아래와 같은 애러가 발생한다.
Traceback (most recent call last):
File "c:\python25\lib\site-packages\Trac-0.12dev-py2.5.egg\trac\web\api.py", line 375, in send_error
data, 'text/html')
File "c:\python25\lib\site-packages\Trac-0.12dev-py2.5.egg\trac\web\chrome.py", line 758, in render_template
output = stream.render(method, doctype=doctype)
File "build\bdist.win32\egg\genshi\core.py", line 183, in render
return encode(generator, method=method, encoding=encoding, out=out)
File "build\bdist.win32\egg\genshi\output.py", line 56, in encode
return _encode(u''.join(list(iterator)))
File "build\bdist.win32\egg\genshi\output.py", line 307, in __call__
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\output.py", line 749, in __call__
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\output.py", line 588, in __call__
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\output.py", line 694, in __call__
for kind, data, pos in chain(stream, [(None, None, None)]):
File "build\bdist.win32\egg\genshi\output.py", line 528, in __call__
for ev in stream:
File "build\bdist.win32\egg\genshi\core.py", line 287, in _ensure
for event in stream:
File "build\bdist.win32\egg\genshi\core.py", line 287, in _ensure
for event in stream:
File "c:\python25\lib\site-packages\Trac-0.12dev-py2.5.egg\trac\web\chrome.py", line 812, in _strip_accesskeys
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\core.py", line 287, in _ensure
for event in stream:
File "c:\python25\lib\site-packages\Trac-0.12dev-py2.5.egg\trac\web\chrome.py", line 801, in _generate
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 603, in _include
for event in stream:
File "build\bdist.win32\egg\genshi\template\markup.py", line 382, in _match
ctxt, start=idx + 1, **vars):
File "build\bdist.win32\egg\genshi\template\markup.py", line 382, in _match
ctxt, start=idx + 1, **vars):
File "build\bdist.win32\egg\genshi\template\markup.py", line 330, in _match
for event in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 577, in _exec
for event in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 567, in _eval
for event in substream:
File "build\bdist.win32\egg\genshi\template\base.py", line 530, in _eval
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 585, in _flatten
for event in stream:
File "build\bdist.win32\egg\genshi\core.py", line 287, in _ensure
for event in stream:
File "build\bdist.win32\egg\genshi\path.py", line 145, in _generate
subevent = stream.next()
File "build\bdist.win32\egg\genshi\template\base.py", line 603, in _include
for event in stream:
File "build\bdist.win32\egg\genshi\template\markup.py", line 319, in _strip
event = stream.next()
File "build\bdist.win32\egg\genshi\template\base.py", line 577, in _exec
for event in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 567, in _eval
for event in substream:
File "build\bdist.win32\egg\genshi\template\base.py", line 530, in _eval
for kind, data, pos in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 585, in _flatten
for event in stream:
File "build\bdist.win32\egg\genshi\core.py", line 287, in _ensure
for event in stream:
File "build\bdist.win32\egg\genshi\path.py", line 145, in _generate
subevent = stream.next()
File "build\bdist.win32\egg\genshi\template\base.py", line 603, in _include
for event in stream:
File "build\bdist.win32\egg\genshi\template\markup.py", line 319, in _strip
event = stream.next()
File "build\bdist.win32\egg\genshi\template\base.py", line 577, in _exec
for event in stream:
File "build\bdist.win32\egg\genshi\template\base.py", line 567, in _eval
for event in substream:
File "build\bdist.win32\egg\genshi\template\base.py", line 554, in _eval
result = _eval_expr(data, ctxt, **vars)
File "build\bdist.win32\egg\genshi\template\base.py", line 281, in _eval_expr
retval = expr.evaluate(ctxt)
File "build\bdist.win32\egg\genshi\template\eval.py", line 178, in evaluate
return eval(self.code, _globals, {'__data__': data})
File "C:\Python25\lib\site-packages\trac-0.12dev-py2.5.egg\trac\templates\error.html", line 64, in
File "build\bdist.win32\egg\genshi\template\eval.py", line 311, in lookup_attr
val = getattr(obj, key)
File "c:\python25\lib\site-packages\Trac-0.12dev-py2.5.egg\trac\web\api.py", line 211, in
path_info = property(fget=lambda self: self.environ.get('PATH_INFO', '').decode('utf-8'),
File "C:\Python25\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xbe in position 6: unexpected code byte
유니코드 디코딩 애러가 발생 하는 이유는 파이썬에서 디폴트 문자셋의 설정과도 연관이 있지만.. apapche와 사용자 브라우저 간의 URL 전송의 문제로 발생 하는 경우도 있다.
무슨 이야기냐면 예를 들어 사용자 브라우저는 url을 euc-kr로 보내고 있는데 서버에서는 이것을 아무런 변환 과정 없이 utf-8로 받으면 문제가 되는 것이다.
이를 확인 하는 방법은... mod_python을 사용한 apache와의 연동이 아닌 아래와 같이 tracd로 해당 프로젝트를 8000번 포트로 뛰워서 url 디코딩에 문제가 없다면 십중 팔구 apache와 사용자 브라우저간의 url 디코딩 문제 입니다.
이럴 때에는 사용자 브라우저에서 url을 utf-8로 보내도록 설정 하면 문제가 없습니다.
참고로 이전에 리눅스 머신에서도 이런 문제가 있던 기억이 있지만 그때는 파이썬의 디폴트 문자셋을 utf-8로 바꿔줘서 해결했다.
그때도 이문제 였는지 파이썬 자체 문제 였는지는 명확치 않습니다.
하지만 윈도우 머신에 Trac이 설치 되어 있고 위에 설명한 것처럼 tracd로 테스트 해서 문제가 없다는 브라우저의 url 보내기를 utf-8로 사용 하는 것이 해결책 입니다.
추가로 이야기 하자면 apache 모듈인 mod_url을 이용해서 클라이언트에서 넘어온 url을 강제로 utf-8 변환해 주는 방법도 있다. 하지만 이 방법은 IE 7 버전에서는 되지를 않는다고 한다.
Exported-color-2009-05-08.vssettings


