<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>sssung_eun.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 09 Aug 2022 05:59:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. sssung_eun.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/sssung_eun" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Book] 유닉스의 탄생]]></title>
            <link>https://velog.io/@sssung_eun/Book-%EC%9C%A0%EB%8B%89%EC%8A%A4%EC%9D%98-%ED%83%84%EC%83%9D</link>
            <guid>https://velog.io/@sssung_eun/Book-%EC%9C%A0%EB%8B%89%EC%8A%A4%EC%9D%98-%ED%83%84%EC%83%9D</guid>
            <pubDate>Tue, 09 Aug 2022 05:59:59 GMT</pubDate>
            <description><![CDATA[<center><img src="https://velog.velcdn.com/images/sssung_eun/post/beb7b94d-c9f0-4cb1-82f6-610be8143c7e/image.png" width="300" height="200" /></center>
프로그래밍을 배우면서 Linux 이야기를 많이 들었다.

<p>Linux랑 Unix랑 뭔가 관련이 있는 것 같은데 하며 잘 모르고 있던 나에게 이 책은 흥미롭게 다가왔다.</p>
<p>벨 연구소에서 아주 훌륭한 사람들이 자유롭게 모여 Unix를 만들고, 후에 리누스 토르발스 라는 사람이 취미로 Linux를 사람들에게 알린 것이다.</p>
<p>인상 깊었던 점은 벨 연구소의 환경과 연구원들의 열린 마음이었다.</p>
<p>벨 연구소에서는 하고 싶은 연구를 마음껏 할 수 있는 금전적인 지원이 있었다.</p>
<p>또한, 연구원들 간의 분위기는 서로 존중해주고 장난도 치며 함께 성장하기에 좋았다.</p>
<p>그런 환경이 갖춰지는 것이 쉬운 일은 아니지만 그 당시만의 특징이 한편으로는 부럽기도 하고, 그로 인해 지금의 내가 공부를 할 수 있다는 것에 감사하기도 하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Spring 특징]]></title>
            <link>https://velog.io/@sssung_eun/Spring-%ED%8A%B9%EC%A7%95</link>
            <guid>https://velog.io/@sssung_eun/Spring-%ED%8A%B9%EC%A7%95</guid>
            <pubDate>Sun, 07 Aug 2022 06:46:32 GMT</pubDate>
            <description><![CDATA[<center><img src="https://velog.velcdn.com/images/sssung_eun/post/5c278091-797a-4eb2-9fa8-a8c96acde9ac/image.png" width="300" height="200" /></center>

<h2 id="pojo-plain-old-java-object">POJO (Plain Old Java Object)</h2>
<ul>
<li>Java나 Java의 스펙(사양)에 정의된 것 이외에는 다른 기술이나 규약에 얽매이지 않아야 함</li>
<li>특정 환경에 종속적이지 않아야 함</li>
</ul>
<h3 id="--pojo-프로그래밍이-필요한-이유">- POJO 프로그래밍이 필요한 이유</h3>
<ul>
<li>재사용과 확장이 가능한 유연한 코드 작성 가능</li>
<li>코드가 깔끔해지기 때문에 디버깅이 상대적으로 쉬움</li>
<li>테스트의 단순화</li>
<li><Strong>객체지향적인 설계를 제한없이 적용 가능</Strong></li>
</ul>
<h3 id="--pojo와-spring의-관계">- POJO와 Spring의 관계</h3>
<ul>
<li>Spring은 POJO 프로그래밍을 지향하는 Framwork</li>
<li>POJO 프로그래밍 코드를 작성하기 위해 Spring에서 IoC/DI, AOP, PSA 기술 지원</li>
</ul>
<hr>
<h2 id="ioc-inversion-of-control--di-dependency-injection">IoC (Inversion of Control) / DI (Dependency Injection)</h2>
<ul>
<li><p>Ioc : 애플리케이션 흐름의 주도권이 사용자에게 있지 않고, Framwork나 서블릿 컨테이너 등 외부에 있는 것</p>
</li>
<li><p>DI : IoC 개념을 조금 구체화 시킨 것으로 객체 간의 관계를 느슨하게 해줌</p>
</li>
<li><p>의존 관계 성립 : 클래스 내부에서 다른 클래스의 객체를 생성</p>
</li>
<li><p>의존성 주입 : 클래스 내부에서 <code>new</code>를 사용해 참조할 클래스의 객체를 직접 생성하지 않고, <Strong>생성자</Strong> 등을 통해 외부에서 다른 클래스의 객체를 전달 받음</p>
</li>
<li><p>Spring에서 애플리케이션 코드에서 이뤄지는 DI를 대신 해줌</p>
</li>
</ul>
<blockquote>
<h4 id="느슨한-결합">느슨한 결합?</h4>
<p>어떤 클래스가 인터페이스처럼 일반화 된 구성 요소에 의존하고 있는 경우로, 요구 사항의 변경에 유연한 대처 가능</p>
<h4 id="강한-결합">강한 결합?</h4>
<p><code>new</code>를 통해 객체를 생성하는 경우</p>
</blockquote>
<hr>
<h2 id="aop-aspect-oriented-programming">AOP (Aspect Oriented Programming)</h2>
<p>애플리케이션에 필요한 기능 중, 공통적으로 적용되는 기능과 관련</p>
<h3 id="--aop가-필요한-이유">- AOP가 필요한 이유</h3>
<ul>
<li>코드의 간결성 유지</li>
<li>객체 지향 설계 원칙에 맞는 코드 구현</li>
<li>코드의 재사용<blockquote>
<p>애플리케이션 전반에 걸쳐 적용되는 공통 기능?
- 트랜잭션, 로깅, 보안, 트레이싱, 모니터링 등</p>
</blockquote>
</li>
</ul>
<hr>
<h2 id="psa-portable-service-abstraction">PSA (Portable Service Abstraction)</h2>
<p>추상화 된 상위 클래스를 일관되게 바라보며, 하위 클래스의 기능을 사용하는 것 (일관된 서비스 추상화)</p>
<h3 id="--psa가-필요한-이유">- PSA가 필요한 이유</h3>
<ul>
<li>어떤 서비스를 이용하기 위한 접근 방식을 일관된 방식으로 유지함으로써, 애플리케이션의 요구 사항 변경에 유연한 대처 가능</li>
<li>Spring에서 PSA가 적용된 분야로는 트랜잭션, 메일, Spring Data 서비스 등이 있음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Framework VS Library]]></title>
            <link>https://velog.io/@sssung_eun/Framework-VS-Library</link>
            <guid>https://velog.io/@sssung_eun/Framework-VS-Library</guid>
            <pubDate>Fri, 05 Aug 2022 13:19:12 GMT</pubDate>
            <description><![CDATA[<p>애플리케이션 흐름의 주도권이 개발자에게 있으면 <Strong>library</Strong>
애플리케이션 흐름의 주도권이 framwork에 있으면 <Strong>framwork</Strong></p>
<hr>
<h3 id="왜-스프링-프레임워크인가">왜 스프링 프레임워크인가?</h3>
<p>기업용 엔터프라이즈 시스템용* 애플리케이션 개발에서 &#39;어떻게 해야 유지보수가 용이하고, 개발 생산성을 높일 수 있을까?&#39;에 초점을 맞추는데,
스프링이 &#39;개발 생산성을 향상시키고 애플리케이션의 유지 보수를 용이하게 하는 프레임워크의 기본목적&#39; 그 이상을 달성하게 해주기 때문에 스프링 프레임워크를 사용한다!</p>
<blockquote>
<p>기업용 엔터프라이즈 시스템?</p>
<ul>
<li>기업의 업무(기업 자체 조직의 업무, 고객을 위한 서비스 등)를 처리해주는 시스템</li>
<li>대량의 사용자 요청을 처리해야 하므로 서버의 자원 효율성, 보안성, 시스템의 안전성, 확장성 등을 충분히 고려하여 시스템 구축</li>
</ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 형변환]]></title>
            <link>https://velog.io/@sssung_eun/Java-%ED%98%95%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@sssung_eun/Java-%ED%98%95%EB%B3%80%ED%99%98</guid>
            <pubDate>Thu, 04 Aug 2022 12:53:18 GMT</pubDate>
            <description><![CDATA[<h3 id="char-to-string">char to string</h3>
<p><a href="https://stackoverflow.com/questions/8172420/how-to-convert-a-char-to-a-string">https://stackoverflow.com/questions/8172420/how-to-convert-a-char-to-a-string</a></p>
<pre><code>// Method #1
String stringValueOf = String.valueOf(&#39;c&#39;); // most efficient

// Method #2
String stringValueOfCharArray = String.valueOf(new char[]{x});

// Method #3
String characterToString = Character.toString(&#39;c&#39;);

// Method #4
String characterObjectToString = new Character(&#39;c&#39;).toString();

// Method #5
// Although this approach seems very simple, 
// this is less efficient because the concatenation
// expands to a StringBuilder.
String concatBlankString = &#39;c&#39; + &quot;&quot;;

// Method #6
String fromCharArray = new String(new char[]{x});</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 숫자와 공백 제거 정규표현식]]></title>
            <link>https://velog.io/@sssung_eun/Java-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D</link>
            <guid>https://velog.io/@sssung_eun/Java-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D</guid>
            <pubDate>Thu, 04 Aug 2022 12:16:08 GMT</pubDate>
            <description><![CDATA[<p>[0-9] : 0 ~ 9의 숫자
[^0-9] : 0 ~ 9의 숫자를 제외한 문자
\s : \n, \t 등의 모든 공백을 제외한 문자</p>
<pre><code>String str = &quot;안12 녕3\t45하    \n ,/세67요89&quot;;
String intStr = str.replaceAll(&quot;[^0-9]&quot;, &quot;&quot;);
String newStr = str.replaceAll(&quot;\\s&quot;, &quot;&quot;);

System.out.println(&quot;intStr : &quot; + intStr);
System.out.println(&quot;newStr : &quot; + newStr);

&gt; intStr : 123456789
&gt; newStr : 안12녕345하,/세67요89</code></pre><p>cf) replaceAll의 시간 복잡도 : O(n)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 객체지향 프로그래밍 심화]]></title>
            <link>https://velog.io/@sssung_eun/Java-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%8B%AC%ED%99%94</link>
            <guid>https://velog.io/@sssung_eun/Java-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%8B%AC%ED%99%94</guid>
            <pubDate>Tue, 19 Jul 2022 14:52:01 GMT</pubDate>
            <description><![CDATA[<h2 id="👀-메서드-오버라이딩-vs-메서드-오버로딩">👀 메서드 오버라이딩 VS 메서드 오버로딩</h2>
<pre><code>class Person {
    void eat() {}
}

class Student extends Person {
    void eat() {}        // 오버라이딩
    void eat(int i) {}   // 오버로딩

    void study() {}     
    void study(int i) {} // 오버로딩
}</code></pre><h3 id="메서드-오버라이딩">메서드 오버라이딩</h3>
<ul>
<li>조상으로부터 상속받은 메서드의 내용 변경</li>
<li>접근 제어자는 조상 클래스의 메서드보다 같거나 넓어야 함</li>
<li>조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없음</li>
</ul>
<h3 id="메서드-오버로딩">메서드 오버로딩</h3>
<ul>
<li>기존에 없는 새로운 메서드 추가</li>
<li>메서드 이름이 동일하고, 매개변수의 개수나 타입이 다른 메서드</li>
</ul>
<hr>
<h2 id="👀-메모리-영역">👀 메모리 영역</h2>
<h3 id="method-area">Method Area</h3>
<ul>
<li>클래스에 대한 정보(클래스 데이터) 저장 </li>
<li>클래스 변수도 함께 생성됨</li>
</ul>
<h3 id="call-stack-execution-stack">Call Stack (Execution stack)</h3>
<ul>
<li>메서드의 작업에 필요한 메모리 공간 제공</li>
<li>메서드가 작업을 마치면 할당되었던 메모리 공간이 반환되어 비워짐</li>
</ul>
<h3 id="heap">Heap</h3>
<ul>
<li>인스턴스가 생성되는 공간</li>
<li>인스턴스 변수(instance variable)들이 생성되는 공간</li>
</ul>
<hr>
<h2 id="👀-접근-제어자access-modifier">👀 접근 제어자(access modifier)</h2>
<p><code>public &gt; protected  &gt; (default) &gt; private</code></p>
<ul>
<li>private : 같은 클래스 내에서만 접근 가능</li>
<li>default : 같은 패키지 내에서만 접근 가능</li>
<li>protected : 같은 패키지 내, 다른 패키지의 자손클래스에서 접근 가능</li>
<li>public : 접근 제한 없음
```</li>
</ul>
<ol>
<li>메서드에 static과 abstract 함께 사용 불가<ul>
<li>static 메서드는 몸통이 있는 메서드에서만 사용 가능하기 때문</li>
</ul>
</li>
<li>클래스에 abstract와 final 동시에 사용 불가<ul>
<li>클래스에 사용되는 final은 클래스를 확장할 수 없다는 의미이며,
abstract는 상속을 통해 완성되어야 한다는 의미가 모순됨</li>
</ul>
</li>
<li>abstract 메서드의 접근 제어자로 private 불가<ul>
<li>abstract 메서드는 자손클래스에서 구현해주어야 하는데,
접근 제어자가 private이면 자손클래스에서 접근 불가하기 때문</li>
</ul>
</li>
<li>메서드에 private과 final을 같이 사용할 필요는 없음<ul>
<li>접근 제어자가 private인 메서드는 오버라이딩될 수 없음</li>
<li>이 둘 중 하나만 사용해도 의미가 충분함<pre><code></code></pre></li>
</ul>
</li>
</ol>
<hr>
<h2 id="👀-list-set-map-차이">👀 List, Set, Map 차이</h2>
<h3 id="list">List</h3>
<ul>
<li>순서가 있는 데이터의 집합</li>
<li>데이터 중복 허용</li>
<li>Collection 인터페이스가 조상<ul>
<li>ArrayList, LinkedList, Stack, Vector 등<h3 id="set">Set</h3>
</li>
</ul>
</li>
<li>순서가 없는 데이터의 집합</li>
<li>데이터의 중복을 허용하지 않음</li>
<li>Collection 인터페이스가 조상<ul>
<li>HashSet, TreeSet 등</li>
</ul>
</li>
</ul>
<h3 id="map">Map</h3>
<ul>
<li>키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합</li>
<li>순서 없음</li>
<li>키는 중복을 허용하지 않고, 값은 중복 허용<ul>
<li>HashMap, TreeMap, Hashtable, Properties 등</li>
</ul>
</li>
</ul>
<hr>
<h2 id="👀-컬렉션collection과-스트림stream-차이">👀 컬렉션(Collection)과 스트림(Stream) 차이</h2>
<h3 id="컬렉션">컬렉션</h3>
<ul>
<li>데이터 소스를 변경함</li>
<li>같은 소스를 여러번 처리 가능</li>
<li>작업을 외부 반복으로 처리</li>
</ul>
<h3 id="스트림">스트림</h3>
<ul>
<li>데이터 소스를 변경하지 않음</li>
<li>Iterator처럼 일회용</li>
<li>작업을 내부 반복으로 처리</li>
</ul>
<hr>
<h2 id="👀-제네릭generics">👀 제네릭(Generics)</h2>
<h5 id="다양한-타입의-객체들을-다루는-메서드나-컬렉션-클래스에-컴파일-시의-타입-체크를-해주는-기능">다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능</h5>
<h3 id="장점">장점</h3>
<ul>
<li>타입 안정성 제공</li>
<li>타입 체크와 형변환 생략 가능으로 인한 코드의 간결화</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 객체지향 프로그래밍 기초]]></title>
            <link>https://velog.io/@sssung_eun/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@sssung_eun/%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Sat, 16 Jul 2022 12:21:37 GMT</pubDate>
            <description><![CDATA[<h2 id="👀-자바의-데이터-타입">👀 자바의 데이터 타입</h2>
<h5 id="cf-자바에서-데이터를-다루는-최소단위--1-byte-8-bit">cf) 자바에서 데이터를 다루는 최소단위 : 1 byte (8 bit)</h5>
<h3 id="기본형privitive-type">기본형(privitive type)</h3>
<ul>
<li>실제 값(data) 저장</li>
<li>참조형 변수 간의 연산을 할 수 없으므로 실제 연산에 사용되는 것은 모두 기본형 변수임</li>
</ul>
<ol>
<li>논리형 - boolean (default : false, 1 byte)</li>
<li>문자형 - char (2 byte 양수 유니코드 정수)</li>
<li>정수형 - byte, short (2), <Strong>int (4)</Strong>, long (8)</li>
<li>실수형 - float(4), <Strong>double(8)</Strong></li>
</ol>
<h3 id="참조형reference-type">참조형(reference type)</h3>
<ul>
<li>어떤 값이 저장되어 있는 주소(memory address)를 값으로 갖음</li>
<li>8개의 기본형을 제외한 나머지 타입</li>
</ul>
<hr>
<h2 id="👀-클래스class와-객체object">👀 클래스(Class)와 객체(Object)</h2>
<h3 id="클래스">클래스</h3>
<ul>
<li>객체를 정의한 &#39;설계도(blueprint)&#39; 또는 &#39;틀(frame)’</li>
<li>객체를 생성하는데 사용</li>
</ul>
<h3 id="객체">객체</h3>
<ul>
<li>클래스에 정의되고 설계된 내용 그대로 생성됨</li>
<li>속성(property) : member variable, attribute, field, state</li>
<li>기능(function) : method, function, behavior</li>
</ul>
<hr>
<h2 id="👀-생성자constructor">👀 생성자(Constructor)</h2>
<ul>
<li>인스턴스가 생성될 때 호출되는 &#39;인스턴스 초기화 메서드&#39;</li>
<li>클래스 내에 선언되며, 리턴값이 없음</li>
<li>생성자의 이름과 클래스 이름이 동일해야 함</li>
<li>인스턴스는 생성자가 생성하는 것이 아니라 <Strong>연산자 new</Strong>가 생성</li>
<li>인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드</li>
</ul>
<h3 id="this--생성자"><code>this()</code> : 생성자</h3>
<ul>
<li>반드시 생성자의 내부에서만 사용할 수 있음</li>
<li>반드시 생성자의 첫 줄에 위치해야 함</li>
</ul>
<h3 id="this--참조변수"><code>this</code> : 참조변수</h3>
<ul>
<li>인스턴스 자신을 가리키는 참조변수로, 인스턴스의 주소가 저장되어 있음</li>
<li>모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재</li>
</ul>
<hr>
<h2 id="👀-static-키워드">👀 <code>static</code> 키워드</h2>
<ul>
<li>&#39;클래스의&#39; 또는 &#39;공통적인&#39;의 의미를 가짐</li>
<li>하나의 클래스로부터 생성되었더라도 각기 다른 값을 갖는 인스턴스 변수와 달리 클래스 변수(<code>static</code> 멤버 변수)는 하나의 변수를 모든 인스턴스가 공유하기 때문에, 인스턴스에 관계없이 동일한 값을 가짐</li>
<li>인스턴스를 생성하지 않고도 호출 가능</li>
</ul>
<hr>
<h2 id="👀-내부-클래스inner-class">👀 내부 클래스(Inner Class)</h2>
<h3 id="장점">장점</h3>
<ul>
<li>내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있음</li>
<li>코드의 복잡성을 줄일 수 있음 (캡슐화 encapsulation)</li>
</ul>
<h3 id="멤버-내부-클래스">멤버 내부 클래스</h3>
<ul>
<li>인스턴스 내부 클래스와 정적 내부클래스 </li>
<li>외부 클래스의 멤버변수 선언위치에 선언</li>
</ul>
<h3 id="지역-내부-클래스">지역 내부 클래스</h3>
<ul>
<li>외부 클래스의 메서드나 초기화블럭 안에 선언</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Java] 변수(Variable)와 타입(Type), 문자열(String)]]></title>
            <link>https://velog.io/@sssung_eun/Java-%EB%B3%80%EC%88%98Variable%EC%99%80-%ED%83%80%EC%9E%85Type-%EB%AC%B8%EC%9E%90%EC%97%B4String</link>
            <guid>https://velog.io/@sssung_eun/Java-%EB%B3%80%EC%88%98Variable%EC%99%80-%ED%83%80%EC%9E%85Type-%EB%AC%B8%EC%9E%90%EC%97%B4String</guid>
            <pubDate>Mon, 04 Jul 2022 12:58:17 GMT</pubDate>
            <description><![CDATA[<h2 id="타입-변환">타입 변환</h2>
<ul>
<li>자동 타입 변환<ul>
<li>크기가 작은 타입에서 큰 타입으로 변환하는 경우</li>
<li>더 정밀한 타입으로 변환하는 경우
<code>byte(1) -&gt; short(2)/char(2) -&gt; int(4) -&gt; long(8) -&gt; float(4) -&gt; double(8)</code>  </li>
</ul>
</li>
<li>수동 타입 변환</li>
</ul>
<h2 id="string-타입의-변수-선언과-할당">String 타입의 변수 선언과 할당</h2>
<ul>
<li>문자열 리터럴 할당 : <code>String name1 = &quot;seongeun&quot;;</code></li>
<li>String 클래스 인스턴스 생성 : <code>String name2 = new String(&quot;seongeun&quot;);</code></li>
</ul>
<p>두 방식 모두 실제 문자열의 내용을 값으로 갖고 있는 기본 타입이 아닌, 문자열이 존재하는 메모리 공간 상의 주소값을 저장하고 있는 참조 타입이다.
<code>name1</code>과 <code>name2</code>의 문자열 내용이 동일한지를 비교하기 위해서는 <code>==</code>연산자가 아니라 <code>equals()</code>메서드를 사용해야 한다.
<code>name2</code>는 String 클래스를 통해 생성된 인스턴스의 주소값을 가리키고 있기 때문이다.</p>
<h2 id="stringbuilder와-stringbuffer">StringBuilder와 StringBuffer</h2>
<p>String 클래스로 생성한 문자열을 더하기 위해서는 매번 새로운 인스턴스를 생성해야 한다. 문자열이 길어지면 비효율적이므로, <code>StringBuilder</code> 또는 <code>StringBuffer</code>를 활용한다.</p>
<p>참고 : <a href="https://velog.io/@heoseungyeon/StringBuilder%EC%99%80-StringBuffer%EB%8A%94-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80">https://velog.io/@heoseungyeon/StringBuilder%EC%99%80-StringBuffer%EB%8A%94-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EC%9E%88%EB%8A%94%EA%B0%80</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Git]]></title>
            <link>https://velog.io/@sssung_eun/Git</link>
            <guid>https://velog.io/@sssung_eun/Git</guid>
            <pubDate>Fri, 01 Jul 2022 14:43:34 GMT</pubDate>
            <description><![CDATA[<p>오늘 처음으로 <span style="background-color: #fff5b1">버전 관리, 협업, 백업</span>을 위해 중요한 git을 사용해봤다.
함께한 페어분께서 잘 알려주셔서 꽤 수월하게 이해했다.</p>
<p>Git Bash나 Ubunto 또는 터미널을 이용하여 실행하면 되는데,
윈도우 환경에서 Ubunto를 사용할 때는 <code>cd /mnt/c</code> 명령어를 통해 디렉토리 위치를 변경해준 뒤 사용하면 된다!</p>
<p><img src="https://velog.velcdn.com/images/sssung_eun/post/5c701017-0944-47a3-8570-f7bc40460a77/image.PNG" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sssung_eun/post/7f63f9f1-19b7-440f-9100-e27a5b03423d/image.PNG" alt=""></p>
<ul>
<li><code>push</code>는 자신의 repository에만 가능하며,
<code>remote add</code>를 통해 원격 repository에 연결 후에 할 수 있음<ul>
<li><code>pull</code>은 remote repository가 설정되어 있고 local repository에 병합해주고,
<code>clone</code>은 그렇지 않음</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux]]></title>
            <link>https://velog.io/@sssung_eun/Linux</link>
            <guid>https://velog.io/@sssung_eun/Linux</guid>
            <pubDate>Thu, 30 Jun 2022 11:55:50 GMT</pubDate>
            <description><![CDATA[<h2 id="cli-기본-명령어">CLI 기본 명령어</h2>
<p>우리가 평소 친숙하게 사용하는 컴퓨터 제어 방식은 그래픽을 통한 GUI(Graphic User Interface)이다.
GUI는 그래픽으로 인해 컴퓨터 자원을 많이 사용하기 때문에 CLI(Command Line Interface)에 비해 속도가 느리다.
같은 맥락으로 CLI는 그래픽 작업이 없기 때문에 컴퓨터 자원을 적게 사용하여 GUI에 비해 속도가 빠르다.
이처럼 CLI와 GUI는 안정성과 속도에서의 차이가 있다.</p>
<ul>
<li>pwd : print working directory, 현재 위치 확인</li>
<li>mkdir : make directories, 폴더 생성</li>
<li>ls : list, 특정 폴더에 포함된 파일이나 폴더 확인<ul>
<li>옵션 -a : all, 모든 항목 출력</li>
<li>옵션 -l : 폴더나 파일의 포맷을 전부 표현</li>
</ul>
</li>
<li>cd : change directory, 폴더 진입</li>
<li>touch : 파일 생성</li>
<li>&gt; : 실행 결과를 파일로 저장</li>
<li>echo : echo 뒤의 내용을 화면에 출력</li>
<li>cat : 파일의 내용을 터미널에 출력</li>
</ul>
<ul>
<li>rm : remove, 휴지통을 거치지 않고 폴더나 파일 삭제<ul>
<li>옵션 -r : recursive</li>
<li>옵션 -f : force</li>
</ul>
</li>
<li>mv : move, 폴더나 파일의 이름 또는 위치 변경</li>
<li>cp : copy, 폴더나 파일 복사</li>
<li>sudo : 관리자 권한 획득</li>
<li>/ : 루트 폴더</li>
<li>~ : 홈 디렉토리, 루트 폴더부터 사용자 폴더까지의 경로 축약 형태</li>
<li>. : 현재 디렉토리</li>
<li>.. : 상위 디렉토리</li>
</ul>
<p>사용중인 OS가 Windows 환경이기 때문에 WSL(Windows Subsystem for Linux)를 통해 리눅스 터미널을 사용했다.
윈도우에는 명령 프롬프트(cmd), 파워쉘(Windows PowerShell), 윈도우 터미널과 같이 세 가지의 명령 도구가 있어서 그 차이점이 궁금했다.
<a href="https://junetony.junebest.com/entry/%EB%AA%85%EB%A0%B9-%ED%94%84%EB%A1%AC%ED%94%84%ED%8A%B8-vs-%ED%8C%8C%EC%9B%8C%EC%89%98-vs-%EC%9C%88%EB%8F%84%EC%9A%B0-%ED%84%B0%EB%AF%B8%EB%84%90-%EC%B0%A8%EC%9D%B4%EC%A0%90">세 가지 차이점 참고 사이트</a></p>
<hr>
<h2 id="패키지와-패키지-매니저">패키지와 패키지 매니저</h2>
<hr>
<h2 id="사용-권한">사용 권한</h2>
<hr>
<h2 id="환경-변수">환경 변수</h2>
]]></description>
        </item>
        <item>
            <title><![CDATA[Flexbox]]></title>
            <link>https://velog.io/@sssung_eun/Flexbox</link>
            <guid>https://velog.io/@sssung_eun/Flexbox</guid>
            <pubDate>Tue, 28 Jun 2022 14:01:39 GMT</pubDate>
            <description><![CDATA[<h2 id="부모-요소에-적용하는-속성">부모 요소에 적용하는 속성</h2>
<h4 id="1--display-flex">1.  <code>display: flex</code></h4>
<ul>
<li>flexbox를 사용하기 위한 레이아웃 구성 방법<h4 id="2-flex-direction">2. <code>flex-direction</code></h4>
<ul>
<li>자식 요소들을 정렬할 축 설정</li>
<li>속성 : <code>row(기본값)</code>, <code>row-reverse</code>, <code>column</code>, <code>column-reverse</code><h4 id="3-flex-wrap-nowrap">3. <code>flex-wrap: nowrap</code></h4>
</li>
<li>자식 요소들의 크기가 부모 요소의 크기를 넘었을 때, 줄 바꿈 유무 설정</li>
<li>속성 : <code>nowrap(기본값)</code>, <code>wrap</code>, <code>wrap-reverse</code><h4 id="4-flex-flow">4. <code>flex-flow</code></h4>
</li>
<li>아래와 같이 <code>flex-direction</code>과 <code>flex-wrap</code>를 한번에 작성 가능<pre><code>.container {
display: flex;
flex-flow: column wrap;
}</code></pre><h4 id="5-justify-content">5. <code>justify-content</code></h4>
</li>
</ul>
</li>
</ul>
<ul>
<li>자식 요소들을 축의 수평 방향(축과 동일한 방향)으로 어떻게 정렬할지 설정</li>
<li>속성 : <code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>space-between</code>, <code>space-around</code></li>
</ul>
<h4 id="6-align-items">6. <code>align-items</code></h4>
<ul>
<li>자식 요소들을 축의 수직 방향으로 어떻게 정렬할지 설정</li>
<li>속성 : <code>stretch</code>, <code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>baseline</code></li>
</ul>
<h4 id="7-align-content">7. <code>align-content</code></h4>
<ul>
<li><code>flex-wrap: wrap</code>으로 인해 여러 줄이 발생했을 경우, 자식 요소들을 축의 수평 방향(축과 동일한 방향)으로 어떻게 정렬할지 설정</li>
<li>속성 : <code>stretch</code>, <code>flex-start</code>, <code>flex-end</code>, <code>center</code>, <code>space-between</code>, <code>space-around</code></li>
</ul>
<hr>
<h2 id="자식-요소에-적용하는-속성">자식 요소에 적용하는 속성</h2>
<h4 id="1-flex-grow">1. <code>flex-grow</code></h4>
<ul>
<li>팽창 지수</li>
<li></li>
</ul>
<h4 id="2-flex-shrink">2. <code>flex-shrink</code></h4>
<ul>
<li>수축 지수</li>
</ul>
<h4 id="3-flex-basis">3. <code>flex-basis</code></h4>
<ul>
<li>기본 크기</li>
</ul>
<h4 id="4-flex">4. <code>flex</code></h4>
<ul>
<li>아래와 같이 <code>flex-grow</code>, <code>flex-shrink</code>, <code>flex-basis</code>를 한 번에 작성 가능<pre><code>.item {
  flex: 1 0 auto;
}</code></pre></li>
</ul>
<h4 id="5-align-self">5. <code>align-self</code></h4>
<h4 id="6-order">6. <code>order</code></h4>
<hr>
<p>와이어프레임 작성 툴 사이트
<a href="https://ovenapp.io/">https://ovenapp.io/</a>
<a href="https://www.figma.com/">https://www.figma.com/</a></p>
<p>css 속성 참고 사이트
<a href="https://css-tricks.com/snippets/css/a-guide-to-flexbox/">https://css-tricks.com/snippets/css/a-guide-to-flexbox/</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML / CSS]]></title>
            <link>https://velog.io/@sssung_eun/HTML</link>
            <guid>https://velog.io/@sssung_eun/HTML</guid>
            <pubDate>Mon, 27 Jun 2022 12:31:17 GMT</pubDate>
            <description><![CDATA[<h2 id="hypertext-a-hrefhttpskowikipediaorgwikieba788ed81acec9785_ec96b8ec96b4-target_blank-stylecolorcornflowerbluemarkupa-language">HyperText <a href="https://ko.wikipedia.org/wiki/%EB%A7%88%ED%81%AC%EC%97%85_%EC%96%B8%EC%96%B4" target="_blank" style="color:CornflowerBlue">Markup</a> Language</h2>
<ul>
<li>웹페이지의 뼈대 역할</li>
<li>시맨틱 태그
division(분할, 구분)에서 나온 태그 <code>&lt;div&gt;</code>와 동일한 기능을 하며, 
의미를 짐작하기 쉽도록 사용
ex) <code>&lt;header&gt;</code>, <code>&lt;main&gt;</code>, <code>&lt;section&gt;</code>, <code>&lt;nav&gt;</code>, <code>&lt;aside&gt;</code>, <code>&lt;footer&gt;</code> 등</li>
</ul>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;title&gt;페이지 제목&lt;/title&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;index.css&quot; /&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;layout.css&quot; /&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;header&gt;This is the header.&lt;/header&gt;
    &lt;div class=&quot;container&quot;&gt;
      &lt;nav&gt;
        &lt;h4&gt;This is the navigation section.&lt;/h4&gt;
        &lt;ul&gt;
          &lt;li class=&quot;menu-item selected&quot;&gt;unordered list 1&lt;/li&gt;
          &lt;li class=&quot;menu-item&quot;&gt;unordered list 2&lt;/li&gt;
          &lt;li class=&quot;menu-item selected&quot;&gt;unordered list 3&lt;/li&gt;
          &lt;li class=&quot;menu-item&quot;&gt;unordered list 4&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/nav&gt;
      &lt;main&gt;
        &lt;h1&gt;This is the main content.&lt;/h1&gt;
        &lt;p&gt;...&lt;/p&gt;
      &lt;/main&gt;
      &lt;aside&gt;
        &lt;h4&gt;This is an aside section.&lt;/h4&gt;
      &lt;/aside&gt;
    &lt;/div&gt;
    &lt;footer&gt;This is the footer.&lt;/footer&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><hr>
<h2 id="cascading-style-sheets">Cascading Style Sheets</h2>
<ul>
<li>UI와 UX를 위해 HTML의 웹페이지 뼈대를 스타일 및 레이아웃 하는 언어</li>
<li><a href="https://ko.wikipedia.org/wiki/%EA%B4%80%EC%8B%AC%EC%82%AC_%EB%B6%84%EB%A6%AC" target="_blank" style="color:CornflowerBlue">관심사 분리</a> 측면에서 HTML 안에 CSS를 정의하는 것을 권장하지 않음</li>
</ul>
<pre><code>body {
  margin: 0;
  padding: 0;
  background: #fff;
  color: #4a4a4a;
}
header, footer {
  font-size: large;
  text-align: center;
  padding: 0.3em 0;
  background-color: #4a4a4a;
  color: #f9f9f9;
}
.menu-item {
  text-decoration: underline;
}
.selected {
  font-weight: bold;
  color: #009999;
}</code></pre><hr>
<p>레퍼런스 사이트
<a href="https://www.w3schools.com/">https://www.w3schools.com/</a>
<a href="https://developer.mozilla.org/ko/">https://developer.mozilla.org/ko/</a></p>
]]></description>
        </item>
    </channel>
</rss>