python 조건문 (if, while, for)

조건문

  • 특정 조건에 따라서 코드를 실행하고자 할 때 사용
  • if, else, elif
    1
    2
    3
    4
    5
    6
    # if 문이 ture일 때 구문 안의 결과가 실행됨
    if True:
    print("python")

    print("done")
    # python done
    1
    2
    3
    4
    5
    6
    # if 문이 false일 때 구문 이외의 결과가 실행됨
    if False:
    print("python")

    print("done")
    # done
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 조건부문 : bool 데이터 타입 이외의 데이터 타입이 오면 bool으로 형변환 되어 판단
    # int : 0을 제외한 나머지 값은 True
    num = 0
    if num:
    print("python_1")
    # 출력값 없음

    num = 1
    if num:
    print("python_2")

    # python_2
    1
    2
    3
    4
    5
    number = 7
    if number % 2:
    print('홀수')
    else:
    print('짝수')
    1
    2
    3
    # float : 0.0을 제외한 나머지 실수는 True
    # str : ""을 제외한 나머지 문자열은 True
    # list, tuple, dict : [], (), {}를 제외한 나머지는 True
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 지갑에 돈이 10000원 이상 있으면 택시를 탑니다. 
    # 2000원 이상이 있으면 버스를 탑니다.
    # 그렇지 않으면 걸어서 집에 갑니다.
    money = 5000
    if money >= 10000:
    print('택시를 타고 집에 갑니다.')
    elif money >= 5000:
    print('광역버스를 타고 집에 갑니다.')
    elif money >= 2000:
    print('일반버스를 타고 집에 갑니다.')
    else:
    print("걸어서 집에 갑니다.")
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 계좌에 10000원이 들어있습니다. 
    # 인출 금액을 입력 받습니다.
    # 인출 금액이 계좌에 있는 금액보다 크면 "인출이 불가능합니다." 출력
    # 인출 금액이 계좌에 있는 금액보다 작으면 "인출 되었습니다." 출력
    # 마지막에 현재 계좌의 잔액을 출력
    account = 10000
    draw_money = int(input("인출 금액을 입력하세요. : "))
    if account >= draw_money:
    account -= draw_money
    print(str(draw_money) + "원이 인출되었습니다.")
    else:
    print("인출이 불가능합니다. " + str(draw_money - account) + "원의 잔액이 부족합니다.")

    print("현재 잔액은 " + str(account) + "원 입니다.")

삼항연산자

  • 간단한 if, else 구문을 한줄의 코드로 표현할 수 있는 방법
  • (True) if (condition) else (False)
    1
    2
    3
    4
    5
    6
    # data 변수에 0이면 "zero"출력, 아니면 "not zero"출력
    data = 0
    if data:
    print("not zero")
    else:
    print("zero")
    1
    2
    data = 1
    "not zero" if data else "zero"

반복문

  • 반복되는 코드를 실행할 때 사용
  • while, for, break, continue
  • list comprehention
    1
    2
    3
    4
    5
    6
    7
    8
    # while
    data = 3

    while data: # 조건이 False가 될 때까지 구문의 코드를 실행

    # 반복되는 코드
    print(data)
    data -= 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 학생이 국어: 80점, 영어: 90점, 수학: 100점 while 문을 이용해서 총점과 평균을 출력
# 학생의 점수는 list, dict 표현
# len(), dict.values(), list.pop()
# list
subject = ["korean", "english", "math"]
score = [80, 90, 100]
total, avg = 0, 0

while True:
total = sum(score)
avg= total / len(score)
print('3과목 총점은 ' + str(total) + '점 입니다.' )
print('3과목 평균 점수는 {}점 입니다. '.format(avg))
break
1
2
3
4
5
6
7
8
9
10
points_dict = {"korean": 80, "english": 90, "math": 100}
total, avg = 0, 0

while True:
total = sum(points_dict.values())
avg = total / len(subject)

