CSS Attribute Rule embed into element.style

………..

 

기술적으로는 w3에서 일단 정의는 해두었다.

 

근데 안된다.

대부분의 브라우저에서 지원을 않는다네…

 

찌밤 ㅠㅠ

 

이건 예제 소스…. 아래 링크에서 퍼옴.

<a href="test.html" style="{color: blue; background: white} 
			:visited {color: green}
			:hover {background: yellow}
			:visited:hover {color: purple}">Test</a>

Test

 

http://stackoverflow.com/questions/131653/how-do-i-embed-an-ahover-rule-into-a-style-attribute-in-the-middle-of-a

 

 

결국 저런거 쓰려면 자바스크립트나.. css따로 선언을 해주어야함…ㅠㅠ

JDBC를 이용한 JSP – MySQL 연동

우리는 앞서 MySQL의 기본 사항에 대해 배울 때 “명령 프롬프트”를 통해 “mysql” 클라이언트 프로그램을 실행함으로써 데이터베이스 서버에 접속하고 몇몇 데이터 조작을 위한 명령을 실행하였다. 이 과정은 크게 네 가지 단계로 나누어 생각할 수 있다.

먼저 데이터베이스 서버로의 연결 단계이다. 이 단계는 “명령 프롬프트”에서 다음 명령을 실행하고 암호를 입력함으로써 이루어진다.
mysql  -u  jsp  -p
이 명령은  데이터베이스 사용자 “jsp”가 클라이언트 프로그램을 이용 서버에 연결 데이터 조작을 할 수 있도록 한다. 이 때 서버와의 연결을 위해 주어지는 정보는 세 가지다. 첫 째 사용자아이디, 둘 째 비밀번호, 그리고 데이터베이스 서버가 실행되고 있는 컴퓨터 정보다. 위 명령에서 컴퓨터 정보는 주어지지 않았지만 실제로는 “-h” 옵션 뒤에 도메인네임 또는 IP 주소와 같은 컴퓨터 이름을 줄 수 있으며 이 옵션이 생략되면 “-h localhost”가 주어진 것과 동일하다. 따라서 위 명령은
mysql  -u  jsp  -p  -h localhost
와 같다.
둘 째 데이터베이스 서버로의 연결이 완료되면 다음 명령을 이용 사용하고자 하는 데이터베이스를 선택해야 한다.
use  jsp ;
이 명령은 MySQL 서버가 관리하고 있는 데이터베이스 중 “jsp” 를 사용하겠다는 의미이다. 만약 데이터베이스를 선택하지 않고 쿼리를 실행할 때 많은 경우 데이터베이스가 선택되지 않았다는 오류 메세지를 출력한다.
데이터베이스를 선택한 후에는
SELECT, INSERT, DELETE, UPDATE, CREATE, DROP, ALTER

 

등과 같은 한 각종 SQL 명령을 실행 데이터를 조작한다.
마지막으로 원하는 데이터조작이 완료됐으면 데이터베이스 클라이언트와 서버 사이의 연결은 끊는다. 이 처럼 연결, 데이터베이스 선택, 쿼리실행, 연결종료 네 단계 과정이 하나의 주기로 이루어진다. JSP 프로그램에서도 이와 같이 네 단계의 과정을 통해 데이터베이스와의 연동이 이루어진다. 그러면 간단한 회원가입 폼과 프로그램을 통해 JSP와 데이터베이스를 연동하는 방법을 살펴보자.
아래 “MemberJoin.html”은 가입을 위해 회원정보를 입력하는 HTML 폼이다.

 

