<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>슬기로운 코딩생활</title>
    <link>https://thedayof-1.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 23 Apr 2026 18:51:40 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>하루_Day</managingEditor>
    <item>
      <title>[Python] 일급객체</title>
      <link>https://thedayof-1.tistory.com/97</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&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;/span&gt;&lt;/h4&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;/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;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 변수 혹은 데이터구조 안에 담을 수 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 매개변수로 전달할 수 있어야 한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 리턴값으로 사용될 수 있어야 한다.&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;우리가 알고 있는 int, float, str 타입의 모든 객체는 일급객체이다.&amp;nbsp;&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;u&gt;&lt;b&gt;함수도 일급객체&lt;/b&gt;&lt;/u&gt;로 취급되기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&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;/span&gt;&lt;/h4&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;/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;/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;입력 받은 자료형의 각 요소들을 일괄적으로 처리하여 iterator 객체로 리턴하는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;map&lt;/b&gt;&lt;/span&gt;과 같은 함수의 인자로 사용하다는 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1633581360370&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = map(int, input())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python/개념</category>
      <category>map</category>
      <category>일급객체</category>
      <category>파이썬</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/97</guid>
      <comments>https://thedayof-1.tistory.com/97#entry97comment</comments>
      <pubDate>Thu, 7 Oct 2021 13:37:14 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 정렬 알고리즘 (버블, 선택, 삽입)</title>
      <link>https://thedayof-1.tistory.com/95</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;시각화 해놓은 알고리즘&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://visualgo.net/ko/sorting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://visualgo.net/ko/sorting&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; 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 data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;: 앞에 있는 데이터가 뒤에 있는 데이터보다 크면 swap하는 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;1000&quot; width=&quot;349&quot; height=&quot;320&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HL3H3/btrgobs1IgO/3KO5HbNPJlQ27d6KRJzTC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HL3H3/btrgobs1IgO/3KO5HbNPJlQ27d6KRJzTC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HL3H3/btrgobs1IgO/3KO5HbNPJlQ27d6KRJzTC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHL3H3%2Fbtrgobs1IgO%2F3KO5HbNPJlQ27d6KRJzTC1%2Fimg.png&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;1000&quot; width=&quot;349&quot; height=&quot;320&quot; data-ke-mobilestyle=&quot;widthOrigin&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;pre id=&quot;code_1632983274816&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;L = [5,3,2,7,4]

for index in range(len(L)-1):
  swap = False 		#swap이 이루어지지 않았다면 모두 정렬된 것
  for j in range(len(L)-1-index):
    if L[j] &amp;gt; L[j+1]:
      L[j], L[j+1] = L[j+1], L[j]
      swap = True
  
  if not swap:
    break&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; 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 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;/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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1. 주어진 데이터 중 최소값을 찾음&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2. 최소값을 데이터 맨 앞의 값과 swap&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3. 맨 앞을 제외하고 나머지 데이터를 동일한 방법으로 반복함&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;370&quot; width=&quot;576&quot; height=&quot;148&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tB0ud/btrgqwQBGcb/feZaC3rHgmJaEBe8jhQLd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tB0ud/btrgqwQBGcb/feZaC3rHgmJaEBe8jhQLd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tB0ud/btrgqwQBGcb/feZaC3rHgmJaEBe8jhQLd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtB0ud%2FbtrgqwQBGcb%2FfeZaC3rHgmJaEBe8jhQLd1%2Fimg.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;370&quot; width=&quot;576&quot; height=&quot;148&quot; data-ke-mobilestyle=&quot;widthOrigin&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;pre id=&quot;code_1632985033693&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;L = [5,3,2,7,4]

for i in range(len(L)-1):
  lowest_index = i
  #가장 작은 값의 index를 찾기 위함
  for j in range(i+1, len(L)):
    if L[lowest_index] &amp;gt; L[j]:
      lowest_index = j
  L[lowest_index], L[i] = L[i], L[lowest_index]&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #009a87; 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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1. 두번째 인덱스 부터 시작&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;3. 해당 인덱스 값이 더 작으면 앞으로 이동&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4. 해당 인덱스 값이 비교 데이터보다 클때까지 이동&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;880&quot; width=&quot;490&quot; height=&quot;300&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3CZVx/btrgP46vgrx/OzysmIM4tMaZpz5mu2TP4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3CZVx/btrgP46vgrx/OzysmIM4tMaZpz5mu2TP4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3CZVx/btrgP46vgrx/OzysmIM4tMaZpz5mu2TP4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3CZVx%2FbtrgP46vgrx%2FOzysmIM4tMaZpz5mu2TP4K%2Fimg.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;880&quot; width=&quot;490&quot; height=&quot;300&quot; data-ke-mobilestyle=&quot;widthOrigin&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;pre id=&quot;code_1633354232215&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;L = [3,1,7,2,5]

