JavaScript - 이벤트

Posted by ironmask84
2015. 7. 28. 11:21 나는 프로그래머다!/HTML5


<!DOCTYPE html>
<html>
<body>
<input type="button" onclick="alert(window.location)" value="alert(window.href)" />
<input type="button" onclick="window.open('bom.html')" value="window.open('bom.html')" />
</body>
</html>


event target
->target은 이벤트가 일어날 객체를 의미한다.

event type
->이벤트의 종류를 의미한다.
   (
https://developer.mozilla.org/en-US/docs/Web/Reference/Events)

event handler
-> 이벤트가 발생했을 때 동작하는 코드를 의미한다. 
    위의 예제에서는 alert(window.location)이 여기에 해당한다.

출처 : https://opentutorials.org/module/904/6629


** 이벤트 등록방법

1. inline : 이벤트를 이벤트 대상의 태그 속성으로 지정하는 것이다.
<input type="button" onclick="alert('Hello world');" value="button" /> <input type="button" onclick="alert('Hello world, '+this.value);" value="button" />

2. property listener : 
이벤트 대상에 해당하는 객체의 프로퍼티로 이벤트를 등록하는 방식
event 객체에는 여러가지 정보가 담겨있다!!(console.dir(event); 확인)

<body>
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(event){
alert('Hello world, '+event.target.value)
}
</script>

// I.E 8이하 버젼 호환을 위해서는 아래와 같이 추가 예외처리 필요

<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.onclick = function(event){
var event = event || window.event;
var target = event.target || event.srcElement;
alert('Hello world, '+target.value)
}
</script>


3. addEventListener() :
가장 권장하는 방식. 한 target에 여러 이벤트 등록 혹은 정의해 놓은 한 이벤트 핸들러를 여러 객체에 등록할 수 있다.


var t = document.getElementById('target');
if(t.addEventListener){
t.addEventListener('click', function(event){
alert('Hello world, '+event.target.value);
});
} else if(t.attachEvent){    // I.E 8이하 버젼의 호환을 위해..
t.attachEvent('onclick', function(event){
alert('Hello world, '+event.target.value);
})
}
// 한 target에 여러 이벤트를 등록
<input type="button" id="target" value="button" />
<script>
var t = document.getElementById('target');
t.addEventListener('click', function(event){
alert(1);
});
t.addEventListener('click', function(event){
alert(2);
});
</script
// 하나의 리스너로 여러 target에 적용
<input type="button" id="target1" value="button1" />
<input type="button" id="target2" value="button2" />
<script>
var t1 = document.getElementById('target1');
var t2 = document.getElementById('target2');
function btn_listener(event){
switch(event.target.id){
case 'target1':
alert(1);
break;
case 'target2':
alert(2);
break;
}
}
t1.addEventListener('click', btn_listener);
t2.addEventListener('click', btn_listener);
</script>

출처
https://opentutorials.org/module/904/6759
https://opentutorials.org/module/904/6760
https://opentutorials.org/module/904/6761

 

홍콩&마카오 여행 첫 업뎃!

Posted by ironmask84
2015. 7. 23. 00:59 해외여행/홍콩&마카오 - 2013


여행 다녀온지 2년이 넘었지만, 이제서야 첫 업뎃 ㅠㅠ

이번 캄보디아 여행 준비하면서..

익스피디아 에서 숙소 예약한 것이 생각났다!!

이번 캄보디아 여행 숙소도 익스피디아로 할까 생각중!!

호텔은 홍콩 도심 중심이었는데, 정확한 위치는 가물가물.. 차차 다시 확인해보기로 하고,
지금 봐도 꽤 숙박료가 비싸네 ㅋㅋ 
그래도 꽤나 쾌적해던 걸로 기억함.

차차 업뎃하기로 하고 오늘은 숙소 정보 사진 한장 올림 :)



 

JavaScript에서의 객체와 객체지향

Posted by ironmask84
2015. 7. 22. 15:47 나는 프로그래머다!/HTML5


기본적으로 배열이 0,1,2 ... 와 같이 숫자를 인덱스로 해서 값을 담아내는 그릇이라고 하면,
JavaScript에서의 객체는 이 인덱스가 숫자도 가능하지만, 문자로도 가능한 점이 특징이다.