<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<body>
<form action=”MemberJoin.jsp” method=”post”>
<table>
<tr>
<td>회원아이디</td>
<td><input type=”text” size=”10″ maxlength=”16″ name=”userid“></td>
</tr>
<tr>
<td>비밀번호</td>
<td>
<input type=”password” size=”10″ maxlength=”16″ name=”userpwd1“>
<input type=”password” size=”10″ maxlength=”16″ name=”userpwd2“>
</td>
</tr>
<tr>
<td>이름</td>
<td><input type=”text” size=”10″ maxlength=”20″ name=”username“></td>
</tr>
<tr>
<td>주민등록번호</td>
<td>
<input type=”text” size=”6″ maxlength=”6″ name=”jumin1“> –
<input type=”password” size=”7″ maxlength=”7″ name=”jumin2“>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<input type=”submit” value=”등록”>
<input type=”reset” value=”초기화”>
</td>
</tr>
</table>
</form>
</body>
</html>

사용자 삽입 이미지

MemberView.html 실행결과

 

이 폼에서 회원 정보를 입력받는 창의 이름을 기억하자. 이 폼에 입력된 정보는 “등록” 버튼을 클릭하면 아래 “MemberJoin.jsp” 프로그램으로 전달한다. 그러면 “MemberJoin.jsp”는 데이서베이스 서버와 연결, 데이터베이스 선택의 단계를 거쳐 입력된 정보를 데이터베이스 테이블에 저장하기 위한 쿼리를 실행한 다음 데이터베이스 서버와의 연결을 종료하면 된다. 그러면 각 단계별로 JSP에서 어떻게 처리하는지 살펴보자.

<%@ page language=”java” contentType=”text/html; charset=EUC-KR”
pageEncoding=”EUC-KR”%>
<%@ page import = “java.sql.*” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%request.setCharacterEncoding(“euc-kr”);String userId   = request.getParameter(“userid”);
String userPwd1 = request.getParameter(“userpwd1”);
String userPwd2 = request.getParameter(“userpwd2”);
String userName = request.getParameter(“username”);
String jumin1   = request.getParameter(“jumin1”);
String jumin2   = request.getParameter(“jumin2”);Class.forName(“com.mysql.jdbc.Driver“);Connection conn = null;
Statement  stmt = null;

String url = “jdbc:mysql://localhost:3306/jsp?user=jsp&password=your_password“;
String sql = “INSERT INTO members VALUES (‘”
+ userId +”‘, md5(‘”+ userPwd1 +”‘),'”+ userName +”‘,'”+ jumin1 +”‘,md5(‘”+ jumin2 +”‘))”;
System.out.print(sql);
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();
stmt.execute(sql);
stmt.close();
conn.close();
%>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<td>회원아이디</td>
<td><%= userId %></td>
</tr>
<tr>
<td>비밀번호</td>
<td><%= userPwd1 %></td>
</tr>
<tr>
<td>이름</td>
<td><%= userName %></td>
</tr>
<tr>
<td>주민등록번호</td>
<td><%= jumin1 %>-<%= jumin2 %></td>
</tr>
</table>
</body>
</html>

먼저 데이터베이스와의 연동을 위해 JDBC 드라이버를 로딩해야 한다. 드라이버의 로딩은 “Class.forName” 메소드를 이용한다. 프로그램에서 보면

Class.forName(“com.mysql.jdbc.Driver“);
부분이 드라이버를 로딩하는 부분이다. 이 메소드를 실행하기 위해 필요한 파라메터는 값은 드라이버를 다운로드 할 때 매뉴얼에 함께 제공되며, MySQL 드라이버의 경우 “com.mysql.jdbc.Driver” 이다. 드라이버가 성공적으로 로딩되어야 JSP와 데이터베이스와 연동 프로그램을 작성할 수 있다.
드라이버가 로딩 됐으면 “DriverManager.getConnection” 메소드를 이용 JSP와 데이터베이스 서버와의 연결을 실행한다. 이 메소드를 실행하기 위해 필요한 파라메터 역시 드라이버 배포시 매뉴얼에 함께 제공되며 드라이버 별로 고유한 패턴을 가지는데 MySQL의 경우 다음과 같은 형식을 가진다.
“jdbc:mysql://hostname:3306/databasename?user=userid&password=userpassword

 

