<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OIU.log</title>
        <link>https://velog.io/</link>
        <description>설계관점에서 문제를 파악하고, 지속적으로 코드를 개선할 수 있는 개발자가 되고 싶습니다.</description>
        <lastBuildDate>Sun, 30 Apr 2023 10:01:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>OIU.log</title>
            <url>https://velog.velcdn.com/images/dev-oyuns0716/profile/9bcfd94a-bb07-4196-ba35-c0c914c88121/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. OIU.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dev-oyuns0716" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[SPRING PROJECT_03 :: Validator]]></title>
            <link>https://velog.io/@dev-oyuns0716/SPRING-PROJECT03-Validator</link>
            <guid>https://velog.io/@dev-oyuns0716/SPRING-PROJECT03-Validator</guid>
            <pubDate>Sun, 30 Apr 2023 10:01:42 GMT</pubDate>
            <description><![CDATA[<h3 id="유효성검사">유효성검사</h3>
<p>유효성검사를 하는 방법은 다양하다.
자바스크립트/html5를 통해 프론트에서 바로 유효성검사를 하고 보내는것과</p>
<p>백앤드에서 컨트롤러를 통해 유효성검사를 하고 에러를 발생시킨뒤 url맵핑하는 방법이 있다. -&gt; validator</p>
<h3 id="validator란">Validator란?</h3>
<p>유효성검사를 위한 인터페이스</p>
<h3 id="작성법">작성법</h3>
<ol>
<li>스프링xml파일에 다음의 코드를 등록.</li>
</ol>
<ul>
<li>root-context.xml</li>
</ul>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/8013d574-c4cc-45cf-82be-a7ba0946a124/image.png" alt=""></p>
<p>등록을 해주면 validator가 발생시키는 에러에 해당하는 메세지를 view에 띄워줄 수 있다.</p>
<ol start="2">
<li>메세지소스 만들어주기.
src/main/java/resources/ 에 message라는 폴더를 만든후 label.properties로 파일을 만들어준다.(위에 스프링 등록해줄때 message.label 이라고 해줬기 때문)
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/895aadf4-eb58-48bf-b55f-e4489640c6d5/image.png" alt=""></li>
</ol>
<p>안에는 간단하게 이렇게 적어주면 된다.
형식 : error이름.feild이름</p>
<p>❗️Tip : error이름만 적으면 모든 feild에서 적용
스프링에 메세지 등록 및 작성을 완료 했으니 validator를 만들어준다.
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/8e08af14-1804-4a3c-a3c5-ef989f646e5b/image.png" alt="">
나는 이렇게 패키지를 하나 만들어서 그안에 클래스로 만들었다.</p>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/32e2439e-5817-4de1-accf-a8bc30f759c0/image.png" alt="">
먼저 implements Validator를 해주고 메소드오버라이드를 해줍니다.</p>
<p>그럼 내가 유효성 검증하기 위핸 객체를 supports(Class&lt;?&gt; clazz) 메소드에 위 그림과 같이 return 해줍니다.</p>
<p>후에 validate함수에 Object형태로 들어온 target을 다시 초기화해줍니다.
예) ClientPaymentVO clientPaymentVO = (ClientPaymentVO)target;</p>
<ol start="4">
<li>컨트롤러에 선언해서 사용
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/bc3ba590-77f6-436a-bfa2-4346fd5973dc/image.png" alt=""></li>
</ol>
<p>validator에서 에러가 반환되면 errors.hasError 통해서 받게 되고 그럼 페이지 이동과 동시에 해당 view에는 메세지가 표시됩니다.</p>
<p>view페이지 form:error 태그 사용
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/a4a03e4f-6dfd-446f-b090-de30db5ea788/image.png" alt=""></p>
<p>카드번호 옆에 태그써주면 해당되는 메세지 글이 뜬다.</p>
<ol start="6">
<li>결과 페이지</li>
</ol>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/691b61f5-7dfd-43a6-a868-1536d8b9170a/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/9a73a55c-7eed-4923-b7ad-89f713a9cbd1/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/a49f2b2d-1c55-406a-9b36-019c8afe575a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[SPRING PROJECT_04 :: Interceptor]]></title>
            <link>https://velog.io/@dev-oyuns0716/SPRING-PROJECT04-Interceptor</link>
            <guid>https://velog.io/@dev-oyuns0716/SPRING-PROJECT04-Interceptor</guid>
            <pubDate>Sun, 30 Apr 2023 09:57:52 GMT</pubDate>
            <description><![CDATA[<h2 id="interceptor">Interceptor</h2>
<p>ex) Mypage를 누름 -&gt; 로그인 여부 판별
이 과정에서 session을 이용하면 controller에서 계속 session 값을 받아와야한다.
그래서 interceptor에 특정요청을 등록해두면 interceptor가 특정요청의 앞/뒤로 껴들어서 먼저 실행하는 것을 이용한다.</p>
<p>그림으로 살짝 이해를 해보자.</p>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/6ffe3142-cbb6-43ab-a7a4-e661519bad05/image.png" alt=""></p>
<p>특정요청시에만 controller 앞에 interceptor를 세워서 세션유무 판별을 해주면 편할 것이다.</p>
<p>☝🏻작성방법</p>
<h3 id="1-interceptor-클래스-만들어주기">1. interceptor 클래스 만들어주기</h3>
<p>✔️ 간단!</p>
<ol>
<li>HandlerInterceptorAdaptor 상속</li>
<li>@Override</li>
<li>세션여부 확인 후 true 반환/ false반환</li>
<li>true 반환시 정상작동 아니라면 로그인 페이지로 리다이렉트 후 false 반환</li>
</ol>
<h3 id="2-servletxml-파일에-interceptor-등록해주기">2. servlet.xml 파일에 interceptor 등록해주기</h3>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/03804646-1f40-4a0c-afc8-1f7cd15b6ad2/image.png" alt=""></p>
<p>mapping을 해줘서 interceptor 원하는 곳을 지정해주자!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[mac] 😡 cafe24 Spring mariaDB접속 오류 해결 ⛔️[Access denied for user 'USER'@'HOST' (using password: YES)]👀]]></title>
            <link>https://velog.io/@dev-oyuns0716/mac-cafe24-Spring-mariaDB%EC%A0%91%EC%86%8D-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-Access-denied-for-user-USERHOST-using-password-YES</link>
            <guid>https://velog.io/@dev-oyuns0716/mac-cafe24-Spring-mariaDB%EC%A0%91%EC%86%8D-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-Access-denied-for-user-USERHOST-using-password-YES</guid>
            <pubDate>Sun, 30 Apr 2023 09:55:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/de1b5f99-791d-4c31-ba22-199a26d888ad/image.png" alt=""></p>
