728x90
반응형

 

cd C:\Users\20200911-f22\OneDrive\바탕 화면\sparta\mypf

윈도우 키 + R  = > cmd 입력

cd (체인지 디렉토리) 위치주소 (주소 복사한후 cmd 창에서 우클릭하면 붙여넣기) [컨트롤+R -> CMD]

 

git clone "https://github.com/pyoja/mypf.git"

깃 저장소 설정

 

git add . 
git commit -m "메시지" 
git push "(origin master)"

스테이지에 올림 -> 버전 업데이트하면서 상태적기 -> 변경사항 업로드

git pull

다른 팀원이 push했다면 업데이트 pull 하기


git init (폴더만들기-숨김)
touch a.txt (텍스트파일 만들기)
git status (현재 작업상태 확인)
git add a.txt (스테이지에 올림) 
git add . (현재 디렉토리내의 변경사항을 모두 추가해줘)
git commit -m "커밋메시지(a.txt 생성)"  (버전 만들기)
git log (내역 확인하기-아이디랑 이메일도 표시됨)
git branch (현재 브랜치 확인)
git checkout foo (foo브랜치로 체크아웃)
git push (변경사항 업로드)
git pull (변경사항 다운로드)
git clone (복제하기)

git config --global user.email “깃허브에서사용할이메일”
git config --global user.name "가급적영어로된 여러분의 이름”

체크아웃[특정 브랜치의 최신 버전으로 변경]

원격저장소의 settings > collaborators 에 들어가서 여러분의 팀원 계정이름을

 추가하면
여러분들 팀원들에게 메일로 초대장이 전송됩니다.
여러분들의 팀원이 그걸 수락하면 이제 그 저장소에 push가 가능해집니다.

 


브랜치 하나를 Merge(병합) 하기 (링크트리)

 

작업한 feature/2_jjigae 를 main 브렌치에 합치겠습니다.

1. commit 을 반영시킬 브랜치인 main 으로 체크아웃 합니다. 브랜치 밑 main 을 더블 클릭하세요.

2. 병합을 클릭합니다.

3. feature/2_jjigae 의 가장 최신 commit(파란색 이름표가 붙어있는 커밋) 을 선택하고 확인을 누릅니다. 
모든 경우에 merge되는 commit 메시지는 자동으로 생성하는 옵션을 넣어주겠습니다. 

(하단 빠른 병합(fast-forward)이 가능해도 새 커밋 생성 옵션)

4. 아래처럼 Merge(병합)이 됩니다. merge 역시 작업내역이므로 commit 이 만들어졌습니다. 
commit 메시지는 Merge branch 'feature/2_jjigae' into main  로 한글로 해석하면

'main(브랜치)에 'feature/2_jjigae' 브랜치를 병합(merge) 했다' 는 뜻입니다. 

5. 이제 feature/2_jjigae  작업이 끝났으니 브랜치를 삭제하겠습니다. 

    브랜치 이름에서 우클릭 - 2_jjigae 를 눌러서 삭제해주세요. 

 

728x90
반응형

'코딩공부 > GIT' 카테고리의 다른 글

GIT 사용시 자주 하는 실수 [깃 클론]  (0) 2022.12.29
728x90
반응형

<script> 에 감싸져 있는 상황

forEach, map함수
for of , for in 헷갈려서 첨부

'   반 가 워 요   '.trim() //공백제거
'안녕,바이'.split(',') //특정요소 제거

 

0) for of 와 for in

const fruits = ['사과', '감', '배']

for (const 요소 of fruits){
  console.log(요소)
}

for (const 인덱스 in fruits){
  console.log(인덱스,fruits[인덱스])
}

 

 

1) 이름을 입력받아서 환영인사를 화면에 출력해주세요.

 

let name = prompt( "이름을 입력하세요");

document.write("환영합니다. " + name + "님");

 

2) 원하는 과일을 입력받아 가격안내하기

let name = prompt("원하는 과일을 입력하세요");
console.log(name);

  if (name == '사과'){
    console.log("100원입니다");
  } else if (name == '배'){
    console.log("200원입니다");
  } else if (name == '감'){
    console.log("300원입니다");
  } else {
    console.log("그런 과일은 없습니다.")
  }

 

3) 나의 반을 입력하여 출력하기

let classGrade = prompt ("너는 A,B,C중 몇반이니?");
let up = classGrade.toUpperCase();

switch (up) {
  case 'A' :
    console.log('A반입니다'); break;
  case 'B' :
    console.log('B반입니다'); break;
  case 'C' :
    console.log('C반입니다'); break;
  default :
    console.log('그런반은 없단다'); break;
}

 

4) 구구단 만들기

for (x = 2; x<10; x++){
  console.log(x + '단 시작')
  for (y=1; y<10; y++)
    console.log (  x + "*" + y + "=" + x*y )
}

 

