<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>code_angler.log</title>
        <link>https://velog.io/</link>
        <description>CodeAngler</description>
        <lastBuildDate>Tue, 10 Aug 2021 08:27:37 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>code_angler.log</title>
            <url>https://images.velog.io/images/code_angler/profile/3d0f2588-5d88-4f9d-8fc9-d5a9453ae68f/fishing icon.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. code_angler.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/code_angler" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[예외 처리 때문에 Optional?]]></title>
            <link>https://velog.io/@code_angler/%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC-%EB%95%8C%EB%AC%B8%EC%97%90-Optional</link>
            <guid>https://velog.io/@code_angler/%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC-%EB%95%8C%EB%AC%B8%EC%97%90-Optional</guid>
            <pubDate>Tue, 10 Aug 2021 08:27:37 GMT</pubDate>
            <description><![CDATA[<h3 id="null의-대한-처리를-어떻게-할수있을까를-한번이라도-고민해-보았다면-optional을-쓰는것을-고민해-보셨을것이다">null의 대한 처리를 어떻게 할수있을까를 한번이라도 고민해 보았다면 Optional을 쓰는것을 고민해 보셨을것이다.</h3>
<ul>
<li>먼저 Optional을 쓴 예시를 살펴보자</li>
</ul>
<pre><code class="language-java">// Project 수정
    @Transactional
    public ProjectResponseDto updateProject(Long projectId, ProjectRequestDto requestDto, SessionUser sessionUser) {

        Optional&lt;UserProjectMapping&gt; userProjectMapping = userProjectMappingRepository.findByUserIdAndProjectIdJoin(sessionUser.getUserId(),projectId);

        if(!userProjectMapping.isPresent()){
            throw new ApiRequestException(&quot;프로젝트에 참가한 사용자가 아닙니다.&quot;);
        }else if(!userProjectMapping.get().getRole().equals(UserProjectRole.OWNER)){
            throw new ApiRequestException(&quot;프로젝트 소유주가 아닙니다.&quot;);
        }
        Project project = userProjectMapping.get().getProject();
        project.update(requestDto);

        return ProjectResponseDto.fromEntity(project);
    }</code></pre>
<p>여기서는 예외와 조건을 따로 구분하지 않고 처리하였다는 것이다, 코드만 본다면 if 와 else if  모두 조건에 대한 처리로 보일수도있지 않을까 하는 생각이 들었다.</p>
<p>예외는 예외 답게, 조건은 조건 답게 처리 할 수 있는 방법을 생각해 보기로 하자!</p>
<h3 id="먼저-optional을-빼보자">먼저 Optional을 빼보자</h3>
<pre><code class="language-java">// Project 수정
    @Transactional
    public ProjectResponseDto updateProject(Long projectId, ProjectRequestDto requestDto, SessionUser sessionUser) {

        UserProjectMapping userProjectMapping = userProjectMappingRepository.findByUserIdAndProjectIdJoin(sessionUser.getUserId(), projectId);

                // 예외처리
        if(Objects.isNull(userProjectMapping)) {
            throw new ApiRequestException(&quot;프로젝트에 참가한 사용자가 아닙니다.&quot;);
        }
                // 조건 처리(오너가 아니면 수정 불가) 
        if (!userProjectMapping.getRole().equals(UserProjectRole.OWNER)) {
            throw new ApiRequestException(&quot;프로젝트 소유주가 아닙니다.&quot;);
        }
        Project project = userProjectMapping.getProject();
        project.update(requestDto);

        return ProjectResponseDto.fromEntity(project);
    }</code></pre>
<p>Optional을 쓰지 않고도 예외와 조건이 처리됨을 확인할수있다.</p>
<hr>
<p>또 하나의 방법인  현재 여기서 findByUserIdAndProjectIdJoin 메소드는 Querydsl로 형성 되었다.</p>
<pre><code class="language-java"></code></pre>
<pre><code class="language-java">@Override
public UserProjectMapping findByUserIdAndProjectIdJoin(Long userId, Long projectId) {
    return queryFactory
            .select(userProjectMapping)
            .from(userProjectMapping)
            .join(userProjectMapping.project).fetchJoin()
            .where(userProjectMapping.user.userId.eq(userId), userProjectMapping.project.projectId.eq(projectId))
            .fetchFirst();
}</code></pre>
<p>현재 userProjectMapping은 N-M 관계을 이어주는 하나의 Entity로서 , user 한 명이 project하나를 가지는 결과 값을 가지게 설정되었다.</p>
<h3 id="이번엔-findbyuseridandprojectidjoin-메소드에서-null-에-대한">이번엔 findByUserIdAndProjectIdJoin 메소드에서 null 에 대한</h3>
<h3 id="예외처리를-해보도록하자">예외처리를 해보도록하자</h3>
<pre><code class="language-java">@Override
public UserProjectMapping findByUserIdAndProjectIdJoin(Long userId, Long projectId) {
    return Optional.ofNullable(queryFactory
            .select(userProjectMapping)
            .from(userProjectMapping)
            .join(userProjectMapping.project).fetchJoin()
            .where(userProjectMapping.user.userId.eq(userId), userProjectMapping.project.projectId.eq(projectId))
            .fetchFirst())
            .orElseThrow(() -&gt; new ApiRequestException(&quot;프로젝트에 참가한 사용자가 아닙니다.&quot;));
}</code></pre>
<pre><code class="language-java">// Project수정
@Transactional
public ProjectResponseDto updateProject(Long projectId, ProjectRequestDto requestDto, SessionUser sessionUser) {

    UserProjectMapping userProjectMapping = userProjectMappingRepository.findByUserIdAndProjectIdJoin(sessionUser.getUserId(), projectId);

    if (!userProjectMapping.getRole().equals(UserProjectRole.OWNER)) {
        throw new ApiRequestException(&quot;프로젝트 소유주가 아닙니다.&quot;);
    }
    Project project = userProjectMapping.getProject();
    project.update(requestDto);

    return ProjectResponseDto.fromEntity(project);
}</code></pre>
<p><strong>모든 것이 정상적으로 작동한다.</strong> </p>
<p>그렇다면  무엇이 좋은 선택일까?</p>
<p>스타일의 차이라고 볼 수 있을 것 같다. </p>
<p>하지만 굳이 고르라고 한다면  예외처리는 query method 을 이용해  찾아올 때 부터  처리해서 가져와서 이후 불필요한 작업을 서비스단에서 하기 전에 예외가 발생하는 것이 낫다고 생각한다. </p>
<h3 id="무엇보다-예외는-예외-답게-조건은-조건-답게-라는-것에서-예외는-query-method-에서--조건은-서비스단에서-처리하는-것이-개인적으로는-좋은-것-같다">무엇보다. 예외는 예외 답게 조건은 조건 답게 라는 것에서 예외는 query method 에서  조건은 서비스단에서 처리하는 것이 개인적으로는 좋은 것 같다.</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[캐나다 영주권 추첨 자동 확인 by. 텔레봇]]></title>
            <link>https://velog.io/@code_angler/%EC%BA%90%EB%82%98%EB%8B%A4-%EC%98%81%EC%A3%BC%EA%B6%8C-%EC%B6%94%EC%B2%A8-%EC%9E%90%EB%8F%99-%ED%99%95%EC%9D%B8-by.-%ED%85%94%EB%A0%88%EB%B4%87</link>
            <guid>https://velog.io/@code_angler/%EC%BA%90%EB%82%98%EB%8B%A4-%EC%98%81%EC%A3%BC%EA%B6%8C-%EC%B6%94%EC%B2%A8-%EC%9E%90%EB%8F%99-%ED%99%95%EC%9D%B8-by.-%ED%85%94%EB%A0%88%EB%B4%87</guid>
            <pubDate>Tue, 22 Jun 2021 05:36:53 GMT</pubDate>
            <description><![CDATA[<p>캐나다 영주권 POOL에 등록은 해두었지만, 과연 될까???
매번 찾아보는 것도 괜찮지만 자동으로 알림이 날라오면 어떨까 해서, 알림봇을 간이로 만들어보았다.</p>
<p>내가 등록한 점수보다 추첨점수가 낮으면
<span style="color:indianred"><strong>&#39;영주권 나왔다 캐나다 간다!!!&#39;</strong></span>라는 알림이 뜰것 이다.</p>
<p>우선 크롤링을 통해 점수를 자동 추출해 주는 코드를 짠다.</p>
<p><img src="https://images.velog.io/images/code_angler/post/4d6128f4-9ef8-46d8-879a-fb447879c0ae/image.png" alt=""></p>
<p>여기서 CRS score of lowest-ranked candidate invited의  점수값을 받아온다.</p>
<pre><code class="language-python">from bs4 import BeautifulSoup
import time
import requests
import telepot


token = &#39;봇 API&#39;  
mc = &#39;텔레그램 ID&#39; 
bot = telepot.Bot(token)

headers = {&#39;User-Agent&#39; : &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36&#39;}
data = requests.get(&#39;https://www.canada.ca/en/immigration-refugees-citizenship/services/immigrate-canada/express-entry/submit-profile/rounds-invitations.html&#39;,headers=headers)

soup = BeautifulSoup(data.text, &#39;html.parser&#39;)

score = soup.select(&#39;body &gt; main &gt; div:nth-child(2) &gt; div:nth-child(2) &gt; div:nth-child(4) &gt; p:nth-child(7)&#39;)[0].text[-3:]


int_score = int(score)

while True:
    if int_score &lt; {&#39;내 점수&#39;}:
        bot.sendMessage(mc, &#39;영주권 나왔다 캐나다 간다!!!&#39;)
    else:
        bot.sendMessage(mc, &#39;다음기회에......&#39;)
    time.sleep(43200) #12시간 마다 체크
</code></pre>
<p> 이 파이썬 파일을 매번 파이참을 켜서 실행하는것이 번거러우니 , 프로그램 파일을 만들어 돌려보자</p>
<h3 id="pyinstaller-설치">PyInstaller 설치</h3>
<p>우선 명령프롬프트에서 아래의 명령어를 통해 PyInstaller 패키지를 설치하자.</p>
<blockquote>
<p>pip install pyinstaller</p>
</blockquote>
<p><strong>실행파일 만들기</strong></p>
<p>Python 파일이 있는 폴더로 이동한 다음, 아래 명령어를 입력하면 해당 폴더에 실행파일이 만들어집니다.</p>
<blockquote>
<p>pyinstaller -w -F canada.py</p>
</blockquote>
<p>만들어진 폴더에서 dist로 이동하면 응용프로그램을 찾을수있다.
<img src="https://images.velog.io/images/code_angler/post/a10257de-2d2f-4d14-a82e-263ccd700e5b/image.png" alt=""></p>
<p>위와 같은 파일을 실행해주면 12시간에 한번씩 자동으로 확인이 가능하다, </p>
<p>단 위와같은 방식은 서버를 이용해돌리는 것이 아니므로, 컴퓨터가 켜져있을때의 시간에 한하여 가능한 방식이다.</p>
<p>참고자료 :<a href="https://wikidocs.net/21952">https://wikidocs.net/21952</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[백준 1435 - 영화감독 슘/파이썬]]></title>
            <link>https://velog.io/@code_angler/%EB%B0%B1%EC%A4%80-1435-%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85-%EC%8A%98%ED%8C%8C%EC%9D%B4%EC%8D%AC</link>
            <guid>https://velog.io/@code_angler/%EB%B0%B1%EC%A4%80-1435-%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85-%EC%8A%98%ED%8C%8C%EC%9D%B4%EC%8D%AC</guid>
            <pubDate>Wed, 16 Jun 2021 07:13:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://images.velog.io/images/code_angler/post/ebf03317-5528-479b-bc20-83122620d0ab/image.png" alt=""></p>
<pre><code class="language-python">num = int(input())


a = []
for i in range(666, 10001):
    if &#39;666&#39; in str(i):
        a.append(i)
print(a[num-1])</code></pre>
<h3 id="첫번째-방법-제출시-런타임-에러">첫번째 방법 (제출시 런타임 에러)</h3>
<p>결과값은 나오지만 런타임 에러라는 채점 결과를 맞이하게된다.
최소한 for문을 10001 - 666 의 길이만큼 돌아야 기준이 되는 a 리스트가 완성되고, 그것을 바탕으로 인덱스를 매칭 시키는 방법인데, 조금더 효율적인 방법을 찾아야겠다!!!</p>
<h3 id="그리하여-찾아낸-2번째-방법">그리하여 찾아낸 2번째 방법!!</h3>
<pre><code class="language-python">num = int(input())

sixes = 666
count = 0

while True:
    if &#39;666&#39; in str(sixes):
        count += 1
    if count == num:
        print(sixes)
        break
    sixes += 1</code></pre>
<p>위 방법과 다르게 , num가 작을수록 돌아야하는 while문의 길이가 줄어들게 되므로 최소시간이 현저히 줄수있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2021.06.07 항해2기 1주차 5조 Project]]></title>
            <link>https://velog.io/@code_angler/2021.06.07-%ED%95%AD%ED%95%B42%EA%B8%B0-1%EC%A3%BC%EC%B0%A8-5%EC%A1%B0-Project</link>
            <guid>https://velog.io/@code_angler/2021.06.07-%ED%95%AD%ED%95%B42%EA%B8%B0-1%EC%A3%BC%EC%B0%A8-5%EC%A1%B0-Project</guid>
            <pubDate>Mon, 07 Jun 2021 06:20:43 GMT</pubDate>
            <description><![CDATA[<h1 id="우리조-프로젝트-제목간단설명">우리조 프로젝트 제목/간단설명</h1>
<h1 id="span-stylecolorbrown국밥-매니아span"><span style="color:brown">국밥 매니아</span></h1>
<h2 id="span-stylecolorbrown프로국밥러를-위한-국밥집-추천span"><span style="color:brown">프로국밥러를 위한 국밥집 추천</span></h2>
<h1 id="와이어-프레임-사진">와이어 프레임 사진</h1>
<p><img src="https://images.velog.io/images/code_angler/post/d0f3b309-b677-4a2c-8edb-6cc612803971/image.png" alt="">
<img src="https://images.velog.io/images/code_angler/post/2202e55d-0f14-46a6-9c7a-8b850f65b206/image.png" alt="">
<img src="https://images.velog.io/images/code_angler/post/f67ed976-9372-47e2-b032-24e37b251c10/image.png" alt=""></p>
<h1 id="개발해야-하는기능">개발해야 하는기능</h1>
<p>&lt;이호진님 &gt;&lt;노예찬님&gt;</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> <strong>로그인</strong></li>
<li><input checked="" disabled="" type="checkbox"> <strong>로그아웃</strong></li>
<li><input checked="" disabled="" type="checkbox"> <strong>회원가입기능</strong></li>
</ul>
<p>&lt;정민기님&gt;</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> <strong>리뷰쓰기(게시판기능)</strong></li>
<li><input checked="" disabled="" type="checkbox"> <strong>리뷰지우기</strong></li>
<li><input checked="" disabled="" type="checkbox"> 별점달기(별점 통계값)</li>
</ul>
<p>&lt;김성경님&gt;</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> <strong>검색하기</strong>(<strong>지역</strong>, 메뉴)</li>
<li><input checked="" disabled="" type="checkbox"> <strong>정렬하기</strong>(별점순, <strong>리뷰순</strong> , <strong>가격순</strong>)</li>
<li><input checked="" disabled="" type="checkbox"> <strong>크롤링(모든국밥</strong>(돼지국밥, 순대국밥, 콩나물국밥, 굴국밥, 설렁탕... 등)<strong>)</strong></li>
</ul>
<p>&lt;하면 좋은 것들&gt;</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> 링크공유</li>
<li><input checked="" disabled="" type="checkbox"> 지도창 만들기</li>
</ul>
<p><strong>굵은 글</strong>로 써둔 부분이 필수적으로 들어갈부분,
얇은 글씨체는 후에 확장 시키면 좋은것들입니다.</p>
<table>
<thead>
<tr>
<th align="left">기능</th>
<th align="center">Method</th>
<th align="right">URL</th>
<th align="right">request</th>
<th align="right">response</th>
</tr>
</thead>
<tbody><tr>
<td align="left">로그인</td>
<td align="center">POST</td>
<td align="right">/api/singin</td>
<td align="right">{&#39;id:id, &#39;password&#39;:password}</td>
<td align="right">메인페이지</td>
</tr>
<tr>
<td align="left">회원가입</td>
<td align="center">POST</td>
<td align="right">/api/signup</td>
<td align="right">{&#39;id:id, &#39;password&#39;:password}</td>
<td align="right">로그인 페이지</td>
</tr>
<tr>
<td align="left">국밥집 리스트</td>
<td align="center">GET</td>
<td align="right">/api/list_Ksoups</td>
<td align="right"></td>
<td align="right">메인페이지</td>
</tr>
<tr>
<td align="left">리뷰쓰기</td>
<td align="center">POST</td>
<td align="right">/api/reviews</td>
<td align="right">{reviews:reviews}</td>
<td align="right">상세페이지</td>
</tr>
<tr>
<td align="left">리뷰보여주기</td>
<td align="center">GET</td>
<td align="right">/api/reviews</td>
<td align="right">{reviews:reviews}</td>
<td align="right">상세페이지</td>
</tr>
</tbody></table>
<h1 id="public-github-repo-주소">public github repo 주소</h1>
<h3 id="httpsgithubcomcode-anglerkoreansoupsmaniagit"><a href="https://github.com/Code-Angler/KoreanSoupsMania.git">https://github.com/Code-Angler/KoreanSoupsMania.git</a></h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript에서 includes()  포함 확인하기]]></title>
            <link>https://velog.io/@code_angler/JavaScript%EC%97%90%EC%84%9C-includes-%ED%8F%AC%ED%95%A8-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@code_angler/JavaScript%EC%97%90%EC%84%9C-includes-%ED%8F%AC%ED%95%A8-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 24 May 2021 07:35:14 GMT</pubDate>
            <description><![CDATA[<blockquote>
<h2 id="includes">.includes()</h2>
</blockquote>
<p>.includes()는 특정 문자열을 포함하는지 확인하는 method이다.</p>
<blockquote>
<h3 id="stringincludes-searchstring-length-">string.includes( searchString, length )</h3>
</blockquote>
<p>searchString : 검색할 문자열, 대소문자를 구분합니다.
length : 검색을 시작할 위치, 선택 요소로, 값이 없으면 전체 문자열을 대상으로 합니다.</p>
<pre><code>&#39;abzcd&#39;.includes( &#39;z&#39; )
# true
&#39;abzcd&#39;.includes( &#39;z&#39;, 2 )
# true (z in zcd)
&#39;abzcd&#39;.includes( &#39;z&#39;, 3 )
# false ( z not in cd)
&#39;abZcd&#39;.includes( &#39;z&#39;, 2 )
# false ( z not in Zcd) 대문자</code></pre><p>출처: <a href="https://www.codingfactory.net/10899">https://www.codingfactory.net/10899</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[튜플(tuple) 연산 총정리]]></title>
            <link>https://velog.io/@code_angler/%ED%8A%9C%ED%94%8Ctuple-%EC%97%B0%EC%82%B0-%EC%B4%9D%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@code_angler/%ED%8A%9C%ED%94%8Ctuple-%EC%97%B0%EC%82%B0-%EC%B4%9D%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Mon, 24 May 2021 07:12:30 GMT</pubDate>
            <description><![CDATA[<h2 id="tuple튜플은-불변한-순서가-있는-객체의-집합">tuple(튜플)은 불변한 순서가 있는 객체의 집합</h2>
<p>list형과 비슷하지만 한 번 생성되면 값을 변경할 수 없습니다.</p>
<h3 id="다양한-타입을-함께-포함-할-수-있다">다양한 타입을 함께 포함 할 수 있다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
print(t)
type(t)

-----------------------------------
#result

(&#39;감자&#39;, 1, 3.14, 0)
&lt;class &#39;tuple&#39;&gt;</code></pre>
<h3 id="순서가-있기때문에-인덱스로-접근-가능하다">순서가 있기때문에 인덱스로 접근 가능하다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
print(t[0])
print(t[1])

-----------------------------------
#result

감자
1</code></pre>
<h3 id="len-내장함수로-길이를-구할-수-있다">len 내장함수로 길이를 구할 수 있다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
print(len(t))

-----------------------------------
#result

4</code></pre>
<h3 id="list와-마찬가지로-for-문을-돌-수-있다">list와 마찬가지로 for 문을 돌 수 있다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
for i in t:
    print(i)

-----------------------------------
#result    

감자
1
3.14
0</code></pre>
<h3 id="더하기-연산으로-tuple튜플을-추가할-수-있다">더하기 연산으로 tuple(튜플)을 추가할 수 있다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
t = t + (&#39;사랑&#39; ,&#39;해&#39;)
print(t)

-----------------------------------
#result  

(&#39;감자&#39;, 1, 3.14, 0, &#39;사랑&#39;, &#39;해&#39;)</code></pre>
<h3 id="곱하기-연산으로-tuple튜플을-반복할-수-있다">곱하기 연산으로 tuple(튜플)을 반복할 수 있다.</h3>
<pre><code class="language-python">t = (&quot;감자&quot;, 1, 3.14, 0)
print(t*2)

-----------------------------------
#result  

(&#39;감자&#39;, 1, 3.14, 0, &#39;감자&#39;, 1, 3.14, 0)</code></pre>
<h3 id="tuple튜플-속에-tuple이-포함될-수-있습니다">tuple(튜플) 속에 tuple이 포함될 수 있습니다.</h3>
<pre><code class="language-python">a = ((&#39;나무&#39; ,2) , (&#39;새&#39;,4), (6,&#39;감기&#39;))
print(a[2])
print(a[2][1])

-----------------------------------
#result  

(6, &#39;감기&#39;)
감기</code></pre>
<h3 id="tuple튜플이-하나의-원소만-존재하는-경우는-tuple튜플이-되지-않는다">tuple(튜플)이 하나의 원소만 존재하는 경우는 tuple(튜플)이 되지 않는다.</h3>
<p>but 회피하는 방법이 있습니다. 한개의 원소 뒤에 <strong>콤마를 찍어주면 tuple이 유지</strong>됩니다.</p>
<pre><code class="language-python">a = (5000)
b = (5000,)
print(type(a))
print(type(b))


# print(len(a)) # TypeError: object of type &#39;int&#39; has no len()
print(len(b))

-----------------------------------
#result  

&lt;class &#39;int&#39;&gt;
&lt;class &#39;tuple&#39;&gt;
1</code></pre>
<h3 id="tuple튜플-괄호가-필수-조건은-아니다">tuple(튜플) 괄호()가 필수 조건은 아니다.</h3>
<pre><code class="language-python">a = 1, 3, 2, 5, 7
print(type(a))

-----------------------------------
#result  

&lt;class &#39;tuple&#39;&gt;</code></pre>
<h3 id="tuple튜플을-이용하여-함수에서-여러-값을-한꺼번에-리턴할-수-있다">tuple(튜플)을 이용하여 함수에서 여러 값을 한꺼번에 리턴할 수 있다</h3>
<pre><code class="language-python">def minmax(items):
    return min(items), max(items)
print(minmax([-5, 6, 7, 8, 55, 96, 785, 362]))

-----------------------------------
#result  

(-5, 785)</code></pre>
<h3 id="tuple튜플을-이용하여-변수를-한꺼번에-할당할-수-있다자바스크립트-es6-해체할당과-비슷">tuple(튜플)을 이용하여 변수를 한꺼번에 할당할 수 있다.(자바스크립트 ES6 해체할당과 비슷)</h3>
<pre><code class="language-python">def minmax(items):
    return min(items), max(items)

lower, upper = minmax([-5, 6, 7, 8, 55, 96, 785, 362])
print(lower)
print(upper)
print(lower, upper)

-----------------------------------
#result  

-5
785
-5 785</code></pre>
<h3 id="tuple튜플속에-tuple튜플을-응용-하기">tuple(튜플)속에 tuple(튜플)을 응용 하기</h3>
<pre><code class="language-python">(a, (b,(c, d))) = (19,(5,(3,1)))
print(a)
print(b)
print(c)
print(d)

-----------------------------------
#result  

19
5
3
1</code></pre>
<h3 id="튜플을-이용한-변수값-스위치">튜플을 이용한 변수값 스위치</h3>
<pre><code class="language-python">a = &#39;딸기&#39;
b = &#39;토마토&#39;
a, b  = b, a
print(a, b)

-----------------------------------
#result  

토마토 딸기</code></pre>
<h3 id="tuple튜플변환---tupleiterable한-객체는-변형가능">tuple(튜플)변환 - tuple(iterable한 객체)는 변형가능</h3>
<pre><code class="language-python">print(tuple([1, 7, 5, 3, 9]))
print(tuple(&quot;abcde&quot;))
print(tuple({&#39;abc&#39;: 5, &#39;def&#39;: 2, &#39;ghi&#39;: 999}))
# print(tuple(12345)) # TypeError: &#39;int&#39; object is not iterable

-----------------------------------
#result 

(1, 7, 5, 3, 9)
(&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;)
(&#39;abc&#39;, &#39;def&#39;, &#39;ghi&#39;)</code></pre>
<h3 id="in-으로로-포함여부-확인-가능">in 으로로 포함여부 확인 가능</h3>
<pre><code class="language-python">a = &#39;a&#39; in (&#39;a&#39;, &#39;b&#39;, &#39;c&#39;)
b = 5 in (&#39;a&#39;,&#39;b&#39;,&#39;c&#39;)
c = 5 not in (&#39;a&#39;,&#39;b&#39;,&#39;c&#39;)

print(a, b, c)

-----------------------------------
#result 

True False True</code></pre>
<p>출처 :<a href="https://wikidocs.net/16042">https://wikidocs.net/16042</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python(파이썬) reverse 와 reversed의 차이 and 리스트, 튜플을 문자열로 만들기(by. join)]]></title>
            <link>https://velog.io/@code_angler/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-reverse-%EC%99%80-reversed%EC%9D%98-%EC%B0%A8%EC%9D%B4-and-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%ED%8A%9C%ED%94%8C%EC%9D%84-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0by.-join</link>
            <guid>https://velog.io/@code_angler/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-reverse-%EC%99%80-reversed%EC%9D%98-%EC%B0%A8%EC%9D%B4-and-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%ED%8A%9C%ED%94%8C%EC%9D%84-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0by.-join</guid>
            <pubDate>Mon, 24 May 2021 06:20:44 GMT</pubDate>
            <description><![CDATA[<h2 id="--파이썬에서-리스트의-요소를-뒤집을때-reverse와-reversed를-이용한다">- 파이썬에서 리스트의 요소를 뒤집을때 reverse와 reversed를 이용한다.</h2>
<p>그 차이는 무엇인지에 대해 알아보자!!</p>
<h3 id="1-reverse">1. reverse</h3>
<p>reverse는 list 타입에서 제공하는 함수
기본형 = list.reverse()</p>
<pre><code class="language-python">l = [&#39; t&#39;, &#39;o&#39;, &#39;p&#39;] # list타입
t = (&#39;t&#39;, &#39;o&#39;, &#39;p&#39;) # tuple 타입
d = {&#39;t&#39;: 1, &#39;o&#39;: 2, &#39;p&#39;: 3} # dict 타입
s = &#39;top&#39; # string 타입
-------------------------------------------------------
l.reverse()  # list의 순서를 뒤집어줌
t.reverse()  # AttributeError: &#39;tuple&#39; object has no attribute &#39;reverse&#39;
d.reverse()  # AttributeError: &#39;dict&#39; object has no attribute &#39;reverse&#39;
s.reverse()  # AttributeError: &#39;str&#39; object has no attribute &#39;reverse&#39;

print(l[:])

---------------------------------------------
# result
[&#39;p&#39;, &#39;o&#39;, &#39;t&#39;]</code></pre>
<p>리스트 값을 반환하는 것이 아니라 변환시켜주므로서 
print(l.reverse())라는 것은 None 으로 출력됨</p>
<pre><code class="language-python">l = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
l_reverse = l.reverse()

print(l_reverse)  
print(l) 

-------------------------------
# result

None
[&#39;c&#39;, &#39;b&#39;, &#39;a&#39;]</code></pre>
<h3 id="2-reversed">2. reversed</h3>
<p>reversed는 내장함수로, list에서 제공하는 함수가 아니다.</p>
<p>기본형 = reverse(var)</p>
<pre><code class="language-python">l = [&#39; t&#39;, &#39;o&#39;, &#39;p&#39;] # list타입
t = (&#39;t&#39;, &#39;o&#39;, &#39;p&#39;) # tuple 타입
d = {&#39;t&#39;: 1, &#39;o&#39;: 2, &#39;p&#39;: 3} # dict 타입
s = &#39;top&#39; # string 타입

reversed(l)  # &lt;listreverseiterator object at 0x101053c10&gt;
reversed(t)  # &lt;reversed object at 0x101053b50&gt;
reversed(d)  # TypeError: argument to reversed() must be a sequence
reversed(s)  # &lt;reversed object at 0x101053c10&gt;

print(reversed(l))  
print(reversed(t))  
print(reversed(s))  
-------------------------------------------------
# result
&lt;list_reverseiterator object at 0x0000019540D7A130&gt;
&lt;reversed object at 0x0000019540D7A130&gt;
&lt;reversed object at 0x0000019540D7A130&gt;</code></pre>
<p>딕셔너리는 순서가 있는 타입이 아니므로 지원하지 않는다.</p>
<p>또한 print를 하였을때 속성값이 나온다.</p>
<p>변환된 값을 출력하고싶을때는</p>
<p>아래와 같이 </p>
<pre><code class="language-python">l = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
t = (&#39;a&#39;, &#39;b&#39;, &#39;c&#39;)
s = &#39;abc&#39;

list_1 = list(reversed(l))  # [&#39;c&#39;, &#39;b&#39;, &#39;a&#39;]
tuple_1 = tuple(reversed(t))  # (&#39;c&#39;, &#39;b&#39;, &#39;a&#39;)
string = str(reversed(s))
string_list = list(reversed(s))
string_tuple = tuple(reversed(s))



print(list_1)
print(tuple_1)
print(string)
print(string_list)
print(string_tuple)

-------------------------------------------------
# result

[&#39;c&#39;, &#39;b&#39;, &#39;a&#39;]
(&#39;c&#39;, &#39;b&#39;, &#39;a&#39;)
&lt;reversed object at 0x000002E2699BA130&gt;
[&#39;c&#39;, &#39;b&#39;, &#39;a&#39;]
(&#39;c&#39;, &#39;b&#39;, &#39;a&#39;)</code></pre>
<p>string을 변환하기 위해서 는 다른 방법이 필요하다</p>
<h3 id="list와-tuple을-모두-문자열로-만들수-있는-join이라는-함수가-있다">list와 tuple을 모두 문자열로 만들수 있는 join이라는 함수가 있다.</h3>
<pre><code class="language-python">l = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]

&#39;&#39;.join(l)  # &#39;abc&#39;
j = &#39;&#39;.join(l)
rj =&#39;&#39;.join(reversed(l))

print(j)
print(rj)

---------------------------------------
# result

abc
cba</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[Python 문자 제거 (by. String strip(),rstrip(),lstrip() 사용 )]]></title>
            <link>https://velog.io/@code_angler/Python-%EB%AC%B8%EC%9E%90-%EC%A0%9C%EA%B1%B0-by.-String-striprstriplstrip-%EC%82%AC%EC%9A%A9</link>
            <guid>https://velog.io/@code_angler/Python-%EB%AC%B8%EC%9E%90-%EC%A0%9C%EA%B1%B0-by.-String-striprstriplstrip-%EC%82%AC%EC%9A%A9</guid>
            <pubDate>Mon, 24 May 2021 05:30:57 GMT</pubDate>
            <description><![CDATA[<h2 id="python의-string-의-내장함수를-활용한-문자제거">Python의 String 의 내장함수를 활용한 문자제거</h2>
<ul>
<li>strip([chars]) : 인자로 전달된 문자를 String의 왼쪽과 오른쪽에서 제거한다.</li>
<li>lstrip([chars]) : 인자로 전달된 문자를 String의 왼쪽에서 제거한다.</li>
<li>rstrip([chars]) : 인자로 전달된 문자를 String의 오른쪽에서 제거한다.</li>
</ul>
<p>인자를 전달하지 않을 수도 있으며, 인자를 전달하지 않으면 String에서 공백을 제거한다</p>
<h2 id="공백white-space-제거">공백(white space) 제거</h2>
<pre><code class="language-python">text = &#39;   this is gold   &#39;
print(&#39;[&#39; + text.rstrip() + &#39;]&#39;)
print(&#39;[&#39; + text.lstrip() + &#39;]&#39;)
print(&#39;[&#39; + text.strip() + &#39;]&#39;)

-------------------------------------------
# result
[   this is gold]
[this is gold   ]
[this is gold]</code></pre>
<h2 id="동일한-문자-제거">동일한 문자 제거</h2>
<p>인자로 전달한 한 문자와 동일한 개체를 모두 제거, 동일하지 않은 문자가 나올 때까지 제거한다</p>
<pre><code class="language-python">text = &#39;aaaafineappleaaaaa&#39;
print(text.rstrip(&#39;a&#39;))
print(text.lstrip(&#39;a&#39;))
print(text.strip(&#39;a&#39;))

-------------------------------------------
# result
[aaaafineapple]
[fineappleaaaaa]
[fineapple]</code></pre>
<p>중간에 있는 a에는 영향을 미치지 않음</p>
<h2 id="여러-문자-제거">여러 문자 제거</h2>
<p>인자로 여러 문자를 전달하면 그 문자들과 동일한 것들을 모두 제거, 동일하지 않은 문자가 나올 때까지 제거한다.</p>
<pre><code class="language-python">text = &quot;rrrrr865.....pretty....rr,,,,&quot;
print(text.lstrip(&#39;,865.r&#39;))
print(text.rstrip(&#39;,865.r&#39;))
print(text.strip(&#39;,865.r&#39;))
print(text.strip(&#39;,568.r&#39;))

-------------------------------------------
# result
[pretty....rr,,,,]
[rrrrr865.....pretty]
[pretty]
[pretty]</code></pre>
<p>위와 동일하게 중간에 있는 문자에 대해서는 영향을 미치지않는다. </p>
<ul>
<li>또한 인자를 하나의 독립적인 개체로 보기떄문에 865를 8,6,5 따로따로 인자로 본것 이므로 568 을 입력하였을때도 동일한 결과과 나온다.</li>
<li>공백 또한 하나의 요소로 인정하기 때문에 strip(&#39;,8 65.r&#39;)는  strip(&#39;,865.r&#39;)이라는 것이랑 비교할때 공백이라는 요소가 들어간 것으로 보면 된다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬 리스트 요소 제거하기]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%9A%94%EC%86%8C-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%9A%94%EC%86%8C-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 15 May 2021 07:28:13 GMT</pubDate>
            <description><![CDATA[<h1 id="인덱스로-제거하기">인덱스로 제거하기</h1>
<h3 id="span-stylecolorindianreddel-리스트명인덱스span"><span style="color:indianred">del 리스트명[인덱스]</span></h3>
<p>del 키워드를 통해 해당 인덱스에 위치한 요소가 지워집니다. </p>
<pre><code class="language-python">user_1 = [&#39;수진&#39;, &#39;민호&#39;, &#39;나빈&#39;]
del user_1[1]    # &#39;민호&#39; 삭제
print(user_1)

-----------------------------------------------------------
[&#39;수진&#39;, &#39;나빈&#39;]


user_2 = [&#39;bob&#39; , &#39;john&#39;, &#39;suzan&#39;]
del user_2[1:3] # &#39;john&#39;, &#39;suzan&#39; 삭제
print(user_2)

-----------------------------------------------------------
[&#39;bob&#39;]</code></pre>
<h3 id="span-stylecolorindianred리스트명pop인덱스span"><span style="color:indianred">리스트명.pop(인덱스)</span></h3>
<p>pop함수를 통해 해당 인덱스의 원소가 리스트에서 지워지게 되는데요. 만약 매개 변수가 없을때는 자동으로 -1 값이 들어가서 리스트의 맨 마지막 요소를 제거합니다.</p>
<pre><code class="language-python">user_1 = [&#39;수진&#39;, &#39;민호&#39;, &#39;나빈&#39;]
user_1.pop(1)    # &#39;민호&#39; 삭제
print(user_1)

-----------------------------------------------------------
[&#39;수진&#39;, &#39;나빈&#39;]</code></pre>
<hr>
<h1 id="값으로-제거하기">값으로 제거하기</h1>
<h3 id="span-stylecolorindianred리스트remove값span"><span style="color:indianred">리스트.remove(값)</span></h3>
<p>remove함수에 값을 넘겨주면 리스트에서 같은 값을 가지는 원소를 지워줍니다. 하지만 모든 값들을 지워주지는 않고 <strong>가장 먼저 발견된 요소</strong>를 지워줍니다. </p>
<pre><code class="language-python">user_1 = [&#39;민호&#39;, &#39;수진&#39;, &#39;연지&#39;, &#39;수진&#39;]
user_1.remove(&#39;수진&#39;) # &#39;수진&#39; 삭제
print(user_1)

-----------------------------------------------------------
[&#39;민호&#39;, &#39;연지&#39;, &#39;수진&#39;]</code></pre>
<p>아래와 같이 반복문을 이용하면 리스트에 존재하는 모든 Smith를 삭제할 수 있습니다.</p>
<pre><code class="language-python">
while &#39;수진&#39; in user_1:    
    user_1.remove(&#39;수진&#39;) # &#39;수진&#39; 삭제

-----------------------------------------------------------
[&#39;민호&#39;, &#39;연지&#39;]</code></pre>
<hr>
<h1 id="리스트의-원소-모두-제거하기">리스트의 원소 모두 제거하기</h1>
<h3 id="span-stylecolorindianred리스트clearspan"><span style="color:indianred">리스트.clear()</span></h3>
<p>clear함수를 이용하면 리스트 내의 모든 원소를 말끔하게 지워줍니다.</p>
<pre><code class="language-python">user_1 = [&#39;민호&#39;, &#39;수진&#39;, &#39;연지&#39;, &#39;수진&#39;]
user_1.clear() # 모두 삭제
print(user_1)

-----------------------------------------------------------
[]</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬 문자열 나누기]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%82%98%EB%88%84%EA%B8%B0</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%82%98%EB%88%84%EA%B8%B0</guid>
            <pubDate>Sat, 15 May 2021 06:18:49 GMT</pubDate>
            <description><![CDATA[<ul>
<li><h2 id="span-stylecolorindianred기준으로-나누기span"><span style="color:indianred">기준으로 나누기!!</span></h2>
</li>
</ul>
<pre><code class="language-python">food = &quot;sushi&amp;sashimi&quot;
print(food.split(&#39;&amp;&#39;))
print(food.split(&#39;&amp;&#39;)[0])

-------------------------------------------
[&#39;sushi&#39;, &#39;sashimi&#39;]
sushi</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬 리스트 비교 (같은값, 다른값)
[set자료형(합집합,교집합,차집합), numpy]]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B9%84%EA%B5%90-%EA%B0%99%EC%9D%80%EA%B0%92-%EB%8B%A4%EB%A5%B8%EA%B0%92set%EC%9E%90%EB%A3%8C%ED%98%95%ED%95%A9%EC%A7%91%ED%95%A9%EA%B5%90%EC%A7%91%ED%95%A9%EC%B0%A8%EC%A7%91%ED%95%A9</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B9%84%EA%B5%90-%EA%B0%99%EC%9D%80%EA%B0%92-%EB%8B%A4%EB%A5%B8%EA%B0%92set%EC%9E%90%EB%A3%8C%ED%98%95%ED%95%A9%EC%A7%91%ED%95%A9%EA%B5%90%EC%A7%91%ED%95%A9%EC%B0%A8%EC%A7%91%ED%95%A9</guid>
            <pubDate>Sat, 15 May 2021 06:16:52 GMT</pubDate>
            <description><![CDATA[<h2 id="리스트-값을-비교하기에-앞서-집합의-개념에-대해-먼저-알아보자">리스트 값을 비교하기에 앞서, 집합의 개념에 대해 먼저 알아보자!!</h2>
<p>파이썬에서 <strong>set</strong>은 <strong>집합</strong>을 뜻한다.</p>
<ul>
<li><h3 id="set은-집합으로-만들어주는-내적함수이다span-stylecolorindianred중복된-요소를-합쳐준다span">set은 집합으로 만들어주는 내적함수이다.<span style="color:indianred">(중복된 요소를 합쳐준다)</span></h3>
</li>
</ul>
<pre><code class="language-python">a = [1, 2, 3, 4, 5, 5, 5, 6, 7, 7]
print(set(a))

-----------------------------------------------------------
{1, 2, 3, 4, 5, 6, 7}</code></pre>
<h3 id="1-교집합">1. 교집합</h3>
<pre><code class="language-python">set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])

print(set1 &amp; set2)
print(set1.intersection(set2))

-----------------------------------------------------------
{3, 4, 5, 6}
{3, 4, 5, 6}</code></pre>
<h3 id="2-합집합">2. 합집합</h3>
<pre><code class="language-python">
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])


print(set1 | set2)
print(set1.union(set2))

-----------------------------------------------------------
{1, 2, 3, 4, 5, 6, 8, 9}
{1, 2, 3, 4, 5, 6, 8, 9}</code></pre>
<h3 id="3-차집합">3. 차집합</h3>
<pre><code class="language-python">
set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])


print(set1 - set2)
print(set1.difference(set2))

-----------------------------------------------------------
{1, 2}
{1, 2}</code></pre>
<h3 id="4-대칭-차집합-교집합을-제외한-나머지의-합">4. 대칭 차집합( 교집합을 제외한 나머지의 합)</h3>
<pre><code class="language-python">set1 = set([1,2,3,4,5,6])
set2 = set([3,4,5,6,8,9])

print(set1 ^ set2)

-----------------------------------------------------------
{1, 2, 8, 9}</code></pre>
<h3 id="5-집합-추가와-제거">5. 집합 추가와 제거</h3>
<pre><code class="language-python">
set1 = set([1,2,3,4,5,6])
set1.update([7,8,9])         # update
print(set1)

set1.remove(9)               # remove
print(set1)
-----------------------------------------------------------
{1, 2, 3, 4, 5, 6, 7, 8, 9} {1, 2, 3, 4, 5, 6, 7, 8}</code></pre>
<hr>
<h3 id="span-stylecolorindianred리스트에서-같은-값-찾기span"><span style="color:indianred">리스트에서 같은 값 찾기</span></h3>
<pre><code class="language-python">
A = [1, 3, 5, 7, 9]
B = [10, 5, 1, 2, 4]

C = set(A) &amp; set(B)
D = [i for i in A if i in B]

print(C)
print(D)

-----------------------------------------------------------
print(C) ==&gt;{1, 5} 
print(D) ==&gt; [1, 5] </code></pre>
<h3 id="span-stylecolorindianred리스트에서-다른-값-찾기span"><span style="color:indianred">리스트에서 다른 값 찾기</span></h3>
<pre><code class="language-python">A = [1, 2, 7, 4, 5]
B = [1, 3, 8, 7, 9]

C = list(set(A) - set(B))
D = list(set(B) - set(A))

-----------------------------------------------------------
C ==&gt; [2, 4, 5]
D ==&gt; [8, 9, 3]</code></pre>
<h3 id="span-stylecolorindianred리스트값-비교span"><span style="color:indianred">리스트값 비교</span></h3>
<pre><code class="language-python">list1 = [[1, 3], [5, 7]]
list2 = [[1, 3], [5, 7]]
print(list1 == list2)
-----------------------------------------------------------
True



list3 = [[1, 3], [5, 7]]
list4 = [[1, 3], [5, 8]]
print(list3 == list4)
-----------------------------------------------------------
False</code></pre>
<h3 id="span-stylecolorindianred두-리스트-성분-비교span"><span style="color:indianred">두 리스트 성분 비교</span></h3>
<h4 id="1-sorted를-사용해서-정렬한-후-비교">1. sorted()를 사용해서 정렬한 후 비교</h4>
<p> 크기순으로 정렬한 list의 길이가 같고 요소들이 같을 경우 True를, 그렇지 않은 경우 False를 반환</p>
<pre><code class="language-python">list1 = [1, 2, 3, 4, 5]
list2 = [2, 1, 4, 5, 3]
print(sorted(list1) == sorted(list2))

-----------------------------------------------------------
True</code></pre>
<h4 id="2-set를-사용해서-정렬한-후-비교-by-">2. set()를 사용해서 정렬한 후 비교 [by, ==]</h4>
<pre><code class="language-python">list1 = [1, 2, 3, 4, 2, 5, 1]
list2 = [2, 4, 1, 5, 3]
list3 = [1, 3, 2, 4, 1]

print(set(list1))
print(set(list2))
print(set(list3))
print(set(list1) == set(list2))
print(set(list1) == set(list3))

-----------------------------------------------------------
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5}
{1, 2, 3, 4}
True
False</code></pre>
<h4 id="3-nparray_equal-사용하기">3. np.array_equal() 사용하기</h4>
<pre><code class="language-python">import numpy as np

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[1, 2], [3, 4]])
print(np.array_equal(arr1, arr2))

-----------------------------------------------------------
True


arr3 = np.array([[1, 2], [3, 4]])
arr4 = np.array([[1, 2], [5, 4]])
print(np.array_equal(arr3, arr4))

-----------------------------------------------------------
False</code></pre>
<h4 id="4npequal-사용하기">4.np.equal() 사용하기</h4>
<p>각각의 요소를 비교</p>
<pre><code class="language-python">import numpy as np

a = np.array([1, 2, 3])
b = np.array([3, 2, 1])

print(np.equal(a, b))

-----------------------------------------------------------
[False True False]</code></pre>
<hr>
<pre><code class="language-python">import numpy as np

a = np.array([0, 1, 3])
b = np.arange(3) # [0, 1, 2]

print(np.equal(a, b))
print(a == b)
-----------------------------------------------------------
[True True False]
[True True False]</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[알아두면 편리한 크롤링!!(by.  PyCharm)]]></title>
            <link>https://velog.io/@code_angler/%EB%88%84%EA%B5%AC%EB%82%98-%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%89%AC%EC%9A%B4-%ED%81%AC%EB%A1%A4%EB%A7%81by.-PyCharm</link>
            <guid>https://velog.io/@code_angler/%EB%88%84%EA%B5%AC%EB%82%98-%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%89%AC%EC%9A%B4-%ED%81%AC%EB%A1%A4%EB%A7%81by.-PyCharm</guid>
            <pubDate>Fri, 14 May 2021 12:17:32 GMT</pubDate>
            <description><![CDATA[<h2 id="크롤링이란">크롤링이란?</h2>
<h4 id="span-stylecolorindianred데이터를-수집하고-분류하는-것을-의미하며-주로-인터넷-상의-웹페이지html-문서-등를-수집해서-분류하고-저장하는-것을-뜻한다span"><span style="color:indianred">데이터를 수집하고 분류하는 것을 의미하며, 주로 인터넷 상의 웹페이지(html, 문서 등)를 수집해서 분류하고 저장하는 것을 뜻한다.</span></h4>
<p><img src="https://images.velog.io/images/code_angler/post/76cc69cd-9f8e-4735-8805-80655945ae31/image.png" alt=""></p>
<p>위 페이지에는 지니뮤직 지니차트가 1위부터 50위 까지 포함된 페이지 이다.
내가 원하는 정보는 <strong>[순위, 제목, 가수이름]</strong>이 필요하다고 했을때,한 page 정도야 타이핑으로 충분히 할수있지만, 누군가 <strong>수 천pages</strong>를 작업하라고 한다면 분명 크롤링이 필요할것이다.</p>
<h2 id="자-그럼-span-stylecolorindianred크롤링span을-시작해-보자by-pycharm">자 그럼 <span style="color:indianred">크롤링</span>을 시작해 보자!(by. PyCharm)</h2>
<pre><code class="language-python">import requests
from bs4 import BeautifulSoup

headers = {&#39;User-Agent&#39; : &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36&#39;}
data = requests.get(&#39;https://www.genie.co.kr/chart/top200?ditc=D&amp;ymd=20200403&amp;hh=23&amp;rtm=N&amp;pg=1&#39;,headers=headers)

soup = BeautifulSoup(data.text, &#39;html.parser&#39;)

trs =soup.select(&#39;#body-content &gt; div.newest-list &gt; div &gt; table &gt; tbody &gt; tr&#39;)

for tr in trs:
    rank = tr.select_one(&#39;td.number&#39;).text.split(&quot;\n&quot;)[0]
    title = tr.select_one(&#39;td.info &gt; a.title.ellipsis&#39;).text.strip()
    singer = tr.select_one(&#39;td.info &gt; a.artist.ellipsis&#39;).text.strip()

    print(rank, title, singer)
</code></pre>
<h3 id="이렇게-짧은-코드로--아래와-같은-정보를-한번에-얻을수-있다">이렇게 짧은 코드로  아래와 같은 정보를 한번에 얻을수 있다!!</h3>
<blockquote>
<p>1 아로하 조정석
2 시작 가호 (Gaho)
3 처음처럼 엠씨더맥스 (M.C the MAX)
4 이제 나만 믿어요 임영웅
5 아무노래 지코 (ZICO)
6 흔들리는 꽃들 속에서 네 샴푸향이 느껴진거야 장범준
7 뭔가 잘못됐어 권진아
8 WANNABE ITZY (있지)
9 돌덩이 하현우 (국카스텐)
10 어떻게 지내 (Prod. by VAN.C) 오반 (OVAN)
11 METEOR 창모 (CHANGMO)
12 화려하지 않은 고백 규현 (KYUHYUN)
13 그때 그 아인 김필
14 Blueming 아이유 (IU)
15 문득 노을
16 마음을 드려요 아이유 (IU)
17 ON 방탄소년단
18 늦은 밤 너의 집 앞 골목길에서 노을
19 좋은 사람 있으면 소개시켜줘 조이 (JOY)
20 뜸 WINNER
21 Psycho Red Velvet (레드벨벳)
22 FIESTA IZ*ONE (아이즈원)
23 반만 진민호
24 2002 Anne-Marie
25 HIP 마마무(Mamamoo)
26 오늘도 빛나는 너에게 (To You My Light) (Feat.이라온) 마크툽 (Maktub)
27 어떻게 이별까지 사랑하겠어, 널 사랑하는 거지 AKMU (악동뮤지션)
28 작은 것들을 위한 시 (Boy With Luv) (Feat. Halsey) 방탄소년단
29 Memories Maroon 5
30 Don&#39;t Start Now Dua Lipa
31 안녕 폴킴
32 다시 난, 여기 백예린 (Yerin Baek)
33 모든 날, 모든 순간 (Every day, Every Moment) 폴킴
34 Love poem 아이유 (IU)
35 바빠서 (Feat. 헤이즈) 개코
36 꽃 (flower) (Feat. 박재범 &amp; 우원재 &amp; 기리보이) 코드 쿤스트 (CODE KUNST)
37 Square (2017) 백예린 (Yerin Baek)
38 노래방에서 장범준
39 bad guy Billie Eilish
40 조금 취했어 (Prod. by 2soo) 임재현
41 잘 지내고 있는지 궁금해 V.O.S
42 시든 꽃에 물을 주듯 HYNN (박혜원)
43 새로고침 (Feat. 강민경 of 다비치) 박경
44 사랑이란 멜로는 없어 전상근
45 벚꽃 엔딩 버스커 버스커 (Busker Busker)
46 우리 왜 헤어져야 해 신예영
47 사랑의 인사 씨야 (SeeYa)
48 아무렇지 않게, 안녕 HYNN (박혜원)
49 Paris In The Rain Lauv
50 주저하는 연인들을 위해 잔나비</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬(Python) 문자/숫자인지 확인하기[isalpha, isdigit, isalnum]]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EB%AC%B8%EC%9E%90%EC%88%AB%EC%9E%90%EC%9D%B8%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0isalpha-isdigit-isalnum</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EB%AC%B8%EC%9E%90%EC%88%AB%EC%9E%90%EC%9D%B8%EC%A7%80-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0isalpha-isdigit-isalnum</guid>
            <pubDate>Wed, 12 May 2021 15:08:59 GMT</pubDate>
            <description><![CDATA[<h2 id="문자열만-포함되어있는지-확인하기">문자열만 포함되어있는지 확인하기</h2>
<h3 id="문자열의-구성이-알파벳-or-한글인지-확인하는-방법-isalpha">문자열의 구성이 알파벳 or 한글인지 확인하는 방법 [isalpha]</h3>
<p>isalpha()라는 내장함수 사용, 단 문자열에 공백,기호 and 숫자가 있을시 False를 리턴한다.</p>
<pre><code class="language-python"># Example for isalpha

ex_01 = &#39;A&#39;
ex_02 = &#39;S520&#39;
ex_03 = &quot;코드앵글러&quot;
ex_04 = &quot;Code_Angler&quot;
ex_05 = &quot;Code Angler&quot;

# print result of isalpha()

print(ex_01.isalpha())
print(ex_02.isalpha()) # 숫자가 포함되여 False
print(ex_03.isalpha())
print(ex_04.isalpha()) # 기호가 포함되어 False
print(ex_05.isalpha()) # 공백이 포함되어 False</code></pre>
<hr>
<h3 id="숫자인지-확인하는-방법-isdigit">숫자인지 확인하는 방법 [isdigit]</h3>
<p>위와 비슷하게 isdigit()라는 내장함수를 사용하여 확인한다.</p>
<pre><code class="language-python"># Example for isdigit

ex_01 = &#39;123&#39;
ex_02 = &#39;010-1234-5678&#39;
ex_03 = &quot;전화번호010&quot;
ex_04 = &quot;Phone 010&quot;

# print result of isdigit()

print(ex_01.isdigit())
print(ex_02.isdigit()) # 기호가 포함되여 False
print(ex_03.isdigit()) # 문자가 포함되어 False
print(ex_04.isdigit()) # 공백이 포함되어 False</code></pre>
<hr>
<h3 id="알파벳한글-또는-숫자인지-확인하는법isalnum">알파벳(한글) 또는 숫자인지 확인하는법[isalnum]</h3>
<p>isalnum()라는 내장함수를 사용하여 확인한다.</p>
<pre><code class="language-python"># Example for isalnum

ex_01 = &#39;123&#39;
ex_02 = &#39;010-1234-5678&#39;
ex_03 = &quot;전화번호010&quot;
ex_04 = &quot;Phone 010&quot;

# print result of isalnum()

print(ex_01.isalnum())
print(ex_02.isalnum()) # 기호가 포함되여 False
print(ex_03.isalnum()) 
print(ex_04.isalnum()) # 공백이 포함되어 False</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95</guid>
            <pubDate>Wed, 12 May 2021 11:45:15 GMT</pubDate>
            <description><![CDATA[<h1 id="pyhton-진법-변환">Pyhton 진법 변환</h1>
<h3 id="n진수--→-10진수">n진수  → 10진수</h3>
<h4 id="--결과값은-모두-string-입니다">*  결과값은 모두 string 입니다.</h4>
<p>python에서는 기본적으로 int() 라는 함수를 지원한다</p>
<p><code>int(string, base)</code></p>
<h4 id="위와-같은-형식으로-사용--base에는-진법을-넣으면-된다">위와 같은 형식으로 사용.  base에는 진법을 넣으면 된다.</h4>
<pre><code class="language-python">print(int(&#39;101&#39;,2))
print(int(&#39;202&#39;,3))
print(int(&#39;303&#39;,4))
print(int(&#39;404&#39;,5))
print(int(&#39;505&#39;,6))
print(int(&#39;ACF&#39;,16))</code></pre>
<blockquote>
<p>20
51
104
185
2767</p>
</blockquote>
<p>10진수로 변경이 가능하다.</p>
<h3 id="10진수--→-2-8-16진수">10진수  → 2, 8, 16진수</h3>
<p>2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.</p>
<pre><code class="language-python">print(bin(11))
print(oct(11))
print(hex(11))</code></pre>
<blockquote>
<p>0b1011
0o13
0xb</p>
</blockquote>
<p>0b는 2진수, 0o는 8진수, 0x는 16진수를 의미합니다. 진법 표시를 지울려면 [2:]를 하면 된다.</p>
<pre><code class="language-python">print(bin(11)[2:])
print(oct(11)[2:])
print(hex(11)[2:])</code></pre>
<blockquote>
<p>1011
13
b</p>
</blockquote>
<hr>
<h3 id="10진수--→-n진수">10진수  → n진수</h3>
<p>int 같은 함수가 없기 때문에 코드작성이 필요하다</p>
<pre><code class="language-python">def solution(n, q):
    rev_base = &#39;&#39;

    while n &gt; 0:
        n, mod = divmod(n, q)
        rev_base += str(mod)

    return rev_base[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력

print(solution(45, 3))</code></pre>
<blockquote>
<p>1200</p>
</blockquote>
<hr>
<h3 id="n진수--→-n진수">n진수  → n진수</h3>
<p>위에 썻던것들을 활용해서 n진수를 10진수로 변경하고 다시 n진수로 변경하면 됩니다.</p>
<pre><code class="language-python">print(solution(int(&#39;c&#39;,16),4)) # 16진수인 C를 4진수로 바꾸는것
print(solution(int(&#39;4&#39;,6),3))  # 6진수인 4를 3진수로 바꾸는것
print(solution(int(&#39;21&#39;,3),7)) # 3진수인 21을 7진수로 바꾸는것
print(solution(int(&#39;15&#39;,9),5)) # 9진수인 15를 5진수로 바꾸는것</code></pre>
<blockquote>
<p>30
11
10
24</p>
</blockquote>
<h3 id="잠시-보고가는-나의-복잡한-정답식feat-divmod를-몰라서-발생-programmers-3진법-뒤집기">잠시 보고가는 나의 복잡한 정답식(feat, divmod를 몰라서 발생) (programmers 3진법 뒤집기)</h3>
<pre><code class="language-python">def solution(n):
    rev_thr = []
    for i in range(1, 100):
        if (3 ** i) &lt; n:
            a = (n // (3 ** (i-1)))
            thr = a % 3
            rev_thr.append(thr)
            if a &lt; 9:
                rev_thr.append(a // (3))
    print(rev_thr)

    tenth = 0
    z = 1
    for j in rev_thr:
        number = ((3 ** (len(rev_thr)-z) * j))
        z += 1
        tenth += number
    print(tenth)

solution(45) # result 7 ,rev_thr = [0,0,2,1]
solution(125) # result 229, rev_thr = [2,2,1,1,1]</code></pre>
<h1 id="span-stylecolorslateblue-n진수-정리-끝span"><span style="color:slateblue"> N진수 정리 끝!!!!</span></h1>
]]></description>
        </item>
        <item>
            <title><![CDATA[코드는 효율적으로 만들자(실수>교정) ]]></title>
            <link>https://velog.io/@code_angler/%EC%BD%94%EB%93%9C%EB%8A%94-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EC%9E%90%EC%8B%A4%EC%88%98%EA%B5%90%EC%A0%95</link>
            <guid>https://velog.io/@code_angler/%EC%BD%94%EB%93%9C%EB%8A%94-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%A7%8C%EB%93%A4%EC%9E%90%EC%8B%A4%EC%88%98%EA%B5%90%EC%A0%95</guid>
            <pubDate>Mon, 03 May 2021 15:52:30 GMT</pubDate>
            <description><![CDATA[<h3 id="효율적인-코드만들기">효율적인 코드만들기</h3>
<p>코드를 생성하다보면, 맞아도 효율적인것이 더욱 좋다고 생각되는데요. 짧은 코드를 만들때는 아무런 차이를 못느끼지만 데이터가 커지는 순간 속도의 차이가 생기기 마련이죠!!!</p>
<p>코린이인 저는 하면서 많은 부분을 교정해 나가고 있습니다.</p>
<h4 id="오늘은-제가-짠-코드와-교정된-코드를-비교해-보겠습니다">오늘은 제가 짠 코드와 교정된 코드를 비교해 보겠습니다.</h4>
<p>Ajax를 활용한 코딩이 였습니다.</p>
<p>** 수정 전 코드 **</p>
<pre><code>&lt;style&gt;
    .rate {
        color: blue;
    }
&lt;/style&gt;
&lt;script&gt;
    $(document).ready(function () {
            usa_rate()
        });

        function usa_rate() {
            $.ajax({
                type: &quot;GET&quot;,
                url: &quot;https://api.manana.kr/exchange/rate.json&quot;,
                data: {},
                success: function (response) {
                    let usadoller = response[1][&#39;rate&#39;]
                    let temp_html = `&lt;span class=&quot;rate&quot;&gt;달러-원 환율: ${usadoller}&lt;/span&gt;`

                    $(&#39;#usa&#39;).append(temp_html)
&lt;/script&gt;
&lt;body&gt;
&lt;div id=&quot;usa&quot;&gt;&lt;/div&gt;    
&lt;/body&gt;</code></pre><p>** 교정 된 코드 ** </p>
<pre><code>&lt;style&gt;
    .rate {
            color: blue;
        }
&lt;/style&gt;
&lt;script&gt;
        $(document).ready(function () {
            p()
        });

        function p() {
            $.ajax({
                type: &quot;GET&quot;,
                url: &quot;https://api.manana.kr/exchange/rate.json&quot;,
                data: {},
                success: function (response) {
                    let nowrate = response[1][&#39;rate&#39;]
                    $(&#39;#now-rate&#39;).text(nowrate)
                }
            })
        }
&lt;/script&gt;
&lt;body&gt;
    &lt;p class=&quot;rate&quot;&gt;달러-원 환율: &lt;span id=&quot;now-rate&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/body&gt;</code></pre><p>차이가 보이시나요. 처음에 저는 괜히  <code>&lt;div&gt;</code> 에 묶고 temp_html에서 <code>&lt;span&gt;</code>을 만들어 텍스트만 변경하는것이 아닌 큰 코드를 append 하는방식으로 하였습니다.</p>
<p>변경된 방식으로 하였을때는 이미 불러와 있는 <code>&quot;달러-원:&quot;</code>이라는 고정된 텍스트에 변화하는 환율 텍스트만 변경하는 방식이라면, 그전에는 매번 <code>&quot;달러-원:${usadoller}</code> 을 로딩하므로서 효율이 떨어졌다고 생각합니다.
또한 변수의 naming 또한 직관적으로 알아보기엔 아직 부족하다고 많이 느끼게 되었습니다.</p>
<h3 id="앞으로도-해답을-보기전에-미리-나만의-풀이법을-보고-비교하며-효율적인-코드를-만들수-있는-날이-왔으면-좋겠습니다">앞으로도 해답을 보기전에 미리 나만의 풀이법을 보고 비교하며, 효율적인 코드를 만들수 있는 날이 왔으면 좋겠습니다!!!</h3>
]]></description>
        </item>
        <item>
            <title><![CDATA[파비콘(favicon) 적용이 안되시나요? 파비콘 만들기, 하기쉬운 오류(삽질 방지)]]></title>
            <link>https://velog.io/@code_angler/%ED%8C%8C%EB%B9%84%EC%BD%98favicon-%EC%A0%81%EC%9A%A9%EC%9D%B4-%EC%95%88%EB%90%98%EC%8B%9C%EB%82%98%EC%9A%94-%ED%8C%8C%EB%B9%84%EC%BD%98-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%95%98%EA%B8%B0%EC%89%AC%EC%9A%B4-%EC%98%A4%EB%A5%98%EC%82%BD%EC%A7%88-%EB%B0%A9%EC%A7%80</link>
            <guid>https://velog.io/@code_angler/%ED%8C%8C%EB%B9%84%EC%BD%98favicon-%EC%A0%81%EC%9A%A9%EC%9D%B4-%EC%95%88%EB%90%98%EC%8B%9C%EB%82%98%EC%9A%94-%ED%8C%8C%EB%B9%84%EC%BD%98-%EB%A7%8C%EB%93%A4%EA%B8%B0-%ED%95%98%EA%B8%B0%EC%89%AC%EC%9A%B4-%EC%98%A4%EB%A5%98%EC%82%BD%EC%A7%88-%EB%B0%A9%EC%A7%80</guid>
            <pubDate>Sun, 02 May 2021 14:53:57 GMT</pubDate>
            <description><![CDATA[<h2 id="파비콘favicon-만들기">파비콘(favicon) 만들기</h2>
<p>1) 파비콘이란?</p>
<p><img src="https://images.velog.io/images/code_angler/post/7b6d89e9-62f4-4448-9c7a-a9f28b3b81f0/image.png" alt=""></p>
<p>예를 들어 네이버 페이지에서 보자면 Title앞에 작은 아이콘을 파비콘이라 합니다.</p>
<p>2) 파비콘 만들기</p>
<ul>
<li><a href="https://convertico.com/">https://convertico.com/</a>
여기서 만들수 있습니다.</li>
</ul>
<p><img src="https://images.velog.io/images/code_angler/post/f014391d-61bd-402e-a403-fd0f0a226bb3/image.png" alt=""></p>
<p>미리 저장해둔 이미지를 업로드하면, </p>
<p><img src="https://images.velog.io/images/code_angler/post/36c28a13-796f-4513-920b-57227222a5e6/image.png" alt=""></p>
<p>파비콘이 생성된것을 볼수있으실겁니다.</p>
<p>** @@@@꼭 HTML을 작업하는 폴더에 파비콘을 저장하여야 합니다.@@@@**</p>
<ul>
<li><p>기본 코드:</p>
<pre><code>&lt;link rel=&quot;icon&quot; href=&quot;/파일명.ico&quot; type=&quot;image/x-icon&quot;&gt;</code></pre><p>저는 다른폴더에 저장하여 한참 삽질을 하였네요....
이후에는 서버에 올려 사용한다고 하지만, 처음 만들 당시에는 <strong>폴더지정이 중요</strong>합니다.</p>
</li>
<li><p>적용되지 않을시에는 </p>
</li>
</ul>
<pre><code>&lt;link rel=&quot;icon&quot; href=&quot;/저장한 폴더명/파일명.ico&quot; type=&quot;image/x-icon&quot;&gt;</code></pre><ul>
<li>서버에서 작업하여 올릴시에는 서버의 도메인을 넣어줍니다.  <pre><code>&lt;link rel=&quot;icon&quot; href=&quot;http://www.도메인.com/파일명.ico&quot; /&gt;</code></pre></li>
</ul>
<h3 id="그-결과물">그 결과물</h3>
<p><img src="https://images.velog.io/images/code_angler/post/82761c70-37ee-487f-8c19-9f4f6181db24/image.png" alt=""></p>
<p>귀여운 파비콘이 생성되었습니다 ^^</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML의 요소 뜯어보기]]></title>
            <link>https://velog.io/@code_angler/HTML%EC%9D%98-%EC%9A%94%EC%86%8C-%EB%9C%AF%EC%96%B4%EB%B3%B4%EA%B8%B0</link>
            <guid>https://velog.io/@code_angler/HTML%EC%9D%98-%EC%9A%94%EC%86%8C-%EB%9C%AF%EC%96%B4%EB%B3%B4%EA%B8%B0</guid>
            <pubDate>Sun, 02 May 2021 04:09:48 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-&lt;!DOCTYPE">&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;HTML 기초&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;!-- 구역을 나누는 태그들 --&gt;
    &lt;div&gt;나는 구역을 나누죠&lt;/div&gt;
    &lt;p&gt;나는 문단이에요&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt; bullet point!1 &lt;/li&gt;
        &lt;li&gt; bullet point!2 &lt;/li&gt;
    &lt;/ul&gt;

    &lt;!-- 구역 내 콘텐츠 태그들 --&gt;
    &lt;h1&gt;h1은 제목을 나타내는 태그입니다. 페이지마다 하나씩 꼭 써주는 게 좋아요. 그래야 구글 검색이 잘 되거든요.&lt;/h1&gt;
    &lt;h2&gt;h2는 소제목입니다.&lt;/h2&gt;
    &lt;h3&gt;h3~h6도 각자의 역할이 있죠. 비중은 작지만..&lt;/h3&gt;
    &lt;hr&gt;
    span 태그입니다: 특정 &lt;span style=&quot;color:red&quot;&gt;글자&lt;/span&gt;를 꾸밀 때 써요
    &lt;hr&gt;
    a 태그입니다: &lt;a href=&quot;http://naver.com/&quot;&gt; 하이퍼링크 &lt;/a&gt;
    &lt;hr&gt;
    img 태그입니다: &lt;img src=&quot;https://https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRxWPA0bLvRLyIEVJRem3iJ3Ik5yv9YUyeo9A&amp;usqp=CAU&quot; /&gt;
    &lt;hr&gt;
    input 태그입니다: &lt;input type=&quot;text&quot; /&gt;
    &lt;hr&gt;
    button 태그입니다: &lt;button&gt; 버튼입니다&lt;/button&gt;
    &lt;hr&gt;
    textarea 태그입니다: &lt;textarea&gt;나는 무엇일까요?&lt;/textarea&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre>
<pre><code>&lt;head&gt;
이 공간에 들어가는 것들은 밑에보이는 이 구간을 꾸미는 거예요!!
- 또한 이후에 CSS,JC의 코드들을 입력하는 공간이기도 합니다.-
&lt;/head&gt;</code></pre><p><img src="https://images.velog.io/images/code_angler/post/70a07cd1-d311-4465-b7e9-11759435c0b4/image.png" alt=""></p>
<ul>
<li><p>위쪽 코드를 참조하시면 특이하게 <code>&lt;meta&gt;</code> 라는 태그는 닫는 태그 없이 사용된다는것 보실수있습니다.</p>
</li>
<li><p>여기서 <code>&lt;title&gt; HTML의 기초 &lt;/title&gt;</code> 위쪽 화면에서 보이시죠, 이게 무엇을 뜻하는지!!</p>
</li>
</ul>
<pre><code>&lt;body&gt;
눈에 보이는 페이지에 해당되는 부분의 큰틀을 잡아주는 공간입니다.
&lt;/body&gt;</code></pre><p><img src="https://images.velog.io/images/code_angler/post/142bea68-0dde-4282-8f2f-abbc1f4f2771/image.png" alt=""></p>
<ul>
<li><code>&lt;div&gt;</code>는 묶음을 지을때  많이 사용합니다. (divison: 분할)</li>
<li><code>&lt;p&gt;</code>는 문단을 나타냅니다. (paragraph: 문단)</li>
<li><code>&lt;h1&gt;</code>제목을 나타내는 태그로 글씨 포인트게 크게나온다는 특징이 있습니다, h1,h2,h3등 숫자가 작아질때마다 글자포인트가 작아지며, 소제목으로 가는것입니다.</li>
</ul>
<p><strong>여기서 h1은</strong> <em>google검색시 제목으로 인식하여, 노출됩니다.</em> 
그러므로 검색에 용이한 제목은 지을때 참고하세요!!</p>
<ul>
<li><p><code>&lt;span&gt;</code>태그는 글 중간에 들어가는 특정한 부분만 꾸미고 싶을때 사용하는 태그입니다.</p>
</li>
<li><p><code>&lt;hr&gt;</code>태그는 가로선을 만들어 구분선이 나타나는 태그입니다.</p>
</li>
</ul>
<h4 id="이상-기본적인-html-요소-뜯어보기였습니다"><strong>이상 기본적인 HTML 요소 뜯어보기였습니다!!!!!</strong></h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 이란?]]></title>
            <link>https://velog.io/@code_angler/HTML-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@code_angler/HTML-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Sun, 02 May 2021 03:32:11 GMT</pubDate>
            <description><![CDATA[<h3 id="홈페이지--집">홈페이지 = 집</h3>
<h3 id="html---뼈대">HTML  = 뼈대</h3>
<p>HTML 기초</p>
<ul>
<li><p>HTML은 크게 head와 body로 구성되며, head안에는 페이지의 속성 정보를, body안에는 페이지의 내용을 담습니다.</p>
</li>
<li><p>head 안에 들어가는 대표적인 요소들: meta, script, link, title 등</p>
<p>  페이지의 속성을 정의하거나, 필요한 스크립트들을 부릅니다. 즉, 눈에 안 보이는 필요한 것들을 담는 것. 나중에 body 작업을 하면서 필요한 정보들을 넣어보겠습니다.</p>
</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;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;HTML 기초&lt;/title&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;!-- 구역을 나누는 태그들 --&gt;
    &lt;div&gt;나는 구역을 나누죠&lt;/div&gt;
    &lt;p&gt;나는 문단이에요&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt; bullet point!1 &lt;/li&gt;
        &lt;li&gt; bullet point!2 &lt;/li&gt;
    &lt;/ul&gt;

    &lt;!-- 구역 내 콘텐츠 태그들 --&gt;
    &lt;h1&gt;h1은 제목을 나타내는 태그입니다. 페이지마다 하나씩 꼭 써주는 게 좋아요. 그래야 구글 검색이 잘 되거든요.&lt;/h1&gt;
    &lt;h2&gt;h2는 소제목입니다.&lt;/h2&gt;
    &lt;h3&gt;h3~h6도 각자의 역할이 있죠. 비중은 작지만..&lt;/h3&gt;
    &lt;hr&gt;
    span 태그입니다: 특정 &lt;span style=&quot;color:red&quot;&gt;글자&lt;/span&gt;를 꾸밀 때 써요
    &lt;hr&gt;
    a 태그입니다: &lt;a href=&quot;http://naver.com/&quot;&gt; 하이퍼링크 &lt;/a&gt;
    &lt;hr&gt;
    img 태그입니다: &lt;img src=&quot;https://https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRxWPA0bLvRLyIEVJRem3iJ3Ik5yv9YUyeo9A&amp;usqp=CAU&quot; /&gt;
    &lt;hr&gt;
    input 태그입니다: &lt;input type=&quot;text&quot; /&gt;
    &lt;hr&gt;
    button 태그입니다: &lt;button&gt; 버튼입니다&lt;/button&gt;
    &lt;hr&gt;
    textarea 태그입니다: &lt;textarea&gt;나는 무엇일까요?&lt;/textarea&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[서버/클라이언트/웹의 동작 개념]]></title>
            <link>https://velog.io/@code_angler/%EC%84%9C%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-%EA%B0%9C%EB%85%90</link>
            <guid>https://velog.io/@code_angler/%EC%84%9C%EB%B2%84%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-%EA%B0%9C%EB%85%90</guid>
            <pubDate>Sun, 02 May 2021 03:23:53 GMT</pubDate>
            <description><![CDATA[<h4 id="웹의-동작-개념-데이터만-받는-경우"><strong>웹의 동작 개념 (데이터만 받는 경우)</strong></h4>
<p>우리가 보는 웹페이지는 모두 서버에서 미리 준비해두었던 것을 &quot;받아서&quot;,&quot;그려주는&quot; 것입니다.
즉, 브라우저(예: Chrome)가 하는 일은 
첫째. 요청을 보내고,
둘째. 받은 HTML 파일을 그려주는 일 뿐이죠.</p>
<p>서버가 만들어 놓은 &quot;API&quot;라는 창구에 미리 정해진 약속대로 요청을 보낸다</p>
<p>예) <a href="https://naver.com/">https://naver.com/</a>
→ 이것은 &quot;naver.com&quot;이라는 이름의 서버에 있는, &quot;/&quot; 창구에 요청을 보낸 것!</p>
<p><img src="https://images.velog.io/images/code_angler/post/c160cb15-e806-4374-bc25-1a3e6b0c9430/image.png" alt=""></p>
<h4 id="웹의-동작-개념-데이터만-받는-경우-json-형식"><strong>웹의 동작 개념 (데이터만 받는 경우)</strong> [JSON 형식]</h4>
<p>항상 이렇게 HTML만 내려주냐구요?
no, 데이터만 내려 줄 때가 더~ 많아요.</p>
<p>사실 HTML도 줄글로 쓰면 이게 다 &#39;데이터&#39;아닌가요?</p>
<p>자, 공연 티켓을 예매하고 있는 상황을 상상해봅시다!
좌석이 차고 꺼질때마다 보던 페이지가 리프레시 되면 난감하겠죠ㅠ?</p>
<p>이럴 때! 데이터만 받아서 받아 끼우게 된답니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[부트 스트랩을 활용한 간단한 HTML, CSS, Javascript]]></title>
            <link>https://velog.io/@code_angler/%EB%B6%80%ED%8A%B8-%EC%8A%A4%ED%8A%B8%EB%9E%A9%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-HTML-CSS-Javascript</link>
            <guid>https://velog.io/@code_angler/%EB%B6%80%ED%8A%B8-%EC%8A%A4%ED%8A%B8%EB%9E%A9%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-HTML-CSS-Javascript</guid>
            <pubDate>Wed, 28 Apr 2021 04:47:05 GMT</pubDate>
            <description><![CDATA[<ul>
<li>13) bootstrap이란?<ul>
<li>부트스트랩이란? 예쁜 CSS를 미리 모아둔 것 (CSS를 다룰 줄 아는 것과, 미적 감각을 발휘하여 예쁘게 만드는 것은 다른 이야기이기 때문에, 현업에서는 미리 완성된 부트스트랩을 가져다 쓰는 경우가 많습니다.)</li>
</ul>
</li>
</ul>
<p><a href="https://getbootstrap.com/docs/4.0/getting-started/introduction/">https://getbootstrap.com/docs/4.0/getting-started/introduction/</a></p>
<p>위 사이트를 접속하여 부트스트랩 시작코드를 가져올수있습니다.
<img src="https://images.velog.io/images/code_angler/post/8fb39c6d-a73b-4bde-a94e-e5cd776dadbc/image.png" alt=""></p>
<p><strong>결과물</strong></p>
<p><img src="https://images.velog.io/images/code_angler/post/e2896283-d5cb-47f4-b6ca-deb92b8a0765/1.gif" alt=""></p>
<p><strong>코드</strong></p>
<pre><code>&lt;!doctype html&gt;
&lt;html lang=&quot;en&quot;&gt;

&lt;head&gt;
    &lt;!-- Required meta tags --&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, shrink-to-fit=no&quot;&gt;

    &lt;!-- Bootstrap CSS --&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css&quot;
          integrity=&quot;sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm&quot; crossorigin=&quot;anonymous&quot;&gt;

    &lt;!-- Optional JavaScript --&gt;
    &lt;!-- jQuery first, then Popper.js, then Bootstrap JS --&gt;
    &lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js&quot;
            integrity=&quot;sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q&quot;
            crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js&quot;
            integrity=&quot;sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl&quot;
            crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;

    &lt;title&gt;휴대폰 스토어&lt;/title&gt;
    &lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.gstatic.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gugi&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

    &lt;style&gt;
        * {
            font-family: &#39;Gugi&#39;, cursive;
        }
        .main_img {
            text-align: center;
            margin: 20px auto 50px auto;

        }

        .item-desc {
            width: 600px;
            margin-bottom: 50px;
        }

        .price {
            font-size: 15px;
            color: maroon;
            font-weight: bold;
        }

        .item-order {
            width: 600px;
            margin-bottom: 20px;
        }
        .warp {
            margin: auto;
            width: 600px;
        }
        .order-btn {
            margin: auto;
            width: 100px;
            display: block;
        }
    &lt;/style&gt;
    &lt;script&gt;
        function order(){
            alert(&#39;주문이 완료되었습니다!!&#39;)
        }
    &lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;div class=&quot;main_img&quot;&gt;
    &lt;img src=&quot;data:image/jpeg;base64,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&quot;
         width=&quot;600&quot; height=&quot;450&quot;/&gt;
&lt;/div&gt;
&lt;div class=&quot;warp&quot;&gt;
    &lt;div class=&quot;item-desc&quot;&gt;
        &lt;h1&gt;갤럭시 S21 초특가 &lt;span class=&quot;price&quot;&gt; 가격 : 359900원 / SKT기변&lt;/span&gt;&lt;/h1&gt;
        &lt;h3&gt;오늘만 이가격입니다. 원가 140만원 최신형 휴대폰 !! 한정수량 100개 판매 BTS 한정판 선택가능합니다. 어서어서 서두르세요&lt;/h3&gt;
    &lt;/div&gt;
    &lt;div class=&quot;item-order&quot;&gt;
        &lt;div class=&quot;input-group mb-3&quot;&gt;
            &lt;div class=&quot;input-group-prepend&quot;&gt;
                &lt;span class=&quot;input-group-text&quot; id=&quot;inputGroup-sizing-default&quot;&gt;주문자이름&lt;/span&gt;
            &lt;/div&gt;
            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; aria-label=&quot;Default&quot; aria-describedby=&quot;inputGroup-sizing-default&quot;&gt;
        &lt;/div&gt;
        &lt;div class=&quot;input-group mb-3&quot;&gt;
            &lt;div class=&quot;input-group-prepend&quot;&gt;
                &lt;label class=&quot;input-group-text&quot; for=&quot;inputGroupSelect01&quot;&gt;수량&lt;/label&gt;
            &lt;/div&gt;
            &lt;select class=&quot;custom-select&quot; id=&quot;inputGroupSelect01&quot;&gt;
                &lt;option selected&gt;---수량을 선택하세요---&lt;/option&gt;
                &lt;option value=&quot;1&quot;&gt;1&lt;/option&gt;
                &lt;option value=&quot;2&quot;&gt;2&lt;/option&gt;
                &lt;option value=&quot;3&quot;&gt;3&lt;/option&gt;
            &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;input-group mb-3&quot;&gt;
            &lt;div class=&quot;input-group-prepend&quot;&gt;
                &lt;span class=&quot;input-group-text&quot; id=&quot;inputGroup-sizing-default&quot;&gt;주소&lt;/span&gt;
            &lt;/div&gt;
            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; aria-label=&quot;Default&quot; aria-describedby=&quot;inputGroup-sizing-default&quot;&gt;
        &lt;/div&gt;
        &lt;div class=&quot;input-group mb-3&quot;&gt;
            &lt;div class=&quot;input-group-prepend&quot;&gt;
                &lt;span class=&quot;input-group-text&quot; id=&quot;inputGroup-sizing-default&quot;&gt;전화번호&lt;/span&gt;
            &lt;/div&gt;
            &lt;input type=&quot;text&quot; class=&quot;form-control&quot; aria-label=&quot;Default&quot; aria-describedby=&quot;inputGroup-sizing-default&quot;&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;button type=&quot;button&quot; onclick=&quot;order()&quot; class=&quot;btn btn-primary order-btn&quot;&gt;주문하기&lt;/button&gt;
&lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</code></pre>]]></description>
        </item>
    </channel>
</rss>