블로그 이미지
초딩입맛제주아재
하고 싶은 것만 하며 살고 싶다

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
2007. 1. 3. 16:18 Programing/HTML/JavaScript/CSS

CSS를 알면 손가락이 편해진다

여기는 THEAD
여기는 TBODY-1
여기는 TBODY-2
여기는 TBODY-3
여기는 TBODY-4
여기는 TBODY-5
여기는 TFOOT-1
여기는 TFOOT-2

위와 같은 모양의 테이블은 각종 리포트나 통계 페이지, 회원 목록, 가계부, 쇼핑몰의 상품 목록 등 어렵지 않게
볼 수 있다.
그리고 우리는 테이블의 각 row에 마우스를 올렸을때 배경색이 변하거나 폰트가 바뀐다거나 하는등의 이펙트를
경험 할 수 있다.

이런 효과들은 각 ROW(TR)에 onMouseOver onMouseOut 이벤트 핸들러를 통해서 마우스가 올려졌을 때와 벗어났을 때 취해야 할 행동들을 기술함으로써 구현하는 방식이 널리 통용되고 있다.

나 또한 지금껏 저와 같은 이벤트 핸들링을 통해서 구현을 해 왔으나, CSS에 관심이 증폭 되는 요즈음 심플하면서도 표준에 걸맞기 까지 한 CSS를 통한 구현방법을 찾게 되었으니 이자리에서 소개한다.



A:hover

오늘의 주인공이다.
이 CSS의 의미를 설명하자면 "<A>태그로 둘러싸인 블럭에 마우스가 올려졌을때" 라고 해석 할 수 있겠다.

<a href="#">여기를 클릭하세요</a>

이 코드를 브라우져에서 보면 "여기를 클릭하세요" 라는 밑줄이 그어진 텍스트가 보이고
이때 마우스를 텍트르 위로 가져가면 텍스트의 색이 변한다.
클릭하면 href="" 에 지정된 URL로 페이지를 이동시킨다는 설명은 굳이 하지 말것을....-_-;;

이제 저 코드위에 살짝 CSS를 입혀보자
<style>
a:hover{
  color: #FF0000;
  font-weight: 600;
}
</style>
<a href="#">여기를 클릭하세요</a>

브라우져로 이 코드를 열어보고 아까처럼 마우스를 가져가 보자....
어떤가...

분명 글자색은 red로 바뀌고 폰트가 두껍게 바뀔것이다.
a:hover{} 에서 그리 하라고 지정을 했기 때문이다.

이제 뭔가 보이는가??

이제부터가 중요하다.

우리는 겨우 <a>태그에 마우스가 올려졌을때 뭔가를 하고 싶은게 아니다. 바로 테이블의 ROW에서 뭔가를 보여주고 싶은거다!!

다시 한번 보자 a:hover

모냥 참....
하지만 뚫어져라 봐라. 보인다...보인다...
분명 ":"의 좌우로 a와 hover가 등지고 있는 모습이 보인다.
안보이는가??  그렇다면 당신의 이글아이에 축배를....

":"를 기준으로 왼쪽의 a는 태그이름이고 hover는 뭐라고 해야 좋을까나....상황? 그래 상황이라고 해두자...
이 두가지의 element가 ":"를 사이에 두고 무슨짓을 꾸미는 것이다.

음...a는 태그이름...그러면 다른 태그도 가능하겠지??
당근!!
"a"대신 "div"를 넣어보자.
div:hover

스타일을 바꿨으니 HTML코드도 살짝 바꿔보자
<style>
div:hover{
  color: #FF0000;
}
</style>
<div>여기에 마우스를 올려보아요~</div>

브라우져로 페이지를 열고 마우스를 올려보라는 곳으로 가져가보자.
역시나 글자색이 빨갛게 변할것이다.

아차차차...
여기서 한가지 짚고 넘어갈것이 있으니, IE 6.0 이하의 버전에서는 위 CSS를 인식하지 못한다는 것이다.
IE가 이상한것이니 CSS를 탓하지는 말자.


애니튼....
이제 "A" 태그뿐만 아니라 "DIV" 태그도 위의 CSS가 먹힌다는것을 알았다.
이제 남은건 우리의 목적 TR에 CSS를 적용시키는것!

단순히 TR에 마우스를 올렸을때 뭔가 변화를 주고자 한다면
<style>
tr:hover{
}
</style>
이걸로 끝이다.