이를 커넥션스트링이라 하는데 프로그램에서 사용된 커넥션스트링
jdbc:mysql://localhost:3306/jsp?user=jsp&password=your_password

 

를 살펴보면 “localhost”에 접속하라는 의미이며, 사용자 아이디는 “jsp”, 비밀번호는 “your_password” 그리고 사용하려는 데이터베이스는 “jsp” 임을 알 수 있다. “DriverManager.getConnection” 메소드에 의해 연결된 결과는 Connection 클래스 객체를 생성한 후 저장한다.
conn = DriverManager.getConnection(url);

 

데이터베이스 선택과 함께 서버와의 연결이 이루어지면 쿼리실행 단계에 들어간다. 이 프로그램은 회원가입을 위한 프로그램이므로 만약 입력된 회원정보가 입력 창에
hong
1234
12345
Hong Gil Dong
123456
7654321
순으로 입력 됐다면 다음과 같은 SQL을 만들어 실행하여 회원정보를 테이블에 저장해야 한다.
INSERT INTO members VALUES
(‘hong’, md5(‘1234’), ‘Hong Gil Dong’, ‘123456’, md5(‘7654321’))
위 SQL 에서 md5(‘1234’)와 md5(‘7654321’)은 ‘1234’, ‘7654321’을 암호화 알고리즘인 MD5 알고리즘을 사용하여 암호화 하라는 의미이다. 그러므로 members 테이블에 비밀번호와 주민등록번호 뒷 자리는 암호화되어 ‘1234’, ‘7654321’이 아닌 전혀 다른 값으로 저장된다. 프로그램에서 회원 정보는 “request.getParameter” 메소드를 이용 전달받으며,
“INSERT INTO members VALUES (‘”
+ userId +”‘, md5(‘”+ userPwd1 +”‘),'”+ userName +”‘,'”+ jumin1 +”‘,md5(‘”+ jumin2 +”‘))”

 

부분이 회원정보를 테이블에 저장하기위한 “INSERT” 문을 만드는 부분이다. JSP 프로그램에서 데이터 조작을 위한 SQL 문을 만든 후에는 Connection 객체의 메소드 “createStatement”를 이용 Statement 객체를 생성한 후 이 객체의 “execute” 메소드를 이용 쿼리를 실행한다.
stmt = conn.createStatement();
stmt.execute(sql);

 

쿼리 실행 후 모든 데이터 조작이 마무리되면 Statment 객체와 Connection 객체의 “close” 메소드를 이용 할당된 자원을 돌려주고 연결을 끊는다.
stmt.close();
conn.close();

 

사용자 삽입 이미지

MemberJoin.jsp 실행결과

다음 프로그램 “MemberView.jsp”는 “members” 테이블에 저장된 레코드를 출력하는 JSP 프로그램이다. 테이블 검색을 위해서 사용하는 SQL은 “SELECT” 문이다. “SELECT” 문은 “INSERT”, “DELETE”,”UPDATE” 문과는 달리 처리해야 하는 부분이 더 필요하다. “SELECT” 문을 실핼할 때도 서버연결, 데이터베이스 선택, 쿼리실행, 연결끊기의 네 단계가 필요하다. 그러나 “SELECT” 문의 경우 검색된 결과를 사용자에게 출력해야 하기 때문에 쿼리실행 후 검색된 레코드를 반복문을 통해 추출하고 출력하는 부분이 추가된다.

<%@ page language=”java” contentType=”text/html; charset=EUC-KR”
pageEncoding=”EUC-KR”%>
<%@ page import = “java.sql.*” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%
Class.forName(“com.mysql.jdbc.Driver”);Connection conn = null;
Statement  stmt = null;
ResultSet  rs = null;String url = “jdbc:mysql://localhost:3306/jsp?user=jsp&password=your_password”;
String sql = “SELECT userid, username, jumin1 FROM members”;
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();rs = stmt.executeQuery(sql);
%>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<body>
<%
while (rs.next()) {
%>
아이디 : <%= rs.getString(“userid”) %><br />
이름 : <%= rs.getString(“username”) %><br />
주민등록 : <%= rs.getString(“jumin1”) %><br />
<%
}
%>
</body>
</html>
<%
stmt.close();
conn.close();
%>

