🍏 최근 포스트
-
JPA 구조는 어떻게 되어있고 spring-data-jpa와는 뭐가 다를까?
JPA는 Java Persistence API로, 자바 객체와 DB를 매핑하기 위한 인터페이스를 제공하는 자바 ORM 기술의 표준 명세입니다. SQL Mapper ORM sql과 객체를 매핑 DB와 객체를 매핑 mybatis, jdbcTemplate 등 hibernate, EclipseLink 등 개인적으로 mybatis를 썼을 때는 복잡한 sql문이 필요할 때는 비교적 편리하게 작성할 수 있다는 장점이 있었습니다. 하지만 DB를 중간에 변경하기 어렵고, 기획 변경사항이 생길 때마다 sql문을 일일이 수정해줘야하는 반복 작업을 수행해야 했습니다. 그래서 CRUD를 하루종일 짜고 있는 개발에서 벗어나 비즈니스 로직에 집중하기 위해 ORM 에 관심을 가지게 되었습니다. ❓ORM이란 객체는 객체대로, DB는 ..
-
[Java/kotlin] None of the following functions can be called with the arguments supplied 에러 해결
Java로 개발중이던 소셜로그인 코드를 코틀린으로 마이그레이션 하는 과정에서 만난 에러를 공유합니다. WebSecurityConfiguration에서 접근허용 배열인 AUTH_WHITELIST를 antMatchers에 설정하려고 할 때, None of the following functions can be called with the arguments supplied. 에러를 만나게 되었습니다. 해당 에러는 제공된 인수로 다음 함수를 호출할 수 없다는 에러인데, 이미 존재하는 배열인 AUTH_WHITELIST를 vararg(가변인자) 함수로 넘기려고 할 때 스프레드 연산자인 *를 붙여주지 않아서 발생하는 문제였습니다. 기존 코드 private static final String[] AUTH_WHITELI..
-
[Java] JVM 구조와 메모리 영역 - Method, Heap, Stack Area
JVM 동작 과정 JVM은 자바 가상 머신으로, 자바 바이트 코드를 해석하고 실행하는 역할을 합니다. 자바 코드는 JVM을 통해 실행되므로 Window, Linux와 같은 다른 OS에서도 동일하게 실행할 수 있다는 장점이 있습니다. 구체적으로 메모리 영역을 공부하기 전에 JVM이 자바 소스코드를 어떻게 OS에서 실행하는지 과정을 살펴봅시다. 1. 자바 소스코드인 .java 파일을 컴파일러가 자바 바이트 코드인 .class로 변환합니다. 2. .class 코드를 JVM의 클래스 로더에게 보냅니다. 3. 클래스 토더는 JVM 런타임 데이터 영역으로 로딩하여 JVM의 메모리에 올립니다. 모든 자바 프로그램은 JVM을 통해 실행됩니다. 일단 프로그램이 실행되면 JVM은 OS로부터 프로그램을 수행하는데 필요한 메..
-
Git Repository not found 에러 해결 with 인텔리제이 단축키
⚠️ 에러 상황 프로젝트 organization에 초대받고, 리드 개발자 분께서 private 레포지토리를 하나 생성하여 초기 세팅을 한 상태에서 git clone을 했습니다. 그리고 한참 로컬에서 작업하다 Intellij 단축키로 git push를 하려고 하니 해당 에러가 나면서 젯브레인을 통해 깃헙 로그인을 하라는 창만 자꾸 나타났습니다. remote: Repository not found.fatal: repository 'https://github.com/organization /repositoryName.git/' not found 뒤늦게 레포지토리에서 제 권한이 read였다는 걸 알고, 권한 수정을 부탁드려서 admin으로 바꿨지만 여전히 같은 에러를 내고 있었습니다. 레포의 admin권한을 받..
🍎 인기 포스트
-
[Springboot] '최근 읽은 글' Dto로 Redis에 저장하고 조회하기 AtoZ
❓ redis 를 선택한 이유 블로그 홈페이지를 만드는 프로젝트에서, "최근 읽은 글" 을 개발해야하는 상황이 있었습니다. velog 같은 서비스에서는 꽤 오랜 기간동안 내가 읽은 글을 저장하는 듯 했는데, 현재 프로젝트의 기획에서는 일주일이라는 기간이 지정되어있었습니다. 처음에는 테이블을 하나 더 생성해야하나 고민이 되었는데, 읽은 글 특성 상 단기간에 많은 데이터가 수집된다는 점과 만료 기간을 설정하는 것이 성능 상으로 좋지 않을 것이라고 생각했습니다. 그러다 이전 프로젝트에서 refreshToken을 저장할 때 redis를 사용했던 것이 생각나서, redis로 조회한 글 데이터를 캐싱하고, 일정 기간이 지나면 삭제되는 기능을 적용해보고자 합니다. 📌 구현해야하는 기능 redis list 자료형을 사..
2021.06.18 17:53 -
Git Repository not found 에러 해결 with 인텔리제이 단축키
⚠️ 에러 상황 프로젝트 organization에 초대받고, 리드 개발자 분께서 private 레포지토리를 하나 생성하여 초기 세팅을 한 상태에서 git clone을 했습니다. 그리고 한참 로컬에서 작업하다 Intellij 단축키로 git push를 하려고 하니 해당 에러가 나면서 젯브레인을 통해 깃헙 로그인을 하라는 창만 자꾸 나타났습니다. remote: Repository not found.fatal: repository 'https://github.com/organization /repositoryName.git/' not found 뒤늦게 레포지토리에서 제 권한이 read였다는 걸 알고, 권한 수정을 부탁드려서 admin으로 바꿨지만 여전히 같은 에러를 내고 있었습니다. 레포의 admin권한을 받..
2021.07.16 16:18 -
[KoNLPy] 은전한닢(mecab) 사용자 사전 추가하기
📚 mecab 사용자 사전 기본적으로 mecab은 제공하는 사전 외에 , 사용자가 직접 입력해서 형태소를 입력해서 단어를 인식할 수 있도록 하는 '사용자 사전'을 제공합니다. 기존 사전에 다양한 단어들이 있지만, 생각보다 원하는 대로 검색이 안되는 경우가 있는데, 이 때 사용자 사전을 사용하면 mecab을 더 다양하게 활용할 수 있습니다. ❗️목표: 문장 내에 있는 '의약품명'을 NNP 태그로 추출할 수 있었으면 좋겠다. 먼저 mecab-ko-dic 폴더로 들어가서 ls로 해당 디렉토리에 있는 폴더를 확인합니다. 여기서 user-dic 디렉토리로 들어가봅시다. cd mecab-ko-dic-2.1.1-20180720 ls cd user-dic 위에 EC, NNP, NNG.csv 등은 mecab-ko-dic..
2020.08.12 19:53 -
[Docker Error] failed to solve with frontend dockerfile.v0: failed to create LLB definition: 에러 해결하기
❓ 문제 docker 이미지를 빌드하는 과정에서 tag name을 잘못쓴 걸 깨닫고 ctrl+c로 나갔는데, 그 뒤로 빌드하려고 하면 이러한 에러가 나오면서 제대로 빌드되지 않았습니다. ailed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to authorize: rpc error: code = Unavailable desc = transport is closing ✅ 해결 방법 1) 터미널에서 해결하기 docker buildkit을 사용하지 않겠다고 설정하는 방법으로 해결할 수 있습니다. bulidkit은 docker bulid . 명령어를 사용할 수 있도록 하는 환경설정 중 하나입니다. export DOC..
2020.12.21 21:46