하지만 곰곰히 생각을 해보자...
회원목록의 테이블의 맨 위 ROW에는 "이름,나이,직업" 등과 같은 각 필드의 설명이 자리잡고 있고
실제 데이터로의 의미는 없는 경우가 대부분이다.
그런 설명 부분의 ROW에 마우스를 올렸을때 뭔가 이펙트가 일어난다면 좀.....

자 스크롤을 위로 쭉 올려보자.
맨 처음의 테이블을 보면 thead,tbody,tfoot 이렇게 총 3개-머리,가슴,배??- 의 부분으로 나뉘어있는것을 볼 수 있다.
이것은 테이블을 만드는 방법에 대한 W3C의 표준 권고사항이니 테이블을 만들때는 이와 같은 구조로 만들기로 하자.

이렇게 테이블을 구성했다면 thead에는 "이름,나이,직업" 같은 필드의 설명을 넣고
tbody부분에는 각 회원들의 정보, 즉 실제 데이터들을 보여주고, tfoot에는 뭔가 "계(total)" 같은 것을 보여주면 좋지 않겠는가?
막상 tfoot는 꼭 필요 하지 않을 수도 있다...해서 W3C의 표준 권고안에도 tfoot은 옵션이다.. :)

정리를 해보면....
tbody에 있는 ROW에 마우스가 올려졌을때 뭔가를 해주면 된다는것으로 요약이 된다.

흠...
tbody에 있는 tr이라...
아까와는 딴판이다...tbody도 아니고 tr 도 아니고 tbody 에 있는 tr이라니...

이럴때 쓰라고 ">"가 있다.



">"의 발견

CSS에서 ">"는 포함 관계를 뜻한다.
a > b{
}
"a에 포함되어있는 객체들중 b" 라고 해석 하면 된다.

빙고!!
감이 오지 않는가?

tbody에 포함되어 있는 객체들중 tr

tbody > tr:hover

휴...
이제 끝났다.

이제 우리는 테이블 row에 마우스가 올려진 후의 일들을 걱정 할 필요가 없어졌다.
그 무지막지하게 길고도 길었던 onMouseOver=""와 onMouseOut=""은 bye~~bye~~하자.



못다한 이야기

포함 관계 이외에도 "class"라는 그룹형 속성이 있다.
class는 다음과 같이 태그에 class="클래스이름" 으로 지정한다.

<div class="mydiv">A</div>
<div class="mydiv">B</div>
<div class="mydiv">C</div>

이렇게 하면 A,B,C모두 동일한 스타일을 갖게 된다.
바로 그룹핑이 가능하다는 것이다.


mydiv라는 클래스에 마우스가 올려졌을때 뭔가를 하고 싶다면

div.mydiv:hover{}

이제 설명이 필요 없을줄로 안다.

그리고 마지막.
그룹핑도 필요 없고 오직 하나뿐인 너....
페이지내에 유일한 누군가에게 그만의 특별한 스타일을 주고 싶다면
"id"를 써라.

<div id="mydiv">A</div>
<div class="mydiv">B</div>
<div class="mydiv">C</div>

B,C는 동일한 스타일을 갖지만
A는 유일한 스타일을 갖게 된다.
단, 페이지내에서 ID는 유일해야 한다. 중복 되는 ID는 절대 불가!!

id로 스타일을 주고자 할때는
"#"을 쓴다.
#mydiv:hover{
}

'Programing > HTML/JavaScript/CSS' 카테고리의 다른 글

[HTML] LABEL과 사용자 중심의 프로그래밍-UI  (3) 2007.01.05
[HTML] FIELDSET과 LEGEND  (0) 2007.01.05
이벤트 Fake!!!  (0) 2006.12.12
키입력 이벤트처리  (2) 2006.12.06
테이블(Table) 그리기  (0) 2006.11.30
posted by 초딩입맛제주아재
2007. 1. 3. 12:46 삶은달걀
2007년의 중차대한 프로젝트 - "금연"

올해는 기필코 이루리라.

니코틴들아 어서들 빠져나가거라~

아침에 눈을뜨면 코와 목이 답답하지 않아서 좋다.

내일이 고비로구나.

술이 들어가면 과연 어찌 버틸런지...

'삶은달걀' 카테고리의 다른 글

