1. 기본 데이터베이스

2. 테이블 사용 : use test

//Database changed라는 출력과 함께 test라는 데이터 베이스에 접속,

//이 때에는 세미콜론 사용을 안 한다.

//또한 단일라인에서만 사용가능하므로 한 줄에 다 입력해야 함.

3. 현 데이터베이스 내의 테이블들을 출력 : show tables;


4. create table pet(name varchar(20), owner varchar(20),
species varchar(20), sex char(1), birth date, death date);

//name, owner, species, sex, birth, death의 정보를 가질 table을 생성,

//가독성을 높이기 위해 2줄에 걸쳐 타입


5. describe pet;

//pet이라는 테이블이 가지는 정보에 대해 검사, 이 때 필드 이름, 데이터 타입,

//NULL의 여부, Key의 여부, DEFAULT의 여부, 기타 에 관한 정보가 출력된다




6. load data local infile
'C:/mysql/pet.txt' into table pet;

//C:mysql에 있는 pet.txt 내에 있는 정보를 pet이란 테이블에 불러와서 입력한다.

//텍스트 파일로 데이터 입력시 각각의 필드는 tab이나 띄어쓰기로 구분하도록 디폴트

//텍스트 파일 입력 중 누락된 값들은 NULL값으로 자동처리된다.

//주의할 점은 mysql에서 위치입력시 Dos처럼 를 쓰는 것이 아니라 /를 사용한다


7. load data local infile
'C:/mysql/pet.txt' into table pet
lines terminated by 'rn';

//rn을 라인 터미네이터로 사용한다




