삽질하는플머

키보드 타입 3 에서 컨트롤+스페이스 사용하는 법

탐구생활/Delphi



맥북에어를 데려왔다. 가볍고 빠르다. 좋다. 

윈도를 올려봤다. 응? 한영키가 없네? 어차피 키보드 타입 3를 쓰니까 패스!

터보델파이를 깔았다. 컨트롤+스페이스가 안먹는다. 우측 컨트롤키가 없으니 좌컨트롤+우컨트롤+스페이스 신공도 안통한다. 

영문 입력기를 추가하고 알트+쉬프트를 며칠 써보니... 익숙치 않은 키입력 때문에 손가락이 꼬이는 느낌이다. 


타입 3 키보드에서 컨트롤+스페이스는 한자변환키이다. 

가만히 생각해보니 IME모드가 영문일 때 이 키는 별로 필요가 없다. 

그렇다면? 입력 포커스를 가진 윈도가 한글입력 상태가 아닐 때 이 한자변환키를 무력화하고

좌컨트롤+우컨트롤+스페이스 키스트로크를 조립해주면 되겠군. 


그래서 탄생한 물건이 이 놈. 



KbdT3Help.7z




한글 IME 에서 영문모드일 때 컨트롤+스페이스 입력을 좌컨트롤+우컨트롤+스페이스 로 변환해준다. 

한 번 실행시키면 동작하고 다시 실행시키면 정지한다. 






이제 좀 살만하네~~


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



터보델파이로 만든 32비트 어플이지만, DLL을 침투시키지 않기 때문에 64비트 프로세스에서도 잘 돌아간다. 

64비트 윈도7에 띄운 64비트 라자루스에서도 동작함. 

DLL 만들기 귀찮아서 게으름을 피웠는데... 의도하지 않은 "사이드 이펙트"... 훗~!

귀차니즘은 역시 프로그래머의 가장 큰 미덕이다. 


관리자모드로 실행시킨 어플에서도 동작하게 하려면, 이 유틸리티도 관리자모드로 띄울 것. 







2014.3.14. 

PHPer 님의 의견대로, 아무 파라미터나 지정되면 메시지박스를 띄우지 않도록 수정. 

새로 받으세요~~ 





2017.02.16

차일피일 미루다 이제야 github에 등록함. 

https://github.com/oranke/kbd-type3-helper


미리 구경해본 OpenPC

여가생활/Others

Open PC 이벤트에 선정되어 실제 기계를 마음껏 써보게 되었습니다. 부족한 글 좋게 봐주셔서 감사합니다. 

11월에 새 기계가 손에 들어오면 신나게 가지고 놀고 삽질기를 올려보겠습니다. ^^;;




지인의 페이스북에 신기한 글이 올라왔다. 

우분투 사용자모임에서 잠시 언급되었던 OpenPC 라는 물건의 체험 시연회가 있고 

이 시연회 참가자를 뽑는 이벤트중이라는 내용...


마침 체험 진행기간이 휴가날짜와 겹쳐 내친김에 신청했고 신기하게도 뽑혔다. 

조금 늦었지만 재미난 기계를 구경하고 온 소감을 정리해 본다. 


남양주에 서식하다보니 시연회가 진행되는 상암동까지는 정말 먼 거리다. 

예약한 시간은 오후 2시~4시 사이였는데, 4시 조금 전에 겨우 도착. 누리꿈 스퀘어 연구&개발 빌딩 입구에서 기념삼아 사진 한 장 찰칵. 



입구에서 경비아저씨가 붙든다. OpenPC 시연회에 간다는 얘길를 하니 못알아듣는다. 아니, 못들어간다는 의지를 내뿜는다. 

잠시 옥신각신 하다가 폰을 꺼내 이벤트 안내 홈페이지를 보여주니 7층에서 방문증 끊고 올라가라네. 13층에 간다는 이야기는 처음부터 했었는데... 이 아저씨 사람을 뭘로 본거지? 반바지에 샌달 신은 개발자 처음 보나?? 아니면 이동네 개발자들은 모두 와이셔츠에 넥타이 받치고 코딩하나??? 확 들이받으려다가 시연회장에 준비되어있다는 냉녹차를 떠올리며 마음을 가라앉혔다. 생각해보니 근처에서 일하는 친구놈은 항상 정장 차림이기도 했고... (그놈은 근데 관리자잖아!!)


시연장에 들어서자 반가운 얼굴이 똻!! 

