아래에서 말하는 API란, 웹개발에서 사용하는 REST API를 주로 칭하며, 이 외의 API들에는 적용되지 않는 말일 수도 있다. 화면을 위한 API결국엔 API는 화면을 보여주기 위해 존재하는게 아닌가? 라는 생각을 한 적이 있다. 사실은 줄곧 그렇게 생각해왔다. 결국에 사용자가 보게되는 결과물은 클라이언트(프론트엔드)고, API는 어찌보면 이를 뒷받침 해주는 역할이니, 최대한 화면을 나타내기 편하도록 해주는 API가 좋은 API 아닐까? 라는 생각을 하곤 했다. 그래서 나는 최대한 화면에 맞춘 API를 설계해왔다. 엔드포인트 설계 단계에서부터 화면을 고려했고, 피그마를 보며 어떤 필드가 어떤 화면에 필요한지 확인하는데 주로 시간을 썼던 것 같다. 결론적으로, 프론트엔드 개발자가 1~2번의 API 호..
들어가며데이터베이스는 일종의 API이다. 그리고 이 API를 사용하기 위해 우리는 SQL이라는 언어를 사용한다. 그렇다면 SQL은 어떤식으로 서버에서 데이터베이스로 전달되고, 이들간의 연결은 어떻게 맺어지는걸까? 이 글에서는 DB와 연결을 맺고, 이를 편리하게 사용하도록 도와주는 기술들이 어떤 흐름속에서 탄생했는지 알아보고자 한다. 더 구체적으로는, Java에서 DB와 관련된 기술이 어떤 이유로 탄생했고 장/단점은 무엇인지 간략하게 알아볼 예정이다. 1. 처음에 SQL을 실행하던 방식1960~80년대, 초창기 애플리케이션들은 데이터베이스와 직접적으로 연결을 맺고 SQL을 실행했다. 따라서 프로그래머들은 직접 TCP/IP 소켓을 관리하며 SQL을 작성 및 송수신하고, DB 연결을 수동으로 여닫아야 했다. ..
문제상황1. 첫 번째 회원가입(카카오 연결), 회원탈퇴(연결끊기)까지는 정상작동한다.2. 두 번째 회원가입 후, 회원탈퇴 시 카카오 측에서 400 응답과 함께 다음과 같은 로그가 찍혔다.400번 응답 : {“msg”:“NotRegisteredUserException”,“code”:-101} 3. 처음에는 두 번째 회원 가입 시 문제가 생겨 카카오 연결이 되지 않은 상태에서 탈퇴 처리를 해서 발생하는 문제라고 생각했다. 또는, 회원가입 후 24시간 이내에 /users/me 같은 api를 호출하지 않아 자동 탈퇴처리가 되었다고 생각했다.(이 경우는 SDK를 사용했을 때는 발생하기 어려운 문제라 금방 제외되었다) 4. 그러나 DB에 정상적인 social_id 가 저장되어 있었고, 구현 된 로직 상 social..
이전글2025.07.10 - [분류 전체보기] - [Python] Pipenv 부터 AWS Lambda 배포까지 (1) [Python] Pipenv 부터 AWS Lambda 배포까지 (1)❓ 이 글은 Pipenv의 간단한 활용법과 이를 이용해 작성된 코드의 Lambda 업로드 방법을 담고 있습니다. 댓글 크롤링이 필요한 프로젝트를 진행하면서, 크롤링 스크립트를 작성하기 위해 파이썬을boolog.tistory.com앞선 글에서는 Pipenv를 설치하고, 이를 활용하는 법에 대해 간단히 알아보았다. 가상환경에서 실컷 코딩을 진행했다면, 이제는 람다에 함수를 배포할 차례이다. 람다에서 실행되는 함수를 작성하기 위해서는, AWS에서 제시하는 규칙을 따라서 함수를 작성해야한다. 본 글에서는 구체적인 함수 작성 방..
❓ 이 글은 Pipenv의 간단한 활용법과 이를 이용해 작성된 코드의 Lambda 업로드 방법을 담고 있습니다. 댓글 크롤링이 필요한 프로젝트를 진행하면서, 크롤링 스크립트를 작성하기 위해 파이썬을 사용하게 되었다.이런저런 외부 라이브러리를 사용하기 위해 설치를 반복하다보니, 라이브러리끼리 충돌하여 설치가 제대로 되지 않거나, 설치는 되었음에도 제대로 동작하지 않는 문제가 발생하여 Java의 Gradle처럼 의존성 관리가 필요함을 느끼게 되었다.찾아보니 venv, conda, pipenv 라는 도구가 있었고, pipenv는 파이썬 버전까지 함께 관리해준다고 하여 pipenv를 사용하기로 결정하였다. Pipenv 설치 및 사용먼저 Pipenv를 설치해보자. 공식문서는 아래와 같다. https://pipen..
주의1. 파이썬은 기본 자료형(immutable)을 제외하면 참조복사다. (Call by object-reference, 값이 아닌 주소를 넘긴다는 의미)엄밀히 말하면 기본자료형 또한 참조복사 형태로 전달되지만, 수정이 불가능하다.def func(x): x = x+1 # 매개변수로 전달된 x의 값이 바뀌는 것이 아닌, x에 11이 재할당된다. print(x) a = 10print(a)위와 같은 경우에는 x는 기본 자료형인 int이기 때문에 변수에 재할당이 일어나며, a의 값은 변경되지 않는다.자칫 Java와 같다고 착각할 수 있지만, Java는 기본 자료형(int, double 등)은 값 자체를 복사하고, 객체는 참조값(주소)을 복사한다. str (문자열)메서드설명str.upper()모두 대문자로 ..