따라서, 타 프로그래밍 언어에서는 연관배열(associative array) 또는 맵( map), 딕셔너리(Dictionary)라는 데이터 타입이 객체에 해당한다.

ex)

var val1 = {};    // {}; 의 표현이 객체 생성이다.  []; 표현은 배열!

val1.val1 = 'ironmask';
val1.ironmask = 100;
val1['iromask2'] = 90;
==> Object {val1: "ironmask", ironmask: 100, ironmask2: 90}

==> val1['val1'] 은 "ironmask" 를 리턴
      val1['va'+'l1'] 과 같은 표현도 가능
      val.val1 과 같이도 사용 가능
===> 따라서, 'val1' 을 key라고 하고, 값을 value 로 부르는 경우가 많다.

한번에 값들을 정의하는 경우
// 이렇게 객체 내에 속성과 메소드를 그룹화해서 사용가능하므로, 이것이 JavaScript의 객체지향
var val1 = {
       'list' : {'ironmask' : 100, 'LG' : 90, 'Samsung' : 80}
      
'show' : function() {
                  alert("hello world");

        }

}

val1['show']();  // 함수는 이렇게 사용

* Tip 

for(var key in val1) {    // for in 문이라고 한다. (배열에서도 동일하게 사용 가능)
console.log(val1[key]);   // key를 순회하면서, key에 대응하는 값들을 찍어준다.
}

 

JavaScript의 함수!!

Posted by ironmask84
2015. 7. 21. 15:26 나는 프로그래머다!/HTML5


그 동안, C, JAVA가 주력 언어였고..
C++도 학부시절에 기본 A~Z 까지는 배웠기에,
어느정도 절차적, 객체지향에 대해 개념이 있다고 생각해왔습니다만..

이번에 HTML5 를 접하게 되면서, 학부 때 잠깐 접한 JavaScript를 공부 중인데,
아직 적응이 안되고 있는 중 임요....

기존 알고 지낸 프로그래밍 언어의 함수의 용도는 동일하나,
쓰임새가 너무 자유자재라..
정리를 위해 아래 몇몇 Case를 올립니다.
(출처 : https://opentutorials.org/module/532/6508  참조)

1. 변수 Case
1) function a(){}
2) a = {

b:function(){    <-- 객체내에('a'라는 객체) 있는 함수는 메소드라고 부른다.
}
};

2. 매개변수 Case

function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
alert(cal(increase, 1));
alert(cal(decrease, 1));


3. 리턴 값 Case

function cal(mode){
var funcs = {
'plus' : function(left, right){return left + right},
'minus' : function(left, right){return left - right}
}
return funcs[mode];
}
alert(cal('plus')(2,1));
alert(cal('minus')(2,1));


4. 배열 Case

var process = [
function(input){ return input + 10;},
function(input){ return input * input;},
function(input){ return input / 2;}
];
var input = 1;
for(var i = 0; i < process.length; i++){
input = process[i](input);
}
alert(input);



 

JavaScript 재귀함수 예시

Posted by ironmask84
2015. 7. 20. 14:39 나는 프로그래머다!/HTML5



<!DOCTYPE html>
<html>
<body id="start">
<ul>
    <li><a href="./532">html</a></li>
    <li><a href="./533">css</a></li>
    <li><a href="./534">JavaScript</a>
        <ul>
            <li><a href="./535">JavaScript Core</a></li>
            <li><a href="./536">DOM</a></li>
            <li><a href="./537">BOM</a></li>
        </ul>
    </li>
</ul>
<script>
function traverse(target, callback){
    if(target.nodeType === 1){        // ===으로 사용하는 것 주의 nodeType이 1이면, Element Node 이다.
                                                 // (http://ironmask84.net/admin/entry/post/?id=214 참고)
        //if(target.nodeName === 'A')    // a 태그만 추출
        callback(target);
        var c = target.childNodes;
        for(var i=0; i<c.length; i++){
            traverse(c[i], callback);       // 재귀함수 호출
        }  
    }
}
traverse(document.getElementById('start'), function(elem){
    console.log(elem);
});
</script>
</body>
</html>


 

jQuery 와 Element 객체와 Node 객체

Posted by ironmask84
2015. 7. 16. 10:09 나는 프로그래머다!/HTML5




그림 : http://web.stanford.edu/class/cs98si/slides/the-document-object-model.html