OpenPC 구경하자고 페이스북에서 꼬셨던 바로 그 지인 신현묵님 되시겠다. 



관심가지고 돌아다니는 지역과 소재가 어쩌면 이리도 비슷한건지... 슬쩍 떠보니 현묵님은 입구에서 별 문제 없으셨던 모양이다. 

사진을 올려놓고 냉정하게 비교해 보니... 왼쪽은 왠지 교수님 오라, 오른쪽은 배달그릇 찾으러 온 느낌이긴 하네~~ ㅎㅎㅎ



대충 인사를 나누고 OpenPC가 설치된 자리에 앉았다. 




오호~ 조 조그만 물건이 게으른 나를 두시간 가까이 지하철로 움직이게 했던 바로 그 물건이로군~~


유선랜 포트, 키보드/마우스가 연결된 USB, RGB로 연결된 모니터, HDMI 포트, 전원선이 보인다. 

아래쪽에 연결된 녹색 잭은 스피커이다. 







일단 재부팅부터 걸어보자. 부팅시간은 일반적인 공유기의 부팅시간보다 약간 더 걸리는 느낌이다. 

(사실 수다 떠느라 정확한 시간을 재 볼 생각은 하지 못했다.)




데스크탑은 전형적인 GNOME 화면. 

오피스를 구동시킬때 나오는 스플래시는 약간 민망. 출시때에는 원래 베이스인 리브레의 것으로 변경될 예정이라고 말씀하셨다. 


  



시연용으로 준비된 데스크탑에 터미널이 없어 잠시 당황... 우분투 서버만 써봤기 때문에 콘솔이 없으면 뭘 해야할 지 모르니... 

컨트롤+알트+F1 으로 TTY를 띄우는 것을 불쌍하게 여긴 옆자리의 현자께서 컨트롤+알트+T 를 누르라고 알려주신다.

나는 선량한 시민이므로 다음에 써 볼 분을 위해 /usr/bin/gnome-terminal 을 바탕화면에 올려두었다. 




먼저 정체부터 살펴보자. 


dh-h 를 쳐보니 3.6기가 중 61%인 2.2기가바이트가 사용중. (아마도 동영상이 자리를 크게 차지하고 있는 듯 하다)

top에서 확인한 메모리는 800메가. 


uname -a 출력은 다음과 같다. 


Linux openpc 2.6.32.9-dove-5.4.2 #408 Mon Jul 2 20:52:01 KST 2012 armv7l GNU/Linux



우분투 10.04가 구동중이다. 요술뿅망치 apt-get 도 정상동작한다. 

신기해서 /etc/apt/source.list 파일을 열어보니 다음과 같은 내용이 보인다. 


Ubuntu-Netbook 10.04 LTS _Lucid Lynx_ - Release armel+dove (20100427.1)



레포지트리 경로가 우분투 본가를 가리키는 것으로 볼 때, 예전에 이슈가 되었던 넷북 리믹스와 뿌리가 같지 않을까... 짐작해 본다. 

이 덕분에 미리 준비된 우분투의 수많은 패키지들을 네트웍을 통해 마음대로 설치해볼 수 있다. 




창을 붙들고 이동하는 일반적인 사용은 많이 느리다. 오래전 2D가속이 되지 않던 시절 윈도 3.1을 사용하던 느낌이다. 

시스템 감시를 띄워보니 CPU가 계속 100%가 되네. 




하지만 시스템 감시를 끄고 콘솔에서 top 으로 확인한 CPU로드는 10% 미만... 



사용율을 표시하기 위해 모든 CPU 자원을 끌어 쓰는 느낌이라고 할까... 아무래도 이 "시스템 감시" 유틸리티는 문제가 있어 보인다. 



브라우저는 크롬이 설치되어있다. 정상적으로 동작하고 정상적으로 표시된다. 다만 x86의 속도감과 비교하지는 말자. 


 


플래시도 표시된다. 


 



들고 갔던 외장하드를 연결해보았다. 각각 exFAT, NTFS 로 포멧된 물건인데 아쉽게도 인식하지는 않았다.




다만 iodd 를 ODD 전용모드로 켜고 연결한 경우는 정상적으로 인식한다. 




준비된 시연용 동영상이 몇 개 돌려보았다. 동영상 플레이어는 토템 2.30.2다.
데스크탑이 약간 버벅이는 느낌이라 별 기대 안했는데... 풀 HD급 영상이 끊김 없이 잘 재생되어 살짝 감동. 





