728x90
반응형
tracert와 traceroute의 차이점은 무엇이 있을까?
필드에서 대화할때 위의 차이점을 모르면 대화가 어렵습니다.

단순하게 생각하면 윈도우(tracert), 리눅스,유닉스(traceroute)라고 할 수 있지만 리눅스에서도 tracert를 제공하기 때문에
단순 OS의 차이는 아닙니다.

근본적인 차이점은 icmp를 사용하느냐 udp를 사용하느냐의 차이라고 할 수 있습니다.

tracert: icmp기반 프로그램. icmp-8(echo)를 보낸뒤 icmp-0(echo reply)를 확인하여 동작여부를 확인합니다.
응답이 있다면 3번 시도가 default임
그렇기에 icmp-0 을 차단한 경우 경로추적이 불가능합니다.

(ex:192.168.0.157 -> 192.168.0.100으로 tracert의 tcpdump 화면)
 






traceroute: udp기반 프로그램. default로 옵션설정을 안했을때 33434/udp부터 7번 즉, 33439/udp까지 보내게됩니다.
해당 udp 포트가 닫혀있을때 icmp-3(Destination Unreachable)이 오는것을 아이디어로 만들어졌습니다.

(ex:192.168.0.157 -> 192.168.0.100으로 traceroute의 tcpdump 화면)











만약 os에서 33434/udp를 오픈한 상태라면 어떻게 될까?
처음 한번은 icmp-3이 돌아오지 않는걸 확인 할 수 있습니다.
이것은 방화벽에서 33434/udp를 drop시켰을때도 동일합니다.




icmp를 차단한 상태로 테스트한 화면입니다.

icmp echo를 계속 보내고있는 tracert의 모습

icmp가 차단되도 정상 동작하는 traceroute의 모습

실무에서는 traceroute -T도 많이 사용하는데요. 80/TCP포트가 열려있다면 더욱 빠르고 정확한 결과를 얻을 수 있습니다.
해당 -T 옵션은 80/TCP로 Flags [SEW]를 보낸뒤 syn,ack이 오는것을 확인하는 방법입니다.
SEW는 SYN ECE CWR의 약자입니다.
SYN은 새로운 연결을 시작한다는 이야기이고
E는 ECE는 Explicit Congestion Notification라는 TCP혼잡제어 기능을 사용할 수 있다고 알려주는 것 입니다.
R는 CWR(Congestion Window Reduced )을 말하며 슬라이딩윈도우의 윈도우 사이즈를 줄여달라는 뜻입니다.

네이버의 임의의 아이피로 테스트한 화면
일부 tcpdump 캡쳐화면
또한 traceroute에서 ICMP로 라우팅을 확인해야 할 때도 있는데 이때는 traceroute -I 를 사용하면 됩니다.

결론으로 traceroute기본옵션으로 안되는 상황은 모든 udp를 drop시키던지 서버에서 icmp-3을 보내지 못하게 설정하던지, 라우팅이 잘 못 되어야 합니다.


728x90
반응형

'Web Programming' 카테고리의 다른 글

MVC Pattern  (0) 2018.09.05
슬랙(Slack)의 장점과 한계점  (0) 2018.09.04
프레임워크와 라이브러리의 차이  (0) 2018.08.29
캐시와 쿠키의 차이  (0) 2018.08.29
WebSocket이란?  (0) 2018.08.29
728x90
반응형

자바스크립트로 스크립트를 만들다 보면 생각외로 종종 input 배열의 값을 컨트롤 해야 할때가 있다.




Input 배열은 동일 페이지 내에서 Input으로 정의되는 항목에 대하여 중복되는 Name이 존재할경우 배열처럼 사용이 가능하다. 보통은 Checkbox를 이용할때 많이 사용한다고 볼 수 있다. 




내용이 간단하여 아래 예제만 봐도 쉽게 이해할 수 있다.



<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>Input Array</title>

<script src="https://code.jquery.com/jquery-1.7.2.js"></script>

<script type="text/javascript">

 

    $(document).ready(function(){

       

 

      // 체크박스 배열 Loop

      $("input[name=chk]").each(function(idx){    

         

        // 해당 체크박스의 Value 가져오기

        var value = $(this).val();

 

        var eqValue = $("input[name=chk]:eq(" + idx + ")").val() ;

         

        console.log(value + ":" + eqValue) ;

         

      });

       

       

      // 배열의 특정순서의 Value 가져오기

      var orange = $("input[name=chk]:eq(2)").val() ;

      console.log(orange);

       

 

       

      // 배열의 특정순서 Value 변경하기

      $("input[name=chk]:eq(2)").val("포도") ;

       

      var chgFruit = $("input[name=chk]:eq(2)").val() ;

      console.log(chgFruit) ;

       

    });

 

