TIL 25

[노마드코더 북클럽] 클린코드 1. 깨끗한 코드

오늘 읽은 범위 1장. 깨끗한 코드 책에서 기억하고 싶은 내용을 써보세요. 깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르면 모습도 봐야 한다. 깨끗한 코드는 읽으면서 놀랄 일이 없어야 한다고 위드는 말한다. 맞는 말이다. 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다. 읽으면서 짐작한대로 돌아가는 코드가 깨끗한 코드다...(중략) 이만큼 깨끗한 코드는 너무나도 잘 짜놓은 코드라 읽는 이가 그 사실을 모르고 넘어간다. 모든 뛰어난 설계처럼..

TIL 2022.02.19

[CS] 면접 준비하며 정리해본 기본 CS

면접을 준비하면서 알아야할 기본적인 CS를 간단하게 정리해보았다. 객체지향 프로그래밍 OOP(Object Oriented Programming) REST API(Representational State Transfer) DNS (Domain Name System) HTTP와 HTTPS 비교 프로세스와 스레드 스크립트 언어와 컴파일 언어 1. 객체지향 프로그래밍 OOP(Object Oriented Programming) SOLID라 불리는 5가지 설계 원칙 1. SRP(Single Responsibility Principle) 단일 책임의 원칙 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어 있어야 한다. 2. OCP(Open Close Princip..

TIL 2021.12.05

업비트 Open API 사용해보기

작고 소중한 돈을 가상화폐에 넣어두고 있는 코린이로서 소소한 이익을 얻고 있던 나는 얼마 전 감정 투자의 위험성을 알게 되었다.(나도 알고싶지 않았다) 크게 잃은 것도 아니고 처음 입금한 돈보다 조금 더 남아있는 상태라서(소소하게 벌었던 이익 정도만 잃음...) 큰 타격은 없었지만 그래도 재발을 방지하기 위해 가상화폐 자동매매봇을 만들어보는건 어떨까 관심이 생겼다. 구글링도 해보고 강의도 하나 결제해서 커리큘럼을 살펴보니 쉽고 재밌게 만들 수 있을 것 같아서 오늘은 업비트 open API를 이용하여 코인 종목과 시세를 불러오는 기능까지만 구현해보려고 한다. https://upbit.com/service_center/open_api_guide 업비트의 open API 안내에 가서 Open API 사용하기를..

TIL 2021.11.07

도커 컴포즈

여러개의 컨테이너를 어떻게 더 편하게 관리할까 하나의 서비스인데 컨터이너를 여러개 사용할 때 하나의 컨테이너에만 이상이 생겨도 큰 장애로 연결될 수 있음 여러개의 컨테이너를 운영하기 위해 도커 컴포즈 생김 하나의 설정 파일로 여러개의 컨테이너 운영 가능 YAML Yet Another Markup Language 데이터 직렬화 템플릿.(ex. json) key/value 구조 대소문자 구분 콜론(:) 뒤 한 칸 떼기 대시(-)로 복수의 값 나열 해시(#)로 주석 작성

TIL 2021.09.29

도커 볼륨

시스템에서 볼륨은 저장소를 의미. 스토리지 스토리지에 저장된 데이터는 램에 저장된 것과 다르게 휘발되지 않음. 영구적으로 데이터를 유지할 수 있다. FastAPI에서 PostgreSQL로 쿼리 요청하면 데이터 생성, 변경이 일어남 데이터가 보관되는 장소가 필요 저장소를 연결하지 않고 컨테이너만 있으면 컨테이너가 삭제되면 기존의 작업들도 사라짐. 이와 같은 상황을 방지하기 위해 도커 볼륨이 있음. 바인드 마운트, 볼륨 컨테이너 내부에서 작업했던 데이터를 영구적으로, 혹은 일정기간동안 보존하기 위해 호스트의 공간을 마운트 하는 것 -> 호스트 공간의 일부를 컨테이너에서 USB메모리처럼 사용. 호스트의 특정 경로를 컨테이너의 볼륨으로 활용하는 것을 마운트라고 함 바인드 마운트를 사용하면 호스트의 파일 시스템의..

TIL 2021.09.24

도커 네트워크

여러 컴퓨터들과 연결된 거대한 통신망을 인터넷이라고 함. 도커 엔진에서 구동되는 컨테이너들도 네트워크를 통해서 호스트와 연결되어 있음 호스트의 NIC(Network Interface Controller) - 랜카드 NAPT 호스트에서 도커 컨테이너들과 통신하기 위한 것 인터넷은 수많은 LAN이 모여서 구축된 WAN. IP 자원은 한정되어 있음. 그 문제를 해결하기 위해 디바이스에는 priviate IP 할당, 라우터에서 공인 IP와 맵핑해서 인터넷 망과 통신할 수 있게 많듦. 공인 IP 하나를 가지고 여러 디바이스들이 통신할 수 있게 됨(Network Address Translation) NAPT는 NAT에서 확장된 개념. IP뿐만아니라 Port 포함. docker0(virtual bridge) 각각의 ..

TIL 2021.09.14

[삽질기록] Unit test 자동화하기 step2

아래의 링크에 이어서 쓰는 글이다. [삽질 기록] Unit test 자동화하기 step1 작은 규모의 회사이다보니 아직 unit test가 없다. 규모가 더 커지기 전에 만들기 시작하는게 좋은 것 같다는 의견은 항상 있었지만 막상 우선 순위가 있는 task들을 하다보면 unit test를 만들기가 쉽 jellyfishdeveloper.tistory.com 들어가기 전 TMI를 하자면 이 글은 step1을 쓸때만 해도 코드를 발전시키면서 여러개의 글을 업데이트하려고 했지만 회사가 9월까지만 운영하고 문을 닫게 되면서 추가적인 코드는 업데이트하지 않게 되었다. 슬프게도 정말 삽질기록이 되어버렸지만 삽질을 통해서 그래도 많이 배울 수 있는 것 같다! 지난 글의 마지막 부분에서 썼듯 새로운 목표는 프로젝트 전체..

TIL 2021.09.11

도커 레지스트리

클라우드의 레지스트리 보안, 배포 효율(CI, CD)을 위해 기업의 레지스트리 사용 AWS, Google, Oracle 등... ECR(Amazon Elastic Container Registry) CI(Continuous Integration) 지속적 통합 빌드와 테스트가 자동으로 수행되고 난 후 개발자가 수정 사항을 중앙 저장소에 정기적으로 머지. 자동화 서비스와 개발 문화를 포괄한 개념 -> 버그를 조기에 탐지하고 신속한 디버깅 가능 -> 가용자에게 더 나은 서비스 경험 제공 CD(Continuous Delivery) 지속적 전달 운영 환경에 배포할 소스코드가 자동으로 세팅 빌드 이후 변경 사항을 테스트 및 운영 서버에 배포 테스트 환경을 통적으로 생성 가능 -> 배포 자동화를 통한 효율성 증대 -..

TIL 2021.09.06

Week3 도커 이미지

도커 허브 도커엔진에서 기본적으로 참조하는 이미지 저장소 컨테이너는 ip가 독립적으로 존재. 버전을 다르게 하는 것 - 이미지에 태깅 한다. sudo docker image pull ubuntu:latest ubuntu: 이미지 latest: 태그 이미지를 pull 할때 tag 명시하지 않으면 latest Digest: 도커 허브와 같은 레지스트리(이미지 저장소)에 업로드 될 당시에 등록된 고유 id 도커 이미지 확인 docker image ls 개별 이미지 정보 확인 docker image inspect ubuntu:18.04 개별 이미지 중 일부 정보만 확인 docker image inspect --format="{{ .RepoTags }}" ubuntu:18.04 도커허브에 이미지 올리는 양식 do..

TIL 2021.09.03

[삽질 기록] Unit test 자동화하기 step1

작은 규모의 회사이다보니 아직 unit test가 없다. 규모가 더 커지기 전에 만들기 시작하는게 좋은 것 같다는 의견은 항상 있었지만 막상 우선 순위가 있는 task들을 하다보면 unit test를 만들기가 쉽지 않았다. 큰 규모의 업데이트가 끝나고 각자 해보고 싶은 프로젝트에 대한 이야기를 나눴는데 나는 아무래도 해본 적이 없었던걸 배워보고 싶어서 Unit test라고 말했다.(막상 해보니 넘나 어려운 것...또르르...) 테스트 코드를 작성해본 경험이 없고 몇달 전 사수분이 이직하셔서 회사에 백엔드가 나밖에 없는 상황에서 조언을 구할 곳이 많이 없는 점이 어려웠다. 그래도 다행히 이직한 사수분이 일주일에 한번씩 멘토링을 해주셔서 궁금한 점들을 여쭤볼 수 있었다. FYI. Django, python,..

TIL 2021.08.27