커맨드 라인을 활용해서 파이썬 파일을 실행해보겠습니다. 이번 토픽에서는 IDE를 사용하지 않고, 여러 기능들이 동작하는 원리를 파악하기 위해서, CLI를 활용해보겠습니다. 1. 파이썬 파일 실행 터미널을 키면 항상 홈 디렉토리에서 시작합니다. 현재 디렉토리를 확인하는 명령어는 pwd입니다. pwd 여기서 cd 커맨드를 이용해서 Desktop으로 이동합니다. cd Desktop 여기서 하나의 파일을 만들겁니다. touch hello.py hello.py 파일을 수정하고, 해당 명령어로 파이썬 파일을 실행합니다. python3를 꼭 붙여주는 이유는, 2로 실행될 수도 있기 때문입니다. python2가 맥북의 내장으로 남아있는 이유는, 일부 코드가 python2로 돌아가고 있기 때문입니다. python3 he..
개발 환경 코드를 작성할 때나 실행할 때 영향을 주는 요소들 운영체제 텍스트 에디터나 IDE 특정 언어 버전 프레임 워크, 라이브러리, 패키지 + 버전 컴퓨터 사양 같은 프로그램을 다른 환경에서 실행한다면? 누군가는 파이썬 2.7을 누군가는 파이썬 3.8로 개발한다면, 같은 코드를 공유해도 오류가 날 수 있습니다. 해당 환경을 조정하는 과정에서, 한 프로젝트에 협업하는 여러 개발자들이 최대한 비슷한 환경으로 작업하면 좋습니다. 협업 할 때 뿐만 아니라, 어떤 프로젝트인지에 따라 적합한 환경을 적용할 수 있으면 좋습니다. 파이썬 버전 + 파이썬 패키지 -> 파이썬 환경이라고 합니다. 이번 포스팅의 카테고리에서는 이 파이썬 환경에 대해서 공부해보겠습니다. 파이썬과 파이썬 패키지 작동 원리 파이썬과 파이썬 패..
이번 포스팅에서 다룰 내용은 Python Extension과 가상환경 관련 부분입니다. 0. 개념 정리 Homebrew (Brew): Homebrew는 macOS 및 리눅스 운영체제에서 패키지 관리를 위한 명령줄 도구입니다. 주로 운영체제 수준에서 소프트웨어나 패키지를 설치, 업데이트 및 관리할 때 사용됩니다. 예를 들어, Homebrew를 사용하여 Git, Python, Node.js 등을 설치하거나 관리할 수 있습니다. Pyenv: Pyenv는 여러 버전의 Python을 관리하고 프로젝트마다 다른 Python 버전을 사용할 수 있도록 도와주는 도구입니다. Pyenv를 사용하면 시스템 전체의 Python 버전을 관리할 수 있고, 필요에 따라 각 프로젝트마다 다른 Python 버전을 사용할 수 있습니다...
VS 코드 삭제 먼저 기존의 환경이 설치된 분들을 위해 VSCODE를 완전히 지워줍니다. 1. 응용프로그램에서 VSCODE를 휴지통으로 옮긴 후에 휴지통을 비워줍니다. Finder를 활용하면 됩니다. 2. macOS에서 VSCode의 도우미(helper) 설정 파일인 com.microsoft.VSCode.helper.plist를 삭제합니다. rm -fr ~/Library/Preferences/com.microsoft.VSCode.helper.plist 3. VSCode의 주 설정 파일인 com.microsoft.VSCode.plist를 삭제합니다. rm -fr ~/Library/Preferences/com.microsoft.VSCode.plist 4. VSCode의 캐시 파일을 삭제합니다. rm -fr ..
사실 어떤 고급스러운 말이나, 교양 있게 저를 표현하는 것에 서툽니다. 미래의 나에게 데이터는 거짓말쟁이다. 수집되다가 거짓말을 치고, 가공하다가 거짓말을 치고, 적재되어서까지 거짓말을 한다. 그나마 믿을만 한게 raw 데이터다. raw 데이터를 가공할 때 최대한 간단한 로직으로 구성하자. raw 데이터도 못 믿겠으면, 적어도 파이프라인 어느 한 곳에서 신뢰할 수 있고 간단한 '거름망' 작업이 필요하다. 문제 해결은 최대한 간단하게 시스템 가뜩이나 크다. 어떤 기능을 추가하는 것보다 빼는게 더 어렵고, 장기적으로 시스템을 가볍게 해야한다. 추가 하기보단 덜어내고, 있는 걸로 쓰는 방법이 가장 우선이다. 예외 처리는 웬만하면 쓰지말자 모르는 에러가 나면 터지는게 맞다. 대응을 그 시점에 당장 못한다면, 로..
상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 (거의 사용하지 않음) 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 만약 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태코드를 서버가 변환하면? 클라이언트는 상위 상태코드로 해석해서 처리 미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨 예) 299 ??? -> 2xx (Suc..
HTTP API - 컬렉션 POST 기반 등록 예) 회원 관리 API 제공 HTTP API - 스토어 PUT 기반 등록 예) 정적 컨텐츠 관리, 원격 파일 관리 HTML, FORM 사용 웹 페이지 회원 관리 GET, POST만 지원 대부분 POST 기반의 리소스 등록 시스템을 사용한다(클라이언트가 리소스 URI를 몰라도 되기 때문이다. 회원 관리 시스템(API 설계 - POST 기반 등록) API 설계 - POST 기반 등록 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST PUT은 기존 것을 지우고 덮어버린다. 그래서 PATCH가 나왔는데 이는 부분 수정..
오늘은 초기 설정만 해두면, 굉장히 사용하기 편한 ESLint와 Prettier를 동시에 코드 저장과 함께 자동으로 사용할 수 있는 방법에 대해 포스팅하겠습니다. ESLint & Prettier 먼저 ESLint와 Prettier를 같이 사용하면서, 해당 차이점을 알아야합니다. ESLint는 Linter이고, Prettier는 Formatter입니다. ESLint와 같은 Linter는 소스코드에 문제가 있는지 검사하고, 문제가 있는 부분에 flag를 달아주는 소프트웨어 도구를 말합니다. Prettier와 같은 Formatter는 소스코드를 일관된 스타일로 작성할 수 있게 코드를 변환해주는 소프트웨어 도구입니다. ESLint & Prettier 함께 사용하기 이 둘은 함께 사용해서 문제가 없을 것 같지만,..
진짜 데이터 엔지니어가 된지 거의 두 달이 되었습니다. 처음에 합격 통보가 왔을 때부터 아직도 꿈에 살고 있는 것 같습니다. 정신 없이 회사 일을 배우고, 기술을 배우다보니 시간이 훌쩍 지나갔는데, 이 과정에서 제가 많이 성장했다는 것도 느낍니다. 조금 더 소프트웨어 자체를 넓게 보게 된 것 같고, 그 안에서 쓰이는 세부 기술들도 어떻게 활용해야하는지 많이 배우고, 익숙해졌습니다. 데이터 파이프라인이나, 데이터웨어하우스 관련 기술들에 대해 해보고 싶다는 생각을 많이 했는데, 지금은 CS 지식과, 소프트웨어 설계 이런 것들에 자연스레 더 관심이 많은 것 같습니다. 기초가 튼튼하면, 이해하는게 달라진다고 했었는데, 확실히 기반 지식을 하나하나 배울 때마다 왜 이렇게 코드를 짰는지, 왜 나는 이런 코드 리뷰를..
클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지 쿼리 파라미터를 통한 데이터 전송 GET 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 4가지 예시 정적 데이터 조회 : 쿼리 파라미터 미사용 이미지, 정적 텍스트 문서 조회는 GET 사용 정적 데이터는 일반적으로 쿼리 파라미터 없이 단순 조회 가능 정적 데이터 조회 : 쿼리 파라미터 사용 주로 검색, 게시판 목록에서 정렬 필터(검색어) 조회 조건을 줄여주는 필터, 조회 결과를 정렬하는 정렬 조건에 주로 사용 조회는 GET 사용 GET은 쿼리 파라미터 사용해서 데이터를 전달 HTML Fo..
안전(Safe Methods) 멱등(Idempotent Methods) 캐시 가능(Cacheable Methods) 안전(safe) 호출해도 리소스를 변경하지 않는다.(GET,HEAD 등) Q : 그래도 계속 호출해서, 로그 같은게 쌓여서 장애가 발생하면요?? A : 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다. 멱등(Idempotent) f(f(x)) = f(x) 한번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다. 멱등 메서드 GET : 한번 조회하든, 두 번 조회하든 같은 결과가 조회된다. PUT : 결과를 대체한다. 따라서 같은 요청을 여러 번해도 최종 결과는 같다. DELETE : 결과를 삭제한다. 같은 요청을 여러번해도 삭제된 결과는 똑같다. POST : 멱등이 아..
PUT 리소스를 대체 리소스가 있으면 대체 리소스가 없으면 생성 쉽게 이야기해서 덮어버림 중요! 클라이언트가 리소스를 식별 클라이언트가 리소스 위치를 알고 URI 지정(/members/100) POST와 차이점 PATCH 리소스 부분 변경 PATCH가 지원이 안되는 서버도 있긴하다(요즘은 거의 있다). 그런 경우에는 POST를 쓰면 됩니다. DELETE 리소스 제거