<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공대핫산의 개발블로그</title>
    <link>https://hotsan-engineering.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 26 Aug 2026 10:59:11 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>공대핫산</managingEditor>
    <item>
      <title>SQLD자격증도 역시 시나공</title>
      <link>https://hotsan-engineering.tistory.com/83</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;SQLD 자격증이란 무엇인가?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분 SQLD자격증이란 무엇일까요?&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&quot;데이터 베이스를 다루는 언어인 SQL을 얼마나 잘 다루는지 시험입니다.&quot;&lt;/b&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;아니 그러면 컴터로 이케이케 하는걸 평가해야하는거 아니야?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 AI 딸깍이면 다해주던데? 라는 생각이 들지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세상은 아직 아날로그임을 생각하고 얌전하게 4지선다의 객관식 시험을 치뤄야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;진짜 처음부터 SQL 전공서적 구매해서 MySQL 설치하고 공부하면서 이론을 외우고 실습해야할까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니죠 앞서 말했다싶이 자격증 시험(특히 객관식 4지선다)이기 때문에 이론 및 기출 문제만 풀이하면 비전공자도 너끈히 합격이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;비전공자 또는 입문자분들이 전공서적으로 첨부터하기에는 시간도 많이 걸리고 굳이 추천하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[근데 저의 경우엔 길벗에서 제공해주신 &quot;코딩 자율학습 SQL&quot;을 활용하여 이론 및 실습으로 SQL에 대한 기초를 만들고 기출문제를 풀어서 해결했습니다만....ㅎㅎ(길벗님 사랑해용)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;459&quot; data-origin-height=&quot;617&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlzHAa/dJMcaff78OZ/s3Zh46ipYHkhG7dqUYJdEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlzHAa/dJMcaff78OZ/s3Zh46ipYHkhG7dqUYJdEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlzHAa/dJMcaff78OZ/s3Zh46ipYHkhG7dqUYJdEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlzHAa%2FdJMcaff78OZ%2Fs3Zh46ipYHkhG7dqUYJdEk%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;356&quot; height=&quot;479&quot; data-origin-width=&quot;459&quot; data-origin-height=&quot;617&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;그러면 SQLD시험 치면 나오는 유명한 노랭이!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무려 시험 주관사인 한국 데이터산업진흥원 책으로 공부하면 되는구나! 하실 수 있겠지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책의 경우엔 SQLP와 SQLD가 같이 섞여있어 난이도 조절도 안되어 있고 (SQLP는 상위등급 자격증)&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-origin-width=&quot;216&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBYMyt/dJMcajv1XHv/jfDf8qsJznabU5s0oo9bV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBYMyt/dJMcajv1XHv/jfDf8qsJznabU5s0oo9bV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBYMyt/dJMcajv1XHv/jfDf8qsJznabU5s0oo9bV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBYMyt%2FdJMcajv1XHv%2FjfDf8qsJznabU5s0oo9bV0%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;216&quot; height=&quot;216&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;216&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;이제 소개해드릴 시나공 SQLD 서적으로 공부해보시면 됩니다!&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-origin-width=&quot;399&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JEZl6/dJMcahkJxng/U886w7XAVq53YqwDtjFxAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JEZl6/dJMcahkJxng/U886w7XAVq53YqwDtjFxAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JEZl6/dJMcahkJxng/U886w7XAVq53YqwDtjFxAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJEZl6%2FdJMcahkJxng%2FU886w7XAVq53YqwDtjFxAk%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;399&quot; height=&quot;537&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이론 및 기출 문제 모두 제공! 시나공SQLD&lt;/h2&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비전공자인 제가 SQLD를 취득하면서 가장 어려웠던 부분들이 이론들이 너무 어려웠습니다.&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;/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 data-ke-size=&quot;size16&quot;&gt;그래서 취득 이후엔 SQLD는 생각도 안했는데 이번 베타테스터를 진행하면서&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만일 SQL을 전혀 모르시는 상황에서 SQLD 자격증을 취득하기 위해 독학하신다면 이 책 꼭 추천합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴활 및 정보처리 기사 자격증 시험 서적에서도 증명되었듯이 이번 SQLD 서적도 초심자도 이해하기 쉽게 잘 설명해둔 서적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 공부/SQL</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/83</guid>
      <comments>https://hotsan-engineering.tistory.com/83#entry83comment</comments>
      <pubDate>Tue, 30 Jun 2026 23:53:15 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 시험일정과 비전공자의 시험 준비</title>
      <link>https://hotsan-engineering.tistory.com/82</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;&quot; 이 게시물은 길벗 출판사로부터 도서를 지급받아 작성한 리뷰입니다&quot;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;서론 : SQLD 시험 노랑이만으로 가능한가...?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQLD시험을 준비하고 있는 감자대가리 핫산입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;2025년의 핫산은 작년과 다르다를 외치면서 열심히 공부하겠다고 다짐했습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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;물론 인터넷이나 주변에서 2주면 끝나는 가소로운 시험들이라 평하기에 저 또한 가벼운 마음이었지요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히나 SQLD 노랑이 책 3 회독이면 뭐든지 OK라는 소문을 들었으니 더더욱 쉽게 생각했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;가소로운 짤.jpg&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;1015&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lrw8E/btsMuLOtcbq/6xwcJMK9Z63B6cmjcek3M0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lrw8E/btsMuLOtcbq/6xwcJMK9Z63B6cmjcek3M0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lrw8E/btsMuLOtcbq/6xwcJMK9Z63B6cmjcek3M0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLrw8E%2FbtsMuLOtcbq%2F6xwcJMK9Z63B6cmjcek3M0%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;233&quot; height=&quot;355&quot; data-filename=&quot;가소로운 짤.jpg&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;1015&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2025 SQLD 시험일정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IzBXS/btsMsOy8oi1/lD98VpCugof7Z7ujkmrhn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IzBXS/btsMsOy8oi1/lD98VpCugof7Z7ujkmrhn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IzBXS/btsMsOy8oi1/lD98VpCugof7Z7ujkmrhn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIzBXS%2FbtsMsOy8oi1%2FlD98VpCugof7Z7ujkmrhn1%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;965&quot; height=&quot;356&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;356&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;(여러분은 시험일정에 맞추기보단 시험접수 하자마자 공부하시길 권유드립니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주 월요일 저는 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;SQLD 시험날짜를 확인하면서 생각한 것이&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3월 8일이면 3주나 남았잖아?!&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 data-ke-size=&quot;size16&quot;&gt;그리고 자신만만하게 SQLD 노랑이 책을 공부했는데.....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어.... 이거 아닌 거 같은데용? 웬 문제들이 이리 어렵지;;;;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니 2주면 마스터한다던 사람들은 진짜 어떻게 한 거지...?&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;푸 이거 맞아1.jpeg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;982&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ldqJW/btsMug9dnSy/LmxxsW2dNLvKfxygWVLK8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ldqJW/btsMug9dnSy/LmxxsW2dNLvKfxygWVLK8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ldqJW/btsMug9dnSy/LmxxsW2dNLvKfxygWVLK8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FldqJW%2FbtsMug9dnSy%2FLmxxsW2dNLvKfxygWVLK8k%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;486&quot; height=&quot;663&quot; data-filename=&quot;푸 이거 맞아1.jpeg&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;982&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;솔직하게 말해서 비전공자+ 바보이기에 어려운 것도 있지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQLD 노랑이 책 자체가 일단 시험목적으로 기출문제를 풀기 위한 책으로 이론보단&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출문제 풀이와 해설에 집중되어 있어 이해하기 좀 어렵다는 느낌이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기에 SQLP랑 같이 있어서 문제 난이도가 어려운 문제도 있어서 눈이 팽팽 돕니다.&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 data-ke-size=&quot;size16&quot;&gt;&quot;이거.... 진짜로 맞나...? 냅다 답이랑 해설만 달달 외워서 시험 보는 건가?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;아무리 자격증 시험용이라지만.... SQL도 못 다루는 개발자? 그거 개발자 맞음?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;실무에서도 기출문제에 없었는데용... 하고 혼나거나 ChatGPT에게 대체되는 미래만 남은 거 아닐까?&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 SQL교재를 보면서 공부해야 하는데.... 좋은 책이 있나?&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;거기에... 이제 3주 남았는데 지금부터 보면 이론이고 뭐고 큰일 난 거 아님?&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;그 순간 찾게 된 이 책 코딩 자율학습 시리즈 SQL 데이터 베이스 입문&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nht1P/btsMufbpBPz/tG3VMKIVrMo9HjYfMXhQrk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nht1P/btsMufbpBPz/tG3VMKIVrMo9HjYfMXhQrk/img.jpg&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;385&quot; data-filename=&quot;sql.jpg&quot; data-is-animation=&quot;false&quot; style=&quot;width: 50.4289%; margin-right: 10px;&quot; data-widthpercent=&quot;51.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nht1P/btsMufbpBPz/tG3VMKIVrMo9HjYfMXhQrk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNht1P%2FbtsMufbpBPz%2FtG3VMKIVrMo9HjYfMXhQrk%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;300&quot; height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deLlCF/btsMsTOgCYg/0xKHWCXzPDRjUaKomPkHmK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deLlCF/btsMsTOgCYg/0xKHWCXzPDRjUaKomPkHmK/img.jpg&quot; width=&quot;308&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-filename=&quot;IMG_20250223_155551.jpg&quot; data-is-animation=&quot;false&quot; height=&quot;412&quot; style=&quot;width: 48.4083%;&quot; data-widthpercent=&quot;48.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deLlCF/btsMsTOgCYg/0xKHWCXzPDRjUaKomPkHmK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeLlCF%2FbtsMsTOgCYg%2F0xKHWCXzPDRjUaKomPkHmK%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/div&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;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;br /&gt;이 책&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&quot;코딩 자율학습 시리즈 SQL 데이터 베이스 입문&quot;을 기본 베이스로 공부해서 SQLD를 합격해보려고 합니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;본론 : 코딩 자율학습 시리즈 SQL 데이터 베이스 입문 소개&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;핵심적인 내용만을 담은 콤팩트한 이론서&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집에 있는 600페이지 넘는 대학교재와는 다르게 핵심만을 담아 놓은 분량입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목차만 봐도 딱 우리가 필요한 부분만 학습가능해 보이는 게 1주~3주 안에 빠르게 공부하기 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 딱 목표로 1~1.5주 잡고 공부하기로 마음먹었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(1.5주는 쪼금 빡셈지만 급하니 빨리 공부했습니다.)&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;b&gt;Part 1 데이터베이스의 개요&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;1장 데이터베이스 시작하기&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Part 2 SQL 기본&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;2장 데이터 생성&amp;middot;조회&amp;middot;수정&amp;middot;삭제하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;3장 데이터 필터링하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;4장 데이터 집계하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;5장 다양한 자료형 활용하기&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Part 3 SQL 활용&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;6장 관계 만들기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;7장 테이블 조인하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;8장 그룹화 분석하기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;9장 서브쿼리 활용하기&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Part 4 데이터 모델링&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: justify;&quot;&gt;10장 데이터 모델링과 정규화&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;비전공자도 쉽게 이해가능한 그림 비유와 설명&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2wmIV/btsMurppTxp/iJAaZGAmzORgn0lC1XMxNk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2wmIV/btsMurppTxp/iJAaZGAmzORgn0lC1XMxNk/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;관계1.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2wmIV/btsMurppTxp/iJAaZGAmzORgn0lC1XMxNk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2wmIV%2FbtsMurppTxp%2FiJAaZGAmzORgn0lC1XMxNk%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TN5zI/btsMt75JZM8/tp038djVwlkIWzGXxbQLl1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TN5zI/btsMt75JZM8/tp038djVwlkIWzGXxbQLl1/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;관계만들기1.jpg&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TN5zI/btsMt75JZM8/tp038djVwlkIWzGXxbQLl1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTN5zI%2FbtsMt75JZM8%2Ftp038djVwlkIWzGXxbQLl1%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYLJKv/btsMr77jaoP/ZKE1R62C9LTInTYsAgMF0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYLJKv/btsMr77jaoP/ZKE1R62C9LTInTYsAgMF0k/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;관계만들기 2.jpg&quot; style=&quot;width: 32.5581%;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYLJKv/btsMr77jaoP/ZKE1R62C9LTInTYsAgMF0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYLJKv%2FbtsMr77jaoP%2FZKE1R62C9LTInTYsAgMF0k%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/div&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;span style=&quot;letter-spacing: 0px;&quot;&gt;실습 예제도 가벼운 예제로 시작하니 비전공자, 초심자도 쉽게 이해가능!&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;컴린이도 따라 하기 쉬운 사진설명&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZscgV/btsMs8j6GxT/CRNkwLBmVyM41vKKBEM3v1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZscgV/btsMs8j6GxT/CRNkwLBmVyM41vKKBEM3v1/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;설치과정 1.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZscgV/btsMs8j6GxT/CRNkwLBmVyM41vKKBEM3v1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZscgV%2FbtsMs8j6GxT%2FCRNkwLBmVyM41vKKBEM3v1%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGnxei/btsMsKjIH8v/0Lk83pNawye522tmTZr8kK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGnxei/btsMsKjIH8v/0Lk83pNawye522tmTZr8kK/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;상세한 설명 1.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGnxei/btsMsKjIH8v/0Lk83pNawye522tmTZr8kK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGnxei%2FbtsMsKjIH8v%2F0Lk83pNawye522tmTZr8kK%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;컴린이도 따라 해 볼 수 있는 상세한 설명과 사진들&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대충 사진 하나에 글만 줄줄줄 써놓은 건 봤어도 설치 또는 CRUD과정 하나하나를 화살표로 배려하는 책은 첨 봤습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 정도면 진짜 컴린이도 못 따라 하기도 힘듭니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;실제로 사용되는 팁들&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btWAns/btsMvbzEdOK/vCaKydl4hDKudYEUJTLLZ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btWAns/btsMvbzEdOK/vCaKydl4hDKudYEUJTLLZ0/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;right 조인2.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btWAns/btsMvbzEdOK/vCaKydl4hDKudYEUJTLLZ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtWAns%2FbtsMvbzEdOK%2FvCaKydl4hDKudYEUJTLLZ0%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDpT0r/btsMsSaEfg5/bAk5WWdiVJdRwbVvpLT7R0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDpT0r/btsMsSaEfg5/bAk5WWdiVJdRwbVvpLT7R0/img.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;right 조인.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDpT0r/btsMsSaEfg5/bAk5WWdiVJdRwbVvpLT7R0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDpT0r%2FbtsMsSaEfg5%2FbAk5WWdiVJdRwbVvpLT7R0%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;2992&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RIGHT 조인 부분에 쓰여있는 조언인데 대부분의 경우에는 LEFT조인이 더 직관적이고 표준적이니 되도록 LEFT조인을 사용하라는 조언이 적혀있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 부분들은 기출문제만을 다루는 SQLD 노랑이 서적에는 없는 부분이고 장점이라 생각됩니다.&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;추가로 코딩 자율학습단이라고 4주간 학습 커리큘럼대로 카톡으로 메시지도 주고 멘토분들이 직접 답변도 달아주시는 스터디도 있어서 진짜 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4주간 커리큘럼대로 완주하면 책도 완독하고 추가로 길벗에서 사용가능한 2만 포인트까지 주시는 미친 스터디...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(진짜로 사장님 남는 거 있나요? 책값이 21,600원인데? )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분들도 학습단 모집기간에 참여하여 공부도 하고 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;보상도 받는 1석 2조의 자기 계발이 되었으면 좋겠네요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;a href=&quot;https://cafe.naver.com/gilbutitbook&quot;&gt;https://cafe.naver.com/gilbutitbook&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740309890920&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;코딩 자율학습단 : 네이버 카페&quot; data-og-description=&quot;성장의 경험과 완성의 재미를 제공합니다. Python, C++, Java, C, 자바스크립트, 안드로이드, SQL&quot; data-og-host=&quot;cafe.naver.com&quot; data-og-source-url=&quot;https://cafe.naver.com/gilbutitbook&quot; data-og-url=&quot;https://cafe.naver.com/gilbutitbook&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ds2hzN/hyYjqlb5lD/JSLfk5jHH57G77kbAfkhV0/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150&quot;&gt;&lt;a href=&quot;https://cafe.naver.com/gilbutitbook&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cafe.naver.com/gilbutitbook&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ds2hzN/hyYjqlb5lD/JSLfk5jHH57G77kbAfkhV0/img.png?width=150&amp;amp;height=150&amp;amp;face=0_0_150_150');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코딩 자율학습단 : 네이버 카페&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;성장의 경험과 완성의 재미를 제공합니다. Python, C++, Java, C, 자바스크립트, 안드로이드, SQL&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cafe.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;br /&gt;도서 구매링크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;a href=&quot;https://gilbut.co/c/25024660Iy&quot;&gt;https://gilbut.co/c/25024660Iy&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1740323613657&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;book&quot; data-og-title=&quot;코딩 자율학습 SQL 데이터베이스 입문 - 예스24&quot; data-og-description=&quot;실습 중심의 반복 학습으로SQL 초보자에서 능력자되기데이터베이스의 전반적인 개념과 동작 원리를 이해하고 SQL 쿼리 작성법을 배운다. 실습은 무료로 사용할 수 있는 MySQL로 진행하며, 윈도우&quot; data-og-host=&quot;www.yes24.com&quot; data-og-source-url=&quot;https://gilbut.co/c/25024660Iy&quot; data-og-url=&quot;https://www.yes24.com/Product/Goods/142078601&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dmt6l4/hyYjL3WgAz/DrpqmdHtk5k8I5ILhPHgN1/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/cDwgxB/hyYjx5FiVT/TcAfgd1kOMPk4LvbYQed10/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/5BzWY/hyYjFWVhBS/1aX8o812Io9J4kl20e8fE0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200&quot;&gt;&lt;a href=&quot;https://gilbut.co/c/25024660Iy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gilbut.co/c/25024660Iy&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dmt6l4/hyYjL3WgAz/DrpqmdHtk5k8I5ILhPHgN1/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/cDwgxB/hyYjx5FiVT/TcAfgd1kOMPk4LvbYQed10/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200,https://scrap.kakaocdn.net/dn/5BzWY/hyYjFWVhBS/1aX8o812Io9J4kl20e8fE0/img.jpg?width=934&amp;amp;height=1200&amp;amp;face=0_0_934_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;코딩 자율학습 SQL 데이터베이스 입문 - 예스24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실습 중심의 반복 학습으로SQL 초보자에서 능력자되기데이터베이스의 전반적인 개념과 동작 원리를 이해하고 SQL 쿼리 작성법을 배운다. 실습은 무료로 사용할 수 있는 MySQL로 진행하며, 윈도우&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yes24.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>프로그래밍 공부/SQL</category>
      <category>SQLD교재</category>
      <category>SQLD독학</category>
      <category>SQLD시험일정</category>
      <category>SQL자격증</category>
      <category>코딩자율학습단</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/82</guid>
      <comments>https://hotsan-engineering.tistory.com/82#entry82comment</comments>
      <pubDate>Sun, 23 Feb 2025 23:55:04 +0900</pubDate>
    </item>
    <item>
      <title>[혼공JS&amp;amp;혼공컴운] 혼공단 회고</title>
      <link>https://hotsan-engineering.tistory.com/64</link>
      <description>&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;유성우페페.gif&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ncrgp/btsE0rwYDMr/A4fX1fXHwSqK1Il9gnNgM0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ncrgp/btsE0rwYDMr/A4fX1fXHwSqK1Il9gnNgM0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ncrgp/btsE0rwYDMr/A4fX1fXHwSqK1Il9gnNgM0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ncrgp/btsE0rwYDMr/A4fX1fXHwSqK1Il9gnNgM0/img.gif&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;374&quot; height=&quot;210&quot; data-filename=&quot;유성우페페.gif&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;281&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;h2 data-ke-size=&quot;size26&quot;&gt;6주간의 회고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길고 길었던 6주간의 여정이 끝났습니다.&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;처음에&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;이왕&amp;nbsp;하는&amp;nbsp;거&amp;nbsp;CS분야도&amp;nbsp;공부하고&amp;nbsp;자바스크립트도&amp;nbsp;하면&amp;nbsp;좋지&amp;nbsp;않을까?&amp;nbsp;하는&amp;nbsp;생각으로&amp;nbsp;도전했습니다.&lt;br /&gt;&lt;s&gt;(착한 어른이는 따라하지 마세요)&lt;/s&gt;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;고난의 6주&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네... 생각보다 많이 험난한 6주간이었습니다 ㅋㅋㅋㅋ&lt;br /&gt;솔직히 처음에 자바스크립트랑 컴퓨터 구조 운영체제 1,2 챕터만 보고 껄껄껄 이건 식은 죽 먹기구만 하면서 도전했습니다.&lt;br /&gt;이 정도면 퇴근하고 2~3시간씩 하면 뚝딱이고 주말 이틀이면 끝이겠구먼 했습니다.&amp;nbsp;&lt;br /&gt;(혼공족장님의 경고를 무시했습니다.... 저는 바보입니다... 흑흑)&lt;br /&gt;그런데 자바스크립트는 반복문부터 어려워지기 시작하더군요&lt;br /&gt;특히&amp;nbsp;자바스크립트는&amp;nbsp;다&amp;nbsp;공부했으니&amp;nbsp;미니프로젝트로&amp;nbsp;명언생성기랑&amp;nbsp;todo-타이머를&amp;nbsp;만들어보니&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;오픈북.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1LAAw/btsEYz3WRkd/WCgk0D0oqkzYLMo6hCcNQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1LAAw/btsEYz3WRkd/WCgk0D0oqkzYLMo6hCcNQ1/img.png&quot; data-alt=&quot;오픈북이여도 몰라요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1LAAw/btsEYz3WRkd/WCgk0D0oqkzYLMo6hCcNQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1LAAw%2FbtsEYz3WRkd%2FWCgk0D0oqkzYLMo6hCcNQ1%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;385&quot; height=&quot;216&quot; data-filename=&quot;오픈북.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;506&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;책에&amp;nbsp;없는&amp;nbsp;걸&amp;nbsp;만들다&amp;nbsp;보니&amp;nbsp;위에&amp;nbsp;사진처럼&amp;nbsp;어버버버&amp;nbsp;거리고&amp;nbsp;있었고&amp;nbsp;ㅋㅋㅋ&lt;br /&gt;암기도&amp;nbsp;못하는&amp;nbsp;금붕어였음을&amp;nbsp;깨달았습니다ㅋㅋㅋ(&amp;nbsp;특히&amp;nbsp;todolist&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;발견합니다.&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;찡찡됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;니가 뭘 알아.gif&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh76O3/btsEYImcxA7/FJBZIC8CedWsBqG47NicwK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh76O3/btsEYImcxA7/FJBZIC8CedWsBqG47NicwK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh76O3/btsEYImcxA7/FJBZIC8CedWsBqG47NicwK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bh76O3/btsEYImcxA7/FJBZIC8CedWsBqG47NicwK/img.gif&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;344&quot; height=&quot;295&quot; data-filename=&quot;니가 뭘 알아.gif&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(우분투&amp;nbsp;네가&amp;nbsp;뭘&amp;nbsp;알아&amp;nbsp;내가&amp;nbsp;열심히&amp;nbsp;짠&amp;nbsp;코드인데!!!!!)&lt;br /&gt;거기에&amp;nbsp;노트북도&amp;nbsp;연식이&amp;nbsp;10년이&amp;nbsp;넘은지라&amp;nbsp;슬슬&amp;nbsp;보내줘야하는지&amp;nbsp;골골됩니다...&lt;br /&gt;데스크탑이였다면&amp;nbsp;컴퓨터&amp;nbsp;구조&amp;nbsp;활용해서&amp;nbsp;고쳐줬을텐뎅.....&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;미래지향적 회고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쨌든 희망찬 미래 지향적 이야기를 해보자면 자바스크립트와 컴퓨터구조 운영체제를 모두 공부했습니다!&lt;br /&gt;와.... 개발자로서의 입문관문은 넘어선 거 같습니다.&lt;br /&gt;물론 완벽하게 이해하고 이를 실전에서 써먹을 수 있어요? 하면&lt;br /&gt;저는 책을 보면서 이렇게 이렇게 사용할 수 있을 거 같아요&amp;nbsp; &amp;nbsp; 정도 대답은 할 수 있을거 같네요.&lt;br /&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;ㅎㅎ 여하튼 다음은 이번 혼공단을 하고나서 느낀점들 입니다.&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;br /&gt;&lt;/li&gt;
&lt;li&gt;책은 좀 구석구석 보자 , 안되는 부분들에는 힌트가 분명 있다.&lt;br /&gt;- 저자님이 열심히 적어주셨지만 대충봐서 안되는 부분들은 반성해야겠다.&lt;/li&gt;
&lt;li&gt;유튜브를 좀 더 활용해보자&lt;br /&gt;-유튜브에 많은 강의들이 있고 그중에 react 및 express 좋은 강의들이 많다는걸 확인했다. (인도형님들 감사합니다)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;운영체제는 C언어나 파이썬을 공부한 후에 진행하자.&lt;br /&gt;- 아무것도 모르고 일단 시도하려니 이게 뭐에 쓰는건지 모르고 따라치는 느낌이다.&lt;br /&gt;- 물론 자바스크립트 짬밥으로 대충 때려맞추거나 검색하면 나오지만 기초가 부실한 느낌이다&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&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;여하튼 긴 6주간 혼공족장님의 숙제검사와 맛난 간식 덕분에 열심히 했던거 같습니다.&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;다음 혼공단이 있다면 아마 C언어 또는 파이썬을 도전할거 같네요&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;안녕.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPP5IJ/btsE2CMh8x5/nG58WJsHyzdl0XxMu9MYz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPP5IJ/btsE2CMh8x5/nG58WJsHyzdl0XxMu9MYz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPP5IJ/btsE2CMh8x5/nG58WJsHyzdl0XxMu9MYz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPP5IJ%2FbtsE2CMh8x5%2FnG58WJsHyzdl0XxMu9MYz0%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;476&quot; height=&quot;323&quot; data-filename=&quot;안녕.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;543&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;</description>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/64</guid>
      <comments>https://hotsan-engineering.tistory.com/64#entry64comment</comments>
      <pubDate>Sun, 18 Feb 2024 23:37:57 +0900</pubDate>
    </item>
    <item>
      <title>[혼공JS] 6주차 미션</title>
      <link>https://hotsan-engineering.tistory.com/61</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://hotsan-engineering.tistory.com/51&quot;&gt;2024.02.07 - [프로그래밍 공부/Javascript] - [혼공JS] 리액트 시작하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hotsan-engineering.tistory.com/52&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.02.08 - [프로그래밍 공부/Javascript] - [혼공JS] SQL 간단 예제 및 CRUD 예제&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://hotsan-engineering.tistory.com/54&quot;&gt;2024.02.09 - [프로그래밍 공부/Javascript] - [혼공JS] 리액트 JSX&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://hotsan-engineering.tistory.com/55&quot;&gt;2024.02.09 - [프로그래밍 공부/Javascript] - [혼공JS] API와 RESTAPI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_처음들어봅니다.png&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n9jNm/btsE2BFKFWN/D19YXOtcCPjukfTxbOwQ41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n9jNm/btsE2BFKFWN/D19YXOtcCPjukfTxbOwQ41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n9jNm/btsE2BFKFWN/D19YXOtcCPjukfTxbOwQ41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn9jNm%2FbtsE2BFKFWN%2FD19YXOtcCPjukfTxbOwQ41%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;355&quot; height=&quot;470&quot; data-filename=&quot;edited_처음들어봅니다.png&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트를&amp;nbsp;처음&amp;nbsp;접하고나서의&amp;nbsp;나의&amp;nbsp;심정입니다.&lt;br /&gt;아니... 자바스크립트 라이브러리라며!&lt;br /&gt;왜&amp;nbsp;새로운게&amp;nbsp;계속&amp;nbsp;나와욧!&lt;br /&gt;자바스크립트&amp;nbsp;문법에서&amp;nbsp;이어서&amp;nbsp;나가는거&amp;nbsp;아니였나....&amp;nbsp;어렵네요&amp;nbsp;어려워요&lt;br /&gt;이번 달에는 멋지게 react -express - mysql 로 프로젝트를 완성하고 싶었는데 갈길이 아주 멉니다&lt;br /&gt;거기에&amp;nbsp;공부할때마다&amp;nbsp;새로운게&amp;nbsp;튀어나와요&lt;br /&gt;프론트엔드&amp;nbsp;-&amp;nbsp;컴포넌트,&amp;nbsp;리액트&amp;nbsp;훅,&amp;nbsp;리덕스,&amp;nbsp;use&amp;nbsp;state&amp;nbsp;&lt;br /&gt;백엔드&amp;nbsp;-&amp;nbsp;SQL도&amp;nbsp;해야하고&amp;nbsp;미들웨어들(PASSPORT)&amp;nbsp;기타등등&amp;nbsp;,&amp;nbsp;거기에&amp;nbsp;세션은&amp;nbsp;뭐고&amp;nbsp;JWT는&amp;nbsp;뭔가...&lt;br /&gt;코린이&amp;nbsp;살려욧....&amp;nbsp;ㅠㅠ&lt;br /&gt;혼공단이 끝난이후에도 열심히 공부해야겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;p.&amp;nbsp;315의&amp;nbsp;&amp;lt;직접&amp;nbsp;해보는&amp;nbsp;손코딩&amp;gt;을&amp;nbsp;실행한&amp;nbsp;후&amp;nbsp;출력되는&amp;nbsp;고양이&amp;nbsp;이미지&amp;nbsp;캡처하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Z2Ej/btsES5VQJ8H/OUdmlvjD2vvYjTlyuldyCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Z2Ej/btsES5VQJ8H/OUdmlvjD2vvYjTlyuldyCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Z2Ej/btsES5VQJ8H/OUdmlvjD2vvYjTlyuldyCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Z2Ej%2FbtsES5VQJ8H%2FOUdmlvjD2vvYjTlyuldyCK%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;1540&quot; height=&quot;345&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p.&amp;nbsp;352&amp;nbsp;누적&amp;nbsp;예제를&amp;nbsp;활용하여&amp;nbsp;본인의&amp;nbsp;할&amp;nbsp;일&amp;nbsp;목록을&amp;nbsp;만들어&amp;nbsp;캡처하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5CSJM/btsES7lQV5h/iBWmVQsR0dz6tC0WKlSfrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5CSJM/btsES7lQV5h/iBWmVQsR0dz6tC0WKlSfrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5CSJM/btsES7lQV5h/iBWmVQsR0dz6tC0WKlSfrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5CSJM%2FbtsES7lQV5h%2FiBWmVQsR0dz6tC0WKlSfrK%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;329&quot; height=&quot;224&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프로그래밍 공부/Javascript</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/61</guid>
      <comments>https://hotsan-engineering.tistory.com/61#entry61comment</comments>
      <pubDate>Thu, 15 Feb 2024 19:59:24 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운] 운영체제 6주차 미션</title>
      <link>https://hotsan-engineering.tistory.com/60</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hotsan-engineering.tistory.com/56&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.02.09 - [컴퓨터 사이언스/컴퓨터 구조 &amp;amp; 운영체제] - [혼공컴운] 운영체제 chapter 14&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hotsan-engineering.tistory.com/59&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.02.13 - [컴퓨터 사이언스/컴퓨터 구조 &amp;amp; 운영체제] - [혼공컴운] 운영체제 chapter 15&lt;/a&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;몰루.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XYsNa/btsES8SplLh/LFbJ1LqGN0E9pVXyOS0qr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XYsNa/btsES8SplLh/LFbJ1LqGN0E9pVXyOS0qr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XYsNa/btsES8SplLh/LFbJ1LqGN0E9pVXyOS0qr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXYsNa%2FbtsES8SplLh%2FLFbJ1LqGN0E9pVXyOS0qr1%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;400&quot; height=&quot;400&quot; data-filename=&quot;몰루.png&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;마지막 운영체제가 끝났습니다. 후우...&amp;nbsp;&amp;nbsp;열심히 한다고 우당탕탕 리눅스도 깔고 실습도 해보고&lt;br /&gt;운영체제도 한번 망가뜨려보고 좀더 열심히 해보겠다고 책은 많이 사서 해봤지만 아직은 잘 모르겠습니다.&lt;br /&gt;(사실 리액트하느라 운영체제 공부 많이 못했습니다. ㅎㅎ)&lt;br /&gt;어려운것도 있지만 경험이 없어서 그런가 실무에서 사용하라고 하면 몰?루&amp;nbsp;&lt;br /&gt;하지만 학습의 의의는 어렴풋이 배운거라도 티내는데 있다고 들었습니다.&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;1인분하는&amp;nbsp;개발자가&amp;nbsp;되도록&amp;nbsp;하겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본미션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p. 400의 확인 문제 1번 풀고 인증하기&lt;br /&gt;메모리 할당 방식에 대한 설명으로 올바른 것은 ?&amp;nbsp;&lt;br /&gt;( 최초 적합 ) : 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식&amp;nbsp;&lt;br /&gt;( 최악 적합 ) : 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식&amp;nbsp;&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;방식&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기&lt;br /&gt;&lt;br /&gt;페이지 참조열 : [&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;5&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;4&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;]&amp;nbsp;&lt;br /&gt;프레임 3개 사용&lt;br /&gt;처음 프레임 - 231&lt;br /&gt;페이지 폴트 1 : 5번페이지 - 프레임 : 135 (오래 사용되지 않은 페이지 2 교체)&lt;br /&gt;페이지 폴트 2 : 2번 페이지 - 프레임 : 352 (오래 사용되지 않은 페이지 1 교체)&lt;br /&gt;페이지 폴트 3 : 4번 페이지 - 프레임 : 234 (오래 사용되지 않은 페이지 5 교체)&lt;br /&gt;LRU알고리즘&amp;nbsp;:&amp;nbsp;[&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;(&amp;nbsp;5&amp;nbsp;)&amp;nbsp;(&amp;nbsp;2&amp;nbsp;)&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;(&amp;nbsp;4&amp;nbsp;)&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;]에서&amp;nbsp;페이지&amp;nbsp;폴트&amp;nbsp;발생.&amp;nbsp;3번&amp;nbsp;발생&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터 사이언스/컴퓨터 구조 &amp;amp; 운영체제</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/60</guid>
      <comments>https://hotsan-engineering.tistory.com/60#entry60comment</comments>
      <pubDate>Tue, 13 Feb 2024 22:57:14 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운] 운영체제 chapter 15</title>
      <link>https://hotsan-engineering.tistory.com/59</link>
      <description>&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;보조기억장치에 저장된 관련 정보의 집합&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일의 속성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lpxGX/btsEMXEi6bH/vF2UZalkoYlQKOpGP8h6T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lpxGX/btsEMXEi6bH/vF2UZalkoYlQKOpGP8h6T0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lpxGX/btsEMXEi6bH/vF2UZalkoYlQKOpGP8h6T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlpxGX%2FbtsEMXEi6bH%2FvF2UZalkoYlQKOpGP8h6T0%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;688&quot; height=&quot;393&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;393&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;h3 data-ke-size=&quot;size23&quot;&gt;디렉터리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1단계 디렉터리&lt;/b&gt; : 모든 파일이 하나의 디렉터리 아래에 있는 구조&lt;br /&gt;&lt;b&gt;트리 구조 디렉터리&lt;/b&gt; : 여러 계층을 가진 디렉터리 구조&lt;br /&gt;※ 최상위 디렉터리는 루트 디렉터리라고 부르고 슬래시(/) 로 표현&lt;br /&gt;&lt;br /&gt;디렉터리&amp;nbsp;루트&amp;nbsp;예시&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSo6hV/btsES51UrLV/hQPU0N0EtSWcGEwGKHZx11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSo6hV/btsES51UrLV/hQPU0N0EtSWcGEwGKHZx11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSo6hV/btsES51UrLV/hQPU0N0EtSWcGEwGKHZx11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSo6hV%2FbtsES51UrLV%2FhQPU0N0EtSWcGEwGKHZx11%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;721&quot; height=&quot;339&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;339&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;h3 data-ke-size=&quot;size23&quot;&gt;경로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절대 경로&lt;/b&gt; : 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로&lt;br /&gt;&lt;b&gt;상대 경로&lt;/b&gt; : 현재 디렉터리 부터 시작하는 경로.&lt;br /&gt;&lt;br /&gt;&lt;/p&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;&lt;b&gt;파티셔닝&lt;/b&gt; : 저장 장치의 논리적인 영역을 구획하는 작업&lt;br /&gt;&lt;b&gt;포매팅&lt;/b&gt; : 파일 시스템을 설정하여 데이터를 어떤식으로 쓸지 결정하는 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;파일 시스템은 여러종류가 있고 파티션마다 다른 파일 시스템을 설정할 수 있다.&lt;/p&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;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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJwrGf/btsETUyOBc5/gq2zugrV6w5MeKyEullmB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJwrGf/btsETUyOBc5/gq2zugrV6w5MeKyEullmB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJwrGf/btsETUyOBc5/gq2zugrV6w5MeKyEullmB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJwrGf%2FbtsETUyOBc5%2Fgq2zugrV6w5MeKyEullmB0%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;721&quot; height=&quot;339&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;연속 할당&lt;/b&gt; : 보조기억장치 내 연속적인 블록에 파일 할당&lt;br /&gt;단점 : 파일을 연속적으로 할당하기 때문에 파일이 삭제된 후 빈 블록들의 크기가 충분히 크지 않을 경우가 생겨 외부 단편화를 발생시키는 단점이 있다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F8NHa/btsES1ZuQNu/fSJkcTUQwQucmIKq4krAU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F8NHa/btsES1ZuQNu/fSJkcTUQwQucmIKq4krAU1/img.png&quot; data-alt=&quot;외부단편화&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F8NHa/btsES1ZuQNu/fSJkcTUQwQucmIKq4krAU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF8NHa%2FbtsES1ZuQNu%2FfSJkcTUQwQucmIKq4krAU1%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;781&quot; height=&quot;139&quot; data-origin-width=&quot;781&quot; data-origin-height=&quot;139&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;&lt;b&gt;불연속할당&lt;/b&gt;&lt;/h4&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;파일을 이루는 데이터 블록을 연결 리스트로 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;불연속 할당의 일종 : 파일이 여러 블록에 흩어져 저장되어도 무방&lt;br /&gt;단점 : 반드시 첫 번째 블록부터 하나씩 읽어들여야한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;오류 발생시 해달 블록 이후 블록은 접근이 어렵다.&lt;br /&gt;&lt;br /&gt;색인 할당 : 모든 블록 주소를 색인 블록에 모아 관리하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;파일 내 임의의 위치에 접근하기 용이&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;파일 시스템 살펴보기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;FAT&amp;nbsp;파일&amp;nbsp;시스템&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 할당 기반의 파일 시스템 -- 단점을 보완함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 블록에 포함된 다음 블록의 주소를 한 곳에 모아 테이블 형태로 관리 (FAT)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;유닉스&amp;nbsp;파일&amp;nbsp;시스템&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;색인 할당 기반의 파일 시스템&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;색인 블록 == i-node&amp;nbsp; : 파일의 속성 정보와 15개의 블록 주소 저장가능&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;br /&gt;1. 블록 주소 중 12개에는 직접 블록 주소를 저장&amp;nbsp;&lt;br /&gt;2. 1 번으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소 저장&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 단일 간접 블록 주소 : 파일 데이터를 저장한 블록 주소가 저장된 블록&lt;br /&gt;3. 2 번으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소 저장&lt;br /&gt;4. 3&amp;nbsp;번으로&amp;nbsp;충분하지&amp;nbsp;않다면&amp;nbsp;15번째&amp;nbsp;주소에&amp;nbsp;삼중&amp;nbsp;간접&amp;nbsp;블록&amp;nbsp;주소&amp;nbsp;저장&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>컴퓨터 사이언스/컴퓨터 구조 &amp;amp; 운영체제</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/59</guid>
      <comments>https://hotsan-engineering.tistory.com/59#entry59comment</comments>
      <pubDate>Tue, 13 Feb 2024 03:33:52 +0900</pubDate>
    </item>
    <item>
      <title>[혼공컴운] 운영체제 chapter 14</title>
      <link>https://hotsan-engineering.tistory.com/56</link>
      <description>&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;현재 사용되지 않는 프로세스들을 보조기억장치의 일부영역으로 쫒아내고 빈 공간에 새 프로세스를 적재하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스왑 영역 : 프로세스들이 쫓겨나 저장되는 보조기억장치의 일부 영역&lt;br /&gt;스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것&lt;br /&gt;스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것&lt;br /&gt;--&amp;gt;스와핑을 이용하여 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행 가능하다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메모리&amp;nbsp;할당&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;최초 적합&lt;/b&gt; : 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식, 검색 최소화, 빠른 할당&lt;br /&gt;&lt;b&gt;최적 적합&lt;/b&gt; : 운영체제가 빈 공간을 모두 검색해 본 후 뒤, 적재가능 한 가장 작은 공간에 할당&lt;br /&gt;&lt;b&gt;최악 적합&lt;/b&gt; : 운영체제가 빈 공간을 모두 검색해 본 후, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;적재가능 한&lt;/span&gt; 가장 큰 공간에 할당&lt;br /&gt;&lt;br /&gt;&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;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;외부&amp;nbsp;단편화&amp;nbsp;해결&amp;nbsp;방법&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;압축 : &lt;/b&gt;프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법&lt;br /&gt;단점 : 하던 일을 중지해야 하고, 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기하며, 명확한 기준이 없음&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHAdh1/btsERxcur2x/LIfskvx4skuzrCckDfPNDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHAdh1/btsERxcur2x/LIfskvx4skuzrCckDfPNDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHAdh1/btsERxcur2x/LIfskvx4skuzrCckDfPNDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHAdh1%2FbtsERxcur2x%2FLIfskvx4skuzrCckDfPNDK%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;324&quot; height=&quot;321&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;페이징을 통한 가상 메모리 관리&lt;/h2&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;b&gt;가상 메모리 &lt;/b&gt;: 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게하는 기술&amp;nbsp; (페이징, 세그멘테이션)&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;/p&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;br /&gt;&lt;b&gt;페이징&amp;nbsp;시스템에서&amp;nbsp;스와핑&lt;/b&gt;&lt;br /&gt;프로세스 단위가 아닌 페이지 단위로 스왑 인, 스왑 아웃&lt;br /&gt;메모리에 적재될 필요가 없는 페이지들은 스왑 아웃&lt;br /&gt;실행에 필요한 페이지들은 메모리로 스왑 인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 프로세스를 실행하기 위해 모든 페이지가 적재될 필요없다. --&amp;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-origin-width=&quot;573&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb7SNL/btsEF44LVLL/POvHAuK0B7I0nfLfdIY4r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb7SNL/btsEF44LVLL/POvHAuK0B7I0nfLfdIY4r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb7SNL/btsEF44LVLL/POvHAuK0B7I0nfLfdIY4r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb7SNL%2FbtsEF44LVLL%2FPOvHAuK0B7I0nfLfdIY4r1%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;573&quot; height=&quot;220&quot; data-origin-width=&quot;573&quot; data-origin-height=&quot;220&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;h3 data-ke-size=&quot;size23&quot;&gt;페이지 테이블&lt;/h3&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;페이지 테이블의 페이지 번호를 이용해 CPU는 논리주소로 순차적으로 실행하면 됨&lt;br /&gt;&lt;br /&gt;※페이징 시스템은 외부 단편화 문제를 해결할 수 있지만, 내부 단편화 문제를 야기할 수 있음&lt;br /&gt;프로세스 크기가 페이지 크기의 배수가 아닐 수 있음 -- 약간 남아도는 페이지가 내부 단편화&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cT5RXK/btsEKFXg0EY/kFMz4W1UP9tKK6jkK5CHGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cT5RXK/btsEKFXg0EY/kFMz4W1UP9tKK6jkK5CHGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cT5RXK/btsEKFXg0EY/kFMz4W1UP9tKK6jkK5CHGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcT5RXK%2FbtsEKFXg0EY%2FkFMz4W1UP9tKK6jkK5CHGK%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;434&quot; height=&quot;235&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;235&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;h4 data-ke-size=&quot;size20&quot;&gt;페이지 테이블 베이스 레지스터&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;각 프로세스의 페이지 테이블이 적재된 주소를 가르키는 레지스터. CPU 내에 존재함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 테이블을 참조하는데 효율적이지않아 캐시메모리를 사용함&lt;br /&gt;&lt;b&gt;TLB : &lt;/b&gt;CPU 곁에 페이지 테이블의 캐시메모리&lt;br /&gt;페이지 테이블의 일부를 저장함&lt;br /&gt;TLB 히트: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우(메모리 한번 접근)&lt;br /&gt;TLB 미스: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없을 경우(메모리 두번 접근)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;페이징에서의&amp;nbsp;주소&amp;nbsp;변환&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이징 시스템 논리 주소 형식 == 페이지 번호와 변위&lt;br /&gt;페이지 번호: 접근하고자 하는 페이지 번호&lt;br /&gt;변위: 프레임의 시작 번지로부터 얼만큼 떨어져 있는지의 정보&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;페이지 번호, 변위&amp;gt; 논리주소 -- &amp;gt; 페이지 테이블 -- &amp;gt;&amp;nbsp; &amp;lt;프레임 번호, 변위&amp;gt; 논리 주소로 변환됨&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;페이지 테이블의 각각의 행들&lt;br /&gt;&lt;br /&gt;페이지 테이블 엔트리에 있는 정보&lt;br /&gt;&lt;b&gt;유효 비트&lt;/b&gt; : 현재 해당 페이지에 접근 가능한지 여부를 알려주는 비트&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 메모리에 적재(1), 보조기억장치에 적재(0)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 페이지 폴트 : 유효 비트가 0인 페이지에 접근하려고 할때 발생하는 예외&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;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CPU 기존 작업 내용 백업&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;페이지 폴트 처리 루틴 실행&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;페이지 처리 루틴은 원하는 페이지 메모리에 적재 후 유효 비트 1로 변경&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;페이지 폴트 해결후 CPU는 해당 페이지에 접근 가능&lt;br /&gt;&lt;br /&gt;보호 비트 : 페이지 보호 기능을 위한 비트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;읽기 모드와 읽기/쓰기 모드를 구분함&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;보호 비트가 0 일 경우: 읽기만 가능&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;보호 비트가 1 일 경우: 읽기/쓰기 모두 가능&lt;br /&gt;&lt;br /&gt;참조 비트 : CPU가 해당 페이지에 접근한 적이 있는지 여부를 나타내는 비트&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;접근한 적이 있다면 1, 접근한 적이 없다면 0&lt;br /&gt;&lt;br /&gt;수정 비트 : 해당 페이지에 데이터의 수정 여부를 나타냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;변경된 적이 있다면 1, 변경된 적이 없다면 0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;수정된 페이지는 스왑 아웃 될때 보조기억장치에도 쓰기 작업을 거쳐야 하므로 수정비트가 필요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&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;처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법&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;b&gt;순수 요구 페이징&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 어떠한 페이지도 메모리에 적재하지 않은 채로 실행하여 메모리에 적재하는 기법.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--&amp;gt; 메모리가 가득참 --&amp;gt; 교체가 필요! --&amp;gt; 최적화된 알고리즘 필요&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;페이지 교체 알고리즘&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;페이지 참조열&lt;/b&gt; : CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;중복된 페이지를 참조하는 행위는 페이지 폴트를 발생시키지 않기 떄문에&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;b&gt;FIFO 페이지 교체 알고리즘 &lt;/b&gt;: 페이지 폴트 발생 시 메모리에 가장 먼저 적재된 페이지부터 내쫓는 방식&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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; 단점 - 프로그램 실행 내내 사용될 페이지가 있을수 있다.&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;b&gt;2차 기회 페이지 교체 알고리즘 &lt;/b&gt;: 기본적으로 FIFO 페이지 교체 알고리즘의 규칙에서 기회를 한번더 줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;참조비트를 기반으로 한번기회를 주고 뒤로 밀어냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;최적 페이지 교체 알고리즘&lt;/b&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;실제 구현이 어렵기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;다른 알고리즘을 평가하는데 사용.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LRU 페이지 교체 알고리즘 &lt;/b&gt;:&amp;nbsp;가장&amp;nbsp;오랫동안&amp;nbsp;사용되지&amp;nbsp;않은&amp;nbsp;페이지를&amp;nbsp;교체하는&amp;nbsp;알고리즘.&lt;br /&gt;&lt;br /&gt;&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;b&gt;스래싱&lt;/b&gt; : 프로세스가 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 CPU 이용률이 저해되는 문제&lt;br /&gt;&lt;b&gt;멀티프로그래밍의 정도&lt;/b&gt; : 메모리에서 동시 실행되는 프로세스의 수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시 실행되는 프로세스가 늘린다고 CPU 이용률도 계속 비례해서 높아지는 것이 아니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YrOHn/btsEQQYIjsH/vLtqRm0W7D3g2bZOLMJ7Tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YrOHn/btsEQQYIjsH/vLtqRm0W7D3g2bZOLMJ7Tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YrOHn/btsEQQYIjsH/vLtqRm0W7D3g2bZOLMJ7Tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYrOHn%2FbtsEQQYIjsH%2FvLtqRm0W7D3g2bZOLMJ7Tk%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;508&quot; height=&quot;317&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&amp;nbsp;--&amp;gt; &lt;b&gt;각 프로세스가 필요로 하는 최소한의 프레임 수를 파악하고 적절한 프레임을 할당해야한다.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;프레임&amp;nbsp;할당&amp;nbsp;방식&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;균등 할당&lt;/b&gt; : 모든 프로세스들에게 균등하게 프레임을 제공하는 방식&lt;br /&gt;&lt;br /&gt;&lt;b&gt;비례 할당&lt;/b&gt; : 프로세스 크기에 비례해 할당하는 방식&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;프레임의 수는 실행해봐야 알 수 있다&lt;br /&gt;&lt;br /&gt;&lt;b&gt;작업 집합 모델&lt;/b&gt; : CPU가 특정 시간 동안 주로 참조한 페이지 개수만큼만 프레임을 할당&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 작업 집합 : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합&lt;br /&gt;&lt;br /&gt;&lt;b&gt;페이지 폴트 빈도 &lt;/b&gt;: 페이지 폴트율에 상한선과 하한선을 정하고, 이 범위 내로 프레임을 할당하는 방식.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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; 너무 많지도 적지도 않은 프레임을 할당하게 하는 방식.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>컴퓨터 사이언스/컴퓨터 구조 &amp;amp; 운영체제</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/56</guid>
      <comments>https://hotsan-engineering.tistory.com/56#entry56comment</comments>
      <pubDate>Fri, 9 Feb 2024 23:52:39 +0900</pubDate>
    </item>
    <item>
      <title>[혼공JS] API와 RESTAPI</title>
      <link>https://hotsan-engineering.tistory.com/55</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;RESTAPI, RESTful한 개발 등등 도대체 RESTAPI가 뭔지 몰라 찾아보고 간단하게 정리하고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-AWS 학습페이지 참조&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/what-is/restful-api/&quot;&gt;https://aws.amazon.com/ko/what-is/restful-api/&lt;/a&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;API란?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;api.jpg&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LAoE5/btsETXpr9Zr/LYP0es5IowMn3xK6atfGqK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LAoE5/btsETXpr9Zr/LYP0es5IowMn3xK6atfGqK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LAoE5/btsETXpr9Zr/LYP0es5IowMn3xK6atfGqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLAoE5%2FbtsETXpr9Zr%2FLYP0es5IowMn3xK6atfGqK%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;651&quot; height=&quot;407&quot; data-filename=&quot;api.jpg&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플리케이션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 말한다.&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;/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;h2 data-ke-size=&quot;size26&quot;&gt;RESTAPI&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST 설계 규칙을 따르는 API를 REST API 를 뜻한다.&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;GET : 리소스&amp;nbsp;조회.&amp;nbsp;GET&amp;nbsp;메서드는&amp;nbsp;데이터를&amp;nbsp;가져올때만&amp;nbsp;사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PUT : &amp;nbsp;요청 데이터를 사용하여 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;POST : 서버로&amp;nbsp;데이터를&amp;nbsp;전송한다.&amp;nbsp;새로운&amp;nbsp;리소스를&amp;nbsp;생성(등록)할&amp;nbsp;때&amp;nbsp;주로&amp;nbsp;사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DELETE :리소스&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST&amp;nbsp;API&amp;nbsp;설계&amp;nbsp;규칙&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;URI는 정보의 자원을 표현해야 한다.&lt;br /&gt;resource는&amp;nbsp;동사보다는&amp;nbsp;명사를,&amp;nbsp;대문자보다는&amp;nbsp;소문자를&amp;nbsp;사용한다.&lt;br /&gt;resource의&amp;nbsp;도큐먼트&amp;nbsp;이름으로는&amp;nbsp;단수&amp;nbsp;명사를&amp;nbsp;사용해야&amp;nbsp;한다.&lt;br /&gt;resource의&amp;nbsp;컬렉션&amp;nbsp;이름으로는&amp;nbsp;복수&amp;nbsp;명사를&amp;nbsp;사용해야&amp;nbsp;한다.&lt;br /&gt;resource의 스토어 이름으로는 복수 명사를 사용해야 한다.ex) GET /Member/1 -&amp;gt; GET /members/1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.&lt;br /&gt;URI에&amp;nbsp;HTTP&amp;nbsp;Method가&amp;nbsp;들어가면&amp;nbsp;안된다.&lt;br /&gt;ex)&amp;nbsp;GET&amp;nbsp;/members/delete/1&amp;nbsp;-&amp;gt;&amp;nbsp;DELETE&amp;nbsp;/members/1&lt;br /&gt;&lt;br /&gt;URI에&amp;nbsp;행위에&amp;nbsp;대한&amp;nbsp;동사&amp;nbsp;표현이&amp;nbsp;들어가면&amp;nbsp;안된다.&lt;br /&gt;(즉,&amp;nbsp;CRUD&amp;nbsp;기능을&amp;nbsp;나타내는&amp;nbsp;것은&amp;nbsp;URI에&amp;nbsp;사용하지&amp;nbsp;않는다.)&lt;br /&gt;ex)&amp;nbsp;GET&amp;nbsp;/members/show/1&amp;nbsp;-&amp;gt;&amp;nbsp;GET&amp;nbsp;/members/1ex)&amp;nbsp;GET&amp;nbsp;/members/insert/2&amp;nbsp;-&amp;gt;&amp;nbsp;POST&amp;nbsp;/members/2&lt;br /&gt;&lt;br /&gt;경로&amp;nbsp;부분&amp;nbsp;중&amp;nbsp;변하는&amp;nbsp;부분은&amp;nbsp;유일한&amp;nbsp;값으로&amp;nbsp;대체한다.&lt;br /&gt;(즉,&amp;nbsp;:id는&amp;nbsp;하나의&amp;nbsp;특정&amp;nbsp;resource를&amp;nbsp;나타내는&amp;nbsp;고유값이다.)&lt;br /&gt;ex) student를 생성하는 route: POST /students&lt;br /&gt;ex) id=12인 student를 삭제하는 route: DELETE /students/12&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.&lt;br /&gt;ex)&amp;nbsp;&lt;a href=&quot;http://restapi.example.com/houses/apartments&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://restapi.example.com/houses/apartments&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;URI&amp;nbsp;마지막&amp;nbsp;문자로&amp;nbsp;슬래시(/&amp;nbsp;)를&amp;nbsp;포함하지&amp;nbsp;않는다.&lt;br /&gt;URI에&amp;nbsp;포함되는&amp;nbsp;모든&amp;nbsp;글자는&amp;nbsp;리소스의&amp;nbsp;유일한&amp;nbsp;식별자로&amp;nbsp;사용되어야&amp;nbsp;하며&amp;nbsp;URI가&amp;nbsp;다르다는&amp;nbsp;것은&amp;nbsp;리소스가&amp;nbsp;다르다는&amp;nbsp;것이고,&amp;nbsp;&lt;br /&gt;역으로&amp;nbsp;리소스가&amp;nbsp;다르면&amp;nbsp;URI도&amp;nbsp;달라져야&amp;nbsp;한다.&lt;br /&gt;REST&amp;nbsp;API는&amp;nbsp;분명한&amp;nbsp;URI를&amp;nbsp;만들어&amp;nbsp;통신을&amp;nbsp;해야&amp;nbsp;하기&amp;nbsp;때문에&amp;nbsp;혼동을&amp;nbsp;주지&amp;nbsp;않도록&amp;nbsp;URI&amp;nbsp;경로의&amp;nbsp;마지막에는&amp;nbsp;슬래시(/)를&amp;nbsp;사용하지&amp;nbsp;않는다.&lt;br /&gt;ex)&amp;nbsp;&lt;a href=&quot;http://restapi.example.com/houses/apartments/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://restapi.example.com/houses/apartments/&lt;/a&gt;&amp;nbsp;(X)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;하이픈(- )은 URI 가독성을 높이는데 사용&lt;br /&gt;불가피하게&amp;nbsp;긴&amp;nbsp;URI경로를&amp;nbsp;사용하게&amp;nbsp;된다면&amp;nbsp;하이픈을&amp;nbsp;사용해&amp;nbsp;가독성을&amp;nbsp;높인다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;밑줄(_ )은 URI에 사용하지 않는다.&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;않는다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;URI 경로에는 소문자가 적합하다.&lt;br /&gt;URI&amp;nbsp;경로에&amp;nbsp;대문자&amp;nbsp;사용은&amp;nbsp;피하도록&amp;nbsp;한다.&lt;br /&gt;RFC&amp;nbsp;3986(URI&amp;nbsp;문법&amp;nbsp;형식)은&amp;nbsp;URI&amp;nbsp;스키마와&amp;nbsp;호스트를&amp;nbsp;제외하고는&amp;nbsp;대소문자를&amp;nbsp;구별하도록&amp;nbsp;규정하기&amp;nbsp;때문&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;파일확장자는&amp;nbsp;URI에&amp;nbsp;포함하지&amp;nbsp;않는다.&lt;br /&gt;REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다.&lt;br /&gt;Accept&amp;nbsp;header를&amp;nbsp;사용한다.&lt;br /&gt;ex)&amp;nbsp;&lt;a href=&quot;http://restapi.example.com/members/soccer/345/photo.jpg&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://restapi.example.com/members/soccer/345/photo.jpg&lt;/a&gt;(X)&lt;br /&gt;ex)&amp;nbsp;GET&amp;nbsp;/&amp;nbsp;members/soccer/345/photo&amp;nbsp;HTTP/1.1&amp;nbsp;Host:&amp;nbsp;restapi.example.com&amp;nbsp;Accept:&amp;nbsp;image/jpg&amp;nbsp;(O)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;리소스&amp;nbsp;간에는&amp;nbsp;연관&amp;nbsp;관계가&amp;nbsp;있는&amp;nbsp;경우/리소스명/리소스&amp;nbsp;ID/&lt;br /&gt;관계가&amp;nbsp;있는&amp;nbsp;다른&amp;nbsp;리소스명&lt;br /&gt;ex)&amp;nbsp;GET&amp;nbsp;:&amp;nbsp;/users/{userid}/devices&amp;nbsp;(일반적으로&amp;nbsp;소유&amp;nbsp;&amp;lsquo;has&amp;rsquo;의&amp;nbsp;관계를&amp;nbsp;표현할&amp;nbsp;때)&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;백엔드 서버를 만들어갈때 참조하여 RESTful한 API를 만들어가야겠다.&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 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;</description>
      <category>프로그래밍 공부/Javascript</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/55</guid>
      <comments>https://hotsan-engineering.tistory.com/55#entry55comment</comments>
      <pubDate>Fri, 9 Feb 2024 11:56:08 +0900</pubDate>
    </item>
    <item>
      <title>[혼공JS] 리액트 JSX</title>
      <link>https://hotsan-engineering.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;JSX란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JSX(Javascript Syntax eXtension)는 Javascript 확장한 문법이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JSX는 리액트로 프로젝트를 개발할 때 사용되므로 공식적인 자바스크립트 문법이 아니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- JSX는 자바스크립트 코드보단 HTML코드 처럼 보이며 좀더 간결하고 보기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- div, span 태그들을 사용할 수 있으며 앞으로 만들 컴포넌트도 html태그 쓰듯이 쉽게 작성가능&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&gt;&amp;nbsp;&lt;/span&gt;React.createElement 를 사용할 경우 사용하기 너무 복잡하기에 리액트 팀은 언어 확장형태로 React를 보다 쉽게 사용할 수 있게 JSX문법을 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번&amp;nbsp;DOM을&amp;nbsp;추가할때&amp;nbsp;마다&amp;nbsp;React.createElement를&amp;nbsp;호출하여&amp;nbsp;작성하기&amp;nbsp;보단&amp;nbsp;JSX로&amp;nbsp;간결하게&amp;nbsp;작성하여&amp;nbsp;개발하기&amp;nbsp;쉽게&amp;nbsp;진행할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;반드시 부모 요소 하나로 감싸야한다.&lt;/h3&gt;
