토요일, 5월 29, 2021

[B급 프로그래머] 5월 4주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: 이 아이디의 제일 웃긴점: 기본아이디 아니고 서장님이 만든 아이디임 via @B05172)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
EOB

목요일, 5월 27, 2021

[독서광] 스프링 부트 실전 활용 마스터 책 소개

최근에 여러 가지 바쁜 사정으로 인해 방송이 뜸했었는데, 다시 애청자분들께 책 소식을 전하기 위해 방송을 진행했다.

방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 이 책을 소개하는 이유
  • 04:16 이 책의 구조
  • 07:14 이 책의 특성(1): 스프링부트
  • 09:06 이 책의 특성(2): 리액티브
  • 10:55 대상 독자
  • 13:16 결론과 마무리
EOB

토요일, 5월 22, 2021

[B급 프로그래머] 5월 소식(빅데이터/인공지능, 읽을거리 부문)

(오늘의 짤방: you are here via @ValaAfshar)
  1. 빅데이터/인공지능
  2. 읽을거리 EOB

금요일, 5월 21, 2021

[B급 프로그래머] '마이크로서비스 도입 이렇게 한다' 출연 동영상과 멋진 독후감 소개

지난 번에 소개드린 [일상다반사] '마이크로서비스 아키텍처 도입과 운영을 위한 체크포인트' 출연 소식을 전해드렸는데, 유튜브에 녹화 영상이 올라왔기에 여러분들께 소개드린다.

발표 자료인 마이크로서비스 아키텍처 도입의 허와 실 - feat. 문제는 도메인이야도 슬라이드셰어에 올려놓았다.

또한 안영회님께서 책을 읽으시고 멋진 독후감(마이크로서비스 도입 이렇게 한다)도 올려주셨기에 애독자 여러분들께 소개 드린다. 아래 그림만 봐도 포스가 느껴지지 않는가? 마이크로서비스 도입 과정에서 고민이 많으신 분들께서 참고하시면 좋겠다.

EOB

토요일, 5월 15, 2021

[B급 프로그래머] 5월 2주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: Glowing star Web Performance Tools Landscape (May 2021) via @WPOtips)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
EOB

토요일, 5월 08, 2021

[B급 프로그래머] 윈도우 msys2는 완벽한 POSIX 호환 레이어인가?

최근에 강의 요청이 들어올 때 '실습 중심'으로 편성을 바꿔달라는 요청을 많이 받고 있다. 따라서 대면이거나 비대면이거나 실습을 염두에 두고 준비를 해야 하는데, 자바나 자바스크립트와는 달리 C인 경우에는 실습 조건을 갖추기가 살짝 어려운 경우가 있다. 예를 들어, 윈도우 환경만 지원하며 WSL2 등을 사용하지 못하는(여러 가지 이유로) 상황이 존재할 경우 선택지가 통합 개발 환경인 비주얼 스튜디오 블렌드 정도로 좁혀지는 어려움이 있는데, 통합 개발 환경을 사용할 경우 실습 과정에서 뭔가 꼬이면 이를 빠르게 해결해주기가 상당히 곤란하다. 따라서 명령행으로 컴파일이 가능한 환경을 생각하지 않을 수 없다(즉 gcc/clang - make 조합). 어차피 제한된 시간 내에 엄청나게 복잡한 프로젝트를 수행하지는 않을테니 편집기로 vim나 오픈소스로 제한없이 사용 가능한 NotePad++만으로도 충분하기 때문이다.

몇 가지 후보를 검토하다가 msys2를 선택하게 되었다. 컴파일 환경에 집중하는 mingw와는 달리 UNIX와 호환성을 지원하므로(즉, POSIX compliant), 리눅스 계열의 프로그램을 그대로(바이너리거나 오픈소스거나) 가져다 쓸 수도 있고 리눅스의 우수 사례를 쉽게 적용할 수 있기 때문이다. 그런데 msys2는 완벽한 POSIX 호환 레이어를 제공하지 않는다는 사실에 주목할 필요가 있다. 프로그램 중에서 키 입력을 위해 터미널 제어가 필요했기에 termios.h를 인클루드해서 컴파일을 하는데... 헤더 파일을 찾을 수 없다는 오류가 발생한다.

어지간한 프로그램은 대부분 빌드가 가능한데 하필 여기서 걸리는 이유는 무엇일까? Msys2 소개 글을 읽어보면 "The msys2 subsystem provides an emulated mostly-POSIX-compliant environment"라는 표현이 눈에 띈다. 즉 mostly지 completely는 아닌 셈이다. 뉴뉴

자 이제 상황을 파악했다면, 문제 해결을 위해 어떻게 할 것인가? 방법은 의외로 간단하다. msys2에서 패키지로 설치한 gcc 컴파일러는 POSIX 호환 유닉스 API 뿐만 아니라 윈도우에서 개발할 때 사용되는 conio.h와 Windows.h 헤더 파일도 인클루드해서 필요한 함수를 불러쓸 수 있다. 아주 복잡한 터미널 출력이 아니라면 간단하게 키 입력을 윈도우 버전에 맞춰 이식해서 돌릴 수 있는 방법이 존재한다. 다음과 같은 코드를 보면 이해가 갈 것이다(주의: 완벽하게 동작하려면 키 입력 시에 ECHO를 끄고 나중에 복구하는 등의 추가 작업이 필요하다).

HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
if (WaitForSingleObject(hStdin, 1000) == WAIT_OBJECT_0 && _kbhit()) getchar();

결론: msys2는 완벽하게 유닉스(아니 리눅스)를 흉내내지 못한다. 정말 리눅스가 필요하면 WSL2를 고려하고 어느 정도 우회가 가능할 경우에는 msys2에 머물러도 좋다.

EOB

목요일, 5월 06, 2021

[일상다반사] '마이크로서비스 아키텍처 도입과 운영을 위한 체크포인트' 출연 소식

토크아이티에서 진행하는 프리미엄 세미나인 마이크로서비스 아키텍처 도입과 운영을 위한 체크포인트에 출연하게 되었기에 여러분들께 소식을 전한다. 주제는 마이크로서비스 마이그레이션 패턴과 사례이며, 마이크로서비스 도입, 이렇게 한다 책에 나오는 내용을 중심으로 마이크로서비스 도입과 관련한 핵심적인 사항을 소개하고 있다.

  1. 방송 출연 시각: 2021년 5월 7일(금) 오전 10시 정각부터 25분 동안
  2. 등록: 웨비나 등록 페이지 참고(회원 가입 필요)

BEST Q & A를 달아주신 애청자분들께 마이크로서비스 도입, 이렇게 한다 책도 증정할 예정이므로 많은 성원 부탁드리겠다.

EOB

토요일, 5월 01, 2021

[B급 프로그래머] 4월 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)

(오늘의 짤방: 근데 진짜 웹은 자바스크립트로 다 할 수 있다구 via @Centell_)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: Larry Ellison on Bill Gates being an absolute savage. via @zackkanter
EOB