728x90
반응형

1주차에는 HTML , CSS , Javascript
2주차에 JQuery, Ajax

3주차 파이썬, MonggoDB

4주차 AWS, FileZilla, git bash, 가비아를 통해 도메인 연결

 

5주차 개인적인 후기(완강)

 

4주차에는 그간 배운 모든 지식을 종합하여 하나의 홈페이지를 만들었고

5주차에는 초반에 다시 한번 복습하고,

여러가지 파일과 사이트를 이용하여

도메인에 내 숙제를 연결하였다.

 

http://pyoja.shop/

 

내 사이트를 만들었다는 뿌듯함과 완강이라는 기쁨이 공존하지만

내가 직접 만들었다기보단 클론코딩이기에.......

다시 복습하고 익숙해져서

코딩은 복사해오겠지만, 내가 원하는 기능도 추가해서

진짜 나의 사이트를 만들어보고 싶다~!

728x90
반응형
728x90
반응형

1주차에는 HTML , CSS , Javascript
2주차에 JQuery, Ajax

3주차 파이썬, MonggoDB

4주차 Flask와 연결하기

 

이제 지금까지 배웠던걸 모두 종합하여

하나의 홈페이지를 만들기 시작했다!

 

4주차 개인적인 후기

 

4주차는 1~3주차에서 배운 모든걸을 종합하여

하나의 홈페이지를 만드는 시간이었다.

팬사이트를 만들었다면 이제 댓글과 닉네임을 적고,

바로 반영되도록 만드는 과정까지 만들었다.

 

4주차는 다른때보다 복습을 더 많이했고,

직접 코딩하진 못했지만 기록한 코드를 토대로

유추하여 퀴즈도 완성하였다.

 

이제 5주차엔 도메인 연결해서 다른사람들에게도

나의 사이트를 보여주는 시간이 될 것 같아서 기대가 된다.

728x90
반응형
728x90
반응형

app.py

from flask import Flask, render_template, request, jsonify
app = Flask(__name__)

