반응형

안녕하세요 

개발자 헨리입니다.

 

제가 요즘에 프로그래머스에서 진행하는 

Node.js 백엔드 개발 스터디를 참여하며

백엔드에 대해서 공부하고 있습니다.

 

강의를 듣게 된 이유는

저의 최종 목적지는 빅데이터 엔지니어인데,

그곳을 가기 위해, 백엔드는 필연적인 과정이라고 생각이 들었습니다.

회사에서는 Python을 이용한 Fastapi 서버

집에서는 배달의 민족 김영한님의 스프링 완전정복 커리큘럼을 공부하고 있는데,

 

공부라는게 혼자서 하는것보다 여럿이서 같이 하는게 

훨씬 더 재밌고 제가 추구하는 방향과 같아서

앞으로 좋은 스터디들을 찾아서 하려고 합니다.

 

"실무와 가까워지는 Node.js 백엔드 개발(feat,TypeScript)"

 

 

 

# 스터디를 시작하기 전에

3가지 준비물이 필요합니다.

 

- 소통하기 위한 슬랙

- 스켈레톤 코드가 담긴 깃 레파지토리 클론하기

- 매주 목요일 온라인 스터디를 위한 줌 설치

 

 

# 1주차 스터디를 통해서 배운 점

1. 데이터베이스 설계를 먼저 해라

프로젝트를 시작할 때, 우선 데이터베이스 설계를 하는 것이 중요하다.

왜냐하면, 결국 데이터의 형태와 타입에 따라서 프로그램이 설계되기 때문이다.

스터디 리더이신 배달의민족 "송요창" 리더님도 이번 스터디를 통해서

프로젝트에 따른 데이터베이스 선택 방법을 잘 익혔으면 좋겠다고 말씀하셨다.

 

2. 인증과 인가

예전에 면접을 보려던 어떤 스타트업에서 이런 질문을 받았던 적이 있다.

 

"지금 회사에서 Fastapi를 사용해서 API 서버를 운영하고 계시다고 하셨는데,

인증은 어떻게 하고 계세요?"

 

그때 인증에 대해서 제대로 알지 못하고 있었기 때문에, 

답변을 하지 못했다.

 

그런데 이번에 인증과 인가 개념에 대해서 제대로 배울 수 있어 좋았다.

 

인증이란, 너가 누구인지 궁금해 하는 것이고,

인가란, 너가 누군지는 알겠는데, 권한이 있느냐 는 것이다.

 

이번 수업을 통해서 배울 수 있었다.

 

3. 타입스크립트와 자바스크립트의 차이

송요창 리더님께서 타입스크립트와 자바스크립트의 차이에 대해서 명확하게 설명해주셨다.

자바스크립트는, 자료타입이 제대로 명시가 되어 있지 않은 프로그래밍 언어이기 때문에,

이 경우에 타입 처리를 해줄때, 에러를 에러로 보지 않아서, 실제 운영환경에서 많은 에러가 발생한다.

그래서 타입스크립트가 나오게 되었다. 그 결과 기존 프로젝트 개발 테스트 환경에서 80% 에러가 소멸하게 되었다.

타입스크립트는, 자바스크립트와 문법적으로 배우 유사하지만, 각 변수들의 타입들을 명시해주는 것이

특징인 언어이다.

 

# 리더님이 계신 배달의 민족에서도 타입스크립트는 사용하고 계시고,

계속적으로 인기가 많아지고 있다.

 

타입스크립트 관심도 변화

 

4. 파이어베이스의 파이어스토어

파이어베이스는 예전에 개인적으로 채팅 프로젝트를 만들 때, 혼자서 데이터 저장소로 사용했었다.

이번 프로젝트에서는 파이어스토어를 사용해서 진행한다고 한다.

파이어스토어는 JSON 포맷 형식처럼 작성이 가능하다. 자바스크립트만으로 데이터베이스 활용이 가능하고, GUI로 편집이 가능하다. 또한 작은 규모에서는 무료라는 점도 좋은 것 같다.

클라우드 파이어스토어

 

 

# 1주차 다짐

최종적으로 이번에 만들 프로젝트는

커피 주문 프로젝트이다.

 

물론 기존에 스켈레톤 코드를 주시긴 하지만, 그래도 기대가 된다.

 

프로젝트 초기 구동 화면

 

반응형
반응형

안녕하세요!

헨리입니다~~ >___<

 

오늘은 Window 10 컴퓨터에 최신 Java 프로그램을 설치하는 방법을 배워보겠습니다.

 

먼저 필요한 준비물은,

Window 10 컴퓨터와, 인터넷이 접속되는 환경이면 충분합니다.

 

 