Element객체와 jQuery

document.getElementById : return type은 HTMLLIELement
document.getElementsByTagName : return type은 HTMLCollection (유사배열)
-> 실행결과가 하나인 경우 HTMLLIELement, 복수인 경우 HTMLCollection return
constructor 혹은 constructor.name 로 확인 가능

var li = document.getElementsByTagName('li');
var li2 = $(li);
위와같이 jQuery function 인 $(); 로 둘러싸면, return type이 jQuery 가 되지만,
복수일 경우 유사배열로 잡히며, li2[0], li2[1]... 각각은 HTMLLIELement 타입이 된다.
-> l1.constructor.name, li2.constructor.name, li2[0].constructor.name  로 확인 가능

document.getElementById('target').getAttribute(name);
==> ==> $('#target').attr(name);
document.getElementById('target').setAttribute(name, value) ;
==> $('#target').attr(name, value);

document.getElementById('target').hasAttribute(name);

document.getElementById('target').removeAttribute(name);
==> $('#target').removeattr(name);


Node 객체

Node.childNodes : 자식노드들을 유사배열에 담아서 리턴한다.
Node.firstChild : 첫번째 자식노드
Node.lastChild : 마지막 자식노드
Node.nextSibling : 다음 형제 노드
Node.previousSibling : 이전 형제 노드

** Node 와 Node.nextSibling.previousSibling는 같다.  (이런 식으로 Chaining 식으로 사용 가능)

Node.nodeType node의 타입을 의미한다.
Node.nodeName node의 이름 (태그명을 의미한다.)


** 2015_08_28 추가!

querySelector() 이용 시, 태그의 class 속성 접근 시 매우 편리

this.calls.querySelector('.handled-call.incoming .additionalContactInfo');
위와 같은 방식으로 calls라는 변수(어느 태그값을 가져온 변수 document.getElementById 등 이용) 하위에
태그들 중 
handled-call.incoming 클래스를 가진 녀석의 하위에 있는 녀석들 중 additionalContactInfo 클래스를 가진 녀석이 리턴된다.

'나는 프로그래머다! > HTML5' 카테고리의 다른 글

JavaScript - 이벤트 응용1 (버블링과 캡쳐링)  (0) 2015.07.28
JavaScript - 이벤트  (0) 2015.07.28
JavaScript에서의 객체와 객체지향  (0) 2015.07.22
JavaScript의 함수!!  (0) 2015.07.21
JavaScript 재귀함수 예시  (0) 2015.07.20
Attribute와 Property  (0) 2015.07.14
DOM Tree  (0) 2015.07.13
JQuery 초 간단 이해  (0) 2015.07.10
SublimeText2  (0) 2015.06.19
HTML 과 JavaScript 기본 참고 사이트  (0) 2015.06.19
 

Attribute와 Property

Posted by ironmask84
2015. 7. 14. 16:13 나는 프로그래머다!/HTML5


attribute(HTML의 속성) VS property(JavaScript의 속성)

$().attr(jQuery를 통해 attribute 제어) VS $().prop(jQuery를 통해 property 제어)
=> setAttribute(), getAttribute == $().attr
   removeAttribute() == $().removeAttr

* property 방식을 사용하는 것이 더 속도가 빠르다고 한다.
* 그렇다면, property를 사용하는 것이 더 장점이 있다는 뜻인데..

  하지만, attr에서 사용하는 이름과 약간 다른 부분이 있는 문제가 있다.

  이를 jQuery에서는 교정해주는 아주 훌륭한 기능이 있다.
  즉, 아래 둘다 같은 결과를 리턴하게 된다.
  $('#t1').prop('className', 'important'); // className는 property 방식
  $('#t1').prop('class', 'important');     // class는 attribute 방식

'나는 프로그래머다! > HTML5' 카테고리의 다른 글

JavaScript - 이벤트 응용1 (버블링과 캡쳐링)  (0) 2015.07.28
JavaScript - 이벤트  (0) 2015.07.28
JavaScript에서의 객체와 객체지향  (0) 2015.07.22
JavaScript의 함수!!  (0) 2015.07.21
JavaScript 재귀함수 예시  (0) 2015.07.20
jQuery 와 Element 객체와 Node 객체  (0) 2015.07.16
DOM Tree  (0) 2015.07.13
JQuery 초 간단 이해  (0) 2015.07.10
SublimeText2  (0) 2015.06.19
HTML 과 JavaScript 기본 참고 사이트  (0) 2015.06.19
 

