<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>h_zee.log</title>
        <link>https://velog.io/</link>
        <description>하루하루 성실하게 (비공개 블로그입니다-일부공개)</description>
        <lastBuildDate>Tue, 11 Jun 2024 14:24:33 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. h_zee.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/h_zee" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[IT블로그-과학기술정보통신부]]]></title>
            <link>https://velog.io/@h_zee/IT%EB%89%B4%EC%8A%A4-</link>
            <guid>https://velog.io/@h_zee/IT%EB%89%B4%EC%8A%A4-</guid>
            <pubDate>Tue, 11 Jun 2024 14:24:33 GMT</pubDate>
            <description><![CDATA[<p><a href="https://blog.naver.com/with_msip">과학기술정보통신부 블로그</a></p>
<p>오랜만에 IT 뉴스&amp;블로그 시리즈를 포스팅하면서, IT 관련 최신 트렌드를 살펴보고 IT 지식을 쌓을 수 있는 블로그를 하나 소개하려합니다.</p>
<p>바로 과학기술정보통신부에서 운영하는 블로그로 링크를 참고하시면 해당 블로그로 이동하실 수 있습니다!</p>
<p>과학기술정보통신부에서는 최신 과학기술 및 ICT에 관한 여러정보들을 블로그를 통해 제공하고 있습니다.</p>
<p>카테고리는 아래와 같이 총 5개로 이루어져있습니다.</p>
<blockquote>
<p>정책뉴스, 이달의 과학기술인, 과학기술, ICT, 일상 속 과학</p>
</blockquote>
<p>블로그를 통해 정책뉴스와 이달의 과학기술인을 살펴 볼 수 있으며, 과학기술 및 ICT글을 통해 최신트렌드를 확인하고, 지식을 쌓을 수 있습니다. </p>
<p>또한, 흥미로운 주제들로 이루어진 일상 속 과학 글을 통해 유용한 정보들을 많이 얻을 수 있습니다.</p>
<p>PT면접을 준비하면서 IT 관련 최신트렌드를 파악하고, 꾸준히 IT뉴스를 접하는 것의 중요성에 대해 인지하면서 매주 두 번 이상은 다양한 글을 접해보려고 노력 중인데 저와 같이 다양한 IT 관련 소식을 듣고 싶다면 과학기술정보통신부에서 운영하는 블로그를 방문하는 것은 어떨까 싶습니다..!   </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[IntelliJ Setting #1]]></title>
            <link>https://velog.io/@h_zee/IntelliJ-Setting-1</link>
            <guid>https://velog.io/@h_zee/IntelliJ-Setting-1</guid>
            <pubDate>Fri, 24 May 2024 18:00:51 GMT</pubDate>
            <description><![CDATA[<p>알아두면 좋을 IntelliJ Setting #1</p>
<p>📖 Ensure every saved file ends with a line break</p>
<ul>
<li>파일 마지막 새줄 문자가 없는 경우, 자동으로 개행 추가 </li>
</ul>
<p><img src="https://velog.velcdn.com/images/h_zee/post/babd17bf-3aa0-433b-b25c-b350b1f2d93d/image.png" alt=""></p>
<p>📖 Reformat code, Optimize imports</p>
<ul>
<li>코드 저장 시, formatter 동작 및 import 정리 설정.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/h_zee/post/95c249b8-237e-435c-a01c-3e69c188bee3/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot_ORM(JPA,JPQL)]]></title>
            <link>https://velog.io/@h_zee/SpringbootORMJPAJPQL</link>
            <guid>https://velog.io/@h_zee/SpringbootORMJPAJPQL</guid>
            <pubDate>Fri, 12 Apr 2024 18:27:42 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>ORM </p>
</blockquote>
<p>📖 ORM</p>
<ul>
<li>Object Relational Mapping</li>
<li>자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법.</li>
</ul>
<p>데이터베이스에 있는 값을 자바에서 사용하려면, 여러 방법을 찾아 공부를 해야합니다. 
보통은 SQL을 사용하는 경우가 많지만, SQL을 사용한 경험이 없는 사람은 SQL를 새로 공부해야되는 부담이 생깁니다. </p>
<p>이를 해결하기 위한 방법 중 하나가 ORM 입니다.
ORM을 사용하면, 데이터베이스의 값을 객체처럼 사용할 수 있어 원하는 값을 가져오기가 수월해집니다.</p>
<p>📖 ORM 의 장점</p>
<ul>
<li>SQL 을 공부하여 직접 작성하지 않아도, 사용하는 언어로 데이터베이스에 접근할 수 있습니다. 
따라서, SQL지식의 필요성이 줄어들고 개발 프로세스가 간소화될 수 있습니다. </li>
<li>객체지향적으로 코드를 작성할 수 있습니다.</li>
<li>데이터베이스 시스템에 대한 종속성이 줄어듭니다.</li>
</ul>
<p>📖 ORM 의 단점</p>
<ul>
<li>프로젝트의 복잡성이 높거나 무거운 쿼리는 사용 난이도가 올라가거나 ORM으로 해결이 어려운 경우가 있습니다.</li>
</ul>
<p>📖 ORM 종류</p>
<p>ORM에는 다양한 종류가 있습니다. 그 중 몇개만 예시를 들어보자면, 다음과 같습니다.</p>
<ul>
<li>Flask : SQLAlchemy</li>
<li>Django : 내장 ORM</li>
<li>JAVA : Hybernate, JPA</li>
<li>Node.js : Sequalize</li>
</ul>
<blockquote>
<p>JPA</p>
</blockquote>
<p>📖 JPA</p>
<ul>
<li>Java Persistence API</li>
<li>자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스.</li>
<li>자바 객체와 데이터베이스를 연결해 데이터를 관리.</li>
</ul>
<p>JPA는 &#39;자바에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스&#39; 이므로, 실제로 사용하기 위해서는 ORM 프레임워크를 추가로 선택해야됩니다. ORM 프레임워크에는 다양한 종류가 있으나, 주로 &#39;Hibernate&#39;를 많이 사용하는 편입니다.</p>
<p>📖 Hibernate</p>
<ul>
<li>JPA의 인터페이스를 구현.</li>
<li>내부적으로는 JDBC API를 사용합니다.</li>
</ul>
<blockquote>
<p>JPQL</p>
</blockquote>
<p>📖 JPQL</p>
<p>JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공합니다.</p>
<ul>
<li>Jakarta Persistence Query Language</li>
<li>데이터베이스에 저장된 엔티티를 쿼리하는데 사용.</li>
<li>데이터베이스 테이블이 아닌, 엔티티 객체를 대상으로 쿼리.</li>
<li>SQL과 문법이 유사.</li>
</ul>
<blockquote>
<p>JPA VS JPQL</p>
</blockquote>
<p>JPA는 기본적인 CRUD 작업에 용이하지만, 조인과 서브쿼리 등에는 취약하다는 문제점이 있습니다. 
이에 JPQL 을 직접 만들어 처리하여 이 문제를 해결할 수 있습니다.</p>
<p>하지만, JPQL 은 기본 문자열로 작성되기 때문에, 컴파일 시 에러를 발생시키지 않는다는 문제점이 있습니다. 또한, 동적으로 쿼리언어를 작성하는 데 효율적이지 못합니다.</p>
<p>따라서, JPA 와 JPQL을 특징을 정확히 공부하여, 적절히 사용하는 것이 중요합니다!!</p>
<hr>
<p>◼ 참고자료</p>
<ul>
<li>스프링 부트 3 백엔드 개발자 되기</li>
<li><a href="https://why-dev.tistory.com/284">https://why-dev.tistory.com/284</a></li>
<li><a href="https://velog.io/@mpfo0106/ORMOject-Relational-Mapping-Framework-%EB%9E%80">https://velog.io/@mpfo0106/ORMOject-Relational-Mapping-Framework-%EB%9E%80</a></li>
<li><a href="https://ittrue.tistory.com/270">https://ittrue.tistory.com/270</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot_testcode]]></title>
            <link>https://velog.io/@h_zee/Springboottestcode</link>
            <guid>https://velog.io/@h_zee/Springboottestcode</guid>
            <pubDate>Thu, 11 Apr 2024 07:19:19 GMT</pubDate>
            <description><![CDATA[<p>IntelliJ에서 테스트코드를 작성할 때, <strong>JUnit</strong> 과 <strong>AssertJ</strong>를 많이 사용한다.</p>
<p>그래서 둘의 특징을 한 번 살펴보려한다.</p>
<blockquote>
<p>JUnit</p>
</blockquote>
<p>📖 JUnit 이란?</p>
<p>자바 언어를 위한 단위 테스트 프레임워크.
(단위테스트 : 작성한 코드가 의도대로 작동하는지 작은 단위 (ex.메서드) 로 검증하는 것 )</p>
<p>📖 JUnit 특징</p>
<ul>
<li>테스트 방식을 구분할 수 있는 애너테이션을 제공한다.</li>
<li>@Test 애너테이션으로 메서드를 호출할 때마다 새 인스턴스를 생성하고 독립테스트가 가능하다.</li>
<li>어설션 메서드를 제공한다.</li>
<li>직관적이다.</li>
<li>테스트 코드를 작성하는 데 소요되는 시간이 적다.</li>
<li>자동실행되며, 자체 결과를 확인하고 즉각적인 피드백을 제공해준다.</li>
</ul>
<blockquote>
<p>AssertJ</p>
</blockquote>
<p>📖 AssertJ 란?</p>
<p>jUnit과 함께 사용하여 검증문의 가독성을 높여주는 라이브러리.</p>
<p>📖 AssertJ 특징</p>
<p><strong>1) 가독성이 높다.</strong></p>
<pre><code># JUnit 
Assertions.assertEquals(a,b);

# AssertJ
assertThat(a).isEqualTo(b);</code></pre><p>Junit 에서 제공하는 메서드를 사용한 코드를 보면, 어느것이 기댓값이고 어느것이 비교값인지 잘 구분이 되지 않는다. </p>
<p>지금은 이것이 별로 문제라고 생각되지 않을 수 있지만, 대규모 프로젝트를 진행하다보면 명확하지 않은 코드가 실수로 이어질 수 있기때문에 <strong>가독성을 높이는 것은 매우 중요한 문제</strong>라고 할 수 있다.</p>
<p>이러한 문제를 해결할 때, AssertJ 가 그 방법이 될 수 있다.</p>
<p>AssertJ 에서 제공하는 메서드를 사용한 코드를 보면, a가 비교값이고 b가 기댓값임을 쉽게 유추할 수 있다.</p>
<p>이와같이 AssertJ를 사용하면 가독성을 높일 수 있다.</p>
<p>✏ AssertJ는 다양한 메서드들을 제공한다. 다음은 자주 사용되는 메서드들이다.</p>
<ul>
<li>isEqualTo(A) / isNotEqualTo(A)</li>
<li>contains(A) / doesNotContain(A)</li>
<li>startsWith(A) / endsWith(A)</li>
<li>isEmpty() / isNotEmpty()</li>
<li>isPositive() / isNegative()</li>
</ul>
<p><strong>2) 실패 메시지를 자세하게 보여준다.</strong></p>
<p>실패 메시지를 자세하게 보여주기 때문에, 원인을 파악하는데 용이하다.</p>
<p><strong>3) 다양한 검증 메서드를 제공한다.</strong></p>
<p>JUnit은 비교적 간단한 메서드만을 제공해준다. 하지만, AssertJ 의 경우 다양한 메서드를 제공해주어 코드를 쉽게 작성할 수 있게 해주고, 가독성을 높여준다.</p>
<p>✨ 이 외에도 다양한 특징들이 존재한다. 앞으로 <strong>JUnit</strong> 과 <strong>AssertJ</strong> 의 특징을 정확히 알고 사용해야겠다!</p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
<hr>
<p>◼ 참고자료</p>
<ul>
<li>스프링 부트 3 백엔드 개발자 되기</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot_starter]]></title>
            <link>https://velog.io/@h_zee/Springbootstarter</link>
            <guid>https://velog.io/@h_zee/Springbootstarter</guid>
            <pubDate>Thu, 11 Apr 2024 06:03:07 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Springboot_starter</p>
