<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>조컴퓨터</title>
    <link>https://chocomputer.tistory.com/</link>
    <description>검은머리갈매기가 좋아요</description>
    <language>ko</language>
    <pubDate>Wed, 1 Jul 2026 17:09:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>챠오위</managingEditor>
    <image>
      <title>조컴퓨터</title>
      <url>https://tistory1.daumcdn.net/tistory/4122972/attach/d84bb9defc344e1d9ce614b1a96eeea6</url>
      <link>https://chocomputer.tistory.com</link>
    </image>
    <item>
      <title>2주차 회고</title>
      <link>https://chocomputer.tistory.com/220</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주에는 건강 문제로 과제 진행이 어려웠습니다. 그러나 아키텍처의 일부를 구현하는 과정을 겪으면서, 레이어 간의 역할 구분과 의존성 관리에 대해 생각할 기회가 있었습니다. 특히, Clean Architecture 와 레이어드 아키텍처 간의 차이점에 대해 고민하며 설계를 진행했지만, 완벽하게 이해하지 못한 부분들이 있었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 시도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현 과정에서 레포지토리와 서비스 레이어 간의 의존성 문제를 해결하려고 했습니다. Clean Architecture 원칙을 지키면서 레이어 간의 의존성을 최소화하려고 노력했습니다. 동시에, 기존에 적용하던 방식인 레이어드 아키텍처와 비교하면서 어떤 구조가 더 유지보수가 용이할지 고민했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이어 간의 의존성을 분리하고, 도메인 계층과 애플리케이션 계층의 역할을 구분하는 것이 중요하다는 점을 배웠습니다. 아직 Clean Architecture 의 원칙에 대해 완전히 이해하지 못했습니다만, 계속 학습하면서 개선할 예정입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 알게된 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아키텍처 설계에서 중요한 것은 각 레이어의 역할을 명확히 구분하고, 의존성을 관리하는 것이라는 점을 깨달았습니다. 또한, 아키텍처 구조를 변경하면서 발생하는 문제를 미리 예상하고 준비하는 것이 필요하다는 점을 인식하게 되었습니다..&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;reaction-219&quot; data-tistory-react-app=&quot;Reaction&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>항해99/WIL</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/220</guid>
      <comments>https://chocomputer.tistory.com/220#entry220comment</comments>
      <pubDate>Sat, 5 Oct 2024 17:22:05 +0900</pubDate>
    </item>
    <item>
      <title>1주차 회고</title>
      <link>https://chocomputer.tistory.com/219</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 문제 &lt;b&gt;(과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 주에 통합 테스트에서 PointControllerIntegrationTest 의 모든 테스트가 실패했습니다. MockMvc 를 사용해 컨트롤러의 API 를 테스트했지만, 데이터 초기화나 Repository 설정 문제로 인해 예상한 결과를 얻지 못했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 시도&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 테스트 전 @BeforeEach 에서 데이터를 명확히 초기화하려는 시도를 했습니다.&lt;/li&gt;
