[도서리뷰] 실전 스프링 부트 워크북

책 이름에 “실전”이라는 이름이 붙어 있을 정도로 이 책에는 수많은 실전 예제들이 빼곡하게 채워져 있다.

자바 프레임워크 스프링부트가 처음 나왔을 때만 해도 나는 무거운 스프링을 조금 가볍게 만든 경량화 프레임워크라고만 생각했었다.
이런 단편적인 생각으로 책에 접근했었는데 이 책은 어느 순간 책을 읽고 있는 내가 어서 빨리 스프링부트를 사용해보고 싶다는 생각에 사로잡힐 정도로 자세하고 이해하기 쉽도록 설명이 되어 있다.

스프링부트가 만들어지게 된 이유부터 시작해서 스프링부트가 왜 좋은지, 궁극적으로 스프링부트를 사용해서 어떤 것을 할 수 있는지, 현재 자바 기반으로 구성된 많은 시스템에서 사용하고 있는 기술들을 스프링부트에 적용하기 위해서는 어떤 것을 하면 되는지, 사람으로 말하자면 발끝부터 머리끝까지 모든 부분을 설명해주고 있다.

물론, 책 한 권에 스프링부트의 모든 내용을 담기는 부족해서 기술적으로 아주 깊은 단계까지 설명하지는 않지만, 이전의 많은 서적이 저지른 잘못인 수박 겉핥기식의 접근이 아니라 적절한 깊이를 가지며 친절하게 설명한 부분에 대해서는 정말 찬사 받을 만하다고 생각한다.

이 책은 저자의 깊은 고민에서 나온 결과물이라고 생각하며, 스프링부트에 대해 이렇게 쉽게 접근할 수 있도록 책을 만들어준 저자와 역자에게 감사하다.
특히 코드 내에 변경점에 대해 진하게 처리한 부분은 정말 책을 보는 내내 “고구마를 3개쯤 먹은 후에 먹는 사이다”같은 느낌을 선사해 주었다.

스프링부트를 스프링에 빗대어 한 줄로 설명해보면 이렇다.
“스프링이라는 자바 프레임워크는 강력하다, 스프링부트는 그 강력함에 편리함을 더해 개발자가 코딩할 일이 없을 정도다.”

스프링은 분명히 강력한 프레임워크이며 대형 규모의 스케일까지 커버 할 수 있을 정도로 강력하다.
그리고 자바의 새로운 기술 스택에 맞게 계속해서 기능이 추가되고 있다.

스프링부트는 거기에 더해 코드 10줄 + XML 설정을 추가해야 하는 부분을 설정에 필요한 XML 내용은 전부 자동으로 처리하며, 실제로는 코드 2~3줄 정도로 스프링의 모든 기능을 완벽히 수행할 수 있다는 것이 정말 놀라웠다.

책을 보면 마치 예전의 밥 아저씨처럼 “참 쉽죠”라며 얘기하는 느낌이다.
하지만 밥 아저씨와 다른 점은, 정말 실제로도 쉽다는 것이다.

스프링부트를 설명하는 쉬운 책을 꼽으라면 단연 이 책을 권하고 싶다.
앞에서도 언급 했듯이 책을 보는 동안 내 머릿속을 채운 것은 “빨리 스프링부트를 사용해보고 싶다.” 뿐이었다.
이제 책을 다 읽었으니 서비스에 적용해 보는 일만 남은 것 같다.

보기 드물게 정말 좋은 책이라 생각하지만, 단점이라면 단점은 스프링을 모르는 사람이 스프링부트를 배우기에는 조금 부족하다는 생각이다.
본디 스프링부트라는 프레임워크가 스프링의 기능을 편히 수행하기 위해 만들어졌다 보니 이러한 부분에 대해서는 배려가 조금 부족하지 않았나 생각해본다.

프로그래밍 전공 서적 중 오랜만에 맘에 드는 책을 만나 기쁘게 공부 할 수 있었다.

[실전 스프링 부트 워크북] 책의 자세한 내용은 [링크]에서 확인할 수 있다.

[도서리뷰] 처음 시작하는 리액트


요즘 개발자들 사이에서 대세로 떠오른다고 해도 과언이 아닌 자바스크립트.
그중 UI를 동적으로 빠르게 생성하기 위해 태어난 리액트.

이 책은 리액트라 하는 자바스크립트 UI 라이브러리를 아직 접해보지 못한 사람들을 대상으로 리액트에 관해 많은 내용을 설명한다.

초급과 중급을 대상으로 한 덕분에 처음부터 코드 설명보다는 리액트가 태어난 배경과 함께,
리액트를 어떤 면에서 어떻게 사용하면 좋을지에 대해 상세히 다루고 있다.