</blockquote>
<ul>
<li>&quot;의존성 group&quot; (의존성이 모여있는 group)</li>
<li>필요한 기능을 간편하게 설정할 수 있다.</li>
<li>명명규칙 : *<em>spring-boot-starter-&quot;작업유형&quot; *</em></li>
</ul>
<p>cf)</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/8f8a0326-a363-44cb-a5e9-572b34fc7c39/image.png" alt=""></p>
<p>아래 링크를 통해 들어가면, spring.io 에서 제공해주는 가이드를 확인하여 공부할 수 있다.</p>
<p>📌 <a href="https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters">springboot_starter</a></p>
<blockquote>
<p>자주 사용되는 Springboot_starter</p>
</blockquote>
<p>각 스타터가 어떠한 역할을 하는지 정확히 알고 사용하도록 노력하자..!</p>
<ul>
<li>spring-boot-starter</li>
<li>spring-boot-starter-web</li>
<li>spring-boot-starter-test</li>
<li>spring-boot-starter-validation</li>
<li>spring-boot-starter-actuator</li>
<li>spring-boot-stater-data-jpa</li>
<li>spring-boot-starter-security</li>
<li>spring-boot-starter-oauth2</li>
<li>spring-boot-starter-aop</li>
<li>spring-boot-starter-jdbc</li>
<li>spring-boot-starter-thymeleaf</li>
</ul>
<blockquote>
<p>Springboot_starter_test</p>
</blockquote>
<p>Spring-boot-starter-test 에는 테스트를 위한 도구가 들어있다.</p>
<p>cf)</p>
<ul>
<li>JUnit</li>
<li>Spring Test &amp; Spring Boot Test</li>
<li>Mockito</li>
<li>AssertJ</li>
<li>JSONassert</li>
<li>JsonPath</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot_import]]></title>
            <link>https://velog.io/@h_zee/SpringbootImport</link>
            <guid>https://velog.io/@h_zee/SpringbootImport</guid>
            <pubDate>Thu, 11 Apr 2024 04:38:04 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Springboot Import </p>