for index in range(len(L)-1):
  for j in range(index+1, 0, -1):
    if L[j-1] &amp;gt; L[j]:
      L[j-1], L[j] = L[j], L[j-1]
    else:
      break&lt;/code&gt;&lt;/pre&gt;</description>
      <category>잡다한 지식</category>
      <category>Algorithm</category>
      <category>버블 정렬</category>
      <category>삽입 정렬</category>
      <category>선택 정렬</category>
      <category>알고리즘</category>
      <category>정렬 알고리즘</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/95</guid>
      <comments>https://thedayof-1.tistory.com/95#entry95comment</comments>
      <pubDate>Mon, 4 Oct 2021 22:31:54 +0900</pubDate>
    </item>
    <item>
      <title>프로세스와 스레드 |메모리구조</title>
      <link>https://thedayof-1.tistory.com/87</link>
      <description>&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;RAM 데이터 구조&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;1000&quot; width=&quot;555&quot; height=&quot;483&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xncx7/btrgdHkt4OJ/piUl24IeOKZ1Zw7vub864k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xncx7/btrgdHkt4OJ/piUl24IeOKZ1Zw7vub864k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xncx7/btrgdHkt4OJ/piUl24IeOKZ1Zw7vub864k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxncx7%2FbtrgdHkt4OJ%2FpiUl24IeOKZ1Zw7vub864k%2Fimg.png&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;1000&quot; width=&quot;555&quot; height=&quot;483&quot; data-ke-mobilestyle=&quot;widthOrigin&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 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;background-color: #dddddd;&quot;&gt;Code영역&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 style=&quot;background-color: #dddddd;&quot;&gt;Data 영역&lt;/span&gt;: 전역번수, static 변수, 문자열 | 컴파일 시 생성&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 style=&quot;background-color: #dddddd;&quot;&gt;Heap&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 style=&quot;background-color: #dddddd;&quot;&gt;Stack&lt;/span&gt;: 지역변수, 매개변수 | 런타임 시 생성 =&amp;gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;함수 호출 시 main 함수 위에 쌓이고 &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;호출이 끝나면 가장 위에 있던 데이터가 POP된다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;각각의 프로세스는 위와 같은 메모리 공간을 가진다.&amp;nbsp; 프로세스 A, B, C가 존재한다면 프로세스는 각각 위와 같은 구조의 메모리 공간을 가진다.&amp;nbsp; 독립적인만큼 다른 프로세스의 메모리 공간에 접근할 수 없다. 프로세스는 안정성을 보장하기 위해 각각의 독립된 메모리 공간을 가져야만 한다. &lt;u&gt;그렇다면 A에서 연산한 결과를&amp;nbsp; B에서 받아 사용하고 싶다면 어떻게 해야할까?&lt;/u&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;&amp;nbsp;프로세스는 독립적인 메모리 공간을 가지기 때문에&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt; IPC&lt;/span&gt;&lt;/b&gt;를 통하지 않고는 통신할 수 없다. 그리고 프로세스가 여럿이 병렬적으로 실행되기 위해서는 필연적으로 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;context switching&lt;/b&gt;&lt;/span&gt;이 발생할 수 밖에 없다. 빈번한 컨텍스트 스위칭은 성능을 떨어뜨린다. 이것이 프로세스가 지니는 한계이다. 이를 해결하는 것이 쓰레드(Thread)이다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;스레드(Thread)&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;943&quot; width=&quot;652&quot; height=&quot;400&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/belAWX/btrgbLnq4Dr/rhAdaCpMicq0aTLPOpGbKk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/belAWX/btrgbLnq4Dr/rhAdaCpMicq0aTLPOpGbKk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/belAWX/btrgbLnq4Dr/rhAdaCpMicq0aTLPOpGbKk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/belAWX/btrgbLnq4Dr/rhAdaCpMicq0aTLPOpGbKk/img.gif&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;943&quot; width=&quot;652&quot; height=&quot;400&quot; data-ke-mobilestyle=&quot;widthOrigin&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 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: #f89009;&quot;&gt;&lt;b&gt;스&lt;/b&gt;&lt;b&gt;레드는 프로세스의 code, data, heap 영역을 공유한다.&amp;nbsp; &lt;/b&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;스레드가 code영역을 공유하고 있기 때문에 프로세스가 가지고 있는 함수를 스레드가 호출할 수 있다.&amp;nbsp; &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;또한 heap과 data영역을 공유하기 때문에 IPC없이도 스레드 간의 통신이 가능하다.&amp;nbsp;&lt;u&gt; A, B가 통신하기 위해 heap영역에 메모리 공간을 할당하고,&amp;nbsp; 두 스레드가 자유롭게 공유한다고 생각하면 된다.&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>잡다한 지식</category>
      <category>메모리</category>
      <category>스레드</category>
      <category>프로세스</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/87</guid>
      <comments>https://thedayof-1.tistory.com/87#entry87comment</comments>
      <pubDate>Tue, 28 Sep 2021 15:46:29 +0900</pubDate>
    </item>
    <item>
      <title>[해커톤] 2021년 Innovation 해커톤대회 후기</title>
      <link>https://thedayof-1.tistory.com/86</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. '개발자'의 역할로 참여&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;전남대학교 개발 동아리 Innovation에서 개최하는 해커톤 대회에 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;개발자&lt;/b&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;&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;a href=&quot;https://econovation.kr/hackathon-2021&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://econovation.kr/hackathon-2021&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;133&quot; width=&quot;595&quot; height=&quot;110&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFKuEG/btrbxqhtLK6/6ZLHkBKZoNNV5qXo9LWdK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFKuEG/btrbxqhtLK6/6ZLHkBKZoNNV5qXo9LWdK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFKuEG/btrbxqhtLK6/6ZLHkBKZoNNV5qXo9LWdK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFKuEG%2FbtrbxqhtLK6%2F6ZLHkBKZoNNV5qXo9LWdK1%2Fimg.png&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;133&quot; width=&quot;595&quot; height=&quot;110&quot; data-ke-mobilestyle=&quot;widthOrigin&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 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: #009a87;&quot;&gt;&lt;b&gt;팀빌딩&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 나를 어필할 수 있도록 Github를 정리했다. (이미 팀원을 정해서 함께 참여하는 경우들도 많았다.) 나는 정말로 홀로 참여했기 때문에 어떤 개발자, 디자이너, 기획자와 함께 일하게될지 모르겠어서 두려움 반, 설레임 반으로 팀빌딩 날을 기다렸다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 의미있는 것을 만들자는 마음으로 하나된 Explanet&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;Slack에서 자기소개가 시작되고, 서로 마음에 드는 디자이너나 기획자가 있으면 컨택하기 시작했다. 나도 디자이너분께 컨택되어 팀이 이루어졌다!! 생각보다 다들 말이 잘 통하고 성격들이 좋아보여서 안심이 됐다ㅎㅎ&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;&amp;nbsp;기획자분은 '환경'을 주제로한 앱을 만들고싶어 하셨다. 그래서 우리팀은&amp;nbsp;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt; 환경(&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #202020;&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;environment) +&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;행성(planet)&lt;/b&gt;&lt;/span&gt; = &lt;span style=&quot;background-color: #9feec3;&quot;&gt;환경을 지키는 행성으로 만들자!&lt;/span&gt; 라는 의미로 &lt;b&gt;Explanet&lt;/b&gt;이라는 이름을 붙이게 됐다ㅎ&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;KakaoTalk_20210829_230559086_03.jpg&quot; width=&quot;440&quot; height=&quot;440&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2wt4G/btrdz7SDlwu/mVFaE63huHrFc3hQRRJGf0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2wt4G/btrdz7SDlwu/mVFaE63huHrFc3hQRRJGf0/img.jpg&quot; data-alt=&quot;대회기간 제정신이 아닌상태로 그린 우리팀 Explanet!!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2wt4G/btrdz7SDlwu/mVFaE63huHrFc3hQRRJGf0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2wt4G%2Fbtrdz7SDlwu%2FmVFaE63huHrFc3hQRRJGf0%2Fimg.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;KakaoTalk_20210829_230559086_03.jpg&quot; width=&quot;440&quot; height=&quot;440&quot; data-ke-mobilestyle=&quot;widthOrigin&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;대회기간 제정신이 아닌상태로 그린 우리팀 Explanet!!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 지구를 살리는 게이머를 위한 앱, Greenomy&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;대회가 본격적으로 시작되기 전에, 어떤 앱을 만들지, 어떤 Teck 기술을 사용할지, 디자인은 어떻게 할지 미리 구상해 놓았다. 대회 기간은 2박 3일(첫날 오후 2시에 시작해 마지막날 점심시간인 12시에 끝나기때문에 사실상 2틀이다.)동안은 오로지 개발과 수정, 마무리에만 집중할 수 있도록 빌드해놓았다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ySKuo/btrgiaMIifJ/Unv3ANJ9TgqYSg3X0lZw41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ySKuo/btrgiaMIifJ/Unv3ANJ9TgqYSg3X0lZw41/img.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;1191&quot; data-filename=&quot;blob&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ySKuo/btrgiaMIifJ/Unv3ANJ9TgqYSg3X0lZw41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FySKuo%2FbtrgiaMIifJ%2FUnv3ANJ9TgqYSg3X0lZw41%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;842&quot; height=&quot;1191&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tB6ve/btrf9CLbCKs/RVMmZ3K2kOskyRJeVk0lY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tB6ve/btrf9CLbCKs/RVMmZ3K2kOskyRJeVk0lY0/img.png&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;1191&quot; data-filename=&quot;KakaoTalk_20210826_212525650_01.png&quot; style=&quot;width: 49.4186%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tB6ve/btrf9CLbCKs/RVMmZ3K2kOskyRJeVk0lY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtB6ve%2Fbtrf9CLbCKs%2FRVMmZ3K2kOskyRJeVk0lY0%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;842&quot; height=&quot;1191&quot;/&gt;&lt;/span&gt;&lt;/div&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;&amp;nbsp;나는 앱 개발 자체가 처음이였고, 다른 개발자분은 Flutter를 사용할 줄 아셨다. Android Studio를 이용해 어플을 만들기로 하고, 서버와 DB로는 Firebase를 이용하기로 했다. 그래서 우리는 대회 전까지 우리가 사용할 프레임워크와 라이브러리를 공부해오기로 하고 그전까지는 푹 쉬면서 일했다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. 대회의 시작!&amp;nbsp; Trigger Your Inner Hip!!&lt;/span&gt;&lt;/b&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;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;b&gt;멘토링 시간&lt;/b&gt;이라고, 현직 개발자분에게 우리의 상황을 알려드리고 이야기할 수 있는 시간이 주어졌다. 개발자분이 우리에게 말씀하시길, &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;프로 개발자들 10명이서 세달 동안 죽어라하면 완성될 크기&lt;/b&gt;&lt;/span&gt;라서 2박 3일간은 불가능이라고 알려주셨다. 또한 개발자라 함은 코드를 적어 내리는 사람이 아니라, &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;구조를 설계하고 고민하는 사람&lt;/b&gt;&lt;/span&gt;이라고 하셨다. 우리에게 당장 만드는 것보다 어느정도 기본적인 설계를 하시는걸 추천해주셨다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;003&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/003.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/003.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;급하게 방향성에 대한 논의가 이루어졌다. 기획자님과 디자이너님과 상의한 결과, 우선은 제출해야 하는 프로토타입이라도 만들고 그 후에 시간이 남으면 더 깊게 개발을 하기로 했다! 또한 우리 서비스에 대한 설계를 진행하고 이를 강점으로 발표하기로 했다. &lt;span&gt;&amp;nbsp;Greenomy의 핵심 기능들을 꼽아 이것들을 중심으로 개발을 시작했다. 어플 생명주기 내에 존재하는 객체들을 정의하고, 각각의 속성을 설정했다. 이를 바탕으로 ERD를 작성해 보기 좋게 표현했다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EOpE5/btrghPa8RFd/QkXubT750DYzJ2K5soCKTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EOpE5/btrghPa8RFd/QkXubT750DYzJ2K5soCKTk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;제목을-입력해주세요_-001 (1).png&quot; width=&quot;369&quot; height=&quot;208&quot; style=&quot;width: 40.5845%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EOpE5/btrghPa8RFd/QkXubT750DYzJ2K5soCKTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEOpE5%2FbtrghPa8RFd%2FQkXubT750DYzJ2K5soCKTk%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;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk1Wxg/btrgbLgAUOG/Phpvfk4pCVlvnPuhoFk7kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk1Wxg/btrgbLgAUOG/Phpvfk4pCVlvnPuhoFk7kk/img.png&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;464&quot; style=&quot;width: 58.2527%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk1Wxg/btrgbLgAUOG/Phpvfk4pCVlvnPuhoFk7kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk1Wxg%2FbtrgbLgAUOG%2FPhpvfk4pCVlvnPuhoFk7kk%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;1184&quot; height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Greenomy의 기능 생명주기와 ERD&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;&amp;nbsp;아침에 눈을 떠서 침대에 눕기 전까지 안드로이드를 공부하고 배운 내용을 적용하는 과정을 반복했다. 오류가 생겼을 때 3시간을 끙끙 앓으며 계속해서 코드를 읽었다. 밥을 먹고 오면 안보이던 오류가 보이지 않을까 하는 기대로 저녁을 먹고 오기도 했다. 또 다른 개발자분이 계셔서 다름 재밌었다ㅋㅋㅋㅋㅋㅋ &lt;/span&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. 수상과 에어팟 프로&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;KakaoTalk_20210928_142512727.jpg&quot; width=&quot;378&quot; height=&quot;378&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/orOQn/btrga2b0I2K/TfpzIW1GE5wxy1brpjeCB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/orOQn/btrga2b0I2K/TfpzIW1GE5wxy1brpjeCB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/orOQn/btrga2b0I2K/TfpzIW1GE5wxy1brpjeCB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2ForOQn%2Fbtrga2b0I2K%2FTfpzIW1GE5wxy1brpjeCB0%2Fimg.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;3024&quot; data-filename=&quot;KakaoTalk_20210928_142512727.jpg&quot; width=&quot;378&quot; height=&quot;378&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;우리의 노력이 보였던 것인지, 총 11개의 팀중에 4등을 해서 특별상을 수상하고 상품으로 에어팟 프로를 get!할 수 있었다ㅎㅎ&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; 이번 대회 기간동안 눈뜨고 잠에 들기 직전까지 공부하고 코드를 써내려가는 작업을 했는데,&amp;nbsp; 지금 이 순간이 즐겁다고 느껴졌다. 하나에 몰두하고 이를 즐겁게 해낼 수 있어 감사한 순간이였다. 내가 이렇게 열심히 할 수 있었다는 것을 깨달았고 이전의 시간들을 반성하게 되는 시간이였다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발일지</category>
      <category>Hackathon</category>
      <category>Innovation</category>
      <category>개발자</category>
      <category>프로그래밍</category>
      <category>해커톤</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/86</guid>
      <comments>https://thedayof-1.tistory.com/86#entry86comment</comments>
      <pubDate>Tue, 28 Sep 2021 14:41:22 +0900</pubDate>
    </item>
    <item>
      <title>[개발일지] 7월 27일 : QueryDict</title>
      <link>https://thedayof-1.tistory.com/85</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 400 Bad Request, Qeurydict&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;: 내가 validatior를 새로 결정하게 되면서 이전에 postman으로 form-data를 이용했을 때는 해결되지 않는 문제가 있었다.&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;하지만 JSON을 활용하면 바로 해결할 수 있었다.&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;style3&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;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. form-data로 update는 되지만 create는 안된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. JSON으로 보내면 되지만 form-data는 안된다. =&amp;gt; cerberus 호환성 문제는 아닐듯&lt;/span&gt;&lt;/blockquote&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;b&gt;해결&lt;/b&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;: 주고가는 데이터를 확인했는데 request.data가 제대로 넘겨지지 않았어서 오류가 발생했다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. QueryDict와 cerberus 호환문제&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;585&quot; data-filename=&quot;blob&quot; width=&quot;751&quot; height=&quot;469&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bolUWv/btraSY6O0bZ/IAmG1EJ87bcI25OWRequd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bolUWv/btraSY6O0bZ/IAmG1EJ87bcI25OWRequd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bolUWv/btraSY6O0bZ/IAmG1EJ87bcI25OWRequd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbolUWv%2FbtraSY6O0bZ%2FIAmG1EJ87bcI25OWRequd0%2Fimg.png&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;585&quot; data-filename=&quot;blob&quot; width=&quot;751&quot; height=&quot;469&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;분명 username을 text타입으로 보냈음에도 불구하고 계속 string 타입으으로 달라는 오류를 발견했다. 그래서 이때부터 form-data의 text타입과 cerberus의 string스키마가 호환이 안되는가 계속 삽질을 달렸다...&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;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;256&quot; data-filename=&quot;스크린샷, 2021-08-01 16-26-09.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RfWT7/btraZMjJl8d/Cyh7FYZyHRmb3Ykwnxewe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RfWT7/btraZMjJl8d/Cyh7FYZyHRmb3Ykwnxewe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RfWT7/btraZMjJl8d/Cyh7FYZyHRmb3Ykwnxewe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRfWT7%2FbtraZMjJl8d%2FCyh7FYZyHRmb3Ykwnxewe0%2Fimg.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;256&quot; data-filename=&quot;스크린샷, 2021-08-01 16-26-09.png&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;request.data가 QeuryDict로 감싸져 왔다. 분명 Dict만 허용되도록 했는데 QeuryDict도 Dict의 한 종류로 처리되서 처리가 되지 않은채로 넘어왔다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cra7nF/btraSX7QJUx/E0BtSae8FUCJ7cLwyga261/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cra7nF/btraSX7QJUx/E0BtSae8FUCJ7cLwyga261/img.png&quot; data-origin-width=&quot;627&quot; data-origin-height=&quot;696&quot; data-filename=&quot;&quot; style=&quot;width: 51.579%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cra7nF/btraSX7QJUx/E0BtSae8FUCJ7cLwyga261/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcra7nF%2FbtraSX7QJUx%2FE0BtSae8FUCJ7cLwyga261%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;627&quot; height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csXl9X/btraL1QzsSl/Mq4IhKTmMaict4cliHC4kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csXl9X/btraL1QzsSl/Mq4IhKTmMaict4cliHC4kk/img.png&quot; style=&quot;width: 47.2582%;&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;882&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csXl9X/btraL1QzsSl/Mq4IhKTmMaict4cliHC4kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsXl9X%2FbtraL1QzsSl%2FMq4IhKTmMaict4cliHC4kk%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;728&quot; height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;/div&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;Dict로 변환시킨 후, 데이터를 전송시켰더니 그대로 잘 작동했다!!!! 4시간의 삽질 끝에 의미있는 결과를 얻게 되어 아주 기뻤다ㅠㅠ&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;ToDoList&lt;/b&gt;&lt;/span&gt;&lt;/u&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;: 모든 홈페이지를 완벽하게 구현하려 했는데 생각해보니 내 목표는 README 파일만 제대로 작성하는 것이였고, 불필요한 부분까지 시간을 투자할 필요는 없다고 느꼈다. 필요한 부분만 화면을 구성해야겠다.&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;1. 면접을 대비해서 각각의 view별로 정리해야겠다.&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;&amp;nbsp; &amp;nbsp; &amp;nbsp; - 당장은 오늘 한 signup view를 정리할 것&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;2. README 파일 작성 방법 살펴보기&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;3. Post List화면 정비&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;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 이미지 사진 맞춰서 올리기&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;4. 템플릿 완성: Post Create, User Profile&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발일지</category>
      <category>Django</category>
      <category>DRF</category>
      <category>Postman</category>
      <category>QueryDict</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/85</guid>
      <comments>https://thedayof-1.tistory.com/85#entry85comment</comments>
      <pubDate>Sun, 1 Aug 2021 18:37:31 +0900</pubDate>
    </item>
    <item>
      <title>[개발일지] 7월 13일 : template에서 Ordereddict 사용법</title>
      <link>https://thedayof-1.tistory.com/84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;ToDoList&lt;/b&gt;&lt;/span&gt;&lt;/u&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;1. html에서 OrdierDict풀어서 사용하기&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;2. base.html 파일 완성하기&lt;/span&gt;&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;1. 데이터 정리&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp;: 내가 template으로 받는 데이터를 다시 한 번 정리해보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;452&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYj8LA/btq9yMx9ouV/Pz0YaROEMChksVyTTJaSqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYj8LA/btq9yMx9ouV/Pz0YaROEMChksVyTTJaSqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYj8LA/btq9yMx9ouV/Pz0YaROEMChksVyTTJaSqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYj8LA%2Fbtq9yMx9ouV%2FPz0YaROEMChksVyTTJaSqk%2Fimg.png&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;452&quot; data-ke-mobilestyle=&quot;widthOrigin&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;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;512&quot; width=&quot;534&quot; height=&quot;397&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IdS61/btq9wfHRlnx/lFDLP2gbDwgjqzSuwpPI2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IdS61/btq9wfHRlnx/lFDLP2gbDwgjqzSuwpPI2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IdS61/btq9wfHRlnx/lFDLP2gbDwgjqzSuwpPI2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIdS61%2Fbtq9wfHRlnx%2FlFDLP2gbDwgjqzSuwpPI2K%2Fimg.png&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;512&quot; width=&quot;534&quot; height=&quot;397&quot; data-ke-mobilestyle=&quot;widthOrigin&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&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;2. OrderedDict 사용법&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;: OrderedDict안의 value값을 못 꺼내와서 이틀을 날렸는데 정말 어이없는 사실을 하나 발견했다.&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;template에서는&lt;span style=&quot;background-color: #dddddd;&quot;&gt; {% for key, value in dict.items %}&lt;/span&gt;라고 쓰는데 나는 지금까지&lt;span style=&quot;color: #f89009;&quot;&gt; &lt;b&gt;items()&lt;/b&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;나는 계속 dict값을 빼오려고 하는데 안빼지니까. OrderedDict는 템플릿에서만큼은 특별한 벙법으로 빼야하나? 계속 생각했다..&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;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;ToDoList&lt;/b&gt;&lt;/span&gt;&lt;/u&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;1. 이번주 안에 html파일 다 완성하기&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발일지</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/84</guid>
      <comments>https://thedayof-1.tistory.com/84#entry84comment</comments>
      <pubDate>Fri, 16 Jul 2021 00:10:14 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 스택&amp;amp;큐: 기능개발 | Python</title>
      <link>https://thedayof-1.tistory.com/83</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이 문제는 [스택 &amp;amp; 큐]라인에 들어간 문제이다.&amp;nbsp;&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;문제의 핵심은 date = [7,7,2] 배포날짜를 구하는게 아니라, 7일째에 2개를 배포할 수 있다고 세는 것이다.&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;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;컨테이너(container)의 양끝 엘리먼트(element)에 접근하여 삽입 또는 제거를 할 경우, &lt;br /&gt;일반적인 리스트(list)가 이러한 연산에 O(n)이 소요되는 데 반해, 데크(deque)는 O(1)로 접근 가능하다&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;파이썬에 존재하는 deque()를 이용해 문제를 풀어보고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 처음으로 푼 풀이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626246269337&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from collections import Counter
