Github 가입, Git 설치,Sourcetree 설치

개념

  • Git : 버전 관리를 하기 위한 도구.
  • Gihub : 버전 저장소.
  • Sourcetree : Git을 쉽게 사용하기 위한 도구.
  • README : 프로젝트 설명 파일.
  • Commit : 현재 프로젝트의 상태를 저장.
  • add, staging : 커밋 할 파일을 선택.
  • 커밋 메세지 : 의미가 있어야한다. 작업 내역별로 기록하는게 더 좋은 방
  • git initialize : Git이 관리하는 프로젝트로 만든다는 뜻.

커밋 순서

  1. Sourcetree에서 폴더를 선택하면 .git 폴더가 생기면서 git 프로젝트가 되어진다. git initialize 되어진다.
  2. add, staging
  3. 커밋 메세지
  4. 커밋.

개념

  • 로컬 repo : 내 컴퓨터에 저장되어있는 리포지토리.
  • 원격 repo : github처럼 접속 할 수 있는 공간에 저장되어 있는 곳.
  • tracking, branch tracking : 로컬 리포와 원격리포를 연결하는 것.
  • Push : 로컬 리포 → 원격 리포
  • Pull : 로컬리포 ← 원격리포
  • Clone(복제) : 비어있는 로컬 리포에 Pull 하는 것을 말한다.

원격 repo 사용

  • github에서 리포지토리 만들기.
  • 트래킹하기. 설정에서 원격 추가.
  • 브랜치 이름 변경. 이유는 2에서.
  • 푸시버튼 누르면 푸시가 됨.
  • 클론은 url 가져오면 됨.

'Git 스파르타' 카테고리의 다른 글

Git 활용 기초. 3  (0) 2023.03.27
Git 활용 기초. 2  (0) 2023.03.26

실력은 기본. 실력이 모든것을 대변해주지 않는다.

 

모든 것은 협업. 혼자서 할 수 없다.

 

막히는 곳은 문제점, 시도했던 것을 정리해서 물어본다.

 

에러 메세지가 나온다면 읽어보고 에러 디버깅을 시작한다.

 

다른 사람의 코딩을 레퍼런스해서 직접 코딩해보며 하나씩 뜯어보며 공부해야

이해 할 수 있다.

 

주변에 불편한 것들을 컴퓨터가 해 줄 수 있을까? 고민을 하고 실행을 해야한다.

 

영어 공부는 필수다.

 

코딩 관련 공유가 잘되는 문화권의 글을 많이 읽고 표현과 사고를 흡수한다.

 

내가 맡은 부분을 즐겁게 하고, 나머지 부분은 리팩토링 하면서 배운다.

 

회사에서 신입을 보는 관점은 실력보다는 팀원과 문화적 융화.

 

팀 분위기가 좋은팀이 결과물이 좋은 경우가 다수. 실무에서도 동일. 분위기 메이커되는 것이 좋다.

 

누구와도 잘 어우릴 수 있다는 인상.

 

 

 

 

'특강' 카테고리의 다른 글

연봉 1억 대기업 개발자 되는 법  (0) 2023.04.03

버킷리스트 미니프로젝트

  • DB 업데이트를 할 때 밸류가 숫자인 것을 찾으려면 int() 를 붙여줘야한다. 붙여주지 않으면 문자열을 찾는다.
  • API는 데이터저장 POST, 업데이트 POST, 보여주기 GET 세 개가 필요하다.

og 태그

<head>에 넣어서 고쳐 쓰면 됀다.

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

내 프로젝트를 서버에 올리기

  • AWS Elastic Beanstalk이용.
  • 관리 콘솔에서 보안 자격 증명
  • 엑세스키 만들기. 메모장에 잘 저장 해두기.
  • 메모장 잘 보고 따라하기.
  • 과금 돼지 않게 인스턴스를 잘 종료한다.

 

튜플

  • a_list = () : 튜플은 괄호로 만든다.
  • 불변형이다.

집합

  • set(a) : ()를 집합으로 만든다.
  • 중복을 제거해준다.
  • a_set & b_set : 교집합 출력.
  • a_set | b_set : 합집합 출력. | (=엔터 위에 돈표시 키)
  • a_set - b_set: 차집합 출

f-string

for s in scores:
    name = s['name']
    score = s['score']
    print(f'{name}의 점수는 {score}점입니다.')

예외처리

for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
        print(person['name'], '에러입니다.')

파일 불러오기

from main_func import *

한줄의 마법

if문 - 삼항연산자

num = 3
result = ('짝수' if num % 2 == 0 else '홀수') 괄호가 없어도 됌
print(f'{num}은 {result}입니다.')

for문 - 한방에 써버리