</blockquote>
<p>IntelliJ에서 springboot로 프로젝트를 진행하다보면, 임포트 오류가 발생하는 경우가 있다.</p>
<p>이때, 임포트 관련 오류메시지를 오류부분 클릭 &gt; Alt + Enter 로 해결하는 경우도 있지만,
이렇게 일일이 해결하는 게 어렵다면, 아래와 같은 방법을 사용해도 좋을 것 같다.😊</p>
<ul>
<li>IntelliJ 에서 import 문제 해결하기위해 Settings 설정하기.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/h_zee/post/3020e0bb-c359-4fb8-825c-f5686e525ed9/image.png" alt=""></p>
<p>1) Settings &gt; Editor &gt; General &gt; Auto Import
2) Add unambiguous Imports on the fly (✔) 체크하기.
3) Oprimize Imports on the fly (✔) 체크하기.
4) 적용!!</p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Springboot_자동구성]]></title>
            <link>https://velog.io/@h_zee/Springboot%EC%9E%90%EB%8F%99%EA%B5%AC%EC%84%B1</link>
            <guid>https://velog.io/@h_zee/Springboot%EC%9E%90%EB%8F%99%EA%B5%AC%EC%84%B1</guid>
            <pubDate>Wed, 10 Apr 2024 18:41:24 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Springboot 의 자동구성</p>
</blockquote>
<ul>
<li><p>Springboot에서는 Application의 최소한의 설정만으로도 실행될 수 있도록 여러 부분을 자동으로 구성한다.</p>
</li>
<li><p>자동설정은 META-INF 의 spring.factories 파일에 있는 것을 확인할 수 있다.</p>
</li>
</ul>
<p>1) 돋보기 &gt; Files &gt; spring-boot....  아래와 같이 입력 &gt; 첫번째 파일 클릭.</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/9fcff7cf-e430-4c4e-b511-3f02e063a548/image.png" alt=""></p>
<p>2) Project &gt; External Libraries &gt; Gradle:org.spring....spring-boot-autoconfigure: ... &gt; 펼쳐서 파일들 확인.</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/1fbbde15-6f1a-4eb8-9aa0-6c3b381a4ba9/image.png" alt=""></p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript_기본문법#1]]></title>
            <link>https://velog.io/@h_zee/JavaScript%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%951</link>
            <guid>https://velog.io/@h_zee/JavaScript%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%951</guid>
            <pubDate>Thu, 04 Apr 2024 18:05:09 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>변수와 상수</p>