저와 같이 따라서 해주시면 됩니다.

 

 

1. 구글에 자바 설치라고 검색합니다.

 

2. 그러면 아래와 같은 화면이 뜰 것입니다.

여기서 오라클 홈페이지로 접속합니다.

다음 링크로 바로 들어오셔도 좋습니다

https://www.oracle.com/java/technologies/downloads/#jdk17-windows

 

 

 

3. 상단의 Java SE를 클릭합니다.

 

 

 

4. Java SE(Standard Edition) 17 버전 다운로드를 클릭합니다.

 

 

 

5. 자신의 OS 버전에 맞는 자바 프로그램을 설치합니다.

저희는 Window 64 버전을 설치할 것입니다.

 

 

 

6. 설치한 파일을 자신이 원하는 폴더로 옮깁니다.

저는 C:\DEV\java\jdk 옮겨서 진행하겠습니다.

저는 이렇게 보통 다운로드 받은 파일을 특정 폴더 안에 모아놓고 관리하는 편입니다^^ㅎㅎ

다운로드 -> C:\DEV\java\jdk

 

 

7. 다운 받은 JDK 파일을 실행합니다.

7-1. Next > 를 클릭합니다.

 

7-2. JDK(Java Development Kit)가 어디에 설치되는지 확인하는 과정입니다.

따로 관리하는 폴더가 없으시다면, 확인 후 Next를 클릭합니다.

 

7-3. 정상적으로 다운로드가 진행중인 것을 볼 수 있습니다.

 

7-4. 다운로드가 성공적으로 마무리 되었습니다.

Close를 누르고 설치를 종료합니다.

 

 

8. 설치한 Java 프로그램을 Window의 Path에 추가해주는 부가 작업이 필요합니다.

그렇지 않으면, 자바를 필요로 하는 프로그램들이 우리가 설치한 JDK(=Java)가 어디에 있는지 알지 못하기 때문입니다.

아까 7-2 단계의 C:\Program Files\Java\jdk-17.0.1 이 경로를 복사합니다.

 

 

 

 

9. Window의 환경변수를 세팅하는 프로그램에 들어갑니다.

Window 키를 누르고, 환경 변수 라고 검색하면 아래와 같은 프로그램이 검색됩니다.

시스템 환경 변수 편집을 누르시면 됩니다.

 

 

10. 환경 변수를 클릭합니다.

 

11. 환경변수에는 사용자변수와 시스템 변수로 나누어져 있습니다.

우리는 여기서 시스템 변수를 편집할 것입니다.

시스템 변수 스크롤을 아래로 조금씩 내리면서 Path 라는 이름의 변수를 찾습니다.

 

그리고 편집을 누릅니다.

 

12. Path 라는 이름으로 다양한 프로그램 위치들이 등록되어 있습니다.

여기에 새로만들기를 클릭해서 아까 복사한 Java 위치를 등록시키면 됩니다.

자바 위치: C:\Program Files\Java\jdk-17.0.1

 

13. 확인을 누릅니다.

 

 

14. 확인을 누르고 나오면 됩니다.

 

 

 

 

======================================================================

 

자 그럼 이제 우리 PC에 Java가 잘 설치되었는지 확인해보겠습니다.

 

15. Window 키를 누르고 CMD 라고 입력합니다.

 

16. 명령 프롬프트 창을 켜서 아래와 같이 SET 이라고 입력해줍니다.

SET이란 현재 시스템 변수로 설정되어 있는 값들을 출력해주는 명령어 입니다.

우리는 여기서 Path 라는 이름으로 C:\Program Files\Java\jdk-17.0.1 이 값이 정상적으로

출력되는 것을 볼 수 있습니다.

 

 

17. 마지막으로 아래의 명령어를 통해 자바가 설치되었는지 확인합니다.

>> java --version

 

아래 사진처럼 17 최신 버전이 출력이 되면 잘 설치가 된 것이고,

java --version 을 입력했을때, java 명령어를 이해하지 못한다면 설치가 안된 것입니다.

설치가 되지 않았을 경우, 위의 과정 중 빠진 부분이 있진 않은지 다시 살펴보시기 바랍니다!

 

 

=====================================================================

 

네, 그럼 오늘도 이렇게 Window에 자바 최신 버전 깔기를 같이 해보았습니다.

 

따라하시다가 잘 안되시는 부분이 있으시면,

댓글로 남겨주시면, 답변드리도록 하겠습니다. 

 

 

 

그럼 오늘도 즐거운 코딩되세요~~~

 

헨리드림

반응형
반응형

