전체 글 179

[DRIVE] 동기부여의 3가지 요인

이번 글은 아마 Drive에 대한 내용이라기보다 책을 읽으면서 최종적으로 느꼈던 감상에 대해서 중점적으로 남길 것 같다.  다니엘 핑크 다니엘 핑크는 참고로 뉴웨이브 경제 잡지《패스트 컴퍼니(Fast Company)》의 기고가 겸 편집위원으로, 몇 년간 미국 각지에 여러 단독업자, 임시직 초소형 사업자 수백 명과 그들의 삶의 노동에 관해 직접 인터뷰를 했던 사람이기 때문에 어느정도 신빙성이 있다고 생각해도 괜찮을 것 같다. 그뿐만 아니라 최고의 미래학자고 꼽히며 비지니스 사상가로 불린다. 경영학계의 오스카로 불리는 '싱스커스 50Thinkers 50'이 2년마다 선정하는, 전 세게에서 가장 영향력 있는 사상가 50인 중 한 명이다.   2부 동기부여의 3가지 요인이번 글에서는 2부의 "동기부여의 3가지 ..

스타트업 인턴 2024.05.23

쿼드 트리 뒤집기(QUADTREE 난이도:하)

쿼드 트리(QUADTREE)대량의 좌표 데이터를 메모리 안에 압축해 저장하기 위해 사용하는 여러 기법 중 쿼드 트리란 것이 있다.주어진 공간을 항상 4개로 분할해 재귀적으로 표현하기 위해 쿼드 트리라는 이름이 붙었다. 가장 유명한 예시로 검은 색과 흰 색밖에 없는 흑백 그림을 압축해 표현한 사례가 있다. 쿼드 트리는 2**n * 2**n크기의 흑백 그림을 다음과 같은 과정을 거쳐 문자열로 압축한다. 이 그림의 모든 픽셀이 검은 색일 경우 이그림의 쿼드 트리 압축 결과는 그림의 킉에 관계없이 b가 된다.이 그림의 모든 픽셀이 흰 색일 경우 이 그림의 쿼드 트리 압축 결과는 그림의 크기에 관계 없이 w가 된다.모든 픽셀이 강튼 색이 아니라면, 쿼드 트리는 이그림을 가로 세로로 각각 2등분해 4개의 조각으로 ..

재귀 호출과 완전 탐색

