<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Dev Log Island</title>
    <link>https://dev-log-island.tistory.com/</link>
    <description>JAVA, JavaScript.⠀&amp;lt;/&amp;gt;⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Junior Back End WEB Developer.

</description>
    <language>ko</language>
    <pubDate>Thu, 7 May 2026 20:58:58 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Jeaha</managingEditor>
    <image>
      <title>Dev Log Island</title>
      <url>https://tistory1.daumcdn.net/tistory/3370174/attach/b5ba1d6b69564ebdba834296f4cf9f11</url>
      <link>https://dev-log-island.tistory.com</link>
    </image>
    <item>
      <title>코드, 꼴도 보기 싫을 때. 개발자 번아웃 해결 방법 10가지</title>
      <link>https://dev-log-island.tistory.com/211</link>
      <description>&lt;p&gt;개발자는 겉으로 보기엔 앉아서 일하는 직업처럼 보이지만, 실제로는 집중력, 문제 해결력, 일정 압박, 계속 바뀌는 기술 흐름까지 동시에 감당해야 하는 일이다.&lt;br&gt;그래서 몸보다 먼저 머리가 지치고, 어느 순간부터는 코드를 봐도 손이 안 움직이고, 작은 오류에도 짜증이 나고, 일 자체가 싫어지는 시기가 온다. 이게 바로 번아웃이다.&lt;/p&gt;
&lt;p&gt;문제는 많은 개발자가 번아웃을 의지 부족이나 실력 부족으로 착각한다는 점이다.&lt;br&gt;그런데 번아웃은 게으름이 아니라, 지속적으로 과부하가 걸렸다는 신호에 가깝다.&lt;br&gt;억지로 버티면 잠깐은 굴러가도 결국 더 크게 무너진다.&lt;/p&gt;
&lt;p&gt;오늘은 개발자 번아웃이 왔을 때 현실적으로 회복하는 방법 10가지를 정리해보겠다.&lt;/p&gt;
&lt;h2&gt;1. 먼저 “내가 지쳤다”는 사실부터 인정하기&lt;/h2&gt;
&lt;p&gt;번아웃 상태에 들어가면 제일 먼저 하는 실수가 있다.&lt;br&gt;바로 “남들도 다 힘든데 내가 유난 떠는 건가?”라고 생각하는 것이다.&lt;br&gt;하지만 개발자 번아웃은 꽤 명확한 신호가 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;코드만 봐도 피곤하다&lt;/li&gt;
&lt;li&gt;예전보다 사소한 에러에 훨씬 예민해진다&lt;/li&gt;
&lt;li&gt;공부할 의욕이 전혀 안 난다&lt;/li&gt;
&lt;li&gt;주말에도 쉬는 느낌이 없다&lt;/li&gt;
&lt;li&gt;출근 전부터 이미 지쳐 있다&lt;/li&gt;
&lt;li&gt;일 끝나고 나면 아무것도 못 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 상태라면 정신력으로 밀어붙일 문제가 아니다.&lt;br&gt;핵심은 &lt;strong&gt;“지금 내 시스템이 과열됐다”&lt;/strong&gt;고 인정하는 것이다.&lt;br&gt;인정해야 대책도 세울 수 있다.&lt;/p&gt;
&lt;h2&gt;2. 며칠만이라도 회복 모드로 전환하기&lt;/h2&gt;
&lt;p&gt;번아웃이 왔을 때 많은 사람이 “더 효율적으로 해내는 방법”을 찾는다.&lt;br&gt;그런데 이미 지친 상태에서는 효율도 잘 안 나온다.&lt;br&gt;이럴 때는 성장 모드가 아니라 회복 모드로 바꿔야 한다.&lt;br&gt;회복 모드에서 중요한 건 세 가지다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;업무 외 추가 공부 잠시 중단&lt;/li&gt;
&lt;li&gt;사이드 프로젝트 잠시 멈춤&lt;/li&gt;
&lt;li&gt;쉬는 시간에 또 개발 콘텐츠 보지 않기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;개발자는 쉬는 시간에도 유튜브, 블로그, 커뮤니티로 계속 개발을 접하는 경우가 많다.&lt;br&gt;겉으로는 쉬는 것 같아도 뇌는 계속 일을 하고 있다.&lt;br&gt;진짜 회복이 필요할 때는 개발에서 잠깐 떨어지는 시간이 필요하다.&lt;/p&gt;
&lt;h2&gt;3. 해야 할 일을 줄이지 말고, “인지 부하”를 줄이기&lt;/h2&gt;
&lt;p&gt;번아웃은 할 일이 많아서만 오는 게 아니다.&lt;br&gt;머릿속에 열린 탭이 너무 많을 때 더 심해진다.&lt;br&gt;예를 들면 이런 상태다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;배포 이슈 해결해야 함&lt;/li&gt;
&lt;li&gt;리팩토링 해야 함&lt;/li&gt;
&lt;li&gt;코드 리뷰 밀림&lt;/li&gt;
&lt;li&gt;다음 분기 기술 검토도 해야 함&lt;/li&gt;
&lt;li&gt;이직 준비도 해야 함&lt;/li&gt;
&lt;li&gt;공부도 해야 함&lt;/li&gt;
&lt;li&gt;사이드 프로젝트도 신경 쓰임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이럴 때는 실제 업무량보다 정신적 압박이 더 사람을 무너뜨린다.&lt;br&gt;그래서 우선 해야 할 건 모든 일을 머릿속에서 꺼내는 것이다.&lt;br&gt;방법은 단순하다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;지금 신경 쓰이는 일을 전부 적는다&lt;/li&gt;
&lt;li&gt;오늘 처리할 것 1~3개만 남긴다&lt;/li&gt;
&lt;li&gt;나머지는 일정 미정 박스에 넣는다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;중요한 건 완벽하게 정리하는 게 아니라, 뇌가 계속 기억하려고 애쓰지 않게 만드는 것이다.&lt;/p&gt;
&lt;h2&gt;4. 하루에 한 번은 “작게 끝내는 경험” 만들기&lt;/h2&gt;
&lt;p&gt;번아웃 상태에서는 큰 일에 손대는 것 자체가 버겁다.&lt;br&gt;문서를 열고, IDE를 켜고, 요구사항을 읽는 것만으로도 피곤하다.&lt;br&gt;그래서 더더욱 작은 완료 경험이 필요하다.&lt;br&gt;예를 들면 이런 식이다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;함수 하나만 정리하기&lt;/li&gt;
&lt;li&gt;버그 재현만 해보기&lt;/li&gt;
&lt;li&gt;테스트 코드 한 개만 추가하기&lt;/li&gt;
&lt;li&gt;문서 한 문단만 수정하기&lt;/li&gt;
&lt;li&gt;PR 코멘트 1개만 반영하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 작은 완료가 쌓이면 “나는 지금 망가진 게 아니라, 잠깐 지친 상태구나”라는 감각이 돌아온다.&lt;br&gt;반대로 너무 큰 목표만 잡으면 실패 경험만 늘어나고 자존감이 더 깎인다.&lt;br&gt;번아웃 시기에는 대단한 성과보다 작은 완료가 더 중요하다.&lt;/p&gt;
&lt;h2&gt;5. 수면부터 복구하기&lt;/h2&gt;
&lt;p&gt;개발자 번아웃에서 수면은 거의 핵심이다.&lt;br&gt;잠이 무너지면 집중력, 감정 조절, 문제 해결 능력이 같이 무너진다.&lt;br&gt;특히 개발 업무는 생각보다 뇌 에너지를 많이 쓰기 때문에, 잠이 부족하면 체감 난이도가 확 올라간다.&lt;br&gt;수면이 꼬였을 때는 거창한 루틴보다 아래부터 맞추는 게 낫다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기상 시간을 먼저 고정하기&lt;/li&gt;
&lt;li&gt;자기 직전까지 화면 보지 않기&lt;/li&gt;
&lt;li&gt;밤늦게 디버깅하지 않기&lt;/li&gt;
&lt;li&gt;침대에서 코드 생각 줄이기&lt;/li&gt;
&lt;li&gt;카페인 끊는 시간 정하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;많은 개발자가 “주말에 몰아서 자면 되지”라고 생각하는데, 그걸로 회복이 깔끔하게 되지 않는 경우가 많다.&lt;br&gt;오히려 평일 리듬이 계속 무너진다.&lt;br&gt;번아웃이 오면 생산성 앱보다 먼저 잠부터 정상화해야 한다.&lt;/p&gt;
&lt;h2&gt;6. 운동은 의욕 생기고 나서 하는 게 아니라, 의욕 없을 때 더 필요하다&lt;/h2&gt;
&lt;p&gt;번아웃 상태에서는 운동이 제일 귀찮다.&lt;br&gt;퇴근하고 나면 누워 있고 싶고, 움직일 힘이 없다.&lt;br&gt;그런데 문제는 가만히 있을수록 몸도 더 무거워지고, 기분도 더 가라앉는다는 점이다.&lt;br&gt;여기서 중요한 건 “운동 빡세게 하기”가 아니다.&lt;br&gt;핵심은 신체를 다시 깨우는 것이다.&lt;br&gt;추천하는 최소 기준은 이 정도면 된다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;하루 20~30분 걷기&lt;/li&gt;
&lt;li&gt;계단 이용하기&lt;/li&gt;
&lt;li&gt;스트레칭 10분&lt;/li&gt;
&lt;li&gt;가벼운 맨몸 운동&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;개발자는 오래 앉아 있고 자세도 쉽게 무너진다.&lt;br&gt;몸이 굳으면 생각도 같이 굳는다.&lt;br&gt;운동은 체력 관리이기도 하지만, 번아웃 시기에는 정신 회복 장치에 가깝다.&lt;/p&gt;
&lt;h2&gt;7. “내가 못해서 힘든 건가?”와 “환경이 이상한 건가?”를 분리하기&lt;/h2&gt;
&lt;p&gt;번아웃이 오면 사람은 자꾸 자기 탓을 한다.&lt;br&gt;“내가 실력이 부족한가?”&lt;br&gt;“내가 멘탈이 약한가?”&lt;br&gt;“왜 이렇게 버거울까?”&lt;br&gt;그런데 실제로는 개인 문제가 아니라 환경 문제인 경우도 많다.&lt;br&gt;예를 들면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;요구사항이 계속 바뀐다&lt;/li&gt;
&lt;li&gt;일정이 비현실적이다&lt;/li&gt;
&lt;li&gt;회의가 너무 많다&lt;/li&gt;
&lt;li&gt;담당 범위가 끝없이 늘어난다&lt;/li&gt;
&lt;li&gt;코드 품질보다 속도만 강요한다&lt;/li&gt;
&lt;li&gt;장애 대응이 상시화되어 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 환경에서는 누가 와도 쉽게 지친다.&lt;br&gt;그러니 무조건 자기반성부터 할 게 아니라, 내가 힘든 이유가 구조적인지 먼저 봐야 한다.&lt;br&gt;내가 부족해서 힘든 것과&lt;br&gt;환경이 비정상이라 힘든 것은&lt;br&gt;대응 방식이 완전히 다르다.&lt;/p&gt;
&lt;h2&gt;8. 개발 공부를 잠깐 멈추는 것도 전략이다&lt;/h2&gt;
&lt;p&gt;개발자는 유난히 쉬어도 쉬는 것 같지 않은 직업이다.&lt;br&gt;회사 일 끝나고도 공부해야 할 것 같고, 뒤처지면 안 될 것 같고, 새 기술을 계속 따라가야 할 것 같은 압박이 있다.&lt;br&gt;그런데 번아웃이 온 시점에서는 공부를 더 넣는다고 해결되지 않는다.&lt;br&gt;오히려 &lt;strong&gt;“나는 일도 못 하는데 공부도 못 하네”&lt;/strong&gt;라는 추가 실패감만 생긴다.&lt;br&gt;이럴 때는 이렇게 바꾸는 게 낫다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;깊은 기술 학습 잠시 중단&lt;/li&gt;
&lt;li&gt;강의 완강 목표 내려놓기&lt;/li&gt;
&lt;li&gt;기술 뉴스 소비 줄이기&lt;/li&gt;
&lt;li&gt;학습 대신 정리형 독서나 산책으로 전환&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;쉬는 기간은 퇴보가 아니다.&lt;br&gt;번아웃 상태에서 억지로 공부하면 머리에 남지도 않고, 자기혐오만 커진다.&lt;br&gt;회복 후에 다시 들어가는 편이 훨씬 효율적이다.&lt;/p&gt;
&lt;h2&gt;9. 혼자 버티지 말고, 말로 꺼내기&lt;/h2&gt;
&lt;p&gt;번아웃은 혼자 오래 끌수록 더 심해진다.&lt;br&gt;특히 개발자는 문제를 스스로 해결하려는 습관이 강해서, 감정 문제도 혼자 해결하려고 한다.&lt;br&gt;그런데 번아웃은 생각보다 말로 꺼내는 것만으로도 압력이 줄어든다.&lt;br&gt;꼭 거창할 필요 없다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;팀원에게 “요즘 집중이 잘 안 된다”고 말하기&lt;/li&gt;
&lt;li&gt;일정 조정 가능 여부 묻기&lt;/li&gt;
&lt;li&gt;가까운 동료와 현재 상태 공유하기&lt;/li&gt;
&lt;li&gt;가족이나 친구에게 피로감 털어놓기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;말한다고 모든 문제가 해결되진 않는다.&lt;br&gt;하지만 최소한 혼자서 다 짊어지고 있다는 감각은 줄어든다.&lt;br&gt;그리고 의외로 많은 사람이 비슷한 시기를 겪고 있다.&lt;/p&gt;
&lt;h2&gt;10. 정말 안 맞는 환경이면, 버티는 것보다 바꾸는 게 맞다&lt;/h2&gt;
&lt;p&gt;이건 가장 현실적인 이야기다.&lt;br&gt;모든 번아웃이 휴식으로 해결되진 않는다.&lt;br&gt;어떤 번아웃은 환경 자체가 원인이다.&lt;br&gt;예를 들면:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;계속되는 야근&lt;/li&gt;
&lt;li&gt;무리한 일정&lt;/li&gt;
&lt;li&gt;존중 없는 커뮤니케이션&lt;/li&gt;
&lt;li&gt;장애 대응 상시 대기&lt;/li&gt;
&lt;li&gt;정리되지 않은 조직 구조&lt;/li&gt;
&lt;li&gt;일은 많은데 성장감은 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이런 곳에서 “마인드셋 바꾸기”만으로 해결하려고 하면 오래 못 간다.&lt;br&gt;버티는 힘도 중요하지만, 빠져나오는 판단력도 중요하다.&lt;br&gt;지금 있는 팀이나 회사가 나를 계속 갈아 넣는 구조라면,&lt;br&gt;회복 방법만 찾을 게 아니라 일하는 방식 자체를 바꿀 시점인지 봐야 한다.&lt;/p&gt;
&lt;p&gt;번아웃은 개인의 나약함 증명이 아니라,&lt;br&gt;지금 방식이 지속 가능하지 않다는 경고일 수 있다.&lt;/p&gt;
&lt;h2&gt;개발자 번아웃을 줄이기 위한 현실적인 정리&lt;/h2&gt;
&lt;p&gt;개발자 번아웃은 갑자기 오는 것 같지만, 사실은 오랫동안 쌓인 피로가 터지는 경우가 많다.&lt;br&gt;그래서 해결도 한 번에 되지 않는다.&lt;br&gt;중요한 건 거창한 결심이 아니라, 회복 가능한 상태로 다시 돌아오는 것이다.&lt;br&gt;핵심만 다시 정리하면 이렇다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;지친 상태를 인정하기&lt;/li&gt;
&lt;li&gt;잠깐 속도를 줄이기&lt;/li&gt;
&lt;li&gt;머릿속 부담을 밖으로 꺼내기&lt;/li&gt;
&lt;li&gt;작은 완료 경험 만들기&lt;/li&gt;
&lt;li&gt;수면과 운동부터 복구하기&lt;/li&gt;
&lt;li&gt;환경 문제인지 구분하기&lt;/li&gt;
&lt;li&gt;필요하면 과감하게 구조를 바꾸기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;개발은 원래 오래 가야 하는 일이다.&lt;br&gt;단기간에 불태우는 것보다, 지속 가능하게 가는 사람이 결국 더 멀리 간다.&lt;br&gt;지금 번아웃이 왔다면, 그건 망가졌다는 뜻이 아니라 점검이 필요하다는 신호다.&lt;br&gt;억지로 밀어붙이기보다,&lt;br&gt;한 번 리듬을 재정비하고 다시 가는 편이 훨씬 낫다.&lt;/p&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>개발자마인드셋</category>
      <category>개발자멘탈</category>
      <category>개발자번아웃</category>
      <category>개발자성장</category>
      <category>개발자슬럼프</category>
      <category>개발자직장생활</category>
      <category>개발자커리어</category>
      <category>극복</category>
      <category>일하기싫을때</category>
      <category>코딩번아웃</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/211</guid>
      <comments>https://dev-log-island.tistory.com/211#entry211comment</comments>
      <pubDate>Mon, 16 Mar 2026 12:23:10 +0900</pubDate>
    </item>
    <item>
      <title>2026년 연봉 구간별 실수령액 표 총정리｜1000만원부터 1억5천만원까지</title>
      <link>https://dev-log-island.tistory.com/210</link>
      <description>&lt;p&gt;2026년 연봉 실수령액은 4대보험과 원천세를 뺀 뒤 확인해야 한다. 이 글은 검색량이 높은 구간은 요약표로 먼저 보여주고, 이후에는 100만원 단위 상세표를 정리했다.&lt;/p&gt;
&lt;p&gt;계산 기준은 고정했다. 2026년 3월 시행 근로소득 간이세액표, 공제대상가족 1명(본인만), 8세 이상 20세 이하 자녀 없음, 비과세 수당 없음, 원천징수 100% 기준이다. 국민연금은 2026년 1월~6월 기준소득월액 상한 637만원과 하한 40만원을 반영했다. 건강보험은 7.19%, 장기요양보험은 건강보험료의 13.14%, 고용보험 실업급여 보험료는 근로자 부담 0.9%를 적용했다.&lt;/p&gt;
&lt;h2&gt;2026년 연봉 실수령액 요약표&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;3,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;282,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;118,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;89,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,217,920원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;439,611원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;158,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;119,830원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;105,210원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,521원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,893,722원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;643,892원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;197,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;149,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;37,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;217,320원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,732원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,522,775원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;854,877원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;237,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;179,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;335,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,547원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,145,123원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,062,317원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;277,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;209,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,550원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;450,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,047원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,771,016원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,354,869원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;239,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;60,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;655,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;65,559원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,311,798원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,605,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;269,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;67,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;846,100원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;84,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,894,180원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,851,788원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;299,580원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;74,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,032,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;103,208원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,481,545원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,457,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;359,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,230원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;90,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,507,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;150,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,542,560원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,552,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;449,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,040원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;112,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,389,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;238,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,947,640원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;2026년 연봉 실수령액 상세표&lt;/h2&gt;
&lt;h3&gt;1,000만원~2,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;80,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,950원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;752,393원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;89,020원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;43,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,950원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,320원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;827,647원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;97,170원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,950원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,720원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;0원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;902,830원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;106,682원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,110원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,320원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;132원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;976,651원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;116,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;55,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;41,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,050,587원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;125,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,124,480원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;135,416원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;63,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,290원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;536원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,197,917원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;145,441원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;67,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;50,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,110원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;711원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,271,226원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;155,552원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;71,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;13,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;892원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,344,448원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;165,447원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;75,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,057원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,417,886원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;175,352원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;79,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,910원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,222원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,491,315원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;185,518원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;83,120원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;62,910원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,408원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,564,482원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;195,403원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;87,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;65,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;16,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,730원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,573원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,637,930원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;205,339원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;91,010원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;68,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,050원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;17,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;17,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,739원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,711,328원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;215,812원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;71,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,952원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,784,188원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;226,709원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;98,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;74,890원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,090원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,209원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,856,624원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;237,616원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;102,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;77,890원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,230원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,466원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,929,051원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;248,936원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;106,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;80,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,756원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,001,064원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;259,853원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;110,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;83,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,020원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,013원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,073,480원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;270,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;114,760원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;86,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,270원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,145,917원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;3,000만원~4,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;3,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;282,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;118,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;89,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,217,920원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;293,184원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;122,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;92,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,200원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,340원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,834원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,290,149원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;308,372원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;126,630원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,860원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,482원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,358,295원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;324,993원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;130,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;98,860원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,530원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,253원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,425,007원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;340,597원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;134,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;101,850원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;13,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;25,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,937원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,492,736원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;356,212원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;138,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;104,850원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;13,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;26,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;66,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,622원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,560,455원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;373,295원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;142,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;107,850원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,170원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;26,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;74,350원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,435원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,626,705원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;388,899원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;146,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;110,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;81,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,119원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,694,434원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;404,504원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;150,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;113,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,950원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;28,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;88,040원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,804원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,762,163원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;420,763원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;154,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;116,830원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,350원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,430원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,543원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,829,237원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;439,611원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;158,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;119,830원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;105,210원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,521원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,893,722원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;458,439원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;162,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;122,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;16,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;114,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,499원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,958,228원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;480,032원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;166,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;125,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;16,530원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;127,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,722원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,019,968원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;498,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;170,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;128,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;16,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;137,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;13,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,084,453원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;517,698원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;174,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;131,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;17,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;146,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;14,678원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,148,969원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;536,606원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;178,120원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;134,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;17,710원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;156,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;15,656원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,213,394원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;561,583원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;182,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;137,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,100원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;34,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;171,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;17,193원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,271,750원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;581,421원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;186,010원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;140,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;182,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,261원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,335,246원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;604,246원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;190,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;143,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;18,890원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;195,960원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,596원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,395,754원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;624,064원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;193,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;146,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,280원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;206,640원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20,664원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,459,269원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;5,000만원~6,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;5,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;643,892원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;197,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;149,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;19,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;37,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;217,320원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,732원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,522,775원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;663,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;201,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;152,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20,070원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;228,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,800원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,586,230원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;683,588원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;205,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;155,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20,460원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;238,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,868원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,649,745원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;703,436원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;209,760원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;158,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;20,860원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;249,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,936원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,713,231원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;726,394원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;213,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;161,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;40,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;262,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;26,284원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,773,606원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;749,566원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;217,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;164,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;21,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;41,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;276,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,656원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,833,767원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;769,988원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;221,630원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;167,760원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,040원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;287,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;28,778원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,896,679원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;790,460원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;225,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;170,760원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,430원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;299,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,959,540원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;810,872원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;229,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;173,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;22,830원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;43,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;310,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,022원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,022,461원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;831,314원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;233,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;176,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;321,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,144원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,085,353원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;854,877원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;237,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;179,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;23,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;335,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,547원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,145,123원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;875,289원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;241,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;182,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,010원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;346,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;34,669원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,208,044원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;895,721원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;245,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;185,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;46,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;357,910원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,791원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,270,946원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;916,183원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;249,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;188,730원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;24,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;369,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36,913원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,333,817원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;936,605원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;253,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;191,730원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;25,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;380,350원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,035원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,396,728원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;957,037원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;257,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;194,720원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;25,580원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;48,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;391,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,157원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,459,630원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;980,589원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;261,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;197,720원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;25,980원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;49,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;405,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;40,559원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,519,411원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,001,011원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;265,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;200,720원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;26,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;50,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;416,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;41,681원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,582,322원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,021,433원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;269,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;203,710원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;26,760원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;428,030원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,803원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,645,234원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,041,905원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;273,120원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;206,710원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,160원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;439,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;43,925원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,708,095원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;7,000만원~8,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;7,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,062,317원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;277,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;209,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,550원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;450,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,047원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,771,016원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,106,442원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;281,010원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;212,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;27,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;483,220원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;48,322원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,810,225원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,139,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;285,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;215,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;28,340원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;505,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;50,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,860,480원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,167,555원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;288,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;218,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;28,730원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;54,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;524,050원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,405원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,915,778원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,195,609원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;292,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;221,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,130원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;55,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;542,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;54,219원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,971,058원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,223,684원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;296,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;224,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;560,340원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,034원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,026,316원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,251,718원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;300,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;227,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;29,910원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;578,480원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;57,848원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,081,615원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,277,582원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;230,670원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,310원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;57,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;596,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,662원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,139,085원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,306,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;233,670원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;30,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;58,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;619,300원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;61,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,193,340원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,330,765원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;236,670원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,090원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;637,450원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;63,745원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,252,568원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,354,869원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;239,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;60,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;655,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;65,559원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,311,798원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,378,964원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;242,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;31,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;60,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;673,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;67,374원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,371,036원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,403,048원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;245,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,270원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;61,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;691,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;69,188원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,430,285원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,427,162원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;248,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;32,670원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;62,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;710,020원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;71,002원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,489,505원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,456,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;251,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;62,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;732,700원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;73,270원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,543,760원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,480,335원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;254,640원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,450원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;63,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;750,850원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;75,085원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,602,998원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,504,449원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;257,640원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;33,850원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;64,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;768,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;76,899원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,662,218원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,528,534원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;260,630원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;34,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;65,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;787,140원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;78,714원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,721,466원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,552,638원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;263,630원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;34,640원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;65,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;805,280원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;80,528원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,780,695원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,576,732원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;266,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,030원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;66,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;823,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;82,342원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,839,935원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;9,000만원~10,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;9,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,605,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;269,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;67,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;846,100원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;84,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,894,180원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,629,925원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;272,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;35,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;68,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;864,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;86,425원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,953,408원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,654,019원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;275,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36,210원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;69,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;882,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;88,239원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,012,648원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,678,124원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;278,610원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;36,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;69,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;900,540원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;90,054원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,071,876원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,702,208원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;281,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;37,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;70,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;918,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;91,868원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,131,125원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,726,312원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;284,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;37,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;71,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;936,820원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;93,682원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,190,355원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,755,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;287,600원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;37,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;72,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;959,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,950원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,244,590원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,779,495원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;290,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,180원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;72,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;977,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;97,765원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,303,838원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,803,599원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;293,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;73,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;995,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;99,579원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,363,068원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,827,704원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;296,580원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;38,970원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;74,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,013,940원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;101,394원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,422,296원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,851,788원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;299,580원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;74,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,032,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;103,208원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,481,545원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,876,488원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;39,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;75,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,050,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;105,078원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,540,179원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,906,388원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;305,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;40,150원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;76,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,074,180원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;107,418원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,593,612원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,931,120원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;308,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;40,540원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;77,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,092,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;109,290원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,652,213원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,955,832원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;311,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;40,930원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;77,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,111,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;111,162원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,710,835원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,980,584원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;314,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;41,330원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;78,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,130,340원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;113,034원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,769,416원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,005,306원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;317,550원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;41,720원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;79,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,149,060원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;114,906원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,828,027원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,030,038원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;320,550원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,120원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;80,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,167,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;116,778원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,886,629원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,059,928원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;323,550원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;81,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,191,180원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;119,118원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,940,072원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,084,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;326,540원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;42,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;81,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,209,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;120,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,998,683원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;11,000만원~12,900만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;11,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,109,382원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;329,540원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;43,300원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;82,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,228,620원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;122,862원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,057,285원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,138,657원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;332,530원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;43,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;83,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,251,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;125,147원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,111,343원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,172,827원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;335,530원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;84,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,278,770원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;127,877원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,160,506원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,206,987원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;338,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,480원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;84,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,306,070원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;130,607원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,209,680원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,248,669원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;341,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;44,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;85,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,340,190원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;134,019원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,251,331원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,282,839원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;344,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;86,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,367,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;136,749원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,300,494원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,316,999원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;347,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;45,660원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;86,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,394,790원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;139,479원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,349,668원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,351,179원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;350,510원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;46,050원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;87,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,422,090원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;142,209원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,398,821원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,385,339원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;353,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;46,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;88,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,449,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;144,939원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,447,994원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;9,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,419,509원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;356,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;46,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;89,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,476,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;147,669원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,497,158원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,457,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;359,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,230원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;90,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,507,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;150,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,542,560원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,520,521원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;362,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;47,630원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;90,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,560,983원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;156,098원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,562,812원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,556,094원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;365,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;48,020원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;91,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,589,567원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;158,957원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,610,573원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,591,675원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;368,480원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;48,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;92,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,618,150원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;161,815원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,658,325원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,627,266원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;371,480원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;48,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;93,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,646,733원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;164,673원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,706,067원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,662,829원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;374,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;49,200원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;93,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,675,317원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;167,532원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,753,838원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,698,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;377,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;49,590원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;94,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,703,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;170,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,801,580원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,734,011원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;380,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;49,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,732,483원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;173,248원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,849,322원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,769,574원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;383,460원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;50,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;95,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,761,067원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;176,107원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,897,093원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,805,165원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;386,460원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;50,780원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;96,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,789,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;178,965원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,944,835원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;13,000만원~15,000만원&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 연봉&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월급여&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제액계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;국민연금&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;건강보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;장기요양&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;고용보험&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;지방소득세&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;월 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;13,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,840,746원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;389,450원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,170원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;97,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,818,233원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;181,823원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,992,587원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;10,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,876,319원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;392,450원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,560원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;98,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,846,817원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;184,682원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,040,348원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,911,910원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;395,450원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;51,960원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;98,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,875,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;187,540원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,088,090원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,947,491원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;398,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,350원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;99,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,903,983원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;190,398원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,135,842원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,983,064원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;401,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;52,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;100,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,932,567원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;193,257원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,183,603원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,018,645원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;404,430원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,140원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;101,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,961,150원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;196,115원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,231,355원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,054,236원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;407,430원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,530원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;102,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,989,733원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;198,973원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,279,097원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,089,799원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;410,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;53,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;102,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,018,317원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;201,832원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,326,868원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,125,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;413,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;54,320원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;103,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,046,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;204,690원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,374,610원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,583,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,160,981원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;416,420원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;54,710원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;104,250원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,075,483원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;207,548원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,422,352원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,666,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,196,554원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;419,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;55,110원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;104,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,104,067원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;210,407원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,470,113원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,100만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,750,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,232,135원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;422,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;55,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;105,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,132,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;213,265원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,517,865원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,200만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,833,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,267,716원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;425,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;55,890원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;106,500원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,161,233원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;216,123원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,565,617원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,300만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;11,916,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,303,299원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;428,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,290원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;107,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,189,817원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;218,982원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,613,368원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,400만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,338,880원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;431,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;56,680원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;107,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,218,400원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;221,840원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,661,120원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,500만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,083,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,374,461원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;434,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;57,070원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;108,750원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,246,983원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;224,698원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,708,872원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,600만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,166,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,410,044원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;437,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;57,470원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;109,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,275,567원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;227,557원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,756,623원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,700만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,250,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,445,615원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;440,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;57,860원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;110,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,304,150원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;230,415원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,804,385원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,800만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,333,333원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,481,216원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;443,380원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;58,260원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;111,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,332,733원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;233,273원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,852,117원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14,900만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,416,667원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,516,779원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;446,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;58,650원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;111,740원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,361,317원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;236,132원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,899,888원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15,000만원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;12,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,552,360원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;302,570원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;449,370원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;59,040원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;112,490원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,389,900원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;238,990원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;8,947,640원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;많이 찾는 구간 정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2026년 연봉 5,000만원 실수령액은 월 3,522,775원이다. 공제액계는 643,892원이고, 소득세와 지방소득세 합계는 239,052원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 6,000만원 실수령액은 월 4,145,123원이다. 공제액계는 854,877원이고, 소득세와 지방소득세 합계는 369,017원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 7,000만원 실수령액은 월 4,771,016원이다. 공제액계는 1,062,317원이고, 소득세와 지방소득세 합계는 495,517원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 8,000만원 실수령액은 월 5,311,798원이다. 공제액계는 1,354,869원이고, 소득세와 지방소득세 합계는 721,149원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 9,000만원 실수령액은 월 5,894,180원이다. 공제액계는 1,605,820원이고, 소득세와 지방소득세 합계는 930,710원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 10,000만원 실수령액은 월 6,481,545원이다. 공제액계는 1,851,788원이고, 소득세와 지방소득세 합계는 1,135,288원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 12,000만원 실수령액은 월 7,542,560원이다. 공제액계는 2,457,440원이고, 소득세와 지방소득세 합계는 1,658,140원이다.&lt;/li&gt;
&lt;li&gt;2026년 연봉 15,000만원 실수령액은 월 8,947,640원이다. 공제액계는 3,552,360원이고, 소득세와 지방소득세 합계는 2,628,890원이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2026년 연봉 실수령액이 실제와 다른 이유&lt;/h2&gt;
&lt;p&gt;실제 급여명세서는 이 표와 다를 수 있다. 가장 큰 이유는 부양가족 수, 자녀 세액공제, 비과세 식대나 차량유지비 같은 비과세 항목, 상여금 지급 방식, 원천징수 80% 또는 120% 선택 여부가 다르기 때문이다.&lt;/p&gt;
&lt;p&gt;또 하나는 국민연금 상한액이다. 이 글은 2026년 상반기 기준인 637만원 상한을 반영했다. 2026년 7월 이후에는 기준소득월액 상한이 659만원으로 올라갈 예정이어서, 연봉 7,700만원 이상 구간의 실수령액은 소폭 달라질 수 있다.&lt;/p&gt;
&lt;h2&gt;정리&lt;/h2&gt;
&lt;p&gt;2026년 연봉 실수령액은 연봉만 보고 단순하게 계산하면 오차가 생긴다. 4대보험 요율과 근로소득 간이세액표를 같이 봐야 하고, 특히 부양가족 수와 비과세 항목에 따라 월 실수령액이 달라진다. 검색용 표로 빠르게 확인한 뒤, 실제 급여명세서는 회사 급여항목과 원천징수 설정까지 함께 확인하는 것이 맞다.&lt;/p&gt;</description>
      <category>ETC</category>
      <category>2026년연봉실수령액</category>
      <category>2026실수령액</category>
      <category>4대보험</category>
      <category>근로소득간이세액표</category>
      <category>연봉1억실수령액</category>
      <category>연봉5000실수령액</category>
      <category>연봉6000실수령액</category>
      <category>연봉7000실수령액</category>
      <category>연봉실수령액</category>
      <category>월급실수령액</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/210</guid>
      <comments>https://dev-log-island.tistory.com/210#entry210comment</comments>
      <pubDate>Sun, 15 Mar 2026 11:15:29 +0900</pubDate>
    </item>
    <item>
      <title>2026년 월급 구간별 실수령액 정리: 세전 200만원부터 1,000만원까지</title>
      <link>https://dev-log-island.tistory.com/209</link>
      <description>&lt;p&gt;2026년 월급 실수령액은 4대보험과 원천세 기준을 같이 봐야 한다. 2026년 최저임금은 시급 10,320원, 월 환산액 2,156,880원이다. 국민연금은 2026년부터 보험료율이 9.5%로 올라 사업장가입자 기준 근로자와 사용자가 각각 4.75%씩 부담한다. 국민연금 기준소득월액 상한은 2026년 1&lt;del&gt;6월 637만원, 7&lt;/del&gt;12월 659만원이다. 직장 건강보험료율은 7.19%로 근로자와 사용자가 절반씩 부담하고, 장기요양보험료율은 0.9448%다. 고용보험 실업급여 보험료율은 1.8%로 근로자 부담은 0.9%다. (&lt;a href=&quot;https://www.moel.go.kr/news/enews/report/enewsView.do?news_seq=18144&amp;amp;utm_source=chatgpt.com&quot; title=&quot;2026년 적용 최저임금 시간급 10320원&quot;&gt;고용노동부&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;아래 표는 &lt;strong&gt;공제대상가족 1명(본인만), 8세 이상 20세 이하 자녀 없음, 비과세 수당 없음, 원천징수 100%&lt;/strong&gt;를 가정한 &lt;strong&gt;2026년 1~6월 기준 예상 실수령액&lt;/strong&gt;이다. 소득세는 국세청 근로소득 간이세액표를, 지방소득세는 소득세의 10%를 적용했다. 국세청은 간이세액표가 &lt;strong&gt;비과세 제외 월급여액&lt;/strong&gt;과 &lt;strong&gt;공제대상가족 수&lt;/strong&gt;에 따라 달라지고, &lt;strong&gt;80%·100%·120% 원천징수 비율 선택&lt;/strong&gt;이 가능하다고 안내한다. (&lt;a href=&quot;https://www.nts.go.kr/nts/cm/cntnts/cntntsView.do?cntntsId=7862&amp;amp;mi=6583&quot; title=&quot;근로소득&quot;&gt;국세청&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 월급 구간별 실수령액&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;세전 월급&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;공제 합계&lt;/th&gt;
&lt;th align=&quot;right&quot;&gt;예상 실수령액&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;2,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;215,810원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,784,190원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,156,880원(최저임금 월 환산)&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;236,300원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,920,580원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;282,080원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,217,920원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;373,290원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,626,710원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;480,030원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,019,970원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;604,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,395,760원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4,500,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;726,390원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;3,773,610원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;854,870원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,145,130원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,139,520원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;4,860,480원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,456,240원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;5,543,760원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1,755,410원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,244,590원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,059,920원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;6,940,080원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000,000원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2,457,440원&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;7,542,560원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;검색이 많은 구간만 보면 &lt;strong&gt;2026년 월급 300만원 실수령액은 2,626,710원&lt;/strong&gt;, &lt;strong&gt;월급 400만원 실수령액은 3,395,760원&lt;/strong&gt;, &lt;strong&gt;월급 500만원 실수령액은 4,145,130원&lt;/strong&gt;, &lt;strong&gt;월급 600만원 실수령액은 4,860,480원&lt;/strong&gt; 수준이다. &lt;strong&gt;2026 최저임금 실수령액&lt;/strong&gt;은 월 환산 기준으로 약 &lt;strong&gt;1,920,580원&lt;/strong&gt;으로 보면 된다. 위 표는 공식 보험료율과 국세청 간이세액표를 바탕으로 계산한 예상치다. (&lt;a href=&quot;https://www.moel.go.kr/news/enews/report/enewsView.do?news_seq=18144&amp;amp;utm_source=chatgpt.com&quot; title=&quot;2026년 적용 최저임금 시간급 10320원&quot;&gt;고용노동부&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 7월 이후 달라지는 점&lt;/h2&gt;
&lt;p&gt;2026년 7월부터는 국민연금 기준소득월액 상한이 &lt;strong&gt;637만원에서 659만원으로 오른다&lt;/strong&gt;. 그래서 &lt;strong&gt;월 659만원 초과 구간&lt;/strong&gt;은 1&lt;del&gt;6월보다 실수령액이 &lt;strong&gt;최대 10,450원&lt;/strong&gt; 더 줄어든다. 예를 들어 &lt;strong&gt;세전 월급 700만원&lt;/strong&gt;은 1&lt;/del&gt;6월 예상 실수령액이 &lt;strong&gt;5,543,760원&lt;/strong&gt;이지만, 7월 이후에는 약 &lt;strong&gt;5,533,310원&lt;/strong&gt; 수준으로 내려간다. 고소득 구간은 하반기 계산을 따로 보는 편이 맞다. (&lt;a href=&quot;https://www.nps.or.kr/pnsinfo/ntpsklg/getOHAF0016M0.do&quot; title=&quot;https://www.nps.or.kr/pnsinfo/ntpsklg/getOHAF0016M0.do&quot;&gt;국민연금공단&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;실제 급여명세서와 차이가 나는 이유&lt;/h2&gt;
&lt;p&gt;실제 급여명세서가 표와 다른 이유는 대부분 아래 항목 때문이다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;비과세 식대, 차량유지비, 복리후생비가 포함된 경우&lt;/li&gt;
&lt;li&gt;공제대상가족 수와 자녀 수가 다른 경우&lt;/li&gt;
&lt;li&gt;원천징수 80%·100%·120% 선택이 다른 경우&lt;/li&gt;
&lt;li&gt;상여금, 성과급, 연말정산 환급·추징이 반영된 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;국세청 기준상 근로소득 간이세액표는 &lt;strong&gt;비과세 제외 급여&lt;/strong&gt;, &lt;strong&gt;가족 수&lt;/strong&gt;, &lt;strong&gt;자녀 수&lt;/strong&gt;, &lt;strong&gt;원천징수 비율&lt;/strong&gt;에 따라 달라지고, &lt;strong&gt;상여는 별도 방식으로 원천징수&lt;/strong&gt;될 수 있다. 그래서 블로그 표와 회사 급여명세서가 완전히 같지 않은 경우가 흔하다. (&lt;a href=&quot;https://www.nts.go.kr/nts/cm/cntnts/cntntsView.do?cntntsId=7862&amp;amp;mi=6583&quot; title=&quot;근로소득&quot;&gt;국세청&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;정리&lt;/h2&gt;
&lt;p&gt;2026년 월급 실수령액을 볼 때 핵심은 단순히 세전 월급만 보는 것이 아니라, &lt;strong&gt;국민연금 인상분&lt;/strong&gt;, &lt;strong&gt;건강보험·장기요양보험료율&lt;/strong&gt;, &lt;strong&gt;고용보험&lt;/strong&gt;, &lt;strong&gt;근로소득 간이세액표 적용 기준&lt;/strong&gt;을 함께 확인하는 것이다. 비교용으로는 위 표가 충분하지만, 실제 수령액 확인은 급여명세서의 &lt;strong&gt;비과세 항목&lt;/strong&gt;과 &lt;strong&gt;가족 공제 기준&lt;/strong&gt;까지 같이 봐야 정확하다.&lt;/p&gt;</description>
      <category>ETC</category>
      <category>2026실수령액</category>
      <category>2026월급실수령액</category>
      <category>2026최저임금</category>
      <category>4대보험</category>
      <category>근로소득세</category>
      <category>세전세후월급</category>
      <category>월급300만원실수령액</category>
      <category>월급500만원실수령액</category>
      <category>월급실수령액</category>
      <category>최저임금실수령액</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/209</guid>
      <comments>https://dev-log-island.tistory.com/209#entry209comment</comments>
      <pubDate>Sat, 14 Mar 2026 23:41:05 +0900</pubDate>
    </item>
    <item>
      <title>2026 정보처리기사 시험일정 정리: 필기&amp;middot;실기 접수일, 시험일, 합격 발표, 준비 팁</title>
      <link>https://dev-log-island.tistory.com/208</link>
      <description>&lt;p&gt;정보처리기사 시험일정을 찾는 경우 가장 먼저 확인할 항목은 &lt;strong&gt;필기 원서접수일, 필기시험일, 실기 원서접수일, 실기시험일, 최종합격자 발표일&lt;/strong&gt;이다. 2026년 기준 정보처리기사는 Q-Net 기준 정기 기사 &lt;strong&gt;1회, 2회, 3회&lt;/strong&gt;로 시행되며, 필기 수수료는 &lt;strong&gt;19,400원&lt;/strong&gt;, 실기 수수료는 &lt;strong&gt;22,600원&lt;/strong&gt;이다. 필기는 &lt;strong&gt;객관식 4지 택일형&lt;/strong&gt;, 실기는 &lt;strong&gt;필답형 2시간 30분&lt;/strong&gt;으로 운영된다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026 정보처리기사 시험일정&lt;/h2&gt;
&lt;h3&gt;정기 기사 1회&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;필기 원서접수: &lt;strong&gt;2026.01.12 ~ 2026.01.15&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기 빈자리접수: &lt;strong&gt;2026.01.24 ~ 2026.01.25&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기시험: &lt;strong&gt;2026.01.30 ~ 2026.03.03&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기 합격(예정자) 발표: &lt;strong&gt;2026.03.11&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기 원서접수: &lt;strong&gt;2026.03.23 ~ 2026.03.26&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기 빈자리접수: &lt;strong&gt;2026.04.12 ~ 2026.04.13&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기시험: &lt;strong&gt;2026.04.18 ~ 2026.05.06&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;최종합격자 발표: &lt;strong&gt;2026.06.12&lt;/strong&gt; (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;정기 기사 2회&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;필기 원서접수: &lt;strong&gt;2026.04.20 ~ 2026.04.23&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기 빈자리접수: &lt;strong&gt;2026.05.03 ~ 2026.05.04&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기시험: &lt;strong&gt;2026.05.09 ~ 2026.05.29&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기 합격(예정자) 발표: &lt;strong&gt;2026.06.10&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기 원서접수: &lt;strong&gt;2026.06.22 ~ 2026.06.25&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기시험: &lt;strong&gt;2026.07.18 ~ 2026.08.05&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;최종합격자 발표: &lt;strong&gt;2026.09.11&lt;/strong&gt; (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;정기 기사 3회&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;필기 원서접수: &lt;strong&gt;2026.07.20 ~ 2026.07.23&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기시험: &lt;strong&gt;2026.08.07 ~ 2026.09.01&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;필기 합격(예정자) 발표: &lt;strong&gt;2026.09.09&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기 원서접수: &lt;strong&gt;2026.09.21 ~ 2026.09.28&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;실기시험: &lt;strong&gt;2026.10.24 ~ 2026.11.13&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;최종합격자 발표: &lt;strong&gt;2026.12.18&lt;/strong&gt; (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;원서접수 시간은 &lt;strong&gt;접수 첫날 10:00부터 마지막 날 18:00까지&lt;/strong&gt;이고, 필기 합격예정자와 최종합격자 발표시간은 &lt;strong&gt;해당일 09:00&lt;/strong&gt;다. Q-Net은 시험 일정이 종목별·지역별로 달라질 수 있으므로, 회차별 수험자 안내 공지를 함께 확인하라고 안내한다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;정보처리기사 필기와 실기 구성&lt;/h2&gt;
&lt;p&gt;정보처리기사 필기 과목은 &lt;strong&gt;소프트웨어 설계, 소프트웨어 개발, 데이터베이스 구축, 프로그래밍언어활용, 정보시스템구축관리&lt;/strong&gt; 5과목이다. 필기는 &lt;strong&gt;과목당 20문항, 과목당 30분&lt;/strong&gt;이며, 실기 과목은 &lt;strong&gt;정보처리 실무&lt;/strong&gt;다. 실기 검정방법은 &lt;strong&gt;필답형 2시간 30분&lt;/strong&gt;이다. 합격기준은 필기가 &lt;strong&gt;과목당 40점 이상이면서 전과목 평균 60점 이상&lt;/strong&gt;, 실기가 &lt;strong&gt;100점 만점 기준 60점 이상&lt;/strong&gt;이다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Q-Net 종목 상세 페이지에는 정보처리기사 &lt;strong&gt;2026년 출제기준(2026.1.1 ~ 2026.12.31)&lt;/strong&gt;이 별도로 안내돼 있다. 따라서 최신 범위로 준비하려면 예전 요약본보다 Q-Net 출제기준 기준으로 범위를 확인하는 편이 맞다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;정보처리기사 필기 준비 팁&lt;/h2&gt;
&lt;p&gt;필기는 평균 60점보다 &lt;strong&gt;과락 관리&lt;/strong&gt;가 먼저다. 5과목 구조이기 때문에 특정 과목을 비워 두면 합격선에 도달해도 과락으로 탈락할 수 있다. 따라서 공부 순서는 “잘하는 과목 고득점”보다 “전 과목 40점 이상 확보”에 두는 편이 합리적이다. 이 판단은 필기 합격기준 자체에서 바로 나온다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;또한 정보처리기사 필기는 객관식이지만, 실기와 연결되는 주제가 분명하다. 필기 과목에 포함된 &lt;strong&gt;데이터베이스 구축, 프로그래밍언어활용, 정보시스템구축관리&lt;/strong&gt;는 실기 출제경향의 &lt;strong&gt;데이터 입출력 구현, SQL 응용, 프로그래밍 언어 활용, 응용 SW 기초 기술 활용&lt;/strong&gt;과 이어진다. 필기 단계에서 용어 정의와 핵심 개념을 정리해 두면 실기 전환이 수월하다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;실제 공부 방식은 단순 암기보다 &lt;strong&gt;개념-용어-차이점&lt;/strong&gt; 중심 정리가 효율적이다. 객관식 시험은 비슷한 보기 사이에서 정답을 가르는 경우가 많기 때문에, 오답노트도 문제 단위보다 &lt;strong&gt;선택지 단위&lt;/strong&gt;로 정리하는 편이 낫다. 이 방식은 객관식 4지 택일형 구조에 맞는 준비법이다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;정보처리기사 실기 준비 팁&lt;/h2&gt;
&lt;p&gt;실기는 필답형이기 때문에 단답식 암기만으로는 부족하다. Q-Net이 안내한 실기 출제경향에는 &lt;strong&gt;현행 시스템 분석 및 요구사항 확인, 데이터 입출력 구현, 통합 구현, 서버프로그램 구현, 인터페이스 구현, 화면설계, 애플리케이션 테스트, SQL 응용, 소프트웨어 개발 보안 구축, 프로그래밍 언어 활용, 응용 SW 기초 기술 활용, 제품 소프트웨어 패키징&lt;/strong&gt; 등이 포함된다. 범위가 넓기 때문에 “정의 암기”보다 &lt;strong&gt;개념 설명, 절차 서술, 비교형 답안 작성&lt;/strong&gt; 연습이 필요하다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;실기 준비에서는 &lt;strong&gt;답안 형식&lt;/strong&gt;이 중요하다. 필답형은 알고 있어도 문장으로 재현하지 못하면 점수화가 어렵다. 따라서 개념 하나를 볼 때도 “정의 → 핵심 키워드 → 절차 → 예시” 순으로 정리해 두는 편이 유리하다. 시험시간이 2시간 30분으로 고정돼 있으므로, 실제 답안 분량을 기준으로 시간 배분 연습도 같이 해야 한다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;접수 전에 확인할 사항&lt;/h2&gt;
&lt;p&gt;정보처리기사는 &lt;strong&gt;기사 등급&lt;/strong&gt; 종목이므로 응시자격 확인이 필요하다. Q-Net은 별도 &lt;strong&gt;응시자격 자가진단&lt;/strong&gt; 메뉴를 제공하고, 실기 접수안내에서도 기사 종목은 응시자격이 제한되며 &lt;strong&gt;응시자격 서류 심사가 끝난 사람만 실기시험 접수 가능&lt;/strong&gt;하다고 안내한다. 접수 전에 응시자격과 제출서류를 먼저 확인하는 편이 안전하다. (&lt;a href=&quot;https://www.q-net.or.kr/rcv013.do?gId=&amp;amp;gSite=Q&amp;amp;id=rcv01303&quot; title=&quot;실기시험 접수안내 | Q-net&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;실기시험은 &lt;strong&gt;시험일자와 장소를 원서접수 시 직접 선택&lt;/strong&gt;하며, Q-Net은 &lt;strong&gt;응시수요가 높은 지역·시험일자·시험장은 조기 마감될 수 있다&lt;/strong&gt;고 안내한다. 따라서 정보처리기사 실기 접수는 접수 시작 전에 사진 등록, 회원정보 확인, 희망 지역 정리를 끝내 두는 편이 좋다. (&lt;a href=&quot;https://www.q-net.or.kr/rcv013.do?gId=&amp;amp;gSite=Q&amp;amp;id=rcv01303&quot; title=&quot;실기시험 접수안내 | Q-net&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;정리&lt;/h2&gt;
&lt;p&gt;2026년 정보처리기사 시험은 정기 기사 &lt;strong&gt;1회, 2회, 3회&lt;/strong&gt;로 운영된다. 일정 확인은 Q-Net 종목 상세 페이지 기준으로 하는 것이 가장 정확하며, 준비 방향은 &lt;strong&gt;필기 과락 방지&lt;/strong&gt;, &lt;strong&gt;실기 서술형 답안 연습&lt;/strong&gt;, &lt;strong&gt;응시자격 및 접수 사전 점검&lt;/strong&gt;으로 정리할 수 있다. 일정 자체보다 접수 타이밍과 실기 준비 방식이 실제 체감 난도를 좌우하는 편이다. (&lt;a href=&quot;https://www.q-net.or.kr/crf005.do?gId=&amp;amp;gSite=Q&amp;amp;id=crf00503s02&amp;amp;jmCd=1320&amp;amp;jmInfoDivCcd=B0&quot; title=&quot;www.q-net.or.kr&quot;&gt;Q-Net&lt;/a&gt;)&lt;/p&gt;</description>
      <category>ETC</category>
      <category>2026정보처리기사</category>
      <category>Qnet정보처리기사</category>
      <category>정보처리기사</category>
      <category>정보처리기사공부법</category>
      <category>정보처리기사시험일정</category>
      <category>정보처리기사실기</category>
      <category>정보처리기사자격증</category>
      <category>정보처리기사접수</category>
      <category>정보처리기사필기</category>
      <category>정보처리기사합격팁</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/208</guid>
      <comments>https://dev-log-island.tistory.com/208#entry208comment</comments>
      <pubDate>Sat, 14 Mar 2026 21:34:46 +0900</pubDate>
    </item>
    <item>
      <title>2026년 리눅스마스터 2급 시험일정 총정리 | 리눅스 마스터 2급 1차&amp;middot;2차 접수일, 응시료, 합격기준</title>
      <link>https://dev-log-island.tistory.com/207</link>
      <description>&lt;p&gt;리눅스마스터 2급은 KAIT가 운영하는 공인민간자격이며, 1차 온라인시험과 2차 필기시험으로 나뉜다. 1차는 객관식 50문항 60분, 2차는 객관식 80문항 100분이다. 합격 기준은 1차 60점 이상, 2차 60점 이상이며 2차는 과목당 40% 미만 과락이 있다. 응시자격은 1차 제한 없고, 2차는 1차 합격자만 성적공개일 기준 2년 이내 응시할 수 있다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 리눅스마스터 2급 시험일정&lt;/h2&gt;
&lt;p&gt;2026년 리눅스마스터 2급 공식 일정은 아래와 같다. 1차는 회차별 온라인시험이고, 합격자 발표는 &lt;code&gt;시험종료 즉시&lt;/code&gt;로 안내돼 있다. 2차는 오프라인 필기이며 별도 발표일이 있다. (&lt;a href=&quot;https://www.ihd.or.kr/guidecert1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;회차&lt;/th&gt;
&lt;th&gt;차수&lt;/th&gt;
&lt;th&gt;접수기간&lt;/th&gt;
&lt;th&gt;시험일&lt;/th&gt;
&lt;th&gt;합격발표&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;2601회&lt;/td&gt;
&lt;td&gt;1차&lt;/td&gt;
&lt;td&gt;2026.01.26.(월) ~ 02.04.(수)&lt;/td&gt;
&lt;td&gt;2026.01.27.(화) ~ 02.05.(목)&lt;/td&gt;
&lt;td&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2601회&lt;/td&gt;
&lt;td&gt;2차&lt;/td&gt;
&lt;td&gt;2026.01.27.(화) ~ 02.06.(금)&lt;/td&gt;
&lt;td&gt;2026.03.14.(토)&lt;/td&gt;
&lt;td&gt;2026.04.03.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2602회&lt;/td&gt;
&lt;td&gt;1차&lt;/td&gt;
&lt;td&gt;2026.04.06.(월) ~ 04.17.(금)&lt;/td&gt;
&lt;td&gt;2026.05.02.(토)&lt;/td&gt;
&lt;td&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2602회&lt;/td&gt;
&lt;td&gt;2차&lt;/td&gt;
&lt;td&gt;2026.04.28.(화) ~ 05.08.(금)&lt;/td&gt;
&lt;td&gt;2026.06.13.(토)&lt;/td&gt;
&lt;td&gt;2026.07.03.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2603회&lt;/td&gt;
&lt;td&gt;1차&lt;/td&gt;
&lt;td&gt;2026.07.06.(월) ~ 07.17.(금)&lt;/td&gt;
&lt;td&gt;2026.08.01.(토)&lt;/td&gt;
&lt;td&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2603회&lt;/td&gt;
&lt;td&gt;2차&lt;/td&gt;
&lt;td&gt;2026.07.28.(화) ~ 08.07.(금)&lt;/td&gt;
&lt;td&gt;2026.09.12.(토)&lt;/td&gt;
&lt;td&gt;2026.10.09.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2604회&lt;/td&gt;
&lt;td&gt;1차&lt;/td&gt;
&lt;td&gt;2026.10.05.(월) ~ 10.16.(금)&lt;/td&gt;
&lt;td&gt;2026.10.31.(토)&lt;/td&gt;
&lt;td&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2604회&lt;/td&gt;
&lt;td&gt;2차&lt;/td&gt;
&lt;td&gt;2026.10.27.(화) ~ 11.06.(금)&lt;/td&gt;
&lt;td&gt;2026.12.12.(토)&lt;/td&gt;
&lt;td&gt;2026.12.31.(목)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;2차 오프라인 시험은 시험일 5일 전부터 수험표를 출력할 수 있고, 시험실은 입실완료시간 이후 절대 입실할 수 없다. 공식 일정표상 2급 2차 시험시간은 100분으로 안내된다. (&lt;a href=&quot;https://www.ihd.or.kr/guidecert1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;리눅스마스터 2급 응시료·응시지역·합격기준&lt;/h2&gt;
&lt;p&gt;응시료는 1차 22,000원, 2차 44,000원이다. 1차는 온라인 접속이 가능한 모든 지역에서 응시할 수 있고, 2차는 서울·부산·대구·광주·대전·인천·수원·제주에서 시행된다. 다만 응시지역은 운영상황에 따라 변경될 수 있다. 자격증 발급 수수료는 6,300원이며 정보이용료는 별도다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;정리하면 합격선은 단순하다. 1차는 60점 이상, 2차는 60점 이상이면서 과목당 40% 미만 과락이 없어야 한다. 학점은행제 기준으로는 2급 취득 시 일반선택 5학점 인정도 가능하다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;접수 전에 꼭 확인할 운영 포인트&lt;/h2&gt;
&lt;p&gt;2026년에는 1차 온라인시험 운영 공지를 반드시 같이 봐야 한다. 협회는 2026년 1월 공지에서 비대면 온라인 시험에 웹캠 사용을 필수로 적용한다고 안내했고, 2026년 2월 24일에는 &lt;code&gt;리눅스마스터 2급1차 온라인시험 방식 변경안내(제2602회차부터 적용)&lt;/code&gt; 공지를 별도로 게시했다. 일정표만 보고 접수하기보다, 본인이 응시하는 회차의 온라인시험 공지까지 같이 확인하는 편이 안전하다. (&lt;a href=&quot;https://ihd.or.kr/noticeview.do?board_no=5938&amp;amp;utm_source=chatgpt.com&quot; title=&quot;공지사항&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;1차 온라인시험은 시험 환경 관리가 매우 중요하다. 공식 응시자 유의사항에는 PC 화면이나 휴대폰 화면 공유가 끊기면 부정행위로 간주될 수 있고, 시험은 반드시 모니터 1개 화면으로 진행해야 하며, 인터넷 검색 등 외부 프로그램 사용과 시험 중 자리 비움·화장실 이용이 불가하다고 적혀 있다. 감독관의 메시지와 요청사항에 응하지 않아도 부정행위로 처리될 수 있다. (&lt;a href=&quot;https://www.ihd.or.kr/acceptnotice1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;환불과 연기 규정도 따로 봐야 한다. 일반적으로 시험일 10일 전까지는 사유 없는 연기·환불이 가능하지만, 리눅스마스터 2급 1차는 &lt;code&gt;연기 불가&lt;/code&gt;, &lt;code&gt;시험 접속 후 환불 불가&lt;/code&gt;가 FAQ에 별도 안내돼 있다. 1차는 일단 접속하면 되돌리기 어렵다고 생각하는 편이 맞다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 리눅스마스터 2급 공부 팁&lt;/h2&gt;
&lt;h3&gt;1. 1차와 2차를 같은 방식으로 준비하면 비효율적이다&lt;/h3&gt;
&lt;p&gt;1차는 50문항 60분 온라인시험이고, 2차는 80문항 100분 필기다. 게다가 2차는 과락이 있어서 총점만 보는 방식으로 공부하면 위험하다. 따라서 1차는 기본 개념과 명령어를 빠르게 판별하는 연습, 2차는 범위를 넓게 가져가며 실수 없이 점수를 확보하는 방식이 더 실용적이다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;2. 2차는 특정 파트만 파면 과락 리스크가 커진다&lt;/h3&gt;
&lt;p&gt;공식 출제기준상 2급 범위는 리눅스의 이해, 설치, 기본 명령어, 파일 시스템 관리, Shell, 프로세스 관리, 에디터, 소프트웨어 설치, 장치 설정, X 윈도, 인터넷 활용, 응용분야까지 넓다. 실제로는 “명령어만 외우기” 식으로는 불안하다. 설치와 파일시스템, 쉘, 프로세스, 네트워크·인터넷 관련 기본기를 함께 가져가는 편이 안전하다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;3. 최근 공식 기출문제에 집착하기보다, 출제기준과 가답안 확인 습관이 중요하다&lt;/h3&gt;
&lt;p&gt;KAIT FAQ 기준으로 리눅스마스터는 2021년부터 시험문제를 비공개로 전환했고, 시험 종료 3일 이후 홈페이지를 통해 가답안만 제공한다. 또 답안 확인은 시험일+3일, 시험일 이후 차주 화요일 오전 10시 이후 문제공개 메뉴에서 확인하라고 안내한다. 그래서 최근 회차의 공식 문제지를 기대하기보다, 공개된 범위와 가답안 기준으로 오답을 복기하는 편이 효율적이다. (&lt;a href=&quot;https://www.ihd.or.kr/questionlist2.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;4. 1차 온라인시험은 공부보다 장비 점검에서 떨어지는 경우를 막아야 한다&lt;/h3&gt;
&lt;p&gt;2026년 공지 기준으로 비대면 온라인 시험에는 웹캠이 필수이고, 스마트폰 카메라를 통한 본인 확인 및 시험 감독도 진행된다. 웹캠이 정상 작동하지 않으면 응시가 제한될 수 있고, 세부 운영 방식과 사전 점검 안내는 응시자에게 메일로 개별 안내된다고 돼 있다. 즉 1차는 공부 외에도 웹캠, 스마트폰, 메일 수신 상태를 미리 확인해야 한다. (&lt;a href=&quot;https://ihd.or.kr/noticeview.do?board_no=5938&amp;amp;utm_source=chatgpt.com&quot; title=&quot;공지사항&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;5. 회차는 시험일보다 최종 발표일 기준으로 고르는 편이 실용적이다&lt;/h3&gt;
&lt;p&gt;리눅스마스터 2급은 1차 합격을 바로 확인할 수 있어도, 최종적으로 자격 취득 시점을 좌우하는 것은 2차 합격 발표일이다. 2026년 최종 발표일은 4월 3일, 7월 3일, 10월 9일, 12월 31일이다. 취업 지원서 제출, 학점 인정, 자격증 활용 일정이 정해져 있다면 2차 발표일을 기준으로 회차를 고르는 편이 맞다. (&lt;a href=&quot;https://www.ihd.or.kr/guidecert1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;자주 확인하는 핵심만 정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;비전공자도 응시 가능한가?&lt;/strong&gt; 가능하다. 1차는 응시자격 제한이 없다. 다만 2차는 1차 합격 후 성적공개일 기준 2년 이내 응시해야 한다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;응시료는 얼마인가?&lt;/strong&gt; 1차 22,000원, 2차 44,000원이다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;어디서 시험을 보나?&lt;/strong&gt; 1차는 온라인 접속이 가능한 모든 지역, 2차는 서울·부산·대구·광주·대전·인천·수원·제주에서 시행된다. (&lt;a href=&quot;https://www.ihd.or.kr/introducesubject1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;가답안은 언제 확인하나?&lt;/strong&gt; 시험일+3일, 시험일 이후 차주 화요일 오전 10시 이후 문제공개 메뉴에서 확인할 수 있다. (&lt;a href=&quot;https://www.ihd.or.kr/questionlist2.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;수험표는 언제 출력하나?&lt;/strong&gt; 공식 일정 기준 시험일 5일 전부터 출력 가능하다. (&lt;a href=&quot;https://www.ihd.or.kr/guidecert1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;2026년 리눅스마스터 2급은 1차와 2차가 각각 4회 운영되며, 핵심은 단순하다. 1차는 온라인시험 운영 규정을 먼저 확인하고, 2차는 과락을 피하도록 범위를 넓게 준비하면 된다. 특히 2026년에는 1차 온라인시험 관련 공지가 계속 갱신되고 있으므로, 접수 직전에는 공식 시험일정과 공지사항을 함께 확인하는 편이 가장 안전하다. (&lt;a href=&quot;https://www.ihd.or.kr/guidecert1.do&quot; title=&quot;KAIT 자격검정&quot;&gt;ihd.or.kr&lt;/a&gt;)&lt;/p&gt;</description>
      <category>ETC</category>
      <category>2026리눅스마스터2급</category>
      <category>리눅스마스터2급</category>
      <category>리눅스마스터2급1차</category>
      <category>리눅스마스터2급2차</category>
      <category>리눅스마스터2급공부법</category>
      <category>리눅스마스터2급시험일정</category>
      <category>리눅스마스터2급응시료</category>
      <category>리눅스마스터2급접수일정</category>
      <category>리눅스마스터2급합격기준</category>
      <category>리눅스자격증</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/207</guid>
      <comments>https://dev-log-island.tistory.com/207#entry207comment</comments>
      <pubDate>Sat, 14 Mar 2026 21:29:15 +0900</pubDate>
    </item>
    <item>
      <title>2026년 SQLD 시험일정 총정리 | 원서접수&amp;middot;시험일&amp;middot;합격발표&amp;middot;공부 팁</title>
      <link>https://dev-log-island.tistory.com/206</link>
      <description>&lt;p&gt;2026년 SQLD를 준비한다면 먼저 확인할 것은 두 가지다. 하나는 회차별 원서접수 일정이고, 다른 하나는 과목별 과락 기준이다. SQLD의 공식 명칭은 &lt;strong&gt;SQL 개발자(SQL Developer)&lt;/strong&gt;이며, 2026년에는 &lt;strong&gt;연 4회&lt;/strong&gt; 시행된다. 응시자격은 &lt;strong&gt;제한 없음&lt;/strong&gt;, 응시료는 &lt;strong&gt;5만원&lt;/strong&gt;, 시험은 &lt;strong&gt;객관식 50문항·90분&lt;/strong&gt;으로 진행된다. 합격 기준은 &lt;strong&gt;총점 60점 이상&lt;/strong&gt;이며, &lt;strong&gt;과목별 40% 미만이면 과락&lt;/strong&gt;이다. 합격 후 자격의 유효기간은 &lt;strong&gt;2년&lt;/strong&gt;이고, 보수교육 이수 후 영구 전환된다. 학점은행제 기준으로는 &lt;strong&gt;6학점 인정&lt;/strong&gt;도 가능하다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 SQLD 시험 일정 한눈에&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;회차&lt;/th&gt;
&lt;th&gt;원서접수&lt;/th&gt;
&lt;th&gt;수험표 발급&lt;/th&gt;
&lt;th&gt;시험일&lt;/th&gt;
&lt;th&gt;사전점수 공개 및 재검토 접수&lt;/th&gt;
&lt;th&gt;합격 발표&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;제60회&lt;/td&gt;
&lt;td&gt;2월 2일~6일&lt;/td&gt;
&lt;td&gt;2월 20일&lt;/td&gt;
&lt;td&gt;3월 7일(토)&lt;/td&gt;
&lt;td&gt;3월 20일~24일&lt;/td&gt;
&lt;td&gt;3월 27일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제61회&lt;/td&gt;
&lt;td&gt;4월 27일~5월 1일&lt;/td&gt;
&lt;td&gt;5월 15일&lt;/td&gt;
&lt;td&gt;5월 31일(일)&lt;/td&gt;
&lt;td&gt;6월 12일~16일&lt;/td&gt;
&lt;td&gt;6월 19일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제62회&lt;/td&gt;
&lt;td&gt;7월 20일~24일&lt;/td&gt;
&lt;td&gt;8월 7일&lt;/td&gt;
&lt;td&gt;8월 22일(토)&lt;/td&gt;
&lt;td&gt;9월 4일~8일&lt;/td&gt;
&lt;td&gt;9월 11일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제63회&lt;/td&gt;
&lt;td&gt;10월 12일~16일&lt;/td&gt;
&lt;td&gt;10월 30일&lt;/td&gt;
&lt;td&gt;11월 14일(토)&lt;/td&gt;
&lt;td&gt;11월 27일~12월 1일&lt;/td&gt;
&lt;td&gt;12월 4일&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;공식 일정표 기준이며, &lt;strong&gt;원서접수 시간은 시작일 10:00부터 마감일 17:59:59까지&lt;/strong&gt;, &lt;strong&gt;시험 시작시간은 10:00&lt;/strong&gt;, &lt;strong&gt;수험표 발급은 시험 2주 전 금요일 16:00부터&lt;/strong&gt;, &lt;strong&gt;결과 발표 시간은 10:00&lt;/strong&gt;이다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/schedule.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;접수 전에 꼭 확인할 운영 규정&lt;/h2&gt;
&lt;p&gt;SQLD는 시험 공부만으로 끝나는 시험이 아니다. 접수 규정을 놓치면 응시 자체가 꼬인다. 원서를 제출한 뒤 &lt;strong&gt;2시간 이내에 수수료를 납부하지 않으면 접수가 자동 취소&lt;/strong&gt;된다. &lt;strong&gt;고사장 변경은 접수 기간 중에만 가능&lt;/strong&gt;하고, &lt;strong&gt;시험 연기제도는 운영하지 않는다&lt;/strong&gt;. 또 고사장은 &lt;strong&gt;선착순 배정&lt;/strong&gt;이라 좌석이 다 차면 접수 기간 중이라도 조기 마감될 수 있다. 환불은 &lt;strong&gt;접수 마감일 17:59:59까지 전액&lt;/strong&gt;, 이후 &lt;strong&gt;검정 시행 5일 전 17:59:59까지 50%&lt;/strong&gt;, 그 뒤에는 불가하다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/guide.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;2026년 SQLD 공부 팁&lt;/h2&gt;
&lt;h3&gt;1. 점수 구조부터 보고 공부 비중을 나누는 편이 낫다&lt;/h3&gt;
&lt;p&gt;SQLD는 &lt;strong&gt;데이터 모델링의 이해 10문항 20점&lt;/strong&gt;, &lt;strong&gt;SQL 기본 및 활용 40문항 80점&lt;/strong&gt; 구조다. 점수 비중만 보면 공부 시간은 SQL 기본 및 활용에 더 두는 것이 합리적이다. 다만 과목별 40% 미만 과락이 있어서 데이터 모델링을 버리면 안 된다. 계산상 과락을 피하기 위한 최소선은 &lt;strong&gt;데이터 모델링 4문항&lt;/strong&gt;, &lt;strong&gt;SQL 기본 및 활용 16문항&lt;/strong&gt;이다. 총점만 보면 30문항 안팎이 기준처럼 보이지만, 실제로는 과락 관리가 먼저다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;2. 범위를 암기 단위가 아니라 SQL 문장 단위로 익혀야 한다&lt;/h3&gt;
&lt;p&gt;공식 범위에는 &lt;strong&gt;SELECT, 함수, WHERE, GROUP BY/HAVING, ORDER BY, 조인, 표준 조인, 서브쿼리, 집합 연산자, 그룹 함수, 윈도우 함수, Top N 쿼리, 계층형 질의, PIVOT/UNPIVOT, 정규표현식, DML, TCL, DDL, DCL&lt;/strong&gt;이 포함된다. 범위를 보면 알 수 있듯, 이 시험은 용어만 외워서는 점수가 잘 안 나온다. 문법 요약집을 반복하는 것보다 &lt;strong&gt;직접 SQL을 써 보면서 틀린 문장을 고치는 방식&lt;/strong&gt;이 효율적이다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;3. 접수 일정도 공부 계획에 포함해야 한다&lt;/h3&gt;
&lt;p&gt;원하는 지역에서 시험을 보려면 공부 일정만 짤 것이 아니라 &lt;strong&gt;접수 시작 시각&lt;/strong&gt;도 같이 체크해야 한다. 고사장은 선착순으로 마감될 수 있고, 접수만 해둔 상태에서 결제를 미루면 &lt;strong&gt;2시간 뒤 자동 취소&lt;/strong&gt;된다. SQLD는 연 4회 시행이지만, 원하는 회차와 고사장을 놓치면 전체 계획이 흔들릴 수 있다. 접수 첫날 바로 처리하는 편이 낫다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/guide.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;4. 회차는 발표일 기준으로 고르는 게 실용적이다&lt;/h3&gt;
&lt;p&gt;2026년 기준으로 &lt;strong&gt;61회는 5월 31일 시험, 6월 19일 발표&lt;/strong&gt;, &lt;strong&gt;62회는 8월 22일 시험, 9월 11일 발표&lt;/strong&gt;, &lt;strong&gt;63회는 11월 14일 시험, 12월 4일 발표&lt;/strong&gt;다. 자격증이 필요한 시점이 정해져 있다면 시험일보다 &lt;strong&gt;합격 발표일&lt;/strong&gt;을 기준으로 회차를 고르는 편이 더 실용적이다. 취업 지원, 인사 평가, 학사 일정처럼 제출 시점이 명확한 경우에는 특히 그렇다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/schedule.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;자주 확인하는 핵심만 정리&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;비전공자도 응시 가능한가?&lt;/strong&gt; 가능하다. SQLD는 응시자격 제한이 없다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;시험은 필기만 보면 되나?&lt;/strong&gt; 그렇다. SQLD는 필기시험으로 구성되며, 필기 합격자가 최종합격자로 분류된다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;응시료는 얼마인가?&lt;/strong&gt; 5만원이다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/guide.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;합격선은 몇 점인가?&lt;/strong&gt; 총점 60점 이상이며, 과목별 40% 미만이면 과락이다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;추가로 알아둘 만한 점은?&lt;/strong&gt; 자격 취득 후 유효기간은 2년이고, 보수교육 이수 후 영구 전환된다. (&lt;a href=&quot;https://www.dataq.or.kr/www/sub/a_04.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;마무리&lt;/h2&gt;
&lt;p&gt;정리하면 2026년 SQLD 시험일은 &lt;strong&gt;3월 7일, 5월 31일, 8월 22일, 11월 14일&lt;/strong&gt;이다. 준비 방식도 단순하다. &lt;strong&gt;접수 규정은 놓치지 말고&lt;/strong&gt;, &lt;strong&gt;SQL 기본 및 활용 40문항에 무게를 두되 데이터 모델링 과락은 반드시 막는 방식&lt;/strong&gt;으로 가면 된다. 다만 공식 일정표에는 천재지변, 응시인원 증가, 감염증 확산 등 부득이한 사유가 있을 경우 시행일정이 별도로 지정될 수 있다고 안내되어 있으므로, 접수 직전에는 공식 페이지를 한 번 더 확인하는 편이 안전하다. (&lt;a href=&quot;https://dataq.or.kr/www/accept/schedule.do&quot; title=&quot;데이터자격시험&quot;&gt;dataq.or.kr&lt;/a&gt;)&lt;/p&gt;</description>
      <category>ETC</category>
      <category>2026</category>
      <category>db</category>
      <category>SQLD</category>
      <category>개발자</category>
      <category>데이터베이스</category>
      <category>시험</category>
      <category>일정</category>
      <category>자격증</category>
      <category>취업</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/206</guid>
      <comments>https://dev-log-island.tistory.com/206#entry206comment</comments>
      <pubDate>Sat, 14 Mar 2026 20:38:24 +0900</pubDate>
    </item>
    <item>
      <title>RESTful API 설계 가이드: 제대로 이해하고 잘 만들자!</title>
      <link>https://dev-log-island.tistory.com/205</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;RESTful API는 HTTP 기반의 웹 서비스 설계 패러다임으로, 자원을 중심으로 데이터를 주고받는 현대 웹 및 모바일 애플리케이션의 핵심 통신 방식입니다.&lt;br /&gt;많은 개발자들이 API를 &amp;ldquo;그냥 HTTP로 만들어진 것&amp;rdquo;이라고 생각하지만, REST의 개념과 원칙을 제대로 이해하고 설계하면, 시스템의 확장성, 유지보수성, 보안성이 크게 향상됩니다.&lt;br /&gt;이 글에서는 RESTful API의 기본 개념부터 설계 방법까지 자세히 다루어, 지금까지 잘못 만든 API를 개선하고자 하는 분들께 도움이 되고자 합니다.RESTful API는 현대 웹 및 모바일 애플리케이션의 핵심 통신 방식입니다. 많은 개발자들이 API를 &amp;ldquo;그냥 HTTP로 만들어진 것&amp;rdquo;이라고 생각하지만, REST의 개념과 원칙을 제대로 이해하고 설계하면, 시스템의 확장성, 유지보수성, 보안성이 크게 향상됩니다. 이 글에서는 RESTful API의 기본 개념부터 설계 방법까지 자세히 다루어, 지금까지 잘못 만든 API를 개선하고자 하는 분들께 도움이 되고자 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  RESTful API란?&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 개념 정의&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;*&lt;i&gt;REST(Representational State Transfer)&lt;br /&gt;*&lt;/i&gt;REST는 웹의 아키텍처 스타일 중 하나로, HTTP의 기본 메커니즘(메서드, 상태 코드, 헤더 등)을 활용하여 자원을 표현(Representation)하고 상태를 전이(State Transfer)하는 방법입니다.&lt;/li&gt;
&lt;li&gt;자원(Resource) : API가 다루는 대상, 데이터의 단위(예: 사용자, 상품, 주문 등)는 고유한 URI를 통해 식별됩니다.&lt;/li&gt;
&lt;li&gt;표현(Representation) : 자원의 상태는 JSON, XML 등으로 표현됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. REST의 6가지 제약 조건&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RESTful API를 설계할 때 지켜야 하는 핵심 제약 조건은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;클라이언트-서버 :&lt;br /&gt;&lt;b&gt;클라이언트와 서버의 역할을 명확히 분리&lt;/b&gt;하여, 클라이언트는 UI/UX에, 서버는 데이터와 비즈니스 로직에 집중합니다.&lt;/li&gt;
&lt;li&gt;무상태(Stateless) :&lt;br /&gt;&lt;b&gt;각 요청은 독립적&lt;/b&gt;이어야 하며, 서버는 이전 요청의 상태를 저장하지 않습니다. 필요한 모든 정보는 요청에 포함되어야 합니다.&lt;/li&gt;
&lt;li&gt;캐시 가능(Cacheable) :&lt;br /&gt;응답은 캐시 가능해야 하며, &lt;b&gt;적절한 캐시 헤더를 통해 성능을 최적화&lt;/b&gt;할 수 있습니다.&lt;/li&gt;
&lt;li&gt;일관된 인터페이스(Uniform Interface) :&lt;br /&gt;&lt;b&gt;API의 모든 상호작용은 일관된 방식&lt;/b&gt;으로 진행되어야 합니다. 이를 위해 URI는 명사 형태, HTTP 메서드(GET, POST, PUT, DELETE)를 사용합니다.&lt;/li&gt;
&lt;li&gt;계층화 시스템(Layered System) :&lt;br /&gt;클라이언트는 서버의 내부 구현(프록시, 게이트웨이 등)을 알 필요 없이 API와 상호작용할 수 있어야 합니다.&lt;/li&gt;
&lt;li&gt;코드 온디맨드(Code on Demand) &amp;ndash; 선택 사항 :&lt;br /&gt;서버가 클라이언트에 실행 가능한 코드를 전송할 수 있으나, 일반적으로는 사용하지 않습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  RESTful API 설계 방법 및 규칙&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. ⭐ 자원 중심 설계 (Resource-Oriented Design) ⭐&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;URI 설계 : 자원을 식별하는 URI는 명사 형태로 구성합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예) &lt;code&gt;/users&lt;/code&gt; (전체 사용자), &lt;code&gt;/users/{userId}&lt;/code&gt; (특정 사용자)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CRUD 작업: HTTP 메서드를 사용해 자원에 대한 작업을 표현합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;GET /users&lt;/code&gt; : 사용자 조회&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /users&lt;/code&gt; : 사용자 생성&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /users/{userId}&lt;/code&gt; : 사용자 전체 업데이트&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PATCH /users/{userId}&lt;/code&gt; : 사용자 일부 업데이트&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /users/{userId}&lt;/code&gt; : 사용자 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. ⭐ HTTP 메소드 사용 용도 ⭐&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;height: 246px;&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 17px;&quot;&gt;&lt;b&gt;&lt;b&gt;HTTP&lt;br /&gt;&lt;/b&gt;&lt;b&gt;메서드&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 17px;&quot;&gt;&lt;b&gt;용도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 17px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 17px;&quot;&gt;&lt;b&gt;멱등성&lt;br /&gt;(Idempotence)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 38px;&quot;&gt;&lt;b&gt;GET&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 38px;&quot;&gt;조회&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 38px;&quot;&gt;리소스(데이터)를 조회하여 클라이언트에게 반환합니다.&lt;br /&gt;요청 시 서버의 상태를 변경하지 않습니다.&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 38px;&quot;&gt;보장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 38px;&quot;&gt;&lt;b&gt;POST&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 38px;&quot;&gt;생성&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 38px;&quot;&gt;새로운 리소스를 생성할 때 사용합니다.&lt;br /&gt;요청 본문에 생성할 데이터(페이로드)를 포함시킵니다.&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 38px;&quot;&gt;보장되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 57px;&quot;&gt;&lt;b&gt;PUT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 57px;&quot;&gt;전체 수정&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 57px;&quot;&gt;기존 리소스를 완전히 대체하여 업데이트합니다.&lt;br /&gt;전체 리소스 데이터를 제공해야 하며, 요청을 여러 번 보내도 동일한 결과가 나옵니다.&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 57px;&quot;&gt;보장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 38px;&quot;&gt;&lt;b&gt;PATCH&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 38px;&quot;&gt;부분 수정&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 38px;&quot;&gt;기존 리소스의 일부 속성만 수정합니다.&lt;br /&gt;전체 리소스를 대체하지 않고, 필요한 부분만 업데이트할 때 사용합니다.&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 38px;&quot;&gt;보장되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 89px; height: 38px;&quot;&gt;&lt;b&gt;DELETE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 68px; height: 38px;&quot;&gt;삭제&lt;/td&gt;
&lt;td style=&quot;width: 559px; height: 38px;&quot;&gt;지정된 리소스를 삭제합니다.&lt;br /&gt;삭제 작업은 리소스를 완전히 제거하는 작업입니다.&lt;/td&gt;
&lt;td style=&quot;width: 134px; height: 38px;&quot;&gt;보장&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. ⭐ HTTP 상태 코드 활용 ⭐&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;200 OK&lt;/code&gt; : 요청 성공 (데이터 반환)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;201 Created&lt;/code&gt; : 새로운 자원 생성 성공&lt;/li&gt;
&lt;li&gt;&lt;code&gt;204 No Content&lt;/code&gt; : 삭제나 업데이트 성공, 응답 본문 없음&lt;/li&gt;
&lt;li&gt;&lt;code&gt;400 Bad Request&lt;/code&gt; : 클라이언트 요청 오류&lt;/li&gt;
&lt;li&gt;&lt;code&gt;401 Unauthorized/403 Forbidden&lt;/code&gt; : 인증/권한 문제&lt;/li&gt;
&lt;li&gt;&lt;code&gt;404 Not Found&lt;/code&gt; : 자원 미발견&lt;/li&gt;
&lt;li&gt;&lt;code&gt;500 Internal Server Error&lt;/code&gt; : 서버 오류&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4.   데이터 포맷 및 버전 관리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 포맷 : 주로 JSON을 사용합니다.&lt;/li&gt;
&lt;li&gt;API 버전 관리 : URI에 버전 정보를 포함하거나, 헤더를 통해 버전을 관리합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예: /v1/users 또는 Accept: application/vnd.example.v1+json&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5.   보안 고려사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인증 및 인가 : JWT, OAuth 등 보안 토큰을 사용해 접근을 제어합니다.&lt;/li&gt;
&lt;li&gt;HTTPS : 모든 통신은 HTTPS를 통해 암호화하여 안전하게 전송합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6.   문서화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Swagger/OpenAPI : API 문서를 자동으로 생성하고, 협업 및 외부 개발자와 공유합니다.&lt;/li&gt;
&lt;li&gt;Postman Collection : 테스트 및 문서화 도구로 활용하여 API 사용법을 쉽게 전달할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  RESTful API 설계 예시&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 : 사용자 관리 API&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;GET /v1/users
  - 설명 : 모든 사용자 목록 조회
  - 응답 예시: 
    [
      { &quot;id&quot;: 1, &quot;name&quot;: &quot;Alice&quot;, &quot;email&quot;: &quot;alice@example.com&quot; },
      { &quot;id&quot;: 2, &quot;name&quot;: &quot;Bob&quot;, &quot;email&quot;: &quot;bob@example.com&quot; }
    ]

GET /v1/users/1
  - 설명: ID가 1인 사용자 조회
  - 응답 예시: 
    { &quot;id&quot;: 1, &quot;name&quot;: &quot;Alice&quot;, &quot;email&quot;: &quot;alice@example.com&quot; }

POST /v1/users
  - 설명: 새로운 사용자 생성
  - 요청 예시:
    {
      &quot;name&quot;: &quot;Charlie&quot;,
      &quot;email&quot;: &quot;charlie@example.com&quot;
    }
  - 응답: 201 Created, Location 헤더에 새 리소스 URI 포함

PUT /v1/users/1
  - 설명: ID가 1인 사용자의 전체 정보 업데이트
  - 요청 예시:
    {
      &quot;name&quot;: &quot;Alice Smith&quot;,
      &quot;email&quot;: &quot;alice.smith@example.com&quot;
    }
  - 응답: 200 OK

DELETE /v1/users/1
  - 설명: ID가 1인 사용자 삭제
  - 응답: 204 No Content&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚡ RESTful API 설계의 핵심 포인트&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원 중심: 모든 API는 자원(데이터) 관점에서 설계&lt;/li&gt;
&lt;li&gt;HTTP 메서드 활용: GET, POST, PUT/PATCH, DELETE로 CRUD 구현&lt;/li&gt;
&lt;li&gt;상태 코드 및 에러 처리: 클라이언트와 서버 간의 명확한 의사소통&lt;/li&gt;
&lt;li&gt;보안과 버전 관리: HTTPS, 인증, 버전 관리로 신뢰성 확보&lt;/li&gt;
&lt;li&gt;문서화: Swagger 같은 도구를 활용해 명확한 API 문서 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚡ RESTful API 설계 시 유의사항&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일관성 유지 : API 전반에 걸쳐 일관된 URI 구조, 메서드 사용, 상태 코드 활용.&lt;/li&gt;
&lt;li&gt;확장성 고려 : 미래에 자원이 늘어나거나, 기능이 확장될 때에도 쉽게 관리할 수 있도록 설계.&lt;/li&gt;
&lt;li&gt;에러 핸들링 : 명확한 에러 메시지와 상태 코드를 제공해 클라이언트가 문제를 쉽게 파악할 수 있도록 합니다.&lt;/li&gt;
&lt;li&gt;보안 강화 : 인증, 인가, HTTPS 적용 등 보안 측면을 항상 최우선으로 고려.&lt;/li&gt;
&lt;li&gt;문서화 필수 : 잘 작성된 API 문서는 개발자와 사용자가 API를 쉽게 이해하고 활용할 수 있도록 돕습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RESTful API는 자원 중심의 인터페이스로 설계함으로써, HTTP의 기본 원칙을 활용해 &lt;b&gt;확장성과 유지보수성, 협업 효율성이&lt;/b&gt; 뛰어난 시스템을 만들 수 있습니다.&lt;br /&gt;올바른 URI 설계, HTTP 메서드의 적절한 활용, 명확한 에러 처리 및 보안 강화를 통해 API의 일관성과 신뢰성을 높일 수 있으며, Swagger 같은 도구를 활용해 문서화를 철저히 하는 것이 성공적인 RESTful API 설계의 핵심입니다.&lt;/p&gt;</description>
      <category>WEB/SERVER_SIDE</category>
      <category>API</category>
      <category>http method</category>
      <category>Rest</category>
      <category>RESTful</category>
      <category>가이드</category>
      <category>멱등성</category>
      <category>방법</category>
      <category>사용법</category>
      <category>설계</category>
      <category>팁</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/205</guid>
      <comments>https://dev-log-island.tistory.com/205#entry205comment</comments>
      <pubDate>Wed, 2 Apr 2025 14:05:56 +0900</pubDate>
    </item>
    <item>
      <title>2025년 월급 구간 별 실수령액 표</title>
      <link>https://dev-log-island.tistory.com/204</link>
      <description>&lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;100만원&lt;/td&gt;
					&lt;td&gt;923,500&lt;/td&gt;
					&lt;td&gt;76,500&lt;/td&gt;
					&lt;td&gt;40,500&lt;/td&gt;
					&lt;td&gt;28,080&lt;/td&gt;
					&lt;td&gt;2,070&lt;/td&gt;
					&lt;td&gt;5,850&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;110만원&lt;/td&gt;
					&lt;td&gt;1,013,810&lt;/td&gt;
					&lt;td&gt;86,190&lt;/td&gt;
					&lt;td&gt;45,000&lt;/td&gt;
					&lt;td&gt;31,200&lt;/td&gt;
					&lt;td&gt;2,300&lt;/td&gt;
					&lt;td&gt;6,500&lt;/td&gt;
					&lt;td&gt;1,090&lt;/td&gt;
					&lt;td&gt;100&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;120만원&lt;/td&gt;
					&lt;td&gt;1,103,640&lt;/td&gt;
					&lt;td&gt;96,360&lt;/td&gt;
					&lt;td&gt;49,500&lt;/td&gt;
					&lt;td&gt;34,320&lt;/td&gt;
					&lt;td&gt;2,530&lt;/td&gt;
					&lt;td&gt;7,150&lt;/td&gt;
					&lt;td&gt;2,600&lt;/td&gt;
					&lt;td&gt;260&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;130만원&lt;/td&gt;
					&lt;td&gt;1,193,480&lt;/td&gt;
					&lt;td&gt;106,520&lt;/td&gt;
					&lt;td&gt;54,000&lt;/td&gt;
					&lt;td&gt;37,440&lt;/td&gt;
					&lt;td&gt;2,760&lt;/td&gt;
					&lt;td&gt;7,800&lt;/td&gt;
					&lt;td&gt;4,110&lt;/td&gt;
					&lt;td&gt;410&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;140만원&lt;/td&gt;
					&lt;td&gt;1,282,950&lt;/td&gt;
					&lt;td&gt;117,050&lt;/td&gt;
					&lt;td&gt;58,500&lt;/td&gt;
					&lt;td&gt;40,560&lt;/td&gt;
					&lt;td&gt;2,990&lt;/td&gt;
					&lt;td&gt;8,450&lt;/td&gt;
					&lt;td&gt;5,960&lt;/td&gt;
					&lt;td&gt;590&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;150만원&lt;/td&gt;
					&lt;td&gt;1,372,040&lt;/td&gt;
					&lt;td&gt;127,960&lt;/td&gt;
					&lt;td&gt;63,000&lt;/td&gt;
					&lt;td&gt;43,680&lt;/td&gt;
					&lt;td&gt;3,220&lt;/td&gt;
					&lt;td&gt;9,100&lt;/td&gt;
					&lt;td&gt;8,150&lt;/td&gt;
					&lt;td&gt;810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;160만원&lt;/td&gt;
					&lt;td&gt;1,461,140&lt;/td&gt;
					&lt;td&gt;138,860&lt;/td&gt;
					&lt;td&gt;67,500&lt;/td&gt;
					&lt;td&gt;46,800&lt;/td&gt;
					&lt;td&gt;3,450&lt;/td&gt;
					&lt;td&gt;9,750&lt;/td&gt;
					&lt;td&gt;10,330&lt;/td&gt;
					&lt;td&gt;1,030&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;170만원&lt;/td&gt;
					&lt;td&gt;1,550,230&lt;/td&gt;
					&lt;td&gt;149,770&lt;/td&gt;
					&lt;td&gt;72,000&lt;/td&gt;
					&lt;td&gt;49,920&lt;/td&gt;
					&lt;td&gt;3,680&lt;/td&gt;
					&lt;td&gt;10,400&lt;/td&gt;
					&lt;td&gt;12,520&lt;/td&gt;
					&lt;td&gt;1,250&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;180만원&lt;/td&gt;
					&lt;td&gt;1,639,320&lt;/td&gt;
					&lt;td&gt;160,680&lt;/td&gt;
					&lt;td&gt;76,500&lt;/td&gt;
					&lt;td&gt;53,040&lt;/td&gt;
					&lt;td&gt;3,910&lt;/td&gt;
					&lt;td&gt;11,050&lt;/td&gt;
					&lt;td&gt;14,710&lt;/td&gt;
					&lt;td&gt;1,470&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;190만원&lt;/td&gt;
					&lt;td&gt;1,728,430&lt;/td&gt;
					&lt;td&gt;171,570&lt;/td&gt;
					&lt;td&gt;81,000&lt;/td&gt;
					&lt;td&gt;56,160&lt;/td&gt;
					&lt;td&gt;4,140&lt;/td&gt;
					&lt;td&gt;11,700&lt;/td&gt;
					&lt;td&gt;16,890&lt;/td&gt;
					&lt;td&gt;1,680&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;200만원&lt;/td&gt;
					&lt;td&gt;1,817,310&lt;/td&gt;
					&lt;td&gt;182,690&lt;/td&gt;
					&lt;td&gt;85,500&lt;/td&gt;
					&lt;td&gt;59,280&lt;/td&gt;
					&lt;td&gt;4,370&lt;/td&gt;
					&lt;td&gt;12,350&lt;/td&gt;
					&lt;td&gt;19,270&lt;/td&gt;
					&lt;td&gt;1,920&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;210만원&lt;/td&gt;
					&lt;td&gt;1,905,070&lt;/td&gt;
					&lt;td&gt;194,930&lt;/td&gt;
					&lt;td&gt;90,000&lt;/td&gt;
					&lt;td&gt;62,400&lt;/td&gt;
					&lt;td&gt;4,600&lt;/td&gt;
					&lt;td&gt;13,000&lt;/td&gt;
					&lt;td&gt;22,670&lt;/td&gt;
					&lt;td&gt;2,260&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;220만원&lt;/td&gt;
					&lt;td&gt;1,992,830&lt;/td&gt;
					&lt;td&gt;207,170&lt;/td&gt;
					&lt;td&gt;94,500&lt;/td&gt;
					&lt;td&gt;65,520&lt;/td&gt;
					&lt;td&gt;4,830&lt;/td&gt;
					&lt;td&gt;13,650&lt;/td&gt;
					&lt;td&gt;26,070&lt;/td&gt;
					&lt;td&gt;2,600&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;230만원&lt;/td&gt;
					&lt;td&gt;2,080,590&lt;/td&gt;
					&lt;td&gt;219,410&lt;/td&gt;
					&lt;td&gt;99,000&lt;/td&gt;
					&lt;td&gt;68,640&lt;/td&gt;
					&lt;td&gt;5,060&lt;/td&gt;
					&lt;td&gt;14,300&lt;/td&gt;
					&lt;td&gt;29,470&lt;/td&gt;
					&lt;td&gt;2,940&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;240만원&lt;/td&gt;
					&lt;td&gt;2,166,200&lt;/td&gt;
					&lt;td&gt;233,800&lt;/td&gt;
					&lt;td&gt;103,500&lt;/td&gt;
					&lt;td&gt;71,760&lt;/td&gt;
					&lt;td&gt;5,290&lt;/td&gt;
					&lt;td&gt;14,950&lt;/td&gt;
					&lt;td&gt;34,820&lt;/td&gt;
					&lt;td&gt;3,480&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;250만원&lt;/td&gt;
					&lt;td&gt;2,248,340&lt;/td&gt;
					&lt;td&gt;251,660&lt;/td&gt;
					&lt;td&gt;108,000&lt;/td&gt;
					&lt;td&gt;74,880&lt;/td&gt;
					&lt;td&gt;5,520&lt;/td&gt;
					&lt;td&gt;15,600&lt;/td&gt;
					&lt;td&gt;43,330&lt;/td&gt;
					&lt;td&gt;4,330&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;260만원&lt;/td&gt;
					&lt;td&gt;2,330,490&lt;/td&gt;
					&lt;td&gt;269,510&lt;/td&gt;
					&lt;td&gt;112,500&lt;/td&gt;
					&lt;td&gt;78,000&lt;/td&gt;
					&lt;td&gt;5,750&lt;/td&gt;
					&lt;td&gt;16,250&lt;/td&gt;
					&lt;td&gt;51,830&lt;/td&gt;
					&lt;td&gt;5,180&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;270만원&lt;/td&gt;
					&lt;td&gt;2,412,060&lt;/td&gt;
					&lt;td&gt;287,940&lt;/td&gt;
					&lt;td&gt;117,000&lt;/td&gt;
					&lt;td&gt;81,120&lt;/td&gt;
					&lt;td&gt;5,980&lt;/td&gt;
					&lt;td&gt;16,900&lt;/td&gt;
					&lt;td&gt;60,860&lt;/td&gt;
					&lt;td&gt;6,080&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;280만원&lt;/td&gt;
					&lt;td&gt;2,490,130&lt;/td&gt;
					&lt;td&gt;309,870&lt;/td&gt;
					&lt;td&gt;121,500&lt;/td&gt;
					&lt;td&gt;84,240&lt;/td&gt;
					&lt;td&gt;6,210&lt;/td&gt;
					&lt;td&gt;17,550&lt;/td&gt;
					&lt;td&gt;73,070&lt;/td&gt;
					&lt;td&gt;7,300&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;290만원&lt;/td&gt;
					&lt;td&gt;2,567,440&lt;/td&gt;
					&lt;td&gt;332,560&lt;/td&gt;
					&lt;td&gt;126,000&lt;/td&gt;
					&lt;td&gt;87,360&lt;/td&gt;
					&lt;td&gt;6,440&lt;/td&gt;
					&lt;td&gt;18,200&lt;/td&gt;
					&lt;td&gt;85,970&lt;/td&gt;
					&lt;td&gt;8,590&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;300만원&lt;/td&gt;
					&lt;td&gt;2,656,670&lt;/td&gt;
					&lt;td&gt;343,330&lt;/td&gt;
					&lt;td&gt;130,500&lt;/td&gt;
					&lt;td&gt;90,480&lt;/td&gt;
					&lt;td&gt;6,670&lt;/td&gt;
					&lt;td&gt;18,850&lt;/td&gt;
					&lt;td&gt;88,030&lt;/td&gt;
					&lt;td&gt;8,800&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;310만원&lt;/td&gt;
					&lt;td&gt;2,736,730&lt;/td&gt;
					&lt;td&gt;363,270&lt;/td&gt;
					&lt;td&gt;135,000&lt;/td&gt;
					&lt;td&gt;93,600&lt;/td&gt;
					&lt;td&gt;6,900&lt;/td&gt;
					&lt;td&gt;19,500&lt;/td&gt;
					&lt;td&gt;98,430&lt;/td&gt;
					&lt;td&gt;9,840&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;320만원&lt;/td&gt;
					&lt;td&gt;2,814,040&lt;/td&gt;
					&lt;td&gt;385,960&lt;/td&gt;
					&lt;td&gt;139,500&lt;/td&gt;
					&lt;td&gt;96,720&lt;/td&gt;
					&lt;td&gt;7,130&lt;/td&gt;
					&lt;td&gt;20,150&lt;/td&gt;
					&lt;td&gt;111,330&lt;/td&gt;
					&lt;td&gt;11,130&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;330만원&lt;/td&gt;
					&lt;td&gt;2,891,350&lt;/td&gt;
					&lt;td&gt;408,650&lt;/td&gt;
					&lt;td&gt;144,000&lt;/td&gt;
					&lt;td&gt;99,840&lt;/td&gt;
					&lt;td&gt;7,360&lt;/td&gt;
					&lt;td&gt;20,800&lt;/td&gt;
					&lt;td&gt;124,230&lt;/td&gt;
					&lt;td&gt;12,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;340만원&lt;/td&gt;
					&lt;td&gt;2,968,660&lt;/td&gt;
					&lt;td&gt;431,340&lt;/td&gt;
					&lt;td&gt;148,500&lt;/td&gt;
					&lt;td&gt;102,960&lt;/td&gt;
					&lt;td&gt;7,590&lt;/td&gt;
					&lt;td&gt;21,450&lt;/td&gt;
					&lt;td&gt;137,130&lt;/td&gt;
					&lt;td&gt;13,710&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;350만원&lt;/td&gt;
					&lt;td&gt;3,045,970&lt;/td&gt;
					&lt;td&gt;454,030&lt;/td&gt;
					&lt;td&gt;153,000&lt;/td&gt;
					&lt;td&gt;106,080&lt;/td&gt;
					&lt;td&gt;7,820&lt;/td&gt;
					&lt;td&gt;22,100&lt;/td&gt;
					&lt;td&gt;150,030&lt;/td&gt;
					&lt;td&gt;15,000&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;360만원&lt;/td&gt;
					&lt;td&gt;3,123,280&lt;/td&gt;
					&lt;td&gt;476,720&lt;/td&gt;
					&lt;td&gt;157,500&lt;/td&gt;
					&lt;td&gt;109,200&lt;/td&gt;
					&lt;td&gt;8,050&lt;/td&gt;
					&lt;td&gt;22,750&lt;/td&gt;
					&lt;td&gt;162,930&lt;/td&gt;
					&lt;td&gt;16,290&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;370만원&lt;/td&gt;
					&lt;td&gt;3,200,590&lt;/td&gt;
					&lt;td&gt;499,410&lt;/td&gt;
					&lt;td&gt;162,000&lt;/td&gt;
					&lt;td&gt;112,320&lt;/td&gt;
					&lt;td&gt;8,280&lt;/td&gt;
					&lt;td&gt;23,400&lt;/td&gt;
					&lt;td&gt;175,830&lt;/td&gt;
					&lt;td&gt;17,580&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;380만원&lt;/td&gt;
					&lt;td&gt;3,277,900&lt;/td&gt;
					&lt;td&gt;522,100&lt;/td&gt;
					&lt;td&gt;166,500&lt;/td&gt;
					&lt;td&gt;115,440&lt;/td&gt;
					&lt;td&gt;8,510&lt;/td&gt;
					&lt;td&gt;24,050&lt;/td&gt;
					&lt;td&gt;188,730&lt;/td&gt;
					&lt;td&gt;18,870&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;390만원&lt;/td&gt;
					&lt;td&gt;3,349,440&lt;/td&gt;
					&lt;td&gt;550,560&lt;/td&gt;
					&lt;td&gt;171,000&lt;/td&gt;
					&lt;td&gt;118,560&lt;/td&gt;
					&lt;td&gt;8,740&lt;/td&gt;
					&lt;td&gt;24,700&lt;/td&gt;
					&lt;td&gt;206,880&lt;/td&gt;
					&lt;td&gt;20,680&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;400만원&lt;/td&gt;
					&lt;td&gt;3,425,500&lt;/td&gt;
					&lt;td&gt;574,500&lt;/td&gt;
					&lt;td&gt;175,500&lt;/td&gt;
					&lt;td&gt;121,680&lt;/td&gt;
					&lt;td&gt;8,970&lt;/td&gt;
					&lt;td&gt;25,350&lt;/td&gt;
					&lt;td&gt;220,910&lt;/td&gt;
					&lt;td&gt;22,090&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;410만원&lt;/td&gt;
					&lt;td&gt;3,501,570&lt;/td&gt;
					&lt;td&gt;598,430&lt;/td&gt;
					&lt;td&gt;180,000&lt;/td&gt;
					&lt;td&gt;124,800&lt;/td&gt;
					&lt;td&gt;9,210&lt;/td&gt;
					&lt;td&gt;26,000&lt;/td&gt;
					&lt;td&gt;234,930&lt;/td&gt;
					&lt;td&gt;23,490&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;420만원&lt;/td&gt;
					&lt;td&gt;3,577,640&lt;/td&gt;
					&lt;td&gt;622,360&lt;/td&gt;
					&lt;td&gt;184,500&lt;/td&gt;
					&lt;td&gt;127,920&lt;/td&gt;
					&lt;td&gt;9,440&lt;/td&gt;
					&lt;td&gt;26,650&lt;/td&gt;
					&lt;td&gt;248,960&lt;/td&gt;
					&lt;td&gt;24,890&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;430만원&lt;/td&gt;
					&lt;td&gt;3,653,720&lt;/td&gt;
					&lt;td&gt;646,280&lt;/td&gt;
					&lt;td&gt;189,000&lt;/td&gt;
					&lt;td&gt;131,040&lt;/td&gt;
					&lt;td&gt;9,670&lt;/td&gt;
					&lt;td&gt;27,300&lt;/td&gt;
					&lt;td&gt;262,980&lt;/td&gt;
					&lt;td&gt;26,290&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;440만원&lt;/td&gt;
					&lt;td&gt;3,729,780&lt;/td&gt;
					&lt;td&gt;670,220&lt;/td&gt;
					&lt;td&gt;193,500&lt;/td&gt;
					&lt;td&gt;134,160&lt;/td&gt;
					&lt;td&gt;9,900&lt;/td&gt;
					&lt;td&gt;27,950&lt;/td&gt;
					&lt;td&gt;277,010&lt;/td&gt;
					&lt;td&gt;27,700&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;450만원&lt;/td&gt;
					&lt;td&gt;3,805,860&lt;/td&gt;
					&lt;td&gt;694,140&lt;/td&gt;
					&lt;td&gt;198,000&lt;/td&gt;
					&lt;td&gt;137,280&lt;/td&gt;
					&lt;td&gt;10,130&lt;/td&gt;
					&lt;td&gt;28,600&lt;/td&gt;
					&lt;td&gt;291,030&lt;/td&gt;
					&lt;td&gt;29,100&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;460만원&lt;/td&gt;
					&lt;td&gt;3,881,930&lt;/td&gt;
					&lt;td&gt;718,070&lt;/td&gt;
					&lt;td&gt;202,500&lt;/td&gt;
					&lt;td&gt;140,400&lt;/td&gt;
					&lt;td&gt;10,360&lt;/td&gt;
					&lt;td&gt;29,250&lt;/td&gt;
					&lt;td&gt;305,060&lt;/td&gt;
					&lt;td&gt;30,500&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;470만원&lt;/td&gt;
					&lt;td&gt;3,955,260&lt;/td&gt;
					&lt;td&gt;744,740&lt;/td&gt;
					&lt;td&gt;207,000&lt;/td&gt;
					&lt;td&gt;143,520&lt;/td&gt;
					&lt;td&gt;10,590&lt;/td&gt;
					&lt;td&gt;29,900&lt;/td&gt;
					&lt;td&gt;321,580&lt;/td&gt;
					&lt;td&gt;32,150&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;480만원&lt;/td&gt;
					&lt;td&gt;4,031,320&lt;/td&gt;
					&lt;td&gt;768,680&lt;/td&gt;
					&lt;td&gt;211,500&lt;/td&gt;
					&lt;td&gt;146,640&lt;/td&gt;
					&lt;td&gt;10,820&lt;/td&gt;
					&lt;td&gt;30,550&lt;/td&gt;
					&lt;td&gt;335,610&lt;/td&gt;
					&lt;td&gt;33,560&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;490만원&lt;/td&gt;
					&lt;td&gt;4,107,400&lt;/td&gt;
					&lt;td&gt;792,600&lt;/td&gt;
					&lt;td&gt;216,000&lt;/td&gt;
					&lt;td&gt;149,760&lt;/td&gt;
					&lt;td&gt;11,050&lt;/td&gt;
					&lt;td&gt;31,200&lt;/td&gt;
					&lt;td&gt;349,630&lt;/td&gt;
					&lt;td&gt;34,960&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;500만원&lt;/td&gt;
					&lt;td&gt;4,183,470&lt;/td&gt;
					&lt;td&gt;816,530&lt;/td&gt;
					&lt;td&gt;220,500&lt;/td&gt;
					&lt;td&gt;152,880&lt;/td&gt;
					&lt;td&gt;11,280&lt;/td&gt;
					&lt;td&gt;31,850&lt;/td&gt;
					&lt;td&gt;363,660&lt;/td&gt;
					&lt;td&gt;36,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;510만원&lt;/td&gt;
					&lt;td&gt;4,259,550&lt;/td&gt;
					&lt;td&gt;840,450&lt;/td&gt;
					&lt;td&gt;225,000&lt;/td&gt;
					&lt;td&gt;156,000&lt;/td&gt;
					&lt;td&gt;11,510&lt;/td&gt;
					&lt;td&gt;32,500&lt;/td&gt;
					&lt;td&gt;377,680&lt;/td&gt;
					&lt;td&gt;37,760&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;520만원&lt;/td&gt;
					&lt;td&gt;4,335,610&lt;/td&gt;
					&lt;td&gt;864,390&lt;/td&gt;
					&lt;td&gt;229,500&lt;/td&gt;
					&lt;td&gt;159,120&lt;/td&gt;
					&lt;td&gt;11,740&lt;/td&gt;
					&lt;td&gt;33,150&lt;/td&gt;
					&lt;td&gt;391,710&lt;/td&gt;
					&lt;td&gt;39,170&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;530만원&lt;/td&gt;
					&lt;td&gt;4,411,690&lt;/td&gt;
					&lt;td&gt;888,310&lt;/td&gt;
					&lt;td&gt;234,000&lt;/td&gt;
					&lt;td&gt;162,240&lt;/td&gt;
					&lt;td&gt;11,970&lt;/td&gt;
					&lt;td&gt;33,800&lt;/td&gt;
					&lt;td&gt;405,730&lt;/td&gt;
					&lt;td&gt;40,570&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;540만원&lt;/td&gt;
					&lt;td&gt;4,487,760&lt;/td&gt;
					&lt;td&gt;912,240&lt;/td&gt;
					&lt;td&gt;238,500&lt;/td&gt;
					&lt;td&gt;165,360&lt;/td&gt;
					&lt;td&gt;12,200&lt;/td&gt;
					&lt;td&gt;34,450&lt;/td&gt;
					&lt;td&gt;419,760&lt;/td&gt;
					&lt;td&gt;41,970&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;550만원&lt;/td&gt;
					&lt;td&gt;4,562,980&lt;/td&gt;
					&lt;td&gt;937,020&lt;/td&gt;
					&lt;td&gt;243,000&lt;/td&gt;
					&lt;td&gt;168,480&lt;/td&gt;
					&lt;td&gt;12,430&lt;/td&gt;
					&lt;td&gt;35,100&lt;/td&gt;
					&lt;td&gt;434,560&lt;/td&gt;
					&lt;td&gt;43,450&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;560만원&lt;/td&gt;
					&lt;td&gt;4,629,790&lt;/td&gt;
					&lt;td&gt;970,210&lt;/td&gt;
					&lt;td&gt;247,500&lt;/td&gt;
					&lt;td&gt;171,600&lt;/td&gt;
					&lt;td&gt;12,660&lt;/td&gt;
					&lt;td&gt;35,750&lt;/td&gt;
					&lt;td&gt;457,000&lt;/td&gt;
					&lt;td&gt;45,700&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;570만원&lt;/td&gt;
					&lt;td&gt;4,696,640&lt;/td&gt;
					&lt;td&gt;1,003,360&lt;/td&gt;
					&lt;td&gt;252,000&lt;/td&gt;
					&lt;td&gt;174,720&lt;/td&gt;
					&lt;td&gt;12,890&lt;/td&gt;
					&lt;td&gt;36,400&lt;/td&gt;
					&lt;td&gt;479,410&lt;/td&gt;
					&lt;td&gt;47,940&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;580만원&lt;/td&gt;
					&lt;td&gt;4,763,510&lt;/td&gt;
					&lt;td&gt;1,036,490&lt;/td&gt;
					&lt;td&gt;256,500&lt;/td&gt;
					&lt;td&gt;177,840&lt;/td&gt;
					&lt;td&gt;13,120&lt;/td&gt;
					&lt;td&gt;37,050&lt;/td&gt;
					&lt;td&gt;501,800&lt;/td&gt;
					&lt;td&gt;50,180&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;590만원&lt;/td&gt;
					&lt;td&gt;4,830,370&lt;/td&gt;
					&lt;td&gt;1,069,630&lt;/td&gt;
					&lt;td&gt;261,000&lt;/td&gt;
					&lt;td&gt;180,960&lt;/td&gt;
					&lt;td&gt;13,350&lt;/td&gt;
					&lt;td&gt;37,700&lt;/td&gt;
					&lt;td&gt;524,200&lt;/td&gt;
					&lt;td&gt;52,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;600만원&lt;/td&gt;
					&lt;td&gt;4,869,760&lt;/td&gt;
					&lt;td&gt;1,130,240&lt;/td&gt;
					&lt;td&gt;265,500&lt;/td&gt;
					&lt;td&gt;184,080&lt;/td&gt;
					&lt;td&gt;13,580&lt;/td&gt;
					&lt;td&gt;38,350&lt;/td&gt;
					&lt;td&gt;571,580&lt;/td&gt;
					&lt;td&gt;57,150&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;610만원&lt;/td&gt;
					&lt;td&gt;4,936,360&lt;/td&gt;
					&lt;td&gt;1,163,640&lt;/td&gt;
					&lt;td&gt;270,000&lt;/td&gt;
					&lt;td&gt;187,200&lt;/td&gt;
					&lt;td&gt;13,810&lt;/td&gt;
					&lt;td&gt;39,000&lt;/td&gt;
					&lt;td&gt;594,210&lt;/td&gt;
					&lt;td&gt;59,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;620만원&lt;/td&gt;
					&lt;td&gt;5,002,970&lt;/td&gt;
					&lt;td&gt;1,197,030&lt;/td&gt;
					&lt;td&gt;274,500&lt;/td&gt;
					&lt;td&gt;190,320&lt;/td&gt;
					&lt;td&gt;14,040&lt;/td&gt;
					&lt;td&gt;39,650&lt;/td&gt;
					&lt;td&gt;616,840&lt;/td&gt;
					&lt;td&gt;61,680&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;630만원&lt;/td&gt;
					&lt;td&gt;5,069,570&lt;/td&gt;
					&lt;td&gt;1,230,430&lt;/td&gt;
					&lt;td&gt;279,000&lt;/td&gt;
					&lt;td&gt;193,440&lt;/td&gt;
					&lt;td&gt;14,270&lt;/td&gt;
					&lt;td&gt;40,300&lt;/td&gt;
					&lt;td&gt;639,480&lt;/td&gt;
					&lt;td&gt;63,940&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;640만원&lt;/td&gt;
					&lt;td&gt;5,136,170&lt;/td&gt;
					&lt;td&gt;1,263,830&lt;/td&gt;
					&lt;td&gt;283,500&lt;/td&gt;
					&lt;td&gt;196,560&lt;/td&gt;
					&lt;td&gt;14,500&lt;/td&gt;
					&lt;td&gt;40,950&lt;/td&gt;
					&lt;td&gt;662,110&lt;/td&gt;
					&lt;td&gt;66,210&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;650만원&lt;/td&gt;
					&lt;td&gt;5,202,780&lt;/td&gt;
					&lt;td&gt;1,297,220&lt;/td&gt;
					&lt;td&gt;288,000&lt;/td&gt;
					&lt;td&gt;199,680&lt;/td&gt;
					&lt;td&gt;14,730&lt;/td&gt;
					&lt;td&gt;41,600&lt;/td&gt;
					&lt;td&gt;684,740&lt;/td&gt;
					&lt;td&gt;68,470&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;660만원&lt;/td&gt;
					&lt;td&gt;5,269,390&lt;/td&gt;
					&lt;td&gt;1,330,610&lt;/td&gt;
					&lt;td&gt;292,500&lt;/td&gt;
					&lt;td&gt;202,800&lt;/td&gt;
					&lt;td&gt;14,960&lt;/td&gt;
					&lt;td&gt;42,250&lt;/td&gt;
					&lt;td&gt;707,370&lt;/td&gt;
					&lt;td&gt;70,730&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;670만원&lt;/td&gt;
					&lt;td&gt;5,335,990&lt;/td&gt;
					&lt;td&gt;1,364,010&lt;/td&gt;
					&lt;td&gt;297,000&lt;/td&gt;
					&lt;td&gt;205,920&lt;/td&gt;
					&lt;td&gt;15,190&lt;/td&gt;
					&lt;td&gt;42,900&lt;/td&gt;
					&lt;td&gt;730,000&lt;/td&gt;
					&lt;td&gt;73,000&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;680만원&lt;/td&gt;
					&lt;td&gt;5,402,600&lt;/td&gt;
					&lt;td&gt;1,397,400&lt;/td&gt;
					&lt;td&gt;301,500&lt;/td&gt;
					&lt;td&gt;209,040&lt;/td&gt;
					&lt;td&gt;15,420&lt;/td&gt;
					&lt;td&gt;43,550&lt;/td&gt;
					&lt;td&gt;752,630&lt;/td&gt;
					&lt;td&gt;75,260&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;690만원&lt;/td&gt;
					&lt;td&gt;5,469,210&lt;/td&gt;
					&lt;td&gt;1,430,790&lt;/td&gt;
					&lt;td&gt;306,000&lt;/td&gt;
					&lt;td&gt;212,160&lt;/td&gt;
					&lt;td&gt;15,650&lt;/td&gt;
					&lt;td&gt;44,200&lt;/td&gt;
					&lt;td&gt;775,260&lt;/td&gt;
					&lt;td&gt;77,520&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;700만원&lt;/td&gt;
					&lt;td&gt;5,535,820&lt;/td&gt;
					&lt;td&gt;1,464,180&lt;/td&gt;
					&lt;td&gt;310,500&lt;/td&gt;
					&lt;td&gt;215,280&lt;/td&gt;
					&lt;td&gt;15,880&lt;/td&gt;
					&lt;td&gt;44,850&lt;/td&gt;
					&lt;td&gt;797,890&lt;/td&gt;
					&lt;td&gt;79,780&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;710만원&lt;/td&gt;
					&lt;td&gt;5,602,410&lt;/td&gt;
					&lt;td&gt;1,497,590&lt;/td&gt;
					&lt;td&gt;315,000&lt;/td&gt;
					&lt;td&gt;218,400&lt;/td&gt;
					&lt;td&gt;16,110&lt;/td&gt;
					&lt;td&gt;45,500&lt;/td&gt;
					&lt;td&gt;820,530&lt;/td&gt;
					&lt;td&gt;82,050&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;720만원&lt;/td&gt;
					&lt;td&gt;5,669,020&lt;/td&gt;
					&lt;td&gt;1,530,980&lt;/td&gt;
					&lt;td&gt;319,500&lt;/td&gt;
					&lt;td&gt;221,520&lt;/td&gt;
					&lt;td&gt;16,340&lt;/td&gt;
					&lt;td&gt;46,150&lt;/td&gt;
					&lt;td&gt;843,160&lt;/td&gt;
					&lt;td&gt;84,310&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;730만원&lt;/td&gt;
					&lt;td&gt;5,735,630&lt;/td&gt;
					&lt;td&gt;1,564,370&lt;/td&gt;
					&lt;td&gt;324,000&lt;/td&gt;
					&lt;td&gt;224,640&lt;/td&gt;
					&lt;td&gt;16,570&lt;/td&gt;
					&lt;td&gt;46,800&lt;/td&gt;
					&lt;td&gt;865,790&lt;/td&gt;
					&lt;td&gt;86,570&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;740만원&lt;/td&gt;
					&lt;td&gt;5,802,230&lt;/td&gt;
					&lt;td&gt;1,597,770&lt;/td&gt;
					&lt;td&gt;328,500&lt;/td&gt;
					&lt;td&gt;227,760&lt;/td&gt;
					&lt;td&gt;16,800&lt;/td&gt;
					&lt;td&gt;47,450&lt;/td&gt;
					&lt;td&gt;888,420&lt;/td&gt;
					&lt;td&gt;88,840&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;750만원&lt;/td&gt;
					&lt;td&gt;5,868,840&lt;/td&gt;
					&lt;td&gt;1,631,160&lt;/td&gt;
					&lt;td&gt;333,000&lt;/td&gt;
					&lt;td&gt;230,880&lt;/td&gt;
					&lt;td&gt;17,030&lt;/td&gt;
					&lt;td&gt;48,100&lt;/td&gt;
					&lt;td&gt;911,050&lt;/td&gt;
					&lt;td&gt;91,100&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;760만원&lt;/td&gt;
					&lt;td&gt;5,935,450&lt;/td&gt;
					&lt;td&gt;1,664,550&lt;/td&gt;
					&lt;td&gt;337,500&lt;/td&gt;
					&lt;td&gt;234,000&lt;/td&gt;
					&lt;td&gt;17,260&lt;/td&gt;
					&lt;td&gt;48,750&lt;/td&gt;
					&lt;td&gt;933,680&lt;/td&gt;
					&lt;td&gt;93,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;770만원&lt;/td&gt;
					&lt;td&gt;6,002,050&lt;/td&gt;
					&lt;td&gt;1,697,950&lt;/td&gt;
					&lt;td&gt;342,000&lt;/td&gt;
					&lt;td&gt;237,120&lt;/td&gt;
					&lt;td&gt;17,490&lt;/td&gt;
					&lt;td&gt;49,400&lt;/td&gt;
					&lt;td&gt;956,310&lt;/td&gt;
					&lt;td&gt;95,630&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;780만원&lt;/td&gt;
					&lt;td&gt;6,068,650&lt;/td&gt;
					&lt;td&gt;1,731,350&lt;/td&gt;
					&lt;td&gt;346,500&lt;/td&gt;
					&lt;td&gt;240,240&lt;/td&gt;
					&lt;td&gt;17,720&lt;/td&gt;
					&lt;td&gt;50,050&lt;/td&gt;
					&lt;td&gt;978,950&lt;/td&gt;
					&lt;td&gt;97,890&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;790만원&lt;/td&gt;
					&lt;td&gt;6,135,260&lt;/td&gt;
					&lt;td&gt;1,764,740&lt;/td&gt;
					&lt;td&gt;351,000&lt;/td&gt;
					&lt;td&gt;243,360&lt;/td&gt;
					&lt;td&gt;17,950&lt;/td&gt;
					&lt;td&gt;50,700&lt;/td&gt;
					&lt;td&gt;1,001,580&lt;/td&gt;
					&lt;td&gt;100,150&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;800만원&lt;/td&gt;
					&lt;td&gt;6,201,850&lt;/td&gt;
					&lt;td&gt;1,798,150&lt;/td&gt;
					&lt;td&gt;355,500&lt;/td&gt;
					&lt;td&gt;246,480&lt;/td&gt;
					&lt;td&gt;18,190&lt;/td&gt;
					&lt;td&gt;51,350&lt;/td&gt;
					&lt;td&gt;1,024,210&lt;/td&gt;
					&lt;td&gt;102,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;810만원&lt;/td&gt;
					&lt;td&gt;6,268,460&lt;/td&gt;
					&lt;td&gt;1,831,540&lt;/td&gt;
					&lt;td&gt;360,000&lt;/td&gt;
					&lt;td&gt;249,600&lt;/td&gt;
					&lt;td&gt;18,420&lt;/td&gt;
					&lt;td&gt;52,000&lt;/td&gt;
					&lt;td&gt;1,046,840&lt;/td&gt;
					&lt;td&gt;104,680&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;820만원&lt;/td&gt;
					&lt;td&gt;6,335,070&lt;/td&gt;
					&lt;td&gt;1,864,930&lt;/td&gt;
					&lt;td&gt;364,500&lt;/td&gt;
					&lt;td&gt;252,720&lt;/td&gt;
					&lt;td&gt;18,650&lt;/td&gt;
					&lt;td&gt;52,650&lt;/td&gt;
					&lt;td&gt;1,069,470&lt;/td&gt;
					&lt;td&gt;106,940&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;830만원&lt;/td&gt;
					&lt;td&gt;6,401,670&lt;/td&gt;
					&lt;td&gt;1,898,330&lt;/td&gt;
					&lt;td&gt;369,000&lt;/td&gt;
					&lt;td&gt;255,840&lt;/td&gt;
					&lt;td&gt;18,880&lt;/td&gt;
					&lt;td&gt;53,300&lt;/td&gt;
					&lt;td&gt;1,092,100&lt;/td&gt;
					&lt;td&gt;109,210&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;840만원&lt;/td&gt;
					&lt;td&gt;6,468,280&lt;/td&gt;
					&lt;td&gt;1,931,720&lt;/td&gt;
					&lt;td&gt;373,500&lt;/td&gt;
					&lt;td&gt;258,960&lt;/td&gt;
					&lt;td&gt;19,110&lt;/td&gt;
					&lt;td&gt;53,950&lt;/td&gt;
					&lt;td&gt;1,114,730&lt;/td&gt;
					&lt;td&gt;111,470&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;850만원&lt;/td&gt;
					&lt;td&gt;6,534,350&lt;/td&gt;
					&lt;td&gt;1,965,650&lt;/td&gt;
					&lt;td&gt;378,000&lt;/td&gt;
					&lt;td&gt;262,080&lt;/td&gt;
					&lt;td&gt;19,340&lt;/td&gt;
					&lt;td&gt;54,600&lt;/td&gt;
					&lt;td&gt;1,137,850&lt;/td&gt;
					&lt;td&gt;113,780&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;860만원&lt;/td&gt;
					&lt;td&gt;6,600,160&lt;/td&gt;
					&lt;td&gt;1,999,840&lt;/td&gt;
					&lt;td&gt;382,500&lt;/td&gt;
					&lt;td&gt;265,200&lt;/td&gt;
					&lt;td&gt;19,570&lt;/td&gt;
					&lt;td&gt;55,250&lt;/td&gt;
					&lt;td&gt;1,161,200&lt;/td&gt;
					&lt;td&gt;116,120&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;870만원&lt;/td&gt;
					&lt;td&gt;6,665,980&lt;/td&gt;
					&lt;td&gt;2,034,020&lt;/td&gt;
					&lt;td&gt;387,000&lt;/td&gt;
					&lt;td&gt;268,320&lt;/td&gt;
					&lt;td&gt;19,800&lt;/td&gt;
					&lt;td&gt;55,900&lt;/td&gt;
					&lt;td&gt;1,184,550&lt;/td&gt;
					&lt;td&gt;118,450&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;880만원&lt;/td&gt;
					&lt;td&gt;6,731,790&lt;/td&gt;
					&lt;td&gt;2,068,210&lt;/td&gt;
					&lt;td&gt;391,500&lt;/td&gt;
					&lt;td&gt;271,440&lt;/td&gt;
					&lt;td&gt;20,030&lt;/td&gt;
					&lt;td&gt;56,550&lt;/td&gt;
					&lt;td&gt;1,207,900&lt;/td&gt;
					&lt;td&gt;120,790&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;890만원&lt;/td&gt;
					&lt;td&gt;6,797,610&lt;/td&gt;
					&lt;td&gt;2,102,390&lt;/td&gt;
					&lt;td&gt;396,000&lt;/td&gt;
					&lt;td&gt;274,560&lt;/td&gt;
					&lt;td&gt;20,260&lt;/td&gt;
					&lt;td&gt;57,200&lt;/td&gt;
					&lt;td&gt;1,231,250&lt;/td&gt;
					&lt;td&gt;123,120&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;900만원&lt;/td&gt;
					&lt;td&gt;6,863,420&lt;/td&gt;
					&lt;td&gt;2,136,580&lt;/td&gt;
					&lt;td&gt;400,500&lt;/td&gt;
					&lt;td&gt;277,680&lt;/td&gt;
					&lt;td&gt;20,490&lt;/td&gt;
					&lt;td&gt;57,850&lt;/td&gt;
					&lt;td&gt;1,254,600&lt;/td&gt;
					&lt;td&gt;125,460&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;910만원&lt;/td&gt;
					&lt;td&gt;6,929,240&lt;/td&gt;
					&lt;td&gt;2,170,760&lt;/td&gt;
					&lt;td&gt;405,000&lt;/td&gt;
					&lt;td&gt;280,800&lt;/td&gt;
					&lt;td&gt;20,720&lt;/td&gt;
					&lt;td&gt;58,500&lt;/td&gt;
					&lt;td&gt;1,277,950&lt;/td&gt;
					&lt;td&gt;127,790&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;920만원&lt;/td&gt;
					&lt;td&gt;6,985,980&lt;/td&gt;
					&lt;td&gt;2,214,020&lt;/td&gt;
					&lt;td&gt;409,500&lt;/td&gt;
					&lt;td&gt;283,920&lt;/td&gt;
					&lt;td&gt;20,950&lt;/td&gt;
					&lt;td&gt;59,150&lt;/td&gt;
					&lt;td&gt;1,309,550&lt;/td&gt;
					&lt;td&gt;130,950&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;930만원&lt;/td&gt;
					&lt;td&gt;7,040,020&lt;/td&gt;
					&lt;td&gt;2,259,980&lt;/td&gt;
					&lt;td&gt;414,000&lt;/td&gt;
					&lt;td&gt;287,040&lt;/td&gt;
					&lt;td&gt;21,180&lt;/td&gt;
					&lt;td&gt;59,800&lt;/td&gt;
					&lt;td&gt;1,343,600&lt;/td&gt;
					&lt;td&gt;134,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;940만원&lt;/td&gt;
					&lt;td&gt;7,094,070&lt;/td&gt;
					&lt;td&gt;2,305,930&lt;/td&gt;
					&lt;td&gt;418,500&lt;/td&gt;
					&lt;td&gt;290,160&lt;/td&gt;
					&lt;td&gt;21,410&lt;/td&gt;
					&lt;td&gt;60,450&lt;/td&gt;
					&lt;td&gt;1,377,650&lt;/td&gt;
					&lt;td&gt;137,760&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;950만원&lt;/td&gt;
					&lt;td&gt;7,148,100&lt;/td&gt;
					&lt;td&gt;2,351,900&lt;/td&gt;
					&lt;td&gt;423,000&lt;/td&gt;
					&lt;td&gt;293,280&lt;/td&gt;
					&lt;td&gt;21,640&lt;/td&gt;
					&lt;td&gt;61,100&lt;/td&gt;
					&lt;td&gt;1,411,710&lt;/td&gt;
					&lt;td&gt;141,170&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;960만원&lt;/td&gt;
					&lt;td&gt;7,202,150&lt;/td&gt;
					&lt;td&gt;2,397,850&lt;/td&gt;
					&lt;td&gt;427,500&lt;/td&gt;
					&lt;td&gt;296,400&lt;/td&gt;
					&lt;td&gt;21,870&lt;/td&gt;
					&lt;td&gt;61,750&lt;/td&gt;
					&lt;td&gt;1,445,760&lt;/td&gt;
					&lt;td&gt;144,570&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;970만원&lt;/td&gt;
					&lt;td&gt;7,256,180&lt;/td&gt;
					&lt;td&gt;2,443,820&lt;/td&gt;
					&lt;td&gt;432,000&lt;/td&gt;
					&lt;td&gt;299,520&lt;/td&gt;
					&lt;td&gt;22,100&lt;/td&gt;
					&lt;td&gt;62,400&lt;/td&gt;
					&lt;td&gt;1,479,820&lt;/td&gt;
					&lt;td&gt;147,980&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;980만원&lt;/td&gt;
					&lt;td&gt;7,310,230&lt;/td&gt;
					&lt;td&gt;2,489,770&lt;/td&gt;
					&lt;td&gt;436,500&lt;/td&gt;
					&lt;td&gt;302,640&lt;/td&gt;
					&lt;td&gt;22,330&lt;/td&gt;
					&lt;td&gt;63,050&lt;/td&gt;
					&lt;td&gt;1,513,870&lt;/td&gt;
					&lt;td&gt;151,380&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;990만원&lt;/td&gt;
					&lt;td&gt;7,364,270&lt;/td&gt;
					&lt;td&gt;2,535,730&lt;/td&gt;
					&lt;td&gt;441,000&lt;/td&gt;
					&lt;td&gt;305,760&lt;/td&gt;
					&lt;td&gt;22,560&lt;/td&gt;
					&lt;td&gt;63,700&lt;/td&gt;
					&lt;td&gt;1,547,920&lt;/td&gt;
					&lt;td&gt;154,790&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;세전&lt;/th&gt;
					&lt;th&gt;세후 실수령&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;1,000만원&lt;/td&gt;
					&lt;td&gt;7,418,310&lt;/td&gt;
					&lt;td&gt;2,581,690&lt;/td&gt;
					&lt;td&gt;445,500&lt;/td&gt;
					&lt;td&gt;308,880&lt;/td&gt;
					&lt;td&gt;22,790&lt;/td&gt;
					&lt;td&gt;64,350&lt;/td&gt;
					&lt;td&gt;1,581,980&lt;/td&gt;
					&lt;td&gt;158,190&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,010만원&lt;/td&gt;
					&lt;td&gt;7,353,640&lt;/td&gt;
					&lt;td&gt;2,746,360&lt;/td&gt;
					&lt;td&gt;450,000&lt;/td&gt;
					&lt;td&gt;312,000&lt;/td&gt;
					&lt;td&gt;23,020&lt;/td&gt;
					&lt;td&gt;65,000&lt;/td&gt;
					&lt;td&gt;1,723,950&lt;/td&gt;
					&lt;td&gt;172,390&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,020만원&lt;/td&gt;
					&lt;td&gt;7,407,490&lt;/td&gt;
					&lt;td&gt;2,792,510&lt;/td&gt;
					&lt;td&gt;454,500&lt;/td&gt;
					&lt;td&gt;315,120&lt;/td&gt;
					&lt;td&gt;23,250&lt;/td&gt;
					&lt;td&gt;65,650&lt;/td&gt;
					&lt;td&gt;1,758,180&lt;/td&gt;
					&lt;td&gt;175,810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,030만원&lt;/td&gt;
					&lt;td&gt;7,461,330&lt;/td&gt;
					&lt;td&gt;2,838,670&lt;/td&gt;
					&lt;td&gt;459,000&lt;/td&gt;
					&lt;td&gt;318,240&lt;/td&gt;
					&lt;td&gt;23,480&lt;/td&gt;
					&lt;td&gt;66,300&lt;/td&gt;
					&lt;td&gt;1,792,410&lt;/td&gt;
					&lt;td&gt;179,240&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,040만원&lt;/td&gt;
					&lt;td&gt;7,515,180&lt;/td&gt;
					&lt;td&gt;2,884,820&lt;/td&gt;
					&lt;td&gt;463,500&lt;/td&gt;
					&lt;td&gt;321,360&lt;/td&gt;
					&lt;td&gt;23,710&lt;/td&gt;
					&lt;td&gt;66,950&lt;/td&gt;
					&lt;td&gt;1,826,640&lt;/td&gt;
					&lt;td&gt;182,660&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,050만원&lt;/td&gt;
					&lt;td&gt;7,569,030&lt;/td&gt;
					&lt;td&gt;2,930,970&lt;/td&gt;
					&lt;td&gt;468,000&lt;/td&gt;
					&lt;td&gt;324,480&lt;/td&gt;
					&lt;td&gt;23,940&lt;/td&gt;
					&lt;td&gt;67,600&lt;/td&gt;
					&lt;td&gt;1,860,870&lt;/td&gt;
					&lt;td&gt;186,080&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,060만원&lt;/td&gt;
					&lt;td&gt;7,622,890&lt;/td&gt;
					&lt;td&gt;2,977,110&lt;/td&gt;
					&lt;td&gt;472,500&lt;/td&gt;
					&lt;td&gt;327,600&lt;/td&gt;
					&lt;td&gt;24,170&lt;/td&gt;
					&lt;td&gt;68,250&lt;/td&gt;
					&lt;td&gt;1,895,090&lt;/td&gt;
					&lt;td&gt;189,500&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,070만원&lt;/td&gt;
					&lt;td&gt;7,676,730&lt;/td&gt;
					&lt;td&gt;3,023,270&lt;/td&gt;
					&lt;td&gt;477,000&lt;/td&gt;
					&lt;td&gt;330,720&lt;/td&gt;
					&lt;td&gt;24,400&lt;/td&gt;
					&lt;td&gt;68,900&lt;/td&gt;
					&lt;td&gt;1,929,320&lt;/td&gt;
					&lt;td&gt;192,930&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,080만원&lt;/td&gt;
					&lt;td&gt;7,730,580&lt;/td&gt;
					&lt;td&gt;3,069,420&lt;/td&gt;
					&lt;td&gt;481,500&lt;/td&gt;
					&lt;td&gt;333,840&lt;/td&gt;
					&lt;td&gt;24,630&lt;/td&gt;
					&lt;td&gt;69,550&lt;/td&gt;
					&lt;td&gt;1,963,550&lt;/td&gt;
					&lt;td&gt;196,350&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,090만원&lt;/td&gt;
					&lt;td&gt;7,784,430&lt;/td&gt;
					&lt;td&gt;3,115,570&lt;/td&gt;
					&lt;td&gt;486,000&lt;/td&gt;
					&lt;td&gt;336,960&lt;/td&gt;
					&lt;td&gt;24,860&lt;/td&gt;
					&lt;td&gt;70,200&lt;/td&gt;
					&lt;td&gt;1,997,780&lt;/td&gt;
					&lt;td&gt;199,770&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,100만원&lt;/td&gt;
					&lt;td&gt;7,838,270&lt;/td&gt;
					&lt;td&gt;3,161,730&lt;/td&gt;
					&lt;td&gt;490,500&lt;/td&gt;
					&lt;td&gt;340,080&lt;/td&gt;
					&lt;td&gt;25,090&lt;/td&gt;
					&lt;td&gt;70,850&lt;/td&gt;
					&lt;td&gt;2,032,010&lt;/td&gt;
					&lt;td&gt;203,200&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,110만원&lt;/td&gt;
					&lt;td&gt;7,892,120&lt;/td&gt;
					&lt;td&gt;3,207,880&lt;/td&gt;
					&lt;td&gt;495,000&lt;/td&gt;
					&lt;td&gt;343,200&lt;/td&gt;
					&lt;td&gt;25,320&lt;/td&gt;
					&lt;td&gt;71,500&lt;/td&gt;
					&lt;td&gt;2,066,240&lt;/td&gt;
					&lt;td&gt;206,620&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,120만원&lt;/td&gt;
					&lt;td&gt;7,945,970&lt;/td&gt;
					&lt;td&gt;3,254,030&lt;/td&gt;
					&lt;td&gt;499,500&lt;/td&gt;
					&lt;td&gt;346,320&lt;/td&gt;
					&lt;td&gt;25,550&lt;/td&gt;
					&lt;td&gt;72,150&lt;/td&gt;
					&lt;td&gt;2,100,470&lt;/td&gt;
					&lt;td&gt;210,040&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,130만원&lt;/td&gt;
					&lt;td&gt;7,999,810&lt;/td&gt;
					&lt;td&gt;3,300,190&lt;/td&gt;
					&lt;td&gt;504,000&lt;/td&gt;
					&lt;td&gt;349,440&lt;/td&gt;
					&lt;td&gt;25,780&lt;/td&gt;
					&lt;td&gt;72,800&lt;/td&gt;
					&lt;td&gt;2,134,700&lt;/td&gt;
					&lt;td&gt;213,470&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,140만원&lt;/td&gt;
					&lt;td&gt;8,053,660&lt;/td&gt;
					&lt;td&gt;3,346,340&lt;/td&gt;
					&lt;td&gt;508,500&lt;/td&gt;
					&lt;td&gt;352,560&lt;/td&gt;
					&lt;td&gt;26,010&lt;/td&gt;
					&lt;td&gt;73,450&lt;/td&gt;
					&lt;td&gt;2,168,930&lt;/td&gt;
					&lt;td&gt;216,890&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,150만원&lt;/td&gt;
					&lt;td&gt;8,107,510&lt;/td&gt;
					&lt;td&gt;3,392,490&lt;/td&gt;
					&lt;td&gt;513,000&lt;/td&gt;
					&lt;td&gt;355,680&lt;/td&gt;
					&lt;td&gt;26,240&lt;/td&gt;
					&lt;td&gt;74,100&lt;/td&gt;
					&lt;td&gt;2,203,160&lt;/td&gt;
					&lt;td&gt;220,310&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,160만원&lt;/td&gt;
					&lt;td&gt;8,161,360&lt;/td&gt;
					&lt;td&gt;3,438,640&lt;/td&gt;
					&lt;td&gt;517,500&lt;/td&gt;
					&lt;td&gt;358,800&lt;/td&gt;
					&lt;td&gt;26,470&lt;/td&gt;
					&lt;td&gt;74,750&lt;/td&gt;
					&lt;td&gt;2,237,390&lt;/td&gt;
					&lt;td&gt;223,730&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,170만원&lt;/td&gt;
					&lt;td&gt;8,215,200&lt;/td&gt;
					&lt;td&gt;3,484,800&lt;/td&gt;
					&lt;td&gt;522,000&lt;/td&gt;
					&lt;td&gt;361,920&lt;/td&gt;
					&lt;td&gt;26,700&lt;/td&gt;
					&lt;td&gt;75,400&lt;/td&gt;
					&lt;td&gt;2,271,620&lt;/td&gt;
					&lt;td&gt;227,160&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,180만원&lt;/td&gt;
					&lt;td&gt;8,269,060&lt;/td&gt;
					&lt;td&gt;3,530,940&lt;/td&gt;
					&lt;td&gt;526,500&lt;/td&gt;
					&lt;td&gt;365,040&lt;/td&gt;
					&lt;td&gt;26,930&lt;/td&gt;
					&lt;td&gt;76,050&lt;/td&gt;
					&lt;td&gt;2,305,840&lt;/td&gt;
					&lt;td&gt;230,580&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,190만원&lt;/td&gt;
					&lt;td&gt;8,322,900&lt;/td&gt;
					&lt;td&gt;3,577,100&lt;/td&gt;
					&lt;td&gt;531,000&lt;/td&gt;
					&lt;td&gt;368,160&lt;/td&gt;
					&lt;td&gt;27,170&lt;/td&gt;
					&lt;td&gt;76,700&lt;/td&gt;
					&lt;td&gt;2,340,070&lt;/td&gt;
					&lt;td&gt;234,000&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,200만원&lt;/td&gt;
					&lt;td&gt;8,376,740&lt;/td&gt;
					&lt;td&gt;3,623,260&lt;/td&gt;
					&lt;td&gt;535,500&lt;/td&gt;
					&lt;td&gt;371,280&lt;/td&gt;
					&lt;td&gt;27,400&lt;/td&gt;
					&lt;td&gt;77,350&lt;/td&gt;
					&lt;td&gt;2,374,300&lt;/td&gt;
					&lt;td&gt;237,430&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;</description>
      <category>ETC</category>
      <category>2025</category>
      <category>세전</category>
      <category>세후</category>
      <category>소득세</category>
      <category>실수령</category>
      <category>연봉</category>
      <category>월</category>
      <category>월급</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/204</guid>
      <comments>https://dev-log-island.tistory.com/204#entry204comment</comments>
      <pubDate>Tue, 25 Mar 2025 16:01:24 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 인덱스 리빌드 대상 뽑아내기</title>
      <link>https://dev-log-island.tistory.com/203</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;운영중인 DB가 느려진 것 같아서 인덱스 리빌드를 결정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대상 선정을 위한 쿼리를 만들어 보았다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;SELECT
    PSUI.schemaname
    , PSUI.relname AS table_name
    , PSUI.indexrelname AS index_name
    , PSUI.idx_scan /* 인덱스가 사용된 횟수 */
    , PSUI.idx_tup_read /* 인덱스 튜플 수 */
    , PSUI.idx_tup_fetch /* 인덱스에서 실제 검색된 튜플 수 */
    , pg_size_pretty(pg_relation_size(PSAI.indexrelid)) AS index_size /* 인덱스의 크기 */
    , 'REINDEX INDEX CONCURRENTLY ' || PSUI.schemaname || '.' || PSUI.indexrelname || ';'
FROM pg_stat_user_indexes PSUI
    LEFT OUTER JOIN pg_stat_all_indexes PSAI
        ON PSAI.relname = PSUI.relname
        AND PSAI.indexrelname = PSUI.indexrelname
ORDER BY PSUI.idx_tup_read DESC, PSUI.idx_scan DESC, pg_relation_size(PSAI.indexrelid) DESC
;
------------------------------------------------------------------------------------------------------------------------
-- 거의 사용되니 않는 인덱스 -&amp;gt; 삭제하는 게 나을 수 있겠다
SELECT
    PSUI.schemaname
    , PSUI.relname AS table_name
    , PSUI.indexrelname AS index_name
    , PSUI.idx_scan /* 인덱스가 사용된 횟수 */
    , PSUI.idx_tup_read /* 인덱스 튜플 수 */
    , PSUI.idx_tup_fetch /* 인덱스에서 실제 검색된 튜플 수 */
    , pg_size_pretty(pg_relation_size(PSAI.indexrelid)) AS index_size /* 인덱스의 크기 */
    , 'REINDEX INDEX CONCURRENTLY ' || PSUI.schemaname || '.' || PSUI.indexrelname || ';'
FROM pg_stat_user_indexes PSUI
    LEFT OUTER JOIN pg_stat_all_indexes PSAI
        ON PSAI.relname = PSUI.relname
        AND PSAI.indexrelname = PSUI.indexrelname
WHERE PSUI.idx_scan &amp;lt; 100
ORDER BY PSUI.idx_scan DESC
;
------------------------------------------------------------------------------------------------------------------------
-- 크기가 너무 큰 인덱스
SELECT
    PSUI.schemaname
    , PSUI.relname AS table_name
    , PSUI.indexrelname AS index_name
    , PSUI.idx_scan /* 인덱스가 사용된 횟수 */
    , PSUI.idx_tup_read /* 인덱스 튜플 수 */
    , PSUI.idx_tup_fetch /* 인덱스에서 실제 검색된 튜플 수 */
    , pg_size_pretty(pg_relation_size(PSAI.indexrelid)) AS index_size /* 인덱스의 크기 */
    , 'REINDEX INDEX CONCURRENTLY ' || PSUI.schemaname || '.' || PSUI.indexrelname || ';'
FROM pg_stat_user_indexes PSUI
    LEFT OUTER JOIN pg_stat_all_indexes PSAI
        ON PSAI.relname = PSUI.relname
        AND PSAI.indexrelname = PSUI.indexrelname
ORDER BY pg_relation_size(PSAI.indexrelid) DESC
LIMIT 50
;
------------------------------------------------------------------------------------------------------------------------
-- 테이블 싸이즈에 비해 크기가 너무 큰 인덱스
SELECT
    PSUI.schemaname
    , PSUI.relname AS table_name
    , PSUI.indexrelname AS index_name
    , PSUI.idx_scan /* 인덱스가 사용된 횟수 */
    , PSUI.idx_tup_read /* 인덱스 튜플 수 */
    , PSUI.idx_tup_fetch /* 인덱스에서 실제 검색된 튜플 수 */
    , pg_size_pretty(pg_relation_size(PSAI.indexrelid)) AS index_size /* 인덱스의 크기 */
    , pg_size_pretty(pg_relation_size(T.oid)) AS table_size /* 테이블의 크기 */
    , ROUND(pg_relation_size(PSAI.indexrelid)::numeric / pg_relation_size(T.oid) * 100, 2) AS INDEX_RATIO
    , 'REINDEX INDEX CONCURRENTLY ' || PSUI.schemaname || '.' || PSUI.indexrelname || ';'
FROM pg_stat_user_indexes PSUI
    INNER JOIN pg_class T
        ON PSUI.relname = T.relname
    LEFT OUTER JOIN pg_stat_all_indexes PSAI
        ON PSAI.relname = PSUI.relname
        AND PSAI.indexrelname = PSUI.indexrelname
WHERE pg_relation_size(T.oid) &amp;gt; 0
AND pg_relation_size(PSAI.indexrelid) &amp;gt; 0
AND PSUI.idx_scan &amp;gt; 0
AND ROUND(pg_relation_size(PSAI.indexrelid)::numeric / pg_relation_size(T.oid) * 100, 2) &amp;gt; 100
ORDER BY INDEX_RATIO DESC
LIMIT 50
;
------------------------------------------------------------------------------------------------------------------------
-- 오래된 인덱스
SELECT
    PSUI.schemaname
    , PSUI.relname AS table_name
    , PSUI.indexrelname AS index_name
    , PSUI.idx_scan /* 인덱스가 사용된 횟수 */
    , PSUI.idx_tup_read /* 인덱스 튜플 수 */
    , PSUI.idx_tup_fetch /* 인덱스에서 실제 검색된 튜플 수 */
    , pg_size_pretty(pg_relation_size(PSAI.indexrelid)) AS index_size /* 인덱스의 크기 */
    , pg_stat_get_last_vacuum_time(PSAI.indexrelid) AS last_vacumm
    , 'REINDEX INDEX CONCURRENTLY ' || PSUI.schemaname || '.' || PSUI.indexrelname || ';'
FROM pg_stat_user_indexes PSUI
    LEFT OUTER JOIN pg_stat_all_indexes PSAI
        ON PSAI.relname = PSUI.relname
        AND PSAI.indexrelname = PSUI.indexrelname
WHERE PSUI.idx_scan = 0
OR PSAI.idx_scan = 0
ORDER BY last_vacumm ASC NULLS FIRST
;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Database</category>
      <category>db</category>
      <category>Index</category>
      <category>PostgreSQL</category>
      <category>Rebuild</category>
      <category>개선</category>
      <category>디비</category>
      <category>리빌드</category>
      <category>성능</category>
      <category>인덱스</category>
      <category>포스트</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/203</guid>
      <comments>https://dev-log-island.tistory.com/203#entry203comment</comments>
      <pubDate>Wed, 19 Feb 2025 10:24:27 +0900</pubDate>
    </item>
    <item>
      <title>2025년 연봉 실 수령액 표</title>
      <link>https://dev-log-island.tistory.com/201</link>
      <description>&lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;1,000만원&lt;/td&gt;
					&lt;td&gt;771,033&lt;/td&gt;
					&lt;td&gt;62,300&lt;/td&gt;
					&lt;td&gt;32,990&lt;/td&gt;
					&lt;td&gt;22,870&lt;/td&gt;
					&lt;td&gt;1,680&lt;/td&gt;
					&lt;td&gt;4,760&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,100만원&lt;/td&gt;
					&lt;td&gt;847,286&lt;/td&gt;
					&lt;td&gt;69,380&lt;/td&gt;
					&lt;td&gt;36,740&lt;/td&gt;
					&lt;td&gt;25,470&lt;/td&gt;
					&lt;td&gt;1,870&lt;/td&gt;
					&lt;td&gt;5,300&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,200만원&lt;/td&gt;
					&lt;td&gt;923,500&lt;/td&gt;
					&lt;td&gt;76,500&lt;/td&gt;
					&lt;td&gt;40,500&lt;/td&gt;
					&lt;td&gt;28,080&lt;/td&gt;
					&lt;td&gt;2,070&lt;/td&gt;
					&lt;td&gt;5,850&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
					&lt;td&gt;0&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,300만원&lt;/td&gt;
					&lt;td&gt;998,863&lt;/td&gt;
					&lt;td&gt;84,470&lt;/td&gt;
					&lt;td&gt;44,240&lt;/td&gt;
					&lt;td&gt;30,670&lt;/td&gt;
					&lt;td&gt;2,260&lt;/td&gt;
					&lt;td&gt;6,390&lt;/td&gt;
					&lt;td&gt;830&lt;/td&gt;
					&lt;td&gt;80&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,400만원&lt;/td&gt;
					&lt;td&gt;1,073,736&lt;/td&gt;
					&lt;td&gt;92,930&lt;/td&gt;
					&lt;td&gt;47,990&lt;/td&gt;
					&lt;td&gt;33,270&lt;/td&gt;
					&lt;td&gt;2,450&lt;/td&gt;
					&lt;td&gt;6,930&lt;/td&gt;
					&lt;td&gt;2,090&lt;/td&gt;
					&lt;td&gt;200&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,500만원&lt;/td&gt;
					&lt;td&gt;1,148,580&lt;/td&gt;
					&lt;td&gt;101,420&lt;/td&gt;
					&lt;td&gt;51,750&lt;/td&gt;
					&lt;td&gt;35,880&lt;/td&gt;
					&lt;td&gt;2,640&lt;/td&gt;
					&lt;td&gt;7,470&lt;/td&gt;
					&lt;td&gt;3,350&lt;/td&gt;
					&lt;td&gt;330&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,600만원&lt;/td&gt;
					&lt;td&gt;1,223,463&lt;/td&gt;
					&lt;td&gt;109,870&lt;/td&gt;
					&lt;td&gt;55,490&lt;/td&gt;
					&lt;td&gt;38,470&lt;/td&gt;
					&lt;td&gt;2,830&lt;/td&gt;
					&lt;td&gt;8,010&lt;/td&gt;
					&lt;td&gt;4,610&lt;/td&gt;
					&lt;td&gt;460&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,700만원&lt;/td&gt;
					&lt;td&gt;1,297,826&lt;/td&gt;
					&lt;td&gt;118,840&lt;/td&gt;
					&lt;td&gt;59,240&lt;/td&gt;
					&lt;td&gt;41,070&lt;/td&gt;
					&lt;td&gt;3,030&lt;/td&gt;
					&lt;td&gt;8,550&lt;/td&gt;
					&lt;td&gt;6,320&lt;/td&gt;
					&lt;td&gt;630&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,800만원&lt;/td&gt;
					&lt;td&gt;1,372,040&lt;/td&gt;
					&lt;td&gt;127,960&lt;/td&gt;
					&lt;td&gt;63,000&lt;/td&gt;
					&lt;td&gt;43,680&lt;/td&gt;
					&lt;td&gt;3,220&lt;/td&gt;
					&lt;td&gt;9,100&lt;/td&gt;
					&lt;td&gt;8,150&lt;/td&gt;
					&lt;td&gt;810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;1,900만원&lt;/td&gt;
					&lt;td&gt;1,446,313&lt;/td&gt;
					&lt;td&gt;137,020&lt;/td&gt;
					&lt;td&gt;66,740&lt;/td&gt;
					&lt;td&gt;46,270&lt;/td&gt;
					&lt;td&gt;3,410&lt;/td&gt;
					&lt;td&gt;9,640&lt;/td&gt;
					&lt;td&gt;9,970&lt;/td&gt;
					&lt;td&gt;990&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,000만원&lt;/td&gt;
					&lt;td&gt;1,520,566&lt;/td&gt;
					&lt;td&gt;146,100&lt;/td&gt;
					&lt;td&gt;70,490&lt;/td&gt;
					&lt;td&gt;48,870&lt;/td&gt;
					&lt;td&gt;3,600&lt;/td&gt;
					&lt;td&gt;10,180&lt;/td&gt;
					&lt;td&gt;11,790&lt;/td&gt;
					&lt;td&gt;1,170&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,100만원&lt;/td&gt;
					&lt;td&gt;1,594,790&lt;/td&gt;
					&lt;td&gt;155,210&lt;/td&gt;
					&lt;td&gt;74,250&lt;/td&gt;
					&lt;td&gt;51,480&lt;/td&gt;
					&lt;td&gt;3,790&lt;/td&gt;
					&lt;td&gt;10,720&lt;/td&gt;
					&lt;td&gt;13,610&lt;/td&gt;
					&lt;td&gt;1,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,200만원&lt;/td&gt;
					&lt;td&gt;1,669,043&lt;/td&gt;
					&lt;td&gt;164,290&lt;/td&gt;
					&lt;td&gt;77,990&lt;/td&gt;
					&lt;td&gt;54,070&lt;/td&gt;
					&lt;td&gt;3,990&lt;/td&gt;
					&lt;td&gt;11,260&lt;/td&gt;
					&lt;td&gt;15,440&lt;/td&gt;
					&lt;td&gt;1,540&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,300만원&lt;/td&gt;
					&lt;td&gt;1,743,296&lt;/td&gt;
					&lt;td&gt;173,370&lt;/td&gt;
					&lt;td&gt;81,740&lt;/td&gt;
					&lt;td&gt;56,670&lt;/td&gt;
					&lt;td&gt;4,180&lt;/td&gt;
					&lt;td&gt;11,800&lt;/td&gt;
					&lt;td&gt;17,260&lt;/td&gt;
					&lt;td&gt;1,720&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,400만원&lt;/td&gt;
					&lt;td&gt;1,817,310&lt;/td&gt;
					&lt;td&gt;182,690&lt;/td&gt;
					&lt;td&gt;85,500&lt;/td&gt;
					&lt;td&gt;59,280&lt;/td&gt;
					&lt;td&gt;4,370&lt;/td&gt;
					&lt;td&gt;12,350&lt;/td&gt;
					&lt;td&gt;19,270&lt;/td&gt;
					&lt;td&gt;1,920&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,500만원&lt;/td&gt;
					&lt;td&gt;1,890,463&lt;/td&gt;
					&lt;td&gt;192,870&lt;/td&gt;
					&lt;td&gt;89,240&lt;/td&gt;
					&lt;td&gt;61,870&lt;/td&gt;
					&lt;td&gt;4,560&lt;/td&gt;
					&lt;td&gt;12,890&lt;/td&gt;
					&lt;td&gt;22,100&lt;/td&gt;
					&lt;td&gt;2,210&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,600만원&lt;/td&gt;
					&lt;td&gt;1,963,596&lt;/td&gt;
					&lt;td&gt;203,070&lt;/td&gt;
					&lt;td&gt;92,990&lt;/td&gt;
					&lt;td&gt;64,470&lt;/td&gt;
					&lt;td&gt;4,750&lt;/td&gt;
					&lt;td&gt;13,430&lt;/td&gt;
					&lt;td&gt;24,940&lt;/td&gt;
					&lt;td&gt;2,490&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,700만원&lt;/td&gt;
					&lt;td&gt;2,036,710&lt;/td&gt;
					&lt;td&gt;213,290&lt;/td&gt;
					&lt;td&gt;96,750&lt;/td&gt;
					&lt;td&gt;67,080&lt;/td&gt;
					&lt;td&gt;4,950&lt;/td&gt;
					&lt;td&gt;13,970&lt;/td&gt;
					&lt;td&gt;27,770&lt;/td&gt;
					&lt;td&gt;2,770&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,800만원&lt;/td&gt;
					&lt;td&gt;2,109,853&lt;/td&gt;
					&lt;td&gt;223,480&lt;/td&gt;
					&lt;td&gt;100,490&lt;/td&gt;
					&lt;td&gt;69,670&lt;/td&gt;
					&lt;td&gt;5,140&lt;/td&gt;
					&lt;td&gt;14,510&lt;/td&gt;
					&lt;td&gt;30,610&lt;/td&gt;
					&lt;td&gt;3,060&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;2,900만원&lt;/td&gt;
					&lt;td&gt;2,179,916&lt;/td&gt;
					&lt;td&gt;236,750&lt;/td&gt;
					&lt;td&gt;104,240&lt;/td&gt;
					&lt;td&gt;72,270&lt;/td&gt;
					&lt;td&gt;5,330&lt;/td&gt;
					&lt;td&gt;15,050&lt;/td&gt;
					&lt;td&gt;36,240&lt;/td&gt;
					&lt;td&gt;3,620&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;3,000만원&lt;/td&gt;
					&lt;td&gt;2,248,340&lt;/td&gt;
					&lt;td&gt;251,660&lt;/td&gt;
					&lt;td&gt;108,000&lt;/td&gt;
					&lt;td&gt;74,880&lt;/td&gt;
					&lt;td&gt;5,520&lt;/td&gt;
					&lt;td&gt;15,600&lt;/td&gt;
					&lt;td&gt;43,330&lt;/td&gt;
					&lt;td&gt;4,330&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,100만원&lt;/td&gt;
					&lt;td&gt;2,316,813&lt;/td&gt;
					&lt;td&gt;266,520&lt;/td&gt;
					&lt;td&gt;111,740&lt;/td&gt;
					&lt;td&gt;77,470&lt;/td&gt;
					&lt;td&gt;5,710&lt;/td&gt;
					&lt;td&gt;16,140&lt;/td&gt;
					&lt;td&gt;50,420&lt;/td&gt;
					&lt;td&gt;5,040&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,200만원&lt;/td&gt;
					&lt;td&gt;2,384,896&lt;/td&gt;
					&lt;td&gt;281,770&lt;/td&gt;
					&lt;td&gt;115,490&lt;/td&gt;
					&lt;td&gt;80,070&lt;/td&gt;
					&lt;td&gt;5,900&lt;/td&gt;
					&lt;td&gt;16,680&lt;/td&gt;
					&lt;td&gt;57,850&lt;/td&gt;
					&lt;td&gt;5,780&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,300만원&lt;/td&gt;
					&lt;td&gt;2,451,470&lt;/td&gt;
					&lt;td&gt;298,530&lt;/td&gt;
					&lt;td&gt;119,250&lt;/td&gt;
					&lt;td&gt;82,680&lt;/td&gt;
					&lt;td&gt;6,100&lt;/td&gt;
					&lt;td&gt;17,220&lt;/td&gt;
					&lt;td&gt;66,620&lt;/td&gt;
					&lt;td&gt;6,660&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,400만원&lt;/td&gt;
					&lt;td&gt;2,515,923&lt;/td&gt;
					&lt;td&gt;317,410&lt;/td&gt;
					&lt;td&gt;122,990&lt;/td&gt;
					&lt;td&gt;85,270&lt;/td&gt;
					&lt;td&gt;6,290&lt;/td&gt;
					&lt;td&gt;17,760&lt;/td&gt;
					&lt;td&gt;77,370&lt;/td&gt;
					&lt;td&gt;7,730&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,500만원&lt;/td&gt;
					&lt;td&gt;2,580,346&lt;/td&gt;
					&lt;td&gt;336,320&lt;/td&gt;
					&lt;td&gt;126,740&lt;/td&gt;
					&lt;td&gt;87,870&lt;/td&gt;
					&lt;td&gt;6,480&lt;/td&gt;
					&lt;td&gt;18,300&lt;/td&gt;
					&lt;td&gt;88,120&lt;/td&gt;
					&lt;td&gt;8,810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,600만원&lt;/td&gt;
					&lt;td&gt;2,656,670&lt;/td&gt;
					&lt;td&gt;343,330&lt;/td&gt;
					&lt;td&gt;130,500&lt;/td&gt;
					&lt;td&gt;90,480&lt;/td&gt;
					&lt;td&gt;6,670&lt;/td&gt;
					&lt;td&gt;18,850&lt;/td&gt;
					&lt;td&gt;88,030&lt;/td&gt;
					&lt;td&gt;8,800&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,700만원&lt;/td&gt;
					&lt;td&gt;2,723,873&lt;/td&gt;
					&lt;td&gt;359,460&lt;/td&gt;
					&lt;td&gt;134,240&lt;/td&gt;
					&lt;td&gt;93,070&lt;/td&gt;
					&lt;td&gt;6,860&lt;/td&gt;
					&lt;td&gt;19,390&lt;/td&gt;
					&lt;td&gt;96,280&lt;/td&gt;
					&lt;td&gt;9,620&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,800만원&lt;/td&gt;
					&lt;td&gt;2,788,286&lt;/td&gt;
					&lt;td&gt;378,380&lt;/td&gt;
					&lt;td&gt;137,990&lt;/td&gt;
					&lt;td&gt;95,670&lt;/td&gt;
					&lt;td&gt;7,060&lt;/td&gt;
					&lt;td&gt;19,930&lt;/td&gt;
					&lt;td&gt;107,030&lt;/td&gt;
					&lt;td&gt;10,700&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;3,900만원&lt;/td&gt;
					&lt;td&gt;2,852,700&lt;/td&gt;
					&lt;td&gt;397,300&lt;/td&gt;
					&lt;td&gt;141,750&lt;/td&gt;
					&lt;td&gt;98,280&lt;/td&gt;
					&lt;td&gt;7,250&lt;/td&gt;
					&lt;td&gt;20,470&lt;/td&gt;
					&lt;td&gt;117,780&lt;/td&gt;
					&lt;td&gt;11,770&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,000만원&lt;/td&gt;
					&lt;td&gt;2,917,143&lt;/td&gt;
					&lt;td&gt;416,190&lt;/td&gt;
					&lt;td&gt;145,490&lt;/td&gt;
					&lt;td&gt;100,870&lt;/td&gt;
					&lt;td&gt;7,440&lt;/td&gt;
					&lt;td&gt;21,010&lt;/td&gt;
					&lt;td&gt;128,530&lt;/td&gt;
					&lt;td&gt;12,850&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,100만원&lt;/td&gt;
					&lt;td&gt;2,981,576&lt;/td&gt;
					&lt;td&gt;435,090&lt;/td&gt;
					&lt;td&gt;149,240&lt;/td&gt;
					&lt;td&gt;103,470&lt;/td&gt;
					&lt;td&gt;7,630&lt;/td&gt;
					&lt;td&gt;21,550&lt;/td&gt;
					&lt;td&gt;139,280&lt;/td&gt;
					&lt;td&gt;13,920&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,200만원&lt;/td&gt;
					&lt;td&gt;3,045,970&lt;/td&gt;
					&lt;td&gt;454,030&lt;/td&gt;
					&lt;td&gt;153,000&lt;/td&gt;
					&lt;td&gt;106,080&lt;/td&gt;
					&lt;td&gt;7,820&lt;/td&gt;
					&lt;td&gt;22,100&lt;/td&gt;
					&lt;td&gt;150,030&lt;/td&gt;
					&lt;td&gt;15,000&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,300만원&lt;/td&gt;
					&lt;td&gt;3,110,423&lt;/td&gt;
					&lt;td&gt;472,910&lt;/td&gt;
					&lt;td&gt;156,740&lt;/td&gt;
					&lt;td&gt;108,670&lt;/td&gt;
					&lt;td&gt;8,010&lt;/td&gt;
					&lt;td&gt;22,640&lt;/td&gt;
					&lt;td&gt;160,780&lt;/td&gt;
					&lt;td&gt;16,070&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,400만원&lt;/td&gt;
					&lt;td&gt;3,174,836&lt;/td&gt;
					&lt;td&gt;491,830&lt;/td&gt;
					&lt;td&gt;160,490&lt;/td&gt;
					&lt;td&gt;111,270&lt;/td&gt;
					&lt;td&gt;8,210&lt;/td&gt;
					&lt;td&gt;23,180&lt;/td&gt;
					&lt;td&gt;171,530&lt;/td&gt;
					&lt;td&gt;17,150&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,500만원&lt;/td&gt;
					&lt;td&gt;3,239,250&lt;/td&gt;
					&lt;td&gt;510,750&lt;/td&gt;
					&lt;td&gt;164,250&lt;/td&gt;
					&lt;td&gt;113,880&lt;/td&gt;
					&lt;td&gt;8,400&lt;/td&gt;
					&lt;td&gt;23,720&lt;/td&gt;
					&lt;td&gt;182,280&lt;/td&gt;
					&lt;td&gt;18,220&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,600만원&lt;/td&gt;
					&lt;td&gt;3,303,693&lt;/td&gt;
					&lt;td&gt;529,640&lt;/td&gt;
					&lt;td&gt;167,990&lt;/td&gt;
					&lt;td&gt;116,470&lt;/td&gt;
					&lt;td&gt;8,590&lt;/td&gt;
					&lt;td&gt;24,260&lt;/td&gt;
					&lt;td&gt;193,030&lt;/td&gt;
					&lt;td&gt;19,300&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,700만원&lt;/td&gt;
					&lt;td&gt;3,362,136&lt;/td&gt;
					&lt;td&gt;554,530&lt;/td&gt;
					&lt;td&gt;171,740&lt;/td&gt;
					&lt;td&gt;119,070&lt;/td&gt;
					&lt;td&gt;8,780&lt;/td&gt;
					&lt;td&gt;24,800&lt;/td&gt;
					&lt;td&gt;209,220&lt;/td&gt;
					&lt;td&gt;20,920&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,800만원&lt;/td&gt;
					&lt;td&gt;3,425,500&lt;/td&gt;
					&lt;td&gt;574,500&lt;/td&gt;
					&lt;td&gt;175,500&lt;/td&gt;
					&lt;td&gt;121,680&lt;/td&gt;
					&lt;td&gt;8,970&lt;/td&gt;
					&lt;td&gt;25,350&lt;/td&gt;
					&lt;td&gt;220,910&lt;/td&gt;
					&lt;td&gt;22,090&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;4,900만원&lt;/td&gt;
					&lt;td&gt;3,488,923&lt;/td&gt;
					&lt;td&gt;594,410&lt;/td&gt;
					&lt;td&gt;179,240&lt;/td&gt;
					&lt;td&gt;124,270&lt;/td&gt;
					&lt;td&gt;9,170&lt;/td&gt;
					&lt;td&gt;25,890&lt;/td&gt;
					&lt;td&gt;232,590&lt;/td&gt;
					&lt;td&gt;23,250&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;5,000만원&lt;/td&gt;
					&lt;td&gt;3,552,316&lt;/td&gt;
					&lt;td&gt;614,350&lt;/td&gt;
					&lt;td&gt;182,990&lt;/td&gt;
					&lt;td&gt;126,870&lt;/td&gt;
					&lt;td&gt;9,360&lt;/td&gt;
					&lt;td&gt;26,430&lt;/td&gt;
					&lt;td&gt;244,280&lt;/td&gt;
					&lt;td&gt;24,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,100만원&lt;/td&gt;
					&lt;td&gt;3,615,690&lt;/td&gt;
					&lt;td&gt;634,310&lt;/td&gt;
					&lt;td&gt;186,750&lt;/td&gt;
					&lt;td&gt;129,480&lt;/td&gt;
					&lt;td&gt;9,550&lt;/td&gt;
					&lt;td&gt;26,970&lt;/td&gt;
					&lt;td&gt;255,970&lt;/td&gt;
					&lt;td&gt;25,590&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,200만원&lt;/td&gt;
					&lt;td&gt;3,679,103&lt;/td&gt;
					&lt;td&gt;654,230&lt;/td&gt;
					&lt;td&gt;190,490&lt;/td&gt;
					&lt;td&gt;132,070&lt;/td&gt;
					&lt;td&gt;9,740&lt;/td&gt;
					&lt;td&gt;27,510&lt;/td&gt;
					&lt;td&gt;267,660&lt;/td&gt;
					&lt;td&gt;26,760&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,300만원&lt;/td&gt;
					&lt;td&gt;3,742,506&lt;/td&gt;
					&lt;td&gt;674,160&lt;/td&gt;
					&lt;td&gt;194,240&lt;/td&gt;
					&lt;td&gt;134,670&lt;/td&gt;
					&lt;td&gt;9,930&lt;/td&gt;
					&lt;td&gt;28,050&lt;/td&gt;
					&lt;td&gt;279,340&lt;/td&gt;
					&lt;td&gt;27,930&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,400만원&lt;/td&gt;
					&lt;td&gt;3,805,860&lt;/td&gt;
					&lt;td&gt;694,140&lt;/td&gt;
					&lt;td&gt;198,000&lt;/td&gt;
					&lt;td&gt;137,280&lt;/td&gt;
					&lt;td&gt;10,130&lt;/td&gt;
					&lt;td&gt;28,600&lt;/td&gt;
					&lt;td&gt;291,030&lt;/td&gt;
					&lt;td&gt;29,100&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,500만원&lt;/td&gt;
					&lt;td&gt;3,869,273&lt;/td&gt;
					&lt;td&gt;714,060&lt;/td&gt;
					&lt;td&gt;201,740&lt;/td&gt;
					&lt;td&gt;139,870&lt;/td&gt;
					&lt;td&gt;10,320&lt;/td&gt;
					&lt;td&gt;29,140&lt;/td&gt;
					&lt;td&gt;302,720&lt;/td&gt;
					&lt;td&gt;30,270&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,600만원&lt;/td&gt;
					&lt;td&gt;3,932,666&lt;/td&gt;
					&lt;td&gt;734,000&lt;/td&gt;
					&lt;td&gt;205,490&lt;/td&gt;
					&lt;td&gt;142,470&lt;/td&gt;
					&lt;td&gt;10,510&lt;/td&gt;
					&lt;td&gt;29,680&lt;/td&gt;
					&lt;td&gt;314,410&lt;/td&gt;
					&lt;td&gt;31,440&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,700만원&lt;/td&gt;
					&lt;td&gt;3,993,290&lt;/td&gt;
					&lt;td&gt;756,710&lt;/td&gt;
					&lt;td&gt;209,250&lt;/td&gt;
					&lt;td&gt;145,080&lt;/td&gt;
					&lt;td&gt;10,700&lt;/td&gt;
					&lt;td&gt;30,220&lt;/td&gt;
					&lt;td&gt;328,600&lt;/td&gt;
					&lt;td&gt;32,860&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,800만원&lt;/td&gt;
					&lt;td&gt;4,056,723&lt;/td&gt;
					&lt;td&gt;776,610&lt;/td&gt;
					&lt;td&gt;212,990&lt;/td&gt;
					&lt;td&gt;147,670&lt;/td&gt;
					&lt;td&gt;10,890&lt;/td&gt;
					&lt;td&gt;30,760&lt;/td&gt;
					&lt;td&gt;340,280&lt;/td&gt;
					&lt;td&gt;34,020&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;5,900만원&lt;/td&gt;
					&lt;td&gt;4,120,116&lt;/td&gt;
					&lt;td&gt;796,550&lt;/td&gt;
					&lt;td&gt;216,740&lt;/td&gt;
					&lt;td&gt;150,270&lt;/td&gt;
					&lt;td&gt;11,080&lt;/td&gt;
					&lt;td&gt;31,300&lt;/td&gt;
					&lt;td&gt;351,970&lt;/td&gt;
					&lt;td&gt;35,190&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,000만원&lt;/td&gt;
					&lt;td&gt;4,183,470&lt;/td&gt;
					&lt;td&gt;816,530&lt;/td&gt;
					&lt;td&gt;220,500&lt;/td&gt;
					&lt;td&gt;152,880&lt;/td&gt;
					&lt;td&gt;11,280&lt;/td&gt;
					&lt;td&gt;31,850&lt;/td&gt;
					&lt;td&gt;363,660&lt;/td&gt;
					&lt;td&gt;36,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,100만원&lt;/td&gt;
					&lt;td&gt;4,246,893&lt;/td&gt;
					&lt;td&gt;836,440&lt;/td&gt;
					&lt;td&gt;224,240&lt;/td&gt;
					&lt;td&gt;155,470&lt;/td&gt;
					&lt;td&gt;11,470&lt;/td&gt;
					&lt;td&gt;32,390&lt;/td&gt;
					&lt;td&gt;375,340&lt;/td&gt;
					&lt;td&gt;37,530&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,200만원&lt;/td&gt;
					&lt;td&gt;4,310,286&lt;/td&gt;
					&lt;td&gt;856,380&lt;/td&gt;
					&lt;td&gt;227,990&lt;/td&gt;
					&lt;td&gt;158,070&lt;/td&gt;
					&lt;td&gt;11,660&lt;/td&gt;
					&lt;td&gt;32,930&lt;/td&gt;
					&lt;td&gt;387,030&lt;/td&gt;
					&lt;td&gt;38,700&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,300만원&lt;/td&gt;
					&lt;td&gt;4,373,660&lt;/td&gt;
					&lt;td&gt;876,340&lt;/td&gt;
					&lt;td&gt;231,750&lt;/td&gt;
					&lt;td&gt;160,680&lt;/td&gt;
					&lt;td&gt;11,850&lt;/td&gt;
					&lt;td&gt;33,470&lt;/td&gt;
					&lt;td&gt;398,720&lt;/td&gt;
					&lt;td&gt;39,870&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,400만원&lt;/td&gt;
					&lt;td&gt;4,437,073&lt;/td&gt;
					&lt;td&gt;896,260&lt;/td&gt;
					&lt;td&gt;235,490&lt;/td&gt;
					&lt;td&gt;163,270&lt;/td&gt;
					&lt;td&gt;12,040&lt;/td&gt;
					&lt;td&gt;34,010&lt;/td&gt;
					&lt;td&gt;410,410&lt;/td&gt;
					&lt;td&gt;41,040&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,500만원&lt;/td&gt;
					&lt;td&gt;4,500,476&lt;/td&gt;
					&lt;td&gt;916,190&lt;/td&gt;
					&lt;td&gt;239,240&lt;/td&gt;
					&lt;td&gt;165,870&lt;/td&gt;
					&lt;td&gt;12,240&lt;/td&gt;
					&lt;td&gt;34,550&lt;/td&gt;
					&lt;td&gt;422,090&lt;/td&gt;
					&lt;td&gt;42,200&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,600만원&lt;/td&gt;
					&lt;td&gt;4,562,980&lt;/td&gt;
					&lt;td&gt;937,020&lt;/td&gt;
					&lt;td&gt;243,000&lt;/td&gt;
					&lt;td&gt;168,480&lt;/td&gt;
					&lt;td&gt;12,430&lt;/td&gt;
					&lt;td&gt;35,100&lt;/td&gt;
					&lt;td&gt;434,560&lt;/td&gt;
					&lt;td&gt;43,450&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,700만원&lt;/td&gt;
					&lt;td&gt;4,618,693&lt;/td&gt;
					&lt;td&gt;964,640&lt;/td&gt;
					&lt;td&gt;246,740&lt;/td&gt;
					&lt;td&gt;171,070&lt;/td&gt;
					&lt;td&gt;12,620&lt;/td&gt;
					&lt;td&gt;35,640&lt;/td&gt;
					&lt;td&gt;453,250&lt;/td&gt;
					&lt;td&gt;45,320&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,800만원&lt;/td&gt;
					&lt;td&gt;4,674,376&lt;/td&gt;
					&lt;td&gt;992,290&lt;/td&gt;
					&lt;td&gt;250,490&lt;/td&gt;
					&lt;td&gt;173,670&lt;/td&gt;
					&lt;td&gt;12,810&lt;/td&gt;
					&lt;td&gt;36,180&lt;/td&gt;
					&lt;td&gt;471,950&lt;/td&gt;
					&lt;td&gt;47,190&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;6,900만원&lt;/td&gt;
					&lt;td&gt;4,730,080&lt;/td&gt;
					&lt;td&gt;1,019,920&lt;/td&gt;
					&lt;td&gt;254,250&lt;/td&gt;
					&lt;td&gt;176,280&lt;/td&gt;
					&lt;td&gt;13,000&lt;/td&gt;
					&lt;td&gt;36,720&lt;/td&gt;
					&lt;td&gt;490,610&lt;/td&gt;
					&lt;td&gt;49,060&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;7,000만원&lt;/td&gt;
					&lt;td&gt;4,785,823&lt;/td&gt;
					&lt;td&gt;1,047,510&lt;/td&gt;
					&lt;td&gt;257,990&lt;/td&gt;
					&lt;td&gt;178,870&lt;/td&gt;
					&lt;td&gt;13,200&lt;/td&gt;
					&lt;td&gt;37,260&lt;/td&gt;
					&lt;td&gt;509,270&lt;/td&gt;
					&lt;td&gt;50,920&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,100만원&lt;/td&gt;
					&lt;td&gt;4,841,546&lt;/td&gt;
					&lt;td&gt;1,075,120&lt;/td&gt;
					&lt;td&gt;261,740&lt;/td&gt;
					&lt;td&gt;181,470&lt;/td&gt;
					&lt;td&gt;13,390&lt;/td&gt;
					&lt;td&gt;37,800&lt;/td&gt;
					&lt;td&gt;527,930&lt;/td&gt;
					&lt;td&gt;52,790&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,200만원&lt;/td&gt;
					&lt;td&gt;4,869,760&lt;/td&gt;
					&lt;td&gt;1,130,240&lt;/td&gt;
					&lt;td&gt;265,500&lt;/td&gt;
					&lt;td&gt;184,080&lt;/td&gt;
					&lt;td&gt;13,580&lt;/td&gt;
					&lt;td&gt;38,350&lt;/td&gt;
					&lt;td&gt;571,580&lt;/td&gt;
					&lt;td&gt;57,150&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,300만원&lt;/td&gt;
					&lt;td&gt;4,925,283&lt;/td&gt;
					&lt;td&gt;1,158,050&lt;/td&gt;
					&lt;td&gt;269,240&lt;/td&gt;
					&lt;td&gt;186,670&lt;/td&gt;
					&lt;td&gt;13,770&lt;/td&gt;
					&lt;td&gt;38,890&lt;/td&gt;
					&lt;td&gt;590,440&lt;/td&gt;
					&lt;td&gt;59,040&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,400만원&lt;/td&gt;
					&lt;td&gt;4,980,786&lt;/td&gt;
					&lt;td&gt;1,185,880&lt;/td&gt;
					&lt;td&gt;272,990&lt;/td&gt;
					&lt;td&gt;189,270&lt;/td&gt;
					&lt;td&gt;13,960&lt;/td&gt;
					&lt;td&gt;39,430&lt;/td&gt;
					&lt;td&gt;609,300&lt;/td&gt;
					&lt;td&gt;60,930&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,500만원&lt;/td&gt;
					&lt;td&gt;5,036,270&lt;/td&gt;
					&lt;td&gt;1,213,730&lt;/td&gt;
					&lt;td&gt;276,750&lt;/td&gt;
					&lt;td&gt;191,880&lt;/td&gt;
					&lt;td&gt;14,160&lt;/td&gt;
					&lt;td&gt;39,970&lt;/td&gt;
					&lt;td&gt;628,160&lt;/td&gt;
					&lt;td&gt;62,810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,600만원&lt;/td&gt;
					&lt;td&gt;5,091,793&lt;/td&gt;
					&lt;td&gt;1,241,540&lt;/td&gt;
					&lt;td&gt;280,490&lt;/td&gt;
					&lt;td&gt;194,470&lt;/td&gt;
					&lt;td&gt;14,350&lt;/td&gt;
					&lt;td&gt;40,510&lt;/td&gt;
					&lt;td&gt;647,020&lt;/td&gt;
					&lt;td&gt;64,700&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,700만원&lt;/td&gt;
					&lt;td&gt;5,147,306&lt;/td&gt;
					&lt;td&gt;1,269,360&lt;/td&gt;
					&lt;td&gt;284,240&lt;/td&gt;
					&lt;td&gt;197,070&lt;/td&gt;
					&lt;td&gt;14,540&lt;/td&gt;
					&lt;td&gt;41,050&lt;/td&gt;
					&lt;td&gt;665,880&lt;/td&gt;
					&lt;td&gt;66,580&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,800만원&lt;/td&gt;
					&lt;td&gt;5,202,780&lt;/td&gt;
					&lt;td&gt;1,297,220&lt;/td&gt;
					&lt;td&gt;288,000&lt;/td&gt;
					&lt;td&gt;199,680&lt;/td&gt;
					&lt;td&gt;14,730&lt;/td&gt;
					&lt;td&gt;41,600&lt;/td&gt;
					&lt;td&gt;684,740&lt;/td&gt;
					&lt;td&gt;68,470&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;7,900만원&lt;/td&gt;
					&lt;td&gt;5,258,303&lt;/td&gt;
					&lt;td&gt;1,325,030&lt;/td&gt;
					&lt;td&gt;291,740&lt;/td&gt;
					&lt;td&gt;202,270&lt;/td&gt;
					&lt;td&gt;14,920&lt;/td&gt;
					&lt;td&gt;42,140&lt;/td&gt;
					&lt;td&gt;703,600&lt;/td&gt;
					&lt;td&gt;70,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,000만원&lt;/td&gt;
					&lt;td&gt;5,313,816&lt;/td&gt;
					&lt;td&gt;1,352,850&lt;/td&gt;
					&lt;td&gt;295,490&lt;/td&gt;
					&lt;td&gt;204,870&lt;/td&gt;
					&lt;td&gt;15,110&lt;/td&gt;
					&lt;td&gt;42,680&lt;/td&gt;
					&lt;td&gt;722,460&lt;/td&gt;
					&lt;td&gt;72,240&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,100만원&lt;/td&gt;
					&lt;td&gt;5,369,290&lt;/td&gt;
					&lt;td&gt;1,380,710&lt;/td&gt;
					&lt;td&gt;299,250&lt;/td&gt;
					&lt;td&gt;207,480&lt;/td&gt;
					&lt;td&gt;15,310&lt;/td&gt;
					&lt;td&gt;43,220&lt;/td&gt;
					&lt;td&gt;741,320&lt;/td&gt;
					&lt;td&gt;74,130&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,200만원&lt;/td&gt;
					&lt;td&gt;5,424,823&lt;/td&gt;
					&lt;td&gt;1,408,510&lt;/td&gt;
					&lt;td&gt;302,990&lt;/td&gt;
					&lt;td&gt;210,070&lt;/td&gt;
					&lt;td&gt;15,500&lt;/td&gt;
					&lt;td&gt;43,760&lt;/td&gt;
					&lt;td&gt;760,180&lt;/td&gt;
					&lt;td&gt;76,010&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,300만원&lt;/td&gt;
					&lt;td&gt;5,480,326&lt;/td&gt;
					&lt;td&gt;1,436,340&lt;/td&gt;
					&lt;td&gt;306,740&lt;/td&gt;
					&lt;td&gt;212,670&lt;/td&gt;
					&lt;td&gt;15,690&lt;/td&gt;
					&lt;td&gt;44,300&lt;/td&gt;
					&lt;td&gt;779,040&lt;/td&gt;
					&lt;td&gt;77,900&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,400만원&lt;/td&gt;
					&lt;td&gt;5,535,820&lt;/td&gt;
					&lt;td&gt;1,464,180&lt;/td&gt;
					&lt;td&gt;310,500&lt;/td&gt;
					&lt;td&gt;215,280&lt;/td&gt;
					&lt;td&gt;15,880&lt;/td&gt;
					&lt;td&gt;44,850&lt;/td&gt;
					&lt;td&gt;797,890&lt;/td&gt;
					&lt;td&gt;79,780&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,500만원&lt;/td&gt;
					&lt;td&gt;5,591,343&lt;/td&gt;
					&lt;td&gt;1,491,990&lt;/td&gt;
					&lt;td&gt;314,240&lt;/td&gt;
					&lt;td&gt;217,870&lt;/td&gt;
					&lt;td&gt;16,070&lt;/td&gt;
					&lt;td&gt;45,390&lt;/td&gt;
					&lt;td&gt;816,750&lt;/td&gt;
					&lt;td&gt;81,670&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,600만원&lt;/td&gt;
					&lt;td&gt;5,646,836&lt;/td&gt;
					&lt;td&gt;1,519,830&lt;/td&gt;
					&lt;td&gt;317,990&lt;/td&gt;
					&lt;td&gt;220,470&lt;/td&gt;
					&lt;td&gt;16,270&lt;/td&gt;
					&lt;td&gt;45,930&lt;/td&gt;
					&lt;td&gt;835,610&lt;/td&gt;
					&lt;td&gt;83,560&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,700만원&lt;/td&gt;
					&lt;td&gt;5,702,330&lt;/td&gt;
					&lt;td&gt;1,547,670&lt;/td&gt;
					&lt;td&gt;321,750&lt;/td&gt;
					&lt;td&gt;223,080&lt;/td&gt;
					&lt;td&gt;16,460&lt;/td&gt;
					&lt;td&gt;46,470&lt;/td&gt;
					&lt;td&gt;854,470&lt;/td&gt;
					&lt;td&gt;85,440&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,800만원&lt;/td&gt;
					&lt;td&gt;5,757,853&lt;/td&gt;
					&lt;td&gt;1,575,480&lt;/td&gt;
					&lt;td&gt;325,490&lt;/td&gt;
					&lt;td&gt;225,670&lt;/td&gt;
					&lt;td&gt;16,650&lt;/td&gt;
					&lt;td&gt;47,010&lt;/td&gt;
					&lt;td&gt;873,330&lt;/td&gt;
					&lt;td&gt;87,330&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;8,900만원&lt;/td&gt;
					&lt;td&gt;5,813,366&lt;/td&gt;
					&lt;td&gt;1,603,300&lt;/td&gt;
					&lt;td&gt;329,240&lt;/td&gt;
					&lt;td&gt;228,270&lt;/td&gt;
					&lt;td&gt;16,840&lt;/td&gt;
					&lt;td&gt;47,550&lt;/td&gt;
					&lt;td&gt;892,190&lt;/td&gt;
					&lt;td&gt;89,210&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;9,000만원&lt;/td&gt;
					&lt;td&gt;5,868,840&lt;/td&gt;
					&lt;td&gt;1,631,160&lt;/td&gt;
					&lt;td&gt;333,000&lt;/td&gt;
					&lt;td&gt;230,880&lt;/td&gt;
					&lt;td&gt;17,030&lt;/td&gt;
					&lt;td&gt;48,100&lt;/td&gt;
					&lt;td&gt;911,050&lt;/td&gt;
					&lt;td&gt;91,100&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,100만원&lt;/td&gt;
					&lt;td&gt;5,924,353&lt;/td&gt;
					&lt;td&gt;1,658,980&lt;/td&gt;
					&lt;td&gt;336,740&lt;/td&gt;
					&lt;td&gt;233,470&lt;/td&gt;
					&lt;td&gt;17,230&lt;/td&gt;
					&lt;td&gt;48,640&lt;/td&gt;
					&lt;td&gt;929,910&lt;/td&gt;
					&lt;td&gt;92,990&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,200만원&lt;/td&gt;
					&lt;td&gt;5,979,866&lt;/td&gt;
					&lt;td&gt;1,686,800&lt;/td&gt;
					&lt;td&gt;340,490&lt;/td&gt;
					&lt;td&gt;236,070&lt;/td&gt;
					&lt;td&gt;17,420&lt;/td&gt;
					&lt;td&gt;49,180&lt;/td&gt;
					&lt;td&gt;948,770&lt;/td&gt;
					&lt;td&gt;94,870&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,300만원&lt;/td&gt;
					&lt;td&gt;6,035,350&lt;/td&gt;
					&lt;td&gt;1,714,650&lt;/td&gt;
					&lt;td&gt;344,250&lt;/td&gt;
					&lt;td&gt;238,680&lt;/td&gt;
					&lt;td&gt;17,610&lt;/td&gt;
					&lt;td&gt;49,720&lt;/td&gt;
					&lt;td&gt;967,630&lt;/td&gt;
					&lt;td&gt;96,760&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,400만원&lt;/td&gt;
					&lt;td&gt;6,090,883&lt;/td&gt;
					&lt;td&gt;1,742,450&lt;/td&gt;
					&lt;td&gt;347,990&lt;/td&gt;
					&lt;td&gt;241,270&lt;/td&gt;
					&lt;td&gt;17,800&lt;/td&gt;
					&lt;td&gt;50,260&lt;/td&gt;
					&lt;td&gt;986,490&lt;/td&gt;
					&lt;td&gt;98,640&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,500만원&lt;/td&gt;
					&lt;td&gt;6,146,386&lt;/td&gt;
					&lt;td&gt;1,770,280&lt;/td&gt;
					&lt;td&gt;351,740&lt;/td&gt;
					&lt;td&gt;243,870&lt;/td&gt;
					&lt;td&gt;17,990&lt;/td&gt;
					&lt;td&gt;50,800&lt;/td&gt;
					&lt;td&gt;1,005,350&lt;/td&gt;
					&lt;td&gt;100,530&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,600만원&lt;/td&gt;
					&lt;td&gt;6,201,850&lt;/td&gt;
					&lt;td&gt;1,798,150&lt;/td&gt;
					&lt;td&gt;355,500&lt;/td&gt;
					&lt;td&gt;246,480&lt;/td&gt;
					&lt;td&gt;18,190&lt;/td&gt;
					&lt;td&gt;51,350&lt;/td&gt;
					&lt;td&gt;1,024,210&lt;/td&gt;
					&lt;td&gt;102,420&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,700만원&lt;/td&gt;
					&lt;td&gt;6,257,383&lt;/td&gt;
					&lt;td&gt;1,825,950&lt;/td&gt;
					&lt;td&gt;359,240&lt;/td&gt;
					&lt;td&gt;249,070&lt;/td&gt;
					&lt;td&gt;18,380&lt;/td&gt;
					&lt;td&gt;51,890&lt;/td&gt;
					&lt;td&gt;1,043,070&lt;/td&gt;
					&lt;td&gt;104,300&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,800만원&lt;/td&gt;
					&lt;td&gt;6,312,886&lt;/td&gt;
					&lt;td&gt;1,853,780&lt;/td&gt;
					&lt;td&gt;362,990&lt;/td&gt;
					&lt;td&gt;251,670&lt;/td&gt;
					&lt;td&gt;18,570&lt;/td&gt;
					&lt;td&gt;52,430&lt;/td&gt;
					&lt;td&gt;1,061,930&lt;/td&gt;
					&lt;td&gt;106,190&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;9,900만원&lt;/td&gt;
					&lt;td&gt;6,368,380&lt;/td&gt;
					&lt;td&gt;1,881,620&lt;/td&gt;
					&lt;td&gt;366,750&lt;/td&gt;
					&lt;td&gt;254,280&lt;/td&gt;
					&lt;td&gt;18,760&lt;/td&gt;
					&lt;td&gt;52,970&lt;/td&gt;
					&lt;td&gt;1,080,790&lt;/td&gt;
					&lt;td&gt;108,070&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,000만원&lt;/td&gt;
					&lt;td&gt;6,423,903&lt;/td&gt;
					&lt;td&gt;1,909,430&lt;/td&gt;
					&lt;td&gt;370,490&lt;/td&gt;
					&lt;td&gt;256,870&lt;/td&gt;
					&lt;td&gt;18,950&lt;/td&gt;
					&lt;td&gt;53,510&lt;/td&gt;
					&lt;td&gt;1,099,650&lt;/td&gt;
					&lt;td&gt;109,960&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,100만원&lt;/td&gt;
					&lt;td&gt;6,479,406&lt;/td&gt;
					&lt;td&gt;1,937,260&lt;/td&gt;
					&lt;td&gt;374,240&lt;/td&gt;
					&lt;td&gt;259,470&lt;/td&gt;
					&lt;td&gt;19,140&lt;/td&gt;
					&lt;td&gt;54,050&lt;/td&gt;
					&lt;td&gt;1,118,510&lt;/td&gt;
					&lt;td&gt;111,850&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,200만원&lt;/td&gt;
					&lt;td&gt;6,534,350&lt;/td&gt;
					&lt;td&gt;1,965,650&lt;/td&gt;
					&lt;td&gt;378,000&lt;/td&gt;
					&lt;td&gt;262,080&lt;/td&gt;
					&lt;td&gt;19,340&lt;/td&gt;
					&lt;td&gt;54,600&lt;/td&gt;
					&lt;td&gt;1,137,850&lt;/td&gt;
					&lt;td&gt;113,780&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,300만원&lt;/td&gt;
					&lt;td&gt;6,589,213&lt;/td&gt;
					&lt;td&gt;1,994,120&lt;/td&gt;
					&lt;td&gt;381,740&lt;/td&gt;
					&lt;td&gt;264,670&lt;/td&gt;
					&lt;td&gt;19,530&lt;/td&gt;
					&lt;td&gt;55,140&lt;/td&gt;
					&lt;td&gt;1,157,310&lt;/td&gt;
					&lt;td&gt;115,730&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,400만원&lt;/td&gt;
					&lt;td&gt;6,644,076&lt;/td&gt;
					&lt;td&gt;2,022,590&lt;/td&gt;
					&lt;td&gt;385,490&lt;/td&gt;
					&lt;td&gt;267,270&lt;/td&gt;
					&lt;td&gt;19,720&lt;/td&gt;
					&lt;td&gt;55,680&lt;/td&gt;
					&lt;td&gt;1,176,760&lt;/td&gt;
					&lt;td&gt;117,670&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,500만원&lt;/td&gt;
					&lt;td&gt;6,698,900&lt;/td&gt;
					&lt;td&gt;2,051,100&lt;/td&gt;
					&lt;td&gt;389,250&lt;/td&gt;
					&lt;td&gt;269,880&lt;/td&gt;
					&lt;td&gt;19,910&lt;/td&gt;
					&lt;td&gt;56,220&lt;/td&gt;
					&lt;td&gt;1,196,220&lt;/td&gt;
					&lt;td&gt;119,620&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,600만원&lt;/td&gt;
					&lt;td&gt;6,753,773&lt;/td&gt;
					&lt;td&gt;2,079,560&lt;/td&gt;
					&lt;td&gt;392,990&lt;/td&gt;
					&lt;td&gt;272,470&lt;/td&gt;
					&lt;td&gt;20,100&lt;/td&gt;
					&lt;td&gt;56,760&lt;/td&gt;
					&lt;td&gt;1,215,680&lt;/td&gt;
					&lt;td&gt;121,560&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,700만원&lt;/td&gt;
					&lt;td&gt;6,808,606&lt;/td&gt;
					&lt;td&gt;2,108,060&lt;/td&gt;
					&lt;td&gt;396,740&lt;/td&gt;
					&lt;td&gt;275,070&lt;/td&gt;
					&lt;td&gt;20,300&lt;/td&gt;
					&lt;td&gt;57,300&lt;/td&gt;
					&lt;td&gt;1,235,140&lt;/td&gt;
					&lt;td&gt;123,510&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,800만원&lt;/td&gt;
					&lt;td&gt;6,863,420&lt;/td&gt;
					&lt;td&gt;2,136,580&lt;/td&gt;
					&lt;td&gt;400,500&lt;/td&gt;
					&lt;td&gt;277,680&lt;/td&gt;
					&lt;td&gt;20,490&lt;/td&gt;
					&lt;td&gt;57,850&lt;/td&gt;
					&lt;td&gt;1,254,600&lt;/td&gt;
					&lt;td&gt;125,460&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;10,900만원&lt;/td&gt;
					&lt;td&gt;6,918,293&lt;/td&gt;
					&lt;td&gt;2,165,040&lt;/td&gt;
					&lt;td&gt;404,240&lt;/td&gt;
					&lt;td&gt;280,270&lt;/td&gt;
					&lt;td&gt;20,680&lt;/td&gt;
					&lt;td&gt;58,390&lt;/td&gt;
					&lt;td&gt;1,274,060&lt;/td&gt;
					&lt;td&gt;127,400&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;11,000만원&lt;/td&gt;
					&lt;td&gt;6,968,006&lt;/td&gt;
					&lt;td&gt;2,198,660&lt;/td&gt;
					&lt;td&gt;407,990&lt;/td&gt;
					&lt;td&gt;282,870&lt;/td&gt;
					&lt;td&gt;20,870&lt;/td&gt;
					&lt;td&gt;58,930&lt;/td&gt;
					&lt;td&gt;1,298,190&lt;/td&gt;
					&lt;td&gt;129,810&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,100만원&lt;/td&gt;
					&lt;td&gt;7,013,020&lt;/td&gt;
					&lt;td&gt;2,236,980&lt;/td&gt;
					&lt;td&gt;411,750&lt;/td&gt;
					&lt;td&gt;285,480&lt;/td&gt;
					&lt;td&gt;21,060&lt;/td&gt;
					&lt;td&gt;59,470&lt;/td&gt;
					&lt;td&gt;1,326,570&lt;/td&gt;
					&lt;td&gt;132,650&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,200만원&lt;/td&gt;
					&lt;td&gt;7,058,073&lt;/td&gt;
					&lt;td&gt;2,275,260&lt;/td&gt;
					&lt;td&gt;415,490&lt;/td&gt;
					&lt;td&gt;288,070&lt;/td&gt;
					&lt;td&gt;21,250&lt;/td&gt;
					&lt;td&gt;60,010&lt;/td&gt;
					&lt;td&gt;1,354,950&lt;/td&gt;
					&lt;td&gt;135,490&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,300만원&lt;/td&gt;
					&lt;td&gt;7,103,096&lt;/td&gt;
					&lt;td&gt;2,313,570&lt;/td&gt;
					&lt;td&gt;419,240&lt;/td&gt;
					&lt;td&gt;290,670&lt;/td&gt;
					&lt;td&gt;21,450&lt;/td&gt;
					&lt;td&gt;60,550&lt;/td&gt;
					&lt;td&gt;1,383,330&lt;/td&gt;
					&lt;td&gt;138,330&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,400만원&lt;/td&gt;
					&lt;td&gt;7,148,100&lt;/td&gt;
					&lt;td&gt;2,351,900&lt;/td&gt;
					&lt;td&gt;423,000&lt;/td&gt;
					&lt;td&gt;293,280&lt;/td&gt;
					&lt;td&gt;21,640&lt;/td&gt;
					&lt;td&gt;61,100&lt;/td&gt;
					&lt;td&gt;1,411,710&lt;/td&gt;
					&lt;td&gt;141,170&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,500만원&lt;/td&gt;
					&lt;td&gt;7,193,163&lt;/td&gt;
					&lt;td&gt;2,390,170&lt;/td&gt;
					&lt;td&gt;426,740&lt;/td&gt;
					&lt;td&gt;295,870&lt;/td&gt;
					&lt;td&gt;21,830&lt;/td&gt;
					&lt;td&gt;61,640&lt;/td&gt;
					&lt;td&gt;1,440,090&lt;/td&gt;
					&lt;td&gt;144,000&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,600만원&lt;/td&gt;
					&lt;td&gt;7,238,206&lt;/td&gt;
					&lt;td&gt;2,428,460&lt;/td&gt;
					&lt;td&gt;430,490&lt;/td&gt;
					&lt;td&gt;298,470&lt;/td&gt;
					&lt;td&gt;22,020&lt;/td&gt;
					&lt;td&gt;62,180&lt;/td&gt;
					&lt;td&gt;1,468,460&lt;/td&gt;
					&lt;td&gt;146,840&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,700만원&lt;/td&gt;
					&lt;td&gt;7,283,220&lt;/td&gt;
					&lt;td&gt;2,466,780&lt;/td&gt;
					&lt;td&gt;434,250&lt;/td&gt;
					&lt;td&gt;301,080&lt;/td&gt;
					&lt;td&gt;22,210&lt;/td&gt;
					&lt;td&gt;62,720&lt;/td&gt;
					&lt;td&gt;1,496,840&lt;/td&gt;
					&lt;td&gt;149,680&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,800만원&lt;/td&gt;
					&lt;td&gt;7,328,263&lt;/td&gt;
					&lt;td&gt;2,505,070&lt;/td&gt;
					&lt;td&gt;437,990&lt;/td&gt;
					&lt;td&gt;303,670&lt;/td&gt;
					&lt;td&gt;22,410&lt;/td&gt;
					&lt;td&gt;63,260&lt;/td&gt;
					&lt;td&gt;1,525,220&lt;/td&gt;
					&lt;td&gt;152,520&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;11,900만원&lt;/td&gt;
					&lt;td&gt;7,373,296&lt;/td&gt;
					&lt;td&gt;2,543,370&lt;/td&gt;
					&lt;td&gt;441,740&lt;/td&gt;
					&lt;td&gt;306,270&lt;/td&gt;
					&lt;td&gt;22,600&lt;/td&gt;
					&lt;td&gt;63,800&lt;/td&gt;
					&lt;td&gt;1,553,600&lt;/td&gt;
					&lt;td&gt;155,360&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,000만원&lt;/td&gt;
					&lt;td&gt;7,418,310&lt;/td&gt;
					&lt;td&gt;2,581,690&lt;/td&gt;
					&lt;td&gt;445,500&lt;/td&gt;
					&lt;td&gt;308,880&lt;/td&gt;
					&lt;td&gt;22,790&lt;/td&gt;
					&lt;td&gt;64,350&lt;/td&gt;
					&lt;td&gt;1,581,980&lt;/td&gt;
					&lt;td&gt;158,190&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,100만원&lt;/td&gt;
					&lt;td&gt;7,463,363&lt;/td&gt;
					&lt;td&gt;2,619,970&lt;/td&gt;
					&lt;td&gt;449,240&lt;/td&gt;
					&lt;td&gt;311,470&lt;/td&gt;
					&lt;td&gt;22,980&lt;/td&gt;
					&lt;td&gt;64,890&lt;/td&gt;
					&lt;td&gt;1,610,360&lt;/td&gt;
					&lt;td&gt;161,030&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,200만원&lt;/td&gt;
					&lt;td&gt;7,389,566&lt;/td&gt;
					&lt;td&gt;2,777,100&lt;/td&gt;
					&lt;td&gt;452,990&lt;/td&gt;
					&lt;td&gt;314,070&lt;/td&gt;
					&lt;td&gt;23,170&lt;/td&gt;
					&lt;td&gt;65,430&lt;/td&gt;
					&lt;td&gt;1,746,770&lt;/td&gt;
					&lt;td&gt;174,670&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,300만원&lt;/td&gt;
					&lt;td&gt;7,434,420&lt;/td&gt;
					&lt;td&gt;2,815,580&lt;/td&gt;
					&lt;td&gt;456,750&lt;/td&gt;
					&lt;td&gt;316,680&lt;/td&gt;
					&lt;td&gt;23,370&lt;/td&gt;
					&lt;td&gt;65,970&lt;/td&gt;
					&lt;td&gt;1,775,290&lt;/td&gt;
					&lt;td&gt;177,520&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,400만원&lt;/td&gt;
					&lt;td&gt;7,479,303&lt;/td&gt;
					&lt;td&gt;2,854,030&lt;/td&gt;
					&lt;td&gt;460,490&lt;/td&gt;
					&lt;td&gt;319,270&lt;/td&gt;
					&lt;td&gt;23,560&lt;/td&gt;
					&lt;td&gt;66,510&lt;/td&gt;
					&lt;td&gt;1,803,820&lt;/td&gt;
					&lt;td&gt;180,380&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,500만원&lt;/td&gt;
					&lt;td&gt;7,524,186&lt;/td&gt;
					&lt;td&gt;2,892,480&lt;/td&gt;
					&lt;td&gt;464,240&lt;/td&gt;
					&lt;td&gt;321,870&lt;/td&gt;
					&lt;td&gt;23,750&lt;/td&gt;
					&lt;td&gt;67,050&lt;/td&gt;
					&lt;td&gt;1,832,340&lt;/td&gt;
					&lt;td&gt;183,230&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,600만원&lt;/td&gt;
					&lt;td&gt;7,569,030&lt;/td&gt;
					&lt;td&gt;2,930,970&lt;/td&gt;
					&lt;td&gt;468,000&lt;/td&gt;
					&lt;td&gt;324,480&lt;/td&gt;
					&lt;td&gt;23,940&lt;/td&gt;
					&lt;td&gt;67,600&lt;/td&gt;
					&lt;td&gt;1,860,870&lt;/td&gt;
					&lt;td&gt;186,080&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,700만원&lt;/td&gt;
					&lt;td&gt;7,613,933&lt;/td&gt;
					&lt;td&gt;2,969,400&lt;/td&gt;
					&lt;td&gt;471,740&lt;/td&gt;
					&lt;td&gt;327,070&lt;/td&gt;
					&lt;td&gt;24,130&lt;/td&gt;
					&lt;td&gt;68,140&lt;/td&gt;
					&lt;td&gt;1,889,390&lt;/td&gt;
					&lt;td&gt;188,930&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,800만원&lt;/td&gt;
					&lt;td&gt;7,658,806&lt;/td&gt;
					&lt;td&gt;3,007,860&lt;/td&gt;
					&lt;td&gt;475,490&lt;/td&gt;
					&lt;td&gt;329,670&lt;/td&gt;
					&lt;td&gt;24,320&lt;/td&gt;
					&lt;td&gt;68,680&lt;/td&gt;
					&lt;td&gt;1,917,910&lt;/td&gt;
					&lt;td&gt;191,790&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;12,900만원&lt;/td&gt;
					&lt;td&gt;7,703,650&lt;/td&gt;
					&lt;td&gt;3,046,350&lt;/td&gt;
					&lt;td&gt;479,250&lt;/td&gt;
					&lt;td&gt;332,280&lt;/td&gt;
					&lt;td&gt;24,520&lt;/td&gt;
					&lt;td&gt;69,220&lt;/td&gt;
					&lt;td&gt;1,946,440&lt;/td&gt;
					&lt;td&gt;194,640&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;
    &lt;table class=&quot;table table-striped responsive&quot;&gt;
			&lt;thead&gt;
				&lt;tr&gt;
					&lt;th&gt;연봉&lt;/th&gt;
					&lt;th&gt;실수령액&lt;/th&gt;
					&lt;th&gt;공제액계&lt;/th&gt;
					&lt;th&gt;국민연금&lt;/th&gt;
					&lt;th&gt;건강보험&lt;/th&gt;
					&lt;th&gt;장기요양&lt;/th&gt;
					&lt;th&gt;고용보험&lt;/th&gt;
					&lt;th&gt;소득세&lt;/th&gt;
					&lt;th&gt;지방소득세&lt;/th&gt;
				&lt;/tr&gt;
			&lt;/thead&gt;
			&lt;tbody&gt;
								&lt;tr&gt;
					&lt;td&gt;13,000만원&lt;/td&gt;
					&lt;td&gt;7,748,553&lt;/td&gt;
					&lt;td&gt;3,084,780&lt;/td&gt;
					&lt;td&gt;482,990&lt;/td&gt;
					&lt;td&gt;334,870&lt;/td&gt;
					&lt;td&gt;24,710&lt;/td&gt;
					&lt;td&gt;69,760&lt;/td&gt;
					&lt;td&gt;1,974,960&lt;/td&gt;
					&lt;td&gt;197,490&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,100만원&lt;/td&gt;
					&lt;td&gt;7,793,426&lt;/td&gt;
					&lt;td&gt;3,123,240&lt;/td&gt;
					&lt;td&gt;486,740&lt;/td&gt;
					&lt;td&gt;337,470&lt;/td&gt;
					&lt;td&gt;24,900&lt;/td&gt;
					&lt;td&gt;70,300&lt;/td&gt;
					&lt;td&gt;2,003,490&lt;/td&gt;
					&lt;td&gt;200,340&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,200만원&lt;/td&gt;
					&lt;td&gt;7,838,270&lt;/td&gt;
					&lt;td&gt;3,161,730&lt;/td&gt;
					&lt;td&gt;490,500&lt;/td&gt;
					&lt;td&gt;340,080&lt;/td&gt;
					&lt;td&gt;25,090&lt;/td&gt;
					&lt;td&gt;70,850&lt;/td&gt;
					&lt;td&gt;2,032,010&lt;/td&gt;
					&lt;td&gt;203,200&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,300만원&lt;/td&gt;
					&lt;td&gt;7,883,163&lt;/td&gt;
					&lt;td&gt;3,200,170&lt;/td&gt;
					&lt;td&gt;494,240&lt;/td&gt;
					&lt;td&gt;342,670&lt;/td&gt;
					&lt;td&gt;25,280&lt;/td&gt;
					&lt;td&gt;71,390&lt;/td&gt;
					&lt;td&gt;2,060,540&lt;/td&gt;
					&lt;td&gt;206,050&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,400만원&lt;/td&gt;
					&lt;td&gt;7,928,036&lt;/td&gt;
					&lt;td&gt;3,238,630&lt;/td&gt;
					&lt;td&gt;497,990&lt;/td&gt;
					&lt;td&gt;345,270&lt;/td&gt;
					&lt;td&gt;25,480&lt;/td&gt;
					&lt;td&gt;71,930&lt;/td&gt;
					&lt;td&gt;2,089,060&lt;/td&gt;
					&lt;td&gt;208,900&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,500만원&lt;/td&gt;
					&lt;td&gt;7,972,900&lt;/td&gt;
					&lt;td&gt;3,277,100&lt;/td&gt;
					&lt;td&gt;501,750&lt;/td&gt;
					&lt;td&gt;347,880&lt;/td&gt;
					&lt;td&gt;25,670&lt;/td&gt;
					&lt;td&gt;72,470&lt;/td&gt;
					&lt;td&gt;2,117,580&lt;/td&gt;
					&lt;td&gt;211,750&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,600만원&lt;/td&gt;
					&lt;td&gt;8,017,783&lt;/td&gt;
					&lt;td&gt;3,315,550&lt;/td&gt;
					&lt;td&gt;505,490&lt;/td&gt;
					&lt;td&gt;350,470&lt;/td&gt;
					&lt;td&gt;25,860&lt;/td&gt;
					&lt;td&gt;73,010&lt;/td&gt;
					&lt;td&gt;2,146,110&lt;/td&gt;
					&lt;td&gt;214,610&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,700만원&lt;/td&gt;
					&lt;td&gt;8,062,666&lt;/td&gt;
					&lt;td&gt;3,354,000&lt;/td&gt;
					&lt;td&gt;509,240&lt;/td&gt;
					&lt;td&gt;353,070&lt;/td&gt;
					&lt;td&gt;26,050&lt;/td&gt;
					&lt;td&gt;73,550&lt;/td&gt;
					&lt;td&gt;2,174,630&lt;/td&gt;
					&lt;td&gt;217,460&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,800만원&lt;/td&gt;
					&lt;td&gt;8,107,510&lt;/td&gt;
					&lt;td&gt;3,392,490&lt;/td&gt;
					&lt;td&gt;513,000&lt;/td&gt;
					&lt;td&gt;355,680&lt;/td&gt;
					&lt;td&gt;26,240&lt;/td&gt;
					&lt;td&gt;74,100&lt;/td&gt;
					&lt;td&gt;2,203,160&lt;/td&gt;
					&lt;td&gt;220,310&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;13,900만원&lt;/td&gt;
					&lt;td&gt;8,152,403&lt;/td&gt;
					&lt;td&gt;3,430,930&lt;/td&gt;
					&lt;td&gt;516,740&lt;/td&gt;
					&lt;td&gt;358,270&lt;/td&gt;
					&lt;td&gt;26,440&lt;/td&gt;
					&lt;td&gt;74,640&lt;/td&gt;
					&lt;td&gt;2,231,680&lt;/td&gt;
					&lt;td&gt;223,160&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,000만원&lt;/td&gt;
					&lt;td&gt;8,197,266&lt;/td&gt;
					&lt;td&gt;3,469,400&lt;/td&gt;
					&lt;td&gt;520,490&lt;/td&gt;
					&lt;td&gt;360,870&lt;/td&gt;
					&lt;td&gt;26,630&lt;/td&gt;
					&lt;td&gt;75,180&lt;/td&gt;
					&lt;td&gt;2,260,210&lt;/td&gt;
					&lt;td&gt;226,020&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,100만원&lt;/td&gt;
					&lt;td&gt;8,242,130&lt;/td&gt;
					&lt;td&gt;3,507,870&lt;/td&gt;
					&lt;td&gt;524,250&lt;/td&gt;
					&lt;td&gt;363,480&lt;/td&gt;
					&lt;td&gt;26,820&lt;/td&gt;
					&lt;td&gt;75,720&lt;/td&gt;
					&lt;td&gt;2,288,730&lt;/td&gt;
					&lt;td&gt;228,870&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,200만원&lt;/td&gt;
					&lt;td&gt;8,287,033&lt;/td&gt;
					&lt;td&gt;3,546,300&lt;/td&gt;
					&lt;td&gt;527,990&lt;/td&gt;
					&lt;td&gt;366,070&lt;/td&gt;
					&lt;td&gt;27,010&lt;/td&gt;
					&lt;td&gt;76,260&lt;/td&gt;
					&lt;td&gt;2,317,250&lt;/td&gt;
					&lt;td&gt;231,720&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,300만원&lt;/td&gt;
					&lt;td&gt;8,331,906&lt;/td&gt;
					&lt;td&gt;3,584,760&lt;/td&gt;
					&lt;td&gt;531,740&lt;/td&gt;
					&lt;td&gt;368,670&lt;/td&gt;
					&lt;td&gt;27,200&lt;/td&gt;
					&lt;td&gt;76,800&lt;/td&gt;
					&lt;td&gt;2,345,780&lt;/td&gt;
					&lt;td&gt;234,570&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,400만원&lt;/td&gt;
					&lt;td&gt;8,376,740&lt;/td&gt;
					&lt;td&gt;3,623,260&lt;/td&gt;
					&lt;td&gt;535,500&lt;/td&gt;
					&lt;td&gt;371,280&lt;/td&gt;
					&lt;td&gt;27,400&lt;/td&gt;
					&lt;td&gt;77,350&lt;/td&gt;
					&lt;td&gt;2,374,300&lt;/td&gt;
					&lt;td&gt;237,430&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,500만원&lt;/td&gt;
					&lt;td&gt;8,421,633&lt;/td&gt;
					&lt;td&gt;3,661,700&lt;/td&gt;
					&lt;td&gt;539,240&lt;/td&gt;
					&lt;td&gt;373,870&lt;/td&gt;
					&lt;td&gt;27,590&lt;/td&gt;
					&lt;td&gt;77,890&lt;/td&gt;
					&lt;td&gt;2,402,830&lt;/td&gt;
					&lt;td&gt;240,280&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,600만원&lt;/td&gt;
					&lt;td&gt;8,466,516&lt;/td&gt;
					&lt;td&gt;3,700,150&lt;/td&gt;
					&lt;td&gt;542,990&lt;/td&gt;
					&lt;td&gt;376,470&lt;/td&gt;
					&lt;td&gt;27,780&lt;/td&gt;
					&lt;td&gt;78,430&lt;/td&gt;
					&lt;td&gt;2,431,350&lt;/td&gt;
					&lt;td&gt;243,130&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,700만원&lt;/td&gt;
					&lt;td&gt;8,511,370&lt;/td&gt;
					&lt;td&gt;3,738,630&lt;/td&gt;
					&lt;td&gt;546,750&lt;/td&gt;
					&lt;td&gt;379,080&lt;/td&gt;
					&lt;td&gt;27,970&lt;/td&gt;
					&lt;td&gt;78,970&lt;/td&gt;
					&lt;td&gt;2,459,880&lt;/td&gt;
					&lt;td&gt;245,980&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,800만원&lt;/td&gt;
					&lt;td&gt;8,556,263&lt;/td&gt;
					&lt;td&gt;3,777,070&lt;/td&gt;
					&lt;td&gt;550,490&lt;/td&gt;
					&lt;td&gt;381,670&lt;/td&gt;
					&lt;td&gt;28,160&lt;/td&gt;
					&lt;td&gt;79,510&lt;/td&gt;
					&lt;td&gt;2,488,400&lt;/td&gt;
					&lt;td&gt;248,840&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;14,900만원&lt;/td&gt;
					&lt;td&gt;8,601,146&lt;/td&gt;
					&lt;td&gt;3,815,520&lt;/td&gt;
					&lt;td&gt;554,240&lt;/td&gt;
					&lt;td&gt;384,270&lt;/td&gt;
					&lt;td&gt;28,350&lt;/td&gt;
					&lt;td&gt;80,050&lt;/td&gt;
					&lt;td&gt;2,516,920&lt;/td&gt;
					&lt;td&gt;251,690&lt;/td&gt;
				&lt;/tr&gt;
								&lt;tr&gt;
					&lt;td&gt;15,000만원&lt;/td&gt;
					&lt;td&gt;8,645,980&lt;/td&gt;
					&lt;td&gt;3,854,020&lt;/td&gt;
					&lt;td&gt;558,000&lt;/td&gt;
					&lt;td&gt;386,880&lt;/td&gt;
					&lt;td&gt;28,550&lt;/td&gt;
					&lt;td&gt;80,600&lt;/td&gt;
					&lt;td&gt;2,545,450&lt;/td&gt;
					&lt;td&gt;254,540&lt;/td&gt;
				&lt;/tr&gt;
							&lt;/tbody&gt;
		&lt;/table&gt;</description>
      <category>ETC</category>
      <category>1억</category>
      <category>2025</category>
      <category>3000</category>
      <category>4000</category>
      <category>4천</category>
      <category>5000</category>
      <category>5천</category>
      <category>6000</category>
      <category>7000</category>
      <category>연봉</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/201</guid>
      <comments>https://dev-log-island.tistory.com/201#entry201comment</comments>
      <pubDate>Sun, 19 Jan 2025 22:02:28 +0900</pubDate>
    </item>
    <item>
      <title>2025년 SQLD 자격증 시험 일정과 준비 방법</title>
      <link>https://dev-log-island.tistory.com/200</link>
      <description>&lt;h1&gt;2025년 SQLD 자격증 시험 일정과 준비 방법&lt;/h1&gt;
&lt;p&gt;SQLD (SQL Developer) 자격증은 데이터베이스 개발 및 관리에 필요한 SQL과 데이터베이스 관련 기술을 평가하는 자격증으로, IT 분야에서 데이터베이스 관련 업무를 담당하는 데 중요한 역할을 합니다. 2025년 SQLD 자격증 시험 일정과 함께, 효과적인 준비 방법에 대해 안내드리겠습니다.&lt;/p&gt;
&lt;h2&gt;2025년 SQLD 자격증 시험 일정&lt;/h2&gt;
&lt;p&gt;SQLD 자격증은 주기적으로 실시되며, 2025년 시험 일정은 다음과 같습니다:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;회차&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;원서 접수 기간&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;수험표 발급 기간&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;시험일&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;사전 점수 공개 및 재검토 접수 기간&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;합격(예정)자 발표&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;제56회&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2.3 ~ 2.7&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2.21&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;3.8 (토)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;3.28 ~ 4.1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;4.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;제57회&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;4.28 ~ 5.2&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5.16&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5.31 (토)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;6.20 ~ 6.24&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;6.27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;제58회&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;7.21 ~ 7.25&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;8.8&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;8.23 (토)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;9.12 ~ 9.16&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;9.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;제59회&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;10.13 ~ 10.17&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;10.31&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;11.16 (일)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;12.5 ~ 12.9&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;12.12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;시험 일정은 대체로 매 분기마다 실시되며, 응시 등록은 해당 접수 기간 내에만 가능합니다.&lt;/li&gt;
&lt;li&gt;시험 방식은 객관식으로 진행되며, 온라인 또는 오프라인 시험을 선택할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;SQLD 자격증 준비 방법&lt;/h2&gt;
&lt;p&gt;SQLD 자격증 시험은 데이터베이스와 SQL에 대한 기초적인 지식과 실무 경험을 평가합니다. 시험 준비를 위해서는 이론적인 학습과 실습을 병행하는 것이 중요합니다. 아래는 각 항목별로 준비 방법을 제시합니다.&lt;/p&gt;
&lt;h3&gt;(1) SQLD 시험 준비 개요&lt;/h3&gt;
&lt;p&gt;SQLD 시험은 데이터베이스의 기본적인 이해, SQL 사용법, 관계형 데이터베이스 설계, 성능 최적화 등 다양한 영역을 다룹니다. 시험 준비는 기본 이론과 실제 SQL 활용 능력을 키우는 데 집중해야 합니다.&lt;/p&gt;
&lt;h3&gt;(2) 주요 시험 과목&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SQL 기본 문법: SELECT, INSERT, UPDATE, DELETE와 같은 기본적인 SQL 명령어에 대한 이해.&lt;/li&gt;
&lt;li&gt;데이터베이스 설계: ERD(Entity-Relationship Diagram) 설계, 정규화(Normalization)와 역정규화(Denormalization), 데이터 모델링.&lt;/li&gt;
&lt;li&gt;SQL 성능 최적화: 인덱스, 조인, 서브쿼리 등의 성능 최적화 기법.&lt;/li&gt;
&lt;li&gt;트랜잭션 관리: ACID 속성, 트랜잭션 처리 및 관리.&lt;/li&gt;
&lt;li&gt;데이터베이스 관리 시스템(DBMS): DBMS의 기본 개념, 종류, 사용법.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;(3) 준비 방법&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;기본적인 SQL 문법 학습&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL의 기본적인 문법을 철저히 이해하고 연습해야 합니다. 실습을 통해 각 SQL 명령어를 활용할 수 있는 능력을 기르는 것이 중요합니다. SELECT 문을 이용해 데이터 조회, JOIN을 이용한 다중 테이블 연산 등을 충분히 연습하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;관계형 데이터베이스 이해&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ERD 설계: 데이터베이스를 설계할 때 중요한 엔터티, 속성, 관계를 이해해야 합니다. 기본적인 정규화와 관계형 모델링을 학습하세요.&lt;/li&gt;
&lt;li&gt;정규화: 1NF, 2NF, 3NF에 대해 이해하고 실제로 이를 적용하는 연습을 해보세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;실습을 통한 SQL 활용 능력 강화&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL을 이론만으로 학습하지 말고, 실제로 MySQL, PostgreSQL 또는 Oracle 등 DBMS에서 SQL을 실행하며 실습을 진행하세요. 다양한 데이터베이스와 상호작용하면서 문제 해결 능력을 키울 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;성능 최적화 학습&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL 쿼리의 성능을 최적화하는 방법을 공부하세요. 인덱스의 사용, 서브쿼리 최적화, 조인 방식에 따른 성능 차이 등을 이해하고, 실제 환경에서 이를 적용하는 방법을 학습하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;이론과 실습 병행&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;이론 공부와 실습을 병행하면서 문제 해결 능력을 키워야 합니다. SQLD 시험에서는 이론적인 부분뿐만 아니라 실무에서 겪을 수 있는 다양한 시나리오를 다루기 때문에, 기본 문제 풀이와 함께 실전 연습을 충분히 해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;공부 방법과 팁&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;공식 교재와 참고서 활용&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLD 자격증을 준비할 때는 공식 교재를 활용하는 것이 좋습니다. 교재에는 시험에 나오는 기본적인 내용들이 포함되어 있으며, 실제 기출 문제를 통해 시험의 스타일을 익힐 수 있습니다.&lt;/li&gt;
&lt;li&gt;SQLD 관련 서적이나 온라인 강의도 활용하면 도움이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;문제 풀이 및 모의 시험&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;기출 문제나 모의 시험을 풀어보세요. 실제 시험에 나오는 문제 유형을 파악하고, 시간 관리 능력을 키울 수 있습니다.&lt;/li&gt;
&lt;li&gt;SQL 문제는 실습을 통해 연습하는 것이 중요하므로, DBMS에 접속하여 쿼리 문제를 풀어보며 실력을 점검하세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;온라인 커뮤니티와 포럼 활용&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLD 자격증 준비를 하면서 온라인 커뮤니티나 포럼을 활용하여 다른 사람들과 정보 교류를 하는 것도 유익합니다. 실무에서 겪은 다양한 SQL 관련 문제를 해결하고 서로 질문하고 답변하는 과정이 큰 도움이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SQL 실습 환경 구축&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;시험 준비를 할 때는 반드시 DBMS 환경을 구축하여 실습해보세요. MySQL, PostgreSQL, Oracle 등 다양한 DBMS에서 SQL을 실행해보며 각 시스템의 차이점을 이해하고 SQL 실력을 높일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;결론&lt;/h2&gt;
&lt;p&gt;SQLD 자격증은 데이터베이스에 대한 기본적인 이해와 SQL 활용 능력을 증명할 수 있는 중요한 자격증입니다. 2025년 SQLD 시험 일정에 맞춰 체계적으로 준비하면 좋은 결과를 얻을 수 있을 것입니다. 기본적인 이론을 탄탄히 하고 실습을 충분히 하며, 문제 해결 능력을 키워 시험에 임하세요. 좋은 결과가 있기를 바랍니다!&lt;/p&gt;</description>
      <category>Database</category>
      <category>2025</category>
      <category>database</category>
      <category>db</category>
      <category>Oracle</category>
      <category>SQL</category>
      <category>SQLD</category>
      <category>데이터</category>
      <category>데이터베이스</category>
      <category>디비</category>
      <category>자격증</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/200</guid>
      <comments>https://dev-log-island.tistory.com/200#entry200comment</comments>
      <pubDate>Sun, 19 Jan 2025 21:52:16 +0900</pubDate>
    </item>
    <item>
      <title>2025년 리눅스 마스터 자격증 시험일정과 준비 방법</title>
      <link>https://dev-log-island.tistory.com/199</link>
      <description>&lt;h1&gt;2025년 리눅스마스터 자격증 시험일정과 준비 방법&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 마스터 자격증은 한국정보통신자격협회(KAIT)에서 주관하는 자격증으로, 리눅스 운영체제에 대한 지식과 활용 능력을 평가합니다. 1급과 2급으로 나뉘어져 있으며, 각 급수마다 1차와 2차 시험으로 구성됩니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;급수별 특징&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1급: 리눅스 시스템의 관리 능력에 중점을 두어 평가합니다.&lt;/li&gt;
&lt;li&gt;2급: 리눅스 시스템의 사용 능력에 중점을 두어 평가합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;등급&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;차수&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;검정 방법&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;문항 수&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;시험 시간&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;합격 기준&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;1급&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;필기 (객관식 4지 선다형)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;100문항&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;100분&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;60점 이상 (과목당 40% 미만 과락)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;1급&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;필기 (단답, 서술식)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;10문항&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;100분&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;60점 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;1급&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;실기 (작업형)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5~7문항&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;100분&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;60점 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2급&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;온라인 필기 (객관식 4지 선다형)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;50문항&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;60분&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;60점 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2급&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;필기 (객관식 4지 선다형)&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;80문항&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;100분&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;60점 이상 (과목당 40% 미만 과락)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1급 시험 과목&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1차:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스 실무의 이해: 리눅스 개요, 시스템 이해, 네트워크 이해&lt;/li&gt;
&lt;li&gt;리눅스 시스템 관리: 일반 운영 관리, 장치 관리, 시스템 보안 및 관리&lt;/li&gt;
&lt;li&gt;네트워크 및 서비스 활용: 네트워크 서비스, 네트워크 보안&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2차:&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필기: 리눅스 시스템 관리 및 활용에 대한 단답형 및 서술형 문제&lt;/li&gt;
&lt;li&gt;실기: 리눅스 시스템 운영 및 관리 작업 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2급 시험 과목&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1차/2차 공통&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리눅스 일반: 리눅스 이해, 설치, 기본 명령어&lt;/li&gt;
&lt;li&gt;리눅스 운영 및 관리: 파일 시스템, Shell, 프로세스, 에디터, 소프트웨어 설치, 장치 설정&lt;/li&gt;
&lt;li&gt;리눅스 활용: X 윈도, 인터넷 활용, 응용 분야&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;합격 기준&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 차수별로 평균 60점 이상을 획득해야 합니다.&lt;/li&gt;
&lt;li&gt;1급의 경우, 1차 시험 과목 중 어느 하나라도 40점 미만을 받으면 과락으로 불합격 처리됩니다.&lt;/li&gt;
&lt;li&gt;2급의 경우, 2차 시험 과목 중 어느 하나라도 40점 미만을 받으면 과락으로 불합격 처리됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;응시 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국정보통신자격협회 웹사이트 (&lt;a href=&quot;http://www.ihd.or.kr)%EB%A5%BC&quot;&gt;www.ihd.or.kr)를&lt;/a&gt; 통해 시험 접수를 진행할 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2025년 리눅스마스터 자격증 시험 일정&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 리눅스마스터 자격증 시험 일정은 아래와 같습니다. 시험을 준비하려면 각 회차의 접수 기간과 시험일을 확인하고 미리 계획을 세워야 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리눅스마스터 1급&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스마스터 1급은 리눅스 시스템의 고급 관리 능력과 이론적인 지식을 평가하는 자격증입니다. 1차 시험과 2차 시험으로 나뉩니다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;회차&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;차수&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;접수 기간&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;시험일&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;발표일&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2501&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1월 20일 ~ 2월 7일&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;3월 8일 (토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;3월 28일 (금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;3월 31일 ~ 4월 11일&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5월 10일 (토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5월 30일 (금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2502&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;7월 28일 ~ 8월 8일&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;9월 13일 (토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10월 3일 (금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10월 6일 ~ 10월 17일&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;11월 8일 (토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;11월 28일 (금)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리눅스마스터 2급&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스마스터 2급은 리눅스의 기본적인 관리 능력과 실무 지식을 평가합니다. 1차 시험은 기본적인 리눅스 명령어와 설정, 2차 시험은 좀 더 실습적인 내용을 다룹니다.&lt;/p&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;회차&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;차수&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;접수 기간&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;시험일&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;발표일&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2404&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'24.11.04.(월) ~ 11.13.(수)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'24.11.05.(화) ~ 11.14.(목)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'24.11.05.(화) ~ 11.15.(금)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'24.12.14.(토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'25.01.03.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2501&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;01.20.(월) ~ 02.05.(수)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;01.21.(화) ~ 02.06.(목)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;01.21.(화) ~ 02.07.(금)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;03.08.(토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;03.28.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2502&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;04.28.(월) ~ 05.07.(수)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;04.29.(화) ~ 05.08.(목)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;04.29.(화) ~ 05.09.(금)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;06.14.(토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;07.04.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2503&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;07.28.(월) ~ 08.06.(수)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;07.29.(화) ~ 08.07.(목)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;07.29.(화) ~ 08.08.(금)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;09.13.(토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10.03.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;2504&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10.27.(월) ~ 11.05.(수)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10.28.(화) ~ 11.06.(목)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;시험종료 즉시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;-&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2차&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;10.28.(화) ~ 10.07.(금)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;12.13.(토)&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;'26.01.02.(금)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;시험 준비, 공부 방법과 팁&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;교재 선정 및 학습 계획 수립&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;공인 교재 선정&lt;/b&gt;: 인증된 교재를 선택하여 기본 개념 및 실습 위주로 학습합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;학습 일정 계획&lt;/b&gt;: 시험일까지의 남은 시간을 고려하여 주간 및 월간 학습 계획을 세웁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기본 개념 이해&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;리눅스의 구조와 작동 원리&lt;/b&gt; 이해&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파일 시스템 관리&lt;/b&gt;, 사용자 관리, 네트워크 설정 등 기본 개념 숙지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실습 위주의 학습&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;가상 머신 또는 실제 리눅스 환경 구축&lt;/b&gt; 후 명령어 및 설정 실습&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자주 출제되는 명령어와 스크립트 작성&lt;/b&gt; 연습&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기출 문제 풀이&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;과거 기출 문제 분석 및 풀이&lt;/b&gt;를 통해 시험 유형 파악&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간 관리 연습&lt;/b&gt;을 위해 실제 시험 시간에 맞춰 모의고사 실시&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>OS/Linux</category>
      <category>2025</category>
      <category>개발자</category>
      <category>과목</category>
      <category>급수</category>
      <category>리눅스</category>
      <category>리눅스마스터</category>
      <category>마스터</category>
      <category>응시</category>
      <category>일정</category>
      <category>자격증</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/199</guid>
      <comments>https://dev-log-island.tistory.com/199#entry199comment</comments>
      <pubDate>Sat, 18 Jan 2025 23:26:21 +0900</pubDate>
    </item>
    <item>
      <title>개발자 KPI 세우기</title>
      <link>https://dev-log-island.tistory.com/198</link>
      <description>&lt;p&gt;웹 개발자의 &lt;strong&gt;KPI(Key Performance Indicator)&lt;/strong&gt;는 개인의 업무 성과와 팀 목표를 측정하는 데 도움이 됩니다.&lt;br&gt;아래는 일반적인 주니어 웹 개발자를 위한 KPI 항목입니다:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;코드 품질 및 생산성&lt;br&gt; •    코드 리뷰 피드백 반영률: 코드 리뷰에서 지적된 사항을 얼마나 잘 반영했는지.&lt;br&gt; •    주간/월간 코드 기여도: 작성한 코드의 라인 수보다는 기능의 완성도와 기여도를 평가.&lt;br&gt; •    버그 발생률: 작성한 코드에서 발견된 버그의 수.&lt;br&gt; •    테스트 커버리지 향상: 테스트 작성 여부와 코드 커버리지 증가율.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;프로젝트 완료 및 기여&lt;br&gt; •    기한 준수율: 맡은 작업이나 프로젝트를 제때 완료한 비율.&lt;br&gt; •    작업 완료 건수: 주어진 업무(예: Jira 티켓, Git 이슈) 처리 수량.&lt;br&gt; •    기능 구현의 정확성: 요구사항을 충족하며 기능을 개발한 정도.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;학습 및 성장&lt;br&gt; •    새로운 기술 습득: 업무와 관련된 새로운 기술, 프레임워크, 툴을 학습한 정도.&lt;br&gt; •    교육 참여: 팀 내 세미나, 워크숍 또는 외부 교육 프로그램 참여율.&lt;br&gt; •    지식 공유: 팀원들에게 학습한 내용을 공유하거나, 문서화한 빈도.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;협업 및 커뮤니케이션&lt;br&gt; •    커뮤니케이션 명확성: 팀원 및 이해관계자와 명확히 소통하는 능력.&lt;br&gt; •    팀워크 기여도: 코드 리뷰 참여, 동료와의 협업 빈도 및 품질.&lt;br&gt; •    이슈 해결 참여: 문제를 발견하고 해결하는 데 기여한 빈도.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;운영 및 유지보수&lt;br&gt; •    배포 안정성: 개발한 코드가 운영 환경에서 문제 없이 배포된 비율.&lt;br&gt; •    긴급 문제 해결 기여: 운영 환경에서 발생한 문제를 얼마나 효과적으로 지원했는지.&lt;br&gt; •    기존 코드 개선: 리팩토링, 성능 최적화 등 기존 코드에 대한 기여.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;사용자 중심 개발&lt;br&gt; •    사용자 피드백 반영률: 사용자 요구사항을 코드에 잘 반영했는지.&lt;br&gt; •    UX/UI 향상 기여도: 사용자 경험과 인터페이스 개선 기여.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;KPI 예시&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;항목&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;목표 설정 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;코드 리뷰 반영률&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;코드 리뷰 피드백 90% 이상 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;작업 완료 건수&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;주간 티켓 5개 이상 완료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;테스트 커버리지&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;신규 기능 테스트 커버리지 80% 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;신규 기술 학습&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;분기별 1개 기술 블로그 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;커뮤니케이션 명확성&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;회의 후 작업 명확도 95% 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;주니어 개발자 KPI 설정 팁&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;구체적이고 측정 가능하게: 모호한 목표 대신 측정 가능한 목표로 설정.&lt;/li&gt;
&lt;li&gt;성과와 성장의 균형: 단순히 업무량뿐 아니라, 개인의 성장과 학습도 포함.&lt;/li&gt;
&lt;li&gt;주기적인 리뷰: 분기별 또는 월간으로 KPI를 점검하여 조정.&lt;/li&gt;
&lt;li&gt;팀과 회사 목표 연계: 개인 목표가 팀 및 회사 목표와 맞물리도록 설정.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt; &lt;/p&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>KPI</category>
      <category>개발자</category>
      <category>목표</category>
      <category>예시</category>
      <category>인사</category>
      <category>쥬니어</category>
      <category>평가</category>
      <category>학습 성장</category>
      <category>협업</category>
      <category>회사</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/198</guid>
      <comments>https://dev-log-island.tistory.com/198#entry198comment</comments>
      <pubDate>Fri, 17 Jan 2025 11:13:00 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] PostgreSQL AccessShareLock 이해 및 해제 가이드</title>
      <link>https://dev-log-island.tistory.com/197</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;PostgreSQL AccessShareLock 이해 및 해제 가이드&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AccessShareLock이란?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Oracle의 TM LOCK과 유사:&lt;/b&gt; 데이터를 읽는 동안(SELECT) 테이블 구조 변경을 막기 위해 걸리는 락입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성능에 미치는 영향:&lt;/b&gt; 일반적으로 성능 저하를 유발하지 않지만, 테이블 구조 변경 작업 시 방해가 될 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PostgreSQL에서의 역할:&lt;/b&gt; 데이터의 일관성 유지에 기여합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Lock 조회 및 해제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Lock 조회:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT  t.relname,
        l.locktype,
        page,
        virtualtransaction,
        pid,
        mode,
        granted
FROM pg_locks l,
     pg_stat_all_tables t
WHERE l.relation = t.relid
ORDER BY relation ASC;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;relname&lt;/code&gt;: 락이 걸린 테이블 이름&lt;/li&gt;
&lt;li&gt;&lt;code&gt;locktype&lt;/code&gt;: 락 종류 (AccessShareLock 등)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pid&lt;/code&gt;: 프로세스 ID&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mode&lt;/code&gt;: 락 모드&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Lock 해제:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단일 프로세스 종료:&lt;/b&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT pg_cancel_backend(PID);&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 PID의 프로세스만 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상위 쿼리까지 종료:&lt;/b&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;SELECT pg_terminate_backend(PID) FROM pg_stat_activity;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PID와 관련된 모든 상위 쿼리까지 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 실행 중인 쿼리 상태 조회:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;select * from pg_stat_activity;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주의 사항&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;pg_terminate_backend&lt;/b&gt;는 강제 종료이므로 데이터 손실 가능성이 있습니다. 신중하게 사용해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;락 해제 전 반드시 원인을 파악&lt;/b&gt;하고 해결하는 것이 좋습니다. 락이 자주 발생하는 경우, 쿼리 최적화나 데이터베이스 설정 변경이 필요할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PostgreSQL의 AccessShareLock은 데이터 일관성을 위해 필요한 락입니다. 일반적으로 문제가 되지 않지만, 테이블 구조 변경 등 특정 상황에서 방해가 될 수 있습니다. 위의 SQL 쿼리를 사용하여 Lock을 조회하고 해제할 수 있으며, &lt;code&gt;pg_terminate_backend&lt;/code&gt;를 사용할 때는 주의가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;더 자세한 정보는 PostgreSQL 공식 문서를 참고하세요.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AccessShareLock은 SELECT 시 걸리는 락으로, 일반적으로 성능에 영향을 주지 않습니다.&lt;/li&gt;
&lt;li&gt;Lock을 조회하고 해제하는 방법을 알아두면 문제 해결에 도움이 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pg_terminate_backend&lt;/code&gt;는 강력한 명령어이므로 신중하게 사용해야 합니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Database</category>
      <category>AccessShareLock</category>
      <category>Lock</category>
      <category>PostgreSQL</category>
      <category>READ</category>
      <category>락</category>
      <category>리드</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <category>포스트그레</category>
      <category>해제</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/197</guid>
      <comments>https://dev-log-island.tistory.com/197#entry197comment</comments>
      <pubDate>Tue, 19 Nov 2024 12:51:55 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] 사용중인 function의 정의 내용을 특정 문자열 검색 하는 방법</title>
      <link>https://dev-log-island.tistory.com/196</link>
      <description>&lt;p&gt;&lt;code&gt;array_agg is an aggregate function&lt;/code&gt; 에러는 &lt;code&gt;pg_get_functiondef&lt;/code&gt;가 aggregate 함수나 window 함수에 대해서 동작하지 않을 때 발생할 수 있습니다. 이 문제를 해결하려면 함수 정의를 얻는 다른 방법을 사용하거나, &lt;code&gt;pg_proc&lt;/code&gt;에서 특정 조건을 추가로 설정해줘야 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;아래는 이 문제를 해결할 수 있는 개선된 쿼리입니다:&lt;/p&gt;
&lt;h3&gt;1. Aggregate 및 Window 함수 제외:&lt;/h3&gt;
&lt;p&gt;PostgreSQL에서는 집계 함수와 일반 함수가 모두 &lt;code&gt;pg_proc&lt;/code&gt;에 저장되지만, 집계 함수와 window 함수는 &lt;code&gt;pg_get_functiondef&lt;/code&gt;로 정의를 조회할 수 없습니다. 이를 필터링하려면 &lt;code&gt;proisagg&lt;/code&gt;와 &lt;code&gt;proiswindow&lt;/code&gt; 컬럼을 활용할 수 있습니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;SELECT
    n.nspname AS schema_name,
    p.proname AS function_name,
    pg_get_functiondef(p.oid) AS function_definition
FROM
    pg_proc p
JOIN
    pg_namespace n ON p.pronamespace = n.oid
WHERE
    NOT p.proisagg -- 집계 함수가 아닌 것
    AND NOT p.proiswindow -- 윈도우 함수가 아닌 것
    AND pg_get_functiondef(p.oid) LIKE &amp;#39;%검색할_문자열%&amp;#39;;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. PostgreSQL 11 이상 (prokind 사용):&lt;/h3&gt;
&lt;p&gt;PostgreSQL 11 이상에서는 &lt;code&gt;pg_proc&lt;/code&gt;에 &lt;code&gt;prokind&lt;/code&gt; 컬럼이 추가되어, 함수 유형을 더 쉽게 필터링할 수 있습니다. &lt;code&gt;prokind = &amp;#39;f&amp;#39;&lt;/code&gt;는 일반 함수를 의미합니다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;SELECT
    n.nspname AS schema_name,
    p.proname AS function_name,
    pg_get_functiondef(p.oid) AS function_definition
FROM
    pg_proc p
JOIN
    pg_namespace n ON p.pronamespace = n.oid
WHERE
    p.prokind = &amp;#39;f&amp;#39; -- 일반 함수만 선택
    AND pg_get_functiondef(p.oid) LIKE &amp;#39;%검색할_문자열%&amp;#39;;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. 특정 스키마에 대해서만 검색 (옵션):&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-sql&quot;&gt;SELECT
    n.nspname AS schema_name,
    p.proname AS function_name,
    pg_get_functiondef(p.oid) AS function_definition
FROM
    pg_proc p
JOIN
    pg_namespace n ON p.pronamespace = n.oid
WHERE
    p.prokind = &amp;#39;f&amp;#39;
    AND n.nspname = &amp;#39;특정_스키마명&amp;#39;
    AND pg_get_functiondef(p.oid) LIKE &amp;#39;%검색할_문자열%&amp;#39;;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 쿼리 중 하나를 사용하면 &lt;code&gt;pg_get_functiondef&lt;/code&gt;에서 발생하는 문제를 방지하고, 함수 정의를 성공적으로 검색할 수 있을 것입니다.&lt;/p&gt;</description>
      <category>Database</category>
      <category>function</category>
      <category>like</category>
      <category>PostgreSQL</category>
      <category>검색</category>
      <category>문자열</category>
      <category>조회</category>
      <category>특정</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/196</guid>
      <comments>https://dev-log-island.tistory.com/196#entry196comment</comments>
      <pubDate>Fri, 15 Nov 2024 17:09:28 +0900</pubDate>
    </item>
    <item>
      <title>[GIT] 한 컴퓨터에서 Github 계정 여러개 사용하기</title>
      <link>https://dev-log-island.tistory.com/195</link>
      <description>&lt;p&gt;회사와 개인프로젝트의 계정을 분리한다던지, 개인 프로젝트와 스터디 그룹의 계정을 분리한다던지 한 컴퓨터에서 여러 Github 계정을 사용해야 할 경우가 있다.  SSH를 활용하여 관리하는 방법을 사용하면 편하다.  &lt;/p&gt;
&lt;h2&gt;기존에 ssh 키가 있는지 확인&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  ls -al ~/.ssh&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ssh 키를 생성 및 agent 등록&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  # 2개의 키 생성하기
  ssh-keygen -t rsa -C &amp;quot;{private}@mail.com&amp;quot; -f &amp;quot;~/.ssh/{rsa file for private}&amp;quot;
  ssh-keygen -t rsa -C &amp;quot;{group}@mail.com&amp;quot; -f &amp;quot;~/.ssh/{rsa file for group}&amp;quot;

  # 키 생성 확인
  ls -al ~/.ssh

  # ssh-agent 실행 확인
  eval &amp;quot;$(ssh-agent -s)&amp;quot;

  # 생성한 키 등록
  ssh-add ~/.ssh/{rsa file for private}
  ssh-add ~/.ssh/{rsa file for group}

  # 등록한 키 확인
  ssh-add -l
  4096 SHA256:... {private}@mail.com (RSA)
  4096 SHA256:... {group}@mail.com (RSA)&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;ssh 설정 파일 수정&lt;/h2&gt;
&lt;p&gt;ssh 설정 파일은 &lt;code&gt;~/.ssh/config&lt;/code&gt;이다. 파일이 존재하지 않는다면 생성 후 진행한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  # 파일 존재 여부 확인
  cat ~/.ssh/config

  # 파일 생성
  touch ~/.ssh/config

  # 파일 수정
  vi ~/.ssh/config&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  # IDLOOK
  Host github.com-{group_name}
    HostName github.com    
    User {group_github_name}
    IdentityFile ~/.ssh/{rsa file for group}

  # PRIVATE
  Host github.com-{private_name}
    HostName github.com
    User {private_github_name}
    IdentityFile ~/.ssh/{rsa file for private}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;git 설정파일 수정&lt;/h2&gt;
&lt;p&gt;git user name과 user email 설정 파일을 각각 생성 수정한다&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  touch ~/.gitconfig-{private}
  touch ~/.gitconfig-{group}&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;개인용&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  vi ~/.gitconfig-{private}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  [user]
    name = {private_github_name}
    email = {private}@mail.com&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;업무용&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  vi ~/.gitconfig-{group}&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  [user]
    name = {group_github_name}
    email = {group}@mail.com&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;git 설정 파일에서 해당 파일을 읽어오도록 한다&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  vi ~/.gitconfig&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  [includeIf &amp;quot;gitdir:{개인 프로젝트 경로}&amp;quot;]
    path = .gitconfig-{private}
  [includeIf &amp;quot;gitdir:{그룹 프로젝트 경로}&amp;quot;]
    path = .gitconfig-{group}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Github 계정에 SSH 키를 등록&lt;/h2&gt;
&lt;p&gt;생성한 ssh 키를 각각 두개의 github 계정에 등록해준다.&lt;/p&gt;
&lt;p&gt;우측 상단 Github Profile &amp;gt; Settings &amp;gt; 좌측 SSH and GPG keys &amp;gt; 우측상단 New SSH Key&lt;br&gt;타이틀은 편하게, Key type은 Authentication Key, Key 부분에 생성한 키를 복사해서 붙여 넣는다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  # shell에서 명령어로 복사하는 방법
  pbcopy &amp;lt; ~/.ssh/{rsa file for private}

  # shell에서 명령어로 출력한 후 terminal에서 복사하는 방법
  cat ~/.ssh/{rsa file for private}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Github 등록 확인&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  ssh -T git@github.com-{private_name}&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;로컬로 Github 레포지토리 복사&lt;/h2&gt;
&lt;p&gt;복사시 https가 아닌 ssh로 한다&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  git clone git@github.com-{private_name}:{user-name}/{repository-name}.git&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;로컬이 이미 레포지토리가 있을 경우 주소 변경&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  # 기존 리모트 url 확인
  git config --get remote.origin.url
  git@github.com:{A}/{B}.git
  # 리모트 url 변경
  git remote set-url origin git@github.com-{private_name}:{A}/{B}.git

  # 동작 확인
  git pull&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;clone, pull등 git 명령어 결과에서 에러가 나올 경우 ssh를 디버깅 모드로 시도&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;  GIT_SSH_COMMAND=&amp;quot;ssh -v&amp;quot; git fetch&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;DL;DR&lt;/h2&gt;
&lt;p&gt;모든 내용은 git manual에 있다.&lt;a href=&quot;https://git-scm.com/docs/git-config#_conditional_includes&quot;&gt;https://git-scm.com/docs/git-config#_conditional_includes&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;참고&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://git-scm.com/docs/git-config#_includes&quot;&gt;https://git-scm.com/docs/git-config#_includes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://git-scm.com/docs/git-config#_conditional_includes&quot;&gt;https://git-scm.com/docs/git-config#_conditional_includes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.lesstif.com/gitbook/git-ssh-verbose-mode-125305437.html&quot;&gt;https://www.lesstif.com/gitbook/git-ssh-verbose-mode-125305437.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>VCS</category>
      <category>account</category>
      <category>Config</category>
      <category>github</category>
      <category>mutiple</category>
      <category>ssh</category>
      <category>계정</category>
      <category>관리</category>
      <category>두개</category>
      <category>분리</category>
      <category>여러개</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/195</guid>
      <comments>https://dev-log-island.tistory.com/195#entry195comment</comments>
      <pubDate>Mon, 27 May 2024 15:53:32 +0900</pubDate>
    </item>
    <item>
      <title>Test Case 작성법</title>
      <link>https://dev-log-island.tistory.com/194</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 테스트 프로세스&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 프로세스는 테스트와 관련된 활동이 체계적으로 진행되어 의도된 테스트 목적과 목표를 달성할 수 있도록 모든 구성요소를 엮어주는 역할을 함.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;테스트 프로세스 5 단계&lt;/h3&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;  계획/제어 -&amp;gt; 분석/설계 -&amp;gt; 구현/실행 -&amp;gt; 완료/리포팅 -&amp;gt; 마감&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 프로세스는 계획/제어, 분석/설계, 구현/실행, 완료/리포팅, 마감 5단계로 구성.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;계획과 제어 :&lt;br /&gt;테스트 계획 수립은 테스트 목표와 임무를 달성하기 위해 이를 확인하고 필요한 활동을 정의.&lt;br /&gt;테스트 제어는 계획 대비 실제 신행 상황을 비교하는 지속적인 활동.&lt;/li&gt;
&lt;li&gt;분석과 설계 :&lt;br /&gt;테스트 분석과 설계는 일반적이고 추상적인 테스트 목적을 실제적이고 구체적인 테스트 상황과 테스트 케이스로 변환.&lt;/li&gt;
&lt;li&gt;구현과 실행 :&lt;br /&gt;테스트 구현과 실행은 가장 효율적이고 효과적으로 테스트스를 실행하기 위하여 테스트 케이스를 조합하고 테스트 실행에 필요한 다른 정보를 포함하는 테스트 프로시져를 명세화.&lt;/li&gt;
&lt;li&gt;완료 조건과 리포팅 :&lt;br /&gt;초기에 정의된 테스트 목표에 비해 어느 정도 실제 테스트가 수행되었는지를 평가.&lt;/li&gt;
&lt;li&gt;테스트 마감 :&lt;br /&gt;완료된 테스트에서 발견된 사실 및 수집된 데이터, 경험을 취합하고 축적.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. TC 작성 절차&lt;/h2&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;  문서 수집 -&amp;gt; TC 작성 -&amp;gt; 내부 검토 -&amp;gt; 커버리지 분석 -&amp;gt; 승인&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;참조 문서 수집 :&lt;br /&gt;테스트 계획서에 명시된 테스트 케이스 작성 지침과 수준을 고려,&lt;br /&gt;테스트 설계에 필요한 분석 및 설계 문서 수집.&lt;/li&gt;
&lt;li&gt;TC 작성 :&lt;br /&gt;테스트 설계 기법을 이용하여 TC를 작성.&lt;/li&gt;
&lt;li&gt;내부 검토 :&lt;br /&gt;PM, 아키텍트, 디자이너, 기획자, 개발자, QA 담당자가 작성된 TC의 적정성 검토.&lt;/li&gt;
&lt;li&gt;요구사항 대비 커버리지 분석 :&lt;br /&gt;TC가 어느 정도 요구사항을 반영하는가에 대한 분석.&lt;br /&gt;기본적으로 테스트 가능한 요구사항은 모두 TC에 반영되어있는지 확인.&lt;/li&gt;
&lt;li&gt;승인 :&lt;br /&gt;작성된 TC를 클라이언트(현업), 기획자 및 PM에게 승인을 받음.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. TC 구성요소&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;식별 번호&lt;/b&gt; :&lt;br /&gt;TC의 고유 식별자.&lt;/li&gt;
&lt;li&gt;이슈 번호, 제목 :&lt;br /&gt;제목과 이슈 번호를 기입. (Redmine NO., Jira NO.)&lt;/li&gt;
&lt;li&gt;요약 (Description) :&lt;br /&gt;TC의 목표 등 요약된 정보&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사전 조건&lt;/b&gt; (Precondition) :&lt;br /&gt;테스트 수행에 필요한 조건 및 실행환경. (선행 조건, 전제조건)&lt;/li&gt;
&lt;li&gt;종속성 (Dependencies) :&lt;br /&gt;테스트 요구사항 또는 기타 TC에 대한 의존성 판단.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;수행 절차&lt;/b&gt; (Test Step) :&lt;br /&gt;TC를 수행하기 위한 정확한 단계.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기대 결과&lt;/b&gt; (Expect Result) :&lt;br /&gt;절차대로 진행 시 테스트 통과 여부를 결정하는 기대 결과.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실제 결과&lt;/b&gt; (Actual Result, PASS / FAIL) :&lt;br /&gt;테스트 수행 후 실제 결과.&lt;/li&gt;
&lt;li&gt;비고 (Remark, Note, Comment) :&lt;br /&gt;기타 비고 사항을 기입.&lt;/li&gt;
&lt;li&gt;그 외 :&lt;br /&gt;우선순위, 모듈 이름, 테스트 설계자, 설계일, 테스트 수행자, 수행일 등&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구성 요소는 조직이나 프로젝트에 따라 변경/추가/삭제 될 수 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. TC 작성 시 주의 점 및 장/단점&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주의점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;절차의 누락 :&lt;br /&gt;테스트 절차를 정확하게 입력하지 않을 경우 테스트 수행의 어려움이 생기는 테이스 발생 가능.&lt;/li&gt;
&lt;li&gt;장황한 설명 :&lt;br /&gt;TC 작성 시 상세하고 충분한 정보를 제공해야 하지만, 너무 많은 단어와 불필요한 설명으로 소통의 오류 유발 가능.&lt;/li&gt;
&lt;li&gt;전문 용어의 과다 사용 :&lt;br /&gt;TC 작성 시, 직군간 소통이 불가능한 전문용어를 과다사용시 테스트 수행에 어려움이 있을 수 있음.&lt;/li&gt;
&lt;li&gt;분명하지 않은 PASS/FAIL 기준 :&lt;br /&gt;테스트 수행 후 테스트 결과가 통과인지 실패인지 예상 결과에 정확히 기입하지 않아 결과 판단에 어려움 유발 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TC 작성 시간이 수행 시간보다 오래 걸릴 수 있음.&lt;/li&gt;
&lt;li&gt;기능 변화에 따른 TC 변경 :&lt;br /&gt;기능을 자주 변경한다면 추후 테스트 케이스의 통제에 어려움이 생기게 될 수 있음.&lt;/li&gt;
&lt;li&gt;배경 지식 판단의 어려움 :&lt;br /&gt;TC를 작성하는 사람은 테스트 하는 기능을 잘 알고 있으나, 테스트 수행자는 배경 지식이 없을 경우 테스트 수행 시간이 길어지거나 수행에 어려움이 있을 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이력 참조 :&lt;br /&gt;TC는 어플리케이션 런칭 후에도 사용, 유지보수 팀과 추후 어플리케이션의 버전을 담당자의 테스트 이력 참고가 가능.&lt;/li&gt;
&lt;li&gt;테스트 진행 상황 추적 :&lt;br /&gt;TC를 문서화 하면 수행한 TC의 수, 통과/실패 수, 과업 범위 별 케이스 수, 테스트 커버리지 등의 정보를 추적/확인 가능.&lt;/li&gt;
&lt;li&gt;반복성 :&lt;br /&gt;잘 작성된 TC는 누구나 반복적으로 수행 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. TC 정렬&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TC의 정렬은 업부의 효율과 연결될 수 있다. 테스트의 흐름, 테스트 환경 등을 고려해서 정렬 하도록 하자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;흐름이 이어지는 TC 정렬&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;정렬 전 스펙 문서에 따라 쓴 TC&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;정렬 후 흐름에 맞춘 TC&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;1. A 기능 1 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1. A 기능 1 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;2. A 기능 2 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;2. A 기능 1의 추가기능 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;3. A 기능 3 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;3. 기능 2 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;4. A 기능 1의 추가기능 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;4. A 기능 2의 추가기능 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;5. A 기능 2의 추가기능 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5. 기능 3 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;6. A 기능 3의 추가기능 실행&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;6. A 기능 3의 추가기능 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;환경이 비슷한 TC 정렬&lt;/h3&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;left&quot;&gt;정렬 전 스펙 문서에 따라 쓴 TC&lt;/th&gt;
&lt;th align=&quot;left&quot;&gt;정렬 후 흐름에 맞춘 TC&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;1. 기능 A를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;1. 기능 A를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;2. 기능 A를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;2. 기능 B를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;3. 기능 B를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;3. 기능 C를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;4. 기능 B를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;4. 기능 A를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;5. 기능 C를 관리자(Root) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;5. 기능 B를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot;&gt;6. 기능 C를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;td align=&quot;left&quot;&gt;6. 기능 C를 사용자(User) 계정으로 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-05-10 15.33.06.png&quot; data-origin-width=&quot;2408&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CtFj5/btsHmt0rnwJ/YIMfVpgkboqjrrFhyh29SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CtFj5/btsHmt0rnwJ/YIMfVpgkboqjrrFhyh29SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CtFj5/btsHmt0rnwJ/YIMfVpgkboqjrrFhyh29SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCtFj5%2FbtsHmt0rnwJ%2FYIMfVpgkboqjrrFhyh29SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2408&quot; height=&quot;685&quot; data-filename=&quot;스크린샷 2024-05-10 15.33.06.png&quot; data-origin-width=&quot;2408&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cG6Mf8/btsHjW3Xzko/FCCYX2hUCxkxts79xDOMBK/TC-template-20240510.xlsx?attach=1&amp;amp;knm=tfile.xlsx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;TC-template-20240510.xlsx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.02MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>TC</category>
      <category>test</category>
      <category>란?</category>
      <category>방법</category>
      <category>샘플</category>
      <category>예시</category>
      <category>작성</category>
      <category>케이스</category>
      <category>테스트</category>
      <category>프로세스</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/194</guid>
      <comments>https://dev-log-island.tistory.com/194#entry194comment</comments>
      <pubDate>Fri, 10 May 2024 15:30:46 +0900</pubDate>
    </item>
    <item>
      <title>[GIT]</title>
      <link>https://dev-log-island.tistory.com/193</link>
      <description>&lt;h1&gt;GIT&lt;/h1&gt;
&lt;p&gt;git : Linux 커널 소스를 관리하기 위해 리누스 토발즈가 직접 개발한 분산형 버전관리 도구.&lt;br&gt;분산형이라는 의미는 여러 클라이언트들이 각자의 컴퓨터에 저장소를 반들어 중앙 서버의 전체 사본을 가지고 작업하는 것임.  &lt;/p&gt;
&lt;h2&gt;SVN과 차이점&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;SVN&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;중앙 서버에서 소스코드와 히스토리를 관리함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GIT&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;소스를 여거 개발 PC와 저장소에 분산해서 저장&lt;/li&gt;
&lt;li&gt;로컬에서 버젼을 관리하기 때문에 SVN에 비해 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;GIT의 장점&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;같은 파일을 여러 명이 동시 작업하는 병렬 개발 가능&lt;br&gt;(브랜치를 통해 개발한 뒤, merge 하는 방식으로 개발 진행 가능)&lt;/li&gt;
&lt;li&gt;분산 관리이기 때문에 중앙저장소에 문제가 생겨도 원상복구 가능&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Git 기본 용어&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;repository : 저장소를 의미함&lt;br&gt;저장소를 통해 소스, 히스토리, 태그의 관리가 가능하며, 저장소를 통해 작업자가 변경한 소스의 히스토리 확인 가능&lt;/li&gt;
&lt;li&gt;working tree : 저장소의 어느 한 시점을 바라보는 작업자의 현재 시점&lt;/li&gt;
&lt;li&gt;staging area : 저장소에 커밋하기 전에 커밋을 준비하는 위치&lt;/li&gt;
&lt;li&gt;commit : 현재 변경된 작업 상태에서 점검이 끝나면 확정하고 저장소에 저장하는 작업&lt;/li&gt;
&lt;li&gt;head : 현재 작업중인 branch를 가리킴&lt;/li&gt;
&lt;li&gt;branch : 가지 또는 분기점&lt;br&gt;작업을 할 때 원본을 복사해서 branch에서 작업을 한 후 완전할 때 merge하여 작업함&lt;/li&gt;
&lt;li&gt;merge : 다른 branch의 내용을 현재 branch로 가져와 병합하는 작업.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;git 주요 명령어&lt;/h2&gt;
&lt;h3&gt;ropository 생성&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git init : 깃 저장소 초기화&lt;/li&gt;
&lt;li&gt;git clone {url} : 원격 저장소 복사&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;상태 확인&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git status : 작업 디렉토리에 변경된 파일 확인하기&lt;/li&gt;
&lt;li&gt;git diff : 변경된 파일들의 변경된 내용 확인&lt;/li&gt;
&lt;li&gt;git log : 변경 이력 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;브랜치 작업&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;git branch : 로컬 브랜치 목록 확인&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git branch -r : 원격 브랜치 목록 확인하기&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git branch -av : 로컬과 원격 브랜치 목록 확인하기&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git branch -m {old_name} {new_name} : 브랜치 이름 변경하기&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git branch {new_branch_name} : 브랜치 생성&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git checkout {branch_name} : 브랜치 변경하기&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git branch -d {branch_name} : 브랜치 삭제&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;반영&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git add . : 모든 변경사항을 커밋 준비 &amp;quot;스냅샷&amp;quot;&lt;/li&gt;
&lt;li&gt;git add {file} : 특정 파일의 변경사항을 커밋 준비&lt;/li&gt;
&lt;li&gt;git commit -m &amp;#39;{message}&amp;#39; : 메세지와 함께 커밋하기&lt;/li&gt;
&lt;li&gt;git commit --ammend : 마지막 커밋 메세지 수정하기 (push한 commit에는 하지 말것)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;취소&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git reset --hard HEAD^ : 이전 commit 취소, 변경사항 폐기&lt;/li&gt;
&lt;li&gt;git reset --soft HEAD^ : 이전 commit 취소, 변경사항 유지&lt;/li&gt;
&lt;li&gt;git reset --soft merge : merge 취소하기&lt;/li&gt;
&lt;li&gt;git reset --hard HEAD &amp;amp;&amp;amp; git pull : 변경사항 폐기 후 원격 저장소의 최신 코드로 덮어쓰기&lt;/li&gt;
&lt;li&gt;git revert {commit_code} : 커밋 되돌리기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;동기화 하기&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git fetch {remote} : 원격 저장소의 최신사항 가져오기&lt;/li&gt;
&lt;li&gt;git pull {remote} {branch} : 원격 저장소의 최신사항을 가져와서 병합하기&lt;/li&gt;
&lt;li&gt;git pull --rebase : 원격 저장소의 변경사항을 가져오고 초기화 하기&lt;/li&gt;
&lt;li&gt;git push : 원격 저장소에 변경사항 발행하기&lt;/li&gt;
&lt;li&gt;git merbe {branch} : 브랜치 병합하기&lt;/li&gt;
&lt;li&gt;git rebase {branch} : 리베이스 하기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;브랜치의 변경사항 임시저장&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git stash : 임시로 변경사항 저장하기&lt;/li&gt;
&lt;li&gt;git stash pop : 임시 변경사항 불러오기&lt;/li&gt;
&lt;li&gt;git stash list : 임시 변경사항 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;계정&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git global user.name &amp;quot;user_name&amp;quot; : git 계정 name 저장/수정&lt;/li&gt;
&lt;li&gt;git global user.email &amp;quot;user_email&amp;quot; : git 계정 email 저장/수정&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>VCS</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/193</guid>
      <comments>https://dev-log-island.tistory.com/193#entry193comment</comments>
      <pubDate>Wed, 10 Apr 2024 15:49:12 +0900</pubDate>
    </item>
    <item>
      <title>[성능 측정] Google Lighthouse</title>
      <link>https://dev-log-island.tistory.com/192</link>
      <description>&lt;p&gt;구글에서 제공하는 웹페이지 품질 개선을 위항 오픈 소스 자동화 툴.&lt;br&gt;성능, 접근성, 권장사항, SEO, PWA 에 대한 검사 가능.  &lt;/p&gt;
&lt;h2&gt;중요 측정 항목&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FCP (First Contentful Paint)  &lt;ul&gt;
&lt;li&gt;페이지 로드가 시작된 시점부터 페이지 콘텐츠의 일부가 화면에 렌더링되는 시점까지의 시간 측정.&lt;/li&gt;
&lt;li&gt;1.8초 이하 권장&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/fcp?hl=ko&quot;&gt;FCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LCP (Lagest Contentful Paint)  &lt;ul&gt;
&lt;li&gt;페이지가 로드되기 시작한 시점부터 가장 큰 텍스트 믈록 또는 이미지 요소가 화면에 렌더링되는 시점 까지의 시간 측정.&lt;/li&gt;
&lt;li&gt;2.5초 이하 권장&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/lcp?hl=ko&quot;&gt;LCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;INP (Interaction to Next Paint)  &lt;ul&gt;
&lt;li&gt;페이지에서 이루어지는 모든 탭, 클릭, 키보드 상호작용의 지연 시간.&lt;/li&gt;
&lt;li&gt;상소작용 수를 기반으로 페이지의 최악 상호작용 지연시간을 페이지의 전반적인 응답성으로 판단.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/inp?hl=ko&quot;&gt;INP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TBT (Total Blocking Time)  &lt;ul&gt;
&lt;li&gt;사용자가 화면에서 페이지를 이용(상호작용)할 수 있기 전까지 브라우져가 상호작용을 차단하는 시간.&lt;/li&gt;
&lt;li&gt;50 ms 권장&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/tbt?hl=ko&quot;&gt;TBT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;CLS (Cumulative Layout Shift)  &lt;ul&gt;
&lt;li&gt;레이아웃 변경 횟수.  &lt;/li&gt;
&lt;li&gt;콘텐츠 로딩으로 인해 사용자가 읽던 위치를 잃거나 잘못된 링크 또는 버튼을 클릭하게 되는 레이아웃의 변경 횟수.&lt;/li&gt;
&lt;li&gt;0.1 점 이하 권장&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/cls?hl=ko&quot;&gt;CLS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TTFB (Time to First Byte)    &lt;ul&gt;
&lt;li&gt;리소스 요청과 응답의 첫 번째 바이트가 도달하는 시작점간의 시간의 측정도.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://web.dev/articles/ttfb?hl=ko&quot;&gt;TTFB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;결과 요약 항목&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Performance : 웹페이지의 로딩 속도와 같은 성능 측정.&lt;/li&gt;
&lt;li&gt;Accessibility : 접근성 지표 (버튼 간의 간격이나 글 폰트 싸이즈 등)&lt;/li&gt;
&lt;li&gt;Best Practices : 권장 사항을 따라 개발되었는지 확인.&lt;/li&gt;
&lt;li&gt;SEO (Search Engine Optimization) : 검색엔진 최적화 지표.&lt;/li&gt;
&lt;li&gt;PWA (Progressive Web App) : 웹과 네이티브 앱의 기능 모두 이점을 가지도록 만들어진 서비스인지 확인.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>WEB/CLIENT_SIDE</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/192</guid>
      <comments>https://dev-log-island.tistory.com/192#entry192comment</comments>
      <pubDate>Mon, 1 Apr 2024 21:57:13 +0900</pubDate>
    </item>
    <item>
      <title>업무 우선 순위 정하기 (아이젠하워 매트릭스)</title>
      <link>https://dev-log-island.tistory.com/191</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h1 data-pm-slice=&quot;0 0 []&quot;&gt;아이젠하워 매트릭스&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;업무의 우선순위를 &lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;먼저 해야 할 일, 계획해야 할 일, 위임할 일, 하지 않아도 될 일&lt;/span&gt;&lt;/b&gt; 4단계로 분류&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;업무 우선순위&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;자신의 업무를 모두 나열&lt;/li&gt;
&lt;li&gt;각 업무의 긴급성과 중요도 판단&lt;/li&gt;
&lt;li&gt;업무를 4개의 카테고리로 분류
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하고 중요한 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;먼저 해야할 일&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하지 않지만 중요한 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;계획해야 할 일&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하지 않지만, 중요하지 않은 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;위임할 일&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하지도, 중요하지 않은 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;하지 않아도 될 일&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;아이젠하워 매트릭스에 따라 우선순위 확인하고, 일정 계획&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;449&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd0lZT/btsDyNPfAwZ/v2G5snA60uMJIDrHPBdeeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd0lZT/btsDyNPfAwZ/v2G5snA60uMJIDrHPBdeeK/img.png&quot; data-alt=&quot;아이젠하워 매트릭스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd0lZT/btsDyNPfAwZ/v2G5snA60uMJIDrHPBdeeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd0lZT%2FbtsDyNPfAwZ%2Fv2G5snA60uMJIDrHPBdeeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;449&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;449&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아이젠하워 매트릭스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-width-type=&quot;pixel&quot; data-width=&quot;567&quot; data-layout=&quot;align-start&quot; data-node-type=&quot;mediaSingle&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;아이젠하워 매트릭스&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하고 급한 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;먼저 한다&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;명확한 결과&lt;/span&gt;가 따르며 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;장기 목표에도 영향&lt;/span&gt;을 주는 업무로서, 가장 먼저 해야 하는 업무입니다.&lt;br /&gt;이 카테고리 안의 업무들은 미루지 않고 바로 처리하는 것이 좋습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하지만 급하지 않은 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;계획한다&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;장기 목표에 영향&lt;/span&gt;을 미치지만 당장 처리하지 않아도 되는 일입니다.&lt;br /&gt;긴급하지 않기 때문에 신중하게 준비하고 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;계획하여 완성도&lt;/span&gt;를 높일 수 있습니다.&lt;br /&gt;중요하고 급한 일을 해결한 뒤 이 카테고리 안의 업무를 처리합니다.&lt;br /&gt;이 업무들을 마냥 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;미뤄두지는 않도록 주의&lt;/span&gt;해야 하며, 집중력을 발휘하여 수행할 수 있도록 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하지 않지만 급한 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;위임한다&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;바로 처리되어야 하지만 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;장기 목표에는 영향을 미치지 않는 업무&lt;/span&gt;입니다.&lt;br /&gt;이러한 업무는 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;에너지 소모가 많지만 특별한 기술은 요하지 않는 잔업&lt;/span&gt;인 경우가 많습니다.&lt;br /&gt;꼭 본인이 직접 하지 않아도 되는 일이기 때문에, &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;다른 사람에게 위임&lt;/span&gt;하거나 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;대체 시스템을 마련&lt;/span&gt;하도록 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하지도 급하지도 않은 일 - &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;하지 않는다&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;목표를 달성하는 데 방해가 되는 일입니다.&lt;br /&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;업무 목록에서 삭제&lt;/span&gt;하도록 합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;긴급한 일과 중요한 일을 구별하는 법&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;긴급한 일&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;즉시 해야 하는 일로, &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;기한 안에 처리&lt;/span&gt;하지 못하면 명확한 결과가 나타납니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예) 기한이 임박한일, 장애, 긴급 지시사항, CS 이슈 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중요한 일&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;당장 하지 않아도 되지만, &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;장기적인 목표&lt;/span&gt;에 도움이 되는 일입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예) 신 기능 스터디, 프로젝트 계획, 3rd Party 솔루션 도입&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://1891ghaon.tistory.com/117&quot;&gt;https://1891ghaon.tistory.com/117&lt;/a&gt;&lt;/p&gt;
&lt;div data-level=&quot;1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h1&gt;업무의 우선순위 7단계&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;모든 업무가 포함된 하나의 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;작업 목록을 만들기&lt;/span&gt;&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;효과적으로 우선순위 정하는 첫 단계는 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;업무의 전체 범위를 파악&lt;/span&gt;하는 것부터 시작합니다.&lt;/li&gt;
&lt;li&gt;모든 업무가 기록되면 각 업무의 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요성, 긴급성, 소요 시간, 보상&lt;/span&gt;을 적습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중요한 사항 식별하기 : 진정한 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;목표 이해&lt;/span&gt;하기&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;우선순위를 정하는 일은 즉각적인 '시간 관리 전략'처럼 보일 수 있지만 장기적인 '&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;목표 달성 전략&lt;/span&gt;'이기도 합니다.&lt;/li&gt;
&lt;li&gt;설정된 목표(큰 그림)를 위해 자신이 어떤 일을 하고 있는지 이해해야 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;미래 결과&lt;/span&gt;와 가장 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;관련&lt;/span&gt;이 있는 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;업무&lt;/span&gt;를 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;파악&lt;/span&gt;할 수 있습니다.&lt;/li&gt;
&lt;li&gt;최종 목표에 영향을 주지 않는 작업으로 하루를 채우는 것은 시간 낭비입니다.&lt;br /&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;항상 목표를 염두해 두고&lt;/span&gt; 있어야 합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급한 사항을 강조&lt;/span&gt; 표시하기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;할 일 목록에서 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;마감일&lt;/span&gt;이 눈에 띄도록 하면 신속하게 완료해야 하는 작업을 알 수 있습니다.&lt;/li&gt;
&lt;li&gt;공식적으로 필요하지 않은 경우에도 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;마감일을 설정&lt;/span&gt;해야 합니다. 그렇지 않으면 중요한 작업을 계속 미루게 될 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요성&lt;/span&gt; &lt;/b&gt;및 &lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급성&lt;/span&gt;&lt;/b&gt;을 바탕으로 &lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;우선순위&lt;/span&gt;&lt;/b&gt;를 정한다.(&lt;b&gt;아이젠하워 매트릭스&lt;/b&gt;)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하고 긴급한 일 : &lt;/span&gt;&lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;먼저 수행&lt;/span&gt;합니다.&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;중요하지만 긴급하지 않은 일&lt;/span&gt; : 전략적 &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;계획&lt;/span&gt;을 세우고 &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;완료일&lt;/span&gt;을 정합니다.&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하지만 중요하지 않은 일&lt;/span&gt; : 일을 &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;축소&lt;/span&gt;하거나 권한을 &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;위임&lt;/span&gt;합니다.&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;긴급하지도 중요하지도 않은 일&lt;/span&gt; : &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;할 일&lt;/span&gt; 목록에서 &lt;span data-text-custom-color=&quot;#ff991f&quot;&gt;삭제&lt;/span&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;우선순위가 겹치는 것은 피한다&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;한 번에 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;하나의 중요한 작업에 집중&lt;/span&gt;해야 합니다.&lt;br /&gt;여러 가지의 우선 순위를 계속 시도하고 관리하는 것은 성과 저하로 이어집니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;시간과 노력을 고려한다&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;할 일 목록이 너무 많아&lt;/span&gt; 부담스럽다면 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;최소한의 시간과 노력이 드는 작업에 우선순위&lt;/span&gt;를 두고 신속하게 진행하세요.&lt;br /&gt;&lt;u&gt;작업을 정리하면 여유와 함께 작업을 추진할 수 있는 성취감&lt;/u&gt;이 생깁니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;끊임없이 검토하고 현실을 반영해라&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;업무 목록과 우선순위&lt;/span&gt;를 &lt;span data-text-custom-color=&quot;#4c9aff&quot;&gt;자주 검토&lt;/span&gt;하는 것이 '통제력 및 집중력 유지'에 중요합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참고자료&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jobindexworld.com/contents/view/6918&quot;&gt;https://www.jobindexworld.com/contents/view/6918&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>j</category>
      <category>개발자</category>
      <category>계획</category>
      <category>업무</category>
      <category>우선순위</category>
      <category>일잘러</category>
      <category>잘하기</category>
      <category>중요도</category>
      <category>직장인</category>
      <category>할 일</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/191</guid>
      <comments>https://dev-log-island.tistory.com/191#entry191comment</comments>
      <pubDate>Tue, 16 Jan 2024 09:09:28 +0900</pubDate>
    </item>
    <item>
      <title>mac(맥)에서 인터넷 속도 측정하기</title>
      <link>https://dev-log-island.tistory.com/190</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷 속도를 측정하기 위해서 fast.com등 여러 사이트를 이용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맥 터미널에서 명령어 하나로 간단하게 인터넷 속도를 측정할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1705277914909&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;networkQuality&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-01-15 09.19.24.png&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edR5ia/btsDwFJB5eG/9iwAgjfjkbTbMOtcoHdnck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edR5ia/btsDwFJB5eG/9iwAgjfjkbTbMOtcoHdnck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edR5ia/btsDwFJB5eG/9iwAgjfjkbTbMOtcoHdnck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedR5ia%2FbtsDwFJB5eG%2F9iwAgjfjkbTbMOtcoHdnck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;534&quot; height=&quot;230&quot; data-filename=&quot;스크린샷 2024-01-15 09.19.24.png&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 97px; top: 165.391px;&quot;&gt;
&lt;div class=&quot;gtx-trans-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>OS/MacOS</category>
      <category>mac</category>
      <category>Network</category>
      <category>networkQuality</category>
      <category>QUALITY</category>
      <category>네트워크</category>
      <category>맥</category>
      <category>속도</category>
      <category>인터넷</category>
      <category>측정</category>
      <category>터미널</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/190</guid>
      <comments>https://dev-log-island.tistory.com/190#entry190comment</comments>
      <pubDate>Mon, 15 Jan 2024 09:20:13 +0900</pubDate>
    </item>
    <item>
      <title>맥(mac)에서 텍스트 파일 인코딩 변경하기</title>
      <link>https://dev-log-island.tistory.com/189</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우를 사용하는 분들과 협업을 하다보면 윈도우에서 작성된 텍스트 파일이 UTF-8이 아닌 MS-949 (CP-949) 인코딩으로 작성된 파일을 받을 때가 있다. 국제 표준인 UTF-8을 이용해 주시면 감사하겠지만, 어쩔 수 없이 내가 인코딩을 변경 해 줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CP-949에서 UTF-8로 인코딩을 변경하는 것은 터미널에서 간단하게 처리 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1705277609523&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;iconv -c -f {원본 인코딩} -t {변환 인코딩} {원본 파일} &amp;gt; {저장 파일}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-01-15 09.13.45.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6KeSM/btsDp6oCins/tXM87aY4GasEQo7JOvGuA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6KeSM/btsDp6oCins/tXM87aY4GasEQo7JOvGuA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6KeSM/btsDp6oCins/tXM87aY4GasEQo7JOvGuA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6KeSM%2FbtsDp6oCins%2FtXM87aY4GasEQo7JOvGuA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;74&quot; data-filename=&quot;스크린샷 2024-01-15 09.13.45.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;74&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-03-14 14.32.24.png&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;42&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbv8W9/btsFMrDJmv5/YrjQpRTI1C9PIlneNgYrdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbv8W9/btsFMrDJmv5/YrjQpRTI1C9PIlneNgYrdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbv8W9/btsFMrDJmv5/YrjQpRTI1C9PIlneNgYrdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcbv8W9%2FbtsFMrDJmv5%2FYrjQpRTI1C9PIlneNgYrdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;754&quot; height=&quot;42&quot; data-filename=&quot;스크린샷 2024-03-14 14.32.24.png&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;42&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;gtx-trans&quot; style=&quot;position: absolute; left: 358px; top: 195px;&quot;&gt;
&lt;div class=&quot;gtx-trans-icon&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>OS/MacOS</category>
      <category>cp949</category>
      <category>encoding</category>
      <category>mac</category>
      <category>ms949</category>
      <category>UTF-8</category>
      <category>맥</category>
      <category>변경</category>
      <category>변환</category>
      <category>인코딩</category>
      <category>파일</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/189</guid>
      <comments>https://dev-log-island.tistory.com/189#entry189comment</comments>
      <pubDate>Mon, 15 Jan 2024 09:14:46 +0900</pubDate>
    </item>
    <item>
      <title>mixin</title>
      <link>https://dev-log-island.tistory.com/188</link>
      <description>&lt;h1&gt;MIXIN&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%AF%B9%EC%8A%A4%EC%9D%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mixin in wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ko.javascript.info/mixins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mixin from JS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://velog.io/@flunge/mixin%EC%9D%B4-%EB%AD%98%EA%B9%8C%EC%9A%94&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mixin from dart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mixin from vue
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://joshua1988.github.io/vue-camp/reuse/mixins.html#%E1%84%86%E1%85%B5%E1%86%A8%E1%84%89%E1%85%B3%E1%84%8B%E1%85%B5%E1%86%AB-%E1%84%8F%E1%85%A9%E1%84%83%E1%85%B3-%E1%84%92%E1%85%A7%E1%86%BC%E1%84%89%E1%85%B5%E1%86%A8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://v2.ko.vuejs.org/v2/guide/mixins.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ETC</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/188</guid>
      <comments>https://dev-log-island.tistory.com/188#entry188comment</comments>
      <pubDate>Wed, 10 Jan 2024 09:22:56 +0900</pubDate>
    </item>
    <item>
      <title>캐시 설계 전략</title>
      <link>https://dev-log-island.tistory.com/186</link>
      <description>&lt;h1&gt;캐시 설계 전략&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-comment&quot;&gt;  Caching은 H/W, S/W 전반에 걸쳐 사용되는 기술이다.
  DB - application 뿐 아니라 클라이언트나 CDN에서도 캐싱을 사용한다.
  이 글에서는 DB - Web Application의 캐싱만 다룬다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;서비스 응답시간에 큰 영향을 미치는 부분은 주로 네트워크 통신과 DB I/O이다. 캐싱을 통하면 DB I/O로 인해 발생하는 오버헤드를 줄일 수 있다.&lt;/p&gt;
&lt;h2&gt;서론&lt;/h2&gt;
&lt;h3&gt;Caching?&lt;/h3&gt;
&lt;p&gt;캐시는 빠른 응답과 비용 절약을 위해 사용하는 임시 데이터다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;클라이언트의 요청으로 특정 데이터가 필요한 경우 서버는 DB에 질의한 뒤 결과를 반환한다.  &lt;/li&gt;
&lt;li&gt;만약 요청하는 데이터의 캐시가 존재한다면 DB에 질의하지 않고 캐시로부터 데이터가 반환된다.&lt;/li&gt;
&lt;li&gt;캐기사 없다면? DB에 질의가 수행되어 반횐되고 그 결과를 캐싱한다.  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;캐시의 관리&lt;/h3&gt;
&lt;p&gt;캐시는 임시 데이터다. 따라서 캐시를 저장할 때 캐시가 만료되는 시간 (expire time || TTL; Time To Live)를 명시한다.&lt;br&gt;캐시는 해당 시간 내에서만 유효하고 만료 시간이 경과하면 사용할 수 없다.  &lt;/p&gt;
&lt;p&gt;캐시에 만료되는 시간을 두는 이유는 캐시가 실시간 데이터가 아니기 때문이다. 만약 &lt;strong&gt;원본 데이터가 바뀐다면 캐시된 내용도 바뀌어야 한다.&lt;/strong&gt;  &lt;/p&gt;
&lt;h3&gt;캐시를 사용하는 이유&lt;/h3&gt;
&lt;p&gt;캐시를 사용하면 DB에서 데이터를 읽을 때 발생하는 I/O 오버헤드를 줄일 수 있다. 캐시는 보통 Redis와 같은 In-Memory DB를 사용한다.&lt;br&gt;In-Memory DB는 메모리를 사용하기 때문에 일반적인 RDBMS보다 데이터를 읽는 속도가 빠르다. 따라서 캐시는 DB에서 데이터를 읽는 것 보다 월등히 속도가 빠르다.&lt;/p&gt;
&lt;h3&gt;모든 데이터를 캐싱하는 건?&lt;/h3&gt;
&lt;p&gt;In-Memory DB를 사용하면 요청을 빠르게 처리할 수 있지만, 메모리 특성상 데이터 소실의 위험이 있다. 또한 메모리 사용은 비용이 발생하기 때문에 방대한 양의 데이터를 모두 메모리에 적재하는 것은 큰 비용이 든다.&lt;/p&gt;
&lt;h3&gt;캐시 설계 전략이 필요한 이유&lt;/h3&gt;
&lt;p&gt;따라서 데이터의 특성에 따라 DB와 캐시를 적절히 사용하는 것이 매우 중요하다. 캐싱 전략을 올바르게 수립하면 적은 비용으로 큰 퍼포먼스 향상을 기대할 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What to Cache&lt;/h2&gt;
&lt;p&gt;어떤 데이터를 캐싱하는 것이 좋을지 생각해 보아야 한다. 캐싱하기 좋은 데이터의 특성은 다음과 같다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;자주 바뀌지 않는 데이터&lt;/li&gt;
&lt;li&gt;자주 사용되는 데이터&lt;/li&gt;
&lt;li&gt;자주 같은 결과를 반환하는 데이터&lt;/li&gt;
&lt;li&gt;오래 걸리는 연산의 결과&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;자주 바뀌지 않는 데이터&lt;/h3&gt;
&lt;p&gt;자주 바뀌지 않는 데이터의 경우, 한 번 캐시로 저장하면 메모리에서 읽어 빠르게 사용가능하다.&lt;br&gt;원본 데이터가 바뀌면 캐시도 바뀌어야 한다. 자주 바뀌지 않는 데이터의 캐시는 오랫동안 사용이 가능하기 때문에 캐싱하는 것이 효율적이다.&lt;/p&gt;
&lt;h3&gt;자주 사용되는 데이터&lt;/h3&gt;
&lt;p&gt;자주 사용되는 데이터는 캐싱하기 좋다. 한 번 캐싱해 놓으면 캐시를 사용하여 다수의 요청을 효율적으로 처리할 수 있다.&lt;br&gt;다만, 자주 사용될 지라도 매번 결과 값이 다르면 오히려 캐싱하지 않는 것이 낫다. 만약 일정시간 동안 데이터가 변하지 않는 것이 보장되면 해당 시간만큼의 TTL로 짧은 캐시를 생성하면 된다.&lt;br&gt;예를 들어 검색처럼 새로 요청하더라도 일정 시간 동안 같은 결과가 반환되는 경우에 해당한다.  &lt;/p&gt;
&lt;h3&gt;자주 같은 결과를 반환하는 데이터&lt;/h3&gt;
&lt;p&gt;자주 같은 결과를 반환하는 데이터의 경우도 캐싱을 적용하기 좋다. 예를 들어 특정 arguments의 조합에 따라 결과가 일정한 경우 해당된다.&lt;br&gt;이런 경우는 각 arguments의 조합을 key로 연산 결과를 캐싱하면 된다.&lt;/p&gt;
&lt;h3&gt;오래 걸리는 연산의 결과&lt;/h3&gt;
&lt;p&gt;무거운 연산이 반복적으로 계산되어야 한다면 연산의 특성에 맞게 결과를 캐시하는 것이 효율적이다.&lt;br&gt;또는 사전에 별도의 프로세스에서 작업을 수행하여 결과를 미리 캐싱해 놓을 수 있다.&lt;/p&gt;
&lt;p&gt;이 밖에도 일반적인 쿼리나 연산보다 캐싱할 때의 비용이 더 적다면 캐싱을 사용할 수 있다.&lt;br&gt;로그 분석이나 프로파일링을 통해 캐시를 적용할 함수나 API를 찾을 수 있다. 그러나 모든 사항을 고려하여 캐싱을 적용할지, TTL은 얼마나 적용할지 등은 개발자의 선택이 중요하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;캐싱 전략 패턴의 종류&lt;/h2&gt;
&lt;p&gt;캐시를 이용하게 되면 닥쳐오는 문제점이 바로 데이터 정합성의 문제이다. 같은 종류의 데이터라도 두 저장소에 저장된 값이 서로 다른 현상이 일어날 수 밖에 없는 것이다.&lt;br&gt;따라서 적절한 캐시 읽기 전략(Read Cache Strategy)과 캐시 쓰기 전략(Write Cache Strategy)를 통해, 캐시와 DB간의 데이터 불일치 문제를 극복하면서도 빠른 성능을 잃지 않게 하기위해 연구를 할 필요가 있다.&lt;/p&gt;
&lt;h2&gt;캐시 읽기 전략 (Read Cache Strategy)&lt;/h2&gt;
&lt;h3&gt;Look Aside Pattern&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Cache Aside 패턴이라고도 불림.&lt;/li&gt;
&lt;li&gt;데이터를 찾을 때 우선 캐시에 저장된 데이터가 있는지 우선 확인, 캐시에 데이터가 없으면 DB에서 조회함.&lt;/li&gt;
&lt;li&gt;반복적인 읽기가 많은 호출에 적합.&lt;/li&gt;
&lt;li&gt;캐시와 DB가 분리되어 가용되기 때문에 원하는 데이터만 별도로 구성하여 캐시에 저장.&lt;/li&gt;
&lt;li&gt;캐시와 DB가 분리되기 때문에 캐시 장애 대비 구성이 되어 있음.&lt;br&gt;만일 Cache Store가 다운되더라도 DB에서 데이터를 가져올 수 있어 서비스 자체는 문제가 없음.&lt;/li&gt;
&lt;li&gt;대신 Cache Store에 붙어있던 connection이 많았다면, Cache Store가 다운된 순간 DB로 몰려 부하발생 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;일반적으로 사용되는 기본적인 캐시 전략. 이 방식은 캐시에 장애가 발생하더라도 DB에 질의를 실행함으로 캐시 장애로 인한 서비스 문제는 대비할 수 있지만, Cache Store와 DB간 정합성 유지 문제가 발생할 수 있음.&lt;br&gt;반복적으로 동일 쿼리를 수행하는 서비스에 적합, 단건 호출 빈도가 높은 서비스에는 비적합.&lt;br&gt;이런 경우 DB에서 캐시로 데이터를 미리 넣어주는 작업을 하기도 하는데 이를 Cache Warming이라고 함.&lt;/p&gt;
&lt;h3&gt;Read Through 패턴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;캐시에서만 데이터를 읽어오는 전략 (inline cache)&lt;/li&gt;
&lt;li&gt;Look Aside와 비슷하지만 데이터 동기화를 라이브러리 또는 캐시 제공자에게 위임하는 방식이라는 차이가 있음.&lt;/li&gt;
&lt;li&gt;따라서 데이터를 조회하는데 전체적으로 속도가 느림.&lt;/li&gt;
&lt;li&gt;또한 데이터 조회를 전적으로 캐시에만 의지하므로 Cache Store가 다운될 경우 서비스 이용에 차질이 생길수 있음.&lt;/li&gt;
&lt;li&gt;캐시와 DB간의 데이터 동기화가 항상 이루어져 데이터 정합성 문제에서 벗어날 수 있음.&lt;/li&gt;
&lt;li&gt;읽기가 많은 호출에 적합&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cache Aside 방식과 비슷하지만, Cache Store에 저장하는 주체가 Server인가 혹은 Data Store 자체인가의 차이가 있음.&lt;br&gt;직접적인 DB 접근을 최소화 하고, Read에 대한 소모되는 자원을 최소화할 수 있음.&lt;br&gt;하지만 캐시에 문제가 발생하는 경우 바로 서비스 중단이 되기 때문에 Cache Store의 Replication 또는 Cluster구성하여 가용성을 높여야 함.&lt;/p&gt;
&lt;h2&gt;캐시 쓰기 전략 (Write Cache Strategy)&lt;/h2&gt;
&lt;h3&gt;Write Back 패턴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Write Behinde 패턴이라고도 불림.&lt;/li&gt;
&lt;li&gt;캐시와 DB 동기화를 비동기하기 때문에 동기화 과정이 생략.&lt;/li&gt;
&lt;li&gt;데이터를 저장할 때 DB에 바로 질의하지 않고, 캐시에 모아서 일정 주기 배치 작업을 통해 DB에 반영.&lt;/li&gt;
&lt;li&gt;캐시에 모아놨다 DB에 쓰기 때문에 쓰기 커넥션 회수 비용과 부하를 줄일 수 있음.&lt;/li&gt;
&lt;li&gt;Write가 빈번하면 서 Read를 하는데 많은 양의 리소스가 소모되는 서비스에 적합.&lt;/li&gt;
&lt;li&gt;데이터 정합성 확보.&lt;/li&gt;
&lt;li&gt;자주 사용되지 않는 불필요할 리소스 저장.&lt;/li&gt;
&lt;li&gt;캐시에서 오류발생시 데이터 영구소실의 가능성.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;데이터를 저장할 때 DB가 아닌 캐시에 먼저 저장하여 모아놓았다가 특정 시점마다 DB로 쓰는 방식으로 일종의 Queue 역할을 겸하게 됨.&lt;br&gt;캐시에 데이터를 모았다 한 번에 DB에 저장하기 때문에 DB 쓰기 횟수 비용과 부하를 줄일 수 있지만, 데이터를 옮기기 전에 캐시 장애가 발생하면 데이터 유실이 발생할 수 있다는 단점이 존재.&lt;br&gt;반대로 DB에 장애가 발생하더라고 지속적인 서비스 제공을 보장하기도 함.&lt;br&gt;Replication이나 Cluster 구조를 적용하면 Cache Store 서비스의 가용성을 높일 수 있고, Read Through와 결함하변 가장 최근에 업데이트 된 데이터를 항상 캐시에서 사용할 수 있음.&lt;/p&gt;
&lt;h3&gt;Write Through 패턴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;DB와 Cache에 동시에 데이터를 저장하는 전략.&lt;/li&gt;
&lt;li&gt;데이터를 저장할 때 먼저 캐시에 저장한 다음 DB에 저장.&lt;/li&gt;
&lt;li&gt;Read Trough와 마찬가지로 DB 동기화 작업을 캐시에 위임.&lt;/li&gt;
&lt;li&gt;DB와 캐시가 항상 동기화 되어 있어, 캐시의 데이터는 항상 최신 상태로 유지.&lt;/li&gt;
&lt;li&gt;캐시와 백업 저장소에 업데이트를 같이 하여 데이터 일관성 유지.&lt;/li&gt;
&lt;li&gt;데이터 유실이 발생하면 안 되는 상황에 적합.&lt;/li&gt;
&lt;li&gt;자주 사용되지 않는 불필요한 리소스 저장.&lt;/li&gt;
&lt;li&gt;매 요청마다 두번의 Write 가 발생함으로 빈번한 생성, 수정이 발생하는 서비스에서는 성능 이슈 발생.&lt;/li&gt;
&lt;li&gt;기억장치 속도가 느릴 경우, 데이터를 기록할 때 CPU가 대기하는 시간이 필요하기 때문에 성능 감소.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cache Store와 DB에 동시에 반영하는 방식. 항상 동기화 되어 있고 항상 최신정보를 가지고 있다는 장접이 있음.&lt;br&gt;저장할 때마다 2개 과정을 거치기 때문에 상대적으로 느림.&lt;/p&gt;
&lt;h3&gt;Write Around 패턴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;모든 데이터는 DB에 저장&lt;/li&gt;
&lt;li&gt;Cache Miss가 발생하는 경우에만 DB와 캐시에 데이터 저장&lt;/li&gt;
&lt;li&gt;DB와 Cache Store의 데이터가 다를 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cache Miss가 발생하기 전에 DB에 저장된 데이터가 수정되었을 때, 사용자가 조회하는 Cache Store와 DB 간의 데이터 불일치 발생.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Cache 읽기 + 쓰기 전략 조합&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Look Aside + Write Around&lt;/li&gt;
&lt;li&gt;Read Through + Write Around&lt;/li&gt;
&lt;li&gt;Read Through + Write Through&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;캐시 저장시 참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cache Hit Ratio : 캐시 사용의 정중도. 적중율이 높을 수록 CPU와 주기억장치 속도 차이로 인한 병목현상을 최소화할 수 있다.&lt;br&gt;자주 사용되면서 자주 변경되지 않는 데이터를 캐시에 저장할 경우 높은 성능 향상을 이뤄낼 수 있다.  &lt;/li&gt;
&lt;li&gt;지역성 (Locality) : Cache Hit Ratio는 캐시의 Locality, 즉 지역성에 의해 높아진다. 지역성이란 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것을 의미함.&lt;ul&gt;
&lt;li&gt;시간적 지역성 : 최근에 엑세스 된 프로그램이나 데이터가 가까운 미래에 다시 엑세스 될 가능성이 높은을 의미.&lt;/li&gt;
&lt;li&gt;공간적 지역성 : 기억장치 내에 인접하여 저장된 데이터들이 연속적으로 엑세스 될 가능성이 높음을 의미.&lt;/li&gt;
&lt;li&gt;순차적 지역성 : 분기가 발생하지 않는 이상 명령어들이 기억장치에 저장된 수서대로 인출되어 실행됨을 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;일반적으로 캐시는 메모리에 저장되는 형태를 선호한다.&lt;/li&gt;
&lt;li&gt;메모리 저장소(Cache Store)는 대표적으로 Redis와 MemCached가 있으며, 메모리를 1차 저장소로 사용하기 때문에 디스크와 달리 제약적인 저장 공간을 사용한다.&lt;/li&gt;
&lt;li&gt;자주 사용되는 데이터를 어떻게 뽑아 캐시에 저장하고 자주 사용되지 않는 데이터는 어떻게 제거해 갈것이냐를 지속적으로 고민해야 할 필요성이 있다.&lt;/li&gt;
&lt;li&gt;캐시는 자주 사용되며 자주 변경되지 않는 데이터를 기준으로 하는 것이 좋다.&lt;/li&gt;
&lt;li&gt;캐시는 휘발성을 기본으로 하기 때문에 어느 정도 데이터 수집과 저장 주기를 가지도록 설계해야 한다.&lt;/li&gt;
&lt;li&gt;유실 또는 정합성이 일부 깨질 수 있다는 점을 항상 고려해야 한다.&lt;/li&gt;
&lt;li&gt;레파토 법칙 (8:2 법칙)&lt;br&gt;전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상을 가리킨다.&lt;br&gt;80%의 활동을 20%의 유저가 하기 때문에 20%의 데이터만 캐시해도 서비스 대부분의 데이터를 커버할 수 있다는 의미다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;캐시 제거시 참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;캐시는 기본적으로 영구 저장소에 저장된 데이터의 복사본으로 동작하는 경우가 많다.&lt;/li&gt;
&lt;li&gt;데이터 동기화 작업이 반드시 필요하다는 의미로 개발시 고려해야 한다.&lt;/li&gt;
&lt;li&gt;캐시 만료 정책이 제대로 구현되지 않은 경우 클라이언트는 데이터가 변경되었음에도 오래된 정보가 캐싱되어 오래된 정보를 사용할 수 있다는 문제점이 있다.&lt;/li&gt;
&lt;li&gt;따라서 캐시 구성시 기본 만료정책을 설정해야 한다.&lt;/li&gt;
&lt;li&gt;만료 주기가 너무 짧으면 데이터는 너무 짤리 제거되고 캐시의 이점이 줄어든다.&lt;/li&gt;
&lt;li&gt;만료 주기가 너무 길면 데이터 변경의 가능성과 메모리 부족현상, 자주 사용해야 하는 데이터가 제거되는 등의 역효과를 나타낼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cache Stampede 현상&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;TTL 값이 너무 작게 설정될 경우 발생할 수 있는 현상이다.&lt;/li&gt;
&lt;li&gt;Cache Miss로 DB에 데이터를 요청한 뒤, 다시 Cache Store에 저장하는 과정을 거칠 경우 모든 application에서 DB에서 값을 찾는 duplicate read가 발생한다.&lt;/li&gt;
&lt;li&gt;읽어온 값을 각각 Cache Store에 저장하는 duplicate write도 발생하여 처리량도 다 같이 느려질 뿐 아니라 불필요한 작업이 굉장히 늘어나 폭주장애로 이어질 가능성이 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;캐시 공유시 참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;캐시는 application의 여러 인스턴스에서 공유하도록 설계한다.&lt;/li&gt;
&lt;li&gt;각 application의 인스턴스가 캐시에서 데이터를 읽고 수정할 수 있다.&lt;/li&gt;
&lt;li&gt;캐시 업데이트 방식&lt;ol&gt;
&lt;li&gt;캐시 데이터의 변경 직전에 데이터가 검색된 후 변경되지 않았는지 확인해야 한다.&lt;br&gt;변경되지 않았다면 업데이트하고 변경되었다면 업데이트 여부를 어플리케이션 레벨에서 결정할 수 있어야 한다.&lt;/li&gt;
&lt;li&gt;캐시 데이터를 업데이트 하기 전에 Lock을 잡는 방식.&lt;br&gt;lock을 사용할 경우 조회성 업무를 처리하는 서비스에 Lock으로 인해 대기현상이 발생할 수 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;캐시 가용성 참고&lt;/h2&gt;
&lt;p&gt;캐시를 구성하는 목적은 빠른 성능 확보와 데이터 전달에 있으며 데이터의 영속성 보장하기 위함은 아니다.&lt;br&gt;데이터의 영속성은 기존 RDBMS에 위임하고, 캐시는 데이터 읽기에 집중하는 것이 성능확보의 지침사항이다.&lt;br&gt;또한 Cache Store가 장애로 인해 다운 되었을 경우나 서비스가 불가능 할 경우에도 지속적인 서비스가 가능해야 한다. 이는 데이터가 결국 RDBMS에 동일하게 저장되고 유지된다는 점을 뒷바침 한다.&lt;/p&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>Cache</category>
      <category>memcached</category>
      <category>redis</category>
      <category>레디스</category>
      <category>방안</category>
      <category>설계</category>
      <category>인메모리</category>
      <category>전략</category>
      <category>최적</category>
      <category>캐시</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/186</guid>
      <comments>https://dev-log-island.tistory.com/186#entry186comment</comments>
      <pubDate>Mon, 21 Aug 2023 14:59:57 +0900</pubDate>
    </item>
    <item>
      <title>[VCS] 좋은 커밋 메세지 간단 작성법</title>
      <link>https://dev-log-island.tistory.com/184</link>
      <description>&lt;p&gt;참고 페이지의 간소화 버전이다. 아주 조금의 신경을 쓰면 명확하게 전달되는 커밋 메세지를 작성할 수 있다.&lt;/p&gt;
&lt;h2&gt;commit message 구조&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-txt&quot;&gt;  &amp;lt;타입&amp;gt;[적용 범위(선택 사항)]: &amp;lt;설명&amp;gt;

  [본문(선택 사항)]

  [꼬리말(선택 사항)]&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;1. 타입&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;commit 이 무엇애 대한 작업인지 키워드를 통해 인지&lt;ul&gt;
&lt;li&gt;fix: - 버그 수정&lt;/li&gt;
&lt;li&gt;feat: - 새로운 기능 추가, 기존 기능 변경&lt;/li&gt;
&lt;li&gt;build: - 빌드 관련 수정&lt;/li&gt;
&lt;li&gt;ci: - CI 관련 수정&lt;/li&gt;
&lt;li&gt;docs: - 문서(주석) 수정&lt;/li&gt;
&lt;li&gt;style: 코드 스타일, 포멧팅 수정&lt;/li&gt;
&lt;li&gt;refactor: - 코드 리팩토링 (기능 수정 아님. )&lt;/li&gt;
&lt;li&gt;test: - 테스트 코드 추가, 수정&lt;/li&gt;
&lt;li&gt;chore: 기타 변경사항 수정 (.gitignore 등)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2. 설명&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;커밋 메시지 제목&lt;ul&gt;
&lt;li&gt;제목은 50자를 넘기지 않고, 마침표를 붙이지 않기&lt;/li&gt;
&lt;li&gt;제목에 커밋 타입을 함께 작성&lt;/li&gt;
&lt;li&gt;과거 시제를 사용하지 않고 명령조로 작성&lt;/li&gt;
&lt;li&gt;제목과 본문은 한 줄 띄워 분리&lt;/li&gt;
&lt;li&gt;제목의 첫 글자는 반드시 대문자로&lt;/li&gt;
&lt;li&gt;이슈에 관련된 내용이라면 이슈 번호를 붙히기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3. 본문&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;자세한 설명&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;4. 꼬릿말&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;이슈 번호 등&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;참고 : &lt;a href=&quot;https://www.conventionalcommits.org/ko/v1.0.0/#%ea%b0%9c%ec%9a%94&quot;&gt;https://www.conventionalcommits.org/ko/v1.0.0/#%ea%b0%9c%ec%9a%94&lt;/a&gt;&lt;/p&gt;</description>
      <category>VCS</category>
      <category>Commit</category>
      <category>Git</category>
      <category>Message</category>
      <category>SVN</category>
      <category>VCS</category>
      <category>깃</category>
      <category>메세지</category>
      <category>명확한</category>
      <category>전달</category>
      <category>커밋</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/184</guid>
      <comments>https://dev-log-island.tistory.com/184#entry184comment</comments>
      <pubDate>Fri, 14 Jul 2023 10:28:27 +0900</pubDate>
    </item>
    <item>
      <title>[FE] 이벤트 버블링 (Event Bubbling)</title>
      <link>https://dev-log-island.tistory.com/183</link>
      <description>&lt;h1&gt;이벤트 버블링&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드의 이벤트는 div에 할당되어 있지만, em이나 code 같은 자식 태그를 클릭해도 동작합니다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;div onclick=&quot;console.log('click div');&quot;&amp;gt;
    &amp;lt;em&amp;gt;&amp;lt;code&amp;gt;EM&amp;lt;/code&amp;gt;&amp;lt;/em&amp;gt;을 클릭했는데도, &amp;lt;code&amp;gt;div&amp;lt;/code&amp;gt;에 할당된 핸들러가 동작합니다.&amp;lt;/em&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;버블링&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고, 이어서 부모 요소의 핸들러가 동작합니다.&lt;br /&gt;가장 최상단의 조상 요소를 만날 때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개의 요소가 &lt;code&gt;FORM &amp;gt; DIV &amp;gt; P&lt;/code&gt; 형태로 중첩된 구조에 각각 핸들러가 할당되어 있습니다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;  &amp;lt;form onclick=&quot;console.log('click form')&quot;&amp;gt;
    FORM
    &amp;lt;div onclick=&quot;console.log('click div')&quot;&amp;gt;
      DIV
      &amp;lt;br/&amp;gt;
      &amp;lt;p onclick=&quot;console.log(p)&quot;&amp;gt;P&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/form&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 안쪽의 p를 클릭하면 순서대로 다음과 같은 일이 벌어집니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;p에 할당된 onclick 핸들러 동작.&lt;/li&gt;
&lt;li&gt;div에 할당된 onclick 핸들러 동작.&lt;/li&gt;
&lt;li&gt;form에 할당된 onclick 핸들러 동작.&lt;/li&gt;
&lt;li&gt;document 객체를 만날 때까지, 각 요소에 할당된 onclick 핸들러 동작.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 동작 방식 때문에 p 요소를 클릭하면 p -&amp;gt; div -&amp;gt; form 순서로 3개의 콘솔 로그가 출력되는 것이조.&lt;br /&gt;이런 흐름을 '이벤트 버블링'이라고 부릅니다.&lt;br /&gt;이벤트가 제일 깊은 곳에 있는 요소에서 시작해 부모 요소를 거슬러 올라가며 발생하는 형세 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;거의&lt;/b&gt; 모든 이벤트는 버블링 됩니다.&lt;br /&gt;focus와 같이 버블링 되지 않는 이벤트도 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;event.target&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모 요소의 핸들러는 이벤트가 정확히 어디서 발생했는지 등에 대한 자세한 정보를 얻을 수 있습니다.&lt;br /&gt;이벤트가 발생한 가장 안쪽의 요소는 타깃(target) 요소라고 불리고, event.target을 사용해 접근할 수 있습니다.&lt;br /&gt;event.target과 this (event.currentTarget)은 다음과 같은 차이가 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;event.target은 실제 이벤트가 시작된 '타켓'요소 입니다. 버블링이 진행되어도 변하지 않습니다.&lt;/li&gt;
&lt;li&gt;this 는 현재 요소로, 현재 실행중인 핸들러가 할당된 요소를 참조합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;버블링 중단하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 버블링은 타깃 이벤트에서 시작해서 html 요소를 거쳐 document 객체를 만날 때까지 각 노드에서 모두 발생합니다.&lt;br /&gt;몇몇 이벤트는 window 객체까지 거슬러 올라가기도 합니다. 이 때도 모든 핸들러가 호출됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핸들러에게 이벤트를 완전히 처리하고 난 후 버블링을 중단하도록 할 수 있습니다.&lt;br /&gt;&lt;code&gt;event.stopPropagation()&lt;/code&gt;을 사용하면됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;event.stopImmediatePropagation()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 요소의 특정 이벤트를 처리하는 핸들러가 여러개인 상황에서, 핸들러 중 하나가 버블링을 멈추더라도 나머지 핸들러는 여전히 동작합니다.&lt;br /&gt;event.stopPropagation()은 위쪽으로 일어나는 버블링은 막아주지만, 다른 핸들러들이 동작하는 건 막지 못합니다.&lt;br /&gt;버블링을 멈추고, 요소에 할당된 다른 핸들러의 동작도 막으려면 event.stopImmediatePropagation()을 사용해야 합니다. 이 메소드를 사용하면 요소에 할당된 특정 이벤트를 처리하는 핸들러들이 모두 동작하지 않습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;꼭 필요한 경우를 제외하곤 버블링을 막지 마세요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버블링은 유용합니다. 버블링을 꼭 멈춰야 하는 명백한 상황이 아니면 버블링을 막지 마세요. 아키텍쳐를 잘 고려해서 진짜 막아야 하는 상황에서만 버블링을 막으세요.&lt;br /&gt;event.stopPropagation()은 추후에 문제가 될 수 있는 상황을 만들어 낼 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예시 시나리오
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;중쳡 메뉴를 만들었다 가정합니다. 각 서브메뉴에 해당하는 요소에서 클릭이벤트를 처리하도록 하고, 상위 메뉴의 클릭 이벤트 핸들러는 동작하지 않도록 stopPropagation을 적용합니다.&lt;/li&gt;
&lt;li&gt;사람들이 페이지에서 어디를 클릭했는지 등의 행동 패턴을 분석하기 위해, window내에서 발생하는 클릭 이벤트 전부를 감지하기로 결정합니다. 일부 분석 시스템은 그렇게 분석합니다. 이런 분석 시스템의 코드는 클릭이벤트를 감지하기 위해 &lt;code&gt;document.addEventListener('click', ...)&lt;/code&gt;을 사용합니다.&lt;/li&gt;
&lt;li&gt;stopPropagation으로 버블링을 막아놓은 영역에선 분석 시스템의 코드가 동작하지 않기 때문에 분석이 제대로 되지 않습니다. 안타깝게도 stopPropagation을 사용한 영역은 &lt;b&gt;죽은 영역(dead zone)&lt;/b&gt;이 되어버립니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이벤트 버블링을 막아야 하는 경우는 거의 없습니다.&lt;br /&gt;버블링을 막아야 해결 되는 문제라면 커스텀 이벤트 등을 사용해 문제를 해결할 수 있습니다.&lt;br /&gt;핸들러의 event 객체에 데이터를 저장해 다른 핸들러에서 읽을 수 있게 하면, 아래쪽에서 무슨 일이 일어나는지를 부모 요소의 핸들러에게 전달할 수 있으므로, 이 방법으로도 이벤트 버블링을 통제할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 : &lt;a href=&quot;https://ko.javascript.info/bubbling-and-capturing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ko.javascript.info/bubbling-and-capturing&lt;/a&gt;&lt;/p&gt;</description>
      <category>WEB/CLIENT_SIDE</category>
      <category>document</category>
      <category>E.</category>
      <category>event.</category>
      <category>html</category>
      <category>JS</category>
      <category>stopPropagation</category>
      <category>버블링</category>
      <category>이벤트</category>
      <category>이벤트 버블링</category>
      <category>핸들러</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/183</guid>
      <comments>https://dev-log-island.tistory.com/183#entry183comment</comments>
      <pubDate>Fri, 14 Jul 2023 10:13:38 +0900</pubDate>
    </item>
    <item>
      <title>[DB] 특정 기간중 DB CPU 부하가 높은 SQL 찾기</title>
      <link>https://dev-log-island.tistory.com/179</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;특정 기간 중, CPU 사용율이 높은 쿼리를 조회한다.&lt;br /&gt;CPU 점유율이 높은 쿼리를 찾아서 튜닝하기 위해서 사용한다. 기본적으로 oracle에서 제공하는 view를 활용한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사용 테이블&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DBA_HIST_SQLSTAT : SQL Historical Statixtics Information&lt;br /&gt;DB에서 실행된 SQL에 대한 성능 통계치 view&lt;/li&gt;
&lt;li&gt;DBA_HIST_SNAPSHOT : SnapShot Information&lt;br /&gt;워크로드 저장소의 스냅샷에 대한 정보 view&lt;/li&gt;
&lt;li&gt;DBA_HIST_SQLTEXT : SQL Text&lt;br /&gt;워크로드 저장소에 캡쳐된 공유 SQL 커서에 속한 SQL 문의 텍스트 표시.&lt;br /&gt;이 view는 주로 V$SQL view와 함께 사용됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;최종 쿼리&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;  WITH REF_DATE AS (
      /* 대상 기간 지정 */
      SELECT
          TO_DATE('20220401' || ' 000000', 'YYYYMMDD HH24MISS') AS BGN_DE
          , TO_DATE('20230420' || ' 235959', 'YYYYMMDD HH24MISS') AS END_DE
      FROM DUAL
  )
  SELECT
      X.SQL_ID
      , X.CPU_TIME
      , X.EXECUTIONS_DELTA
      , X.CPU_TIME_PER_EXECUTIONS
      , DBMS_LOB.SUBSTR(SUBSTR(D.SQL_TEXT, 1, 200)) AS SQL_TEXT
      , D.SQL_TEXT AS SQL_FULLTEXT
  FROM (
          SELECT
              SQL.DBID
              , SQL.SQL_ID
              , SUM(SQL.CPU_TIME_DELTA) / 1000000 AS CPU_TIME
              , SUM(SQL.EXECUTIONS_DELTA) AS EXECUTIONS_DELTA
              , ROUND((SUM(SQL.CPU_TIME_DELTA) / 1000000) / DECODE(SUM(SQL.EXECUTIONS_DELTA), 0, 1, SUM(SQL.EXECUTIONS_DELTA)) / DECODE(SQL.PX_SERVERS_EXECS_DELTA, 0, 1, SQL.PX_SERVERS_EXECS_DELTA)) AS CPU_TIME_PER_EXECUTIONS
          FROM DBA_HIST_SQLSTAT SQL
              , (
                  SELECT
                      MIN(SNAP_ID) AS START_SNAP_ID
                      , MAX(SNAP_ID) AS END_SNAP_ID
                      , MIN(BEGIN_INTERVAL_TIME) AS BEGIN_INTERVAL_TIME
                      , MAX(END_INTERVAL_TIME) AS END_INTERVAL_TIME
                  FROM DBA_HIST_SNAPSHOT, REF_DATE
                  WHERE BEGIN_INTERVAL_TIME BETWEEN REF_DATE.BGN_DE
                                              AND REF_DATE.END_DE
              ) SNAP
          WHERE SQL.SNAP_ID BETWEEN SNAP.START_SNAP_ID AND SNAP.END_SNAP_ID
          GROUP BY SQL.DBID, SQL.SQL_ID, SQL.PX_SERVERS_EXECS_DELTA
          HAVING SUM(SQL.EXECUTIONS_DELTA) &amp;gt;= 0
          ORDER BY CPU_TIME_PER_EXECUTIONS DESC
  ) X
  INNER JOIN DBA_HIST_SQLTEXT D
      ON D.SQL_ID = X.SQL_ID
      AND D.DBID = X.DBID
  WHERE ROWNUM &amp;lt;= 40
  ;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;분리&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;  SELECT
      SQL.DBID
      , SUM(SQL.CPU_TIME_DELTA) / 1000000 AS CPU_TIME
      , SUM(SQL.EXECUTIONS_DELTA) AS EXECUTIONS_DELTA
      , ROUND((SUM(SQL.CPU_TIME_DELTA) / 1000000) / DECODE(SUM(SQL.EXECUTIONS_DELTA), 0, 1, SUM(SQL.EXECUTIONS_DELTA)) / DECODE(SQL.PX_SERVERS_EXECS_DELTA, 0, 1, SQL.PX_SERVERS_EXECS_DELTA)) AS CPU_TIME_PER_EXECUTIONS
  FROM DBA_HIST_SQLSTAT SQL
      , (
          SELECT
              MIN(SNAP_ID) AS START_SNAP_ID
              , MAX(SNAP_ID) AS END_SNAP_ID
              , MIN(BEGIN_INTERVAL_TIME) AS BEGIN_INTERVAL_TIME
              , MAX(END_INTERVAL_TIME) AS END_INTERVAL_TIME
          FROM DBA_HIST_SNAPSHOT
          WHERE BEGIN_INTERVAL_TIME BETWEEN TO_DATE('20230401' || ' 000000', 'YYYYMMDD HH24MISS')
                                      AND TO_DATE('20230419' || ' 235959', 'YYYYMMDD HH24MISS')
      ) SNAP
  WHERE SQL.SNAP_ID BETWEEN SNAP.START_SNAP_ID AND SNAP.END_SNAP_ID
  GROUP BY SQL.DBID, SQL.SQL_ID, SQL.PX_SERVERS_EXECS_DELTA
  HAVING SUM(SQL.EXECUTIONS_DELTA) &amp;gt;= 0
  ORDER BY CPU_TIME_PER_EXECUTIONS
  ;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;  SELECT
      MIN(SNAP_ID) AS START_SNAP_ID
      , MAX(SNAP_ID) AS END_SNAP_ID
      , MIN(BEGIN_INTERVAL_TIME) AS BEGIN_INTERVAL_TIME
      , MAX(END_INTERVAL_TIME) AS END_INTERVAL_TIME
  FROM DBA_HIST_SNAPSHOT
  WHERE BEGIN_INTERVAL_TIME BETWEEN TO_DATE('20230401' || ' 000000', 'YYYYMMDD HH24MISS')
                              AND TO_DATE('20230419' || ' 235959', 'YYYYMMDD HH24MISS')
  ;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Database</category>
      <category>11g</category>
      <category>cpu</category>
      <category>db</category>
      <category>Oracle</category>
      <category>부하</category>
      <category>사용율</category>
      <category>성능</category>
      <category>쿼리</category>
      <category>튜닝</category>
      <category>향상</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/179</guid>
      <comments>https://dev-log-island.tistory.com/179#entry179comment</comments>
      <pubDate>Thu, 20 Apr 2023 09:04:59 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 헤드퍼스트 디자인 패턴</title>
      <link>https://dev-log-island.tistory.com/178</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Head First Design Patterns는 객체지향 프로그래밍과 디자인 패턴에 대한 입문서다. 이 책 또한 다른 전공 서적과 다르게 쉽게 읽히는 책이다. 그림과 예제 코드를 통해 설명되며, 이러한 방식으로 개념을 쉽게 이해할 수 있었다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&quot;변하지&amp;nbsp;않는&amp;nbsp;사실은&amp;nbsp;계속&amp;nbsp;변화한다&quot;라는&amp;nbsp;문장을&amp;nbsp;책에서&amp;nbsp;강조하는데,&amp;nbsp;현업에서&amp;nbsp;개발하다&amp;nbsp;보면&amp;nbsp;기획내용이나&amp;nbsp;사용자의&amp;nbsp;요구사항은&amp;nbsp;계속&amp;nbsp;변한다.&amp;nbsp;어제까지는&amp;nbsp;분명&amp;nbsp;A를&amp;nbsp;얘기했는데,&amp;nbsp;오늘&amp;nbsp;저녁에&amp;nbsp;갑자기&amp;nbsp;B나&amp;nbsp;C&amp;nbsp;또는&amp;nbsp;H로&amp;nbsp;요구사항이&amp;nbsp;바뀔&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;열심히&amp;nbsp;다&amp;nbsp;만들었더라도&amp;nbsp;요구사항이&amp;nbsp;추가되거나&amp;nbsp;변하면&amp;nbsp;새로운&amp;nbsp;것을&amp;nbsp;다시&amp;nbsp;만들어야&amp;nbsp;하는&amp;nbsp;상황이&amp;nbsp;흔한&amp;nbsp;것이다.&amp;nbsp;사실&amp;nbsp;요구사항의&amp;nbsp;변화는&amp;nbsp;SW의&amp;nbsp;본질이라고&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;그렇기에&amp;nbsp;변경에&amp;nbsp;용이한&amp;nbsp;아키텍쳐를&amp;nbsp;설계하고&amp;nbsp;개발하는&amp;nbsp;것이&amp;nbsp;개발자의&amp;nbsp;중요&amp;nbsp;역량이라고&amp;nbsp;생각한다.&amp;nbsp;그게&amp;nbsp;안&amp;nbsp;되면&amp;nbsp;IT로&amp;nbsp;밥&amp;nbsp;벌어먹으면&amp;nbsp;안&amp;nbsp;된다는&amp;nbsp;생각.&amp;nbsp;어쨌거나,&amp;nbsp;변경에&amp;nbsp;용이한&amp;nbsp;코드를&amp;nbsp;작성하기&amp;nbsp;위해서는&amp;nbsp;여러&amp;nbsp;가지&amp;nbsp;디자인&amp;nbsp;패턴이&amp;nbsp;있고,&amp;nbsp;예제를&amp;nbsp;패턴을&amp;nbsp;적용해&amp;nbsp;개선해&amp;nbsp;나가는&amp;nbsp;예시로&amp;nbsp;설명해준다.&lt;br /&gt;&lt;br /&gt;책에서는&amp;nbsp;디자인&amp;nbsp;패턴의&amp;nbsp;개념과&amp;nbsp;각&amp;nbsp;패턴이&amp;nbsp;어떤&amp;nbsp;상황에서&amp;nbsp;사용되는지에&amp;nbsp;대해&amp;nbsp;설명한다.&amp;nbsp;디자인&amp;nbsp;패턴은&amp;nbsp;각각&amp;nbsp;객체&amp;nbsp;생성,&amp;nbsp;객체&amp;nbsp;구조,&amp;nbsp;인터페이스,&amp;nbsp;행위&amp;nbsp;등의&amp;nbsp;다양한&amp;nbsp;측면에서&amp;nbsp;소프트웨어&amp;nbsp;디자인을&amp;nbsp;개선하기&amp;nbsp;위한&amp;nbsp;것이다.&amp;nbsp;또한,&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;디자인&amp;nbsp;패턴을&amp;nbsp;적용하는&amp;nbsp;과정에서&amp;nbsp;발생하는&amp;nbsp;문제와&amp;nbsp;해결&amp;nbsp;방법에&amp;nbsp;대해&amp;nbsp;다루며,&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;디자인&amp;nbsp;패턴을&amp;nbsp;적용하는&amp;nbsp;방법을&amp;nbsp;익힐&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;돕는다.&amp;nbsp;디자인&amp;nbsp;패턴은&amp;nbsp;사실&amp;nbsp;무궁무진하게&amp;nbsp;많다,&amp;nbsp;java,&amp;nbsp;c,&amp;nbsp;javascript&amp;nbsp;언어에&amp;nbsp;따라서도&amp;nbsp;다른&amp;nbsp;패턴이&amp;nbsp;나온다.&amp;nbsp;이&amp;nbsp;책에서는&amp;nbsp;java&amp;nbsp;계열&amp;nbsp;실무에서&amp;nbsp;자주&amp;nbsp;사용하는&amp;nbsp;디자인&amp;nbsp;패턴을&amp;nbsp;집중해서&amp;nbsp;다뤄주고&amp;nbsp;있다.&amp;nbsp;책은&amp;nbsp;650여&amp;nbsp;페이지로&amp;nbsp;굉장히&amp;nbsp;두꺼운데,&amp;nbsp;그림이&amp;nbsp;대다수를&amp;nbsp;차지하고&amp;nbsp;있고,&amp;nbsp;독자의&amp;nbsp;가독성을&amp;nbsp;고려하여&amp;nbsp;쓴&amp;nbsp;책이라&amp;nbsp;쉽게&amp;nbsp;읽힌다.&amp;nbsp;(글을&amp;nbsp;잘&amp;nbsp;쓰는&amp;nbsp;사람이&amp;nbsp;개발도&amp;nbsp;잘한다는&amp;nbsp;말을&amp;nbsp;반증하는&amp;nbsp;것&amp;nbsp;같다.)&lt;br /&gt;&lt;br /&gt;나는&amp;nbsp;객체&amp;nbsp;지향을&amp;nbsp;조금&amp;nbsp;더&amp;nbsp;잘&amp;nbsp;활용해보고&amp;nbsp;싶은&amp;nbsp;개발자로&amp;nbsp;추상화,&amp;nbsp;캡슐화,&amp;nbsp;다형성,&amp;nbsp;상속을&amp;nbsp;어떻게&amp;nbsp;하면&amp;nbsp;더&amp;nbsp;잘&amp;nbsp;적용할&amp;nbsp;수&amp;nbsp;있을지를&amp;nbsp;이&amp;nbsp;책을&amp;nbsp;통해&amp;nbsp;심도있게&amp;nbsp;고민해보았다.&amp;nbsp;흔히들&amp;nbsp;코드&amp;nbsp;재사용을&amp;nbsp;막기&amp;nbsp;위해&amp;nbsp;상속을&amp;nbsp;사용하는데,&amp;nbsp;생각지&amp;nbsp;못한&amp;nbsp;상황에&amp;nbsp;반복된&amp;nbsp;코드를&amp;nbsp;짤&amp;nbsp;수밖에&amp;nbsp;없었던&amp;nbsp;적이&amp;nbsp;많다.&amp;nbsp;그런&amp;nbsp;상황에&amp;nbsp;대한&amp;nbsp;해법들도&amp;nbsp;이&amp;nbsp;책을&amp;nbsp;통해&amp;nbsp;얻었다.&lt;br /&gt;Head&amp;nbsp;First&amp;nbsp;Design&amp;nbsp;Patterns는&amp;nbsp;객체지향&amp;nbsp;프로그래밍과&amp;nbsp;디자인&amp;nbsp;패턴에&amp;nbsp;대한&amp;nbsp;이해를&amp;nbsp;쉽게&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;돕는다.&amp;nbsp;이&amp;nbsp;책으로&amp;nbsp;습득한&amp;nbsp;디자인&amp;nbsp;패턴을&amp;nbsp;사용하면&amp;nbsp;더&amp;nbsp;나은&amp;nbsp;소프트웨어&amp;nbsp;디자인을&amp;nbsp;구현할&amp;nbsp;수&amp;nbsp;있을&amp;nbsp;것으로&amp;nbsp;기대되고,&amp;nbsp;이는&amp;nbsp;개발자로서의&amp;nbsp;역량&amp;nbsp;향상에&amp;nbsp;큰&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;것&amp;nbsp;같다.&lt;/p&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>Java</category>
      <category>OOP</category>
      <category>개발자</category>
      <category>객체지향</category>
      <category>독후감</category>
      <category>디자인</category>
      <category>디자인 패턴</category>
      <category>자바</category>
      <category>패턴</category>
      <category>헤드퍼스트</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/178</guid>
      <comments>https://dev-log-island.tistory.com/178#entry178comment</comments>
      <pubDate>Fri, 14 Apr 2023 11:09:58 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 테스트 주도 개발 실천법과 도구</title>
      <link>https://dev-log-island.tistory.com/177</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;채수&lt;/span&gt;원 님의 TDD(Test Driven Development) 개발 실천법과 도구는 &lt;span style=&quot;text-align: start;&quot;&gt;소프트웨어 개발 방법론 중 하나인 TDD&lt;/span&gt;&lt;/span&gt;를 구체적으로 실천하는 방법과 그 과정에서 사용되는 도구들에 대한 내용을 다룬 책이다. &lt;/span&gt;TDD 대한 이해를 높이고 실제 개발에 적용하는 방법을 설명한다. &lt;span style=&quot;text-align: start;&quot;&gt;TDD(Test Driven Development)는 소프트웨어 개발 방법론 중 하나로, 테스트 케이스를 먼저 작성하고 이를 통과하는 코드를 작성하는 것을 중심으로 개발하는 방법&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;책에서는 TDD의 개념과 원칙을 소개하며 테스트 케이스(TC) 작성, 코드 작성, 리팩토링 등의 단계별로 구체적인 예시를 보여준다. 특히 TC 작성과 이를 통한 코드 작성의 중요성에 대해 강조하며 TDD의 장점과 효과를 다양한 관점으로 보여준다. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;책에서는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;TDD를 실천하는 데 필요한 기본적인 원칙과 방법론을 설명하면서, 이를 구현하는 과정에서 발생하는&lt;/span&gt;&amp;nbsp;이슈와 해결 방법 등에 대해서도 다룬다. TDD를 적용하는 데에 있어 좋은 습관과 나쁜 습관을 비교하며 TDD를 대하는 개발자의 태도화 실천할 것들을 제시한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;TDD를 실천하는 과정은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 케이스 작성 :&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;먼저 개발하려는 기능에 대한 테스트 케이스를 작성. 작성한 테스트 케이스는 해당 기능이 정확히 동작하는지 검증하기 위한 목적으로 작성한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;테스트 실행 :&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 작성한 테스트 케이스를 실행하여 해당 기능이 제대로 구현되어 있는지 확인.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 이때, 테스트 케이스가 실패하면 해당 기능의 구현이 제대로 이루어지지 않았다는 것을 의미.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드 작성 :&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 테스트 케이스를 통과하기 위한 코드를 작성.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 이때, 테스트 케이스가 통과하도록 코드를 작성하는 것이 중요함.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드 리팩토링 :&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 작성한 코드를 리팩토링하여 더 효율적이고 가독성이 좋은 코드로 개선.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 과정을 반복하며 개발하는 것이 TDD의 핵심이다. &lt;span style=&quot;text-align: start;&quot;&gt;이 과정에서 개발자는 작성한 코드가 정상적으로 동작하는지 항상 확인할 수 있으며, 버그를 빠르게 발견하고 수정할 수 있다고. 또한, 작성한 코드를 리팩토링하면서 코드의 유지 보수성과 확장성을 높일 수 있다고 한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TDD를 실천하는 개발자들은 코드 품질과 안정성을 높일 수 있으며, 개발 프로세스를 보다 효율적으로 관리할 수 있다고 한다. 또한, TDD는 기능 구현 외에도 코드의 문서화와 같은 부가적인 기능을 제공할 수 있어, 소프트웨어 개발의 생산성을 높일 수 있다고 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;TDD를 처음 접하는 초심자에게 유용한 정보이지만 초판 이후 어른들의 사정으로 재판이 나오지 않았고, 옛날 기술이나 라이브러리에 대한 설명이 많다. &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;TDD를 업무에서 실 사용해보지 않은 내 입장에서는 일단 겪어봐야 할 것 같다. &lt;/span&gt;SW 품질을 높이는데 철학이 없는 조직에서는 TDD를 적용하기가 쉽지 않아서, 어쩌면 뜬구름 잡는 소리로 보이는 것도 있을 것 같다. 그치만 나는 내 일을 하면서 SW 품질을 높이는 데 많은 목마름이 있기에 꼭 TDD를 경험해 봐야 할 것 같다. &lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;일단 나는 사이드 프로젝트에서 TDD를 사용해야겠다.&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>TDD</category>
      <category>개발</category>
      <category>도구</category>
      <category>독후감</category>
      <category>실천법</category>
      <category>주도</category>
      <category>채수원</category>
      <category>테스트</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/177</guid>
      <comments>https://dev-log-island.tistory.com/177#entry177comment</comments>
      <pubDate>Thu, 13 Apr 2023 22:47:00 +0900</pubDate>
    </item>
    <item>
      <title>[DB] Oracle 쿼리 튜닝을 위한 쿼리 분석 방법</title>
      <link>https://dev-log-island.tistory.com/176</link>
      <description>&lt;h1&gt;GATHER PLAN STATISTICS&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오라클 DB의 예상 실행 계획만으로는 성능 개선에 어려움을 겪을 때가 있음. 실제 실행 계획을 보고 문제점을 진단할 수 있어야 함.&lt;br /&gt;&lt;code&gt;gather_plan_statistics&lt;/code&gt; 힌트는 Oracle SQL에서 SQL 문의 &lt;b&gt;실제 실행 통계&lt;/b&gt;를 수집할 수 있는 기능.&lt;br /&gt;이 힌드를 사용하면 Oracle DB는 SQL 실행 계획의 각 단계에서 처리된 행 수, 사용된 메모리 양 및 각 단계에서 사용된 시간과 같은 자세한 통계를 수집함.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GATHER_PLAN_STATISTICS으로 수집 가능한 정보&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 단계에서 수행되는 레코드 수, 시간 및 I/O 통계&lt;/li&gt;
&lt;li&gt;각 단계에서 사용된 실행 계획&lt;/li&gt;
&lt;li&gt;SQL 문의 최적 실행 계획과 실제 실행 계획의 차이를 나타내는 비교 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;GATHER PLAN STATISTICS 사용 법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL 문에 다음과 같이 간단히 추가하면 됨.&lt;/p&gt;
&lt;pre class=&quot;lasso&quot;&gt;&lt;code&gt;  SELECT /*+ gather_plan_statistics */ column1, column2, ...
  FROM TABLE
  WHERE ...&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DBMS_XPLAN.DISPLAY_CURSOR&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능 문제를 진단하고 SQL 문을 최적화하는데 유용함.&lt;br /&gt;&lt;code&gt;/*+ gather_plan_statistics */&lt;/code&gt; SQL을 실행한 후, &lt;code&gt;DBMS_XPLAN.DISPLAY_CURSOR&lt;/code&gt; 함수를 사용하여 실행 계획과 관련된 통계를 볼 수 있음.&lt;br /&gt;&lt;code&gt;DISPLAY_CURSOR&lt;/code&gt; 함수는 실행 계획과 통계의 자세한 보고서를 반환하므로 SQL 문의 성능을 분석하고 최적화할 부분을 식별하는 데 사용할 수 있음.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최적 실행 계획과 실제 실행 계획의 비교&lt;/li&gt;
&lt;li&gt;각 실행 계획 단계에서 수행된 레코드 수, 시간 및 I/O 통계&lt;/li&gt;
&lt;li&gt;각 실행 계획 단계에서 사용된 인덱스 및 조인 방법 등의 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PREDICATE INFORMATION&lt;/b&gt; 섹션에서는 WHERE절과 JOIN 조건에 대한 추가 정보도 제공함&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;  SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT =&amp;gt; 'ALLSTATS LAST'));
  SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(null, null, 'ALLSTATS LAST'));&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;code&gt;DISPLAY_CURSOR&lt;/code&gt; 매개 변수&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL_ID : 실행 계획과 통계를 검색하려는 SQL 문의 SQL_ID&lt;/li&gt;
&lt;li&gt;CURSOR_CHILD_NO : [OPTIONAL] 실행 계획을 검색하려는 SQL 문의 부모 커서 번호, 생략시 첫 번째 커서(부모 커서)가 대상이 됨&lt;/li&gt;
&lt;li&gt;FORMAT : 출력 형식 지원, 여러가지 출력 옵션이 있음.&lt;br /&gt;&lt;code&gt;FORMAT=&amp;gt;'ALLSTATS LAST'&lt;/code&gt;를 사용하면 모든 실행계획 정보와 통계를 검색함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;code&gt;SQL_ID&lt;/code&gt; 찾기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL_ID를 가져오기 위해 현재 DB에 접속한 SESSION에서 실행한 SQL 문의 히스토리를 검색하여 정보를 가져옴.&lt;/p&gt;
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;  --------------------------------------------------------------------------------
  -- SQL_ID, CHILD_NUMBER 추출
  --------------------------------------------------------------------------------
  SELECT
    SA.SQL_ID,
    S.CHILD_NUMBER,
    SA.SQL_TEXT,
    SA.MODULE,
    SA.LAST_LOAD_TIME,
    SA.LAST_ACTIVE_TIME,
    SA.PLAN_HASH_VALUE,
    SA.OPTIMIZER_COST,
    SA.FETCHES,
    SA.EXECUTIONS,
    SA.cpu_time,
    SA.ELAPSED_TIME,
    S.DISK_READS,
    S.PARSE_CALLS,
    S.BUFFER_GETS,
    S.ROWS_PROCESSED,
    SA.PARSING_USER_ID,
    SA.PARSING_SCHEMA_ID,
    SA.PARSING_SCHEMA_NAME
  FROM V$SQLAREA SA
    /* V$SQLAREA : 공유 SQL 영역 */
    INNER JOIN V$SESSION SS
      /* V$SESSION : 현재 세션에 대한 정보 */
      ON SA.PARSING_USER_ID = SS.USER#
      AND SA.PARSING_SCHEMA_ID = SS.SCHEMA#
    INNER JOIN V$SQL S
      /* V$SQL : 공유 SQL 영역 내 쿼리에 대한 정보 */
      ON SA.SQL_ID = S.SQL_ID
  WHERE SS.AUDSID = USERENV('SESSIONID')
    /* 현재 세션과 같은 SESSION ID */
    AND SS.SID = USERENV('SID')
    /* 특정 스키마 */
    AND SA.PARSING_SCHEMA_NAME = 'IDLOOK'
    /* 약 15분 이내에 실행한 쿼리만 조회 */ 
    AND SA.LAST_ACTIVE_TIME &amp;gt;= SYSDATE - 0.01
    /* 제외 */
    AND sa.PARSING_SCHEMA_NAME NOT IN ('SYS', 'SYSTEM')
    AND sa.SQL_TEXT NOT LIKE '%DBMS%'
    AND sa.SQL_TEXT NOT LIKE '%V$%'
    /* 실행 모듈이 운영 또는 타 시스템에서 실행한 쿼리라면 제외 */
    AND SA.MODULE NOT IN ('DBMS_SCHEDULER', 'JDBC Thin Client', 'w3wp.exe')
    /* 특정 문자열 제외*/
    AND NOT REGEXP_LIKE(UPPER(SA.SQL_TEXT), 'V\$SQL|PLAN_TABLE|DBMS_XPLAN|EXTRACTVALUE\(|XMLSEQUENCE\(|CURRENT_SCHEMA|DBA_|DBMS_UTILITY|CONSTRAINT')
  ORDER BY SA.LAST_ACTIVE_TIME DESC, SA.SQL_ID, S.CHILD_NUMBER
;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;권한 문제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=&amp;gt;'ALLSTATS LAST'));&lt;/code&gt;&lt;br /&gt;쿼리 실행 시 권한 부족한 경우 DBA 계정으로 로그인하여 권한 부여 작업을 수행하거나 DBA 권한이 있는 사용자에게 권한을 부여해야 함.&lt;br /&gt;DBMS_XPLAN.DISPLAY_CURSOR 함수를 사용하려면 &lt;code&gt;V$SESSION&lt;/code&gt;, &lt;code&gt;V$SQL_SESSION&lt;/code&gt;, &lt;code&gt;V$SQL&lt;/code&gt;(OPTIONAL), &lt;code&gt;V$SQL_PLAN_STATISTICS_ALL&lt;/code&gt; 권한이 필요. (해당 권한이 없는 경우 ORA-01031: insufficient privileges 오류가 발생)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;작동 조건&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PLAN_STATISTICS 정보는 다음 조건 중 하나를 만족해야 함.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;STATISTICS_LEVEL&lt;/code&gt; PARAMETER 값을 ALL로 변경 한 경우&lt;br /&gt;&lt;code&gt;ALTER SESSION SET STATISTICS_LEVEL = ALL;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_ROWSOURCE_EXECUTION_STATISTICS&lt;/code&gt; PARAMETER 값을 TRUE로 변경한 경우&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GATHER_PLAN_STATISTICS&lt;/code&gt; HINT를 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;조회 결과 분석&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Id, Operation, Name :&lt;br /&gt;흔히 봐온 플랜 정보, 자원에 대한 접근 순서와 방법을 나타냄. 접근 순서를 변경할 수 있는 힌트 절은 ORDERED, LEADING이 있음.&lt;br /&gt;또한 접근 방법을 변경할 수 있는 힌트절은 USE_NL, USE_HASH, USE_MERGE가 있음.&lt;/li&gt;
&lt;li&gt;Starts :&lt;br /&gt;오퍼레이션을 수행한 횟수를 의미한다. Starts * E-Rows 의 값이 A-Rows 값과 비슷하다면, 통계정보의 예측 Row 수와 실제 실행 결과에 따른 실제 Row 수가 유사하다고 함.&lt;br /&gt;만약 값에 큰 차이가 있다면 통계정보가 실제의 정보를 제대로 반영하지 못했다고 봐야 한다고 함.&lt;br /&gt;이로 인해 오라클의 Optimizer가 잘못된 실행 계획을 수립할 수도 있음을 염두에 둬야 함.&lt;/li&gt;
&lt;li&gt;E-Rows (Estimated Rows) :&lt;br /&gt;통계정보에 근거한 예측 Row 수를 의미. 통계정보를 갱신할수록 값이 매번 다를 수 있으며, 대부분의 DB 운영에서는 통계정보를 수시로 갱신하지 않으므로 해당 값에 큰 의미를 둘 필요는 없음.&lt;br /&gt;하지만 E-Rows 값과 A-Rows 값이 현격하게 차이가 있다면 오라클이 잘못된 실행 계획을 세울 수도 있음을 인지해야 하며 통계정보 생성을 검토해 보아야 함.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A-Rows&lt;/b&gt; (Actual Rows) :&lt;br /&gt;쿼리 실행 결과에 따른 실제 Row 수를 의미.&lt;br /&gt;A-Rows 에서 중요한 여러 정보를 추정 할 수 있음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A-Time&lt;/b&gt; (Actual Elapsed Time) :&lt;br /&gt;쿼리 실행 결과에 따른 실제 수행 시간을 의미.&lt;br /&gt;실행 시점의 여러 상황이 늘 가변적이고 또한 메모리에 올라온 Block의 수에 따라서 수행 시간이 달라지므로 해당 값에 큰 의미를 두지 않는게 좋음.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Buffers&lt;/b&gt; (Logical Reads) :&lt;br /&gt;논리적인 Get Block 수를 의미.&lt;br /&gt;해당 값은 오라클 옵티마이저가 일한 총량을 의미하므로, 튜닝을 진행할 때 중요한 요소로 보임.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 헤더에서 튜닝 시 가장 중요하게 활용되는 부분은 Buffers, A-Rows.&lt;br /&gt;Buffers 값을 통해서 Get Block의 총량을 알 수 있고, A-Rows를 통해 플랜 단계별로 실제 Row 수를 알 수 있음.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DBMS_XPLAN.DISPLAY_CURSOR 조회 결과&lt;/h2&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;  SELECT * FROM TABLE (DBMS_XPLAN.DISPLAY_CURSOR('3YTNQSYC1PXJ8', NULL, 'ADVANCED ALLSTATS ALL -PROJECTION +ROWS +BYTES +PREDICATE'));&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-13 10.45.19.png&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;3146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z2pBu/btr9P3musVn/wudojjVdRwK3lbjYNGBsB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z2pBu/btr9P3musVn/wudojjVdRwK3lbjYNGBsB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z2pBu/btr9P3musVn/wudojjVdRwK3lbjYNGBsB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ2pBu%2Fbtr9P3musVn%2FwudojjVdRwK3lbjYNGBsB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1894&quot; height=&quot;3146&quot; data-filename=&quot;스크린샷 2023-04-13 10.45.19.png&quot; data-origin-width=&quot;1894&quot; data-origin-height=&quot;3146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관련 정보 원문 : &lt;a href=&quot;https://docs.oracle.com/database/121/ARPLS/d_xplan.htm#ARPLS70132&quot;&gt;https://docs.oracle.com/database/121/ARPLS/d_xplan.htm#ARPLS70132&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;참고
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://jmkjb.blogspot.com/2015/06/gatherplanstatistics.html&quot;&gt;http://jmkjb.blogspot.com/2015/06/gatherplanstatistics.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://m.blog.naver.com/itperson/220840180396&quot;&gt;https://m.blog.naver.com/itperson/220840180396&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://argolee.tistory.com/8&quot;&gt;https://argolee.tistory.com/8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gnujava.com/board/article_view.jsp?article_no=1898&amp;amp;menu_cd=30&amp;amp;board_no=17&amp;amp;table_cd=EPAR06&amp;amp;table_no=06&quot;&gt;http://gnujava.com/board/article_view.jsp?article_no=1898&amp;amp;menu_cd=30&amp;amp;board_no=17&amp;amp;table_cd=EPAR06&amp;amp;table_no=06&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://argolee.tistory.com/108&quot;&gt;https://argolee.tistory.com/108&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://chat.openai.com/&quot;&gt;https://chat.openai.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Database</category>
      <category>display_cursor</category>
      <category>gather_plan_statistics</category>
      <category>Oracle</category>
      <category>SQL</category>
      <category>개선</category>
      <category>계획</category>
      <category>분석</category>
      <category>성능</category>
      <category>쿼리</category>
      <category>튜닝</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/176</guid>
      <comments>https://dev-log-island.tistory.com/176#entry176comment</comments>
      <pubDate>Thu, 13 Apr 2023 10:38:23 +0900</pubDate>
    </item>
    <item>
      <title>[SQL] 오라클 조회 쿼리 성능 개선을 위한 정리 - 1</title>
      <link>https://dev-log-island.tistory.com/175</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;SELECT 시에는 꼭 필요한 column 만 불러오기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 필드를 불러 올수록 DB는 더 많은 로드를 부담하게 되기 때문에 꼭 필요한 열만 물러오도록 한다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;  -- WORST
  SELECT * FROM TABLE;
  -- BETTER
  SELECT COLUMN1, COLUMN2, COLUMN4, COLUMN8 FROM TABLE;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;WHERE절에서 연산을 걸지 않는다.&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산이 들어가게 되면 TABLE FULL SCAN을 하면서 모든 값을 탐색, 계산 한 뒤 조건 충족 여부를 판단하기 때문에 좋지 않다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;  -- WORST
  SELECT COLUMN1, COLUMN4
  FROM TABLE
  WHERE FLOOR(COLUMN4) = 2;
  -- BETTER
  SELECT COLUMN1, COLUMN4
  FROM TABLE
  WHERE COLUMN4 BETWEEN 4 AND 5;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LIKE 조회시 와일드카드 % 는 가급적 뒤에만 붙이자&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;COLUMN6 LIKE %DF&lt;/code&gt; 는 TABLE FULL SCAN을 유발한다.&lt;br /&gt;&lt;code&gt;COLUMN5 IN ('ASDF', 'ERDF')&lt;/code&gt;, &lt;code&gt;COLUMN5 = 'ASDF' OR COLUMN5 = 'ERDF'&lt;/code&gt; 같은 형태가 낫다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;SELECT DISTINCT, UNION ALL 과 같이 중복을 제거하는 연산은 자제한다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중복을 제거하는 연산은 시간이 많이 걸린다. 불가피하게 사용해야 할 경우 &lt;code&gt;EXISTS&lt;/code&gt;, &lt;code&gt;GROUP BY&lt;/code&gt;를 활용하는게 낫다.&lt;br /&gt;DISTINCT는 원하는 컬럼에 대해서 중복을 제거하는 것이 아니라 SELECT 해온 모든 ROW에서 중복을 제거하므로 속도가 느려진다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;같은 내용의 조건이라면 GROUP BY 연산의 HAVING 보다는 WHERE 절을 사용하는 것이 좋다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리 실행 순서에서 WHERE 절이 HAVING 절 보다 먼저 실행된다. 따라서 WHERE 절로 미리 데이터를 작게 만들면 GROUP BY 절에서 다뤄야 하는 데이터 크기가 작기 때문에 효율적인 연산이 가능하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;VIEW VS MVIEW (MATERIALIZED VIEW)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰는 질의 할때마다 해당 쿼리를 재 실행하는 것과 같음. 속도가 느림. 다만 데이터는 LIVE 함.&lt;br /&gt;MVIEW는 세팅을 어떻게 하느냐에 따라 질의 할 쿼리를 재사용하여 가져옴. 스냅샷 처럼 이전에 만들어 놓은 엠뷰 테이블에서 데이터를 가져옴.&lt;br /&gt;비용이 많이 들어가고 데이터가 고정적인 경우 엠뷰를 만들어서 사용하는게 좋음. 인덱스도 생성 가능.&lt;br /&gt;리프레시 타임이 많이 드는 경우 데이터가 LIVE하지 않은 문제가 있음.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;CHAR VS VARCHAR&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4byte 이하는 CHAR, 그 이상은 VARCHAR가 나음.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CHAR : 고정 길이 문자열&lt;/li&gt;
&lt;li&gt;VARCHAR : 가변 길이 문자열&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;BLOB VS TEXT&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 양의 데이터 저장, 디폴트 값 지정 안됨, 문자열 뒷부분 공백 제거 안되는 공통점이 있음.&lt;br /&gt;차이점으로 BLOB은 대소문자를 구분, TEXT는 구분 안함.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PRIMARY KEY, UNIQUE KEY&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PK와 Unique Key는 자동으로 인덱스가 생성됨.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;쿼리 실행 순서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SUB-QUERY -&amp;gt; MAIN-QUERY&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;INNER JOIN시 테이블 배치 순서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개 이상의 테이블을 INNER JOIN을 할 때는 크기가 가장 큰 테이블을 FROM 절에 배치하고 INNER JOIN 절에 남은 테이블을 작은 순서대로 배치하는 것이 좋다.&lt;br /&gt;테이블 한두개차이는 상관 없지만 많은 테이블을 JOIN 할 경우 JOIN의 경우의 수가 생기고 OPTIMIZER가 PLANNING을 하면서 비용이 증가된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;실행 계획 type이 index라면 한 번 더 살펴보기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EXPLAIN으로 실행 계획을 확인 했을 때 type이 index인 부분이 있다. where 절 조건문에서 사용하는 테이블의 컬럼에 인덱스가 제대로 걸려있지 않기 때문에 TABLE FULL SCAN을 한다.&lt;br /&gt;해당 테이블에 index를 걸고 다시 실행 계획을 INDEX RANGE SCAN으로 변경되었고 실제 실행 속도가 1/4로 줄었다. 아래는 type의 종류로 성능이 낮은 것 부터 높은 순으로 정렬했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ALL : 테이블을 처음부터 끝까지 탐색하여 데이터를 찾음 (TABLE FULL SCAN)&lt;/li&gt;
&lt;li&gt;INDEX : 인덱스를 처음부터 끝까지 탐색하여 데이터를 찾는 방식 (INDEX FULL SCAN)&lt;/li&gt;
&lt;li&gt;RANGE : 특정 범위 내에서 인덱스를 사용하여 원하는 데이터를 추출, 데이터가 방대하지 않다면 준수함. (INDEX RANGE SCAN)&lt;/li&gt;
&lt;li&gt;REF : 조인 할 때 Primary Key 혹은 Unique Key 가 아닌 Key로 매칭 한 경우&lt;/li&gt;
&lt;li&gt;EQ_REF : 조인 할 때 Primary Key로 매칭&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Database</category>
      <category>db</category>
      <category>Oracle</category>
      <category>query</category>
      <category>select</category>
      <category>개선</category>
      <category>디비</category>
      <category>성능</category>
      <category>오라클</category>
      <category>조회</category>
      <category>쿼리</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/175</guid>
      <comments>https://dev-log-island.tistory.com/175#entry175comment</comments>
      <pubDate>Wed, 12 Apr 2023 10:59:58 +0900</pubDate>
    </item>
    <item>
      <title>[DS] Stack 스택</title>
      <link>https://dev-log-island.tistory.com/174</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이론 적인 것은 잘 정리된 글이 많기 때문에 생략.&lt;br /&gt;java로 int 형 stack과 Object형 stack을 구현한 코드.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;int 형을 저장하는 스택&lt;/h2&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;public class IntStack {
    // 스택용 배열
    private int[] stk;
    // 스택 용량
    private int capacity;
    // 스택 포인터
    private int ptr;

    // 실행 시 예외 : 스택이 비어있는 경우
    public class EmptyIntStackException extends RuntimeException {
        public EmptyIntStackException(){}
    }

    // 실행 시 예외 : 스택이 가득 찬 경우
    public class OverflowIntStackException extends RuntimeException {
        public OverflowIntStackException(){}
    }

    // 생성자
    public IntStack(int maxLen) {
        ptr = 0;
        capacity = maxLen;
        try {
            // 스택 본채용 배열 생성
            stk = new int[capacity];
        } catch (OutOfMemoryError e) {
            // 생성할 수 없음
            capacity = 0;
        }
    }

    // 스택에 X를 푸시
    public int push(int x) throws OverflowIntStackException {
        if (ptr &amp;gt;= capacity)
            // 스택이 가득 찬 경우
            throw new OverflowIntStackException();

        return stk[ptr++] = x;
    }

    // 스택에서 데이터를 팝 (꼭대기에 있는 데이터를 꺼냄)
    public int pop() throws EmptyIntStackException {
        if (ptr &amp;lt;= 0)
            // 스택이 비어 있음
            throw new EmptyIntStackException();

        return stk[--ptr];
    }

    // 스택에서 데이트를 피크 (꼭대기에 있는 데이터 조회)
    public int peek() throws EmptyIntStackException {
        if (ptr &amp;lt;= 0)
            // 스택이 비어 있음
            throw new EmptyIntStackException();

        return stk[ptr - 1];
    }

    // 스택을 비움
    public void clear() {
        // 모든 작업이 ptr 값으로 이루어 지므로 배열의 요소를 변경할 필요가 없음.
        ptr = 0;
    }

    // 스택에서 X 찾아 인덱스 반환, 없다면 -1 반환
    public int indexOf(int x) {
        // 뒤(꼭대기)에서 부터 선형 탐색
        for (int i = ptr - 1; i &amp;gt;= 0; i--) {
            if (stk[i] == x)
                // 검색 성공
                return i;
        }
        // 검색 실패
        return -1;
    }

    // 스택의 용량 반환
    public int getCapacity() {
        return this.capacity;
    }

    // 스택에 쌓여있는 데이터 개수 반환
    public int size() {
        return ptr;
    }

    // 스택이 비어있는지 확인
    public boolean isEmpty() {
        return ptr &amp;lt;= 0;
    }

    // 스택이 가득 찼는지 확인
    public boolean isFull() {
        return ptr &amp;gt;= capacity;
    }

    public void dump() {
        if (ptr &amp;lt;= 0)
            System.out.println(&quot;EMPTY STACK&quot;);
        else {
            for (int i = 0; i &amp;lt; ptr; i++)
                System.out.print(stk[i] + &quot; &quot;);

            System.out.println(&quot;&quot;);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Object 형을 저장하는 스택&lt;/h2&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;// 임의의 객체형을 쌓을 수 있는 테네릭 스택 클래서 Stack&amp;lt;E&amp;gt; 작성
public class GenericStack&amp;lt;E&amp;gt; {
    // 스택용 배열
    private E[] stk;
    // 스택 용량
    private int capacity;
    // 스택 포인터
    private int ptr;

    // 실행 시 예외 : 스택이 비어있는 경우
    public static class EmptyGStackException extends RuntimeException {
        public EmptyGStackException(){}
    }

    // 실행 시 예외 : 스택이 가득 찬 경우
    public static class OverflowGStackException extends RuntimeException {
        public OverflowGStackException(){}
    }

    // 생성자
    public GenericStack(int maxLen) {
        ptr = 0;
        capacity = maxLen;
        try {
            // 스택 본채용 배열 생성
            stk = (E[])new Object[capacity];
        } catch (OutOfMemoryError e) {
            // 생성할 수 없음
            capacity = 0;
        }
    }

    // 스택에 X를 푸시
    public E push(E x) throws OverflowGStackException {
        if (ptr &amp;gt;= capacity)
            // 스택이 가득 찬 경우
            throw new OverflowGStackException();

        return stk[ptr++] = x;
    }

    // 스택에서 데이터를 팝 (꼭대기에 있는 데이터를 꺼냄)
    public E pop() throws EmptyGStackException {
        if (ptr &amp;lt;= 0)
            // 스택이 비어 있음
            throw new EmptyGStackException();

        return stk[--ptr];
    }

    // 스택에서 데이트를 피크 (꼭대기에 있는 데이터 조회)
    public E peek() throws EmptyGStackException {
        if (ptr &amp;lt;= 0)
            // 스택이 비어 있음
            throw new EmptyGStackException();

        return stk[ptr - 1];
    }

    // 스택을 비움
    public void clear() {
        // 모든 작업이 ptr 값으로 이루어 지므로 배열의 요소를 변경할 필요가 없음.
        ptr = 0;
    }

    // 스택에서 X 찾아 인덱스 반환, 없다면 -1 반환
    public int indexOf(Object x) {
        // 뒤(꼭대기)에서 부터 선형 탐색
        for (int i = ptr - 1; i &amp;gt;= 0; i--) {
            if (stk[i].equals(x))
                // 검색 성공
                return i;
        }
        // 검색 실패
        return -1;
    }

    // 스택의 용량 반환
    public int getCapacity() {
        return this.capacity;
    }

    // 스택에 쌓여있는 데이터 개수 반환
    public int size() {
        return ptr;
    }

    // 스택이 비어있는지 확인
    public boolean isEmpty() {
        return ptr &amp;lt;= 0;
    }

    // 스택이 가득 찼는지 확인
    public boolean isFull() {
        return ptr &amp;gt;= capacity;
    }

    public void dump() {
        if (ptr &amp;lt;= 0)
            System.out.println(&quot;EMPTY STACK&quot;);
        else {
            for (int i = 0; i &amp;lt; ptr; i++)
                System.out.print(stk[i] + &quot; &quot;);

            System.out.println(&quot;&quot;);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Computer Science/DataStructure</category>
      <category>Data Structure</category>
      <category>DS</category>
      <category>Java</category>
      <category>stack</category>
      <category>구현</category>
      <category>스택</category>
      <category>자료구조</category>
      <category>자바</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/174</guid>
      <comments>https://dev-log-island.tistory.com/174#entry174comment</comments>
      <pubDate>Sun, 26 Mar 2023 15:25:09 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 클린 코드</title>
      <link>https://dev-log-island.tistory.com/173</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&quot;나쁜 코드는 깨진 유리창처럼 계속 나쁜 코드가 만들어지도록 한다.&quot;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&quot;나쁜 코드는 기술 부채를 만들어 수정을 더 어렵게 하며 결국 조직의 생산성을 저하시킨다.&quot;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책을 추천 받은 것은 개발 쪽으로 전향한 지 얼마 안되서였던 것 같다. 인터넷에서 추천받았었는지, 아니면 국비지원 학원이 끝나갈 무렵이었는지 정확히는 기억나지 않는다. 그리고 최근에 내가 잘 따르던 선배의 강력한 추천이 한번 더 있었다.&lt;br /&gt;어쨌든 토비의 스프링과 함께 한 번은 봐야지 하던 책이었고, 이번에 드디어 완독을 했다. 아니 1독을 했다고 표현해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽코 좋코가 이 책 보다 조금 더 쉽게 읽힌달까. 나중에 후배들을 맞이하고, 혹은 팀을 이끌어갈 때쯤 2독 3독을 해야 할 책이라고 생각된다. 충분히 많은 도움이 된 좋은 책이지만, 내 경험이 짧아 이해하기 어려운 부분도 많고 확실히 내 수준보다는 더 높았다. 아마도 TDD 라던지, 객체지향 패러다임을 잘 따르는 코드를 본 적이 없어서일까?&lt;br /&gt;아무튼 프로세스를 만들 때 가져야 할 마음 가짐에 대해서 많이 생각하게 되었다. 의미를 가진 코드, 코드의 문맥, 추상화 수준과 왜 그렇게 해야 하는지의 이유도 잘 설명되었다. 코드가 마치 잘 쓰여진 소설처럼 읽힐 수 있도록 작성한다는 마음가짐으로 코딩을 하게 되었다. 단순하게 동작이 목적이 아닌 쉽게 읽힐 수 있도록 고민을 하다 보니 더 직관적이고 객체지향 구조로 코드를 짤 수 있었던 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선배가 이 책을 추천할 때, 레거시 코드에 대해 정말 화를 내고 열변을 토했던 것으로 기억한다. 그리고 이 책을 읽으면서 그가 이 책을 추천하면서 왜 그렇게 화를 냈는지 납득했다. 저자는 나쁜 코드가 나쁜 이유에 대해서 여러 예를 들고 그중 기억에 남는 것은 위의 두 문장이다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나 역시도 나쁜 코드를 혐오한다. 레거시 코드를 유지보수하면서 소스코드의 히스토리를 보면 왜 이런 코드가 생겼는지 납득할 수 있지만, 그렇다면 처음부터 더 좋은 구조로 작성될 순 없었는가 하는 의문이 들곤 한다. 솔직하게 말해서 나쁜 코드를 보면 화도 나고 작성자를 기둥에 묶어두고 싶다는 생각도 든다.&lt;br /&gt;나를 포함한 많은 개발자들이 이 책을 읽고 객체지향 패러다임과 클린코드 원칙들을 따르는, 개발을 잘하는, 후배들에게 좋은 코드를 남기는 시니어가 될 수 있도록 갈고닦기를...  &lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>개발</category>
      <category>개발자</category>
      <category>공부</category>
      <category>독후감</category>
      <category>읽기</category>
      <category>책</category>
      <category>추천</category>
      <category>코드</category>
      <category>클린</category>
      <category>필독</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/173</guid>
      <comments>https://dev-log-island.tistory.com/173#entry173comment</comments>
      <pubDate>Sat, 25 Mar 2023 16:06:49 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 읽기 좋은 코드가 좋은 코드다</title>
      <link>https://dev-log-island.tistory.com/172</link>
      <description>&lt;h1&gt;읽코좋코&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 전공 서적들이 빠르게 읽히지 않는데, 다른 전공서적에 비해 쉽게 읽히는 책이며 많은 공감을 하게 되었다. 제목과 내용은 동일하며 주제를 반복 강조하고 있다. 이를 위해 변수명, 함수명, 코드 컨벤션 그리고 리팩토링까지 설명하고 있다.&lt;br /&gt;코드는 이해하기 쉬워야 한다, 다시 말해 코드를 읽는데 드는 비용을 줄여야 한다는 말이다. 코드 파악하는데 드는 비용이 작다는 말은 설계가 명확하고 간결하다는 의미를 내포한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책을 읽고 실제 코드로 적용할 생각을 하면 머리가 아프지만 읽는 중간 중간 이전에 보았던 코드들이 떠올랐다. 이전에 작성 했던 &lt;a title=&quot;&amp;quot;성능과 가독성을 높이는 분기처리 방법&amp;quot;&quot; href=&quot;https://jeaha.dev/80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;'성능과 가독성을 높이는 분기처리 방법'&lt;/a&gt;을 쓸 때 보다 시야가 더 넓어졌다. &quot;왜?&quot;에 대한 부분이 조금 모호했었는데, 그 부분을 채워주는 내용이였다. 그리고 내가 봐온 레거시 프로젝트들의 코드를 작성했던 개발자들에게 이 책을 던져주고 싶었다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드는 이해하기 쉬워야 한다&lt;br /&gt;인상 깊었던 내용은 6개월 뒤의 나 자신 또한 쉽게 이해되도록 코드를 작성하라는 내용이였다. 나 역시도 나름의 설명과 주석을 잘 붙여서 만들었다고 생각했지만 1년 뒤 해당 코드를 개선 하면서 다시 분석해 보는 헛수고를 했던 경험이 있었다. 짧은 코드가 더 좋은 코드가 아닌 읽는 순간 바로 이해되는 코드가 좋은 코드라는 뜻이다.&lt;/li&gt;
&lt;li&gt;이름에 정보 담기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구체적인 단어 사용하기&lt;/li&gt;
&lt;li&gt;이름 길이(짧은 범위에 잠깐 쓰이면 짧은 변수명, 사용 범위가 넓다면 긴 변수명, 약어 사용 지양하기 등)&lt;/li&gt;
&lt;li&gt;포맷팅으로 의미 전달하기(상수는 대문자, 클래스명은 카멜케이스 등)가 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;오해할 수 없는 이름들
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경계를 포함하는 범위 : first, last&lt;/li&gt;
&lt;li&gt;경계를 포함/배제하는 범위 : begin, end 사용&lt;/li&gt;
&lt;li&gt;불린 : is, has, can, should 사용&lt;/li&gt;
&lt;li&gt;get 남발하지 않기&lt;/li&gt;
&lt;li&gt;여러 개의 이름을 후보로 놓고 고민하기&lt;/li&gt;
&lt;li&gt;'다른 사람들이 다른 의미로 해석할 여지가 있는가?'가 핵심이였다. 한 번쯤 더 생각해 보면 더 좋은 변수명을 만들 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;미학
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문서 작업을 하더라도 한눈에 보기 쉽게 쓰인 글이 잘 읽히듯 코드도 마찬가지다.&lt;/li&gt;
&lt;li&gt;좌우로 길게 늘어진 코드는 줄 바꿈을 하고 다른 코드들도 똑같이 맞추기&lt;/li&gt;
&lt;li&gt;헬퍼 메소드를 이용하여 지저분한 코드 깔끔하게 하기&lt;/li&gt;
&lt;li&gt;코드의 위아래 열을 맞추어 읽기 쉽게 하기&lt;/li&gt;
&lt;li&gt;코드의 순서를 '가장 중요한 것'에서 '가장 덜 중요한 것' 까지 순서대로 나열하기&lt;/li&gt;
&lt;li&gt;코드를 문단으로 만들기 (핸들러, DB 사용 등 문맥이 바뀌면 한 행을 띄우는 등 글을 쓸때 문단을 나누는 것과 동일)&lt;/li&gt;
&lt;li&gt;개인의 코드 스타일 VS 전체 코드의 일관성 = &lt;b&gt;일관성이 올바른 스타일보다 더 중요&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;주석에 담아야 하는 대상
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;불필요한 설명 배제&lt;/li&gt;
&lt;li&gt;나쁜 이름에 대한 변명이 아니라 좋은 이름으로 바꿀 것&lt;/li&gt;
&lt;li&gt;작업중 생각한 통찰 등을 주석에 기록
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex: 하위클래스로 정리해야 할 것 같다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;상수의 의미를 설명할 것&lt;/li&gt;
&lt;li&gt;다른 개발자가 실수할 수 있는 부분을 예상해서 주석을 달라
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex : 1분 후 타임아웃 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2, 3중 반복/조건문이 달린 함수는 무엇을 위한 것인지 요약 주석을 단다&lt;/li&gt;
&lt;li&gt;주석을 다는 것에 대한 두려움을 버려라&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;명확하고 간결한 주석 달기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;간단한 입출력 예시 사용&lt;/li&gt;
&lt;li&gt;코드의 수행 동작이 아니라 &lt;b&gt;코드의 의도를 적어라&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;파라미터에도 주석을 넣어라&lt;/li&gt;
&lt;li&gt;축약된 단어를 사용하라
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex : ~에서 불필요한 빈칸을 제거한다 -&amp;gt; 공백 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;읽기 쉽게 흐름 제어 만들기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건문에서 유동적인 값은 왼쪽, 상대적으로 고정적인 값은 오른쪽에 쓰라&lt;/li&gt;
&lt;li&gt;if/else 간단한 것을 먼저 처리하라&lt;/li&gt;
&lt;li&gt;삼항 연산자의 사용은 간단하게 쓸 상황이 아니라면 피하라&lt;/li&gt;
&lt;li&gt;중첩을 피하기 위해 함수를 중간에서 반환하라&lt;/li&gt;
&lt;li&gt;2중 if 문은 나누어서 중간에 반환하라&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;거대한 표현 잘게 쪼개기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요약 변수 사용, 조건식의 반복되는 중요 비교 값을 상수로 만들기&lt;/li&gt;
&lt;li&gt;드모르간의 법칙 사용&lt;/li&gt;
&lt;li&gt;short circuit 사용을 오용하지 말 것
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;영리하게 작성된 코드가 혼란을 초래한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;복잡한 논리를 간단하게 표현하기&lt;/li&gt;
&lt;li&gt;거대한 구문은 문맥에 따라 나누기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;변수와 가독성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;불필요한 임시 변수, 중간 결과 저장 변수, 흐름 변수(boolean) 제거하기&lt;/li&gt;
&lt;li&gt;변수의 범위 좁히기&lt;/li&gt;
&lt;li&gt;클래스를 작은 단위로 나누기&lt;/li&gt;
&lt;li&gt;전역변수 사용 피하기&lt;/li&gt;
&lt;li&gt;변수에 다른 값을 여러번 할당하는 것 피하기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;상관 없는 하위 문제 추출하기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비즈니스 로직과 관계 없는 문자열 빈칸 제거, url 형식, 주소 형식등을 다루는 메소드는 분리하기&lt;/li&gt;
&lt;li&gt;재사용성을 위해 일반적인 목적을 가진 코드를 많이 만들기&lt;/li&gt;
&lt;li&gt;과유불급, 지나치게 나누지는 말기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;한 번에 하나씩
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작성된 코드가 읽기 어렵다면, 수행하는 작업을 나열하라&lt;/li&gt;
&lt;li&gt;나열된 작업중 분리될 수 있다면 별도의 함수 또는 클래스로 나눠라&lt;/li&gt;
&lt;li&gt;파편화를 최소화 할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;생각을 코드로 만들기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리를 명확하게 설명하기&lt;/li&gt;
&lt;li&gt;해결책을 말로 묘사하기&lt;/li&gt;
&lt;li&gt;언어에서 제공하는 라이브러리를 많이 사용해 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;코드 분량 줄이기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요가 없는 기능을 구현하려고 애쓰지 말것&lt;/li&gt;
&lt;li&gt;코드 베이스를 작게 유지할 것&lt;/li&gt;
&lt;li&gt;요구사항에 질문을 던져 요구사항을 잘게 나누어 분석하기.&lt;/li&gt;
&lt;li&gt;표준라이브러리와 친해지기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;테스트와 가독성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트 코드는 특히 더 읽기 쉬워야 한다&lt;/li&gt;
&lt;li&gt;긴 테스트 내용은 다른 메소드로 만들기&lt;/li&gt;
&lt;li&gt;읽기 편한 에러 메세지 출력 폼 만들기&lt;/li&gt;
&lt;li&gt;좋은 테스트 입력 값 선택하기&lt;/li&gt;
&lt;li&gt;지금 작성하는 코드의 테스트 코드를 나중에 작성한다는 사실을 염두해 둘것&lt;/li&gt;
&lt;li&gt;지나친 테스트는 지양&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;분/시간 카운터 설계 및 구현
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실습 예제&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>개발</category>
      <category>개발자</category>
      <category>공부</category>
      <category>독후감</category>
      <category>읽기</category>
      <category>읽코좋코</category>
      <category>좋은 코드</category>
      <category>책</category>
      <category>추천</category>
      <category>후기</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/172</guid>
      <comments>https://dev-log-island.tistory.com/172#entry172comment</comments>
      <pubDate>Mon, 6 Mar 2023 22:36:20 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 토비의 스프링 3.1 Vol.1</title>
      <link>https://dev-log-island.tistory.com/171</link>
      <description>&lt;h1&gt;토비의 스프링 3.1 VOL.1&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 사용자로서 항상 읽어야봐야 한다라는 소리에 두권을 샀지만, 엄청 어렵다는 소문에 읽을 엄두를 못 내던 책이다. 한 권에 800 페이지가 넘는 굉장한 분량에 두번의 정독 시도를 헛탕쳤었다. [유튜브] &quot;개발바닥&quot; 채널에서 저자 이일민님의 인터뷰와, 그 분이 이제는 스프링 부트 인강을 내시면서 이 책을 다시 시도하였고. 이번에는 1독을 끝냈다.&lt;br /&gt;이제 4년차에 들어서면서 읽어보니 '어느 정도 개발을 했고, &lt;b&gt;좋은 구조와 효율을 고민&lt;/b&gt;해본 사람이 봐야 깊은 뜻을 더 잘 이해할 수 있겠구나' 라고 느꼈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 &lt;b&gt;객체지향적 설계&lt;/b&gt;, &lt;b&gt;리팩토링&lt;/b&gt;, &lt;b&gt;테스트주도개발&lt;/b&gt;의 중요성에 대해 꾸준히 강조하고 있다. 단순하게 스프링 프레임워크의 기능 / 개념에 대한 설명도 깊게 나와있지만, 이 책의 요점은 스프링이 왜 이렇게 발전했고, 어떤 패러다임을 녹여서 만든건지 엿볼 수 있도록 도와주는 책이다. 따라서 &lt;b&gt;개발 철학에 더 중점을 두고 읽어야 하는 책&lt;/b&gt;이라고 생각 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마틴 파울러와 켄트 백이 강조하던 내용이 녹아 있으며, 아래와 같은 조언을 책 전반에 걸쳐 꾸준히 강조하고 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'고정된 작업 흐름을 갖고 있으면서 여기저기서 자주 반복되는 코드가 있다면, 중복되는 코드를 분리할 방법을 생각해보는 습관을 기르자.'&lt;/li&gt;
&lt;li&gt;'비슷한 기능이 새로 필요할 때마다 앞에서 만든 코드를 복사해서 사용할 것인가? 물론 아니어야 한다. 한두 번까지는 어떻게 넘어간다고 해도, 세번 이상 반복된다면 본격적으로 코드를 개선할 시점이라고 생각해야 한다.'&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;인상 깊었던 문장&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인상 깊었던 문장들은 다음과 같다. 다 읽어보면 떠오르는 것이 있다. 그렇다, 대부분의 레거시 프로젝트의 소스들은 아래에서 하지 말라는 대로 개발되어 있다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;  계층형 아키텍쳐
  관심, 책임, 성격, 변하는 이유와 방식이 서로 다른 것들을 분리함으로써 분리된 각 요소의 응집도는 높여주고 서로 결합도를 낮춰줬을 때의 장점과 유익이 무엇인지 살펴봤다. 성격이 다른 모듈이 강하게 결합되어 한데 모여 있으면 한 가지 이유로 변경이 일어날 때 그와 상관이 없는 요소도 함께 영향을 받게 된다. 따라서 불필요한 부분까지 변경이 일어나고 그로 인해 작업은 더뎌지고 오류가 발생할 가능성이 높아진다. 어느 부분을 수정해야할지를 파악하기도 쉽지 않다.
  따라서 인터페이스와 같은 유연한 경계를 만들어 두고 분리하거나 모아주는 작업이 필요하다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;또, 흔히 저지르는 실수 중의 하나는 프레젠테이션 계층의 오브젝트를 그대로 서비스 계층으로 전달하는 것이다.
서블릿의 HttpServletRequest나 HttpServletResponse, HttpSession 같은 타입을 서비스 계층 인터페이스 메소드의 파라미터 타입으로 사용하면 안 된다.
계층의 경계를 넘어갈 때는 반드시 특정 계층에 종속되니 않는 오브젝트 형태로 변환해줘야 한다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;스프링을 사용하면 이런 데이터 중심의 코드를 만들 수 있을 뿐만 아니라, 실제로 매우 흔하게 발견된다.
데이터와 업무 트랜잭션 중심의 개발에 익숙한 사람들이 많고 이런 아키텍쳐를 의도적으로 선호하는 개발자도 많기 때문이다.
개발자들끼리 서로 간선없이 자신에게 할당된 기능을 독립적으로 만드는 데도 편하다.
최소한의 공통 모듈 정도만 제공되는 것을 사용하고, 그 외의 기능은 단위 업무 또는 웹 화면 단위로 만들어 진다.

하지만 이런 개발 방식은 변화에 매우 취약하다.
객체지향의 장점이 별로 활용되지 못하는데다 각 계층의 코드가 긴밀하게 연결되어 있기 때문이다.
중복을 제거하기도 쉽지 않다.
업무 트랜잭션에 따라 필드 하나가 달라도 거의 비슷한 DAO 메소드를 새로 만들기도 한다.
또한 로직을 DB와 SQL에 많이 담으면 담을수록 점점 확장성이 떨어진다.
DB는 확장에 한계가 있을 뿐 아니라 확장한다 하더라도 매우 큰 비용이 든다.
잘 작성된 복잡한 SQL 하나가 수백 라인의 자바 코드가 필요한 비지니스 로직을 한번에 처리할 수도 있다.
하지만 과연 바람직한 것일까?
이런 복잡한 sql을 누구나 쉽게 이해하고 필요에 따라 유연하게 변경할 수 있을까?
또, 복잡한 sql을 처리하기 위해 제한된 자원인 DB에 큰 부담을 주는 게 과연 바람직한 일인지 생각해볼 필요가 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;데이터 중심 아키텍쳐의 특징은 계층 사이의 결합도가 높은 편이고 응집도는 떨어진다는 접이다.
화면을 중심으로 하는 업무 트랜잭션 단위로 코드가 모이기 때문에 처음엔 개발하기 편하지만 중복이 많아지기 쉽고 장기적으로 코드를 관리하고 발전시키기 힘들다는 단점이 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;스프링은 그 개발철학과 목표를 분명히 이해하고 사용해야 한다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;자바의 근본인 OOP 원리에 충실하게 개발할 수 있으며,
환경이나 규약에 의존적이지 않은 POJO를 이용한 애플리케이션 개발은
엔터프라이즈 시스템 개발의 복잡함이 주는 많은 문제를 해결할 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;POJO 방식의 개발을 돕기 위해 스프링은 IoC/DI, AOP, PSA와 같은 기능 기술을 프레임워크와 컨테이너라는 방식을 통해 제공한다.&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>Java</category>
      <category>spring</category>
      <category>개발</category>
      <category>개발자</category>
      <category>공부</category>
      <category>독후감</category>
      <category>스프링</category>
      <category>책</category>
      <category>토비의</category>
      <category>후기</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/171</guid>
      <comments>https://dev-log-island.tistory.com/171#entry171comment</comments>
      <pubDate>Mon, 6 Mar 2023 13:52:00 +0900</pubDate>
    </item>
    <item>
      <title>레거시 프로젝트 유지보수시 개선 포인트 - 1 -</title>
      <link>https://dev-log-island.tistory.com/170</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Debug Mode 활용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디버그 모드로 애플리케이션을 구동시키면 아래 스크린샷과 같이 변수, 객체 등의 값을 알 수 있다. log를 찍거나 system print 등을 사용하지 앖아도 실시간으로 값을 알 수 있고 브레이크 포인트를 사용해서 트래킹 하는데 수월하니 앞으로는 IDE의 디버그 모드를 적극 활용하자. &lt;code&gt;intellij&lt;/code&gt; 나 &lt;code&gt;eclipse&lt;/code&gt; 모두 지원한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;intellij-debug mode-20220603-053847.png&quot; data-origin-width=&quot;2352&quot; data-origin-height=&quot;2872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mjBzI/btr1Vexe8me/n22aQnHkG4sK5MVtmLMUSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mjBzI/btr1Vexe8me/n22aQnHkG4sK5MVtmLMUSK/img.png&quot; data-alt=&quot;IntelliJ의 디버그 모드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mjBzI/btr1Vexe8me/n22aQnHkG4sK5MVtmLMUSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmjBzI%2Fbtr1Vexe8me%2Fn22aQnHkG4sK5MVtmLMUSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2352&quot; height=&quot;2872&quot; data-filename=&quot;intellij-debug mode-20220603-053847.png&quot; data-origin-width=&quot;2352&quot; data-origin-height=&quot;2872&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;IntelliJ의 디버그 모드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Comment 제거&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 기준을 참고해서 과감하게 기존 코멘트를 제거한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위 디버그 모드 활용과 더불어 단순 값 확인용 코멘트는 제거한다.&lt;/li&gt;
&lt;li&gt;의미없는 &amp;lsquo;//////////////&amp;rsquo; 와 같은 구분선 종류의 코멘트는 제거한다.&lt;/li&gt;
&lt;li&gt;Github을 통해 트래킹, 복원이 쉽기 때문에 불필요한 주석은 과감하게 제거한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 선언, 초기화, 디폴트에 신경쓰자&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 품질은 디테일에서 나온다. 그리고 디테일은 기본기 없이 챙기기 힘들다. 아래 스크린샷을 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMek6O/btr1XyWfByW/Y8tlr8QciDDN9bkGkziK9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMek6O/btr1XyWfByW/Y8tlr8QciDDN9bkGkziK9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMek6O/btr1XyWfByW/Y8tlr8QciDDN9bkGkziK9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMek6O%2Fbtr1XyWfByW%2FY8tlr8QciDDN9bkGkziK9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;858&quot; height=&quot;192&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선언부 이후에 로직 중에 항상 해당 변수에 값을 할당한다면 굳이 선언하면서 초기화 할 필요가 없다.&lt;/li&gt;
&lt;li&gt;의미없는 값으로 대충 초기화 하는 습관은 멀리하자. 초기화 하는 값은 일반적으로 디폴트 값이어야 하고 이 디폴트 값이 뭔지 정확히 알고서 초기화 해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 가독성을 높이자&lt;/h2&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;// Before
// 결제상점아이디에 따른 분기
if (TRD_NO.indexOf(oldIdPart) &amp;gt;= 0) {
    sMallID = oldMid;
}

// After
if (TRD_NO.contains(oldIdPart)) {
    sMallID = oldMid;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 파라미터로 넘긴 string의 존재 여부를 검사한 뒤 그에 따른 처리를 하기위한 것으로 보인다. 그래서 자바의 String에 있는indexOf() 메소드를 사용해 &amp;gt;= 0 조건으로 판별한다. 이 코드는 기능상 아무 이상 없이 작성자의 의도대로 잘 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 이야기한 것처럼 이런 코드에서 보이는 디테일을 잡으면 가독성과 품질이 상승한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;indexOf 와 contains&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바에는 각 객체를 위한 유틸 메소드들이 많다. 그 중 contains라는 메소드로 indexOf를 대체할 수 있다. contains의 내용은 아래 스크린샷처럼 indexOf를 래핑한 메소드다. 따라서 성능이나 기능에선 차이가 없다고 봐도 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beKMpz/btr1YKhOB7z/RdHY7UOXWBXQkfj6ujhGqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beKMpz/btr1YKhOB7z/RdHY7UOXWBXQkfj6ujhGqk/img.png&quot; data-alt=&quot;JDK 1.5에 생긴 contains&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beKMpz/btr1YKhOB7z/RdHY7UOXWBXQkfj6ujhGqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeKMpz%2Fbtr1YKhOB7z%2FRdHY7UOXWBXQkfj6ujhGqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1124&quot; height=&quot;370&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;JDK 1.5에 생긴 contains&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zRgSl/btr1VdLQN6l/isHsts0VFuKkp7A9ySa8DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zRgSl/btr1VdLQN6l/isHsts0VFuKkp7A9ySa8DK/img.png&quot; data-alt=&quot;indexOf&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zRgSl/btr1VdLQN6l/isHsts0VFuKkp7A9ySa8DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzRgSl%2Fbtr1VdLQN6l%2FisHsts0VFuKkp7A9ySa8DK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1312&quot; height=&quot;514&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;indexOf&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 왜 indexOf를 contains로 대체하려고 하는거고 언제 써야 할까?&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;indexOf와 contains는 용도가 다르다.&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;indexOf는 스트링이 시작되는 index를 int값으로 반환하고 contains는 스트링의 포함 여부를 판단해 boolean으로 반환한다. 따라서 특정 비즈니스 로직 혹은 알고리즘을 구현하기 위한 경우가 아니면 일반적인 경우에 contains의 목적으로 더 많이 쓰게 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Readability&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 indexOf를 보고 &amp;gt;= 0 조건을 보면 뭘 하려는지 알 수 있다. 하지만 contains라는 단어가 그 모든걸 포함하기 때문에 훨씬 더 직관적이다. contains쓰면 indexOf라는 메소드는 잘 썼는지, 뒤에 &amp;gt;=0 인지 &amp;gt; 0 인지 &amp;gt; -1 인지 잘못쓰진 않았는지 이런 생각 할 필요도 없다. 가독성을 정의할 때 &lt;code&gt;그저 문자가 잘 읽히는 정도를 넘어서 (특히 메소드는) 이름에 맞는 목적과 기능을 신뢰할 수 있어서 불필요한 생각도 줄여주는 수준&lt;/code&gt;까지 갈 수 있도록 신경써야 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. Naming - 변수명은 중요하다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 레거시 코드의 문제점&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt; 프론트 HTML tag'name을 그대로 백엔드 로직에 사용함&lt;/li&gt;
&lt;li&gt;마크업과 프론트 사정에 따른 hChk, pChk 와 같은 변수명 백엔드에서 실제 용도를 구분하기 어려움&lt;/li&gt;
&lt;li&gt;변수명과 주석이 일치하지 않거나 주석의 뜻을 담아내기에 부족한 변수명이 많음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 주문취소에서 볼 수 있는 케이스는 아래와 같다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;    // bad case
    String[] hChk = request.getParameterValues(&quot;hChk&quot;);//선택여부

    // good case
    String[] cancelSelectYn = request.getParameterValues(&quot;hChk&quot;); // 취소선택여부&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 변수가 가리키고 있는 건 주문 취소 시 상품 별 체크박스 값이다.(아래 스크린샷) 따라서 hChk 라는 이름을 그대로 백엔드 로직에도 차용한다면 코드 전체를 트래킹 해야 하는 수고가 더해진다. 그래서 이름을 취소선택여부, 취소신청여부 등으로 하고 변수명도 이에 맞춰 수정하는 것이 좋다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;cancel-yn-20220607-000906.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;942&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm9773/btr1WyCeDph/N1utBeAiXCG1sjQ9HFakT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm9773/btr1WyCeDph/N1utBeAiXCG1sjQ9HFakT0/img.png&quot; data-alt=&quot;주문 취소 상품 선택화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm9773/btr1WyCeDph/N1utBeAiXCG1sjQ9HFakT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm9773%2Fbtr1WyCeDph%2FN1utBeAiXCG1sjQ9HFakT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;942&quot; data-filename=&quot;cancel-yn-20220607-000906.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;942&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;주문 취소 상품 선택화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 실제로 레거시 시스템은 볼륨도 크고 복잡한 상호관계를 이미 가지고 있는 상태기 때문에 변수명만 바꾸기에 위험하다. 래거시 프로젝트 소스코드도 마찬가지이며 따라서 변수명을 바꾸려 할 땐 아래 항목을 점검해서 진행한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JSP와 JAVA에서 동일하게 사용하고 있는 변수가 response나 query에서 반드시 동일하도록 짜여 있는지&lt;/li&gt;
&lt;li&gt;주석과 변수명이 다르다면 둘 중 어느 것이 맞는지, 둘 다 틀린지&lt;/li&gt;
&lt;li&gt;변수명을 바꿨을 때 영향 범위가 백엔드 비즈니스 로직에만 해당되는지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 조회와 요청, 트랜젝션&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;1509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dU05qV/btr134GNLsr/zHnzQbmoDMBpUofKnAJJj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dU05qV/btr134GNLsr/zHnzQbmoDMBpUofKnAJJj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dU05qV/btr134GNLsr/zHnzQbmoDMBpUofKnAJJj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdU05qV%2Fbtr134GNLsr%2FzHnzQbmoDMBpUofKnAJJj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1112&quot; height=&quot;1509&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;1509&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자의 화면에 보이는 내용은 화면을 그리는 시점에 유효한 정보이다(화면을 실시간으로 갱신하지 않는한)&lt;/li&gt;
&lt;li&gt;현재 프로세스는 &amp;lt;step 2&amp;gt; 와 같고 주문 취소 요청 시 JSP에 뿌려진 주문/결제 값으로 환불요청을 시작한다&lt;/li&gt;
&lt;li&gt;때문에 주문 조회 시점과 환불 요청 시점 차이가 있을 때 주문 상태 차이가 발생할 수 있고 중복 발생 가능성 또한 있는 구조다.&lt;/li&gt;
&lt;li&gt;개선 프로세스는 &amp;lt;step 3&amp;gt; 와 같이 사용자 요청을 받고 현재 주문과 환불 진행상태 등을 DB에서 조회하는 ② 부터 완료된 주문/결제/환불 정보를 DB에 업데이트하는 ⑥ 까지를 하나의 트랜잭션으로 묶는다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 레거시 프로젝트 코드에는 화면에서 가져온 값들로 무언가 처리하는 로직이 많은데 전반적인 수정이 필요하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 3-tier Architecture&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 쿼리를 먼저 보자.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;// 이런 패턴
, X.BANK_CD                &amp;lt;!--은행코드--&amp;gt;                        
, CASE WHEN X.BANK_CD IS NOT NULL
  THEN DECODE(X.BANK_CD, '02', '산업', '03', '기업', '05', '외환', '06', '국민', '07', '수협', '11', '농협', '20', '우리', '23', 'SC제일', '27', '한국씨티', '31', '대구'
                  , '32', '부산', '34', '광주', '35', '제주', '37', '전북', '39', '경남', '45', '새마을금고', '48', '신협', '71', '우체국', '81', '하나', '88'
                  , '신한(계좌이체)', '26', '신한(가상계좌)','S0', '동양증권', 'S1', '미래에셋', 'S2', '신한금융투자', 'S3', '삼성증권', 'S6', '한국투자증권' , 'SG', '한화증권')
  ELSE '-'
  END    BANK_NM            &amp;lt;!--은행명--&amp;gt;

// 비슷한 패턴
, X.MEMO                &amp;lt;!--메모(가상)--&amp;gt;
, NVL(X.MEMO, 'X') SHW_MEMO                &amp;lt;!--화면용메모(가상)--&amp;gt;

// 비슷한 패턴
, X.RECP_PSN_TELNO            &amp;lt;!--수령인전화번호--&amp;gt;
, CASE WHEN  LENGTH(REPLACE(NVL(X.RECP_PSN_TELNO, 'X'), '-', '')) &amp;lt;![CDATA[ &amp;lt; ]]&amp;gt; 9
  THEN 'X'
  ELSE X.RECP_PSN_TELNO
  END   SHW_RECP_PSN_TELNO            &amp;lt;!--수령인전화번호--&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안좋은 케이스로 보이는 건..&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쿼리 안에서 데이터 가공을 한다는 것이다. 게다가 화면에 보여줄 목적인 것들이 꽤 있다.&lt;/li&gt;
&lt;li&gt;코드 관리나 관련 메소드가 애플리케이션에 있는게 아니라 쿼리에 들어가 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 레거시 프로젝트들은 JSP, Spring, Oracle 기반이지만 잘 구분된 계층 구조를 이루고 있지 않다. 해당 계층에서 해야 할 일들이 다른 계층으로 번져간다면 결국 문제가 생길때마다 화면~데이터 모든 영역의 코드를 살펴봐야만 어느 부분이 문제인지 찾아낼 수 있다. 그래서 앞으로 신규 개발하는 화면, 기능은 이러한 강한 결합을 피하고 우리 시스템과 기술이 지향하는 3티어 계층에 맞춰 프로그래밍을 하도록 한다. 추후 가이던스를 마련하고 공유하겠지만 먼저 간단하게 요약하면 아래와 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;화면 코드에(JSP)에 비즈니스 로직 넣지 말자&lt;/li&gt;
&lt;li&gt;쿼리에 비즈니스 로직, 하드코딩, 화면 표시용 글자 넣지 말자(특수한 경우 제외)&lt;/li&gt;
&lt;li&gt;컨트롤러에 비즈니스 로직 넣지 말자&lt;/li&gt;
&lt;li&gt;실제 필요한 것들만 파라미터로 전달하고 용도에 맞는 모델을 만들자&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 : 같이 일 했던 선배가 컨플루언스에 올린 글&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/뭐라할까</category>
      <category>개선</category>
      <category>기능개선</category>
      <category>디버그</category>
      <category>레거시</category>
      <category>스프링</category>
      <category>웹</category>
      <category>유지보수</category>
      <category>자바</category>
      <category>주석</category>
      <category>포인트</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/170</guid>
      <comments>https://dev-log-island.tistory.com/170#entry170comment</comments>
      <pubDate>Mon, 6 Mar 2023 13:09:02 +0900</pubDate>
    </item>
    <item>
      <title>[프랑코 폰타나]</title>
      <link>https://dev-log-island.tistory.com/167</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/BumVL3CuPss&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람이 많지 않아서 느긋하게 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'그림 같은 컬러 사진'으로 유명한 것으로 알고 있는데&lt;br /&gt;크롭한 필름 사진과 그 필름에서 느껴지는 질감이, 원근감이 사라진 평면적이고 기하학적인 이미지가 인상 깊었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;프레센쟈 아센쟈&quot;&lt;/b&gt;&lt;/p&gt;</description>
      <category>ETC/Daily Life</category>
      <category>사진</category>
      <category>사진전</category>
      <category>전시</category>
      <category>프랑코 폰타나</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/167</guid>
      <comments>https://dev-log-island.tistory.com/167#entry167comment</comments>
      <pubDate>Sun, 26 Feb 2023 22:29:59 +0900</pubDate>
    </item>
    <item>
      <title>[Window] 열려있는 포트  확인하기</title>
      <link>https://dev-log-island.tistory.com/166</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;netstat 확인하기&lt;/h2&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;    netstat -an&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Local Addrress 는 현재 내 PC의 IP와 Port, Foreing Address는 외부 사이트의 IP와 Port 다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 08.18.53.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmtXQU/btrZjK5uV8F/fw7PD79zkhVRYOQnXbkIO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmtXQU/btrZjK5uV8F/fw7PD79zkhVRYOQnXbkIO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmtXQU/btrZjK5uV8F/fw7PD79zkhVRYOQnXbkIO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmtXQU%2FbtrZjK5uV8F%2Ffw7PD79zkhVRYOQnXbkIO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;961&quot; height=&quot;368&quot; data-filename=&quot;스크린샷 2023-02-15 08.18.53.png&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이피 다음에 있는 : 으로 아이피주소와 포트번호가 구분이 된다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;netstat 으로 특정 포트 확인하기&lt;/h2&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;    netstat -an | findstr &quot;:80&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux의 grep 명령어는 windows에서는 findstr로 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-02-15 08.22.42.png&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chtgsB/btrZo8qv9IP/PXo6vhL24ztgCTEQMuz0i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chtgsB/btrZo8qv9IP/PXo6vhL24ztgCTEQMuz0i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chtgsB/btrZo8qv9IP/PXo6vhL24ztgCTEQMuz0i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchtgsB%2FbtrZo8qv9IP%2FPXo6vhL24ztgCTEQMuz0i0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;315&quot; data-filename=&quot;스크린샷 2023-02-15 08.22.42.png&quot; data-origin-width=&quot;470&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;그렇지만&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 이상 윈도우를 서버로 쓰는 일은 없었으면 좋겠다&lt;/p&gt;</description>
      <category>OS/Windows</category>
      <category>CHECK</category>
      <category>cmd</category>
      <category>port</category>
      <category>PowerShell</category>
      <category>Shell</category>
      <category>Windows</category>
      <category>열려있는</category>
      <category>특정</category>
      <category>포트</category>
      <category>확인</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/166</guid>
      <comments>https://dev-log-island.tistory.com/166#entry166comment</comments>
      <pubDate>Wed, 15 Feb 2023 08:24:30 +0900</pubDate>
    </item>
    <item>
      <title>[카시코이] 빛이 예쁜 화과자 카페</title>
      <link>https://dev-log-island.tistory.com/163</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000093.JPG&quot; data-origin-width=&quot;3402&quot; data-origin-height=&quot;5087&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCmLH/btrT4eqBauD/H98IGjRNWMZRaKHdYbiMH0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCmLH/btrT4eqBauD/H98IGjRNWMZRaKHdYbiMH0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCmLH/btrT4eqBauD/H98IGjRNWMZRaKHdYbiMH0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCmLH%2FbtrT4eqBauD%2FH98IGjRNWMZRaKHdYbiMH0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3402&quot; height=&quot;5087&quot; data-filename=&quot;R0000093.JPG&quot; data-origin-width=&quot;3402&quot; data-origin-height=&quot;5087&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000106.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wsNlj/btrT5bfB1Og/zRSEqGmUJLCJpKtHdPpMJK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wsNlj/btrT5bfB1Og/zRSEqGmUJLCJpKtHdPpMJK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wsNlj/btrT5bfB1Og/zRSEqGmUJLCJpKtHdPpMJK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwsNlj%2FbtrT5bfB1Og%2FzRSEqGmUJLCJpKtHdPpMJK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;4000&quot; data-filename=&quot;R0000106.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경의선 숲길의 가좌역 끝 지점에 가깝다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000108.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRvNwc/btrTXLpnyRU/Vknz0Lw3aLKKxx2F9AB9n0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRvNwc/btrTXLpnyRU/Vknz0Lw3aLKKxx2F9AB9n0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRvNwc/btrTXLpnyRU/Vknz0Lw3aLKKxx2F9AB9n0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRvNwc%2FbtrTXLpnyRU%2FVknz0Lw3aLKKxx2F9AB9n0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;4000&quot; data-filename=&quot;R0000108.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000097.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSI74g/btrT2QKhQoU/C3KhviTOojN4skm3wuEQVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSI74g/btrT2QKhQoU/C3KhviTOojN4skm3wuEQVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSI74g/btrT2QKhQoU/C3KhviTOojN4skm3wuEQVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSI74g%2FbtrT2QKhQoU%2FC3KhviTOojN4skm3wuEQVk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;4000&quot; data-filename=&quot;R0000097.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아기자기한 분위기에 들어오는 빛이 예쁘다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000109.JPG&quot; data-origin-width=&quot;5262&quot; data-origin-height=&quot;3487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dusyJt/btrT3qdEUE5/vaCHUJtcUg5jZziSduxbHk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dusyJt/btrT3qdEUE5/vaCHUJtcUg5jZziSduxbHk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dusyJt/btrT3qdEUE5/vaCHUJtcUg5jZziSduxbHk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdusyJt%2FbtrT3qdEUE5%2FvaCHUJtcUg5jZziSduxbHk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;5262&quot; height=&quot;3487&quot; data-filename=&quot;R0000109.JPG&quot; data-origin-width=&quot;5262&quot; data-origin-height=&quot;3487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000111.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3gP2X/btrT6uMvLDT/PbbGcwV49H4YXCZtRh157K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3gP2X/btrT6uMvLDT/PbbGcwV49H4YXCZtRh157K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3gP2X/btrT6uMvLDT/PbbGcwV49H4YXCZtRh157K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3gP2X%2FbtrT6uMvLDT%2FPbbGcwV49H4YXCZtRh157K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;4000&quot; data-filename=&quot;R0000111.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말차 라떼와 콜드 브류 그리고 그날 있던 화과자를 종류별로 하나씩 다 시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화과자는 색이 예쁘고 달달했다. 다 같은 맛일 줄 알았는데 종류별로 조금씩 다른 맛.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선물용으로 괜찮을 것 같지만 저렴한 편은 아니다.&lt;/p&gt;</description>
      <category>ETC/Daily Life</category>
      <category>가좌역</category>
      <category>경의선숲길</category>
      <category>디져트</category>
      <category>맛집</category>
      <category>연남동</category>
      <category>연트럴파크</category>
      <category>연희동</category>
      <category>카시코이</category>
      <category>카페</category>
      <category>화과자</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/163</guid>
      <comments>https://dev-log-island.tistory.com/163#entry163comment</comments>
      <pubDate>Mon, 19 Dec 2022 20:47:52 +0900</pubDate>
    </item>
    <item>
      <title>RICOH GR3</title>
      <link>https://dev-log-island.tistory.com/162</link>
      <description>&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연말 여행 사진 촬영 겸 취미생활을 위해 중고로 구매한 리코 RG 3&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_5451.jpeg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci82Ty/btrTYClsSYl/GLrKGoeSTGhc79pKzGYNL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci82Ty/btrTYClsSYl/GLrKGoeSTGhc79pKzGYNL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci82Ty/btrTYClsSYl/GLrKGoeSTGhc79pKzGYNL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci82Ty%2FbtrTYClsSYl%2FGLrKGoeSTGhc79pKzGYNL0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;2268&quot; data-filename=&quot;IMG_5451.jpeg&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장점은 내장 필터 기능을 사용하면 보정 없이도 꽤나 괜찮은 질감의 사진을 찍을 수 있고 부피가 작아&amp;nbsp;가볍게 사용하기 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000065.JPG&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;6000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mbvIK/btrTYBNDb1s/4RVjyLvPUOMMMYKYtgZT61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mbvIK/btrTYBNDb1s/4RVjyLvPUOMMMYKYtgZT61/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mbvIK/btrTYBNDb1s/4RVjyLvPUOMMMYKYtgZT61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmbvIK%2FbtrTYBNDb1s%2F4RVjyLvPUOMMMYKYtgZT61%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4000&quot; height=&quot;6000&quot; data-filename=&quot;R0000065.JPG&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;6000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000055.JPG&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;6000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ4ucR/btrT3qEEHpX/w95csPttCSMm1eq0knK1nk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ4ucR/btrT3qEEHpX/w95csPttCSMm1eq0knK1nk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ4ucR/btrT3qEEHpX/w95csPttCSMm1eq0knK1nk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ4ucR%2FbtrT3qEEHpX%2Fw95csPttCSMm1eq0knK1nk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4000&quot; height=&quot;6000&quot; data-filename=&quot;R0000055.JPG&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;6000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000543.JPG&quot; data-origin-width=&quot;3360&quot; data-origin-height=&quot;2240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGL4EC/btrT5anoNYK/5iiylYgx9M2zaucKBeDjEK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGL4EC/btrT5anoNYK/5iiylYgx9M2zaucKBeDjEK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGL4EC/btrT5anoNYK/5iiylYgx9M2zaucKBeDjEK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGL4EC%2FbtrT5anoNYK%2F5iiylYgx9M2zaucKBeDjEK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3360&quot; height=&quot;2240&quot; data-filename=&quot;R0000543.JPG&quot; data-origin-width=&quot;3360&quot; data-origin-height=&quot;2240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000535.JPG&quot; data-origin-width=&quot;2240&quot; data-origin-height=&quot;3360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVaUTq/btrT6eiEIoM/SxhRFYttpRDrKM3V6ua7nK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVaUTq/btrT6eiEIoM/SxhRFYttpRDrKM3V6ua7nK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVaUTq/btrT6eiEIoM/SxhRFYttpRDrKM3V6ua7nK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVaUTq%2FbtrT6eiEIoM%2FSxhRFYttpRDrKM3V6ua7nK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2240&quot; height=&quot;3360&quot; data-filename=&quot;R0000535.JPG&quot; data-origin-width=&quot;2240&quot; data-origin-height=&quot;3360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000798.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHLakc/btrT6wKgz6c/km7sdFaLfHS3W3UuCAlTLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHLakc/btrT6wKgz6c/km7sdFaLfHS3W3UuCAlTLK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHLakc/btrT6wKgz6c/km7sdFaLfHS3W3UuCAlTLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHLakc%2FbtrT6wKgz6c%2Fkm7sdFaLfHS3W3UuCAlTLK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;6000&quot; height=&quot;4000&quot; data-filename=&quot;R0000798.JPG&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;R0000752.JPG&quot; data-origin-width=&quot;3360&quot; data-origin-height=&quot;2240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EKyEZ/btrT4AfOXXf/ATx62ipQkqQsjC2On6Vf91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EKyEZ/btrT4AfOXXf/ATx62ipQkqQsjC2On6Vf91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EKyEZ/btrT4AfOXXf/ATx62ipQkqQsjC2On6Vf91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEKyEZ%2FbtrT4AfOXXf%2FATx62ipQkqQsjC2On6Vf91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3360&quot; height=&quot;2240&quot; data-filename=&quot;R0000752.JPG&quot; data-origin-width=&quot;3360&quot; data-origin-height=&quot;2240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;B4B2FE82-D9CD-410C-98FE-35E59A37AEF5_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biCHMO/btrTXMhth72/fon34GK2Zowj2V4EogBfXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biCHMO/btrTXMhth72/fon34GK2Zowj2V4EogBfXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biCHMO/btrTXMhth72/fon34GK2Zowj2V4EogBfXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiCHMO%2FbtrTXMhth72%2Ffon34GK2Zowj2V4EogBfXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;724&quot; data-filename=&quot;B4B2FE82-D9CD-410C-98FE-35E59A37AEF5_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;D439D2A8-C95D-461E-B244-E7AA8AD5850F_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BZSsp/btrT4qxB0Aa/ebjPojre77eRFdvTdc6Mb0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BZSsp/btrT4qxB0Aa/ebjPojre77eRFdvTdc6Mb0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BZSsp/btrT4qxB0Aa/ebjPojre77eRFdvTdc6Mb0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBZSsp%2FbtrT4qxB0Aa%2FebjPojre77eRFdvTdc6Mb0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;724&quot; data-filename=&quot;D439D2A8-C95D-461E-B244-E7AA8AD5850F_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;F3FCBA4E-8CAB-4608-B5CB-06120752E005_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfsNM6/btrT6vxQuTP/9KsUbnksLTnODMZwAXLG7K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfsNM6/btrT6vxQuTP/9KsUbnksLTnODMZwAXLG7K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfsNM6/btrT6vxQuTP/9KsUbnksLTnODMZwAXLG7K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfsNM6%2FbtrT6vxQuTP%2F9KsUbnksLTnODMZwAXLG7K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;724&quot; data-filename=&quot;F3FCBA4E-8CAB-4608-B5CB-06120752E005_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;07EB4C79-6472-43DA-913C-E99EADC52EC5_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwMT6s/btrT5bmjtym/QRjPNblkid4xkO72BzHmrk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwMT6s/btrT5bmjtym/QRjPNblkid4xkO72BzHmrk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwMT6s/btrT5bmjtym/QRjPNblkid4xkO72BzHmrk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwMT6s%2FbtrT5bmjtym%2FQRjPNblkid4xkO72BzHmrk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;724&quot; data-filename=&quot;07EB4C79-6472-43DA-913C-E99EADC52EC5_1_105_c.jpeg&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;52A8898E-66DB-47B9-A21F-37A8869E3579_1_105_c.jpeg&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o9aXi/btrT4QW1VP0/NMmbVTMQCaakBJbhzai0Ok/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o9aXi/btrT4QW1VP0/NMmbVTMQCaakBJbhzai0Ok/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o9aXi/btrT4QW1VP0/NMmbVTMQCaakBJbhzai0Ok/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo9aXi%2FbtrT4QW1VP0%2FNMmbVTMQCaakBJbhzai0Ok%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;724&quot; height=&quot;1086&quot; data-filename=&quot;52A8898E-66DB-47B9-A21F-37A8869E3579_1_105_c.jpeg&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필름 사진 느낌 나는 색감은 좋은데, 그 색감을 살려 찍는 게 쉽지 않다. 아마도 내가 노출의 3요소를 컨트롤하지 못해서 인 듯?&lt;br /&gt;사실 생각 없이 막 찍으면 폰카보다 못하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 사진은 보정 없이 jpeg 원본이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>ETC/Daily Life</category>
      <category>Dslr</category>
      <category>GR3</category>
      <category>RICOH</category>
      <category>똑딱이</category>
      <category>리코</category>
      <category>미러리스</category>
      <category>사진</category>
      <category>취미</category>
      <category>카메라</category>
      <category>하이엔드</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/162</guid>
      <comments>https://dev-log-island.tistory.com/162#entry162comment</comments>
      <pubDate>Mon, 19 Dec 2022 19:38:02 +0900</pubDate>
    </item>
    <item>
      <title>[javascript] HTML form to JSON object</title>
      <link>https://dev-log-island.tistory.com/158</link>
      <description>&lt;h1&gt;HTML form의 입력값 JSON 객체로 변환시키기&lt;/h1&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;    const formToJSON = (elements) =&amp;gt; [].reduce.call(elements, (data, element) =&amp;gt; {
            data[element.name] = element.value;
            return data;
        },
        {}
    );

    let form = formToJSON(document.querySelector(&amp;#39;#event01Form&amp;#39;))
    console.log(form, &amp;#39;\n&amp;#39;, JSON.stringify(form));&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Language/JavaScript</category>
      <category>Form</category>
      <category>html</category>
      <category>JavaScript</category>
      <category>JS</category>
      <category>JSON</category>
      <category>To</category>
      <category>값</category>
      <category>변환</category>
      <category>제이슨</category>
      <category>폼</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/158</guid>
      <comments>https://dev-log-island.tistory.com/158#entry158comment</comments>
      <pubDate>Mon, 8 Aug 2022 10:18:45 +0900</pubDate>
    </item>
    <item>
      <title>[DS] Array 배열</title>
      <link>https://dev-log-island.tistory.com/157</link>
      <description>&lt;h1&gt;배열 (Array)&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;데이터를 나열하고, 각 데이터를 &lt;strong&gt;인덱스&lt;/strong&gt;에 대응하도록 구성한 데이터 구조&lt;/li&gt;
&lt;li&gt;각 원소의 물리적인 위치(메모리 주소)의 순서가 배열의 인덱스 순서(논리적인 순서)와 일치&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;배열이 필요한 이유&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;같은 종류의 데이터를 효율적으로 관리하기 위해 사용&lt;/li&gt;
&lt;li&gt;같은 종류의 데이터를 순차적으로 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;장단점&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;장점&lt;ul&gt;
&lt;li&gt;빠른 데이터 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점&lt;ul&gt;
&lt;li&gt;추가/삭제가 쉽지 않음&lt;/li&gt;
&lt;li&gt;최대 길이를 미리 지정해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;data&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;S&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;T&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;R&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;I&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;N&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;G&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;index&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;0&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;3&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;4&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description>
      <category>Computer Science/DataStructure</category>
      <category>array</category>
      <category>datastructure</category>
      <category>DS</category>
      <category>배열</category>
      <category>자료구조</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/157</guid>
      <comments>https://dev-log-island.tistory.com/157#entry157comment</comments>
      <pubDate>Sun, 17 Jul 2022 18:53:41 +0900</pubDate>
    </item>
    <item>
      <title>필독도서</title>
      <link>https://dev-log-island.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 302px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;제목&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;완독 여부&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;언제?&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;객체지향의 사실과 오해&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2022.08&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;토비의 스프링&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;V&lt;br /&gt;(vol. 1 : O, vol. 2 : X)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.01&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;읽기 좋은 코드가 좋은 코드다&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.02&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;클린코드&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.03&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&lt;span style=&quot;background-color: #efefef; color: #333333; text-align: start;&quot;&gt;채수원씨의 TDD 실천법과 도구&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.04&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;TDD에 바로 들어가기 어렵다면 이 책부터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;이펙티브 자바 3판&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.06&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;클린 아키텍쳐&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;저연차에는 아직 비추&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;클린 에자일&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px;&quot;&gt;You don't know JS&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 38px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 38px;&quot;&gt;예전 책이라 차라리 TS 책을 찾아보는게 나을 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;소프트웨어 장인&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;리팩토링 2판&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;읽는 중&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.07&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;실용주의 프로그래머&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;In Action 시리즈&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;- Junit&lt;br /&gt;- Java&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Head First Design Pattern&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;O but 실습 X&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;2023.05&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;오브젝트&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;데이터 중심 어플리케이션 설계&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;그 외 실용 책&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>개발자</category>
      <category>저연차</category>
      <category>주니어</category>
      <category>책</category>
      <category>추천</category>
      <category>필독도서</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/155</guid>
      <comments>https://dev-log-island.tistory.com/155#entry155comment</comments>
      <pubDate>Wed, 13 Jul 2022 15:17:42 +0900</pubDate>
    </item>
    <item>
      <title>[독후감] 객체지향의 사실과 오해 (AKA 토끼책)</title>
      <link>https://dev-log-island.tistory.com/154</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;객체지향 &amp;rarr; 역할, 책임, 협력을 투영하는 새로운 세계&lt;/b&gt;&lt;/h4&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토끼책에서 객체지향에 대해 가장 중요하게 여기는 개념은 오브젝트 사이의 메세지가 핵임이며 모든건 메세지 위주로 돌아가야한다는 점이다. 메세지가 곧 역할을 만들고 책임을 만들며 협력의 접점을 만들기 때문이다.&lt;/p&gt;
&lt;p data-renderer-start-pos=&quot;154&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 오브젝트는 결국 자기만의 역할, 책임을 분명하게 가지게끔 만들어야&lt;/b&gt; 하며, 협력을 하려 할때 오브젝트 A는 오브젝트 B의 역할, 책임 내부를 들여다보는&lt;i&gt;&lt;span data-renderer-mark=&quot;true&quot;&gt;(&lt;s&gt;OOP의 패러다임을 깨버리는&lt;/s&gt;)&lt;/span&gt;&lt;/i&gt;순간 의존성이 강하게 걸리며 OOP의 사상과 멀어지게 된다. 오로지 내 입장에서 '무언가'를 하려한다는 메세지를 전파하는 것, 그 자체로 끝나야하며, 그게 좋은 구조의 OOP이고, 디커플링 된다.&lt;/p&gt;
&lt;p data-renderer-start-pos=&quot;367&quot; data-ke-size=&quot;size16&quot;&gt;현재 재직중인 회사의 개발 소스들은 역할과 책임, 협력 없이 한 프로세스에서 모든 역할을 하며 그러다 보니 파편화된 소스가 너무나도 많다. 그리고 그런 파편화로 인해 유지보수성에 어려움을 겪고, 많은 버그에 개발팀은 물론 운영 MD팀, CS팀, 배송팀까지 업무에 어려움을 겪고 있다. 이런 문제로 업무의 효율과 공수에 비효율이 생기고, 사용자들은 좋지 않은 사용 경험을 넘어 불쾌감을 느끼는 일도 허다하다.&lt;/p&gt;
&lt;p data-renderer-start-pos=&quot;367&quot; data-ke-size=&quot;size16&quot;&gt;소스 수정이 있을 때마다 개선을 한다고 해보지만 2014년부터 유지되오던 시스템의 방대함과 기한이라는 두개의 큰 벽앞에서 쉽지 않다. 그렇지만 당장의 시간 비용이 더 들어서 추후 비용을 덜 들일 수 있다면 어떤게 더 이득인지 생각해 볼 필요가 있다고 생각한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책을 읽고 &lt;b&gt;역할, 책임, 협력을 나눠 잘 짜여진 구조의 시스템&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #172b4d;&quot;&gt;에 대한&lt;/span&gt;&lt;b&gt; 목마름&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #172b4d;&quot;&gt;이 생겼다&lt;/span&gt;&lt;b&gt;. &lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #172b4d;&quot;&gt;OOP의 철학이 잘 녹아든 소스 위에서 일 하고싶다.&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-diqpy0&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Soft Skill/개발도서</category>
      <category>OOP</category>
      <category>개발</category>
      <category>개발자</category>
      <category>객체지향</category>
      <category>객체지향의 사실과 오해</category>
      <category>사실</category>
      <category>서적</category>
      <category>성장</category>
      <category>오해</category>
      <category>커리어</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/154</guid>
      <comments>https://dev-log-island.tistory.com/154#entry154comment</comments>
      <pubDate>Tue, 12 Jul 2022 22:52:01 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 보안 - II</title>
      <link>https://dev-log-island.tistory.com/152</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 보안을 강화시키는 방법으로 암호 기법, 디지털 서명, 웹 보안 프로토콜, 방화벽, 프록시 서버 등을 알아봄&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;암호화&lt;/b&gt; :&lt;br /&gt;누구나 읽을 수 있는 평문을 제 3자가 읽을 수 없는 형태인 암호문으로 변환하는 과정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복호화&lt;/b&gt; :&lt;br /&gt;암호문을 평문으로 변화하는 과정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대치암호&lt;/b&gt; :&lt;br /&gt;평문의 각 글자를 다른 글자로 대치하여 암호문을 만드는 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전치암호&lt;/b&gt; :&lt;br /&gt;평문의 글자를 재배열하는 방식으로 문자의 위치를 바꿔서 암호문을 만드는 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;스트림 암호화&lt;/b&gt; :&lt;br /&gt;평문과 같은 길이의 키 스트림을 생성하여 평문과 키를 비트 단위로 합하여 암호문을 만드는 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;블록 암호화&lt;/b&gt; :&lt;br /&gt;평문을 일정한 길이의 단위(block)로 나눈 뒤, 각 블록 단위로 암호화 과정을 수행하여 암호문을 얻는 방법&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대칭 키 암호화&lt;/b&gt; :&lt;br /&gt;암호화에서 사용하는 암호화와 키와 복호화에 사용하는 복호화 키가 서로 같음 암호화 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공개 키 암호화&lt;/b&gt; :&lt;br /&gt;암호화에 사용하는 암호화 키와 복호화에 사용하는 복호화 키가 서로 다른 암호화 방식.&lt;br /&gt;암호화 키는 일반인에게 공개하는 공개키이고 복호화 키는 개인이 공개하지 않는 비밀 키임&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공개 키 기반 구조 (Public Key Infrastructure; PKI)&lt;/b&gt; :&lt;br /&gt;일반 사람들이 공개 키 암호화 기법을 믿고 사용할 수 있도록 공개 키 인증서를 발행하고&lt;br /&gt;그에 대한 접근을 제공하는 인증서 관리 기반 구조&lt;/li&gt;
&lt;li&gt;&lt;b&gt;방화벽 (firewall)&lt;/b&gt; :&lt;br /&gt;네트워크와 네트워크 사이에서 패킷을 검사하여 조건에 맞는 패킷만을 통과시키는 소프트웨어나 하드웨어를 총칭&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프록시 서버(proxy server)&lt;/b&gt; :&lt;br /&gt;내부 네트워크에 접속되어 있는 클라이언트를 대신하여 외부 네트워크에 접속하여 클라이언트가 요청한 통신 서비스를 제공하는 서버&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;암호 기법&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;암호 기법의 개요&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 (Encryption) :&lt;br /&gt;누구나 읽을 수 있는 평문(plaintext)을 제 3자가 읽을 수 없는 형태인 암호문(chipertext)으로 변환하는 과정&lt;/li&gt;
&lt;li&gt;복호화 (decryption) :&lt;br /&gt;암호문을 평문으로 변환하는 과정&lt;/li&gt;
&lt;li&gt;키 (key) :&lt;br /&gt;암호화 키, 복호화 키&lt;br /&gt;과정 : 평문 -&amp;gt; 암호화(암호화 키) -&amp;gt; 암호문 -&amp;gt; 복호화(복호화 키) -&amp;gt; 평문&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;암호화의 주요 기능&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전달 과정의 기밀성 보장&lt;/li&gt;
&lt;li&gt;정보의 무결성 보장&lt;/li&gt;
&lt;li&gt;송신자와 수신자의 정당성 보장&lt;/li&gt;
&lt;li&gt;네트워크 보안의 5가지 요구사항
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터의 기밀성 보장&lt;/li&gt;
&lt;li&gt;데이터의 무결성 보장&lt;/li&gt;
&lt;li&gt;정당성 보장 : 실체 인증, 데이터 인증, 부인 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;암호화 기술&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;암호화 기술 - 분류&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동작 형태 :&lt;br /&gt;대치 암호, 전치 암호, 혼합 암호, 대수화 암호&lt;/li&gt;
&lt;li&gt;평문의 처리 방법 :&lt;br /&gt;스트림 암호화, 블록 암호화&lt;/li&gt;
&lt;li&gt;암호화 키 :&lt;br /&gt;대칭 키 암호화, 공개 키 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;동작 형태&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대치 암호 (치환 암호; substitution cipher)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메세지의 각 글자를 다른 글자로 대치하는 방식&lt;/li&gt;
&lt;li&gt;예 : Caesar 암호&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;전치 암호 (전위 암호; transposition cipher)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평문의 글자를 재배열하는 방식 (문자의 위치를 바꿔 암호문을 작성)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-01.png&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8IOr8/btrEwjOdcXK/E6sb6ix3Kjm3HJGeU4kf3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8IOr8/btrEwjOdcXK/E6sb6ix3Kjm3HJGeU4kf3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8IOr8/btrEwjOdcXK/E6sb6ix3Kjm3HJGeU4kf3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8IOr8%2FbtrEwjOdcXK%2FE6sb6ix3Kjm3HJGeU4kf3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;722&quot; height=&quot;270&quot; data-filename=&quot;15-01.png&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-02.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCAFsb/btrEu6IPiKb/b7T13upAdUPL3aTAhzXGf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCAFsb/btrEu6IPiKb/b7T13upAdUPL3aTAhzXGf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCAFsb/btrEu6IPiKb/b7T13upAdUPL3aTAhzXGf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCAFsb%2FbtrEu6IPiKb%2Fb7T13upAdUPL3aTAhzXGf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;410&quot; data-filename=&quot;15-02.png&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;혼합 암호 (product cipher)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대치와 전치 두 방법 모두 사용하는 방식&lt;/li&gt;
&lt;li&gt;예 : LUCIFER, ENIGMA, ABFGVX, DES 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;대수적 암호 (algebraic cipher)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 글자를 숫자로 바꾸어 수학적으로 처리하는 방식&lt;/li&gt;
&lt;li&gt;예 : 순환잉여검사 (CRC), Vernam 암호 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;평문 처리 방법&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스트림 암호화 (stream cipher [state cipher] encryption)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평문과 같은 길이의 키 스트림을 생성, 평문과 키를 비트 단위로 합하여 암호문을 얻는 방법&lt;/li&gt;
&lt;li&gt;평문을 한 번에 &lt;b&gt;한 비트&lt;/b&gt;씩, radom하게 생성되는 키 스트림과 XOR 연산으로 합하여 전송함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;블록 암호화 (block cipher [state cipher] encryption)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평문을 일정한 길이의 단위(&lt;b&gt;block&lt;/b&gt;)으로 나눈 뒤, 각 블록 단위로 암호화 과정을 수행하여 암호문을 얻는 방법&lt;/li&gt;
&lt;li&gt;예 : LUCIFER, DES&lt;/li&gt;
&lt;li&gt;비교&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;암호화 키&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대칭 키 암호화 (symmetric key encryption)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화 키 = 복호화 키&lt;/li&gt;
&lt;li&gt;유사어 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공통 키 (common key) 암호화&lt;/li&gt;
&lt;li&gt;비밀 키 (secret key) 암호화&lt;/li&gt;
&lt;li&gt;관용 암호화 (conventional encryption)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-03.png&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWi6bF/btrEt3LW9UL/9Njwb4ULhCnFzwcS5i4LtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWi6bF/btrEt3LW9UL/9Njwb4ULhCnFzwcS5i4LtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWi6bF/btrEt3LW9UL/9Njwb4ULhCnFzwcS5i4LtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWi6bF%2FbtrEt3LW9UL%2F9Njwb4ULhCnFzwcS5i4LtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;226&quot; data-filename=&quot;15-03.png&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;장점 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현이 용이&lt;/li&gt;
&lt;li&gt;실행 속도가 빠름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;키 분배 및 관리가 어려움&lt;/li&gt;
&lt;li&gt;인증과 송수신 부인 방지가 보장되지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;에 : RC2, RC4, RC5, IDEA, DES, Triple DES, AES&lt;/li&gt;
&lt;li&gt;DES (Data Encryption Standard)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대칭 키를 사용하는 블록 암호화 방식&lt;/li&gt;
&lt;li&gt;IBM에서 개발한 LUCIFER의 확장된 형태,&lt;/li&gt;
&lt;li&gt;평문의 한 블록(64 비트)을 공통 키(54 비트)를 이용, 전치, 대치, XOR 연산 등을 16회 반복하여 암호문 한 블록(64 비트)을 완성함&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-04.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beR1og/btrEBrD0Ueu/BhAHjIAt9YKl9nNVEfEI9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beR1og/btrEBrD0Ueu/BhAHjIAt9YKl9nNVEfEI9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beR1og/btrEBrD0Ueu/BhAHjIAt9YKl9nNVEfEI9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeR1og%2FbtrEBrD0Ueu%2FBhAHjIAt9YKl9nNVEfEI9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;816&quot; height=&quot;442&quot; data-filename=&quot;15-04.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AES (Advanced Encryption Standard)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;공개 키 암호화 방식 (public key encryption)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RSA 암호화 알고리즘
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가장 대중화된 공개 키 암호화 방식&lt;/li&gt;
&lt;li&gt;2 개의 큰 소수 p, q를 구하고, 두 소수의 곱 n을 구해 사용하는데, 이 암호화 방식의 안전도는 n의 소인수 분해 난이도에 종속됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공통 키 암호화 방식의 키 분배 문제 해결&lt;/li&gt;
&lt;li&gt;디지털 서명 기능 (부인 봉쇄 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현의 어려움&lt;/li&gt;
&lt;li&gt;처리 속도가 느림&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;키 관리&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;공개 키 관리&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개 키는 공개되므로 위/변조가 가능&lt;/li&gt;
&lt;li&gt;공개 키 인증서 (certificate)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개 키를 인증하는 전자적 증명문서&lt;/li&gt;
&lt;li&gt;인증 만기일, 인증서 발급기관 이름, 일련번호, 인증서 발급 기관의 디지털 서명&lt;/li&gt;
&lt;li&gt;인증서의 형식은 ITU-T X.509 표준에 따름&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;공개 키 기반 구조&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Public Key Infrastructure (PKI) :&lt;br /&gt;공개 키 인증서를 발급하고 사용할 수 있는 인증서 관리 구조&lt;/li&gt;
&lt;li&gt;인증기관 (Certificate Authority; CA) :&lt;br /&gt;일반인에게 개인 키와 공개 키를 부여하고,&lt;br /&gt;인증서를 통해 상대방의 공개 키를 제공하는 서비스 기관&lt;/li&gt;
&lt;li&gt;인증서 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기재된 통신 객체 (개인, 기관, 컴퓨터)의 신분 보증&lt;/li&gt;
&lt;li&gt;인증기관의 디지털 서명이 포함되어 인증기관의 개인 키 없이는 위/변조 불가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;디지털 서명 (digital signature)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;디지털 서명의 개요&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개 키 암호화 방식에서의 메세지 암호화는&lt;br /&gt;개인 키를 이용한 메세지 작성자만이 할 수 있으므로&lt;br /&gt;이를 이용하여 메세지릐 작성자 본인을 알리는 서명을 작성함&lt;/li&gt;
&lt;li&gt;서명 알고리즘 및 증명 알고리즘&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-05.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdMn3s/btrEvJyHxi6/VRotmY1DCGU2PO5gW7ZgT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdMn3s/btrEvJyHxi6/VRotmY1DCGU2PO5gW7ZgT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdMn3s/btrEvJyHxi6/VRotmY1DCGU2PO5gW7ZgT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdMn3s%2FbtrEvJyHxi6%2FVRotmY1DCGU2PO5gW7ZgT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;740&quot; height=&quot;306&quot; data-filename=&quot;15-05.png&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-06.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1h9Sx/btrEvL5heYd/btbTIUXK5PfsAtTgdYAd40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1h9Sx/btrEvL5heYd/btbTIUXK5PfsAtTgdYAd40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1h9Sx/btrEvL5heYd/btbTIUXK5PfsAtTgdYAd40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1h9Sx%2FbtrEvL5heYd%2FbtbTIUXK5PfsAtTgdYAd40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;952&quot; height=&quot;420&quot; data-filename=&quot;15-06.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;디지털 서명의 유효성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디지털 서명의 유효성을 위한 5가지 조건
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서명자 인증 (user authentication) :&lt;br /&gt;디지털 서명의 서명자를 불특정 다수의 사람들이 검증할 수 있어야 함&lt;/li&gt;
&lt;li&gt;부인 불가 (non-repudiation) :&lt;br /&gt;서명자는 서명 이후 서명 사실을 부인할 수 없어야 함&lt;/li&gt;
&lt;li&gt;변경 불가 (unalterable) :&lt;br /&gt;서명한 문서의 내용은 변경할 수 없어야 함&lt;/li&gt;
&lt;li&gt;재사용 불가 (not reusable) :&lt;br /&gt;어느 한 전자문서의 디지털 서명을 다른 전자문서의 디지털 서명으로 사용할 수 없어야 함&lt;/li&gt;
&lt;li&gt;위조 불가 (unforgeable) :&lt;br /&gt;적법적인 서명자만이 디지털 서명을 할 수 있어야 함&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹 보안 프로토콜&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웹 보안 프로토콜 분류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응용계층 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이메일 보안 : PGP, PEM, S/MIME&lt;/li&gt;
&lt;li&gt;HTTP 보안 : S-HTTP; Secure HTTP&lt;/li&gt;
&lt;li&gt;원격 로그인 보안 : SSH; Secure Shell&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;전송계층 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SSL; Secure Socket Layer&lt;/li&gt;
&lt;li&gt;TLS; Transport Layer Security&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;네트워크계층 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IPSec; Internet Protocol Security&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;응용계층 웹 보안 프로토콜 - 이메일 보안&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PGP; Pretty Good Privacy
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공개 키 암호화 방식 사용&lt;/li&gt;
&lt;li&gt;기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기밀성 : 제 3자는 이메일 내용을 볼 수 없음&lt;/li&gt;
&lt;li&gt;메세지 인증 : 메세지가 위/변조 되지 않았음을 인증&lt;/li&gt;
&lt;li&gt;사용자 인증 : 이메일의 발신자가 누구인지 확인&lt;/li&gt;
&lt;li&gt;송신자 부인 방지 : 이메일 발송 부인의 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PEM; Privacy Enhanced Mail
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IETF (Internet Engineering Task Force)에서 표준으로 제정한 공개 키 암호화 방식의 이메일 보안 방식&lt;/li&gt;
&lt;li&gt;표준으로 제정되었으나 실제로 활용되지 못함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;S/MIME (Secure/Multipurpose Internet Mail Extension)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MIME으로 캡슐화 된 이메일에 대해 공개 키 암호와 디지털 서명을 제공해주는 이메일 보안 표준 프로토콜&lt;/li&gt;
&lt;li&gt;공개 키 암호화 방식, RSA 암호 방식을 이용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송계층 웹 보안 프로토콜 - SSL&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Secure Socket Layer&lt;/li&gt;
&lt;li&gt;웹 페이지 보안 프로그램으로 대부분의 웹 브라우져가 지원해 줌&lt;/li&gt;
&lt;li&gt;Netscape Communication사에서 개발한 de facto standard&lt;/li&gt;
&lt;li&gt;http 외에도 ftp, SMTP, Telnet 등의 응용에도 적용 가능&lt;/li&gt;
&lt;li&gt;SSL이 적용된 웹 페이지의 URL은 https로 시작되며 보안 포느 443을 사용&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-07.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k9JR9/btrEuFRl568/33aDgy4qG8aqFMRQncSzjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k9JR9/btrEuFRl568/33aDgy4qG8aqFMRQncSzjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k9JR9/btrEuFRl568/33aDgy4qG8aqFMRQncSzjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk9JR9%2FbtrEuFRl568%2F33aDgy4qG8aqFMRQncSzjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;898&quot; height=&quot;626&quot; data-filename=&quot;15-07.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송계층 웹 보안 프로토콜 - TLS&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Transport Layer Security&lt;/li&gt;
&lt;li&gt;SSL을 계승한 전송 계층의 보안 프로토콜&lt;/li&gt;
&lt;li&gt;TLS의 상위 계층의 응용 프로토콜과는 독립적이기 때문에 어떤 응용 프로그램도 TLS를 이용하여 안전한 통신 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네트워크계층 웹 보안 프로토콜 - IPSec&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IPSec (Internet Protocol Security)&lt;/li&gt;
&lt;li&gt;IP 게층 (네트워크 계층)에서 동작하는 보안 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Authentication Header; AH : 송신자의 인증&lt;/li&gt;
&lt;li&gt;Encapsulation Security Payload; ESP : 송신자의 인증과 데이터 암호화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IP 계층에서의 데이터 기밀성, 데이터 무결성, 데이터 인증 등의 보안 서비스 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;방화벽과 프록시 서버&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방화벽의 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크와 네트워크 사이에서 패킷을 검사하여 조건에 맞는 패킷만을 통과시키는 (packet filtering) S/W, H/W를 총칭&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방화벽의 종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배스천 호스트; bastion host
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-08.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tbWMb/btrEuVNdKa9/Ke0ZdKT3txZuQDtNuXxVX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tbWMb/btrEuVNdKa9/Ke0ZdKT3txZuQDtNuXxVX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tbWMb/btrEuVNdKa9/Ke0ZdKT3txZuQDtNuXxVX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtbWMb%2FbtrEuVNdKa9%2FKe0ZdKT3txZuQDtNuXxVX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;918&quot; height=&quot;474&quot; data-filename=&quot;15-08.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;스크리닝 라우터; screening router
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-09.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqbFkO/btrEznPEjLb/kDNvdjE7bAFOAQcr09eTPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqbFkO/btrEznPEjLb/kDNvdjE7bAFOAQcr09eTPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqbFkO/btrEznPEjLb/kDNvdjE7bAFOAQcr09eTPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqbFkO%2FbtrEznPEjLb%2FkDNvdjE7bAFOAQcr09eTPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;898&quot; height=&quot;454&quot; data-filename=&quot;15-09.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이중 홈 게이트웨이; dual-homed gateway
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2개 이상의 네트워크에 동시에 접속된 Bation host&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-10.png&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k2KuS/btrEvNWjqFV/WShZMj3o8K11DCikT4aLik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k2KuS/btrEvNWjqFV/WShZMj3o8K11DCikT4aLik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k2KuS/btrEvNWjqFV/WShZMj3o8K11DCikT4aLik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk2KuS%2FbtrEvNWjqFV%2FWShZMj3o8K11DCikT4aLik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;870&quot; height=&quot;426&quot; data-filename=&quot;15-10.png&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;스크린 호스트 게이트웨이; screened host gateway
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스크리닝 라우터와 스크린 호스트(bation host, dual-homed gateway)를 혼합한 형태의 방화벽&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-11.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbvtVx/btrEyvtCC8z/Z0QEEIY8WrTHnZqifP9UFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbvtVx/btrEyvtCC8z/Z0QEEIY8WrTHnZqifP9UFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbvtVx/btrEyvtCC8z/Z0QEEIY8WrTHnZqifP9UFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbvtVx%2FbtrEyvtCC8z%2FZ0QEEIY8WrTHnZqifP9UFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;404&quot; data-filename=&quot;15-11.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;스크린 서브넷; screened subnet
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 네트워크와 내부 네트워크 사이에 DMZ 역할을 하는 완충 지역 개념의 서브넷&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;15-12.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHH3xG/btrEzoHNTCI/Ln3Mm5iMIfJtrM6tWoHLSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHH3xG/btrEzoHNTCI/Ln3Mm5iMIfJtrM6tWoHLSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHH3xG/btrEzoHNTCI/Ln3Mm5iMIfJtrM6tWoHLSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHH3xG%2FbtrEzoHNTCI%2FLn3Mm5iMIfJtrM6tWoHLSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;400&quot; data-filename=&quot;15-12.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프록시 서버의 개요&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 네트워크게 있는 Client를 대신하여 인터넷에 접속하고&lt;br /&gt;Client가 요청한 통신 서비스를 Client가 요청한 통신 서비스를 다시 Client에게 제공해 주는 서버&lt;/li&gt;
&lt;li&gt;동작 절차
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Proxy server는 client의 요청에 따라 외부 서버에게 서비스 요청&lt;/li&gt;
&lt;li&gt;외부 서버는 proxy server에게 요청한 서비스 전달&lt;/li&gt;
&lt;li&gt;Proxy server는 전달 받은 서비스를 client에게 전달&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;프록시 서버의 기능&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;안정성 :&lt;br /&gt;사용자 인증 기능, 서비스 이용 제한 등의 기능을 proxy server에 두면&lt;br /&gt;client는 일괄적 보호를 받음&lt;/li&gt;
&lt;li&gt;익명성 :&lt;br /&gt;외부 서버에 접근하는 것은 proxy server이므로,&lt;br /&gt;client의 고유정보가 노출될 가능성이 감소함&lt;/li&gt;
&lt;li&gt;신속성 :&lt;br /&gt;사용자가 열람한 웹 사이트의 정보를 캐시에 임시적으로 보관해 놓는데, 이를 이용하면 client가 동일한 웹 사이트에 접속하는 경우 신속하게 할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;암호화란 누구나 읽을 수 있는 평문을 권한이 없는 &lt;b&gt;제 3자가 알아볼 수 없는 형태로 재구성하는 과정&lt;/b&gt;을 의미,&lt;br /&gt;암호화의 역과정으로 암호화 평문으로 복원하는 것을 복호화라고 함&lt;/li&gt;
&lt;li&gt;키의 종류에 따른 암호화 방식으로는 DES로 대표되는 &lt;b&gt;대칭 키 암호화 방식&lt;/b&gt;과 RSA로 대표되는 &lt;b&gt;공개 키 암호화 방식&lt;/b&gt;이 있음&lt;/li&gt;
&lt;li&gt;디지털 서병은 네트워크상에서 문서나 메세지를 송수신할 때 &lt;b&gt;디지털 문서에 서명자 인증, 문서의 위/변조 방지, 송신 부인 방지 등의 기능을 제공&lt;/b&gt;하는 암호화 기술을 사용하여 서병하는 방법&lt;/li&gt;
&lt;li&gt;인터넷 보안을 위해 사용되는 주요 기술로는 &lt;b&gt;웹 보안 프로토콜을 사용하는 방법, 방화벽을 사용하는 방법, 프록시 서버를 사용하는 방법&lt;/b&gt;이 있음&lt;/li&gt;
&lt;li&gt;방화벽은 네트워크와 네트워크 사이에 송/수신 되는 패킷을 검사하여 &lt;b&gt;조건에 맞는 패킷들만 통과&lt;/b&gt;시키는 소프트웨어나 하드웨어를 총칭함&lt;/li&gt;
&lt;li&gt;프록시 서버는 &lt;b&gt;내부 네트워크에 있는 클라이언트를 대신하여 인터넷에 접속&lt;/b&gt;, 클라이언트가 요청한 통신 서비스의 결과를 클라이언트에게 제공하는 서버임&lt;/li&gt;
&lt;/ol&gt;
&lt;h6&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/h6&gt;</description>
      <category>Computer Science/Network</category>
      <category>RSA</category>
      <category>공개 키</category>
      <category>네트워크</category>
      <category>대치암호</category>
      <category>대칭키</category>
      <category>보안</category>
      <category>복호화</category>
      <category>암호화</category>
      <category>인터넷</category>
      <category>전치암호</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/152</guid>
      <comments>https://dev-log-island.tistory.com/152#entry152comment</comments>
      <pubDate>Sun, 12 Jun 2022 11:31:01 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 보안 - I</title>
      <link>https://dev-log-island.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;인터넷의 보편화로 언제 어디에서든 자신이 필요로 하는 정보를 검색, 접근 활용이 쉬워지면서&lt;br /&gt;도용, 위/변조, 불순한 침입 등과 같은 역기능 문제가 대두됨.&lt;br /&gt;정보통신망에서 보안의 필요성과 네트워크 보안의 요구 사항과 네트워크 보안을 위협하는 제 3자, 통신 담당자, 악성 프로그램, 기타 위협 요소 등을 알아 봄&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기밀성 (confidentiality)&lt;/b&gt; :&lt;br /&gt;정보가 허가되지 않은 사용자에게 노출되지 않는 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무결성 (integrity)&lt;/b&gt; :&lt;br /&gt;정보가 권한이 없는 사용자에 의해 변경되지 않는 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가용성 (availavility)&lt;/b&gt; :&lt;br /&gt;합법적인 사용자가 정보시스템의 데이터와 자원에 접근하여 사용할 수 있는 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;부인 방지&lt;/b&gt; :&lt;br /&gt;데이터의 송신이나 수신 사실을 확인함으로써 송수싱 사실을 부인할 수 없도록 하는 것&lt;/li&gt;
&lt;li&gt;&lt;b&gt;웜 (worm)&lt;/b&gt; :&lt;br /&gt;네트워크를 통하여 자기 자신을 복제하며 전파할 수 있는 프로그램&lt;/li&gt;
&lt;li&gt;&lt;b&gt;피싱 (phishing)&lt;/b&gt; :&lt;br /&gt;인터넷에서 스팸메일을 이용한 범죄수법으로, 송신자의 신원을 알리지 않는 메일로 수신자의 개인 정보를 빼낸 뒤 이를 불법적으로 이용하는 범죄&lt;/li&gt;
&lt;li&gt;&lt;b&gt;파밍 (pharming)&lt;/b&gt; :&lt;br /&gt;합법적으로 소유하고 있던 사용자의 도메인을 탈취하거나 도메인 네임 시스템(DNS) 이름을 속여 사용자들이 진짜 사이트로 오인하도록 유도하여 개인 정보를 훔치는 수법&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크 보안 개요&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;필요성&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종이 문서와 전자 문서의 차이&lt;/li&gt;
&lt;li&gt;정보통신망을 통한 문서의 공개&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;보안의 3가지 목표 : 보안 원칙&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기밀성 (confidentiality) :&lt;br /&gt;허가되지 않은 사람에게 정보가 노출되지 않는 것을 보장&lt;/li&gt;
&lt;li&gt;무결성 (integrity) :&lt;br /&gt;허가되지 않은 사람에 의해 정보가 변경되지 않는 것을 보장&lt;/li&gt;
&lt;li&gt;가용성 (availability) :&lt;br /&gt;허가된 사람에게 부당한 지체 없이 정보가 접근되고 사용할 수 있도록 하는 것을 보장&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보안의 종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 보안 :&lt;br /&gt;권한이 없는 사람에 의한 파일 및 장치 등의 사용을 제한함으로써 시스템을 보호
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시스템 보안 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;접근 통제 : 권한이 있는 사용자들에게 접근을 제한&lt;/li&gt;
&lt;li&gt;감시 통제 : 시스템에서의 활동을 감시&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;네트워크 보안 :&lt;br /&gt;내부 네트워크가 인터넷과 같은 외부의 네트워크와 연결되면서 내부 조직의 네트워크 보안이 점점 중요해 짐
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예 ) 인터넷 뱅킹, 전자상거래, 증명서 발금&lt;/li&gt;
&lt;li&gt;권한이 없는 사람의 접근이나 우연 또는 의도적인 방해나 파괴로부터 네트워크를 보호하기 위한 방법&lt;/li&gt;
&lt;li&gt;H/W, S/W, 인위적 보안 조치의 총칭&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;네트워크 보안의 요구 사항&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실체 인증 :&lt;br /&gt;통신에 참여한 실체에 대한 진위 검증&lt;/li&gt;
&lt;li&gt;데이터 무결성 :&lt;br /&gt;데이터가 파괴되거나 변경되지 않도록 보호&lt;/li&gt;
&lt;li&gt;데이터 보안성 :&lt;br /&gt;정보의 비밀 보장, 합법적 사용자의 접근 보호&lt;/li&gt;
&lt;li&gt;데이터 인증 :&lt;br /&gt;데이터가 신뢰할 수 있는 발신처에 전송된 것인지 확인&lt;/li&gt;
&lt;li&gt;부인 방지 :&lt;br /&gt;데이터의 수신이나 전송 사실에 대한 확인&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;네트워크 보안 위협 유형&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유형 분류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사람
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제 3자, 통신 당사자 (송신자, 수신자)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;악성 프로그램
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;바이러스, 웜, 트로이 목마&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;기타
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;phishing, pharming&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제 3자에 의한 불법적인 공격 유형&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가로채기 (interception) : 기밀성 위협
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자가 전송되고 있는 정보를 몰래 열람 또는 도청하는 행위&lt;/li&gt;
&lt;li&gt;예 : 네트워크 상에서 개인 정보 데이터를 부정한 방법으로 복사하거나 도청하는 행위&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;변조 (modification) : 무결성 위협
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자가 시스템에 접근하여 데이터를 조작하여 원래 데이터를 다른 내용으로 바꾸는 행위&lt;/li&gt;
&lt;li&gt;예 : 송수신자가 알아채지 못하도록 전송 중인 메일 내용을 변경하거나 데이터 파일 내의 값들을 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;위조 (fabrication) : 무결성 위협
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자가 거짓 정보나 잘못된 정보를 삽입하여 수신자에게 전송, 수신자가 정당한 송신자로부터 정보를 수신한 것으로 착각하게 만들어 이를 통해 이득을 보려는 행위&lt;/li&gt;
&lt;li&gt;예 : 위조된 메세지를 수신자에게 전송하는 행위&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;방해 (interruption) : 가용성 위협
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신자와 수신자 간의 정보 수신일 원할하게 이루어지지 못하도록 시스템의 일부를 파괴하거나 사용할 수 없게 하는 행위&lt;/li&gt;
&lt;li&gt;예 : 통신회선의 절단이나 파일 관리 시스템의 파손 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;서비스 거부 (Denial of Service; DoS) : 가용성 위협
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공격자가 처리 용량을 넘는 데이터를 전송하여 과도한 부하를 일으켜 시스템을 마비시킴으로써 정당한 이용자가 시스템을 사용하지 못하게 만드는 행위&lt;/li&gt;
&lt;li&gt;예 : 메일 서버 시스템에 엄청난 양의 스팸 메일을 보내 시스템의 원활한 서비스를 방해하는 행위 등&lt;/li&gt;
&lt;li&gt;분산 서비스 거부; Distributed DoS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;통신 당사자 간의 부정 유형&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부정 (사기 ; fraud)&lt;/li&gt;
&lt;li&gt;송신자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신 자체를 부인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;수신자
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수신 자체를 부인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;부인 봉쇄 방법의 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;악성 프로그램&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 바이러스 (computer virus)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터에서 실행되는 일종의 명령어들의 집합으로서 컴퓨터 프로그램이나 데이터 파일을 감염시킴&lt;/li&gt;
&lt;li&gt;감염은 정상 파일에 바이러스 코드를 붙이거나 본래 목적 이외의 작업을 처리하며 동시에 자신을 복제시킴&lt;/li&gt;
&lt;li&gt;증상
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 부팅 시간이 오래 걸리거나 부팅이 안 되는 증상&lt;/li&gt;
&lt;li&gt;프로그램이 오동작하거나 동작 되지 않는 증상&lt;/li&gt;
&lt;li&gt;저장된 데이터가 변조되거나 삭제되는 증상 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;최신 바이러스 백신 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;웜 (worm)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크를 통해서 자신을 복제, 전파할 수 있는 프로그램&lt;/li&gt;
&lt;li&gt;감염시키지 않고도 복제할 수 있음&lt;/li&gt;
&lt;li&gt;감염 경로 : email, P2P, 메신져 등&lt;/li&gt;
&lt;li&gt;주요 피해 유형
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DDoS&lt;/li&gt;
&lt;li&gt;침입자가 시스템에 쉽게 접근할 수 있는 통로 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;트로이 목마 (Trojan horse)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 사용자의 정보를 빼내가기 위한 목적으로 제작된 악성 프로그램&lt;/li&gt;
&lt;li&gt;악성 코드를 유틸리티 프로그램에 내장하여 배포하거나 그 자체를 유틸리티 프로그램으로 위장하여 배포&lt;/li&gt;
&lt;li&gt;자기 복제능력 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기타 위협 요소&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;피싱 (Phishing)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Private Information + Fishing&lt;/li&gt;
&lt;li&gt;인터넷에서 송신자를 알리지 않는 스팸 메일을 이용하여 수신자의 개인 정보를 빼낸 뒤 이를 불법적으로 이용하는 범죄&lt;/li&gt;
&lt;li&gt;예 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거짓 이메일을 통해, 가짜 웹 사이트로 유인, 신상정보 요구&lt;/li&gt;
&lt;li&gt;이벤트, 설문조사 등&lt;/li&gt;
&lt;li&gt;전화를 이용한 피싱도 있음 (voice phising)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;파밍 (Pharming)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Phishing + Farming&lt;/li&gt;
&lt;li&gt;정당한 웹 사이트의 도메인을 탈취하거나 DNS 이름을 속여 미리 정해 놓은 웹사이트로 data traffic을 유인한 뒤, 개인 정보를 빼내 이를 불법적으로 이용하는 범죄&lt;/li&gt;
&lt;li&gt;피싱의 한 유형이지만 더 위협적&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정보 보호의 목표 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기밀성&lt;/b&gt; :&lt;br /&gt;허가되지 않은 사용자에게 노출되지 않는 것을 보장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무결성&lt;/b&gt; :&lt;br /&gt;정보가 권한이 없는 사용자의 악의적 또는 비 악의적인 접근에 의해 변경되지 않는 것을 보장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가용성&lt;/b&gt; :&lt;br /&gt;인가된 사용자가 정보 시스템의 데이터 또는 자원을 필요로 할 때 부당한 지체 없이 원하는 객체 또는 자원을 접근하고 사용할 수 있도록 보장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;보안은
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;시스템 보안&lt;/b&gt; :&lt;br /&gt;권한이 없는 사용자에 의한 파일 및 장치 등의 사용을 제한하여 시스템을 보호&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네트워크 보안&lt;/b&gt; :&lt;br /&gt;권한이 없는 사람의 접근이나 정산 운용시 우연 또는 의도적인 방해나 파괴로부터 네트워크를 보호&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;네트워크 보안의 요구 사항 :&lt;br /&gt;&lt;b&gt;실체 인증, 데이터 무결성, 데이터 보안성, 데이터 인증, 부인 방지&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;네트워크 보안 위협의 유형의 구분 :&lt;br /&gt;&lt;b&gt;제 3자에 의한 불법적인 공격, 통신 당사자 간의 부정, 악성 프로그램의 감염, 기타 유형&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;제 3자의 불법적인 공격에 의한 보안 위협 유형 :&lt;br /&gt;&lt;b&gt;변조, 가로채기, 방해, 위조&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;변조 :&lt;br /&gt;공격자가 시스템에 접근, 데이터를 조작하여 &lt;b&gt;원래의 데이터를 다른 내용으로 바꾸는 행위&lt;/b&gt;&lt;br /&gt;가로채기 :&lt;br /&gt;공격자가 전송되고 있는 &lt;b&gt;정보를 몰래 열람, 또는 도청&lt;/b&gt;하는 행위&lt;/li&gt;
&lt;li&gt;위조 :&lt;br /&gt;공격자가 거짓 정보나 잘못된 정보를 삽입하여 수신자에게 전송하여 수신자가 &lt;b&gt;정당한 송신자로부터 정보를 수신한 것처럼 착각&lt;/b&gt;하도록 만들어 이를 통해 이득을 보려는 행위&lt;br /&gt;방해 :&lt;br /&gt;송신자와 수신자 간의 정보 송수신이 원활하게 이루어 지지 못하도록 &lt;b&gt;시스템의 일부를 파괴하거나 사용할 수 없게 하는 행위&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;서비스 거부(DoS) :&lt;br /&gt;공격자가 처리 용량을 넘는 데이터를 전송하여 과도한 부하를 일으켜 시스템을 마비시킴으로써 정당한 이용자가 시스템을 사용하지 못하게 만드는 행위&lt;/li&gt;
&lt;li&gt;악성 프로그램의 감염에 의한 보안 위협 유형 :&lt;br /&gt;&lt;b&gt;바이러스, 웜, 트로이목마&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;최근 인터넷에서 많이 발생하는 기타 보안 위협 유형 :&lt;br /&gt;&lt;b&gt;피싱, 파밍&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Computer Science/Network</category>
      <category>가용성</category>
      <category>기밀성</category>
      <category>네트워크</category>
      <category>무결성</category>
      <category>보안</category>
      <category>부인 방지</category>
      <category>웜</category>
      <category>인터넷</category>
      <category>파밍</category>
      <category>피싱</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/151</guid>
      <comments>https://dev-log-island.tistory.com/151#entry151comment</comments>
      <pubDate>Sun, 12 Jun 2022 11:23:09 +0900</pubDate>
    </item>
    <item>
      <title>LAN; 근거리 통신망 - II</title>
      <link>https://dev-log-island.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;근거리 통신망은 OSI 참조 모델의 계층화 개념을 이용하고 IEEE 802 위원회에 의한 LAN 프로토콜의 표준화가 진행되면서 계속 발전되고 있음.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MAU&lt;/b&gt; :&lt;br /&gt;매체접근장치 signaling, encoding 기능과 대체를 다루는 기능을 수행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MAC&lt;/b&gt; :&lt;br /&gt;매체접근제어로 LLC와 MAU 사이의 인터페이스 역할, 데이터 전송 매체의 사용권을 모든 노드에게 균등하게 제공하는 기능을 수행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LLC&lt;/b&gt; :&lt;br /&gt;논리링크제어로 MAC에 의해 확보된 데이터 전송권한을 이용해 흐름제어, 오류제어, 순서화 및 연결관리 등의 기능 수행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IBSS&lt;/b&gt; :&lt;br /&gt;Independent Basic Service Set.&lt;br /&gt;무선 LAN의 애드훅(ad-hoc) 통신 방식으로 구성되는 독립적 단위의 무선 LAN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ad-hoc 통신방식이란 무선 LAN의 전파가 도달하는 범위 안에서 무선 LAN 카드를 장착한 노드들끼리 직접 통신하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BSS&lt;/b&gt; :&lt;br /&gt;Basic Service Set.&lt;br /&gt;무선 LAN의 인프라스트럭쳐(infrastructure) 통신 방식에서 하나의 AP(Access Point)를 통해 구성되는 무선 LAN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인프라스트럭쳐 통신 방식이란 무선 LAN 카드를 장착한 노드들이 허브나 라우터에 연결된 AP를 통해서 서로 통신하는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;FDDI&lt;/b&gt; :&lt;br /&gt;Fiber Distributed Data Interface.&lt;br /&gt;광섬유 케이블을 사용하도록 설계된 이중 환형 구조의 LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;LAN 참조 모델&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;OSI 참조 모델과 LAN 참조 모델&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13-01.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTCVSj/btrEAzhZ2ww/7nU09UrGLT5pfodZtsWvb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTCVSj/btrEAzhZ2ww/7nU09UrGLT5pfodZtsWvb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTCVSj/btrEAzhZ2ww/7nU09UrGLT5pfodZtsWvb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTCVSj%2FbtrEAzhZ2ww%2F7nU09UrGLT5pfodZtsWvb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;472&quot; data-filename=&quot;13-01.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;물리계층&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;물리 매체 (cable)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;케이블을 통해 전기적 신호를 전달하는 역할 수행&lt;/li&gt;
&lt;li&gt;twisted pair cable, coaxial cable, optical fiber, electric wave&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;매체 접근 장치 (MAU)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;signaling, encoding 기능과 매체를 다루는 기능 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터링크 계층&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매체 접근 제어 (MAC)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MAU와 LLC 사이의 인터페이스&lt;/li&gt;
&lt;li&gt;데이터 전송 매체의 사용권을 모든 노드에게 균등하게 제공하는 기능 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;논리링크 제어 (LLC)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MAC에 의해 확보된 데이터 전송 권한을 이용해 흐름제어, 오류제어, 순서화 및 연결관리 등의 기능 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN의 논리 링크 제어&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;논리링크제어 (LLC) 계층&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중간 노드 없이 인접 두 노드 사이의 데이터 전송&lt;/li&gt;
&lt;li&gt;OSI 참조모델의 데이터링크 계층&lt;/li&gt;
&lt;li&gt;차이
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LLC는 다중접근을 지원&lt;/li&gt;
&lt;li&gt;매체제어는 MAC에서 해결하므로 LLC는 관여하지 않음&lt;/li&gt;
&lt;li&gt;데이터링크 계층 기능의 일부만 수행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN 관련 표준&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IEEE 802 프로토콜&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13-02.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSxNjO/btrExH18MlI/HSDlvMYF1kaGKpG0RsRDJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSxNjO/btrExH18MlI/HSDlvMYF1kaGKpG0RsRDJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSxNjO/btrExH18MlI/HSDlvMYF1kaGKpG0RsRDJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSxNjO%2FbtrExH18MlI%2FHSDlvMYF1kaGKpG0RsRDJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;866&quot; height=&quot;458&quot; data-filename=&quot;13-02.png&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;무선 LAN&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;적외선이나 전파를 사용하여 노드들을 연결한 LAN&lt;/li&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이동 중에도 통신할 수 있음&lt;/li&gt;
&lt;li&gt;빠른 시간 내에 네트워크 구축 가능&lt;/li&gt;
&lt;li&gt;노드들의 배치에 영향을 받지 않음&lt;/li&gt;
&lt;li&gt;복잡한 배선의 번거로움 제거 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유선보다 전송속도가 느림&lt;/li&gt;
&lt;li&gt;간섭 발생 가능성 높음&lt;/li&gt;
&lt;li&gt;보안에 취약함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송 매체&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;적외선 기술 사용&lt;/li&gt;
&lt;li&gt;대부분 무선 LAN은 2.4GHz ~ 5GHz대의 주파수 대역 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;무선 LAN의 종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;802.11a
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;5.7 GHz 주파수 사용&lt;/li&gt;
&lt;li&gt;최대 54 Mbps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;802.11b
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2.4 GHz 주파수 사용&lt;/li&gt;
&lt;li&gt;최대 11 Mbps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;802.11g
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2.4 GHz&lt;/li&gt;
&lt;li&gt;최대 54 Mbps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;802.11n
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2.4 GHz || 5 GHz&lt;/li&gt;
&lt;li&gt;최대 600 Mbps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;무선 LAN의 통신 방식&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;AD HOC&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무선 LAN의 전파가 도달하는 범위 안에서 무선 LAN 카드를 장착한 노드들끼리 직접 통신하는 방식&lt;/li&gt;
&lt;li&gt;IBSS (Independent Basic Service Set) 라는 독립적 단위로 단독 네트워크 구성&lt;/li&gt;
&lt;li&gt;하나의 IBSS 내의 노드들 끼리는 서로 통신 가능, 다른 IBSS 와는 데이터 송수신 불가능&lt;/li&gt;
&lt;li&gt;&quot;특별한 목적을 위해서&quot;라는 뜻의 라틴어
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정한 문제나 일을 위해 만들어진 관습적인 해결책&lt;/li&gt;
&lt;li&gt;일반화 할 수 없는 해결책&lt;/li&gt;
&lt;li&gt;어떤 다른 목적에 적응시킬수 없는 해결책&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13-03.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BxyGL/btrExGCbn0P/QXrDKtC88M2a0B6LZoUeaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BxyGL/btrExGCbn0P/QXrDKtC88M2a0B6LZoUeaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BxyGL/btrExGCbn0P/QXrDKtC88M2a0B6LZoUeaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBxyGL%2FbtrExGCbn0P%2FQXrDKtC88M2a0B6LZoUeaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1288&quot; height=&quot;568&quot; data-filename=&quot;13-03.png&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인프라스트럭쳐&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무선 LAN 카드를 장착한 노드들이나 허브나 라우터와 연결된 AP (Access Point)를 통해 서로 통신하는 방식&lt;/li&gt;
&lt;li&gt;BSS (Basic Service Set)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하나의 AP로 구성되는 무선 LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ESS (Extended Service Set)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서로 연결된 BSS들의 집합을 하나의 BSS 처럼 보이도록 만든 무선 LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13-04.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZQQNX/btrEznPD1Ty/ltYbHrR6uA7Ob7qKVCXnK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZQQNX/btrEznPD1Ty/ltYbHrR6uA7Ob7qKVCXnK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZQQNX/btrEznPD1Ty/ltYbHrR6uA7Ob7qKVCXnK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZQQNX%2FbtrEznPD1Ty%2FltYbHrR6uA7Ob7qKVCXnK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;882&quot; height=&quot;494&quot; data-filename=&quot;13-04.png&quot; data-origin-width=&quot;882&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;고속 LAN&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고속 LAN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 LAN 프로토콜을 이용하면서 100 Mbps 이상의 속도를 지원하는 LAN&lt;/li&gt;
&lt;li&gt;Fast Ethernet, Gigabit Ethernet, FDDI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LAN의 전송 속도
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;80's : 이더넷 10 Mbps, 토큰링 16 Mbps&lt;/li&gt;
&lt;li&gt;90's : 고속 이더넷 100 Mbps, FDDI 100 Mbps&lt;/li&gt;
&lt;li&gt;90 말 : 기가비트 이더넷 1 Gbps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;고속 이더넷&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 이더넷 기술(10 Mbps)를 발전시켜 100 Mbps를 지원하는 fast ethernet&lt;/li&gt;
&lt;li&gt;기존 이더넷과 거의 동일하거나, 전송 가능한 케이블의 최대 길이를 줄임으로써 속도 향상&lt;/li&gt;
&lt;li&gt;매체 접근 방식 : CSMA / CD (IEEE 802.3u)&lt;/li&gt;
&lt;li&gt;종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;100 BASE-TX : 주로 성형 LAN; CAT.5 UTP (최대 100m)&lt;/li&gt;
&lt;li&gt;100 BASE-T4 : 100BASE-TX와 유사; CAT.3, 4 UTP (최대 100m)&lt;/li&gt;
&lt;li&gt;100 BASE-FX : 광섬유 (최대 400m)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;용어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CAT : Category&lt;/li&gt;
&lt;li&gt;UTP : unshielded twisted pair&lt;/li&gt;
&lt;li&gt;STP : shielded twisted pair&lt;/li&gt;
&lt;li&gt;FTP : foil twisted pair&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OdO4M/btrEvmSdUdi/DSlVMhN5XyrlkuQKKoQ191/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/OdO4M/btrEvmSdUdi/DSlVMhN5XyrlkuQKKoQ191/img.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;182&quot; data-filename=&quot;13-05.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fk9nc/btrEAzoKQ41/H3jZF3KK0vG2HKZsPakRJk/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/Fk9nc/btrEAzoKQ41/H3jZF3KK0vG2HKZsPakRJk/img.png&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;452&quot; data-filename=&quot;13-06.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7LUyD/btrEAzWCgnA/462dtcXAsckKo7JjRpCMxk/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/7LUyD/btrEAzWCgnA/462dtcXAsckKo7JjRpCMxk/img.png&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;624&quot; data-filename=&quot;13-07.png&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기가비트 이더넷&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 Ethernet과 최대한 호환성을 유지하며 1 Gbps 속도를 지원하는 Ethernet&lt;/li&gt;
&lt;li&gt;종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1000 BASE-X (IEEE 802.3z)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1000BASE-SX (광섬유, 단파장 레이져)&lt;/li&gt;
&lt;li&gt;1000BASE-LX (광섬유, 장파장 레이져)&lt;/li&gt;
&lt;li&gt;1000BASE-CX (동축케이블, 25m 이내 단거리 전송)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1000 BASE-T (IEEE 802.3ab)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 Gbps의 속도로 최대 100m까지 전송 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IEEE 802.3ae 표준 활동
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;10 Gbps Ethernet (광섬유 이용)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;FDDI&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Fiber Distributed Data Interface&lt;/li&gt;
&lt;li&gt;100 Mbps 전송 속도 제공&lt;/li&gt;
&lt;li&gt;ANSI 표준 -&amp;gt; ISO 표준&lt;/li&gt;
&lt;li&gt;광섬유 케이블을 이용하는 이중 링 구조의 LAN&lt;/li&gt;
&lt;li&gt;2 개의 링이 token passing 방식으로 운용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정해진 규칙에 따라 1 개의 링을 선택하여 사용&lt;/li&gt;
&lt;li&gt;multi token 방식 이용&lt;/li&gt;
&lt;li&gt;전송 방향이 서로 반대&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;13-08.png&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1pcEG/btrEyv1ujMW/pXgBp96l0urxKeTFonx0u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1pcEG/btrEyv1ujMW/pXgBp96l0urxKeTFonx0u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1pcEG/btrEyv1ujMW/pXgBp96l0urxKeTFonx0u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1pcEG%2FbtrEyv1ujMW%2FpXgBp96l0urxKeTFonx0u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;802&quot; height=&quot;514&quot; data-filename=&quot;13-08.png&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LAN 참조 모델은 기본적으로 OSI 참조 모델에서 제시된 계층화 개념을 이용하며 7계층 중에서 &lt;b&gt;하위 2계층만을 대상&lt;/b&gt;으로 하고, 나머지 상위 계층은 OSI 참조모델을 그대로 따름&lt;/li&gt;
&lt;li&gt;LAN 참조 모델은 OSI 참조 모델의 데이터링크 계층을 두 노드 간에 오류제어와 흐름제어를 통한 데이터 프레임 전송 기능을 담당하는 &lt;b&gt;LCC(Logical Link Control)&lt;/b&gt;와 충돌을 피하기 위한 공유 매체 접근 제어 기능을 담당하는 &lt;b&gt;MAC (Medium Access Control)&lt;/b&gt;으로 세분화 함&lt;/li&gt;
&lt;li&gt;LAN의 표준화는 IEEE 802 위원회에서 추진,
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;802.2 : LCC 프로토콜&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;802.3 : CSMA/CD&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;802.4 : 토큰 버스 프로토콜&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;802.5 : 토큰 링 프로토콜&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;무선 LAN은 적외선이나 전파를 전송 매체로 사용하며, 통신 방식은 &lt;b&gt;애드훅 방식&lt;/b&gt;과 &lt;b&gt;인프라스트럭쳐 방식&lt;/b&gt;으로 나뉨.&lt;br /&gt;무선 LAN에 관한 표준은 802.11 작업 그룹에서 제정함&lt;/li&gt;
&lt;li&gt;고속 LAN은 &lt;b&gt;100Mbps 이상의 전송속도를 지원&lt;/b&gt;, &lt;b&gt;고속 이더넷, 기가비트 이더넷, FDDI&lt;/b&gt; 등이 있음&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Computer Science/Network</category>
      <category>bss</category>
      <category>fddi</category>
      <category>IBSS</category>
      <category>LAN</category>
      <category>LLC</category>
      <category>mac</category>
      <category>Mau</category>
      <category>Wan</category>
      <category>네트워크</category>
      <category>인터넷</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/150</guid>
      <comments>https://dev-log-island.tistory.com/150#entry150comment</comments>
      <pubDate>Sun, 12 Jun 2022 11:21:52 +0900</pubDate>
    </item>
    <item>
      <title>LAN; 근거리 통신망 - I</title>
      <link>https://dev-log-island.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;대학이나 연구소, 기업 등에 가장 많이 구축되어 있고 고속의 정보전송을 지원하지만&lt;br /&gt;지역적인 범위가 짧은 통신망으로 근거리 통신망(LAN)이 존재함.&lt;br /&gt;근거리 통신망들은 서로 연결시켜 확장시켜 나감으로써 원거리 통신망이나 인터넷 등을 구성하게 됨.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;LAN&lt;/b&gt; :&lt;br /&gt;다수의 독립된 컴퓨터 기기들의 상호 통신이 가능하도록 해 주는 데이터 통신 시스템으로 좁은 지역 내에서 다양한 통신 기기의 상호 연결을 가능하게 하는 네트워크 (Local Area Network)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WAN&lt;/b&gt; :&lt;br /&gt;둘 이상의 LAN이 넓은 지역에 걸쳐 연결되어 있는 네트워크, 일반적으로 지역과 지역, 국가와 국가간을 서로 연결하는 네트워크 (Wide Area Network)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;베이스밴드 방식&lt;/b&gt; :&lt;br /&gt;통신회선에 컴퓨터 내부 코드에 해당하는 디지철 신호를 변조하지 않고 직접 그대로 통신회선을 통해 전송하는 방식으로 하나의 고속 전송 채널만 사용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;브로드밴드 방식&lt;/b&gt; :&lt;br /&gt;디지털 신소를 아날로그 신호로 변조하여 단방향으로 전송하는 방식으로 송신 채널과 수신 채널이 각각 별도로 필요함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CSMA/CD 방식&lt;/b&gt; :&lt;br /&gt;최대한 충돌 없이 많은 양의 정보를 전송하기 위해 노드가 통신회선의 사용 상태점검을 통해 충돌을 감지하는 매체 접근 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;토큰링 방식&lt;/b&gt; :&lt;br /&gt;환형 형태의 위상을 가진 네트워크를 구성한 후 토큰이라 불리는 제어신호를 사용하여 토큰을 가진 노드만 데이터를 전송할 수 있도록 하는 매체 접근 제어 방식&lt;/li&gt;
&lt;li&gt;&lt;b&gt;토큰버스 방식&lt;/b&gt; :&lt;br /&gt;이더넷과 토큰링의 특징을 결합한 것으로, 물리적으로는 버스형으로 구성되고 논리적으로는 토큰링 방식을 사용하여 매체 접근을 제어&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;근거리 통신망 개요&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN의 정의&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Local Area Network&lt;/li&gt;
&lt;li&gt;IEEE 컴퓨터 표준 위원회
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;다수의 독립된 컴퓨터 기기들의 상호 통신이 가능하도록 해 주는 데이터 통신 시스템&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;William Stallings
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;좁은 지역 내에서 다양한 통신기기의 상호 연결을 가능하게 하는 네트워크&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kenneth J. Thuber &amp;amp; Harvey A. Freeman
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LAN의 4가지 특성
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 기관의 소유&lt;/li&gt;
&lt;li&gt;수마일 범위 이내의 지역으로 한정&lt;/li&gt;
&lt;li&gt;어떠한 종류의 교환 기술을 사용해야 함&lt;/li&gt;
&lt;li&gt;WAN과 비교하여 &lt;b&gt;고속통신&lt;/b&gt;이 가능해야 함&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-01.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RoYOm/btrEvlTgsks/5Z3OQRapoDkxMtCjJuYFBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RoYOm/btrEvlTgsks/5Z3OQRapoDkxMtCjJuYFBk/img.png&quot; data-alt=&quot;LAN의 정의&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RoYOm/btrEvlTgsks/5Z3OQRapoDkxMtCjJuYFBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRoYOm%2FbtrEvlTgsks%2F5Z3OQRapoDkxMtCjJuYFBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;674&quot; data-filename=&quot;12-01.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LAN의 정의&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br /&gt;&lt;img src=&quot;img/12-01.png&quot; alt=&quot;LAN의 정의&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN의 역사&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;50 ~ 60년대 전반
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전반적으로 일괄처리(batch process) 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;60년 후반
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터의 소자가 트랜지스터에서 집적회로로 전환되면서 컴퓨터를 통한 정보처리 속도 향상&lt;/li&gt;
&lt;li&gt;공간적 제약을 벗어나 정보통신 시대를 열었음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;70년대
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 수요 증가 및 미니 컴퓨터 성능 개선&lt;/li&gt;
&lt;li&gt;조직적인 네트워크 구조가 필요함에 따라 미니 컴퓨터를 연결시킬 수 있도록 WAN의 출현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;80년대
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개인용 컴퓨터가 대량으로 생산되기 시작&lt;/li&gt;
&lt;li&gt;여러 기기의 상호 연결의 편리성을 위해 LAN 등장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;90년대 이후
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 LAN의 속도를 향상시킨 &lt;b&gt;고속 LAN&lt;/b&gt; 등장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;현재
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이동성과 편의성 등의 이유로 적외선이나 전파를 전송 매체로 활용하는 &lt;b&gt;무선 LAN&lt;/b&gt; 활성화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;근거리 통신망의 특성 및 효과&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN의 특성&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 기관의 소유&lt;/li&gt;
&lt;li&gt;광대역 전송매체의 사용으로 &lt;b&gt;고속통신&lt;/b&gt; 가능&lt;/li&gt;
&lt;li&gt;네트워크 내의 어떤 기기와도 전송 가능&lt;/li&gt;
&lt;li&gt;패킷 지연의 최소화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라우팅의 필요 없음&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;낮은 오류율&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확장성과 재배치성&lt;/b&gt;이 좋음&lt;/li&gt;
&lt;li&gt;종합적인 정보처리능력을 가짐&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LAN의 효과&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정보자원의 공유&lt;/li&gt;
&lt;li&gt;정보의 실시간 처리 및 정보 자원의 일관성&lt;/li&gt;
&lt;li&gt;비용 절감&lt;/li&gt;
&lt;li&gt;이기종 간의 통신&lt;/li&gt;
&lt;li&gt;N : N 접속 기능 지원&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;근거리 통신망의 분류&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;위상에 의한 분류&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-02.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9h0pc/btrEuVNdwjk/BXO5FzjfEoLiUwRmjcVyFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9h0pc/btrEuVNdwjk/BXO5FzjfEoLiUwRmjcVyFK/img.png&quot; data-alt=&quot;위상에 의한 분류&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9h0pc/btrEuVNdwjk/BXO5FzjfEoLiUwRmjcVyFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9h0pc%2FbtrEuVNdwjk%2FBXO5FzjfEoLiUwRmjcVyFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;488&quot; data-filename=&quot;12-02.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위상에 의한 분류&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;성형 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중앙의 제어기와 모든 노드가 점대점 방식으로 연결
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고장의 발견이 쉽고 유지보수 용이&lt;/li&gt;
&lt;li&gt;한 노드의 고장이 전체 네트워크에 미치는 영향이 적음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중앙 제어기의 고장은 전체 네트워크의 마비 초래&lt;/li&gt;
&lt;li&gt;LAN 설치의 초기 비용이 많이 소요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;버스형 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버스 (하나의 긴 통로)가 모든 노드를 연결
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LAN 설치가 쉽고 초기 비용도 적게 소요&lt;/li&gt;
&lt;li&gt;한 노드의 고장이 네트워크의 다른 부분에 전혀 영향을 끼치지 않음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;베이브 밴드 전송 방식을 사용할 경우 전송거리가 멀어지면 신호의 세기가 급격히 약해짐
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;repeater 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;환형 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 노드가 양쪽 노드와 점대점 방식으로 연결&lt;/li&gt;
&lt;li&gt;신호는 보통 한 방향으로만 전송
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 및 재구성이 쉬움&lt;/li&gt;
&lt;li&gt;성형보다 구축 비용이 적게 소모&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드의 추가시 통신선로의 절단이 필요, 환형 형태의 통신을 제어하기가 복잡함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;트리형 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계층형 LAN&lt;/li&gt;
&lt;li&gt;성형 LAN의 변형&lt;/li&gt;
&lt;li&gt;장단점은 성형 LAN과 유사&lt;/li&gt;
&lt;li&gt;성형 LAN에 비해 많은 노드를 연결시킬 수 있고 노드간 전송 거리도 증가 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송 매체에 의한 분류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;꼬임선 케이블 (twisted pair cable LAN)&lt;/li&gt;
&lt;li&gt;동축 케이블 (coaxial cable LAN)&lt;/li&gt;
&lt;li&gt;광섬유 (optical fiber cable LAN)&lt;/li&gt;
&lt;li&gt;무선 (wireless LAN)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송 방식에 의한 분류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;베이스밴드 LAN&lt;/li&gt;
&lt;li&gt;브로드밴드 LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;베이스밴드 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디지털 신호를 직접 전송
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;신호 감쇠 현상 -&amp;gt; 최대 1km 마다 리피터 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;하나의 고속(10Mps 이상) 전송 채널만 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;양방향 전송 가능&lt;/li&gt;
&lt;li&gt;전송 효율을 위해 시분할 다중화 방식 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;twisted pair cable 또는 coaxial cable 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;브로드밴드 LAN&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디지털 신호를 아날로그 신호로 변조하여 전송&lt;/li&gt;
&lt;li&gt;단방향 전송 방식
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신 채널과 수신 채널이 각각 별도로 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;주파수 분할 다중화
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RF (Radio Frequency) 모뎀 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;coaxial cable 또는 광섬유 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;매체 접근 방법에 의한 분류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CSMA/CD LAN&lt;/li&gt;
&lt;li&gt;Token Ring LAN&lt;/li&gt;
&lt;li&gt;TOken Bus LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;CSMA/CD&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Carrier Sense Multiple Access / Collision Detection&lt;/li&gt;
&lt;li&gt;IEEE 802.3&lt;/li&gt;
&lt;li&gt;Ethernet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-03.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HwVzk/btrEwyDHTvI/dRVOPQ8ZlKxD8UvZx1Msk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HwVzk/btrEwyDHTvI/dRVOPQ8ZlKxD8UvZx1Msk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HwVzk/btrEwyDHTvI/dRVOPQ8ZlKxD8UvZx1Msk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHwVzk%2FbtrEwyDHTvI%2FdRVOPQ8ZlKxD8UvZx1Msk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;516&quot; data-filename=&quot;12-03.png&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;CSMA/CD를 사용하는 LAN의 종류
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-04.png&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rix0D/btrEvnjhxDc/bf1R6eJMHo60ATwTXfumw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rix0D/btrEvnjhxDc/bf1R6eJMHo60ATwTXfumw0/img.png&quot; data-alt=&quot;CSMA/CD를 사용하는 LAN의 종류&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rix0D/btrEvnjhxDc/bf1R6eJMHo60ATwTXfumw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frix0D%2FbtrEvnjhxDc%2Fbf1R6eJMHo60ATwTXfumw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;934&quot; height=&quot;316&quot; data-filename=&quot;12-04.png&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CSMA/CD를 사용하는 LAN의 종류&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ether 표기 : n BASE(BROAD) m - x
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n : 전송속도 (Mbps 단위)&lt;/li&gt;
&lt;li&gt;BASE / BROAD (Baseband / Broadband)&lt;/li&gt;
&lt;li&gt;m : 전송 거리 (100m 단위)&lt;/li&gt;
&lt;li&gt;x : 전송매체 (T : TP, C : CC, F : OF)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;토큰링&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;토큰링(token passing ring)은 &lt;b&gt;환형&lt;/b&gt; 형태의 위상을 가진 네트워크를 구성한 후&lt;br /&gt;토큰(&lt;b&gt;token&lt;/b&gt;)을 가진 노드만이 데이터를 전송할 수 있도록 하는 매체접근 제어 방식&lt;/li&gt;
&lt;li&gt;IEEE 802.5&lt;/li&gt;
&lt;li&gt;IBM 사의 Ring-LAN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-05.png&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv59sl/btrEuEkBX3f/Pdbq41BE1IZphqqLIa4WVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv59sl/btrEuEkBX3f/Pdbq41BE1IZphqqLIa4WVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv59sl/btrEuEkBX3f/Pdbq41BE1IZphqqLIa4WVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv59sl%2FbtrEuEkBX3f%2FPdbq41BE1IZphqqLIa4WVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;862&quot; height=&quot;378&quot; data-filename=&quot;12-05.png&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-06.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btF2sL/btrEznB5X4L/dWqnxckrC91W4DGV0cn5nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btF2sL/btrEznB5X4L/dWqnxckrC91W4DGV0cn5nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btF2sL/btrEznB5X4L/dWqnxckrC91W4DGV0cn5nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtF2sL%2FbtrEznB5X4L%2FdWqnxckrC91W4DGV0cn5nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;868&quot; height=&quot;380&quot; data-filename=&quot;12-06.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-07.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQKQIl/btrEzIFOE8W/tMH36VlKQeYR7yf0PwU6q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQKQIl/btrEzIFOE8W/tMH36VlKQeYR7yf0PwU6q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQKQIl/btrEzIFOE8W/tMH36VlKQeYR7yf0PwU6q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQKQIl%2FbtrEzIFOE8W%2FtMH36VlKQeYR7yf0PwU6q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;864&quot; height=&quot;376&quot; data-filename=&quot;12-07.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-08.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6huYs/btrEAyXGqJY/PIivllzGqhq4y14z2Kknfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6huYs/btrEAyXGqJY/PIivllzGqhq4y14z2Kknfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6huYs/btrEAyXGqJY/PIivllzGqhq4y14z2Kknfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6huYs%2FbtrEAyXGqJY%2FPIivllzGqhq4y14z2Kknfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;864&quot; height=&quot;376&quot; data-filename=&quot;12-08.png&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;토큰 버스&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;토큰버스 (token passing bus) LAN은 Ethernet 과 Token ring의 특징을 결합한 형태&lt;/li&gt;
&lt;li&gt;물리적 구성은 버스형, 논리적으로는 토큰링 방식&lt;/li&gt;
&lt;li&gt;IEEE 802.4&lt;/li&gt;
&lt;li&gt;Data Point사의 ARCNET&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;12-09.png&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ebhk9O/btrEuFw43Fg/r8jdpO8PvHNUKW8oIIjoa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ebhk9O/btrEuFw43Fg/r8jdpO8PvHNUKW8oIIjoa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ebhk9O/btrEuFw43Fg/r8jdpO8PvHNUKW8oIIjoa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Febhk9O%2FbtrEuFw43Fg%2Fr8jdpO8PvHNUKW8oIIjoa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;814&quot; height=&quot;482&quot; data-filename=&quot;12-09.png&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;근거리 통신망(LAN)이란 건물/대학/연구소 등의 제한된 지역 내에서 여러 건물들을 연결하여 기존의 문자 데이터 뿐만 아니라 음성, 영상, 비디오 등의 종합적인 정보를 &lt;b&gt;고속으로 전송&lt;/b&gt;할 수 있는 고도의 정보 네트워크를 의미함.&lt;/li&gt;
&lt;li&gt;LAN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단일기관의 소유&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;광대역 전송매체의 사용으로 &lt;b&gt;고속통신이 가능&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;네트워크 내의 &lt;b&gt;어떤 기기와도 전송이 가능&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;패킷 지연이 최소화&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라우팅이 필요 없고, 낮은 오류율&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확장성과 재배치성&lt;/b&gt;이 좋음&lt;/li&gt;
&lt;li&gt;종합적인 정보처리능력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;근거리 통신망에 의해 정보 네트워크를 구축하여 얻을수 있는 효과로는 정보자원의 공유, 정보의 실시간 처리 및 정보자원의 일관성, 비용절감, 다른 기종간의 통신, N : N 접속 기능의 지원 등이 있음&lt;/li&gt;
&lt;li&gt;근거리 통신망은 &lt;b&gt;위상, 전송매체, 전송방식, 배체 접근 방법&lt;/b&gt; 등에 의하여 분류 가능&lt;/li&gt;
&lt;li&gt;근거리 통신망은 위상에 의하여 &lt;b&gt;성형, 버스형, 트리형, 환형&lt;/b&gt;으로 구분되고 사용되는 전송 매체에 따라 &lt;b&gt;꼬임선 케이블 LAN, 동축 케이블 LAN, 광섬유 LAN, 무선 LAN&lt;/b&gt;등으로 구분됨&lt;/li&gt;
&lt;li&gt;근거리 통신망은 전송 방식에 따라 &lt;b&gt;베이스 밴드 LAN과 브로드 밴드 LAN&lt;/b&gt;으로 구분되고 매체 접근 방식에 따라 &lt;b&gt;CSMA/CD LAN과 토큰링 LAN, 토큰버스 LAN&lt;/b&gt;으로 구분됨&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Computer Science/Network</category>
      <category>CSMA</category>
      <category>Internet</category>
      <category>LAN</category>
      <category>Network</category>
      <category>Wan</category>
      <category>근거리</category>
      <category>네트워크</category>
      <category>인터넷</category>
      <category>토큰링</category>
      <category>통신망</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/149</guid>
      <comments>https://dev-log-island.tistory.com/149#entry149comment</comments>
      <pubDate>Sun, 12 Jun 2022 11:17:28 +0900</pubDate>
    </item>
    <item>
      <title>TCP/IP - III</title>
      <link>https://dev-log-island.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ARP, RARP 주소 변환 프로토콜 .&lt;br /&gt;ICMP IP 데이터그램 전송의 오류제어를 위한 프로토콜.&lt;br /&gt;IGMP 그룹 내의 호스트들에게 멀티캐스팅 전송을 가능케 하는 프로토콜.&lt;br /&gt;IP 주소 관리 방법들과 동적으로 IP 주소를 할당해주는 DHCP.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ARP&lt;/b&gt; :&lt;br /&gt;상대방 호스트의 IP 주소를 알고 데이터 통신을 위해 그 호스트의 물리 주소를 알고자 할 때 사용하는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RARP&lt;/b&gt; :&lt;br /&gt;물리주소만 알고 있는 호스트가 자신의 IP 주소를 찾을 때 사용하는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ICMP&lt;/b&gt; :&lt;br /&gt;인터넷에서 IP를 대신하여 오류 또는 제어 메세지를 제공하는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IGMP&lt;/b&gt; :&lt;br /&gt;IP 호스트가 어떤 멀티캐스트 그룹에 참가하고 있는지를 멀티캐스트 라우터에 통보하는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DHCP&lt;/b&gt; :&lt;br /&gt;IP 주소를 중앙에서 관리하고 개별 클라이언트들에게 자동으로 IP 주소를 할당해 주는 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;BOOTP&lt;/b&gt; :&lt;br /&gt;디스크가 없는 호스트(X terminal)에 대해 주소 및 설정 정보를 자동적으로 할당하고 관리하는 프로토콜&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주소변환&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-01.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkYHek%2FbtrEw8FCHFy%2FdHw1nkQP1iRr14nlMZgtz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;760&quot; data-filename=&quot;11-01.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ARP&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Address Resolution Protocol
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상대방 호스트의 IP 주소를 알고 데이터 통신을 위해 그 호스트의 물리 주소를 알고자 할 때 사용하는 프로토콜&lt;/li&gt;
&lt;li&gt;IP 주소를 물리주소로 매핑해 주는 프로토콜&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;동적 바인딩&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ARP는 호스트의 IP 주소를 대응하는 물리 주소로 변환하여 실제 데이터 통신이 가능하게 함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP 주소 : 32 bit (4 byte)&lt;/li&gt;
&lt;li&gt;물리주소 : 48 bit (6 byte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ARP 요청 : broadcasting&lt;/li&gt;
&lt;li&gt;ARP 응답 : unicasting&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ARP 프로토콜&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;request 동작&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-02.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bleBFr/btrExH18a17/GcEbOnHskj5Zpz2nPMC7r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bleBFr/btrExH18a17/GcEbOnHskj5Zpz2nPMC7r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bleBFr/btrExH18a17/GcEbOnHskj5Zpz2nPMC7r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbleBFr%2FbtrExH18a17%2FGcEbOnHskj5Zpz2nPMC7r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1132&quot; height=&quot;630&quot; data-filename=&quot;11-02.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;reply 동작&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-03.png&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgIKti/btrEzoOAgRF/7SRM8CU6blLrjCkee2G8ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgIKti/btrEzoOAgRF/7SRM8CU6blLrjCkee2G8ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgIKti/btrEzoOAgRF/7SRM8CU6blLrjCkee2G8ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgIKti%2FbtrEzoOAgRF%2F7SRM8CU6blLrjCkee2G8ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1114&quot; height=&quot;632&quot; data-filename=&quot;11-03.png&quot; data-origin-width=&quot;1114&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;proxy ARP&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-04.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhUGRS/btrEzoHMSYM/Btai2tYMgvClO3Ihs6IXn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhUGRS/btrEzoHMSYM/Btai2tYMgvClO3Ihs6IXn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhUGRS/btrEzoHMSYM/Btai2tYMgvClO3Ihs6IXn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhUGRS%2FbtrEzoHMSYM%2FBtai2tYMgvClO3Ihs6IXn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1072&quot; height=&quot;524&quot; data-filename=&quot;11-04.png&quot; data-origin-width=&quot;1072&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;RARP&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Reverse Address Resolution Protocol
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;물리주소만 알고 있는 호스트가 자신의 IP 주소를 찾을 때 사용되는 프로토콜&lt;/li&gt;
&lt;li&gt;일반적으로 호스트의 IP 주소는 자신의 디스크에 저장된 구성 파일에서 확인&lt;/li&gt;
&lt;li&gt;디스크가 없는 호스트는 물리주소만 알고 있으므로 이를 이용하여 IP 주소를 얻고자 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;RARP 프로토콜&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RARP request 동작&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-05.png&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rJOAb/btrEyuBtzBw/hpjOv0qEFm9jcg8x1TxDwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rJOAb/btrEyuBtzBw/hpjOv0qEFm9jcg8x1TxDwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rJOAb/btrEyuBtzBw/hpjOv0qEFm9jcg8x1TxDwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrJOAb%2FbtrEyuBtzBw%2FhpjOv0qEFm9jcg8x1TxDwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;630&quot; data-filename=&quot;11-05.png&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;RARP replay 동작&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-06.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4NMrG/btrEvnjg3Ma/WxK78eynHkSht56D8Nv111/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4NMrG/btrEvnjg3Ma/WxK78eynHkSht56D8Nv111/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4NMrG/btrEvnjg3Ma/WxK78eynHkSht56D8Nv111/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4NMrG%2FbtrEvnjg3Ma%2FWxK78eynHkSht56D8Nv111%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1134&quot; height=&quot;622&quot; data-filename=&quot;11-06.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ICMP&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-01.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kYHek/btrEw8FCHFy/dHw1nkQP1iRr14nlMZgtz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkYHek%2FbtrEw8FCHFy%2FdHw1nkQP1iRr14nlMZgtz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;760&quot; data-filename=&quot;11-01.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ICMP 프로토콜&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Internet Control Message Protocol&lt;/li&gt;
&lt;li&gt;인터넷 계층 프로토콜&lt;/li&gt;
&lt;li&gt;전송 오류 제어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP는 비연결성 비신뢰성 전송 서비스 (실패 가능성 있음)&lt;/li&gt;
&lt;li&gt;IP 데이터그램 전송의 오류가 발생할 경우 오류 메세지 또는 제어 메세지를 제공해 주는 프로토콜&lt;/li&gt;
&lt;li&gt;IP 데이터그램의 전송과정에서 발생하는 오류를 라우터나 발신지 호스트에게 보고하는 메커니즘을 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ICMP 메세지&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-07.png&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brIzt6/btrEu8mjLMa/IRqz5k1zxLl7pQdzYDPCUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brIzt6/btrEu8mjLMa/IRqz5k1zxLl7pQdzYDPCUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brIzt6/btrEu8mjLMa/IRqz5k1zxLl7pQdzYDPCUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrIzt6%2FbtrEu8mjLMa%2FIRqz5k1zxLl7pQdzYDPCUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;376&quot; data-filename=&quot;11-07.png&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유형 (8 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ICMP 메세지 식별&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;코드 (8 qlxm)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유형에 관한 추가 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검사합(16 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 ICMP 메세지의 오류 검사&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ICMP 메세지 (32 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오류 및 제어 메세지로서 echo, timestamp 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;ICMP 메세지 유형&lt;/h3&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;  0  : Echo Reply
  3  : Destination Unreachable
  4  : Source Quench
  5  : Redirect
  8  : Echo Request
  11 : Time Exceed
  12 : Parameter Problem
  13 : Timestamp Request
  14 : Timestamp Reply
  15 : Information Request
  16 : Information Reply
  17 : Address Mask Request
  18 : Addres Mask Reply&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ICMP 메세지 유형&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오류 보고 메세지 (error reporting)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ICMP는 오류를 수정하지 않고, 단지 보고만 수행&lt;/li&gt;
&lt;li&gt;IP 주소를 이용하여 발신지에 오류 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;질의 메세지 (simple requery)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일부 네트워크의 문제 진단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;오류보고 메세지&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Error Reporting
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Destination Unreachable (목적지 도달 불가) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라우터가 데이터그램을 라우팅 할 수 없을 때&lt;/li&gt;
&lt;li&gt;호스트가 데이터그램을 전달할 수 없을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Source Quench (발신지 억제) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;혼잡으로 인해 데이터그램의 폐기를 알림&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redirection (재지정) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라우터가 최적 경로를 사용하지 않은 호스트 발견 시 최적 경로를 알리기 위해 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Time Exceed (시간 초과) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP 헤더의 TTL 필드 값 만료를 나타냄&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Parameter Problems (파라미터 문제) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터그램의 헤더 에러 문제 발생시 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;질의 메세지&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Query
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Echo Request And Reply (에코 요청 응답) :&lt;br /&gt;IP 호스트의 진단에 사용&lt;/li&gt;
&lt;li&gt;Timestamp Request And Reply (왕복시간 요청 응답) :&lt;br /&gt;두 시스템간에 IP 데이터그램이 오고가는데 필요한 왕복시간(Round Trip Time)을 결정&lt;/li&gt;
&lt;li&gt;Address Mask Request And Reply (주소 마스크 요청 응답) :&lt;br /&gt;호스트가 라우터에게 서브넷 마스크 요청&lt;/li&gt;
&lt;li&gt;Reouter Solicitation And Advertisement (라우터 주소 요청 응답) :&lt;br /&gt;다른 네트워크의 호스트에게 데이터 전송 시 자신의 네트워크에 연결된 라우터 주소 요청&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;IGMP&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Internet Group Management Protocol&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인터넷 계층 프로토콜&lt;/li&gt;
&lt;li&gt;인터넷에서 multicast 서비스를 위해 사용되는 프로토콜&lt;/li&gt;
&lt;li&gt;IP 호스트가 어떤 멀티캐스트 그룹에 참가하고 있는지를 멀티캐스트 라우터에 통보하는 프로토콜&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IP 멀티캐스트&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Multicast&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하나의 그룹에 속한 호스트들에게 메세지 전송 (1-to-many)&lt;/li&gt;
&lt;li&gt;참고 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;unicast : 1-to-1&lt;/li&gt;
&lt;li&gt;broadcast : 1-to-all&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP Multicast&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스 D 주소 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-08.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcwNGn/btrEAABbSJH/Bczm1it5tZNoRlUIsYXcIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcwNGn/btrEAABbSJH/Bczm1it5tZNoRlUIsYXcIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcwNGn/btrEAABbSJH/Bczm1it5tZNoRlUIsYXcIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcwNGn%2FbtrEAABbSJH%2FBczm1it5tZNoRlUIsYXcIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;192&quot; data-filename=&quot;11-08.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;주소 범위 : 224.0.0.0 ~ 239.255.255.255&lt;/li&gt;
&lt;li&gt;예약된 멀티캐스트 주소
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-09.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cToawh/btrEznPDj8M/YNo9zEdeqPtcW0ikXY1bGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cToawh/btrEznPDj8M/YNo9zEdeqPtcW0ikXY1bGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cToawh/btrEznPDj8M/YNo9zEdeqPtcW0ikXY1bGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcToawh%2FbtrEznPDj8M%2FYNo9zEdeqPtcW0ikXY1bGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;224&quot; data-filename=&quot;11-09.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IGMP 프로토콜&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-10.png&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H4OyM/btrEu8fxXHw/0JdOLUWYjSelDO5IExEUp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H4OyM/btrEu8fxXHw/0JdOLUWYjSelDO5IExEUp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H4OyM/btrEu8fxXHw/0JdOLUWYjSelDO5IExEUp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH4OyM%2FbtrEu8fxXHw%2F0JdOLUWYjSelDO5IExEUp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1058&quot; height=&quot;484&quot; data-filename=&quot;11-10.png&quot; data-origin-width=&quot;1058&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유형 (8 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Query (general/special)&lt;/li&gt;
&lt;li&gt;Membership report&lt;/li&gt;
&lt;li&gt;Leave report&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;최대 응답 시간 (8 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;질의애 응답해야하는 최대 허용 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검사합 (16 비트)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티캐스트 주소 (클래스 D IP 주소)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-11.png&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpZA5r/btrEvMb17TL/QGyZQYqSo7kb5T5eLO2Qqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpZA5r/btrEvMb17TL/QGyZQYqSo7kb5T5eLO2Qqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpZA5r/btrEvMb17TL/QGyZQYqSo7kb5T5eLO2Qqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpZA5r%2FbtrEvMb17TL%2FQGyZQYqSo7kb5T5eLO2Qqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;978&quot; height=&quot;556&quot; data-filename=&quot;11-11.png&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;DHCP&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IP 주소관리&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP 주소 관리 방법&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP 주소 (32 비트)&lt;br /&gt;예 ) 150.183.135.215 등으로 표시&lt;/li&gt;
&lt;li&gt;기억하기 어려움 -&amp;gt; IP 주소 관리 방법의 필요
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Host Table&lt;/li&gt;
&lt;li&gt;DNS (Domain Name System)&lt;/li&gt;
&lt;li&gt;BOOTP (Bootsttrap Protocol)&lt;/li&gt;
&lt;li&gt;DHCP (Dynamic Host Configuration Protocol)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;호스트 테이블&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 IP 주소와 이와 mapping되는 호스트 이름으로 구성된 테이블&lt;/li&gt;
&lt;li&gt;장점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중앙집중형 관리 방식&lt;/li&gt;
&lt;li&gt;host table 구조가 간단&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단점
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트의 급속한 증가와 변화에 대응하기 어려움
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매핑 정보의 일관성 유지 어려움&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;계층적 구조가 아닌 평면 구조
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중복 정보를 포함함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;DNS (Domain Name System)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계층적 구조 및 분산 관리 특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예 ) 도메인 이름 : jeaha.dev&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;분산 관리의 문제
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;name server는 특정 네트워크 영역만의 정보를 가지며,&lt;br /&gt;다른 영역에 대해서는 다른 name server의 정보를 참조&lt;/li&gt;
&lt;li&gt;name server 데이터의 복잡성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수작업에 의한 데이터의 오류 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;BOOTP (Bootstrap Protocol)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존의 방식은 IP 주소를 수작업으로 할당 (정적 할당)&lt;/li&gt;
&lt;li&gt;BOOTP는 동적으로 IP 주소를 할당&lt;/li&gt;
&lt;li&gt;디스크가 없는 호스트(X terminal)에 대해 주소 및 설정 정보를 자동적으로 할당하고 관리하는 프로토콜&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DHCP 메세지 형식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Dynamic Host Configuration Protocol&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개요
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응용계층 프로토콜&lt;/li&gt;
&lt;li&gt;BOOTP에서 발전된 동적 주소 할당 프로토콜로서 IP 주소 재사용이 가능&lt;/li&gt;
&lt;li&gt;DHCP 메세지 형식은 BOOTP와 동일함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;동적 주소 할당 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP 주소 pool에서 사용 가능한 IP 주소를 선택하여 원하는 호스트에게 일정기간 임대해줌&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-12.png&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAjz62/btrEw7GL1Cc/fdcrbinJqLRwwmhjeQAvL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAjz62/btrEw7GL1Cc/fdcrbinJqLRwwmhjeQAvL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAjz62/btrEw7GL1Cc/fdcrbinJqLRwwmhjeQAvL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAjz62%2FbtrEw7GL1Cc%2FfdcrbinJqLRwwmhjeQAvL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;576&quot; data-filename=&quot;11-12.png&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-13.png&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9kZu3/btrEyuhbmal/CK3nKjckkOzqe344JTaDjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9kZu3/btrEyuhbmal/CK3nKjckkOzqe344JTaDjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9kZu3/btrEyuhbmal/CK3nKjckkOzqe344JTaDjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9kZu3%2FbtrEyuhbmal%2FCK3nKjckkOzqe344JTaDjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1046&quot; height=&quot;578&quot; data-filename=&quot;11-13.png&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;DHCP 프로토콜&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;IP 주소 자동 할당&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-14.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crPCf9/btrEw8FCHKS/IyvcEzOZZ8OMr1hdKcxv5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crPCf9/btrEw8FCHKS/IyvcEzOZZ8OMr1hdKcxv5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crPCf9/btrEw8FCHKS/IyvcEzOZZ8OMr1hdKcxv5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrPCf9%2FbtrEw8FCHKS%2FIyvcEzOZZ8OMr1hdKcxv5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;596&quot; data-filename=&quot;11-14.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-15.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLGKoy/btrExHnwAO8/N6l9cDkxATyFPr8y6BfZz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLGKoy/btrExHnwAO8/N6l9cDkxATyFPr8y6BfZz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLGKoy/btrExHnwAO8/N6l9cDkxATyFPr8y6BfZz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLGKoy%2FbtrExHnwAO8%2FN6l9cDkxATyFPr8y6BfZz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;592&quot; data-filename=&quot;11-15.png&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;592&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-16.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iq6W3/btrExHA5YfF/7OA84hyYyVIrb1fqHgsMWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iq6W3/btrExHA5YfF/7OA84hyYyVIrb1fqHgsMWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iq6W3/btrExHA5YfF/7OA84hyYyVIrb1fqHgsMWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIq6W3%2FbtrExHA5YfF%2F7OA84hyYyVIrb1fqHgsMWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;600&quot; data-filename=&quot;11-16.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;11-17.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9FLi6/btrEBrDZUN0/kHKQ5IhT3tDk2uYAlHJdVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9FLi6/btrEBrDZUN0/kHKQ5IhT3tDk2uYAlHJdVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9FLi6/btrEBrDZUN0/kHKQ5IhT3tDk2uYAlHJdVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9FLi6%2FbtrEBrDZUN0%2FkHKQ5IhT3tDk2uYAlHJdVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;936&quot; height=&quot;604&quot; data-filename=&quot;11-17.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ARP(Address Resolution Protocol)는 인터넷에서 물리적으로 연결된 호스트들 간의 통신을 위해 &lt;b&gt;IP 주소를 물리주소로 매핑&lt;/b&gt;해 주는 프로토콜&lt;/li&gt;
&lt;li&gt;RARP는 &lt;b&gt;물리주소를 IP 주소로 매핑&lt;/b&gt;해주는 프로토콜로 디스크가 없는 호스트가 IP 주소를 얻기 위해 RARP를 이용함&lt;/li&gt;
&lt;li&gt;ICMP는 인터넷에서 IP를 대신해 &lt;b&gt;오류 또는 제어 메세지를 제공&lt;/b&gt;하는 프로토콜로 ICMP 메세지는 목적지로 반드시 전송되어야 하므로 IP 데이터 그램으로 전송됨&lt;/li&gt;
&lt;li&gt;ICMP 메세지는 유형 및 코드에 따라 서로 다른 형식을 가지고 있음&lt;/li&gt;
&lt;li&gt;IGMP는 인터넷에서 동일한 그룹에 속한 호스트들에게 메세지를 전송할 수 있는 &lt;b&gt;멀티캐스트&lt;/b&gt;를 위해 사용되는 프로토콜임&lt;/li&gt;
&lt;li&gt;멀티캐스트 그룹에 가입한 호스트의 프로세스만이 멀티캐스트 메세지를 수신할 수 있으며,&lt;br /&gt;각 프로세스는 멀티캐스트 그룹에 필요에 따라 언제든지 가입하거나 탈퇴할 수 있어&lt;br /&gt;멀티캐스트 그룹 내의 구성원은 동적으로 변함&lt;/li&gt;
&lt;li&gt;DHCP는 &lt;b&gt;IP 주소를 중앙에서 관리&lt;/b&gt;하고 개별 클라이언트들에게 **자동으로 IP 주소를 할당해 주는 프로토콜임&lt;/li&gt;
&lt;li&gt;BOOTP(Bootstrap Protocol)는 &lt;b&gt;디스크가 없는 호스트&lt;/b&gt;(Xterminal)에 대해 주소 및 설정 정보를 &lt;b&gt;자동적으로 할당&lt;/b&gt;하고 관리하는 프로토콜&lt;/li&gt;
&lt;li&gt;DHCP 네트워크는 DHCP 클라이언트, DHCP 서버, BOOTP/DHCP 중계 에이전트로 구성되어 있음&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Computer Science/Network</category>
      <category>ARP</category>
      <category>bootp</category>
      <category>dhcp</category>
      <category>icmp</category>
      <category>IGMP</category>
      <category>iP</category>
      <category>RARP</category>
      <category>tcp</category>
      <category>네트워크</category>
      <category>인터넷</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/148</guid>
      <comments>https://dev-log-island.tistory.com/148#entry148comment</comments>
      <pubDate>Sun, 12 Jun 2022 11:09:06 +0900</pubDate>
    </item>
    <item>
      <title>TCP/IP - II</title>
      <link>https://dev-log-island.tistory.com/147</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;TCP/IP는 간단한 메세지 전송에는 유리하지만, 신뢰성 있는 전송을 보장하지 않는 UDP와 호스트 간의 신뢰성 있는 전송을 제공하는 TCP 전송 계층 프로토콜이 있음.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;주요 용어&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;UDP&lt;/b&gt; :&lt;br /&gt;TCP/IP 응용 계층과 IP 계층 사이에 있으며, 비연결성과 비신뢰적 특징을 갖는 전송 계층의 프로토콜&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가짜 헤더&lt;/b&gt; :&lt;br /&gt;UDP 데이터그램이 정확하게 목적지에 도착했는지를 인증하기 위해 사용되는 12바이트 정보&lt;/li&gt;
&lt;li&gt;&lt;b&gt;UDP 포트&lt;/b&gt; :&lt;br /&gt;UDP를 사용하는 응용프로그램을 식별하기 위해 사용하는 포트 번호&lt;/li&gt;
&lt;li&gt;&lt;b&gt;TCP&lt;/b&gt; :&lt;br /&gt;TCP/IP에서 신뢰성이 보장되는 데이터 전송 서비스로 데이터 전송 이전에 먼저 연결이 설정되어야 함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세그먼트&lt;/b&gt; :&lt;br /&gt;TCP가 절단하여 전송하는 데이터로 20 ~ 60 바이트의 헤더와 응용 프로그램의 데이터로 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;UDP&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정의&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;User Datagram Protocol
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전송 계층 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;process-to-process protocol
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IP : host-to-host protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비연결성과 비신뢰성&lt;/li&gt;
&lt;li&gt;기본적인 IP 데이터 전달 서비스에 프로세스 간 통신이 추가된 형태&lt;/li&gt;
&lt;li&gt;연결성 보장과 신뢰적 전송에 소요되는 오버헤드가 없음&lt;/li&gt;
&lt;li&gt;간단한 메세지를 송수신하는 데 유리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UDP 비연결형 서비스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;응용 프로세스의 데이터 전송&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응용 프로세스는 다음 프로토콜을 이용하여 데이터를 다른 응용 프로세스로 전송할 수 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP : 비연결형, 비신뢰성 전송 서비스&lt;/li&gt;
&lt;li&gt;TCP : 연결형, 신뢰성 전송 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;포트 번호 사용 : 프로세스들을 구별하기 위함&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;UDP의 특징&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP = 비연결형 IP 전달 서비스 + 검사합(checksum) 기능&lt;/li&gt;
&lt;li&gt;최종 목적지의 데이터 수신 여부를 확인하지 않음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 손실 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;메세지의 도착 순서를 재조정하지 않음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터의 순서가 틀릴 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;호스트 사이에 데이터 흐름 제어 없음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수신자 처리 용량을 초과하는 데이터 발생 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;UDP의 장단점&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장점 : TCP보다 데이터 전송 속도가 빠르고 응용 프로그램이 간단해짐.&lt;/li&gt;
&lt;li&gt;단점 : UDP를 사용하는 응용 프로그램은 메세지 손실, 중복 수신, 수신지연, 잘못된 순서 등을 처리하기 위한 신뢰성 제어 기능을 제공해야 함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UDP 사용자 데이터그램&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-01.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KMQL1/btrEvMpxTdv/VYVqSI6sVz7teIxDdRwKm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KMQL1/btrEvMpxTdv/VYVqSI6sVz7teIxDdRwKm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KMQL1/btrEvMpxTdv/VYVqSI6sVz7teIxDdRwKm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKMQL1%2FbtrEvMpxTdv%2FVYVqSI6sVz7teIxDdRwKm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;896&quot; height=&quot;526&quot; data-filename=&quot;10-01.png&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP 발신 포트 (16 비트) : 발신지 프로세스 포트 번호&lt;/li&gt;
&lt;li&gt;UDP 목적지 포트 (16 비트) : 목적지 프로세스 포트 번호&lt;/li&gt;
&lt;li&gt;UDP 전체 길이 (16 비트) : 데이터 그램 전체 길이&lt;br /&gt;(= 헤더 길이 + 데이터 길이)&lt;/li&gt;
&lt;li&gt;UDP 검사합 (16 비트) : 데이터그램 전체의 오류 검사용&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UDP 가짜 헤더 (pseudo header)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP 데이터그램이 정확히 목적지에 도착하였는지를 2중으로 인증하기 위함 (IP 주소 확인, 오류 검증(검사합))&lt;br /&gt;UDP 헤더는 단지 포트번호만 가지고 있고 IP 주소 정보는 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-02.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmm9kw/btrEw8MqswA/cTRi6r8Efq2vsl0oh3iKRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmm9kw/btrEw8MqswA/cTRi6r8Efq2vsl0oh3iKRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmm9kw/btrEw8MqswA/cTRi6r8Efq2vsl0oh3iKRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmm9kw%2FbtrEw8MqswA%2FcTRi6r8Efq2vsl0oh3iKRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;998&quot; height=&quot;492&quot; data-filename=&quot;10-02.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;UDP 포트 번호&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Process-to-process 통신
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zUdet/btrEAA2heTZ/FUG6MOV64vSTJHpeZXJ2c0/img.png&quot; alt=&quot;&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-04.png&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnnMpA/btrEBrDZzWd/hs7fCuUNIBKvLoCOyxzLjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnnMpA/btrEBrDZzWd/hs7fCuUNIBKvLoCOyxzLjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnnMpA/btrEBrDZzWd/hs7fCuUNIBKvLoCOyxzLjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnnMpA%2FbtrEBrDZzWd%2Fhs7fCuUNIBKvLoCOyxzLjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;422&quot; data-filename=&quot;10-04.png&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UDP Well-known Ports
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-05.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;582&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfPGhN/btrEw8llSWC/grM0QrBxRVZo3cOWrYR9q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfPGhN/btrEw8llSWC/grM0QrBxRVZo3cOWrYR9q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfPGhN/btrEw8llSWC/grM0QrBxRVZo3cOWrYR9q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfPGhN%2FbtrEw8llSWC%2FgrM0QrBxRVZo3cOWrYR9q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;868&quot; height=&quot;582&quot; data-filename=&quot;10-05.png&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;582&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;TCP&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전송제어 프로토콜&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Transmission Control Protocol&lt;/li&gt;
&lt;li&gt;전송 계층 프로토콜
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;process-to-process protocol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;연결 지향(conntection-oriented) 전송 서비스
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결 설정 - 데이터 전송 - 연결 해제&lt;/li&gt;
&lt;li&gt;TCP 연결 식별자 :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신측 TCP 종점 주소&lt;/li&gt;
&lt;li&gt;수신측 TCP 종점 주소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;신뢰성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;흐름제어 (sliding window protocol)&lt;/li&gt;
&lt;li&gt;오류제어 (응답 패킷, 시간 초과, 재전송 방식)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;신뢰성이 요구되는 응용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP : 응용 프로그램에서 신뢰성 보장&lt;/li&gt;
&lt;li&gt;TCP : 전송계층(TCP)에서 신뢰성 보장&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;방대한 양의 데이터 전송 -&amp;gt; TCP 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;간단한 메세지 송수신 -&amp;gt; UDP 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;신뢰성 제공&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;신뢰성 제공 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연결 지향(connection-oriented) 데이터 전송&lt;/li&gt;
&lt;li&gt;Segment 단위 전송 (MMS : Maximum Segment Size)&lt;/li&gt;
&lt;li&gt;흐름 제어(flow control : sliding window 사용)&lt;/li&gt;
&lt;li&gt;오류 제어(응답 패킷, 시간 초과, 재전송 방식)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타이머 관리&lt;/li&gt;
&lt;li&gt;Checksum, 순서 보장, 중복 패킷 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-06.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uTiq4/btrEuWZBXMG/4AA93wAKj4cwAPDaOfofgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uTiq4/btrEuWZBXMG/4AA93wAKj4cwAPDaOfofgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uTiq4/btrEuWZBXMG/4AA93wAKj4cwAPDaOfofgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuTiq4%2FbtrEuWZBXMG%2F4AA93wAKj4cwAPDaOfofgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1132&quot; height=&quot;712&quot; data-filename=&quot;10-06.png&quot; data-origin-width=&quot;1132&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TCP 세그먼트 형식&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP Segment
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-07.png&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K5P7Y/btrEw7fEaWW/QkjLGPPYS727xZ3kitvDBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K5P7Y/btrEw7fEaWW/QkjLGPPYS727xZ3kitvDBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K5P7Y/btrEw7fEaWW/QkjLGPPYS727xZ3kitvDBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK5P7Y%2FbtrEw7fEaWW%2FQkjLGPPYS727xZ3kitvDBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1002&quot; height=&quot;612&quot; data-filename=&quot;10-07.png&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TCP Segment 헤더
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-08.png&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsT1AE/btrEvnwNJHy/NU0BdjwQK3hh63JbFQcJo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsT1AE/btrEvnwNJHy/NU0BdjwQK3hh63JbFQcJo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsT1AE/btrEvnwNJHy/NU0BdjwQK3hh63JbFQcJo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsT1AE%2FbtrEvnwNJHy%2FNU0BdjwQK3hh63JbFQcJo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;832&quot; height=&quot;440&quot; data-filename=&quot;10-08.png&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;발신지 포트 (2 bytes) :&lt;br /&gt;발신지 TCP 사용자 프로세스 식별&lt;/li&gt;
&lt;li&gt;목적지 포트 (2 bytes) :&lt;br /&gt;목적지 TCP 사용자 프로세스 식별&lt;/li&gt;
&lt;li&gt;순서 번소 (sequence number; 4 bytes) :&lt;br /&gt;데이터 필드의 첫 번째 데이터 바이트의 순서 번호&lt;/li&gt;
&lt;li&gt;응답 번호 (ACK number; 4 bytes) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;송신측으로부터 받은 세그먼트에 대한 응답&lt;/li&gt;
&lt;li&gt;바로 다음에 받기를 기대하는 순서 번호를 의미&lt;br /&gt;예) 순서 번호가 x인 세그먼트를 수신하면 응답 번호는 x + 1을 사용함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;헤더 길이 (HLEN; 4 bits) :
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;4 바이트 단위로 표시되는 헤더릐 길이&lt;/li&gt;
&lt;li&gt;5 ~ 15 사이의 값 (20 ~ 60 바이트)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;예약 (Reserved; 6 bits)&lt;/li&gt;
&lt;li&gt;제어 (flag bits; 6 bits)
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;URG : 긴급 포인터 (urgent pointer) 필드가 유효함을 표시&lt;/li&gt;
&lt;li&gt;ACK : 응답 번호가 유효함을 표시함&lt;/li&gt;
&lt;li&gt;PSH : 가능한 빨리 현재 세그먼트를 상위 계층에 전달해야 함.&lt;/li&gt;
&lt;li&gt;RST : 연결을 초기화하기 위해 순서번호를 동기화 시킴.&lt;/li&gt;
&lt;li&gt;SYN : 연결을 초기화하기 위해 순서번호를 동기화 시킴.&lt;/li&gt;
&lt;li&gt;FIN : 연결을 해제시키기 위해 현재 세그먼트가 마지막 데이터임을 표시함.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;윈도우 크기 (window size; 2 byts) :&lt;br /&gt;흐름 제어를 위한 윈도우의 크기를 명시 (최대 크기 = 2 ^ 16 [= 65,535 바이트])&lt;/li&gt;
&lt;li&gt;검사 합 (checksum; 2 bytes) : 오류 제어를 위한 검사합 부분&lt;/li&gt;
&lt;li&gt;긴급 포인터 (urgent pointer; 2 bytes) :&lt;br /&gt;URG flag = 1 일때, 긴급 데이터의 마지막 바이트의 순서 번호 = 긴급 포인터 + 순서 번호&lt;/li&gt;
&lt;li&gt;옵션 (option; 0 ~ 40 bytes)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Maximum Segment Size (MSS)&lt;/li&gt;
&lt;li&gt;윈도우 크기를 증가시키기 위한 값&lt;/li&gt;
&lt;li&gt;time stamp 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;TCP 연결형 서비스&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;TCP 연결&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;TCP 종점 (endpoint) 식별자 [= socket address]
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호스트 IP 주소와 포트 번호로 정의&lt;/li&gt;
&lt;li&gt;예 : A와 B 사이의 TCP 연결&lt;br /&gt;(211.110.34.15, 1234) 및 (163.100.21.67, 20)&lt;br /&gt;port numbers 1234 : client&lt;br /&gt;port numbers 20 : FTP Server&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;전이중(full-duplex) 데이터 전송 서비스
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-09.png&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xqxX4/btrEuEZbJTe/EzZ3zu2wksWCtUKxtgElX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xqxX4/btrEuEZbJTe/EzZ3zu2wksWCtUKxtgElX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xqxX4/btrEuEZbJTe/EzZ3zu2wksWCtUKxtgElX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxqxX4%2FbtrEuEZbJTe%2FEzZ3zu2wksWCtUKxtgElX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;888&quot; height=&quot;528&quot; data-filename=&quot;10-09.png&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TCP 연결 설정
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3-way handshaking&lt;/li&gt;
&lt;li&gt;초기 순서 번호 (ISN : Initial Sequence Number)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;난수 발생기&lt;/li&gt;
&lt;li&gt;양 방향이 서로 다른 ISN을 사용함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-10.png&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdFQPs/btrEw7mttWf/R1aiF26ymLN41SVOJTAA81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdFQPs/btrEw7mttWf/R1aiF26ymLN41SVOJTAA81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdFQPs/btrEw7mttWf/R1aiF26ymLN41SVOJTAA81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdFQPs%2FbtrEw7mttWf%2FR1aiF26ymLN41SVOJTAA81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;884&quot; height=&quot;522&quot; data-filename=&quot;10-10.png&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TCP 연결 종료
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;10-11.png&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DGOrp/btrEzKcyVI2/XdhKmyZBS0YOGSlvImKo21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DGOrp/btrEzKcyVI2/XdhKmyZBS0YOGSlvImKo21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DGOrp/btrEzKcyVI2/XdhKmyZBS0YOGSlvImKo21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDGOrp%2FbtrEzKcyVI2%2FXdhKmyZBS0YOGSlvImKo21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;922&quot; height=&quot;530&quot; data-filename=&quot;10-11.png&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;요약&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UDP(User Datagram Protocol)는 TCP/IP 응용 계층과 IP 계층 사이에 있으며, &lt;b&gt;비연결성과 비신뢰적&lt;/b&gt; 특징을 갖는 전송 계층의 프로토콜로 &lt;b&gt;간단한 메세지를 송/수신하는데 유리&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;UDP는 신뢰성이 없는 &lt;b&gt;비연결형 전송 서비스&lt;/b&gt;를 제공, 전송한 메세지가 최종 목적지에 수신되었는지를 확인하지 않고, 메세지의 도착 순서를 재조정하지 않으며, 피드백(feedback) 메커니즘을 제공하지 않음&lt;/li&gt;
&lt;li&gt;UDP는 최소한의 신뢰성을 위한 오류제어 메커니즘으로 &lt;b&gt;검사합(checksum)&lt;/b&gt; 기능을 옵션으로 제공하고 가짜 헤더를 사용하여 UDP 데이터그램이 정확하게 목적지에 도착했는지를 이중으로 인증함&lt;/li&gt;
&lt;li&gt;UDP는 TCP와 비교하여 &lt;b&gt;데이터 전송속도가 빠르고 응용프로그램이 간단&lt;/b&gt;해지는 장점이 있지만,&lt;br /&gt;응용프로그램은 메세지 손실, 중복 수신, 수신지연, 잘못된 순서 등을 위한 별도의 신뢰성 제어 기능을 제공해야함&lt;/li&gt;
&lt;li&gt;TCP(Transmission Control Protocol)는 TCP/IP에서 &lt;b&gt;신뢰성이 보장되는 데이터 전송 서비스&lt;/b&gt;로 데이터 전송 이전에 먼저 연결이 설정되여야 하며, 흐름제어를 위해 슬라이딩 윈도우 프로토콜을 이용하고, 오류제어를 위해 확인 응답 패킷, 시간 - 초과, 그리고 재전송 방식을 이용함&lt;/li&gt;
&lt;li&gt;TCP는 &lt;b&gt;신뢰성이 있는 연결형(connection-oriented) 데이터 전송 서비스&lt;/b&gt;를 제공하여 발신지 호스트의 프로세스와 목적지 호스트의 프로세스 사이에 연결(connection)이라는 논리적인 관계를 설정하고 목적지로 전송할 데이터 전송에 알맞는 최대 세그먼트 크기로 절단하여 전송&lt;/li&gt;
&lt;li&gt;TCP 사용자가 데이터를 전송하기 전에 &lt;b&gt;발신지와 목적지 간에 가상경로를 설정&lt;/b&gt;하고 TCP의 모든 세그먼트들을 가상 경로를 통하여 전송함.&lt;br /&gt;데이터 전송이 끝나면 이를 해제하여 전체 메세지를 하나의 단일 가상경로를 이용하여 전송함으로써 손상 또는 손실된 세그먼트의 재전송 뿐만 아니라 확인 응답의 처리도 가능&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 : 방송통신대 강의 자료실 정보통신망 강의록&lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;__endic_crx__&quot;&gt;
&lt;div class=&quot;css-1abc5oq&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Computer Science/Network</category>
      <category>Internet</category>
      <category>iP</category>
      <category>Network</category>
      <category>tcp</category>
      <category>udp</category>
      <category>네트워크</category>
      <category>아이피</category>
      <category>인터넷</category>
      <category>정보통신</category>
      <category>티씨비</category>
      <author>Jeaha</author>
      <guid isPermaLink="true">https://dev-log-island.tistory.com/147</guid>
      <comments>https://dev-log-island.tistory.com/147#entry147comment</comments>
      <pubDate>Sun, 12 Jun 2022 10:54:51 +0900</pubDate>
    </item>
  </channel>
</rss>