8. insert into pet values('Puffball','Diane','hamster','f',1993-03-30',NULL);

//pet이란 테이블에 값을 입력, 이 때는 NULL을 써줘서 누락된 값을 표시한다.


9. select * from pet;

//pet테이블에 있는 모든 정보 출력



10. delete from pet;

//pet테이블에 있는 모든 정보 삭제, 이 명령어는 텍스트 파일의 자료 중 잘못된 값이 많을 때

//텍스트 파일의 정보 수정 후 다시 입력하려고 할 때 필요하다. 만약 정보 수정 후 바로 load

//data를 해주게 되면 정보가 중복입력이 되기 때문이다.




11. update pet set birth = '1989-08-31' where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄의 birth를 1989-08-31로 수정한다,

//update A set B=C where D set E의 형태로 작성하면

//A테이블의 D필드의 값이 E인 줄에서 B필드의 값을 C로 수정한다.


12. select *from pet where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄을 모두 출력한다.




13. select *from pet where birth >= '1998-1-1';

//pet 테이블에서 birth가 1998-1-1 이후인 줄을 출력한다.

//만약 비교연산자 사용시 문자를 사용하면 ASCII코드 값을 비교한다.

//예를 들어 select *from pet where name >='S';를 타입하면

//'T~Z'까지의 문자로 시작되는 이름을 가진 줄들이 출력된다.


14. select *from pet where species = 'snake' or species = 'bird';

//pet 테이블에서 species가 snake이거나 species가 bird인 줄을 출력한다.

//or 뿐만 아니라 and도 사용된다.

//예를 들어 select *from pet where species ='cat' and owner = 'Gwen';

//을 타입하면 pet 테이블의 species가 cat이고 owner가 Gwen인 줄이 출력된다.



15. select *from pet where (species='cat' and sex='m') or (species='dog' and sex='f');

//pet 테이블에서 species가 cat이고 sex가 m인 줄이거나 species가 dog이고 sex가 f인 줄은

//모두 출력한다.

//괄호를 쓰는 까닭은 and와 or 중 우선순위가 and가 더 높기 때문에

//혼용할 수 있으므로 방지차원에 쓴다.



16. select name, birth from pet;

//pet테이블에서 name과 birth필드값들을 모두 출력한다.

//이는 특정 행을 선택하여 출력하는 것과 같다.



17. select distinct owner from pet;

//pet테이블에서 같은 이름의 owner는 한 번만 출력하도록 owner필드값들을 모두 출력한다.




18. select name, species, birth from pet where species='dog' or species='cat';

//pet테이블에서 species가 dog이거나 cat인 줄의 name, species,birth를 출력한다.



19. select name, birth, (year(curdate())-year(birth) - (right(curdate(),5)<right(birth,5)) as age from pet;


//pet 테이블에서 name과 birth 그리고 age를 출력한다.

//age는 오늘 날짜(curdate()는 오늘 날짜를 불러오는 MySQL지원 메소드) 중 연도에서

//생일의 연도를 뺀 다음에

//right(curdate(),5)는 curdate() 중 오른쪽 5자리 (몇월-몇일)를 추려내서 birth의 월일과

//비교했을 때 작으면 1, 크거나 같으면 0이란 값을 출력하게 된다.

//(비교연산자 식이 true면 1, false면 0을 리턴한다)

//그래서 나온 값을 빼주면 나이가 된다.(조금만 생각해보시면 이 식이 이해가 갈껍니다.;;)



20. select * from pet where name like 'b%';

// pet테이블에서 name이 b로 시작되는 줄을 찾는다.

// '_'을 사용하면 단일문자 매칭

// '%'를 사용하면 문자의 부정 숫자를 매칭

// SQL 패턴 사용시 논리연산자 사용불가

// 대신 like 또는 not like를 사용할 수 있다.



21. select * from pet where name like '%fy';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.



22. select * from pet where name like '%w%';

// pet테이블에서 name이 이름 내에 w를 포함하고 있는 줄을 찾는다.



23. select * from pet where name like '_____';

// pet테이블에서 5개의 문자로 name이 되어있는 줄을 찾는다.

// _의 갯수만큼의 문자검색을 할 수가 있다.



24. select * from pet where name regexp '^b';

// pet테이블에서 name이 b로 시작하는 줄을 찾는다.

// regexp는 테스트가 되는 값이 있는 모든 곳에서 매칭

// like는 전체값에서만 패턴매치를 진행



25. select * from pet where name regexp 'fy$';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.



26. select * from pet where naem regexp 'w';

// pet테이블에서 name이 중간에 w를 가지고 있는 줄을 찾는다.



27. select * from pet where regexp '^.....$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// regexp에서는 .을 단일문자로 취급한다.



28. select * from pet where name regexp '^.{5}$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// {n}은 repeat - n - times 연산자이다.



29. select count(*) from pet;

// pet테이블에 몇 개의 줄이 있는지 찾는다.



30. select owner, count(*) from pet group by owner;

// pet테이블에서 owner의 이름에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.

// group by n은 n이란 속성에 따라 그룹화한다.

// 만약 select 후 n만 사용하고 뒤에 group by n을 붙이지 않으면 에러가 발생한다.

// ex) select owner, count(*) from pet; <- ERROR 1140



31. select species, sex, count(*) from pet group by species, sex;

// pet테이블에서 species와 sex의 조합에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.



32. select species, sex, count(*) from pet where species = 'dog' or species = 'cat' group by species, sex;

// pet 테이블에서 species 이름이 dog 나 cat인 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.



33. select species, sex, count(*) from pet where sex is not null group by species, sex;

// pet테이블에서 sex가 null이 아닌 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.



34. select pet.name, (year(date)-year(birth)) as age, remark from pet, event where pet.name = event.name and event.type='litter';

// pet테이블의 name과

// 오늘 날짜(date) 중 년도에서 birth의 년도를 뺀 것을 age로 한 것과

// remark를

// pet과 event 테이블에서

// pet테이블의 name이 event테이블의 name과 같고

// event테이블의 type이 litter인 줄을 출력한다.

// 만약 name이나 type처럼 두 테이블에 동시에 있는 field같은 경우

// (테이블명).(필드명)을 사용한다.

// 사용 안 할시 ambigugous 에러 발생

// ex) pet.name, event.type



35. select p1.name, p1.sex, p2.name, p2.sex, p1.species from pet as p1, pet as p2 where p1.species=p2.species and p1.sex='f' and p2.sex = 'm';

// pet테이블 과 pet테이블, 즉 같은 2개의 테이블에서

// pet테이블에서 species값은 같지만

// sex에서 값이 'f'와 'm'으로 다른

// 줄의 name, sex를 각각 출력하고 species도 출력한다.

// 이 때 두 species는 같으므로 한 테이블의 species만 출력



36. select name,birth from pet order by birth;

// pet테이블에서 birth를 기준으로 오름차순으로 정렬된 name과 birth 출력



37. select name,birth from pet order by binary name;

// pet테이블에서 name을 기준으로 대소문자 구별하여 오름차순으로 정렬된 name과 birth 출력

// binary를 사용하면 ASCII코드 값의 크기에 따라 정렬



38. select name, birth from pet order by birth desc;

// pet 테이블에서 birth를 기준으로 내림차순으로 정렬된 name과 birth를 출력한다

// 마지막에 desc입력시 내림차순 정렬

// desc는 바로 앞에 있는 birth에만 영향을 미친다.

// 하나의 컬럼 이상의 컬럼에 영향을 주고 싶을 땐 계속 써넣어줘야 한다.



39. select name, species, birth from pet order by species,birth desc;

// pet테이블에서 species와 birth 내림차순으로 기준을 한 name,species,birth를 출력한다.

// 먼저 species기준으로 정렬후 birth 내림차순을 기준으로 삼아 정렬한다.



40. show index from pet;

// pet테이블에 있는 인덱스들을 보여준다.



41. select max(article) as article from shop;

// shop 테이블에서 article중에서 가장 큰 값을 가진 것을 article이라는 이름으로 출력

// select max(A) as B from C;

// C테이블에서 A중에 가장 큰 값을 가진 것을 B라는 이름 하에 출력



42. select article, dealer, price from shop where price=(select max(price) from shop);

// shop 테이블에서 price가 가장 큰 값인 줄의 price를 선택하여 그 줄에 있는 article, dealer, price를 출력



43. select article, dealer, price from shop order by price desc limit 1;

// shop테이블에서 price를 내림차순으로 정렬하여 그 중 위에서 1개의 줄만 article,dealer,price를 출력

// limit에 들어가는 값은 출력해낼 줄의 숫자

// 47번 예제보다 좀 더 유동성있고 사용하기 편함



44. select article, max(price) as price from shop group by article;

// shop테이블에서 article, price 중에 가장 큰 값만 price로 하여 article로 그룹화한 결과를 출력



45. select article, dealer, price from shop s1 where price=(select max(s2.price) from shop s2 where s1.article = s2.article);

//shop테이블에서 price가 가장 높은 줄의 article,dealer,price를 출력한다.



46. select @min_price:=min(price),@max_price:=max(price) from shop; select * from shop where price=@min_price or price=@max_price;

// shop테이블에서 min_price라는 변수를 선언하고 그 값은 price중 가장 작은 값

// 또한 shop테이블에서 max_price라는 변수를 선언하고 그 값은 price중 가장 큰 값

// shop테이블에서 price가 min_price값을 가지거나 max_price값을 가진 줄 모두를 출력



47. select name, sex from pet where name='Claws' union select name,sex from pet where sex='f';

// pet테이블에서 name이 Claws인 줄의 name, sex를 출력하고

// pet테이블에서 sex가 f인 줄의 name,sex를 출력한다.

// union은 두 개의 쿼리문 결과를 붙여서 보여준다.

// 따라서 select하는 필드값은 일치해야 한다.
by Anna 안나 2008. 5. 21. 18:51
<?

$cnt = 0;
$result = mysql_list_tables($cfg[mysql_db]);
while ($row = mysql_fetch_row($result)) {
# 테이블 복구
$sql = " REPAIR TABLE `$row[0]` ";
sql_query($sql);

# 테이블 최적화
$sql = " OPTIMIZE TABLE `$row[0]` ";
sql_query($sql);

echo "$row[0] 복구 및 최적화...<br>";

$cnt++;
}

?>
by Anna 안나 2008. 5. 21. 18:51
<?
$connect_host = "localhost";
$connect_id = "디비아이디";
$connect_pass = "디비비밀번호";
$connect_db = "디비명";
$connect_table = "gb_member";//저장할테이블명을 적으시오...
$xls_filename = "filename.xls";

$connect=@mysql_connect($connect_host,$connect_id,$connect_pass);
$mysql=@mysql_select_db($connect_db,$connect);

header( "Content-type: application/vnd.ms-excel" );
header( "Content-Disposition: attachment; filename=memberDB.xls" );
?>
<table style="border-width:1; border-color:green; border-style:dotted;">
<tr align=center>
<?
$fields = mysql_list_fields("$connect_db", "$connect_table");
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
$field[$i]=mysql_field_name($fields, $i);
echo "<th>".$field[$i]. "</th>";
}
?>
</tr>

<?
$result=mysql_query("select * from $connect_table");
while($data=mysql_fetch_assoc($result)){
echo"<tr>";

for ($i = 0; $i < sizeof($field); $i++) {
echo "<td style='border-width:1; border-color:green; border-style:dotted;'>".$data["$field[$i]"]."</td>";
}

echo"</tr>";
}
?>
</table>
한글이 깨지는 경우는 위 내용중
아래부분 붉은색 추가.. =====================================================
header( "Content-type: application/vnd.ms-excel;" );
header( "Content-Disposition: attachment; filename=data.xls" );
?>
<table style="border-width:1; border-color:green; border-style:dotted;"> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
by Anna 안나 2008. 5. 21. 18:50
$user_dir = "file/$mb_id"; //넣고
$user_dir1 = "file/$mb_id/pic"; //넣고
$user_dir2 = "file/$mb_id/data"; //넣고
$user_dir3 = "file/$mb_id/etc"; //넣고.... //// 설정해준 디렉토리를 생성한다.....////
@mkdir($user_dir, 0707); // 만들고
@mkdir($user_dir1, 0707); //만들고
@mkdir($user_dir2, 0707); // 만들고//
@mkdir($user_dir3, 0707); // 만들자... 후.. 4개의 디렉토리 생성. /// 파일을 만들어준다.. 바보파일을..
$file = $user_dir . "/바보.txt // 바보.txt를 $user_dir 폴더에 만들어라... $f = @fopen($file, "w"); // ㅋㅋㅋㅋ
@fwrite($f, ""); // ㅌㅌㅌㅌㅌ
@fclose($f); //ㅌㅌㅌㅌㅌ
@chmod($file, 0606); // 123123
by Anna 안나 2008. 5. 21. 18:50
<?
$filename = "test.txt"; // 파일을 읽어서..
$String = @file($filename); // $string에 쳐 넣어서..
$cnt = count($String); // 넣은 파일 줄수를 세어보자... 줄수만큼.. 뺑뺑이 돌려주마..

for ($i=0; $i<$cnt; $i++){ //줄수만큼 뺑뺑이 돌려라..
$ss = Explode(";",$String[$i]); << 한줄씩 읽었으면... " ; " 구분자대로 잘라서 다시 집어 놓그라..
$total = count($ss); << 구분자로 끊은개 몇개냐...??? total이 값을 가지고 있겠구나.. echo "<hr>"; << 쉽게 표시하기 위해서 그냥 선그은거임..
for($t=0;$t<$total;$t++){ // 또 포문이네.. 이래도 되나 -_- 배열에 담은만큼 또 돌려라...뺑뺑이...
echo $ss[$t]."/"; // 구분자로 끈은 부분을 한개씩 출력해라..몇개?? $total 만큼 출력해라..
} //첫번째 뺑뺑이 닫고..
} // 두번째 뺑뺑이 닫고..
?> ..// 이렇게 했는데. 되긴 되는디... ======================================================= [출처] PHP - TXT 파일 잃어서 웹에 뿌리자... 뿌려..팍팍..|작성자 믄서
by Anna 안나 2008. 5. 21. 18:49
블루 깔끔한 한줄게시판입니다.
본 스킨은 한줄게시판 게시판 0.2(http://www.zeroboard.com/16613139)을 수정한것입니다.


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



※테스트
정식버전 1.0 이상에서 잘 작동합니다.
1.0 이전에서는 테스트해보지 않았습니다.

http://praday.com/onelinetestboard (테스트보드)

CSS만 살짝 바꾸었기 때문에 브라우저에 상관없이 잘보입니다.

** 자신의 제로보드에 적용하시면 글씨크기는 좀 다르게 보일수도 있습니다..
제로보드의 common/css/default.css 에 따라 글자스타일이 다르게 나타나기 때문입니다.


※기능
:-D ;;; 특별한 기능은 없습니다! <----
입력창(input)에 내용을 쓴 후 다시 마우스로 클릭해도 사라지지 않으며,
글쓰기 폼은 창의 가로크기에 따라서 자동으로 조절됩니다. (50%)


※다운로드
oneline_blue_수정1.zip


※수정사항 (수정사항은 수정된 스킨파일을 새로 업로드합니다. 수정된 시간 이후에 다운로드받으신 분들은 상관없습니다.)
수정1회원일 경우엔 아무 이상이 없지만, 관리자일 경우에 날짜가 잘려 보입니다.
08년 5월 18일 오후4시 이전에 받으신 분들은 style.list.html 파일의 7번째줄에서,
<!--@if($grant->is_admin)--><col width="30" />{@ $_col_count++}<!--@end-->
이 부분을
<!--@if($grant->is_admin)--><col width="35" />{@ $_col_count++}<!--@end-->
이렇게 고쳐주세요.

============================================================================

- 어떤 분께서 스킨공유를 요청하셔서..
공유해도 되는지..... 문제가있다면 삭제하겠습니다. -

본 스킨은 아래에서 배포됩니다.
http://praday.com/4319
http://www.zeroboard.com/16836868


질문은 http://praday.com/membersqa 에서...
by Anna 안나 2008. 5. 18. 16:22
TRIO HTML 매뉴얼 Netscape - Javascript Guide http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ - Navigator object hierarchy Diagram http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/navobj.htm#1005423 Mozilla(Firefox) - Gecko DOM Reference http://developer.mozilla.org/en/docs/Gecko_DOM_Reference - HTML Element Cross Reference http://developer.mozilla.org/en/docs/HTML_Element_Cross_Reference - Core JavaScript 1.5 Reference http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference - JavaScript Methods Index http://developer.mozilla.org/en/docs/JavaScript_Methods_Index
- JavaScript Properties Index http://developer.mozilla.org/en/docs/JavaScript_Properties_Index - CSS References http://developer.mozilla.org/en/docs/Category:CSS:References MSDN HTML and DHTML Reference - Objects http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects.asp
- Properties http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties.asp
- Methods http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods.asp
- Collections http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/collections.asp
- Events http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/events.asp
- HTML Elements http://msdn.microsoft.com/workshop/author/html/reference/elements.asp?frame=true
by Anna 안나 2008. 5. 9. 17:03
내용

'개인 > freeboard' 카테고리의 다른 글

가치평가에 이어..상대방평가?를 해보았다.^^  (0) 2008.09.21
가치평가  (0) 2008.09.21
CSS로 만든 Layout 소개  (1) 2008.07.12
jQuery 관련 링크  (0) 2008.07.12
구글 매니아가 구글에 환호하는 이유  (0) 2008.07.07
구글 스타일 로고 만들기  (0) 2008.07.07
재미있는 페이지.  (0) 2008.07.07
산돌폰트패키지 뷰어(viewer)  (0) 2008.06.29
온라인 촛불 문화제 이미지들..  (0) 2008.06.21
하핫..-_-;  (1) 2008.03.27
by Anna 안나 2008. 5. 7. 16:13
공부시작

HTML4.0, CSS2공부

HTML태그단어공부

HTML태그 요약공부

HTML 연습장

이름으로색상찾기

RGB 색상표

Netscape 색상표

Boranet 색상표

바조정 색상표

Gallery그림감상

Explorer메뉴창

fullscreen만들기

Rainbow 바탕화면

스라이드 쇼

스라이드방법 모음

바탕지진화면

flash 예제모음

artgall사진감상

Java Gallery 감상

각종샘플

이미지 왕복운동

접속 때 마다 배경색이 변하는 스크립트

들어가자마자 뜨는 윈도우

internet time지 보기

마우스움직여 바탕보기

마우스를 따라다니는 그림

패스워드 달기

시작Counter세기

ZOOM IN 시키기

마우스데면 보이기

폭축

글씨

타이핑 글자

출렁이는 글자

title글자

글씨 겹처쓰기

앞뒤 왔다갔다 글자

올라가는 글자

상하좌우로 교차되는 글자

영어글자체 견본

멋있는 영어글자

아름다운 글자색2

아름다운 글자색1

커다란Welcome글자

서서히 떨어지는 글자

움직이는 그림과 글자

춤추는 글자

타이핑 글자

마우스 따라다니는 글자

참고

비만도 측정

검색창 모음

internet time지 보기

계산기
공지창

마우스데면 사라지는 공지창

로드되며 작은공지창 띄우기

화면바뀌는 공지창

TV화면 공지창

바탕색이 변하는 창

방문횟수 메모장 띄우기

나갈때 메모장 띄우기

태극기 액자

보턴누르면 뜨는창

클릭하면 화면이 커지는창

박스가 멀리사라지는 창

위에서 나오는 공지창

좌측에서 나오는 공지창

빤짝빤짝 글자창

부라이트 공지창

벌이 날아와 꽃에앉은창

글자가 올라가 살아지는창

조준점이 나타나는 창

Welcome창

마우스데면 열리는 창

바둑판 칼러배경

클릭하면 뒤집히는 창

바탕과 글씨가 움직이는 창

컬러테두리 창

아래위 엇갈리는문

좌우 엇갈리는문

아래위로 열리는문

양쪽으로 열리는문

바,보턴

열기,닫기 보턴

불끄고 키기보턴

Button2

Button1

양음각Button

원형메뉴 보턴

캡술메뉴 보턴

캡술가로메뉴 보턴

사각메뉴 보턴

Banner창 모음

Banner창 달기

T-Banner창 달기

자동 scroller바2

자동 scroller바1

바 다운보턴 시계 티커

연월일시간

시,분,초,오전후

접속한 시간표시

상태바에 시간표시

카랜더 시계

움직이는 시계

둥근시계

탁상시계

원형시계

원형시계 출처 : Tong - 하늘아래땅님의 ★ TAG, HTML ★통 [출처] ♣ 홈페이지 꾸미기 참고자료 ♣|작성자 마이클
by Anna 안나 2008. 4. 26. 18:27
1번은 "kroeger 시리즈" 중에서 kroeger 05_55 입니다.. 포토샵에서 폰트크기 8pt 에 안티알리아싱을 None 로 쓰시면 예쁘게 쓰실수 있습니다. 2번은 소야다듬9 입니다.. 그림판에선 폰트크기 9pt 에 쓰시고
포토샵에선 폰트크기 12pt, 안티알리아싱 None(한글판은 없음)로 설정하시면 예쁘게 쓰여집니다. 3번은 KissMeKissMeKissMe 입니다.. 축전에 많이 사용되는 영문폰트 입니다.. 4번은 GoodDog Cool 입니다.
by Anna 안나 2008. 4. 12. 22:25
브라우저의 버그를 hack으로 해결할 수 있는 부분이 많이 있습니다만 그보다 사이트의 CSS구조를 설계할때 각 브라우저의 속성을 파악해고 조금만 더 주의해서 설계를 하시면 hack을 사용하지 않고도 해결할 수 있는 부분이 많이 있습니다. hack을 사용할때는 조금 더 신중하게 사용하시는게 좋습니다. 특히 예전 버전의 브라우저에 적용되었던 hack이 새로운 브라우저에 영향을 끼칠 가능성이 있으며 CSS를 변경 할 때 업무효율을 저하시키는 한 요인이 될 것 입니다.
Intenet Explorer계열의 브라우저에서 제대로 표시가 되지 않는 경우에는 일단 width값이나 float관련 설정을 변경해 보시는 것도 하나의 방법인 것 같습니다. 혹시 Intenet Explorer에서 float와 margin을 같은 방향으로 설정했을때 문제가 생긴 경우라면 이 포스트를 참조하시기 바랍니다. Netscape 4 제외시키기 Netscape 4은 media속성값에 “screen”이외의 값이 올 경우 읽어 들이지 못하는 것을 이용한 방법이다. <link rel="stylesheet" type="text/css" href="/css/style.css" media="all" /> 이나 <link rel="stylesheet" type="text/css" href="/css/style.css" media="screen, tv" /> 라고 지정할 경우 Netscape 4은 읽어 들이지 못한다. 부분적으로 읽어들이지 못하게 하는 경우에는 Caio’s hack인 /*/*/를 이용한다. 보통 코멘트는 */으로 닫지만 /*/으로 닫게 되면 Netscape 4에서는 인식되지 않는다. 그 뒤에 평상시의 코멘트 /* */를 적어두면 그 뒤의 스타일은 Netscape 4에서도 문제없이 적용된다. p {
/*/*/ color:white; /* */
} Mac IE 4.5, Netscape 4 제외시키기 @import룰로 url()함수를 이용하여 외부 스타일시트를 이중인용부호로 지정한다.
Mac IE 4.5는 @import에 url()함수를 이용하는 경우, 단일 인용부호와 인용부호가 없는 것이 아니면 읽어 들이지 못한다. Netscape 4은 @import를 지원하지 않는다. @import url("/css/style.css") Mac IE 5 제외시키기 CSS소스 안의 코멘트 서식을 /* \*/ 이라는 방식으로 기술한다. holly hack이라고 하며 그 뒤에 평상시의 코멘트 /* */를 적어두면 그 뒤의 스타일은 Mac IE 5에서도 문제없이 적용된다. p {
/* \\*/ color:white; /* */
} Win IE 4~5 제외시키기 셀렉터 바로 뒤에 /**/라고 적는다. p/**/ { color:white;} Win IE 4~5, Mac IE 4.5~5 제외시키기 프로퍼티와 값을 구분하는 콜론(;) 앞에 코멘트에 스페이스를 포함하여 /* */라고 적는다. p { color/* */:white;} Win IE 4~6, Mac IE 4, Netscape 4 제외시키기 셀렉터 앞에 html>body를 붙인다. html>body p { color:white;} Win IE 6 제외시키기 프로퍼티와 값을 구분하는 콜론(;)의 앞에, 스페이스와 코멘트를 /**/라고 적는다. p { color /**/:white;} star hack 셀렉트 앞에 *html를 붙이면, Win IE 4~6, Mac IE 4~5 등에는 스타일이 적용되고, 그 외의 브라우저에서는 적용되지 않는다. *html p { color:white; } underscore hack 프로퍼티의 가장 앞부분에 언더스코어(_)를 붙이면, Win IE 4~6에서 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. p { _color:white; } hash hack 프로퍼티의 앞에 ?(#)을 붙이면, Win IE 4~6, Mac IE 5, Opera 7, Mozilla, Firefox에서는 스타일이 적용되고, 다른 브라우저에는 적용되지 않는다. p { #color:white; } star 7 hack 셀렉트의 앞에 html*을 붙이면, Win IE 5.5~6, Mac IE 5, Safari 등에서 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. html*과 셀렉터사이에 스페이스를 넣지 않는다. html*p { color:white; } xmlns hack 속성셀렉터를 이용하여, html요소에 붙이는 xmlns속성을 스타일적용을 위하여 사용하는 방법.
Mozilla, Fire-fox, Opera 7/8, Safari, IE 7 등 속성셀렉터를 서포트하는 브라우저에서는 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. html[xmlns] h1 { color:red; } :root hack 셀렉터의 앞에 :root를 붙이면, Mozilla, Firefox, Mac IE 5, Safari 등 :root유사클래스를 지원하는 브라우저에만 스타일이 적용되고, 다른 브라우저에서는 적용되지 않는다. :root h1 { color:red; } Tantek box model hack voice-family프로퍼티를 이용한 가장 유명한 박스모델핵. div#content {
width:500px;
voice-family: "\"}\"";
voice-family:inherit;
width:400px;
} Win IE 5용 패스필터 @media tty {
i{content:"\";/*" "*/}}; @import '/css/style.css'; {;}/*";}
}/* */ Win IE 5.5용 패스필터 @media tty {
i{content:"\";/*" "*/}}@m; @import '/css/style.css';/*";}
}/* */ Win IE 5-5.5용 패스필터 @media tty {
i{content:"\";/*" "*/}}@import '/css/style.css';/*";}
}/* */ 모던브라우저용 패스필터 @import "null?\"\{";
@import "/css/style.css";
@import "null?\"\}"; 이 이외에도 많은 핵(hack)이 존재한다. CSS Filters (dithered.com)에 다양한 CSS hack이 잘 정리되어 있으므로 참고하시길… 2006년 7월 18일, IE7용의 핵(hack)을 추가. IE7에만 적용 IE7에만 다른 스타일을 적용하는 방법은 해당 셀렉터의 앞에 *+html body 이나(*+html body는 Opera8~에도 적용되어 버리는 문제가 있기에 *+html>/**/body로 Opera8~ 전용 스타일을 기술하여야 한다. 참조:IE7のCSSバグとOpera CSS Hack) *:first-child+html 을 기술한 다음 해당 셀렉터와 스타일을 작성하면 된다. 예를 들어 #banner라는 id셀렉터에 적용시키는 경우 *:first-child+html #banner {
      :
  [IE7용 스타일을 기술]
      :
} 라고 기술한다. IE7이외의 브라우저를 위한 원래의 #banner 스타일 설정은 IE7용 스타일 설정 앞에 기술한다(순서가 바뀌면 원하는 효과를 얻지 못한다. 참조:IE7 の CSS ハック) #banner {
      :
  [IE7이외의 브라우저를 위한 스타일을 기술]
      :
}
*:first-child+html #banner {
      :
  [IE7용 스타일을 기술]
      :
} IE 6 and below (IE6이하) * html IE 7 and below (IE7이하) *:first-child+html, * html IE 7 only (IE7전용) *:first-child+html IE 7 and modern browsers only (IE7과 모던브라우저) html>body Modern browsers only (not IE 7) (IE7이외의 모던 브라우저) html>/**/body Recent Opera versions 9 and below (최근의 Opera9이하)
Opera 9와 Safari 동시적용 html:first-child Safari에만 적용
Opera 9와 Safari 동시적용 /* XXX \*/로 코멘트 아웃하고 html:\66irst-child를 덧붙임으로써 Safari에만 CSS가 적용된다. /* safari only \\*/
html:\\66irst-child div.globalContainer{
margin: 0 0 0 18px;
}
/* end */ 내용중 잘못된 부분이나 수정, 추가가 필요한 부분이 있으시면 의견 부탁드립니다. Opera와 Safari용 css hack이 동시 적용이 되는 문제를 김진태님이 지적해 주셨습니다.
by Anna 안나 2008. 4. 12. 22:23
http://www.pageoff.net/666
by Anna 안나 2008. 4. 12. 22:20
Interactive Web Design