1. 무식하게 풀기공부를 할수록 우아한 답안을 만들고 싶은 마음이 커진다. 그래서 바로 앞에 보이는 쉽고 간단하며 틀릴 가능성이 낮은 답안을 간과하기 쉽다. 이런 실수를 방지하기 위해서 '무식하게 풀 수 있을까?' 라는 생각을 해보아야한다. "brute-force(무식하게 푼다)"컴퓨터의 빠른 계산 능력을 이용해, 가능한 경우의 수를 일일이 나열하며 답을 찾는 방법을 의미한다.이런 알고리즘을 완전 탐색(exhaustive search)라고 한다.  2. 재귀 호출과 완전 탐색컴퓨터가 수행하는 많은 작업들은 대개 작은 조각으로 나눌 수 있다.범위가 작아지면 작아질 수록 각 조각의 형태들은 유사해진다.이러한 작업을 구현할 때 유용하게 재귀 함수(recursive function)/재귀 호출(recursion..

FastAPI PostgreSQL DB 트랜잭션 동기/비동기 처리

🕊️ FastAPI 데이터베이스 처리이번 게시물에서는 FastAPI에서 데이터베이스 처리를 위해 사용하는 두 개의 라이브러리에 대해서 다루어보겠다. 지난 게시물에 이어서 이번에는 ASGI인 FastAPI에서 비동기적으로 수행할 수 있는 Asyncpg에 대해서 설명하고자 하는데, 이를 위해서 동기식으로 동작하는 psycopg2에 대해 다루어볼 것이다. 아래서 내가 제시하는 get_db(), get_db_session()함수 두개는 각자 두개의 라이브러리를 활용하여 작업할 때 필요한 데이터베이스 접근 방식이다. 각자 동기/비동기적으로 접근한다. ✨ psycopg2해당 라이브러리는 "동기식"으로 작동한다.따라서, 요청을 처리하는 동안 다른 작업들은 수행하지 못하고 대기 상태에 있게 된다.  그러나, Djan..

Backend/FastAPI 2024.05.11

CGI, WSGI, ASGI 에 대하여

2년전인 1학년 때, 아무것도 모르는 상태에서 FastAPI를 시작했었는데 당시 FastAPI가 Starlette 과 Pydantic을 기반으로 한 웹 프레임워크이며, ASGI방식을 사용한다는 것을 알게되었다. 🤔 그래서 ASGI방식이 뭔데? 선배가 ASGI방식임을 알려주셨는데, 그게 뭔질 알아야 또 그거말고 뭐가 있는지 알아야 이해를 할텐데 너무 답답했다. (물론 선배가 설명을 못하신게 아니라, 내가 뭐가 있는지 모르니 아무리 설명해줘도 "그게뭔데? 머좋은건데?"라는 생각만 나는 상황..)  최근에, FastAPI공부를 하면서, DB에 접근할 때 session개념이 생기던데 Asynchronous하게/Synchronous하게 접근해야할지 고민했는데 (물론 비동기가 맞다고 생각했다!! 이건 다른 글에서..

Backend/FastAPI 2024.05.10

늦었지만 4월을 보내며 (feat: FastAPI도 & 카테캠 & 종만북)

이번 회고는 회사 얘기만 쓰는건 아니고, 전반적으로 요즘 어떻게 지내는지 쓰려고 왔다!FastAPI를 하게 되다!!!블로그에 한 번 쓴 적이 있는지 모르겠는데, 이번에 회사에서 일을 하면서 FastAPI를 다루게 되었다! 내가 처음 웹 개발을 접하게 된게 (전공 빼고) Python FastAPI였다!  당시 1학년이었는데, 아무것도 모르는 상태에서 인공지능 동아리에서 어쩌다보니 웹 백엔드를 했었다.https://github.com/stopmin/AID_WEB GitHub - stopmin/AID_WEB: 부산대학교 인공지능 동아리 AID부산대학교 인공지능 동아리 AID. Contribute to stopmin/AID_WEB development by creating an account on GitHub...

스타트업 인턴 2024.05.07

[DRIVE] 나의 동기부여는 무슨 유형일까?

최근에는, 회사에서 다니엘 핑크의 "드라이브"라는 책을 읽고 있다.이번에 세미나 책을 선정하면서, 자기계발 서적이 너무나 하고 싶었다. 그래서 의견을 내서, 다니엘 핑크의 드라이브라는 책을 읽게 되었다. 동기부여는 어디에서 오는가? 물론, 동기부여가 부족해서, 번아웃이 와서 읽고 싶었던 것은 아니다. 또한, 작은 동기부여는 남에게도 얻을 수 있겠지만 결국 본질적으로는 나 자신에게서 오는게 경험상 맞는 것 같다.  그렇지만, 이런 동기부여 책은 언젠가 내 자신이 무너졌을 때 혹은 내가 흔들릴 때. 혹여 "나는 흔들리지도 않고 동기부여가 강한사람인데?"라고 생각하더라도, 언젠가 재산이 되어 내게 가장 중요한 시기를 함께 이겨나가게 해주는 원동력이 되어준다고 생각한다. 내 자신에게서 어떻게 동기부여를 만들어나..

스타트업 인턴 2024.05.06

[Python] FastAPI Logging - correlation ID (middleware & uuid)

✨Build Up이번에 회사에서맡은 일을 해결하는 과정에서 Python FastAPI 서버를 구축하게 되었다. Llama3 모델을 활용하기 위해서 Kotlin + Spring 프로젝트에서는 유연하지 못한 것 같아 모델에 관련된 처리를 Python 서버에서 해결하기로 했고, 완전히 새로운 프로젝트를 만드는 상황이라 Logging과 배포에 관련된 문제를 모두 스스로 해결해야했다. 이번에는 그 과정 중에서도 로깅에 관한 문제를 해결해야한다.어플리케이션 밑에 찍히는 로그도 필요하지만 프로덕션에서는 Opensearch를 통해서 더 손쉽게 로그를 탐색할 수 있어야 하고 나중에는 DataDog을 활용하여 트래픽 분석도 할 수 있어야 한다. 그 중에서도 이번에는 Python FastAPI에서의 Logging에 대해서 ..

Backend/FastAPI 2024.05.03

[백준] 12851 숨바꼭질 2(C++)

문제https://www.acmicpc.net/problem/12851 문제 분석해당 문제는 BFS 유형이다.  왜 BFS인가?처음에는 DP라고 생각을 했다. 이상하게 유독 BFS문제를 보면 DP라고 생각할 때가 종종 있는 것 같다... 하지만 이 문제가 BFS유형임에 확실한 것은 (물론 DP로도 풀려고하면 풀 수도 있겠지만) "가장 빠른 시간" 과 "가장 빠른 시간으로 찾는 방법" 이라는 키워드가 있기 때문이다. 가장 빠른 방법 중에서도 특히나 가중치가 없는 그래프의 경우에는 BFS임이 자명하다. 만약 가중치가 있을 경우에는 다익스트라 알고리즘을 사용해야한다. 특히나 트리일 경우에는, BFS는 반드시 "최단경로"를 거칠 수 밖에 없다. 왜냐하면, 해당 노드 간의 경로가 단방향, 또한 하나만 존재하기 때..

객체를 접근하는 권한 이해하기

1. What I learned today1. 객체를 접근하는 권한 이해하기객체가 만들어졌다는 것은, 누군가에게 사용이 되어야 한다는 점에서 의미가 있다.그런데 어떠한 객체를 만들었을 때, 어떤 것은 외부에서 접근이 가능하게 허가할 수도 있고 허가하지 않을 수도 있다. 그렇게 함으로서 객체를 조금 더 안전하게 사용할 수 있다.⭐ 객체끼리 서로가 상호작용할 때 서로가 접근할 수 있는 부분과 할 수 없는 부분을 중점으로 즉 **“권한”**에 대해서 학습을 해보자. 🚀 학습 목표객체 지향 프로그래밍에서는 객체 상호간에 접근을 제어할 수 있어야 한다.ex. 두 클래스가 가지고 있는 상태와 동작을 상호간에 접근을 허용할 수 있어야 되고, 접근을 막아야 되는 경우가 있기 때문이다.이번 시간에 알아볼 내용접근 제어..