5) for, while, forEach로 색깔 나열하기

console.log ('==for문으로 작성==');
let color1 = ['red', 'orange', 'yellow', 'green', 'blue', 'navy', 'purple']

for (i=0; i<color1.length; i++){
  console.log(color1[i]);
}

console.log ('==while문으로 작성==');
let j=0;
while (color1[j] != null){
  console.log(color1[j]);
  j++;
}

console.log ('==forEach로 작성==')
color1.forEach(function(value) {
  console.log(value);
});

console.log ('==forEach + 화살표 작성==')
color1.forEach( value => console.log(value));

 

6) for-in과 for-of 연습

  const colors = ['red', 'blue' , 'green'];

  console.log('== for-in ==');
  for (var index in colors){
    console.log(colors[index]);
  }

  console.log('== for-of ==');
  for (var value of colors){
    console.log(value);
  }

 

7) 배열

let numbers1 = [1,2,3,4,5]
let numbers2 = new Array(6,7,8,9,10)
let man =[ 
  {
  "name" : "HongGilDong",
  "dept" : "Software"
  },
  {
  'name' : "표정훈",
  "dept" : "개발자"   
  }
]

console.log(numbers1);
console.log(numbers2);
console.log(man[1].name, man[1].dept);

 

8) 배열 추가,제거,제거2
const colors = ['red', 'blue', 'green']
console.log(colors)

colors.push('gold');
console.log(colors)

colors.pop();
console.log(colors);

colors.splice(0, 1);
console.log(colors);

 

9) 현재시간을 나타내는 if조건문

const date = new Date();
const hours = date.getHours();

if (hours < 12){
  console.log(`현재 시간은 ${hours}시로 오전입니다.`)
} else {
  console.log(`현재 시간은 ${hours}시로 오후입니다.`)
}

 

10) 삼항연산자

const x = Number(prompt('숫자를 입력해주세요.',''))
alert((x>=0) ? '0 이상' : '0이하')

 

11) 태어난 해의 동물띠 구하기

const years = Number(prompt('태어난 해를 입력해주세요', '')) %12;
const tti = '원숭이,닭,개,돼지,쥐,소,호랑이,토끼,용,뱀,말,양'.split(',');
alert(`${tti[years]}띠 입니다.`)

 

12) 윤년만들기

const isLeapYear = function (){
   const year = prompt('연도를 입력하세요.')
    if ( (year % 4 === 0 )&&(year % 100 !== 0)||(year % 400 === 0) ){
    console.log(`${year}은 윤년입니다.`)
  } else {
    console.log(`${year}은 윤년이 아닙니다.`)
  }
}
isLeapYear()

 

13) 최소값 구하기

const min = function(배열){
  let output = 배열[0]
  for (let value of 배열){
    if (output > value){
      output = value
    }
  }
  return output
}
console.log(min([52,273,32,103,275,24,57]))

 

14) 배열에서 원하는 값 추출하기

let numbers = [273, 25, 75, 52, 103, 32, 57, 24, 76]
numbers = numbers.filter((value) => value % 2 === 1) //홀수만 추출
numbers = numbers.filter((value) => value <= 100) //100이하만 추출

 

728x90
반응형
728x90
반응형

https://teamsparta.notion.site/SQL-60c2a83eecdb473887ba73a75bd1c053

SQL 전체 강의자료

 

[내일배움단] 엑셀보다 쉬운 SQL

강의자료

teamsparta.notion.site

[수업 목표]

  1. Subquery(서브쿼리)의 사용 방법을 배워본다
  2. 실전에서 유용한 SQL 문법을 더 배워본다
  3. SQL을 사용하여 실전과 같은 데이터분석을 진행해본다

with절

with table1 as (

select course_id, count(distinct(user_id)) as cnt_checkins

from checkins group by course_id

), table2 as

( select course_id, count(*) as cnt_total from orders

group by course_id )

 

select c.title,

a.cnt_checkins,

b.cnt_total, (a.cnt_checkins/b.cnt_total) as ratio

from table1 a inner join table2 b on a.course_id = b.course_id

inner join courses c on a.course_id = c.course_id

 

문자열 쪼개기

[이메일에서 아이디만 가져와보기]

select user_id, email, SUBSTRING_INDEX(email, '@', 1) from users

 

[이메일에서 도메인만 가져와보기]

select user_id, email, SUBSTRING_INDEX(email, '@', -1) from users

 

[orders테이블에서 날짜까지 출력해보기]

select order_no, created_at, substring(created_at,1,10) as date from orders

 

[일별로 몇 개씩 주문이 일어났는지 살펴보기]

select substring(created_at,1,10) as date, count(*) as cnt_date from orders
group by date

 