print("3과목 총점 : ", total)
print("3과목 평균 : ", avg)
break
1
2
3
4
5
6
7
8
9
10
11
12
subjects_ls = ["korean", "english", "math"]
points_ls = [80, 90, 100]
points_dict = {"korean": 80, "english": 90, "math": 100}

datas = points_ls.copy() # 깊은 복사 : 원본 데이터를 보존

total, avg = 0, 0

while datas:
total += datas.pop()
avg = total / len(points_ls)
total, avg

무한루프

1
2
3
4
result = 1
while result:
result += 1
print(result)
  • break : 반복문을 중단 시킬 때 사용되는 예약어
    1
    2
    3
    4
    5
    6
    7
    8
    result = 1
    while result:

    if result >= 10:
    break

    result += 1
    print(result)

for

  • iterable한 데이터를 하나씩 꺼내서 value에 대입시킨 후 코드를 iterable변수의 값 갯수만큼 실행
    1
    2
    for <variable> in <iterables>:
    <code>
    1
    2
    3
    ls = [0, 1, 2, 3, 4]
    for data in ls:
    print(data)
    1
    2
    3
    4
    5
    6
    7
    8
    # continue: 조건부분으로 올라가서 콜드가 실행
    ls = [0, 1, 2, 3, 4]
    for data in ls:
    if data % 2: # data가 홀수가 되면 continue를 실행하여 다시 포문으로 돌아감
    continue

    # data가 짝수이면 print를 실행
    print(data, end=" ")

for를 이용해서 코드를 100번 실행

  • range 함수
    1
    2
    3
    4
    5
    list(range(100))
    result = 0
    for data in range(100):
    result += data
    result
  • offset index 개념과 비슷하게 사용
    1
    list(range(5)), list(range(5, 10)), list(range(0, 10, 2))
    1
    2
    3
    4
    5
    # 0~10 까지 짝수를 더한 총합
    result = 0
    for number in range(0, 11, 2):
    result += number
    result
    1
    2
    3
    points_dict = {"korean": 80, "english": 90, "math": 100}
    for data in points_dict:
    print(data)

items 함수 사용

1
2
3
4
# dict 형태
points_dict = {"korean": 80, "english": 90, "math": 100}
for subject, point in points_dict.items():
print(subject, point)

zip 함수 사용

1
2
3
4
5
6
# list 형태
# for 문에서 iterable 데이터가 tuple로 나오면 여러개의 변수로 받을 수 있습니다.
subjects_ls = ["korean", "english", "math"]
points_ls = [80, 90, 100]
for subject, point in zip(subjects_ls, points_ls):
print(subject, point)

구구단 가로 출력

  • 21=2 31=3 … 9*1=9
  • 29=18 39=27 … 9*9=81
    1
    2
    3
    4
    5
    for i in range(1, 10): # 1, 2, 3, ... 9를 만들어 줌
    # print(i)
    for j in range(2, 10): # 2단, 3단, ... 9단을 만들어줌
    print('{}*{}={}'.format(j, i, i*j), end='\t')
    print()

List Comprehention

  • 리스트 데이터를 만들어주는 방법
  • for문 보다 빠르게 동작합니다.
1
2
3
4
5
6
7
# 각각 값에 제곱한 결과 출력
ls = [0, 1, 2, 3]
result = []

for data in ls:
result.append(data ** 2)
result
1
2
result = [data**2 for data in ls] # [연산 for 각각의 데이터 in 데이터의 집합]
result
1
2
3
4
5
# 리스트 컴프리헨션을 써서 홀수와 짝수를 리스트로 출력해주는 코드
# 삼항연산자 사용
ls = range(0, 11)
result = ["홀수" if data % 2 else "짝수" for data in ls]
result