이사  (0) 2007.02.12
선수관리  (1) 2007.01.10
데스노트, 주문했음...  (0) 2006.12.07
청첩장  (0) 2006.11.29
자동변속기 운전 요령  (0) 2006.11.17
posted by 초딩입맛제주아재
2007. 1. 3. 12:44 Programing/JSP/ASP
PHP에는 exit 라는 함수를 써서 프로그램으 실행을 강제적으로 중단시킨다.
ASP에도 exit 가 있다는 검색 결과를 보고 해봤는데 안된다 -_-;

ASP에서는 Response.end 를 써서 프로그램의 실행을 중단시킨다.

Response 객체는 입/출력을 총괄하는 객체이다.


[Response 객체]

Collection
  Cookies             : 쿠키 값을 지정하고 쿠키 값을 설정할 수 있다.

Property
  Buffer                : 페이지를 버퍼에 저장할 것인지를 결정한다.
  CacheControl      : 프록시 서버가 ASP에 의해 작성된 결과를 캐시할 수 있는지 결정
  Charset              : content-type 헤더에 문자 집합 이름을 추가
 Expires              : 브라우저에 캐시된 페이지가 만료될 때까지의 시간을 설정(분)
  ExpiresAbsolute   : 브라우저에 캐시된 페이지가 만료되는 날짜와 시간을 지정
  IsClientConnected: 클라이언트가 서버와 연결을 해제했는지 나타낸다.
  Pics                  : Pics 컨텐츠 등급을 나타내는 pics-lable 응답 헤더에 대한 값을 설정
  Status                : 서버에서 반환한 값을 웹 브라우저의 상태 표시 줄에 나타낸다.

Method

  Addheader          : HTML 헤어 NAME을 Value로 설정한다.
  AppentToLog       : 요청에 대한 웹서버 로그 항목 끝에 문자열을 추가한다.
  BinaryWrite         : 문자 집합을 변환하지 않고 현재 HTTP 출력에 정보를 작성한다.
  Clear                 : 버퍼된 모든 HTML 출력을 반환한다.
  End                   : *.ASP 파일 처리를 멈추고 출력한다.
  Flush                 : 버퍼에 저장된 값을 출력한다.
  Redirect             : 다른 URL에 연결
  Write                 : 현재의 HTTP 출력에 변수를 문자열 형태로 대입

'Programing > JSP/ASP' 카테고리의 다른 글

웹 프린터  (0) 2007.05.23
ASP: 동적 include  (1) 2007.05.22
ASP의 가변변수  (1) 2007.04.19
[펌]톰캣과 아파치,IIS연동에 관하여  (0) 2007.01.12
posted by 초딩입맛제주아재
2006. 12. 29. 15:21 DataBase/Mysql
Mysql에서 한글 정렬이 문제가 되는 것은 charset 때문이다.
이럴땐 my.cnf파일에 한줄을 추가 하는것으로 한글 정렬 문제를 해결 할 수 있다.

default-character-set=euc_kr

그리고 /etc/rc.d/init.d/mysqld restart 하여 Mysql데몬을 재시작하면 된다.

만약 Mysql 데몬을 재시작할 상황이 안된다면
쿼리문을 수정하는 방법이 있다.

binary(FIELD_NAME)


member 테이블에 있는 name이라는 이름 필드에 다음과 같은 값들이 있을때
'김철수','이영희','한국인'

SELECT name FROM member ORDER BY binary(name) DESC

위 쿼리를 실행하면 한국인,이영희,김철수 순으로 정렬이 된다.

'DataBase > Mysql' 카테고리의 다른 글

MYSQL 정규식  (0) 2006.08.17
mysql_insert_id()  (0) 2006.05.11
posted by 초딩입맛제주아재
2006. 12. 28. 11:07 Programing/Smalltalk
TDD(Test Driven Development)는 테스트가 개발을 주도하는 방법으로서, 테스트가 코딩의 방향을 이끌게 된다. 테스트를 실패하는 코드가 없으면 코딩을 하지 않고, 코드 상에 중복이 있으면 제거하는 간단한 규칙을 적용하여 자연스럽게 코드를 만들어 간다.

- 켄트 백의 저서 "테스트주도개발"에 대한 "NAVER 책" 소개글 중 -

'Programing > Smalltalk' 카테고리의 다른 글

