Pen [P] (펜) Tool ((-------IMAGE-------))

'Pen Tool'은. 가장 기초적이면서 가장 많이 사용하는 툴중의 하나입니다.
이안의 'Tool'들은 앵커포인트를 생성 및 추가하고, 삭제하며, 헨들까정
생성하여 원하는 곡선까지 자유자제로 만들수 있습니다. 이 툴만 잘
쓰면 원형툴과 사각툴이 없이도 만들수 있답니다. ^^
포토샵의 'Pen Tool'과 같은 역활을 합니다. 그럼 펜툴의 세계로 들어갑니다. ^.~

'디자인 > illustrator' 카테고리의 다른 글

Tool_type  (0) 2008.06.08
Tool_Pen_Convert Anchor Point  (0) 2008.06.08
Tool_Pen_Delete Anchor Point  (0) 2008.06.08
Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 21:17
Direct Select Lasso [Q] (직접선택 라쏘) Tool ((-------IMAGE-------))

여러개의 오브젝트들의 부분선택을 할때 사용합니다.
('Selection Tool' 과 'Direct Selection Tool'의 차이라고 보면 됩니다.
즉, 'Selection Tool'은 오브젝트의 전체를 선택하지만, 'Direct Selection Tool'은
오브젝트의 일부만 선택한다는 차이져.)
오브젝트들를 그레그하여 선택하면 그 선택한 부분만 선택이 됩니다.
패스와 앵커포인트 등.. 이번엔 'Lasso Tool'과 다른점을 알아봅시다.
'Lasso Tool'로 오브젝트를 선택했을 땐 선택된 오브젝트들은 모두
전체선택이 되어버립니다. 그러나, 'Direct Select Sasso Tool'로 선택한
오브젝트들은 부붙선택이 되어있는 것을 볼수 있습니다.

예제를 봅시다.

((-------IMAGE-------)) 위의 그림은 'Direct Selection Tool'로 일부 오브젝트들을 선택했을 때 모습과 선택범위를 나타낸 것입니다. 앵커포인트와 핸들등이 선택되어 있는 게 보이시죠? ^^ ((-------IMAGE-------)) 위의그림은 'Direct Select Lasso Tool'로 드로윙하여 오브젝트를 선택한 것입니다. 이것 역쉬 앵커포인트와 핸들등이 선택되어 있는 것을 볼수 있답니다. ^^

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Convert Anchor Point  (0) 2008.06.08
Tool_Pen_Delete Anchor Point  (0) 2008.06.08
Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 21:11
Lasso [Y] (라쏘) Tool ((-------IMAGE-------))

여러개의 오브젝트를 선택할때 사용합니다.
마우스로 드로윙하듯 자유롭게 움직일때, 오브젝트들의 일부만 스쳐도
그 오브젝트이 전체가 선택됩니다.
비슷한 방법으론오브젝트를 다중 선택하는 방법으로 'shift key'를 누른상태에서
여러오브젝트들을 클릭(선택)하면 되이~ㅇ~~ 용. ^^

이번엔 'Selection Tool'과 다른점을 찾아봅시다.
'Lasso Tool'은 오브젝트가 복잡하고, 많은 작업 중에 원하는 오브젝트들만 빠르게
선택 할 때, 유용합니다. 즉, 'Selection Tool'은 드레그시 사각형의 형태를 형성하면서
선택되기때문에 원치 않는 오브젝트까지 선택이 된다는 단점을 보완한 것이라
보면 되겠습니다. 와콤을 쓰거나 드로윙이 능숙하신 분들이 사용하기 편하답니다.

예제를 봅시다.

((-------IMAGE-------)) 'Selection Tool'을 이용하여 영역을 드레그하여 오브젝트를 선택합니다. ((-------IMAGE-------)) 'Lasso Tool'을 이용하여 영역을 드로윙하여 오브젝트를 선택합니다. 그림처럼 선택되어있는 게 보이시죠.

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Delete Anchor Point  (0) 2008.06.08
Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 21:08
Direct Selection [A] (부분선택) Tool ((-------IMAGE-------))
'Selection Tool' 은 오브젝트 전체를 선택하게 되지만. 'Direct Selection Tool'은
어느 부분을 선택하느냐에 따라서 엥커포인트 및 핸들(앵커포인트
선택시 곡선이라면 핸들이 보일것입니다.), 패스, 오브젝트 전체
(오브젝트 안을 클릭)까지도 선택할수가 있습니다.
앵커포인트 하나를 선택하여 핸들도 조절할 수 있습니다.
예제를 봅시다.
((-------IMAGE-------))
앵커포인트 선택

((-------IMAGE-------))
핸들 선택하여 조절

((-------IMAGE-------))
패스 선택

((-------IMAGE-------))
오브젝트 내부 선택 (전체선택)


앵커포인트 선택을 알아봅시다.

1. 오브젝트가 하나 있져? 'Direct Selection Tool'을 이용하여 오른쪽 하단의 앵커포인트 하나만 선택한 상태입니다.
((-------IMAGE-------))

2. 밑의 그림은 앵커포인트의 안이 비어있져? 이것은 선택되지 않은 앵커포인트입니다.
즉, 선택이 되어있지 않은 앵커포인트는 변형을 못시킨다는 뜻과 같습니다.
((-------IMAGE-------))

3. 밑의 그림은 앵커포인트의 안이 파란색으로 채워져 있져? 이것을 선택이 되어 있는 것이며,
앵커포인트를 이용하여 오브젝트를 변형시킬수 있다는 뜻입니다.
((-------IMAGE-------))

4. 이번엔 선택된 앵커포인트를 'Direct Selection Tool'을 이용하여 이동시켜 오브젝트를
변형시켜 보겠습니다.

먼저, 앵커포인트 하나를 선택하고 'Direct Selection Tool'을 선택후 그 앵커포인트 위에
마우스를 올려놓습니다.
((-------IMAGE-------))

5. 이젠 클릭한 상태에서. 그림처럼 드래그 해보세여. 오브젝트가 변하는게 아래 그럼처럼.
보이나요?? ^^
((-------IMAGE-------))


오브젝트를 선택하는 건.. 이렇답니다. 앞으론 밥묵듯이 많이 사용하게 될거예영. ^^


