일기 · 199

  1. 2026
  2. 9월
  3. 09.20 듀오링고리타분위기린
  4. 09.19 반값 설빙
  5. 09.18 우주 전쟁
  6. 4월
  7. 04.19 REBEL HEART
  8. 1월
  9. 01.20 e ∈ F
  10. 01.20 기술개발 진행상황 공유 1
  11. 01.20 기술개발 진행상황 공유 2
  12. 01.20 기술개발 진행상황 공유 3
  13. 01.15 항저우
  14. 2025
  15. 10월
  16. 10.24 어제까지의 이야기
  17. 10.09 돈 벌기
  18. 9월
  19. 09.02 PERFECT BLUE
  20. 8월
  21. 08.31 코코아분말 0.9%
  22. 08.30 WHAT THE
  23. 08.29 문을 닫고 들어오세요
  24. 08.28 하우스도르프 공간
  25. 08.27 All Time Low
  26. 08.26 세상의 끝을 겨눈대도
  27. 08.25 앉은 자리가 꽃자리
  28. 08.24 6과 7 사이 자연수
  29. 08.23 아직 아무 문제도 발견되지 않았습니다
  30. 08.22 Adventure
  31. 08.21 Adobe Creek
  32. 08.20 나의 무가지보(無價之寶)
  33. 08.19 T. Rex
  34. 08.18 누구를 위하여 종은 울리나
  35. 08.17 Sunday Morning
  36. 08.16 일상의 안녕
  37. 08.15 친애하는 우리의 결함에게
  38. 08.14 이것이 있으므로 저것이 있다
  39. 08.13 나는 나의 길을 간다
  40. 08.12 Vanilla Latte
  41. 08.11 그것은 하나의 가까움
  42. 08.10 정복 불허의 공간에
  43. 08.09 쉼 없이 수선하기
  44. 08.08 나는 전설이다
  45. 08.07 철판치즈버거
  46. 08.06 난 포기에 소질 있음
  47. 08.05 스피또런
  48. 08.04 하룻밤 만에
  49. 08.03 세상에 딱 하나뿐인
  50. 08.02 게으름뱅이를 위한 변명
  51. 08.01 북극 백화점
  52. 7월
  53. 07.31 사람은 무엇으로 사는가?
  54. 07.30 KRAFTON Yeoksam Office
  55. 07.29 Slowly flowing day
  56. 07.28 What's this?
  57. 07.28 Architectural Improvements 4
  58. 07.27 Lime Light
  59. 07.26 우리가 기다린 미래
  60. 07.25 Final approach
  61. 07.25 Poster Design Note : Form and Flow
  62. 07.25 Poster Design Note : How We Made It
  63. 07.24 폭풍의 눈
  64. 07.23 IYKYK
  65. 07.22 순살치킨 -> 치킨너겟
  66. 07.21 TRAIN - TRAIN
  67. 07.21 Architectural Improvements 3
  68. 07.21 Logo Design Note : The Logic of Flow
  69. 07.20 어떤 통찰도 지름길로는 얻을 수 없다
  70. 07.20 DeepDive : Many Over Mighty
  71. 07.19 시간이 느리게 가는 건
  72. 07.19 Architectural Improvements 2
  73. 07.19 DeepDive : GC-Triggered Stop-the-World
  74. 07.18 EVEREST
  75. 07.18 Architectural Improvements 1
  76. 07.18 PhantomFlow : High-performance HTTP request simulator
  77. 07.18 Introduction to Project KlickLab
  78. 07.18 What is Clickstream data?
  79. 07.17 깊은 사고는 더 이상 니즈가 없다
  80. 07.16 이기적인 토대 위
  81. 07.15 무엇이든, 언제가는
  82. 07.14 경험을 압축하는 알고리즘은 존재하지 않는다
  83. 07.13 무한한 가능성을 가질 것
  84. 07.12 화려한 거짓을 향해
  85. 07.11 Kentucky Fried Chicken
  86. 07.10 Tropical Blue
  87. 07.09 처음처럼 내 딛는
  88. 07.08 어제와 다른 하늘의 색
  89. 07.07 누군가의 달이었기를
  90. 07.06 아직 뜯지 않은 마음
  91. 07.05 황금의 오솔길
  92. 07.04 우리는 오가는 바람
  93. 07.03 Nic dwa razy
  94. 07.02 Never basic
  95. 07.01 입꼬리올림근
  96. 6월
  97. 06.30 그럼에도 불구하고
  98. 06.29 과잉포장된 자존심
  99. 06.28 E3i3
  100. 06.27 118
  101. 06.26 무한 우주에 순간의 빛일지라도
  102. 06.25 RUSH
  103. 06.24 그래, 우리는
  104. 06.23 The wind blowing low
  105. 06.22 피어나는 마음의 꽃
  106. 06.21 하나는 죽고, 하나는 살았다
  107. 06.20 초속일초
  108. 06.19 씨앗이 가장 고귀한 이유는
  109. 06.18 Evening Primrose
  110. 06.17 마음이 휑뎅그렁할 때
  111. 06.16 하나
  112. 06.15 강철무지개
  113. 06.14 유람
  114. 06.13 13일의 금요일
  115. 06.12 백만 스물하나, 백만 스물둘
  116. 06.11 경안천
  117. 06.10 달이 아름답네요
  118. 06.09 Tampermonkey
  119. 06.08 미르
  120. 06.07 나 평생 꿈만을
  121. 06.06 아르기닌
  122. 06.05 변속주
  123. 06.04 Global Running Day
  124. 06.03 가장 밝은 별
  125. 06.02 천천히
  126. 06.01 circular metal ring
  127. 5월
  128. 05.31 담장과 쪽문
  129. 05.30 투표런
  130. 05.29 출발선
  131. 05.28 Post Traumatic Growth
  132. 05.27 SET
  133. 05.26 READY
  134. 05.25 청복
  135. 05.24 열복
  136. 05.23 강제 푸시 반성합니다
  137. 05.22 유로파
  138. 05.21 떠오름과 저묾
  139. 05.20 Family Friend Fools
  140. 05.19 Time machine
  141. 05.18 맑은 일요일
  142. 05.17 흐린 토요일
  143. 05.16 PTG
  144. 05.15 셋이 만드는 하나
  145. 05.14 Lotte+Cafeteria
  146. 05.13 오십삼
  147. 05.12 일장춘몽
  148. 05.11 𝑬𝒗𝒆𝒓𝒍𝒂𝒏𝒅, 𝑬𝒗𝒆𝒓 𝑴𝒊𝒏𝒅
  149. 05.10 五月雨よ
  150. 05.09 Your Journey Starts Here
  151. 05.08 「권의 속도」
  152. 05.07 Quiet Air
  153. 05.06 놀자판 하루
  154. 05.05 뭔데이
  155. 05.04 After School
  156. 05.03 나침반이 가리킨 곳
  157. 05.02 짧은 하루
  158. 05.01 예고된 악재는 악재가 아니다
  159. 4월
  160. 04.30 Can More
  161. 04.29 초급반
  162. 04.28 감사합니다. 죄송합니다.
  163. 04.27 맥도날드 원정
  164. 04.26 무용(無用)의 쓸모
  165. 04.25 Sunny Day
  166. 04.24 벚나무 아래에서
  167. 04.23 언제나 이타카를 마음에 두라
  168. 04.22 D-100
  169. 04.21 수상한 미용실
  170. 04.20 손으로 컴퓨터를 마주하다
  171. 04.19 비가 오면 빨래를 하자
  172. 04.18 반차
  173. 04.17 발표, 청소, 러닝
  174. 04.16 반티 발주
  175. 04.15 첫 달리기
  176. 04.14 선택과 해석
  177. 04.13 Home Sweet Home
  178. 04.12 人生
  179. 04.11 반티 디자인 공모 & 제출
  180. 04.10 알고리즘의 끝, C언어의 시작
  181. 04.09 하와이안 스테이크
  182. 04.08 Long Chat
  183. 04.07 Es irrt der Mensch, solang' er strebt.
  184. 04.06 마무리
  185. 04.05 움직이는 물체의 시간은 느리게 간다
  186. 04.04 하나의 칼날
  187. 04.03 3x7=21
  188. 04.02 퀴즈 다음날, 시험 전날
  189. 04.01 April Fools' Day
  190. 3월
  191. 03.31 1년의 90번째 날
  192. 03.30 日曜日은 칠요일 중 첫째 날 이다
  193. 03.29 토요일은 주말이 아니다
  194. 03.28 그래프와 치킨버거
  195. 03.27 3주차의 시작
  196. 03.26 기초 다지기
  197. 03.25 기초 다지기 & 정리해야 할 CS 개념들
  198. 03.24 0.44%
  199. 03.23 본가 다녀온 날
  200. 03.22 문제 풀이에 집중한 하루
  201. 03.21 동료학습
  202. 03.20 첫번째 시험
  203. 03.19 먹다가 끝난 하루
  204. 03.18 눈이 쌓이면 버그도 쌓인다
  205. 03.17 깃허브, 팀별 면담, 키워드 공부
  206. 03.16 외출과 배달
  207. 03.15 첫 주말
  208. 03.14 컴퓨팅 사고로의 전환
  209. 03.13 cookie4u.store + 1주차 발제 + 회식
  210. 03.12 디지털 포춘쿠키
  211. 03.11 정글 입성
  212. 03.10 입소 당일

