책 내용 "객체지향이란 실세계를 직접적이고 직관적으로 모델링할 수 있는 패러다임"이라고 말한다. 즉 객체지향 소프트웨어는 실세계의 투영이며, 객체란 현실 세계에 존재하는 사물에 대한 추상화다. 하지만 실용적인 관점에서는 위의 설명이 적합하지 않다. 대다수의 개발자들은 객체지향 애플리케이션이 실세계를 모방해야 한다는 설명을 전혀 납득하지 못한다. 오히려 새로운 세계를 창조하는 것이다. 다만 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는데 효과적이라서 그렇다. 책에서도 이런 방식을 따른다.(캡슐화, 자율성, 메세지, 협력 => 연결완전성) 1. 협력하는 사람들 커피 공화국 커피를 주문하는 경우를 생각해보자. 손님, 캐시어, 바리스타가 존재한다. 손님은 커피를 캐시어에게 주문하고 캐시어는 바..
배경 우테캠에서 호눅스님이 추천한 책 중에 하나가 객체지향의 사실과 오해다. 그때는 그런 책이 있구나 하고 넘어갔는데 여러 글들을 보고 면접을 보면서 객체지향에 대해 관심이 생기고 공부할 필요성을 느꼈다. 자바스크립트는 프로토타입 기반의 객체지향 언어이다. 그렇다면 클래스형 객체지향 언어와 다른 점은 무엇인가? 객체지향이 왜 중요하고 어디에 적용할 수 있는가? 라는 질문에 제대로 대답할 수 없다. 구글링해서 답변만 찾아보는 것으로는 부족하다. 현실 세계에 있는 것들을 추상화를 통해 코드로 구현하고 캡슐화, 상속, 다향성의 특징을 가진다 정도의 설명은 너무 막연하다. 단순히 면접에서 잘 대답하기 위해서가 아니라(사실 객체지향에 대한 깊은 지식은 신입 개발자에게 잘 물어보지 않는다) 더 좋은 개발자가 되기 ..
제어판/ 사용자계정/자격 증명 관리자 들어가서 git 내꺼 지우고 git bash에서 git push로 로그인!! git config --system credentail.helper => manager SSH키 User@DESKTOP-VOH9EIA MINGW64 ~/Desktop $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/User/.ssh/id_rsa): Created directory '/c/Users/User/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your ident..
git add 명령의 동작 원리 git init 명령 수행시 변경사항 확인 User@DESKTOP-VOH9EIA MINGW64 ~/Documents $ mkdir git-test User@DESKTOP-VOH9EIA MINGW64 ~/Documents $ cd git-test User@DESKTOP-VOH9EIA MINGW64 ~/Documents/git-test $ git init Initialized empty Git repository in C:/Users/User/Documents/git-test/.git/ User@DESKTOP-VOH9EIA MINGW64 ~/Documents/git-test (master) $ ls -al total 12 drwxr-xr-x 1 User 197121 0 7월 ..
브랜치 언제 사용하나요? 새로운 기능 추가 버그 수정 병합과 리베이스 테스트 이전 코드 개선 특정 커밋으로 돌아가고 싶을 때 [] 옵션, 필수 브랜치 생성 User@DESKTOP-VOH9EIA MINGW64 ~/Documents/hello-git-cli (master) $ git log --oneline e738af6 (HEAD -> master, origin/master) 두 번째 커밋 25f256c 첫번째 커밋 User@DESKTOP-VOH9EIA MINGW64 ~/Documents/hello-git-cli (master) $ git branch * master User@DESKTOP-VOH9EIA MINGW64 ~/Documents/hello-git-cli (master) $ git branch m..
워킹트리 : 일반적인 작업이 일어나는 곳(.git 폴더를 뺀 나머지 부분) 로컬저장소 : .git 폴더, 커밋은 여기에 들어 있다 원격저장소 : 로컬저장소를 업로드 하는 곳(우리가 사용하는 GitHub 저장소) 작업 폴더=워킹트리+로컬저장소 Git 저장소 엄밀하게는 로컬저장소를 의미하지만 넓은 의미로 작업 폴더를 의미하기도 한다. git pull : 원격저장소의 변경사항을 워킹트리에 반영.(사실은 git fetch + git merge git fetch [원격저장소별명] [브랜치이름] : 원격저장소의 브랜치와 커밋들을 로컬저장소와 동기화. 옵션 생략하면 모든 원격저장소에서 모든 브랜치를 가져옴 git merge 브랜치이름 : 지정한 브랜치의 커밋들을 현재 브랜치 및 워킹트리에 반영 reset : 스테이징..
MIT 라이센스 : 이 소스를 재가공해서 재배포해도 된다는 비교적 널널한 편의 라이센스 gui git clone : new tab - remote - 저장소 clone amend : 수정 못한 파일이 있어요, 방금 만든 커밋에 추가하고 싶어요 커밋옵션 - 마지막 커밋 정정을 체크하면 확인창. 예. 커밋하면 수정돼 로컬저장소의 변경사항을 원격저장소에 강제로 덮어싀우며 푸시하는 명령은 강제푸시이다. 도구-옵션-git 탭에서 강제 푸시 가능 체크박스 선택. 푸시하면 끝.(저번에 한거처럼 공용 브랜치에는 사용x) cherry-pick : 저 커밋 하나만 떼서 지금 브랜치에 붙이고 싶어요 원하는 커밋에 오른쪽 클릭. 체리픽. reset : 옛날 커밋으로 브랜치를 되돌리고 싶어요 원하는 브랜치에 오른쪽 클릭 - 이..
가정 --- 고양이 : 원본저장소만든 개발자, 너구리 : 고양이가 만든 프로젝트보고 기능 추가하고 싶은 개발자 평생세계를 만드는 branch, 평행우주를 만드는 fork fork는 남의 저장소를 내 계정에 통째로 복제한다. 원하는 저장소를 검색으로 들어가고 오른쪽 위에 있는 fork버튼을 누르면 끝 이제 이걸 클론으로 가져오면 이전 개발자(고양이)가 만든 커밋 히스토리까지 다 보인다. 이제 수정을 하고 커밋을 하자.(대체 작성자 정보 사용으로--커밋 아이디를 살펴보자) 이제 원본저장소에 풀 리퀘스트를 보내자.(이전에 브랜치에서 했던 것과 동일) 원본저장소 주인(고양이)이 원본저장소의 insights 탭을 누르고 fork를 누르면 다른 사람이 포크했다는 것을 알 수 있다. pull request탭을 보면 ..