def solution(progresses, speeds):
    answer = []
    date = []
    for i in range(len(progresses)):
        count = 0
        while progresses[i] &amp;lt; 100:
            progresses[i] += speeds[i]
            count +=1
        if  i &amp;gt; 0 and date[i-1] &amp;gt; count:
            count = date[i-1]
        date.append(count)
    num = 1
    for i in range(len(date)-1):
        if date[i] == date[i+1]:
             num+=1
        else:
            answer.append(num)
            num = 1
    answer.append(num)
    return answer&lt;/code&gt;&lt;/pre&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;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 최종 코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626246422823&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import math
from collections import deque

def solution(progresses, speeds):
    stack, answer = deque(), []
    for i in range(len(progresses)):
        stack.append(math.ceil((100 - progresses[i])/speeds[i]))
        
    count = 1
    front = stack.popleft()
    while stack:
        current = stack.popleft()
        #앞 작업과 비교하여 작으면 함께 배포해준다.
        if front &amp;gt;= current:
            count += 1
        #앞 작업보다 크면 따로 배포해준다. 
        else:
            answer.append(count)
            count = 1          
            front = current
    answer.append(count)
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이전 날짜보다 작으면 그대로 삭제하고, 크다면 front = current로 다시 새로운 current와 비교하도록 하였다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>deque</category>
      <category>programmers</category>
      <category>PYTHON</category>
      <category>queue</category>
      <category>stack</category>
      <category>기능개발</category>
      <category>살려줘</category>
      <category>프로그래머스</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/83</guid>
      <comments>https://thedayof-1.tistory.com/83#entry83comment</comments>
      <pubDate>Wed, 14 Jul 2021 16:14:39 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 힙: 더 맵게 | Python</title>
      <link>https://thedayof-1.tistory.com/82</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. 로직&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;1000&quot; width=&quot;458&quot; height=&quot;389&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ovDa2/btq9yl8u68A/QEgPwPBxwlrRYrUAtJG4Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ovDa2/btq9yl8u68A/QEgPwPBxwlrRYrUAtJG4Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ovDa2/btq9yl8u68A/QEgPwPBxwlrRYrUAtJG4Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FovDa2%2Fbtq9yl8u68A%2FQEgPwPBxwlrRYrUAtJG4Vk%2Fimg.png&quot; data-origin-width=&quot;1178&quot; data-origin-height=&quot;1000&quot; width=&quot;458&quot; height=&quot;389&quot; data-ke-mobilestyle=&quot;widthOrigin&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 처음으로 푼 풀이&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1626153181759&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(scoville, K):
    scoville.sort()
    count = 0
    while scoville[0] &amp;lt; K:
        if len(scoville) == 1: 
            return -1        
        combine = scoville[0] + (scoville[1] * 2)
        del scoville[0:2]
        scoville.insert(0,combine)
        count += 1
        scoville.sort()
    return count&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&quot;&gt;파이썬 내장함수 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;sort()&lt;/span&gt;는 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;O(N logN)&lt;/b&gt;&lt;/span&gt;의 시간복잡도를 가지고 있다. 효율성을 높이기 위해 &lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;O(log N)&lt;/span&gt;&lt;/b&gt;의 시간복잡도를 가진, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;heapq()&lt;/span&gt;를 사용해보도록 하겠다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. 최종코드&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1626155377507&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import heapq