[포인트 보유액에 따라 다르게 표시해주기]

select pu.point_user_id, pu.point,
(case when pu.point > 10000 then '1만 이상!'

          when pu.point > 5000 then '5천 이상!'
          else '5천 미만' END) as lv
from point_users pu;

[심화버전]

select a.lv, count(*) as cnt from(
select pu.point_user_id, pu.point,
(case when pu.point > 10000 then '1만 이상!'
      when pu.point > 5000 then '5천 이상!'
      else '5천 미만' END) as lv
from point_users pu
) a
group by a.lv

 

또는

 

with table1 as (
select pu.point_user_id, pu.point,
(case when pu.point > 10000 then '1만 이상!'
      when pu.point > 5000 then '5천 이상!'
      else '5천 미만' END) as lv
from point_users pu

select a.lv, count(*) as cnt from table1 a
group by a.lv

728x90
반응형

'코딩공부 > SQL' 카테고리의 다른 글

SQL 3주차  (0) 2022.10.26
SQL 2주차  (0) 2022.10.25
SQL 1주차  (0) 2022.10.24
728x90
반응형

ls

cd 폴더명

 

# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

켜서 유지시키기
nohup python app.py &

강제종료
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

728x90
반응형

'기초코드' 카테고리의 다른 글

부트스트랩에서 화면비율 맞추기  (0) 2022.12.08
HTML, CSS 글자수 1줄, 2줄이상일때 처리방법  (0) 2022.12.02
OG태그  (0) 2022.10.27
Ajax 기본골격  (0) 2022.10.21
★기본 CSS노말라이즈★  (0) 2022.10.21
728x90
반응형

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />

728x90
반응형

'기초코드' 카테고리의 다른 글

HTML, CSS 글자수 1줄, 2줄이상일때 처리방법  (0) 2022.12.02
Git Bash 작동코드  (0) 2022.10.27
Ajax 기본골격  (0) 2022.10.21
★기본 CSS노말라이즈★  (0) 2022.10.21
인라인 그리드, 이미지 박스  (0) 2022.10.21
728x90
반응형

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

3주차 파이썬, MonggoDB

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

 

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

 

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

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

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

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

 

http://pyoja.shop/

 

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

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

다시 복습하고 익숙해져서

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

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

728x90
반응형
728x90
반응형

3-2강

Left Join

 

Inner Join

[Joint을 사용해서 Key값으로 두테이블 연결해보기]

select * from point_users
left join users
on point_users.user_id = users.user_id

 

[유저데이터로 Inner Join 이해해보기]

select * from users u
inner join point_users p
on u.user_id = p.user_id;

 

[과목별 오늘의 다짐 갯수 세어보기]

select co.title, count(co.title) as checkin_count from checkins ci
inner join courses co
on ci.course_id = co.course_id 
group by co.title

 

[많은 포인트를 얻은 순서대로 유저 데이터 정렬해서 보기]

select * from point_users p
inner join users u 
on p.user_id = u.user_id
order by p.point desc

 

[네이버 이메일 사용하는 유저의 성씨벌 주문건수 세어보기]

select u.name, count(u.name) as count_name from orders o
inner join users u
on o.user_id = u.user_id 
where u.email like '%naver.com'
group by u.name

 

 

3-3강 퀴즈

1) 결제 수단 별 유저 포인트의 평균값 구해보기

select o.payment_method, round(AVG(p.point)) from point_users p
inner join orders o 
on p.user_id = o.user_id 
group by o.payment_method

 

2) 결제하고 시작하지 않은 유저들을 성씨별로 세어보기

select name, count(*) as cnt_name from enrolleds e
inner join users u
on e.user_id = u.user_id 
where is_registered = 0
group by name
order by cnt_name desc

 

3) 과목 별로 시작하지 않은 유저들을 세어보기

select c.course_id, c.title, count(*) as cnt_notstart from courses c
inner join enrolleds e 
on c.course_id = e.course_id
where is_registered = 0
group by c.course_id

 

4) 웹개발, 앱개발 종합반의 week 별 체크인 수를 세어보기

select c1.title, c2.week, count(*) as cnt from checkins c2
inner join courses c1 on c2.course_id = c1.course_id
group by c1.title c2.week
order by c1.title, c2.week

 

5) 연습4번에서, 8월 1일 이후에 구매한 고객들만 발라내기

select c1.title, c2.week, count(*) as cnt from courses c1
inner join checkins c2 on c1.course_id = c2.course_id
inner join orders o on c2.user_id = o.user_id
where o.created_at >= '2020-08-01'
group by c1.title, c2.week
order by c1.title, c2.week

 

3-5강

1) Left join에서 Null값을 제외하고 뽑기

select name, count(*) from users u

left join point_users pu on u.user_id = pu.user_id