삼성물산과 제일모직의 합병 (뉴삼성물산 ㅡㅡ)

Posted by ironmask84
2015. 7. 14. 15:54 생각과 일상/사회이슈 및 생각


나는 요즘 화두가 되고 있는 삼성물산과 제일모직의 합병에 관심을 많이 가지고 있다..

합병의 거대한 시너지가 목적이 아니라, 삼성그룹의 안정적인 승계를 위해 억지스런 합병을 진행하려한다고 맹비난하는 이들도 적지 않으며 좋지않게 보이기는 나도 마찬가지다.

제일모직의 지분을 많이 가지고 있는 이재용 씨가 삼성물산과 합병을 통해 삼성물산이 가지고 있는 삼성전자 4%등의 지분이 손아귀에 들어오게 되면, 삼성그룹의 왕으로 군림할 수 있다는 취지인 것 같다.

정식으로 재산 상속을 하게되면, 얼마만큼의 세금을 내야 하기에 이토록 많은 소액주주들의 반대에도 불구하고, 거행하려는 것일까..  미국의 대표적 재벌 빌게이츠나 워렌버핏과 비교했을 때 사회에 환원하는 정도가 부끄럽지 아니한가..

ISS 라는 가장 권위있는 국제 자문기관에서도 합병이 부당하다는 공지를 냈음에도,
현재 추세로 봤을 때, 정부 및 공공기관은 대한민국의 막강 대기업 삼성쪽에 손을 들어주는 것 같아 보이며, 이에 따라 언론은 당연히? 일방적인 삼성편을 들고 있어 보인다. 엘리엇이라는 미국의 헤지펀드사가 많은 지분을 가지고 반대편에 나섰으며, 이에 국내의 많은 소액주주들이 위임중에 있다.
다만, 타 외국세력의 움직임이 아직 미지수이다..

몇 일 전에 '수박합병' 이라는 우스광스런 말이 떠돌고 있다..
이것이 무엇이냐 하면, 삼성물산에서 직원들을 풀어서 삼성물산 주식을 한 1000주 이상 쯤 가지고 있는
소액주주들을 대상으로 한 손엔 수박을 들고 한 손엔 위임장을 가지고 가정집 방문하여, 합병찬성을 권유하고 있는 것이다..  이것만 봐도 삼성이 합병을 위해 얼마나 사활을 걸고 있느냐를 알 수 있다...

더욱 놀라운 것은....
오늘 포털사이트 네이버 메인 화면에서 왼쪽 중간쯤에 위치한 배너광고다....

아래에 몇몇의 내용이 있다.
과연 0.35 : 1 의 합병비율과 같은 비율의 주가를 기준으로 합병일에 딱 맞춰질까??

주식매수청구권은 굳이 이번 주주총회에서 반대 의결권을 표명하지 않아도
즉, 기권을 하여도 행사할 수 있다는 언급을 통해 반대표를 저지하고 있어 보인다.

7/17에 있을 주주총회의 결과와 함께 앞으로의 삼성물산 행방이 아주 흥미롭게 다가온다..
삼성이 이번 기회를 통해 사회에도 많은 환원도 하며,
국민들에게 사랑 받는, 국민대표기업이 되는 발걸음의 시작이 되길 바란다.

나 또한 삼성물산의 주주이며,
아직 중립에 있는 처지이지만, 수 많은 소액주주들을 응원합니다.


네이버 메인 배너 


삼성물산 합병관련 내용





 

DOM Tree

Posted by ironmask84
2015. 7. 13. 11:24 나는 프로그래머다!/HTML5


DOM Tree는 아래와 같다.


그림 : http://web.stanford.edu/class/cs98si/slides/the-document-object-model.html


ex) HTMLLIElement : http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-74680021

* jQuery를 이용하면, 이러한 관계를 잘 몰라도 JavaScript 코딩이 수월하다.

즉, document.getElementById('ironmask').tagName 는 HTMLLIElement라는 객체를 반환합니다.
위 상수를 $()로 둘러싸게 되면, Jquery 타입을 갖게 됩니다.
아래처럼 대입해놓고, constructor 속성을 찍어보면 확연히 확인 가능합니다.


