나의 mini page

mini page는 여러분이 새 글타래(node)로 올리신 글의 목록을 블로그와 같은 형태로 보여줍니다. 홈페이지가 없으신 분은 간단히 mini page 를 여러분의 홈페이지로 외부에 광고하실 수도 있습니다. :-) mini page 기능은 계정이 있어야만 사용하실 수 있습니다.

bit값을 뒤집는 좋은 방법 없나요?

한 바이트 data를 뒤집는 좋은 방법 없나요?
예를들어 a라는 한 바이트 변수에 이진수로 01010100 이 저장되어 있을때
0bit값은 7bit값으로, 1bit값은 6bit값으로... reverse하여
00101010으로 저장되게 하는 좋은 방법 있으면 알려주세요.

이걸 위해 for문을 돌리자니 보기에도 안좋고, 시간도 많이 걸리고, 멋도 없네요.
뭔가 좋은 알고리듬이 있을거 같은데...

구글 검색방법 좀 알려주세요.

지금은 사라진 홈페이지의 내용을 찾고 있습니다.

구글에서 캐시 기능으로 그 페이지를 저장하고 있을지도 모른다는 생각에 찾아보려고 했는데,

제가 기억하고 있는 키워드들이 너무 추상적이고 막연한 것들이라 찾는 데 어려움이 있습니다.

그래서 혹시 주소로도 검색이 가능하지 않을까 생각이 들었는데요.

그러니까, 녹색으로 나오는 검색 결과의 주소를 키워드로 검색할 수도 있을까요?

예를 들어 example.org 라는 사이트의

example.org/1.htm 이라는 페이지는 캐시로 저장되어 검색이 되고 현재 열람 가능하고,

example.org/3.htm 이라는 페이지도 캐시로 저장되어 검색이 되고 현재 열람이 가능합니다.

그런데 그 사이에 있는 example.org/2.htm은 다른 페이지들이 저장되어 있는 것을 보면

이 페이지도 저장되어 있을 것 같은데, 캐시된 주소를 찾을 수가 없습니다.

하지만 모두가 example.org의 하위 페이지들이기 때문에 example.org란 주소를 매개로 하면

저장된 캐시를 찾을 수 있을 것 같은데요.

구글에서 이게 가능한 건지, 그렇다면 어떻게 해야 하는 건지 알려주셨으면 좋겠습니다.

아바타 갤러리 추가

아바타 갤러리를 추가하였습니다. 아바타는 자기 자신의 상징을 나타내는 이미지로서 직접 만들어서 올릴 수도 있고 이곳에 이미 올라와 있는 이미지들 중에서 선택하실 수도 있습니다.

아바타를 설정하시려면 "개인 정보"란의 아랫부분을 보시면 됩니다. 현재 약 500개가 넘는 이미지를 등록시켜 두었으니 마음에 드시는 것으로 선택하시거나 혹은 직접 등록하시기 바랍니다.

http://bbs.kldp.org/profile.php?mode=editprofile

참고: 아바타 기능은 등록 사용자만이 이용하실 수 있습니다.

페도라 코어5에 한글 2005 설치 & 실행 성공 하였습니다.

많은 삽질 끝에 페도라 코어5에 한글 2005 설치에 성공하였습니다.
제가 한 방법은 제가 생각해도 상당히 삽질이니, 다른 고수분들의 많은 의견을 기다리겠습니다.
오늘 어쩌다 yum의 새로운 명령어를 알았습니다.
yum localinstall package이름
다운 받아놓은 패키기에 대하여 의존성을 체크하여 설치해주는 명령입니다.

그동안 알아본바에 의하면, 한글 2005가 설치되지 않은 것이
libssl.so.5 libcrypto.so.5 의 버전이 openssl097a 용이라서 안되다고 알고 있습니다.
그래서 yum localinstall을 이용하면 문제를 해결 할 수 있지 않을 하고 이용하여 봤습니다.
그 결과는

Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package haansoft-hwp-trial.i386 0:6.4.0.1083-1hs set to be updated
--> Running transaction check
--> Processing Dependency: libssl.so.5 for package: haansoft-hwp-trial
--> Processing Dependency: libcrypto.so.5 for package: haansoft-hwp-trial
--> Processing Dependency: libgsf-1.so.114 for package: haansoft-hwp-trial
--> Finished Dependency Resolution
Error: Missing Dependency: libssl.so.5 is needed by package haansoft-hwp-trial
Error: Missing Dependency: libcrypto.so.5 is needed by package haansoft-hwp-trial
Error: Missing Dependency: libgsf-1.so.114 is needed by package haansoft-hwp-trial

역시 안되더군요.
그래서 한글 2002나 깔아서 사용하자는 생각에 한글 2002 패키지에 대해서 yum localinstall을 이용해서
설치를 하였더니, openssl097a을 설치 하더군요.
일단 한글 2002 설치에 성공하고, 다시 한번 한글 2005 설치를 시도하였지만, 같은 결과를 보여주면서 안되더군요.
그래서 일단 lib 화일에 대한 심볼릭 링크를 걸고.
cd /lib
ln -sf libcrypto.so.0.9.7a libcrypto.so.5
ln -sf libssl.so.0.9.7a libssl.so.5

행여나 해서
ln -sf libcrypto.so.0.9.7a /usr/lib/libcrypto.so.5
ln -sf libssl.so.0.9.7a /usr/lib/libssl.so.5 

이렇게 하고
cd /usr/lilb
ln -sf libgsf-1.so.113.0.3 libgsf-1.so.114
ln -sf libgsf-gnome-1.so.113.0.3 libgsf-gnome-1.so.114

하고
yum localinstall 을 했는데, 같은 결과를 보여 주더군요.

다시 kldp에서 우분투에 한글 2005을 깔았다는 게시물을 보니, 설치후 링크를 걸었더군요.
그래서
rpm --nodeps -Uvh haansoft-hwp-trial-6.4.0.1083-1hs.i386.rpm
로 무식하게 깔았습니다.
그리고
hwp
아래 그림과 같이 성공하였습니다. ^^V

저처럼 복잡한 방법 말고 좀 더 간단한 방법이 있을 거 같습니다.
많은 의견 부탁드립니다.

이제 cd에 들어 있는 실행화일이 하드디스크로 복사하면 실행이 되는데, cd에서 실행안되는 문제만 해결하면 됩니다.

FSF, 윈도우즈 비스타에 반대하는 캠페인 시작

FSF에서 비스타에 반대하는 캠페인 웹사이트를 개설했습니다. http://badvista.fsf.org/ 입니다. FSF는 이미 http://www.defectivebydesign.org/ 에서 Apple의 iTunes, iPod 등에 포함된 DRM에 반대하는 웹사이트를 개설하였는데 이번에는 윈도우즈 비스타에 포함된 여러 기술들이 어떻게 사용자들에게 문제가 되는지를 알리고 이를 반대하기 위한 목적으로 개설하였습니다.

관심 있으신 분들은 한번 가서 보시고 bsdvista에서 주장하는 구체적인 내용이 무엇인지 올려 주시면 감사드리겠습니다.

mplayerplug-in 재생창이 브라우저에 embeding 되어 있게 할려면

mozilla-firefox 에 mplayerplug-in 을 설치해서 웹동영상을 보고 있습니다.

/etc/mplayerplug-in.conf 

### Should it handle embedded movies ?
noembed=0
osdlevel=2

use-gui=mini
vo=xmga
fs=no

위 설정에서 noembed=1 으로 설정을 하면 동영상은 잘 보입니다만 재생창이 다른창으로 뜹니다.
그래서 재생창을 브라우저에 박혀있게 할려고 noembed=0 로 하면
동영상 버퍼링이 99% 까지 진행되고 멈추어버리네요.

다른 분들은 재생창이 브라우저에 박혀서 잘 보이시나요?
mplayerplug-in.conf 설정이 어떻게 되어있는지 좀 보여주십시요.

인터넷 대란의 원인은 DNS서버 관리 관행 탓

인용:
인터넷 대란의 원인은 DNS서버 관리 관행 탓
page 1/1
백재현기자 brian@inews24.com
2003년 02 월 09일

'1.25 인터넷 대란'의 진짜 원인은 관행처럼 굳어온 국내 DNS서버의 잘못된 관리체계 때문이라는 분석이 나왔다.

인터넷 및 호스팅 서비스 전문회사인 아이네트호스팅(대표 신중현 www.inet.co.kr)은 9일 DNS서버에서 로그기록서버나 스위치의 주소인 PTR(Pointer)를 관리하지하지 않은 것이 1.25 인터넷 대란의 결정적인 원인이라고 발표했다.

이같은 지적은 인터넷 대란의 사고 결정적인 원인이 'SQL 슬래머 웜' 때문이 아니라 국내 네트워크 관리구조에 있었음을 인정하는 것이어서 향후 배상문제 등에 상당한 영향을 미칠 것으로 보인다.

아이네트호스팅은 '지난 1월 25일 전국을 인터넷 불통사태로 만든 인터넷 대란의 일차적인 원인이 웜 바이러스에 의해 촉발된 것은 사실이나 실제적 원인은 잘못된 DNS서버의 관리 관행에 있다'고 지적했다.

아이네트호스팅이 밝힌 사고의 과정은 이렇다.

웜에 감염된 SQL서버들에 의해 유발된 대량의 비정상 트래픽을 스위치 장비들이 감지하고 이를 관리자용 로그기록서버로 전송했는데 로그 서버는 정보를 제공한 스위치의 주소를 파악하기 위해 DNS에 Reverse Query(역질의)를 전송하게 된다. 이 때 국내 관행상 DNS서버에는 스위치나 로그분석 서버의 PTR(Pointer-IP주소를 스위치 이름으로 바꿔줌)정보를 파악하지 않고 있기 때문에 DNS서버는 로그 서버로 다시 '자료 없음'이라는 응답을 주게 되고 이는 다시 로그서버로 하여금 DNS에 주소를 묻는 Query를 보내게 만드는 과정이 반복되면서 패킷이 폭증했다는 것이다.

미국 등 해외에서 이번 사고의 피해가 적었던 것도 외국은 DNS서버가 PTR정보를 관리하기 때문이었다는 것이 아이네트호스팅 측의 분석이다.

이 회사의 기술운영팀 신승민 팀장은 "인터넷 웜의 감염에 의한 전형적인 현상은 트래픽의 비정상적인 증가이며, 이 증가는 ISP(인터넷서비스제공업체)혹은 IDC(인터넷 데이터센터)에서 사용하는 스위치 등의 장비에 의해서 모두 감지될 수 있고 그 내역을 자동으로 보고되도록 돼 있다. 또 감염시에는 그 보고 횟수가 현격히 증가하게 돼 로그서버로 전송되는 트래픽의 양이 커지며 최악의 경우 로그 서버가 마비되는 현상이 올 수 있다. 그러나 이 경우에도 인터넷이 마비되는 극한 상황은 절대로 발생하지 않는다. 문제는 로그 서버가 문의하게 되는 Reverse Query에 대한 응답이 제대로 나와줘야 하는데 이번 사고에서는 그렇지 못해 Reverse Query가 반복적으로 발생하게 되고 이러한 Query의 증가로 인해 오히려 DNS 서버가 마비되는 현상이 발생한 것"이라고 설명했다.

따라서 DNS에 각 스위치 장비에 대한 PTR 자료가 관리됐다면 한 스위치당 한번의 Reverse Query만을 전송해 DNS서버를 마비시킨 패킷의 폭증은 발생하지 않았을 것이라는 주장이다.

이 회사 위의석 이사는 "PTR정보는 관리자가 아니면 알 필요가 없는 정보이기 때문에 국내에서는 10여년동안 DNS서버가 이를 관리하지 않는 것이 관례였다."고 말하고 "따라서 이번 사고의 책임론이 거론되고 있는 KT를 비난하기는 어려운 실정"이라고 덧붙였다.

그는 그러나 "지난해 부터 DNS서버를 공격하는 웜이 나타났었던 만큼 필터링 시스템 설치 등의 조치를 취했어야 한다고 생각한다."고 지적했다.

한편 위의석 이사는 "이같은 자체 파악한 원인을 KT에 간접 통보했지만 KT는 이를 100% 인정하지는 않고 있는 것 같다."고 전했다.


<Copyright ⓒ inews24. 무단전재 및 재배포 금지>

PTR 정보를 설정하는 않는 관행 자체가 전혀 무리가 없는 것인지 여러분들의
의견을 듣고 싶습니다.

그동안 초보 관리자들의 많은 질문 중에 하나가 PTR 이 없어서 각종 서비스의
로그 시에 오래 정체되는 문제였는데, 왜 PTR 정보를 관리안해온건지도
궁금하군요.

[완료]char* name과 char *name, 어떤걸 써야하나요?

컴파일 결과는 둘다 똑같은 걸로 알고있습니다.
하지만 코딩할 때, 어떤 표현이 정확한건지 궁금합니다.
아시는 분 좀 갈켜주세요~.

[질문] 문자열 처리할때 메모리 할당 방식이 궁금합니다.

안녕하세요

문자열을 저장하고 난후 이를 조작하고자 하는 작업을 할때,
문자열을 저장하는 두 방식에 차이가 있는지 궁금하네요