&lt;li&gt;Mock Repository 와 실제 Repository 를 번갈아 사용하며 테스트 결과를 비교했습니다.&lt;/li&gt;
&lt;li&gt;테스트 코드를 간소화하고, 실패 원인을 찾기 위해 예외 메시지를 확인하며 디버깅을 진행했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 해결&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 초기화 문제를 해결하면서 일부 테스트는 통과하기 시작했습니다. 또한, Repository 설정을 Mock으로 대체하면서 테스트 환경이 안정화되었습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 알게된 것&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 테스트에서 Mock과 실제 빈 사용의 차이점을 명확히 이해하게 되었고, 테스트 데이터 초기화의 중요성을 깨달았습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Keep : 현재 만족하고 계속 유지할 부분&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 실패 원인을 끈기 있게 분석하고 개선한 점이 좋았습니다. 문제를 단계적으로 해결하며 학습한 부분이 만족스럽습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Problem : 개선이 필요하다고 생각하는 문제점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 문제 해결에 시간이 너무 오래 걸렸고, 다른 작업의 일정이 밀렸고 결국 못 풀어낸 문제들도 있습니다. 효율적인 시간 관리가 필요하다고 느꼈습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Try : 문제점을 해결하기 위해 시도해야 할 것&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 주에는 문제 해결 시 체계적인 접근을 시도하고, 우선순위를 명확히 하여 시간을 효율적으로 관리해볼 계획입니다.&lt;/p&gt;</description>
      <category>항해99/WIL</category>
      <category>항해99</category>
      <category>항해플러스</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/219</guid>
      <comments>https://chocomputer.tistory.com/219#entry219comment</comments>
      <pubDate>Sat, 28 Sep 2024 16:47:42 +0900</pubDate>
    </item>
    <item>
      <title>시작하는 마음</title>
      <link>https://chocomputer.tistory.com/218</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024-09-21 (토) 항해99 오프라인 과정에 참여하며 작성&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;작년 10월, 새로운 도전을 위해 헬스케어 업계로 이직을 결정하고 12월 1일부터 새로운 출근을 시작했다. 저년차인 만큼 다양한 경험을 쌓고자 클라우드 업계를 떠나 이곳에서 내 경력을 다시 시작했다. 이직 후 첫 프로젝트로 약물 알레르기 1차 사업을 마무리했고, 이제서야 내 코드를 돌아볼 여유가 생겼다. 마감에 쫓기며 작성한 코드는 생각보다 지저분했고, 하드코딩에 많이 의존했음을 깨달았다. 당시 어쩔 수 없는 부분도 있었지만, 왜 그때 그런 선택을 했을까 하는 후회도 남았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 통해 한 가지 중요한 교훈을 얻었다. 나는 언제나 완벽할 수 없고, 그럼에도 계속해서 발전해 나가야 한다는 것이다. 그동안 불안했던 것은 내 성장이 느리다고 느껴졌기 때문이었다. 하지만 그 불안이 내 자신을 자극해 더 나은 개발자가 되고자 하는 열망을 키워줬다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 나는 여러 개발자들에게 조언을 구하며 교육 과정을 탐색했고, 그 중 하나인 항해99 과정을 선택하게 되었다. 실무에서의 문제 해결 능력을 키우고, 특히 리팩토링과 설계 역량을 강화하기 위해 이 과정이 필요하다고 판단했다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;10주간의 목표는 명확하다. 내 코드 품질을 개선하고, 실무에서의 문제 해결 능력을 한 단계 끌어올리는 것이다. 또한 협업을 통해 이 과정에서 성공적인 마무리를 이루고, 개발자로서 더 탄탄한 기반을 마련하고 싶다. 이를 통해 더 큰 도전에도 자신 있게 맞설 수 있는 준비를 갖출 수 있을 것이라고 기대하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>항해99/TIL</category>
      <category>Til</category>
      <category>항해99</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/218</guid>
      <comments>https://chocomputer.tistory.com/218#entry218comment</comments>
      <pubDate>Sat, 21 Sep 2024 15:30:14 +0900</pubDate>
    </item>
    <item>
      <title>HTTP/2 IN ACTION 회고</title>
      <link>https://chocomputer.tistory.com/217</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eoDD9K/btsDRopft4u/JkkE3ewfSz4U1KnPItYfP1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eoDD9K/btsDRopft4u/JkkE3ewfSz4U1KnPItYfP1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eoDD9K/btsDRopft4u/JkkE3ewfSz4U1KnPItYfP1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeoDD9K%2FbtsDRopft4u%2FJkkE3ewfSz4U1KnPItYfP1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;453&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;2023년 12월 13일부터 읽기 시작하여 2024년 1월 24일에 마무리 함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: start;&quot;&gt;사실, 이번 스터디에는 절반 정도만 참여했고, 나머지는 책을 혼자 읽는 시간으로 보냈습니다. 다른 사람들의 생각과 의견을 많이 듣지 못한 것이 아쉽지만, 저자가 남긴 다양한 이야기를 통해 몰랐던 내용들을 알게 되는 기회가 되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP/2 의 사용에 집중하다 보니, HTTP 의 역사에 대해서는 깊이 탐구해보지 못했습니다. 이번 스터디를 통해 HTTP 의 발전 과정을 알아가는 것은 흥미로운 경험이었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; text-align: start;&quot;&gt;초창기 HTTP는 텍스트 기반의 통신 방식이었습니다. 이에 대한 보안 문제가 심각했을 것이라고 생각했는데, 예상대로 보안 취약점이 드러나면서&lt;span&gt; &lt;/span&gt;&lt;/span&gt;암호화된 헤더와 바디 기반 통신으로의 전환되었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP/2 시대에 개발을 시작했기 때문에 초기 HTTP 에 대한 지식은 부족합니다. 따라서 HTTP/2 기반 개발과 초기 HTTP 기반 개발의 차이점에 대해서는 잘 알지 못합니다. &lt;span style=&quot;color: #374151; text-align: start;&quot;&gt;(물론 제가 HTTP/2에 최적화된 코드를 작성하고 있다고 생각하지만 잘 모르겠습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #374151; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 책을 읽으며 TCP에서 UDP로, 그리고 쿠키 기반의 시대에서 이벤트 기반의 시대로의 전환을 느낄 수 있었습니다. 이러한 변화가 앞으로의 코드 작성에 어떤 영향을 미칠지 생각해보니, 다소 막막함을 느낍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>HTTP/2 IN ACTION</category>
      <category>서평</category>
      <category>스터디</category>
      <category>책리뷰</category>
      <category>코드숨</category>
      <category>회고</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/217</guid>
      <comments>https://chocomputer.tistory.com/217#entry217comment</comments>
      <pubDate>Wed, 24 Jan 2024 21:49:32 +0900</pubDate>
    </item>
    <item>
      <title>프로그래밍 심리학 회고</title>
      <link>https://chocomputer.tistory.com/216</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mJ7HN/btss3Ztu3Vc/qny3SXEKpTCRJPcEZCHFiK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mJ7HN/btss3Ztu3Vc/qny3SXEKpTCRJPcEZCHFiK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mJ7HN/btss3Ztu3Vc/qny3SXEKpTCRJPcEZCHFiK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmJ7HN%2Fbtss3Ztu3Vc%2Fqny3SXEKpTCRJPcEZCHFiK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;270&quot; height=&quot;400&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 6월 20일부터 읽기 시작하여 9월 5일에 마무리 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍&amp;nbsp;심리학은&amp;nbsp;1971년에&amp;nbsp;출판된&amp;nbsp;고전&amp;nbsp;중&amp;nbsp;하나이다. &lt;br /&gt;&quot;프로그래밍에서도 심리학이 적용될 수 있을까?&quot;라는 의문으로 시작해 읽기 시작한 책이다. &lt;br /&gt;심리학적&amp;nbsp;관점에서&amp;nbsp;프로그래밍에&amp;nbsp;접근하게&amp;nbsp;되면&amp;nbsp;어떤&amp;nbsp;인사이트를&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있을까? &lt;br /&gt;&lt;br /&gt;1971년부터 현재까지 컴퓨터는 끊임없이 발전해왔다.&amp;nbsp;그럼에도&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;지금도&amp;nbsp;여전히&amp;nbsp;많은&amp;nbsp;사람들에게&amp;nbsp;사랑받고&amp;nbsp;있다. &lt;br /&gt;이 책에서는 프로그래머의 마인드셋, 습관, 그리고 행동에 대한 깊은 통찰을 제공한다.&amp;nbsp;프로그래밍&amp;nbsp;과정에서&amp;nbsp;마주치게&amp;nbsp;되는&amp;nbsp;다양한&amp;nbsp;문제들과&amp;nbsp;그&amp;nbsp;문제들을&amp;nbsp;해결하는&amp;nbsp;방법을&amp;nbsp;심리학적&amp;nbsp;관점에서&amp;nbsp;살펴본다. &lt;br /&gt;&lt;br /&gt;프로그래머의 생각하는 방식과 그것이 어떻게 효과적인 코드 작성에 영향을 미치는지에 대한 근본적인 이해를&amp;nbsp;이 책을 통해 얻을 수 있다. 1971년의 컴퓨터 기술 수준과 현재는 크게 달라졌지만, 프로그래머의 마인드셋과 접근&amp;nbsp;방식에&amp;nbsp;대한&amp;nbsp;이&amp;nbsp;책의&amp;nbsp;통찰은&amp;nbsp;여전히&amp;nbsp;유효하다.&amp;nbsp;이러한&amp;nbsp;점이&amp;nbsp;이&amp;nbsp;책이&amp;nbsp;지속적으로&amp;nbsp;읽혀지는&amp;nbsp;주된&amp;nbsp;이유일&amp;nbsp;것이다. &lt;br /&gt;&lt;br /&gt;결론적으로, 프로그래머가 되고자 하는 사람이나 이미 프로그래머로 일하고 있는 사람, 또는 프로그래밍에 관심 있는 이들에게 이 책은 필독서로 추천된다.&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;기술적인&amp;nbsp;부분&amp;nbsp;뿐만&amp;nbsp;아니라&amp;nbsp;인간의&amp;nbsp;심리와&amp;nbsp;그것이&amp;nbsp;코드와&amp;nbsp;어떻게&amp;nbsp;상호작용하는지에&amp;nbsp;대한&amp;nbsp;깊은&amp;nbsp;통찰력을&amp;nbsp;제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>서평</category>
      <category>스터디</category>
      <category>책리뷰</category>
      <category>코드숨</category>
      <category>프로그래밍 심리학</category>
      <category>회고</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/216</guid>
      <comments>https://chocomputer.tistory.com/216#entry216comment</comments>
      <pubDate>Tue, 5 Sep 2023 22:49:56 +0900</pubDate>
    </item>
    <item>
      <title>그림으로 이해하는 네트워크 구조와 기술(책 리뷰)</title>
      <link>https://chocomputer.tistory.com/215</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wUxjd/btsshtadYDl/Zv55iQoezn9fNhIs9GP5V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wUxjd/btsshtadYDl/Zv55iQoezn9fNhIs9GP5V0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wUxjd/btsshtadYDl/Zv55iQoezn9fNhIs9GP5V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwUxjd%2FbtsshtadYDl%2FZv55iQoezn9fNhIs9GP5V0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;385&quot; height=&quot;570&quot; data-origin-width=&quot;810&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 8월 20일에 읽기 시작하여 8월 27일에 마무리함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 길벗출판사의 `그림으로 이해하는` 시리즈는 매우 훌륭하다고 생각합니다. 책의 디자인은 귀여우며, 컴팩트한 사이즈로 휴대성이 뛰어납니다. 무엇보다도, 이 시리즈는 네트워크나 클라우드 같이 복잡하고 이해하기 어려운 주제를 쉽게 접근할 수 있게 만들어줍니다. 이러한 특징은 이 시리즈의 책이 지식을 확장하는 징검다리 역할을 하게 만듭니다. 즉, 이 책은 독자에게 `이 주제를 더 깊게 탐구하고 싶다` 는 호기심을 자극하는 매력을 가지고 있다고 생각합니다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;책은&amp;nbsp;특히&amp;nbsp;네트워크의&amp;nbsp;기초에&amp;nbsp;대한&amp;nbsp;깊은&amp;nbsp;이해를&amp;nbsp;도와줍니다.&amp;nbsp;복잡한&amp;nbsp;네트워크&amp;nbsp;구조와&amp;nbsp;기술을&amp;nbsp;그림을&amp;nbsp;통해&amp;nbsp;설명함으로써,&amp;nbsp;실질적인&amp;nbsp;이해에&amp;nbsp;중점을&amp;nbsp;둡니다.&amp;nbsp;이런&amp;nbsp;방식은&amp;nbsp;독자가&amp;nbsp;어려운&amp;nbsp;개념을&amp;nbsp;빠르게&amp;nbsp;파악하고&amp;nbsp;익숙해지도록&amp;nbsp;도와줍니다.&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;전문가나&amp;nbsp;고급&amp;nbsp;사용자를&amp;nbsp;대상으로&amp;nbsp;한&amp;nbsp;깊이&amp;nbsp;있는&amp;nbsp;분석은&amp;nbsp;제공하지&amp;nbsp;않지만,&amp;nbsp;초보자나&amp;nbsp;주니어&amp;nbsp;개발자에게는&amp;nbsp;매우&amp;nbsp;유용한&amp;nbsp;자료로&amp;nbsp;작용합니다. &lt;br /&gt;&lt;br /&gt;이 책은 기술적인 부분에 대한 지식이 부족하거나 네트워크에 대해 아는 것이 별로 없는 사람들에게도 매우 접근성이 좋습니다. 복잡한 용어나 이론을 그림을 활용해 쉽고 친절하게 설명하므로, 누구나 쉽게 이해할 수 있습니다. 그 결과 이 책은 `네트워크의 중요성은 무엇인가` 와 `네트워크의 기본 작동 원리는 무엇인가` 를 알려주는 좋은 시작점이 됩니다. &lt;br /&gt;&lt;br /&gt;결과적으로,&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;복잡한&amp;nbsp;네트워크의&amp;nbsp;세계를&amp;nbsp;알기&amp;nbsp;쉽게&amp;nbsp;단순화해주며,&amp;nbsp;네트워크에&amp;nbsp;대한&amp;nbsp;기본적인&amp;nbsp;이해를&amp;nbsp;넓힐&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;도와줍니다.&amp;nbsp;더&amp;nbsp;깊은&amp;nbsp;이해를&amp;nbsp;원한다면&amp;nbsp;추가적인&amp;nbsp;공부가&amp;nbsp;필요하지만,&amp;nbsp;이&amp;nbsp;책은&amp;nbsp;네트워크&amp;nbsp;분야에&amp;nbsp;첫&amp;nbsp;발을&amp;nbsp;디딘&amp;nbsp;사람들에게&amp;nbsp;큰&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;것이라고&amp;nbsp;확신합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>그림으로 이해하는 시리즈</category>
      <category>길벗</category>
      <category>네트워크</category>
      <category>책리뷰</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/215</guid>
      <comments>https://chocomputer.tistory.com/215#entry215comment</comments>
      <pubDate>Mon, 28 Aug 2023 16:54:49 +0900</pubDate>
    </item>
    <item>
      <title>BaseTimeEntity abstract class</title>
      <link>https://chocomputer.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;엔티티를 생성하면 공통적으로 들어가는 속성이 있는데, 이는 `생성일자` 와 `수정일자` 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 작성하기 보다는 중복으로 발생하는 내용을 상속 받는 구조로 처리할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BaseTimeEntity.java&lt;/p&gt;
