전체 글
-
java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: ***
**java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: ***** TL;DR; 동시에 65535개 이하의 레코드를 조회, 추가하는 경우라면 Postgres 라이브러리를 42.4.0이상 버전으로 업데이트 그 이상의 레코드를 조회, 추가하는 경우라면 끊어서 조회, 추가하도록 수정 문제 환경: Java 11, Spring Boot 2.7.8, Postgres14.4 코드: 서버로 부터 데이터를 조회하는 코드 에러: org.postgresql.util.PSQLException: An IO error occurred while sending to the backend ... at org.postgresql.core.v3.Que..
-
sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place? (Background on this error at: https://sqlalche.me/e/20/xd2s)
TL; DR; 세션을 관리하는 DAL 을 분리하는 것이 바람직 문제 환경 / 버전: Python 3.11.3 fastapi 0.95.1 greenlet 2.0.2 SQLAlchemy 2.0.13 에러 코드 : 다음 코드에서 @app.put('/images/{image_id}/upvotes', response_model=ImageResult) async def upvotes_image(image_id: str): Session = sessionmaker(bind=engine, class_=AsyncSession) async with Session() as session: try: # 이미지 수정 query = select(Image).options(selectinload(Image.tags)).where(..
-
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted 해결
TL; DR; docker 실행 시 --cap-add=SYS_PTRACE 옵션을 붙여서 실행 문제 docker 내에서 jmap 실행시 권한 에러 발생 환경 / 버전: docker / 스프링 에러 코드 : Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted 해결 jmap은 자바 메모리 분석을 위해 내부적으로 ptrace 명령어를 사용함 일반적인 리눅스에서는 ptrace_scope 파일을 0으로 수정하여 권한 에러를 해결 가능하나, docker 컨테이너 내부에서는 해당..
-
Set language level to 17 (Preview)" adds VERSION_17_PREVIEW to build.gradle
TL; DR; // build.gradle sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 test { useJUnitPlatform() jvmArgs(['--enable-preview']) } tasks.withType(JavaCompile).each { it.options.compilerArgs.add('--enable-preview') } wrapper { gradleVersion = '7.3.1' } 문제 // build.gradle sourceCompatibility = JavaVersion.VERSION_17_PREVIEW targetCompatibility = JavaVersion..
-
[javascript] 컬렉션 정리
요즘 프론트엔드 업무를 하게 되면서 자료를 변환하는 일을 많이 하게 됐다. 자주 쓰는 패턴을 정리해본다. 1. keyset, valueset 합치기 // k, v로 k_v를 만들고 싶을 때 const k = ['a', 'b', 'c', 'd'] const v = [1,2,3,4] let k_v // {'a': 1, 'b': 2, 'c': 3, 'd': 4} // lodash 사용 시 k_v = _.zipObject(k, v); // 구현 k_v = k.reduce((obj, val, idx)=>({...obj, [val]: v[idx]})) 2. list와 list group 합치기 // 다음과 같은 그룹에서 objs에 해당하는 리스트를 모두 더하고 싶을 때 const objsOwners = [ { ob..
-
[linux] 스크립트 위치
TL; DR; #!/bin/bash SCRIPT_PATH="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; 문제 환경 / 버전: Ubuntu / 18 LTS bin/bash bin/sh 에러 코드 / 문제 : 얼마전 스크립트를 작성하면서 현재파일의 경로를 제대로 구하지 못하는 문제를 만나게 되었다. 이전까지는 아래와 같은 스크립트를 사용하여, 경로를 구해왔는데, SCRIPT_PATH=$(dirname $(realpath -s $0)) 이 방법은 realpath 명령어를 사용하여 파일의 경로를 구하는 방법으로 1. pwd -P 와 동일한 기능을 하는 realpath 명령어 2. 파일 경로를 담은..
-
[linux] 자동화 스크립트 터미널이 보이게 실행하기
TL; DR; gnome-terminal "" 문제 환경 / 버전: 우분투 / 18 LTS 에러 코드/문제 : 얼마 전, 편의를 위해 서버 부팅시 자동으로 시작하는 스크립트를 추가하였는데, 실행은 잘 되었으나, 결과가 잘 안보여서 제대로 켜졌는지 알 수 없는 문제가 있었다. 해결 일반적인 실행이라면, /bin/bash "" 로 실행하지만, 이 경우 터미널이 보이지 않는다 gnome-terminal "" 로 실행하면 해당 스크립트를 실행하는 터미널이 열리게 된다 해당 스크립트가 완료될 때 까지 기다려야 하는 경우는 gnome-terminal --wait -- "" 로 실행하면 된다 참조
-
pmount에서 Permission denied 당할 때,
TL; DR; adduser username plugdev 문제 환경 / 버전: ubuntu 20.04 LTS 에러 코드 : pmount: Permission denied 해결 pmount 는 sudo 없이 mount 를 쉽게 할 수 있게 해주는 고마운 툴로 해당 툴을 사용하기 위해선 사용 유저가 plugdev 그룹에 들어가 있어야 한다. plugdev 그룹은 `Access external storage devices` 권한을 부여하는 그룹으로 외부 기기를 마운트, 언마운트 하기 위해 필요한 그룹이다. 우분투를 처음 설치할 경우, 첫번째 유저는 자동으로 adm, dialout, cdrom, plugdev, lpadmin, admin, sambashare 등의 그룹에 자동으로 속하게 되므로 추가해줄 필요가..