반응형

전체 글 93

[시원스쿨 프랑스어 후기] 해외 개발자, 왜 프랑스인가

프랑스어 학습이 나에게 주는 의미 노래 가사 직접 쓴 사진  처음 개발자가 되려 마음을 먹었을 때 부터 변하지 않은 것이 있다면, 해외에서 개발자로서 일하는 것이었습니다. 2024년, 저는 프랑스를 목표로 잡고 실행에 옮겼습니다. 개발자로서 실력이 많이 부족한 것이 사실이지만, 꿈도 못 꿀 것도 없다 생각되었습니다. 프랑스의 혁신적인 기술 환경과 창의적인 분위기 속에서 제 역량을 발휘하고 싶다는 열망은 시간이 지나도 변함이 없었습니다. 진도율 사진   하지만 그 꿈을 이루기 위해서는 반드시 넘어야 할 산이 있었습니다. 바로 프랑스어 실력이었습니다. 프랑스에서 취업하려면 최소한 DELF B2 수준의 프랑스어 능력이 필요하다는 것을 알게 되었고, 그때부터 본격적으로 프랑스어 학습을 시작하게 되었습니다. 처음..

[시원스쿨 프랑스어 후기] 왕초보도 응용하기 쉬운 설명

어느날 갑자기 내가 프랑스어 능력자가 된다면?    대부분 어떤 새로운 것을 시작할 때면, 막연하게 미래를 상상하며 피식할 때가 많습니다. 처음 개발자가 되려 마음 먹었을 때 슈퍼 개발자가 되어 모든 것을 만드는 상상을 했다면, 프랑스어 공부를 처음했을 때, 이런 상상을 했습니다. Paris 시내를 돌아다니면서, 유창한 프랑스어로 내가 원하는 곳에서 원하는 것을 하는 상상. 생각만 해도 행복하고, 내가 멋진 사람이 되어 있을 것만 같은 환상에 웃음이 피식피식 나왔습니다.  2025 Paris Marathon 참가  원래 취미가 마라톤이라 여기저기 대회를 뒤지던 중, 우연히 Pairs Marathon 영상을 보게 되었습니다. 개선문, 에펠탑, 루브르 박물관 등을 휘감고 돌아나가는 코스에 반해서 바로 신청했..

[시원스쿨 프랑스어 후기] 글쓰는 개발자, 프랑스 진출 결심하다

나만의 기발한 공부 방법은?  시작은 역시 결제부터! DELF C1 을 목표로 하다  그저 막연하게 해외에서 개발자로서 일하고 싶다는 꿈을 실천할 때가 왔습니다. 그 첫 단추로써 프랑스에서 개발자로 일할 수 있도록 DELF C1 취득을 목표로 잡았습니다. 프랑스어의 '프'도 모르는데 C1이라니, 너무 무모해 보이지만 그저 여행 가는 것이 아니라 '일'을 하러 가는 것이 제 목표이기 때문에 당연히 목표로 잡았습니다. 그 첫 단추가 시원스쿨 프랑스어 All In One 끝장패키지 결제 후 수강 시작입니다!  왜 시원스쿨 프랑스어였나?  '공짜는 없다.', '시간은 금이다.' 라는 말이 있습니다. 그리고 저는 이 말들을 진리로 믿고 있습니다. '무료', '공짜'와 같은 키워드로 웹서핑 하며 시간도 버리고, 찾..

[2023년 4월 회고] - 리팩토링, 너무 어려운

리팩토링, 디자인 패턴, 테스트 코드 등 개발자라면 어디선가 메아리처럼 들려오고 적용하고 싶고 그렇지만 힘들기도 한 그런 것들 입니다. 핑계 같지만, SI 프로젝트를 처음 TDD로 진행했을 때 실시간으로(프로젝트 마감 1일 전에도) 바뀌는 기획에 하나 둘 씩 추가되는 DB Column들과 그 때 마다 TestCode를 변경해야하는 번거로움으로 인해 첫 번 째 도전은 너무도 쉽게 실패로 끝났습니다. 그리고 리팩토링, 프로젝트가 끝나고 리팩토링 할 때, 그리고 이미 개발된 기능의 기획 변경이 있을 때 혹은 복잡한 경우의 수가 있을 대 테스트 코드를 활용하여 잘 마무리 지었을 때는 조금 자신감도 붙었습니다. 예전에 내가 작성한 소스코드를 보면, 비대해진 BaseClass와 이를 상속 받았지만 제대로 부모 클래..

Django Swagger(drf_yasg) 수정하여 FastAPI + Pydantic 처럼 API문서 자동화 하기

안녕하세요. 글쓰는 개발자 입니다. Frontend와 원활한 협업과 의사소통 비용 감소를 위해 API 문서화를 중요하게 생각합니다. drf_yasg 를 활용해서 Backend에서 쉽게 작성하고, API 문서를 보는 사람이 최대한 편하게 읽을 수 있도록 고민을 많이 했습니다. (참고: Django Swagger 연동하기 1편, 2편) 그러던 어느 날(약 1년 전) FastAPI 를 처음 접하게 되었고 Pydantic을 활용해 endpoint의 argument에 type만 지정해주면 자동으로 문서가 작성되는 것을 보고 신세계라 느껴졌습니다. 편리하다 생각했던 @swagger_auto_schema 데코레이터는 FastAPI를 접하고 '불편한', '한 번 더 작업해야하는' 것이라는 기분이 들었습니다. 그렇게 당..