위 프로그램을 살펴보면 ResultSet 객체 rs를 선언하고 있다. 이 객체는 쿼리실행 단계에서 그 결과를 저장한다. 이 때 “SELECT” 문의 실행을 위해 stmt.execute가 아닌 stmt.executeQuery 메소드를 사용하고 있음에 주목하자. 저장된 결과는 ResultSet 형으로 검색된 모든 레코드를 가지고 있다. 여기서 각각의 레코드로 접근을 하기 위해서는 “next” 메소드를 이용한다. “next” 메소드가 호출되면 현 레코드에서 다음 레코드로 커서를 이동한다. 커서란 레코드를 가리키는 포인터를 의미한다. 만약 마지막 레코드인 경우 false를 돌려준다. 그러므로 반복문을 이용하면 모든 레코드를 읽을 수 있다.

현재 레코드에서 각 필드값을 얻기 위해서는 “rs.getString” 메소드를 사용한다. 파라메터로는 해당 테이블의 필드명을 준다. 다음은 “MemberView.jsp”를 실행한 결과이다.

사용자 삽입 이미지

MemberView.jsp 실행결과

 

출처는 여기!

Browser User Agent

http://chatii.tistory.com/75

정말 재밌게 정리해뒀다… ㅋㅋㅋ

아래는 전문

 

나는 당신의 브라우저를 알고 있다

우리가 사용하는 모든 브라우저는 고유의 User Agent, 또는 User Agent String이라고 불리는 것을 가지고 있습니다. 똑 부러지게 번역은 안 되지만, 일반적으로는 브라우저 정보라고 하거나 아니면 유저 에이전트, 사용자 에이전트라고 그대로 읽습니다. 이것은 어떤 웹 페이지에 접속했을 때 서버에게 브라우저의 종류와 버전, OS 등을 알려주는 역할을 하지요. 예를 들어 지금 이 페이지를 접속한 여러분의 User Agent String은 “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.28 (KHTML, like Gecko) Chrome/26.0.1397.2 Safari/537.28“입니다. 그런데 여기서 가장 앞에 있는 “Mozilla”의 의미는 무엇일까요? 나는 분명히 인터넷 익스플로러로 접속했는데 왜 “MSIE”가 아니라 “Mozilla”라고 나오는 것일까요? 브라우저 역사를 더듬어본다면 그 이유를 알 수 있습니다.


User Agent String의 역사(일명 삽질의 역사)

Mosaic 로고1993년, 최초의 그래픽 브라우저라고 불리는(실제로는 따로 있어요.) 모자이크가 세상에 등장했습니다. 이때 모자이크는 스스로를 “NCSA_Mosaic/2.0 (Windows 3.1)“이라고 불렀습니다.

NCSA_Mosaic/2.0 (Windows 3.1)

“나는 (Windows 3.1에서 구동되는) Mosaic 2.0이야!”

 

Netscape 로고1년 후 넷스케이프가 출시되었는데, 이는 자신을 “Mozilla/1.0 (Win3.1)“이라고 불렀습니다. 여기서 “Mozilla“는 넷스케이프의 코드명으로, Mosaic Killer라는 의미를 가지고 있습니다. 그리고 그 탁월한 기능 덕분에 넷스케이프는 실제로 이름값(Mosaic Killer)을 했지요.

Mozilla/1.0 (Win3.1)

“나는 Mozilla 1.0이야!”

 