리스트 컴프리헨션 조건문

  • 0 ~ 9까지에서 홀수만 출력하기
    1
    2
    ls = range(10)
    [i for i in ls if i%2]
    1
    2
    3
    4
    # dir(ls)에서 "__" 없는 함수만 출력하기
    ls = [1, 2, 3]
    dir(ls)
    [i for i in dir(ls) if i[:2] != '__'] # 앞에 2개가 __ 인 것을 제외
    1
    2
    3
    4
    # 앞글자가 c인 것만 가져오기
    ls = [1, 2, 3]
    dir(ls)
    [i for i in dir(ls) if i[:2] != '__' if i[:1] == 'c']
    1
    2
    3
    ls = [1, 2, 3]
    dir(ls)
    [i for i in dir(ls) if i[:2] != '__' and i[0] == 'c']

for문과 list comprehention 성능 비교

1
2
3
4
5
%%timeit # magic command : 셀 안에서 실행되는 시간 측정
ls = []
for num in range(1, 10001):
ls.append(ls)
len(ls)
1
2
3
%%timeit # magic command : 셀 안에서 실행되는 시간 측정
ls = [num for num in range(1, 10001)]
len(ls)
1
2
3
4
5
6
7
# 3의 배수만 찾기 소요시간 비교
%%timeit # magic command : 셀 안에서 실행되는 시간 측정
ls = []
for num in range(1, 10001):
if num % 3 == 0:
ls.append(num)
len(ls)
1
2
3
%%timeit # magic command : 셀 안에서 실행되는 시간 측정
ls = [num for num in range(1, 10001) if num % 3 == 0]
len(ls)

basic

파이썬 기본 문법

  • 변수 선언, 식별자, 자료형, 형변환, 연산자
  1. 주석(comment)과 출력(print)

    1
    2
    3
    4
    # 주석 : 앞에 #을 붙이면 코드로 실행이 안됩니다. 
    # 코드에 대한 설명이나 코드를 실행시키고 싶지 않을 때 사용
    # 단축키 : ctrl(cmd) + /
    # 블럭설정 : shift + 방향키
    1
    2
    3
    4
    5
    6
    # 출력 : print 함수
    # 코드 중간에 변수에 들어있는 값을 확인하고 싶을 때 사용
    # 1, 2, 3을 출력하는 코드, 아래를 실행시키면 1, 3이 출력 됩니다.
    print(1)
    # print(2)
    print(3)
    1
    2
    3
    4
    5
    # print 함수의 옵션
    # docstring : 함수에 대한 설명 : 단축키(shift + tab)
    print(1, 2, sep="-", end="\t")
    print(3)
    # 자동완성 : tab
  2. 변수 선언

  • RAM 저장공간에 값을 할당하는 행위
    1
    2
    3
    4
    5
    6
    7
    # 하나씩 선언
    a = 1
    b = 2
    # 한줄로 여러개의 변수를 선언
    d, e = 3, 4
    # 5라는 값이 f와 g에 선언
    f = g = 5
  1. 식별자
  • 변수, 함수, 클래스, 모듈 등의 이름을 식별자라고 합니다.
  • 식별자 규칙
    • 소문자, 대문자, 숫자, 언더스코어(_)를 사용합니다.
    • 가장 앞에 숫자 사용 불가
    • 예약어의 사용 불가 : def, class, try, except, 등
    • 컨벤션
      - snake case : fast_campus : 변수, 함수
      - camel case : FastCampus, fastCampus : 클래스
  1. 데이터 타입
  • RAM 저장공간을 효율적으로 사용하기 위해서 저장공간의 타입을 설정
  • 동적타이핑(인터프리터 방식에서 주로 사용함)
    - 변수 선언시 저장되는 값에 따라서 자동으로 데이터 타입이 설정
  • 기본 데이터 타입 : int, float, bool, str
  • 컬렉션 데이터 타입 : list, tuple, dict