Most Popular
1. http://www.FreeFoto.com/index.jsp
2. http://www.KAVEWALL.com/stock/
3. http://www.aDigitalDreamer.com/gallery/index.php
4. http://www.FreePhotosBank.com/
5. http://www.FreeDigitalPhotos.net/
6. http://PDPhoto.org/
7. http://Visipix.dynalias.com/index_hidden.htm
8. http://www.Cepolina.com/freephoto/
9. http://www.DexHaus.com/v2/
10. http://www.FreeStockImages.net/
11. http://www.TurboPhoto.com/Free-Stock-Images/
12. http://YotoPhoto.com/
13. http://www.StockVault.net/
14. http://www.DreamsTime.com/
15. http://www.OpenStockPhotography.org/

Community-Powered Content
1. http://www.ImageAfter.com/
2. http://www.Unprofound.com/
3. http://www.FontPlay.com/freephotos/
4. http://www.Studio25.ro/
5. http://www.VintagePixels.com/
6. http://www.AbstractInfluence.com/forums/album_cat.php?cat_id=2
7. http://Amygdela.com/stock/
8. http://www.EveryStockPhoto.com/
9. http://www.Photocase.com/en/
10. http://stockart.deviantART.com/

Artists Welcome
1. http://www.SXC.hu/
2. http://www.Morguefile.com/
3. http://www.Woophy.com/map/index.php
4. http://www.photolib.NOAA.gov/
5. http://www.PixelPerfectDigital.com/free_stock_photos/
6. http://FreeRangeStock.com/
7. http://www.AMGMedia.com/freephotos/
8. http://www.Free-Photographs.net/
9. http://www.FreePhotos.com/
10. http://www.AnimationFactory.com/en/
11. http://www.Graphicsarena.com/
12. http://www.Fotogenika.net/modifica/igallery.asp
13. http://www.ImageTemple.com/
14. http://www.Flickr.com/
15. http://FreeLargePhotos.com/