a_list = [1,2,3,4,5,6]
b_list = [a*2 for a in a_list]
print(b_list)

map

people 리스트의 원소를 조건문에 따라 바꿔 출력한다.

def check_adult(person):
    return ('성인' if person['age'] > 20 else '청소년')

result = map(check_adult, people)
print(list(result))

lamda

result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
print(list(result))

filter

result = filter(lambda x: x['age'] > 20), people)
print(list(result))

함수 심화

매개변수 지정

def cal(a,b):
    return a+2*b

result = cal(b=2,a=1)
print(result)

매개변수 미입력시 b=2. 입력시 입력 값으로 출력됌.

def cal(a,b=2):
    return a+2*b

result = cal(1)
print(result)

철수 와 영희에게 밥먹어라가 각각 붙어서 출력됌.

def cal(*args):
    for name in args:
        print(f'{name} 밥먹어라')
cal('철수','영희')

cal 값이 딕셔너리로 나오게 됌.

def cal(**kwargs):
    print(kwargs)
cal(name = 'bob',age=30, height = 180)
cal(name = 'jhon', age=25, height = 200)

클래스

class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()
m.damage(120)

m2 = Monster()
m2.damage(90)

m.status_check()
m2.status_check()

'python' 카테고리의 다른 글

파이썬 문법 심화. 1  (1) 2023.03.23
파이썬 기초 부교재 정리. 3  (0) 2023.03.22
파이썬 기초 부교재 정리. 2  (0) 2023.03.22
파이썬 기초 부교재 정리. 1  (0) 2023.03.21
파이썬 문법 기초. 1  (0) 2023.03.20

기초문법

변수

사칙연산 +, -, *, /

제곱 a**b

나머지 (a%b)

변수에 true , false 형식도 담을 수 있다.

같다는 == 으로 표현.

 

문자열

+ 가능

int() : ()숫자로 변

str() : ()문자열로 변환

len() : ()를 세어준다.

text[3:] : text 값 3번째에서 끝까지 출력.

text.split('@') : text값에서 @를 기준으로 나눈다.. 리스트가 나온다.

 

리스트와 딕셔너리

리스트 : []

a_list.append() : a 리스트에 ()를 추가한다.

a_list[1] = ' ' : a 리스트 1번째를 ' '로 수정한다.

a_list [1] : a 리스트에 1번째를 출력.

a_list[:3] : a 리스트 처음부터 3번째 까지만 출력.

a_list[-1] : a 리스트 마지막 값 출력.

len(a_list) : a 리스트 값의 갯수를 세어준다.

a_list.sort() : 오름차순 정렬. sorting(=정렬)

a_list.sort(reverse=True) : 내림차순 정렬.

a_list = (5 in a_list) : a 리스트에 5가 있는지 참, 거짓 출력.

 

딕셔너리 : {}

a_dict['age'] : a 딕셔너리에서 key 값 age의 value 출력.

a_dict['height'] = 180 : a 딕셔너리에 key 값 height의 value 값인 180이 추가된다.

print('height' in a_dict) : a 딕셔너리에 key 값 height 가 있는지 참, 거짓 출력.

p_list[2]['age'] : p 리스트에 2번째 딕셔너리에 key 값 age의 value 출력.

 

조건문

money = 1300
# 클론 다음 들여쓰기가 클론의 내용이 된다.
if money > 3800:
    print('택시를 타자!')
# elif는 여러개 작성 가능
elif money > 1200:
    print('버스를 티자!')
else:
    print('걸어서 가자~')

반복문

age 값이 20보다 큰 값만 출력

for person in people:
    name = person['name']
    age = person['age']
    if age > 20:
    print(name, age)

enumerate(=열거하다) i가 2보다 커졌을 때 그만 출력.

for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i, name, age)
    if i > 2:
        break

짝수만 출력

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0:
        print(num)

짝수의 갯수

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0
for num in num_list:
    if num % 2 == 0:
        count += 1 # count = count + 1

print(count)

리스트 값 전부 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
sum = 0
for num in num_list:
    sum += num
print(sum)

리스트에서 가장 큰 값 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0
for num in num_list:
    if max < num:
        max = num
print(max)

함수

주민등록번호로 남성 여성 판별

def check_gender(pin):
    a = pin.split('-')[1][:1]
    if int(a) % 2 == 0:
        print('여성')
    else:
        print('남성')
check_gender('112345-1112345')

 

 

 

'python' 카테고리의 다른 글

파이썬 문법 심화. 1  (1) 2023.03.23
파이썬 기초 부교재 정리. 3  (0) 2023.03.22
파이썬 기초 부교재 정리. 2  (0) 2023.03.22
파이썬 기초 부교재 정리. 1  (0) 2023.03.21
파이썬 문법 기초. 2  (0) 2023.03.20