1
2
3
4
5
a = 1
# int a = 1
b = "python"
# int, str
type(a), type(b)
1
2
3
4
5
6
# 기본 데이터 타입 : int, float, bool, str
a = 1
b = 1.2
c = True # False
d = "data"
type(a), type(b), type(c), type(d)
1
2
3
4
# 데이터 타입의 함수 : 문자열
d = "data"
# upper : 대문자로 변환
d.upper()
1
2
3
f = ' THAt Car '
# lower : 소문자로 변환
f.lower()
1
2
# strip : 공백 제거
f.strip()
1
2
# replace : 모든 공백제거
f.replace(" ", "")
1
2
# replace : 특정 문자열 치환
f.replace("THAt", "THIS")
1
2
# dir : 함수 확인
dir(f)
1
2
3
4
5
6
7
8
9
10
11
12
# 오프셋 인덱스 : 마스크, 마스킹 : []
# 문자열은 순서가 있는 문자들의 집합
g = "abcdefg"
g[2] # 'c'
g[-2] # 'f'
g[2:5] # 'cde' 2는 포함, 5는 미포함
g[2:] # 'cdefg' 2번째부터 끝까지
g[:3] # 'abc' 0번째부터 2번째까지 g[0:3]과 같음
g[-2:] # 'fg' -2에서 끝까지
g[:] # 'abcdefg' 처음부터 끝까지
g[::2] # 'aceg' 2칸씩 점프하며 출력
g[::-1] # 'gfedcba' 역순으로 출력
1
2
3
4
5
6
# 97531 출력
numbers = '123456789'
# numbers[::-2]
# result = numbers[::2]
# result[::-1]
# numbers[::2][::-1]
1
2
3
4
# 컬렉션 데이터 타입 : list, tuple, dict
# list [] : 순서가 있는 수정이 가능한 데이터 타입
# tuple () : 순서가 있는 수정이 불가능한 데이터 타입
# dict {} : 순서가 없고 키: 값으로 구성되어 있는 데이터 타입
1
2
3
# list
ls = [1, 2, 3, "four", [5, 6], True, 1.2]
type(ls), ls
1
2
# offset index 사용 가능
ls[3], ls[1:3], ls[::-1]
1
2
3
4
5
# list 함수
ls = [1, 5, 2, 4]
# append : 가장 뒤에 값을 추가
ls.append(3)
ls # [1, 5, 2, 4, 3]
1
2
3
4
5
# sort : 오름차순으로 정렬
ls.sort()
ls # [1, 2, 3, 4, 5]
# 내림차순 정렬
ls[::-1] # [5, 4, 3, 2, 1]
1
2
3
4
# pop : 가장 마지막 데이터를 출력하고 출력한 데이터를 삭제
# ctrl + enter : 현재 셀을 계속 실행
num = ls.pop()
num, ls
1
2
3
4
# 리스트의 복사
ls1 = [1, 2, 3]
ls2 = ls1
ls1, ls2 # ([1, 2, 3], [1, 2, 3])
1
2
3
# 얕은 복사 :주소값 복사
ls1[2] = 5
ls1, ls2 #([1, 2, 5], [1, 2, 5])

깊은 복사

1
2
3
# 깊은 복사
ls3 = ls1.copy()
ls1, ls3 #([1, 2, 5], [1, 2, 5])
1
2
ls1[2]  = 10
ls1, ls3 # ([1, 2, 10], [1, 2, 5])

