<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>mypost_in_the_box.log</title>
        <link>https://velog.io/</link>
        <description>활자중독 디자이너 개발자</description>
        <lastBuildDate>Thu, 07 Jul 2022 07:17:47 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>mypost_in_the_box.log</title>
            <url>https://velog.velcdn.com/images/dodol94_/profile/6b900fbf-2e90-4083-a188-389062b99b0a/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. mypost_in_the_box.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dodol94_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[스파르타 웹개발 수업 4주차]]></title>
            <link>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-4%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-4%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Thu, 07 Jul 2022 07:17:47 GMT</pubDate>
            <description><![CDATA[<h1 id="flask">flask</h1>
<p>플라스크를 배웠다. 항상 시작 전에 패키지를 다운 받아야 한다. </p>
<ol>
<li>pymongo</li>
<li>bs4</li>
<li>dnspython</li>
<li>certifi</li>
<li>flask</li>
<li>requests</li>
</ol>
<p>그리고 임포트 해준다.</p>
<pre><code>from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

from pymongo import MongoClient
import certifi

ca = certifi.where()

client = MongoClient(&#39;mongodb+srv://test:sparta@cluster0.ojxgz.mongodb.net/내DB명?retryWrites=true&amp;w=majority&#39;, tlsCAFile=ca)
db = client.dbsparta</code></pre><h2 id="api를-post-하는-방법">API를 POST 하는 방법</h2>
<h3 id="서버-방향">서버 방향</h3>
<pre><code>@app.route(&quot;/homework&quot;, methods=[&quot;POST&quot;])
def homework_post():</code></pre><p><code>A_receive = request.form[&#39;A_give&#39;]</code>
<code>B_receive = request.form[&#39;B_give&#39;]</code>
클라이언트의 A와 B라는 값을 받아오기</p>
<p><code>doc ={
        a = A_receive ,
        b = B_receive
        }</code> 
<code>db.서버폴더명.insert_one(doc)</code>
A와 B의 값을 서버폴더에 doc이라는 자료로 입력하기</p>
<p><code>return jsonify({&#39;D&#39;:&#39;d&#39;})</code>
D라는 이름으로 d의 내용 돌려주기 </p>
<h3 id="클라이언트-방향">클라이언트 방향</h3>
<pre><code>$.ajax({
       type: &#39;POST&#39;,
      url: &#39;/homework&#39;,
      data: { 
        &#39;A_give&#39;:A인풋박스 아이디, 
        &#39;B_give&#39;:B인풋박스 아이디
      }})</code></pre><p>A인풋박스에 들어온 값을 A_give로 주고 B인풋박스에 들어온 값을 B_give로 준다.</p>
<p><code>success: function (response) {alert(response[&quot;D&quot;])}</code>
function 성공 시 D의 값(msg)를 가져와 알림으로 띄운다.</p>
<p><code>window.location.reload()</code>
브라우저를 새로고침한다.</p>
<h2 id="api를-get-하는-방법">API를 GET 하는 방법</h2>
<h3 id="서버-방향-1">서버 방향</h3>
<pre><code>@app.route(&quot;/homework&quot;, methods=[&quot;GET&quot;])
def homework_get():
    return jsonify({&#39;msg&#39;:&#39;GET 연결 완료!&#39;})</code></pre><p><code>C_list = list(db.서버폴더명.find({}, {&#39;_id&#39;: False}))</code>
DB의 서버폴더에서 값을 전부 가져와서 C_list로 넣기 
<code>return jsonify({&#39;X&#39;:C_list})</code>
C_list를 X라는 이름으로 돌려주기</p>
<h3 id="클라이언트-방향-1">클라이언트 방향</h3>
<p><code>$(&#39;#비울아이디&#39;).empty()</code>
비울아이디의 내용을 지운다.</p>
<pre><code>success: function (response) {
    let rows = response[&#39;X&#39;]
    for (let i = 0; i &lt; rows.length; i++) {
    let name = rows[i][&#39;a&#39;]
    let comment = rows[i][&#39;b&#39;]</code></pre><p>X라는 서버폴더 안에서 a=name b=comment으로 가져오기</p>
<pre><code>    let temp_html = 
    `&lt;div class=&quot;card&quot;&gt;
        &lt;div class=&quot;card-body&quot;&gt;
            &lt;blockquote class=&quot;blockquote mb-0&quot;&gt;
             &lt;p&gt;${b}&lt;/p&gt;
             &lt;footer class=&quot;blockquote-footer&quot;&gt;${a}
                &lt;/footer&gt;
            &lt;/blockquote&gt;
       &lt;/div&gt;
     &lt;/div&gt;</code></pre><p>위에서 가져온 a와 b를 해당 html 안에 넣어 temp_html로 만든다.</p>
<p><code>$(&#39;#붙여넣어야하는부분의아이디&#39;).append(temp_html)}}</code>
붙여 넣어야 하는 곳에 temp_html을 붙여 넣는다.</p>
<p><code>window.location.reload()</code>
창 새로고침하기</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타 웹개발 수업 3주차]]></title>
            <link>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-3%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-3%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Tue, 05 Jul 2022 07:09:46 GMT</pubDate>
            <description><![CDATA[<p>mongodb부터 갑자기 꼬여서 잘 안되고 있다 ㅠㅠ
일단 3주차 개발일지 등록해놓은 후에 db 고쳐서 수업마저 진행하고 개발일지는 추후 수정하도록 하겠다!</p>
<hr>
<h2 id="0706">0706</h2>
<p>드디어 오류가 해결되어 db도 수정, 입력, 삭제 해보았다!</p>
<pre><code>import requests
from bs4 import BeautifulSoup

from pymongo import MongoClient
import certifi
ca = certifi.where()

client = MongoClient(&#39;mongodb+srv://test:sparta@cluster0.ojxgz.mongodb.net/cluster0?retryWrites=true&amp;w=majority&#39;, tlsCAFile=ca)
db = client.dbsparta</code></pre><p>크롤링 해오는 개념이 아직 좀 헷갈린다. 자주 보고 자주 사용해봐야 할 것 같다.</p>
<blockquote>
<p>링크에 가서 데이터를 받아오기
<code>data = requests.get()</code></p>
</blockquote>
<blockquote>
<p>가져온 데이터를 텍스트화하고 A라는 이름으로 부르기
<code>A = BeautifulSoup(data.text, &#39;html.parser&#39;)</code></p>
</blockquote>
<blockquote>
<p>A에서 가져온 데이터 중 아래와 같은 html코드만 선택하기
<code>우클릭-검사-해당 코드 copy selector 한 뒤</code>
<code>B = A.select(&#39;#body-content &gt; div.newest-list &gt; div &gt; table &gt; tbody &gt; tr &#39;)</code></p>
</blockquote>
<blockquote>
<p>위에서 찾아낸 html 코드 중 아래와 같은 것이 있을때 a,b,c라고 부르기
<code>for X in B</code>
a=X.select_one(html태그).text[0:2].strip()
b=X.select_one(html태그).text.strip()
c=X.select_one(html태그).text.strip()</p>
</blockquote>
<h3 id="저장---예시">저장 - 예시</h3>
<p><code>doc = {&#39;name&#39;:&#39;bobby&#39;,&#39;age&#39;:21}
db.users.insert_one(doc)</code></p>
<h3 id="한-개-찾기---예시">한 개 찾기 - 예시</h3>
<p><code>user = db.users.find_one({&#39;name&#39;:&#39;bobby&#39;})</code></p>
<h3 id="여러개-찾기---예시--_id-값은-제외하고-출력">여러개 찾기 - 예시 ( _id 값은 제외하고 출력)</h3>
<p><code>all_users = list(db.users.find({},{&#39;_id&#39;:False}))</code></p>
<h3 id="바꾸기---예시">바꾸기 - 예시</h3>
<p><code>db.users.update_one({&#39;name&#39;:&#39;bobby&#39;},{&#39;$set&#39;:{&#39;age&#39;:19}})</code></p>
<h3 id="지우기---예시">지우기 - 예시</h3>
<p><code>db.users.delete_one({&#39;name&#39;:&#39;bobby&#39;})</code></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타 웹개발 수업 2주차]]></title>
            <link>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-2%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-2%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Fri, 01 Jul 2022 05:05:03 GMT</pubDate>
            <description><![CDATA[<p>오늘은 Ajax를 배웠다.
ajax는 시작전 script에 불러온 후 작성해야 한다.</p>
<pre><code>$.ajax({
    type: &quot;GET&quot;,
    url: &quot;url&quot;,
    data: {},
    success: function (response) {
          (내용 작성)      
    }</code></pre><p>위의 내용은 Ajax를 불러오는 방법이다. url칸에는 api 주소를 붙여넣었다.
그 후에는 명명해주는 과정들이 있었다.</p>
<h3 id="a데이터-row-값에-rows라고-이름짓기">A데이터 row 값에 ROWS라고 이름짓기</h3>
<pre><code>let ROWS = response[&#39;A&#39;][&#39;row&#39;] </code></pre><h3 id="api에-있던-a값을-x라고-하고-b값을-y라고-한다">api에 있던 A값을 X라고 하고 B값을 Y라고 한다</h3>
<p><code>let X = response[&#39;A&#39;]</code>
<code>let Y = response[&#39;B&#39;]</code></p>
<h3 id="간단한-jquery-키워드">간단한 Jquery 키워드</h3>
<p><code>$(&#39;#A&#39;).attr(&#39;c&#39;,X)</code>
id A에 있는 c라는 태그를 api이름 X로 변경한다</p>
<p><code>$(&#39;#B&#39;).text(Y)</code>
id B에 Y라는 텍스트를 입력한다</p>
<p><code>$(&#39;#C&#39;).empty()</code>
id C를 비운다.</p>
<p><code>let X = response[&#39;A&#39;]</code>
<code>$(&#39;#D&#39;).append(X)</code>
D에 X 내용을 붙여넣는다</p>
<p><code>console.log(H, X)</code>
콘솔에 H, X를 표시하게 한다</p>
<h3 id="temp_html를-html로-정의한-후">temp_html를 html로 정의한 후</h3>
<h3 id="g라는-id에-temp_html을-추가하기">G라는 ID에 temp_html을 추가하기</h3>
<pre><code>let temp_html = &#39;html&#39;

$(&#39;G&#39;).append(temp_html)</code></pre><h3 id="로딩이-완료-되면-alert-띄우기">로딩이 완료 되면 alert 띄우기</h3>
<pre><code>$(document).ready(function(){
    alert(&#39;다 로딩됐다!&#39;)
});</code></pre><p>벌써 2주차 완료라니 :)
열심히 달려서 한달되기 전에 끝내고 새로운 거 만들고 싶다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타 웹개발 수업 1주차]]></title>
            <link>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-1%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@dodol94_/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%88%98%EC%97%85-1%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Thu, 30 Jun 2022 07:46:12 GMT</pubDate>
            <description><![CDATA[<p>기본적인 html은 알고 있었지만 커리큘럼에 따라 배워보는 것은 처음이다. 설레는 마음으로 월요일에 강의실에 입장했는데 생각보다 영상들 길이가 매우 짧았다. 그리고 html과 css까지는 알고 있던 내용이라 더 빠르게 이해할 수 있었다.
그리고 처음 배우는 내용이나 adobe XD에서 지나가다 가끔 보았던 단어들을 마주했다. 반갑기도, 이해가 되기도 했다.</p>
<p>알게 되어 제일 반가웠던 내용은 </p>
<blockquote>
<p>max-width: 400px
width: 95%</p>
</blockquote>
<p>이 부분이었는데, 이전에도 웹페이지는 만들어본 적이 있지만 만들었던 페이지를 모바일로 볼 때 깨지는 것은 어떻게 해야할지 몰랐기 때문이다.
요즘은 모바일을 더 많이 사용하는 시대이니 앞으로 자주 쓰게 될 것 같다.</p>
<p>그 외에도 태그 속 태그를</p>
<blockquote>
<p>.class &gt; tag { }</p>
</blockquote>
<p>이렇게 나타낼 수 있다는 것도 처음 알게 되었다. 수박겉핥기로 알고 있을 때에는 매번 태그에 대한 스타일시트를 작성하여 충돌하며 적용이 안되거나 잘못될 때가 많았다. 정확하게 태그를 지칭하여 설정해줄 수 있는 부분이 좋았다.</p>
<p>javascript 문법은 처음으로 조금 배웠는데 엑셀 같다는 느낌이 들었다.
어떤 데이터의 행에서 A를 찾아 그 B값을 출력하라. 와 같은 함수를 사용하는 것 같았다. </p>
<pre><code>let ____ = []
____을 []이라고 하자.

let a_list = [&#39;ㄱ&#39;,&#39;ㄴ&#39;,&#39;ㄷ&#39;,&#39;ㄹ&#39;]
데이터 ㄱ, ㄴ, ㄷ, ㄹ을 입력하기

let a_dict ={A:B,C:D}
&#39;A=B&#39;, &#39;C=D&#39; 라는 내용 입력하기</code></pre><p>a_dict는 아직 확실하게 이해된 것 같지 않다. 복습해야 할 것 같다.</p>
<pre><code>let a_list =[자료 입력하기]
for(let i=0, i&lt; a_list.length; i++) {
                                    }
(변수를 i라고 할 때 a_list에 입력한 자료들을 모두 {  } 하기)</code></pre><pre><code>ex) let scores = [{&#39;name&#39;: &#39;철수&#39;, &#39;score&#39;: 90}]

for (let i =0; i &lt;scores.length; i++) {
(자료에 있는 내용을 하나씩 확인 후)

 if (scores[i][&#39;score&#39;] &gt; 70 {
(확인하다가 score 가 70보다 크다면)

console.log(scores[i][&#39;name&#39;]}}
(콘솔창에 name을 띄워라.)</code></pre><p>자세한 내용은 다음주 수업을 더 들어봐야 알겠지만 불과 4일동안 배웠다고 하기엔 벌써 실무에 사용할 수 있는 방법들이 많았다.</p>
<p>그리고 나는 파이참을 처음 써보는데(<em>메모장에 일일히 적어 *.html로 저장하던 시절</em>) ctrl+ alt+ L키로 라인 정리를 한번에 할 수 있는 점이 너무 좋았다. 메모장을 사용하던 때에는 늘 &quot;태그열고, 닫고, 열고, 닫고...&quot;를 중얼거리며 html을 들여다 봐야 했기 때문이다.</p>
<p>일주일 수업을 정리할 수 있는 블로그가 생겨 기분이 좋다. 틈틈이 공부한 내용과 새로운 지식을 정리해볼 수 있겠다.</p>
<p><img src="https://velog.velcdn.com/images/dodol94_/post/6f5c180c-84c1-4121-8cf6-3aee8db4a882/image.png" alt=""></p>
<p>이번 주 차 숙제였다. 공부를 하면서 덕질도 할 수 있다니 일석이조(?)
즐겁게 해결해나갈 수 있었다. 개성있는 편을 좋아해서 이것저것 많이 만져보았다. 재미있었다. 이것들이 이제 진짜 움직이는 것을 본다면 더 즐거울 것 같다. </p>
]]></description>
        </item>
    </channel>
</rss>