var sample = document.getElementById('ironmask').tagName
var j_sample = $(document.getElementById('ironmask').tagName)
console.log(sample.constructor)

 

캄보디아 준비

Posted by ironmask84
2015. 7. 12. 17:53 해외여행/캄보디아 - 2015


1. 항공권




2. 예방접종

http://blog.naver.com/cyh266/220292412710
-> 황열병 접종, 파상풍 접종, 말라리아 약 처방, 장티푸스 접종, (A형간염, B형간염은 항체가 있으므로 패스)
     여친 풍진은 덤..
     -> 황열병 접종은, 인도차이나 4개국을 방문하기 6일 이내 황열병이 도는 나라를 방문한 경우 예방접종 증명서가 필요하며, 아프리카 및 남미 대륙에서 오는 경우가 이에 해당합니다. (또한 반대로, 아프리카 및 남미 대륙으로 입국하는 경우 해당국가에서 황열예방 증명서를 요구하기도 합니다.) 국내에서 출국하는 자의 경우 해당되지 않습니다.

결국, 보건소 방문 - 장티푸스 접종 무료, 말라리아 약 처방(4000원) + 약 값 (43000원)


3. 숙소





4. 가이드비용

첫째날 : 반데이스라이 + 톤레삽 호수 투어 (가이드 + 차량) 1인당 60달러
둘째날 : 앙코르와트, 앙코르톰, 따프롬 등 중요유적 (가이드 + 툭툭이) 2인해서 65달러, 1인당 32.5달러
셋째날 : 프놈꿀렌 + 뱅밀리아 (차량 + 기사) 2인해서 85달러, 1인당 42.5달러

==> 60 + 32.5 + 42.5 = 1인당 135달러

5. 공연 + 마사지 + 식비 + 기념품

6. 준비물
-> 옷/속옷, 냉장고바지, 샌달, 운동화, 여권, 비자용 사진, 휴대폰, 작은 가방, 캐리어, 모자, 수영복, 휴지/물티슈, 상비약(감기, 소화제, 후시딘 등), 1회용 마스크, 썬크림, 썬글라스, 모기기피제, 모기약, 두건, 손수건, 우의, 우산, 세면도구


http://dytlcmzl720.blog.me/220387837107

캄보디아 비자 : 공항이나 국경에 도착해서 발급하는 도착비자이며, 관광비자 30일은 30$, 15일은 25$

환전 : http://rage0524.blog.me/110189887863  
       (김해공항 외환은행 인터넷환전 최대 90% 우대, 서울역과 동급)

여행자 보험 : 

네이버 까페지기 블로그 : http://blog.naver.com/penink8

태사랑 : http://www.thailove.net/

소피악 (렌트 및 가이드 전문) : http://blog.naver.com/ssp_2011
소피악 후기 -> http://thailove.net/bbs/board.php?bo_table=cam_tuktuk&wr_id=4383&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%EC%86%8C%ED%94%BC%EC%95%85&sop=and

여행 후기 : http://blog.naver.com/park968444/220309965272
http://blog.naver.com/mizi0216/220295250085
http://blog.naver.com/shenaneco/220402810726
http://younggenius.blog.me/30182593422

SIM Card
1) cell card
http://t-eng.tistory.com/129
http://t-eng.tistory.com/173
http://blog.naver.com/ifollowhim/80207269710

==================== 여행 다녀온 후

7. 총 정산
49,000 (광명->부산 행은 친구가 대신 줌) + 항공권 383,400 / 2 +  호텔 95,238 / 2 + 말라리아 약 47,000 / 2 +
보험 12,000 = 324,200 원

400 달러 모두 소진 ㅋㅋ => 47만 정도 (유적 입장료, 관광료, 식비, 기념품)

324,200 + 470,000 = 794,200원

약 80만원 정도로 캄보디아 3박 5일 여행 끝~~~


 

JQuery 초 간단 이해

Posted by ironmask84
2015. 7. 10. 08:55 나는 프로그래머다!/HTML5


jQuery는 JavaScript에서 사용되는 편리하고 강력한 라이브러리 입니다.

자세한 내용은 아래 링크를 참고 하시면 됩니다. :)
-> http://jquery.com