VS Code Python 패키지 설치하기

  • pip install flask (서버를 구동시켜주는 편한 코드 모음)

flask 시작 코드

render_template (HTML을 가져온다.)

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

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

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

 

GET 요청 API 코드

@app.route('/test', methods=['GET'])
def test_get():
   title_receive = request.args.get('title_give')
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 GET!'})

jsonify

  • 사용자가 json data를 내보내도록 제공.

GET 요청 확인Fetch 코드

function hey() {
            fetch("/test").then(res => res.json()).then(data => {
                console.log(data)
            })
        }

 

POST 요청 API 코드

@app.route('/test', methods=['POST'])
def test_post():
   title_receive = request.form['title_give']
   print(title_receive)
   return jsonify({'result':'success', 'msg': '이 요청은 POST!'})

POST 요청 확인 Fetch 코드

 let formData = new FormData();
        formData.append("title_give", "블랙팬서");

        fetch("/test", { method: "POST", body: formData }).then(res => res.json()).then(data => {
            console.log(data)
        })

mars 프로젝트

Fetch POST

  function save_order() {
            let name = $('#name').val()
            let address = $('#address').val()
            let size = $('#size').val()

            let formData = new FormData();
            formData.append('name_give', name)
            formData.append('address_give',address)
            formData.append('size_give' , size)

            fetch('/mars', { method: "POST", body: formData }).then((res) => res.json()).then((data) => {
                alert(data["msg"])
                window.location.reload()
            });
        }

Fetch GET

 $(document).ready(function () {
            show_order();
        });
        function show_order() {
            fetch('/mars').then((res) => res.json()).then((data) => {
                $('#order-box').empty()
                let rows = data['order_list']
                rows.forEach((a) =>{
                    let name = a['name']
                    let address = a['address']
                    let size = a['size']
                    let temp_html = ` <tr>
                                        <th scope="col">${name}</th>
                                        <th scope="col">${address}</th>
                                        <th scope="col">${size}</th>
                                    </tr>`
                    $('#order-box').append(temp_html)
                })  
            })
        }

bs4 og

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://movie.naver.com/movie/bi/mi/basic.naver?code=191597',headers=headers)

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

ogtitle = soup.select_one('meta[property="og:title"]')['content']
ogimage = soup.select_one('meta[property="og:image"]')['content']
ogdesc = soup.select_one('meta[property="og:description"]')['content']
print(ogtitle, ogimage, ogdesc)

 

VS Code Python 가상환경 만들기

  • 터미널 gitbash로 선택
  • 인터프리터를 설치한 파이썬으로 선택.
  •  터미널에 python -m venv venv 작성.
  • 인터프리터를 venv 로 선택.

VS Code Python 패키지 설치하기

  • pip install requests (Fetch의 역할을 한다.)
  • pip install bs4 (데이터를 골라내는 역할을 한다.)
  • requests로 데이터를 불러오고 bs4로 데이터를 골라내면 크롤링이 된다.
  • pip install dnspython (도메인이나 호스트 이름을 ip주소 해석. 그래야 pc가 알아들음.)
  • pip install pymongo (파이썬에서 mongoDB를 조작하기 위한 패키지.)

 

requests 기본 골격

import requests # requests 라이브러리 설치 필요

r = requests.get('URL')
rjson = r.json()

bs4 기본 골격

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('URL',headers=headers)

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

# 코딩 시작

bs4 예시

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://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a

#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img

#old_content > table > tbody > tr:nth-child(2) > td.point
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
    title = tr.select_one('td.title > div > a')
    if title is not None:
        a =title.text 
        b = tr.select_one('td:nth-child(1) > img')['alt']
        c = tr.select_one('td.point').text
        print(b,a,c)

pymongo 기본골격

from pymongo import MongoClient

client = MongoClient('여기에 URL 입력')
db = client.dbsparta

replace 태그

  • 교체한다는 뜻.
  • "\n","" (줄바꿈을 공백으로 교체함)
  • " ","" (띄어쓰기를 공백으로 교체함)

 

 

 

 

 

 

 

Javascript : 웹을 움직이게 하는 코드, 브라우저가 유일하게 알아듣는 언어.

jQuery : html을 선택해서 쉽게 조작

Fetch : 서버에서 내려오는 데이터를 가져다 사용

 

Javascript, jQuery

<script> 에서 바로 css를 줄 수 있다.

$('#q1').css('font-size','40px')

<script> 반복문 예시

let fruits = ['사과','배','감','귤']
    fruits.forEach((a) => {
        console.log(a)
    })

 