def solution(scoville, K):
    heapq.heapify(scovilㅁle)
    count = 0
    while scoville[0] &amp;lt; K:
        if len(scoville) == 1: 
            return -1        
        combine = heapq.heappop(scoville) + (heapq.heappop(scoville) * 2)
        heapq.heappush(scoville, combine)
        count += 1
    return count&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;heapify(): 함수에 리스트를 넘기면 힘구조에 맞게 재배치 되며 최소값이 0번째 인덱스에 위치한다.&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;heappop(): 가장 작은 값이 삭제된 후, 그 값을 리턴한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;heappush(): 값을 추가한다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>프로그래머스</category>
      <category>Heap</category>
      <category>heappop</category>
      <category>heappush</category>
      <category>heapq</category>
      <category>LEVEL1</category>
      <category>programmers</category>
      <category>코딩테스트</category>
      <category>파이썬</category>
      <category>프로그래머스</category>
      <category>힙</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/82</guid>
      <comments>https://thedayof-1.tistory.com/82#entry82comment</comments>
      <pubDate>Tue, 13 Jul 2021 14:50:23 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 신규아이디 | kakao | Python3</title>
      <link>https://thedayof-1.tistory.com/81</link>
      <description>&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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&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;/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;b&gt;Youtube영상&lt;/b&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;&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=t3M6toIflyQ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=t3M6toIflyQ&quot;&gt;https://www.youtube.com/watch?v=t3M6toIflyQ&lt;/a&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=t3M6toIflyQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dp0YfI/hyKRGt7bMt/p8cqu1kcO4DwqVXV3HgQj1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=110_328_1182_606&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/t3M6toIflyQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. 최종 코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1626006778100&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import re