<p>서론
스프링 미완성 프로젝트를 웹서버에 호스팅하기 위해(그다지 별도움은 안돼보임...) cafe24에 돈주고 웹서버를 하나 샀다.</p>
<p>아직 개념들이 제대로 정립되지 않았지만, 일단 해보는 마음으로 FTP filezilla 사용해서 플젝을 올렸는데 DB에서 많이 막혔다. 그 중 제일 화난 부분은 mariaDB 접속이 안되는 부분..</p>
<p>해결
본 오류는 권한문제, 비밀번호 틀림 등이 있지만 만약 모든걸 잘하고 있다면 그냥 호스팅하는 웹서버에 DB접속을 올바르게 하지 않고 있음이 클 것이다.</p>
<p>일단 DB접속을 잘하자!
✅ CheckList✍️</p>
<p>웹호스팅 서버의 주소를 올바르게 적었는가?
DB user를 카페24의 ID로 적었는가?
DB Password를 카페24의 비밀번호로 적었는가?
외부 ip가 접속가능하게끔 설정 해주었는가?(만약 이것이라면 웹호스팅 하는방법을 보시길(링크))
일단 나는 여기서 내 db user를 계속 치는 짓을 반복했다. 구글링을 하고 하고 해서 알아낸 사실은
&#39;cafe24에서 DB를 제공해준다&#39; 라는것</p>
<p>그림 참조
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/6b8f6946-549a-432a-8a21-518f0339bc02/image.png" alt=""></p>
<p>이렇게 접속설정을 해주자 그럼 외부 서버의 USER로 접속이 된다. database명은 cafe24 아이디로 고정이다.</p>
<p>Server Host : 웹 호스팅 주소 (초기값은 카페24아이디.cafe24.com)
Database : cafe24아이디
Username : cafe24아이디
password : cafe24비번
이클립스 DB 연동을 잘해주자!!!!
여기서도 꽤나 고생했다. 개념을 잘 잡아줘야한다.</p>
<p>📌 웹호스팅 서버에서 DB를 제공 = 내가 외부 서버의 DB에 접속하는 것 = localhost가 내 컴퓨터가 아님 = localhost는 내가 cafe24로 부터 부여받은 서버</p>
<p>내컴퓨터에서 톰캣으로 구동하려면 host를 cafe24주소로
<property name="url" value="jdbc:mariadb://cafe24아이디.cafe24.com:3306/cafe24아이디" />
웹 호스팅으로 하려면 localhost로 해야한다.(내서버에서 내서버의 DB로 접속하기때문에 localhost)
<property name="url" value="jdbc:mariadb://localhost:3306/cafe24아이디" />
그림참고
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/634e2deb-c669-4faa-b9d7-43a38bd2956d/image.png" alt=""></p>
<p>결론
처음부터 제대로된 개념을 갖고 뭔갈 해결한다면 매우 시간이 단축될 일이지만..
이렇게 돌고 돌고 돌아서 결국엔 개념을 이해하게 된다.
문제상황을 얼마나 빠르게 이해하냐가 중요한 거 같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[07.12.2021] :: 정보처리기사 합격 ::]]></title>
            <link>https://velog.io/@dev-oyuns0716/07.12.2021-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%A9%EA%B2%A9</link>
            <guid>https://velog.io/@dev-oyuns0716/07.12.2021-%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%ED%95%A9%EA%B2%A9</guid>
            <pubDate>Sun, 30 Apr 2023 09:53:05 GMT</pubDate>
            <description><![CDATA[<p>정보처리기사 합격한 날</p>
<p>정보처리기사를 합격하고 집에서 계속 쉬었다.
합격하고 지원이랑 같이 맛있는 고기도 먹고 편하게 시간보내다가 집에 왔다.
합격했다는 사실을 가답안 통해서 알았을 때 너무 기분이 좋았다. </p>
<p>그만큼 나름 스트레스도 받고, 성실하기도 했..나?
쉬면서 앞으로 코딩에 확실히 집중해보면 좋을 듯 하다.
빌드업한 시간만큼 꽤나 괜찮은 결과 있을 수 있을 것이다. 
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/7ac2b6c5-49b5-4ca1-ba9e-6472ee81f742/image.png" alt="">
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/14ad8f9a-acb2-408c-a147-56b786e543eb/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[정보처리기사] 실기 - SQL응용, 암기보단 쿼리문 작성 ]]></title>
            <link>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-SQL%EC%9D%91%EC%9A%A9-%EC%95%94%EA%B8%B0%EB%B3%B4%EB%8B%A8-%EC%BF%BC%EB%A6%AC%EB%AC%B8-%EC%9E%91%EC%84%B1</link>
            <guid>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%8B%A4%EA%B8%B0-SQL%EC%9D%91%EC%9A%A9-%EC%95%94%EA%B8%B0%EB%B3%B4%EB%8B%A8-%EC%BF%BC%EB%A6%AC%EB%AC%B8-%EC%9E%91%EC%84%B1</guid>
            <pubDate>Sun, 30 Apr 2023 09:51:29 GMT</pubDate>
            <description><![CDATA[<p>SQL 응용</p>
<p>sql응용에서 이론을 정리할 내용은 크게 없다. 
그래도 나는 개념에 대해선 전부 요약정리를 해놨다. 다른 단원에 비해서는 개념정리가 반 정도로 적다.
이유는 쿼리문을 작성하는게 가장 중요하기 때문.</p>
<p>sql쿼리문 작성 문제는 꼭 하나쯤은 나오기 떄문에 쿼리문을 작성할 수 있는 능력을 갖추는게 중요하다.  </p>
<p>나는 웹서비스 관련 프로젝트를 해본적이 있어서 sql기본 쿼리문작성에 이해도가 높은 상태였기 때문에</p>
<p>크게 공부를 하지 않고도 바로 공부할 수 있어 좋았다. 
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/15fd8675-b4dc-474c-a236-bdfdc6ffe9f8/image.png" alt=""></p>
<p>sql 작성문제풀이 ㅠㅠ
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/df84440e-1587-4830-84db-7d7c25e13a41/image.png" alt=""></p>
<p>sql핵심단어요약정리</p>
<ul>
<li>sql응용 공부 결과물 - 
핵심용어정리 + sql쿼리문작성문제풀이  </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[정보처리기사] 서버프로그램구현 - 핵심단어정리]]></title>
            <link>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%84%9C%EB%B2%84%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EA%B5%AC%ED%98%84-%ED%95%B5%EC%8B%AC%EB%8B%A8%EC%96%B4%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%84%9C%EB%B2%84%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EA%B5%AC%ED%98%84-%ED%95%B5%EC%8B%AC%EB%8B%A8%EC%96%B4%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 30 Apr 2023 09:50:20 GMT</pubDate>
            <description><![CDATA[<p>서버프로그램구현에서 가장 중요한것? </p>
<p>바로 결합도와 응집도</p>
<p>모듈의 결합도는 낮게 응집도는 높게 해야한다. 
걍 모듈은 오직 단 하나의 기능을 수행하는 독립된 실체것인데...
모듈끼리 결합도가 높으면 수정, 개발, 유지보수가 힘들것.
반대로 응집도가 높으면 독립된 하나의 기능을 수행하기 수월할것이다.</p>
<p>서버프로그램구현은 이 둘위주로 개념정리하면 금방 정리할 수 있어 좋았다. 
<img src="https://velog.velcdn.com/images/dev-oyuns0716/post/789da665-b00c-43c2-96a3-4dc6858bc437/image.png" alt=""></p>
<p>결합도 초성암기 </p>
<p>수제비 정보처리기사 책</p>
<p>&lt;내공 외제 스자&gt; - &quot;내부공사는 외제를 쓰자&quot;</p>
<p>내용결합도 - 공유결합도 - 외부결합도 - 제어결합도 - 스탬프결합도 - 자료결합도(데이터)</p>
<p>----&gt; 방향으로 높아짐</p>
<p>응집도 초성암기</p>
<p>수제비 정보처리기사 책</p>
<p>&lt;우논시절통순기&gt; - &quot;우리가 논 시절 통은 순기였다&quot;</p>
<p>우연적응집도 - 논리적응집도 - 시간적응집도 - 절차적응집도 - 통신적응집도 - 순차적응집도 - 기능적응집도 </p>
<p>-----&gt; 방향으로 높아짐 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[정보처리기사] 소프트웨어개발보안구현 - 용어중요!]]></title>
            <link>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EA%B0%9C%EB%B0%9C%EB%B3%B4%EC%95%88%EA%B5%AC%ED%98%84-%EC%9A%A9%EC%96%B4%EC%A4%91%EC%9A%94</link>
            <guid>https://velog.io/@dev-oyuns0716/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4%EA%B0%9C%EB%B0%9C%EB%B3%B4%EC%95%88%EA%B5%AC%ED%98%84-%EC%9A%A9%EC%96%B4%EC%A4%91%EC%9A%94</guid>
            <pubDate>Sun, 30 Apr 2023 09:48:50 GMT</pubDate>
            <description><![CDATA[<p>여기는 그냥 단어 외우기 구간이다...
정말 화나는건 연관성이 없는 단어들을 그냥 생으로 외워야한다.</p>
<p>그래도 한번만 외우면 머리굴릴 일은 없어보인다.</p>
<p><img src="https://velog.velcdn.com/images/dev-oyuns0716/post/5498dea9-f976-4083-9e85-9f5c33d6bbd2/image.png" alt=""></p>
<p>중요하게 봐야할것은</p>
<p>xss/ sql삽입 그리고 자잘한 보안관련 용어이다. </p>
<p>어쨋든 단답형이라도 토시하나 틀리면 오답이니 하나를 정확하게 외우는게 포인트일듯 하다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[npm이란❓ npm 개념 정리😊]]></title>
            <link>https://velog.io/@dev-oyuns0716/npm%EC%9D%B4%EB%9E%80-npm-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@dev-oyuns0716/npm%EC%9D%B4%EB%9E%80-npm-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sun, 29 Jan 2023 11:45:32 GMT</pubDate>
            <description><![CDATA[<h3 id="npm">npm</h3>
<ul>
<li>nodejs를 설치하면 자동으로 설치된다.</li>
<li>nodejs는 브라우저가 아닌 운영체제에서 자바스크립트를 실행할 수 있도록 개발된 소프트웨어 입니다.</li>
<li>운영체제에서 자바스크립트를 실행하는데 다양한 패키지들을 npm명령어로 설치하고 사용할 수 있습니다.</li>
<li>패키지 관리자를 통해 다양한 소프트웨어를 설치하고 사용함으로써 개발 효율성을 높일 수 있습니다.</li>
</ul>
<h3 id="패키지관리자">패키지관리자</h3>
<ul>
<li>소프트웨어에 사용되는 프로그램을 관리하는 프로그램. </li>
<li>의존성이 필요한 다른 패키지에 대해 경고하고 같이 설치해 편리하다.</li>
<li>소프트웨어 개발에 쓰이는 외부 라이브러리들을 패키지관리자를 통해 관리하여 설치, 업데이트, 삭제 등 유지보수를 도와준다.</li>
<li>그 예가 npm, yarn이다.</li>
</ul>
<h3 id="npm의-단점">npm의 단점</h3>
<ul>
<li>패키지 중복설치</li>
<li>너무 많은 패키지들이 설치돼 유용한 패키지를 찾기 힘들다.</li>
<li>패키지이름을 잘못입력하는 개발자를 노려 해킹하는 경우도 있다.</li>
<li>대안으로는 yarn이 있다.</li>
</ul>
<h3 id="yarn">yarn</h3>
<ul>
<li>중복패키지 발견시 링크방식으로 해결한다.</li>
<li>workspace기능을 통한 다중모듈이 요구되는 국내환경에서 많이 사용.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트와 타입스크립트의 차이점👉]]></title>
            <link>https://velog.io/@dev-oyuns0716/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%99%80-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</link>
            <guid>https://velog.io/@dev-oyuns0716/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%99%80-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90</guid>
            <pubDate>Sun, 29 Jan 2023 10:48:17 GMT</pubDate>
            <description><![CDATA[<h3 id="javascript와-typescript">Javascript와 Typescript</h3>
<p>다양한 분야에 쓰이는 자바스크립트 
타입스크립트는 왜 나왔을까?</p>
<ul>
<li>타입스크립트는 자바스크립트의 슈퍼셋(상위호환)
따라서, 타입스크립트는 자바스크립트의 모든기능을 제공한다. </li>
<li>웹에서 실행되는 거의 유일한 언어가 자바스크립트이기 때문에
공생하는 전략을 취하는 타입스크립트</li>
<li>타입 = 데이터 타입을 명시 👉 명시적인 데이터 유형 설명.
자바스크립트는 제공하지 못한다.</li>
<li>타입스크립트를 배우는건 자바스크립트를 배우는것과 일맥상통 + 타입스크립트만의 기능<pre><code class="language-javascript">let age = 10;
//변수이름에 따라 유추... 나이구나...
let x = 10;
//유추가 안됨
let weight = 80;
//weight가 숫자인지 문자인지는 모른다.
let weight:number = 80;
//typescript는 위 방식으로 데이터 타입을 숫자 유형으로 명시해줍니다.
//콜론(:)뒤에 데이터 타입 설명
let height:number = 176;
//위와 같은 경우는 단위를 모른다. 
type Centimeter = number;
//타입을 따로 명시 해준 뒤, 센티미터는 넘버!
let height:Centimeter = 176;
//그 타입을 변수에 명시해줄 수 있습니다.
type RainbowColor = &#39;red&#39;|&#39;orange&#39;|&#39;yellow&#39;|&#39;green&#39;|&#39;blue&#39;|&#39;indigo&#39;|&#39;violet&#39;;
let color: RainbowColor = &#39;orange&#39;;
//컬러의 타입은 레인보우컬러가 됩니다.
color = &#39;black&#39; //=&gt; 이렇게 하면 color의 타입을 RainbowColor로 명시해줬기 때문에 오류가 납니다. 7가지 문자열에 black이 포함되지 않기 때문입니다.</code></pre>
코드가 명확해지며, 코드를 이해하는 데 도움이 돼 버그를 줄이고 수정하는데 용이합니다.</li>
</ul>
<p>이런작업들은 typescript가 transfiler이기 때문입니다. 트랜스파일러는 상, 하위 버전의 자바스크립트가 호환될 수 있도록 언어를 변환해주는 것을 말합니다.</p>
<p>기존 babel과 같은 도구가 있었어서 타입스크립트가 이질감이 적었습니다.
이 외에도 표현할 수 있는 방식이 더 많기 때문에 많은 회사에서 타입스크립트를 채택합니다.</p>
<blockquote>
<p>출처 : 김민태의 프론트엔드 아카데미</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[신입개발자인 내가 배우는 것들📖]]></title>
            <link>https://velog.io/@dev-oyuns0716/%ED%9A%8C%EC%82%AC-%EB%8B%A4%EB%8B%88%EB%A9%B4%EC%84%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%83</link>
            <guid>https://velog.io/@dev-oyuns0716/%ED%9A%8C%EC%82%AC-%EB%8B%A4%EB%8B%88%EB%A9%B4%EC%84%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EA%B2%83</guid>
            <pubDate>Thu, 26 Jan 2023 13:27:17 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>❓ 적는 이유<br>솔직하게 지금 회사 다니면서 이직하고 싶다는 생각만 하고 있다.
지금 회사가 도움이 안된다고 생각하기 때문이다.
하지만 어딘가에 현 회사를 경력으로 써야한다면, 현재 회사에서 배운 점이 무엇인지 어필해야 한다.
그래서 생각날 때마다 블로그에 적기로 했다.</p>
</blockquote>
<h3 id="회사-다니면서-배우고-있는-것">회사 다니면서 배우고 있는 것</h3>
<ol>
<li>확실하게 알고 코드리뷰하기<ul>
<li>내가 적어도 로직과 코드를 100% 이해하고 있다면, 모르는 내용에 대한 질문이 나와도 임기응변이 가능하다. 50%만 아는 상태에서 팀장과 코드리뷰하게 되면 참사날 가능성이 많다. 팀장의 시간이 내 시간보다 더 비싸기 때문에 코드리뷰할 때는 신중하게 해야하고, 확실히 파악했다는 판단이 설 때 해야한다.</li>
</ul>
</li>
<li>끝까지 디버깅하기<ul>
<li>초반에 많이 했던 실수가 끝까지 디버깅을 안하고 어느정도 했을 때 답답한 마음에 선배 혹은 팀장에게 질문하곤 했다. 디버깅을 조금만 더 찍어보면 알 수 있는 내용이었는데 끝까지 파악을 하지 않았던 것. 뭐든 물어보기 전에 내가 할 수 있는 선에서 다 해보고 그것을 정리한 후에도 답이 없을 때 자문을 구해야 답하는 사람도 편하다.</li>
</ul>
</li>
<li>개발 내용 노션에 정리하기 <ul>
<li>어떤 이슈에 대해 개발 내용을 노션에 차곡차곡 정리해 놓으면 똑같은 이슈가 발생했을 때 보다 빠르게 대처가 가능하다. 뿐만 아니라, 팀원들과 해당사항을 공유할 때 노션 페이지를 공유하면 내 개발 시간을 줄여가며 설명하지 않아도 돼서 효율적이다.</li>
</ul>
</li>
<li>무조건 긍정적으로 대답하기<ul>
<li>가장 중요할지 모른다. 개발은 정말 &#39;하면된다&#39;의 예시가 아닐까... 개발은 안되는게 없는 것 같다. 그런의미에서 동료가 무엇을 요청할 때, 내 기준 정말 안될 것 같아도 일단 해보겠다고 대답해야한다. 된다고 호언장담을 하라는게 아니라 긍정적인 시그널을 주는 대답을 해야한다. 그래야 안되더라도 이해한다.</li>
</ul>
</li>
<li>타부서/ 유관부서와 정확히 이야기 하기<ul>
<li>말끝을 흐리지 말자. 말끝을 흐리는 이유가 뭘까? 자신감이 없어서다. 말끝 흐린다고 내가 하는 말 내용 달라지지 않는다. 그냥 틀려도 자신있게 말하고 알려주는 거 듣자. 또, 이슈가 생겼을 때 설계자 혹은 요청자와 바로바로 소통해서 문제가 지속되지 않도록 해야한다. 혼자 고민해봤자 시간만 길어지고 납기요청 지나면 욕먹는다. </li>
</ul>
</li>
<li>이슈 파악 후 공유 빠르게 하기<ul>
<li>이슈를 파악했을 때, 이게 내 선에서 가능한 것인지 도움이 필요한지 파악하고 윗선에 공유를 해야할지 선택해야한다. 또 무슨 일인지는 알지만, 너무 비효율, 비합리적인 건이라면 윗 선에 이슈를 공유하고 도움을 요청하도록 하자. 바로 실행하기보다는 이슈를 정확히 파악하고 행동으로 옮길 수 있도록 하자.</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[지금 다니고 있는 회사가 내 커리어에 도움이 될까?]]></title>
            <link>https://velog.io/@dev-oyuns0716/%EC%A7%80%EA%B8%88-%EB%8B%A4%EB%8B%88%EA%B3%A0-%EC%9E%88%EB%8A%94-%ED%9A%8C%EC%82%AC%EA%B0%80-%EB%82%B4-%EC%BB%A4%EB%A6%AC%EC%96%B4%EC%97%90-%EB%8F%84%EC%9B%80%EC%9D%B4-%EB%90%A0%EA%B9%8C</link>
            <guid>https://velog.io/@dev-oyuns0716/%EC%A7%80%EA%B8%88-%EB%8B%A4%EB%8B%88%EA%B3%A0-%EC%9E%88%EB%8A%94-%ED%9A%8C%EC%82%AC%EA%B0%80-%EB%82%B4-%EC%BB%A4%EB%A6%AC%EC%96%B4%EC%97%90-%EB%8F%84%EC%9B%80%EC%9D%B4-%EB%90%A0%EA%B9%8C</guid>
            <pubDate>Wed, 18 Jan 2023 13:50:54 GMT</pubDate>
            <description><![CDATA[<h3 id="글을-쓰는-이유❓">글을 쓰는 이유❓</h3>
<p>저는 지금 1년차 주니어 개발자 입니다. 
입사한지 이제 6개월 밖에 안됐는데 커리어가 쌓이는건지 뭔지 도무지 감이 안잡힙니다.
그래서 이 회사에서 내가 어떤 일을 하는지 그게 내 개발인생에 도움이 될련지 알아보려고 합니다. 
혹 우연히 이 글을 읽는다면, 댓글로 도움 좀 주십사~ 합니다.</p>
<h3 id="소개">소개</h3>
<ol>
<li>나이<ul>
<li>1992년생 32살 😢</li>
</ul>
</li>
<li>재직중인 회사 🏢<ul>
<li>erp개발회사</li>
</ul>
</li>
</ol>
<h3 id="경험--기술">경험 &amp; 기술</h3>
<ol>
<li>기술 <ul>
<li>스프링부트, JS, 자체개발툴</li>
</ul>
</li>
<li>경험<ul>
<li>erp개발을 하고 있다. erp는 전사적 자원관리로 회사의 자원관리를 비즈니스로직에 맞게 웹으로 구현해야한다. 한번 서비스 개발이 이뤄지면 유지보수를 하거나, 새로운 메뉴화면을 추가하는 일이 주를 이룬다. </li>
<li>서비스 api 개발 및 쿼리작성</li>
<li>html, js를 활용한 화면개발</li>
<li>git, gitlab을 통한 코드관리</li>
<li>jenkins 배포</li>
</ul>
</li>
<li>경험에 대해 느낀 점<ul>
<li>비즈니스 로직을 이해하면서 개발하는 능력 향상 -&gt; 타부서, 유관부서와 소통할 일이 많아진다. ERP업계 내에서 이직한다면 경쟁력이 있다.</li>
<li>이미 구축된 대형 서비스에서 발생하는 에러들에 대한 유지보수</li>
<li>webapp구축 및 공통 서비스, JS에 대해서는 개발해볼 수 있는 경험이 없다.</li>
<li>jenkins도 배포 버튼만 누를뿐, 개발단계에서 경험해볼 수 있는 CI/CD경험이 없다.</li>
<li>무한 api/뷰 개발...</li>
<li>교육/세미나 등의 기회 부족<h3 id="내가-원하는-회사">내가 원하는 회사</h3>
erp개발자가 나쁘다고 생각하지 않습니다. 한 직장에서 오랫동안 일하며 경쟁력을 갖추고자 하는 사람들에게 erp개발은 매력적이라고 생각합니다. erp 비즈니스 로직이 워낙 어려우니까요...</li>
</ul>
</li>
</ol>
<p>하지만, 제가 하고 싶은 일은 재밌고 창의적인 서비스를 개발하고 런칭하며, 유지보수하는 일 입니다. 진정 그게 하고 싶어서 늦은 나이에도 감히? 개발을 시작했습니다. 비전공자에 머리도 똑똑하지 않은데도요.
그리고 자체 개발 프로젝트를 하다보면 누군가에게 교육을 받을 일도, 교육할 일도 생길겁니다.
또한 공유해야할 이슈들도 정말 많은데 시스템이 조직적으로 잡혀 있다면, 거대한 코드 덩어리 속에서 몇 시간을 헤메는 일은 없을 겁니다.
사내 세미나, 교육, 발표, 코드리뷰 등으로 개발자 역량 강화, 동기부여하는 적극적인 조직에 몸담고 싶습니다.</p>
<p>저는 가고 싶은 회사를 3가지 기준으로 정하려 합니다.</p>
<blockquote>
<ol>
<li>조직적인 개발 시스템을 갖춘 회사</li>
<li>자사 서비스를 꾸준히 개발하는 회사</li>
<li>사우들간 적극적인 소통이 이뤄지는 회사</li>
</ol>
</blockquote>
<h3 id="내가-원하는-개발자-커리어">내가 원하는 개발자 커리어</h3>
<p>가고 싶은 회사는 얼추 각이 잡혔습니다. 아마 세가지 원칙을 모두 충족하는 회사를 간다는건 꽤나 어려운 일일지 싶습니다... 커리어를 잘 쌓고 실력을 충분히 증명해도 갈까 말까일 듯 합니다.
그래도 가고 싶은 회사. 그 회사가 서술하는 개발자 요구능력이 제가 원하는 개발자 커리어일 것 입니다.
따라서 제가 평소 가고 싶었던 회사의 채용공고를 보며 커리어개발에 대해 생각해 보겠습니다.</p>
<blockquote>
<p>React, Vue, Angular 등 SPA 프레임워크 사용에 능숙하신 분.
HTML, CSS, JavaScript에 대한 이해가 깊은 분.
UI/UX에 대해 높은 가치를 두고 있는 분.
Git 등의 분산 버전 관리 시스템 이용에 능숙한 분.</p>
</blockquote>
<blockquote>
<p>우대사항
TypeScript, Flow를 이용한 JavaScript 정적 타입 분석 경험이 있는 분이.
서버 사이드 렌더링(SSR) 및 모바일 앱 내 웹앱 개발 경험이 있는 분.
반응형 디자인, 웹 접근성, 웹 표준을 고려한 UI 개발 경험이 있는 분.
테스트 및 배포 자동화 경험이 있는 분.
Webpack 등 모듈 번들러를 능숙하게 사용하시는 분.</p>
</blockquote>
<blockquote>
<p>기술
코어: React, TypeScript, Next.js
상태 관리: React-Query, Recoil
스타일링: Emotion
패키지 매니저: Yarn Berry
빌드: Webpack, ESBuild, SWC, Babel
CI/CD: GitHub Actions</p>
</blockquote>
<p>바라는 거 무진장 많습니다. 이런 정도의 실력이면 학부 내내 프로젝트를 했거나, 현업에서 이 비슷한 업무를 맡으며 역량을 키워온 것이겠죠...? 
주니어 1년차라 정말 몰라도 너무 모릅니다... 공고보니 또 한숨만 나오네요🫥
그래도 어쩌겠습니까...? 어딘가에 길이 있겠죠. </p>
<p>일단 저기서 저는 <code>React
, HTML, CSS, JS, GIT</code> 을 사용해본 경험이 있습니다. 또한 <code>TypeScript</code>를 독학하고있는 중이며 <code>웹앱</code>개발에 아주 큰 관심이 있습니다. 또한 개인 프로젝트로 <code>하이브리드 웹/앱</code>을 만들고 있습니다.</p>
<p>제가 원하는 회사의 요구능력을 올바른 커리어루트로 삼고 공부 및 취업을 하려고 합니다. 바로 목표한 회사를 못간다면... React 프레임웍을 사용하고 웹앱을 개발하는 팀의 팀원으로 빠르게 이직을 해보려 합니다.
이게 맞는 길일진 모르겠지만, 적어도 꿈에 조금은 가까워 지겠죠.</p>
<h3 id="마치며">마치며...</h3>
<p>커리어에 대한 제 사고흐름은 이렇습니다.</p>
<ol>
<li>내가 하고 싶은 개발은 무엇인가?</li>
<li>1의 가치를 표방하는 회사는 어떤 회사인가? </li>
<li>그 회사가 나에게 요구하는 역량이 무엇인가?</li>
</ol>
<p><strong><em>그것이 내가 쌓아야할 유의미한 커리어다.</em></strong></p>
<p>이렇게 정리한다면 누구에게나 좋은 커리어는 없고, 누구에게나 나쁠 커리어는 없다고 생각합니다. 본인이 원하는 길을 정하고 그에 맞는 커리어를 쌓는게 중요하다고 생각하니까요. </p>
<blockquote>
<p>흔히, SI/SM 가지마라, 스타트업 가지마라, 금융IT가지마라, 솔루션 가지마라... 등등 조언들이 난무합니다. 그러니 말이 다 다르더군요..
누구는 SI도 좋다하고 누구는 스타트업 가서 서비스 개발을 해보라하고...</p>
</blockquote>
<p>그러다 보니 아! 이건 정말 답이 없는거구나! 라는 생각이 들었습니다. 어딜가든 내 가치관, 취향, 가치실현에 충족하는 업이 무엇인지 찾아보는게 우선이라고 생각 했습니다. 그리고 그에 맞는 커리어가 무엇인지 저는 제 나름대로의 길을 세웠습니다.</p>
<p>주니어 6개월 차 개발자의 짧은 생각으로 정리해본 바 입니다. 선배님들 혹시 이 글을 보시게 된다면 뭔가 단단히 착각하고 있네? 라는 생각이 들 수도 있겠습니다. 제가 n년차 개발자가 되고 이 글을 다시보게 되면 그 때의 제가 이 글을 회의적으로 볼 수도 있겠고요. </p>
<p>혹, 이글을 읽는다면 생각들은 어떠하신지 댓글로 알려주세요. 조언도 좋고, 공감도 좋고, 응원도 좋고, 일침도 좋습니다. 같은 꿈을 꾸고 있잖아요! </p>
]]></description>
        </item>
    </channel>
</rss>