디지털 포춘쿠키

🏕 0주차 미니 프로젝트 - 웹서비스 개발 및 배포

📌 정글 콤파스 0주차 설명

정글 콤파스 0주차에는 다음과 같은 안내가 적혀 있다.

입학시험 때 배운 기술들을 토대로, 3박 4일간 미니 프로젝트를 완성해보세요.
유쾌하거나 / 의미있거나 / 흥미롭거나 - 자유롭게 주제를 선정해도 무방합니다.
팀원들과 아이디어 협의 후 주제 발표(화)를 하고, 구현 완료 후 결과물 발표(목)를 진행합니다.
한 명의 AWS EC2에 업로드합니다.
(옵션) 도메인을 붙여 완성합니다.

💡 기본적으로, 입소 첫날부터 바로 실전 프로젝트가 시작된다고 보면 된다.


🕒 3월 10일 - 첫날 일정

입소 당일인 3월 10일, 다들 피곤해서 23시에 거의 숙소로 돌아갔다.

근데 사실, 원칙적으로는 10시~23시까지 훈련을 받아야 한다.
즉, 23시 이전에 일과를 끝마치는 건 불가능하다는 얘기다.

왜 “원칙적으로는” 불가능하다고 했는지는,
와보면 안다. 😏

어쨌든, 우리 8팀이 결정한 프로젝트 “디포쿠”에 대해 설명하겠다.


