IE8과 chrome에서 px로 사이즈를 잡아서 배치를 하면 일치하지 않는 경우가 존재한다.

나의 경우 chrome에서는 top:10px; 가 적당한데, IE8에서는 top:3px; 가 적당한 값이었다.

적정선에서 타협할 수 있는 차이면 괜찮겠지만 너무 눈에 딱 보이는 부분이라 따로 적용을 할 수 밖에 없었다.


class명이 .basic-btn 일 경우 아래와 같이 적용하면 IE8의 top은 3px, 그 외의 브라우저에는 10px로 적용할 수 있다.

.basic-btn {top:10px; top:3px\0/ !important!; /*IE8에서만 top:3px; 적용*/}


원하는 속성 뒤에 '\0/ !important'를 붙여주면 간단히 해결 할 수 있다.



오늘 받은 구몬 일본어.

2주차 교재를 받았다.



시작 전에 히라가나 다 외웠는지 확인 한 노트.

히라가나 쓰기 노트의 한 부분에 히라가나를 모두 적었다.

느리고 아직 헷갈리는 부분도 많고, 게다가 글자도 안이쁘지만 기본 히라가나는 다 외웠다.


히라가나를 다 외워서 다음주부터는 문법(A단계)을 시작하자고 하시고,

단어는 다음 교재에서 나오는 것과 히라가나 쓰기 노트 마지막에 정리되어있는 걸로 외우자고 하셨다.

다만 탁음과 반탁음 교재는 혼자 하라고 주신다고 하셨다.

사실 아직 더듬거리고, 읽기도 느리지만 게다가 단어만 읽지 문장은 읽지도 못하는데.

(2주차에 많은걸 바라는 것도 이상하지만.)

괜찮을까싶기도하지만.


히라가나를 더 열심히 외워놔야지.


그리고 저번주 교재에 있던 단어 확인하고, 이번주 단어 읽어보고.

수업은 끝.


이번주에는 단어 뒤에 '오 미마스'라고 '~을 봅니다'라는 문장이 하나 포함되어있긴하다.


언능 스마트 펜이 와야지 제대로된 발음과 억양을 익힐텐데.

다음주에는 올 것 같다는데. 빨리 왔으면 좋겠네.

하루만에 다 올리는 학습 일지.

일주일에 한번씩 올려서 열심히 해봐야겠다.


오늘은 3A 교재와 히라카나, 가타카나 단어 카드, CD를 가져오셨다.

설명을 해주고, 히라가나를 좀 외웠다니까 적어보라고 하셔서 적은 첫장의 흔적.

그리고는 교재에 단어를 읽어봤다.

물론 무슨 단어인지는 모르고 히라가나만으로 읽었다.


다음주에는 교재에 단어를 자연스럽게 읽을 수 있는지 확인한다고 하셨다.

적는건 아직 잘 못해도 괜찮다고.

천천히 꾸준히 외워가야지.



진도과정이다.

외워야할게 참 많네.

아직 정음도 다 못외웠는데.


카드도 주셨다 낄낄.

이거는 들고다니면서 봐도 되기는한데, 과연 내가 들고다닐지는....

그래도 집에서 들고다니면서 보기에도 괜찮기는 한듯.

음마다 단어가 하나씩 있어서 여기있는 단어도 열심히 외워야지.

물론 걸음마 수준의 단어들이겠지만.


3A 교재 CD.

들을 수 없는 너.

집에  CD플레이어가 있던가 모르겠다.


오늘의 수준은 하행까지는 그럭저럭 쓸 수준이라는거.

늘 일본어를 공부하다가 히라가나도 다 외우지 못하고 이래서 저래서 하지 못했다.

그래서 결국은 선택한게 구몬 일본어 학습지.

진도가 천천히 나가니까 회사를 다니며 꾸준히 하기에 딱 좋을 것 같아 선택했다.