* jQuery의 API 참고
->
https://api.jquery.com

jQuery를 이용하면 DOM을 사용하는 것 보다 훨씬 효율적으로 필요한 객체를 조회할 수 있고,
jQuery는 객체를 조회할 때 CSS 선택자를 이용합니다.


jQuery 라이브러리 사용 (jQuery’s CDN)
--> html 코드에 아래 코드를 추가하면 된다. :)
      <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

jQuery의 기본 Syntax
$('CSS의 선택자').css('color', 'pink');

$('li').css('color', 'pink');
====================================================================================

 $()는 jQuery의 함수이다. 이 함수의 인자로 CSS 선택자(li)를 전달하면 jQuery 객체라는 것을 리턴한다. 이 객체는 선택자에 해당하는 엘리먼트를 제어하는 다양한 메소드를 가지고 있다. 위의 그림에서 css는 선택자에 해당하는 객체들의 style에 color:red로 변경한다.
====================================================================================

* jQuery에서 attr과 prop의 차이!!
-> attr은 html의 attribute 실제 값을 리턴, prop는 그에 매칭되는 JavaScript의 property값을 리턴


DOM과 jQuery의 비교 Sample
아래의 코드는 동일한 결과를 가져오는데,  jQuery가 훨씬 편리한 것을 알 수 있다.

1. DOM을 사용한 경우

            var lis = document.getElementsByTagName('li');
            for(var i=0; i<lis.length; i++){
                lis[i].style.color='pink';   
            }

2. jQuery를 사용한 경우 (jQuery에서는 아래 한 라인으로 암시적 반복이 수행된다.)

            $('li').css('color', 'pink')


jQuery의 Chaining 문법
아래의 Chaining 문법을 통해 여러가지의 css 설정 적용이 한 Line 에서 가능하다. (멋짐..)

         $('#active').css('color', 'red').css('textDecoration', 'underline');
/* active 라는 id를 가진 요소에 red와 underline을 적용 */


jQuery의 조회 범위 제한 문법
아래와 같이 여러가지 방법을 통해 범위 제한 및 CSS 적용이 Chaining가 가능하다.

1. $( ".marked", "#active").css( "background-color", "red" );
-> 여기서 "#active" 는 Selcetor context라고 한다. ".marked" 는 Selctor 이다.

2. $( "#active .marked").css( "background-color", "red" );
-> 1번과 같은 결과를 수행한다.  (id가 active 인 것중에서 클래스가 marked 인 것을 조회한다.)

3, $( "#active").find('.marked').css( "background-color", "red" );
-> 1,2번과 같은 결과를 가져오며 여기서는 .find() 메소드를 이용한 것

4. $('#active').css('color','blue').find('.marked').css( "background-color", "red" );
-> .find()를 이용하는 것의 장점은 Chainging 이 가능하기 때문!!




/* Javascript Sample */
console.info("hello world");

'나는 프로그래머다! > HTML5' 카테고리의 다른 글

JavaScript - 이벤트 응용1 (버블링과 캡쳐링)  (0) 2015.07.28
JavaScript - 이벤트  (0) 2015.07.28
JavaScript에서의 객체와 객체지향  (0) 2015.07.22
JavaScript의 함수!!  (0) 2015.07.21
JavaScript 재귀함수 예시  (0) 2015.07.20
jQuery 와 Element 객체와 Node 객체  (0) 2015.07.16
Attribute와 Property  (0) 2015.07.14
DOM Tree  (0) 2015.07.13
SublimeText2  (0) 2015.06.19
HTML 과 JavaScript 기본 참고 사이트  (0) 2015.06.19
 

블루투스 이어폰 !

Posted by ironmask84
2015. 6. 24. 14:40 취미생활/IT 기기 및 자동차


저는 3개의 블루투스 이어폰을 가지고 있습니다...

HBS-700, HBS-730, HBS-900 !!

모두 LG 블루투스 이어폰으로 멋지죠..

처음 700 제품을 사용할 당시 너무 편하고 좋았습니다.

문제는 AS 죠....

테크데이타 라는 OEM 회사를 둔 제품이어서..

2014년 초에 700 제품 수리 한 번 받은 적이 있습니다.
작은회사라, 택배를 보내서 수리 받고 택배로 다시 전달 받았었죠...
아래 링크 참조..
http://windwaker.net/1080#comment14496277