</blockquote>
<p>📖 변수 생성의 3 단계</p>
<ul>
<li><p>선언 -&gt; 초기화 -&gt; 할당</p>
</li>
<li><p>선언 : 실행 컨텍스트에 변수 객체 등록</p>
</li>
<li><p>초기화 : 변수 객체에 등록된 변수를 위해 메모리에 공간 확보.</p>
</li>
<li><p>할당 : 초기화된 변수에 실제 값 할당.</p>
</li>
</ul>
<p>📖 var</p>
<ul>
<li>가급적 사용하지 않는 것이 좋음.</li>
<li>** 선언과 초기화를 한 번에 한다.** (위에서 변수가 여러 번 선언될 시 마지막의 변수만 살아남는다.)</li>
<li>재선언이 가능하다.</li>
<li>블록 스코프가 아닌 함수 수준 스코프를 가짐.</li>
</ul>
<p>📖 let</p>
<ul>
<li>자바스크립트에서 <strong>변수</strong>를 생성할 때 쓰는 키워드.</li>
<li>block-scope 를 갖는다. ( &#39;{ }&#39; 안에서 선언 시, 바깥에서는 사용불가.)</li>
<li>재선언은 불가하다.</li>
<li>재할당은 가능하다.</li>
</ul>
<pre><code>// 재선언 불가.
let fruit=&#39;사과&#39;;
let fruit=&#39;바나나&#39;;

// 재할당 가능.
let fruit=&#39;사과&#39;;
fruit=&#39;바나나&#39;;</code></pre><p>📖 const</p>
<ul>
<li>자바스크립트에서 <strong>상수</strong>를 생성할 때 쓰는 키워드.</li>
<li>block-scope 를 갖는다. ( &#39;{ }&#39; 안에서 선언 시, 바깥에서는 사용불가.)</li>
<li>재선언은 불가하다.</li>
<li>재할당은 불가하다.</li>
</ul>
<pre><code>// 재선언 불가.
const fruit=&#39;사과&#39;;
const fruit=&#39;바나나&#39;;

// 재할당 불가.
const fruit=&#39;사과&#39;;
fruit=&#39;바나나&#39;;

// 선언과 동시에 할당되기 때문에 할당된 값이 없으면 오류.
const fruit; </code></pre><p>📖 지역 변수, 외부 변수</p>
<ul>
<li><p>지역변수</p>
</li>
<li><p>함수 내에서 선언한 변수 (함수 내에서만 접근 가능)</p>
</li>
<li><p>외부변수</p>
</li>
<li><p>함수 외부에서 선언한 변수 (함수 내에서도 접근 가능)</p>
</li>
<li><p>함수 내부에 같은 이름의 지역변수가 존재 시 사용불가.</p>
</li>
</ul>
<blockquote>
<p>객체</p>
</blockquote>
<ul>
<li><p>다양한 데이터를 담을 수 있다. (원시형은 오직 한 타입의 데이터만 담을 수 있다.)</p>
</li>
<li><p>key 로 구분된 데이터 집합, 복잡한 개체를 저장할 수 있다.</p>
</li>
<li><p>{ ... } : 중괄호 안에 여러쌍의 프로퍼티를 넣을 수 있다.   </p>
</li>
<li><p>key, value 형태.</p>
</li>
<li><p>key : 문자형 , value : 모든 자료형</p>
</li>
</ul>
<pre><code>// 객체 생성자 만들기.
let cat = new Object();

// 객체 리터럴 만들기.
let cat = {};</code></pre><blockquote>
<p>상수 재할당 </p>
</blockquote>
<ul>
<li>const 로 선언된 객체는 수정될 수 있다. (객체에 대한 참조를 변경하지 못함.)</li>
<li>객체 프로퍼티 보호불가.</li>
</ul>
<pre><code>const fruit={
    name=&quot;apple&quot;,
    condition=&quot;sweet&quot;,
}

fruit.name=&quot;banana&quot;;

console.log(fruit)   // banana 출력.</code></pre><pre><code>fruit={name:&quot;lemon&quot;, condition:&quot;sour&quot;};</code></pre><blockquote>
<p>함수</p>
</blockquote>
<ul>
<li>기본적으로 undefined 반환. (return 이 없을경우.)</li>
</ul>
<p>📖 함수 선언문 vs 함수 표현식</p>
<ul>
<li>함수 선언문으로 함수 생성 시 독립된 구문으로 존재.</li>
<li>함수 표현식으로 함수 생성 시 함수가 표현식의 일부로 존재.</li>
<li>함수 선언문은 코드 블록이 실행되기 전 미리 처리되어 블록 내 어디서든 사용 가능</li>
<li>함수 표현식은 실행 컨텍스트가 표현식에 닿으면 생성.</li>
</ul>
<pre><code>// 함수 선언문

function fruit() {
    console.log(&quot;lemon&quot;);
}</code></pre><pre><code>// 함수 표현식

let fruit = function() {
    console.log(&quot;lemon&quot;);
}

let fruit2 = () =&gt; {
    console.log(&quot;lemon2&quot;);
}</code></pre><p>📖 콜백함수</p>
<ul>
<li>함수를 값처럼 전달할 때, 인수로 넘겨주는 함수.</li>
</ul>
<pre><code>const playWithDog = (dog,action) =&gt; {
    action(dog);
}

const useBall = (dog) =&gt; {
    alert(dog+&quot;과 공으로 놀아줍니다.&quot;);
}

playWithDog(&quot;happy&quot;,useBall);
</code></pre><hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Convention]]></title>
            <link>https://velog.io/@h_zee/Convention</link>
            <guid>https://velog.io/@h_zee/Convention</guid>
            <pubDate>Wed, 27 Mar 2024 17:55:45 GMT</pubDate>
            <description><![CDATA[<p>팀 프로젝트의 꽃은 &quot;협업&quot; 이라고 생각합니다.</p>
<p>팀 프로젝트를 진행함에 있어 중요한 부분 중 하나인 <strong>컨벤션</strong>에 대해 기존 프로젝트경험을 바탕으로 정리해보겠습니다.</p>
<blockquote>
<p>Code convention</p>
</blockquote>
<p>📖 Naming</p>
<ul>
<li>패키지 이름 : 소문자</li>
</ul>
<pre><code>package com.navercorp.apigateway</code></pre><ul>
<li>클래스, 인터페이스 이름 : 대문자 Camel case</li>
</ul>
<pre><code>public class MemberChatroom;</code></pre><ul>
<li>메소드 이름 : 소문자 Camel case</li>
</ul>
<pre><code>findMember()</code></pre><p>📌 카멜 표기법</p>
<p>프로그래밍에서 파일, 변수, 함수 등 대상의 이름을 <strong>띄어쓰기 없이</strong> 짓기 위해 따르는 네이밍컨벤션의 하나.
단어 전체적으로 소문자를 사용하지만, 맨 첫글자를 제외한 각 합성어의 첫 글자만 대문자로 표기.</p>
<p>📖 중괄호</p>
<ul>
<li>K&amp;R 스타일 or BSD 스타일</li>
</ul>
<pre><code># K&amp;R 스타일

public class Friends {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = &quot;block_id&quot;)
    private Long id;
}

# BSD 스타일

public class Friends 
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = &quot;block_id&quot;)
    private Long id;
}</code></pre><p>📖 들여쓰기</p>
<p>1 tab = 4 space </p>
<p>📖 그 외</p>
<p>팀원이 노션에 공유한 글 및 아래 링크를 참고.</p>
<p>링크 : <a href="https://ui.toast.com/fe-guide/ko_CODING-CONVENTION">convention</a> </p>
<hr>
<p>◼ 참고자료</p>
<ul>
<li>위키백과</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Algorithm competition]]></title>
            <link>https://velog.io/@h_zee/Algorithm-competition</link>
            <guid>https://velog.io/@h_zee/Algorithm-competition</guid>
            <pubDate>Wed, 27 Mar 2024 17:47:32 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Algorithm competition </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/h_zee/post/89767335-3350-4efe-b7aa-f8756d742b02/image.png" alt=""></p>
