분류 전체보기 145

[리액티브 프로그래밍] User Thread, Daemon Thread의 차이점

사용자 쓰레드(User Thread)와 대몬 쓰레드(Daemon) 사용자 쓰레드와 대몬 쓰레드의 차이점은 메인 쓰레드(Main Thread)가 종료되었을 때 함께 종료되는가, 그렇지 않은가에 있다. 사용자 쓰레드는 메인 쓰레드가 종료되어도 프로세스를 강제로 종료하지 않는다. (종료하는 주체는 JVM이다.) 반면에 대몬 쓰레드는 메인 쓰레드 또는 남겨진 사용자 쓰레드가 종료되면 강제로 프로세스가 종료된다. 아래 예제 소스코드에서 Reactor라이브러리에서 제공하는 Flux 클래스의 Flux.interval() 함수와 단일 쓰레드를 생성하는 Executors.newSingleThreadExecutor() 함수가 정의되어 있다. Flux.interval() 함수는 내부적으로 대몬 쓰레드를 생성하여 로직을 실행..

[MyBatis] 계층형 결과 리스트 생성 (resultMap, collection 활용)

대표적으로 카테고리의 계층형 결과를 조회할 때 이 방법이 사용될 수 있다. 실제로 실무에서 사용 중인 테이블 구조와 소스코드를 필요한 부분만을 예제로 사용했다. 오라클처럼 계층형 쿼리가 있는 dbms라면 좋겠지만, mysql은 쿼리에서 지원되지 않는다. 별도의 함수를 만들거나 with recursive 라는 지시어를 사용하던데 mybatis로 해결이 되는 일이기 때문에 일일이 시도해보지 않았다. 샘플 데이터 계층 구조 데이터의 계층 구조는 다음과 같다. (* 코드명 ... 코드 형식으로 표기) 인사기준 ... L1 출장 ... L1_M1 국내 출장 ... L1_M1_S1 해외 출장 ... L1_M1_S2 퇴직 ... L1_M2 퇴직금 산출기준 ... L1_M2_S1 퇴직금 중간정산 ... L1_M2_S2..

[SpringBoot] 스프링부트 실행 시 톰캣 에러 (내/외부 톰캣 사용 문제)

# 오류 2021-02-19 10:48:50.749 ERROR 26881 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(To..

젤다의전설/야숨/화살파밍 (미로숲 화로대)

화살 파밍 장소로 유명한 사이하테노 섬이 아닌 코로그들이 살고있는 미로숲에서도 화살 파밍이 가능하다. 비록 연발 가능한 활이 있어야 가능하지만, 사이하테노 섬보다 빠르게 화살을 수급할 수 있다. 원리 나무나 나무방패 등 목재 소재에 화살을 쏘면 화살이 박힌다. 따라서 목재 화로대에 연발로 화살을 쏘면 화살이 모두 박히게 된다. 5연발 활의 경우, 1발을 쏘면 화살 5개가 박히므로, 1발 당 4개의 화살을 얻을 수 있다. 준비물 연발 가능한 활 (x3 또는 x5, 라이넬에게서 수급 가능) 화살 최소 1개 이상 1. 미로숲 입구로 이동 산림의 탑으로 워프하면 미로숲 입구까지 날아갈 수 있다. 안쪽으로 들어가면 화로대를 발견할 수 있다. 2. 활을 장착하고 아무 화로대 앞에 가서 앉는다. 3. 불이 타는 곳으..

[ios] UITextField 사용할 때 키보드 타입 변경

iOS에서 텍스트필드에 문자를 입력할 때 노출가능한 키패드의 종류는 enum 타입으로 정의되어 있고, 소스코드에서 변경 가능하다. Swift @IBOutlet var keywordInput: UITextField! override func viewDidLoad() { super.viewDidLoad() keywordInput.keyboardType = .default } enum UIKeyboardType: int default - Specifies the default keyboard for the current input method. asciiCapable - Specifies a keyboard that displays standard ASCII characters. numbersAndPunctu..

[Spring5] WebFlux + Thymeleaf + Kotlin

스프링 부트 초창기에 Spring MVC 에서 Thymeleaf를 사용해보았는데, WebFlux 에서 사용하기는 처음이었다. 더군다나 코틀린 언어도 처음 접해보는 거라서 많이 낯설었다. 기존에 알던데로 application.yml에 설정을 작성하고, viewResolver를 추가하고, addResourcesHandler를 추가하고.... Spring MVC에서 하던대로 했는데 아무리 해도 templates/index.html을 뷰리졸버가 찾지 못했다. 구글 검색에서 나오는 많은 예시들을 따라해봤는데 여전히 안 되더라.. 폭풍 검색 끝에 실행되는 소스코드를 찾았다. (나중에 webflux에 익숙해지면 이 포스트를 보며 한심하게 느껴지려나....) 프로젝트 명: 두끼 (Dookki) * 그 떡볶이 맞음 bu..

[리액티브 프로그래밍] 리액티브 프로그래밍이란

핵심 용어 Observer (+ Obeservable) Subscriber Scheduler (+ Schedule) Functional Programming Reactive Operators (=> Pre defined function / map, flatMap, forEach 등) ※ Declarative Programming = Functional Programming + Reactive Operators 핵심 Flow 데이터의 발행 -> 데이터의 처리, 가공 -> 데이터를 구독 비동기 작업의 차이 이해 작업 A와 B를 비동기 방식으로 순차적으로 처리할 때, 흔히 알고있는 비동기 방식은 작업 A가 완료되면 작업 B를 호출 즉, 콜백하는 것이다. 이 때, 작업 A는 메인 함수, 작업 B는 콜백 함수라고..

닌텐도 스위치 인터넷 속도 빠르게 하기

앞으로 89시간 13분 ??????? 저스트댄스를 e숍에서 소프트웨어로 구매 및 설치했다. 처음에 설치 시간이 12시간 찍히길래 “좀 냅두면 팍팍 깎이겠지~” 하면서 롤 3시간 하고왔는데 ㅋㅋ 시간이 더 늘었다. ㅋㅋ 점점 늘어나더니 뭔 90시간이 넘게 찍히더라 ㅎㅎ 우리집 인터넷이 이상한가? 느린가? 싶다가 도저히 이건 아니지 싶어서 인터넷에 찾아보니까 역시 해법이 있었다. 본체 인터넷 설정에서 DNS를 바꿔줘야 했다. DNS를 변경하는 방법은 닌텐도 스위치 Support 사이트에도 안내되어 있다. www.nintendo.co.kr/support/switch/qna/view.php?no=120 Nintendo A Nintendo Switch의 인터넷 접속 설정(DNS 설정)에서 일시적으로 다른 DNS ..

[NodeJS] Node Sass version 5.0.0 is incompatible with ^4.0.0.

이전에 Vue 프로젝트 실행할 때 NodeJS 15 버전과 node-sass 4.14.1 버전이 호환하지 않아서 오류가 발생했었고, node-sass를 호환 버전인 5.0.0으로 설치함으로써 해결했다. 이제 잘 되나 싶었는데 또 다른 버전 문제로 의심되는 오류가 나더라. # 오류 Node Sass version 5.0.0 is incompatible with ^4.0.0. # 원인 이번에는 node-sass와 node-loader의 버전이 상호 지원하지 않는 이유였다. 기존에 설치되어있던 각 모듈 버전은 이러했다. - NodeJS: 14 - node-sass: 4.14.1 - sass-loader: 7.3.1 여기서 NodeJS와 node-sass를 각각 15와 5.0.0으로 올렸고, 컴파일할 때 위의 ..