분류 전체보기

    [LeetCode]Roman to Integer

    https://leetcode.com/problems/roman-to-integer/description/ Roman to Integer - LeetCode Can you solve this real interview question? Roman to Integer - Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just tw leetcode.com 문제 분석 로마 숫자를 10진법 정수로 변환하는 문제입니다. 답안 class ..

    [LeetCode]Two Sum

    https://leetcode.com/problems/two-sum/ Two Sum - LeetCode Can you solve this real interview question? Two Sum - Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not leetcode.com 문제 분석 주어진 nums 값에서 두 숫자를 골라 더해 target 값을 만드는 문제입니다. 항상 1개의 answer만이 도출됨..

    앱 스토어 인앱결제 서버 알림 Signature 검증 구현기 (feat. X.509 인증서란?)

    안녕하세요, 오늘은 앱 스토어 인앱결제 시스템 구현을 위해 사용되어지는 App Store Server Notification에서 수신 받는 데이터를 검증하는 방법에 대해서 이야기 해보려고 합니다. https://developer.apple.com/documentation/appstoreservernotifications Apple Developer Documentation developer.apple.com App Store Server Notification 란? 앱 스토어에서 인앱결제에 대한 상태 변화들을 실시간으로 알려주는 Server to Server 서비스입니다. 구매, 취소, 환불, 갱신, 만료 등 인앱결제 상품에서 발생하는 이벤트들을 수신할 수 있습니다. 수신받는 서버는 수신된 데이터를 가지..

    넘블 백엔드 챌린지 - Django 컨트리뷰터와 함께 배우는 빠르고 재미있는 웹개발

    안녕하세요, 블로그 주인장 입니다. 최근에 좋은 기회가 생겨서 넘블이라는 IT 프로젝트 챌린지 플랫폼에서 장고 관련된 챌린지를 오픈하게 되었습니다!! 특히, 현업에서 요구되어지는 비즈니스적 로직들을 구현하는 것에 초점이 되어 있으며 테스트 코드가 익숙하지 않은 분들도 이번 기회에 작성 해보는 것을 주요 챌린지 목표로 삼고 있습니다. 관심이 있으신 분들은 챌린지 참여를 통해서 개발 실력을 한단계 더 성장해보면 좋을 것 같습니다. 넘블 챌린지 참여하러 가기 (모집중) Django 컨트리뷰터와 함께 배우는 빠르고 재미있는 웹 개발 당신의 시간은 넘블이 아껴드립니다! 30초 요약해볼게요! www.numble.it 많은 참여 부탁드립니다 :) 감사합니다~!

    외부 API 오류가 발생한다면, 서버는 어떤 status code를 전달해야 할까?

    최근에 개발하면서 곰곰히 생각해보아도 마땅한 결론이 나지 않았던 경험에 대해서 이야기해보려고 합니다. 외부 API의 오류 그리고 HTTP Status Code 외부 API 에서 오류가 발생한다면 내 서버는 클라이언트에게 어떤 status code를 전달해야 할까요? 이 글을 쓰기 전까지 저는 위 내용에 대해서 잠깐 고민해본적은 있지만 심각하게 고민해본적은 없었습니다. 그저 습관적으로 400 Bad Request를 리턴하고 있었죠. 400 Bad Request 란? 400 에러는 과연 적절한 status code 일까요? MDN의 정의를 살펴봅시다. The HyperText Transfer Protocol (HTTP) 400 Bad Request response status code indicates th..

    [JWT]JWT 사용시 주의할 점 & 문제점

    안녕하세요, 오늘은 지난번 포스팅에 이어 JWT를 무턱대고 사용할 때 생기는 문제점과 주의해야할 점들에 대해서 이야기 해보겠습니다. JWT 사용시 주의할 점 시크릿 키의 설정 JWT의 가장 핵심적인 부분은 시크릿키에 대한 설정입니다. 해당 값을 알아낸다면 토큰을 생성하고 변조하여 악의적인 행동이 모두 가능해집니다. 따라서 시크릿 키만큼은 안전하게 설정할 필요가 있습니다. 시크릿 키의 경우 최소 512 bits 이상의 값을 설정하는 것을 권장합니다. 문자의 길이가 짧고 쉬울수록 브루트포스 어택에 굉장히 취약합니다. 특히, password / secret-key / my-secret 과 같이 유추하기 쉬운 문자의 경우에는 더욱 취약합니다. 따라서, Auto0 에서는 브루트포스 어택에 대비해 512 bits(..

    [JWT]JWT란? (JSON Web Token)

    요즘에는 웹개발을 하다보면 필수적으로 등장하는 단어가 있습니다. 바로 JWT 인데요, 오늘은 이것에 대해 파헤쳐보려고 합니다. 굉장히 많이 언급이 되는만큼 JWT에 대한 중요성은 높다고 할 수 있습니다. JWT는 무엇이고 탄생 배경과 어떤 구조를 가지고 있는지 알아보도록 하겠습니다. JWT 란? JSON Web Token의 약어이며, 사전적 정의는 다음과 같습니다. JWT는 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기위한 인터넷 표준으로, 페이로드는 몇몇 claim을 assert 처리하는 JSON을 보관하고 있다. - 위키백과 조금 더 풀어서 설명하자면, 여러가지 정보를 담고 있는 JSON 형태의 토큰이라고 할 수 있습니다. 일반적으로는 웹서비스의 인증 시스템에서 주로 사용됩니다. JWT의 ..

    [Django]cached_property 란?

    안녕하세요, 오늘은 Django의 cached_property에 대해서 알아보려고 합니다. 파이썬의 @property 파이썬에는 @property 라는 데코레이터가 존재합니다. 간단하게 설명하자면 캡슐화를 위해 활용될 수 있습니다. 바로, 클래스 외부에서는 해당 속성의 구현에 대해서는 알 필요가 없고 접근만 가능하게 하는 용도입니다. 관련 내용은 이전에 작성한 포스팅을 참고하시면 좋을 것 같습니다. https://leffept.tistory.com/354 [Python]property로 getter, setter 구현하기 Python에서 getter, setter 구현하는 방법 Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다. property() 함수를 이용하는 방법..

    2022년 회고 (feat. 다양한 시도와 도전🔥)

    굉장히 여러가지를 시도하고 도전했던 2022년도 끝났습니다. 개발자를 시작한 이후 정말 매년 한 일들의 최고치를 갱신하는 것 같습니다. 🔥 2022년 동안 무엇을 했는지 정리하는 시간도 가질겸 회고글을 작성하게 되었습니다. 다양한 시도와 도전 이번 해에는 2021년과는 달리 정말 많은 것들을 시도하고 도전했던 것 같습니다. 사실 도전이라는 느낌은 크게 없었는데 이거는 한번쯤 꼭 해봐야지 했던 것들을 대부분 이룬것 같습니다. 이직 가장 큰 이벤트는 이직이었습니다. 2021년도에 이직을 해야겠다고 결심을 한 후 2022년이 되어서야 이직할 회사가 확정 되었습니다. 이 기간동안 힘들기도 힘들었지만 그만큼 나라는 사람에 대해서 생각해보고 많이 되돌아 보았던 시기였던 것 같습니다. 특히나, 면접에서 내가 어떤 사..

    [Django]TIME_ZONE, USE_TZ 설정 (feat. 글로벌 서비스)

    오롯이 한국에서만 서비스를 한다면 타임존 설정(DB포함)은 전부 Asia/Seoul 로 통일하면 됩니다. 하지만, 글로벌 서비스를 염두하고 있거나, 추후에 글로벌 진출을 고려한다면 타임존 문제는 사전에 해결하고 가는 것이 좋습니다. 이미 정해버린 타임존을 되돌리는 것은 생각보다 많이 어렵습니다. 글로벌 서비스를 하고있는 프로덕트를 개발하다가 타임존에 대해서 항상 헷갈리는 부분이 있어 공부하는 차원에서 포스팅하게 되었습니다. 대부분의 내용은 장고의 공식 문서를 참고하였습니다. https://docs.djangoproject.com/en/3.2/topics/i18n/timezones/ Django The web framework for perfectionists with deadlines. docs.djan..