-
Spring Boot: Containerize
들어가며 Spring Boot 애플리케이션의 컨테이너 이미지화 방법을 살펴보고 그 방법들의 장단점을 알아보려 한다. 컨테이너 이미지화 Dockerfile FROM azul/zulu-openjdk-centos:11 RUN mkdir -p /opt/spring-boot-app/logs RUN touch /opt/spring-boot-app/logs/gc.log ADD ./build/libs/spring-boot-app.jar /opt/spring-boot-app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/opt/spring-boot-app.jar"] 상당히 간단한 형태이다. 다만 보다시피 JAR 파일을 통째로 넣으므로 모든 빌드의 통째 결과가 새로운 레이어로 생성된다. 이는 즉 저장소의 용량을 더 많이 차지한다는 것이고, 새로운 버전의 시작 대기 시간도 더 많은 용량을 다운로드해야 하므로 더 길어짐을 의미한다. 그나마 다른 도구를 추가하기는...
-
Using linear-optical quantum computing model to prove #P-hardness of Permanent
Introduction 지난 달 작성한 글과, 최근 진행하는 project-hardness 스터디를 진행하면서 $\sharp P$-hardness에 대한 내용을 자주 다루었습니다. 하지만 $\sharp P$라는 complexity가 고안된 근본적인 이유와도 같은 permanent에 대해서는 언급하지 않았습니다. Shortest Even Cycle Problem을 다룬 문제에서 지나가듯 이야기했지만 길게 이야기하지 않았죠. 실제로 이 문제를 해결한 Valiant(1979)의 논문은 3000회가 넘는 인용수를 기록했으며, Permanent를 비롯한 수많은 복잡도 이론에 대한 공헌으로 Valiant은 튜링상까지 수상하게 됩니다. 이런 위대한 업적에도 불구하고 Valiant이 어떤 아이디어로 Permanent의 hardness를 증명했는지는 비교적 알려져 있지 않은데, 문제...
-
SMAWK algorithm
들어가며 SMAWK 알고리즘은 $n \times m$ 크기의 totally monotone한 행렬에서 모든 행마다 최솟값의 위치를 $O(n+m)$ 시간에 구하는 알고리즘이다. 이 글에서는 SMAWK 알고리즘에 대해 소개하고, 이를 통해 해결할 수 있는 문제들에 대해 소개한다. 단조성. $2 \times 2$ 행렬 $\left[ {\begin{array}{ccc}a & b \ c & d \ \end{array}} \right]$ 은 다음 조건이 성립하면 monotone하다고 한다. $c < d$이면 $a<b$이다. $c=d$이면 $a\leq b$이다. $n \times m$ 행렬은 만약 모든 $2 \times 2$ 부분행렬이 monotone하다면 totally monotone하다고 한다....
-
Isogeny-based cryptography
Introduction 현재 사용되고있는 공개키 암호 시스템은 많은 수가 기본적인 RSA의 변형으로 discrete logarithm problem(이산로그) 또는 integer factorization problem 문제의 어려움을 기반으로 하고 있으며, 타원곡선 상에서의 연산에 기반한 시스템 역시 elliptic-curve discrete logarithm problem(ECDLP)을 기반으로 합니다. 이 3가지 문제들은 모두 양자컴퓨터상에서 Shor’s algorithm으로 빠른 시간에 풀 수 있음이 알려져있기 때문에, 양자컴퓨터가 등장하더라도 그 안전성을 보장할 수 있는 post-quantum cryptography algorithm이 필요하게 되었습니다. NIST(미국 국립표준기술연구소) 에서는 양자컴퓨터의 출현에도 안전한 Post-Quantum Cryptography의 표준화를 위해 여러 알고리즘들을 제출받아서 보안성과...
-
Solving 8-puzzle problem with search algorithm
Abstract 8-퍼즐 문제는 3X3 크기의 프레임과 1부터 8까지의 숫자로 이루어진 슬라이딩 퍼즐을 순서대로 배열하는 문제입니다. 더 일반화된 문제는 N-퍼즐 문제로, 최적의 해를 찾는 것이 NP-hard라고 합니다. 이번 글에서는 가장 기본적인 BFS, DFS에서부터 IDS 알고리즘, A* 알고리즘까지의 방법론으로 8-퍼즐 문제를 풀어보고, 그 성능을 분석해보도록 하겠습니다. 8-퍼즐 문제 8-퍼즐은 3X3 그리드로 나누어진 정사각형 프레임 안에 8개의 타일과 하나의 빈 공간이 있는 슬라이딩 타일 퍼즐입니다. 아마 한번쯤은 해보셨을 것으로 생각됩니다. 8-퍼즐 각 타일은 서로 구분되는데, 보통은 1부터 8까지의...