</script>

</head>

<body>

    <input type="checkbox" name="chk" id="chk" value="바나나">바나나

    <input type="checkbox" name="chk" id="chk" value="딸기">딸기

    <input type="checkbox" name="chk" id="chk" value="오렌지">오렌지

</body>

</html>





출처: http://fruitdev.tistory.com/192?category=568934 [과일가게 개발자]

728x90
반응형

'Web Programming > front-end' 카테고리의 다른 글

Ajax 란?  (0) 2018.09.04
오른쪽 마우스 금지 소스 / 드래그 금지 소스  (1) 2014.04.09
<thead><tbody>  (0) 2013.09.30
<colgroup>  (0) 2013.09.25
<div>코딩  (0) 2013.09.25
728x90
반응형

복잡한 형태의 쿼리를 만들다 보면 로직에따라 if문을 추가해야 한다던지
if else 문을 추가해야할 경우가 있다. 

myBatis는 이를위해 동적 쿼리를 위한 기능을 제공한다.
그중에서도 가장 많이 사용되는 if 문과 choose문을 살펴보자.

동적쿼리는 XML 매퍼에 지정하게 되는데, JSTL을 사용해봤던 사람들이라면 큰 어려움이 없는 문법이다.


1. IF문
단일 IF 문 이라고 보면 된다. 다음은 age라는 속성의 값이 null이나 빈값이 아닐때 검색조건에 추가하는 구문이다.



    <select id="getContentsP" parameterType="hashmap" resultType="com.test.vo.TestVo">
    
        SELECT
            id, name
        FROM
            TB_test a
        WHERE

            type = 'A' 
            
            <if test="age != null AND age != ''">
                AND age = #{age}
            </if>
            
    </select>





2. Choose문
우리가 흔히 개발할때 사용하는 if else와 같다고 보면 된다


 

    <select id="getContentsP" parameterType="hashmap" resultType="com.test.vo.TestVo">
    
        SELECT
            id, name
        FROM
            TB_test a
        WHERE

            type = 'A'
            
            <choose>
                
                <when test="age > 20 ">
                    AND age > #{age}
                </when>
                
                <when test="age < 20 ">
                    AND age < #{age}
                </when>
                
                <otherwise>
                    AND age is not null
                </otherwise>
                
            </choose>
            
            
            
    </select>




출처: http://fruitdev.tistory.com/34 [과일가게 개발자]

728x90
반응형

'Web Programming > database' 카테고리의 다른 글

ORA-ROWSCN  (0) 2018.09.13
오라클 GRANT SYNONYM 권한주기  (0) 2018.09.06
org.apache.ibatis.exceptions.PersistenceException  (0) 2018.09.04
ACID란?  (0) 2018.08.29
queryForObject 와 queryForList  (0) 2014.04.15
728x90
반응형

Atom Text Editor (아톰 텍스트 편집기) 설치 및 설정 편입니다.


웹 개발을 하고 싶어서 HTML과 CSS를 공부하기 시작했는데 코드들을 간편하고 빠르게 작성하기 위해 텍스트 에디터 (문서 편집기) 들을 둘러보던 중 Atom Text Editor가 눈에 띄었습니다. 아톰 에디터를 사용해보았는데요, 편리한 기능들을 제공하고 심플하면서 디자인도 좋은 에디터인 것 같았습니다. 지금부터 아톰 에디터 (이하 아톰) 설치 및 설정 방법을 알려드리겠습니다. 


[Atom 소개]

아톰은 편리한 텍스트 작성을 위해 Github에서 만든 프로그램입니다. 아톰 홈페이지의 소개를 보면 

"Atom is a text editor that's modern, approachable, yet hackable to the core-a tool you can customize to do anything but also use productively without ever touching a config file." 

(출처: atom.io 메인 페이지) 