1. 배열로 선언된 곳에 저장한다.
...
char AA[128] = {0};
strcpy(AA, inet_ntoa(addr));
...

2. 포인터를 선언한후 메모리할당을 하고 저장한다.

...
char* BB;
BB = new char[128];
strcpy(BB, inet_ntoa(addr));
delete[] BB;
....

두개다 컴파일 정상이라는 가정하에 단지 어떤 방식이 더 좋은지...
알려주세요!!!

compiler design in c 갖고 계신분?

현재 대한민국에 없는 서적인 관계로

값은 후하게 쳐 드리겠습니다.

zenyker@nate.com 으로 메일 주세요

우분투(dapper)에서 한글 2005 체험판 설치하기

우분투(dapper)에서 한글 2005를 설치하기 위해서는 몇가지 작업이 필요하다.

1. 먼저 다음 주소에서 rpm을 다운로드 한다.
http://haansoft.lgcdn.com/haansoft/linux/HWP/2005/haansoft-hwp-trial-6.4.0.1083-1hs.i386.rpm

2. alien을 설치한다. (설치되어 있다면 패스)

$ sudo apt-get install alien

3. alien을 이용해 rpm을 deb으로 변환한다.

$ sudo alien -k --scripts haansoft-hwp-trial-6.4.0.1083-1hs.i386.rpm

4. 변환된 deb을 설치한다.

$ sudo dpkg -i haansoft-hwp-trial_6.4.0.1083-1hs_i386.deb

5. 설치가 끝나고 실행하면, 몇가지 라이브러리 문제로 제대로 실행이 되지 않는다. 다음과 같이 라이브러리에 링크를 걸어준다.

$ cd /usr/lib
$ sudo ln -sf libgsf-1.so.113.0.99 libgsf-1.so.114
$ sudo ln -sf libssl.so.0.9.7 libssl.so.5
$ sudo ln -sf libcrypto.so.0.9.7 libcrypto.so.5

6. 실행한다.

$ hwp

와우. 성공

haansoft-hwp

소스코드를 올릴 때는 BBCode를 활용해 주세요.

소스코드를 올릴 때는 BBCode를 활용해 주세요.

BBCode는 메시지 본문 작성시 제목과 본문 사이에 있는 B, i, u, Quote, Code, List 등입니다. 이를 적절히 활용하시면 좀더 읽기 편하고 깔끔한 게시물을 작성하실 수 있으며 특히 소스코드의 경우 Code를 활용하시면 매우 편리합니다. 예를 들면 다음과 같습니다.

#include <stdio.h>

main()
{
printf("Hello, World\n");
return 0
}

이것을 Code를 사용하면 다음과 같이 보이게 됩니다.

#include <stdio.h>

main()
{
      printf("Hello, World\n");
      return 0
}

방법은 간단합니다. 소스코드를 적고 소스코드 부분을 마우스로 선택한 후 Code 버튼을 클릭해 주기만 하면 됩니다. 그외에도 사용하실 수 있는 다른 BBCode들이 많이 있으니 글 쓰실때 잘 활용하시면 좀더 읽기 편한 게시물을 쉽게 작성하실 수 있으니 참고하세요.

자세한 것은 테스트 및 자유 게시판에서 각자 테스트해 보시기 바랍니다. 알고 보면 아주 쉽습니다. 8)

리눅스를 윈xp와 같이 하려구하는데여,,,모르니까 자꾸물어보게

하드가 두개거든여 40기가 하구 6기가.. 짜리
레드햇7.2를 xp하구 같이 깔려구 하는데여 xp는 c에우선깔았구여
리눅스를 6기가 짜리 하드에 깔려구하는데
그래두 멀티 부팅이 되는가여,,문제안생기구여??/
전에 함깔았다가.. 머가 잘못됬는지 포맷하구 다시 xp를 깔았거든여,,
답변 부탁드립니다...꾸벅

어떤 것을 공부해야 할지...막막한 IT수강생이...

지금 네트워크와 관련된 IT과정을 수강하고 있는 학생이랍니다.
지금은 TCP/IP를 공부하면서 막연히 네트워크 프로그래밍을 생각하고
있는데, 수료 후에 잘 나가지 않는다고 하더군요.
물론 열심히 잘해서 프로젝트 마무리 하면 잘 되겠지만
어떤 것을 해야 좋을지 모르겠답니다.
시스템 프로그래밍이라고 하는것이 무엇인지
네트워크 프로그래밍이란 또 어떤 것인지
휴학생의 신분이고 이제 시작하는 사람이라서
아는 것이 없습니다. 수료를 어떻게 하느냐에 따라서
취업할 수 있는 분야가 다르겠지만 어떤 일을 하게 될지 궁금합니다.
업계의 현황은 어떤지도 알고 싶습니다.
좋아하는 일을 하는것이 제일 좋겠지만
업체에서 계신 분들은 어떤 것들을 추천하고 싶으신지
듣고 싶습니다.
시스템 프로그래머나 네트워크 프로그래머가
나가서 하게 될 일들도 좀 알려주시면 좋겠습니다.
어떤 것을 준비하면 도움이 될지도 알고 싶습니다.
학교와 학원에서는 이렇지만 졸업(수료)후에는 이렇다...라는
솔직한 답을 달아주시면 정말 감사드리겠습니다.
초보자라서 이런 글밖에 못올리는게 좀 아쉽지만...
시간이 지나 전문가라고 생각될 때
리플을 달 수 있는 사람이 되었으면 좋겠습니다...

10일째 답변이 없는 그 질문(자바스크립트 스크롤 메뉴 관련)

var stmnLEFT = 0; // 오른쪽 여백 (메뉴가 오른쪽에서 0픽셀 떨어진 곳에 보여집니다) 
var stmnGAP1 = 250; // 위쪽 여백 (메뉴가 위에서 250픽셀 떨어진 곳에 보여집니다) 
var stmnGAP2 = 0; // 스크롤시 브라우저 위쪽과 떨어지는 거리 
var stmnBASE = 250; // 스크롤 시작위치 
var stmnActivateSpeed = 10; 
var stmnScrollSpeed = 10; 

var stmnTimer; 

function RefreshStaticMenu() 
{ 
var stmnStartPoint, stmnEndPoint, stmnRefreshTimer; 

stmnStartPoint = parseInt(STATICMENU.style.top, 10); 
stmnEndPoint = document.body.scrollTop + stmnGAP2; 
if (stmnEndPoint < stmnGAP1) stmnEndPoint = stmnGAP1; 

stmnRefreshTimer = stmnActivateSpeed; 

if ( stmnStartPoint != stmnEndPoint ) { 
stmnScrollAmount = Math.ceil( Math.abs( stmnEndPoint - stmnStartPoint ) / 15 ); 
STATICMENU.style.top = parseInt(STATICMENU.style.top, 10) + ( ( stmnEndPoint<stmnStartPoint ) ? -stmnScrollAmount : stmnScrollAmount ); 
stmnRefreshTimer = stmnScrollSpeed; 
} 

stmnTimer = setTimeout ("RefreshStaticMenu();", stmnRefreshTimer); 
} 

function InitializeStaticMenu() 
{ 
STATICMENU.style.top = document.body.scrollTop + stmnBASE; 
RefreshStaticMenu(); 

STATICMENU.style.left = stmnLEFT; 
} 
<div id="STATICMENU" style="position:absolute; z-index:100; left:0px; top:250px; width: 180px; height: 500px;"> 

<table width="180" border="0" cellspacing="0" cellpadding="0"> 
  <tr align="right"> 
    <td> 
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" 
WIDTH="180" HEIGHT="820" hspace="0" vspace="0" ALIGN=""> 
        <PARAM NAME=movie VALUE="/images/swf/left_menu_intro.swf"> 
        <PARAM NAME=quality VALUE=high> 
        <PARAM NAME=wmode VALUE=transparent> 
        <PARAM NAME=bgcolor VALUE=#FFFFFF> 
        <EMBED src="/images/swf/left_menu_intro.swf"  WIDTH="180" HEIGHT="820" hspace="0" vspace="0" ALIGN="" quality=high wmode=transparent bgcolor=#FFFFFF 
TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> 
      </OBJECT> 
</td> 
  </tr> 
</table> 
</div> 
<script language='javascript'> 
<!-- 
InitializeStaticMenu(); 
//--> 
</script> 

위의 소스를 사용하고 있는데요, 문제점이 하나 있습니다.
스크롤이 되긴데는데 레이어의 세로길이가 길어 스크롤이 페이지 끝에서 멈추지 않고
계속 내려간다는 것이죠.

height 를 줄이지 않고 스크롤이 페이지 끝에서 멈추게 해주세여

한마디로 스크롤좀 멈춰주세요~

이 문제점을 해결해주시면 정말 고맙겠습니다.

답변 부탁드려요.

http://kldp.org 초기화면 공모전 시작, BBS 디자인 개편 예고

http://kldp.org 초기화면 공모전을 시작합니다. 여러분들의 많은 참여 부탁드립니다. 이 페이지 위에 흘러가는 글자 보이시죠? :-)

자세한 내용은 http://wiki.kldp.org/wiki.php/KLDPFrontPage 를 참고하세요.

다음 글타래도 같이 참고하시면 좋습니다.

http://bbs.kldp.org/viewtopic.php?t=37131 http://bbs.kldp.org/viewtopic.php?t=37101

그리고 이곳 KLDP BBS의 디자인도 약간 개편하여 KLDP Wiki나 KLDP.net 등에서 진행중인 활동 소식을 좀더 쉽고 편리하게 접하실 수 있도록 BBS 상단부에 KLDP Wiki, KLDP.net, geekforum의 헤드라인을 중계할 예정입니다. 세부적인 디자인은 아직 확정되지 않았습니다만 최대한 현재 구조를 변경하지 않는 선에서 간단하게 수정할 예정입니다.

현재 안은 페이지 상단 왼쪽에 있는 BBS 로고를 없애고 지금 페이지 상단 가운데 위치한 검색/로그인 박스를 왼쪽에 배치하여 공간을 확보해서 그곳에 헤드라인을 넣을 생각입니다. 어느날 구성이 바뀌어도 놀라지 마세요. :-)

참, 공모전에 참여해 주시는 분들을 위해서 조촐한 선물도 마련하였으니 부디 많은 참가 부탁드립니다....

[구인]연구개발 인력을 찾습니다.

안녕하세요, 설립한지 3주가량 된 신설회사입니다.

저희와 발전하실 역량있는 분을 찾습니다. 주로 개발에 따른 해외판매및 수출
에 주력을 두고 있구요. 이미 일정한 영업망을 갖고 있습니다만 보다 나은 제품
개발의 결과로 급성장할 여러분의 힘과 지혜가 필요합니다. 최소한 2-3년을 근
속하실 분이 필요합니다. 지원해주십시요.

분야: 연구개발(리눅스엔지니어를 중심으로)
고용형태: 정규직,경력자(1년이상 우대)
근무지: 서울 강남 역삼 650번지 차병원 사거리
접수마감: 수시채용(매주 금요일 서류마감)
단, 채용완료시 재공고 또는 글 삭제예정

채용부문/ 해당

1. 하드웨어 부문: 전기전자계열 졸업및 예정자
DSP /FPGA 개발경력자 우대
2. SW부문: MICRO PROCESSOR 프로그래밍 개발가능자
C-Language, Internet/Network 프로그래밍
RTOS 프로그래밍 개발자(LINUX 포함)
3. 디자인부문: UI 컨셉 DESIGN및 WEB PUBLISHING 가능자
각종 TOOL(PHOTOSHOP,ILLUSTRATOR,AUTOCAD등)
사용 중급 이상자,여성에 한함

제출서류

1. 이력서 1부(HWP/WORD,사진포함):1Page
2. 자기소개서1부:1Page
3. 경력자의 경우 프로젝트 수행내역:1Page
디자인의 경우 포트폴리요 면접 내사시 지참요망

제출방법및 전형절차

1. 이메일 접수: kdpark@techtrons.com
2. 전형절차
2.1 서류전형 2.2 실무면접 2.3 임원면접(대표이사)

기타사항

cgi 설치에관한 질문임니다. -cgi 초보 올림-

cgi 를 쓸려구 하는데요..
unix shell의 결과값을 웹으로 띄울려구 하는데요
짐 제가 돌리구 있는 서버에는 cgi 프로그램이 안깔렸거든요.
여기저기 웹 검색을 해봐도 cgi 공개 프로그램이라던가
그런게 전혀 안보이던데요..
그런 프로그램이 없는건가요. ../cgi-bin 이런디렉토리또한
강제로 만들어야 되나요 아님 설치하면 자동으로 생성되는건가요
고수님들의 조언을 좀 부탁드리겠습니다.
그리고 만약 프로그램이 있다면 있는곳 주소라도 좀 가르쳐 주세요.
읽어 주셔서 감사합니다.

corss 컴파일 과정중

configure 파일에

--host=HOST             configure for HOST [guessed]
--target=TARGET         configure for TARGET [TARGET=HOST]

이런 항목들이 있는데요

이 항목의 역활과 사용법을 잘 모르겠습니다.

보통 크로스 컴파일 할때 이곳에