function checkResult() { 
    $('#q1').empty()
    let fruits = ['사과','배','감','귤','수박']
    fruits.forEach((a) => {
        let temp_html = `<p>${a}</p>`
        $('#q1').append(temp_html)
})
}
  $('#q2').empty()
    people.forEach((a) => {
        let name = a['name']
        let age = a['age']
        let temp_html = `<p>${name}는 ${age}살입니다.</p>`
        $('#q2').append(temp_html)
    })

Fetch

기본골격

fetch("여기에 URL을 입력").then(res => res.json()).then(data => {
            console.log(data)
        })

예시

fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
            let rows = data['RealtimeCityAir']['row']
            rows.forEach((a) => {
                console.log(a['MSRSTE_NM'], a['IDEX_MVL'])
            })
        })

필요한 부분 변수로 지정해주고, temp_html 붙여주기

function q1() {
            fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
                let rows = data['RealtimeCityAir']['row']
                $('#names-q1').empty()
                rows.forEach((a) => {
                    let gu_name = a['MSRSTE_NM']
                    let gu_mise = a['IDEX_MVL']
                    let temp_html = `<li>${gu_name} : ${gu_mise}</li>`
                    $('#names-q1').append(temp_html)
                })
            })
        }

조건문 줘서 css 적용시키기.

function q1() {
            fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => {
                let rows = data['RealtimeCityAir']['row']
                $('#names-q1').empty()
                rows.forEach((a) => {
                    let gu_name = a['MSRSTE_NM']
                    let gu_mise = a['IDEX_MVL']

                    let temp_html = ``
                    if (gu_mise > 35){
                        temp_html = `<li class="bad">${gu_name} : ${gu_mise}</li>`
                    } else {
                        temp_html = `<li>${gu_name} : ${gu_mise}</li>`
                    }
                    $('#names-q1').append(temp_html)
                })
            })
        }

자동 로딩 함수

$(document).ready(function () {

}

TIL 회고

  • 1일차 : 학습한 내용을 적었다. 그것도 정리가 안돼있다.
  • 2일차 : 도대체 뭘 적은거지?... 이것도 정리가 안돼있다.
  • 3일차 : 오~ 팝업만드는 방법을 서버쪽과 HTML 나눠서 잘 정리해 두었다. 하나의 함수로 데이터베이스에서 여러 콜렉션을 불러 올 수 있다는 것을 알게 되었네.. 하지만 array가 두 개 생기고 어떻게 하나씩 선택할 수 있는지는 해결을 못했네..
  • 4일차 : js파일 분리 하는 방법 잘 정리 했네.. 하지만 실제 프로젝트에서 그 코드를 사용하면 팝업이 실해이 안돼는 상황이 발생 했던 것 같다. 잘 정리했어야 했는데..
  • 5일차 : TIL/WIL 특강 했던 내용을 잘 정리했네. 그리고 지금까지 썼던 TIL의 문제점을 보고 해결을 어떻게 할지도 잘 정리했네.

전체적으로 보면 5일차를 제외하고는 잘 작성하지 못했다. 다음주 부터는 내가 생각하는 형식으로 작성을 매일 해보도록 하자.

 

다음 주 목표 세우기

  • 커리큘럼 잘 따라가기
  • 팀원들의 자세, 의견 존중하기
  • TIL/WIL 매일 형식대로 작성하기

이번 주 목표 달성 여부

프로젝트를 완성하였고 발표도 했다. 목표는 달성 했는데..

스스로의 성장은 더딘것 같아 조금 답답하다.

다음 주는 파이썬 기초 강의를 잘 듣고 팀에 기여를 조금이라도 했으면 좋겠다.

TIL / WIL 작성 특강

왜 써야하나

  • 본인이 이해한 내용을 본인의 언어로 출력 해보면 잊어먹지 않는다.
  • 본인의 성장을 증명 할 수 있다.
  • 간결하게 핵심만 담는다.

어떤 내용을 담아야하나

  • 문제점 : 어떤 문제가 있었는지
  • 시도 : 내가 시도해본 것들(자세히)
  • 해결 : 어떻게 해결 했는지
  • 알게 된 점 : 뭘 새롭게 배웠는지(자세히)

WIL

  • TIL의 회고 : 이번주 알게 된 점 총정리
  • 다음주 목표 세우기
  • 이번 주 목표 달성 여부

내 TIL의 문제점

  • 일기처럼 적어서 필요 없는 부분 많음.
  • 강의를 듣고 학습한 내용을 적었다는 점.

시도

  • 프로젝트 진행을 잘 정리 해 놓을 것.
  • 문제가 없었어도 오늘 어떤 작업을 했는지 정리할 것.
  • 매일 매일 작성할 것. 밀리면 쓰기 힘들어짐.

 

+ Recent posts