<p>백준에서는 다양한 알고리즘 대회가 열립니다.</p>
<p>저 또한, 몇번의 알고리즘 대회에 참여해보았습니다.</p>
<p>비록, 상위권 순위에 들지는 못했지만 이 경험을 바탕으로 문제해결력을 쌓을 수 있었습니다!</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/c30053ce-cfb3-470a-9486-0585c8eeb22d/image.png" alt=""></p>
<p>귀여운 뱃지도 얻을 수 있었습니다.😊 (일정문제 이상 풀면 얻을 수 있습니다!)</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/5acd2837-9b58-4201-a3c0-3f4778e8cb7f/image.png" alt=""></p>
<p>알고리즘 역량은 개발자로서 효율적이고 논리적인 설계를 하기 위해 필수적으로 갖춰할 역량이라고 생각됩니다.</p>
<p>현재 진행하고 있는 스터디활동에 지금보다 더 적극적으로 참여하여 실력을 쌓아 부족한 점을 채워나가겠습니다. </p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/de9409f6-2026-4d16-87fa-24424a7a3d0f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DevTool_Git&Github#2]]></title>
            <link>https://velog.io/@h_zee/DevToolGitGithub2</link>
            <guid>https://velog.io/@h_zee/DevToolGitGithub2</guid>
            <pubDate>Wed, 27 Mar 2024 16:19:54 GMT</pubDate>
            <description><![CDATA[<p>👩‍🎓 내가 참고할려고 적는 Git 사용법.</p>
<blockquote>
<p>Git branch</p>
</blockquote>
<p>참고 : (🔗<a href="https://git-scm.com/book/ko/v2/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EB%B8%8C%EB%9E%9C%EC%B9%98%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80">Git branch</a>)</p>
<ul>
<li>독립적으로 개발을 진행할 때 사용된다. (협업 때 필수!)</li>
</ul>
<p>📖 명령어</p>
<p>📌 새 브랜치 생성.</p>
<ul>
<li>$ git branch (...)<br>ex. $ git branch test</li>
</ul>
<p>📌 브랜치 이동.</p>
<ul>
<li>$ git checkout (...)<br>ex. $ git checkout test<br>ex. $ git checkout master</li>
</ul>
<p>📌 현재 브랜치가 가리키고 있는 히스토리가 무엇인지, 어떻게 갈라져 나왔는지 확인. (히스토리)</p>
<ul>
<li>$ git log --oneline --decorate --graph --all</li>
</ul>
<p>📌 브랜치 생성+checkout 한 번에</p>
<ul>
<li>$ git checkout -b (...)
ex. $ git checkout -b test</li>
</ul>
<p>📌 merge</p>
<ul>
<li>$ git merge (...)
ex. $ git merge test</li>
</ul>
<p>📌 상태 확인</p>
<ul>
<li>$ git status</li>
</ul>
<p>📌 브랜치 목록 확인</p>
<ul>
<li>$ git branch   (* 이 붙어있는 브랜치는 현재 checkout 해서 작업하는 브랜치를 나타냄.)</li>
</ul>
<p>📌 브랜치 마다 커밋 메시지를 함께 보고 싶은 경우.</p>
<ul>
<li>$ git branch -v</li>
</ul>
<p>📌 브랜치가 merge 된 상태인지 아닌지 확인.</p>
<ul>
<li>$ git branch --merged</li>
</ul>
<p>📌 서버에는 존재하지만, 로컬에는 아직 없는 데이터를 받아와서 저장. (원격 저장소에 변경사항이 있는지 확인.)</p>
<ul>
<li>$ git fetch</li>
</ul>
<p>📌 원격 저장소에서 변경된 데이터 복사해서 로컬로 가져오기.</p>
<ul>
<li>$ git pull</li>
</ul>
<blockquote>
<p>프로젝트에 적용.</p>
</blockquote>
<ol>
<li>초기 세팅</li>
</ol>
<ul>
<li>자신의 로컬에 레파지토리 클론.</li>
<li>자바 버전 설정.</li>
</ul>
<ol start="2">
<li>작업 순서</li>
</ol>
<ul>
<li>issue 등록 -&gt; 새 브랜치에서 기능 구현 -&gt; pr</li>
</ul>
<ol start="3">
<li>새로운 작업 시작.</li>
</ol>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정렬-스위핑]]></title>
            <link>https://velog.io/@h_zee/%EC%A0%95%EB%A0%AC-%EC%8A%A4%EC%9C%84%ED%95%91</link>
            <guid>https://velog.io/@h_zee/%EC%A0%95%EB%A0%AC-%EC%8A%A4%EC%9C%84%ED%95%91</guid>
            <pubDate>Wed, 06 Mar 2024 10:52:39 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>이론</p>
</blockquote>
<p>📖 스위핑</p>
<ul>
<li>특정 선이나 공간을 한쪽에서부터 스캔하면서 쓸어가는 알고리즘.</li>
<li>&#39;정렬&#39; 을 이용해서 구현.</li>
</ul>
<blockquote>
<p>문제풀이</p>
</blockquote>
<p>📖 백준 2170</p>
<p>📌 <a href="https://www.acmicpc.net/problem/2170">https://www.acmicpc.net/problem/2170</a></p>
<pre><code># keypoint : 스위핑

# 배열로 할 경우 20억개나 되기 때문에 시간초과에 유의.

import sys
input=sys.stdin.readline

n=int(input())

line=[]   # 선 정보.
for i in range(n):
    x,y=map(int,input().split())
    line.append([x,y])

line.sort(key=lambda x:x[0])   # 시작좌표 기준으로 정렬.

start=line[0][0]
end=line[0][1]

answer=0
for i in range(1,n):
    n_start,n_end=line[i]
    # 겹치지 않는 경우.
    if n_start&gt;end:
        answer+=(end-start)  # 기존 값 answer에 더하기.
        start,end=n_start,n_end   # 갱신
    # 겹치는 경우.
    else:
        end=max(end,n_end)