이정도면 XBMC 구동도 무리없을 듯 하다. 내친김에 3D 가속기능도 살펴보자. 

우분투 소프트웨어 센터에서  mesa-utils 를 내려받아 설치하고 glxinfos 를 돌려보았다. 




버전은 2.1. 하드웨어 가속은 기본이고, 버텍스/픽셀 셰이더를 비롯해 적어도 예전에 만들었던 게임용 허접엔진의 확장들은 모두 지원하고 있다. 전체 출력을 따로 파일에 저장해 첨부한다. 관심있는 사람은 열어보자. 


 kkk.txt



glxgears 출력은 초당 25~35 프레임 정도. 




XBMC 구동에는 약간 버벅거릴듯 하지만, 2D 가속도 받지 못한 채 데스크탑에 적용된 gnome 보다는 쾌적한 느낌이지 않을까... 



아무래도 OpenPC는 그 특성상 "소유하는 것 만으로도 부러움을 사는" 라즈베리파이와 많이 비교된다. 

물론 라즈베리쪽의 가격이 훠얼씬 저렴하지만, 한국으로의 배송비와 관세를 적용하면 이게 또 얘기가 된다. 

게다가 4G 짜리 스토리지가 제공되는 것도 마음에 들고... 


제일 처음 떠오르는 용도는 TV옆에 놓아두고 네트웍으로 영화를 끌어당겨 보는 셋탑박스 대용 XBMC 전용머신. 

또한 파일공유, 웹, FTP, VPN, SVN, 레드마인 등의 서버용도로도 상당히 쓸만할 것이다. 

3D 쪽의 성능이 조금 더 담보된다면 영상 재생능력과 버무려 안내용 키오스크로 활용도 괜찮고... 

다만, 시연의 주제가 되었던 데스크탑 PC의 대체용으로 사용할 것이냐고 묻는다면... 그건 아직은 아닌 듯 하다. 

시간이 조금 더 있었다면 소프트웨어 센터에서 xfce 를 내려받아 써보고 조금 더 가벼운지 테스트 해 보고 싶었지만... 


아무튼 가지고 싶은 물건이다. 언제 가지게 되냐고? 그거야 당연히 안지기 허락이 먼저지~~




덧붙이기. 

여담이지만... 뽑힌 이유가 혹시 이것 때문인가... 







소금과 후추를 위해 fpc 간만에 진지하게 가지고 놀기

Lazarus

잘 될지는 모르지만... 구글의 소금과 후추에서 FPC로 만든 바이너리를 한 번 링크해보고 싶다는 욕망!이 생겼다. 

기왕이면 최근에 발표된 2.6.0 을 가지고 놀아보자. 점심먹고 잠시 짬이나 우분투에 올려봄. 


ftp://freepascal.stack.nl/pub/fpc/dist/2.6.0/


여기서 i386-linux 를 다운받아 압축풀고 sudo ./install.sh 실행. /usr 에 설치. 

프리파스칼 IDE인 fp 도 함께 설치. 돌려보니 libtinfo.so.5 가 없다는 에러만 나온다. 


http://community.freepascal.org/bboards/message?message_id=682920&forum_id=24082


위 링크 참조. sudo ln -s /lib/libncurses.so.5 /usr/lib/libtinfo.so.5 실행. 

이제 제대로 돌아가네. 










소금과 후추를 위해서는 32비트와 64비트 환경이 모두 필요. 


32비트 우분투 서버에서 64비트용 FPC 크로스 빌드환경을 만들어보자. 

방법은 예전 i386-wince 크로스 빌드때와 별반 다를 바 없음. 


일단 fpcbuild-2.6.0.tar.gz 다운로드. 


# tar -xzf fpcbuild-2.6.0.tar.gz

# cd fpcbuild-2.6.0/fpcsrc

# cd compiler

# make cycle CPU_TARGET=x86_64 OS_TARGET=linux



생성된 ppcrossx64를 옮기고 심볼릭 링크


# sudo cp ppcrossx64 /usr/lib/fpc/2.6.0/

# ln -s /usr/lib/fpc/2.6.0/ppcrossx64 /usr/bin/ppcrossx64 



이제 RTL을 빌드해야 하는데... 어셈블러 x86-64_linux-as 와 링커 x86_64-linux-ld 가 필요하다. 
어디서 이 물건들을 구하지... 하고 한참을 고민했는데... gcc 에 -m64 라는 플래그가 있던 걸 기억해냄. 