IE 로고다시 1년이 지난 1995년에 MS에서는 인터넷 익스플로러(IE)를 내놓게 되는데, IE 스스로는 Netscape Killer가 되고 싶었습니다. 하지만 웹 마스터들이 듣보잡 IE를 익히기까지는 시간이 너무 많이 걸리기 때문에, MS는 변칙 전략을 사용합니다.  IE를 “Mozilla 호환 제품”으로 선포함으로써 넷스케이프를 사칭하는 것이었지요. 그래서 이름도 “Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)“라고 지었습니다.

Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

“나는 Mozilla 1.22야! (사실은 MSIE 2.0이지롱! ㅋㅋㅋ)”

이후의 전개는 삽질의 연속입니다. (눈이 아프면 그냥 넘어가도 괜찮아요.)

Firefox 로고파이어폭스는 “Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0“, 카미노는 “Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1“, 시몽키는 “Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0“, Safari 로고사파리는 “Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5“라고 자신을 불렀습니다. Opera 로고언제나 정직한 오페라는 좀 다르네요. “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51” 또는 “Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51” 또는 “Opera/9.51 (Windows NT 5.1; U; en)” 셋 중에 사용자가 선택할 수 있도록 했습니다.

Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

“나는 Mozilla 5.0이야! (사실은 Gecko 엔진을 사용하는 Firefox 1.0임. 속았지?)”

Opera/9.51 (Windows NT 5.1; U; en)

“나는 Opera 9.51이야!” – 이 얼마나 간결한가.


삽질의 절정, 구글 크롬(비하 의도는 없습니다)

Chrome 로고이렇게 삽질에 삽질을 거듭하다 보니 최근에 출시된 구글 크롬에 와서는 정말 가관입니다. 크롬 본인은 주장하길 “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13“이라고 하는데, 언뜻 봐서는 도저히 정체를 알 수가 없네요.

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

“나는 Chrome이라고 하는 뉴비인데 사실은 Safari랑 좀 비슷하고, 그리고 나는 WebKit 엔진을 사용하는데 뭐 KHTML 엔진이라고 봐도 좋고, 근데 KHTML 엔진은 또 Gecko 엔진인 척하고, 근데 또 Mozilla라고 불러도 되고, 어쩌고저쩌고.”
(결론은 WebKit 엔진을 사용하는 Chrome이란 뜻임.)

어때요? 정말 삽질이지 않나요?


좀 줄여라

비록 MS가 먼저 시작했지만, 그것을 탓하고자 하는 게 아닙니다. 이런 복잡한 User Agent String은 90년대 당시에는 필요 있었을지는 몰라도, 지금 와서는 아무런 쓸모가 없습니다. 오히려 개발자만 골탕 먹이고 있지요. 나중을 생각한다면 지금이라도 합의를 봐서 간략하게 줄이는 게 좋겠습니다.


그럼 마지막으로, 이제 여러분은 각자 브라우저의 User Agent String을 읽을 수 있게 되었나요? 그렇다면 저의 삽질도 참 보람될 텐데요. 🙂


출처 :  History of the browser user-agent string, by Aaron Andersen
관련 자료 : Part of the “user agent string” of many browsers, 위키백과

HTML Event List

