개발자 15

간단한 원칙으로 좋은 HTTP API 만들기

개요 REST API라는 용어는 자주 사용하고, 면접 시에도 자주 질문을 받아서 면접 전에 해당 내용을 정리하고 가는 경우가 많습니다. 하지만, 막상 실무에서는 REST API의 복잡한 내용을 기억하기보다는 간결한 원칙들을 기억하고 지키는 것이 중요한 경우가 많습니다. 그래서 이 글에서 REST API를 간단히 훑어본 후 RESTful API는 아니지만 좋은 HTTP API를 만들기 위해 핵심적으로 기억해야 할 몇 가지를 정리하려고 합니다. REST API란? RESTful API는 아니더라도 REST API의 내용을 이해하고 필요한 부분을 이해하고 지키는 것은 중요하기 때문에 한 번 내용을 정리하고 가려고 합니다. API는 하나의 Application이나 서비스가 다른 Application의 서비스 내..

BigQuery Merge Query 설명 및 사용 사례

이번 글에서는 Merge 쿼리에 대한 설명과 Merge문의 대표적 사용 사례인 Merge쿼리를 사용해서 MySQL BigQuery 간에 데이터 웨어하우징에 사용하는 사례를 함께 기록해 보려고 합니다. 계속 변경되는 데이터 소스를 기존의 데이터셋에 정기적으로 통합해야 할 때 자주 사용됩니다. Merge 쿼리 BigQuery에서 MERGE 쿼리는 SQL의 MERGE 문을 기반으로 하며, 두 개의 테이블을 결합하여 대상 테이블에 소스 테이블의 데이터를 삽입, 업데이트, 또는 삭제하는데 사용됩니다. 이것은 일종의 "upsert" 작업으로 보일 수 있으며, 즉 존재하지 않는 행은 삽입하고 존재하는 행은 업데이트하는 기능을 제공합니다. 위에서 설명한 것처럼 조건에 따라 삽입, 업데이트, 또는 삭제가 가능하기 때문에..

Django CORS 관련 설정하기 / django-cors-headers

웹 개발을 하다보면 CORS(Cross-Origin Resource Sharing)와 같은 보안 이슈들이 흔히 발생합니다. 이는 브라우저가 서로 다른 호스트(도메인) 간의 자원 공유를 제한함으로써, 웹 애플리케이션의 보안을 강화하는 중요한 기능입니다. 이러한 제한의 근본적인 이유는 보안 취약점을 방지하기 위함인데, 예를 들어, CSRF(Cross-Site Request Forgery)와 같은 공격에서는 악의적인 웹사이트가 사용자의 브라우저에 저장된 인증 정보를 이용하여 다른 사이트에 요청을 보내는 행위를 막기 위함입니다. 데이터 엔지니어로 전향한 후에 오랜만에 서버 개발을 하려고 했더니 개념이 정확히 기억도 안 나고 사실 오랜만에 세션으로 인증을 구현할 일이 있어서 조금 헤맸습니다. CORS, CSRF,..

의존성 역전 원칙(DIP) 예제 코드 및 설명