구몬 사이트(http://www.kumon.co.kr/)에서 무료상담신청에 글을 올려 우리 동네 담당 선생님께서 연락이 와서 금요일 밤 10시 집에서 보기로하고,

운동을 마치고 와서 기다렸다.


중학교때는 선택사항 없이 제2외국어로 중국어를 하고, 고등학교때는 그래도 한 번이라도 본 게 낫겠지라는 생각에 제2외국어를 중국어로 했었다.

물론 지금은 중국어도 기억이 나지 않지만... 일본어는 아예 접할 기회가 없었다.


선생님께 히라가나도 모른다고 말을 했고, 선생님이 설명을 해주러 오시면서 히라가나 쓰기 노트와 하루의 하루라는 책을 들고오셨다.

수업에 대한 설명도 듣고, 현재 일본어의 경우 한달에 31,000원인데 1년 약정을 걸고, 스마트펜을 구매하면 34,000원에 할 수 있다고 했다.

그럼 99,000원짜리 스마트 펜을 36,000원으로 1년동안 나눠서 내게되는 거라고 했다.

사실 할때마다 컴퓨터를 켤 수도 없고, 거기다가 내 컴퓨터는 CD를 넣을 수 없다(...) 홈페이지에서 음성 파일을 다운 받을 수 있는지는 모르겠지만,

그래도 자주 들으면서해야 익힐 수 있다는 생각에 34,000원 1년 약정을 하기로 했다.

어차피 개인적인 목표를 달성하려면 1년으로 되지도 않는기간이기에.


아래는 선생님이 주고가신 책.


히리가나를 써볼 수 있게 되어있다.

처음 글을 배울때, 글씨체를 이쁘게 해야 할텐데.


하루의 하루라는데, 이건 내가 읽기엔 시간이 꽤 걸리지 않을까 싶다.


script에서 작성한 내용 중

$('#id').val().trim(); 

해당 부분이 IE8에서 작동이 되지 않는 것을 확인했다 문제는 다름아닌 trim()

IE8 이하 버전에서는 trim()이 사용이 되지 않는다.


trim()을 사용하기 위한 방법을 찾아보니 두가지 방법이 나왔다.


첫번째 방법은 javascript를 이용하여 사용하는 방법으로 아래와 같이 함수형식으로 사용하는 것이다.

if(typeof String.prototype.trim !== 'function') {

    String.prototype.trim = function() {

        return this.replace(/^\s+|\s+$/g, '');

    };

}


두번째 방법은 jQuery를 이용한 방법으로, 기존 소스에서 jQuery를 사용하고 있었기에 개인적으로 아래와 같은 방법을 이용하여 변경하였다.

$.trim($('#id').val());



라디오 버튼을 이용하여 DIV를 각각 활성화 시켜서 사용하는 함수를 간단히 작성하면 아래와 같다.


- HTML

<input type="radio" name="tp_cd" value="1" checked="checked"> 1번

<input type="radio" name="tp_cd" value="2" > 2번


<div id="POP1"><p>POP1의 영역이 보임</p></div>

<div id="POP2" style="display: none;"><p>POP2의 영역이 보임</p></div>


- jquery

$('input[type=radio][name=tp_cd]').on('click', function() {

var chkValue = $('input[type=radio][name=tp_cd]:checked').val();


if (chkValue == '1') {

$('#POP1').css('display', 'block');

$('#POP2').css('display', 'none');

return false;

} else if (chkValue == '2') {

$('#POP1').css('display', 'none');

$('#POP2').css('display', 'block');

return false;

}

});


위와 같은 방법으로 작성하면 된다.

jquery는 css에 display: none; 일 경우 화면에서 보여지지 않고, display: block; 일 경우 화면에 보여지는 것을 이용한 것이다.

POP2의 영역이 처음부터 노출되는 것을 막기 위해서는 HTML에서 스타일을 주면 된다.


함수 안에 return false;를 입력하게 되면 2번을 선택하더라도 기존에 체크되어있던 라디오버튼 1번에 계속 체크가 되어있다. (DIV는 POP2가 보이게된다.)

이를 해결하기 위해서는 간단하게 return false; 를 지우면 된다.

게시판을 만들다보면 게시글 제목이 너무 길어 생략이 필요한 경우가 있다.

이 경우 CSS로 간단하게 해결할 수 있다.


table {

table-layout: fixed;

}


td {

text-overflow: ellipsis;

white-space: nowrap;

overflow: hidden;

}


위의 내용은 table과 td에 모두 적용이 되지만 class로 지정하여 사용하면 원하는 부분에만 사용이 가능하다.



MySQL을 외부 IP에서 접속할 수 있도록 하기 위해서는 설정이 필요하다.

아래에 각각 모든 IP에서 접속 / 특정 IP에서 접속 / 원래상태로 복구하는 방법에 대한 정리를 하도록 하겠다.


1. 모든 IP에서 접속

use mysql;

INSERT INTO mysql.user(host, user, password) VALUES('%', 'root', password('패스워드'));

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;

기본적으로 위의 내용을 차례대로 입력할 경우 root라는 계정으로 접속할 경우 모든 외부 IP에서 접속이 가능하다.

하지만 MySQL의 버전에 높아지면서 위의 내용을 입력할 경우 보안 관련 오류가 발생할 수 있다.

이 경우 오류 메세지는 두 가지가 발생할 수 있는데 각각 아래의 두 가지의 방법으로 해결이 가능하다.


- ERROR 1364(HY000): Field 'ssl_cipheer' doesn't have a default value 

use mysql;

INSERT INTO mysql.user(host, user, password, ssl_cipher, x509_issuer, x509_subject) VALUES('%', 'root', password('패스워드'), '', '', '');

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;


- ERROR 1364(HY000): Field 'authentication_string' doesn't have a default value 

use mysql;

INSERT INTO mysql.user(host, user, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES('%', 'root', password('패스워드'), '', '', '');

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;

참고로 authentication_string로 password를 변경한 경우 VALUES에서 password('패스워드')에 변경이 일어나지 않는다.




2. 특정 IP에서 접속

  이 경우에는 VALUES에서 HOST값을 변경하면 된다. 아래의 예제는 111.222.xxx.xxx의 IP에 접속이 가능하며 한 IP만 접속이 가능하게 하려면 해당 IP를 정확히 적어주면 된다.

use mysql;

INSERT INTO mysql.user(host, user, password) VALUES('111.222.%', 'root', password('패스워드'));

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;




2. 원래 상태로 복구

  외부에서 접속하지 못하도록 하기 위해서는 입력한 내용을 아래와 같이 삭제하면 된다.

use mysql;

DELETE FROM mysql.user WHERE HOST = '%' AND User = 'root';

FLUSH PRIVILEGES;



jsp에서 form을 이용하여 화면간의 이동을 하면서 변수를 넘길 때, 유용하게 사용하는 형식은 대부분

int num = Integer.parseInt(request.getParameter("num"));

String result = request.getParameter("result");

위와 같은 형태이다.


하지만 파일과 같은 이유 때문에 아래와 같은 형태로 사용을 하게 된다면 request를 이용하여 데이터를 받아오는 것은 불가능하다.

<form id="Frm" action="" method="post" enctype="multipart/form-data">

...

</form>

이때는, MultipartRequest multi = new MultipartRequest(request, savePath, maxSize, "UTF-8", new DefaultFileRenamePolicy()); 를 이용하여

request 대신 multi를 이용하여 받아오는데, 


상황에 따라 request를 이용해야할 경우가 발생한다. 이때 javascript에서

function fn_check() {

Frm.encoding="application/x-www-form-urlencoded";

Frm.action="./action.jsp";

Frm.submit();

}

위와 같은 형태로 form의 encoding을 변경하여 사용할 수 있다.




쓸 때마다 기억이 제대로 나지 않아서 찾아보는 내용이다.

개인적으로 자주 쓸 일이 없기도 하고, 기억력이 좋지 않기도 하고...


PrintWriter out=response.getWriter();


response.setContentType("text/html; charset=utf-8");

out.println("<script language='javascript'>");

out.println("alert('쓰고 싶은 내용을 쓰자');");

out.println("</script>");

out.flush();


다음에 또 이 내용을 찾는다고 시간을 날리지 않길 바라며.


+ Recent posts