이벤트 발생
onabort 이미지 로딩에서 이탈하였을 때(다른 연결로 이동)
onactivate 개체의 activeElement 속성을 설정하였을 때
onafterprint 관련된 문서를 인쇄하거나 인쇄 미리보기를 후 즉시
onafterupdate 데이터 원본이 있는 개체가 성공적으로 업데이트되면
onbeforeactivate 개체의 activeElement 속성이 설정되기 바로 전에
onbeforecopy 선택된 내용이 시스템 클립보드(clipboard)로 복사하기 바로 전에
onbeforecut 선택된 내용이 시스템 클립보드(clipboard)로 잘라내기 바로 전에
onbeforedeactivate activeElement가 다른 개체로 이동하기 바로 전에
onbeforeeditfocus 편집할 수 있는 용기 개체의 제어가 선택되기 바로 전에
onbeforepaste 시스템 클립보드로부터 데이터를 붙여넣기하기 바로 전에
onbeforeprint 관련된 문서를 인쇄하거나 인쇄 미리보기하기 바로 전에
onbeforeunload 페이지가 언로드되기 바로 전에
onbeforeupdate 연관된 데이터가 업데이트되기 바로 전에
onbegin 이벤트에서 시간이 시작되면 엘레멘트에 발생된다.
onblur 마우스나 탭에 의한 항해로 개체가 초점(포커스)을 상실 했을 때
onbounce 내용이 개체의 한쪽 한계선에 도달하였을 때
oncellchange 데이터 제공자에서 데이터의 내용이 변경되었을 때
onchange 입력폼의 필드 내용이 변경되고 초점을 상실했을 때 발생
onchange colorpick 비헤이버에서 색상이 변경되면 발생된다.
onclick 왼쪽 마우스가 개체 위를 클릭하였을 때
oncontentready 비헤이버 첨부된 엘레멘트의 내용이 파싱(parse) 완료되면 발생
oncontentsave 비헤이버 첨부된 엘레멘트의 내용이 저장이나 복사되기 전에 발생
oncontextmenu 사용자 지역에서 오른쪽 마우스를 클릭하였을 때
oncontrolselect 사용자가 개체의 제어(control) 선택들 하려고 할 때
oncopy 선택된 내용이 시스템 클립보드(clipboard)로 복사하기 하였을 때
oncut 선택된 내용이 시스템 클립보드(clipboard)로 잘라내기 하였을 때
ondataavailable 데이터 원천 개체로 부터 데이터가 도착하면 주기적으로 발생
ondatasetchanged 데이터 원천 개체의 변경에 의한 감지가 있을 때
ondatasetcomplete 데이터 원천 개체로부터 모든 데이터를 받아 사용할 수 있을 때
ondatasetcomplete dataselect 비헤이버가 select의 내용을 차지하였을 때 발행
ondblclick 마우스가 개체 위를 두번 클릭하였을 때
ondeactivate activeElement가 현재의 개체에서 다른 개체로 이동하였을 때
ondetach 엘레멘트에서 첨부된 비헤이버가 제거되기 바로전에 발생
ondocumentready 비헤이버를 포함하는 문서가 파싱(parse)을 완료되었을 때 발생
ondrag 마우스를 눌러 끄는 동안 계속해서 원본 개체에 발생
ondragdrop NS 화일등의 개체를 창에 드롭다운 시켰을 때
ondragend 마우스를 눌러 끄는 동안 계속해서 원본 개체에 발생
ondragenter 사용자가 드래그하는 개체를 유효한 목표 드롭에서 놓았을 때
ondragleave 드래그하는 마우스를 유효한 목표에서 놓지 않고 이탈했을 때
ondragover 유효한 목표 위에서 드래그하는 동안 연속적으로 발생
ondragstart 개체를 왼쪽 마우스를 누른 상태에서 드래그를 시작하면
ondrop 드래그드롭 작업 중 마우스단추를 놓았을 때
onend 엘레멘트에서 시간이 중지되면 발생
onerror 런다임 오류가 발생하였을 때
onerror 무효한 속성값을 할당하거나 읽기전용에 할당하면 발생
onerror 무효한 속성값을 할당하거나 읽기전용에 할당하면 발생
onerror 속성에 무효한 값을 할당하거나 읽기전용에 할당할 때 발생
onerrorupdate 관련된 데이터가 업데이트되는 동안에 오류가 발생되면 발생
onfilterchange 스타일 필터가 변경되거나 변환을 완료하면 발생
onfinish 마퀴(MARQUEE)의 루프가 완료되면 발생
onfocus 마우스나 탭에 의한 항해로개체에 초점(포커스)이 주어 졌을 때
onfocusin 엘레멘트가 초점을 받았을 때
onfocusout 엘레멘트가 초점을 잃었을 때
onhelp 활성 윈도우에서 도움말을 위하여 F1 키를 누르면 발생
onhide 메디어 플레이어가 감춰지면 발생된다.
onkeydown 키를 개체 위에서 눌렀을 때 발생
onkeypress 키(key)를 개체 위에서 눌렀다 놓았을 때 발생
onkeyup 키를 개체 위에서 놓았을 때 발생
onlayoutcomplete 채워넣기가 끝나고 인쇄하거나 인쇄미리보기를 실행하면 발생
onload 개체를 로딩이 다 되었을 때
onload 문서를 다시 로딩할 때 원래의 엘레멘트에서 발생
onlosecapture 마우스에 의한 캡쳐(capture)가 상실되었을 때 발생
onmediacomplete 메디어와 연관된 엘레멘트의 로딩이 완료되면 발생
onmediaerror 엘레멘트의 메디어 파일의 로딩이 실패되었을 때 발생
onmedialoadfailed (불량)엘레멘트의 메디어 파일의 로딩이 실패되었을 때 발생
onmousedown 마우스가 개체 위를 눌렀을 때 발생
onmouseenter 사용자가 마우스포인터로 개체 위에 들어갔을 때 발생
onmouseleave 마우스포인터가 개체의 범위 밖으로 이동하면 발생
onmousemove 마우스가 개체 위에서 이동하였을 때
onmouseout 마우스가 개체 위에서 이탈하였을 때
onmouseover 마우스가 개체 위로 이동하였을 때
onmouseup 마우스가 개체 위 누른 것을 해제하였을 때
onmousewheel 마우스 굴림단추가 개체 위에서 회전할 때 발생
onmove 사용자나 스크립트로 창의 위치를 이동하였을 때
onmoveend 편집할 수 있는 개체의 이동이 중지되었을 때 발생
onmovestart 개체를 이동하기 시작하면 발생
onopenstatechange 메디어바 플레이어의 열린 상태가 변경될 때 발생
onoutofsync 엘레렌트가 연관된 시간과의 동기성을 상실하면 발생
onpaste 시스템 클립보드(clipboard)로부터 데이터를 붙여넣기하였을 때
onpause 엘레멘트의 시간이 일시중지(pause)하면 발생
onplaystatechange 메디어바 플레이어에서 그 연주 상태가 변경되었을 때 발생
onpropertychange 개체의 속성을 변경하면 그 개체에 발생
onreadystatechange 개체의 상태(state)가 변경되면 발생된다.
onrepeat 시간이 엘레멘트에서 반복되거나 다음번 작동이 시작될 때 발생
onreset 입력폼이 리셋트(reset) 되었을 때
onreset 시간이 begin 값이 되거나 resetElement가 호출되면 발생
onresize 사용자나 스크립트로 창의 크기를 조절하였을 때
onresizeend 사용자가 제어 선택된 개체의 크기 변경을 완료하면 발생
onresizestart 사용자가 제어 선택된 개체의 크기를 변경하기 시작하면 발생
onresume 시간개체가 일시중지에서 다시시작으로 회복되면 발생
onreverse 엘레멘트에서 시간 개체가 뒤로 플레이되면 발생
onrowclick rowover 비헤이버에서 마우스 커서가 줄을 선택하면 발생
onrowenter 줄이 변경되고 개체에 새로운 값이 있음을 나타내기 위하여 발생
onrowexit 현재 줄을 변경하기의 위한 데이터 원천 제어 바로 전에 발생
onrowout rowover 비헤이버에서 마우스 커서가 줄에서 나가면 발생
onrowover rowover 비헤이버에서 마우스 커서가 줄에 들어오면 발생
onrowsdelete 리코드세트(recordset)에서 줄들이 삭제될 상황이 되면 발생
onrowsinserted 현재의 리코드세트에 새로운 줄들이 삽입된 직후에 발생
onsave 웹페이지가 저장, 북마크되거나 다른 페이지로 항해해 가면 발생
onscroll 스크롤되는 개체에서 스크롤 바의 위치를 변경하였을 때 발생
onseek 엘레멘트에서 탐색(seek) 작업이 수행되면 발생
onselect 입력폼에서 입력 필드에서 문자열을 선택(select)하였을 때
onselectionchange 문서의 선택된 부분의 상태가 변경되었을 때 발생
onselectstart 개체가 선택되기 시작하면 발생
onshow 메디어바 플레이어가 보이게 되면 발생된다.
onstart MARQUEE 개체에서 반복하는 각 루프가 시작될 때 발생
onstop 사용자가 중지 단추를 클릭하거나 웹 페이지를 닫을 때 발생한다
onsubmit 입력폼(form)이 송신(submit) 되었을 때
onsyncrestored 엘레멘트와 그 관련 시간 사이의 동기화가 회복되면 발생
ontimeerror 시간을 지정하는 오류가 일어나면 발생
ontrackchange ASX 파일에서 정의한 playList에서 트랙이 변경되면 발생된다.
onunload 사용자가 페이지에서 이탈했을 때
onurlflip +time t:MEDIA 태그에 의해 ASF 파일이 플레이되면 발생