&lt;pre id=&quot;code_1692366560876&quot; class=&quot;less&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Getter
@MappedSuperclass
public abstract class BaseTimeEntity {

    @CreationTimestamp
    @Column(name = &quot;created_at&quot;, nullable = false)
    private LocalDateTime createdAt;

    @UpdateTimestamp
    @Column(name = &quot;updated_at&quot;, nullable = false)
    private LocalDateTime updatedAt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;User.java&lt;/p&gt;
&lt;pre id=&quot;code_1692366636459&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Getter
@Entity
public class Users extends BaseTimeEntity {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = &quot;user_id&quot;)
    private Long userId;

    @Column(unique = true, nullable = false)
    private String name;

    @Column(nullable = false)
    private String password;

    @Builder
    public Users(Long userId, String name, String password) {
        this.userId = userId;
        this.name = name;
        this.password = password;
    }

    protected Users() {
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 진행하면서 배웠는데 참 편리한 기능이라 생각되어 글로 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부/JPA</category>
      <category>entity</category>
      <category>extends</category>
      <category>JPA</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/214</guid>
      <comments>https://chocomputer.tistory.com/214#entry214comment</comments>
      <pubDate>Fri, 18 Aug 2023 22:41:57 +0900</pubDate>
    </item>
    <item>
      <title>관계형 데이터베이스 실전 입문 회고</title>
      <link>https://chocomputer.tistory.com/213</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chicR7/btsq695ifUT/NcPzevTkzK0ZB6MKkxjOA1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chicR7/btsq695ifUT/NcPzevTkzK0ZB6MKkxjOA1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chicR7/btsq695ifUT/NcPzevTkzK0ZB6MKkxjOA1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchicR7%2Fbtsq695ifUT%2FNcPzevTkzK0ZB6MKkxjOA1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;400&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 7월 3일에 시작하여 8월 14일에 마무리 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책은 SQL 을 중점으로 두지 않고 말그대로 관계형 데이터베이스에 대한 본질적인 이야기를 다룬다. SQL 의 기술을 배우기엔 어려운 책임이 자명하다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이 책은 관계형 데이터베이스의 원리를 알기 쉽게 설명하기 시작한다. 관계형 모델은 집합론을 기반으로 한다는 사실과 관계형 모델을 표현하는 수단으로는 술어논리가 사용된다는 사실 또한 이 책을 통해 배웠다. 따라서 관계형 데이터를 이해하기 위해서는 관계형 모델을 잘 알아야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DB 설계에서 정규화와 직교성의 중요성에 대한 설명도 있었다. 골자는 중복을 제거한 RDB 를 사용해야 본래의 성능을 발휘할 수 있다는 이야기다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;책을&amp;nbsp;통해&amp;nbsp;관계형&amp;nbsp;데이터베이스는&amp;nbsp;이런&amp;nbsp;형식으로&amp;nbsp;생각해야&amp;nbsp;하는&amp;nbsp;거구나를&amp;nbsp;배웠다. &lt;br /&gt;&lt;br /&gt;책의 초반은 관계형 모델을 표현하는 집합론, 관계형 모델을 표현하기 위한 술어 논리, 정규화 이론과 직교성 등의 내용이 있었는데, 이 챕터는 관계형 모델을 학습하기 위한 가장 중요한 챕터라는 생각이 든다. 특히 술어 논리 부분은 따로 몇 번을 다시 공부해야 했을 정도다. 어렵지 않게 설명하려고 노력하신 점이 보였는데 개념부터 익숙치 않아 어렵게 다가왔다. 책의 중반부터는 NULL 이 왜 사용되면 안되는지, SELECT 를 잘 사용하는 방법, DB 설계를 잘해야 하는 이유 등이 기술되어 있다. 책의 후반부터는 응용 프로그램에서 활용할 수 있는 인덱스 설계 전략이라던지, 데이터 구조 등의 내용이 있었고 그리고 마지막 장에서는 RDB 에서의 트랜잭션에 대한 이야기를 통해 실제 사용 사례를 알려 준다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;NULL 이 난무하는 테이블을 보면서 이런 테이블은 어떻게 정규화 할 수 있을까를 생각하는 시간이 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>관계형 데이터베이스 실전 입문</category>
      <category>서평</category>
      <category>스터디</category>
      <category>책리뷰</category>
      <category>코드숨</category>
      <category>회고</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/213</guid>
      <comments>https://chocomputer.tistory.com/213#entry213comment</comments>
      <pubDate>Mon, 14 Aug 2023 21:54:08 +0900</pubDate>
    </item>
    <item>
      <title>[Coursera] Algorithms, Part I 수강 후기</title>
      <link>https://chocomputer.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXjxFW/btsn13Uwm8P/qixMRc5sIv3A1dLdxmx9g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXjxFW/btsn13Uwm8P/qixMRc5sIv3A1dLdxmx9g1/img.png&quot; data-alt=&quot;Kevin Wayne, Albert Sedgewick 의 Algorithms, Part 1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXjxFW/btsn13Uwm8P/qixMRc5sIv3A1dLdxmx9g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXjxFW%2Fbtsn13Uwm8P%2FqixMRc5sIv3A1dLdxmx9g1%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;513&quot; height=&quot;798&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Kevin Wayne, Albert Sedgewick 의 Algorithms, Part 1&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;저번주 월요일에 Princeton 의 Algorithms, Part 1 과정을 마쳤다. 이 과정은 Coursera 에 있으며 과거(대략 2010년대로 추정)에 촬영한 영상을 온라인으로 수강 할 수 있다. 또한 이 강좌는 Robert Sedgewick 의 Algorithms 책의 내용을 두 부분으로 나누어  Part 1, Part 2 로 제공하고 있다. 강의를 수강하게 된 계기는 코드숨에서 시작한 알고리즘 스터디로 인해서였다. 스터디 시작 전에 해당 강의에 대한 이야기가 나왔는데 강의까지 들어두면 좋을 것 같아 시작하게 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 강의의 특징을 꼽자면 프린스턴에서 자체적으로 개발한 라이브러리를 기반으로 코드를 작성하기 때문에 알고리즘 작성에 있어서는 FAQ 에 있는 답변 및 API 공식 문서의 도움을 받을 수 있다는 점과 강의마다 알고리즘을 시각화하여 보여주기 때문에 내용을 이해하기에 용이하다는 점이다. 그리고 이 강의에 대해 이야기를 시작하면 거의 모든 사람이 과제에 대한 이야기를 할 것 같은데, 그만큼 과제가 중요하고 많은 시간을 할애해야 한다. 그러므로 과제에 시간을 많이 쏟을 수 있는 사람이 수강하는 것을 추천한다. 주에 1~3 개의 클래스를 작성하는데, 개략적으로 주당 15시간 가량 걸렸던 것으로 기억한다. (대부분의 시간은 이론을 이해하는데 소요되었다)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 강의를 들으면서 좋았던 부분을 꼽자면 Robert Sedgewick 교수가 직접 Red-Black Tree 에 대한 이야기를 했다는 것이다. 정말 이해하기 쉽게 말씀하셔서 감탄했다. 그리고 알고리즘을 직접 만든 사람들의 일화들을 들을 수 있어서 좋았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과제의 시작은 정말 무서웠다. 첫 번째 과제는 `Permutation` 에 대한 내용이었는데, 이 과제를 기준으로 수료의 여부가 갈렸을 것 같다는 생각이 들 정도로 무서운 내용의 과제였다. Union-Find 을 이용하여 각 site 의 무작위로 열림을 고려해야 하는데 과제를 여러 번 읽고서야 과제의 의도를 이해했다. 그리고 과제는 몬테카를로 시뮬레이션을 기반으로 작성해야 했는데 이 시뮬레이션을 이해하는 데에도 많은 시간이 소요되었다. 그러나 시뮬레이션을 작성하는 데에는 오랜 시간이 소요되지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 과제는 자세히 생각이 나지 않는다. (띠용) `Deque` 와 `RandomizedQueue` 의 내용을 작성해야 하는 코드였는데, 해당 데이터 스트럭쳐를 작성해야 했던 것으로 기억한다. 연결 리스트를 활용해야 했다.&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;세 번째 과제는 미완성이다. 당시 시간이 너무 없어서 제대로 완성하지 못했고, 과제를 통과할 정도로만 작성해서 제출했던 기억이 난다. `Collinear` 에 대한 내용이었는데, 점들의 집합에서 선을 인식하는 프로그램을 작성하는 내용이다. Point 에서 평면의 점을 나타내고, LineSegment 에서 평면에서 선분을 나타내는 API 를 작성하고, BruteCollinearPoints 는 4개의 점을 검사해서 동일한 선분에 있는지 확인하는 내용이 들어가고, FastCollinearPoints 는 BruteCollinearPoints 의 향상된 버전으로 slope 를 기준으로 점의 상태를 계산하는 방향으로 작성해야 한다. 아무튼 작성해야 할 것도 많고 생각해야 할 것도 많은 내용이었다.&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;네 번째 과제는 `8 Puzzle` 에 대한 내용이었는데, 퍼즐 게임의 구현이다. hamming() 으로 잘못된 위치에 있는 타일의 개수를 반환하고, manhattan()  로 타일들이 목표 위치까지의 manhattan 거리의 합을 반환한다. 아무튼 이 과제는 주로 타일의 위치와 이동 가능한 상태, 그리고 목표에 도달하였는지 확인하는 등의 기능을 작성해야 했다.&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;다섯 번째 과제는 `Kd Trees` 에 대한 내용인데, 2차원 트리를 구현하는 두 가지 데이터 타입을 작성하는 과제였다. 하나는 Brute Force 으로 작성하고, 다른 하나는 2d-Tree 를 활용해 작성하면 되는 내용이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 드는 생각은 `Part 2 를 들을 수 있을까 ?` 이다. 과제를 제출하는 순간은 정말 좋았는데 거기까지의 과정이 너무 고통스러웠다. 회사 다니면서 스터디에 참여하는 것도 시간이 빠듯한 일인데 해당 강의까지 들으며 과제를 제출하려니 5주간 공부를 제외하고 다른 일은 할 수가 없었다. Part 2 수강은 코드숨 알고리즘 스터디 중반 즈음 다시 생각해봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성한 소스는 다음 레파지토리에 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스 : &lt;a href=&quot;https://github.com/caoyu-dev/Algorithms_Part_I&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/caoyu-dev/Algorithms_Part_I&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1689666925476&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - caoyu-dev/Algorithms_Part_I&quot; data-og-description=&quot;Contribute to caoyu-dev/Algorithms_Part_I development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/caoyu-dev/Algorithms_Part_I&quot; data-og-url=&quot;https://github.com/caoyu-dev/Algorithms_Part_I&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ne0gn/hyTmvY3coq/LKsEiYtzF42giGpmRlc6dK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/caoyu-dev/Algorithms_Part_I&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/caoyu-dev/Algorithms_Part_I&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ne0gn/hyTmvY3coq/LKsEiYtzF42giGpmRlc6dK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - caoyu-dev/Algorithms_Part_I&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to caoyu-dev/Algorithms_Part_I development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의 : &lt;a href=&quot;https://www.coursera.org/learn/algorithms-part1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.coursera.org/learn/algorithms-part1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1689667106901&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Algorithms, Part I&quot; data-og-description=&quot;Princeton University에서 제공합니다. This course covers the essential information that every serious programmer needs to know about algorithms and data ... 무료로 등록하십시오.&quot; data-og-host=&quot;www.coursera.org&quot; data-og-source-url=&quot;https://www.coursera.org/learn/algorithms-part1&quot; data-og-url=&quot;https://www.coursera.org/learn/algorithms-part1&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/diDiyt/hyTmw4Jim5/1Qtef3WfIkm8kX9XDBDp3K/img.jpg?width=1772&amp;amp;height=928&amp;amp;face=0_0_1772_928,https://scrap.kakaocdn.net/dn/dkEDb5/hyTk7rYkb5/MSQIFFAuKhlgiXfVGlnWG0/img.jpg?width=1772&amp;amp;height=928&amp;amp;face=0_0_1772_928&quot;&gt;&lt;a href=&quot;https://www.coursera.org/learn/algorithms-part1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.coursera.org/learn/algorithms-part1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/diDiyt/hyTmw4Jim5/1Qtef3WfIkm8kX9XDBDp3K/img.jpg?width=1772&amp;amp;height=928&amp;amp;face=0_0_1772_928,https://scrap.kakaocdn.net/dn/dkEDb5/hyTk7rYkb5/MSQIFFAuKhlgiXfVGlnWG0/img.jpg?width=1772&amp;amp;height=928&amp;amp;face=0_0_1772_928');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Algorithms, Part I&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Princeton University에서 제공합니다. This course covers the essential information that every serious programmer needs to know about algorithms and data ... 무료로 등록하십시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.coursera.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>coursera</category>
      <category>강의</category>
      <category>세지윅</category>
      <category>알고리즘</category>
      <category>코세라</category>
      <category>회고</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/212</guid>
      <comments>https://chocomputer.tistory.com/212#entry212comment</comments>
      <pubDate>Tue, 18 Jul 2023 16:46:12 +0900</pubDate>
    </item>
    <item>
      <title>웹 개발자를 위한 대규모 서비스를 지탱하는 기술 회고(책 리뷰)</title>
      <link>https://chocomputer.tistory.com/211</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKDxwf/btskBBM3skQ/R1K97bIQAcL3UqQz7cAEXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKDxwf/btskBBM3skQ/R1K97bIQAcL3UqQz7cAEXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKDxwf/btskBBM3skQ/R1K97bIQAcL3UqQz7cAEXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKDxwf%2FbtskBBM3skQ%2FR1K97bIQAcL3UqQz7cAEXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;285&quot; height=&quot;400&quot; data-origin-width=&quot;285&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 5월 8일에 시작해서 6월 19일에 마무리 함.&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;책을 끝까지 읽고 회고를 하는 시점에서 책 제목을 살펴보니 책 제목을 잘 정했다는 생각이 든다. 책 제목에 책 내용 전문이 고스란히 담겨 있다. 말 그대로 이 책은 `웹 개발자를 위한 대규모 서비스를 지탱하는 기술` 의 내용을 담고 있다. 엔터프라이즈와 웹 서비스에 대한 비교를 시작으로 과거 하테나가 어떤 기술을 사용하여 소규모 서비스에서 대규모 서비스까지 진화해 나아갔는지 변천사를 보여주고 있다. 운영 체제를 시작으로 컴퓨터의 동작 원리, DB 분산에 대한 내용, 알고리즘을 시스템에 어떻게 적용하였는지, DB 로 처리가 안되는 검색엔진의 직접 구현, 세세한 인프라 설계 지식까지 많은 내용을 최대한 자세하고 알기 쉽게 설명해 주어 많은 도움이 되었다. 특히 작가 본인의 여러 시행 착오가 많이 녹아 있는 점이 좋았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책에서 가장 인상 깊게 읽었던 부분이 있는데, `웹 서비스의 핵심은 응답성에 있다` 는 내용이다. 트래픽이 많기 때문에 응답이 빨라야 하고, 이 빠른 응답을 위한 여러 전략에 `확장성이 용이해야 한다` 는 내용이 있다. 이 응답성과 확장성을 보장해주는 서비스가 클라우드 서비스인 것이고. 2012년 거의 10년 전에 작성된 글에도 불구하고 `클라우드가 왜 빨리 발전할 수 밖에 없었는가` 를 잘 보여주고 있다는 생각이 들었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에 과거 MSP 에서 1년 동안 경험한 내용들을 압축적으로 읽을 수 있어서 좋았다. 병목을 어떻게 해결할 것인가, 로드밸런서와 AP 서버를 어떤 형식의 아키텍처로 작성할 것인가 등의 내용을 볼 수 있어서 그런 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작가분의 경험을 간접 체험한다는 느낌으로 읽어 내려갔다. 당시의 (그리고 현재의) 대규모 서비스에 대한 전체적인 틀을 그리기에 좋은 책인 듯하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>책읽기/회고</category>
      <category>서평</category>
      <category>스터디</category>
      <category>웹 개발자를 위한 대규모 서비스를 지탱하는 기술</category>
      <category>책리뷰</category>
      <category>코드숨</category>
      <category>회고</category>
      <author>챠오위</author>
      <guid isPermaLink="true">https://chocomputer.tistory.com/211</guid>
      <comments>https://chocomputer.tistory.com/211#entry211comment</comments>
      <pubDate>Mon, 19 Jun 2023 21:47:10 +0900</pubDate>
    </item>
  </channel>
</rss>