--host=arm-linux --target=arm-linux


이런 형식으로 넣어주면
알수없는 호스트, 타겟이라고 나오는데요

어떻게 넣어야 arm 이라는걸 알려줄수가 있나요?
또 저 변수의 역활은 무언가요?

DNS 2개 이상의 도메인 설정 방법?

1.1.1.1 = aaa.com
1.1.1.2 = test.aaa.com 이 있습니다.

그런데 bbb.com 도메인도 하나 생겼습니다. 다시 말하면 origin가 2개 입니다.
그래서 bbb.com을 1.1.1.2의 test.aaa.com 에다가 도메인명을 같이 쓰고 싶은데 이럴때는 어떻하나요?

1.1.1.2 = test.aaa.com
= bbb.com

요렇게..

cname을 쓸수도 없고... -__-;;

홈페이지 계정에서 www-data 로 사용자가 된 데이터들은..

어떻게 백업을 해야하는 거죠? -.-;;

root를 얻어 올 수도 없고..

방법이 있나요?

kde(qt)에서 한자표시 문제

오랜만에 KDE를 설치해봤습니다.

우분투 hoary 로 기본설치를 하고(server) breezy로 소스리스트를 바꾼후 kubuntu-desktop 을 설치했습니다.

근데, KDE(qt)의 문제인지 우분투의 문제인, 아니면 기본 글꼴로 설정해놓은 은폰트의 문제인지 웹페이지나 카테 등에서 일부 한자가 제대로 나타나지 않는 군요.
반면에 파이어폭스등 gtk2 계열에서는 잘 나타납니다.

다른 분들은 어떠신지요?
---
참고 사이트 http://hanja.pe.kr/tt/board/ttboard.cgi?db=book

리눅박스로 인터넷공유시에 각각의 클라이언트들의 속도를 제한

커널 2.4.*
iptables로 인터넷공유중입니다.

한대가 너무 많은 다운로드를 받는 상습범이라서;;
속도제한을 했으면 하는데 방법이 없을가요.

컴퓨터공학 전공하시는 분들은 졸업할때 어느 정도의 포트폴리오(?)를 가지고 있나요?

일단 졸업 후 프로그래머로 취직하시려는 분들에 한해서 질문드리는 겁니다. 적당한 단어가 생각이 안나서 일단 포트폴리오라고 제목을 썼습니다. 취업을 앞두고 계신 분들은 4년동안 학교 다니면서 본인이 작성한 프로그램들을 어느정도 가지고 있으리라 생각되는데요.. 여러분들이 작성한 프로그램의 난이도(?)가 궁금합니다.

제가 웹프로그래머로 근무하다가 리눅스 C 프로그래머 하겠다고 회사 때려치고 고시원에 쳐박혀서 공부한지 벌써 3개월째 입니다. 처음 한두달은 공부 한다고 책만 붙들고 늘어지면서 아주 짧은 프로그램 몇개 만들어본게 고작이고 마지막 한달동안 4,000 라인짜리 FTP 서버 프로그램 하나 만들어봤습니다. 그리고 지금은 MSN bot을 만들고 있고 다음엔 GTK+ 기반의 MSN 클라이언트를 만들 계획입니다.

저는 대학교를 다니지 못해서 취업할때 에로사항이 참 많았습니다. 특히 지금처럼 예전 경력이 하나도 인정이 안되는 분야로 전업을 하는 상황에서는 더욱더 힘들거라 생각되구요. 그나마 면접이라도 볼 수 있다면 저에 대해서 어필할 수 있는건 제가 공부하면서 하나하나 만들었던 프로그램일텐데요.

그런데 아래 글을 읽다보니 제가 너무 난이도가 낮은 프로그램만 만들고 있는게 아닌가 하는 생각이 듭니다.

http://kldp.org/node/68181

저는 위 글의 댓글에 있는 내용이 뭔지도 모르겠더군요. 다른 대졸 신입 지원자들은 이런 프로그램 만들어서 이력서 넣는데 저는 고작 FTP 서버나 만들어보고 취업하려고 하는건 아닌지 걱정이 되서 글을 남겨봅니다.

하루아침에 남들 4년 배운걸 따라 잡을수는 없겠지만 제가 너무 쉬운쪽으로만 하고 있는거라면 좀 더 난이도가 높은 쪽으로 도전을 해보려고 합니다. 사실 난이도가 높은게 뭔지는 저도 잘 모르겠고 어떻게 해야하지 막막하긴 합니다만 다른 분들은 어떤지 알면 좀 도움이 되지 않을까 싶습니다. :sad:

lcd 패널 tv 자작 키트,,

제가 요즘 컴포지트 신호를 흉내내서 화면을 디스플레이 해보려고 하는데,,
--
전에 어떤 분께서 lcd 패널로 tv 자작하는 키트 관련 사이트

소개 하셨던 적이 있었는데, 도무지 검색이 안되네요..

짬 나시면 다시 한 번 알려 주셨으면 고맙겠습니다..

그 때 기억으론 lcd 패널하고 a/d 보드(d/a 였던가?),, 이런거

판매하는 사이트였던 걸로 기억합니다.
--

전에 어떤 카테고리에서 본지 기억이 안나서,, 부득이 자유게시판에 올립니다^^

GDB 잘 쓰기

  1. GDB 잘 쓰기
  2. GDB 잘 쓰기 2: User Defined Commands

디버깅 작업 또는 프로그램의 안전성을 검사할 때 디버거를 잘 쓰면 꽤 많은 시간을 절약할 수 있습니다. 대부분 개발자들이 GDB를 써서 디버깅을 하고 있지만, GDB가 가지고 있는 강력한 기능들을 거의 쓰지 못하고 있기 때문에, 이 글에서는 자주 쓰이지는 않을 지언정, 알면 매우 도움이 되는 기능들을 위주로 살펴보겠습니다.

먼저, 이 글을 읽는 분들이 GDB의 기본적인 사용 방법 (특히 break, run, continue, file, backtrace, print 등)을 알고 있다고 가정하겠습니다. 기본적인 사용 방법을 모르신다면 Emacs/GDB/etags/cscope나 기타 GDB manual을 참고하기 바랍니다.

Breakpoints

break 명령은 대개 다음과 같이 쓸 수 있다는 것은 이미 알고 계실 것입니다:

(gdb) break                # 현재 줄에 breakpoint 설정
(gdb) break 31             # 현재 파일 31번째 줄에 breakpoint 설정
(gdb) break foo            # 함수 foo에 breakpoint 설정
(gdb) break list::next     # list 클래스 next 멤버 함수에 설정
(gdb) break hello.c:main   # hello.c 파일의 main 함수에 설정
(gdb) break util.c:300     # util.c 파일의 300번째 줄에 설정

특히 C++의 경우, 한 클래스의 모든 멤버 함수에 breakpoint를 설정하고 검사할 필요가 있는데, 이 경우, 정규 표현식(regular expression)으로 breakpoint를 설정하는 rbreak 명령을 쓰면 편리합니다. 예를 들어 보면:

(gdb) rbreak f*o           # "f*o"를 만족하는 심볼 전체에 대해 설정
(gdb) rbreak list::        # "list::.*"를 만족하는 심볼 전체에 대해 설정

특히 위 두번째 예제를 보시면 ".*"이 항상 default로 따라 온다는 것을 알 수 있습니다. 사실 rbreak 명령에 "foo"를 준 경우 사용되는 정규 표현식은, 정확히 말하면 ".*foo.*"가 됩니다. 따라서 "foo"로 시작하는 함수 전체에 대해 breakpoint를 설정하고 싶다면, 다음처럼 쓰면 됩니다:

(gdb) rbreak ^foo

breakpoint를 설정하면, 해당 breakpoint마다 번호(BNUM)가 주어지고, 이 번호를 써서 다양한 작업을 수행할 수 있습니다. 예를 들어, 전체 breakpoint 목록을 보고 싶다면:

(gdb) info b
Num Type           Disp Enb Address    What
1   breakpoint     keep y   0x08066b44 in eventShow() at menubar.cpp:1017
        breakpoint already hit 3 time
2   breakpoint     keep y   0x080b06f4 in Play() at thumbview.cpp:416
3   breakpoint     keep y   0x08066e7e in ActPlay() at menubar.cpp:1085
4   breakpoint     keep y   0x08059cd3 in Play_SS(int, int) at widgets.cpp:2183
(gdb)

첫번째 컬럼(Num)은 각 breakpoint에 대한 고유번호(BNUM)를 나타냅니다. 그리고 두번째 컬럼(Type)은 breakpoint인지 watchpoint인지 catchpoint인지를 나타냅니다. (watchpoint와 catchpoint는 다음에 설명..) 그리고 세번째 컬럼(Disp)은 이 breakpoint의 특징을 나타냅니다. (다음에 설명). 네번째 컬럼(Enb)는 현재 이 breakpoint가 활성화되어 있는지를 나타냅니다. 비활성화(n)로 표시된 breakpoint는 동작하지 않습니다. 활성화/비활성화는 'enable br [BNUM]' 또는 'disable br [BNUM]'으로 변경할 수 있습니다. 예를 들어 1번 breakpoint를 비활성화하고 싶다면:

(gdb) disable br 1

전체 breakpoint를 활성화하고 싶다면:

(gdb) enable br

2번, 4번 breakpoint를 비활성화하고 싶다면:

(gdb) disable br 2 4

2번부터 5번까지 breakpoint를 활성화 하고 싶다면:

(gdb) enable br 2-5

등으로 할 수 있습니다.

때때로, 딱 한 번만 쓸 breakpoint가 필요한 경우가 있습니다. 이 경우 쓸 수 있는 명령은 enable br once [BNUM] 또는 enable br delete [BNUM]을 쓸 수 있습니다. 예를 들어 아래 명령은 1번, 3번 breakpoint를 활성화하고, 사용된 경우 바로 비활성화시킵니다:

(gdb) enable br once 1 3

아래 명령은 4번 breakpoint를 활성화하고, 사용된 경우, 이 breakpoint를 삭제합니다:

(gdb) enable br delete 4

쓸모있는 기능 중 하나가 바로 breakpoint에 조건을 지정하고, 해당 조건을 만족할 경우에 멈추도록 하는 것입니다. 예를 들어 다음과 같은 코드가 있다고 가정해 봅시다:

int i = 0;

/* do something #1 */

for (i = 0; i < 1000; i++) {
  /* do something #2 */
  /* do something #3 */
}

이상하게도 i가 456일때 반복문 안에서 프로그램이 이상하게 동작한다고 가정해 봅시다. 이 때 "do something #2" 부분에 breakpoint를 걸었다면 (이 breakpoint의 번호는 8번이라고 가정합시다), 반복할 때마다 계속 프로그램 실행이 멈출 겁니다. 정확히 1000번 멈추겠죠. 456번까지 진행한다는 것은 매우 귀찮은 일입니다. 이 경우, 다음과 같이 조건을 지정할 수 있습니다:

(gdb) cond 8 i == 456

즉, 8번 breakpoint는 i == 456을 만족할 때에만 멈추도록 지정합니다. 조건식에는 단순한 상수 비교 이외에, 복잡한 함수 호출도 가능합니다. 예를 들면 다음과 같습니다:

(gdb) cond 8 foo(i) > bar(rand())

앞에서 예로 든 코드는 단순 반복문이기 때문에, 처음 456 - 1번에 발생하는 breakpoint는 무시하라고 지정할 수도 있습니다. 처음 N번 발생하는 breakpoint를 무시하라는 명령은 다음과 같습니다:

(gdb) ignore 8 455

즉, 8번 breakpoint는 455번 동안 무시됩니다.

또, 다음과 같은 코드를 가정해 봅시다:

int i = 0;
int j, k;
long l;

while (1) {
  j = rand();
  k = some_funtion(j, time());

  /* do something #1 */
  l = j & 0xFF00 + (int)(log(k) * 3.2108) - ...;

  if (some_condition)
    break;
}

위 코드는 j와 k가 실행할 때마다 값이 변합니다. 그리고 이상하게도 j < k 일때 변수 l이 이상한 결과를 가지는 것 같지만, 확실하지는 않습니다. 우리가 확신할 수 있는 것은 j < k일 경우, l은 항상 양수이어야 한다는 것입니다. 그래서 l의 값이 전체 반복을 끝낼 동안 어떤 값을 가지고 있는지 검사해보고 싶습니다. 이 경우 해당 breakpoint에서 멈출 때, 특정 명령을 수행하도록 하는 GDB 명령인 commands를 쓰면 됩니다.

일단 "l = j & 0xFF00..." 부분에 breakpoint를 걸고 (9번 breakpoint라고 가정), 다음 명령을 내립니다:

(gdb) commands 9
Type commands for when breakpoint 9 is hit, one per line.
End with a line saying just "end".
>silent
>if j < k
 >printf "l is %d\n", l
 >end
>cont
>end