문자열조작  (0) 2007.05.22
Smalltalk의 편리함과 백업의 중요성  (1) 2006.12.28
가계부 만들기 - 짧은숙제  (0) 2006.11.16
가계부 만들기 - 08  (0) 2006.11.16
가계부 만들기 - 07  (0) 2006.11.16
posted by 초딩입맛제주아재
2006. 12. 28. 11:06 Programing/Smalltalk
어제 달룟님과 메신져로 "가계부" 프로그램을 작성하면서 새삼 Smalltalk 의 편리함을 실감했다.
C,Java,PHP 등 지금껏 접한 언어들은 한 프로젝트에 딸리는 파일들이 수십개에서 많게는 수백개이어서
소스 공유가 여간 번거롭지않다.
하지만 Smalltalk는 파일 세개, workspace가 필요하다면 workspace파일도 추가가 되어 4개로 끝이다.
.chg, .img, .sml 그리고 workspace 확장자인 .st 가 그것들이다.

chg파일은 이름에서 풍기는 이미지처럼 변경기록이다.
이미지의 변경 내역을 담고 있다.

img파일은 가장 중요한 이미지파일.

sml파일은 소스코드이다.
classbrowser나 workspace에서 컴파일된 코드들이 그대로 담겨있다.


이 세개의 파일은 수시로 백업을 하는 습관이 필요하다는것을 어제 절실히 깨닳았다.

실수로 Object  클래스의 name: 메서드를 호출하여 이미지가 깨졌는데
다행히도 작업전 달룟님께 보냈던 위 파일들이 있었고 그 후로 달룟님도 내가 보낸 이미지로 작업을 하셨던터라
난 깨진 이미지를 과감히 삭제하고 다시 달룟님으로부터 이미지를 전송받아 무슨일이 있었냐는듯 코딩을 계속할 수 있었다.

'Programing > Smalltalk' 카테고리의 다른 글

문자열조작  (0) 2007.05.22
Smalltalk의 TDD  (0) 2006.12.28
가계부 만들기 - 짧은숙제  (0) 2006.11.16
가계부 만들기 - 08  (0) 2006.11.16
가계부 만들기 - 07  (0) 2006.11.16
posted by 초딩입맛제주아재
2006. 12. 24. 19:08 영화/애니
별은 말이지, 자기 혼자 빛나는 별은 거의 없어.
다 빛을 받아서 반사하는거야....


나를 알아 주는 사람,
나를 믿어주는 사람이 있다는건 참 행복한 일이다.

대한민국 영화계의 최고의 콤비 박중훈과 안성기가 만들어낸 영화 "라디오 스타"는
나를 되돌아 보게 해주는 영화이다.
내가 기댈수 있는 사람.
날 믿고 기대해 주는 사람.
다시한번 주위를 둘러보고 지나온 내 인생을 되돌아 보며
나를 채찍질 하게 해준다.

자신을 위해 스스로 떠나가야 했던 매니져 박민수를 애타게 찾아 부르짓던
최곤의 떨리는 음성이 아련하다.

주제곡 "비와 당신"의 멜로디가 영화속 최곤과 잘 어울리는 "라디오 스타".
비록 대박 계열에는 끼지 못했으나 감동을 주는 괜찮은 영화였다.







'영화/애니' 카테고리의 다른 글

데스노트 종결  (2) 2007.06.27
럭키 넘버 슬레븐  (0) 2007.01.07
우리들의 행복한 시간  (0) 2006.12.24
애니메이션 - 데스노트  (1) 2006.11.13
영화 - 데스노트 1편  (0) 2006.11.13
posted by 초딩입맛제주아재
2006. 12. 24. 18:54 영화/애니
목요일 10시부터 1시까지... 우리들의 행복한 시간


"남들한테는 먼지만한 가시 같아도,
그게 내 상처일때는 우주보다 더 아픈거래요"



공지영의 소설을 영화로 만든 우행시...
원작을 읽어 보지 못하고 영화만 봤는데 영화를 보고 나니 원작이 보고 싶어졌다.
이 영화를 극장에서 보지 않고 집에서 본게 얼마나 다행스러운지 모른다.
극장에서 봤다면 떨어지는 눈물때문에 무지 창피했을텐데...

극중 유정(이나영 역)은 "아는여자"의 캐릭터와 너무도 흡사하다.
건조하고, 차가워 보이지만 여리디 여린...
이나영은 아마도 그런류의 배역에 최적화된 배우가 아닌가 싶다.