다음 사이트를 참조. 
http://wiki.freepascal.org/Cross_compiling

/usr/bin 에서 어셈블러 스크립트 작업. 

# cd /usr/bin
# sudo vi x86_64-linux-as


#!/bin/bash
as --64 $@


마찬가지로 링커 스크립트도 만든다. 

# sudo vi x86_64-linux-ld

#!/bin/bash
ld -A elf_x86_64  $@


실행권한을 주고 

# sudo chmod +x x86_64-linux-ld
# sudo chmod +x x86_64-linux-as


RTL 빌드. 

# cd .... /rtl
# make CPU_TARGET=x86_64 OS_TARGET=linux PP=ppcrossx64 


생성된 라이브러리를 이동. 

# sudo mv units/x86_64-linux/ /usr/lib/fpc/2.6.0/units/x86_64-linux/rtl


test.pas 를 만들어보자. 

program test;

begin
  WriteLn('Hello World!');
end.


64비트로 컴파일. 빌드 과정을 구경하기 위해 실행파일이 아닌 어셈블러와 링크 명령이 나오게 하자. 

# ppcrossx64 -a -s -vbr test.pas


생성된 ppas.sh 를 돌려주면 실행파일 test가 생긴다. 
이 스크립트의 속을 들여다보면 앞에서 만든 어셈블러와 링커 스크립트 대신 as, ld 를 직접 호출하고 있네. 흠냐... 재미있군. 



아무래도 소금을 위해서는... 이 RTL들이 후추의 툴체인으로 재컴파일되어야 하는 것 아닌가 싶은데... 







C 에서 파스칼로 만든 코드 호출 테스트. 



먼저  SumTest() 함수를 정의한 pas_unit.pas 파일 작성


{$ifdef FPC}

  {$mode delphi}

{$endif}


unit pas_unit;


interface


function SumTest(a, b: Integer): Integer; cdecl; export;


implementation


function SumTest(a, b: Integer): Integer;

begin

  Result := a + b;

end;


end.



메인 프로그램은 C로 만든다. c_main.c 작성. 

#include <stdio.h>
#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif

int SumTest(int a, int b);

#ifdef __cplusplus
}
#endif

int main() {
    int a = SumTest(3,5);

    printf("Hello world! %d \n", a);
    return 0;
}


파스칼 코드부터 컴파일. 

# fpc pas_unit.pas 


C코드 컴파일. -c 옵션을 주어 컴파일 까지만 진행한다. 

# gcc -c main.c


생성된 오브젝트 파일들을 버무려 링크. 

# gcc -o test c_main.o pas_unit.o


만들어진 실행파일 test 를 돌려보면 "Hello world! 8" 이라고 출력됨. 
파스칼에서 만든 SumTest 함수가 제대로 호출되고 있다. 이 상태 까지는 후추의 툴체인으로도 빌드 가능


단순한 함수가 아닌, 파스칼의 RTL을 호출하는 경우는 어떨까?? pas_unit.pas 를 다음과 같이 수정. 

........

function SumTest(a, b: Integer): Integer; cdecl; export;
procedure PrintTest(); cdecl; export;

implementation

........

procedure PrintTest();
begin
  WriteLn('Hello world! from Pascal!!');
end;

end.


C 코드도 다음과 같이 수정. 

..........

int SumTest(int a, int b);
void PrintTest();

int main() {

   ..........
    PrintTest();
    return 0;
}


각각 컴파일 후 링크 시도. 

# gcc -o test c_main.o pas_unit.o


파스칼 쪽에서 링크 에러가 주르륵 발생한다. 예전 아이폰 SDK 삽질의 기억을 되살려 다음과 같이 시도. 

# upath=/usr/lib/fpc/2.6.0/units/i386-linux
# ar -q ./libfpc.a `ls "$upath"/*/*.o | grep -v 'linux/fv/'`
# ranlib libfpc.c
# gcc -o test c_test.o pas_unit.o -L. -lfpc


잘 안되는군... si_*.o 에서 "_start" 함수가 중복된다고 빽빽거림. 

위에서 사용했던 a -s -vbr 옵션으로 파스칼 프로그램을 하나 컴파일. 생성된 링크 스크립트 "link.res" 를 살펴보자. 
INPUT() 섹션에 system.o 와 함께 si_prc.o 가 포함된다. 
이 링크 스크립트를 복사해 INPUT 섹션을 수정하고 si_prc.o 는 지운 뒤 링크 시도. 