주석이 너무 길지도, 너무 짧지도 않은 코드이다.

그러나 주석이 아예 필요하지 않은 가독성이 좋은 코드가 가장 좋은 코드이다.

 

- 생활코딩 이고잉님 - 

 

sublime text를 처음 써봤는데, 간단하고 좋은 툴인거 같다.

 

자바스크립트 강의를 듣다가 끄적.

 

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
	// 아래는 실습용 코드입니다.
	alert(1+2); // 결과 : 3
</script>
</body>
</html>

 

 

반응형
반응형

써먹기 위해 기록하는 글!!

 

 

mac에서 react native 개발환경 구축하는 방법!

 

 

1. homebrew 설치한다.

homebrew는 맥에서 필요한 패키지를 설치하고 관리하는 맥용 패키지 관리자입니다.

>> brew --version 확인해서 없으면 다운로드 받는다.

 

 

2. node.js 설치한다.

React native는 javascript이므로 Javascript 런타임인 node js 필요하다.

>> brew install node

 

3. watchman 설치한다.

특정 폴더나 파일에 변화가 생기는 것을 감지하기 위해 설치한다. 

react-native에서는 소스코드의 추가, 변화가 일어나면 다시 빌드하기 위해 필요하다.

>> brew install watchman

 

4. react native CLI 설치한다.

>> npm install -g react-native cli

 

5. xcode 설치한다.

react-native로 ios 앱을 만들기 위해서 필요하다.

 

6. cocoapods 설치한다.

ios의 의존성 관리자이다.

>> sudo gem install cocoapods

 

7. jdk설치한다.

android 앱 만들기 위해서 필요하다.

>> brew tap AdoptOpenJDK/openjdk

 

8. android studio 설치한다.

react-native로 안드로이드 앱을 개발하려면 안드로이드 스튜디오를 설치해야 합니다. 아래에 링크를 통해 안드로이드 스튜디오 사이트로 이동하고, 설치 파일을 다운로드 합니다.

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~

 

오늘은 파이썬을 통해 서버와 클라이언트를 만들고 통신하는 방법을 공부했습니다.

 

 

최근들어 파이썬 클린코드 라는 책을 읽으면서 

파이썬스러운(Pythonic) 코드를 짜는 것이 얼마나 중요한지에 대해서 깨닫는 중입니다.

 

 

우선 통신이란!

 

서버 - 클라이언트 사이에 데이터를 오고 가는 것을 의미합니다.

 

최소 2개의 Peer가 있어야 하는 것이지요.

 

 

파이썬에서는 socket이라는 패키지를 사용합니다.

 

서버측 플로우

 

1. 먼저 소켓 객체를 생성합니다.

 

2. bind라는 함수를 통해 생성한 소켓을 특정 호스트와 포트에 연결합니다.(길을 만들어주는 느낌으로 이해하면 됩니다.)

 

3. listen이라는 함수를 통해 클라이언트의 접속을 허용시켜줍니다

 

4. accept 함수를 통해 클라이언트의 요청이 올 때까지 기다립니다. (accept는 클라이언트 소켓과 주소를 반환해줍니다.)

>> client_socket, addr = server_socket.accept()= sㅇerver_socket.accept()

 

5. 반환된 클라이언트 소켓(client_socket)의 recv라는 함수를 통해 데이터를 받아옵니다.

 

 

클라이언트측 플로우

 

1. 먼저 소켓 객체를 생성합니다.

 

2. connect 함수를 통해 서버측 소켓과 연결합니다.

 

3. sendall 함수를 통해 메세지를 전송합니다.

 

 

위의 내용을 하나의 그림으로 정리하면 아래와 같습니다.

 

 

아래 블로그를 참고하며 공부하였습니다.

webnautes.tistory.com/1381

 

파이썬 소켓 프로그래밍 - 클라이언트 / 서버 예제

파이썬에서 소켓을 사용한 TCP 서버/클라이언트 예제에 대해 다룹니다. 클라이언트가 서버에 접속하여 통신이 시작되는 방식입니다.  1. TCP 소켓 2. 간단한 에코 서버, 클라이언트 예제 3. 쓰레드

webnautes.tistory.com

 

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다.

 

요즘에 장고를 공부하면서 개발을 하고 있습니다.

 

이때 아래와 같은 상황을 맞을 때 어떻게 해결하는지 기록하려고 합니다.

Error: That port is already in use 

 

상황을 보니

이미 포트가 열려있어 새로 열 수 없는 상황입니다.

 

아래의 명령어로 port 8000와 관련된 프로세스를 모두 죽이고 다시 시작하면 됩니다.

 

sudo lsof -t -i tcp:8000 | xargs kill -9