이라고 되어있습니다. 현대적이고 사용하기 쉽고 동시에 원하는 데로 조작할 수 있는 강력한 에디터입니다. 아톰의 장점들을 꼽아보자면, 무료로 사용할 수 있고, 심플하고 직관적인 UI와 다양한 패키지들이 있습니다. 아톰은 가볍지만 다양한 플러그인/패키지들을 제공하기 때문에 강력하고 효과적인 툴로 사용하실 수 있습니다. 또한, HTML, CSS, JavaScript 같은 웹 기반 언어로 구현이 되었기 때문에 이런 웹 기술들을 배우면서 직접 원하는 것들을 쉽게 수정할 수 있습니다. 


[Atom 설치]

먼저 아톰 홈페이지 https://atom.io/로 들어가세요


▲ 이렇게 홈 화면이 뜹니다. 빨간색 버튼으로 되어있는 Download Windows Installer를 눌러주세요. 그러면 AtomSetup.exe 파일을 다운로드 받게 됩니다. 실행시켜서 아톰을 설치해주세요. 


▲ 이런 화면이 뜨면서 자동으로 설치가 완료됩니다.


[Atom 설정]

▲ Atom을 실행하시면 이렇게 시작화면이 뜹니다. 바로 Choose a Theme (테마 고르기)나 File ▶ Setting ▶ Themes 로 가시면 아톰의 테마를 변경하실 수 있습니다. UI Theme과 Syntax Theme에서 원하시는 테마를 조합하시면 됩니다. 마음에 드는 테마가 없으면 Setting ▶ Install 로 가셔서 패키지 검색 창 옆에 있는 Themes 를 누른 다음에 인기 있는 테마를 다운로드 받으시거나 직접 검색하셔서 찾으시면 됩니다. 


▲ Setting ▶ Packages 로 가면 설치되어있는 패키지들을 확인하실 수 있고 설정을 바꾸고 필요 없는 기능들은 비활성화시키거나 삭제시키실 수 있습니다. Setting ▶ Install 로 가셔서 검색 창 옆에 Packages를 누르시면 인기 있는 패키지들을 다운로드 받을 수 있고 원하는 패키지를 검색하셔서 설치할 수 있습니다.


[추천 패키지]

아톰을 처음 설치하시면 기본 패키지들과 함께 설 됩니다. Ctrl + \(역슬래쉬 키) 를 누르면 왼쪽에 디텍터리 구조를 볼 수 있게 해주는 창도 기본적으로 설치 되어있는 tree-view 패키지입니다. 이렇듯 패키지들을 설치하시면 가벼운 아톰 에디터를 강력한 툴로 변하게 할 수 있습니다. 그중에서 인기 있고 아주 간편한 패키지 몇 개를 소개해 드립니다.


  • Emmet: 웹 개발을 위한 강력한 툴인데요, 간편한 자동완성은 물론이고 수식을 조합해서 반복적으로 입력해야 하는 코드를 한 줄로 완성 시킬 수 있습니다. http://docs.emmet.io/로 가시면 Emmet에 대한 사용법이 자세히 나와 있습니다. ▼

!를 입력한 후 tab 키만 누르시면 위처럼 기본적인 HTML 템플릿이 생성됩니다.


  • Minimap: 코드가 아주 길어질수록 줄이 많아집니다. 이런 경우 어느 위치에서 코딩하는 지 알기 쉽지 않은데 Minimap을 설치하시면 오른쪽에 코드들이 아주 작게 적혀있고 해당 위치가 표시돼서 마치 코드들의 지도를 보는 것처럼 사용할 수 있습니다. ▼


  • Linter: 코드를 작성하다 보면 오타들이나 문법적 오류들이 생기는 데요, 이런 실수를 할 때마다 Linter 패키지가 오류가 있는 부분을 가리키고 어떤 문제가 있는지 알려줍니다. Linter 패키지를 설치한 후 원하시는 프로그래밍 언어에 해당하는 패키지를 추가로 설치하시면 됩니다. (예: Linter-htmlhint) ▼



이외 여러 가지 패키지들이 있으니 마음에 들고 실용적인 패키지들이 있으시면 설치하셔서 마음껏 사용하시면 됩니다.



출처: http://plainthought.tistory.com/10 [PLAIN THOUGHT]

728x90
반응형

'Web Programming > php' 카테고리의 다른 글

php.ini opcache.enable  (0) 2018.08.31
php.ini display_errors  (0) 2018.08.31
php 변수  (0) 2018.08.30
php 숫자연산  (0) 2018.08.30
php var_dump, 문자결합  (0) 2018.08.30
728x90
반응형



 PHP 관계연산자 알아보기




관계연산자란 Boolean이라는 데이터타입이라고 하며, 숫자, 문자와 다른 타입을 가지고 있습니다