책의 전반에는 리액트를 사용하는 방법을 주로 다루고 있다면,
책의 중 후반부터는 자바스크립트로 개발하는 방법론과 함께 디버깅 및 브라우저에 의존하지 않는 테스트 방법 등까지
라이브러리 별로 깊지는 않지만 광범위하게 저자가 가지고 있는 자바스크립트 개발에 대해 노하우를 제공한다.

수많은 자바스크립트 라이브러리 중에 어떤 것을 선택해서 개발하느냐에 따라서 많은 차이가 있을 텐데,
이 책 한 권으로 기본은 가져갈 수 있는 셈이다.

리액트를 사용하는 데 익숙지 않은 초보와 중급자들을 배려하여 꼭 필요한 내용을 적절한 깊이의 내용으로 꽉 채워,
자바스크립트로 개발하는 것에 대해 익숙지 않은 사람들에게 많은 도움이 될 것으로 생각한다.

마지막으로 부록에는 빠르게 업데이트되는 리액트에 맞춰 책이 쓰일 당시와 현재의 리액트가 어떻게 다른지에 대해서도
충분한 설명과 함께 내용을 할애하고 있어 개론서의 역할도 일부 해줄 수 있다고 생각이 든다.

한 가지 아쉬운 점이라면 책 중간 소스코드를 비교하는 부분이 있는데,
해당 부분에 하이라이트 처리가 되어 있었다면 좀 더 독자를 위한 책이 되지 않았을까 생각한다.

[처음 시작하는 리액트] 책의 자세한 내용은 [링크] 에서 확인 할 수 있다.

About MySQL Index problem

지난 월요일(2016년 12월 19일) 굉장히 특이한 경험을 했다.
내 경험은 아니고, 직원중 한명이 회사 시스템이 설치된 서버에서 데이터가 update 되지 않는다는 얘기였다.
문제는 에러가 전혀 발생하지 않는다는 점이다.
데이터를 수정하는 UI 프로그램으로 해도 마찬가지고, 데이터베이스에 CLI로 직접 접속해도 마찬가지로 동작하지 않는 문제였다.

그래서 나에게 혹시 경험이 있나 물어보러 온 것이었는데, 나도 그런 경험은 없었고 추측도 되지 않았다.
처음에는 해당 테이블에 트리거가 걸려 있어 그 문제로 update가 되지 않는건지 생각 했으나 다시 원격하여 확인한 결과 트리거나 프로시저 등 아무것도 없었다.

결국 회사 내에 데이터베이스에 가장 빠삭하신 부장님이 보시곤 인덱스가 깨져서 생긴 문제 같다고 하시며
데이터베이스의 인덱스를 다시 만들어 보자고 하셨으나, 현재 운영중인 서버였기 때문에 인덱스를 제거하고 다시 생성하는 일은 할 수 없었다.

그래서 찾은 방법이 아래의 명령어이다.

1
mysql>OPTIMIZE TABLE [테이블명];

다행이도 해당 테이블에 100건 이하의 데이터만 존재하여 운영중에도 인덱스 재설정 명령어를 사용하여 인덱스를 재설정 할 수 있었다.
인덱스를 재설정 하고 난 후 제대로 동작 하는 것을 확인 하였다.

물론 내가 해결한 것은 아니었지만 이 문제를 해결하고 나서 혼자 곰곰히 생각해 보았다.
내가 혼자서 작업 도중 이러한 문제가 발생하면 과연 나는 해결 할 수 있는가?
아마도 상당히 많은 시간을 소모해서 해결하거나, 해결하지 못하고 머리만 쥐어짜고 있지 않았을까…?

데이터베이스는 나름대로 잘 알고 있다고 생각하고 있었는데 아직 갈길이 먼듯 하다.

Window 10 원격접속 허용 방법

원격지에서 원격 접속 허용 방법.

  1. 시스템 속성에서 원격 연결 허용
  2. 방화벽 > 고급 설정 > 인바운드 규칙
  3. 인바운드 규칙에서 원격 데스크톱 속성의 고급 탭에서 공용 체크

PS. 내부 내트워크망에서는 1번까지만 설정하면 접속 가능.

Crawling Engineer

Crawling Engineer

  • Web에서 Data를 Crawling해서 원하는 형태에 맞게 Database에 가공하여 저장하고,
    원하는 형태의 데이터로 API를 제공해주는 역할을 하는 Engineer.

기술 스택

  • http 프로토콜, TCP/IP와 UDP의 이해, RDBMS, NoSQL, 대용량 데이터 분석 및 처리의 이해
  • API와, Crawling 할 대상 데이터의 구조 이해 등등
  • 대량의 데이터를 효율적으로 저장 하기 위한 Database의 구조에 대한 깊은 이해.
  • RDBMS와 NoSQL의 구조에 대한 이해를 바탕으로 한 효율적 쿼리 설계.