대충 눈치가 빠른 분은 아시겠지만 'commands [BNUM] ... end'는, BNUM breakpoint에서 멈췄을 때, "..."에 지정한 GDB 명령들을 수행합니다. 일단 silent 명령으로 명령 자체가 출력되지 않도록 한 다음, GDB printf 명령으로 변수 l 값을 출력합니다. 그리고 continue 명령으로 계속 프로그램을 진행하도록 합니다. 그 결과, 프로그램을 실행할 경우, breakpoint에서 멈추고 l 값을 출력한 다음 프로그램을 자동으로 진행합니다. 이 과정은 반복문이 끝날 때까지 계속되기 때문에, 다음과 같은 비슷한 출력을 얻을 수 있습니다.

(gdb) continue
l is 3
l is -2
l is 2
l is 1
l is -3

앞에서 j < k일 때, l은 항상 양수여야 한다고 말했습니다. 위 결과를 보고 우리는 l 값이 때때로 잘못된다는 것을 쉽게 알 수 있습니다.

commands에 쓸 수 있는 GDB 명령어 형태는 다음 기회에...

가끔 next나 step으로 실행 과정을 따라 가다가 반복문을 만날 경우, 반복문 끝난 부분으로 바로 건너뛰거나, 현재 함수의 실행을 정상적으로 끝내고 상위 함수로 돌아가야할 경우가 있습니다. 예를 들어:

for (i = 0; i < 1000; i++) {
  /* do something #1 */
  /* do something #2 */
}
/* do something #3 */

현재 "/* do something #2 */" 부분까지 실행했고, 이 반복문에 이상이 없다고 판단되면, 반복문 다음까지 빠르게 진행하고 싶을 겁니다. 이 경우, until 명령이나 advance 명령을 쓰면 편리합니다.

until 명령을 쓰면, 반복문이 아닌 경우에는 next 명령과 똑같이 동작합니다.

(gdb) until

반복문일 경우, 현재 스택 프레임 (즉, 현재 함수) 안에서, 현재 줄 다음 줄에 올 때까지 프로그램을 실행합니다. 쉬운 말로, 루프를 진행하고 빠져 나오는 순간까지 실행한 다음 "(gdb)" 프롬프트를 보여줍니다.

advance 명령은 continue 명령과 마찬가지로 프로그램을 주욱 실행시키는 대신, 지정한 곳에 코드 흐름이 오면 바로 멈춥니다. 예를 들어 위 코드의 "/* do something #3 */" 부분의 줄 번호가 34였다면, until 명령 대신 다음과 같이 실행할 수도 있습니다:

(gdb) advance 34

advance 명령은 스택 프레임에 대한 제한이 없기 때문에, 현재 함수가 아닌, 아무 곳이나 설정할 수 있으며, 위치 지정은 줄 번호 뿐만 아니라, break 명령에 쓰는 모든 형식을 다 지원합니다.


네트워크로 서비스 요청 데이터를 전송받아 분석하고, 적절한 기능을 수행하고, 그 결과를 돌려주는 서버 프로그램을 생각해 봅시다. 그리고 다음과 같은 꼴로 되어 있다고 가정해 봅시다:

#define PACKET_MAX      10

int
fetch(void)
{
  int packet_received = 0;
  int received[PACKET_MAX];

  while (1) {
    if (!packet_received) {
      if (recv_data(received, PACKET_MAX) == 0)
        packet_received = 1;
    }

    /* do work here */

    process_packet(received, PACKET_MAX);
  }
  return 0;
}

이 프로그램은 평소에는 정상적으로 잘 동작하지만, 특정 패킷을 받으면 이상하게 동작한다고 가정합시다. 그리고 이 패킷은 아주 가끔 들어온다고 가정해 봅시다. 원하는 대로 패킷을 보내주는 프로그램을 따로 작성해 두지 않았다면, 이 프로그램을 디버깅하기 위해서, 문제를 일으키는 패킷이 올 때까지 하염없이 기다려야할 지도 모릅니다. 실제 코드는 다음과 같습니다:

만약 원하는 패킷이 recv_data()를 통해 들어왔다고 가정합시다. 이 때 packet_received는 1이 되고, 그에 따라 처리 작업이 이상하게 동작할 것입니다. 이 때, received의 내용을 저장하기 위해, 다음 명령을 쓸 수 있습니다:

(gdb) dump binary value buggy.dat received

위 명령을 수행하면 배열 received의 내용을 파일 buggy.dat에 저장합니다. 만약 시작 주소와 끝 주소를 알고 있다면 다음 명령을 쓸 수 있습니다:

dump binary data buggy.dat START-ADDR END-ADDR

이 때, START-ADDR는 시작 주소를, END-ADDR는 끝 주소를 나타냅니다. 즉, 앞 received 배열의 경우, 다음과 같이 쓸 수 있습니다.

(gdb) dump binary memory buggy.dat received received+10

어느 방법을 썼든지, 현재 디렉토리에는 buggy.dat이라는 파일로, 배열 received의 내용이 저장될 것입니다. 이는 메모리 내용을 그대로 dump시킨 것이므로 od(1)와 같은 툴을 써서 그 내용을 직접 볼 수 있습니다. received 배열은 int 배열이므로 다음과 같이 확인 가능합니다:

$ od -td buggy.dat 
0000000         163         151         162          85
0000020          83         190         241         252
0000040         249         121
0000050
$ _

만약, 바로 디버깅을 성공적으로 끝냈다면, 사실 위와 같은 기능은 큰 역할을 발휘하지 못합니다. 하지만, 계속해서 디버거를 실행해서 여러번 디버깅을 해야 한다면 꽤 쓸모있다는 것을 알 수 있습니다.