Less is Sometimes More
1. http://www.Mayang.com/Textures/
2. http://www.FromOldBooks.org/
3. http://www.TextureWareHouse.com/gallery/index.php
4. http://FreeStockPhotos.com/
5. http://www.BurningWell.org/
6. http://www.DesignPacks.com/
7. http://AmazingTextures.com/textures/index.php
8. http://AarinFreePhoto.com/
9. http://davidniblack.com/ImageBase/
10. http://MajesticImagery.com/
11. http://www.Diwiesign.com/index.php?page=stockphotos
12. http://www.zurb.com/ZurbPhotos/
13. http://TOFZ.org/index.php
14. http://www.LIGHTmatter.net/gallery/
15. http://www.InsectImages.org/

Stock Images Plus
1. http://search.CreativeCommons.org/
2. http://www.FreeImages.co.uk/
3. http://www.CreatingOnline.com/stock_photos/
4. http://www.ArtFavor.com/
5. http://www.GeekPhilosopher.com/MainPage/photos.htm
6. http://Gimp-Savvy.com/PHOTO-ARCHIVE/index.html
7. http://www.Creativity103.com/
8. http://www.Afflict.net/
9. http://www.OneOddDude.net/
10. http://www.Megite.com/url/:iconfactory_com/home
11. http://www.PhotoshopSupport.com/resources/stock-photos.html
12. http://www.AncestryImages.com/
13. http://www.FreeMediaGoo.com/
14. http://photo.ITC.NPS.GOV/storage/images/
15. http://digitalgallery.nypl.org/NYPLdigital/index.cfm

Miscellaneous
1. http://BackgroundsArchive.com/
2. http://www.ARS.USDA.gov/is/graphics/photos/
3. http://www.HolyLandPhotos.org/
4. http://Stockcache.com/gallery/
5. http://www.FourBees.com/fourbees/phoelm.asp
6. http://clipmarks.com/Clipmark/96ED8A78-BE48-4D21-9A93-840203222B63/
7. http://www.nps.gov/archive/Yell/SlideFile/
8. http://www.hear.org/starr/HiPlants/images/
9. http://www.Microshots.org/
10. http://www.In-Texture.com/
11. http://www.TripAlbum.net/
12. http://OrangeTrash.d2.hu/index2.html
13. http://www.LogoDesignWeb.com/stockphoto/
14. http://www.BAJstock.com/
15. http://www.NWYHstockimages.com/

General
1. http://www.Public-Domain-Photos.com/
2. http://www.Bigfoto.com/
3. http://www.Photogen.com/
4. http://www.FreePixels.com/
5. http://Gallery.HD.ORG/index.jsp
6. http://PIX.halal.dk/
7. http://www.PhotoRack.net/
8. http://Free-StockPhotos.com/
9. http://www.BarrysFreePhotos.com/
10. http://Cromavista.ricardomartin.info/
11. http://www.IronOrchid.com/clipart/
12. http://www.ImageBlowout.com/
13. http://www.FreeImages.com/photos/
14. http://www.IloveFreePhoto.com/
15. http://www.FreePhotoStation.com/

by Anna 안나 2008. 4. 6. 04:54
<a href="#" onclick="if(document.all) window.external.AddFavorite('http://dayeong.net', '다영쩜넷')">다영쩜넷 즐겨찾기 추가</a>

위와같이 소스를 적용하신 후에
다영쩜넷 즐겨찾기 추가를 클릭하시면
주소는 http://dayeong.net, 제목은 다영쩜넷으로 즐겨찾기에 추가됩니다.
by Anna 안나 2008. 4. 6. 04:43
J2K.8bi 파일을 설치된 포토샵의 Plug-Ins/Files Format 폴더에 넣어주시면 됩니다.
j2k.8bi
JPG 형식의 파일이 아닌 JP2파일,, JPEG2000 형식의 파일을 포토샵에서 읽고 쓰게 해주는 플러그인.






추가로 Windows ICON 파일을 포토샵에서 저장할수 있는 플러그인
ICOFormat-1.6f9-win.zip
Windows XP용 ICON 파일 포멧용




ICOFormat-1.8f3-win.zip
Windows Vista용 ICON 파일 포멧용



C:\Program Files\Adobe\Adobe Photoshop CS3\Plug-Ins\File Formats\ICOFormat.8bi 이곳에다가 붙여넣습니다.
포토샵 그리고 페인트샵에서 ico (아이콘) 파일외 여러 그림파일을 읽고
ico(아이콘) 파일로 저장 할수있습니다. ~~즐 아이콘제작 ^^

ICO (Windows Icon) Format - Adobe Photoshop and Elements plugins
홈페이지(영문)---> http://www.telegraphics.com.au/sw/#icoformat

Tested with:
Photoshop all versions 3.0-7.0, CS, CS2 on PowerPC Macintosh (OS X, OS 9 and Classic); CS3 on Intel Mac
Photoshop 4.0 / MacOS 8.0 on 68K Macintosh
Photoshop 5.0, 7.0 & CS on Windows 98/NT and XP.
Paint Shop Pro 9 (may not work correctly with earlier versions due to PSP plugin compatibility issues)
by Anna 안나 2008. 4. 6. 01:27
제가 첨부한 사진 속의 한글글씨체와 영어글씨체를 알고 싶습니다.
딱 보기에 고딕체 비슷한 것 같아서 집에 가지고 있는 글씨체들과 모두 대조를 해보았는데도
저 글씨체는 찾을 수가 없더라구요. 자간조정을 한 것 같아서 다 해보았는데도 없네요.
단편의 미학, 이라고 쓰여진 글씨체 좀 알려주세요.
((-------IMAGE-------))
영어사진의 까만 색 글씨 REVERSE와, 회색으로 쓰인 Soul, Trivial 도 알고 싶구요.
((-------IMAGE-------))



# 첫번째 이미지에 한글 폰트명은 윤고딕100대 계열로 쓰였습니다.. 나쁜 부분은 윤고딕120 입니다.. 자간조절 -280 단편의 미학 부분은 윤고딕110 입니다.. 자간조절 -280 어떤연인~ 부분은 윤고딕120 입니다.. 자간조절 -250 # 두번째 이미지에 REVERSE 부분은 윈도우 기본글꼴 Arial Black 입니다.. reverse 부분은 "Helvetica 시리즈" 중에서 Helvetica Condensed Black 입니다.. SOUL, TRIVIAL 부분은 윈도우 기본글꼴 Impact 입니다..