answer+=(end-start)
print(answer)</code></pre><hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DevTool_Figma#2]]></title>
            <link>https://velog.io/@h_zee/DevToolFigma2</link>
            <guid>https://velog.io/@h_zee/DevToolFigma2</guid>
            <pubDate>Wed, 28 Feb 2024 16:29:30 GMT</pubDate>
            <description><![CDATA[<p>📌 링크 : <a href="http://www.figma.com">www.figma.com</a></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/9db4ceaf-aab1-4c6d-b295-ed0872daed8a/image.png" alt=""></p>
<blockquote>
<p>Figma 사용법</p>
</blockquote>
<p>1) 기능</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/b9e765e4-7dfb-4daa-86da-6c9aead91182/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/3b22dfdb-5cd0-4130-a5a4-1a3b6e5894a8/image.png" alt=""></p>
<p>Preview 기능을 통해 미리 화면을 확인해 볼 수 있다.</p>
<blockquote>
<p>Figma 적용</p>
</blockquote>
<p>프로젝트 개발 전, 피그마로 화면 구성 예시)</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/b175e55f-e05f-44b3-8c02-e6ecc11417c3/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/fa314f58-7067-41b1-ad73-36cab7d99e4e/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/3b4a05a8-3a76-4c9b-9bf7-aac56354ddfd/image.png" alt=""></p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
<p>❗ 이미지 무단 도용을 금지합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자료구조-Heapq]]></title>
            <link>https://velog.io/@h_zee/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%B5%9C%EB%8C%80%ED%9E%99</link>
            <guid>https://velog.io/@h_zee/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%B5%9C%EB%8C%80%ED%9E%99</guid>
            <pubDate>Mon, 19 Feb 2024 15:55:01 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>이론</p>
</blockquote>
<p>📖 Heapq?</p>
<ul>
<li>최소 힙의 구조.</li>
</ul>
<p>✏ push</p>
<ul>
<li>heapq.heappush(hq,x) 
힙의 형태를 유지하면서 x값을 push.</li>
</ul>
<pre><code>import heapq

hq=[]
heapq.heappush(hq,x)</code></pre><p>✏ pop</p>
<ul>
<li>heapq.heappop(hq)
힙의 형태를 유지하면서 가장 작은 항목을 제거(pop)하고, 그 값을 반환.
비어있으면 IndexError가 발생한다.</li>
</ul>
<pre><code>import heapq

hq=[]
heapq.heappop(hq)</code></pre><p>✏ heapify</p>
<ul>
<li>heapify(x)
리스트 arr을 선형시간으로 제자리에서 heap으로 변환시킨다.</li>
</ul>
<pre><code>import heapq

arr=[1,2,5,4,3]
heapq.heapify(arr) 
</code></pre><blockquote>
<p>문제풀이</p>
</blockquote>
<p>📖 백준 1927</p>
<p>📌 <a href="https://www.acmicpc.net/problem/1927">https://www.acmicpc.net/problem/1927</a></p>
<pre><code># keypoint : heapq

import heapq
import sys
input=sys.stdin.readline

n=int(input())

hq=[]
for i in range(n):
    x=int(input())

    # x가 0이면 배열에서 가장 작은 값 출력, 그 값 배열에서 제거.
    if x==0:
        if hq:
            print(heapq.heappop(hq))
        # 배열이 비어있는 경우, 0 출력.
        else:
            print(0)
    # x가 자연수이면 배열에 x 값 추가.
    else:
        heapq.heappush(hq,x)</code></pre><p>📖 백준 11279</p>
<p>📌 <a href="https://www.acmicpc.net/problem/11279">https://www.acmicpc.net/problem/11279</a></p>
<p>✏ heapq 를 이용하여 최대 힙을 구현한다.</p>
<pre><code>import heapq

hq=[]
heapq.heappush(hq,-x)
-(heapq.heappop(hq))</code></pre><pre><code># keypoint : heapq

import heapq
import sys
input=sys.stdin.readline

n=int(input())

hq=[]
for i in range(n):
    x=int(input())

    # x가 0이면 배열에서 가장 큰 값 출력, 그 값 배열에서 제거.
    if x==0:
        if hq:
            print(-(heapq.heappop(hq)))
        # 배열이 비어있는 경우, 0 출력.
        else:
            print(0)
    # x가 자연수이면 배열에 x 값 추가.
    else:
        heapq.heappush(hq,-x)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[DevTool_Postman]]></title>
            <link>https://velog.io/@h_zee/DevlogPostman</link>
            <guid>https://velog.io/@h_zee/DevlogPostman</guid>
            <pubDate>Thu, 25 Jan 2024 00:21:39 GMT</pubDate>
            <description><![CDATA[<h2 id="📖-postman">📖 Postman?</h2>
<ul>
<li>HTTP 요청을 보낼 수 있는 클라이언트 프로그램</li>
</ul>
<p><img src="https://velog.velcdn.com/images/h_zee/post/d5ce3937-c0e5-4da9-85e1-3bf5e64ed4df/image.png" alt=""></p>
<blockquote>
<p>사용법</p>
</blockquote>
<ol>
<li><p>로그인</p>
</li>
<li><p>아래와 같이 New 클릭 &gt; HTTP 클릭 </p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/h_zee/post/789f6a56-2056-4d68-bc70-bef345a9fb6b/image.png" alt=""></p>
<ol start="3">
<li>아래와 같은 주소 입력창에서 URL 입력.
왼쪽 선택박스에서 GET/POST/PUT... 등 HTTP 메서드 사용 가능. 
cf) GET : 서버로 부터 정보를 요청 (정보조회시 사용)</li>
</ol>
<p><img src="https://velog.velcdn.com/images/h_zee/post/953be21e-753c-4375-b08d-e605115adabb/image.png" alt=""></p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Kaggle Competition]]></title>
            <link>https://velog.io/@h_zee/Kaggle-Competition</link>
            <guid>https://velog.io/@h_zee/Kaggle-Competition</guid>
            <pubDate>Wed, 24 Jan 2024 19:21:03 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Kaggle Competition</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/h_zee/post/dd05530d-23a4-46a1-b912-dd07a9b09bd0/image.png" alt=""></p>