tuple ()

  • 리스트와 같지만 수정이 불가능한 데이터 타입, 괄호 생략 가능
  • 튜플은 리스트보다 같은 데이터를 가졌을 때 공간을 적게 사용
    1
    2
    3
    tp1 = 1, 2, 3
    tp2 = (4, 5, 6)
    type(tp1), type(tp2), tp1, tp2
    1
    2
    # offset index 사용 가능
    tp1[1], [tp1[::-1]]
    1
    2
    3
    4
    5
    6
    7
    8
    # 리스트와 튜플의 저장공간 차이 비교
    import sys

    ls = [1, 2, 3]
    tp = (1, 2, 3)

    print(sys.getsizeof(ls), sys.getsizeof(tp))
    # 96 80
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    **dict {}**
    - 순서가 없고 {키: 값}으로 구성되어 있는 데이터 타입
    ```python
    # 선언: 키는 정수, 문자열 데이터 타입만 사용이 가능
    # 인덱스 대신 키를 사용
    dict = {
    1: "one",
    "two": 2,
    'tree': [1, 2, 3],
    }
    type(dic), dic
    1
    2
    3
    4
    dic[1], dic["tree"]
    ```python
    dic["two"] = 123
    dic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 아래의 데이터를 list와 dict로 선언
    # 도시 : seoul, busan, daegu
    # 인구 : 9,700,000, 3,400,000, 2,400,000
    # 딕셔너리 : 변수 1개 선언
    data = {
    "seoul": 9700000,
    "busan": 3400000,
    "daegu": 2400000,
    }
    # 리스트 : 변수 2개 선언
    city = [seoul, busan, daegu]
    population = [9700000, 3400000, 2400000]
    1
    sum(population)
    1
    sum(data.values())
  1. 형변환
  • 데이터 타입을 변환하는 방법
  • int, float, bool, str, list, tuple, dict
    1
    2
    3
    a = 1
    b = "2"
    a + int(b)
    1
    str(a) + b
    1
    list(data.values())
    1
    2
    3
    4
    5
    # zip : 같은 인덱스에 있는 데이터를 묶어주는 함수
    # zip 함수 사용하여 list 타입으로 변환하기
    list(zip(city, population))
    # dict 타입으로 변환하기
    dict(zip(city, population))
    1
    2
    result = dict(list(zip(city, population)))
    result
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    data1 = list(result.keys())
    data2 = list(resutl.values())
    data1, data2
    ```
    6. 연산자 : 멤버 > 논리
    - 산술연산자 : +, -, *, /, //(몫), %(나머지), **(제곱)
    - 할당연산자 : 변수에 누적시켜서 연산 : +=, //=, **= 등
    - 비교연산자 : >(크다), <(작다), ==, !=, <=(작거나 같다), >=(크거나 같다), 결과로 True, False
    - 논리연산자 : True, False 를 연산 : or(T와 F연산 True가 출력), and(T와 T일 때 True), not(TrueFalseFalseTrue로 변경)
    - 멤버연산자 : 특정 데이터가 있는지 확인 할 때 사용 : not in, in

    ```python
    # 산술연산 : 제곱, 나눗셈, 더하기 순
    1 + 4 / 2 ** 2 # 2.0
    1
    2
    3
    4
    5
    # 할당연산
    a = 10
    a +=10
    a += 10
    a # 30
    1
    2
    # 비교연산
    a < b, a == b, a != b
    1
    2
    3
    # 논리연산 : and(교집합), or(합집합), 괄호가 있는 경우에는 왼쪽이 먼저 연산됨
    True and False, True or False, not True or False # (not True = False가 되어 False or Flase는 False가 됨)
    # False, True, False
    1
    2
    3
    ls = ['jin', 'andy', 'john']
    'andy' in ls, 'anchel' in ls, 'john' not in ls
    # True, False, False
    1
    2
    3
    4
    # 랜덤함수
    import random

    random.randint(1, 10)
    1
    2
    3
    # 입력함수
    data = input('insert string : ')
    data
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 해결의 책 만들기 : 질문을 하면 질문에 대한 답변을 해주는 책
    # 1. solution을 리스트로 작성
    # 2. 질문 입력 받음
    # 3. 솔루션의 갯수에 맞게 랜덤한 index 정수 값을 생성
    # 4. index 해당하는 솔루션 리스트의 데이터를 출력
    solution =[
    "무엇을 하던 잘 풀릴 것이다.",
    '생각지도 않게 좋은 일이 생길 것이다.',
    '무엇을 상상하던 그 이상이다.',
    ]
    input("질문을 입력하세요. : ")
    idx = random.randint(0, len(solution) - 1) # 솔루션 = 총 3개: 0, 1, 2 이므로 솔루션 숫자 -1을 해야 randint(0, 2)가 됨
    solution[idx]

jupyter notebook

python

  • coding program
  • numpy, pandas, sklearn 등의 모듈을 각각 설치해야 함

anaconda

  • numpy, pandas, sklearn 등의 모듈이 모두 포함되어 있음
  • 용량이 큼(약 500MB)