이번엔 또 700 제품에서 소리가 한쪽이 안나서..
AS맡기려 했더니....
2014년 언제 부턴가, LG서비스 센터에서 수리 해주나 봅니다..
악평이 좀 있어 걱정이네요.. 아래 링크 참조..
http://blog.naver.com/makerjoy1?Redirect=Log&logNo=220052419852

사실 700과 730은 여친에게 넘어갔다는 것이 함정... :)


나중에 AS 후기 올리겠습니다...
--> 2017년 6월 14일인 현재까지도 수리를 안하고 있었어요 ㅋㅋㅋ...
     다만 2016년에 HBS-900이 고장나는 바람에... LG서비스센터에서 수리를 맡겼고..
     한쪽이 문제였는데 양쪽다 케이블상태가 안좋다고 하여 양쪽다 갈고 3~4만원 들었던 기억이 있네요..
     당일 수리 가능하고..  900부터는 줄을 잡아당기는 것 때문인지 고장이 좀 잘 날 수 있을듯...

 

Key Derivation Functions (PBKDF2)

Posted by ironmask84
2015. 6. 24. 13:34 컴퓨터공학/Security


2년 전 부터 정보 보안에 대한 관심이 많아 지면서,

최근에 또 회사 업무로 인해 아래 암호화 알고리즘에 대해 알아보았다.

PBKDF2 라는 해쉬 컨테이너 알고리즘 이다. (Password-Based Key Derivation Function)

PBKDF2의 기본 파라미터는 다음과 같은 5개 파라미터다.

DIGEST = PBKDF2(PRF, Password, Salt, c, DLen)
  • PRF: 난수(예: HMAC)
  • Password: 패스워드
  • Salt: 암호학 솔트 (32bit 이상 추천.. 어떤 기준??)
  • c: 원하는 iteration 반복 수 (1000번 이상 추천 어떤 기준??)
  • DLen: 원하는 다이제스트 길이

PBKDF2는 NIST(National Institute of Standards and Technology, 미국표준기술연구소)에 의해서 승인된 알고리즘이고, 미국 정부 시스템에서도 사용자 패스워드의 암호화된 다이제스트를 생성할 때 사용한다.

위에서 PRF라는 것이 약간 헷갈리는데, 해쉬 함수를 의미하는 것으로 보인다.

기존 많은 웹서비스들은  패스워드 저장 시, SHA-1 이나 MD5와 같은 hash 알고리즘을 이용해 DB에 저장하여, 개인 정보를 보호하였으나, 이 방법도 HW의 눈부신 발전에 의해 무차별 공격 (brute-force-attack) 에 취약해지므로, 이를 대체 하기 위한 대표적인 알고리즘이다.

오픈소스이며, 최근에 여러 웹서비스나 프로그램에서 인기있는 알고리즘으로 보임.

내가 생각한 기본적인 사용법의 이해는 아래와 같다.

디바이스 내에는 DIGEST와 Salt 가 저장될 것이며,
Password는 저장되어서는 안된다.

유저가 Password를 입력할 때마다,
저장된 salt를 이용해서 PBKDF2를 통해, Digest가 출력될 것이고,
그 놈이 저장되어 있는 Digeest와 일치하는지의 여부를 볼 것이다.

마지막으로 참고할 만한 사이트 2개를 소개합니다.

1. 위키 : http://en.wikipedia.org/wiki/PBKDF2

2. NHN개발자 사이트 : http://helloworld.naver.com/helloworld/318732

 

SublimeText2

Posted by ironmask84
2015. 6. 19. 14:54 나는 프로그래머다!/HTML5


Sublime Text2 라는 Tool은 FFOS 프로젝트를 위한 HTML5 스터디를 위해 알게되었습니다.

이클립스 자동완성 기능의 맞을 알게된 저는 이 툴이 매우 편리하게 다가왔죠 ㅎㅎ

그리고 개인이 무료로 사용할 수 있는 훌륭한 Tool 입니다.

각설하고, 아래 간단한 사용법과 팁을 알려드립니다.

1. Tool 다운 Site : http://www.sublimetext.com/

2. Package control (for Plug in) Site : https://packagecontrol.io/
==> Emmet 플러그인 추천  
** 공식 사이트
http://docs.emmet.io/
https://github.com/sergeche/emmet-sublime

