본문 바로가기
728x90
반응형

전체 글179

[Spring] webSocket 보호되어 있는 글 입니다. 2023. 4. 5.
[Toast-UI Editor] 이미지 업로드 기능 변경 Toast UI Editor에서 이미지 업로드를 하면 base64 형식으로 에디터에 입력됩니다. base64 형식은 해상도가 올라갈수록 글자수가 어마어마하게 늘어나서, servlet의 max-file-size와 max-request-size를 초과할 수 있습니다. 그리고 그대로 DB에 저장하고 싶지 않겠죠? Toast UI Editor API 문서를 확인해 보면 다음과 같은 기능이 존재합니다. 다음은 addImageBlobHook으로 file에서 받아온 이미지 데이터를 업로드 후 url로 처리하는 로직입니다. const editor = new toastui.Editor({ el: document.querySelector(selectors), height: '300px', initialEditType: '.. 2023. 3. 20.
[Java] Exception이 성능에 미치는 영향 예전에 Exception에 대해 포스팅했었는데, 이번엔 Exception이 성능에 미치는 영향에 대해 알아보겠습니다. [java] 예외처리 Exception handling 이 글은 Java의 정석 (남궁성/도우출판) 기반으로 작성되었습니다. 1. 프로그램 오류 컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러 런타임 에러(runtime error): 실행할 때 발생하는 에러 에 moonsiri.tistory.com 예외 처리 장점 프로그램 실행 완료를 위한 제공 프로그램 코드 및 오류 처리 코드를 쉽게 식별 오류 전파 의미 있는 오류 보고 오류 유형 식별 JVM 예외 처리 순서 예외가 발생하게 되면, JVM은 발생한 예외를 처리할 수 있는 exception handler(tr.. 2023. 3. 19.
[Java11] Customizing redisCodec for redisCommands redis command를 날렸을 때 Key는 String, Value는 Object class로 받고 싶어서 커스텀 한 redisCodec입니다.key는 io.lettuce.core.codec.StringCodec, value는 io.lettuce.core.codec.ByteArrayCodec 참조하여 구현import io.lettuce.core.codec.RedisCodec;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.util.CharsetUtil;import org.springframework.util.SerializationUtils;import java.nio.ByteBuffer;import java.. 2023. 2. 9.
[Spring] @Transactional 과 UnexpectedRollbackException org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 아래 코드와 같이 예외가 발생했더라도 트랜잭션이 시작된 메서드에서 예외를 잡았으니 롤백 없이 커밋되고 정상적으로 값을 리턴할 것이라고 생각하였습니다. @Service public class AccountService { @Resource private HistoryService historyService; @Transactional public UserDetails signUp(UserVO param) { // ... try { historyService.add.. 2023. 2. 1.
ChatGPT - 대화형 인공지능 챗봇 ChatGPT는 OpenAPI가 개발한 GPT3.5를 기반으로 하는 프로토타입 대화형 인공지능 챗봇입니다. https://chat.openai.com/chat 현재는 간단한 회원가입 후 무료로 이용할 수 있습니다. 홈페이지의 공식 설명은 아래와 같습니다. ☀ 예시 "간단한 용어로 양자 컴퓨팅 설명" "10살 생일을 위한 창의적인 아이디어가 있나요?" "Javascript에서 HTTP 요청을 하려면 어떻게 해야 하나요?" ⚡ 기능 사용자가 대화 초반에 말한 내용을 기억함 사용자가 답변 내용을 수정 요청할 수 있음 부적절한 요청을 거절하도록 훈련됨 ⚠ 한계 때때로 잘못된 정보를 제공할 수 있음 때때로 유해하거나 편향된 정보를 제공할 수 있음 2021년 이후의 지식은 제한됨 정리하자면 ChatGPT는 다른 챗.. 2023. 1. 21.
[webFlux] SwitchIfEmpty가 항상 호출되는 이슈 해결 (Lazy Evaluation) webflux에서 if else문으로 switchIfEmpty를 주로 사용하는데, empty가 아닌 경우에도 switchIfEmpty를 항상 호출합니다. 왜 그러는 것인지, 어떻게 하면 호출을 안 하게 할 수 있는지 알아보겠습니다. 1: String str = "str"; 2: Mono.just(str) 3: .map(s -> { 4: System.out.println(s); 5: return s; 6: }) 7: .switchIfEmpty({ 8: System.out.println("defaultStr"); 9: return Mono.just("default"); 10: }) 11: .subscribe(); 위 코드를 보면 str이 비어 있지 않으니 문자열 "str"만 출력할 것이라고 생각하겠지만, 실.. 2022. 12. 20.
[SpringBoot] InfluxDB 연동 및 예제 시계열 데이터베이스 InfluxDB에 대한 설명과 설치는 아래 포스팅을 참고해주세요. [TSDB/InfluxDB] 시계열 데이터베이스 InfluxDB 설치하기 시계열 데이터베이스(TSDB, Time Series Database) Time-Stamped Data라고도 불리는 Time Seriese Data(시계열 데이터)는 시간에 따라 저장된 데이터를 의미합니다. 시계열 데이터들은 동일한 소스로부터 시간이 moonsiri.tistory.com 우선 influxDB의 UI에 접근합니다. (http://localhost:8086/) 메인 화면에 Java가 없다면 [MORE →] 버튼을 클릭합니다. java를 검색한 후 클릭합니다. 그러면 JAVA를 사용할 경우 추가해야 할 Dependency라던가 Client.. 2022. 11. 14.
[TSDB/InfluxDB] 시계열 데이터베이스 InfluxDB 설치하기 시계열 데이터베이스(TSDB, Time Series Database) Time-Stamped Data라고도 불리는 Time Series Data(시계열 데이터)는 시간에 따라 저장된 데이터를 의미합니다. 시계열 데이터들은 동일한 소스로부터 시간이 지남에 따라 만들어진 데이터들로 구성되므로 시간 경과에 따른 변화를 추적하는데 용이합니다. 이러한 시계열 데이터를 처리하기 위해 최적화된 데이터베이스를 시계열 데이터베이스(TSDB, Time Series Database)라고 하며, 빠르고 정확하게 실시간으로 쌓이는 대규모 데이터들을 처리할 수 있도록 고안되었습니다. TSDB는 데이터들과 시간이 함께 저장하는데, 이를 통해 시간의 흐름에 따라 데이터를 분석하기에 매우 용이합니다. 주로 INSERT와 SELECT에.. 2022. 11. 14.
[linux] yum으로 설치한 package 삭제하기 (yum uninstall 하기) yum으로 install 한 package를 삭제하는 방법에 대해 알아보겠습니다. 우선 yum으로 설치된 package 목록을 확인합니다. # yum list installed | grep [package name] 설치한 package를 확인 했으면 이제 삭제를 하겠습니다. # yum remove [package name] 명령어를 입력하고 중간에 진짜로 삭제할 것인지 확인하는 질문에서 [y]를 입력하면 삭제가 완료됩니다. 만약 apt 패키지가 설치되어있다면 apt-get으로 삭제 가능합니다. # apt-get purge --auto-remove [package name] 참고로 rpm으로 설치한 package는 다음과 같은 명령어로 제거합니다. # rpm -e [package name] [--node.. 2022. 11. 13.
728x90
반응형