Group Selection [Alt] (그룹선택) Tool ((-------IMAGE-------))
'Direct Selection Tool'은 오브젝트의 일부분만 선택이 가능한데 비해 'Group Selection Tool'은
일부만 선택해도 'Selection Tool'(선택툴)처럼 오브젝트 전체가 선택된다.
'Selection Tool'과 다른점은 여러개의 오브젝트가 그룹되어 있을 때, 'Group Selection Tool'은 각각의
오브젝트를 선택할 수 있다는 것입니다. 예제를 봅시다. ((-------IMAGE-------))
'Selection Tool' 로 마우스 선택 범위만큼 선택했을 때 오브젝트의 선택범위는 옆의 그림과 같습니다. 바운딩 박스가 나타나죠?^^


((-------IMAGE-------))
'Direct Selection Tool'로 마우스 선택 범위만큼 선택했을 때 오브젝트의 선택범위는 옆의 그림과 같습니다. 부분만 선택이 되어 앵커포인트까지 볼 수 있답니다.


((-------IMAGE-------))
'Group Selection Tool'로 마우스 선택 범위만큼 선택했을 때 오브젝트의 선택범위는 옆의 그림과 같습니다. 오브젝트의 전체가 선택이 된답니다.

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
그래픽 기초 이해하기 1  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 20:48
Selection [V] (선택) Tool ((-------IMAGE-------))

오브젝트의 전체를 선택합니다.
** 선택이란??? -_-
사용자가 변형이시키고 싶은 오브젝트(도형이나 선등)는 선택이 되어야 비로소 변형등이 가능하답니다.
^.~ 이해 되시졍..

예제를 봅시다.
((-------IMAGE-------))
오브젝트의 일부 또는 전부를 선택하면 그 오브젝트의 외각에 파란색의 바운딩 박스가 생성됩니다.

((-------IMAGE-------))
이때, 바운딩 박스의 각각의 모서리에 마우스 같다대면 크기조절 및 회전 등 변형을 줄 수 있답니다.

((-------IMAGE-------))
여러개의 오브젝트를 선택하고 싶다면, 'Shift key'를 누른상태에서 여러개의 오브젝트를 클릭
[Shift + 다중 선택]하면 됩니다. * 다른 툴 사용하는 도중에 선택툴을 사용하고 싶다면. Selection Tool을 선택할 필요 없이
[ctrl + 클릭] 하면 됩니다.

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
그래픽 기초 이해하기 1  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 20:39
((-------IMAGE-------))
위의 그림은 앞으로 공부하게 될 Tool Box의 전개도 입니다.
각각의 아이콘이 각각의 다른일을 하죠. 일부 아이콘의 우측 하단엔 검고
작은 삼각형이 보일것입이니다.
그 삼각형을 누르고 있으면 거기에 따른 또다른 아이콘 창이 열립니다.
그것은 차차 알려드리겠습니다.

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
그래픽 기초 이해하기 1  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 20:35
이건 알고 강좌 들어가갑시다

일러스트는 앞에서도 언급했듯이 매킨토시와 IBM 동시에 사용이 가능합니다.
음.. 그러나, 키보드를 보면 약간의 차이가 있답니다.
매킨토시는 Comand, Option, Shift
IBM은 Ctrl, Alt, Shift키가있다.
즉, Comand 키는 Ctrl, Option 키는 Alt, Shift 키는 Shift로 사용하면 됩니다.
앞으로의 강좌는 IBM용 위주로 하도록 하겠습니다.




((-------IMAGE-------))
Anchor Point [앵커포인트] - 오브제트를 만들기 위해서는 꼭 알아할 필수 명칭입니다.
하나의 정점입니다.
펜툴선택후 점을 찍었을때 그것이 바로 앵커포인트입니다.
Path [패스] - 앵커포인트와 앵커포인트가 연결된 선을 말합니다.
Handle [핸들] - 앵커포인트의 방향들을 잡아 브드럽게 곡선처리할 수 있게 앵커포인트의
양쪽에 두개의 점을 말합니다.
Center [중심점] - 오브젝트의 중심정을 말합니다.
Intersect [교차점] - 선이나 오브젝트의 패스가 교차되는 선의 위치를 말합니다.



키보드 기능키

Shift - 정(正- 각도=> 45,90도)을 의미합니다, 오브젝트등 다중선택 할 때도 사용됩니다.
Alt - 옵션의 기능, 복사기능을 합니다.
Ctrl - Selection (선택) Tool로 사용됩니다.
Space Bar - Hand (손바닥) Tool 로 사용됩니다.

** 위의 기능키들은 중복하여 동시에 사용할 수 있습니다. 단축키 사용법 - 단축키는 한/영 키가 영문으로 선택되어 있을 때 적용이 됩니다.
(단축키를 많이 사용할 수록 편하고 빠르게 작업 할 수 있습니다.)




기능키는 꼭 외워주세요.
포토샵이랑 일러스트에서 쓰이는 키들은 거의 대부분 그래픽 포맷에서도 쓰이니깐요...

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
그래픽 기초 이해하기 1  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 19:30
일러스트란? 일러스트는 작업자가 원하는 이미지를 마음대로 표현할 수 있는 프로그램입니다.
또한 수치적계산으로 작업할수있는 정확한 프로그램입니다.
산업용으로 만들어진 프로그램으로서 예전엔 매킨토시에서 사용되던
시안용 프로그램이였다. 그러나 현재는 IBM용으로도 제작이 되어
원하는 이미지를 내 마음대로 드로윙 할 수 있는 등 많은 분야에서
사용되는 프로그램입니다.
벡터방식이기 때문에 수치 연산이 정확하며, 이미지의 깨짐현상이 없답니다.
예전에는 출력용 시안으로 많이 사용하였으나, 현재는 플래시등 그래픽 및 웹의
다방면으로 사용되고 있습니다. 장점은 원하는 대로 드로윙을 하여 표현할수 있다는 것과
용량이 작아 플래시에서 자연스러운 스트리밍을 구사할수 있다는 것입니다.
*스트리밍 : 웹상에 올라와있는 플래시 애니를 다운받아 보는것이 아니라 실행을
하면서 동시에 그 데이터를 계속 전송받는 것을 말합니다.
(즉, 다운로드와 실행을 함께 병행하는거죠)

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
그래픽 기초 이해하기 1  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 19:28
◈ 그래픽의 분류
컴퓨터 그래픽은 비트맵 방식과 벡터 방식이 있습니다.
비트맵방식은 말 그대로 비트의 점(픽셀)단위로 그림을 그리는 것이죠.
포토샵등의 프로그램으로 사진등을 확대해 보면 이미지들이 점들로
구성되어있는 것을 볼수 있을 것입니다.
비트맵방식의 프로그램들은 포토샵, 페인트샵 및 사진 편집 프로그램들이
있으며, 파일 포멧방식은 jpg, gif, bmp 등이 있답니다.그렇다면 벡터방식은 ???
수치의 계산에 의해서 이미지가 만들어 집니다.
따라서 파일의 용량이 작습니다.
플래시에선 이런 벡터방식의 이미지를 사용, 용량을 줄일 수 있습니다.
그러므로 스트리밍이 가능한 것이죠.
벡터방식의 프로그램은 일러스트, 코렐드로우, 프리헨드, 스트림라인등이 있다.
플래시에 활용할수 있는 벡터프로그램은?
3D를 보여주는 벡터3D,스위시, 플렉스 등이 있으며.
파일 포멧방식은 ai, eps, crd, dxf등이 있답니다. 앞으로 플래시를 접하려땐 이 벡터방식의 프로그램들을 많이 사용해보면
유용할 것이다. ◈ CMYK 와 RGB 의 차이점 CMYK- 색료(물감, 잉크 등)에 의한 색.
( Cyan, Magenta, Yellow, Key Color-Black )
출력쪽에서는 이를 4도라고 합니다.
이것은 4가지의 색을 혼합하여 색깔을 만드는데 RGB에 비해 탁한색이 나타납니다.
일러스트나 코렐드로우등 출력용 프로그램들은 CMYK색상이 기본으로 되어있습니다.

