<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Leta Learns</title>
    <link>https://letalearns.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 22 Jul 2026 18:14:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>leta</managingEditor>
    <item>
      <title>221210 |</title>
      <link>https://letalearns.tistory.com/267</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#소재지 지도에 마커로 나타내기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로젝트 다 끝내고 피피티 만들고 있었는데&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;color: #000000;&quot;&gt;플랫폼, SI, 이커머스, 게임, 네트워크 이 5개 분류의 기업들을 지도에 찍어내야 했는데,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;성공하고 신나서 그랬나? 플랫폼만 찍고 끝냈었다. ㅋㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;남은 것들을 찍어주는데 게임에서 에러가 났다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670673615366&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ParserError: Error tokenizing data. C error: Expected 13 fields in line 3, saw 14&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 에러였는데, 검색해보니 파일 포맷과 관련된 문제라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일 데이터가 저장될때 '\t' 을 구분자(delimiter)로 하여 저장되어 있어서 발생한 문제일 거라는데..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;암튼 링크에서 시키는 대로 sep='\t' 코드를 추가해주었더니 잘 돌아갔다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670673694599&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data = pd.read_csv(io.BytesIO(file_uploaded['game-company-data.csv']), encoding='cp949', sep='\t')&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;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://mskim8717.tistory.com/82&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mskim8717.tistory.com/82&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670673715858&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[ERROR] ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6&quot; data-og-description=&quot;Pandas 데이터 읽기 Error 개방되어 있는 데이터 CSV 파일을 읽다보면 여러가지 에러를 만나게 되는데요. ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6 위 문제의 원인은 파일포맷과 &quot; data-og-host=&quot;mskim8717.tistory.com&quot; data-og-source-url=&quot;https://mskim8717.tistory.com/82&quot; data-og-url=&quot;https://mskim8717.tistory.com/82&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZeYKN/hyQQz4RSRz/XF2z0r6saYaQRA0migHsqK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/NISqk/hyQQtXTeUs/Iim4Ro3ktv8iP9UamtV5G0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B8tNC/hyQQzRlcXY/M4SZkoq3OKRHXkyLtiIulK/img.jpg?width=4032&amp;amp;height=3024&amp;amp;face=0_0_4032_3024&quot;&gt;&lt;a href=&quot;https://mskim8717.tistory.com/82&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mskim8717.tistory.com/82&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZeYKN/hyQQz4RSRz/XF2z0r6saYaQRA0migHsqK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/NISqk/hyQQtXTeUs/Iim4Ro3ktv8iP9UamtV5G0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B8tNC/hyQQzRlcXY/M4SZkoq3OKRHXkyLtiIulK/img.jpg?width=4032&amp;amp;height=3024&amp;amp;face=0_0_4032_3024');&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;[ERROR] ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Pandas 데이터 읽기 Error 개방되어 있는 데이터 CSV 파일을 읽다보면 여러가지 에러를 만나게 되는데요. ParserError: Error tokenizing data. C error: Expected 5 fields in line 3, saw 6 위 문제의 원인은 파일포맷과&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mskim8717.tistory.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;</description>
      <category>HUFS/빅데이터</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/267</guid>
      <comments>https://letalearns.tistory.com/267#entry267comment</comments>
      <pubDate>Sat, 10 Dec 2022 21:02:16 +0900</pubDate>
    </item>
    <item>
      <title>221209 |</title>
      <link>https://letalearns.tistory.com/266</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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#평균 연봉(초봉) scatter plot&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vbksP/btrTbV5Uc0H/L2SiybV5WkS7sDkFgFxGNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vbksP/btrTbV5Uc0H/L2SiybV5WkS7sDkFgFxGNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vbksP/btrTbV5Uc0H/L2SiybV5WkS7sDkFgFxGNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvbksP%2FbtrTbV5Uc0H%2FL2SiybV5WkS7sDkFgFxGNk%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;266&quot; height=&quot;475&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 식으로 데이터 전처리를 해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드 만드는데 엄청 오래 걸렸는데 다 하고 보니 엄청 간단하군..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래 링크에서 데이터 전처리 해야겠다는 힌트를 얻고, 그걸 그대로 scatter plot으로 나타내주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://workingwithpython.com/matplotlib_scatterplot/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://workingwithpython.com/matplotlib_scatterplot/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670521887838&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;파이썬에서 Matplotlib으로 산점도(scatter plot) 그리기&quot; data-og-description=&quot;산점도는 두 연속형변수의 상관관계를 나타낼 수 있는 유용한 시각화 도구입니다. 이번 포스팅에서는 시각화 라이브러리 Matplotlib을 사용하여 파이썬에서 산점도(scatter plot)를 어떻게 그릴수 있&quot; data-og-host=&quot;workingwithpython.com&quot; data-og-source-url=&quot;https://workingwithpython.com/matplotlib_scatterplot/&quot; data-og-url=&quot;https://workingwithpython.com/matplotlib_scatterplot/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ovD5h/hyQQthYLJ7/mfVEobLj4uAR45jekPnGOK/img.jpg?width=504&amp;amp;height=322&amp;amp;face=0_0_504_322&quot;&gt;&lt;a href=&quot;https://workingwithpython.com/matplotlib_scatterplot/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://workingwithpython.com/matplotlib_scatterplot/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ovD5h/hyQQthYLJ7/mfVEobLj4uAR45jekPnGOK/img.jpg?width=504&amp;amp;height=322&amp;amp;face=0_0_504_322');&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;파이썬에서 Matplotlib으로 산점도(scatter plot) 그리기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;산점도는 두 연속형변수의 상관관계를 나타낼 수 있는 유용한 시각화 도구입니다. 이번 포스팅에서는 시각화 라이브러리 Matplotlib을 사용하여 파이썬에서 산점도(scatter plot)를 어떻게 그릴수 있&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;workingwithpython.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;pre id=&quot;code_1670521854885&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#연봉 scatter plot 코드

import io
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib

salary = pd.read_csv(io.BytesIO(file_uploaded['salary.csv']), encoding='cp949')

plt.scatter(salary['field'], salary['salary'])
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 이 코드를 돌리면&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;scatter salary plot.png&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rFiNL/btrTb1ZbOiA/rZ3dbW3lNdIw9wsyxmolXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rFiNL/btrTb1ZbOiA/rZ3dbW3lNdIw9wsyxmolXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rFiNL/btrTb1ZbOiA/rZ3dbW3lNdIw9wsyxmolXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrFiNL%2FbtrTb1ZbOiA%2FrZ3dbW3lNdIw9wsyxmolXK%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;408&quot; height=&quot;248&quot; data-filename=&quot;scatter salary plot.png&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 그래프가 나온다 ㅋㅋㅋㅋ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;y(연봉)값이 엄청 많아서 다 겹쳐서 나온 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;scatter 말고 다른 걸로 해봐야 할 것 같다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하.. 근데 어떻게 하는지 모르겠다...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;y축 값들이 정렬이 안 되어있는데 이걸 어떻게 수정하는지 모르겠다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;거의 하루종일 찾아봤는데 답이 없어서 다른 것부터 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#scatter 성공함&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;성공했다.... 내가 성공한 건 아니고 선배가 도와줬다.... 좋은 사람...... ㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;salary.csv에서 연봉값을 가져올 때 int로 가져오는 줄 알았는데 string으로 가져와져서 그런 거였다 ㅜㅜ&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670610191230&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#천 단위에 붙는 ',' 제거 ex)1,000
salary.replace(',','', regex=True, inplace=True)

#str -&amp;gt; int 변환
salary = salary.astype({'salary':'int'})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;판다스는 참.. 신기한 게 많구나&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;암튼 최종 코드는 이렇게 간단하다!!!!!&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670610241880&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#연봉 box plot
import io
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib

salary = pd.read_csv(io.BytesIO(file_uploaded['salary.csv']), encoding='cp949')

df = pd.DataFrame(salary)
salary.replace(',','', regex=True, inplace=True)
salary = salary.astype({'salary':'int'})