의존성 역전 원칙(DIP ) 의존성 역전 원칙(Dependency Inversion Principle, DIP)은 객체 지향 설계 원칙 중 하나로, 시스템의 고수준 모듈이 저수준 모듈에 직접적으로 의존하는 것을 피하고, 대신 둘 모두가 추상화에 의존하도록 설계해야 한다는 원칙입니다. 이 원칙은 SOLID 원칙 중 하나로, 특히 대규모 소프트웨어 시스템의 유지 보수성과 확장성을 향상시키는 데 중요한 역할을 합니다. DIP의 주요 내용은 다음과 같습니다: 고수준 모듈은 저수준 모듈에 의존해서는 안 됩니다. 둘 다 추상화에 의존해야 합니다. 추상화는 세부 사항에 의존해서는 안 됩니다. 세부 사항이 추상화에 의존해야 합니다. DIP를 지키지 않았을 때의 문제 문제점: 코드의 재사용성이 떨어진다. 인터페이스(추상..

남해 워케이션 2주차!

벌써 남해에서 서울로 돌아온지 일주일이 거의 되어간다... 원래 하루에 하나의 포스팅을 하려고 했지만 2주차에는 주로 일을 많이 하느라 다른 활동을 한게 많지 않다....그래서 하루 하루 기억에 남는 것들 위주로 짧게 정리해 보려고 한다. 7월 11일 월요일 (9일 차) - 남해 최고 지압원, 문어라면! 월요일에는 오후에 업무가 끝나고 남해에 유일한 마사지샵인 남해 최고 지압원에 갔다. 나만의 힐링 방법 중에 하나가 마사지이기 때문에 새로운 곳을 여행하면 항상 마사지샵에 방문하는데 남해에는 마사지샵이 거의 없었다. 한 군데는 조금 이상해(마사지 샵이 아닌 것 같아서...) 남은 한 곳인 최고 지압원에 방문을 해봤다. 후기가 거의 없어서 살짝 불안했는데 마사지사분이 기부를 했다는 기사를 보고 방문을 했다...

남해 워케이션 6일차(feat. 렉시오)

워케이션의 시간은 빠르게 지나간다! 벌써 9일 차 밤이다...! 이제 6일 차를 정리 중인데ㅠㅠ 평일에는 색다른 것을 하기는 힘들지만 중간중간에 바다를 보며 멍을 때리거나 점심을 먹고 산책을 하면서 보는 풍경만으로도 위로가 된다. 오전에는 별다를게 없이 일을 했다. 미팅에 참석하고, 새로운 프로젝트를 준비하기 위해서 여러가지 자료를 체크하고 백그라운드 지식을 읽어나갔다. 점심을 일식면예찬에서 먹고, 돌창고 프로젝트로 오후 근무를 하러 차를 타고 갔다. 생각보다 사람이 많았는데 창가자리에 잘 자리를 잡아서 업무를 편하게 할 수 있었다. 오후 업무를 잘 마치고, 다시 숙소로 복귀 했다. 유튜버 놀이 복귀 하기전에 카페에서 잠깐 어제 구입한 셀카봉으로 유튜버 놀이를 해봤다 ㅋㅋ 혼자 카메라 들고 혼잣말 하는 ..

남해 워케이션 5일차(feat. 소소한 하루)

워케이션 5일 차 벌써 워케이션 5일차다. 먼가 이것 저것 하다 보니 하루가 일찍 간다. 전 날 조금 늦게 자서 이 날은 새벽 요가 클래스를 나가지 못했다. 하지만 조식은 놓칠 수 없지..! 남해 워케이션 조식 클라스! 남해 워케이션에서 일과 휴식을 잘 병행할 수 있는 이유는 호스트인 강수님께서 일에만 집중할 수 있게 액티비티들을 모두 arrange해주시고, 아침 기타 모든 부분들을 챙겨주시기 때문인 것 같다! 그냥 혼자 워케이션을 가면 혼자 이것 저것 알아보고 챙겨야 하기 때문에 아무래도 일에 영향을 주는데 호스트분이 있기 때문에 일에도 집중하면서 좋은 액티비티들을 할 수 있게된다. 이 자리를 빌어 강수님께 다시 한 번 감사!! 앞으로 계속 감사할 예정! 5일 차는 특별히 다른 활동은 한 게 없고, 업..

남해 워케이션 4일차 (feat. 요가, 아난티)

남해 워케이션 4일차는 새벽요가와 러닝으로 시작했다. 경진님께서 정말 감사하게도 요가클래스를 만들어주셔서 아침에 가능할 때 마다 요가를 배울 수 있게 됐다. 바쁘신 와중에도 시간과 가르침을 주신 경진님께 이 자리를 빌어 다시 한 번 감사를! 20분에서 30분 정도의 짧은 시간인데도 땀이 정말 많이 난다. 조금 힘들었지만 몸을 늘릴 때 시원해서 그 느낌이 너무 좋았다. 수축과 이완을 반복하는 느낌인데 유연성이 없어서 힘든 동작도 너무 많았다. 요가가 끝나니깐 6시 30분이었는데 바로 러닝을 하러 갔다. 약간 습한 날씨 때문에 땀이 비오듯이 났다. 워낙 개발이 정적인 업무라서 이런 동적인 활동들을 하면 기분이 개운하다! (과장해서 살아 있는 느낌...) 바닷가 쪽보다는 동네 길에 익숙해지기 위해서 동네 위주..

켄싱턴 설악 밸리 - 속초, 고성 워케이션

Intro 5월 23일 부터 28일 까지 켄싱턴 설악 밸리로 회사에서 워케이션을 다녀왔다. 업무는 오전 10시 부터 오후 5시까지 진행하고, 나머지 시간들은 관광지를 둘러보거나 산책을 하거나 회사 분들과 시간을 보냈다. 또, 하루는 팀 휴가를 내고 스노쿨링도 하고 바다에 자리를 펴고 짜장면도 먹고, 서점도 가서 책도 사는 시간을 가졌다. 휴가 날 바닷가에서 먹은 짜장면 아직도 생각난다...! 역시 음식은 맛도 중요하지만 분위기도 한 몫 하는 것 같다 ㅎㅎ 또, 영랑호 그리고 강릉 안반데기등도 다녀오고, 고성의 유명한 백촌 막국수도 먹어봤다! 무엇보다 재택 근무로 평소에 자주 못보던 팀원들 그리고 일부 회사분들과 가까워질 수 있어서 보람차고 알찬 시간이었다! 추억을 남기기 위해서 가장 좋았던 장소/액티비티..

일상 2022.06.20

Fluent Python Chapter 21. 클래스 메타프로그래밍

Introduction 21장은 클래스 메타프로그래밍입니다. 런타임에 클래스를 생성하고 변경하는 프로그래밍 방법을 의미합니다. 파이썬 Guru개발자들을 프레임워크를 만드는것이 아니면 해당 기능을 사용하는 것을 권장하지 않습니다. 해당 기능이 주는 편리함보다는 해치는 가독성이 더 크기 때무일 것 같습니다. 인터프리터단에서 동작하는 부분이 많을수록 파이썬으로 어플리케이션을 주로 개발하는 개발자들에게는 가독성이 좋지 않을 수 있습니다. 해당 장에서는 클래스를 생성하는 함수를 이용해서 클래스를 만드는 것을 시작으로 클래스 데커레이터, 임포트 타임과 런타임, 메타클래스에 대해서 살펴봅니다. 지난 장에서 descriptor 객체의 storage_name이 구분하기 어려웠던 것들을 클래스 데커레이터와 메타클래스를 사..

반응형