where pu.point_user_id is not NULL group by name

 

2) 7월10일 ~ 7월19일에 가입한 고객 중, 포인트를 가진 고객의 숫자,  전체 숫자, 그리고 비율보기

select count(point_user_id) as pnt_user_cnt,
       count(*) as tot_user_cnt,
       round(count(point_user_id)/count(*),2) as ratio
  from users u
  left join point_users pu on u.user_id = pu.user_id
 where u.created_at between '2020-07-10' and '2020-07-20'

 

3-6강

union all 문법

(
select '7월' as month, c.title, c2.week, count(*) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at < '2020-08-01'
group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)
union all
(
select '8월' as month, c.title, c2.week, count(*) as cnt from checkins c2
inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at > '2020-08-01'
group by c2.course_id, c2.week
  order by c2.course_id, c2.week
)

order by는 안먹힘, 4주차에서 정렬하는 방법알려줌

 

728x90
반응형

'코딩공부 > SQL' 카테고리의 다른 글

SQL 4주차  (0) 2022.10.27
SQL 2주차  (0) 2022.10.25
SQL 1주차  (0) 2022.10.24
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("/bucket", methods=["POST"])
def bucket_post():
    bucket_receive = request.form['bucket_give']

    bucket_list = list(db.bucket.find({}, {'_id': False}))
    count = len(bucket_list) + 1

    doc = {
        'num' : count,
        'bucket' : bucket_receive,
        'done' : 0
    }

    db.bucket.insert_one(doc)

    return jsonify({'msg': '등록 완료!'})

@app.route("/bucket/done", methods=["POST"])
def bucket_done():
    num_receive = request.form['num_give']
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})

@app.route("/bucket", methods=["GET"])
def bucket_get():
    bucket_list = list(db.bucket.find({}, {'_id': False}))
    return jsonify({'buckets': bucket_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>

    <link href="https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap" rel="stylesheet">

    <title>인생 버킷리스트</title>

    <style>
        * {
            font-family: 'Gowun Dodum', sans-serif;
        }
        .mypic {
            width: 100%;
            height: 200px;

            background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://images.unsplash.com/photo-1601024445121-e5b82f020549?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1189&q=80');
            background-position: center;
            background-size: cover;

            color: white;

            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
        .mypic > h1 {
            font-size: 30px;
        }
        .mybox {
            width: 95%;
            max-width: 700px;
            padding: 20px;
            box-shadow: 0px 0px 10px 0px lightblue;
            margin: 20px auto;
        }
        .mybucket {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
        }

        .mybucket > input {
            width: 70%;
        }
        .mybox > li {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;

            margin-bottom: 10px;
            min-height: 48px;
        }
        .mybox > li > h2 {
            max-width: 75%;
            font-size: 20px;
            font-weight: 500;
            margin-right: auto;
            margin-bottom: 0px;
        }
        .mybox > li > h2.done {
            text-decoration:line-through
        }
    </style>
    <script>
        $(document).ready(function () {
            show_bucket();
        });
        function show_bucket(){
            $.ajax({
                type: "GET",
                url: "/bucket",
                data: {},
                success: function (response) {
                    let rows = response['buckets']
                    for (i=0; i<rows.length; i++){
                        let bucket = rows[i]['bucket']
                        let num = rows[i]['num']
                        let done = rows[i]['done']

                        let temp_html = ``
                        if ( done==0 ){
                            temp_html = `        <li>
                                                    <h2>✅ ${bucket}</h2>
                                                    <button onclick="done_bucket(${num})" type="button" class="btn btn-outline-primary">완료!</button>
                                                </li>`
                        } else{
                            temp_html = `        <li>
                                                    <h2 class="done">✅ ${bucket}</h2>
                                                </li>`
                        }
                        $('#bucket-list').append(temp_html)

                    }


                }
            });
        }
        function save_bucket(){
            let bucket = $('#bucket').val()

            $.ajax({
                type: "POST",
                url: "/bucket",
                data: {bucket_give:bucket},
                success: function (response) {
                    alert(response["msg"])
                    window.location.reload()
                }
            });
        }
        function done_bucket(num){
            $.ajax({
                type: "POST",
                url: "/bucket/done",
                data: {num_give:num},
                success: function (response) {
                    alert(response["msg"])
                    window.location.reload()
                }
            });
        }
    </script>
</head>
<body>
    <div class="mypic">
        <h1>나의 버킷리스트</h1>
    </div>
    <div class="mybox">
        <div class="mybucket">
            <input id="bucket" class="form-control" type="text" placeholder="이루고 싶은 것을 입력하세요">
            <button onclick="save_bucket()" type="button" class="btn btn-outline-primary">기록하기</button>
        </div>
    </div>
    <div class="mybox" id="bucket-list">

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

+ Recent posts