from pymongo import MongoClient
client = MongoClient('mongodb+srv://text:sparta@cluster0.tvnfddc.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta

@app.route('/')
def home():
   return render_template('index.html')

@app.route("/homework", methods=["POST"])
def homework_post():
    name_receive = request.form['name_give']
    comment_receive = request.form['comment_give']

    doc = {
        'name' : name_receive,
        'comment' : comment_receive
    }
    db.homework.insert_one(doc)

    return jsonify({'msg':'댓글 완료~!'})

@app.route("/homework", methods=["GET"])
def homework_get():
    homework_list = list(db.homework.find({}, {'_id': False}))
    return jsonify({'homework': homework_list})

if __name__ == '__main__':
   app.run('0.0.0.0', port=5000, debug=True)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
        crossorigin="anonymous"></script>

    <title>🎻릴러말즈 팬사이트🎻</title>

    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+KR:wght@200;300;400;500;600;700;900&display=swap" rel="stylesheet">
    <style>
        * {
            font-family: 'Noto Serif KR', serif;
        }
        .mypic {
            width: 100%;
            height: 300px;

            background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://mblogthumb-phinf.pstatic.net/MjAyMTEyMzBfMjU3/MDAxNjQwODIzNTM5ODU4.4N5iYjgtyzTpiKCe5RlPuNM5aRqP-rxu8Lv4M7PIYy8g.FYFlO1cup4cXoyBEgOtSEWpw_baR76D5h_JwiJdCQyIg.JPEG.letis_make_idea/asdasd.jpg?type=w800');
            background-position: center 30%;
            background-size: cover;

            color: white;

            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }

        .mypost {
            width: 95%;
            max-width: 500px;
            margin: 20px auto 20px auto;

            box-shadow: 0px 0px 3px 0px black;
            padding: 20px;
        }

        .mypost > button {
            margin-top: 15px;
        }

        .mycards {
            width: 95%;
            max-width: 500px;
            margin: auto;
        }

        .mycards > .card {
            margin-top: 10px;
            margin-bottom: 10px;
        }
    </style>
    <script>
        $(document).ready(function(){
            set_temp()
            show_comment()
        });
        function set_temp(){
            $.ajax({
                type: "GET",
                url: "http://spartacodingclub.shop/sparta_api/weather/seoul",
                data: {},
                success: function (response) {
                    $('#temp').text(response['temp'])
                }
            })
        }
        function save_comment(){
            let name = $('#name').val()
            let comment = $('#comment').val()

            $.ajax({
                type: 'POST',
                url: '/homework',
                data: { name_give:name, comment_give:comment},
                success: function (response) {
                    alert(response['msg'])
                    window.location.reload()
                }
            })
        }
        function show_comment(){
            $.ajax({
                type: "GET",
                url: "/homework",
                data: {},
                success: function (response) {
                    let rows = response['homework']
                    for ( i=0; i < rows.length; i++){
                        let name = rows[i]['name']
                        let comment = rows[i]['comment']

                        let temp_html = ` <div class="card">
                                            <div class="card-body">
                                                <blockquote class="blockquote mb-0">
                                                    <p>${comment}</p>
                                                    <footer class="blockquote-footer">${name}</footer>
                                                </blockquote>
                                            </div>
                                        </div>`
                        $('#comment-list').append(temp_html)
                    }
                }
            });
        }
    </script>
</head>
<body>
    <div class="mypic">
         <h1>🎻릴러말즈 팬사이트🎻</h1>
        <p>현재기온: <span id="temp">36</span>도</p>
    </div>
    <div class="mypost">
        <div class="form-floating mb-3">
            <input type="text" class="form-control" id="name" placeholder="url">
            <label for="floatingInput">닉네임</label>
        </div>
        <div class="form-floating">
            <textarea class="form-control" placeholder="Leave a comment here" id="comment"
                style="height: 100px"></textarea>
            <label for="floatingTextarea2">응원댓글</label>
        </div>
        <button onclick="save_comment()" type="button" class="btn btn-dark">응원 남기기</button>
    </div>
    <div class="mycards" id="comment-list">

    </div>
</body>
</html>
728x90
반응형
728x90
반응형

개인적인 후기

백앤드에 대한 기초 지식을 쌓기 위해서 SQL을 신청하였다.

1주차는 정말 간단한 문법을 공부하면서 실습하였고,

짧은 영상으로 부담이 없었다.

select * from orders

where email like '%naver.com' 과 같은 간단한 문제를 반복해서 풀다보니

자신감도 생기고 아직은 잘 따라가서 다행이라는 생각이 든다.

 

2주차 정도까진 괜찮았는데

3~4주차 되니 문법이 길어지면서

생각을 요하는 문제가 많아져서 조금 따라가기 힘들었다...

열심히 따라서 코딩했지만 다른 공부가 우선 필요하다고

생각하고 대충넘겼다.....

 

문법은 어느정도 정리했고 익숙해졌으니,

다음에 다시 복습해야겠다!

 

 

728x90
반응형
728x90
반응형

1주차에는 HTML , CSS , Javascript
2주차에 JQuery, Ajax

3주차 파이썬, MonggoDB

 

지금까지 프론트앤드 눈 앞에 보이는 것만 배웠었는데

드디어 백앤드 서버단을 시작했다.

 

내일배움캠프 시작전에도 프론트앤드

눈앞에 보이는 것을 만드는 작업만 했는데,

화면에 안보이지만 뒤에서 데이터를 정리해보니

이것도 나름의 재미가 있는 것 같다.

 

3주차 개인적인 후기

 

3주차만에 여러가지 언어를 배우다보니

다 배울 수 있을까 걱정이 많았다.

 

그러나 생각보다 비슷한 문법이기에

이해하는데 어렵지는 않았다.

 

다만 비슷하면서 다른 문법이기에

계속 반복하여 코드를 작성하여 익숙해지는 방법밖에는 없을 것 같다.

 

728x90
반응형
728x90
반응형

 

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')



musics = soup.select('#body-content > div.newest-list > div > table > tbody > tr')

#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
#body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.number

#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.info > a.title.ellipsis

#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(2) > td.info > a.artist.ellipsis

for music in musics:
        title = music.select_one('td.info > a.title.ellipsis').text.strip()
        rank = music.select_one('td.number').text[0:2].strip()
        artist = music.select_one('td.info > a.artist.ellipsis').text.strip()
        print(rank, title, artist)
728x90
반응형
728x90
반응형
<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
            integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
            crossorigin="anonymous"></script>

    <title>★숙제2★</title>

    <link href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap" rel="stylesheet">
    <style>
        * {
            font-family: 'Gowun Dodum', sans-serif;
        }


        .mytitle {
            height: 300px;


            background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("https://mblogthumb-phinf.pstatic.net/MjAyMTEyMzBfMjU3/MDAxNjQwODIzNTM5ODU4.4N5iYjgtyzTpiKCe5RlPuNM5aRqP-rxu8Lv4M7PIYy8g.FYFlO1cup4cXoyBEgOtSEWpw_baR76D5h_JwiJdCQyIg.JPEG.letis_make_idea/asdasd.jpg?type=w800");
            background-position: center 20%; /*높이 맞추기*/
            background-size: cover;

            color: white;

            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
        }

        .mybtn {
            display: flex;
            flex-direction: row;
            justify-content: left;
            align-items: center;
            margin-top: 10px;
        }

        .mypost {
            max-width: 500px;
            width: 95%;

            margin: 20px auto 0px auto;
            box-shadow: 0px 0px 3px 0px gray;
            padding: 20px;
        }

        blockquote {
            margin: 5px;
            padding: 5px
        }

        .card {
            margin: 10px 0px 10px 0px;
        }
        .form-floating{
            margin-top:10px;
        }
    </style>
    <script>
        $(document).ready(function () {
            alert('다 로딩됐다!')
        });

        $.ajax({
            type: "GET",
            url: "http://spartacodingclub.shop/sparta_api/weather/seoul",
            data: {},
            success: function (response) {
                let temp = response['temp']
                let temp_html = `<p>${'temp'}</p>`

                $('#temp').text(temp)
            }
        })

    </script>

</head>

<body>
<div class="mytitle">
    <h1>🎻릴러말즈 팬사이트🎻</h1>
    <p>현재기온 : <span id="temp">00.0</span>도</p>
</div>
<div class="mypost">
    <div class="form-floating mb-3">
        <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
        <label for="floatingInput">닉네임</label>


        <div class="form-floating">
                <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea2"
                          style="height: 100px"></textarea>
            <label for="floatingTextarea2">응원댓글</label>
        </div>
        <div class="mybtn">
            <button type="button" class="btn btn-dark">응원남기기</button>
        </div>
    </div>
    <div class="card">
        <div class="card-body-1">
            <blockquote class="blockquote mb-0">
                <p>TRIP 노래 너무 좋아요~!</p>
                <footer class="blockquote-footer">힙합맨 <cite title="Source Title"></cite>
                </footer>
            </blockquote>
        </div>
    </div>
    <div class="card">
        <div class="card-body-1">
            <blockquote class="blockquote mb-1">
                <p>성산히어로 뮤비 내주세요>_<</p>
                <footer class="blockquote-footer">성산주민1 <cite title="Source Title"></cite>
                </footer>
            </blockquote>
        </div>
    </div>
    <div class="card">
        <div class="card-body-1">
            <blockquote class="blockquote mb-1">
                <p>야망으로 채워줘요~릴러말즈💘</p>
                <footer class="blockquote-footer">엠비션보이 <cite title="Source Title"></cite>
                </footer>
            </blockquote>
        </div>
    </div>


</div>
</body>


</html>
728x90
반응형
728x90
반응형
<!doctype html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <title>jQuery 연습하고 가기!</title>

    <!-- JQuery를 import 합니다 -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    <style type="text/css">
        div.question-box {
            margin: 10px 0 20px 0;
        }
    </style>

    <script>

        // 변수에 입력값 넣기 그후 경고창
        function q1() {
          let txt = $('#input-q1').val();
          if ( txt == ''){
            alert('입력하세요!');
          } else {
            alert(txt);
          }
        }

        // @ 포함하는지 확인후, 주소만 출력하기 [includes 와 split]
        function q2() {
          let email = $('#input-q2').val();
          if ( email.includes('@')){
              alert(email.split('@')[1].split('.')[0])
          } else{
            alert('이메일이 아닙니다');
          }
        }

        // JS에서 HTML 문법 출력하기
        function q3() {
          let name = $('#input-q3').val();
          if (name == ''){
            alert('이름을 입력하세요');
            return;
          }
          let temp_html = `<li>${(name)}</li>`
          $('#names-q3').append(temp_html);

        }

        function q3_remove() {
          $('#names-q3').empty();
        }

    </script>

</head>

<body>
    <h1>jQuery + Javascript의 조합을 연습하자!</h1>

    <div class="question-box">
        <h2>1. 빈칸 체크 함수 만들기</h2>
        <h5>1-1. 버튼을 눌렀을 때 입력한 글자로 얼럿 띄우기</h5>
        <h5>[완성본]1-2. 버튼을 눌렀을 때 칸에 아무것도 없으면 "입력하세요!" 얼럿 띄우기</h5>
        <input id="input-q1" type="text" /> <button onclick="q1()">클릭</button>
    </div>
    <hr />
    <div class="question-box">
        <h2>2. 이메일 판별 함수 만들기</h2>
        <h5>2-1. 버튼을 눌렀을 때 입력받은 이메일로 얼럿 띄우기</h5>
        <h5>2-2. 이메일이 아니면(@가 없으면) '이메일이 아닙니다'라는 얼럿 띄우기</h5>
        <h5>[완성본]2-3. 이메일 도메인만 얼럿 띄우기</h5>
        <input id="input-q2" type="text" /> <button onclick="q2()">클릭</button>
    </div>
    <hr />
    <div class="question-box">
        <h2>3. HTML 붙이기/지우기 연습</h2>
        <h5>3-1. 이름을 입력하면 아래 나오게 하기</h5>
        <h5>[완성본]3-2. 다지우기 버튼을 만들기</h5>
        <input id="input-q3" type="text" placeholder="여기에 이름을 입력" />
        <button onclick="q3()">이름 붙이기</button>
        <button onclick="q3_remove()">다지우기</button>
        <ul id="names-q3">
            <li>세종대왕</li>
            <li>임꺽정</li>
        </ul>
    </div>
</body>

</html>
728x90
반응형

+ Recent posts