<p><strong>Text Classificaiton</strong> 을 주제로, Kaggle Competition 에 팀으로 참여해보았습니다.</p>
<p>저희팀은 ComplementNB() 모델에 대해 Grid Search를 사용하여 하이퍼파라미터 튜닝을 수행했습니다.</p>
<p>하이퍼파라미터 : alpha = 0.5</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/b263301a-d7f3-4e7a-ad70-d55f1584c158/image.png" alt=""></p>
<p>캐글은 처음이였는데, 실시간으로 서로의 등수를 볼 수 있어 마지막까지 좀 더 성능을 높이기위해 서로 으쌰으쌰하며 개발했던 것 같습니다!
하지만, 등수지키기가 너무 어려웠습니다..ㅠㅠ</p>
<p>그래도 팀원분들이랑 너무 재밌게 캐글을 진행했었고, 많은 것을 얻어갈 수 있는 시간이 되었던 것 같습니다.😊</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[DevTool_Figma#1]]></title>
            <link>https://velog.io/@h_zee/Figma</link>
            <guid>https://velog.io/@h_zee/Figma</guid>
            <pubDate>Thu, 14 Dec 2023 19:03:06 GMT</pubDate>
            <description><![CDATA[<p>📌 링크 : <a href="http://www.figma.com">www.figma.com</a></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/9db4ceaf-aab1-4c6d-b295-ed0872daed8a/image.png" alt=""></p>
<blockquote>
<p>개인 / 팀</p>
</blockquote>
<p><strong>🤗 팀원 초대할때는 can view 로 설정!!</strong>
<strong>🤗 프레임을 좀 더 이용..</strong> </p>
<blockquote>
<p>Figma 사용법</p>
</blockquote>
<p><strong>1) 로그인 → 파일 생성</strong></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/9d8bcd5a-e07e-48b8-9dcf-ce4214e0f02a/image.png" alt=""></p>
<p><strong>2) 기능</strong></p>
<p>✔️ 파일저장, 플러그인 확인 등
<img src="https://velog.velcdn.com/images/h_zee/post/3e5fb072-10ef-43b2-8776-c7064d2b5c71/image.png" alt=""></p>
<p>✔️ 툴</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/937456d5-b438-470b-928b-a53dfa76bf69/image.png" alt=""></p>
<p>✔️ 공유 / 화면 기능</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/6508e585-491f-4d22-b4a8-006d5a542584/image.png" alt=""></p>
<p>✔️ Layers, Assets 등록</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/549f11af-144f-42a9-a356-15b8b0fcdfdd/image.png" alt=""></p>
<p><strong>3) 툴</strong></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/2aa9db50-5958-4a25-bf73-7d19e1ef57b6/image.png" alt=""></p>
<p>왼쪽에서 부터,</p>
<p>📖 Move / Scale</p>
<p>Move: 조절.
Scale: shift 누르고 조절하는 효과.</p>
<p>📖 Frame / Section / Slice</p>
<p>Frame : 아트보드
Section : 
Slice : 일정영역 지정 후, 영역을 이미지로 배포</p>
<p>📖 Shape</p>
<p>Shape : 도형그리기</p>
<p>📖 Pen / Pencil</p>
<p>Pen : 펜
Pencil : 연필</p>
<p>📖 Text</p>
<p>📖 Components, Plugins, Widgets</p>
<p>📖 Hand Tool</p>
<p>Hand Tool : 손(?) 으로 잡고 이동</p>
<p>📖 Comment Tool</p>
<p>Comment Tool : 피드백</p>
<p><strong>4) Design 툴</strong></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/b395657a-d06f-4307-961f-bafcd15a020d/image.png" alt=""></p>
<p>📖 Fill </p>
<p>Fill : 채우기 </p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/bf13cda6-a648-4100-9753-295807e16e05/image.png" alt=""></p>
<p>Fill &gt; Custom &gt; Choose image 를 통해 이미지파일을 불러올 수 있다.</p>
<blockquote>
<p>Figma 적용</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/h_zee/post/d7861134-50be-40ad-bd5d-3297f0c37a5e/image.png" alt=""></p>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.
❗ 이미지 무단 도용을 금지합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ADSP 시험후기]]></title>
            <link>https://velog.io/@h_zee/ADSP-%EC%8B%9C%ED%97%98%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@h_zee/ADSP-%EC%8B%9C%ED%97%98%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Thu, 14 Dec 2023 16:20:59 GMT</pubDate>
            <description><![CDATA[<p>2023.11.17(금)에 <strong>ADSP 시험결과</strong>가 나왔다.
그동안 바빠서 시험합격후기를 쓰지못해서, 오늘 시간을 내어 시험준비과정에 대해 간단히 기록해놓으려한다.</p>
<blockquote>
<p>ADSP 란?</p>
</blockquote>
<p>&quot;데이터분석 준전문가&quot; 라고 하며, 데이터 이해에 대한 기본지식을 바탕으로 데이터 분석 기획 및 데이터분석 등의 직무를 수행하는 실무자를 말한다.</p>
<blockquote>
<p>ADSP 시험이란?</p>
</blockquote>
<p><strong>ADSP</strong>시험은 한국데이터산업진흥원에서 주관하는 시험이다.</p>
<p>시험을 통해, 데이터 이해 과목을 바탕으로 데이터를 분석하는 능력을 검증한다.</p>
<hr>
<p>📌 <strong>시험 일정 및 접수기간</strong></p>
<p>이전에 포스팅한 SQLD 시험과 같이 일년에 4번 시험접수를 받으며, 약 5일의 접수기간을 가진다.</p>
<hr>
<p>📌 <strong>시험유형</strong></p>
<p>데이터분석 준전문가 시험은 실기시험 없이 PBT 방식으로 필기시험만 보게된다.</p>
<p>총 문항수는 50문항으로 객관식 40문항, 단답형 10문항으로 이루어져있다.</p>
<p>과목은 크게 <strong>데이터이해 / 데이터분석 기획 / 데이터분석</strong>, 3개로 구성되어 있다고 볼 수 있다.</p>
<p>각 과목당 아래와 같이 문제수가 할당된다.
데이터이해 : 10문제
데이터분석 기획 : 10문제
데이터분석 :30 문제</p>
<hr>
<p>😀 시험시간은 1시간 30분으로, 문제를 푸는데 시간이 부족하지는 않았던 것 같다! ADSP 시험의 경우 응시료가 50000만원이나 하니, 꼭 한번에 붙자!!ㅠㅠ
과목별 출제문항의 수가 홈페이지에 잘 나와있으니, 만약 시험이 얼마남지않았는데 시간이 부족해 다 공부하지 못할 것 같으면 이를 참고하여 전략적으로 공부해도 좋을 것 같다!</p>
<p>📍 홈페이지 링크 : <a href="https://www.dataq.or.kr/www/main.do">https://www.dataq.or.kr/www/main.do</a></p>
<blockquote>
<p>ADSP 공부방법</p>
</blockquote>
<ol>
<li>2023 ADsP 데이터분석 준전문가</li>
</ol>
<p>&quot;민트책&quot;이라고 불리는 데이터에듀에서 출간한 2023 ADsP 데이터분석 준전문가책을 이용하여 공부하였다. 나의 경우, 기출문제를 위주로 풀며 모르는 개념이 나왔을 때 태블릿에 정리하면서했다.</p>
<ol start="2">
<li>YouTube 활용</li>
</ol>
<p>공부하다가 이해를 못하겠는 해설과 부족하다고 생각한 개념은 인터넷을 활용해서 채우려고 했다. 나의 경우, 유투브를 자주 이용했는데 설명을 잘 해주는 영상들이 많아서 정리하는데 많은 도움이 되었다.</p>
<ol start="3">
<li>블로그 활용</li>
</ol>
<p>Tstory 에 정리 요약본이나 문제들이 많이 나와있어, 시험 1~2일전에는 이를 참고하여 시험에 대비하였다.</p>
<blockquote>
<p>후기</p>
</blockquote>
<p>요즘 데이터분석을 공부하고있었기 때문에 시험을 준비하는데 조금 수월했던 것 같다. 공부했던 내용을 복습하는 차원에서 준비했고, 나의 데이터분석 역량을 증빙할 수 있는 시험이 없을까? 하는 생각에서 찾아보다가 이 시험을 알게되어, 준비하게 되었는데 이렇게 좋은 결과를 얻게되어 기쁘다.
하루하루 성실하게, 어제의 나보다 더 성장하는 오늘을 보내도록 노력해야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Django_theory]]></title>
            <link>https://velog.io/@h_zee/Djangotheory</link>
            <guid>https://velog.io/@h_zee/Djangotheory</guid>
            <pubDate>Mon, 04 Dec 2023 19:19:44 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>Django</p>