.......
INPUT(
c_main.o
pas_unit.o
/usr/lib/fpc/2.6.0/units/i386-linux/rtl/system.o
)
.......


# ld -o test link.res 


이번에는 system.o  내의 함수들이 링크되지 않는군... 쩝쩝... 






2013.1.23. 추가. 


결론부터 말해... 파스칼에서 라이브러리로 정의해 출력된 오브젝트 파일은 문제없이 링크 가능하다. 


다음과 같은 파스칼 라이브러리를 만들고


testl.pas


library testl;


procedure print_test; cdecl; export;

begin

  WriteLn('Hello world from Pascal');

end;


function sum_test(a: Integer; b: Integer): Integer; cdecl; export;

begin

  sum_test := a + b;

end;


end.




fpc로 빌드하면 libtestl.so 가 나온다. 얘는 안쓸꺼니까 버리고, testl.o 파일만 잘 챙겨두자. 


C코드는 다음과 같이. 

testc.c

include <stdio.h>
#include <stdlib.h>

#ifdef __cplusplus
extern "C" {
#endif

int sum_test(int a, int b);
void print_test();

#ifdef __cplusplus
}
#endif

int main() {
    int a = sum_test(3,5);

    printf("Hello world! sum_test(3,5) -> %d \n", a);
    print_test();
    return 0;
}



-c 옵션으로 컴파일만 되게 하고

gcc -c testc.c


앞에서 챙겨둔 testl.o, libfpc.a 와 링크. 

gcc -o test testc.o testl.o -L. -lfpc


실행시켜보면 잘 동작한다. 



글 시작은 우분투였는데 화면이 맥인건... 그 사이에 삽질용 맥이 생겼기 때문... 잇힝~

굳이 이렇게 C 기반위에 파스칼을 붙이는 키메라를 깨작거려보는건,
안드로이드에서 FPC를 가지고 놀다가 -XX, -CX가 거의 무용지물이길래 혹시나 싶어 다시 꺼내들어 본건데...
필요한 함수가 있으면 귀찮은 헤더변환따위도 필요없이 C로 만든 메인에 구현하고 바로 빨아먹는 장점도 있고...

하지만 결과물의 크기는 FPC의 최대 단점. FPC의 XCode용 iOS 템플릿은 이렇게까지 커지지 않았는데...
뭔가 쌈박한 링크옵션이 있는건가...

구글 네이티브 클라이언트 돌려보기

탐구생활/WEB 관련

구글 네이티브 클라이언트는 네이티브 바이너리를 크롬 웹브라우저 내에서 실행시키는 개념으로, 

처음 들었을 때는 "뭐야 이거! 액티브엑스의 크롬버전이잖아???!!!" 라고 현기증부터 났었는데... 

찬찬히 뜯어보고 나니 실행되는 바이너리의 권한을 보안이 강화된 샌드박스 내로 제한함으로서 

나름 지옥문이 열리지 않도록 이것저것 신경쓴 물건 되시겠다. 


OpenGL ES 2.0 기반의 3D 가속도 지원하고 크롬이 실행되는 환경이라면 윈도건 리눅스건 맥이건 가리지 않고 굴러간다. 

또다른 게임 플랫폼으로서 살펴볼만한 가치가 충분하다는 이야기. 


도대체 어떤 물건인지 궁금하니 일단 돌려보자. 

https://developers.google.com/native-client/?hl=ko


윈도에서 Cygwin과 Python 2.6.8을 이용해 테스트하다 실패했다. 역시 이런 거 할 때는 리눅스가 甲이다. 

파이썬 2.6.5 가 깔려있는 우분투 10.04 서버에서 다음과 같이 따라해보자. 

먼저 설치부터. 


$ wget http://commondatastorage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip

$ unzip nacl_sdk.zip

$ cd nacl_sdk

$ ./naclsdk list

... 뭐라뭐라뭐라...

$ ./naclsdk update

... 현재 안정화버전인 "후추_19" 가 내려온다. NaCL... 소금과 후추라니 네이밍센스 끝내주네!!



설치가 끝났으니 예제를 하나 골라잡이 돌려봐야지. 


$ cd pepper_19/examples/tumbler/

$ make

$ make RUN