plt.scatter(salary['field'], salary['salary'])
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW0mGe/btrTiWXncnk/qvlKyQwkuJz6vudzQGZWR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW0mGe/btrTiWXncnk/qvlKyQwkuJz6vudzQGZWR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW0mGe/btrTiWXncnk/qvlKyQwkuJz6vudzQGZWR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW0mGe%2FbtrTiWXncnk%2FqvlKyQwkuJz6vudzQGZWR0%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;392&quot; height=&quot;248&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이렇게 연봉 분포도 잘 볼 수 있다...&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;&amp;nbsp;&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;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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&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: #000000;&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;color: #000000;&quot;&gt;주소를 입력하면 위, 경도로 변환해주는 함수를 발견했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670602920603&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;####### 도로명주소 위도 경도 값으로 바꿔주기 ########
geo_local = Nominatim(user_agent='South Korea')

# 위도, 경도 반환하는 함수
def geocoding(address):
    try:
        geo = geo_local.geocode(address)
        x_y = [geo.latitude, geo.longitude]
        return x_y

    except:
        return [0,0]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 코드인데 더 자세한 내용은 아래의 링크에서 확인할 수 있다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://wonhwa.tistory.com/m/29&quot;&gt;[python] 주소값만 있을 때 위경도 찾는 방법 (tistory.com)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670602890531&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[python] 주소값만 있을 때 위경도 찾는 방법&quot; data-og-description=&quot;안녕하세요! 데이터 분석을 하다보면 특히 folium으로 위치를 시각화 할 때는 숫자로 된 위경도 값이 필요한데 데이터 파일 자체에 주소만 나와있고 위경도 값이 누락되어 있는 경우가 발생합니&quot; data-og-host=&quot;wonhwa.tistory.com&quot; data-og-source-url=&quot;https://wonhwa.tistory.com/m/29&quot; data-og-url=&quot;https://wonhwa.tistory.com/29&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cLe3oF/hyQQtJC1WB/AknCAEyGNW8Z2fedDivXyK/img.png?width=800&amp;amp;height=104&amp;amp;face=0_0_800_104,https://scrap.kakaocdn.net/dn/gwdM1/hyQQqsB2HH/KoiAveNuhFoZTvPfrYAxfk/img.png?width=800&amp;amp;height=104&amp;amp;face=0_0_800_104,https://scrap.kakaocdn.net/dn/bh2noT/hyQQxL0Krr/vDY2dcDWdJWUQokyL9qpD1/img.png?width=750&amp;amp;height=724&amp;amp;face=0_0_750_724&quot;&gt;&lt;a href=&quot;https://wonhwa.tistory.com/m/29&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://wonhwa.tistory.com/m/29&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cLe3oF/hyQQtJC1WB/AknCAEyGNW8Z2fedDivXyK/img.png?width=800&amp;amp;height=104&amp;amp;face=0_0_800_104,https://scrap.kakaocdn.net/dn/gwdM1/hyQQqsB2HH/KoiAveNuhFoZTvPfrYAxfk/img.png?width=800&amp;amp;height=104&amp;amp;face=0_0_800_104,https://scrap.kakaocdn.net/dn/bh2noT/hyQQxL0Krr/vDY2dcDWdJWUQokyL9qpD1/img.png?width=750&amp;amp;height=724&amp;amp;face=0_0_750_724');&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;[python] 주소값만 있을 때 위경도 찾는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! 데이터 분석을 하다보면 특히 folium으로 위치를 시각화 할 때는 숫자로 된 위경도 값이 필요한데 데이터 파일 자체에 주소만 나와있고 위경도 값이 누락되어 있는 경우가 발생합니&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;wonhwa.tistory.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;geocoding 함수를 사용해서 주소를 위, 경도로 변환한 후 아래와 같이 데이터 프레임을 만들어주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5MZT/btrTgRiEy6P/cyAXaC2fl0XRX44PfVHUsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5MZT/btrTgRiEy6P/cyAXaC2fl0XRX44PfVHUsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5MZT/btrTgRiEy6P/cyAXaC2fl0XRX44PfVHUsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5MZT%2FbtrTgRiEy6P%2FcyAXaC2fl0XRX44PfVHUsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;884&quot; height=&quot;314&quot; data-filename=&quot;edited_blob&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;314&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;color: #000000;&quot;&gt;이제 이걸 지도에 표시해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이것도 팀원이 링크를 주었다...ㅎ 사랑&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://continuous-development.tistory.com/152&quot;&gt;[Python] 시각화 사용법 - folium 을 통한 지도 시각화 및 마커(marker) 찍기 &amp;mdash; 나무늘보의 개발 블로그 (tistory.com)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670603070745&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Python] 시각화 사용법 - folium 을 통한 지도 시각화 및 마커(marker) 찍기&quot; data-og-description=&quot;folium 란? python에서 제공해주는 라이브러리로서 지도를 다루는 대표적인 라이브러리다. 설치법 !pip install folium 사용법 import folium as g 이것을 사용하기 위해서는 위도 경도를 알아야 한다. 네이버&quot; data-og-host=&quot;www.sloth-lifes.com&quot; data-og-source-url=&quot;https://continuous-development.tistory.com/152&quot; data-og-url=&quot;https://www.sloth-lifes.com/entry/Python-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%82%AC%EC%9A%A9%EB%B2%95-folium-%EC%9D%84-%ED%86%B5%ED%95%9C-%EC%A7%80%EB%8F%84-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%B0%8F-%EB%A7%88%EC%BB%A4marker-%EC%B0%8D%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GJt2j/hyQQzC4MSR/lkzo9Tdj1kaXICmXQwtWmk/img.png?width=543&amp;amp;height=527&amp;amp;face=0_0_543_527,https://scrap.kakaocdn.net/dn/BKxpn/hyQQn3KGVL/kKATjhCrkRjmDBbYsihumK/img.png?width=543&amp;amp;height=527&amp;amp;face=0_0_543_527,https://scrap.kakaocdn.net/dn/bdh8tK/hyQQpHfuGW/BbeLTIfAUYTh4AvGtxdcbK/img.png?width=1108&amp;amp;height=785&amp;amp;face=0_0_1108_785&quot;&gt;&lt;a href=&quot;https://continuous-development.tistory.com/152&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://continuous-development.tistory.com/152&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GJt2j/hyQQzC4MSR/lkzo9Tdj1kaXICmXQwtWmk/img.png?width=543&amp;amp;height=527&amp;amp;face=0_0_543_527,https://scrap.kakaocdn.net/dn/BKxpn/hyQQn3KGVL/kKATjhCrkRjmDBbYsihumK/img.png?width=543&amp;amp;height=527&amp;amp;face=0_0_543_527,https://scrap.kakaocdn.net/dn/bdh8tK/hyQQpHfuGW/BbeLTIfAUYTh4AvGtxdcbK/img.png?width=1108&amp;amp;height=785&amp;amp;face=0_0_1108_785');&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;[Python] 시각화 사용법 - folium 을 통한 지도 시각화 및 마커(marker) 찍기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;folium 란? python에서 제공해주는 라이브러리로서 지도를 다루는 대표적인 라이브러리다. 설치법 !pip install folium 사용법 import folium as g 이것을 사용하기 위해서는 위도 경도를 알아야 한다. 네이버&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.sloth-lifes.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;span style=&quot;color: #000000;&quot;&gt;링크에서는 seoul_map이라고 하는데 나는 한국 전체 지도를 쓸거라서 korea_map이라고 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참고로 이 코드를 돌리면 주소를 위경도로 변환하는 과정이 7-8분 정도 소요가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 오타 하나 나면 7-8분을 또 쌩으로 기다려야 했다....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1670603160071&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#처음 맵 위치 잡기
korea_map = g.Map(location=[37.55, 126.98], tiles = 'Stamen Terrain', zoom_start = 12)
# korea_map

#지도에 위치 나타내기
for i in range(len(address_df)):
  marker01 = g.Marker([address_df.loc[i]['latitude'], address_df.loc[i]['longitude']],
                      icon = g.Icon(color='blue'))
  marker01.add_to(korea_map)
