728x90
6장. 객체와 자료구조
 - 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

 - 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.

 - 절차적인 코드는 기존 자료구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.

 - 절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다. 객체지향코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.

 - 디미터의 법칙은 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. 객체는 자료를 숨기고 함수를 공개한다. 즉, 객체는 조회 함수로 내부구조를 공개하면 안된다는 의미이다.

 - 자료구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다. 이런 자료 구조체를 때로는 자료전달객체라 한다.

 - 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료구조와 절차적인 코드가 더 적합하다.

[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90
5장. 형식 맞추기
 - 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수와 확장성에 영향을 미침을 명심하자.

 - 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다.

 - 서로 밀접한 개념은 세로로 가까이 둬야한다. 물론 두 개념이 서로다른 파일에 속한다면 규칙이 통하지 않는다. 하지만, 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다.

 - 변수는 사용하는 위치에 최대한 가까이 선언한다.

 - 한 함수가 다른 함수를 호출한다면, 두 함수는 세로로 가까이 배치한다. 그러면 프로그램이 자연스럽게 읽힌다.

[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90
4장. 주석
 - 나쁜 코드에 주석을 달지마라. 새로 짜라

 - 우리는 코드로 의도를 설명하지 못해, 즉 실패를 만회하기 위해 주석을 사용한다. 주석은 언제나 실패를 의미한다.

 - 주석은 오래될수록 코드에서 멀어진다. 오래될수록 완전히 그릇될 가능성도 커진다. 주석을 유지하고 부수하기란 현실적으로 불가능하기 때문이다.

 - 우리는 주석을 가능한 줄이도록 꾸준히 노력해야 한다.

 - 각 소스 파일 첫 머리에 주석으로 들어가는 저작권 정보와 소유권 정보는 필요하고도 타당하다.

 - 앞으로 할 일을 TODO주석으로 남겨주면 편하다.

 - 자칫 대수롭지 않다고 여겨질 뭔가의 중요성을 강조하기 위해서도 주석을 쓰곤 한다.

 - ☆☆함수나 변수오 표현할 수 있다면 주석을 달지마라.

 - 주석을 달아야 한다몀 근처에 있는 코드만 기술하라. 코드 일부에 주석을 달면서 시스템의 전반적인 정보를 기술하지 마라.


[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90
3장. 함수
 - 함수를 만드는 첫 번째 규칙은 '작게'다. 두번째 규칙은 '더 작게'다.

 - 함수는 100줄을 넘겨선 안된다. 아니 20줄도 길다.

 - if, else, while문 등에서 들어가는 블록은 한줄이어야 한다. 즉, 거기서 함수를 호출한다. 대신 그만큼 함수이름을 잘 지어줘라.

 - 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

 - 함수가 한가지만 하는지를 판단하는 방법이 있다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 한수는 여러 작업을 하는 것이다.

 - 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 일련의 문단을 읽듯이 읽혀야 한다.

 - 함수의 이름이 길어도 좋다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. 길고 서술적인 이름이 길고 서술적인 주석보다 좋다.

 - 함수에서 이상적인 인수개수는 0개다. 인수가 생기면 사용자가 인수에 대해 파악해야 한다.
 
 - 인수가 1개인 경우는 대게 인수에 대해 판단(질문)을 던지는 경우다. 혹은 인수를 변환해 값을 반환하는 경우다.

 - 인수가 2개인 경우는 좌표계의 경우가 적절하다.

 - 함수명과 인수가 쌍을 이루면 이해하기 편리하다. write(name);

 - 함수에서 한가지 동작 외에 부수효과가 있다면  제약을 불러온다. 예상치 못한 에러를 일으키기 쉽다.
 
 - 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야한다.

 - 반복하지 마라!

 - 함수를 처음 짤때는 길고 복잡하고, 중복된다. 인수목록도 길다. 하지만, 함수가 완성되고나면 코드를 다듬고, 함수를 (나누어)만들고, 이름을 바꾸고, 중복을 제거하고, 순서를 바꾸어라.

[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90
2장. 의미 있는 이름

 - 의도가 분명하게 이름을 지으라

 - 유사한 개념은 유사한 표기법을 사용하라

 - 읽는사람이 차이를 알도록 이름을 지어라

 - 검색하기 쉬운 이름을 사용하라

 - 한 개념에 공통된 하나의 단어를 고수하라
 
 - 다른 개념에 같은 단어를 사용한다면 그것은 말장난에 불과하다


[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90
1장 clean code

 - 나쁜 코드의 위험을 이해하지 못하는 관리자의 말(빨리빨리)을 그대로 따르는 행동운 전문가 답지 못하다.
 
 - 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 줄여야 유지보수가 쉬워진다. 깨끗한 코드는 단 한가지를 제대로 한다.

 - 깨끗한 코드에는 의미있는 이름이 붙는다.

 - 좋은 코드는 고치려고 살펴봐도 떡히 손 댈 곳이 없다. 작송자가 이미 모든 사항을 고려했으므로, 고칠 궁리를 하다보면 언제나 제자리로 돌아온다.
 
 - 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고여하기
 
 - 개발을 하다보면, 코드를 읽는 시간 대 코드를 짜는 시간 비율이 10대 1을 넘는다. 새 코드를 짜면서 우리는 기존의 코드를 끊임없이 읽는다. 따라서, 읽기 쉬운 코드가 매우 중요하다.


[출처] 클린코드 - 로버트C.마틴 지음
728x90
반응형
728x90

정말 귀찮아서 포스팅 안하려고했는데


저 처럼 쓸데없이 시간을 보낼지도 모르는 여러분을위해 포스팅합니다.


내용은 cafe24 node.js호스팅의 및 push, 실행까지 모든내용입니다.


캡쳐는 귀찮아서 생략합니다.


text로 자세히 설명하겠습니다.


[ 2019. 01 .23 - 포스팅 이용자가 많아 글을 업데이트 하였습니다. ]


1. cafe24 회원가입

https://www.cafe24.com/




2. cafe24 로그인

계정이 없다면 회원가입을 하도록 하자

https://user.cafe24.com/join/hosting/




3. cafe24 node.js 호스팅 신청하기

호스팅시에 등록하는 아이디 패스워드 ftp암호 등은 잘적어두자.

FTP접속을 위해서는 서버의 주소가 필요하다. 

하지만, 필자가 이용할때 기준으로 nodejs호스팅은 서버IP를 별도로 표기해두지 않았다.

tip을 주자면 고객센터에 타당한 이유를 제시하며 IP를 알려달라고하면 알려준다.




4. 로컬환경에 git 및 source tree설치

개발자라면 대부분 설치되어 있겠지만 혹시 없다면 설치하자.

https://git-scm.com/downloads


git을 다루는데 능숙하다면 Source tree는 필요 없을수 있다.

아니라면 설치하도록 하자.

https://www.sourcetreeapp.com/





5. 로컬환경에 node.js설치

windows 이용자라면 아래의 링크에서 설치할 수 있다.

https://nodejs.org/ko/


linux 계열의 os 이용자라면 아래의 링크를 참고하자.

https://github.com/nodesource/distributions/blob/master/README.md

위의 링크는 설치 가이드라인이다.




6. express-generator

이는 필수는 아니며 본 예제에서 사용할 nodejs with express 개발환경이다.

간단히, 웹서버를 만들어 올리는것도 상관없다.


아주 간단히 웹서버를 생성해 nodejs 호스팅을 테스트해보고자 한다면 아래의 코드를 복붙하고 아래 단계들을 뛰어넘도록 하자.

(9번으로 이동)


express 정도는 설치해주자.

[ npm install express ] 


const express= require('express');
const app = express();
app.listen(8001, () => {
console.log('server is runnin on port 3000');
});



다시 본론으로 들어와 express-generator를 이용해보자.


터미널(명령프롬프트, git-bash, power shell 등)을 아무거나 킨다.

express와 express-generator를 전역으로 설치해준다.


[ npm install -g express express-generator ]


express-generator를 통해 기초적인 환경을 한번에 세팅해버리자. 

view template으로로써 pug(jade의 최신버전)를 지정합니다.


[ express abc-view==pug ]

여기서 abc는 폴더명(프로젝트명)이 됩니다. 아무거나 해주세요.




7. 프로젝트 구조조정

생성된 프로젝트를 조금 손봐야한다. 잘 확인해두도록 하자.

아직까지도 왜이런 현상이 발생했는지는 의문이다.

다만, 나는 오랜시간 삽질을 했기에 그런일을 하는건 나만으로 끝냈으면 싶다.


express-generator로 프로젝트를 생성했다면 bin폴더 아래의 www가 보일것이다..

해당파일에서 var port = normalizePort(8001); 다음과 같이 포트를 잡아주세요.

개인별로 할당받은 포트는 다를수있으니 한번 확인해보도록 하자. 

cafe24 나의 서비스현황>앱생성관리에서 볼 수 있다.


www의 파일명을 web.js으로 바꿔준다. 

이것은 cafe24가 기본 서버실행파일을 web.js만 인식하기에 불가피한 부분이다.


이름을 바꿧다면 bin폴더 밖으로 파일을 꺼낸다. 즉 ,루트디렉토리 바로 아래로 위치를 바꾸란 얘기다.

쓸데없는 bin폴더는 지워버리자.

pakage.json에서 start 부분을 node ./web.js로 바꿔준다.


이런 번거로운 수고를 하는이유는 호스팅서버에서 bin/www.js를 인식하지 못하여 자꾸 에러를 반환했기 때문이다.

삽질끝에 이러한 방법으로 해결을 하였다.




8. View template 설정 재확인

터미널에서 npm install을 한번 해주자. package.json에 정의되어있는 의존성 모듈들을 업데이트 및 설치할 수 있다.

혹시 generator를 쓸때 pug가 아니라 jade가 설치되었다면 pug를 설치해주자. (npm install pug)

이유는 없다. 필자 마음이다.


필요없어진 jade는 지워준다. (npm uninstall jade)

view폴더의 .jade는 모두 .pug로 확장자도 바꿔주자.

마지막으로 template설정을 한다.

app.js에서 app.set('view engine', 'pug'); 으로 변경




9. Public Key 발급

cafe의 Nodejs호스팅을 이용하기 위해서는 Public Key가 필요하다.

터미널에서 ssh key-gen 명령어를 입력하자.

입력표시가 나오면 처음에는 그냥 enter!

다음 입력표시가나오면 비밀번호를 설정하는것이니 잘 기록해두도록 하자. 연필로.


다음 입력표시는 비밀번호 확인창이니 다시 같은 비밀번호를 입력.

생성된 Public Key는 윈도우 기준으로 C:\Users\사용자\.ssh 경로에 있다.

텍스트편집기를 통해 id_rsa.pub의 모든 내용을 복사해둔다.




10. Cafe24의 Nodejs 호스팅에 Public Key 등록하기

Nodejs호스팅 내 서비스의 Public-Key관리에서 입력란에 복사한 놈을 붙여넣어주고 key이름으로 적절한 네이밍을 해준다.

저장하고 앱생성관리로 이동.

앱생성관리에서 해당 프로젝트에 키를 부여합니다.





11. 대망의 소스코드 업로드 차례

소스트리를 켜고 New tab > create

아까전에 생성된 프로젝트를 지정


상단 제목표시줄에서 저장소 > 저장소설정으로 이동

cafe24의 앱생성관리에서 [저장소]부분을 쭉 복사해다가 저장소설정에 붙여넣어준다. 

'git '여기 부분은 뺴고


이름은 대충 origin정도로 붙여서 저장

상단 제목표시줄에서 도구 > ssh-key추가에서 C:\Users\사용자\.ssh 경로의 id_rsa (.pub 아님, 주의)를 추가한다.

도구 > 옵션에서 ssh클라이언트가 opensssh로 되어있어야한다. 주의하세요.


이 때 주의할점이 있다. 우리가 git으로 프로젝트를 관리할 떄, .gitignore를 통해 node_modules를 빼고 업로드 하곤 한다.

하지만, Nodejs호스팅을 이용할때는 그러면 안된다. (필자가 확인한 바로는)

이유는 SSH접속을 통해 npm install과 같은 명령어로 서버에서 직접 의존성모듈을 설치하는것이 불가능하기 때문이다.

SSH접속이 되는지 안되는지는 불확실하니, 고객센터를 통해 확인하자.

따라서, node_modules도 함께 아래의 단계를 진행하자.




12. 커밋 + push

프로젝트의 모든 내용을 커밋하자. 메시지로는 initial commit정도가 적당할 것으로 생각된다.

됐다면 Push.

이 때, 시간이 상당히 소요된다. node_modules의 모듈들을 같이 업로드해버리는 엄청난 행위를 하기 때문이다.




13. 호스팅서버 재실행

cafe24로 이동하여 실행할 차례이다. 

혹시 서비스를 실행중이셨다면 중지 후 재실행 하고, 아니라면 바로 실행해준다.





14. 지정된 도메인을 통해 접속

Cafe24의 지정도메인 말고 자신의 도메인을 등록하고 싶다면 서버의 IP를 알아야한다.

그때는 Cafe24 고객센터에 문의하여 자신의 호스팅서버 IP를 알아내어 등록하도록 하자.





짜짠


잘되죠? 안되면 제 손에 장을지지겠습니다. 연락주세요. 삽질 정말 많이했습니다.






728x90
반응형
728x90

1. 변경된 모든내용 추가

git add -A

 

2. 추가한 내용 commit

git commit -m ~~~

예시) git commit -m 'initial commit' https://github.com/websterking/repo.git


3. 커밋한 사항 푸시

git push 원격저장소 주소

예시) git push https://github.com/websterking/repo.git

 

4. 푸시된 내용 pull

git pull 원격저장소 주소

예시) git pull https://github.com/websterking/repo.git 


5. 프로젝트 가져오기

git clone 원격저장소 주소

예시) git clone https://github.com/websterking/repo.git




**간혹, 권한을 요구할경우 앞에 sudo를 붙여준다

예시) sudo git clone https://github.com/websterking/repo.git

728x90
반응형
728x90

1. Github 가입 > https://github.com


2. 좌측의 Repositories의 New를 통해 새 레포지토리 생성


3. Repository의 이름(필수), 설명(선택)을 작성


4. 공개범위를 선택 (기본은 Publice으로 전체공개, 개인 프로젝트이거나 비공개를 희망하면 Private으로 변경)


5. Create Repository 버튼을 통해 저장소(Repository) 생성 완료


6. 생성후 나타나는 명령어를 저장 혹은 기록

(위는 예시)


7. 로컬(나의 컴퓨터)에 있는 프로젝트 경로에서 Command Line Interface(윈도우의 cmd. powershell, linux mac등의 bash)를 실행


8. 위의 명령어를 순서대로 모두 실행


9. Github에서 정상적으로 첫 커밋이 실행되었는지 확인

728x90
반응형