일단, 새로 GDB를 띄워 디버깅을 시작했다고 합시다.

    if (!packet_received) {

위 코드를 실행할 때, 강제로 packet_received를 1로 만들어, 패킷을 받는 부분을 건너뜁니다. 변수의 값 변경은 print 명령으로 쉽게 할 수 있습니다:

(gdb) p packet_received = 1

그리고 나서, received 배열을 아까 저장해 두었던 buggy.dat에서 다음과 같이
불러올 수 있습니다:

(gdb) restore buggy.dat binary received
Restoring binary file buggy.dat into memory (0xbfeda890 to 0xbfeda8b8)

이 외에도, GDB는 타 디버거에 비해 강력한 기능들을 많이 제공합니다. 다음 기회에 좀 더 알아보겠습니다.

서버의 charset설정 가능한가요..?

OS는 데비안입니다.

웹단에서는 전부 UTF-8을 사용합니다.

다른건 문제될게 전혀 없는데..
한글로 된 디렉토리명이나, 이미지명 혹은 파일명이 있으면
접근을 못하게 됩니다.

웹에서는 UTF-8로 접근을 하지만,
실제로 서버단에서는 euc-kr로 존재하게 되니깐요..

서버의 charset 설정이 가능한가요..?
만약, 있다면..charset을 수정했을때
기존에 있던 2bytes charset들에게 영향을 끼치나요..?

터미널에서 일본어 보기

터미널에서 일본어를 보려면 깨져서 나오는 데요.
어떻게 하면 볼 수 있을까요..

vi 텍스트 찾기 바꾸기 관련 명령어 모음

vi 텍스트 찾기와 바꾸기 명령어를 인터넷에서 검색해 보았습니다. 하도 산재되어 있어서 한 군데로 모은 것입니다.

1. 문서 처음부터 마지막까지의 char 를 _char_ 로 치환한다.
:%s/char/_&_/g

2. 현재(커서위치)부터 마지막까지의 char 를 _char_ 로 치환한다.
:.,$s/char/_&_/g

3. buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다.
:1,10s/buf_.*\[255\]/hello/g

4. 숫자로만 이루어진 행 찾기는 다음과 같습니다.

/^\d\+$

^ : 행의 첫부분
\d : 0~9까지의 숫자
+ : 바로 앞의 글자 (여기서는 숫자)가 1개나 1개 이상 있음. (즉 숫자가 최소한 1개 있음)
$ : 행의 마지막 부분

5. 전체 문서에서 add 를 plus로 치환

:s/add/plus/g

6. 현재 편집중인 전체 문서에서 /etc/ 를 /etc/local/ 로 치환

:s/\/etc\//\/etc\/local\//g

7. '앗싸좋구나108계단' 이 '좋구나108계단앗싸' 로 바뀝니다.

:%s/\(앗싸\)\(좋구나\)\(108계단\)/\2\3\1/g

8. 대소문자 구분없이 바꾸려면 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.

:%s/foo/bar/i

9. 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우에는 바꾸지 않습니다.

:%s/\/bar

10. 정렬

123 def ghi
432 ius dkf
089 cdo lks

이걸 숫자를 가운데로, 두번째는 끝, 세번째 처음으로 보내려면

:%s/\([0-9]*\) \([a-z]*\) \([a-z]*\)/\3 \2 \1/g

11. 만약 3~5자리로 이루어진 모든 숫자를 검색하고 싶다면 다음과 같이 입력한다.

/[0123456789]\{3,5\} 또는
/[0-9]\{3,5\}

12. 만약 `ab'로 시작하는 소문자로 되어 있는 모든 단어를 삭제하려면 다음과 같이 입력한다.

:%s/ab[a-z]*//g

13. 만약 test라는 파일에 cpu가 들어있는 라인을 모조리 지우고자 한다면 vi mode에서 아래와 같이 사용한다.

:g/cpu/d

# g는 모든 라인에 적용한다라는 의미이고,
# d는 delete를 의미합니다.

14. stat0,stat1.....stat9 패턴이 있는 라인을 모조리 지우기

:g/stat[0-9]/d

15. 빈 줄 두 줄을 한 줄로 바꾸기

:%s/\n\n/\n/g

16. 두 칸을 한 칸으로 줄이기

:%s/ / /g

17. 탭을 스페이스 공백으로 바꾸기

:%s/\t/ /g

18. 마지막에 한 칸 띠우고 엔터된 것을 바로 엔터한 것으로 고치기

:%s/ $//g 또는
:%s/ \n/\n/g

19. 줄 첫 칸의 띠어쓰기를 없애기

:%s/^ //g

20. 잘못 바꾸기를 했을 때 되돌리려면 그냥 u 키를 누르면 됩니다.

cron이 보내는 메일의 제목을 변경하고 싶은데요.

리눅스에 설치되어있는 소스를 크론을 이용해서 서너시간마다 하나씩

스크립트를 돌려서 백업하고 있습니다.

이렇게하니깐 크론이 돌고나서 오너한테 메일이 오더군요.

그것을 한 아이디로 포워딩시켜서 윈도 아웃룩을 이용해서 관리하고

있는데요.

얼마전에 정통부에서 스팸메일에 "@"을 붙이게 할거라고해서

메일서버(윈2k, nmail)에서 제목에서 @을 필터링하게 했더니만

크론이 보내는 메일에

Cron <user@localhost> /home/user/xxxxxx.script

라는 제목으로 메일이 오는바람에 다 스팸이 되버리네요.

크론이 보내는 메일제목을 바꿀수 있는지요?

iptime 공유기의 셸 띄우기

iptime 공유기의 백도어 & 셸 띄우기

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

2007-06-22 21:27:12에 백도어를 패치한 새 펌웨어가 나왔습니다.

http://iptime.co.kr/zeroboard/iptime_bbs/view.php?id=notice&no=347

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

백도어에 대한 내용은 피해자를 유발할 수 있으므로 삭제했습니다.

디버그 모드에 관한 내용은 유용할 거 같아서 일단 놔둘 생각입니다. 이 기능은 계속 있었으면 좋겠네요.

http://공유기주소/cgi-bin/timepro.cgi?flag=debug를 입력하면 이상한 놈이 나옵니다.(최신버전은 debug 대신 bluesky입니다..)

리눅스 명령어를 실행할 수 있습니다.(약간 불편하네요)

여기서 http라는 wget와 비슷한 역할을 하는 프로그램을 찾아서 busybox를 올린 뒤(내장 busybox는 기능이 얼마 없더군요)

busybox에 들어있는 telnetd를 이용하여 putty로 접속했더니..

셸을 띄울 수 있었습니다.

/sbin/http get http://서버/busybox > /tmp/busybox &
/tmp/busybox telnetd -l /bin/sh 2> /tmp/log &

이렇게 입력하면 텔넷 데몬이 가동되어 접속할 수 있습니다(내부 네트웤에서만 가능합니다).

이런.. 글을 수정하니 메인으로 올라가네요.. 죄송합니다.

KLDP BBS 로고 공모--&gt;완료!

이 사이트의 로고를 공모합니다.

로고 파일은 다음과 같은 조건을 만족하면 됩니다.

형식: jpg / gif / png
크기: 200x91
파일 크기: 8k 이하

그리고 배너도 하나 있으면 좋겠습니다.

형식: jpg / gif / png
크기: 88x31
파일 크기: 8k 이하

디자인에 소질이 있는 분들의 많은 도움 부탁드립니다. 파일은 kss @ kldp.org 로 보내 주시면 됩니다.

감사합니다...

Joomla 라는 CMS에서 접촉을 해왔는데...

Mambo 라는 CMS가 있습니다. 제가 용돈 벌이로 가끔 웹싸이트를 만들어주는 일을 하는데 그럴 때 많이 쓰는 CMS 입니다. 받아쓰기만 하자니 미안해서 mambo의 language file을 한국말로 번역해서 mambo project에 올렸었습니다.
얼마전에 mambo가 Joomla와 Mambo로 찢어졌습니다. 그 이유는 Mambo는 원래 호주의 Miro라는 회사가 시작하였는데 작년말과 올해초 Mambo를 장사속으로 이용하려고 시작함에 따라서 코어 개발자들이 반발을 일으켜 Joomla라고 새롭게 브랜딩을 하였고 프로젝트의 웹 도메인도 mambo와는 달리 .com (mambo는 mamboserver.com)을 사용하지 않고 joomla.org 를 사용하는 등 freesoftware를 지향하는 그룹임을 확실하게 하였습니다.
그런데 그 개발자중 한 사람이 제게 joomla의 한국어 번역에 관심이 있는지 어제 질문을 해 왔습니다. 그래서 language은 번역을 해주겠다고 했습니다.
그런데 제가 궁금한 것은 만약 joomla 전체를 한국말로 번역할 필요가 있는지요? 그리고 만약 그렇다면 그 프로젝트에 참여할 분들이 계신지요? 만약 가능하다면 한국어팀을 구성해서 얻어질 것이 있는지요?

[음악] 월드뮤직, 누에바 깐씨온, 그리고 우리의 음악에 대한 짧은 단상

월드뮤직, 누에바 깐씨온, 그리고 우리의 음악에 대한 짧은 단상

2007.4.1 만우절날

----
월드뮤직(서남준 지음, 대원사) 257쪽에서

1950년대의 어느날 칠레 북부의 광산 마을을 한 여성이 걸어가고 있었다. 이글거리는 태양 아래서 눈으로 본 광부들의 있는 그대로의 삶을 그녀는 민요의 형태로 노래했다.

팜파를 향해 떠났을 때
나의 마음은 노래하는 새처럼
들떠 있었다
그러나 그것은 거기서 죽어버렸다
처음엔 날개를 잃었고
마침내 목소리마저 잃어버렸다
태양은 여전히 머리 위에서
불타고 있는데
광부들이 사는 집을 보았을 때
차라리 달팽이 껍질 족이 훨씬
낫다는 말이 저절로 나왔다
법의 보호 아래
영리한 도둑들이 판을 친다.
태양은 여전히 머리 위에서
불타고 있는데.....

중략

그리고 가는 곳마다 민요의 아름다움과 민속 문화의 풍부함에 놀라면서 사람들의 일상을 배워 나갔다. 그러면서 그들이 너무나 가난하게 사는 것이 마음 아파 '어째서 가난한 사람들은 평생 가난한 것일까?'라는 소박한 질문을 자신의 언어로 노래하기 시작했다. 이 같은 과정을 통해 그들은 평범한 사람들의 일상생활, 그들의 기쁨과 슬픔, 희망, 눈물과 축제 및 경우에 따라서는 감옥이나 추방에서 겪는 고통을 노래하는 법을 배우게 되었던 것이다. 이것이 미국의 로큰롤이 난무하던 1950년대부터 라틴 아메리카 각지에서 자연 발생적으로 일어난 '새로운 노래' 즉 '누에바 깐시온' 운동이다.
누에바 깐시온 운동은 1950년대 후반부터 칠레와 아르헨티나에서 싹튼 뒤 점차 그 범위가 넓어져 카리브 해와 라틴 아메리가 전역에 걸쳐 일어났다. 나라와 시대에 따라서 그 양상이 다르지만 한 가지 공통되는 것은 새로운 시점, 새로운 가치관을 담은 가곡이 많다는 점이다.
----

월드뮤직, 제3세계 음악(현재 상황에서는 이 단어가 맞는지는 모르겠다)에 대해서 마음의 관심만 가지고 있다가 처음 접한 것은 부에나 비스타 소셜 클럽이다. 비디오를 잘 보지 않는데 어떻게해서 비디오를 빌려보고 음반도 사게 되었다. 낯설은 나라 쿠바, 그리고 그 쿠바에서 일상생활을 하다가 다시 노년의 나이에 음악을 만든 사람들, 그들의 음악이 생각보다 낯설지는 않았다. 어쩌면 음악은 처음이어도 차베스가 이끌고 있는 베네주엘라를 포함하여 극적으로 변화하고 있는 남미의 상황때문에 더 관심을 가지게 되었는지도 모른다. 국내 주류언론에서는 소개를 잘 하지 않으니 관심있지 않은 사람들은 그 변화를 알기는 힘들겠지만.

그러고나서 한동안 잊고 지내다가 2005년 겨울부터 다시 남미 음악과 문화에 대해 관심을 가지게 되었다. "바람의 노래, 혁명의 노래"라는 라틴아메리카 문화기행에 대한 책과 음반을 사면서부터이다. 남미의 음악과 문화에 대해서 처음 관심을 가지는 사람에게는 좋은 입문서인 듯 하다. 부에노스아이레스, 탱고, 아타왈파 유팡키, 메르세데스 소사, 안덱스, 콘도르, 빅토르 하라, 네루다, 피아졸라 이러한 단어들이 조금씩 익숙해지기 시작하였다. 멕시코 마리아치 음악을 하는 사람들의 공연을 다음의 클럽을 통해서 알게 되어 지하철역에 들으러 가기도 하였다. "그토록 화려하고 열정적인 삼바도 본래에는 가난하고 삶이 힘에 겨운 사람들의 슬픔을 덜고 또 그 고통을 잊고자 하는 몸짓으로부터 나오는 폭발적인 에너지의 한 모습"이라는 것도 알게 되었다. 우리나라도 일제 45년이 힘들었겠지만 그 기간에 비교할 수 없는 몇백년을 제국주의와 때론 맞서고 때론 침략당하면서 살아야했던 남미사람들의 슬픔과 한이 조금씩 다가오기 시작하고 있다. 안데스 음악의 그 고요하고 명상적인 음악이 때론 힘겹게 버티면서 살아와야했던 그네들의 삶을 달고 있다는것, 탱고의 화려하고 신나는 음악속에 깃들여있는 애절함... 어려운 현실속에서도 다시금 그들의 전통문화를 발굴해내고 새롭게 만들어가고 있는 남미의 저력을 새롭게 느끼고 있다.

위에서도 말을 했듯이 민요, 민속문화를 새롭게 발굴해내고 그 시대 일상적으로 살아가는 사람들의 숨결을 담아내고자 했던것이 누에바 깐시온 운동이다. 죽어버린 음악, 현실과 유리된 음악이 아니라 그 현실과 맞부딛치면서 성장을 해나갔다. 한때 라틴음악열풍이 불고 했던 것들도 다 이러한 기반이 있어서 가능하지 않았을까 생각이 든다.

요즘 홍대클럽에서 가야금을 가지고 노래하는 가수를 알게 되고 그 음악을 계속 듣고 있는 중이다. 가야금의 그 애련한 가락이 또 트로트, 탱고와 만나 독특한 분위기를 자아낸다. 국악이나 크로스오버 음악에 관심을 가지지는 못하고 있었는데 교보문고의 음악판매하는 곳을 가보니 생각보다는 국악쪽도 음반들이 있었다. 아마도 이 음악을 듣게 되어서 굳이 위에 누에바 깐시온 운동을 다시금 꺼내게 된 듯하다.

개인적으로는 음악이든 연극이든 설사 다른 나라에서 들어왔다고 하더라도 그것을 얼마나 우리의 감성에 맞게 새롭게 만들어내고 있는가를 중요하게 생각한다. 그래서 음악을 잘 아는것은 아니지만 젊음과 저항의 음악으로서의 락은 거세가 된채 랩과 힙합이 그냥 댄스음악으로만 되버리는 상황이 참 아쉬웠었다. 물론 그렇다고 우리가 음악을 들으면서 꼭 그 형식이 도입된 이유나 사회적 상황을 알아야하는 것은 아니지만 창작자의 경우에는 어떤 것이든 내용과 형식이 있다고 하면 그 형식만 도입하는것이 아니라 내용도 함께 고민되어야 하는 것이 아닐까 생각을 한다. 아뭏든 남미의 음악을 듣다가 가야금으로 된 음악을 들으니 우리네 음악상황을 여러가지 곱씹어보게 된다. 70년대부터 민족문화에 대한 관심과 함께 전국에서 탈패등도 많이 생기고 80년대 사회적인 상황과 맞물려서 엄청나게 성장을 했었는데 현재는 그러한 흐름들이 끊긴지 좀 된 것 같다. 90년대부터는 문화의 시대라 할 만큼 경제적인 성장과 함께 문화에 대한 관심도 커지고 문화산업시장의 규모도 점차 커지고 있다. 그렇지만 앞에서 말을 한대로 무조건 다른 것을 받아들이는 것이 아니라 그것이 우리의 전통적인 문화와 함께 얼마나 버무려지고 섞여서 발전을 하고 있을까?? 요즘 한창 뮤지컬이 뜨고있는데 김민기의 지하철 1호선처럼 그냥 수입해오는게 아니라 우리네 감성으로 새롭게 만들어낼 수 있었으면 좋겠다.

천만 영화의 시대, 그만큼 여러사람들의 노력을 통해 영화가 발전을 해왔겠지만 거꾸로 천만명이 같은 영화를 보는 것 자체가 가끔은 무섭다는 생각이 든다. 다양한 시각, 다양한 가치가 함께 공존하면서 발전을 했으면 좋겠다. 음악이, 미술이, 예술이 중상류계층의 자기 만족을 위한 것이 아니라 우리네 일상의 삶과 함께 어우러져 누구나 누릴 수 있는 삶의 한 부분이 되었으면 좋겠다.

KLDP 사이트 drupal 엔진 업그레이드

KLDP의 drupal 엔진을 4.7에서 5.1로 업그레이드하였습니다.

혹 기존에는 발생하지 않던 문제를 발견하셨다면 바로 알려 주시기 바랍니다. 현재 이미 알고 있는 이슈들로는 다음과 같은 것들이 있습니다.

- 최근 글 보기 기능 속도 저하: 기존 http://kldp.org/ktracker 는 더이상 작동하지 않으며 대신 http://kldp.org/tracker 에서 사용할 수 있으나 속도가 느립니다.
- KLDP Wiki로의 자동 링크 안됨: 4.7에서 wkpark님이 작성하신 기능을 추가하여 사용 중이었으나 아직 해당 기능이 5.1로 업데이트가 되지 않았습니다.
- Mac OS X Safari에서는 bbcode 넣기 아이콘이 보이지 않습니다.
- Mac OS X Safari에서 글을 올릴 때 textarea 하단의 옵션들이 제대로 display되지 않아 선택을 할 수가 없습니다.

그리고 보시겠지만 글을 작성하실 때 bbcode를 좀더 쉽게 넣으실 수 있는 기능을 추가하였으니 많은 활용 부탁드립니다. 본문이나 답글 작성시 textarea 상단의 버튼을 사용하시면 됩니다. 익명 사용자가 답글을 올릴 경우 노드마다 인증 관련 에러를 보여주던 현상도 해결되었습니다. 그 외 자잘한 기능들이 더 추가되었고요.

5월 1일 하루동안 특별한 문제가 없을 경우 이대로 사용하고 만약 커다란 문제가 발견되면 4.7로 다시 다운그레이드하겠습니다. 만약 그렇게 될 경우에는 5월 1일 동안 작성하신 내용은 모두 날아갑니다. 부디 많은 테스트 부탁드립니다.

사이트가 안정화되었다고 판단되면 좀더 많은 기능들을 추가할 예정이며 이후 서버 추가 및 업그레이드 등을 통해 속도도 지속적으로 개선해 나가도록 하겠습니다.

감사합니다.

p.s. 5.1 업그레이드 과정에서 http://drupal.kldp.org 에서 개발된 drupal 한글 번역을 적용하였습니다. drupal 한글 메시지 번역에 힘써주신 분들께 감사드립니다...

C 언어. 최고의 책은?

지금까지 여러권의 C언어 책을 봤지만 이거다 싶은 책은 없더라구요...
기초부터 튼튼하게 프로그램의 가닥을 잡아주는 좋은 C책은 없을까요?
더 나아가 꼭 소장해 두고싶은 책....
바로 그런 책을 찾습니다. :D

그냥주세요.......ㅡ,.ㅡ;; 혹시 P2 CPU 있으신분.....

혹시 펜티엄2 슬롯방식 시피유 남는거 있으신분없나요?

현재 시퓨가 소켓방식이어서 라이져카드를 삽입해서 사용하는데

불안정해서 다운이 자주되서 그럽니다.

공짜로 주기 아깝다고요? 그럼 살수 있읍니다. 근데 얼마나 할지..

대학원에 진학하려고 합니다. 어떻게 어디를 가는 것이 좋을까요? 또 준비물은??

사회 초년생으로 이제 갓 입사를 한 신입사원입니다.

대학원을 다녀볼까 생각중인데

알아보니 여러가지 까다로운게 많군요..

영어 성적을 보는데

저는 영어 잼병이라...

웬만한데 가려면 가능한지 궁금하고요..

분야는 소프트웨어 공학 쪽으로 가고싶습니다.

영어가 만약 심하게 걸린다면 1년 정도 영어를 준비해야 할까요?

아니면 영어 없이 제가 학부 성적이 좀 되긴 되는데 지방대긴 하지만

따로 갈수 있는 대학원이 있을까요?

역시 대학원은 간판으로 쓸것이기 때문에

신중을 기해야 하는데

잘 몰라서 여쭤봅니다.

그리고 소프트 웨어 공학쪽은 어디가 알아주는지 궁금하군요.

대충 대학원 하고 싶은 마음은 없습니다.

열정과 패기로 한번 도전해 보고 싶습니다.

많은 조언 부탁드립니다.

펑션키(F9) 를 Enter키 로 인식하게 하는 방법이 있을까요?

제가 작업중인 하드웨어에 Enter Key가 없습니다. ㅡㅡ;;
그래서 다른 키를 엔터키로 변경해서 사용 하려고 하는데
어떻게 하면 좋을지 조언 부탁드립니다.

지금 작업중인 하드웨어는 1~0번, F1 ~ F9로만 구성되어 있습니다. 이중에서 F9 이나 0번을 누르면 Enter 로 인식하게 하고 싶습니다.

커널 내부에 선언된 키값을 바꿔주면 되지 않을까 생각은 하는데... 어떻게 작업을 시작해야 할지 막막합니다.
답변 부탁드립니다.

참고로,
최종 하고자 하는 작업은 부팅 스크립트에서 Key 값을 입력 받아 분기 시키려고 하는 작업입니다.

소켓라이브러리 함수중에 recv()함수에 대해서

소켓을 이용한 클라이언트/서버소스를 보니 의문점이 있어서 글을 올립니다.

클라이언트 쪽에서 send()로 4096바이트를 한번에 보내고 서버쪽에서는 recv()를 사용해서 1024바이트씩 루프를 돌면서 받는 부분이 있습니다.
왜 송신 할때는 4096을 한번에 보내면서 수신할 때는 1024바이트씩 나누워서 받는 것인지 궁금합니다.

송신 할 때 어플리케이션에서 큰 데이터를 보내면 tcp에서 mtu에 맞게 조정되어 보내게 되기 때문에 수신측에서는 이것을 감안해서 위와 같이 작게 나누어서 받는 것입니까? 아니면 제가 모르는 recv()함수의 특성이 있는 것입니까?

sendmail 8.12.8을 설치 중 오류 발생

Build를 실행했는데 아래와 같은 오류 메시지가 나타났습니다.
뭘 어떻게 해야 하는지 몰라서....
다운 받아서 그냥 ./Build했습니다.
혹시 더 깔아야 하는 package가 있는지...
조언 좀 부탁 드립니다.

cc -o sendmail main.o alias.o arpadate.o bf.o collect.o conf.o control.o convtime.o daemon.o deliver.o domain.o envelope.o err.o headers.o macro.o map.o mci.o milter.o mime.o parseaddr.o queue.o readcf.o recipient.o sasl.o savemail.o sfsasl.o shmticklib.o sm_resolve.o srvrsmtp.o stab.o stats.o sysexits.o timers.o tls.o trace.o udb.o usersmtp.o util.o version.o /root/Temp/sendmail-8.12.8/obj.Linux.2.4.7-10.i686/libsmutil/libsmutil.a /root/Temp/sendmail-8.12.8/obj.Linux.2.4.7-10.i686/libsm/libsm.a -ldl
domain.o In function `getmxrr'
domain.o(.text+0x25f) undefined reference to `__res_query'
domain.o(.text+0x266) undefined reference to `__res_search'
domain.o(.text+0x39b) undefined reference to `__dn_skipname'
domain.o(.text+0x496) undefined reference to `__dn_expand'
domain.o(.text+0x603) undefined reference to `__dn_expand'
domain.o In function `dns_getcanonname'
domain.o(.text+0xf0c) undefined reference to `__res_querydomain'
domain.o(.text+0x100f) undefined reference to `__dn_skipname'
domain.o(.text+0x123f) undefined reference to `__dn_expand'
domain.o(.text+0x128a) undefined reference to `__dn_expand'
sm_resolve.o In function `parse_dns_reply'
sm_resolve.o(.text+0x17e) undefined reference to `__dn_expand'
sm_resolve.o(.text+0x1fe) undefined reference to `__dn_expand'
sm_resolve.o(.text+0x325) undefined reference to `__dn_expand'
sm_resolve.o(.text+0x377) more undefined references to `__dn_expand' follow
sm_resolve.o In function `dns_lookup_int'
sm_resolve.o(.text+0x67a) undefined reference to `__res_search'
collect2 ld returned 1 exit status

WepZip을 대신할 리눅스 어플?

안녕하세요,

wepzip이라고, 통채로 웹 문서를 다운 받는 어플이
윈도그에 있어 유용하게 쓰고 있습니다.

리눅스에서 이와 비슷한 일을 하는 어플이 없을까요?
있으면 좋겠는데..

추천부탁드립니다~.

Linux Kernel 쪽에서 가장 유망한 분야는?

Linux Kernel에 관련된 지식을 가지고 실제로 현업에 나간다면 그 지식은 어떻게 쓰이고 어떤 분야가 유망할까요? 아래는 제가 느낀 분야별 Kernel 관련 지식 활용 추세입니다. Linux Kernel의 소스 디렉토리별로 대략 나누어서 생각해 보았습니다.

/usr/src/linux/Documentation: 개발자가 아닌 사용자들에게 유용한 지식입니다. Kernel에 뭔가 새로운 기능을 스스로 추가하는 것보다는 이미 있는 기능에 대해서 잘 숙지하고 디버깅이나 퍼포먼스 프로파일링 능력을 요구받는 일이 더 많습니다. 대부분의 퍼포먼스 이슈는 사용자 레벨에서 발생하고, 커널로 인해 애플리케이션이 오동작하는 경우는 거의 없지만 커널의 각종 파라미터를 튜닝하여 동일한 하드웨어에서 더 좋은 성능을 내거나 애플리케이션이 크래쉬될 경우 그 원인을 알기 위해서는 커널 수준까지 디버깅할 수 있는 능력을 갖춘다면 회사에서 더 많은 사랑을 받을 수 있습니다.

/usr/src/linux/arch: x86 계열을 주로 사용하는 서버를 다루는 일을 하시는 분들과는 거의 관련이 없고 임베디드 엔지니어들에게 유용한 지식입니다. 새로운 CPU나 보드를 bring-up하는 일이 항상 동반되는 바, 하드웨어 & 소프트웨어 양쪽의 지식이 모두 필요합니다. 이쪽 분야는 특정 아키텍처를 다룰 수 있는 기회가 계속 주어진다면 해당 아키텍처의 maintainer가 되는 쪽으로 목표를 정하고 추진한다면 더 많은 기회가 주어집니다. (물론, maintainer가 되는 것은 어느 분야이든 좋은 일입니다만...)

/usr/src/linux/fs: 개인적으로 Kernel 개발자들에게 가장 유망하다고 보는 분야입니다. 파일시스템은 OS가 있는 한 계속해서 존재할 것이고, 스토리지 디바이스에 대한 요구사항은 제품마다, 혹은 애플리케이션마다 다르기 때문에 그러한 요구사항을 잘 반영할 수 있는 파일시스템을 개발할 수 있는 능력을 갖춘다면 정말로 많은 기회를 잡을 수 있을 것입니다. 꼭 회사에 속해 있지 않더라도 고용량 HDD나 플래쉬 메모리 디바이스 등은 쉽게 구할 수 있으므로 특정 디바이스를 요하는 디바이스 드라이버 관련 지식 등에 비해 미리 공부하기도 상대적으로 용이한 측면이 있습니다.

/usr/src/linux/drivers: 디바이스 드라이버는 계속해서 새로운 디바이스가 출시되기 때문에 그러한 추세에 발맞추어 새로운 스펙이나 특정 하드웨어에 대한 지식을 지속적으로 습득하는 작업이 필요합니다. 잘 하면 물론 좋지만 개인적으로는 들이는 노력에 비해 실제로 얻을 수 있는 것이 다른 분야에 비해 좀 작다는 느낌을 받습니다.

/usr/src/linux/kernel , /usr/src/linux/mm: Linux Kernel의 코어에 해당하는 부분입니다. 이 부분을 수정할 수 있는 능력을 갖추고 그렇게 하는 것이 언제 좋으며 왜 필요한지를 설명할 수 있는 능력을 갖춘다면 현업보다는 학교/연구소 등에서 OS에 관한 리서치를 하는 것이 좋습니다. 이 부분은 시스템 전체에 영향을 미치기 때문에 실제 현업에서는 코드 자체는 거의 바꾸지 않고 컴파일시 옵션만 선택해서 사용하는 경우가 대부분입니다. 이부분을 잘 안다면 'guru'라고 불리울 수 있는 폼나는 분야이기도 하지요.

다시한번 말씀드리지만 위의 내용은 어디까지나 제 개인적인 느낌입니다. 막상 써 놓고 다시 읽어보니 말도 안되고 앞뒤가 안맞는 부분이 많네요. 그냥 재미로 읽어 보시고... 실제로 각 분야에서 현업에 계신 분들의 의견/반론/경험담 등을 기대하겠습니다.

게시판이나 방명록등 웹프로그래밍 할때 참고할만한 site는?

방명록을 만들고 있습니다만.. :)

이런저런 tip들이 아쉬울때가 많습니다. html tag처리나, 광고글 금지나..

(일전에 올렸던, 같은 이름의 첨부파일은 어떻게 보관할지..등등)

어떤 언어든간에 (대개 php인가요? :) )

이런 algorithm이나... 이런저런 tip이 있는 곳 아시는지요?

phpshcool ( http://phpschool.com/ ) 밖에 모르는데.. 은근히 아쉽더라고요 :)

GNU Screen에 vertical split 적용

한동안 제가 스크린샷 올리는 것이 뜸했는데, 그 동안 dwm/awesome/fluxbox 이것저것 써보다가 새 랩탑 장만하고 Gnome/Compiz로 다시 돌아왔습니다. OTL

화면 가로가 넓어져서 이전 랩탑에 vertical split을 적용했던 것 보다 훨씬 보기가 편하네요.

터미널은 그놈터미널입니다. 설정은, http://forum.compiz-fusion.org/showthread.php?t=3624

Vertical split 패치는, http://fungi.yuggoth.org/vsp4s/

저는 우분투 Gutsy에서 Hardy의 screen 패키지 소스에 위 패치를 적용을 했습니다. 제가 적용한 순서를 적어보면,

http://packages.ubuntu.com/hardy/misc/screen 에서 dsc, orig.tar.gz, diff.gz를 다운받습니다. (apt sourcelist에 hardy repo를 추가하지 않았을 때)

다운 받은 dir에서, dpkg-source -x *.dsc로 소스 패키지를 풀고, screen-4.0.3 dir로 이동합니다.

패치.bz2 파일을 압축 푼 diff 파일을 dpatch로 확장자를 변경한 후 debian/patches 디렉토리 아래에 넣습니다.

아래 형식으로 그 dpatch 파일을 수정합니다.

cat debian/patches/999wrp_vertical_split_0.3_4.0.2.dpatch | head -10
#! /bin/sh /usr/share/dpatch/dpatch-run                                                                
## 999wrp_vertical_split by  Bill Pursell 
##                                                                                                     ─────────────────────────────────────────────────────────────────────────────────────────────────────
## DP: Vertical split
                                                                                                       
--- screen-4.0.3.orig/comm.c    2003-09-08 14:25:08.000000000 +0000
+++ screen-4.0.3/comm.c 2006-07-07 02:39:24.000000000 +0000                                            
@@ -309,6 +309,7 @@ struct comm comms[RC_LAST + 1] =                                                   link:
   { "vbellwait",       ARGS_1 },
   { "verbose",         ARGS_01 },          

#가 붙은 dpatch 헤더를 넣고, 패치 내의 모든 old/new dir path를 screen-4.0.3.orig/screen-4.0.3으로 각각 변경을 했습니다.

debian/patches/00list에 그 dpatch 명을 추가합니다. 저는 999wrp_vertical-split_0.3_4.0.2.dpatch라고 명했습니다.

cat debian/patches/00list | tail -3
40cjk_eastasian                                                                                        
50EXP_tilde_expansion                                                                                  
999wrp_vertical_split_0.3_4.0.2     

debian/changelog에 다음처럼 파일 처음에 변경사항을 추가합니다. (이 경우는 선택사항이지만, 이렇게 습관을 들이면 패키지 update를 막고/푸는 요령이 생겨 유용합니다.)

cat debian/changelog | head -10
screen (4.0.3-7ubuntu1.1) hardy; urgency=low                                                           
                                                                                                       
  * Added vertical split patch from <a href="http://fungi.yuggoth.org/vsp4s/" title="http://fungi.yuggoth.org/vsp4s/">http://fungi.yuggoth.org/vsp4s/</a>                                  ─────────────────────────────────────────────
    - 999wrp_vertical_split_0.3_4.0.2.dpatch      

 -- who <who's email>  Sat, 22 Dec 2007 21:42:54 +0900        

이제 빌드에 필요한 패키지를 설치합니다. apt-get build-dep screen 명령을 치거나 debian/control 파일을 한 번쯤 살펴보는 것도 좋습니다.

screen-4.0.3 dir에서 dpkg-buildpackage -rfakeroot 명령으로 패키지를 빌드한 후, sudo dpkg -i ../screen*.deb 명령으로 설치합니다.

짧게 쓰는 것이 잘 안되네요. 필요한 다른 패키지를 만들 때도 유용한 팁이서 첨부 그림 설명보다 훨씬 길어졌습니다.

화면 하단에 보이는 것은 conky이고, 그 밑에는 awn이 숨겨져 있습니다. 위젯처럼 보이는 것들은 screenlet 이고요. 스샷은 파일 크기를 고려해서 jpg로 변경했습니다.

M4 한글 매뉴얼 파일 하나로 된거 없을까요?

M4 한글 매뉴얼이 필요합니다.그런데 프린트를 하고 싶은데 파일 하나로 된게 찾기가 힘드네요.
그래서 파일 하나짜리를 구하고 있습니다.

혹시 아시는분 도움 주시면 정말 감사하겠습니다.

[구인/급구/고소득]휴대폰 소프트웨어 및 PDA프로그램 개발자.

임베디드쪽 경험,
개발툴은 VC++
펌웨어 개발할수 있는 분.

약 1년 기간 계약체결 구미에서 개발 가능 하신분.

주로 개발 업무는
휴대폰 기능의 PDA OS커널과 어플리케이션 개발.
휴대폰 내부의 모든 소프트웨어 모듈 입니다.

접수 후 최종 선택자는 4명입니다.

개인/팀/업체 모두 무관.
단, 우리가 원하는 구미 사무실에서 개발해야 함.

원하는 월급 최소 금액과
받고싶은 월급 금액을 적어주세요

이력서와 자기소개서 첨부해 주세요 (이메일 만 받습니다.)
검토 후 개인적으로 빠르게 연락을 드리겠습니다.
조기마감 될 수 있으니 서둘러 주세요^^

담당자 메일 : acrow7@nate.com 프로젝트 번호[1203], 담당자: 황현수

※주의사항: 메일 발송 시 첨부파일 제목에 프로젝트 등록번호와 담당자를 명시해 주세요(다른 진행 건과의 중복을 피하기 위해서니 꼭 지켜주세요)

ex) [1203/황현수] 홍길동 지원합니다.

후지쯔 RX200, RX300사용하시는분..

혹시, Fujitsu Primergy RX200, RX300사용하시는 분 계신지요?

OS 설치시 필요한 ServerStart CD가 필요합니다.
윈도우나 리눅스나 SCSI 드라이버가 없어서 디스크를 인식못하네요.

MySQL 5.0 으로 업그레이드 할 때 UTF-8, EUC-KR 같이 쓰는 경우 캐릭터셋 문제 해결방법, v1.3

거의 일주일을 이 문제 붙잡고, 멀티바이트 문자권 사용자의 설움을 너무 느꼈습니다..

일단 테스트 환경은 다음과 같습니다.

old: Fedora core 3, MySQL 3.23.58-16.FC3.1
new: CentOS 5, mysql-5.0.22-2.1

다 기본 패키지입니다. (전 직접 rpm 리빌드하지 않는 한 컴파일을 직접 하지 않습니다.) 5.0 으로 업글 문제이지만, 4.0 에서 4.1 이라던가 5.1 로 등등, charset 문제되는 머신은 대부분 해당되리라 생각합니다.

예전 머신 업글하려고 새 머신을 따로 세팅해서 마이그레이션 하는 덕분에 다양한 테스트를 해 볼 수 있었습니다. 서비스 정상화의 스트레스를 그다지 받지 않았고요.

적은 문제도 아니고 다양한 workaround 가 있지만 가능한 정석대로 해결하려고 노력한 결과입니다.

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

기존 디비는 euc-kr 데이터와 utf-8 데이터가 혼합되어 있습니다. 새 데이터베이스도 캐릭터셋을 혼합해서 사용 할 예정이고, 기존의 코드는 고치고 싶지 않습니다. 서버 세팅만으로의 마이그레이션을 원하는거죠.

결론은 my.cnf 의 [mysqld] 에 init_connect=set names binary 를 추가하는겁니다. 아래는 마이그레이션 과정에 신경써야 할 일을 적었습니다.

  1. my.cnf를 수정합니다. [mysqld] 항목에 다음을 추가합니다.

    character_set_server=euckr
    init_connect=SET names binary
    

    기존 디비가 UTF-8 위주였다면 euckr 대신 utf8 을 지정합니다. character_set_server 은 새 database 생성 시, CHARSET 옵션을 주지 않았을 경우에만 사용됩니다. 새 database 만들때의 기본값인거죠.

  2. 그리고 덤프를 뜹니다. 캐릭터셋이 다른 디비끼리 따로 떠도 되지만, 섞여 있어도 mysqldump -A 로 한번에 떠도 됩니다.

  3. 덤프를 손봅니다.
    1. 캐릭터셋이 한가지라면 이 부분은 건너뛰어도 무방합니다.

    2. 캐릭터셋이 섞여 있는 경우 database 생성부분을 캐릭터셋에 맞게 손봐줍니다.

      다른 database의 캐릭터셋에 맞게 DEFAULT CHARACTER SET 을 설정해줍니다,

      character_set_server 에 설정된 캐릭터셋과 동일한 database 라면 냅둬도 그대로 들어갑니다.

      원래:

      (..생략..)
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest-euc-kr;
      (..생략..)
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest-utf-8;
      (..생략..)
      

      수정:

      (..생략..)
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest_euc_kr;
      (..생략..)
      CREATE DATABASE /*!32312 IF NOT EXISTS*/ ctest_utf_8 CHARACTER SET utf8;
      (..생략..)
      

    3. 디비끼리 따로 뜬 경우엔 sql create 가 없으니 손으로 디비를 하나씩 만들어줍니다. 만들때 디비에 charset을 지정해줍니다.

  4. sql을 디비에 부어줍니다.

    디음과 같이 붓습니다. 그럼 변환 안하고 그대로 넣습니다.

    mysql -p --default-character-set=binary < dump.sql
    

    혹시 디비끼리 뜬 경우, 각 디비에 맞게 지정하고 부어도 됩니다.

    mysql -p db1 --default-character-set=euckr < db1.sql
    mysql -p db2 --default-character-set=utf8 < db2.sql
    

  5. 끝, 한글 문제가 없는지 확인합니다.
    1. 디비의 한글 데이터 표시에 문제가 없는지,
    2. 새로 디비에 한글 데이터를 넣었을 때 것도 잘 표시되는지,
    3. 정렬엔 문제가 없는지 봅니다.

클라이언트에서 사용하는 캐릭터셋을 믿을 수 있다면 binary 로 지정하여 변환하지 말아야 합니다.

이거 안하면 지맘대로 latin1 로 변환하죠. 이거가 일반적으로 가장 큰 문제입니다.
요넘을 binary 로 지정하면 character_set_client / character_set_results / character_set_connection 세녀석을 binary 로 세팅해서, 입출력 글자를 변환하지 않습니다.

관련 내용은 다음과 같습니다.
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html

| binary   | Binary pseudo charset       | binary              |

뭐 요점은 character_set_results, character_set_connection, character_set_client, character_set_connection 을 binary 로 잡는겁니다. 캐릭터셋을 변환하지 않아 데이터가 그대로 오가죠.. 기존의 3.x, 4.0 과 같은 방법입니다. 하지만 데이터베이스는 캐릭터셋이 지정되어 있어 정렬 등에 문제가 없습니다.

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

기존의 해법들과 그 문제점들입니다.

  • mysql_connect 를 한 뒤 mysql_query 로 set names euckr 명령어를 날려주세요.

    저도 제시해봤던 방법이지만, 코드 다 고쳐야 합니다. -_- 마이그레이션의 후유증이 너무 커요.. 앞으로도의 코드도 저렇게 짜야 하죠.

  • my.cnf 에서 default-character-set 을 여기저기 설정해주세요. charset_set_client 등등 변경이나 character-set-client-handshake 옵션도 해주시고요.

    mysql 서버를 사용하는 누구나 그 캐릭터셋을 사용해야만 합니다 이러면. 디비마다 캐릭터셋 변경 가능한 보람이 없죠. 게다가 쉘에서의 mysql에서는 되지만, php 에서는 저것조차 무시하고 그냥 latin1 을 먹습니다.

  • my.cnf 의 init_connect 에서 set names 를 넣어주세요.

    마찬가지로 모든 데이터베이스, 모든 테이블이 같은 캐릭터셋을 먹게 됩니다. 다른 캐릭터셋을 쓰려면 코드상에 set names 로 쓸 캐릭터셋을 정의해줘야 하고요. 그냥 result 를 NULL 로 하면 그대로 뽑아줍니다.

  • SET character_set_result 를 NULL 로 잡아주세요.

    뽑을땐 문제가 없는데, 데이터 넣을때는 character_set_client 와 character_set_connection 값의 영향을 받습니다. -_-

이 방법에 문제가 전혀 없는가.. 도 생각은 해 보았습니다.

  • 저렇게 response NULL 로 해놓고 다른거 신경 안쓰면 정렬 문제는?

    캐릭터셋이 이미 디비에서 설정되어 있고 테이블은 그거 따라가므로 result conversion 은 별 상관 없으리라 봅니다. 3.x 나 4.0 에서 문제되던 부분이 해결되는거죠.

  • 그럼 저건 대체 왜 있는 옵션인데?

    뭐 멀티바이트 못 읽는 서양녀석들은 깨진 글자 받지 않아 좋겠죠. 데이터베이스에 어떤 캐릭터셋이 들어있든요.

    디비에 euc-kr, ujis, utf-8 등등 다양한 변환되지 않은 디비나 테이블이 존재하고, 그걸 한꺼번에 UTF-8 로 꺼내서 표시하고 싶다면, charset_set_result 를 utf8 로 지정하여 디비 꺼낼때 conversion 이 되지 않나 싶습니다. 뭐 디비를 utf-8 로 변환하면 골치가 덜 아프겠지만 저장공간의 절약이나 한 디비에서 원래 캐릭터셋으로와 utf-8 로 입출력을 노린다면 활용은 가능하겠습니다.

  • 그냥 UTF-8 로 다 변환하지 뭣하러 이럽니까?

    그럴만한 사정이 되지 않는 상황도 있는겁니다. 사실 저는 아닙니다만;; 그냥 해결해보고 싶었습니다.

가능한 손 적게 대고 해결하려고 해서 아주 깔끔하지만은 않습니다. 해보시고, 문제점 있으면 댓글 달아주세요.

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

아래는 php 환경에서 현재 캐릭터셋 설정 보는 소스입니다.

<?php
$id
= mysql_connect('localhost', 'id', 'pass');
$res = mysql_query("SHOW LOCAL VARIABLES LIKE 'character_set%'", $id );
while (
$p = mysql_fetch_row($res)) {
    echo
"$p[0] : $p[1]<BR>";
}
?>

bbs.kldp.org IP address 변경

제목 그대로입니다.

기존에 사용하던 서버가 과부하 상태에 있어 좀더 사양이 좋은 곳으로 bbs.kldp.org를 변경하였습니다. IP address 변경 기간 중에는 접속에 약간의 장애가 올 가능성이 있습니다만 시간이 지나면 해결이 될 것입니다.

감사합니다....

Jet-man (날라댕기는 넘 -_-) 이브 로시라고 들어보셨는지?

http://news.media.daum.net/economic/goods/200708/06/aving/v17691003.html

위 기사에도 있지만 스위스 비행사인 Yves rossy란 사람이 있는데
글라이더에 제트 엔진 4개를 붙여서 날라다니는군요. 나이가 좀 있어보이던데
꿈을 쫓는 모습이 정말 존경스러울 정도입니다.

첨에 기사 보고 그냥 글라이더라 생각했는데 동영상을 보니 정말 제대로된 비행을 하는거 같군요.
착지때에는 낙하산을 이용하고 이륙시에는 경비행기를 타고 올라가서 스카이 다이빙 하듯이 자유 낙하 후에
엔진을 점화 시키는 방식인거 같습니다만 ~
다음은 지상에서 바로 이륙하는 방식을 목표로 한다는군요.
지금은 다치셨다는데 얼른 낳으셨으면 좋겠네요.
아래에 로시 비행 동영상 두개 올렸습니다.

p.s. 나중에 돈 모으면 이브 로시 찾아가서 제 글라이더도 만들어달라 부탁하고 싶네요
같이 날라다니게 ^^ ㅋㅋㅋ
p.s.2. 맨 아래에 영문 설명 나오는 영상도 추가 했습니다.




Mysql update 이후 Data 복구가 안되네요...

mysql과 리눅스 공부를 시작한지 얼마 안된터에 모르는 것이 많네요...

일주일 넘게 kldp, superuser, database.sarang.net, google 여러 군데를 다녔지만 검색 실력이 딸려서 그런지 못찾아서 이렇게 질문을 올립니다!!!

기존에 mysql 5.0.22를 사용하다가 mysql 5.0.41로 최근에 업데이트를 했는데요,

mysqldump를 사용해서 백업해논 data를 복구 하려고 하니깐 안되네요...

질문들이 많은데요...

1. mysqldump -u root -p --all-databases >
이렇게 덤프를 했더니 덤프한 파일을 more로 보니깐 한글이 깨져있더라구요...

아마도 character set 옵션인가를 다르게 주어야 하는걸로 알고 있는데요, 제가 알고 있는게 맞는지와 그리고 이렇게 한글이 깨진 파일을 복구하는 방법은 없는지 알고싶어요.

2. Mysql update 끝난 후에 mysql -u root -p < 를 통해 복구를 했는데요, 그 후에 웹페이지에서는

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/local/apache_2.0.58/htdocs/index.html on line 6

이러한 에러 메시지가 뜨구요, mysql에 접속을 해서

select * from ;
혹은
desc ;
을 치면
ERROR 1273 (HY000): Unknown collation 'euckr_korean_ci' in table

이러한 메시지가 뜨네요...

어떻게 하면 고칠 수 있을까요???...

P.S : O.S는 sulinux를 사용하고 있고,

mysql설치는 소스로 설치하였습니다!!!

리눅스를 설치했는데 아무것도 할수 없네여..도움이 절실히 필요

리눅스 설치는 여기 있는 많은 고수님들의 도움으로 인하여 무사히 마쳤습니다.
이 자리를 빌어 매우 감사드립니다..
윈2000과 리눅스로 멀티부팅을 만들어놓았고 리눅스 데스크탑 환경은 GNOME
으로 하였습니다.(무척 깔끔한 화면구성이 맘에 듭니다..)
근데 리눅스로 무엇 하나 할수 없습니다..
물론 이렇게 여기 질문을 적기전에 제 스스로도 찾아다녀봤습니다..
여기 있는 문서들도 읽어보고 하였는데 제가 원하는 답을 찾을 수 없었습니다..
도서관에서 책을 찾아봐도 리눅스에 관련된 서적이 매우 적고 또 제가 사용하는
버전과 너무 다르더군요..(전 와우리눅스 7.3파란입니다..)
제가 제대로 서치를 못한 이유도 있겠지만..
일단 제 고민들을 여기 적어보겠습니다..
질문들이 매우 많아서 여기 고수님들의 심기를 불편하게 할수 있으니..
일일이 답변하기 힘드시면 좋은 사이트를 추천해 주시면 감사하겠습니다..

질문들..
1. 리눅스로 영화를 보려면 윈도우처럼 코덱을 설치해야 하는가?
씨디룸에 씨디를 넣고 마운트를 시킨담에 Oggle(?)이란 동영상프로그램을
실행시켰는데 아무 화면도 안나오고 그냥 멈추더군요..어찌해야하는지?
2. 전 파티션을 윈2000설치시 하였습니다. 그래서 C에다 윈2000을 설치하고
윈2000을 운영하였는데 나머지 D드라이브는 보이지 않더군요..(원래 그런건
가요?)여튼 리눅스는 하드의 남은 공간에 설치는 하였습니다. 근데 윈도우로
리눅스의 프로그램을 받으면 그것을 어떻게 리눅스에서 설치하나요?
윈도우에서는 리눅스가 설치된 드라이브가 안보이고 리눅스에서는 윈도우
드라이브를 찾을 수 없고..리눅스 프로그램을 받아도 어찌할지 몰겠습니다..
3. 그리고 리눅스에서 어떤 프로그램을 다운받으면 그거 인스톨은 윈도우처럼
더블클릭하는것이 아닌가요? 다른 콘솔명령어가 있나요?
4. 제가 휠마우스를 사용합니다.(로지텍,PS/2)근데 리눅스에서는 휠이 작용하
지 않는군요..따로 드라이브를 설치해야 하는지? 아니면 리눅스에서 어떻게
조정해야 하는지 막막합니다.(여기 문서에는 버스마우스에 대한 글만 발견하
였습니다.)
5. 리눅스에서도 CDWriter기를 사용할수 있는지요?(당연히 사용할수있겠지만)
물론 여기에도 찾아보니가 CDWrite기에 대한 글이 있던데 그 글이 94년도
글이고 상황이 저랑 너무 달라서여..

음..질문이 너무 길다고 생각합니다.. :oops:
근데 정말 모르겠습니다..제가 윈도우만 넘 오래 사용하다보니 리눅스에는 익숙
해지기 힘든가 봅니다..너무 기초적인 질문이라 답변조차 귀찮다 생각치 말아주
시고 어린양 잘 도와주시면 감사드리겠습니다..
그리고 리눅스 관련 서적중에서 추천해줄만한 서적도 알려주시면 감사드리겠습
니다..그럼 오늘 하루 즐겁게 보내시길 바랍니다..

[문화비평] 연대, 공유, 믿음과 신뢰의 공동체를 향하여 - 위키

==============================================================
[문화비평] 연대, 공유, 믿음과 신뢰의 공동체를 향하여 - 위키위키
==============================================================
2003. 2. 16 화창한 일요일 오후
문태준 (http://tunelinux.pe.kr http://database.sarang.net)
==============================================================

ㅇ 기존의 게시판, 관리자, 중앙집중식 운영의 인터넷
우리는 인터넷을 통하여 많은 정보들을 주고받고 토론을 한다. 때로는 2002년 발전노조의 파업때처럼 투쟁에도 활용을 하고 2002년 남한에서의 월드컵과 효순, 미선이의 죽음, 대통령선거 등을 통해 보았듯이 개별적으로 뿔뿔이 흩어진 개인이 아니라 사회적인 쟁점을 만들어내고 스스로 문제를 제기하고 그 해결을 위해 노력하는 공동체적인 모습을 보여주기도 했다. 지배권력과 집권세력이 인터넷이라는 매체를 통하여 서로 연결된 사람들의 힘을 과소평가하고 이른바 넷티즌을 무책임한 부류의 인간들로 사고를 했다면 현실의 여러가지 계기를 통하여 이러한 식의 사고가 얼마나 시대착오적인지를 여실히 보여주었다.

최근에 위키위키라는 것을 접하고 사용하면서 다시 한번 우리가 정보를 공유하고 발전시켜 나가는 과정에 대하여 여러가지 생각을 갖게 된다. 한국에서는 다른 무엇보다도 인터넷을 통한 커뮤니티가 급격하게 발전을 하였고 그 어느 나라보다도 게시판 문화가 활발하다. 게시판을 통하여 수많은 사람들이 자기의 의견을 개진하고 토론하며 서로의 생각을 발전시켜 나간다. 그런데 일반적으로 게시판은 처음에 썼던 글은 계속 글이 올라오면서 묻혀지고 게시판 관리자는 불철주야 게시판을 살펴보면서 불필요한 글들을 지우고 관리를 한다. 좋은 정보를 올리면 그 정보에 대하여 많은 사람들이 댓글을 달고 토론을 하지만 정작 게시판에 글을 쓴 원래의 사람이 처음의 정보를 고치지 않으면 원래의 글은 그대로 남아있다. 게시판 관리자는 쌓여만 가는 글에 힘들어만 간다. 게시판이 있으면 거기에는 당연히 게시판 관리자가 있어야 하고 중앙집중적인 관리가 꼭 필요하다는 생각은 굳이 이야기하지 않아도 우리의 머릿속에 굳혀졌다.

ㅇ 누구나 수정할 수 있다고? 그러면 누가 관리하지?
위키위키는 고정된 관리자가 있고 그 사람이 일일이 정보를 수정하고 편집해야 할 의무 아닌 의무로부터 자유롭게 한다. 어떤 누가 글을 올린다. 예를 들어 컴퓨터를 사용하면서 편리하다고 생각되는 팁을 올렸다고 하자. 그러면 다른 사람이 여기에 자기의 의견을 반영하여 원래의 글을 수정한다. 사이트에 오는 사람 누구나 관리자가 될 수 있고 새로운 글을 쓸 수 있으며 다른 사람의 글과 정보를 마음대로 수정할 수 있다. 지금까지 관리하는 사람과 글을 쓰는 사람이 분리되었다면 위키위키에서는 글을 쓰는 사람이 곧 관리자가 된다. 중앙집중적인 관리를 해야, 관리자가 있어야 사이트가 운영될 수 있다는 믿음 아닌 믿음을 이제 떨쳐버리라고 우리에게 이야기를 한다.

그러면 아무나 글을 수정할 수 있다면 못된 마음먹고 고쳐버리면 어떻할까? 이런 고민을 할 것이다. 이에 대해서는 고민을 할 필요가 없다. 왜냐. 이전의 정보는 없어지는 것이 아니고 계속 남아있으며 새로 수정한 글은 새로운 버전으로 올라가는 것이다. 프로그래밍을 하는 개발자라면 일반적으로 여러 명이서 공동개발을 하기 위해 CVS나 RCS 같은 버전관리 프로그램을 사용한다. 위키위키에서도 버전관리기능을 가지고 있어 과거의 자료를 날리지 않고 계속 가지고 있는 것이다. 물론 여기에는 관리자의 손길이 필요하다.

위키위키의 장점은 CVS나 RCS같은 기술적인 부분의 장점이라기 보다는 인터넷에서 서로간에 자유롭게 연대하고 정보를 공유할 수 있다는 문화적인 특징을 가지고 있다는 것이다. 사이트를 제대로 운영하기 위해서는 서로간에 믿음과 신뢰를 가지고 있어야 한다. 누군가 한명이 관리자가 되어 죽도록 글을 모니터링하고 편집하고 수정해야 한다는 기존의 게시판식 사고를 떨쳐버릴 수 있다는 것이다.

위키위키는 외적인 강제가 아니라 사람들이 자발적으로 참여하고 함께 만들어나간다. 거기에는 어떠한 강제도 없다. 개별적인 객체로 남는 것이 아니라 스스로가 주체가 될 수 있다. 자발적으로 만들어가는 신뢰에 바탕을 둔 공동체적인 문화이다.

ㅇ 위키위키가 무엇인가요?
위키위키에 대해서는 인터넷에서 검색하여 자료를 찾아보자. 제일 좋은 것은 이미 만들어져있는 위키위키를 사용해보는 것이다.
(이 글을 쓰는 필자의 사이트에서 연습을 해 보아도 좋다. http://tunelinux.pe.kr/wikix/index.php?display=TestWikix )

위키위키는, 1994년 미국의 프로그래머 워드 커닝험이 애플의 정보관리시스템 `하이퍼카드'에서 아이디어를 얻어 개발했다. 사람의 뇌가 정보를 기억하는 구조와 유사한 형태로 정보가 관리된다. 법이나 기술적인 강제 장치를 필요로 하는 기존 사이트와 달리, 네티즌들의 자발적인 자율, 정직, 예의, 책임, 공유 의식을 요구한다.

처음에는 프로그램 개발자끼리 아이디어를 결합하고 공유하는 용도로 사용했으나, 효용성에서 기존 방식보다 낫다는 사실이 알려지면서 다양한 분야로 확산되고 있다. 미국 조지아공대에서는 교수와 학생들이 공동 프로젝트를 추진하고, 아이디어와 연구 결과를 공유하는 수단으로 위키위키 사이트를 이용하고 있다. <뉴욕타임스>는 정보를 수집하고 아이디어를 구하는 수단으로, 세계적인 통신장비 회사 모토롤라는 임직원들의 지식과 경험을 공유하기 위해 위키위키를 사용한다.

한겨레신문에서 발췌 (http://www.hani.co.kr/section-010100001/2001/11/010100001200111252036022...)

위키위키 사이트 '노스모크' 만든 김창준씨 : http://www.hani.co.kr/section-010100001/2001/11/010100001200111260212023...
[기자커뮤니티 엿보기] 인터넷 이상향 ‘위키위키’ : http://search.kdaily.com/search.php?id=723812355&act=view

ㅇ 자본의 강제가 아닌 사람들의 자발적인 연대와 공유의 세상을 꿈꾸며
아침에 일어나서 출근을 하자마자 우리는 자본의 강제에 맡겨진다. 자본의 논리, 경쟁력의 논리에 따라 어쩔 수 없이 휘말려가는 자신의 삶을 바라본다. 자신의 노동이 스스로를 발전시키는 것이 아니라 노동을 하면 할수록 소외되는 기이한 현상을 발견하게 된다. 삶의 질을 향상시키기 위해 일을 하고 노력하는 것이 아니라 먹고 살기 위해서, 남들보다 더 물질적으로 풍요로운 삶을 위해서 발버둥치게 된다. 사람의 삶은 원래 그런 것이고 살아 남기 위해서는 끊임없이 동료들보다 영어 단어 하나라도 더 외워야 한다고 생각한다.

그렇지만 항상 우리네 삶이 저 자본에 의해서만 강제되는 것일까? 그것은 아닐 것이다. 인터넷 자체가 사람들의 자발적인 연대와 지식공유를 통해 발전해왔다. 특정한 회사의 프로토콜이나 프로그램이 아닌 tcp/ip, http, telnet, ftp, dns 등 공개표준을 통하여 발전해왔다. 우리는 인터넷을 통하여 자본의 논리가 아니라 그와는 다른 논리와 새로운 삶의 방식을 배우며 동참하고 있다. 굳이 돈이 아니라고 하더라도 다른 사람들과 정보를 공유하면서 기뻐하고