korea_map&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;span style=&quot;color: #000000;&quot;&gt;이렇게 하면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1435&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N4VkF/btrTg49X63f/QfBSui4ioKPSsn0gFfvFK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N4VkF/btrTg49X63f/QfBSui4ioKPSsn0gFfvFK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N4VkF/btrTg49X63f/QfBSui4ioKPSsn0gFfvFK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN4VkF%2FbtrTg49X63f%2FQfBSui4ioKPSsn0gFfvFK0%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;1435&quot; height=&quot;753&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1435&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB7KIj/btrTgrq4160/KDOhSHNmKMyDi42MhP0juk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB7KIj/btrTgrq4160/KDOhSHNmKMyDi42MhP0juk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB7KIj/btrTgrq4160/KDOhSHNmKMyDi42MhP0juk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB7KIj%2FbtrTgrq4160%2FKDOhSHNmKMyDi42MhP0juk%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;1452&quot; height=&quot;765&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 식으로 지도에 마커를 찍을 수 있다!&lt;/span&gt;&lt;/p&gt;
&lt;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;span style=&quot;color: #000000;&quot;&gt;사실 소재지는 좀 다른 식으로 해보려고 했었는데 어떻게 하는지 정말 감이 안 잡혀서 그냥 이런 식으로 지도에 찍었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하다가 모르겠어서 소재지는 뺄까 생각도 했는데 팀원이 열심히 크롤링해준거라 좀 마음에 걸렸었는데,, 이렇게라도 사용해서 다행이다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>HUFS/빅데이터</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/266</guid>
      <comments>https://letalearns.tistory.com/266#entry266comment</comments>
      <pubDate>Sat, 10 Dec 2022 01:30:13 +0900</pubDate>
    </item>
    <item>
      <title>서버 분석 프로그램 만들기</title>
      <link>https://letalearns.tistory.com/261</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정보보안 수업 과제 &amp;lt;서버 분석 프로그램 만들기&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;교수님이 제공한 3개의 서버 ip를 입력하면 운영체제, 웹 서버 유무, SSH 유무, 데이터베이스 유무 및 버전을 출력하는 프로그램을 만들어야 한다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&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;color: #000000;&quot;&gt;텔넷을 쓰지 않고 바로 프로그램을 작성해도 되긴 하는데 나는 처음에 과제를 어떻게 진행할지 갈피가 잡히지 않아서 우선 텔넷을 사용했다. 텔넷에서 각 서버가 어떤 포트를 열고있는지 먼저 확인을 하고 그것을 소켓 프로그래밍으로 바꿀 계획이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;텔넷 설치는 아래 링크를 참고하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668053339667&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client)&quot; data-og-description=&quot;윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client) [텔넷 설치여부 확인하기] 윈도우 + R키 를 눌러 실행창을 실행 후 [cmd] 를 입력하고 확인을 누릅니다 커맨드 창에 telnet 을 입력하고 화면전환이 &quot; data-og-host=&quot;bebeya.tistory.com&quot; data-og-source-url=&quot;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&quot; data-og-url=&quot;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bLfY20/hyQwJTMd8v/Nx816jPCUA89tlW4XJ9af0/img.png?width=620&amp;amp;height=237&amp;amp;face=0_0_620_237,https://scrap.kakaocdn.net/dn/cnQGhM/hyQwyLuuia/qI6NdWQOjzuqK9dgPpgVn1/img.png?width=620&amp;amp;height=237&amp;amp;face=0_0_620_237,https://scrap.kakaocdn.net/dn/bCPkE1/hyQwHIq7eF/U1v5x4K5rREAEhJJxATlUK/img.png?width=614&amp;amp;height=338&amp;amp;face=0_0_614_338&quot;&gt;&lt;a href=&quot;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bebeya.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B010-%ED%85%94%EB%84%B7-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Telnet-Client&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bLfY20/hyQwJTMd8v/Nx816jPCUA89tlW4XJ9af0/img.png?width=620&amp;amp;height=237&amp;amp;face=0_0_620_237,https://scrap.kakaocdn.net/dn/cnQGhM/hyQwyLuuia/qI6NdWQOjzuqK9dgPpgVn1/img.png?width=620&amp;amp;height=237&amp;amp;face=0_0_620_237,https://scrap.kakaocdn.net/dn/bCPkE1/hyQwHIq7eF/U1v5x4K5rREAEhJJxATlUK/img.png?width=614&amp;amp;height=338&amp;amp;face=0_0_614_338');&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;윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;윈도우10 - 텔넷 클라이언트 설치하기(Telnet Client) [텔넷 설치여부 확인하기] 윈도우 + R키 를 눌러 실행창을 실행 후 [cmd] 를 입력하고 확인을 누릅니다 커맨드 창에 telnet 을 입력하고 화면전환이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bebeya.tistory.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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. 텔넷 사용해서 ip 검색&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;과제에 사용되는 3개의 ip주소를 텔넷을 사용하여 분석하였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cmd에서&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1668171546891&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;telnet &amp;lt;IP&amp;gt; &amp;lt;port번호&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 입력하면 결과를 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내가 사용한 포트 번호는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹 서버: 80&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SSH: 22&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;데이터베이스: 3306 (MySQL)&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;color: #000000;&quot;&gt;데이터베이스의 경우 MSSQL(1433), 오라클 DB(1521), MySQL(3306), PostgreSQL(5432)를 모두 넣어보았다.&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;color: #000000;&quot;&gt;과제에서 주어진 3개의 서버는 데이터베이스를 사용하지 않거나, MySQL을 사용하는 경우 두 가지였기 때문에 MySQL 포트번호만 사용하였다.&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;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://meetup.toast.com/posts/204&quot;&gt;대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 : NHN Cloud Meetup (toast.com)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668053370014&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 : NHN Cloud Meetup&quot; data-og-description=&quot;ACL이나 보안 그룹(security group)으로 포트가 막혀 있는지 확인하고 싶을 때가 많습니다.&quot; data-og-host=&quot;meetup.toast.com&quot; data-og-source-url=&quot;https://meetup.toast.com/posts/204&quot; data-og-url=&quot;https://meetup.toast.com/posts/204&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eS5mL/hyQwCUENza/XIKNt28EXwfXHMdVmOXnrk/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/beiR51/hyQwIUStOp/IWhE1oXBKqGnKnhZQVQ8tK/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://meetup.toast.com/posts/204&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://meetup.toast.com/posts/204&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eS5mL/hyQwCUENza/XIKNt28EXwfXHMdVmOXnrk/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/beiR51/hyQwIUStOp/IWhE1oXBKqGnKnhZQVQ8tK/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&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;대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 : NHN Cloud Meetup&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ACL이나 보안 그룹(security group)으로 포트가 막혀 있는지 확인하고 싶을 때가 많습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;meetup.toast.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;잘 하고 있는 건지 확실하지 않아서 아래 링크 사용해서 telnet, netstat 두 개 다 사용하는 방법으로 다시 한 번 확인해보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cmd 창을 두 개 실행한 후&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각각의 cmd 창에&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1668171917418&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;telnet &amp;lt;IP&amp;gt; &amp;lt;port번호&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1668171925810&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;netstat -an|find &quot;IP:port번호&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 실행하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://uutopia.tistory.com/4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://uutopia.tistory.com/4&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668055489766&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법&quot; data-og-description=&quot;실무에서 서버간 연동작업을 수행할 때 네트워크 방화벽을 서로 오픈하게 된다. 송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지 &quot; data-og-host=&quot;uutopia.tistory.com&quot; data-og-source-url=&quot;https://uutopia.tistory.com/4&quot; data-og-url=&quot;https://uutopia.tistory.com/4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bP4oqO/hyQwGbIM6o/kvAH6KNW00clKlmU0Guzd0/img.png?width=553&amp;amp;height=493&amp;amp;face=0_0_553_493,https://scrap.kakaocdn.net/dn/dE5J5c/hyQwFcNhta/2T212PkI38jJZ1BBvkXEwk/img.png?width=553&amp;amp;height=493&amp;amp;face=0_0_553_493,https://scrap.kakaocdn.net/dn/iGQiu/hyQwAo3gRK/xG4MKOUMapx71FVTxxc2A0/img.png?width=972&amp;amp;height=518&amp;amp;face=0_0_972_518&quot;&gt;&lt;a href=&quot;https://uutopia.tistory.com/4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://uutopia.tistory.com/4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bP4oqO/hyQwGbIM6o/kvAH6KNW00clKlmU0Guzd0/img.png?width=553&amp;amp;height=493&amp;amp;face=0_0_553_493,https://scrap.kakaocdn.net/dn/dE5J5c/hyQwFcNhta/2T212PkI38jJZ1BBvkXEwk/img.png?width=553&amp;amp;height=493&amp;amp;face=0_0_553_493,https://scrap.kakaocdn.net/dn/iGQiu/hyQwAo3gRK/xG4MKOUMapx71FVTxxc2A0/img.png?width=972&amp;amp;height=518&amp;amp;face=0_0_972_518');&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;실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실무에서 서버간 연동작업을 수행할 때 네트워크 방화벽을 서로 오픈하게 된다. 송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;uutopia.tistory.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&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;color: #000000;&quot;&gt;교수님이 코드는 소켓 프로그래밍 클라이언트 코드를 찾아서 조금만 수정하면 된다고 얘기하셨었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 아래 링크의 클라이언트 코드를 참고하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668059417681&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;소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 &amp;middot; on1ystar&quot; data-og-description=&quot;소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 21 Mar 2021 의문점이나 지적 등의 관심 및 조언을 위한 댓글이나 메일은 언제나 환영이고 감사합니다. python socket 모듈 BSD socket 인터페이&quot; data-og-host=&quot;on1ystar.github.io&quot; data-og-source-url=&quot;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&quot; data-og-url=&quot;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpLP0c/hyQwLYt6JM/Sb9PTOHukHZQi6TtZ11Umk/img.png?width=920&amp;amp;height=920&amp;amp;face=0_0_920_920&quot;&gt;&lt;a href=&quot;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://on1ystar.github.io/socket%20programming/python/2021/03/21/socket-2/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpLP0c/hyQwLYt6JM/Sb9PTOHukHZQi6TtZ11Umk/img.png?width=920&amp;amp;height=920&amp;amp;face=0_0_920_920');&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;소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 &amp;middot; on1ystar&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;소켓 프로그래밍 with Python - 간단한 서버/클라이언트 구현 21 Mar 2021 의문점이나 지적 등의 관심 및 조언을 위한 댓글이나 메일은 언제나 환영이고 감사합니다. python socket 모듈 BSD socket 인터페이&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;on1ystar.github.io&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;span style=&quot;color: #000000;&quot;&gt;한 ip에 대해서 웹 서버, SSH, 데이터베이스의 유무를 파악해야 했기 때문에 각각의 포트에 대해서 소켓 프로그래밍을 하였다. 포트가 열려있지 않은 경우 에러가 발생하는데, 다른 포트의 분석 결과에 영향을 미치지 않도록 try ~ except 구문을 사용하였다.&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;color: #000000;&quot;&gt;운영체제 분석도 해야했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SSH 파트에서 서버 쪽으로 메시지를 날리면 서버가 운영체제 정보가 담긴 메시지를 보내주기도 하는데, 이를 통해서 운영체제 분석을 하였다.&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;color: #000000;&quot;&gt;서버에 메시지를 보내고, 서버로부터 메시지를 받는 것은 아래 링크를 참고하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://chichi-story.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://chichi-story.tistory.com/19&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668172414236&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Python] 소켓통신 (server, client)&quot; data-og-description=&quot;python 소켓통신 1. socket-server.py #-*- coding:utf-8 -*- import socket # 통신 정보 설정 IP = '' PORT = 5050 SIZE = 1024 ADDR = (IP, PORT) # 서버 소켓 설정 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_sock&quot; data-og-host=&quot;chichi-story.tistory.com&quot; data-og-source-url=&quot;https://chichi-story.tistory.com/19&quot; data-og-url=&quot;https://chichi-story.tistory.com/19&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/npouQ/hyQxDS7eSy/ks75XXZkGkRyAfDEs15RMK/img.png?width=409&amp;amp;height=94&amp;amp;face=0_0_409_94,https://scrap.kakaocdn.net/dn/xaNBE/hyQwHv3P7F/r4BdylSFrwKioy4crIET11/img.png?width=409&amp;amp;height=94&amp;amp;face=0_0_409_94&quot;&gt;&lt;a href=&quot;https://chichi-story.tistory.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://chichi-story.tistory.com/19&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/npouQ/hyQxDS7eSy/ks75XXZkGkRyAfDEs15RMK/img.png?width=409&amp;amp;height=94&amp;amp;face=0_0_409_94,https://scrap.kakaocdn.net/dn/xaNBE/hyQwHv3P7F/r4BdylSFrwKioy4crIET11/img.png?width=409&amp;amp;height=94&amp;amp;face=0_0_409_94');&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;[Python] 소켓통신 (server, client)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;python 소켓통신 1. socket-server.py #-*- coding:utf-8 -*- import socket # 통신 정보 설정 IP = '' PORT = 5050 SIZE = 1024 ADDR = (IP, PORT) # 서버 소켓 설정 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_sock&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;chichi-story.tistory.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;&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드를 올리고 싶긴 한데, 교수님이 추후에도 같은 과제를 내주실 지도 몰라서 일단 올리지 않기로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;color: #000000;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Server</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/261</guid>
      <comments>https://letalearns.tistory.com/261#entry261comment</comments>
      <pubDate>Thu, 17 Nov 2022 10:22:12 +0900</pubDate>
    </item>
    <item>
      <title>Linux에 MySQL Server 설치 및 삭제하기</title>
      <link>https://letalearns.tistory.com/259</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;&lt;span style=&quot;color: #000000;&quot;&gt;MySQL 설치&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665128582077&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get install mysql-server&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MySQL 서버 초기화&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665128623010&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo mysql_secure_installation&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MySQL 서버를 초기화하면 데이터베이스의 비밀번호를 설정해야 하는 단계가 있는데 이때 비밀번호를 설정하면&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;background-color: #9feec3; color: #000000;&quot;&gt;Failed!&amp;nbsp;error:&amp;nbsp;SET&amp;nbsp;PASSWORD&amp;nbsp;has&amp;nbsp;no&amp;nbsp;significance&amp;nbsp;for&amp;nbsp;user&amp;nbsp;'root'@'localhost'&amp;nbsp;as&amp;nbsp;the&amp;nbsp;authentication&amp;nbsp;method&amp;nbsp;used&amp;nbsp;doesn't&amp;nbsp;store&amp;nbsp;authentication&amp;nbsp;data&amp;nbsp;in&amp;nbsp;the&amp;nbsp;MySQL&amp;nbsp;server.&amp;nbsp;Please&amp;nbsp;consider&amp;nbsp;using&amp;nbsp;ALTER&amp;nbsp;USER&amp;nbsp;instead&amp;nbsp;if&amp;nbsp;you&amp;nbsp;want&amp;nbsp;to&amp;nbsp;change&amp;nbsp;authentication&amp;nbsp;parameters.&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;color: #000000;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&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;color: #000000;&quot;&gt;1. 해당 터미널을 끈다. (mysql_secure_installation 종료)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. 새 터미널을 켠 후 sudo mysql 입력 (mysql 켜기)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. 아래 쿼리를 이용하여 비밀번호 변경&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665128816309&quot; class=&quot;sql&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '새로운비밀번호';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;query OK 가 나오면 비밀번호 설정이 완료된 것이다.&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;color: #000000;&quot;&gt;4. MySQL을 종료한 후 mysql_secure_installation 실행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;비밀번호 입력 후 비밀번호를 바꿀 것인지 묻는 질문에 n이라고 답변해야 함. y를 누르면 오류 무한반복&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;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://seong6496.tistory.com/322&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://seong6496.tistory.com/322&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665128740675&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Mysql root 비밀번호 setup error(mysql secure installation)&quot; data-og-description=&quot;Ubuntu에서 Mysql 설정을 위해 mysql_secure_installation을 시작하면 root 비밀번호를 설정하는 상황이 나옵니다. 비밀번호를 설정했더니 다음과 같은 에러가 뜹니다. ... Failed! error: SET PASSWORD has no si..&quot; data-og-host=&quot;seong6496.tistory.com&quot; data-og-source-url=&quot;https://seong6496.tistory.com/322&quot; data-og-url=&quot;https://seong6496.tistory.com/322&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vN5at/hyP3zxlnN5/rEGTzxtKFxDoKrkvPokcdk/img.jpg?width=578&amp;amp;height=181&amp;amp;face=0_0_578_181,https://scrap.kakaocdn.net/dn/exH8S/hyP3HoAQ7E/mmhALVSxROpRGM4gndFg50/img.jpg?width=578&amp;amp;height=181&amp;amp;face=0_0_578_181&quot;&gt;&lt;a href=&quot;https://seong6496.tistory.com/322&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seong6496.tistory.com/322&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vN5at/hyP3zxlnN5/rEGTzxtKFxDoKrkvPokcdk/img.jpg?width=578&amp;amp;height=181&amp;amp;face=0_0_578_181,https://scrap.kakaocdn.net/dn/exH8S/hyP3HoAQ7E/mmhALVSxROpRGM4gndFg50/img.jpg?width=578&amp;amp;height=181&amp;amp;face=0_0_578_181');&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;Mysql root 비밀번호 setup error(mysql secure installation)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Ubuntu에서 Mysql 설정을 위해 mysql_secure_installation을 시작하면 root 비밀번호를 설정하는 상황이 나옵니다. 비밀번호를 설정했더니 다음과 같은 에러가 뜹니다. ... Failed! error: SET PASSWORD has no si..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;seong6496.tistory.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MySQL 전체(완전) 삭제&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;sudo apt-get remove --purge mysql*&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;span style=&quot;color: #000000;&quot;&gt;참고: &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://seong6496.tistory.com/322&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://seong6496.tistory.com/322&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Server</category>
      <category>mysql</category>
      <category>리눅스</category>
      <category>우분투</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/259</guid>
      <comments>https://letalearns.tistory.com/259#entry259comment</comments>
      <pubDate>Fri, 7 Oct 2022 17:11:18 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu 계정 생성 및 확인</title>
      <link>https://letalearns.tistory.com/258</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;&lt;span style=&quot;color: #000000;&quot;&gt;우분투 일반 사용자 계정 추가&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126040469&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo adduser [사용할 아이디]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성된 계정 확인&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126076899&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ /etc/passwd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로그인&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126107886&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ su [아이디]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;root 계정으로 로그인&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126438547&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ su&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로그아웃&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126116822&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ exit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전체 목록 확인&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126912191&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ cat /etc/passwd&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;useradd를 통해 등록된 계정만 보기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665126957917&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ grep /bin/bash /etc/passwd