5103 포트에 현재 작업 디렉토리에 대한 웹서버가 구동된다. 크롬으로 접속하기 전에 Native Client 설정을 켜주자. 

주소창에 about:flags 입력하고 네이티브 클라이언트 항목을 찾아 체크해준 뒤 제일 밑에 재시작 버튼을 눌러 크롬을 재구동한다. 




이제 우분투 서버의 5103 포트에 접속해 tumbler.html 을 클릭하자. 





오늘은 일단 여기까지. 




Synology USBStation2 사용기 2. AMP 설치.

이런저런잡다구리/Synology-nas

아래 글을 먼저 읽고 오세요~ ^^;

"Synology USBStation2 사용기 1. 전원 꽂고 optware 깔기."



짤방은 재활용 쓰레기장에서 득템한 외장케이스. 앞부분 래치가 부러져 하드를 고정할 수 없어 버려진 듯. 

하우징 쇠 부분에 드릴로 구멍을 뚫고 클립을 펼쳐 관통시켰더니 잘 고정된다. e-sata, usb 지원. 

함께 입양된 1TB 하드를 넣어 USBStation2 에 물려줌. 



USBStation2의 포지션은 어디까지나 NAS가 아닌 NAS Adapter 라고 하지만, 성능면에 DS110j와 별반 다르지 않은데도 웹서비스가 빠졌다는 점은 아무리 생각해도 좀 깬다. 저렴한 버팔로 NAS도 아파치와 PHP, MySQL 정도는 기본으로 들어가 있는데 말이지... 그리고 들여다 보면 알겠지만 이미 아파치의 httpd 도 두 개나 돌고 있다. 기능이 충분한데도 넣지 않는 건 순전히 정책적인 결정이라고 생각한다. 


그러나 이미 우리 손에 쥐어진 ipkg 라는 전가의 보도!! AMP도 얼마든지 올려볼 수 있다. (버전이 좀 낮기는 해도...)


일단 관련 패키지들 설치. 


# ipkg install apache php mysql sqlite openldap-libs php-apache phpmyadmin 



우분투처럼 깔면 깔린 그대로 돌아가면 좋겠지만... 아쉽게도 몇가지 손을 봐줘야 한다. 

/opt/etc/apache2/httpd.conf 파일을 편집.


먼저 구동시 에러를 내는 74라인의 mod_ext_filter.so 모듈 로딩하는 부분은 앞에 '#'을 붙여 주석처리. 


# LoadModule ext_filter_module libexec/mod_ext_filter.so



USBStation2 에서 웹 기본 포트인 80번 포트는 이미 관리페이지인 5000번으로 리다이렉션 시키는 용도로 사용중이다. 

기본 내장된 아파치가 이 작업을 하는데 어디서 띄우는지는 아직 확인하지 못했다. (귀찮아서...) 어차피 가정용 ISP에서 80포트 막아둔 곳도 많고 필요하다면 공유기에서 포워딩하면 되니까 리슨포트는 8000 그대로 둔다. DS110j와의 가격차이를 생각하면 이 정도 쯤이야 패널티라고 생각하지 뭐.  


Listen 8000



서버명은 다음과 같이 수정. 


ServerName *:8000



LoadModule 어쩌구가 잔뜩 적혀있는 119라인 근처에 다음 두 줄을 추가해준다. 

AddType application/x-httpd-php .php
LoadModule php5_module libexec/libphp5.so


<IfModule dir_module> 부분을 찾아 다음과 같이 수정해준다. (235라인 근처...)

<IfModule dir_module>
    DirectoryIndex index.html index.htm index.cgi index.php index.php3
</IfModule>


아파치 구동. 


# /opt/sbin/apachectl start



http://usbstation2:8000 에 접속해보자. It works! 라는 반가운 메시지가 나오면 일단 성공! 




웹 서비스 루트 기본값은 /opt/share/www 이다. 여기에 다음 내용을 담은 test.php 파일을 만들어주자. 


# vi /opt/share/www/test.php


<?php

phpinfo();

?>



http://usbstation2:8000/test.php 에 접속해서 다음과 같은 화면이 나오면 최종 성공!! 





여기까지 잘 되었다면 조금 전에 설치한 phpmyadmin 도 제대로 동작할 것이다.

http://usbstation2:8000/phpmyadmin/ 에 접속 테스트. 





이제 DB에 적절한 권한을 설정하고 미디어위키를 깔건 그누보드를 깔건 마음대로 가지고 놀면 된다.