<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>seb_bbi__.log</title>
        <link>https://velog.io/</link>
        <description>코딩도 하고, 디자인도 합니다. 디자인이 좀 더 좋은 건 안비밀</description>
        <lastBuildDate>Fri, 24 Jun 2022 17:03:51 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>seb_bbi__.log</title>
            <url>https://images.velog.io/images/seb_bbi__/profile/b1ff4e43-5c52-480f-8c6a-a3c0cd562559/스크린샷 2019-10-25 03.03.41.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. seb_bbi__.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/seb_bbi__" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[산학 1주차]]></title>
            <link>https://velog.io/@seb_bbi__/%EC%82%B0%ED%95%99-1%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@seb_bbi__/%EC%82%B0%ED%95%99-1%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Fri, 24 Jun 2022 17:03:51 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/seb_bbi__/post/dfb1f767-fdca-40bd-b73c-736ceab46e8d/image.jpeg" alt=""></p>
<p>1주차가 지나가버렸다..!
두둥짝</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[왜 8 Point 그리드를 맞춰야 하죠?]]></title>
            <link>https://velog.io/@seb_bbi__/%EC%99%9C-8-Point-%EA%B7%B8%EB%A6%AC%EB%93%9C%EB%A5%BC-%EB%A7%9E%EC%B6%B0%EC%95%BC-%ED%95%98%EC%A3%A0</link>
            <guid>https://velog.io/@seb_bbi__/%EC%99%9C-8-Point-%EA%B7%B8%EB%A6%AC%EB%93%9C%EB%A5%BC-%EB%A7%9E%EC%B6%B0%EC%95%BC-%ED%95%98%EC%A3%A0</guid>
            <pubDate>Mon, 10 Jan 2022 07:18:40 GMT</pubDate>
            <description><![CDATA[<p><del>이 글은 초보 개자이너의 공부 과정이 담겼으니 매우 주절주절할 예정입니다 ..</del></p>
<p>인턴을 하던 중 디자이너님께서 이렇게 말씀하셨다.</p>
<blockquote>
<p>8px 그리드도 한번 배경에 깔아놓고 작업해보는 연습도 해보시길 추천합니당:)</p>
</blockquote>
<p><img src="https://images.velog.io/images/seb_bbi__/post/5e357903-ed44-4585-895d-b0312323a56e/image.png" alt="">
<strong>왜 맞춰야 한다는 걸까?!</strong> 라는 호기심에 일단 기존에 해뒀던 피그마 작업들을 8의 배수로 조금씩 찌끄려보기 시작했다.</p>
<p>그러나 사람이 모름지기 &#39;왜?&#39;라는 궁금증이 해소가 안 되면 답답하지 않은가?! (말투 왜이런가?!) 그래서 구글링 해보았다. 아래부터는 내가 공부한 내용 요약본.</p>
<hr>
<h3 id="요약-디자인-에셋의-사이즈-간격-및-모든-수치를-8pt-단위로-맞추면-픽셀이-깨지지-않고-개발-친화적인-디자인을-할-수-있다-">요약: 디자인 에셋의 사이즈, 간격 및 모든 수치를 8pt 단위로 맞추면 픽셀이 깨지지 않고, 개발 친화적인 디자인을 할 수 있다-!</h3>
<p><img src="https://images.velog.io/images/seb_bbi__/post/28470a20-68b4-4e67-9327-f93d53c43281/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.43.25.png" alt=""><em><strong>px이 아니라 pt(dp)인 이유?</strong></em> : 화소밀도에 따라 달라지는 px에 비해, pt(dp)는 같은 비율로 보여지는 독립적인 수치기 때문이다.</p>
<h4 id="적용-가능한-디자인-요소">적용 가능한 디자인 요소</h4>
<ul>
<li>Font Sizes</li>
<li>Line heights</li>
<li>Padding</li>
<li>Margins</li>
<li>Radius</li>
<li>Fixed Width</li>
<li>Fixed heights(잘 사용되지 않음.)</li>
</ul>
<h4 id="the-box-model">The Box Model</h4>
<ul>
<li>구성 요소: border, margin, padding, dimensions of the element itself
<img src="https://images.velog.io/images/seb_bbi__/post/f39594b7-7352-4b53-ae3b-816514fd0143/image.png" alt=""></li>
</ul>
<h4 id="what-are-pointspt">What are points(pt)?</h4>
<p><strong>화면 해상도</strong>에 따라 달라지는 <strong>공간을 측정하는 값</strong>이다. 
1x resolution(@1x) 이라면 1pt = 1px이고,
@2x라면 1pt=4px이 된다.
<img src="https://images.velog.io/images/seb_bbi__/post/95b3251a-08a5-4a83-850d-c2424aebf181/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.52.25.png" alt=""></p>
<h4 id="기본-원리-방법">기본 원리, 방법</h4>
<p>8의 배수를 사용해 블록 및 인라인 요소의 치수, 패딩 및 여백을 정의한다.
<img src="https://images.velog.io/images/seb_bbi__/post/025bb32c-1165-4ef5-aa24-910db349b6d0/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.04.37.png" alt=""></p>
<ul>
<li><strong>하드 그리드</strong> : 8의 배수로 정의된 그리드에 요소를 배치. 이미 4 포인트 그리드로 디자인된 Material Design은 자연스럽게 이 방법을 따른다.
<img src="https://images.velog.io/images/seb_bbi__/post/2f9d8768-0f70-4321-a564-36d655bd0fda/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.16.28.png" alt=""></li>
<li><strong>소프트 그리드</strong> : 개별 요소 사이의 8의 배수를 측정. 많은 시스템 UI 요소가 짝수 그리드로 정해지지 않은 iOS에 유리할 수 있다.
<img src="https://images.velog.io/images/seb_bbi__/post/712eba63-6653-4996-939b-bb02c8ee0635/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.16.47.png" alt=""></li>
</ul>
<h4 id="왜-사용해야-하는가">왜 사용해야 하는가?</h4>
<p>그리드가 없으면 앱 전체의 디자인 퀄리티가 전반적으로 저하되어 보인다. 또한 서비스 일관성 부여와 유지보수가 어렵고, <strong>디자인과 개발팀이 같은 시각을 공유할 수 없다.</strong>
<img src="https://images.velog.io/images/seb_bbi__/post/6611fd1e-2b61-4e6c-bc9a-326c8f054295/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.11.18.png" alt="">크기나 여백의 요소에 8과 같은 짝수를 사용하면 <strong>다양한 디바이스를 쉽고 일관되게 조정할 수 있다.</strong> 1.5배 해상도의 디바이스들은 홀수를 깨끗이 렌더링하는 데 어려움을 겪는다.</p>
<ul>
<li>For 디자이너 : 요소들끼리 퀄리티가 저해되지 않고, 디자인 일관성을 유지하면서 의사 결정 과정을 최소화할 수 있다.</li>
<li>For 팀 : 디자이너와 개발자 간의 쉬운 의사소통 시스템 (개발자가 매번 측정하지 않고도 8pt 단위로 쉽게 생각할 수 있다.)</li>
<li>For 사용자 : 일관된 느낌을 주어 브랜드 신뢰성을 높인다. 어떤 디바이스던 흐릿한, 깨지는 오프셋이 없다.
<img src="https://images.velog.io/images/seb_bbi__/post/4b0ecd88-046a-4aea-953a-db8827084b78/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.13.40.png" alt=""></li>
</ul>
<hr>
<h3 id="🍯tip-피그마에서-8의-배수로-간격-조정하기">[🍯TIP] 피그마에서 8의 배수로 간격 조정하기</h3>
<p>참고: <a href="https://designer-story.tistory.com/39?category=939952">figma에서 8의 배수로 간격 조정하는 기능</a></p>
<hr>
<h3 id="new-8px-그리드의-시대가-끝나고-4px-그리드의-시대가-열릴까">[NEW!] 8px 그리드의 시대가 끝나고, 4px 그리드의 시대가 열릴까?</h3>
<p>참고: <a href="https://yozm.wishket.com/magazine/detail/720/">8px 그리드의 시대가 끝나고, 4px 그리드의 시대가 열릴까?</a>
<img src="https://images.velog.io/images/seb_bbi__/post/75add611-fa9d-4fc7-b632-2ca55405975d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%204.39.52.png" alt=""></p>
<hr>
<p>출처, 참고 (감사합니다 꾸벅)
<a href="http://uidesignguides.com/8-point-%EA%B7%B8%EB%A6%AC%EB%93%9C%EB%A1%9C-%EB%94%94%EC%9E%90%EC%9D%B8%ED%95%98%EA%B8%B0/">8-point 그리드로 디자인하기</a>
<a href="https://www.thegoodlineheight.com/">The good line-height</a>
<a href="https://spec.fm/specifics/8-pt-grid">The 8-Point Grid</a>
<a href="https://brunch.co.kr/@blackindigo-red/8">8-Point 그리드 시스템</a>
<a href="https://www.insilicogen.com/blog/385">8 Point Grid, 더 적은 결정 = 더 적은 시간</a>
<a href="https://designer-story.tistory.com/39?category=939952">figma에서 8의 배수로 간격 조정하는 기능</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA['네이티브 앱이 뭐에요?' 기초적인 코딩(플러터) 궁금증 모음]]></title>
            <link>https://velog.io/@seb_bbi__/%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%B1%EC%9D%B4-%EB%AD%90%EC%97%90%EC%9A%94-%EA%B8%B0%EC%B4%88%EC%A0%81%EC%9D%B8-%EA%B6%81%EA%B8%88%EC%A6%9D-%EB%AA%A8%EC%9D%8C</link>
            <guid>https://velog.io/@seb_bbi__/%EB%84%A4%EC%9D%B4%ED%8B%B0%EB%B8%8C-%EC%95%B1%EC%9D%B4-%EB%AD%90%EC%97%90%EC%9A%94-%EA%B8%B0%EC%B4%88%EC%A0%81%EC%9D%B8-%EA%B6%81%EA%B8%88%EC%A6%9D-%EB%AA%A8%EC%9D%8C</guid>
            <pubDate>Mon, 10 Jan 2022 01:15:19 GMT</pubDate>
            <description><![CDATA[<p><del>직접 그린 홍삼캔디다. 귀여운..</del></p>
<p>어느 날 생각한 건데 나는 &#39;네이티브 앱&#39;과 같은 기초적인 용어에 대해 정확한 답을 정의하지 못하고 있었다.
그걸 반성하는 차원에서 글로 정리하는 나의 궁금증들- (특히 플러터와 관련된.)</p>
<p>계속 추가하는 중.</p>
<hr>
<h2 id="목차-🚙">목차 🚙</h2>
<h4 id="1-네이티브-앱-모바일웹앱-하이브리드앱">1. 네이티브 앱? 모바일웹앱? 하이브리드앱?</h4>
<h4 id="2-api">2. API?</h4>
<h4 id="3-플러터-dispose-생명주기">3. [플러터] dispose(), 생명주기?</h4>
<h4 id="4-플러터-statelessful-widget">4. [플러터] Stateless/ful Widget?</h4>
<h4 id="5-플러터-final-const">5. [플러터] final? const?</h4>
<hr>
<h3 id="1-네이티브-앱-모바일웹앱-하이브리드앱-1">1. 네이티브 앱? 모바일웹앱? 하이브리드앱?</h3>
<p>출처: <a href="https://m.blog.naver.com/acornedu/221012420292">https://m.blog.naver.com/acornedu/221012420292</a></p>
<h4 id="1네이티브-앱">1)네이티브 앱</h4>
<p>우리가 흔히 말하는 &#39; 어플리케이션 &#39;이다. 모바일 기기에 최적화 된 언어로 개발된 앱으로, 안드로이드 SDK를 이용해 <strong>Java</strong>로 만드는 앱과 iOS 기반 SDK를 이용해 <strong>Swift</strong>로 만드는 대부분의 앱이 여기에 속한다.</p>
<h4 id="2모바일-웹앱">2)모바일 웹앱</h4>
<p>모바일웹과 네이티브앱을 결합한 형태로, 모바일웹의 특징을 가지면서 네이티브앱의 장점을 갖고 있다. <strong>모바일웹 보다는 조금 더 모바일에 최적화 된 앱</strong>을 의미한다. 웹앱도 모바일웹처럼 모바일 브라우저에서 실행되지만, 풀 브라우저 방식이 아닌 단일 페이지 방식으로 화면을 진화해 <strong>속도가 빠르다</strong>.</p>
<p><em><em>모바일웹이란?</em>
모바일에서 PC용 사이트의 데스크탑 브라우저에서 실행되는 기능(글자폰트와 이미지, 터치 아이콘, 플래시 등)을 모바일에 맞추어 표현한 사이트를 의미합니다. 쉽게 말해, *</em>PC용 홈페이지를 모바일 스크린의 크기에 맞춰 줄여 놓은 것**이라고 생각하시면 됩니다.</p>
<h4 id="3하이브리드-앱">3)하이브리드 앱</h4>
<p>하이브리드 앱은 &#39;네이티브앱 + 웹앱&#39; 이라고 생각하면 쉽다. 일반적으론 <strong>네이티브웹에 웹view를 띄워 웹앱을 실행시키는 것이 보편적</strong>이며 <strong>양쪽의 API 를 모두 사용할 수 있는것이 큰 장점</strong>이다.</p>
<h4 id="장단점-정리">장단점 정리</h4>
<table>
<thead>
<tr>
<th>네이티브 앱</th>
<th>모바일 웹앱</th>
<th>하이브리드 앱</th>
</tr>
</thead>
<tbody><tr>
<td>성능이 가장 높다.</td>
<td>웹사이트를 보는 것이기에 따로 설치할 필요가 없다.</td>
<td>네이티브 API, 브라우저 API를 이용한 다양한 개발이 가능하다.</td>
</tr>
<tr>
<td>네이티브 API를 호출하여 사용하기 때문에 플랫폼과 밀착되어 있다.</td>
<td>모든 기기, 브라우저에서 접근 가능하다.</td>
<td>웹개발 기술을 사용해 앱 개발이 가능하다.</td>
</tr>
<tr>
<td>해당 언어에 익숙하다면 좀 더 쉽게 접근 가능하다.</td>
<td>유지보수가 용이하다.</td>
<td>한 번의 개발로 다수의 플랫폼에 대응할 수 있다.</td>
</tr>
<tr>
<td>-&gt; 아래부터는 단점</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>플랫폼에 한정적이다.</td>
<td>플랫폼 API(카메라 등)를 사용할 수 없고 브라우저 API만 가능하다.</td>
<td>네이티브 기능에 접근하려면 결국엔 네이티브 개발 지식이 필요하다.</td>
</tr>
<tr>
<td>플랫폼에서 요구하는 언어에 제약적이다.(해당 언어+플랫폼의 API 다루는데 익숙해져야 한다.)</td>
<td>친화적인 터치 앱을 개발하기 까다롭다.</td>
<td>웹뷰에서 앱을 실행하기 때문에 앱의 성능=브라우저의 성능이 된다.</td>
</tr>
<tr>
<td>-</td>
<td>네이티브, 하이브리드 앱보다 실행이 까다롭다. (브라우저를 열고 검색해야 함.)</td>
<td>UI 프레임워크 도구를 사용하지 않는다면 개발자가 UI제작까지 해야 한다.</td>
</tr>
</tbody></table>
<hr>
<h3 id="2-api-1">2. API?</h3>
<p><a href="http://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/">출처 1</a>, <a href="http://blog.wishket.com/soap-api-vs-rest-api-%eb%91%90-%eb%b0%a9%ec%8b%9d%ec%9d%98-%ea%b0%80%ec%9e%a5-%ed%81%b0-%ec%b0%a8%ec%9d%b4%ec%a0%90%ec%9d%80/">출처 2</a> </p>
<p><img src="https://images.velog.io/images/seb_bbi__/post/ce1db88a-1f30-488f-8ded-55bb7531499e/IMG_3868.jpg" alt="">
<del>그림이 좀 요상하긴 한데 정확하다</del></p>
<p>API는 <strong>프로그램들의 상호작용을 돕는 매개체</strong>로 볼 수 있다.</p>
<blockquote>
<p>API는 어떤 <strong>서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구</strong>입니다. API를 이용하면 두 개의 소프트웨어가 서로 통신을 주고받을 수 있으며, 이는 우리가 모바일을 이용해서 하는 모든 행동들의 기반을 이루고 있다고 할 수 있습니다.</p>
</blockquote>
<h4 id="1api의-역할">1)API의 역할</h4>
<ul>
<li><p>서버와 DB에 대한 출입구 : 모든 사람이 DB에 접근하면 안 된다. 따라서 우리가 가진 서버와 DB간 출입구 역할을 하여 허용된 사람에게만 접근성을 부여해 준다.</p>
</li>
<li><p>애플리케이션과 기기 간 원활한 통신 : 데이터를 원활히 주고받을 수 있도록 돕는다.</p>
</li>
<li><p>모든 접속을 표준화한다. : 기계/운영체제와 상관없이 누구나 동일한 액세스를 얻을 수 있다. 쉽게 말해 범용 플러그처럼 작동한다.</p>
</li>
</ul>
<h4 id="2api의-유형">2)API의 유형</h4>
<ul>
<li><p><strong>private API</strong> : 내부 API로, 회사 개발자가 내부적으로 발행하여 제 3자에게 노출되지 않는다. 자체 제품과 서비스를 개선하기 위함.</p>
</li>
<li><p><strong>public API</strong> : 개방형 API로, 모두에게 공개된다.</p>
</li>
<li><p><strong>partner API</strong> : 기업이 데이터 공유에 동의하는 특정인만 사용 가능하다. 비즈니스 관계에서 사용되고, 종종 파트너 회사 간에 소프트웨어 통합을 위해 사용된다.</p>
</li>
</ul>
<h4 id="3api의-장점">3)API의 장점</h4>
<ul>
<li>private API를 이용할 경우 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써 <strong>간소화되고 빠른 프로세스 처리</strong>가 가능하다.</li>
<li>SW 통합 시에 개발자들 간 협업이 용이하다.</li>
<li>Public API와 Partner API를 사용하면, 기업은 타사 데이터를 활용해 브랜드 인지도를 높일 수 있다. 또한 고객 DB를 확장해 전환율도 높일 수 있다.</li>
</ul>
<h4 id="4api의-구조">4)API의 구조</h4>
<blockquote>
<p>SOAP는 프로토콜, REST는 아키텍처 스타일이다.
SOAP는 서비스 인터페이스를 통해서, REST는 URI를 이용해 서버에 접근한다.</p>
</blockquote>
<ul>
<li><p><strong>REST API</strong> : Representational State Transfer. <strong>네트워크를 통해서 컴퓨터들끼리 통신할 수 있게 해주는 아키텍처 스타일</strong>이다. 인터넷 식별자(URI)와 HTTP 프로토콜을 기반으로 하여 단순하다. <strong>데이터 포맷은 브라우저 간 호환성이 좋은 JSON을 사용</strong>한다.
클라이언트와 서버 사이에서 통신할 수 있게 하고, 아키텍처를 만들 수 있게 한다. 즉, REST방식의 API라면, <strong>클라이언트-서버 모델로 구축되었다는 것을 의미</strong>한다.
웹에 최적화되어 있고, 데이터 포맷이 JSON이기 때문에 성능과 확장성이 뛰어나고, 브라우저 간 호환성이 좋다.</p>
</li>
<li><p><strong>SOAP API</strong> : Simple Objecy Access Protocol. 그 자체로 프로토콜이고, REST보다 더 많은 표준이 정해져 있어 조금 더 복잡하다. <strong>보안, 트랜잭션 등을 준수해야 하는 조직에게는 적합한 방식</strong>이 될 수 있다. 웹 서비스 시나리오에 적용하기엔 좋지 않고, <strong>기업용 애플리케이션 작업</strong>에 좀 더 이상적이다.</p>
</li>
<li><p><em>보안 수준이 엄격하다.*</em> SSL을 지원, WS-Security라는 자체 표준 보안 기능도 가지고 있다. 따라서 은행용 앱이나 메시징 앱 등에 선호된다. 성공/반복 실행 로직이 규정되어 있어, <strong>SOAP API를 통해 통신하면 처음부터 끝까지 신뢰성을 제공한다.</strong> ACID를 준수하기 때문에 데이터의 변형을 줄여주고, DB와의 상호작용에 대해 사전에 정확하게 정의하기 때문에 데이터의 무결성을 지켜준다. <strong>금융 정보 등의 민감한 데이터를 주고받을 때 일반적으로 많이 사용된다.</strong></p>
</li>
</ul>
<blockquote>
<p>SOAP는 서버와 매우 긴밀하게 연결되기 때문에 그 통신 방식이 매우 엄격하며, 그래서 수정이나 업데이트를 하는 것이 보다 더 어렵다. REST 방식의 API에서는 클라이언트에서 해당 API가 필요하지 않지만, SOAP 방식의 API에서는 상호작용을 시작할 때조차도 클라이언트에서 API에 관한 모든 정보들을 필요로 한다.</p>
</blockquote>
<h4 id="5-soap-vs-rest">5) SOAP vs REST</h4>
<p>웹서비스에서는 REST API를 택하는 경우가 많고, 기업용 애플리케이션인 경우에는 많은 리소스, 엄격한 보안, 여러 요구 사항의 만족을 위해 SOAP를 택하는 경우가 많다!</p>
<p><img src="https://images.velog.io/images/seb_bbi__/post/9d042cc5-3258-4ba7-889f-354ef2911440/image.png" alt=""></p>
<hr>
<h3 id="3-플러터-dispose-생명주기-1">3. [플러터] dispose(), 생명주기?</h3>
<p><a href="https://brunch.co.kr/@mystoryg/139">출처: 플러터 StatefulWidget 생명주기 (감사하게도 정말 자세히 설명되어 있다.)</a></p>
<p>StatelessWiget은 생명주기가 없고, State 객체를 생성하는 StatefulWidget만 생명주기를 가진다.</p>
<p><img src="https://images.velog.io/images/seb_bbi__/post/708261d9-254d-4222-9f62-e3bc60241143/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%2011.32.55.png" alt=""></p>
<pre><code class="language-dart">// 예) StatefulWidget의 initState에서 스트림을 사용하는 경우, 
// streamController에 할당된 메모리를 닫기 위해.
@override
void dispose() {
    cameraController?.dispose();
    bannerAd?.dispose();
    timer.cancel();
    suepr.dispose();
}</code></pre>
<p>컨트롤러 객체가 제거될 때 변수에 할당된 메모리를 해제하기 위해 사용하는 메소드다.
트리에서 State 객체가 영구적으로 제거될 때 호출된다. 영구적으로 제거되었기 때문에 build()가 다시 호출되지 않는다. 이미 State 객체가 폐기되었기 때문에 dispose()에서 setState()를 호출하면 안 된다.</p>
<hr>
<h3 id="4-플러터-statelessful-widget-1">4. [플러터] Stateless/ful Widget?</h3>
<p><a href="https://brunch.co.kr/@mystoryg/136">출처: 플러터 StatelessWidget</a>
플러터는 모든 UI를 위젯으로 처리한다. 플러터는 크게 두 가지 위젯을 가진다.</p>
<h4 id="1-statelesswidget-이하-stless">1) StatelessWidget (이하 stless)</h4>
<p>상태(State)를 가지지 않는 위젯이다. stless위젯은 build() 함수를 통해 만들어진다. 상태 변화를 감지하지 않기 때문에 <strong>화면 구성 시 최초 한 번만 build()를 호출한 후 다시 호출하지 않는다.</strong></p>
<p>따라서 <em>&#39;어떤 버튼을 누를 시 텍스트가 변경되는 동작&#39;</em> 구현에는 적합하지 않다. 텍스트의 상태 변화를 알지 못하기 때문이다.
Text위젯이 갱신되려면 build()를 다시 해야 하는데, 그러지 못해서 화면 상에는 변화가 없다.</p>
<p>따라서 <strong>stless는 상태 변경이 불필요한 화면 구성에 사용하기 적합하다.</strong></p>
<h4 id="2-statefulwidget-이하-stful">2) StatefulWidget (이하 stful)</h4>
<p>State 객체를 가진다. 거의 대부분의 stful위젯은 createState()를 통해 State 객체를 만드는 작업만 한다. 이 변경 가능한 특징을 갖고 있는 State 객체가 상태 변경 처리를 할 수 있다.</p>
<p><strong>setState() 함수는 build() 함수를 재호출한다</strong>. 따라서 변경된 상태를 위젯에 반영해 화면이 갱신된다.</p>
<h4 id="3-state의-특징">3) State의 특징</h4>
<ol>
<li>위젯이 빌드 완료된 후 읽을 수 있다. 따라서 build() 호출 전 State 설정이 돼야 한다.</li>
<li>위젯이 유효한 동안에 State는 변경될 수 있다.
State는 생성되면 BuildContext에 연결된다.</li>
</ol>
<ul>
<li>BuildContext : 위젯 트리에서 위젯의 위치에 대한 참조. 하나의 BuildContext는 하나의 위젯만 가진다.</li>
<li>Widget Tree : 위젯은 트리 구조로 구성된다.
<img src="https://images.velog.io/images/seb_bbi__/post/e7a1fefb-d5b3-457b-9a73-5fff5637de1f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.00.15.png" alt="">
모든 네모 박스가 다 위젯이다. 부모 위젯, 자식 위젯 개념도 있다.</li>
</ul>
<h4 id="4-플러터의-세-가지-트리">4) 플러터의 세 가지 트리</h4>
<ol>
<li>위젯: 요소의 구성(Configuration)을 기술, 처리한다.</li>
<li>요소: 트리의 특정 위치에서 위젯을 인스턴스화 한다.</li>
<li>렌더 객체: 크기, 레이아웃 등을 다루고 렌더링을 처리한다.
<img src="https://images.velog.io/images/seb_bbi__/post/3b139d00-ee3f-49a5-9b4d-178461ba4a2a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-01-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%201.04.02.png" alt=""></li>
</ol>
<ul>
<li>한 컬러 = 한 BuildContext</li>
<li>컬러 속 흰 박스 = 위젯이 배치된 상태(<u>인스턴스화</u>) = 요소</li>
</ul>
<h4 id="5-인스턴스화">5) 인스턴스화?</h4>
<p>BuildContext에 위젯이 배치된다는 것.
State가 생성되면 BuildContext에 연결되기 때문에! State 생성 시 요소(Element)가 만들어진다는 말과 같다.</p>
<blockquote>
<p>즉, <strong>State 생성 &gt; 트리의 특정 위치를 참조하는 BuildContext 존재 &gt; 해당 BuildContext에 연결 &gt; 연결된 각 BuildContext에 위젯 배치(인스턴스화) &gt; 요소(Element) 생성</strong></p>
</blockquote>
<hr>
<h3 id="5-플러터-final-const-1">5. [플러터] final? const?</h3>
<p><a href="https://zoiworld.tistory.com/703">출처</a></p>
<h4 id="1-공통점">1. 공통점</h4>
<p><strong>한 번 설정한 값을 변경할 수 없다.</strong> 다른 값으로 변경하려고 시도하면 컴파일 오류가 발생한다.</p>
<h4 id="2-차이점">2. 차이점</h4>
<p><strong>const</strong> : 컴파일 타임에서 상수를 정의할 수 있다. 즉, const로 정의한 상수는 런타임에서는 정의되는 값을 설정할 수 없다.
예를 들어, DateTime.now()는 런타임에서 <strong>호출될 때마다 결과 값이 다르기 때문에 const로 설정할 수 없다.</strong></p>
<p><strong>final</strong> : 런타임에서 결정되는 값도 설정할 수 있다.</p>
<pre><code>final List&lt;String&gt; languages = []; //final: 값 추가 가능
const List&lt;String&gt; companies = []; //const: 값 추가 불가
languages.add(&#39;dart&#39;);
/* 둘 다 새로운 배열로 변경하는 건 불가능
// compile error
companies.add(&#39;Google&#39;);
languages = [&#39;Java&#39;];
*/</code></pre><p>즉, final로 선언된 변수는 해당 변수에 <strong>새로운 값이 설정되는 것은 불가능</strong>하지만, <strong>객체나 배열에 값을 추가하는 행위에 대해서는 관여하지 않는다.</strong> </p>
<h4 id="3-final-장점">3. final 장점</h4>
<p>예기치 못한 상황에서 값이 변경되어 발생하는 문제를 해결 가능하다. 멀티 스레딩을 지원하는 경우에는 별도의 예외 처리 없이 간결한 코드를 작성할 수 있다.</p>
<h4 id="4-그런데-왜-const를-써야-할까">4. 그런데 왜 const를 써야 할까?</h4>
<p>요약하면, const가 더 불변의 정도가 강하다.</p>
<blockquote>
<p>const는 <strong>app의 lifecycle에서 절대 변치 않음을 의미</strong>하기 때문에 색상, 글자 크기 등이 고정일 때 그 변수의 앞에 <strong>const를 붙여주어야 flutter 의 build method가 그 부분을 rebuild 하지 않게 되어 app의 속도가 빨라진다.</strong> </p>
</blockquote>
<p>final도 고정 상수이긴 하지만, 상황에 따라 변할 수 있는 (주로 constructor에서 설정되는) 변수 앞에 주로 선언해 줘야 한다.</p>
<h4 id="final은-widget이-생성되는-시점마다는-변경될-수-있지만-한-번-생성된-위젯-내에서의-const-상수는-변경할-수-없다">final은 widget이 생성되는 시점마다는 변경될 수 있지만, 한 번 생성된 위젯 내에서의 const 상수는 변경할 수 없다.</h4>
<p>StatelessWidget이 그 대표적인 예다. 자체적으로 상태를 가지지 않기 때문에 &#39;다른 속성을 가지는 StatelessWidget&#39;으로 바꾸려면 <strong>constructor에 새로운 property 값을 전달하면서</strong> 새로운 위젯을 만들어야 한다. 이때 사용되는 것이 const variable이다. <strong>StatelessWidget의 모든 property는 const variable이다.</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[플러터 기초 참고 사이트]]></title>
            <link>https://velog.io/@seb_bbi__/%ED%94%8C%EB%9F%AC%ED%84%B0-%EA%B8%B0%EC%B4%88-%EC%B0%B8%EA%B3%A0-%EC%82%AC%EC%9D%B4%ED%8A%B8</link>
            <guid>https://velog.io/@seb_bbi__/%ED%94%8C%EB%9F%AC%ED%84%B0-%EA%B8%B0%EC%B4%88-%EC%B0%B8%EA%B3%A0-%EC%82%AC%EC%9D%B4%ED%8A%B8</guid>
            <pubDate>Thu, 02 Dec 2021 09:57:00 GMT</pubDate>
            <description><![CDATA[<p>다양한 위젯들
<a href="https://hevton.tistory.com/484?category=1221672">https://hevton.tistory.com/484?category=1221672</a>
개인적인 플러터 꿀팁 모음 - <a href="https://velog.io/@sangh518/flutter-tips">https://velog.io/@sangh518/flutter-tips</a></p>
<p>하단 내비게이션 바
<a href="https://yoonjaepark.github.io/2020-01-19/flutter-bottom-navigation">https://yoonjaepark.github.io/2020-01-19/flutter-bottom-navigation</a></p>
<p>아이콘 찾기
<a href="https://api.flutter.dev/flutter/material/Icons-class.html">https://api.flutter.dev/flutter/material/Icons-class.html</a></p>
<p>CRUD</p>
<ol>
<li><a href="https://here4you.tistory.com/230">https://here4you.tistory.com/230</a></li>
<li><a href="https://www.youtube.com/watch?v=t4QJoivDNqg">https://www.youtube.com/watch?v=t4QJoivDNqg</a></li>
</ol>
<p><a href="https://github.com/sbis04/flutterfire-samples/blob/crud-firestore/lib/screens/login_screen.dart">https://github.com/sbis04/flutterfire-samples/blob/crud-firestore/lib/screens/login_screen.dart</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[(작성중)Art Project #2 - 구글 로그인]]></title>
            <link>https://velog.io/@seb_bbi__/%EC%9E%91%EC%84%B1%EC%A4%91Art-Project-2-%EA%B5%AC%EA%B8%80-%EB%A1%9C%EA%B7%B8%EC%9D%B8</link>
            <guid>https://velog.io/@seb_bbi__/%EC%9E%91%EC%84%B1%EC%A4%91Art-Project-2-%EA%B5%AC%EA%B8%80-%EB%A1%9C%EA%B7%B8%EC%9D%B8</guid>
            <pubDate>Sun, 28 Nov 2021 19:10:48 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>Firebase authentication 에서 구글 로그인 가능하게 설정
<img src="https://images.velog.io/images/seb_bbi__/post/4d5ad26b-bb81-4ded-b4a8-e417ee33514f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%206.25.56.png" alt=""></p>
</li>
<li><p>pubspec.yaml에 구글 sign in 패키지 추가
<a href="https://pub.dev/packages/google_sign_in/install">패키지</a></p>
</li>
<li><p>home.dart : 로그인 했는지 안 했는지 판별해줌
판별해 주는건 firebaseauth 라이브러리 이용 &gt; </p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[Art Project #1 - Flutter/Firebase 세팅, 연결]]></title>
            <link>https://velog.io/@seb_bbi__/Art-Project</link>
            <guid>https://velog.io/@seb_bbi__/Art-Project</guid>
            <pubDate>Thu, 25 Nov 2021 20:18:56 GMT</pubDate>
            <description><![CDATA[<p><strong>[프로젝트 생성 - IOS]</strong></p>
<p>(터미널)
flutter create --org com.sudar.snslogin art (art는 프로젝트 이름) &gt; cd art</p>
<p>(Firebase 콘솔 접속)
새 프로젝트 생성 &#39;art2021&#39;
패키지 번들 ID 넣어주기 (사진 참고-Xcode 열고, ID 복사)
<img src="https://images.velog.io/images/seb_bbi__/post/0b0ca04d-f8a1-4276-be33-7be133d30171/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%204.02.08.png" alt=""></p>
<p><img src="https://images.velog.io/images/seb_bbi__/post/338daed7-4b23-4f3f-9118-5f65c035b82e/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%204.04.34.png" alt="">
GoogleService-Info.plist를 Runner/Runner 폴더에 추가 (사진 참고)
<img src="https://images.velog.io/images/seb_bbi__/post/31d295e5-e9b3-479c-b5e3-23589639207b/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%204.06.19.png" alt="">
<img src="https://images.velog.io/images/seb_bbi__/post/306ae4b8-0bdd-42c2-9055-510801e2d33b/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%204.08.34.png" alt="">
<em>*Copy items if needed 체크</em></p>
<p>GoogleService-Info.plist에서 REVERSED_CLIENT_ID 복사 &gt; Runner/Info 탭에 URL Types에서 +누른 후, URL Schemes 칸에 붙여넣기
<img src="https://images.velog.io/images/seb_bbi__/post/b79c3a2f-12a9-4a77-9b94-563381997d43/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%204.10.23.png" alt="">
firebase 나머지 단계들은 SKIP</p>
<p><strong>[Firebase 사용을 위한 패키지 설치 - pubspec.yaml]</strong></p>
<ol>
<li>가장 기본이 되는 패키지: firebase_core
<a href="pub.dev/packages/firebase_core/install">pub.dev/packages/firebase_core/install</a></li>
<li>로그인을 위한 패키지: firebase_auth
<a href="https://pub.dev/packages/firebase_auth/install">https://pub.dev/packages/firebase_auth/install</a></li>
</ol>
<p><strong>[코드]</strong></p>
<ol>
<li>lib/src에 app.dart 파일 생성 (앱 단위의 초기화 코드 작성)</li>
<li>lib/src/pages에 home.dart 파일 생성 (로그인 파트 코드)</li>
<li>lib/main.dart 코드 수정</li>
</ol>
<p><strong>[에러]</strong>
돌려봤는데, google auth 버전 관련 에러가 났다.
해결방법 - <a href="https://velog.io/@juni416/Automatically-assigning-platform-iOS-with-version-8.0-on-target-Runner-because-no-platform-was-specified.-Please-specify-a-platform-for-this-target-in-your-Podfile.-See-httpsguides.cocoapods.orgsyntaxpodfile.htmlplatform">참고</a>
Podfile에서 platform :ios, &#39;10.0&#39; 즉, 10.0 이상으로 바꿔주고 난 후, flutter clean &gt; flutter pub get &gt; cd ios &gt; pod install 한 후 다시 디버깅 해주니 해결되었다.</p>
<p><strong>[중간점검]</strong>
<img src="https://images.velog.io/images/seb_bbi__/post/08e9b070-6512-41fd-a9c6-8d6413f2fe29/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-11-26%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%205.10.21.png" alt="">
이 창이 뜬다면 잘 연결된 것.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Firebase Google 로그인 참고 링크]]></title>
            <link>https://velog.io/@seb_bbi__/Firebase-Google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</link>
            <guid>https://velog.io/@seb_bbi__/Firebase-Google-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</guid>
            <pubDate>Thu, 25 Nov 2021 18:16:17 GMT</pubDate>
            <description><![CDATA[<p><a href="https://debaeloper.tistory.com/63?category=1030542">https://debaeloper.tistory.com/63?category=1030542</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Header Scroll Action_ Code]]></title>
            <link>https://velog.io/@seb_bbi__/Header-Scroll-Action-Code</link>
            <guid>https://velog.io/@seb_bbi__/Header-Scroll-Action-Code</guid>
            <pubDate>Mon, 25 Oct 2021 10:40:13 GMT</pubDate>
            <description><![CDATA[<p><strong>1. html code</strong></p>
<pre><code>  &lt;!-- header --&gt;
    &lt;header class=&quot;navbar-fixed-top&quot; id=&quot;header&quot;&gt;
        &lt;nav&gt;
            &lt;ul&gt;
                &lt;li&gt;&lt;a href=&quot;#ch1&quot;&gt;1.&lt;br&gt;가나안 성도,&lt;br&gt;그들은 누구인가?&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#ch2&quot;&gt;2.&lt;br&gt;가나안 성도가&lt;br&gt;증가하고 있다.&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#ch3&quot;&gt;3.&lt;br&gt;한동대 내&lt;br&gt;가나안 성도의 목소리&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#ch4&quot;&gt;4.&lt;br&gt;그들은&lt;br&gt;지금-&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;#ch5&quot;&gt;5.&lt;br&gt;그들은&lt;br&gt;틀린 게 아니다.&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/nav&gt;
    &lt;/header&gt;
    &lt;!-- ./header --&gt;</code></pre><p><strong>2. jquery</strong></p>
<pre><code>    &lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js&quot;&gt;&lt;/script&gt;</code></pre><p><strong>3. JavaScript</strong></p>
<pre><code>&lt;!-- header scroll event --&gt;
    &lt;script&gt;
        // Hide Header on on scroll down
        var didScroll; 
        var lastScrollTop = 0; 
        var delta = 5; 
        var navbarHeight = $(&#39;header&#39;).outerHeight();

        $(window).scroll(function(event){ 
            didScroll = true; 
        }); 
        setInterval(function() { 
            if (didScroll) { 
                hasScrolled(); 
                didScroll = false; 
            } 
        }, 250);

        function hasScrolled() { 
            var st = $(this).scrollTop(); // Make sure they scroll more than delta 
            if(Math.abs(lastScrollTop - st) &lt;= delta) 
                return;

            // If they scrolled down and are past the navbar, add class .nav-up. 
            // This is necessary so you never see what is &quot;behind&quot; the navbar. 
            if (st &gt; lastScrollTop &amp;&amp; st &gt; navbarHeight){ 
                // Scroll Down 
                $(&#39;header&#39;).removeClass(&#39;nav-down&#39;).addClass(&#39;nav-up&#39;); 
            } else { 
                // Scroll Up 
                if(st + $(window).height() &lt; $(document).height()) { 
                    $(&#39;header&#39;).removeClass(&#39;nav-up&#39;).addClass(&#39;nav-down&#39;); 
                } 
            } 
            lastScrollTop = st; 
        }

        // for carousel _ add 0613
        $(&quot;.carousel&quot;).swipe({
            swipe: function(event, direction, distance, duration, fingerCount, fingerData) {
                if (direction == &#39;left&#39;) $(this).carousel(&#39;next&#39;);
                if (direction == &#39;right&#39;) $(this).carousel(&#39;prev&#39;);
            },allowPageScroll:&quot;vertical&quot;
        });

    &lt;/script&gt;</code></pre><p><strong>4. CSS code</strong></p>
<pre><code>/* Header
==================================================*/

header {
    text-align: center;
    -webkit-transition: all .5s;
    transition: all .5s;
    height: 100px; /* 변경: header 높이 */
    position: fixed;
}

/* 구글링 https://webdir.tistory.com/481 */
.nav-up {top: -130px;} /*조금 남아서 20px 크게 잡음*/

nav ul {
    display: inline-block;
    padding-left: 0;
    list-style: none;
    padding: 20px;
    margin-bottom: 0;
    -webkit-transition: all .5s;
    transition: all .5s;
}

nav li {
    display: inline-block;
    margin: 10px;
}

nav li a {
    color: rgba(173, 173, 173, 0.767); /*바꿈*/
    font-weight: bold;
    font: normal normal bold 13px/20px Noto Serif CJK KR;
    letter-spacing: -0.1px;
}

.bg-nav {
    background: #fff;
    border-bottom: 1px solid #f3f3f3
}

.bg-nav ul {
    padding: 10px;
}


a:focus {
    color: rgba(173, 173, 173, 0.767);
    text-decoration: none;
}

a:hover {
    color: #ffffff;
    text-decoration: none;
}

a.active {
    color: #daedff;
}
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[SID 참고]]></title>
            <link>https://velog.io/@seb_bbi__/SID-%EC%B0%B8%EA%B3%A0</link>
            <guid>https://velog.io/@seb_bbi__/SID-%EC%B0%B8%EA%B3%A0</guid>
            <pubDate>Sun, 03 Oct 2021 20:17:09 GMT</pubDate>
            <description><![CDATA[<p><a href="https://cmos00.tistory.com/m/2009">https://cmos00.tistory.com/m/2009</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JSP] JSTL <c:if></c:if> 사용법 & 예제 링크]]></title>
            <link>https://velog.io/@seb_bbi__/JSP-JSTL-cifcif-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%98%88%EC%A0%9C-%EB%A7%81%ED%81%AC</link>
            <guid>https://velog.io/@seb_bbi__/JSP-JSTL-cifcif-%EC%82%AC%EC%9A%A9%EB%B2%95-%EC%98%88%EC%A0%9C-%EB%A7%81%ED%81%AC</guid>
            <pubDate>Wed, 01 Sep 2021 09:04:54 GMT</pubDate>
            <description><![CDATA[<p><a href="https://dion-ko.tistory.com/76">https://dion-ko.tistory.com/76</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[STS] 잘 되던 Git 연동이 안 된다면?]]></title>
            <link>https://velog.io/@seb_bbi__/STS-%EC%9E%98-%EB%90%98%EB%8D%98-Git-%EC%97%B0%EB%8F%99%EC%9D%B4-%EC%95%88-%EB%90%9C%EB%8B%A4%EB%A9%B4</link>
            <guid>https://velog.io/@seb_bbi__/STS-%EC%9E%98-%EB%90%98%EB%8D%98-Git-%EC%97%B0%EB%8F%99%EC%9D%B4-%EC%95%88-%EB%90%9C%EB%8B%A4%EB%A9%B4</guid>
            <pubDate>Wed, 01 Sep 2021 08:59:45 GMT</pubDate>
            <description><![CDATA[<p>STS에서 깃 기능(머지, 풀 등)을 쓰려고 평소대로 입력하니 계속 실패했다.</p>
<p>바로 2021년 8월 13일 정도부터 로그인 방식이 바뀌었기 때문인데,
새롭게 바뀐 것은 깃에서 개인 토큰을 발행받는 것이다.</p>
<p><a href="https://curryyou.tistory.com/344">https://curryyou.tistory.com/344</a></p>
<p>나는 이 블로그 글을 보고 해결했다.
생각보다 시간이 별로 안 걸린다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[디자인워크샵] 6/21~24]]></title>
            <link>https://velog.io/@seb_bbi__/%EB%94%94%EC%9E%90%EC%9D%B8%EC%9B%8C%ED%81%AC%EC%83%B5-1%EC%9D%BC%EC%B0%A8</link>
            <guid>https://velog.io/@seb_bbi__/%EB%94%94%EC%9E%90%EC%9D%B8%EC%9B%8C%ED%81%AC%EC%83%B5-1%EC%9D%BC%EC%B0%A8</guid>
            <pubDate>Thu, 24 Jun 2021 08:38:41 GMT</pubDate>
            <description><![CDATA[<p>** Atom을 이용해서 특히 CSS를 중점적으로 이용하는 법을 배움. ** </p>
<p><strong>요약</strong>
!atom에서!</p>
<ol>
<li>html 기초</li>
<li>css 기초</li>
<li>여러 가지 단축어들</li>
</ol>
<p><strong>여러 단축어들</strong></p>
<ul>
<li>시작 시에: <strong>! tab</strong></li>
<li>코드 깔끔하게: <strong>ctrl + option + B</strong></li>
<li>div class/id 한번에 만들기</li>
</ul>
<p>GSAP: 그래픽 기반 자바스크립트 라이브러리
    사용-&gt; head에 src 추가해줌.
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.4/gsap.min.js" integrity="sha512-3WGIRFCuTpZhqYujwLp5RtARPkOy3uRtc3RXB31bJ9/i6VH2C66Z0WBV6gHhdhbUIDKFx8yTkLfEjdQM5Wl+ZQ==" crossorigin="anonymous"></script></p>
<p>*
vw: viewport width
vh: viewport height
100으로 하면 화면에 꽉 채워짐.
   -webkit-text-stroke: 4px #fff //무슨뜻..?
   overflow:hidden; //넘쳐도 바운스가 없음.</p>
<pre><code>&lt;script&gt;
    document.addEventListener(&quot;mousemove&quot;, e =&gt; {
      gsap.to(&quot;.text&quot;, {
        x: e.clientX, //x좌표
        y: e.clientY, //y좌표
        stagger: -0.05 //초 단위 (이동속도?)
      });
    });
  &lt;/script&gt;</code></pre><ul>
<li>닷홈 / FileZilla 이용해서 서버에 올리기</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[4/6 디자인 메모]]></title>
            <link>https://velog.io/@seb_bbi__/46-%EB%94%94%EC%9E%90%EC%9D%B8-%EB%A9%94%EB%AA%A8</link>
            <guid>https://velog.io/@seb_bbi__/46-%EB%94%94%EC%9E%90%EC%9D%B8-%EB%A9%94%EB%AA%A8</guid>
            <pubDate>Tue, 06 Apr 2021 10:54:38 GMT</pubDate>
            <description><![CDATA[<ol>
<li><img src="https://images.velog.io/images/seb_bbi__/post/903f32ee-fc82-4c3f-8811-9203f5524a65/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-04-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.35.12.png" alt=""></li>
</ol>
<p>2021-03- 이 날짜 표시를 회색 박스에 맞춰 정렬하기
회색 박스 안에 있는 글자 크기 줄이기
&#39;특강 신청&#39; 글자를 날짜와 같은 열에 놓는 방법도 있을듯.</p>
<p>2.SW 최신 공지 아이콘 크기가 글자보다 큰거 고치기</p>
<p>3.드롭다운의 경우엔 정렬이 안맞는다(갑자기 줄이 높아짐). 알아봐야할듯!
<img src="https://images.velog.io/images/seb_bbi__/post/8743aeef-ed43-4c63-9bfe-5cf319d31c4a/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-04-06%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%207.37.57.png" alt=""></p>
<ol start="4">
<li><p>&lt;설문 만들기&gt;
전체적으로 글씨체 맞추기</p>
</li>
<li><p>&lt;회원 관리&gt;
이름+학번 Search 반대편에 조건 검색 배치하면 어떨까?</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[폰트 참고]]></title>
            <link>https://velog.io/@seb_bbi__/%ED%8F%B0%ED%8A%B8-%EC%B0%B8%EA%B3%A0</link>
            <guid>https://velog.io/@seb_bbi__/%ED%8F%B0%ED%8A%B8-%EC%B0%B8%EA%B3%A0</guid>
            <pubDate>Wed, 24 Mar 2021 06:46:06 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>(국문) 웹 폰트 참고 링크: <a href="https://m.blog.naver.com/holicdesigns/221803545642">https://m.blog.naver.com/holicdesigns/221803545642</a></p>
</li>
<li><p>나눔스퀘어 폰트 적용:
<a href="https://iflue.tistory.com/37">https://iflue.tistory.com/37</a></p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[디자인 소스]]></title>
            <link>https://velog.io/@seb_bbi__/%EB%94%94%EC%9E%90%EC%9D%B8-%EC%86%8C%EC%8A%A4</link>
            <guid>https://velog.io/@seb_bbi__/%EB%94%94%EC%9E%90%EC%9D%B8-%EC%86%8C%EC%8A%A4</guid>
            <pubDate>Tue, 23 Mar 2021 17:50:29 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>behance.net
<img src="https://images.velog.io/images/seb_bbi__/post/80f4c5b0-77e7-4b81-a76e-793bee16e582/image.png" alt=""></p>
</li>
<li><p>Pinterest
<img src="https://images.velog.io/images/seb_bbi__/post/0365b095-0e68-491e-8b85-3341ce13da21/image.png" alt=""></p>
</li>
</ol>
<p><img src="https://images.velog.io/images/seb_bbi__/post/e5975f00-0e78-422f-930f-fd5d74c3fd34/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[3/23(화) 회의 피드백]]></title>
            <link>https://velog.io/@seb_bbi__/323%ED%99%94-%ED%9A%8C%EC%9D%98-%ED%94%BC%EB%93%9C%EB%B0%B1</link>
            <guid>https://velog.io/@seb_bbi__/323%ED%99%94-%ED%9A%8C%EC%9D%98-%ED%94%BC%EB%93%9C%EB%B0%B1</guid>
            <pubDate>Tue, 23 Mar 2021 11:31:58 GMT</pubDate>
            <description><![CDATA[<p>회의 날짜: 2021.03.23 (화) with 교수님</p>
<p>1.페이징 (list.jsp)
2.User일때 &#39;Add New Post&#39; 안보이게 (list.jsp)
3.Add New Post버튼 위에 배치
4.게시글 검색
5.파일 관련
    5-1. 파일이 View.jsp에서 잘 보이게
    5-2. 파일 다운로드</p>
<p>여기서부터는 제가 할 부분입니다!
<em>1.CSS 수정
2.<del>url heroku에서도 잘 mapping되게</del>
3.CSS 통일성 있게 (폰트 통일, 글씨크기, 라인맞추기, 색깔 등)</em>
4. 메인페이지에서 </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2/23 (화) 회의 피드백]]></title>
            <link>https://velog.io/@seb_bbi__/223-%ED%9A%8C%EC%9D%98-%ED%94%BC%EB%93%9C%EB%B0%B1</link>
            <guid>https://velog.io/@seb_bbi__/223-%ED%9A%8C%EC%9D%98-%ED%94%BC%EB%93%9C%EB%B0%B1</guid>
            <pubDate>Tue, 23 Feb 2021 12:47:40 GMT</pubDate>
            <description><![CDATA[<p>회의 날짜: 2021.02.23 (화) with 교수님</p>
<p>1.list.jsp 페이징
2.CSS 수정
3.list.jsp-User일때 &#39;Add New Post&#39; 안보이게
4.검색
5.파일 관련
    5-1. 파일이 View.jsp에서 잘 보이게
    5-2. 다운로드 (&lt;-하연언니꺼 보기)
6.url heroku에서도 잘 mapping되게</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2/19 (금) 회의 자체피드백]]></title>
            <link>https://velog.io/@seb_bbi__/219-%EA%B8%88-%ED%9A%8C%EC%9D%98-%EC%9E%90%EC%B2%B4%ED%94%BC%EB%93%9C%EB%B0%B1</link>
            <guid>https://velog.io/@seb_bbi__/219-%EA%B8%88-%ED%9A%8C%EC%9D%98-%EC%9E%90%EC%B2%B4%ED%94%BC%EB%93%9C%EB%B0%B1</guid>
            <pubDate>Mon, 22 Feb 2021 16:26:33 GMT</pubDate>
            <description><![CDATA[<p>회의 날짜: 2021.02.19 (금)</p>
<ol>
<li>list.jsp 페이징</li>
<li>CSS
<del>3. list.jsp &lt;c:if&gt; 코드 Session 이용해서 수정</del>
<del>4. 신청한 사람 수 나타낼 때 &#39;확인&#39;된 사람만 세는건지. (&#39;대기중&#39;이면 집계 X?)</del></li>
<li>파일 관련
 5-1. 파일이 View.jsp에서 잘 보이게
 5-2. 다운로드 (&lt;-하연언니꺼 보기)
<del>6. ../../이렇게 쓰는거 대신 redirect:를 써야하나!!</del></li>
</ol>
<p>&lt;2021-02-23 회의 전 자체피드백&gt;
<del>1. DB에서 BOARD Title varchar 늘려야겠다.. ㅎㅎ</del>
2.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[참고 링크]]></title>
            <link>https://velog.io/@seb_bbi__/%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</link>
            <guid>https://velog.io/@seb_bbi__/%EC%B0%B8%EA%B3%A0-%EB%A7%81%ED%81%AC</guid>
            <pubDate>Sat, 13 Feb 2021 17:37:01 GMT</pubDate>
            <description><![CDATA[<p>(계속 추가 예정)</p>
<ol>
<li>Fileupload 구현에 참고한 블로그: <a href="https://private.tistory.com/59">https://private.tistory.com/59</a></li>
<li><a href="https://moondol2525.tistory.com/34">https://moondol2525.tistory.com/34</a></li>
<li>Filedownload 구현 참고: <a href="https://private.tistory.com/60?category=753861">https://private.tistory.com/60?category=753861</a></li>
<li>resultType에 저장할 수 있는 값: <a href="http://www.devkuma.com/books/pages/740">http://www.devkuma.com/books/pages/740</a></li>
<li>세션 유지: <a href="https://junghyun100.github.io/Session%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%83%81%ED%83%9C%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%A7%80%ED%95%98%EA%B8%B0/">https://junghyun100.github.io/Session%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%83%81%ED%83%9C%EC%A0%95%EB%B3%B4-%EC%9C%A0%EC%A7%80%ED%95%98%EA%B8%B0/</a></li>
<li>난수 생성: <a href="https://velog.io/@josworks27/Back-end-%EB%9E%9C%EB%8D%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EC%9E%84%EC%8B%9C-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%83%9D%EC%84%B1#%EB%9E%9C%EB%8D%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EB%B3%80%EA%B2%BD">https://velog.io/@josworks27/Back-end-%EB%9E%9C%EB%8D%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EC%9E%84%EC%8B%9C-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EC%83%9D%EC%84%B1#%EB%9E%9C%EB%8D%A4-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EB%B3%80%EA%B2%BD</a></li>
<li>&lt;c:set&gt;: <a href="https://fruitdev.tistory.com/130">https://fruitdev.tistory.com/130</a></li>
<li>c 태그: <a href="https://offbyone.tistory.com/367">https://offbyone.tistory.com/367</a></li>
<li>session 다루기: <a href="https://hyeonstorage.tistory.com/125">https://hyeonstorage.tistory.com/125</a></li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[sts]오류해결: Git에서 import한 프로젝트에서 pom.xml 오류가 날 때]]></title>
            <link>https://velog.io/@seb_bbi__/sts%EC%98%A4%EB%A5%98%ED%95%B4%EA%B2%B0-Git%EC%97%90%EC%84%9C-import%ED%95%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90%EC%84%9C-pom.xml-%EC%98%A4%EB%A5%98%EA%B0%80-%EB%82%A0-%EB%95%8C</link>
            <guid>https://velog.io/@seb_bbi__/sts%EC%98%A4%EB%A5%98%ED%95%B4%EA%B2%B0-Git%EC%97%90%EC%84%9C-import%ED%95%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90%EC%84%9C-pom.xml-%EC%98%A4%EB%A5%98%EA%B0%80-%EB%82%A0-%EB%95%8C</guid>
            <pubDate>Wed, 10 Feb 2021 03:30:42 GMT</pubDate>
            <description><![CDATA[<hr>
<h2 id="요약">요약</h2>
<p>(나의) 해결방법: Clone 후 Properties &gt; Web Development Assembly 설정을 건드려 주었다.</p>
<hr>
<h2 id="문제">문제</h2>
<p>Git을 이용해 sts 프로젝트를 진행하고 있다. 그렇기에 Git에서 프로젝트를 Clone하여 로컬에 import하는 방식을 써야 하는데, 문제가 발생했다.</p>
<p>문제: import후 maven update를 해주었을 때는 괜찮았던 프로젝트가 <strong>Project Facets</strong> 설정에서 Dynamic Web Module/Java/JavaScript를 체크하니 <strong>pom.xml</strong>에서 오류가 났다.</p>
<p>(캡처본은 없지만) <strong><em>web.xml is missing and &lt; failOnMissingWebXml &gt; is set to true</em></strong> 오류였다.</p>
<p>pom.xml이 말썽이니 다른 컨트롤러들도 돌아가지 않았고, Run on Server를 했을 때도 404 에러가 났다. (에러 직후 콘솔창을 확인했는데, 에러 로그도 없었다.)
구글링해봤지만 해결이 안됐고, 결국 교수님께서 도와주셨다.</p>
<hr>
<h2 id="해결">해결</h2>
<ol>
<li>git repository clone하기 (사진대로 따라하기)
<img src="https://images.velog.io/images/seb_bbi__/post/b9f57b09-26b9-4d0a-b980-2928191937ce/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.10.01.png" alt="">
<img src="https://images.velog.io/images/seb_bbi__/post/c909eeb4-5077-4d8d-a7e1-2c7f78cdff3d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.10.42.png" alt="">
<img src="https://images.velog.io/images/seb_bbi__/post/2b7384dc-61a2-4413-a07f-d54a420452f8/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.11.24.png" alt=""><img src="https://images.velog.io/images/seb_bbi__/post/524475bf-4423-4cb1-9644-14a5f25ec8ee/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.12.02.png" alt="">
사진 속 체크박스를 선택하면 자동으로 import된다.</li>
</ol>
<ol start="2">
<li><p>Maven &gt; Update Project
<img src="https://images.velog.io/images/seb_bbi__/post/46b8e167-538c-444f-b247-19c07e958848/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.15.22.png" alt=""></p>
</li>
<li><p>Properties &gt; Java Build Path 버전 맞추기 (나는 1.6-&gt;1.8로 변경했다.)
<img src="https://images.velog.io/images/seb_bbi__/post/f7fb0b6b-eb18-41e0-b68a-4d2410361eae/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.16.54.png" alt=""></p>
</li>
<li><p>Properties &gt; Project Facets 체크박스 선택
<img src="https://images.velog.io/images/seb_bbi__/post/63cb227d-b466-4ba5-8a97-d10c1aa70b36/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.18.10.png" alt=""></p>
</li>
</ol>
<p><strong>5. (중요) Properties &gt; Development Assembly</strong>
: pom.xml에서 오류가 나는 분들은 여기를 확인해보면 좋을듯하다. 나는 이 단계에서 사진(해결 후)과는 달리 항목이 7~8개 정도 있었다.
우선 항목들 중, 경로가 src/main/test인 것들을 remove했다.</p>
<p><img src="https://images.velog.io/images/seb_bbi__/post/e9af20bc-0a24-463a-9bfe-0e8c6f504649/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.20.06.png" alt="">
그런 뒤 add를 통해 /src/main/webapp과 Maven Dependencies를 붙여주었다.</p>
<p>*Maven Dependencies 붙이는법
<img src="https://images.velog.io/images/seb_bbi__/post/434d5045-4ff7-4601-830b-faa5cc3d73b8/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.22.19.png" alt=""></p>
<p>*/src/main/webapp 붙이는법
<img src="https://images.velog.io/images/seb_bbi__/post/13478212-e8a8-4513-ac79-c5da9df9438d/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.23.43.png" alt="">
<img src="https://images.velog.io/images/seb_bbi__/post/5a441b6f-3b34-4515-b60f-9db2712d89a5/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-02-10%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2012.24.41.png" alt=""></p>
<h3 id="이렇게-development-assembly를-정리해-주고-maven-update와-project--clean까지-해주니-잘-돌아갔다"><strong>이렇게 Development Assembly를 정리해 주고, Maven Update와 Project &gt; clean까지 해주니 잘 돌아갔다.</strong></h3>
<p>드디어.. 해결끄읕!!!</p>
]]></description>
        </item>
    </channel>
</rss>