의외였던건 강동원의 연기였다.
내가 아는 강동원이 이렇게 연기를 잘하는 배우였던가.
얼굴도 잘생기고 키도 크고 연기도 잘하니,
하느님도 참 무심하시지 -_-

크리스마스 이브에 슬픈영화를 본게 잘한일인지 모르겠지만
우행시, 재밌었다.. 아니 슬펐다...ㅡ.ㅜ



'영화/애니' 카테고리의 다른 글

럭키 넘버 슬레븐  (0) 2007.01.07
라디오 스타  (0) 2006.12.24
애니메이션 - 데스노트  (1) 2006.11.13
영화 - 데스노트 1편  (0) 2006.11.13
연예,그 참을 수 없는 가벼움  (0) 2006.11.08
posted by 초딩입맛제주아재
2006. 12. 23. 01:27 Programing/Java
내 컴퓨터 -> 속성 -> 고급 -> 환경변수 -> 시스템 변수

1.JAVA_HOME 새로만들기클릭
      변수이름 : JAVA_HOME
      변수값 : 자바 jdk 를 설치한 위치를 지정 예) C:\Program Files\Java\jdk1.5.0_09

2.CLASSPATH 새로만들기클릭
      변수이름 : CLASSPATH
     변수값 : .;%JAVA_HOME%\lib\tools.jar


3.PATH 기존변수수정
      변수이름 : Path
     변수값 : java 가 설치된 디렉토리 밑의 bin 디렉토리 예) C:\Program Files\Java\jdk1.5.0_09\bin;

다 했으면 확인을 누르고 창을 닫자.

이제 설정이 잘 되었는지 확인할 차례

윈도우키+ R 을 누르면 "실행" 다이얼로그가 뜬다.
cmd를 타이핑 하고 엔터.
까만바탕의 커멘드 콘솔이 뜬다.

path를 입력해보자.
조금전에 수정한 path가 뜨면 일단 제대로 설정은 된것.
java를 입력해보자.
뭐라고 주루룩 뜨면 성공.

이제 준비는 끝났다.

'Programing > Java' 카테고리의 다른 글

JavaOne2007 Wrap-up 세미나  (0) 2007.09.03
제8회 한국 자바 개발자 컨퍼런스  (0) 2007.02.24
에디트플러스 자바 컴파일/실행 설정  (0) 2006.10.16
SWT 연습 - FileTreeContentProvider  (0) 2006.10.13
SWT Study  (0) 2006.10.13
posted by 초딩입맛제주아재
2006. 12. 12. 15:05 Programing/아뜰리에
친구의 부탁으로 간단하게 만들어보았다.
실행권한을 주고 CLI모드에서 실행하면 된다.

간단하게 인자 두개를 입력 받는데
첫번째 인자값은 찾을 확장자,
두번째 인자값은 바꿀 확장자이다.

./file_rename.php php php4
이렇게 하면 현재 디렉토리 내의 확장자가 php인 모든 파일의 확장자가 php4로 바뀐다.


코드는 무척 간단하다...

#!/usr/local/php/bin/php -q
<?php
/**
* filename : file_rename.php
* author   : asrada2001@hotmail.com
* date     : 2006-12-12
* desc     : 현재 디렉토리에 존재하는 파일의 확장자 일괄 변경
**/

if(sizeof($argv) < 3 || $argv[1] == Null || $argv[2] == Null){
  echo "require two arguments...\n\n";
  exit;
}

$dir = '.';

$searchExt = '.'.$argv[1];
$replaceExt = '.'.$argv[2];

if($handle = opendir($dir)){
  while (false !== ($file = readdir($handle))){
       if($file != '.' && $file != '..' && strpos($file,$searchExt) > 0){

           $fname   = substr($file,0,strrpos($file,$searchExt));
           $newName = $fname.$replaceExt;

           if(rename($file,$newName) == true){
               echo $file.' -> '.$newName." [OK]\n";
           }else{
               echo $file.' -> '.$newName." [FALSE]\n";
           }
       }
  }

  closedir($handle);
}
?>


주의 할 것은 소스파일의 맨 윗줄을 공백으로 두면 안된다는것이다.
친구놈이 소스코드를 메신져로 던져줬더니 붙여넣기 하면서 한줄을 공백으로 비워두고는
안된다고 타박을 해댔다 -_-;;

필요에 의한 개발은 언제나 재밌다.
posted by 초딩입맛제주아재