| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 알고리듬
- Priority Queue
- gpdb
- SQL
- GitHub
- Bruth Force
- 시뮬레이션
- boj
- Vue.js
- BFS
- programmers
- django
- Trie
- Python
- SWEA
- JavaScript
- Data Structure
- 구현
- 알고리즘
- Algorithm
- aws
- hash table
- CSV
- 코딩테스트
- spring boot
- Linked list
- 코테
- Back tracking
- DFS
- 모의SW역량테스트
- Today
- Total
목록dev (62)
hotamul의 개발 이야기
Path Enumeration Adjacency Lists(대댓글 기능 데이터 모델링 #1 (Adjacency List) 참고)는 트리에서 주어진 노드의 여러 계층의 부모/자식 노드를 한 번에 검색하는데 비용이 많이 든다. Path Enumeration은 이러한 문제를 문자열을 이용해 각 노드의 속성으로 저장함으로써 해결할 수 있다. CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, path VARCHAR(1000), post_id BIGINT UNSIGNED NOT NULL, author BIGINT UNSIGNED NOT NULL, comment_date DATETIME NOT NULL, comment TEXT NOT NULL, FOREIGN KEY (..
사용자들이 댓글을 달고 서로에게 대답하면서 토론 스레드를 만들 수 있는 서비스를 개발할 때 각 댓글들이 어떤 댓글의 답변인지 알 수 있도록 아래와 같이 parent_id를 이용해서 간단하게 Comments 테이블을 구성할 수 있다. CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id) ); 그런데 딱 봐도 위와 같은 테이블 구성은 하나의 SQL 쿼리로 모든 댓글 연결들을 조회하는 것이 어려워 보인다. 바로 자식 댓글까지는 쉽게 얻을 수 있지만, 댓글 스레드는 무한히 생성될 ..
>>> number = 123 >>> number 123 >>> del number >>> number Traceback (most recent call last): File "", line 1, in NameError: name 'number' is not defined Python에서 del keyword를 사용하면 위와 같이 number은 더 이상 사용할 수 없게 된다. number에 접근하려고 하면 더 이상 해당 변수가 없기 때문에 NameError가 발생한다. 하지만 del은 객체를 제거하는 것이 아니라 변수와 같은 reference를 제거하는 것이 주요 목표이다. 다음 이상한 예시를 확인해 보자. >>> class MyClass: ... def __del__(self): ... print("M..
@Configuration annotation은 @Component라는 meta annotation으로 만들어진 composed annotation이다. (Meta Annotation, Composed Annotation) 하지만 @Component와는 다른 점이 바로 proxyBeanMethods 라는 것이다. proxyBeanMethods = false 기본적으로 @Configuration annotation의 proxyBeanMethods는 true이다. 그럼 proxyBeanMethods가 false일 때와 true일 때와 뭐가 다른 걸까? @Configuration annotation에 대해 이해하기 위해 아래와 같은 테스트 코드를 만들어봤다. public class ConfigurationTe..
Spring Boot는 Annotation을 적극적으로 활용하고 있다. 애플리케이션 로직을 담고 있는 클래스에 자주 사용되는 @RestController, @Service, @Reposeitory와 같은 익숙한 Application logic bean annotation들은 사실 모두 Composed Annotation (합성 애노테이션)으로 Meta Annotation을 조합해서 사용한 Annotation이다. 그럼 Meta Annotation이 뭘까? Meta Annotation Meta Annotation이란 다른 Annotation에서 사용되는 Annotation을 말한다. (@Service Annotation을 살펴 보면 @Component Annotation이 사용된 것을 확인할 수 있는데 이..
이전 포스트(Spring Boot가 뭔데?)에서 Spring Boot가 어떻게 시작되었고 어떤 기술인지 간단하게 살펴보았다. 이번에는 Spring Boot가 어떻게 독립 실행 될 수 있는지 알아보자. Standalone executable jar처음 Spring Boot 프로젝트를 생성하고 jar 파일로 빌드한 뒤 실행하면 아래와 같이 Spring 애플리케이션이 실행되는 것을 확인할 수 있다.gradle을 빌드 도구로 사용할 경우 ./gradlew bootJar 명령을 실행하면 build/libs 아래에 jar 파일이 생성된다. JAR: Java Archive, Java 애플리케이션이 동작할 수 있도록한 압축 파일이며 java runtime environment(jre)만 있어도 실행 가능하다. $ ja..
현재 Spring Boot를 현업에서 메인 기술로서 사용하고 있지만 동작 원리와 사용 방법에 있어서 왜? 어떻게? 라는 궁금증이 자꾸만 생겨 Spring Boot가 무엇인지, 왜 그렇게 동작하는지, Spring과는 어떻게 다른지 초점에서 정리해보고자 한다. Sprint Boot의 시작 Improved support for 'containerless' web application architectures [SPR-9888] · Issue #14521 · spring-projects/spring-framework 2012년 Spring 프레임워크 프로젝트 이슈로 등록된 "Containerless 웹 개발 아키텍처 지원" 요청에서 논의와 개발이 시작되었다. (위 issue가 생성되고 약 1년 뒤 아래와 같은 ..
Spring Boot에서는 config 디렉토리에 환경 변수 파일을 저장할 수 있다. 기본적으로 Spring Boot는 아래 나열된 순서대로 환경 변수 파일을 찾는다. A config subdirectory of the current directory. The current directory. A classpath /config package. config 디렉토리에 .env 파일을 만들어 환경 변수들을 저장하고 DB_HOST=localhost DB_PORT=5432 DB_USER=admin DB_PASSWORD=secret 아래 처럼 @Value annotation로 해당 변수들을 사용하면 된다. @RestController public class MyController { @Value("${DB_HO..
Github - OpenCV에서 data/haarcascades/haarcascade_frontalface*.xml 이름의 파일들이 있는데 이 xml 파일을 복사/다운로드 해서 아래와 같이 얼굴 인식을 테스트 해볼 수 있다. 저는 haarcascade_frontalface_default.xml을 이용해서 진행했다. # detectMultiScale Signature cv.CascadeClassifier.detectMultiScale(image\[, scaleFactor\[, minNeighbors\[, flags\[, minSize\[, maxSize]]]]] -> objects 참고: OpenCV - CascadeClassifier detectMultiScale 메소드 인자인 scaleFactor와 m..
Interpolation Methods for resizing cv2.INTER_AREA: 주로 이미지 크기를 줄이는데 사용한다. cv2.INTER_CUBIC: 속도는 느리지만 Interpolation 성능이 좋다. cv2.INTER_LINEAR: 주로 이미지 크기를 늘리는데 사용하고 OpenCV의 default Interpolation method이다. 참고: OpenCV - InterpolationFlags Shrink & Enlarge Image $ pip install opencv-python-headless numpy import numpy as np import cv2 # loading image img = cv2.imread('./testimg.jpg') # shrinking ..