jupyter notebook

mode

  • 명령모드(esc) : 셀을 수정할 때 사용, 왼쪽 바의 색깔이 파란색입니다.
  • 편집모드(enter) : 셀안의 내용을 수정할 때 사용, 왼쪽 바의 색깔이 녹색입니다.

style

  • markdown(명령모드 + m) : 셀 안에 설명을 작성할 때 사용
  • code(명령모드 + y) : 파이썬 코드를 작성할 때 사용
  • 라인 넘버(명령모드 + l)

단축키

  • 셀 실행 : shift + enter, ctrl + enter
  • 셀 삭제 : (명령모드) x
  • 되돌리기 : (명령모드) z
  • 셀 생성 : (명령모드) a(위에), b(아래)

매직 커맨드

  • 셀 내부에서 특별하게 동작하는 커맨드
  • % : 한줄의 magic command를 동작
  • %% : 셀 단위의 magic command를 동작

주요 magic command

  • %pwd : 현재 주피터 노트북 파일의 경로
  • %ls : 현재 디렉토리의 파일 리스트
  • %whos : 현재 선언된 변수를 출력
  • %reset : 현재 선언된 변수를 모두 삭제

shell command

  • 주피터 노트북을 실행 셀 환경의 명령을 사용
  • 명령어 앞에 !를 붙여서 실행

주요 명령어 : ls, cat, echo 등

  • !echo python : 뒤에 오는 문자열(python)을 출력해줍니다.
  • !ls : 현재 디렉토리에 있는 데이터를 표시해줍니다.

mysql query

  • Server - Database - Table

  • 1. 데이터 베이스 보기

    SHOW DATABASES;
  • 생성

    CREATE DATABASE test;
  • 선택

    USE test
  • 현재 확인

    SELECT DATABASE()

tmux

tmux(터미널 멀티플렉서) 실행, session name : dss

1
$ tmux new -s dss
  • 새로운 세션을 dss란 이름으로 만든다는 뜻

세션 종료

1
$ exit

세션 목록보기

1
$ tmux ls

세션 접속

1
$ tmux attach -t dss

윈도우 생성

1
$  ctrl + b, c

윈도우 이동

1
$   ctrl + b, 0-9

윈도우 종료

1
$   ctrl + b, &

git branch, git checkout, git merge

git 3번째 내용 git branch

인프런 무료강좌 git과 github

병합하기 1

  • 헤드 브랜치에 변경사항이 없고
  • 병합 대상 브랜치가 헤드로부터 시작된 경우
  • 아주 쉽게 병합 가능 = Fast-forward

병합하기 2

  • 헤드 브랜치에 추가적인 커밋이 생기는 경우
  • 진짜 변합이 필요합니다.
  • 충돌이 나면 충돌난 부분을 확인한 후 해결하면 됩니다.

soucetree에서 git branch

  • branch : 기존 내용을 유지한 체 새로운 내용을 추가하고 싶을 때 사용합니다.
  • checkout : 특정 브랜치(혹은 커밋)으로 돌아가고 싶을 때 사용합니다.
  • sourcetree의 checkout : 브랜치 이름을 더블 클릭하여 체크아웃합니다.
  • master : 고객에게 전달해야 하는 내용이 들어있습니다.
  • branch : 개발을 진행하는 내용이 들어있습니다.
  • merge : 하나의 브랜치를 현재 브랜치와 합치는 거을 병합(merge)라고 합니다.
  • head branch : 현재 작업중인 브랜치

learn_git_branch

git에서 bugFix라는 branch 만들기

  1. 터미널 명령어 : git branch 새로만들 브랜치 이름

    1
    git branch bugFix
  2. git checkout bugFix 라는 명령어로 bugFix branch로 이동할 수 있습니다.

    1
    git checkout bugFix

2-1. git checkout master 를 입력하면 master로 돌아갑니다.