반응형
반응형

안녕하세요

알로리즘을 공부하는 개발자 Henry입니다~

 

오늘은 pip에서 패키지를 설치하려고 할 때,

패키지 설치가 안되는 현상을 해결하는 방법을 기록하려고 합니다~!!ㅎㅎ

 

 

1. 일단 저는 pip 명령어로 mysqlclient를 설치하고 싶었습니다.

>> pip3 install mysqlclient

 

그랬더니 아래과 같은 에러가 발생하였습니다.

 

OSError: mysql_config not found

파일을 찾을 수 없는 에러 같이 보입니다.

 

2. 그래서 해당 에러를 디버깅 해보았습니다.

아래와 같은 명령어를 입력합니다.

 

>> sudo apt-get install python-dev libmysqlclient-dev # sql 개발 헤더와 라이브러리를 설치해준다.

>> sudo apt-get install python3-dev # 파이썬 라이브러리도 설치해준다.

 

 

3. 위의 sudo apt-get install python-dev libmysqlclient-dev 명령어를 실행하니 아래와 같은 에러가 발생했습니다.

그리고 subprocess가 깨졌다는 오류를 발견하였습니다.

 

error: subprocess paste was killed by signal (Broken pipe)

왜 서브프로세스가 깨졌는지를 보니,

emacs를 설치하려고 했다가 깨진 것 같았습니다.

더보기

dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다 9:14 dpkg: error processing archive /var/cache/apt/archives/emacs26-common_26.3~1.git96dd019-kk1+18.04_all.deb (--unpack): '/usr/.crates2.json'의 덮어쓰기를 시도합니다. 이 파일은 ripgrep 11.0.2-1build1 패키지에도 들어있습니다 dpkg-deb: 오류: 붙여넣기 서브프로세스가 시그널 (파이프가 깨어짐)에 의해 죽었습니다 처리하는데 오류가 발생했습니다:

 

해결하기 위해 아래 명령어를 실행하였습니다.

sudo dpkg -i --force-all /var/cache/apt/archives/emacs26-common_26.3~1.git96dd019-kk1+18.04_all.deb

 

 

 

4. 이제 myslqclient를 다시 설치해보면 정상적으로 동작하는 것을 볼 수 있습니다.

>> pip3 install mysqlclient

 

 

 

이상 개발자 Henry였습니다ㅎㅎ

 

www.youtube.com/channel/UCYYao-BSPaetw7N2GFFJ-Yw

 

Henry Joo

© 2021 Google LLC CEO: 선다 피차이 주소: 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA. 전화: 080-822-1450(무료)

www.youtube.com

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~~!!ㅎㅎ

 

오늘은 클라우드 서비스에서 실행중인 인스턴스(AWS 기준)에 외부에서 접근하도록 하는 방법에 대해서 기록을 해보려고 합니다.

 

1. 먼저 외부 인스턴스에 보안그룹이 있습니다.

보안그룹에서 인바운드 규칙을 아래와 같이 수정해주세요!

 

 

저는 TCP 관련 네트워크를 "모든 TCP" 를 추가해주었습니다.

기존에 생성되어있는 SSH 프로토콜 규칙은 해당 AWS인스턴스에 접근하기 위한 프로토콜입니다

 

 

 

2. 저는 인스턴스에 Django 서버를 열어주었기 때문에

setting.py를 아래와 같이 고쳐줍니다.

 

 

상단에 보시면 ALLOWED_HOSTS에 AWS인스턴스의 *퍼블릭 IP 주소를 추가해줍니다.

ALLOWED_HOSTS는 의미와 같이 허락된 HOSTS로 외부에서 접근가능하게 만들다는 것입니다.

 

 

AWS 인스턴스를 클릭하면 하단에 정보가 나옵니다

이 정보를 입력해주면 됩니다.

 

 

3. 마지막으로 장고 서버를 실행시킬 때 아래와 같은 명령어 옵션을 부여합니다.

 

 

>>python3 manage.py runserver 0.0.0.0:8000

 

0.0.0.0 옵션을 주어 외부의 모든 아이피에서 접근이 가능하도록 만들어 주었습니다.

또한 8000번(장고 기본 포트) 포트를 열어주어 AWS 인스턴스의 ip:8000으로 외부에서 접근이 가능하게 만들어주었습니다.

 

 

4. 모바일이나 다른 외부에서 해당 서버에 접근하였을 때 정상적으로 출력됩니다.

 

 

 

 

이상 긴 글 읽어주셔서 감사합니다~!

모두들 열공하세요~~!!ㅎㅎ

반응형

+ Recent posts