ex) html 파일 인 경우!
html:5 + Tab키
body>div + Tab키 , ul>li*20{item $} + Tab키, table>tr*10>td*5 + Tab키,

a[href="http://ironmask84.net"]>{ironmask's life} + Tab키, .title + Tab키 (div태그의 class로 자동 생성)

3. Sublime 많은 팁 Site (유용한 Plug 포함) : https://opentutorials.org/course/671/3595

제가 추천 드리는 기본적인 단축키
1. html:5 입력후 Tab키 누르면 기본적 html5 양식 출력

2. Ctrl + / : 한줄 주석달기 (html, script, css등 다 됩니다)

3. Ctrl + Shift + / : 요소별로 선택한 요소 전체 주석

4. Alt + Shift + 2, 3, 4 : 화면 영역 분할하기  (Ctrl + 1, 2, 3, 4 로 영역 포커싱 가능)

5. Ctrl + D : 현재 선택한 단어와 동일한 단어를 연속으로 선택 가능


아래는 타 블로그의 유익한 내용을 담아봤습니다. ^^


html 코딩 중에 브라우저로 바로 열기를 추가해 보겠습니다. 해당 기능은 플러그인으로 설치하는게 아니라 직접 코드를 만들어서 플러그인을 제작한 뒤에 단축키를 지정해줘야 합니다. 에디트플러스 쓰시는 분들은 Ctrl + B로 브라우저보기 할 수 있죠. 드림위버에는 F12가 있구요.


일단 메뉴의 Tools -> New Plugin을 누릅니다. 이상한 샘플 명령어들이 있는 파일 하나가 열립니다. 그곳에 아래 내용으로 덮어 씌우기를 합니다. 그리고 저장해 준뒤 파일을 닫습니다.


import sublime, sublime_plugin

import webbrowser


class OpenBrowserCommand(sublime_plugin.TextCommand):

    def run(self,edit): 

        url = self.view.file_name()

        webbrowser.open_new(url)


그런 뒤에 단축키를 지정해보죠. 단축키 지정은 Preference -> Key Bindings – User입니다. 지난 포스트에서 폰트 옵션을 지정한 것처럼 제가 지정한 단축키를 따로 저장하는 파일입니다. 파일이 열리면 아래의 코드를 복사해서 붙여넣어줍니다.


{ "keys": ["ctrl+b"], "command": "open_browser" }


저장한 뒤 파일을 닫아준뒤 html 파일 작업중에 Ctrl + B를 누르면 기본 브라우저로 html 파일이 열립니다. 그럼 말이 나온 김에 단축키에 대해 알아보겠습니다. 가장 많이 사용하는 단축키는 아래와 같습니다.


  • Shift + Del(Backspace) : 현재 커서가 있는 줄 완전 삭제
  • Ctrl + Del(Backspace) : 단어 단위로 삭제하기
  • Ctrl + Shift + D : 현재 커서가 있는 줄 아래로 현재 줄 복사
  • Ctrl + Shift + [, ]  : 태그 닫기와 열기
  • F11 : 전체화면모드


 

HTML 과 JavaScript 기본 참고 사이트

Posted by ironmask84
2015. 6. 19. 14:46 나는 프로그래머다!/HTML5


기본 강의 사이트
--> https://opentutorials.org/module/904/6619

sublimeText 사이트
--> http://www.sublimetext.com/

sublimeText Package 사이트
--> https://packagecontrol.io/

웹프로그래밍 전문 블로그
--> http://webdir.tistory.com/319

'나는 프로그래머다! > HTML5' 카테고리의 다른 글

JavaScript - 이벤트 응용1 (버블링과 캡쳐링)  (0) 2015.07.28
JavaScript - 이벤트  (0) 2015.07.28
JavaScript에서의 객체와 객체지향  (0) 2015.07.22
JavaScript의 함수!!  (0) 2015.07.21
JavaScript 재귀함수 예시  (0) 2015.07.20
jQuery 와 Element 객체와 Node 객체  (0) 2015.07.16
Attribute와 Property  (0) 2015.07.14
DOM Tree  (0) 2015.07.13
JQuery 초 간단 이해  (0) 2015.07.10
SublimeText2  (0) 2015.06.19