&lt;pre id=&quot;code_1707979243879&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function App(){
    return(
        &amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;동작하니?&amp;lt;/h2&amp;gt;
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;요소&amp;nbsp;여러개가&amp;nbsp;있지만&amp;nbsp;하나의&amp;nbsp;부모요소로&amp;nbsp;감싸져&amp;nbsp;있지않아&amp;nbsp;동작&amp;nbsp;하지&amp;nbsp;않습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1707979282721&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;function App(){
    return(
    	&amp;lt;div&amp;gt;
        	&amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
        	&amp;lt;h2&amp;gt;동작하니?&amp;lt;/h2&amp;gt;
        &amp;lt;/div&amp;gt;
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;div&amp;gt;태그로&amp;nbsp;감싸줘야&amp;nbsp;동작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유 : 가상DOM에서 컴포넌트 변화를 감지할때 효율적으로 비교할 수 있도록 하나의 트리구조로 이루어져야 하기때문에&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;lt;div&amp;gt;가 싫다면? &amp;lt;Fragment&amp;gt; &amp;lt;&amp;gt;로 감싸도 됨&lt;/p&gt;
&lt;pre id=&quot;code_1707979408863&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function App(){
    return(
    	&amp;lt;&amp;gt;
        	&amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
        	&amp;lt;h2&amp;gt;동작하니?&amp;lt;/h2&amp;gt;
        &amp;lt;/&amp;gt;
    )
}&lt;/code&gt;&lt;/pre&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;p data-ke-size=&quot;size16&quot;&gt;코드를 { } 감싸면 사용가능하다!&lt;/p&gt;
&lt;pre id=&quot;code_1707979538584&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function App() {
	const name = '리액트';
    return (
    &amp;lt;&amp;gt;
    	&amp;lt;h1&amp;gt;{name} 안녕&amp;lt;/h1&amp;gt;
        &amp;lt;h2&amp;gt;동작하니?&amp;lt;/h2&amp;gt;
    &amp;lt;/&amp;gt;
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;if 대신 삼항연산자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트 내부에서는 if를 사용할 수 없어서 삼항연산자를 사용함&lt;/p&gt;
&lt;pre id=&quot;code_1707979603529&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function App() {
    const name = '리액트';
  return (
   &amp;lt;div&amp;gt;
          {name === '리액트'? (
          	&amp;lt;h1&amp;gt;리액트&amp;lt;/h1&amp;gt;
          ) : (
          	&amp;lt;h2&amp;gt;리액트가 아님&amp;lt;/h2&amp;gt;
          )}
      
   &amp;lt;/div&amp;gt;
      
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AND 연산자를 사용한 조건부 랜더링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 짦은 코드로 구현&lt;/p&gt;
&lt;pre id=&quot;code_1707979774354&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;function App() {
    const name = '리액트';
  return (
   &amp;lt;div&amp;gt;
          {name === '리액트'&amp;amp;&amp;amp; &amp;lt;h1&amp;gt;리액트입니다.&amp;lt;/h1&amp;gt;}
   &amp;lt;/div&amp;gt;
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;undefined를 렌더링하지 않기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OR연산자 사용하여 오류를 방지해야함&lt;/p&gt;
&lt;pre id=&quot;code_1707979941600&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function App() {
  const name = undefined;
  return name || &quot;값이 undefined입니다.&quot;;  
}&lt;/code&gt;&lt;/pre&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;p data-ke-size=&quot;size16&quot;&gt;기존에&amp;nbsp;HTML에서&amp;nbsp;스타일을&amp;nbsp;지정할&amp;nbsp;때&amp;nbsp;background-color&amp;nbsp;와&amp;nbsp;같이&amp;nbsp;-&amp;nbsp;문자가&amp;nbsp;포함된&amp;nbsp;이름들을,&amp;nbsp;JSX에서&amp;nbsp;사용할&amp;nbsp;때에는&amp;nbsp;-를&amp;nbsp;없애고&amp;nbsp;카멜&amp;nbsp;표기법으로&amp;nbsp;작성해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1707980010588&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const name = '리액트';
function App() {
  const style = {
      backgroundColor: 'black',
      fontSize: '48px',
      color :'aqua'
      fontWeight: 'bold'
      padding:16
  }
  return (
  	&amp;lt;div style={style}&amp;gt;{name}&amp;lt;/div&amp;gt;
  )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;class 대신 className&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;div class=&quot;냐옹1&quot;&amp;gt;&amp;nbsp; ---&amp;gt; &amp;lt;div className=&quot;냐옹1&quot;&amp;gt;&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;self-closing 태그를 사용해도 OK&lt;/p&gt;
&lt;pre id=&quot;code_1707980254147&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input&amp;gt;&amp;lt;/input&amp;gt;
// 혹은 다음과 같이 self-closing 태그로 작성해도 무방
&amp;lt;input /&amp;gt;&lt;/code&gt;&lt;/pre&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;h3 data-ke-size=&quot;size23&quot;&gt;주석&lt;/h3&gt;
&lt;pre id=&quot;code_1707980344636&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{/* 주석처리 */}
// 주석처리 않됨
/* 주석처리 않됨 *?&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍 공부/Javascript</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/54</guid>
      <comments>https://hotsan-engineering.tistory.com/54#entry54comment</comments>
      <pubDate>Fri, 9 Feb 2024 02:48:56 +0900</pubDate>
    </item>
    <item>
      <title>[혼공JS] 리액트 시작하기</title>
      <link>https://hotsan-engineering.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;혼공JS에서 리액트를 맛봤으면서 왜 또 다시 시작하냐?! 라고 생각할 수 있지만 이번엔 좀더 딥하게 알고 넘어가고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;React&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;--사용자 인터페이스를 만들기 위한 JavaScript &lt;b&gt;라이브러리&lt;/b&gt;임&lt;br /&gt;&amp;nbsp; 프레임워크가 아니다&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;React&amp;nbsp;특징&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴포넌트&amp;nbsp;기반의&amp;nbsp;개발&amp;nbsp;방식&lt;br /&gt;복잡성&amp;nbsp;감소&lt;br /&gt;재사용&amp;nbsp;특화&lt;br /&gt;오직&amp;nbsp;View만&amp;nbsp;신경씀&lt;br /&gt;효율적인&amp;nbsp;렌더링을&amp;nbsp;위한&amp;nbsp;Virtual&amp;nbsp;DOM&amp;nbsp;사용&lt;br /&gt;지속적으로&amp;nbsp;데이터가&amp;nbsp;변화하는&amp;nbsp;대규모&amp;nbsp;애플리케이션에서&amp;nbsp;사용하기&amp;nbsp;적합함&lt;br /&gt;업데이트&amp;nbsp;처리&amp;nbsp;간결성을&amp;nbsp;제공&lt;br /&gt;UI를&amp;nbsp;업데이트하는&amp;nbsp;과정에서&amp;nbsp;생기는&amp;nbsp;복잡함을&amp;nbsp;모두&amp;nbsp;해소하고,&amp;nbsp;더욱&amp;nbsp;쉽게&amp;nbsp;업데이트에&amp;nbsp;접근&lt;/p&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;p data-ke-size=&quot;size16&quot;&gt;가상&amp;nbsp;돔을&amp;nbsp;사용한다고해서&amp;nbsp;무조건&amp;nbsp;빠르다는건&amp;nbsp;아님&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;h3 data-ke-size=&quot;size23&quot;&gt;React&amp;nbsp;사용&amp;nbsp;이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;가장 많이 사용되는 프론트 엔드 라이브러리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React와 관련된 추가되는 라이브러리들이 많이 존재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;React-router, Next.js, Redux&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-React에 관한 자료가 다른 기술에 비해 많이 존재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;가장 선호되고 많이 사용되어서 많이 언급되고 해결책이 존재함 -- stackoverflow&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; &amp;nbsp; &amp;nbsp;React &amp;amp; vue -2013년~2014년&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;svelte - 2016년&lt;br /&gt;-채용 시장에선 React를 선호함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;React - 1355건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;vue - 750건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;jQuery -674건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Angular -233건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;svelte - 30건 (....)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가상 DOM VS 물리 DOM&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 객체를 배우면서 물리 DOM을 배웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 피지컬 DOM에 대한 예시입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1707971706561&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let pPhysicalDOM = document.createElement('p')
pPhysicalDOM.innerText = 'Hello physical DOM world!'
document.body.appendChild(pPhysicalDOM)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p요소를 생성해주고 inner Text로 내부에 텍스트를 넣고, body아래 자식으로 넣는 DOM 조작&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;React로 가상DOM 조작을 하고 싶다면?&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;React.createElement&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React.createElement 를 사용하면 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 React.createElement에 오른쪽 클릭하고 정의로 이동해보면&lt;/p&gt;
&lt;pre id=&quot;code_1707972889877&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function createElement&amp;lt;P extends {}&amp;gt;(
        type: FunctionComponent&amp;lt;P&amp;gt;,
        props?: Attributes &amp;amp; P | null,
        ...children: ReactNode[]
    ): FunctionComponentElement&amp;lt;P&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요런식의 React 동작을 확인 할 수 있는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 타입을 정합니다 -- h1인지 p인지 요소를 선택하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. props의 경우 ?가 붙어있어 생략가능한 선택 매개변수입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3, 자식요소를 추가합니다. -- 텍스트나 기타등등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 활용하여 물리DOM을 가상 DOM으로 변환하면&lt;/p&gt;
&lt;pre id=&quot;code_1707972388098&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const pVirtualDOM = React.createElement('p', null, 'Hello virtual DOM world!')&lt;/code&gt;&lt;/pre&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 data-ke-size=&quot;size16&quot;&gt;이제 랜더링이 필요한데 이전과 같이 appendChild를 사용하지 못합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가상DOM은 document.body.appendChild로 이해하지 못하기 때문에 우리는 새로운 방식으로 랜더링 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Rendor()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면에 무엇인가 보이게 하는걸 랜더링이라 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React에서 가상 DOM객체의 랜더링은 React-dom 랜더러가 진행하며 &amp;lt;div id = &quot;root&quot;&amp;gt;인 물리적 객체를 먼저 만들어줘야 사용 가능합니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1707974225754&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React from 'react'
import ReactDOM from 'react-dom/client'

const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
const pVirtualDOM = React.createElement('p', null, 'Hello virtual DOM world!')

root.render(pVirtualDOM)&lt;/code&gt;&lt;/pre&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;1206&quot; data-origin-height=&quot;851&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0TX8l/btsESpfI7pV/22XltAvWMjeX8Pz5RZ06Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0TX8l/btsESpfI7pV/22XltAvWMjeX8Pz5RZ06Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0TX8l/btsESpfI7pV/22XltAvWMjeX8Pz5RZ06Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0TX8l%2FbtsESpfI7pV%2F22XltAvWMjeX8Pz5RZ06Q0%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;1206&quot; height=&quot;851&quot; data-origin-width=&quot;1206&quot; data-origin-height=&quot;851&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;lt;div id =root&amp;gt; 인 객체를 생성하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. rendor 메소드가 가상 DOM을 받아들이고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 물리DOM으로 변환 시킵니다.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유는 임의의 DOM 객체를 찾아서 속성값만 변환하고 다시 DOM 트리에 반영하려면 재랜더링을 하려면 느리지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;react를 사용하여 가상의 DOM 객체를 만들어 놓고 변화한 부분만 갈아치운다면 빠르게 재랜더링할 수 있기 때문입니다.&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;root&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div id=&quot;root&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>프로그래밍 공부/Javascript</category>
      <author>공대핫산</author>
      <guid isPermaLink="true">https://hotsan-engineering.tistory.com/51</guid>
      <comments>https://hotsan-engineering.tistory.com/51#entry51comment</comments>
      <pubDate>Wed, 7 Feb 2024 23:34:07 +0900</pubDate>
    </item>
  </channel>
</rss>