Backend/Django 2023.05.02

Django Base Model 을 통한 Model 중복 제거 (db_table, primary_key), __init_subclass__

안녕하세요. 글쓰는 개발자 입니다. Django ORM 을 사용하면, 간편하게 Model을 정의하고 강력한 migration 기능 덕분에 손 쉽게 DB에 Table을 생성 할 수 있습니다. 하지만, 아래와 같이 매번 class Meta 코드를 작성하고 db_table을 정의하는 것이 불편하게 느껴졌습니다. 그래서 BaseModel을 만들고 이를 상속 받기만 하면 Model을 생성 할 때 마다 중복 되는 작업을 없앨 수 있도록 하였습니다. 요구 사항은 다음과 같습니다. 1. Model 의 Class name을 "Model" 을 제외하고 snake case 로 변환한 값을 Table name으로 세팅 2. id 는 Auth Increment로 적용 3. Mixin을 활용해 TimeStamped Column ..

Backend/Django 2023.05.02

Django Middleware에서 API 접근 권한 검증하기 (Django, DRF의 request.user 와 Middleware에의 AnonymousUser)

안녕하세요. 글쓰는 개발자입니다. 어플리케이션을 개발하다 보면, 서비스 내 정의된 권한 레벨에 따라 접근 가능한 API가 상이한 경우가 많습니다. Django에서 'request.user' 를 통해 User 객체를 불러오고 권한 레벨에 해당하는 인자를 검증하여 403 Forbidden Error 를 반환 할 수 있습니다. 다양한 방법이 있겠지만, Django Custom Middelware 를 활용해 End Point가 '/admin/' 으로 시작하는 API에 대해 권한 검증하는 방법을 소개 합니다. 그런데 저는 이 과정에서 간단히 Middleware에서 response 객체 생성 이전에 request.user 를 활용해 User 객체를 받아오면 된다고 생각했지만, 지속적으로 'AnonymousUser'..

Backend/Django 2023.05.02

Git prepare-commit-msg 를 통한 commit convention 정착시키기

안녕하세요. 글쓰는 개발자 입니다. prepare-commit-msg 파일을 생성하여, git commit message convention을 정하고, 이를 준수했을 때만 commit이 가능하게 하는 법을 소개합니다. Commit message의 허용되는 Prefix를 정하고 commit 수행 시 message를 검증하고 Convention을 준수하지 않는 경우, 안내 메시지를 출력하는 방법 입니다. 적용 순서는 다음과 같습니다. .git/hooks 확인, prepare-commit-msg 생성 및 권한 부여 .git/hooks/prepare-commit-msg 작성 commit 수행 ------------------------------------------ 2023. 05. 04 추가 --------..

개발환경 구축 2023.04.26

[2023년 3월 회고] - 4월 마지막 주에 쓰는 3월 회고

지난 달 회고를 작성하면서 분명히 습관화 해야지... 해야지... 하면서도 이렇게 늦게 쓰게 되었습니다. 4월 마지막 주에 써버리면 마치 이 회고는 3월 회고가 아니라 3월 ~ 4월 셋 째 주를 포함하는 회고가 될 것 같아서 캘린더와 Gitlab commit log를 보며, 최대한 3월의 느낌을 반영 하려 합니다.(미리 써야겠습니다...) 추후 진행 할 업무에 대한 PoC로써 kubeFlow PipleLine 으로부터 전달받은 Metric을 Kafka Broker로 전달하고 Python Websocket에서 subscribe하여, 클라이언트로 전달하는 기능을 완성했습니다. 그리고 동시에 Elastic Search, Kibana 또한 연동 되었구요. 이 과정에서 저는 Python Websocket으로 Ka..

[Django + Redis + Celery] Python 분산 비동기 작업 큐 (Distributed Task/Job Queue) 튜토리얼

Django, Django RestFramework 를 활용해 웹 어플리케이션을 개발하면서, 처리 시간이 오래 걸리는 API 를 개발해야하는 경우가 있습니다. 처리 시간이 지연되어 사용자의 대기 시간이 길어지면서 사용자 경험은 부정적으로 흘러갑니다. 이런 문제를 해결하기 위해 Celery를 Django app에 포함 시켰고, 사용 방법을 소개 합니다. 튜토리얼 방식으로 진행하며, Python 가상환경 설정 및 Django 설치 부터 차근차근 진행하겠습니다. 본 튜토리얼을 통해, 다음 내용을 얻으실 수 있습니다. 1. Celery를 어떤 경우에 사용하는지 2. Django app 에 Celery를 적용하고, Redis 를 Message Broker로 사용하기 3. Celery task_id 를 활용한 ta..

Backend/Django 2023.03.31
반응형