본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


전체 글674

Javascript debounce throttle(이벤트 제어) 세상은 넓고 다양한 기술은 언제든 빠른 속도로 나오는 것 같습니다! 역시 개발자는 끊임없이 노력하고 공부해야 하나 봅니다..;ㅁ; 효과적인 이벤트 제어를 위해 lodash-es 에서 제공하는 2개의 기능을 사용하여 보았습니다. 1. debounce : 여러번 클릭(다른 이벤트도 가능)했을 때 마지막 한번 행위가 동작 debounce 함수는 이벤트의 행위를 가장 마지막에 한 행위만 하도록 합니다. 가령, 게시글 등록, 문의사항 수정 등 데이터의 변경에 대한 행위가 딱 한번만 되야하는데... 사용자가 실수로 클릭을 여러번 하게되면 클릭 한 횟수만큼 이벤트가 동작하게 됩니다.(또는 화면 리사이징??) 그 때 사용 할 만한 함수가 debounce 입니다. 사용법은 debounce 함수를 호출하고 원하는 시간값(.. 2023. 3. 14.
SpringBoot gRPC 체험 후기 - 2 (파일, File) * 이전내용 : https://lts0606.tistory.com/654 SpringBoot gRPC 체험 후기 - 1 gRPC는 데이터를 주고받기 위한 HTTP프로토콜을 "서비스(Serivice)" 라는 개념으로 정의한 개념의 규칙 입니다. 구글링하면 워낙 훌륭한 글 들이 많아서... 자세한 기능과 설명은 여러 포스팅을 보는 lts0606.tistory.com gRPC를 활용하여 파일을 주고받는 방법도 어렵지 않습니다. proto 파일의 내용에서 파일 형식의 응답객체와, 해당 객체를 사용하는 메서드를 추가하여 줍니다. * proto 파일 내용 syntax = "proto3"; option java_multiple_files = true; option java_package = "kr.com.rts.pr.. 2023. 3. 8.
SpringBoot gRPC 체험 후기 - 1 gRPC는 데이터를 주고받기 위한 HTTP프로토콜을 "서비스(Serivice)" 라는 개념으로 정의한 개념의 규칙 입니다. 구글링하면 워낙 훌륭한 글 들이 많아서... 자세한 기능과 설명은 여러 포스팅을 보는 것이 좋을 것 같습니다. * 해당 포스팅은 설명 보다는 개발환경을 구축해서 테스트하는 내용 위주로 작성되어 있습니다. gRPC를 구현하여 어떠한 기능을 하는지 살펴보기 위해 개발환경을 구축하여 보았습니다. # 개발환경 - OS : 윈도우 11 - Java : 17 - SpringBoot : 부트버전에 크게 영향받지 않습니다. - 개발도구 : STS - 빌드 : maven #1. protoc 설치 가장 처음에 할 일은 protoc를 설치해야 합니다. 윈도우 환경에서는 사실 압축풀기 + 환경변수 잡기 .. 2023. 3. 8.
리코일 set, get 그리고 async(recoil get set async) 리코일에서 제공하는 함수 중 셀렉터(selector)가 있습니다. 요녀석은 리코일의 set, get 기능을 편리하게 사용 할 수 있게 해주는 기능 입니다. 또한 다양한 리코일의 상태(atom)을 키 값을 통해서 반환 하기도 합니다. 이번에 만난 이슈는 리코일의 셀렉터(selector)를 활용 할 때의 동기화 이슈 였습니다. 아래와 같이 세션 스토리지에 간단하게 사용자 정보를 저장하는 기능을 구현 하였습니다. import { atom, selector, } from "recoil"; import { recoilPersist } from 'recoil-persist'; //yarn add recoil-persist //리코일 상태값을 "sessionStorage" 에서 적용하게 합니다. const { per.. 2023. 3. 6.
Nio 패키지 TCP 서버 종료 이벤트(Selector, ServerSocketChannel) TCP 서버를 nio 패키지의 클래스를 활용하여 개발하던 중 만난 이슈 입니다. 물론, 서버채널(ServerSocketChannel)은 비동기(configureBlocking 값이 false)인 상황 이였습니다. 네트워크가 끊어진 경우에는 셀렉터의 키 값을 반환(cancle) 하고 체널을 종료(close)를 해 주어야 합니다. 그렇지 않으면 해당 채널은 계속해서 iterator를 통해서 나오기 때문 입니다. 대략 아래처럼 코드를 작성 하였습니다. //생략.. Selector selector; { Iterator it = selector.selectedKeys().iterator(); while (it.hasNext()) { SelectionKey key = (SelectionKey) it.next(); .. 2023. 2. 15.
MongoDb Maven build 오류(JSONObject, JSONArray) 몽고DB를 사용하여 프로젝트를 하다가 간혹 빌드(Build)를 시도하다 만날 수 있는 오류 입니다. 개발도구에서는 아무이상 없이 잘 돌아가는데 빌드를 하면 패키지가 없다며 오류를 만날 때가 있습니다. 스택오버플로우(stack overflow)를 검색하다보면 해당 문제는 사용중인 라이브러리가 빌드(build) 환경에서는 포함되지 않아서 발생하는 문제라고 쓰여 있습니다. 아래는 JSONObject 클래스를 사용한 pom.xml 내용 입니다. org.springframework.boot spring-boot-starter-data-mongodb 해당 라이브러리를 적용하면 실제 클래스에서의 JSONArray 객체의 패키지명은 아래와 같습니다. import org.springframework.boot.config.. 2023. 2. 2.