RGB - 빛에 의한 색
( Red, Green, Blue )
즉, 모니터나, TV등 빛에 의해 뿌려지는 색상입니다.
일반 그래픽 프로그램들은. 보통 RGB색상이 기본으로 잡혀져 있답니다.

'디자인 > illustrator' 카테고리의 다른 글

Tool_Pen_Add Anchor Point  (1) 2008.06.08
Tool_pen_pen  (0) 2008.06.08
Tool_Pen  (0) 2008.06.08
Tool_Direct Lasso  (0) 2008.06.08
Tool_Lasso  (0) 2008.06.08
Tool_direct Selection  (0) 2008.06.08
Tool_Selection  (0) 2008.06.08
툴박스 살펴보기  (0) 2008.06.08
이건 알고 강좌 들어가자  (0) 2008.06.08
일러스트란???  (0) 2008.06.08
by Anna 안나 2008. 6. 8. 19:28

안녕하세요.^^

일반적으로 제로보드에서 채팅 쓰시려면

위젯으로 배포된 가가채팅을 쓰고 계실텐데,,

가가채팅은 플래시로 짜여져서 정말 복잡하게 만들어진거라

정말 그 제작자의 정성이 듬뿍 담겨져 보입니다. :-)




저는, 위젯도 아니고 애드온도 아니고

그냥 채팅소스를 팁으로 올려드립니다.

편한데로 쓰세요.



