[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
최초 한 번만 설정합니다. 매번 Git을 사용할 때마다 설정할 필요가 없습니다.
누가 커밋 기록을 남겼는지 확인할 수 있도록 이름과 이메일을 설정합니다.
작성자를 수정하고 싶을 때에는 이름, 메일 주소만 다르게 하여 동일하게 입력합니다.
$ git config --global user.name "이름"
$ git config --global user.email "메일 주소"
작성자가 올바르게 설정되었는지 확인 가능합니다.
$ git config --global -l
또는
$ git config --global --list
Working Directory (= Working Tree)
: 사용자의 일반적인 작업이 일어나는 곳Staging Area (= Index)
: 커밋을 위한 파일 및 폴더가 추가되는 곳Repository
: staging area에 있던 파일 및 폴더의 변경사항(커밋)을 저장하는 곳$ git init
Initialized empty Git repository in C:/Users/kyle/git-practice/.git/
kyle@KYLE MINGW64 ~/git-practice (master)
.git
이라는 숨김 폴더를 생성하고, 터미널에는 (master)
라고 표기됩니다.(master)
가 표기되지 않는데, Terminal 업그레이드를 통해 표기할 수 있습니다.$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Working Directory와 Staging Area에 있는 파일의 현재 상태를 알려주는 명령어
어떤 작업을 시행하기 전에 수시로 status를 확인하면 좋습니다.
상태
Untracked
: Git이 관리하지 않는 파일 (한번도 Staging Area에 올라간 적 없는 파일)
Tracked
: Git이 관리하는 파일
a. Unmodified
: 최신 상태
b. Modified
: 수정되었지만 아직 Staging Area에는 반영하지 않은 상태
c. Staged
: Staging Area에 올라간 상태
파일의 라이프 사이클
# 특정 파일
$ git add a.txt
# 특정 폴더
$ git add my_folder/
# 현재 디렉토리에 속한 파일/폴더 전부
$ git add .
Working Directory에 있는 파일을 Staging Area로 올리는 명령어
Git이 해당 파일을 추적(관리)할 수 있도록 만듭니다.
Untracked, Modified -> Staged
로 상태를 변경합니다.
예시
$ touch a.txt b.txt
$ git status
On branch master
No commits yet
Untracked files: # 트래킹 되고 있지 않는 파일 목록
(use "git add <file>..." to include in what will be committed)
a.txt
b.txt
nothing added to commit but untracked files present (use "git add" to track)
# a.txt만 Staging Area에 올립니다.
$ git add a.txt
$ git status
On branch master
No commits yet
Changes to be committed: # 커밋 예정인 변경사항(Staging Area)
(use "git rm --cached <file>..." to unstage)
new file: a.txt
Untracked files: # 트래킹 되고 있지 않은 파일
(use "git add <file>..." to include in what will be committed)
b.txt
$ git commit -m "first commit"
[master (root-commit) c02659f] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a.txt
Commit Message
는 현재 변경 사항들을 잘 나타낼 수 있도록 의미
있게 작성하는 것을 권장합니다.SHA-1
알고리즘에 의해 반환 된 고유의 해시 값을 ID로 가집니다.(root-commit)
은 해당 커밋이 최초의 커밋 일 때만 표시됩니다. 이후 커밋부터는 사라집니다.$ git log
commit 1870222981b4731d14ef91d401c68c0bbb2f6e7d (HEAD -> master)
Author: kyle <kyle123@hphk.kr>
Date: Thu Dec 9 15:26:46 2021 +0900
first commit
id, 작성자, 시간, 메세지 등
)을 조회할 수 있는 명령어--oneline
: 한 줄로 축약해서 보여줍니다.--graph
: 브랜치와 머지 내역을 그래프로 보여줍니다.--all
: 현재 브랜치를 포함한 모든 브랜치의 내역을 보여줍니다.--reverse
: 커밋 내역의 순서를 반대로 보여줍니다. (최신이 가장 아래)-p
: 파일의 변경 내용도 같이 보여줍니다.-2
: 원하는 갯수 만큼의 내역을 보여줍니다. (2 말고 임의의 숫자들 사용 가능)(https://github.com/)에 접속합니다.
Settings
를 클릭합니다.Repositories
를 선택합니다.Repository default branch
의 입력 창에서 main
을 지우고 master
로 작성합니다.Update
를 클릭합니다.여태 까지는 내 컴퓨터라는 한정된 공간에 있는 로컬 저장소에서만 버전 관리를 진행했습니다. 이제는 Github의 원격 저장소를 이용해 내 컴퓨터의 로컬 저장소를 다른 사람과
공유
해봅시다. Git의 주요 목적 중 하나인협업
을 위해 로컬 저장소와 원격 저장소의 연동 방법을 학습합니다.
화면 오른쪽 상단 더하기(+) 버튼을 누르고 New repository를 클릭합니다.
저장소의 이름, 설명, 공개 여부를 선택하고 Create repository를 클릭합니다.(체크 박스는 건드리지 않습니다.)
원격 저장소가 잘 생성되었는지 확인 후, 저장소의 주소를 복사합니다.
기존에 실습 때 만들었던 홈 디렉토리의 TIL 폴더로 가서 vscode를 엽니다.
git init을 통해 TIL 폴더를 로컬 저장소로 만들어줍니다.
kyle@KYLE MINGW64 ~/TIL
$ git init
Initialized empty Git repository in C:/Users/kyle/TIL/.git/
git remote
등록, 조회, 삭제
할 수 있는 명령어원격 저장소 등록
git remote add <이름> <주소>
형식으로 작성합니다.
$ git remote add origin <https://github.com/edukyle/TIL.git>
[풀이]
git 명령어를 작성할건데, remote(원격 저장소)에 add(추가) 한다.
origin이라는 이름으로 <https://github.com/edukyle/TIL.git라는> 주소의 원격 저장소를
원격 저장소 조회
git remote -v
로 작성합니다.
$ git remote -v
origin <https://github.com/edukyle/TIL.git> (fetch)
origin <https://github.com/edukyle/TIL.git> (push)
add를 이용해 추가했던 원격 저장소의 이름과 주소가 출력됩니다.
원격 저장소 연결 삭제
git remote rm <이름>
혹은 git remote remove <이름>
으로 작성합니다.
로컬과 원격 저장소의 연결을 끊는 것이지, 원격 저장소 자체를 제거하는 게 아닙니다.
$ git remote rm origin
$ git remote remove origin
[풀이]
git 명령어를 작성할건데, remote(원격 저장소)와의 연결을 rm(remove, 삭제) 한다.
그 원격 저장소의 이름은 origin이다.
로컬 저장소에서 커밋 생성
# 현재 상태 확인
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
day1.md
nothing added to commit but untracked files present (use "git add" to track)
$ git add day1.md
$ git commit -m "Upload TIL Day1"
[master (root-commit) f3d6d42] Upload TIL Day1
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 day1.md
# 커밋 확인
$ git log --oneline
f3d6d42 (HEAD -> master) Upload TIL Day1
git push
로컬 저장소의 커밋을 원격 저장소에 업로드하는 명령어
git push <저장소 이름> <브랜치 이름>
형식으로 작성합니다.
-u
옵션을 사용하면, 두 번째 커밋부터는 저장소 이름, 브랜치 이름
을 생략 가능합니다.
```bash $ git push origin master
[풀이] git 명령어를 사용할건데, origin이라는 이름의 원격 저장소의 master 브랜치에 push 한다.
$ git push -u origin master 이후에는 $ git push 라고만 작성해도 push가 됩니다. ```
vscode 자격 증명
Sign in with your browser를 클릭합니다.
Authorize GitCredentialManager를 클릭합니다.
정상적으로 자격 증명이 완료 되었습니다.
이후 git push 완료
$ git push -u origin master
info: please complete authentication in your browser...
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 218 bytes | 218.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To <https://github.com/edukyle/TIL.git>
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
원격 저장소에서 정상 업로드 확인
``git push`를 그림으로 이해하기
로컬 저장소의 commit 이력이 원격 저장소에 그대로 반영됩니다.
README.md
는 원격저장소의 소개와 설명이 담겨있는 일종의 대문 역할을 합니다.README.md
로 지정해야 Github가 인식할 수 있습니다.홈 디렉토리에 있는 TIL 폴더에 README.md
파일을 생성하고, 자유롭게, 설명, 각오, 분류 등
을 마크다운 문법으로 작성하고 자신의 Github TIL 원격 저장소에 push를 해봅시다.
예시
출처 https://github.com/namjunemy/TIL
특정 파일 혹은 폴더에 대해 Git이 버전 관리를 하지 못하도록 지정하는 것
venv/
__pycache__/
반드시 이름을 .gitignore
로 작성합니다. 앞의 점(.)은 숨김 파일이라는 뜻입니다.
.gitignore
파일은 .git
폴더와 동일한 위치에 생성합니다.
제외 하고 싶은 파일은 반드시 git add
전에 .gitignore
에 작성합니다.
.gitignore의 내용을 쉽게 작성할 수 있도록 도와주는 두 개의 사이트를 소개합니다.
자신의 개발 환경에 맞는 것을 찾아서
전체 복사, 붙여 넣기
를 하면 됩니다.
웹사이트
gitignore 저장소
Python에 대한 .gitignore 예시
Vscode, Markdown, Git 기초, Github, .gitignore
까지 배운 것을 모두 활용하는 실습 진행
홈 디렉토리에서 git-training-1
이라는 이름의 폴더를 만들고, 그 안에서 vscode를 엽니다.
Github에서 마찬가지로 git-training-1
이름으로 원격 저장소를 생성합니다.
로컬 저장소에서 README.md
와 .gitignore
파일을 만든 후 첫 번째 커밋을 기록합니다.
Typora를 이용해 README.md
를 자유롭게 작성하고 두 번째 커밋을 기록합니다.
no.txt
파일을 만든 후
.gitignore
에 등록하고 세 번째 커밋을 기록합니다.
로컬 저장소와 원격 저장소를 연결합니다.
로컬 저장소의 변경 사항을 원격 저장소에 업로드 합니다.
실습 결과 확인
README.md의 내용과 각 커밋 메시지는 자유롭게 작성합니다.
.gitignore에 대해 조금 더 알아봅니다.
아무것도 없는 라인이나, #
로 시작하는 라인은 무시합니다.
슬래시(/)
로 시작하면 하위 디렉터리에 재귀적으로 적용되지 않습니다.
디렉터리는 슬래시(/)
를 끝에 사용하는 것으로 표현합니다.
느낌표(!)
로 시작하는 패턴의 파일은 ignore(무시)하지 않습니다.
표준 Glob 패턴을 사용합니다.
*(asterisk)
는 문자가 하나도 없거나 하나 이상을 의미합니다.[abc]
는 중괄호 안에 있는 문자 중 하나를 의미합니다.물음표(?)
는 문자 하나를 의미합니다.**(2개의 asterisk)
는 디렉터리 내부의 디렉터리까지 지정할 수 있습니다. (a/**/z
라고 작성하면, a/z
, a/b/z
, a/b/c/z
까지 모두 영향을 끼칩니다.)# .gitignore
# 확장자가 txt인 파일 무시
*.txt
# 현재 확장자가 txt인 파일이 무시되지만, 느낌표를 사용하여 test.txt는 무시하지 않음
!test.txt
# 현재 디렉터리에 있는 TODO 파일은 무시하고, folder/TODO 처럼 하위 디렉터리에 있는 파일은 무시하지 않음
/TODO
# build/ 디렉터리에 있는 모든 파일은 무시
build/
# folder/notes.txt 파일은 무시하고 folder/child/arch.txt 파일은 무시하지 않음
folder/*.txt
# folder 디렉터리 아래의 모든 .pdf 파일을 무시
folder/**/*.pdf
지금까지는 로컬 저장소의 내용을 원격 저장소에 업로드 하는 것을 학습했습니다.
이번에는 반대로, 원격 저장소의 내용을 로컬 저장소로 가져오는 것을 학습합니다.
원격 저장소의 커밋 내역을 모두 가져와서, 로컬 저장소를 생성하는 명령어
clone은 "복제"
라는 뜻으로, git clone
명령어를 사용하면 원격 저장소를 통째로 복제해서 내 컴퓨터에 옮길 수 있습니다.
git clone <원격 저장소 주소>
의 형태로 작성합니다.
$ git clone <https://github.com/edukyle/TIL.git>
Cloning into 'TIL'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
위에 작성한 대로 실행하면, Github의 edukyle이라는 계정의 TIL 원격 저장소를 복제
하여 내 컴퓨터에 TIL이라는 이름의 로컬 저장소를 생성하게 됩니다.
git clone을 통해 생성된 로컬 저장소는 git init
과 git remote add
가 이미 수행되어 있습니다.
원격 저장소의 변경 사항을 가져와서, 로컬 저장소를 업데이트하는 명령어
로컬 저장소와 원격 저장소의 내용이 완전 일치하면 git pull을 해도 변화가 일어나지 않습니다.
`git pull <저장소 이름=""> <브랜치 이름="">의 형태로 작성합니다.브랜치>저장소>
$ git pull origin master
From <https://github.com/edukyle/git-practice>
* branch master -> FETCH_HEAD
Updating 6570ecb..56809a9
Fast-forward
README.md | 1 +
1 file changed, 1 insertion(+)
[풀이]
git 명령어를 사용할건데, origin이라는 원격 저장소의 master 브랜치의 내용을 가져온다(pull).
두 개 이상의 로컬 저장소에서 하나의 원격 저장소에 접근하면 어떻게 될까요?
집과 강의장을 오가면서
clone, push, pull
하는 과정을 살펴보겠습니다.
"내 컴퓨터"
와 "강의장 컴퓨터"
라고 가정합니다.TIL-home
입니다.TIL-class
입니다.TIL-remote
입니다.홈 디렉토리 안에 TIL-home
폴더를 생성합니다.
Github에서 TIL-remote
라는 이름의 원격 저장소를 생성합니다.
TIL-home
폴더에서 vscode를 엽니다.
아래와 같은 절차를 진행합니다.
# TIL-home
$ git init
$ touch day1.md
$ git add .
$ git commit -m "집에서 Day1 작성"
$ git remote add origin <https://github.com/edukyle/TIL-remote.git>
$ git push origin master
TIL-home
로컬 저장소의 내용이 TIL-remote
원격 저장소에 그대로 반영되었습니다.
결과
여러분은 이제 강의장에 왔습니다. 강의장 컴퓨터에는 여러분의 TIL폴더가 없습니다.
Github에 있는 TIL-remote
에서 git clone
을 통해 내려 받습니다.
# TIL-class
$ git clone <https://github.com/edukyle/TIL-remote.git> TIL-class
원격 저장소는 TIL-remote
이지만, 위와 같이 작성하면 강의장 컴퓨터에는 TIL-class
라는 이름으로 로컬 저장소가 생성됩니다. (내부 파일 내용은 똑같습니다. 단지 폴더의 이름만 바뀝니다.)
결과
강의장 컴퓨터 -> 원격 저장소
강의장에서 새로운 파일을 만들고 원격 저장소에 업로드 합니다.
# TIL-class
$ touch day2.md
$ git add .
$ git commit -m "강의장에서 Day2 작성"
$ git push origin master
결과
원격 저장소 -> 내 컴퓨터
내 컴퓨터에는 day2.md가 없습니다. 왜냐하면 강의장 컴퓨터에서 day2.md를 만들어서 원격 저장소에 push 했기 때문입니다. 따라서 원격 저장소에서 day2.md에 대한 내역을 가져와야 합니다.
# TIL-home
$ git pull origin master
결과
이제 내 컴퓨터, Github, 강의장 컴퓨터
의 내용은 동일합니다.
주의 사항 (글 만으로는 이해하기 어려우니, 직접 보여주면서 수업합니다.)
두 명씩 짝을 지어서 하나의 원격 저장소를 공유하며 끝말잇기를 진행합니다.
조장은 홈 디렉토리에 word-relay
라는 이름의 폴더를 생성합니다.
조장은 Github에 word-relay
라는 이름의 원격 저장소를 생성하고, 로컬 저장소와 연결합니다.
조장은 로컬 저장소에 README.md, .gitignore
파일을 생성하고 push 합니다.
조장은 원격 저장소의 collaborator로 조원을 추가합니다.
조원은 초대 메일을 확인하여 초대를 수락합니다.
조원은 word-relay
원격 저장소를 clone 받습니다.
조장과 조원은 add, commit, push, pull
을 이용해서 끝말잇기를 진행합니다.
예시
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!