def solution(new_id):
    # 1단계
    new_id = new_id.lower()
    # 2단계
    new_id = re.sub('[^a-z0-9-_\.]', '', new_id)
    # 3단계
    new_id = re.sub('\.{2,}', '.', new_id)
    # 4단계
    new_id = re.sub('^\.|\.$', '', new_id)
    # 5단계
    if new_id == &quot;&quot;:
        new_id = &quot;a&quot;
    # 6단계
    if len(new_id) &amp;gt; 15:
        new_id = new_id[0:15]
        if new_id[14] == '.':
            new_id = new_id[0:14]
    # 7단계
    elif len(new_id) &amp;lt; 3:
        add = new_id[-1]
        while len(new_id) &amp;lt; 3:
            new_id += add
    return new_id&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래머스</category>
      <category>programmers</category>
      <category>신규아이디</category>
      <category>정규식</category>
      <category>카카오</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/81</guid>
      <comments>https://thedayof-1.tistory.com/81#entry81comment</comments>
      <pubDate>Sun, 11 Jul 2021 21:36:32 +0900</pubDate>
    </item>
    <item>
      <title>[개발일지] 7월 9일 : 프론트와의 데이터 교환</title>
      <link>https://thedayof-1.tistory.com/80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;ToDoList&lt;/b&gt;&lt;/span&gt;&lt;/u&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;1. Django Template filter 학습하기&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;s&gt;2. Template 작성하기&lt;/s&gt;&lt;/span&gt;&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;1. Template을 위한 dict형 데이터 변환&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;190&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yId0R/btq9blvygh1/tJvHSz2zxXSZnHh2nOc2JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yId0R/btq9blvygh1/tJvHSz2zxXSZnHh2nOc2JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yId0R/btq9blvygh1/tJvHSz2zxXSZnHh2nOc2JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyId0R%2Fbtq9blvygh1%2FtJvHSz2zxXSZnHh2nOc2JK%2Fimg.png&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;190&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;serializer.data는 ReturnDict형으로 보내주기 때문에 http로 렌더링하여 보내줄수 없는 것 같다. 그래서 response에서 직접 dict형으로 변환해서 보내준다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1625810688728&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class RetriveAPIViewForDictionary(generics.RetrieveAPIView):
    &quot;&quot;&quot;
    템플릿에 데이터를 전송해주기 위한 Dictionary 변환 API
    &quot;&quot;&quot;
    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance)
        return Response({'serializer': serializer.data})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;사실 이렇게 되면 기존 RetrieveAPIView에서 def retrieve와 return 값 빼고는 다 똑같아지게 된다. &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;최대한 중복성을 줄여보고자, serializer에서 dict로 변경해보려했다. 시도해보려다 코드가 더 복잡해지길래 포기했다.&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;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&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;2. OrderDict&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;ListAPIVIew를 생성할 때 다음과 같이 데이터를 serializer해서 전송했다. &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;user는 id, username, profile_image 데이터까지 묶어서 전송하고, &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;comments는 comments를 생성한 사람, 프로필 이미지 등등을 함께 전송했다.&amp;nbsp;&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;그랬더니 template에서 데이터를 전송받을 때 아주 귀찮은 일들이 발생했다!!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;512&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BjxHW/btq9eNrfCuU/VmJW7DLlsf4TbRnBUYiQtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BjxHW/btq9eNrfCuU/VmJW7DLlsf4TbRnBUYiQtk/img.png&quot; data-alt=&quot;PostMan에서의 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BjxHW/btq9eNrfCuU/VmJW7DLlsf4TbRnBUYiQtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBjxHW%2Fbtq9eNrfCuU%2FVmJW7DLlsf4TbRnBUYiQtk%2Fimg.png&quot; data-origin-width=&quot;689&quot; data-origin-height=&quot;512&quot; data-ke-mobilestyle=&quot;widthOrigin&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;PostMan에서의 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;261&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkXIOa/btq9ewccS4y/XsXKwQ6w28iE0kUoImRVk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkXIOa/btq9ewccS4y/XsXKwQ6w28iE0kUoImRVk0/img.png&quot; data-alt=&quot;실제 serializer.data&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkXIOa/btq9ewccS4y/XsXKwQ6w28iE0kUoImRVk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkXIOa%2Fbtq9ewccS4y%2FXsXKwQ6w28iE0kUoImRVk0%2Fimg.png&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;261&quot; data-ke-mobilestyle=&quot;widthOrigin&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;실제 serializer.data&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;OrderDict에 둘러싸인 아이들을 풀어서 적어야 한다. 아주 간단할 것 같으면서도 골치아픈 문제다ㅎㅎ... 이 문제는 내일 해결해보도록 하겠다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&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;3. Django Template filter&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;{% block 원하는문자 %} {% endblock %} : 태그를 사용하여 매 페이지마다 달라지는 타이틀을 다르게 설정할 수 있다.&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;{% extends 'base.html' %} : base.html의 &amp;lt;header&amp;gt;를 모든 html파일에 복붙하는 것은 비효율 적이다. extends를 이용해 받아올 수 있다.&lt;/span&gt;&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;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;ToDoList&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/h4&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. html에서 OrdierDict풀어서 사용하기&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;2. base.html 파일 완성하기&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;: 조금 고민이 있다고 하면... 내가 instagram 프론트를 다 구현할 생각에 조금 아찔하다.&lt;/span&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;042&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/042.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/042.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;정말 간단하게 멋없게 만들어야 하나 싶기도 하고 내일은 관련 html파일이 있는지, bootstrap에서 어떻게든 만들 수 있을지 한 번 고민해봐야겠다...&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;그리고 Orderdict 같은 문제들을 겪으면서 이래서 데이터를 통일성 있게 보내줘야 하구나 싶었다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>개발일지</category>
      <category>dict</category>
      <category>Django</category>
      <category>DRF</category>
      <category>Instagram</category>
      <category>template</category>
      <category>개발</category>
      <author>하루_Day</author>
      <guid isPermaLink="true">https://thedayof-1.tistory.com/80</guid>
      <comments>https://thedayof-1.tistory.com/80#entry80comment</comments>
      <pubDate>Fri, 9 Jul 2021 16:03:39 +0900</pubDate>
    </item>
  </channel>
</rss>