ywcheong::blog

공개노트

비정기적으로 흥미로운 컴퓨터 관련 토픽들을 공개적으로 읽을 수 있도록 정리하고 있습니다.

🌐
The content of this blog is also available in English. I use an LLM for initial translation and then manually review it. Change the language at the bottom of the blog, or simply click this link.

최근 포스트

Sofia 시스템 소개

Sofia 시스템 - 배경설명 Sofia 시스템은 개발 시기에 따라 구버전과 신버전으로 나뉩니다. Sofia 구버전 (fullstack)은 2019년 말 기획되어 2020년 초 개발되었습니다. PHP, Bootstrap, jQuery를 활용해 개발되었습니다. 해당 버전은 cafe24 호스팅으로 시작해 한국과학영재학교 학생회 산하 정보부 서버로 이관되었습니다. Sofia 신버전 (frontend, backend)은 2026년 초 개발되었습니다. 구버전의 여러 문제점을 개선해 재작업했으며, 프론트엔드와 백엔드를 분리해 개발되었습니다. 프론트엔드는 React SPA, 백엔드는 Kotlin Spring Boot REST API입니다. 해당 버전은 AWS, Cloudflare 등에 배포되었습니다. Sofia 시스템 - 요구사항 Sofia의 핵심 요구사항은 다음과 같습니다.

더 읽기 →

2026년 4월 1일

Java 웹 기술의 변화 히스토리: Java EE부터 Spring Boot까지

이 포스트는 ywcheong/java-web-history 미니 프로젝트를 설명하는 글입니다. 10년 전에 출판된 기술서적 이해하기 최근 그 어느 때보다도 독서의 중요성을 실감하고 있습니다. 물론 “책보다 인터넷을 봐야 한다"거나 “책은 내용이 쉽게 낡는다"라는 주장도 근거가 있습니다. 하지만 책은 단순히 기술을 사용하는 방법뿐만 아니라, 그 기술이 탄생하게 된 맥락을 알려줍니다. 이러한 깊이 있는 맥락은 단순히 코드를 복사해 붙여넣거나 튜토리얼을 따라 하는 것만으로는 얻기 힘든 통찰을 제공합니다.

더 읽기 →

2025년 12월 6일

sys.setrecursionlimit(10**6)은 만능 해결사가 아니다

결론부터 말하자면… 알고리즘 문제풀이에 Python을 사용할 경우 sys.setrecursionlimit의 기본 한계인 1000을 초과하는 로직이 있을 경우 재귀함수가 아닌 일반함수로 구조를 바꾸거나, 또는 C, C++로의 변경을 고려하는 것이 좋다. 그렇지 않을 경우 Windows에서 탐지가 불가능한 치명적인 버그가 발생할 위험이 있다.

더 읽기 →

2024년 10월 31일

Python 2에서 input()은 eval(raw_input())이다

Easyplotlib 구조 만들기 Easyplotlib을 개발하면서 제일 먼저 시작했던 부분은 Frontend와 Backend 사이의 통신 양식을 정하는 것이었다. 이 프로젝트를 간단히 설명하면 (인공지능은 아니지만) 사용자를 대신해 사용자의 요구대로 자동으로 코드를 생성해 주고, 이를 실행한 뒤 그 결과를 보여주는 게 주 기능이다. 코드를 동적으로 생성한 뒤 실행한다는 특성상 잘못된 방식으로 구조를 설계할 경우 ACE (Arbitrary Code Execution; 임의 코드 실행) 취약점이 발생할 우려가 컸기에, 상당히 신경써서 만들어야겠다는 생각이었다.

더 읽기 →

2024년 10월 6일

FastAPI 개발 중에 귀신들린 이야기 (feat. VSCode)

FastAPI 개발 중 겪은 일 FastAPI를 활용한 새 웹 프로젝트를 개발하던 중 미스터리한 일을 겪었다. (스포일러: 귀신은 없었다.) 이번 프로젝트에서는 AWS를 사용해 프로덕션을 개발할 생각이었기에, 개발 환경은 AWS EC2로 세팅을 마쳤었다. Python 프로젝트는 여러 번 해 봤지만 FastAPI를 활용하는 경우는 처음이어서 간단한 데모 코드를 가지고 원리를 이해하고 있었다.

더 읽기 →

2024년 10월 4일