((-------IMAGE-------))
by Anna 안나 2008. 4. 6. 01:23
올리신 이미지에 # 미녀 부분은 윤고딕250 을 수정하신 글씨 입니다.. 자간조절 -300, 새로방향으로 90% 정도 줄여주셨네요.. # 는 괴로워 부분은 윤고딕130 또는 윤고딕140 입니다.. 자간조절 -200 정도 해주셨습니다.. 윤고딕100대 시리즈는 폰트 굵기만 약간씩 다르고, 어떤 프로그램으로 썼느냐에 따라서도 달라질수 있습니다.. # 매력에빠져들다 부분은 윤고딕120 입니다.. 자간조절 -200 정도 해주셨습니다.. 검은색 테두리는 포토샵에서 Stroke(선) 를 주시면 됩니다..

((-------IMAGE-------))
by Anna 안나 2008. 4. 6. 01:21

제로보드 적용 >> click


스크롤 적용 및 그라디언트 적용 click >>

응용사례 >> click

(수정사항:방금 플래쉬 파일 수정본 올렸습니다. 기존다운받으신 것도 문제는없습니다...)
(수정사항2-중요:
게시물 작성시 겔러리 제목에 태그효과를 주었을 때 제목이 않보이시는 분들은
아래 댓글의 guny님께서 수고하셔서 list.html 수정본 올렸사오니 다운 받으시고 덮어쓰시면 될겁니다...)

다른곳에 올렸던 스킨인디 어떤분이 요청도 있고해서 제로보드XE 경험치도 올릴겸..올립니다.
좋네요. XE... 그랜져XG 타는 것같네...으훔..


스샷=============================
((-------IMAGE-------))
========================================================================================
주요기능 :

(-,.-) 마우스 휠을 하면 이미지가 움직임..캬..백미..(-,.-)
========================================================================================
설치정보

widgets/newest_images/skins/
에 압축을 풀고요.
zgal.swf,gallery.swf을 제로보드 설치된 최상위에 놓습니다.
//이유는 아래 info_path 설정 주석과 같습니다.
//제로보드가 zero라는 폴더에 설치되었다면 zero에 넣어두세요.

================================================
list.html 설정

18라인 쯤:
<!--Y OR N /width/height/top/left 새창 설정 -->
{@ $winn='Y'; $width='650'; $height='600'; $top='10'; $left='10';}

96 라인 부터 시작되는 갤러리 기본 셋팅

var color='000000'; // 그라디언트 첫번째 칼라
var color2='000000'; // 그라디언트 두번째 칼라
var alpa='100'; // 그라디언트 첫번째 색 알파값
var alpa2='100'; // 그라디언트 두번째 색 알파값 100
var wd='650'; //무비 가로 // 650이 최하로 적용되면 좋은 값이고요.. 작으면 이상해 집니다.
var ht='350'; //무비 세로 //이하 동문 350이 최하로 작은값이고요.// 이하동문입니다.
var seescroll="no"; // 겔러리 하단부 스크롤 보일지 여부 yes/no
var info_path="/z/" // 이곳은 절대경로인데요 저는 제로보드가 z폴더에 설치
//경로설정 자동으로 하려다..포기 (플랙스에서 플래쉬를 못불러 오더군요...
//원인은 모르것습니다...
================================================================
관리모드 정보
최근 이미지 썸네일 싸이즈설정시 150~200이 좋을 것같습니다.
저는 기본 100으로 했는데 이미지가 없어 보여요..
200으로 해도 사이즈는 같지만 작은 사이즈를 플래쉬에서 늘리는 것보단 줄이는데 낳지 않나 합니다.
================================================================
넋두리

제로보드xe 햐.. 클래스로 정의를 해놓아 깔끔은 한데 한참 봐야한다...
숙지후에는 작업속도가 좀 나것네요..개인적으로 짝짝짝!!!

귀찮아서 대강 작업한 면도 있지만 문제가 있으면 댓글주셔요
3Dpage.zip
by Anna 안나 2008. 4. 6. 01:05
제로보드가 설치된 디렉토리를 기준으로 아래 경로에 이모티콘이 보관됩니다. modules/editor/components/emoticons/tpl/images/

위의 경로에 새 폴더를 만들고 이모티콘 이미지 파일을 넣으면 됩니다.
by Anna 안나 2008. 4. 5. 23:42
예를들어 글쓰기창에서 확장변수1과 2만 쓰기권한을 관리자로 주고 싶을 때
아래와 같이 해결했습니다. 개인적으로는 상당히 유용하네요.

(아래의 소스는 write_form.html 문서에 적용하는 소스입니다.)
view plaincopy to clipboardprint? <!--@foreach($module_info->extra_vars as $key => $val)--> <!--@if($val->name && !($key == 1 && !$grant->manager || $key == 2 && !$grant->manager))--> <!-- 확장변수 --> {$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--> <!-- 확장변수(extra_var)의 type에 따른 form을 출력하기 위해서 특별히 제작된 파일을 include 한다 --> <!--#include("./extra_var_form.html")--> <!--@end--> <!--@end--> <!--@foreach($module_info->extra_vars as $key => $val)--> <!--@if($val->name && !($key == 1 && !$grant->manager || $key == 2 && !$grant->manager))--> <!-- 확장변수 --> {$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--> <!-- 확장변수(extra_var)의 type에 따른 form을 출력하기 위해서 특별히 제작된 파일을 include 한다 --> <!--#include("./extra_var_form.html")--> <!--@end--> <!--@end-->
* 위의 소스는 확장변수1과 2의 사용을 허가했을 때 확장변수1과 2는 관리자만 작성권한을 주는 것이고, 나머지 확장변수들은 쓰기권한제한이 없습니다.

알고 계실지도 모르지만 이번에는 view_document.html에 원하는 확장변수의 번호를 각각 불러올 수 있는 것에 대한 설명입니다.

위의 소스를 응용해서 아래와 같이 해봤습니다.
view plaincopy to clipboardprint? <!--@if($oDocument->isSecret() && !$oDocument->isGranted())--><!--@else--> <!--@if($oDocument->isExtraVarsExists())--> <!--@foreach($module_info->extra_vars as $key => $val)--> <!--@if($val->name == $module_info->extra_vars[1]->name && $oDocument->getExtraValue(1) || $val->name == $module_info->extra_vars[2]->name && $oDocument->getExtraValue(2))--> {$val->name} : <!-- 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 --><!--#include("./extra_var_value.html")--> <!--@end--> <!--@end--> <!--@end--> <!--@end--> <!--@if($oDocument->isSecret() && !$oDocument->isGranted())--><!--@else--> <!--@if($oDocument->isExtraVarsExists())--> <!--@foreach($module_info->extra_vars as $key => $val)--> <!--@if($val->name == $module_info->extra_vars[1]->name && $oDocument->getExtraValue(1) || $val->name == $module_info->extra_vars[2]->name && $oDocument->getExtraValue(2))--> {$val->name} : <!-- 확장변수(extra_var)의 type에 따른 값을 출력하기 위해서 특별히 제작된 파일을 include 한다 --><!--#include("./extra_var_value.html")--> <!--@end--> <!--@end--> <!--@end--> <!--@end-->
* 위의 소스는 관리자가 설정창에서 지정한 변수의 성질(?)대로 내용화면에 불러오고 싶어서 일부러 foreach를 이용하여 출력한 것입니다.
그런 이유가 아니었다면 나쁜머리를 굴릴 필요도 없었다는.. orz...

그리고 제일 첫줄에 있는 함수는 비밀글일 때 내용화면에서 비밀글 읽기 권한이 있는 사람만 작성된 확장변수를 볼 수 있게 하기 위한 것이니 삭제하셔도 됩니다.

* 삭제하시려면 첫줄의 <!--@if($oDocument->isSecret() && !$oDocument->isGranted())--><!--@else--> 이것과 끝줄의 <!--@end--> 이것을 삭제하셔야 합니다.

확장변수의 이름이 있어도 해당 확장변수에 내용이 없으면 내용화면에 항목을 출력하지 않기위해서
$val->name == $module_info->extra_vars[1]->name && $oDocument->getExtraValue(1) 이렇게 했는데요..

더 간단한 방법이 없을까요?

저는 이렇게 해서 확장변수 1~4, 11~14는 내용 상단에 / 5,15는 내용 오른쪽 또는 왼쪽에 / 6~10, 16~18, 20 은 내용아래에 / 19는 코멘트창 바로 위에 출력하여 사용하고 있습니다.
by Anna 안나 2008. 4. 5. 23:26
아시는 분들 많겠지만, 접속 주소의 www 유무에 따라서 페이지 이동시 로그인이 풀리는 경우가 있곤 합니다.

(www 없는 주소로 접속해서 로그인을 한 후, www 있는 페이지로 접속하면 로그인이 풀리는 현상 - 반대의 경우도 마찬가지)

그러던중 SCM 로그관리를 검색하다가 새로운 문제 하나를 알게되었는데요. (사실은 문제랄 것 까지는 없지만...)

저는 주로 게시물들의 RSS 전문 공개를 해두는 편이랍니다. 그래서 구글이나 야후 등에서 게시물이 검색될 수 있도록 말이죠.

그런데 문제는 게시물이 검색될 때의 링크 주소가 항상 www 붙은 형태는 아니라는 것입니다. 이게 왜 문제인지 예를 들어보면요.

만일 누군가 검색을 하다가 제 사이트의 게시물이 검색 되어서 읽어보려고 클릭하면 바로 그 글이 떠야하지 않겠습니까?

그런데 만일 검색된 링크의 주소에 www 가 없다면 자동으로 www 를 붙이면서 그 글이 아닌 메인페이지로 접속이 되어버립니다.

그럼 그 누군가는 순간 당황스러울 수밖에 있겠죠. 정작 보려던 글은 나오지 않고, 사이트 메인페이지가 나타났으니 말입니다.

그 글을 보려면, 메인화면에서 다시 그 글을 찾기위해 검색을 해야한다는 말인데... 이렇게 할 사람은 거의 없겠죠.


그래서 SCM 로그관리를 살펴보니, 검색로봇이 긁어간 주소들 중에 www 없이 링크되어 있는 곳이 꽤 많더군요.

왜 그런지 잘 모르겠네요. 어떤 게시물은 www 와 함께 링크되어 있고, 어떤 것은 www 없이 링크되어 있었습니다.

여하튼 이래선 안되겠다 싶어 일단 다시 똑띠님의 팁을 해제하고 다른 방법들을 알아봤는데요.

물론 가장 좋은 건 회원분들께서 '로그인 유지' 기능을 사용하시는거죠. 그러면 www 유무에 관계없이 늘 로그인이 유지되니까요.

그런데 신규회원의 경우나 그 기능을 이용하지 않으시는 분들은 여전히 www 없이 접속하셨다가 로그인 풀림으로 문제를 겪곤 하셨죠.


그래서 인터넷을 한참을 돌아다니다가 결국 한 가지 팁을 찾아서 적용시켜보았더니 문제가 해결되었습니다.


방법은 간단합니다. 레이아웃 편집에서 아래 스크립트를 적당한 곳에 붙여주기만 하면 됩니다.

적당한 곳이 애매하신 분은 로그인창에 보이는 '편집' 누르신 후 레이아웃 편집창 가장 상단에 붙여주시면 되겠습니다. ^^


<script language="JavaScript" type="text/javascript">
var host = location.host.toLowerCase();
var currentAddress = location.href;
if (host.indexOf("www") == -1)
{
currentAddress = currentAddress.replace("//","//www.");
location.href = currentAddress;
}
</script>


위 스크립트가 삽입된 레이아웃은 www 없이 접속을 해도 자동으로 www 로 변경이 됩니다.

물론 서브 메뉴의 주소에도 www 가 자동으로 붙으면서 검색사이트 링크에 www 없는 경우에도 제 페이지를 보여줍니다.


물론 고수님들 보시기엔 정말 하찮은 팁일지도 모르겠고, 더 좋은 방법이 있을지도 모르겠으나 저같은 초보에겐 참 기쁜일이었답니다.

혹시 저처럼 www 유무로 인한 로그인풀림 문제로 고민하시는 분이 계시다면 위 글이 도움이 될 수 있기를 바랍니다. ^^
by Anna 안나 2008. 4. 5. 23:20
1) htaccess 파일을 만듭니다.

