분류 전체보기

HisStory/나는리뷰어다2024

개발자를 위한 최소한의 실무 지식 (리뷰)

2023년에 이어 2024년도 한빛미디어의 서평단이 되었다. 감사한 마음을 담아 작년보다 더 나은 리뷰를 쓸 수 있도록 노력해야겠다. 한줄평: 실무에서 사용될 다양한 키워드들을 빠르게 습득할 수 있는 책 책에서 독자 방향을 취준생 ~ 1~2년 차 신입 개발자로 잡았는데, 개인적으로 취준생 ~ 입사 신입 때 읽기 좋은 책이었다. 부제로도 나와있듯 40가지 핵심 기술에 대해서 설명하다보니, 한 기술에 대해 깊이 설명하기 보다는 핵심을 잘 짚어주는 느낌이었다. 이 책에서 좋았던 점은 아래와 같다. 1. 다양한 분야를 설명한다고 해서 결코 깊이가 얕지 않다. 2. 다양한 키워드를 짚어준다. 3. 용어에 대한 설명이 매력적이었다. 1. 다양한 분야를 설명한다고 해서 결코 깊이가 얕지 않다. 핵심적인 키워드들을 잘..

HisStory/나는리뷰어다2023

Release의 모든 것 (리뷰)

한줄평: 제목을 참 잘 지은 책. 35년 경력을 가진 선배 개발자가 직접 겪은 다양한 이슈와 과거 큰 이슈들을 이야기해주면서 실제 프로덕트 환경의 무서움을 알려주는 책이다. 코드를 잘못 작성해서, 요구사항과 다른 구현, 예외처리를 놓쳐서 등 프로그램을 잘못 작성해서 발생하는 문제들은 분명 많다. 많은(거의 모든) 개발자들은 위 사실을 알고 최대한 위와 같은 일들이 일어나지 않도록 테스트 코드를 작성하고, 많은 테스트를 통해 방지를 위해 힘을 쓴다. 하지만, 실환경에서는 문제가 저게 다가 아니다. 테스트 환경에서는 발견할 수 없었던 문제가 실환경에서는 더 많은 서버가 올라가고, 더 많고 무작위인 많은 트래픽(사용자)로 인해 성능 테스트에서 발견하지 못한 문제를 만날 수도 있으며, 많은 사람이 믿고 사용하는..

HisStory/나는리뷰어다2023

초보자도 프로처럼 만드는 플러터 앱개발 (리뷰)

백엔드 개발자로 일을 하면서 앱개발을 한 번도 해본 적은 없지만, 앱 개발을 배워보고 싶다는 생각이 있었다. ios, 안드로이드를 별도로 개발하지 않는 기술 중 리액트 네이티브와 플러터 중 뭘 배울까 고민했던 적이 있었는데 구글에서 활발하게 지원하고 있는 플러터를 배워보고 싶었고, 마침 이번에 기회가 생겨서 이 책을 읽어봤다. 다양한 연습 사실 문법만 배운다고 바로 내가 원하는 앱을 만들기는 쉽지 않다. 여러 번 만들어봄으로서 계속해서 연습해봐야 하는데, 이 책에서는 단계단계 여러 프로젝트를 진행한다. 초보자의 경우 실제 내가 친 코드의 결과물을 보는 게 흥미를 느낄 수 있어 앞으로 공부하는 데에 도움이 되는데, 2장에서는 문법 설명 이전에 코드를 먼저 따라서 치는 실습이 있어서 흥미를 올릴 수 있어서 ..

JVM/Spring

[Toby Spring Reactive Programming] 비동기 RestTemplate과 비동기 MVC/Serlvet (5)

서론 https://www.youtube.com/watch?v=ExUfZkh7Puk 토비님의 유튜브 강의 내용을 정리한 글 입니다. 본론 @RestController public static class MyController { AsyncRestTemplate rt = new AsyncRestTemplate(); @GetMapping("/rest") public String rest(int idx) { return rt.getForEntity("http://localhost:8081/service?req={req}", String.class, "hello" + idx); } } AsyncRestTemplate을 사용하면, 톰캣 스레드 1개로 처리가 가능하다. 하지만, 백그라운드 스레드가 생성되어 처리하기..

JVM/Spring

[Toby Spring Reactive Programming] 자바, 스프링의 비동기 (4)

서론 https://www.youtube.com/watch?v=aSTuQiPB4Ns 토비님의 유튜브 강의 내용을 정리한 글 입니다. 본론 스프링 컨트롤러 리턴타입에 따른 동작방식 #1 Object @GetMapping("/async") public String async() throws InterruptedException { log.info("async"); Thread.sleep(2000); return "hello"; } 기본 tomcat thread pool 수인 200개 까지만 동시처리가 가능하다. [링크] https://tomcat.apache.org/tomcat-8.5-doc/config/executor.html #2 Callable @GetMapping("/callable") public ..

JVM/Spring

[Toby Spring Reactive Programming] Schedulers (3)

서론 https://www.youtube.com/watch?v=Wlqu1xvZCak 토비님의 유튜브 강의를 보고 정리한 내용입니다. 본론 https://kdhyo98.tistory.com/136 이전 코드까지는 모두 main스레드에서 동작했다. 하지만, IO나 큰 계산같은 작업들이 있다면 main스레드가 끝날 때까지 멈추게 되는데, 모바일 어플로 생각하면 버튼을 누를 때 작업을 완료될 때까지 멈추게 된다. 사용자가 작업 처리를 기다리지 않고 다른 이벤트를 받을 수 있도록 백그라운드에서 동작시켜야 하는데, 이걸 main이 아닌 다른스레드에 작업을 넘겨 처리할 수 있다. Ractive Streams 구현 사용자가 다 확인할 필요가 없는 경우에는 백그라운드에서 동작을 시켜 main은 다른 이벤트를 받게 할 수..

JVM/Spring

[Toby Spring Reactive Programming] Operators (2)

서론 https://www.youtube.com/watch?v=DChIxy9g19o 토비님 유튜브 강의를 보고 정리한 내용입니다. 본론 Operator https://kdhyo98.tistory.com/135 첫 번째 강의에서 Publisher, Subscriber를 하나씩 사용해서 리액티브 스트림즈를 간단하게 알아봤다. Operator는 기존 Publisher -> Subscriber에서 중간에 연산자를 두어 결과를 변경하거나 10개를 1개만 최종으로 보내거나 하는 녀석을 말한다. Publisher (DataA) -> (DataA) Operator (DataB) -> (DataB) Subscriber 느낌이다. Java 8의 스트림을 생각하면 이해하기 쉽다. 스트림의 map, reduce, filter..

JVM/Kotlin

[Coroutines] Dispatchers 알아보기

예제 fun main(): Unit = runBlocking { launch { // #1 println("main runBlocking : I'm working in thread ${Thread.currentThread().name}") } launch(Dispatchers.Unconfined) { // #2 println("Unconfined : I'm working in thread ${Thread.currentThread().name}") } launch(Dispatchers.Default) { // #3 println("Default : I'm working in thread ${Thread.currentThread().name}") } launch(newSingleThreadContext("M..

Hyo Kim
'분류 전체보기' 카테고리의 글 목록