1
git checkout master
  1. Merge : 브랜치와 병합하기
  • 각 브랜치에서 독립된 커밋이 하나씩 있을 경우, 이 경우는 지금까지 작업한 내용이 나뉘어 담겨있다는 뜻입니다. 이럴 때 두 브랜치를 합칠(merge) 수 있습니다.
    1
    git merge bugFix
  1. git branch bugFix

  2. git commit

  3. git checkout master

  4. git commit 을 하면 아래와 같은 그림이 나옵니다.
    git_merge_bugFix_1

  5. git merge bugFix
    git_merge_bugFix_2

  6. git checkout bugFix

  7. git merge master
    git_merge_bugFix_3

틀리거나 이상한 내용이 있으면 알려주세요, 확인 후 수정하겠습니다!

git clone과 sourceTree

git 2번째 내용 : sourcetree 만들기 및 commit 주의사항

인프런 무료강좌 git과 github

Source Tree 설치
소스트리 다운로드
주의사항

  1. 아틀라시안에 가입해야 합니다.
  2. bitbucket 등의 설정은 skip합니다.

소스트리를 설치한 후 저장소 클론
github에 만들어진 README.md 등의 파일이 내 컴퓨터 문서폴더 안으로 복사됩니다.
이 때, 내 컴퓨터 문서폴더 안에 저장소이름의 폴더가 생성됩니다.

작업 후 스테이지에 파일 추가
만들어진 폴더를 열고 에디터 등을 이용해서 hello.html을 만들어 봅시다.
저장위치는 Documents/hello-world/가 됩니다.

커밋 주의사항

  1. 반드시 한 번에 하나의 논리적인 작업만을 커밋합니다.
  2. 커밋 메세지를 잘 적어야 합니다.
    특히 커밋 메세지는 미래의 여러분과 다른 개발자를 위해서 꼼꼼히 적어야 합니다.

커밋 메세지 작성법

  1. 첫 줄에 간단하지만 명확하게 내용을 씁니다.
  2. 한줄 비웁니다.
  3. 자세한 내용을 적습니다.

checkout을 이용해서 저장하지 않은 변경 내용 취소하기

  • checkout을 이용하면 마지막 커밋으로 되돌아갈 수 있습니다.
  • sourceTree의 코드뭉치 버리기 기능을 사용하면 변경사항을 되돌릴 수 있습니다.
  • commit 전 내용을 돌릴 수 있습니다.

Hexo icarus 테마에 adsense 추가하기

오늘은 Hexo icarus 테마에 adsense를 적용하는 것을 공유하려 합니다.

  1. 아래 구글 애드센스 홈페이지에 접속합니다.

    구글애드센스

  2. 구글계정으로 로그인하고 애드센스를 신청합니다.

  3. Hexo icarus 테마 !_config.yml에 아래와 같이 등록합니다.
    hexo-icarus-adsense.png

  4. 구글 에드센스 확인버튼을 누른 후 다음과 같은 이미지가 뜨면 승인을 기다립니다.
    hexo-icarus-adsense1

수고하셨습니다!

Hexo profile 변경하기

안녕하세요, Hexo Icarus theme의 프로필 사진을 변경하는 방법에 대해 알아보겠습니다.

  1. 아래와 같이 터미널에서 source 폴더 안에 img 폴더를 만든 후 img 폴더 안에 이미지 사진을 올리고 아래와 같이 작성하면 됩니다.

  2. 파일이름 대소문자를 구분한다고 하니 동일하게 진행하셔야 이미지가 보입니다.

  3. ![문자 사이에 공간이 없어야 합니다] 즉, 대쉬를 이용해서 문자와 문자 사이에 공간을 없애야 정상적으로 작동합니다.

  4. upload까지 약 3~4분 정도 소요되니 참고하시길 바랍니다.

1
$ mkdir img
  1. Hexo 프로필 사진 변경
    hexo-icarus-profile-avata
  1. Hexo 프로필 아래 twitter 아이콘 제거하기
    hexo-icarus-twitter.png
  1. Hexo 블로그에 이미지 올리기
    img 폴더를 만들고 그 안에 이미지를 추가한다

출처: 이카루스 테마 페이지