🍪 8팀 미니프로젝트 - 디지털 포춘쿠키 (디포쿠)

🎯 프로젝트 개요

📌 디지털 포춘쿠키(Digital Fortune Cookie)
➡ 사용자가 하루에 한 번 행운의 메시지를 받을 수 있는 웹 애플리케이션

✅ 운세 메시지 + 점수를 제공하며, 개인의 운세 기록을 저장 & 비교 가능
✅ 운세 점수는 데이터베이스에 기록되고, 사용자 간 랭킹도 확인 가능


💡 아이디어의 시작

💭 “캠퍼스에서의 단조로운 생활에 재미 한스푼을 추가하자”
전통적인 포춘쿠키(Fortune Cookie)는 과자를 열면 짧은 운세 메시지가 나오는 방식이다.
이걸 웹에서 하루에 한 번만 뽑을 수 있도록 구현해보자는 아이디어가 나왔다.

💡 왜 이 프로젝트를 선택했나?
✅ 매일 운세를 확인할 수 있는 심리적인 재미 요소 제공
✅ 운세 점수를 기반으로 랭킹 기능 추가 가능
✅ MongoDB & Flask를 활용한 웹 서비스 구축 연습
✅ JWT 기반 인증 시스템을 적용하여 보안 강화


🚀 주요 기능

🔹 1. 하루에 한 번만 포춘쿠키 열기

✅ 사용자는 하루에 한 번만 포춘쿠키를 열 수 있다.
✅ MongoDB의 원자적 업데이트(Atomic Update) 기술을 사용하여 중복 요청 방지
📌 기술 스택: Flask, MongoDB, AJAX


🔹 2. 행운 점수(운세 점수) 부여

✅ 각 운세 메시지와 함께 0~100점 사이의 랜덤한 행운 점수가 제공된다.
✅ 점수는 단순 랜덤이 아니라, 가중치 기반의 확률 알고리즘을 적용
📌 기술 스택: Python random.choices() + MongoDB


🔹 3. 운세 메시지 생성 알고리즘

✅ 운세 메시지는 3가지 요소(이벤트 + 결과 + 조언)로 구성되어 매번 다르게 생성된다.
✅ 특정한 점수 범위(좋음/보통/나쁨)에 맞는 운세 메시지가 자동 선택됨.
📌 기술 스택: Python 템플릿 엔진, 랜덤 알고리즘


🔹 4. JWT 기반 인증 시스템

✅ 회원가입 & 로그인 후, JWT 토큰을 활용하여 사용자 인증이 이루어진다.
✅ 사용자는 로그인 후에만 포춘쿠키를 뽑을 수 있다.
✅ 서버 재부팅 시, 기존 JWT 토큰을 무효화하여 보안성을 강화
📌 기술 스택: Flask JWT Extended, Secure Cookies


🔹 5. 사용자 랭킹 시스템

✅ 모든 사용자의 행운 점수를 MongoDB에서 직접 계산하여 랭킹 제공
✅ 랭킹 계산 시 전체 데이터를 불러오지 않고, 효율적인 정렬 알고리즘 적용
📌 기술 스택: MongoDB 인덱싱, Flask


🔧 사용 기술 스택

카테고리기술
백엔드Flask, MongoDB, JWT 인증
프론트엔드HTML, CSS, JavaScript (AJAX)
배포 환경AWS EC2, Nginx, Gunicorn
보안JWT, HTTPOnly 쿠키, Secure 쿠키

📌 프로젝트를 통해 배운 점

✅ Flask와 MongoDB를 활용한 RESTful API 설계
✅ JWT 인증 시스템 & 보안 설정 적용
✅ Flask + Gunicorn + Nginx를 이용한 웹 서비스 배포
✅ 비동기 AJAX 요청을 활용한 프론트엔드 & 백엔드 통신


🔥 마무리

📌 디포쿠는 단순한 운세 서비스가 아니다.
단순한 랜덤 운세가 아니라, 데이터베이스 & 인증 시스템을 연습할 수 있는 프로젝트였다.

🚀 실제 작동 화면을 정리해보겠다.
📌 다음 글에서 계속!

댓글