</blockquote>
<p>📖 웹 애플리케이션 구조</p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/b998adbc-f1eb-458f-a349-f55e7d4eba1f/image.png" alt=""></p>
<p>📖 Django 요소</p>
<ul>
<li><p>Model : 데이터베이스 처리. (DATA부분)</p>
</li>
<li><p>View : HTTP의 요청 처리. (서비스구현)</p>
</li>
<li><p>Template : 사용자의 인터페이스 처리. (화면 : front-end)</p>
</li>
<li><p>Form : 사용자 입력데이터 처리.</p>
</li>
<li><p>Static 파일 : 정적파일 관리.</p>
</li>
<li><p>Media 파일 : 사용자가 업로드한 파일 관리.</p>
</li>
<li><p>Message Framework : 일회성 메시지 처리.</p>
</li>
<li><p>Send Email : 이메일 작성, 전송</p>
</li>
<li><p>Adimin 앱 : 관리자를 위한 쉬운 DB 데이터 관리 UI 제공.</p>
</li>
<li><p>Auth 앱 : 사용자 인증에 관련된 서비스 제공.</p>
</li>
<li><p>Session 앱 : 사용자별로 사용되는 데이터 서비스 제공.</p>
</li>
</ul>
<hr>
<p>✍️ 공부한 내용을 정리하는 공간이기 때문에, 정확하지 않은 사실이 들어갈 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[서울시 생활인구 예측]]></title>
            <link>https://velog.io/@h_zee/%EC%84%9C%EC%9A%B8%EC%8B%9C-%EC%83%9D%ED%99%9C%EC%9D%B8%EA%B5%AC-%EC%98%88%EC%B8%A1</link>
            <guid>https://velog.io/@h_zee/%EC%84%9C%EC%9A%B8%EC%8B%9C-%EC%83%9D%ED%99%9C%EC%9D%B8%EA%B5%AC-%EC%98%88%EC%B8%A1</guid>
            <pubDate>Fri, 24 Nov 2023 03:22:00 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>프로젝트 소개</p>
</blockquote>
<p>📝 프로젝트 주제
서울시 공공데이터 기반 서울시 생활인구 예측</p>
<p>🌫️ 프로젝트 배경
데이터를 분석하여, 특정 지역의 생활인구를 파악하고 그 지역의 미래 생활인구를 예측하고자 한다.</p>
<blockquote>
<p>사용데이터 및 기술</p>
</blockquote>
<p>📌 데이터 : <a href="https://data.seoul.go.kr/dataVisual/seoul/seoulLivingPopulation.do">https://data.seoul.go.kr/dataVisual/seoul/seoulLivingPopulation.do</a>
✅ 기술스택 : python</p>
<blockquote>
<p>과정 (일부)</p>
</blockquote>
<h3 id="-데이터-분석">* 데이터 분석</h3>
<pre><code>df_total[&#39;기준일ID&#39;]=df_total[&#39;기준일ID&#39;].apply(lambda x:pd.to_datetime(str(x),format=&#39;%Y-%m-%d&#39;))</code></pre><pre><code>df_test[&#39;기준일ID&#39;]=df_test[&#39;기준일ID&#39;].apply(lambda x:pd.to_datetime(str(x),format=&#39;%Y-%m-%d&#39;))</code></pre><p><img src="https://velog.velcdn.com/images/h_zee/post/077e02b2-1524-415c-84f8-cd91729b4b6c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/ea0d67c6-ee4d-4c82-a64e-2603cb12a456/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/f1d4b79f-456c-4af8-ada6-be86995eb82f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/h_zee/post/078de5a3-0592-4f93-b20b-bf64d90f4d28/image.png" alt=""></p>
<hr>
<h3 id="-데이터-전처리">* 데이터 전처리</h3>
<ul>
<li>&#39;기준일ID&#39;열을 datetime 형식으로 변경.</li>
<li>시프트 &amp; 롤링 수행.</li>
</ul>
<hr>
<h3 id="-모델링">* 모델링</h3>
<ul>
<li>LinearRegression 모델링 수행.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/h_zee/post/08e9c454-9cb3-4155-b4fd-fcfced8fe51f/image.png" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>