본문 바로가기

분류 전체보기

(340)
[끄적끄적] SVG를 img태그로 불러올 경우 발생하는 문제와 해결 [끄적끄적] SVG를 img태그로 불러올 경우 발생하는 문제와 해결 프로젝트 진행중에 SVG에 관련된 기술적인 문제에 직면했다. 유저의 이미지 카드를 SVG형태로 만들어서 다른페이지에 삽입(예를들어, img태그를 사용해서)하는 서비스를 만들어야했는데, SVG를 태그로 불러올경우, SVG내부의 하이퍼링크로 불러오는 이미지가 동작하지 않았다. (하이퍼링크 뿐만아니라 자바스크립트도 동작하지 않는다.) (모종의 이유로 태그 사용이 강제되는 상황이여서 object나 embedded는 사용하지 못한다) 원인 보안적인 이유 때문에 로 불러온 하이퍼미디어 안의 는 적용되지 않는게 원인이였고, SVG관련 서비스를 프론트엔드에서 처리하는방식에서 백엔드로 바꿔, 서버에서 SVG의 모든 요소를 채워넣은 후, 클라이언트에게 전..
[JPA] SpringDataJPA - OSIV [JPA] SpringDataJPA - OSIV and etc.. 지연로딩으로 인해 프록시 객체가 들어있는 엔티티를 트랜잭션 범위 밖에서 초기화 하려고하면 에러가 발생한다. 스프링에서는 이런 문제를 해결하기위해, OSIV라는 방법을 제공하는데, 그 전에, API를 사용하지않고, 해결하는 방법을 알아보자. 미리 초기화, Facade, DTO만 넘기기 첫번째 해결법은 트랜잭션 범위가 끝나기전에 엔티티를 미리 초기화 하는 것 이다. 이 방법은 관리해야할 트랜잭션 범위가 OSIV보다 적어서 디버깅이 편하지만, 코드량이 늘어나는 단점이 있다. 또한, 뷰에 맞는 최적화 코드를 추가로 생성해야 하므로, 코드끼리의 논리적인 의존도가 증가할수있다. 예를들어, 뷰 A는 user1엔티티만 필요하고, 뷰 B는 user1엔티티..
[백준 / BOJ] 9489 사촌 문제 출처 : https://www.acmicpc.net/problem/9489 9489번: 사촌 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 노드의 수 n과 사촌의 수를 구해야 하는 노드의 번호 k가 주어진다. (1 ≤ n ≤ 1,000, 1 ≤ k ≤ 1,000,000) 다음 줄 www.acmicpc.net n명의 사람과 사촌의 수를 구해야하는 노드의 번호 k가 주어진다. 이때, k와 사촌인 사람의 수를 구하는 문제다. 풀이 (뜬금없는 메모리초과가 나온문제 자바로 풀어서 그런듯?) 트리 구조를 만들고 탐색을 해주면 풀리는 문제이다. 시간복잡도는, 1. 트리구조를 만드는데 n 2. 사촌을 찾는데 n 으로 O(2n)이 되는데, n이 최대 1000 이므로 TLE는 걱정..
[Toy 프로젝트] Commit Combo - Dev log Commit Combo - Dev log https://github.com/devxb/CommitCombo GitHub - devxb/CommitCombo: 깃허브 커밋 기록을 아름답게 꾸미는 프로젝트 ⭐ 깃허브 커밋 기록을 아름답게 꾸미는 프로젝트 ⭐. Contribute to devxb/CommitCombo development by creating an account on GitHub. github.com 이 당시, 1일 1커밋 운동에 대해서 관심이 많았고, 실제로 알고리즘 문제를 하루에 1문제씩 풀며, 1일 1커밋을 하고있기도 했었다. 문제를 못 푸는 날은 옛날에 풀었던 문제를 커밋하며 1일 1커밋을 이어가려고 노력했었는데, 이를 좀 더 재밌게 하고자 만든 애플리케이션이다. 애플리케이션을 만들때 ..
[Spring Boot] Interceptor - postHandle() SpringBoot Interceptor 유저의 접근 경로에 따라 방문자수를 증가시켜야하는 기능을 구현해야했는데, 내가 생각한 선택사항은 크게 두가지였다. 1. 방문자수 증가 로직이 필요한 객체마다 해당 기능을 구현한 객체를 참조하게 한다. 2. 인터셉터를 하나 두어 방문자수 증가 로직이 필요한 경우 인터셉터가 작동하게 한다. 나는 2번을 선택했는데, 그 이유는, 인터셉터를 이용할경우, 객체간의 의존성을 크게 줄일 수 있을것이라고, URL을 참조해서 방문자 수를 증가시켜야 하기에, 인터셉터 발동 조건을 URL별로 설정할수있는 인터셉터가 최적일 것 이라고 생각했다. 어쨌든 위와 같은 때문에 Interceptor에 해당 기능을 구현하기로 했는데, 문제되는 상황은 다음과 같았다. - 비즈니스 로직에서 예외를 ..
[백준 / BOJ] 23040 누텔라 트리 (Easy) 문제 출처 : https://www.acmicpc.net/problem/23040 23040번: 누텔라 트리 (Easy) 첫째 줄에 트리의 정점의 개수 $N$이 주어진다. ($2 \le N \le 100\,000$) 이후 $(N-1)$개 줄에 걸쳐 각 간선이 잇는 두 정점의 번호 $u_i$, $v_i$가 공백을 사이에 두고 주어진다. ($1 \le u_i \le N$, $1 \le v_i \le N$, www.acmicpc.net 빨간색과 검은색 정점들로 이루어진 트리가 있다. 시작은 검은색 정점, 나머지 정점은 모두 빨간색인 경우 이를 누텔라 경로라고한다. 트리에서 누텔라 경로의 갯수를 찾는 문제였다. 풀이 시간초과를 주의해야했던 문제였다. 논리는 아래와 같다. 검은색 정점에서 시작해, 거쳐간 빨간색 ..
[백준 / BOJ] 23089 사탕나무 문제 출처 : https://www.acmicpc.net/problem/23089 23089번: 사탕나무 기준이 되는 사탕을 3번 사탕으로 정하면 총 5개의 사탕을 먹을 수 있다. www.acmicpc.net 트리구조의 사탕나무에 사탕이 열려있다. 안즈는 기준이 되는 사탕하나를 골라 해당 사탕부터 K이하에 있는 모든 사탕을 먹을려한다. 이때, 최대로 먹을 수 있는 사탕의 갯수를 출력하는 프로그램을 만드는 문제다. 풀이 누적 합에 DP를 이용해 푼 문제다. 문제 풀이 자체는 어렵지 않았으나, 구현시 신경써야할점이 많았었다. 구현 문제에서 어려웠던것은, K가 1초과일때(K가 1초과인 이유는 K가 1이라면, 자신의 자식만 확인하면되므로 문제되지 않기 때문이다.), K번째 자식까지 선택한 사탕의 갯수를 빠르게 ..
[Java] 스레드와 Synchronized 자바 멀티스레드 프로세스 스레드 글 보러가기 https://dlwnsdud205.tistory.com/279 [Java] Java Heap Stack Static 프로세스 와 스레드 자바의 메모리 구조를 이해하기위해선, 우선 프로세스와 스레드의 차이를 알아야한다. 프로세스 프로세스는 운영체제에서 할당받는 하나의 공간으로 각각의 프로세스는 독 dlwnsdud205.tistory.com 프로세스란 실행중인 하나의 프로그램이다. 모든 프로세스는 하나의 메인스레드를 갖고있으며, 프로세스의 동작은 메인스레드에 의해서 이루어진다. 멀티스레드란 하나의 프로세스 내에서 여러개의 스레드를 만들어 동시에 작업을 수행하는것으로, 프로세스를 만들어 병렬처리하는것보다 효율이 좋다. 멀티프로세스 - 여러개의 프로세스를 만들어 동..