프로그래밍을 하면서 비교는 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 경우가 있습니다

이과정에 관계 연산자의 결과를 참(True)이나 거짓(False)중 하나입니다.




1. == (동등 연산자)


== 연산자는 좌측과 우측의 값을 비교하여 서로 값이 같다면 참(True)을 다르다면 거짓(False)이 됩니다


1
2
3
4
5
6
7
8
9
<?php
  echo "0 == 1 : ";
  var_dump(0 == 1);
  echo '<br />';
 
  echo "1 == 1 : ";
  var_dump(1 == 1);
 
?>


위 코드는 var_dump를 이용하여 ==  (동등 연산자) 의 결과값을 출력하는 코드이며, 첫번째 var_dump는 두값이 같이니 Ture를 출력하고 두번째 var_dump 두값이 같지 않기때문에 false를 출력하게됩니다




출력내용을 확인하시면 코드의 두값이 틀린 구문은 False를 출력하고 같으면 True를 출력하는 것을 확인하실 수 있습니다

또한 bool이라는 구문은 데이터 타입이 Boolean이라는 것을 의미합니다.




2. !=  (부정 연산자)


!= 연산자는 부정을 의미합니다

연산의 결과가 True(참)일때 거짓이되며, False(거짓)일때 참이 됩니다 즉 Boolean의 값을 반대로 만들어 주게 됩니다


1
2
3
4
5
6
7
8
<?php
  echo "0 != 1 : ";
  var_dump(0 != 1);
  echo '<br />';
 
  echo "1 != 1 : ";
  var_dump(1 != 1);
?>



위 코드는 var_dump를 이용하여 !=  (부정 연산자) 의 결과값을 출력하는 코드이며, 첫번째 var_dump는 두값이 같이니 부정연산자로 인해 False를 출력하고 두번째 var_dump는 두값이 같지 않으나 부정연산자로 인해 false를 출력하게됩니다





3. >, < (부등호 연산자-1)


> 연산자는 좌항의 값이 우항의 값보다 크다면 참이되며, 아니라면 거짓이 되고 같아도 거짓이 됩니다


1
2
3
4
5
6
7
8
9
10
11
12
<?php
  echo "2 > 4 : ";
  var_dump(2 > 4);
  echo '<br />';
 
  echo "4 > 2 : ";
  var_dump(4 > 2);
  echo '<br />';
 
  echo "4 > 4 : ";
  var_dump(4 > 4);
?>





위 코드와 출력내용을 확인 하시면 > 연산자는 좌항의 값이 우항의 값보다 크다면 참이되며, 아니라면 거짓이 되고 같아도 거짓이 됩니다




1
2
3
4
5
6
7
8
9
10
11
12
<?php
  echo "2 < 4 : ";
  var_dump(2 < 4);
  echo '<br />';
 
  echo "4 < 2 : ";
  var_dump(4 < 2);
  echo '<br />';
 
  echo "4 < 4 : ";
  var_dump(4 < 4);
?>



위 코드와 출력내용을 확인 하시면 < 연산자는 좌항의 값이 우항의 값보다 작다면 참이되며, 아니라면 거짓이 되고 같아도 거짓이 됩니다





3. >=, <= (부등호 연산자-2)


>= 연산자는 좌항의 값이 우항의 값보다 크거나 같다면 참이되며, 아니라면 거짓이 됩니다

<= 연산자는 좌항의 값이 우항의 값보다 작거나 같다면 참이되며, 아니라면 거짓이 됩니다


1
2
3
4
5
6
7
8
9
10
11
12
<?php
  echo "2 >= 4 : ";
  var_dump(2 >= 4);
  echo '<br />';
 
  echo "4 >= 2 : ";
  var_dump(4 > 2);
  echo '<br />';
 
  echo "4 >= 4 : ";
  var_dump(4 >= 4);
?>




위 코드와 출력내용을 확인 하시면 >= 연산자는 좌항의 값이 우항의 값보다 크거나 같다면 참이되며, 아니라면 거짓이 됩니다






1
2
3
4
5
6
7
8
9
10
11
12
<?php
  echo "2 <= 4 : ";
  var_dump(2 <= 4);
  echo '<br />';
 
  echo "4 <= 2 : ";
  var_dump(4 <= 2);
  echo '<br />';
 
  echo "4 <= 4 : ";
  var_dump(4 <= 4);
?>



728x90
반응형

+ Recent posts