or

$ grep /bin/bash /etc/passwd | cut -f1 -d: #아이디만 보여줌&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://kbs4674.tistory.com/134&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kbs4674.tistory.com/134&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://overcode.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A9%EB%A1%9D-%ED%99%95%EC%9D%B8-Linux-User-List&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://overcode.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A9%EB%A1%9D-%ED%99%95%EC%9D%B8-Linux-User-List&lt;/a&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>Server</category>
      <category>PuTTY</category>
      <category>리눅스</category>
      <category>우분투</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/258</guid>
      <comments>https://letalearns.tistory.com/258#entry258comment</comments>
      <pubDate>Fri, 7 Oct 2022 16:23:08 +0900</pubDate>
    </item>
    <item>
      <title>WSL 설치 - Windows subsystem for linux optional component is not enabled.</title>
      <link>https://letalearns.tistory.com/257</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664095227583&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;WSL2(Windows Subsystem for Linux 2) 설치 및 사용 방법&quot; data-og-description=&quot;지난 5월 윈도우10의 대규모 업데이트가 있었습니다. 이번 업데이트에는 WSL2 정식 릴리스가 포함되어있습니다. WSL은 경략 가상화 기술을 통해 윈도우에서 리눅스 배포판을 사용할 수 있게 도와&quot; data-og-host=&quot;www.44bits.io&quot; data-og-source-url=&quot;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&quot; data-og-url=&quot;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cqKtLY/hyPT0ieDMK/5rtw1DqzuiMFtDyjKFzKYk/img.png?width=2001&amp;amp;height=1000&amp;amp;face=0_0_2001_1000,https://scrap.kakaocdn.net/dn/Owi3c/hyPT4EU3wd/VeKRVEk93Km54QwKM2kGb1/img.png?width=2001&amp;amp;height=1000&amp;amp;face=0_0_2001_1000&quot;&gt;&lt;a href=&quot;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.44bits.io/ko/post/wsl2-install-and-basic-usage&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cqKtLY/hyPT0ieDMK/5rtw1DqzuiMFtDyjKFzKYk/img.png?width=2001&amp;amp;height=1000&amp;amp;face=0_0_2001_1000,https://scrap.kakaocdn.net/dn/Owi3c/hyPT4EU3wd/VeKRVEk93Km54QwKM2kGb1/img.png?width=2001&amp;amp;height=1000&amp;amp;face=0_0_2001_1000');&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;WSL2(Windows Subsystem for Linux 2) 설치 및 사용 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;지난 5월 윈도우10의 대규모 업데이트가 있었습니다. 이번 업데이트에는 WSL2 정식 릴리스가 포함되어있습니다. WSL은 경략 가상화 기술을 통해 윈도우에서 리눅스 배포판을 사용할 수 있게 도와&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.44bits.io&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;span style=&quot;color: #000000;&quot;&gt;위 링크대로 따라하고 있었는데 ubuntu 설치 과정에서&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;windows subsystem for linux optional component is not enabled. 이런 에러가 났었다. (캡처를 안 해둠...)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;구글링 해보니&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 입력하면 된다고 한다. &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://kkokkoma-dev.tistory.com/171&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://kkokkoma-dev.tistory.com/171&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입력하고 pc 재부팅했더니 ubuntu 돌아간다.&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;color: #000000;&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;color: #000000;&quot;&gt;그 후로는 다시 맨 위 링크대로 따라하면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>PC</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/257</guid>
      <comments>https://letalearns.tistory.com/257#entry257comment</comments>
      <pubDate>Sun, 25 Sep 2022 18:01:49 +0900</pubDate>
    </item>
    <item>
      <title>[모각코] 2022 HUFS 하계 모각코 캠프 회고</title>
      <link>https://letalearns.tistory.com/256</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Today I Learned&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/222&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.07.20 - [HUFS/HUFS 모각코 캠프] - [모각코] 220720 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/224&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.07.23 - [HUFS/HUFS 모각코 캠프] - [모각코] 220723 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/230&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.07.27 - [HUFS/HUFS 모각코 캠프] - [모각코] 220727 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/232&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.07.30 - [HUFS/HUFS 모각코 캠프] - [모각코] 220730 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/234&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.04 - [HUFS/HUFS 모각코 캠프] - [모각코] 220803 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/236&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.06 - [HUFS/HUFS 모각코 캠프] - [모각코] 220806 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/239&quot;&gt;2022.08.10 - [HUFS/HUFS 모각코 캠프] - [모각코] 220810 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.13 - [HUFS/HUFS 모각코 캠프] - [모각코] 220813 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/247&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.17 - [HUFS/HUFS 모각코 캠프] - [모각코] 220817 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.20 - [HUFS/HUFS 모각코 캠프] - [모각코] 220820 Today I Learned&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://letalearns.tistory.com/252&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.24 - [HUFS/HUFS 모각코 캠프] - [모각코] 220824 Today I Learned&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XH3bk/btrKF1t9HQ8/BjTKubQtz3bvjPeGBL2f6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XH3bk/btrKF1t9HQ8/BjTKubQtz3bvjPeGBL2f6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XH3bk/btrKF1t9HQ8/BjTKubQtz3bvjPeGBL2f6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXH3bk%2FbtrKF1t9HQ8%2FBjTKubQtz3bvjPeGBL2f6K%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;947&quot; height=&quot;337&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;947&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2022 HUFS 하계 모각코 캠프 목표 &lt;b&gt;&lt;i&gt;&amp;lt;1모각코 1문제&amp;gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;혼자서는 마음 잡고 알고리즘 문제를 푸는 것이 쉽지 않아서 모각코 캠프를 신청하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모각코 덕분에 하루에 1문제, 일주일에 2문제 이상을 풀 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;작년 모각코 캠프 때는 주어진 2시간 동안 한 문제를 다 풀 지 못하는 경우가 많았는데 올해는 대부분의 문제들을 2시간 안에 풀었다. 풀이 시간이 알게 모르게 많이 단축된 것 같다.&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;color: #000000;&quot;&gt;푼 문제들을 알고리즘 별로 분류해보았다. 여러 알고리즘을 사용해야 하는 문제들이 많아서 중복된 문제들이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;분류하고 보니 수학 문제를 많이 푼 것을 확인할 수 있었다. 코딩테스트를 보면 보통 구현 문제가 많길래 구현 문제 위주로 풀려고 노력했는데 언뜻 봤을 때 구현 문제라고 생각하고 풀었던 문제들이 사실은 수학 문제들이었다.  &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제를 많이 접하다보니 이제 문제를 읽으면 어떤 알고리즘을 사용해야 하는 것인지 추측할 수 있게 되었다. 오랜만에 보는 알고리즘들은 헷갈리는 경우도 있었지만 한 번 다시 접하고 나면 그 다음부터는 어떤 알고리즘이구나. 깨닫는 시간이 오래 걸리지 않았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1모각코 1문제의 목표는 한 회 빼고 성공하였다. 이 정도면 성공이라고 봐도 되지 않을까.. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마지막 학기를 앞두고 있어서 아마도 이번이 마지막 HUFS 모각코 캠프 참여일 것 같은데 덕분에 약 한 달 간 꾸준히 공부할 수 있어서 좋았다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>HUFS/HUFS 모각코 캠프</category>
      <category>2022</category>
      <category>HUFS</category>
      <category>모각코</category>
      <category>회고</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/256</guid>
      <comments>https://letalearns.tistory.com/256#entry256comment</comments>
      <pubDate>Sat, 27 Aug 2022 10:09:49 +0900</pubDate>
    </item>
    <item>
      <title>함밥 | 220826</title>
      <link>https://letalearns.tistory.com/255</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#create Participant (그룹 생성 시 참가자 컬럼 생성)&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;createGroup함수 만든 방식과 같이 하고 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다 작성하고 빌드하는데 아래와 같은 에러가 났다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqrCMz/btrKFEk9Nev/0h0fDvxExgKYqQxyywPJN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqrCMz/btrKFEk9Nev/0h0fDvxExgKYqQxyywPJN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqrCMz/btrKFEk9Nev/0h0fDvxExgKYqQxyywPJN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqrCMz%2FbtrKFEk9Nev%2F0h0fDvxExgKYqQxyywPJN1%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;1906&quot; height=&quot;547&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1906&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Bean annotation&lt;/b&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;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;#ParicipantServiceImpl&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 createParticipant 함수를 아래와 같이 작성하고,&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661505877495&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Override
    public Optional&amp;lt;Participant&amp;gt; createParticipant(Long groupId) {

        Participant participant = new Participant();
        participant.setId(groupId);
        System.out.println(&quot;완&quot;);
        return participantDAO.create(participant);
    }&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;span style=&quot;color: #000000;&quot;&gt;#GroupServiceImpl&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 그룹을 만든 후에 createParticipant 함수를 호출하였다. (자세한 코드는 깃헙에..)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661505920695&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Override
    public Optional&amp;lt;Group&amp;gt; createGroup(Long restaurantId, Long leaderId) {

        Group group = new Group();
        group.setName(&quot;&quot;);
        group.setDate(&quot;1970-01-01&quot;);
        group.setTime(&quot;&quot;);
        group.setSex('F');
        group.setAge(&quot;&quot;);
        group.setPersonnel(1);
        group.setOptional(&quot;&quot;);
        group.setLeader(leaderId);
        group.setRestaurantId(restaurantId);

        ParticipantService participantService = new ParticipantServiceImpl(participantDAO);
        participantService.createParticipant(group.getId());
        System.out.println(&quot;participantService = &quot; + participantService);


        return groupDAO.create(group);
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포스트맨에서 api 써서 돌리면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjMdnG/btrKGxMrZ1S/yo2icmgdafh2x13mEYbHDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjMdnG/btrKGxMrZ1S/yo2icmgdafh2x13mEYbHDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjMdnG/btrKGxMrZ1S/yo2icmgdafh2x13mEYbHDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjMdnG%2FbtrKGxMrZ1S%2Fyo2icmgdafh2x13mEYbHDk%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;586&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 에러가 난다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;i&gt;java.sql.SQLIntegrityConstraintViolationException:&amp;nbsp;(conn=2223050)&amp;nbsp;Cannot&amp;nbsp;add&amp;nbsp;or&amp;nbsp;update&amp;nbsp;a&amp;nbsp;child&amp;nbsp;row:&amp;nbsp;a&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;constraint&amp;nbsp;fails&amp;nbsp;(`dtmudywqqttg3fc3`.`Participant`,&amp;nbsp;CONSTRAINT&amp;nbsp;`Participant_FK`&amp;nbsp;FOREIGN&amp;nbsp;KEY&amp;nbsp;(`id`)&amp;nbsp;REFERENCES&amp;nbsp;`Group`&amp;nbsp;(`id`)&amp;nbsp;ON&amp;nbsp;DELETE&amp;nbsp;CASCADE)&lt;/i&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;color: #000000;&quot;&gt;=&amp;gt; 참조 테이블에 없는 값을 추가해서 발생한 오류라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 무결성에 의해서 부모키에 해당하는 값만을 넣을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;groupId를 participant 컬럼에 넣어주어야 하는데 이 과정에서 문제가 생긴 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://reeme.tistory.com/39&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://reeme.tistory.com/39&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661506133768&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[SQL/Error] (1452): Cannot add or update a child row: a foreign key constraint fails&quot; data-og-description=&quot;(1452):&amp;nbsp;Cannot&amp;nbsp;add&amp;nbsp;or&amp;nbsp;update&amp;nbsp;a&amp;nbsp;child&amp;nbsp;row:&amp;nbsp;a&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;constraint&amp;nbsp;fails 참조테이블에 없는 값을 추가해서 발생한 오류 참조 무결성에 따라서 부모키에 해당하는 값만 넣을 수 있음. 참조하는..&quot; data-og-host=&quot;reeme.tistory.com&quot; data-og-source-url=&quot;https://reeme.tistory.com/39&quot; data-og-url=&quot;https://reeme.tistory.com/39&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZcKyX/hyPzvwBiC1/UirKs9MS3EKXPDoF7rNRs1/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/cJ8aCq/hyPzuYI7ry/YljVhxZRQQIRBJHd6wdpN0/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/vRZpH/hyPArMUbmD/17mM9LG3GkIq1aLyCzMweK/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315&quot;&gt;&lt;a href=&quot;https://reeme.tistory.com/39&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://reeme.tistory.com/39&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZcKyX/hyPzvwBiC1/UirKs9MS3EKXPDoF7rNRs1/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/cJ8aCq/hyPzuYI7ry/YljVhxZRQQIRBJHd6wdpN0/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/vRZpH/hyPArMUbmD/17mM9LG3GkIq1aLyCzMweK/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[SQL/Error] (1452): Cannot add or update a child row: a foreign key constraint fails&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;(1452):&amp;nbsp;Cannot&amp;nbsp;add&amp;nbsp;or&amp;nbsp;update&amp;nbsp;a&amp;nbsp;child&amp;nbsp;row:&amp;nbsp;a&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;constraint&amp;nbsp;fails 참조테이블에 없는 값을 추가해서 발생한 오류 참조 무결성에 따라서 부모키에 해당하는 값만 넣을 수 있음. 참조하는..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;reeme.tistory.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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해결!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ParticipantService 선언을 createGroup 함수 내부에서 해서 그런 것이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;밖으로 빼주었더니 제대로 실행되어 그룹이 만들어지면 참가자까지 만들어진다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661506863368&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Service
public class GroupServiceImpl implements GroupService {

    private final GroupDAO groupDAO;
    private final ParticipantDAO participantDAO;
    private final ParticipantService participantService; //이렇게 함수 밖에서 선언


    @Autowired
    public GroupServiceImpl(GroupDAO groupDAO, ParticipantDAO participantDAO, ParticipantService participantService) {
        this.groupDAO = groupDAO;
        this.participantDAO = participantDAO;
        this.participantService = participantService;
    }

    ///////////////생략////////////////
    
    @Override
    public Optional&amp;lt;Group&amp;gt; createGroup(Long restaurantId, Long leaderId) {

        Group group = new Group();
        group.setName(&quot;&quot;);
        group.setDate(&quot;1970-01-01&quot;);
        group.setTime(&quot;&quot;);
        group.setSex('F');
        group.setAge(&quot;&quot;);
        group.setPersonnel(1);
        group.setOptional(&quot;&quot;);
        group.setLeader(leaderId);
        group.setRestaurantId(restaurantId);

        participantService.createParticipant(group.getId());
        System.out.println(&quot;participantService = &quot; + participantService);


        return groupDAO.create(group);
    }
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#그룹 참여&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그룹 참여 로직&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자가 그룹 참여 버튼 클릭&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DB에서 해당 그룹의 참가자 컬럼을 찾아 빈 공간 탐색 (sql 쿼리 사용)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;찾은 빈 공간에 사용자 추가&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;음 .. 함수를 만들다가 쿼리를 가져오는 작업에서 혼란스러워졌다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떤 식으로 출력되는지 확인하기 위해서 일단 실행을 해봤는데&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZfAsR/btrKFAJ38YN/MJOISxXEJirOcoTnRAEh40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZfAsR/btrKFAJ38YN/MJOISxXEJirOcoTnRAEh40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZfAsR/btrKFAJ38YN/MJOISxXEJirOcoTnRAEh40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZfAsR%2FbtrKFAJ38YN%2FMJOISxXEJirOcoTnRAEh40%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;665&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.lang.NullPointerException: null 에러가 났다.&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;color: #000000;&quot;&gt;오늘은 여기까지 하고,, 내일 다시 해야지.&lt;/span&gt;&lt;/p&gt;</description>
      <category>토이 프로젝트/함밥</category>
      <category>함밥</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/255</guid>
      <comments>https://letalearns.tistory.com/255#entry255comment</comments>
      <pubDate>Fri, 26 Aug 2022 19:13:13 +0900</pubDate>
    </item>
    <item>
      <title>함밥 | 220825</title>
      <link>https://letalearns.tistory.com/254</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;#그룹 수정 기능&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;required a bean of type 'hambap.demo.service.GroupService' that could not be found. 오류남.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bean 설정 안 해줘서 발생한 오류이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Service단에서 @Service annotation 지정해주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661414619698&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Spring] ... required a bean of type ... 오류&quot; data-og-description=&quot;  오류 메시지   오류 원인 오류 메시지를 보면, BoardService의 생성자 첫 번째 parameter에 필요한 BoardRepository bean을 주입받아야 하는데 BoardRepository가 bean으로 등록되어 있지 않아 발생하는 오류&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98&quot; data-og-url=&quot;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-오류&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cZJXGu/hyPzk8SurM/6gRv8axR22KkUiI1wqFIb0/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397,https://scrap.kakaocdn.net/dn/hnbHl/hyPzsy4J2p/kEl2THkWVKMMx4zbwrCbrk/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397,https://scrap.kakaocdn.net/dn/bDL7sk/hyPznEvCF1/VUOmUQdIRx3owdObtzzkfk/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397&quot;&gt;&lt;a href=&quot;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@hiworld/Spring-...-required-a-bean-of-type-...-%EC%98%A4%EB%A5%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cZJXGu/hyPzk8SurM/6gRv8axR22KkUiI1wqFIb0/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397,https://scrap.kakaocdn.net/dn/hnbHl/hyPzsy4J2p/kEl2THkWVKMMx4zbwrCbrk/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397,https://scrap.kakaocdn.net/dn/bDL7sk/hyPznEvCF1/VUOmUQdIRx3owdObtzzkfk/img.jpg?width=4032&amp;amp;height=2397&amp;amp;face=0_0_4032_2397');&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;[Spring] ... required a bean of type ... 오류&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  오류 메시지   오류 원인 오류 메시지를 보면, BoardService의 생성자 첫 번째 parameter에 필요한 BoardRepository bean을 주입받아야 하는데 BoardRepository가 bean으로 등록되어 있지 않아 발생하는 오류&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JPArepository에 있는 &lt;b&gt;save()의 반환자료형 매치를 잘&lt;/b&gt;못해서 에러가 났었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처음에는 수정할 때 updateGroup() 함수를 만들었었는데 그냥 repository에서는 save()로 하고 service 쪽에서부터는 updateGroup()으로 하기로 했다.&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;color: #000000;&quot;&gt;save() 함수는 반환자료형이 optional이 아닌데 내가 optional로 반환하도록 해놨어서 에러가 났다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;optional 지웠더니 빌드 성공.&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;&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;/group/update/2/apc 로 수정을 해보려고 했는데&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DEUFj/btrKA2E6iCx/CLPHtEU4TczWutg1QrIoQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DEUFj/btrKA2E6iCx/CLPHtEU4TczWutg1QrIoQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DEUFj/btrKA2E6iCx/CLPHtEU4TczWutg1QrIoQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDEUFj%2FbtrKA2E6iCx%2FCLPHtEU4TczWutg1QrIoQ0%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;557&quot; height=&quot;218&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;updateGroup 함수를 save로 바꾸고 나서 DAO의 파라미터를 안 바꿨길래 바꿔주었다.&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;color: #000000;&quot;&gt;...그래도 에러는 해결하지 못했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에러 메시지를 읽어보니 serviceImpl에서 이름 등의 값들을 임의로 그냥 &quot;&quot; 이렇게 빈문자열로 해놓았던 게 문제가 된 것 같아서&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKKZf8/btrKz3dsAf8/f7HrfBlrZUm4RA4arDlFC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKKZf8/btrKz3dsAf8/f7HrfBlrZUm4RA4arDlFC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKKZf8/btrKz3dsAf8/f7HrfBlrZUm4RA4arDlFC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKKZf8%2FbtrKz3dsAf8%2Ff7HrfBlrZUm4RA4arDlFC0%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;467&quot; height=&quot;428&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;713&quot; data-origin-height=&quot;428&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;color: #000000;&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;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그랬더니 다른 에러가 뜬다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsYgO7/btrKz4i6673/2DiIUMYz9n2Ji5MkhOYaa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsYgO7/btrKz4i6673/2DiIUMYz9n2Ji5MkhOYaa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsYgO7/btrKz4i6673/2DiIUMYz9n2Ji5MkhOYaa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsYgO7%2FbtrKz4i6673%2F2DiIUMYz9n2Ji5MkhOYaa0%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;1598&quot; height=&quot;159&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1598&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;leader값이 not null 이어야 하는데 안 넣어줘서 그런 것 같다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;findGroupById 함수를 사용해서 그룹을 받아오고 그 안에 있는 leader 값을 가져와서 넣어주기로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPaihq/btrKwU2W5Gk/4P54ODrDtDCi3RtaZACjx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPaihq/btrKwU2W5Gk/4P54ODrDtDCi3RtaZACjx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPaihq/btrKwU2W5Gk/4P54ODrDtDCi3RtaZACjx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPaihq%2FbtrKwU2W5Gk%2F4P54ODrDtDCi3RtaZACjx0%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;392&quot; height=&quot;606&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&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;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;709&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZVDU/btrKwjhzoLz/j2FqEwC3Nh7FI97cbbNEP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZVDU/btrKwjhzoLz/j2FqEwC3Nh7FI97cbbNEP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZVDU/btrKwjhzoLz/j2FqEwC3Nh7FI97cbbNEP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZVDU%2FbtrKwjhzoLz%2Fj2FqEwC3Nh7FI97cbbNEP1%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;709&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;709&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이런 에러가 떴다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;id 설정을 안 해줘서 그런건가?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661418630808&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//에러메시지
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!] with root cause&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;658&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buMWbV/btrKyrlVIY5/9K6dzDyaRkn7kNxjRdNpwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buMWbV/btrKyrlVIY5/9K6dzDyaRkn7kNxjRdNpwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buMWbV/btrKyrlVIY5/9K6dzDyaRkn7kNxjRdNpwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuMWbV%2FbtrKyrlVIY5%2F9K6dzDyaRkn7kNxjRdNpwK%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;533&quot; height=&quot;658&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;658&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;&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;span style=&quot;color: #000000;&quot;&gt;id 정보도 받아와서 새로 지정해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(39, 43번 줄)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G32ky/btrKz4wMkpI/oEOWNJTFBrYbAbZGvK1Mp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G32ky/btrKz4wMkpI/oEOWNJTFBrYbAbZGvK1Mp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G32ky/btrKz4wMkpI/oEOWNJTFBrYbAbZGvK1Mp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG32ky%2FbtrKz4wMkpI%2FoEOWNJTFBrYbAbZGvK1Mp1%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;1826&quot; height=&quot;410&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ㅡㅡ 아 저 에러메시지 보기 싫다.&lt;/span&gt;&lt;/p&gt;
&lt;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;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해결!&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;service단 문제가 아니라 controller가 문제였다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nAT3J/btrKwVVasSk/BpJEPx7BT8ySLuScL79HTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nAT3J/btrKwVVasSk/BpJEPx7BT8ySLuScL79HTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nAT3J/btrKwVVasSk/BpJEPx7BT8ySLuScL79HTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnAT3J%2FbtrKwVVasSk%2FBpJEPx7BT8ySLuScL79HTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;934&quot; height=&quot;365&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;24번 줄에서 @PathVariable을 name과 id 각각 해주어야 하는데, 한 번만 하면 되는 줄 알았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ㅋㅋ.. @PathVariable은 파라미터별로 각각 설정해주어야 함!&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;color: #000000;&quot;&gt;service 단에서 id&amp;nbsp; 받아온 건 필요 없는거였어서 그냥 삭제해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;213&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/txK3q/btrKz44Cctq/jLSxjgDZUuaMeMuspotYu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/txK3q/btrKz44Cctq/jLSxjgDZUuaMeMuspotYu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/txK3q/btrKz44Cctq/jLSxjgDZUuaMeMuspotYu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtxK3q%2FbtrKz44Cctq%2FjLSxjgDZUuaMeMuspotYu0%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;615&quot; height=&quot;213&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;213&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;수정 기능 완성!&lt;/span&gt;&lt;/p&gt;
&lt;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;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&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: #000000;&quot;&gt;DAO와 Service 단 사이에서 자꾸 Optional과 optional이 아닌 객체가 혼동되었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나를 optional이 아닌 것으로 고치면 하나가 optional이어야 한다고 하고,,, 전체 다 optional 아닌 걸로 하면 어떤 거는 optional이어야 한다고 뜨고... (Optional의 루프.....)&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;color: #000000;&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;color: #000000;&quot;&gt;Dao와 DaoImpl을 각각 이런 식으로 void형으로 바꿨고,&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661422737152&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//DAO
public interface GroupDAO {
    void delete(Group group);
}


//DAOImpl
@Override
public void delete(Group group) {
    groupRepository.delete(group);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ServiceImpl 에서는 delete(gp.orElseThrow()); 를 해주어 gp가 null인 경우, NoSuchElementException가 발생하도록 해주었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1661422773793&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    @Override
    public String deleteGroup(Long id) {
        Optional&amp;lt;Group&amp;gt; gp = groupDAO.getGroupInfo(id);
        groupDAO.delete(gp.orElseThrow());
        return &quot;삭제완료&quot;;
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boDXUS/btrKwiXqH0Y/8TpBnV00nDFcCWzCwgdrfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boDXUS/btrKwiXqH0Y/8TpBnV00nDFcCWzCwgdrfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boDXUS/btrKwiXqH0Y/8TpBnV00nDFcCWzCwgdrfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboDXUS%2FbtrKwiXqH0Y%2F8TpBnV00nDFcCWzCwgdrfk%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;1113&quot; height=&quot;240&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1113&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;null인 경우 이렇게 에러가 뜨고,&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2xFEO/btrKzLqWbo8/BTfuNvEP2VWCGF7wFzs6DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2xFEO/btrKzLqWbo8/BTfuNvEP2VWCGF7wFzs6DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2xFEO/btrKzLqWbo8/BTfuNvEP2VWCGF7wFzs6DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2xFEO%2FbtrKzLqWbo8%2FBTfuNvEP2VWCGF7wFzs6DK%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;657&quot; height=&quot;201&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;657&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;값이 존재하면 삭제한 후 삭제완료라고 뜬다 ~&lt;/span&gt;&lt;/p&gt;</description>
      <category>토이 프로젝트/함밥</category>
      <category>함밥</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/254</guid>
      <comments>https://letalearns.tistory.com/254#entry254comment</comments>
      <pubDate>Thu, 25 Aug 2022 20:03:36 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 백준 2581번 - 소수</title>
      <link>https://letalearns.tistory.com/253</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문제 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://www.acmicpc.net/problem/2581&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2581&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1661346014342&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;2581번: 소수&quot; data-og-description=&quot;M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.&amp;nbsp; 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2581&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2581&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWneoI/hyPzwtM3P3/hoWN2o0ka0vqLv5g8wVAnk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2581&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2581&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWneoI/hyPzwtM3P3/hoWN2o0ka0vqLv5g8wVAnk/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&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;2581번: 소수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.&amp;nbsp; 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNiZQs/btrKuwHMqdM/BTHSQ4ZRuTiBN2WER0VM80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNiZQs/btrKuwHMqdM/BTHSQ4ZRuTiBN2WER0VM80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNiZQs/btrKuwHMqdM/BTHSQ4ZRuTiBN2WER0VM80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNiZQs%2FbtrKuwHMqdM%2FBTHSQ4ZRuTiBN2WER0VM80%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;1111&quot; height=&quot;455&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소수 판별만 하면 되는 문제였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입력 범위를 100까지로 착각해서 최솟값 구할 때 비교하는 초기값을 101로 설정했더니 계속 틀렸었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반례 찾으려고 게시판 돌아다니다가 문제를 다시 읽어봤는데 10000까지길래 10001로 수정했다.&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;color: #000000;&quot;&gt;문제를 잘 읽자 !&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1661346192030&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
input = sys.stdin.readline

def is_prime(x):
    for i in range(2, x):
        if x % i == 0:
            return False
    if x == 1:
        return False 
    return True 

m = int(input())
n = int(input())

mn = 10001
total = 0

for i in range(m, n+1):
    if is_prime(i):
        total += i
        if i &amp;lt; mn:
            mn = i

if total == 0:
    print(-1)
else: 
    print(total)
    print(mn)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwVERG/btrKsFSJhHm/aBC4KwVvX7gqBo4gDdy1Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwVERG/btrKsFSJhHm/aBC4KwVvX7gqBo4gDdy1Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwVERG/btrKsFSJhHm/aBC4KwVvX7gqBo4gDdy1Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwVERG%2FbtrKsFSJhHm%2FaBC4KwVvX7gqBo4gDdy1Kk%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; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Coding/백준</category>
      <category>2581</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>파이썬</category>
      <author>leta</author>
      <guid isPermaLink="true">https://letalearns.tistory.com/253</guid>
      <comments>https://letalearns.tistory.com/253#entry253comment</comments>
      <pubDate>Thu, 25 Aug 2022 00:04:03 +0900</pubDate>
    </item>
  </channel>
</rss>