2) 파일에 아래의 내용을 기입합니다. RewriteEngine On
RewriteBase / RewriteCond %{ENV:REDIRECT_SURI} ^$ [OR]
RewriteCond %{ENV:REDIRECT_SURI} ^/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /bbs/$1 [R] RewriteRule ^/$ /bbs/?mid=index [L]
RewriteRule ^$ /bbs/?mid=index [L]
단, 노란색 표시가 있는 것은 자신에 맞게 적당히 바꿔주셔야 합니다. bbs -> 자신의 제로보드 XE 디렉토리 경로, index -> 처음 보여질 모듈(페이지/게시판/블로그의 mid값.)

그리고 저장합니다.

3) 계정을 FTP로 접속합니다. 웹페이지가 놓이는 최상단 디렉토리로 들어가서 htaccess 파일을 업로드합니다.

4) 업로드한 htaccess 파일이름을 .htaccess로 고칩니다.

5) 테스트를 해봅니다.



유감스럽게도 아직 제 홈페이지는 업그레이드하지 못한 상태라서 보여드릴 수 있는 실제 작동 예는 보일 수 없습니다만... 테스트는 해보았으니 별 문제는 없을겁니다.

위의 룰이 최선의 방법은 아닙니다만 제로님이랑 이래저래 이야기 해봤는데 그나마 가장 나은 듯하네요. RewriteCond를 몇개 더 걸어서 더 엄격하게 검사할 수도 있긴 한데 괜히 정규식 파싱하는 것보단 이게 적절할 것 같습니다.



간단하게 위의 룰이 하는 일은 다음과 같습니다.

- 아울러 주소가 /인 경우에는 index 모듈로 자동 포워딩한다.
- 주소가 /에서 참조되는 파일은 해당 파일이 서버에 존재하지 않을 때에만 경로를 자동으로 bbs 하위로 변환한다. (이게 추가된 부분)

끗~
by Anna 안나 2008. 4. 5. 23:19
배너 랜덤추출 스크립트 입니다.


1. 아래 소스를 filename.js 파일로 저장해 주세요. // 배너랜덤출력
var banner=new Array();
banner[0]="<a href='배너1 링크 URL'><img src='배너1 이미지 경로' border='0'></a>";
banner[1]="<a href='배너2 링크 URL'><img src='배너2 이미지 경로' border='0'></a>";
banner[2]="<a href='배너3 링크 URL'><img src='배너3 이미지 경로' border='0'></a>";

var random_banner=Math.floor(Math.random()*(banner.length));

2. 적용하실 레이아웃 폴더 안의 js폴더에 업로드 합니다.

3. 적용하실 레이아웃의 편집버튼을 누르시고 상단에 아래 소스를 추가하세요. <!--%import("js/filename.js")-->
4. 레이아웃에 배너를 출력하고 싶은 부분을 찾아 아래 소스를 추가하세요. <script>document.write(banner[random_banner]);</script>
5. 완성된 모습을 확인하세요.
by Anna 안나 2008. 4. 5. 23:17
플래시로 랜덤이미지 로드시키는 방법입니다.



먼저 플래시 만드는 방법 입니다.

1. 플래쉬에서 새로운 레이어를 만들고 최 하단으로 내립니다.
2. Ctrl+F8을 누르고 새로운 무비클립형태의 공백심볼을 만듭니다
3. 메인 프레임으로 넘어와서 공백심볼을 제일 아래에있는 레이어에 놓고 적당한 위치로 조절을 합니다. (x:0, y:0)
4. 하단의 속성에서 (Properties) 인스턴트 이름을 (Incetance name) bg 라고 이름을 정해줍니다.
5. 액션을 넣을 프레임을 생성하고 첫 프레임부분에 액션을 다음과 같이 넣습니다.

bg.loadMovie("http://절대경로/pic"+(random(6)+1)+".jpg");

(6) 은 이미지가 6개란 뜻 입니다. 3개만넣을경우 3으로 수정


1번 프레임 : 우측 방지 액션
2번 프레림 : 랜덤 이미지 로드 액션
3번 프레임 : bg 무비 심벌


6. 플래시 파일을(swf파일) 생성하시고난후 포토샵에서 파일을 pic1.jpg - pic6.jpg 까지 만듭니다.

7. ftp 로 플래시를 업로드 합니다 - 플래시에서 설정된 이미지 절대폴더에 이미지파일( pic1.jpg - pic6.jpg ) 파일을 넣어준다.
(이미지 경로는 다른곳에 업로드 하셔두 되요 단 플래시안의 절대경로값과 맞추어야 합니다)


기본 설정은 끝났습니다..

이제 페이지 수정하셔서 내용직접추가 - 멀티미디어추가 - swf 파일의 절대경로입력 - 가로세로 설정 - 추가

그리고 저장하시면 새로고침할때마다 이미지 랜덤으로보여집니다..



ps..
우측 마우스 금지 하실려면 레이어 하나 생성 하시고

Stage.showMenu = false;

라고 액션을 넣어 주세여~
by Anna 안나 2008. 4. 5. 23:17
생각 해보면 아주 간단합니다
각자의 레이아웃을 열어서.. (혹시 모를 오류를 대비하세요.. =ㅁ=;)

//레이아웃의 1차메뉴 출력
//다른것과 다른게.. $idx 카운트를 하죠.. 음.. 1차메뉴 갯수를 바로 뽑을수 있다면 필요 없겠죠.. 아직 모르니....
<ul id="gnb">
<!-- main_menu 1차 시작 -->
{@ $idx = 1 }
<!--@foreach($main_menu->list as $key => $val)--><!--@if($val['text'])-->
<!--@if($val['selected'])-->
{@ $menu_1st = $val }
<!--@end--> <li onMouseOver="menu({$idx});" <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a></li> <!--@end-->
{@$idx++}
<!--@end-->
<!-- main_menu 1차 끝 -->
</ul>

//이 스크립트는 1차메뉴의 갯수를 지정하는 곳입니다.
<script language="javascript1.2">
var menuLen={$idx-1};
</script>

// 메뉴별로 2차 메뉴를 뽑아 내야 합니다.
// 위의 1차 메뉴에서는 만들기가 어려워서 한번 더 돌려야 합니다.
// 1차메뉴 출력부분을 빼고 2차 메뉴만 출력 하면 되지요..ㅎ.ㅎ