채팅소스는 사리님의 블로그에서 배포중이시고요.
(http://www2.ssam.biz/blog/?tb=1&ct=6)

by Anna 안나 2008. 6. 8. 14:44
그동안 요청이 많았는데,
채팅방id에 한글되도록 수정했습니다.
((채팅방id에는 "한글영문_-"만 되고 "~`!@#$%^&*()+=|[]{}" 이건 안됩니다.))
..
ie6하고, ie7하고 Firefox에서 테스트했습니다.
한글제목의 파일 업다운도 문제없이 됩니다.

mysql 안쓰고, php파일 하나로 돌아갑니다.
압축풀어 폴더채로 업로드하고, chat폴더권한 777주고(설치끝),
index.php에 접속해서 사용하면 됩니다.




타이틀에 현재시간의 초가 나오도록 했습니다.
혹시 브라우저가 먹통이 되면,, 새로고침하라고,,,
방문자목록에 시간나오는건,, 그냥 허전해서 갖다붙인거고...
새글확인하는 과정하고는 무관해서,
새글확인하는 ajax함수가 먹통이 되더라도, 그건 그냥 돌아갑니다.
그래서 먹통여부가 그걸로는 판별이 안됩니다.
.. 그래서 새글확인하는 함수에서,
타이틀에 현재시간의 초를 출력하도록 했습니다.
by Anna 안나 2008. 6. 8. 10:56
요청으로 두가지를 수정했습니다.
첫째, 이미지링크를 클릭했을때,
이미지넓이가 소스7번줄에 정해진 것보다 크면, 소스7번줄에 정해진 넓이로 줄입니다.
그리고 이미지위에 [새창으로] [다운로드] 버튼을 달았습니다.
새창으로 : 새창으로 이미지를 띄우는 것이고,
다운로드 : 업로드한 이미지파일일때(외부url이 아니라), 바로 다운로드창이 뜹니다.

둘째, .htaccess파일로 내부파일의 외부접근(직접적인)을 막고 있는데,
그게 아마 apache서버에서만 되는 것으로 알고 있습니다.
그래서 그게 되지 않는 경우가 있어서, 업로드파일의 확장자제한을 요청하셨는데,
문제는 서버의 파싱(스크립트해석)입니다.
어떤 서버에서는 htm확장자파일도 파싱하고, 어떤 서버에서는 하지 않는등,
서버에 따라, 파싱되는 확장자가 다릅니다.

그래서 확장자는 여전히 제한하지 않고,
대신 업로드파일이 저장되는 폴더이름을,, 숨기는 방식으로 했습니다.

방장이 채팅방을 개설했을때, 방장의 PHPSESSID를 이름으로 해서, 업로드저장경로를 만들고,
upload.php파일을 생성시켜서, 그 내역을 저장하도록 했습니다.
그래서 파일업로드/다운로드 할때, upload.php파일을 인클루드해서
업로드저장경로의 변수정의를 얻도록했습니다.

upload.php 파일은 원래는 외부접근도 안되지만,
혹시 되더라도, 파싱된 결과만 보여지기 때문에 아무것도 안나오게 됩니다.

그러니까,, 업로드파일의 경로를 감추는 것입니다.
FTP로 열어보기전에는 어떤 폴더가 있는지 알수없도록..
물론 디렉토리목록이 그냥 출력되면, 허당입니다.
(간혹 그런곳이 있더군요. 경로까지의 주소만 넣으면, 그 경로안의 파일이 그냥 주루룩 나열되는)

셋째, 채팅방 한글아이디되도록 요청하셨는데,
요건 해보니,, 폴더가 생성이 안되는등..문제가 있어서,
뭔가 좀 더 복잡한 처리가 필요할거 같아서,,, 다음으로 미뤘습니다.

mysql 안쓰고, php파일 하나로 돌아갑니다.
압축풀어 폴더채로 업로드하고, chat폴더권한 777주고(설치끝),
index.php에 접속해서 사용하면 됩니다.
by Anna 안나 2008. 6. 8. 10:55
채팅방리스트에, 작은 채팅방.. 글이 두번씩 올라가길래 수정했습니다.


mysql 안쓰고, php파일 하나로 돌아갑니다.
압축풀어 폴더채로 업로드하고, chat폴더권한 777주고(설치끝),
index.php에 접속해서 사용하면 됩니다.
by Anna 안나 2008. 6. 8. 10:55
글쓰는 부분에 ajax함수를 비동기화에서 동기화로 바꿀라고 했는데,
하여튼 바꾸긴 했는데, 먼저도 그게 비동기식이었는지,, 잘 모르겠더군요..

하여튼 그래서, 자기가 글 올리고 새글바로 확인하는 간격을 0.2초로 했습니다.
.. 원래 읽어오는 주기가 0.2초 안에 있으면, 그냥 기다리고,
아니면 새글확인주기와 무관하게 다시 새글확인하도록 하는데,, 거기서의 기다리는 시간.
기존에 0.25초였었는데,, 0.2초로.. == 뭐 별 의미는 없습니다.

새글이 올라오면, document.title='새글이 올라왔습니다' 라고 표시됩니다.
새글이 없으면, 원래 채팅방에서 표시되는대로 '채팅방 - 채팅방id'로 돌아옵니다.
새글 확인주기가 대충 1초니까, 새글이 올라왔다는 표시도 1초동안 유지된다고 보면 되겠네요.


mysql 안쓰고, php파일 하나로 돌아갑니다.
압축풀어 폴더채로 업로드하고, chat폴더권한 777주고(설치끝),
index.php에 접속해서 사용하면 됩니다.
by Anna 안나 2008. 6. 8. 10:54
인코딩이 외부적으로 euc-kr / 내부적으로는 utf-8인
방문자목록없는 간단한 채팅소스를 수정한 것입니다.

새글이 올라오면 어떻게 표시해달라는 요청이 있어서,
document.title에 새글이 올라왔다는 문구를 적었습니다.
새글확인이 1초마다 이뤄지니까, 타이틀에 새글이 올라왔다는 문구는 1초동안 유지됩니다.
1초뒤에 새글이 없으면, 다시 채팅방으로 돌아가고..

간단한 수정인데, 꽤 유용하네요.
채팅소스에도 적용하면 좋을거 같습니다.

하여튼 좋은 기능을 제안해주셔서 감사합니다.
잘쓰세요...

아래는 소스. 위에는 업로드한 파일압축입니다.

그리고
FF에서 Enter로 글이 안올라가길래,
form을 달아서 Enter로 글이 올라가도록 했습니다.


<?
session_start();
$chat = "chat.php";
if($_POST[xname] || $_SERVER[QUERY_STRING]){
header ("Content-Type: text/html; charset=UTF-8");
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
if($_POST[xname] && $_POST[text]) {
if(!$_SESSION[name] || $_SESSION[name] != $_POST[xname]) {
$_POST[xname] = str_replace('<', '&lt;', str_replace(' ', '', stripslashes(trim($_POST[xname]))));
$_POST[xname] = preg_replace("` [\s]`i", "", $_POST[xname]);
$_POST[xname] = preg_replace("`[\x1b\x18\x7f\t]`", "", $_POST[xname]);
if($_SESSION[name]) $nickc = "--\x1b<font class=mc><font class=mm>".$_SESSION[name]."</font> ==> <font class=mm>".$_POST[xname]."</font></font>\n";
session_unregister("name");
$name = $_POST[xname];
session_register("name");
}
if($_POST[xname]) {
$_POST[text] = preg_replace("`[\x1b\x18\x7f<]`", "", stripslashes($_POST[text]));
$nickc .= $_POST[xname]."\x1b".$_POST[text]."\n";
$fp = fopen("./_text", "a");
fputs($fp, $nickc);
fclose($fp);
if(filesize("./_text") > 2048) {
$fp = fopen("./_text", "r");
fread($fp, 1536);
fgets($fp);
while(!feof($fp)) $fpo .= fgets($fp);
fclose($fp);
$fp = fopen("./_text", "w");
fputs($fp, $fpo);
fclose($fp);
}
}
exit;
}
if($_GET[tex]) {
if(file_exists("./_text")){
if($_GET[tex] == -1) $_GET[tex] = 0;
$fze = filesize("./_text");
if($fze != $_GET[tex]) {
echo $fze."\x7f";
$fp = fopen("./_text", "r");
while(!feof($fp)) {
if($_GET[tex] && $fze > $_GET[tex]) fread($fp, $_GET[tex]);
if($fpo = trim(fgets($fp))) echo $fpo."\x7f";
}
fclose($fp);
}
}
exit;
}
if($_GET[delete] == "text" && $_SESSION[admin_pass]) {
$fp = fopen("./_text", "w");
fclose($fp);
}
exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>채팅방</title>
</head>
<body>
<script>
function go() {
var url = '<?=$chat?>?tex=' + document.getElementsByName('ntim')[0].value;
if(window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200) {
var str = xmlHttp.responseText;
if(str) {
var vew = str.split("\x7f");
allc = vew.length -1;
if(allc > 1) {
document.getElementsByName('ntim')[0].value = vew[0];
if(document.getElementById('AA').innerHTML == '') str = "<table border=0 cellspacing=0 cellpadding=0 width=100% style='margin-bottom:20;table-layout:fixed'>";
else str = "";
for(i = 1;i < allc;i++){
var nam = vew[i].split("\x1b");
str += "<tr class=trh><td class=name>"+ nam[0] +"</td><td width=10>:</td><td class=memo>"+ nam[1] +"</td></tr>";
str += "<tr><td colspan=3 bgcolor=#E6E6E6 height=1><img height=1></td></tr>";
}
str += "</table>";
document.getElementById('AA').innerHTML = document.getElementById('AA').innerHTML.substring(0,document.getElementById('AA').innerHTML.length-8) + str;
document.getElementById('AA').scrollTop = 10000000;
document.title='새글이 올라왔습니다';
}
} else document.title = '채팅방';
setTimeout('go()', 1000);
delete xmlHttp;
}
}
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

function wte(){
if(window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
}
var param = '<?=$chat?>?&xname='+ document.getElementsByName("xname")[0].value.replace(/[&'"]/gi,"") +'&text='+ document.getElementsByName("text")[0].value.replace("&","%26");
xmlHttp.open("POST", param, true);
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlHttp.setRequestHeader("Content-length", param.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200) {
document.getElementsByName('text')[0].value = '';
document.getElementsByName('text')[0].focus();
delete xmlHttp;
}
}
xmlHttp.send(param);
}
window.onload = function(){setTimeout("document.getElementsByName('ntim')[0].value='-1';", 50);}
setTimeout('go()', 100);
</script>
<center>
<table border=0 cellspacing=0 cellpadding=5 width=330 style='border:1px solid black'>
<tr height=200><td colspan=3><div id=AA style='width:320;height:200'></div></td></tr>
<tr height=30><td colspan=3><form onsubmit="wte();return false;" style="margin:0"><input type=text name='xname' maxlength=10 style='width:65' value='<?=iconv('UTF-8', 'CP949//IGNORE', $_SESSION[name])?>'>
<input type='text' name='text' style='width:200;'>
<input type='submit' value='쓰기' onclick="wte();return false;" class='button'>
<input type='hidden' name='ntim' value='-1'></form>
</td></tr>
</table>
</center>
<style>
body {font-size:9pt;font-family:gulim;word-break:break-all;}
td {word-break:break-all;font-size:9pt;}
.mm {color:#D7D7D7;font-weight:bold;font-family:gulim;text-align:center;padding-top:5}
.mc {color:#D7D7D7;font-family:gulim;text-align:center;padding-top:5}
.button {background-color:#D7D7D7;border:0;border:1px solid black;margin-right:4px;margin-left:4px;width:35px}
.name {width:50;padding-left:5;font-weight:bold;}
.memo {padding:5px 0px 5px 5px;width:210;}
.trh {padding:6px 0px 6px 0px;}
#AA {overflow-x: hidden; overflow-y: auto;background-color:#FFFFFF;border:1px solid black; }
</style>
</body>
</html>
by Anna 안나 2008. 6. 8. 10:54
예제는 우선 여기:http://whoami.webzero.co.kr/chat_/small.php

euc-kr 찾는 분이 있어서,, 만들었습니다. (물론 기존꺼 수정해서)

iconv를 많이 쓰게 될줄 알았는데,
별로 안쓰게 됐습니다.

하여튼,, 보여지는 부분은 euc-kr 이고,
보여지지 않는 기능적인 부분은 utf-8입니다.
뭐.. 그래도 브라우저에 인코딩은 euc-kr로 나오니까요......

이걸 인클루드하는 실험은 하지 않았는데,
아마 그냥저냥 될거 같습니다. (물론 euc-kr에)

소스 3줄에,
$chat = "index.php";
이렇게 있는데, 혹시 이걸 팝업등으로 독립적으로 띄우질 않고,
다른 곳에 이 소스를 인클루드할때라도,
처리하는 부분은 인클루드되지 않은, 이 파일 단독으로 작동시키기 위해섭니다.

아래가 소스인데,,, 아래내용을 텍스트에디터에 붙여넣고,
$chat = "index.php";
여기 이름하고 맞춰서 저장하면 됩니다. 저장되는 경로(폴더)의 권한은 777 주시고....

------
icov() -- php에서 텍스트의 인코딩바꾸는 함수 --
함수는 세션에 저장한 닉네임에 사용합니다.
닉네임이 바뀌었는지 계속 확인하니까,, 세션닉네임을 자주 거기서 쓰게 되는데,
그래서 세션닉네임을 UTF-8로 저장했습니다.
그래놓고, 창을 새로고침하거나 할때, 닉네임칸에 자동으로 들어갈 세션닉네임은
인코딩을 euc-kr로 바뀌어서 ... 들어가도록 했구요...

문제가 조금 있는게,
닉네임을 바꿨을때, 닉네임 바뀌었다고 뜨고, 그거 바꾸면서 올린 글이 안보입니다.
F5 새로고침해보면,, 나오는걸로 봐서,
저장이 안된건 아닌데, 읽을때,,, 이상하게 못읽어오는군요..
아마 닉네임을 바꾼 본인에게만 그럴겁니다.
우선은 닉네임 바꾸면 F5 (새로고침) 하세요.....

혹시나 그 문제인가해서,
글 올리는 부분이 ajax함수를 비동기화였던거에서 동기화로 바꿔봤는데,
마찬가지더군요...
어쨌거나,, 이왕 바꿨으니까,, 그건 그대로 갑니다.

<?
session_start();
$chat = "index.php";
if($_POST[xname] || $_GET[tex] || $_GET[delete]){
header ("Content-Type: text/html; charset=UTF-8");
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
if($_POST[xname] && $_POST[text]) {
if(!$_SESSION[name] || $_SESSION[name] != $_POST[xname]) {
$_POST[xname] = str_replace('<', '&lt;', str_replace(' ', '', stripslashes(trim($_POST[xname]))));
$_POST[xname] = preg_replace("` [\s]`i", "", $_POST[xname]);
$_POST[xname] = preg_replace("`[\x1b\x18\x7f\t]`", "", $_POST[xname]);
if($_SESSION[name]) $nickc = "--\x1b<font class=mc><font class=mm>".$_SESSION[name]."</font> ==> <font class=mm>".$_POST[xname]."</font></font>\n";
session_unregister("name");
$name = $_POST[xname];
session_register("name");
}
if($_POST[xname]) {
$_POST[text] = preg_replace("`[\x1b\x18\x7f<]`", "", stripslashes($_POST[text]));
$nickc .= $_POST[xname]."\x1b".$_POST[text]."\n";
$fp = fopen("./_text", "a");
fputs($fp, $nickc);
fclose($fp);
if(filesize("./_text") > 2048) {
$fp = fopen("./_text", "r");
fread($fp, 1536);
fgets($fp);
while(!feof($fp)) $fpo .= fgets($fp);
fclose($fp);
$fp = fopen("./_text", "w");
fputs($fp, $fpo);
fclose($fp);
}
}
exit;
}
if($_GET[tex]) {
if(file_exists("./_text")){
if($_GET[tex] == -1) $_GET[tex] = 0;
$fze = filesize("./_text");
if($fze != $_GET[tex]) {
echo $fze."\x7f";
$fp = fopen("./_text", "r");
while(!feof($fp)) {
if($_GET[tex] && $fze > $_GET[tex]) fread($fp, $_GET[tex]);
if($fpo = trim(fgets($fp))) echo $fpo."\x7f";
}
fclose($fp);
}
}
exit;
}
if($_GET[delete] == "text" && $_SESSION[admin_pass]) {
$fp = fopen("./_text", "w");
fclose($fp);
}
exit;
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>채팅방</title>
</head>
<body>
<script>
function go() {
var url = '<?=$chat?>?tex=' + document.getElementsByName('ntim')[0].value;
if(window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
}
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200) {
var str = xmlHttp.responseText;
if(str) {
var vew = str.split("\x7f");
allc = vew.length -1;
if(allc > 1) {
document.getElementsByName('ntim')[0].value = vew[0];
if(document.getElementById('AA').innerHTML == '') str = "<table border=0 cellspacing=0 cellpadding=0 width=100% style='margin-bottom:20;table-layout:fixed'>";
else str = "";
for(i = 1;i < allc;i++){
var nam = vew[i].split("\x1b");
str += "<tr class=trh><td class=name>"+ nam[0] +"</td><td width=10>:</td><td class=memo>"+ nam[1] +"</td></tr>";
str += "<tr><td colspan=3 bgcolor=#E6E6E6 height=1><img height=1></td></tr>";
}
str += "</table>";
document.getElementById('AA').innerHTML = document.getElementById('AA').innerHTML.substring(0,document.getElementById('AA').innerHTML.length-8) + str;
document.getElementById('AA').scrollTop = 10000000;
}
} else window.status = '새 글이 없습니다.';
setTimeout('go()', 1000);
delete xmlHttp;
}
}
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

function wte(){
if(window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
}
var param = '<?=$chat?>?&xname='+ document.getElementsByName("xname")[0].value.replace(/[&'"]/gi,"") +'&text='+ document.getElementsByName("text")[0].value.replace("&","%26");
xmlHttp.open("POST", param, true);
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlHttp.setRequestHeader("Content-length", param.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200) {
document.getElementsByName('text')[0].value = '';
document.getElementsByName('text')[0].focus();
delete xmlHttp;
}
}
xmlHttp.send(param);
}
window.onload = function(){setTimeout("document.getElementsByName('ntim')[0].value='-1';", 50);}
setTimeout('go()', 100);
</script>
<center>
<table border=0 cellspacing=0 cellpadding=5 width=330 style='border:1px solid black'>
<tr height=200><td colspan=3><div id=AA style='width:320;height:200'></div></td></tr>
<tr height=30><td colspan=3><input type=text name='xname' maxlength=10 style='width:65' value='<?=iconv('UTF-8', 'CP949//IGNORE', $_SESSION[name])?>'>
<input type='text' name='text' style='width:200;'>
<input type='submit' value='쓰기' onclick="wte()" class='button'>
<input type='hidden' name='ntim' value='-1'>
</td></tr>
</table>
</center>
<style>
body {font-size:9pt;font-family:gulim;word-break:break-all;}
td {word-break:break-all;font-size:9pt;}
.mm {color:#D7D7D7;font-weight:bold;font-family:gulim;text-align:center;padding-top:5}
.mc {color:#D7D7D7;font-family:gulim;text-align:center;padding-top:5}
.button {background-color:#D7D7D7;border:0;border:1px solid black;margin-right:4px;margin-left:4px;width:35px}
.name {width:50;padding-left:5;font-weight:bold;}
.memo {padding:5px 0px 5px 5px;width:210;}
.trh {padding:6px 0px 6px 0px;}
#AA {overflow-x: hidden; overflow-y: auto;background-color:#FFFFFF;border:1px solid black; }
</style>
</body>
</html> 보기 / 닫기
by Anna 안나 2008. 6. 8. 10:52
2008/6/5 이전의 mmb 1.27 버젼을 사용하시는 분들은 업로드 기능이 정상적으로 동작하지 않을 것입니다. 1.27 제작중에 실수로 업로드 기능부분 소스를 전혀 갱신하지 않아서 발생한 일입니다. 불편을 끼쳐드려 죄송합니다.

이 파일을 실행시키면 2개의 파일이 생성되는데, 이를 기존의 1.27 폴더안의 파일에 덮어쓰면 패치는 완료됩니다.
by Anna 안나 2008. 6. 5. 23:29
* 설치시 첨부된 readme.txt 파일의 뒷부분에 있는 설치방법을 꼭 참고하시기 바랍니다.
* 이 파일은 업로드 기능이 동작하지 않았던 버그가 패치된 파일입니다. 따라서 위에 등록된 1.27 업로드기능 패치파일을 사용할 필요가 없음을 알려드립니다.


1.27 갱신사항
--------------------------------------------------------------------------------------
1. index.php 파일의 복잡한 코드 부분을 대부분 함수화 하여 확장함수라이브러리(extend_lib.php)로 옮김으로서 index.php 파일 수정이 한결 용이하게 됨. (1.27 전용)

2. 기존 검색(search)루틴을 삭제. 새 검색루틴 삽입. (1.27 전용)
기존 방식에서는 검색표시 페이지와 메인 페이지가 search.php 와 index.php로 따로 존재하였으나 새 검색루틴에서는 인덱스파일 하나로 단일화 되어 파일수 감소 및 디자인 수정시에도 검색파일과 인덱스파일 수정에서 인덱스 수정만으로 감소됨. 또한 검색시에도 페이지 바를 이용한 이동이 가능해 지고 리플표시건수로 제한되어있던 검색건수 표시 제한이 없어짐. 또한 관리자모드 삭제시에도 검색후 검색결과를 유지한 채 삭제가 가능해짐으로서 관리 편의성 증대.

3. 기존 리플순 표시기능을 제거하고 상단의 리플순 링크를 표시, 클릭시 해당 게시물만 표시하도록 변경.(1.11.04.a 에서)

4. 환경설정에 전체로그 초기화 기능을 추가. 기능사용시 모든 로그정보 및 그림을 삭제함으로서 완전 초기화 시킴. 복구가 불가능하므로 사용시 주의 요망.(1.11.04.a & 2.00 공통 기능, 로직은 1.11.04.a 에서)

5. 약간이라도 서버 부하를 덜어주기 위해, 페이지바 생성에 필요한 로그파일을 읽는 회수를 감소시키도록 로직이 수정됨.(1.11.04.a 에서)

6. 공지사항 파일(notice.html) 위치가 새로운 skin_data 폴더 안으로 이동됨. (1.11.04.a 에서)

7. 1.11.02 에서의 리플추가시 실제 데이터를 삭제하는 루틴이 로그만 삭제할 뿐 실제 그림파일은 제거하지 않아 용량문제가 쉽게 발생할 수 있었던 버그를 그림 포스트시 보존갯수를 넘는 리플과 그림파일을 모두 삭제하도록 수정. (1.11.04.a 에서)

8. 1.11.03과 1.11.04 에서 제거되었던 이모티콘 미리보기 기능을 다시 포함 시킴. (1.11.04.a & 2.00 공통 기능, 로직은 1.11.04.a 에서)

9. 인덱스 화면에서 각 리플 표시시, 그림작성자가 리플을 달 경우에는 이를 표시하도록 개선됨. 그림 작성자 이외에는 모두 일반코멘트로 분류됨. (1.11.04.a 에서)

10. 공지사항을 환경설정에서 편집할수 있게 됨(1.27 전용)

11. 이모티콘 편집기능 추가(2.00 에서)

12. 에스카르고 리플레이 기능 추가 (2.00 에서)

13. 이모티콘 표시시 가로 표시갯수 조절기능 추가(2.00 에서)

14. 이모티콘 리스트 파일이 없을 경우 무한오픈 에러를 내는 버그를 수정(1.27)
by Anna 안나 2008. 6. 5. 23:28
Mic 님께서 제작하신 MMB v2.00 게시판 & 1.xx -> 2.00 데이터 변환툴, 2.00 -> 1.xx 변환툴 통합 파일. 실행시키면 3개의 압축파일이 생성됩니다.

자세한 기능 및 설명, 설치방법은 믹님의 블로그에 잘 설명되어 있으므로 참고하시기 바랍니다. 사용자 편의 기능이 크게 강화되었고, 로그초기화 문제도 상당히 완화되었습니다.

이 파일은 가장 최근의 패치(24일 두번째 패치)까지 적용된 파일입니다.
by Anna 안나 2008. 6. 5. 23:28
1.11 - 1.11.04에서 빠져있는 이모티콘 미리보기 기능 추가 패치파일입니다. 추가방법은 다운로드 받은 파일을 실행시켜 생성되는 폴더안에 있는 readme.txt 파일내에 설명되어 있습니다.

** 제작시는 M타입 1.03과 MMB 1.11.03 ~ 04 버젼에 호환을 고려하였으나 원칙적으로 M타입 1.03 부터 1.11.04 까지 호환 됩니다.
by Anna 안나 2008. 6. 5. 23:27
v1.11.03.a 에서 달라진 점

* 영문스팸방지처리. 완벽까진 못가도 대략 90%쯤 잡는것 같습니다. 처리추가후 영문스팸 한 두건 ? 본듯.

* 이모티콘 팝업 표시기능 교체

* ip, 작성툴, 시간 선택옵션 무효화 버그 수정
- 1.11.03.a 에서 수정했...는데 그만 깜빡 잊고 option_list 파일을 교체하지 않아서 제대로 움직이지 않고 있었습니다.(--) option_list.php 파일 교체.

* 페이지 이동 버튼 삭제, 페이지 이동 바 도입
- 제로보드 스타일의 페이지 이동 바를 적용했습니다. 서버에 약간 부담을 줄 수 있기에 심사숙고 했으나, 기존에 3페이지 이동버튼이 부정확하고, 기존의 전후 이동 버튼은 불편해서......원치 않으시는 분들은 1.11.03.a 를 그대로 쓰시면 됩니다.

* ip 옵션 off 시 화면 전체에서 ip 표시가 사라집니다.(리플 작성시 포함)

* 공지사항 기능 추가
- 공지사항 작성법 : v1.11.04 에 포함된 notice.html 파일이 공지사항의 샘플 예제입니다. 공지사항은 이렇게 notice.html 이란 이름으로 만들어 업로드 시킵니다.
작성형식은 보통의 html 그대로.
- 표시위치 : index.php 파일을 열어보면 <?=notice($notice);?> 이런 것이 있습니다. 이 부분에 공지사항이 표시되므로, 이 부분을 표시하기 원하는 위치로 옮겨주고 저장한뒤, 계정에 업로드 시키면 이후는 notice.html 파일을 갱신하는 것만으로 공지사항을 바꿔줄 수 있습니다.
- 공지사항 표시는 환경설정에서 off 시키면 notice.html 파일 존재여부에 관계없이 표시되지 않습니다.
by Anna 안나 2008. 6. 5. 23:26
** 이어그리기 오류를 수정(1.02 -> 1.03)

** 설명 **
오리지널 비툴 게시판, 즉 비툴만 있는 구형 게시판에 에스카르고를 선택할 수 있도록 추가하여 비툴+에스카르고게시판 으로 만들어주는 추가 업데이트 파일입니다.

압축을 풀어 나오는 4개의 파일을 계정에 그대로 업로드 하면(덮어씌우면) 업데이트는 완료됩니다.

** 재배포는 허용하지 않습니다.
** 제가 배포한 것과 다른 임의의 개변이나 수정이 가해진 소스의 경우 질문 및 문제해결, 업데이트 등의 서포트 대상에서 제외됩니다.
by Anna 안나 2008. 6. 5. 23:26
((-------IMAGE-------))

비툴 오리지널 게시판 입니다. 에스카르고가 없는 비툴 단독 게시판입니다. 소스의 여러부분이 2007.1월 기준으로 수정되어 있어 설치후 소스수정이 거의 필요없습니다. 참고로 이 게시판은 현재 반디님홈에서 서포트 하지 않으므로 반디님 홈에 질문하시지 마시고 이곳으로 해주시기 바랍니다.
이 게시판 설치방법은 FAQ 10번 게시물을 참조하면 됩니다. 다만 혼자서 아무리 해봐도 잘 안되는 경우에는 저도 시간이 많지는 않지만 자유게시판 쪽에 글 남기시면 여유가 되는대로 대신설치도 해드리겠습니다. 물론, 여유가 되면 말이죠.
by Anna 안나 2008. 6. 5. 23:25
오에카키 프리사이즈 통합 버젼 입니다.

비툴 1,2,0,2 버젼
오에카키 1.32 버젼
페인트 비비에스 2.22_8 버젼

총 3개 툴을 사용 할 수 있습니다.
by Anna 안나 2008. 6. 5. 23:23
시이-페인터 애플릿의 최신 1.11_4 버젼입니다.
by Anna 안나 2008. 6. 5. 23:23
페인트비비에스와 시이페인터의 애니메이션 파일(pch, spch)을 재생해주는 뷰어전용 애플릿 pchviewer 1.23 버젼입니다.
사용법은 내장 readme 파일 및 샘플 참조.
by Anna 안나 2008. 6. 5. 23:23
마이크로 소프트 사의 JVM 입니다. 오에카키, 페인트비비에스, 시이-페인터, 라쿠카키, 오에카키2 등이 되지 않는 분은 이 JVM 을 받아 설치하면 됩니다.

그럼.....
by Anna 안나 2008. 6. 5. 23:22
페인트 애플릿 최신 버젼인 2.22_8 입니다.
압축을 풀어 나온 파일중 jar 파일을 기존사용중인 페인트애플릿 파일에 덮어씌워주시면 업그레이드는 완료됩니다.
by Anna 안나 2008. 6. 5. 23:21
이 파일은 오에카키 + 페인트비비에스로 구성된 프리사이즈 게시판에 비툴을 통합해 사용하는 compati.cgi 파일입니다.

** 적용방법 **

1. 먼저 오에카키 + 페인트비비에스 프리사이즈 게시판이 설치되어 있어야 합니다.

2. 다운받은 압축 파일을 풉니다.

3. 압축이 풀린 compati.cgi 의 펄경로를 계정에 맞게 조절해 준 다음(펄 경로는 각자 서비스 받고 있는 호스팅사에 문의)을 기존에 설치되어 있는 계정의 compati.cgi 파일에 덮어 씌웁니다.
** 펄경로의 경우, 대부분은 /usr/bin/perl 입니다만 서버에 따라서는 /usr/local/bin/perl 을 사용하는 경우도 있습니다. 대개 둘중에 하나입니다.

4. picture.cgi 파일을 열어서 다음 부분을 찾은 후
<option value=poo>oekakiBBS</option>
<option value=syi>PaintBBS</option>

그 바로 밑에 다음행을 추가합니다.
<option value=btool>Btool</option>

5. 파일을 저장 후 계정에 있는 기존의 picture.cgi 파일에 덮어씌웁니다.

- 끝 -
by Anna 안나 2008. 6. 5. 23:20
default value 호출하기.. 라고 해야하나요?? 제목이 좀 이상하긴 하지만..

이 팁은 php문서를 수정하는 것이 아니라 /zbxe/modules/board/skins/ 경로안에 있는 모듈보드스킨의 글쓰기 창에서 간단히 수정할 수 있는 방법입니다. 아무래도 다른 문서를 만지는 것은 업데이트도 있고, 실력없는 저로서는 불안하기 때문에..
또, 제 홈페이지에서는 php문서를 수정하면 이상하게 에러가 출몰해서 아예 건들지 않습니다.
아무것도 건드리지 않고 드림위버로 저장만해서 올려도 에러가 뜨더군요.. 참 황당스러운.. -_-ㆀ 쓸데 없는 말은 집어치우고 본론으로 들어가도록 할께요.

write_form.html 문서에서 form 영역을 살펴보면 아래와 같은 부분이 있습니다.
<input type="hidden" name="content" value="{$oDocument->getContentText()}" />
바로 내용을 불러오는 인풋이죠.
type="hidden" 처리를 했기 때문에 글쓰기창에서는 에디터만 보인다는 것은 아실테죠?
이 것을 변경하여 에디터에 원하는 글을 넣는 방법입니다. 3가지 방법이 있으니 원하는 방법으로 테스트해보시면 됩니다.

1. 글쓰기창에 변수를 선언하여 문자호출하기 일단 아래의 코드창에 있는 내용을 살펴보세요. view plaincopy to clipboardprint? {@ $Content = "에디터에 미리 글을 넣어봅시다<br />태그를 이용할 수도 있군요!";} <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$Content}<!--@end-->" /> {@ $Content = "에디터에 미리 글을 넣어봅시다<br />태그를 이용할 수도 있군요!";} <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$Content}<!--@end-->" /> 왜 저렇게 했는지 아시는 분들은 이미 아실테죠?
첫번째 줄에서 $Content라는 변수를 선언하여 두번째줄의 내용에서 제목변수와 함께 호출을 했습니다. 내용이 들아가는 value에 아래와 같은 곳이 있는데요. view plaincopy to clipboardprint? <!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$Content}<!--@end--> <!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$Content}<!--@end--> 위에서도 말씀드렸듯이 {$Content} 이 부분은 선언한 내용을 호출한 부분이구요.
나머지부분또한 필요해서 넣은 것입니다.
새글로 작성할 때에는 상관이 없는데, {$Content}만 호출하여 글수정을 하면 이미 작성된 부분을 반영하지 못하더라구요.
그래서 저렇게 넣은 것입니다. 문서의 번호가 부여된 글.. 그러니까 이미 작성된 글에서는 {$Content}를 호출하지 않게요. 아래는 테스트 결과입니다.
((-------IMAGE-------))
2. 위의 경우로 예를 들면 $Content 변수를 선언하지 않고 value에 직접 내용을 입력하는 방법입니다. view plaincopy to clipboardprint? <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->에디터에 미리 글을 넣어봅시다<br />태그를 이용할 수도 있군요!<!--@end-->" /> <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->에디터에 미리 글을 넣어봅시다<br />태그를 이용할 수도 있군요!<!--@end-->" /> 에디터에 미리 글을 넣어봅시다<br />태그를 이용할 수도 있군요! 이 글귀가 있는 곳에 원하는 내용을 넣으시면 됩니다.

3. skin.xml을 이용하여 각 게시판마다 다른내용을 출력할 수 있습니다. skin.xml문서를 열어 변수를 추가합니다.
저는 editor_message로 추가했습니다.

((-------IMAGE-------))

그렇다면 이번에는 skin.xml 에 추가한 변수를 에디터에 불러와야겠죠?
어떻게 호출하는지 아시겠지만 처음사용하는 분들을 위해 설명을 해볼께요. write_form.html 문서를 열고 form영역안에 아래와 같이 추가하시면 됩니다. view plaincopy to clipboardprint? <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$module_info->editor_message}<!--@end-->" /> <input type="hidden" name="content" value="<!--@if($document_srl == $oDocument->document_srl)-->{$oDocument->getContentText()}<!--@else-->{$module_info->editor_message}<!--@end-->" /> 내용을 불러오는 곳에 {$module_info->editor_message} 이 변수를 추가했습니다.
아시겠지만 skin.xml에 추가한 변수이름이 editor_message이고...
skin.xml에서 추가한 변수의 호출시작은 $module_info로 합니다. ... 글을 마치며 ...

확장변수를 이용하여 위와 같이 할 수도 있지만 많이 번거로울 것 같아서 생략합니다.

클릭하면 사라지는 자바가.. 저는 적용이 안되더군요. 음..

여러가지로 응용해보세요.
출석부를 만들다가 해보니 되길래 팁게시판에도 없는 것 같아서 올리는 팁입니다.
by Anna 안나 2008. 6. 1. 20:42