이건 퍼온거긴한데…
왠지 거기도 퍼놓은거같은기분….
일단 출처는 남겨둔다..

 

The Grey (2012)

\"\"


어제 새벽에 할 것도 없고 해서 영화를 받아보았다. 리암 니슨 주연의 더 그레이. 예전에 홍보하던 걸로 듣기론 조난관련해서 그렇게 심오한 영화는 아닌 거 같아서 가벼운 마음으로 봤는데 이 영화에서 주는 내용은 꽤 깊다. 이 영화에서는 삶과 죽음에 관해서 진지한 이야기를 하고 있다.

\"\" 리암 니슨(오트웨이 역)은 알래스카의 석유 추출공과 작업자들을 야생동물로부터 보호하는 일을 하는 프로페셔널 가드로 그곳의 기상이 악화되어 일행들과 고향으로 가는 비행기에 탑승하게 된다. 그러나 비행기는 갑자기 설원 한복판으로 추락하게 되고 그 뒤 설원에서의 생존에 대한 내용을 이 영화에서 담고 있다.

\"\"

이 영화에서 전달하려는 메시지는 극 중 중간마다 나오는 오트웨이의 부인의 말인 \”두려워하지 마.\”라는 말이다. 부인은 왜 계속해서 그렇게 말한 것일까? 그에 대한 내용은 영화의 결말 부에 치달으면서 깨닫게 된다(물론 그전부터 복선이 많이 깔렸지만).

 