<!--히든 레이어 메뉴-->
<!-- main_menu 1차 시작 -->
{@ $idx = 1 }
<!--@foreach($main_menu->list as $key => $val)--><!--@if($val['text'])-->
<!--2차메뉴-->
<div class="subMenu" id="subMenu_{$idx}" style="<!--@if($val['selected'])-->display:block;<!--@else-->display:none;<!--@end-->">
<!--@foreach($val['list'] as $key1 => $val1)--><!--@if($val1['text'])-->
<!--@if($val1['selected'])--><!--@end-->
<a id="lnb1" href="{$val1['href']}" <!--@if($val1['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val1['text']}</a>
<!--@end-->
<!--@end-->
</div>
<!--@end-->
{@$idx++}
<!--@end-->
<!-- main_menu 1차 끝 -->


//스크립트 부분
function menu(idx){
for (i=1;i<=menuLen;i++){
eval("document.getElementById('subMenu_"+i+"').style.display='none'");
}
eval("document.getElementById('subMenu_"+ idx +"').style.display='block'");
}

script에 요고 추가 하시면 위의 코드로도 충분히 돌아갑니다...
음..... 위치 지정은 css에서 하시면 되구요

행운이 있기를!


질문 하시는 분이 계셔서 추가.....

CSS에 추가 해야 할것이 뭣이냐 하면..

.subMenu{position:absolute; left:210px; top:120px; background-color:#FFFFFF;width:750px;height:24px;}
#lnb1{text-decoration:none;color:#000000;padding-left:10px; line-height:2em; position:relative;white-space:nowrap; }
#lnb1:hover,focus {color:#000000}

이 내용 입니다..
서브 메뉴의 위치를 설정 해 주셔야 이쁘게 되겠죠..
빨간색으로 된 부분 수정 하셔서 위치 지정 해 주시면 되요..




정리해서 올립니다.


layout.html 에서 수정해야 할부분... <ul id="gnb">
<!-- main_menu 1차 시작 -->
{@ $idx = 1 }
<!--@foreach($main_menu->list as $key => $val)--><!--@if($val['text'])-->
<!--@if($val['selected'])-->
{@ $menu_1st = $val }
<!--@end--> <li onMouseOver="menu({$idx});" <!--@if($val['selected'])-->class="on"<!--@end-->><a href="{$val['href']}" <!--@if($val['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val['text']}</a></li> <!--@end-->
{@$idx++}
<!--@end-->
<!-- main_menu 1차 끝 -->
</ul>

<script language="javascript1.2">
var menuLen={$idx-1};
</script>

<!--히든 레이어 메뉴-->
<!-- main_menu 1차 시작 -->
{@ $idx = 1 }
<!--@foreach($main_menu->list as $key => $val)--><!--@if($val['text'])-->
<!--2차메뉴-->
<div class="subMenu" id="subMenu_{$idx}" style="<!--@if($val['selected'])-->display:block;<!--@else-->display:none;<!--@end-->">
<!--@foreach($val['list'] as $key1 => $val1)--><!--@if($val1['text'])-->
<!--@if($val1['selected'])--><!--@end-->
<a id="lnb1" href="{$val1['href']}" <!--@if($val1['open_window']=='Y')-->onclick="window.open(this.href);return false;"<!--@end-->>{$val1['text']}</a>
<!--@end-->
<!--@end-->
</div>
<!--@end-->
{@$idx++}
<!--@end-->
<!-- main_menu 1차 끝 -->

script 부분 추가 해야 할 부분

위치 : layouts/해당레이아웃/js/?????.js
function menu(idx){
for (i=1;i<=menuLen;i++){
eval("document.getElementById('subMenu_"+i+"').style.display='none'");
}
eval("document.getElementById('subMenu_"+ idx +"').style.display='block'");
}
CSS 추가해야 할 부분

위치 : layout/해당레이아웃/css/?????.css
.subMenu{position:absolute; left:210px; top:120px; background-color:#FFFFFF;width:750px;height:24px;}
#lnb1{text-decoration:none;color:#000000;padding-left:10px; line-height:2em; position:relative;white-space:nowrap; }
#lnb1:hover,focus {color:#000000}
by Anna 안나 2008. 4. 5. 23:16
아직 Zbxe의 서버이전을 하실 일은 별로 없을 것 같지만 그래도 제가 해본 결과를 올립니다.

혹시 서버이전 하실 일 있으면 참조하세요.

[ Zbxe 서버이전 순서 ]

기존 서버를 A
옮길 서버를 B 라고 가정합니다.

1. 텔넷(시작-프로그램-보조프로그램-통신-하이퍼터미널)으로 A서버의 ZBXE폴더를 압축합니다.
cd public_html 후에(www면 cd www)

tar cvfpz zbxe.tar zbxe
cvfpz는 폴더의 모든폴더,파일과 퍼미션까지 압축, zbxe.tar은 생성되는 압축파일 이름(임의로 만듬),
zbxe는 계정에 있는 zbxe의 폴더명(만약 루트에서 public_html전체를 압축하려면 public_html를 기재해야함)

생성되어진 zbxe.tar를 ftp로 자신의 컴퓨터로 내려 받습니다.

2. A서버의 DB로 들어가서 ZBXE의 DB를 내려받기로 받습니다. - sql파일

a. 텔넷으로 내려받기

로긴해서 A서버에 접속이 되면
mysql 위치로 들어가야 한답니다.
whereis mysql하고 치면 mysql 경로를 가르쳐 줍니다.
저는 저렇게 치니까 /usr/local/mysql 이라고 나오더군요.. 다른분들은 조금 다를수도 있을듯 싶습니다.
경로를 확인하고 cd /usr/local/mysql이런식으로 자신의 경로에 맞게 칩니다.
mysql 로 들어갔으면 [어쩌구저쩌구 mysql] 이렇게 나오실 겁니다. 안도의 한숨을 쉬면서..
백업을 시작합니다.
./bin/mysqldump -u 아이디 -p DB 이름 > 백업할 파일 이름
이렇게 치면 mysql 패스워드를 묻습니다. 그리고 패스워드를 치면 조금있다가 백업이 됩니다.
백업할 파일 이름을 넣을때 그냥 backup.sql 이런식으로 넣으면 퍼미션 에러가 납니다. 자신의 홈 디렉토리에 넣어야 겠죠..
결국 만약에 자신의 아이디가 name 이고 db 이름도 name이라면
./bin/mysqldump -u name -p name > /home/name/public_html/name_backup.sql이렇게 치면 백업됩니다.
물론 뒤쪽에 붙은 /home/name/public_html/name_backup.sql이 경로는 자신의 경로에 맞게 수정하시면 될듯 싶습니다.

b. 어렵죠 그럼 쉬운, 직접 DB로 들어가 내려받기

계정을 관리하는 사이트에 보통 있습니다.
phpMyAdmin를 설치한 경우는 직접 접속해서 내려받기 하면 됩니다.

그럼 A서버로 부터 받을 것은 다 받았네요. 이제 B서버에 설치

3. B서버로 A서버에서 생성해서 자신의 컴에 보관한 sql파일을 import 합니다.

a. 텔넷으로 올리기
먼저 A서버에서 내려 받은 sql파일을 ftp를 이용해 B서버에 올립니다. 이때 접속해서 보이는 첫화면에 올려도 좋지만
그럼 텔넷이용시 디렉토리를 변경해야 하므로 상위 디렉토리를 선택하시면 편리
(보통 www 나 public_html의 상위 디렉토리가 되겠죠)
텔넷으로 B계정에 접속이 되면(상위디렉토리라고 가정)

mysql -u 아이디 -p 비밀번호 DB네임 < 백업파일명 (예; mysql -u name -p 1111 name < zbxe.sql)

그럼 DB작업 완료

b. 어렵죠 그럼 쉬운 직접 DB로 들어가 올리기

계정을 관리하는 사이트에 보통 있습니다.
phpMyAdmin를 설치한 경우는 직접 접속해서 import 하면 됩니다.

4. A서버에서 내려 받아 자신의 컴에 보관중인 압축파일 zbxe.tar 을 ftp를 이용해서 B서버에 올립니다.
이때도 public_html 전체를 압축했으면 루트에, zbxe폴더만 압축했다면 public_html 방안에 올립니다.

5. 텔넷으로 B계정에 접속해서 public_html 안에 zbxe폴더만 압축했다면 cd public_html 치고

tar xvfpz zbxe.tar zbxe

그럼 B서버의 이전도 완료되었네요.

6. B서버의 zbxe/files/config/db.config.php 파일을 삭제합니다.

8. B서버에 도메인으로 접속해서 (ex : http://도메인/zbxe) 설치환경을 시작합니다.
이때 DB네임이나 DB에 관계된 것은 당연히 바뀌어야 하나, 자신의 zbxe의 아이디나 비밀번호는 바뀌면 안됩니다.

9. 설치가 완료되었으면, 각 레이아웃 설정에 들어가서 홈페이지 URL 부분에 이전한 홈페이지 주소를 입력합니다.

그럼 이전 90% 완료입니다.

이전 되지 않는 것들(수동으로 일일히 변경)
- 파일첨부해서 본문삽입으로 올린 이미지들(파일의 경로는 올바르게 이전됨)이 A의 계정으로 남아있습니다.
갤러리로 올린 이미지들은 정상적으로 이전됨.
- 레이아웃편집으로 위젯설치한 경로 A계정으로 남아있습니다.
by Anna 안나 2008. 4. 5. 22:45
예제->> ((-------IMAGE-------))



학습목표
위 그림처럼 새 글일 때, New 아이콘 표시,
비밀글일 때, 비밀글 상태 표시,
현재 읽는 글 표시를 추가
조회 수별로 제목 색상 지정

※ 아이콘 표시 기능은 XE 0.1.7 부터 적용됩니다.

작업 파일
보드 모듈 스킨의 list.html 파일

90번대 줄의 제목 표시 줄

아래 소스를 원하는 위치에 삽입하세요.

New 아이콘 표시 방법
<!--@if((strtotime("now") - strtotime(zdate($document->getRegdate("YmdHis")))) < 24 * 3600)--><img src="./images/new.gif" align="absmiddle"><!--@end-->

24는 시간이며 24시간 이내의 글은 아이콘을 표시하는 예제
이미지 파일은 스킨/images/ 폴더에 복사 ((-------IMAGE-------))


비밀글 상태 표시 방법

<!--@if($document->isSecret())-->비밀 글이에요<!--@end-->


현재 읽는 글 표시 방법

<!--@if($document_srl == $document->document_srl)-->현재 읽고 있는 글이에요~<!--@end-->


조회수 별 제목 색상 지정

list.html 파일에 아래 소스 추가
<!--@if($document->get('readed_count') > 100)-->{@$color_read = "color_read_5"}
<!--@elseif($document->get('readed_count') > 80)-->{@$color_read = "color_read_4"}
<!--@elseif($document->get('readed_count') > 60)-->{@$color_read = "color_read_3"}
<!--@elseif($document->get('readed_count') > 40)-->{@$color_read = "color_read_2"}
<!--@elseif($document->get('readed_count') > 20)-->{@$color_read = "color_read_1"}
<!--@elseif($document->get('readed_count') > 0)-->{@$color_read = "color_read_0"}
<!--@end-->

제목 표시 줄을 아래 처럼 클래스 지정 후,
<a href="{getUrl('document_srl',$document->document_srl)}" class="{$color_read}">{$document->getTitleText($module_info->subject_cut_size)}</a>


CSS/common.css 파일에서 아래 스타일 추가

.boardList td.title a.color_read_5 {color:#FF3232}
.boardList td.title a.color_read_4 {color:#FF9632}
.boardList td.title a.color_read_3 {color:#C8C800}
.boardList td.title a.color_read_2 {color:#64C800}
.boardList td.title a.color_read_1 {color:#0096C8}
.boardList td.title a.color_read_0 {color:#C832C8}


※ 응용을 하여 Cool, Hot 아이콘을 표시하도록 할 수 있습니다.
by Anna 안나 2008. 4. 5. 22:44
<img> 태그를 쓴 png 이미지는 투명하게 만드는 방법은 여기 제로보드에도 쓰이고 있죠

그런데 Background 로 쓰기에는 그 스크립트가 안 통하죠.

그러나 CSS 로 쉽게 해결할수 있습니다.

뭐 아시는 분들은 이미 다 아시겠지만요 ㅎㅎ

레이아웃의 그림자 같은 경우 Background 로 지정해서 컨탠츠에 따라서 커지고 작아지고에 따라서 계속 보여지게 해야 하죠.

PNG 로 그 그림자를 지정하면 아주 깨끗하고 깔끔하게 나오기 때문에 PNG 를 쓰는게 좋죠.

아래 소스만 있으면 모든 브라우저에서 투명하게 나오게 됩니다

view plaincopy to clipboardprint? <style> <!-- #header_middle{ margin:auto; width:426px; background:url(images/box_02.png) repeat; background-position:center top; font-family:dotum; font-size:12px; padding:0px 30px 0px 30px; } * html #header_middle { background:url(images/blank.gif) no-repeat; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/box_02.png", sizingMethod="scale"); } --> </style> <style> <!-- #header_middle{ margin:auto; width:426px; background:url(images/box_02.png) repeat; background-position:center top; font-family:dotum; font-size:12px; padding:0px 30px 0px 30px; } * html #header_middle { background:url(images/blank.gif) no-repeat; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="images/box_02.png", sizingMethod="scale"); } --> </style>

나와 있는대로 div 에 id 값을 지정해주면 투명 png 로 보여집니다.

또한 IE 6 에서 투명하게 나오기 위해산 *html #header_middle 이 작동하기 위해서는

blank.gif 투명 gif 가 있어야 합니다.

by Anna 안나 2008. 4. 5. 22:42
웹 계정에서 지워지지 않는 폴더 및 파일 삭제하는 방법
(웹에서 생성된 노바디, apache 권한 폴더 및 파일 삭제하는 방법)
웹에서 생성된 노바디 파일 및 폴더 삭제하는방법 기본적으로 웹 서버는 nobody 권한으로 동작이 되게 됩니다. FTP로 계정에 접속하여 전송한 파일이 아니라 웹상에서 사용자들이 파일을 업로드한 경우나 웹상에서 생성된 파일이나 폴더의 경우 삭제가 되지 않아 난감할 때가 있습니다. 웹 서버의 동작 권한은 nobody이고 웹상에서 생성된 파일이므로, 해당 파일이 nobody 소유권으로 시스템에 생성되게 됩니다. 이렇게 생성된 파일이나 폴더가 삭제되지 않을 경우 아래와 같은 방법으로 웹상에서 실행시키면 지워지지 않는 파일이나 폴더를 삭제할 수 있게 됩니다. 1. 메모장을 열어 아래의 소스를 복사하여 붙여넣기 하신 후 주의 : 아래 `는 키보드 상의 왼쪽 위 물결(~)키와 함께 있는 기호입니다. <?

// 폴더 또는 파일 삭제시 $cmd = `rm -rf 노바디로 된 폴더명`; echo "$cmd"; echo "삭제되었습니다."; ?> * "노바디로 된 폴더명"을 삭제하고자 하는 폴더명으로 바꿔 주세요. 2. 파일 -> 다른 이름으로 저장 -> 아래 탭에서 파일 형식을 "모든 파일"로 선택 후 -> "원하는 파일명.php" 로 저장 (ex: del.php) 3. FTP를 통해 계정에 '원하는 파일명.php'를 업로드한 후 웹상에서 '원하는 파일명.php'를 불러내면 됩니다. ex: 만약 XXX 폴더/YYY 폴더 안에 삭제하고자 하는 zzz 파일이 있을 경우 XXX 폴더 안에 del.php를 업로드한 다음 (`rm -rf YYY`) 브라우저에서 http://도메인 주소/XXX/del.php 를 입력한 후 Enter 하면 됩니다. 4. del.php를 실행하면 YYY 폴더 안의 파일은 삭제되고 nobody 권한의 YYY 폴더는 그대로 남게 됩니다. (YYY 폴더 안의 파일들만 삭제됨) 이후 FTP로 계정에 접속한 다음 해당 폴더의 권한 설정을 777로 변경한 후 해당 YYY 폴더를 삭제하시면 됩니다. (아래와 같은 방법으로 하지 않고 FTP 프로그램에서 직접 권한 설정을 777로 변경하셔도 됩니다. - 어떤 경우에는 FTP 프로그램으로도 권한 변경이 되지 않을 경우도 있습니다.) ex) <? // 퍼미션 변경시 $cmd = `chmod -R 777 노바디로 된 폴더명`; echo "$cmd"; echo "퍼미션이 변경되었습니다."; ?>

5. 위의 에에서 XXX 폴더를 삭제하고자 할 경우에는 위 del.php에 삭제하고자 하는 폴더명 XXX를 입력(`rm -rf XXX`)한 후 del.php를 FTP로 웹상에 업로드한 다음 http://도메인 주소/del.php 를 실행하면 XXX 폴더 및 그 하위 YYY 폴더 안의 파일까지 모두 삭제가 됩니다. 만약 폴더가 삭제되지 않을 경우에는 삭제하고자 하는 XXX 폴더의 권한 설정을 777로 변경한 후 del.php를 실행시키면 됩니다.
by Anna 안나 2008. 4. 5. 22:41
일반 사용자에게는 쓰기 폼만 보여주고 목록은 관리자만 보게 한다면
무언가를 센청 혹은 제출하는 메뉴를 매우 쉽게 만들 수 있습니다.

게시판 입장에서 보자면
일반 회원 - 쓰기만
관리자 - 모든 기능

이렇게 정리가 되는 것이죠.
제로보드 기본 스킨을 가지고 구현해 보겠습니다.

1. 쓰기 페이지의 주소
신청 게시판의 mid가 qna라면, 신청 메뉴에
/zbxe/?mid=qna&act=dispBoardWrite
이렇게 링크를 걸면 됩니다.

2. 권한 설정
게시판 권한 설정에서 쓰기를 제외한 모든 권한을 관리자에게만 줍니다.
이렇게 하지 않으면 위의 게시판의 경우 일반 사용자가
/zbxe/qna 이렇게 접속해서 다 볼 수도 있겠죠.

3. 스킨 수정 1 - 글 작성 후 안내 메시지
이제 일반 사용자가 글을 작성하면
쓰기 버튼을 누른 직후 어떠한 메시지도 없이
'권한이 없습니다'라는 메시지를 접하게 될 것입니다.
오류가 있거나 매우 불친절한 홈페이지라고 생각하게 되겠죠.
수정해봅시다.

기본 스킨의 board.js 파일을 열면 맨 먼저 나오는 함수가 completeDocumentInserted()입니다.
이 함수 마지막 줄에 location.href = url; 이라고 나오는 부분을 주석 처리합니다.
그리고 이렇게 써넣습니다.

//location.href = url;

alert('신청이 완료되었습니다.');
completeReload(ret_obj);

이제 사용자가 쓰기 버튼을 누르면 위에 적은 안내 문구가 뜬 후 다시 쓰기 페이지로 돌아오게 될 것입니다.


4. 스킨 수정 2 - 비밀번호 제거
이런 일회성 폼에는 비밀번호가 필요 없습니다.
제거하는 방법은 두가지가 있는데,
하나는 그냥 write_form.html에서 비밀번호 필드를 삭제하고
filter/insert.xml에서 패스워드 항목을 찾아 required="true"라는 부분을 제거하는 것입니다.
하지만 이렇게 해서 비밀번호 없는 게시물을 만든다는 게 별로 좋은 발상이 아닌 것 같습니다.
만에 하나 실수로 스킨을 변경한다거나 할 경우 무슨 일이 일어날지 모르기 때문입니다.
그래서 여기서는 다른 방법을 쓰겠습니다.
write_form.html을 열고

<input type="password" name="password" value="" id="userPw" class="userPw inputTypeText" />

이것을

<input type="hidden" name="password" value="{@$time = time()}{$time}" />

이렇게 바꿉니다.
또 is_secret 옵션을 입력받는 부분을 찾아

<input type="hidden" name="is_secret" value="Y" />
이렇게 바꿉니다.

이렇게 해 두면 올라오는 모든 게시물이 비밀글 & 다른 비밀번호를 가지게 되어
혹시라도 있을지 지 모르는 상황에서도 어느정도 게시물 내용을 보호할 수 있게 됩니다.
by Anna 안나 2008. 4. 5. 22:39