<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>정의찬123123</title>
    <link>https://euichan.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 22:50:02 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>정의찬123123</managingEditor>
    <item>
      <title>[Python, Java, javascript, Go] 두 수의 곱 구하기</title>
      <link>https://euichan.tistory.com/43</link>
      <description>&lt;p&gt;프로그래머스 - 두 수의 곱 구하기&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120804?language=python3&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120804&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;def solution(num1, num2):
    return num1 * num2&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;Java&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        return num1 * num2;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;javascript&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;function solution(num1, num2) {
    return num1 * num2;
}&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;func solution(num1 int, num2 int) int {
    return num1 * num2;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트/프로그래머스</category>
      <category>go</category>
      <category>java</category>
      <category>JavaScript</category>
      <category>python</category>
      <category>두 수의 곱 구하기</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/43</guid>
      <comments>https://euichan.tistory.com/43#entry43comment</comments>
      <pubDate>Mon, 7 Apr 2025 11:17:12 +0900</pubDate>
    </item>
    <item>
      <title>[Python, Java, javascript, Go]두 수의 합 구하기</title>
      <link>https://euichan.tistory.com/42</link>
      <description>&lt;p&gt;프로그래머스 - 두 수의 합 구하기&lt;br&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120802&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120802&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;def solution(num1, num2):
    return num1 + num2&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;Java&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        return num1 + num2;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;javascript&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;function solution(num1, num2) {
    return num1 + num2;
}&lt;/code&gt;&lt;/pre&gt;&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;func solution(num1 int, num2 int) int {
    return num1 + num2
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트/프로그래머스</category>
      <category>go</category>
      <category>java</category>
      <category>JavaScript</category>
      <category>python</category>
      <category>두 수의 합 구하기</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/42</guid>
      <comments>https://euichan.tistory.com/42#entry42comment</comments>
      <pubDate>Mon, 7 Apr 2025 11:09:46 +0900</pubDate>
    </item>
    <item>
      <title>[Python, Java, javascript, Go] 몫 구하기</title>
      <link>https://euichan.tistory.com/41</link>
      <description>&lt;p&gt;몫 구하기&lt;br&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120805&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120805&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;def solution(num1, num2):
    return num1 // num2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;파이썬에서는 타입을 강하게 분류하지 않는다.&lt;br&gt;&amp;#39;/&amp;#39;은 실수 나누기, &amp;#39;//&amp;#39;은 정수 나누기이다.&lt;/p&gt;
&lt;h1&gt;Java&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        return num1 / num2;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Java는 타입을 강하게 분류한다.&lt;br&gt;int 끼리 나눗셈이므로 고려하지 않아도 된다.&lt;/p&gt;
&lt;p&gt;javascript&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function solution(num1, num2) {
    return Math.floor(num1 /num2);
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;js 타입을 강하게 분류하지 않지만 정수 나눗셈 연산자가 없어서 Math.floor()를 이용한다.&lt;/p&gt;
&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;func solution(num1 int, num2 int) int {
    return num1 / num2
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;자바와 유사하여 설명 생략.&lt;/p&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트/프로그래머스</category>
      <category>go</category>
      <category>java</category>
      <category>JavaScript</category>
      <category>python</category>
      <category>몫 구하기</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/41</guid>
      <comments>https://euichan.tistory.com/41#entry41comment</comments>
      <pubDate>Mon, 7 Apr 2025 11:03:12 +0900</pubDate>
    </item>
    <item>
      <title>[Python, Java, javascript, Go] 숫자 비교하기</title>
      <link>https://euichan.tistory.com/40</link>
      <description>&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def solution(num1, num2):
    if num1 == num2:
        return 1
    return -1
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Java&lt;/h1&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        if (num1 == num2) {return 1;}
        return -1;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;javascript&lt;/h1&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;function solution(num1, num2) {
    if (num1 == num2) {return 1;}
    return -1;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;func solution(num1 int, num2 int) int {
    if num1 == num2 {return 1}
    return -1
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트/프로그래머스</category>
      <category>go</category>
      <category>java</category>
      <category>Java Script</category>
      <category>python</category>
      <category>숫자 비교하기</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/40</guid>
      <comments>https://euichan.tistory.com/40#entry40comment</comments>
      <pubDate>Mon, 7 Apr 2025 10:32:44 +0900</pubDate>
    </item>
    <item>
      <title>[Python, Java, javascript, Go] 두 수의 차 구하기</title>
      <link>https://euichan.tistory.com/39</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120803&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120803&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[프로그래머스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;programmers.co.kr](&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120803&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/120803&lt;/a&gt;)&lt;/p&gt;
&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def solution(num1, num2):
    answer = num1 - num2
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Java&lt;/h1&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 - num2;
        return answer;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre class=&quot;go&quot;&gt;&lt;code&gt;func solution(num1 int, num2 int) int {
    return num1 - num2
}&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;js&lt;/h1&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;function solution(num1, num2) {
    var answer = num1 - num2 ;
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트/프로그래머스</category>
      <category>go</category>
      <category>java</category>
      <category>Java Script</category>
      <category>python</category>
      <category>두 수의 차 구하기</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/39</guid>
      <comments>https://euichan.tistory.com/39#entry39comment</comments>
      <pubDate>Mon, 31 Mar 2025 16:13:44 +0900</pubDate>
    </item>
    <item>
      <title>인생 첫 개발 프로젝트 - 전남대 모음이 회고</title>
      <link>https://euichan.tistory.com/38</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;24년 10월~ 25년 1월까지 진행한 프로젝트 회고입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(제 기준: 1학년 2학기, 에코노베이션 동아리 기준: 28기)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;프로젝트 소개&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전남대 모음이는 전남대학교의 여러 공지를 하나로 모아 쉽게 확인할 수 있게 한 서비스입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 알림에 좋아요를 눌러 추천을 받을 수 있는 기능이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원은 프론트엔드 1명, 백엔드 1명, AI 1명이 있고 저는 백엔드 구현을 맡았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;891&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sywO8/btsL7pTbx2E/zIFvLpxtClCMQi76xShGm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sywO8/btsL7pTbx2E/zIFvLpxtClCMQi76xShGm0/img.png&quot; data-alt=&quot;메인 페이지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sywO8/btsL7pTbx2E/zIFvLpxtClCMQi76xShGm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsywO8%2FbtsL7pTbx2E%2FzIFvLpxtClCMQi76xShGm0%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;491&quot; height=&quot;521&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;891&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;메인 페이지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rs1di/btsL7tnIpPT/ktP5fQ4tBqSprg7Qy5WDi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rs1di/btsL7tnIpPT/ktP5fQ4tBqSprg7Qy5WDi1/img.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;342&quot; data-is-animation=&quot;false&quot; width=&quot;488&quot; height=&quot;167&quot; style=&quot;width: 65.1093%; margin-right: 10px;&quot; data-widthpercent=&quot;65.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rs1di/btsL7tnIpPT/ktP5fQ4tBqSprg7Qy5WDi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frs1di%2FbtsL7tnIpPT%2FktP5fQ4tBqSprg7Qy5WDi1%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;1001&quot; height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TNtp2/btsL6i1Wg1P/GuDC4iaPFd7K7od9qaCLxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TNtp2/btsL6i1Wg1P/GuDC4iaPFd7K7od9qaCLxK/img.png&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;494&quot; data-is-animation=&quot;false&quot; width=&quot;487&quot; height=&quot;321&quot; data-widthpercent=&quot;34.12&quot; style=&quot;width: 33.7279%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TNtp2/btsL6i1Wg1P/GuDC4iaPFd7K7od9qaCLxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTNtp2%2FbtsL6i1Wg1P%2FGuDC4iaPFd7K7od9qaCLxK%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;749&quot; height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;로그인 후에는 좋아요 기능과 추천기능 사용 가능.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;프로젝트 전&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스나 네트워크 같은 약간의 CS 지식은 있었지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍 언어 수준은 1학년 1학기 학부생 수준이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스, 객체지향 지식 전무(2학기 수업에서 알게됨)...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;배운 것&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 자바&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 객체지향&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 스프링부트&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 스프링 data JPA&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2~3달이라는 시간동안 위의 것들을 배웠는데 정말 힘들었습니다....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 놓치고 넘어간 부분도 많고, 완벽히 이해 못한 부분도 많습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방학을 이용해 다시 처음부터 차근차근 공부해볼 계획입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;부족했던것, 아쉬운 것&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- DTO 미숙&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 요청과 응답을 DTO로 잘 처리했지만 시간이 점점 부족해져 객체로 주고받거나 메세지 필드의 타입을 Object타입으로 처리한 것들이 몇 개 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가독성도 떨어지고 JSON으로 주고받는 요청과 응답 필드 검사를 깔끔하게 처리하지 못한거 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DTO의 필요성을 알게 되었습니다.&lt;/p&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;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저희 프로젝트에서는 로그인 인증 방식을 쿠키 + 세션 구조 확인했습니다. (실력이슈로 JWT는 X)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 쿠키 존재 여부와 유효성을 처리하는 로직을&amp;nbsp; 'CheckCookie' 서비스를 만들어서 적용했는데 이렇게 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠키가 필요한 모든 서비스에서 'CheckCookie' 서비스를 호출해야하는 번거로움이 있었고, 멘토님이 인터셉터를 알려주셔서 적용해보고 싶었지만 역량 + 시간이 부족하여 적용하지 못했습니다. 전남대 모음이 프로젝트는 서비스가 얼마 되지 않아 인터셉터가 없어도 문제가 되진 않았지만 시간이 부족해서 적용하지 못했다는 것이 아쉬웠습니다. 다음 프로젝트에서 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;인터셉터가 &lt;/span&gt;필요한 상황이 있다면 꼭 적용해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- 예외처리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바도 처음이었고 프로젝트(서비스)도 처음이었기 때문에 어떤 예외가 발생하는지, 어떻게 처리하는지 감이 잡히지 않았었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 코드는 예외처리 없이 작성되었고, 프론트에서 보내는 요청 형식과 백엔드에서 요청을 받는 형식이 일치하고 서비스가 정상적으로 실행되었을때만 200 OK가 응답되고 다른 경우는 모두 추상적으로 단순한 500 error를 응답했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러 핸들링 과정에서 프론트는 원인을 파악할 방법이 없었고, 오직 백엔드에서 디버깅, 에러 로그를 통해 확인해야 하는 것이 굉장히 힘들었습니다. 저 뿐만이 아니라 팀원들의 생산성을 떨어뜨린다는 사실이 미안하고 괴롭게 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예외처리의 필요성을 절실하게 느꼈습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- 테스트 코드&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예외처리와 유사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능이 잘 구현되었는지 확인할 때 마다 홈페이지에 접속해서 로그인하고 얻은 쿠키를 실어서 연계된 서비스에 요청 보내고.........&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 코드를 변경할 때마다 Integration에서 End to end에 가까운 테스트를 했는데 너무 생산성도 떨어지고 에러 핸들링 난이도가 상당했던거 같았습니다. 테스트 코드를 잘 짜두었다면 이런 부담이 적었겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 프로젝트에서는 테스트 코드도 욕심내보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- ERD, API 명세서&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 전에는 API 명세서? 그게 중요한가? 이야기하고 맞추면 되는거 아니야? 하는 막연한 생각들이 있었는데 API 명세서의 중요성을 알게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 작성된 명세서는 요청을 보내는 프론트엔드 개발자도 편하고 API를 구현하는 백엔드 개발자도 편하게 한다는 사실을 알았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답할때 기본 필드도 통일하면 좋을거 같다는 생각을 했습니다. ex message or response (프론트엔드에서는 message라는 필드만 가지고 파싱하면 되니까.) 다음프로젝트에서는 기본 API 응답 설계를 잘 해두고 상속받아 조금씩만 수정해서 사용할 수 있도록 구현하는 것이 목표입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;- 개발환경과 생산성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발환경의 중요성을 아주아주아주 체감하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자 모드 활용 팁들.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에서 파일 수정할때 vim만 사용하다가 visual studio code extension으로 손쉽게 파일을 변경할 수 있다는걸 알았을 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application.yml 파일도 env를 적용해 손쉽게 환경 이동이 가능하다는 것을 알았을 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mysql이나 redis같은 데이터 소스도 Intellij에서 간편하게 확인할 수 있다는 것을 알았을 때. + 등등등...&lt;/p&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;/p&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;다음 프로젝트에서는 git으로 pr만 날리면 서버에 바로 배포가 되도록 CICD 파이프라인을 적용해 보고 싶은 욕심이 생겼습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(기존 방식: 로컬 개발환경에서 build -&amp;gt; scp로 서버에 전송 -&amp;gt; restart script로 재실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 접속해서 스크립트를 수동으로 실행시켜야 한다는 불편함이 있음.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;앞으로의 방향, 다음 프로젝트에 적용할것&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 인터셉터&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 테스트 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- 예외처리&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;- JWT 토큰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;+ 번외 느낀점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CS지식은 물론, 주분야가 아닌 지식, 기술이라 하더라도 절대 쓸모없지 않고 다다익선이다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 개발하는 팀원이 디자인도 할 수 있어서 디자이너 없이 프로젝트를 진행할 수 있었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리팀 모두 개발은 처음이었는데 제가 리눅스, 서버 쪽을 잘알아서 다행히 프론트, 백엔드, AI모두 배포하는데 어려움 없이 배포할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백엔드 개발자여도 프론트엔드 지식이 있다면 기능을 두고 어떤 방식으로 개발하는 것이 서로에게 효율적인지 제시할 수 있고 요구할 수 있는 노련함이 생긴다는 것을 느꼈습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔지니어가 최종 목표이긴 하지만 현재 백엔드 공부를 하고 있는데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에코노베이션 동아리에 들어와서 백엔드 공부를 시작한 것이 정말 잘한것이라는 생각이 듭니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대한 어릴때 프론트, 백엔드 공부 등 다양한 경험을 해보고 취업 전에 엔지니어링 지식을 고도화해 T자형 인재가 되어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회고 마무리.&lt;/p&gt;</description>
      <category>개발 경험</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/38</guid>
      <comments>https://euichan.tistory.com/38#entry38comment</comments>
      <pubDate>Wed, 5 Feb 2025 03:23:08 +0900</pubDate>
    </item>
    <item>
      <title>[Python, Go] 코딩 기초 트레이닝 / 문자열 출력하기</title>
      <link>https://euichan.tistory.com/37</link>
      <description>&lt;h1&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181952?language=python3&quot;&gt;문제&lt;/a&gt;&lt;/h1&gt;
&lt;h1&gt;Python&lt;/h1&gt;
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;str = input()
print(str)&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;Go&lt;/h1&gt;
&lt;pre class=&quot;go&quot;&gt;&lt;code&gt;package main

import &quot;fmt&quot;

func main() {
    var s1 string
    fmt.Scan(&amp;amp;s1)
    fmt.Println(s1)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘 &amp;bull; 코딩테스트</category>
      <category>go</category>
      <category>python</category>
      <category>문자열 출력하기</category>
      <category>코딩 기초 트레이닝</category>
      <category>프로그래머스</category>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/37</guid>
      <comments>https://euichan.tistory.com/37#entry37comment</comments>
      <pubDate>Wed, 29 Nov 2023 16:11:15 +0900</pubDate>
    </item>
    <item>
      <title>재정비 중입니다.</title>
      <link>https://euichan.tistory.com/36</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;재정비 후 작성할 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2중 NAT VPN 구축&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아두이노로 불끄기&lt;/p&gt;</description>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/36</guid>
      <comments>https://euichan.tistory.com/36#entry36comment</comments>
      <pubDate>Fri, 28 Jul 2023 10:26:08 +0900</pubDate>
    </item>
    <item>
      <title>재정비 중입니다.</title>
      <link>https://euichan.tistory.com/notice/35</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;재정비 후 쓸 글&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2중 NAT VPN 구축하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아두이노로 불 끄고 켜기&lt;/p&gt;</description>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/notice/35</guid>
      <pubDate>Fri, 28 Jul 2023 10:24:01 +0900</pubDate>
    </item>
    <item>
      <title>aws cli</title>
      <link>https://euichan.tistory.com/32</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;실행중인 인스턴스 정보 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws&amp;nbsp;ec2&amp;nbsp;describe-instances&amp;nbsp;--filters&amp;nbsp;Name=instance-state-name,Values=running&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태그 값으로 인스턴스 정보 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aws ec2 describe-instances --filter Name=tag:Name,Values=bastion&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; #이름이 bastion인 인스턴스임&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ljcYy/btrKIyEg1y4/qvTTjCEKMf8UoM5RhqMCW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ljcYy/btrKIyEg1y4/qvTTjCEKMf8UoM5RhqMCW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ljcYy/btrKIyEg1y4/qvTTjCEKMf8UoM5RhqMCW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FljcYy%2FbtrKIyEg1y4%2FqvTTjCEKMf8UoM5RhqMCW0%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;905&quot; height=&quot;488&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스 아이디로 조회&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot;&gt;&lt;code&gt;aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;dsconfig&quot;&gt;&lt;code&gt;aws ec2 describe-instances \
    --query 'Reservations[*].Instances[*].{Instance:InstanceId,Subnet:SubnetId}' \
    --output json&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;crul 169.254.169.254/latest/meta-data&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스의 메타데이터 조회&lt;/p&gt;</description>
      <author>정의찬123123</author>
      <guid isPermaLink="true">https://euichan.tistory.com/32</guid>
      <comments>https://euichan.tistory.com/32#entry32comment</comments>
      <pubDate>Sat, 27 Aug 2022 16:41:36 +0900</pubDate>
    </item>
  </channel>
</rss>