삶과 죽음은 말그대로 한끗차이다. 현재 내가 살아있다고 해서 몇시간 뒤가 어떻게 될 지 모르는 것이다. 그러면서도 삶에 대한 의지를 복돋아 주는건 바로 나를 알고 나를 지켜봐주고 나에대해 기대하는 사람들에게 실망감을 안겨주기 싫어서가 아닐까. 극중에서도 오트웨이 부인이 죽으면서 말한 \”두려워하지 마.\”는 죽음에대한 두려움과 자신이 없는 세상에서도 남편이 열심히 살아주길 바라는 마음에서 한 말일 것이라고 생각한다.

 

Once more time into the fray
(한번 더 싸워보세)

To the last good fight I\’ll ever know
(아는한 마지막이 될 폼나는 싸움을 해보세)

Live and die on this day
(오늘 살고 또 죽으세)

Live and die on this day
(오늘 살고 또 죽으세)

 

나는 문과도 아니고 뼛속부터 공돌이에 글쓰기는 제대로 배운 적도 없을뿐더러 주관이 뚜렷하거나 창의적인 것도 아니다. 그래도 글을 조금씩 쓰면서 말주변 좀 키우고 생각을 정리하면서 좋은 영향이 있을 거라 믿고 가끔 영화에 대한 리뷰를 써보려고 한다. 그리고 이런 기록도 남겨두면 나중엔 추억이 될 테니까.