토요일, 3월 28, 2020

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

    (오늘의 짤방: 한편 뉴질랜드가 오늘밤 0시부터 락다운에 들어간다는 정부문자메시지인데 문장이 좋다.”자신이 코로나에 감염되었다는듯이 행동해라. 생명을 많이 살릴것”via @bwwwc)
  1. 빅데이터/인공지능
  2. 읽을거리
보너스: 요즘 미국에서 자주 보는 단어 via @xacdo
EOB

금요일, 3월 27, 2020

[B급 프로그래머] 2020년 2월 15일 개발자 이야기(발표 자료)

(Pixabay로부터 입수된 Margit Wallner님의 이미지 입니다.)

2월 15일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다. 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

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

  • 봇 감지 기법
  • JDK 14 공개
  • NULL 바이트를 문자열 중간에 사용하면 안 되는 곳
  • 크롬의 보안 강화 소식
  • 견고한 Node.js 프로젝트 아키텍처 설계하기
  • 2019년 구름 개발자 생태계 보고서
EOB

수요일, 3월 25, 2020

[B급 프로그래머] 2020년 3월 21일 개발자 이야기(발표 자료)

(Pixabay로부터 입수된 Margit Wallner님의 이미지 입니다.)

3월 21일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다. 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

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

EOB

월요일, 3월 23, 2020

[독서광] 데이터 시각화 교과서

오늘은 책만 사장님께서 선물로 보내주신 '데이터 시각화 교과서'에 대한 내용을 소개하겠다. 제목에 '교과서'라는 단어가 붙어 있기 때문에 사용자 인터페이스나 인지와 관련해 이론적인 내용이 전개될 것으로 예상을 했다면... 절반만 맞다. 이 책은 시작부터 그래프를 그리기 위한 (우리가 제대로 이해하고 있지 않았던) 사실부터 짚고 넘어가고, 이어서 바로 우리가 흔히 접하는 다양한 시각화 기법에 대해 좋은 예와 모호한 예와 잘못된 예를 제시하면서 실질적인 조언을 아끼지 않는다. 그리고 그래프 디자인을 하기 위한 기본 원칙을 깔끔하게 정리한다. 이 정도만 해도 도구 사용이나 미적 감각을 강조하는 기존의 시각화 서적과 차별화를 보여주는데, 개인적으로는 다른 어떤 책에서도 찾아보기 어려운 좋은 내용을 담고 있는 28장 '올바른 시각화 소프트웨어 선택법'과 29장 '스토리텔링과 요점 전달'이 가장 인상 깊었다.

이 책의 또 한 가지 놀라운 점은 전문적인 소프트웨어를 사용해 그래프 후 가공을 최대한 자제하고 R만으로 대부분의 효과를 달성했다는 사실이다. 이 책에서 사용된 코드는 깃허브에 올라와 있으므로 R로 시각화를 하시는 분들께서는 살펴보시면 많은 도움을 받을 것이다.

그래프와 표는 단순히 예쁘게 만든다고 다가 아니다. 미적이면서도, 내용은 분명하고, 복잡하거나 오해의 소지를 없애고, 정확하면서도 객관적인 시각화가 필요하다. 최근 코로나 바이러스 때문에 각 언론에서 경쟁적으로 기사를 내보내고 있는데, 솔직히 국내 언론에서 만든 대다수 인포그래픽과 차트는 뭔가 이상하다는 느낌이 드는데(물론, 감탄할만한 기획 기사로 인포그래픽에 상당히 신경을 쓰는 국내 언론도 분명히 존재하고 향후 발전을 기대하고 있다), 이 책을 읽고 나면 도대체 어디서부터 문제인지를 정확하게 인식할 수 있을 것이다. 로이터와 뉴욕타임즈는 이 책에서 제시하는 지침에 가장 근접하는 훌륭한 시각화로 무작정 부풀리고 뻥튀기는 방법으로 사람의 감정에 호소하는 대신 살짝 건조하기까지 느껴지는 사실만으로도 훨씬 더 정보를 정확하고 효과적으로 전달한다.

일례로 로이터의 ReutersGraphics 트위터The Korean clusters를 보면 이 책에서 제시하는 거의 모든 우수 사례를 그대로 따르는 동시에 로이터 자체의 고유한 아이덴티티까지 부여하는 정말 표준적인 잘 만든 인포그래픽을 보여준다. Vox도 9 questions about the Covid-19 coronavirus pandemic, answered라는 기사에서 멋진 인포그래픽을 제시한다(물론, "flattening the curve"에 대한 그래프가 문제가 있다는 지적이 나오기도 했지만 이 책에도 나오지만 일반 독자를 이해시키기 위해 정확도를 떨어뜨린 것으로 보인다). 뉴욕 타임즈도 Watch How the Coronavirus Spread Across the United StatesA Different Way to Chart the Spread of Coronavirus라는 기사에서 상당히 모범적인 인포그래픽을 제시한다.

물론 전문가가 포진한 주류 언론의 수준까지는 도달하지 못하더라도 원리 원칙을 충실히 따르면서 자신이 사용하는 도구를 최대한 활용해 정확하고 깔끔한 그래프를 그리면 얼마든지 주목을 받을 수 있을 것이라 생각한다.

결론: 데이터 시각화에 관심이 있는 모든 분들께 강력 추천한다. 연구 논문이나 보고서 작성 뿐만 아니라 대시 보드 개발에도 큰 도움이 될 것이다. 2020년 1분기에 읽은 최고의 서적이다.

보너스: Ten Considerations Before You Create Another Chart About COVID-19를 보면 COVID-19에 대한 차트를 만들기 앞서 고려해야 하는 10가지 사항이 나온다. 인터넷에서 접하는 (다소 민감한) 정보를 만들 때 이 책에 나온 정확한 정보 전달을 위한 시각화 기법와 대중에 정보를 전달할 때 주의해야 하는 사항을 함께 고려하면 더 바랄 나위가 없겠다.

추가: 이코노미스트는 Mistakes, we’ve drawn a few라는 글에서 오해의 여지가 있거나, 혼란스럽거나, 주장을 밝히는 과정에서 실패한 사례를 분석한 글을 올렸다. 이 책 내용을 토대로 분석하면 좋겠다.

EOB

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

(오늘의 짤방: Destory friendships, programmatically via @eaj)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
EOB

토요일, 3월 21, 2020

[B급 프로그래머] 2020년 2월 22일 개발자 이야기(발표 자료)

(Pixabay로부터 입수된 Margit Wallner님의 이미지 입니다.)

2월 22일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다. 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

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

  • 객체지향 프로그래밍 - 역대급 재난
  • kasaya - 브라우저 자동화를 위한 위지윅 스크립팅 언어
  • 8년 동안 사이드 프로젝트에서 배운 교훈
  • Deno 설치
  • Theia: Cloud & Desktop IDE
EOB

금요일, 3월 20, 2020

[B급 프로그래머] 2020년 3월 14일 개발자 이야기(발표 자료)

(Pixabay로부터 입수된 Margit Wallner님의 이미지 입니다.)

금주부터 OKJSPTV 유튜브 방송에 사용된 발표 자료를 매주 공개해드리려고 한다. 3월 14일자 방송 스크립트는 전체 공개되어 있으며, 슬라이드셰어에서 보거나 다운로드 받을 수도 있다. 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

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

  • 알파고 영화 소개
  • 레거시 코드를 점진적으로 개선한 경험
  • 코드 검색
  • iTerm2 힌트
  • 자바 변경 내역
  • JVM 관련 통계 자료 분석
EOB

수요일, 3월 18, 2020

[B급 프로그래머] 2020년 3월 7일 개발자 이야기(발표 자료)

(Pixabay로부터 입수된 Margit Wallner님의 이미지 입니다.)

금주부터 OKJSPTV 유튜브 방송에 사용된 발표 자료를 매주 공개해드리려고 한다. 우선 조금 시간이 지났지만, 3월 7일자 자료부터 올려드린다. 과거 자료도 매주 1~2개씩 차근차근 올려드릴 예정이다. 전체 방송 플레이리스트는 재미있는 개발 이야기(w/ 허광남-박재호)에서 확인할 수 있다.

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

  • 기능 공장에서 일하고 있다는 12가지 신호
  • 윈도우에서 VSS를 활용해 락 걸린 파일 복사
  • 하나의 메모리 누수를 잡기까지
  • GNU sort로 IP 주소 정렬하기
  • 컴퓨터공학과 새내기가 수강신청하는 법
  • 자바 생태계 보고서
EOB

월요일, 3월 16, 2020

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

(오늘의 짤방: “강하고 선한 신념은 짧은 이득이나 손해를 압도할 수 있다고 생각합니다.” via @Coetzeero)
  1. 빅데이터/인공지능
  2. 읽을거리
보너스: [연두 X 만개의레시피] 굴 연두 파스타
EOB

토요일, 3월 14, 2020

[영화광+B급 프로그래머] AlphaGo - The Movie | Full Documentary

일부 제한된 극장과 넷플릭스/왓차에 공개된 이세돌과 알파고의 승부를 그린 알파고 다큐멘터리가 유투브에 공개되었다는 소식을 듣고서 토요일 아침을 눈물과 박수로 보냈다.

알파고와 시합을 할 때 거울에 비친 발가벗겨진 자신을 보며 내가 여기서 무엇을 할 수 있을지 고민하게 된다는 판 후이의 설명과 알파고를 무력화시킨 78수를 어떻게 두게 되었는지 묻는 질문에 여기 밖에 둘 곳이 없어서 두었다는 이세돌 9단의 답변이 특히 기억에 남았다. 엔지니어와 바둑 기사들의 인간미, 열정, 도전이 생생하게 느껴지고 진짜 위대한 일을 하려면 얼마나 시간과 노력을 많이 투자해야 할지 다시 한 번 반성하게 만드는 계기가 되었다.

한 줄 평: 다른 말이 필요없다! 소프트웨어 개발자를 포함한 엔지니어, 바둑 애호가, 예술가 모두에게 강력 추천한다.

EOB

월요일, 3월 09, 2020

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

(오늘의 짤방: 마스크가 C급 밖에 안 되네? via @public_kame)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
EOB

토요일, 3월 07, 2020

[독서광] 컨테이저스: 전략적 입소문 와튼스쿨 마케팅학 최고 권위자가 전하는 소셜 마케팅 전략

마케팅 책 중에서 이론과 실전을 모두 겸비한 책을 하나만 들라고 하면 고민하지 않고 '컨테이저스'를 선택하겠다. 추천 받아서 읽은 이 책은 거의 나온지 제법 되었음에도 불구하고 전달하는 메시지는 여전히 유효하다는 생각이다. 이 책의 가장 큰 장점은 우연처럼 보이는 입소문을 전략적으로 접근하는 방식이다. 콘텐츠의 전염성을 결정하는 STEPPS 법칙인 쇼셜 화폐(Social Currency)의 법칙, 계기(Trigger)의 법칙, 감성(Emotion)의 법칙, 대중성(Public)의 법칙, 실용적 가치(Practical Value)의 법칙, 이야기성(Story)의 법칙이라는 여섯 가지 법칙을 중심으로 대중을 들었다 놓았다 하는 콘텐츠의 특성을 분석한다. 기술 관련 내용으로 블로그, 트위터, 페북, 유튜브(최근에 '허광남'님과 방송을 진행 중에 있다)를 운영해온 경험에 따르면 '실용적 가치의 법칙' 장이 특히 마음에 들었다. 책의 내용에 맞춰 책을 구성한 흔적도 여기저기서 보이기 때문에 상당히 액자식의 구성이라고 봐도 좋겠다.

여섯 가지 법칙을 간단하게 정리하면 다음과 같다.

  1. 쇼설 화폐의 법칙: 사람들은 타인에게 좋은 인상을 남기는 이야기를 공유한다.
  2. 계기의 법칙: 사람들은 머릿속에 쉽게 떠오르는 것을 공유한다.
  3. 감성의 법칙: 사람들은 마음을 움직이는 감성적 주제를 공유한다.
  4. 대중성의 법칙: 사람들은 눈에 잘 띄는 것을 모방하고 공유한다.
  5. 실용적 가치의 법칙: 사람들은 타인에게 도움이 될 만한 유용한 정보를 공유한다.
  6. 이야기성의 법칙: 사람들은 흡입력 강하고 흥미진진한 이야기를 공유한다.

본문 중에 나오는 몇 가지 사례를 직접 찾아서 정리해보았다. 책과 함께 보면 도움이 될 것이다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

뭐든 다 갈린다는 블렌드텍의 광고 "이것도 갈릴까요?" 시리즈 중 아이폰 6+ 시리즈

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

작품성이라고는 찾아보기 어렵지만 2011년 최고의 인기 동영상인 프라이데이

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

전세계적인 열풍을 불러일으킨 버드와이저 왓섭 광고

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

탄산음료 섭취를 지양하자는 공익 광고인 지방 덩어리를 마시는 남자

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

유나이티드에 탑승한 데이브 캐럴이 자신의 기타가 망가진 후 만든 동영상

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

막 연애를 시작하는 남자가 구글 검색 기능을 사용해 사랑을 키워가는 이야기를 그린 '파리지앵 러브'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

부정적인 감정을 활용해 큰 성공을 거둔 BMW의 더 하이어 시리즈 중 한 편

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

옥수수 다듬은 영상으로 835만회를 기록한 켄의 '옥수수 수염 다듬기 동영상'

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

아름다움의 정의와 대중매체가 미에 대한 인식에 영향을 주는 사례를 광고로 내세움으로서 엄청난 반향을 일으킨 도브 광고

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

에비앙이 야심차게 만든 롤러 베이비스는 온라인 동영상 광고 부문 기네스 신기록에 오를정도로 엄청난 조회수를 달성했지만, 정작 브랜드에는 도움이 되지 않았다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

브랜드가 광고 속 이야기의 핵심을 이루는 판다 치즈 광고

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

결론: 쓸만한 마케팅 서적이 없어서 심심했던 당신에게 ...

EOB

토요일, 2월 29, 2020

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

(오늘의 짤방: 미국의 14~15세. 과거 대비 비디오게임이나 컴퓨터를 더 많이 하는 대신, 술도 덜 하고 마리화나도 덜 하고 섹스도 덜 하고 TV도 덜 본다... 게임은 나쁜건가? via @ilnaezza via @andrewchen via @reddit)
  1. 빅데이터/인공지능
  2. 읽을거리
보너스: Dictaphone and Microphone Jammer Audio recording Supressor White Noise Generator BDA-2 test
EOB

월요일, 2월 24, 2020

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

(오늘의 짤방: 프로그래머: 돌아가면 된거지ㅡㅡ via @hanalen_)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
보너스: How Intel Makes Chips: Concept to Customer
EOB

토요일, 2월 22, 2020

[독서광] 출판사가 OK하는 책쓰기

저서와 역서가 제법 되다보니까 종종 출판 관련해서 문의가 들어오곤 한다. 문의하신 분들께 출판이라는 특성에 대해 해줄말은 많지만 요약 정리된 책이 있으면 좋겠다는 생각도 종종 들었었다. 그런데, 이번에 한빛미디어 IT 전문서 편집 경험을 토대로 책이 나왔기에 젭싸게 읽어봤다.

우선 이 책의 특징에 대해 짚고 넘어가야겠다. 일반적인 글쓰기 책과는 달리 이 책은 출판사에서 책을 출판하려는 분들에게 정확하게 목표가 맞춰져있다. 물론 출판을 위해서는 어느 수준 이상으로 글을 잘 써야하지만 전문서/실용서인 경우에는 미려한 문체와 독자를 들었다놓았다하는 스토리 전개가 없어도 되므로 이 책은 글을 잘 쓰는 방법에 대해서는 정말 최소로 다룬다. 그 대신 출판을 위해 출판업의 특성과 출판 과정에 대해 일목요연하게 정리하고 있다. 본문에도 나오지만 출판업에 대한 기본적인 이해가 없으면 본인도 괴롭고 출판사 담당자도 괴로우므로(실제 이런 사례를 여러 번 들었다. 최근에도... T_T) 그냥 자비로 자가 출판하는 편이 바람직하다는 생각에 강력하게 동의한다.

이 책은 집필하면 얼마 정도 버는지부터 시작해서 집필 과정에서 일어나는 여러 가지 사건 사고를 줄이는 방법, 출판사 입장에서 책의 기획부터 출판까지 일련의 프로세스, 목표로 삼는 독자 식별부터 경쟁서 분석에 이르기까지 경쟁력이 높은 책을 기획하는 방법, 출판사에 투고할 때 주의해야 할 사항(특히 실용서인 경우에는 책을 다 쓰고나서 투고하면... 거의 대부분 반려된다는 사실이 중요함), 실용서에 들어가는 글을 잘 쓰는 방법, 저자가 움직이지 않으면 판매가 잘 이뤄지지 않는 이유와 온/오프라인 홍보 방법, 그리고 중요하지 않은 듯이 보이지만 엄청 중요한 저작권과 계약서에 이르기까지 출판사에서 잠재 저자에게 알려주고 싶어하는 핵심적인 내용을 잘 다루고 있다. 뒷부분에는 출판을 진행할 경우 들어가는 공정과 비용도 소개하므로 1인 출판사를 기획하시는 분들도 참고하면 좋을 것 같다.

이 책 저자인 최현우 편집자가 전자책으로 공개한 주유의 IT 책 쓰기 불바다 강론 : 빠르게 포기하거나, 진짜로 저자가 되거나를 읽어보시면 이 책의 성격에 대해 정확하게 파악할 수 있을 것이다. 출간된 종이책은 공개된 전자책을 확대 개편하고 출판 프로세스를 전반적으로 다루고 있다는 사실도 알려드린다.

결론: 출판사마다 모두 어느 정도 지침이 되는 문서가 있긴 하지만 이렇게 포괄적으로 다루는 경우는 보지 못했기에, 아마도 IT 분야 잠재 저자나 역자들의 필독서가 되지 않겠느냐고 조심스럽게 예측한다. 출판을 염두에 둔 잠재 저자/역자에게 강력 추천한다!

EOB

토요일, 2월 15, 2020

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

(오늘의 짤방: 🤔 via Jeff Atwood(@codinghorror))
  1. 빅데이터/인공지능
  2. 읽을거리
EOB

월요일, 2월 10, 2020

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

(오늘의 짤방: 프로그래머가 다크 모드를 좋아하는 이유는?)
  1. 개발/관리도구
  2. 고성능 서버/데이터베이스
(보너스: 너무아프다 @if1live) EOB

토요일, 2월 08, 2020

[독서광] 데이터 읽기의 기술

오늘은 빅데이터와 관련한 독후감을 하나 소개하겠다. 스타벅스코리아 1호 데이터사이언티스트로 알려진 차현나님의 데이터 읽기의 기술이 주인공이다.

이 책은 크게 3부로 나뉘어져 있는데, 솔직히 1부는 많은 책과 블로그에서 다루는 내용이라 재미가 없었다. 2부를 위해 다음 그림과 표만 기억하면 끝나는 것 같다.

5W1H 데이터 종류 의미
누가(WHO) 멤버십 등급, 동의를 받고 수집한 개인정보(생년월일, 성별, 거주지) 한 명의 고객. 멤버십에 가입했다면 여러 번 방문한 영수증을 한 사람의 행동으로 연결할 수 있게 되어 더욱 힘을 갖는다.
언제(WHEN) 연-월-일-시-분-초, 요일, 공휴일 여부 초 단위까지 있다. 회계에서 중요한 기준이 될 수 있다. 여러 관점에서 분절해 분석할 수 있으며, 데이터에 힘을 실어주게 된다. 외부 데이터와 연결할 수 있는 중요한 ‘핵심 가치'
어디서(WHERE) 매장 이름, 주소, 상권, 위경도 오프라인 매장이며, 이 매장의 위치가 행정구역이나 위경도와 만나는 순간 흔히 상상하는 빅데이터가 될 가능성이 생긴다.
무엇을(WHAT) 제품 기준 정보, 범주, 속성, 발주 일시, 가능하면 분자 단위… 기업의 상품 기준 정보. SKU 단위까지 분류하고 세부 태그를 붙인다. 분류 체계가 중요함
어떻게(HOW) 결제 수단, 쿠폰 사용 여부, 이벤트 참여 여부 소비자가 기업에 비용을 지불하는 방법을 다각도로 설명하고, 여기서 프로모션 수단이 나옴
왜(WHY) SNS 분석, 설문 조사, 포커스그룹 심층 면접 영수증 데이터만으로는 소비자의 행동 원인을 알기 어려울 때가 있으므로 다른 데이터에서 추정

조금 재미있는 내용은 데이터 앞에서 해야할 질문 10가지라는 제목의 2부에 나온다. 기억을 위해 간단하게 정리를 해보았다.

  1. 우리 회사가 돈을 버는 핵심 제품/서비스는 무엇인가: 데이터로 뭘 할지 모르는 상태에서 "돈을 벌 수 있는 데이터 분석을 해오세요"해도 소용이 없음. 대다수 오프라인 기업들은 데이터가 필수가 아니며, 제품 판매를 높이고 차별화를 주는 하나의 수단에 불과
  2. 우리 회사의 데이터 역량은 어느 정도인가: 분석 요건, 머신러닝, 고도화된 대고객 마케팅 기법을 이야기하지만… 미봉책으로 신규 데이터를 만들어내고 쌓고, 그러느라 서버를 구매하고, 프로젝트를 띄우고 컨설팅 업체에 돈을 지불하는 악순환을 반복
  3. 데이터의 필요성을 모두가 느끼고 있는가: 과거를 포함해 현재에도 데이터를 보지 않아도 잘 나가는 회사가 있지만, 세상이 변했기에 이름난 제품 하나로 시장을 휘어잡지 못함. 데이터를 통해 더 빠르고 더 확실한 방법으로 나아갈 방법을 찾아야 함. "빅데이터 그거 어차피 사람들이 이해도 잘 못하는데 꼭 해야 하나?"라는 질문을 하고 싶다면 자신이 데이터를 잘 이해하지 못하기 때문에 중요하지 않다고 생각하는 건 아닌지 되돌아 볼 필요가 있음.
  4. 데이터가 모든 것을 해결해줄까: 데이터가 많더라도 매출 집계 이외 아무런 분석도 하지 않는 조직이 많음. 데이터는 목적이 있을 때만 정돈이 가능한 특성이 있음.
  5. 듣도 보도 못한 것을 기대하는가: 실제로 데이터를 보지 않은 사람들이 새로움에 대해 더욱 집착하는 경향이 있음. "이거 내가 다 알던 건데 뭐가 새롭냐?"(지금까지는 감으로 알던 내용을 데이터로 증명했기 때문에 중요함) "다 알던 것을 뭐하러 데이터로 증명했지?"(정합성이나 로직을 따져 일단계 완료하는 데만 에너지가 필요함(2, 3차 분석으로 이어지는 토대))
  6. 내가 이해하는 만큼만 인정하려 하는가: 내 생각과 맞을 땐 "너무 뻔한 것 아니야? 이거 보기 전에도 난 알고 있었는데". 내 생각과 틀릴 땐 "데이터가 상식적이지 않는데?" 여기서 두 사람은 동일인일 가능성이 높음(의견과 아이디어가 있는 듯이 보이기 때문)
  7. 목적을 명확하게 세웠는가: "많이 팔릴 것을 만드는 것이 이번 프로젝트의 목적이다" 또는 "사람들이 많이 수집할 만한 제품을 만들어 와"는 실무자에게 전혀 도움이 안 됨. 목적 --> 프로젝트 --> 주제 --> 연구 문제 --> 통찰 --> 모델링 --> 전처리 --> 데이터 순서로 흘러감
  8. 매출 데이터만 중요할까: 매출은 소비자의 '마지막 결정의 결과'일 뿐이므로 행동 단위를 파악해야 함. 소비자 구매 전후를 많이 알수록 구매행동 결정의 이유를 정확히 알 수 있음.
  9. 많기만 하면 빅데이터일까: 단순한 문항 하나를 많은 사람을 대상으로 질문했다고 해서 빅데이터로 변신하지는 않음(설문조사를 단순 집계한 결과일 뿐)
  10. 시간 투자 없이 결과만 원하는가: 만일 빠르게 숫자만 확인하고 싶다면 반복적으로 수치를 확인할 수 있는 대시보드를 만들어라!

3부는 데이터 활용과 관련해 점검해야 하는 사항을 정리하고 있다.

  1. 프로젝트를 시작할 때 해야 할 질문들: i) 지금 하는 프로젝트는 누가 원하는 것인가? ii) 지루한 분석 작업을 꼭 해야 하는가?(시간이 충분할 때: 최대한 촘촘하게 경우를 나눠 데이터 분석 vs 목표가 명확할 때: 기존 연구 결과에서 일부를 차용해 이야기를 새롭게 구성) iii) 분석해야 하는 명제가 확실한가?
  2. 프로젝트를 하는 중에 해야 할 질문들: i) WHO(고객 정의) ii) WHEN(시계열 변화, 프로모션 시점) iii) WHAT(제품 카테고리, 개발 통찰력) iv) WHERE(점포 개발, 외부 GIS, 날씨) v) HOW(새로운 방법론, 프로모션) vi) WHY(소비자 마음의 원리)
  3. 보고서를 만들거나 보고할 때 고려해야 할 것들: i) %보다 복잡한 모델을 이해하는 직장인은 거의 없다 ii) 액션 플랜을 담고 있어야 한다 iii) 실행할 전략을 짜려면 비용을 알고 있어야 한다(예: 1+1 증정, 즉시 50% 할인, 구매 시 50% 쿠폰 증정의 차이점은?)

결론: 마케팅이나 심리학 등을 전공하신 분이라면 이 책이 크게 도움이 안 될 가능성이 높지만, 빅데이터나 분석 쪽에 입문을 하거나 아니면 관련 개발 업무를 하시는 분이라면 이 책을 읽으면 머리 속이 정리될 것이다.

EOB

월요일, 2월 03, 2020

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

(오늘의 짤방: Normal Distribution. 😆 via @GWOMaths)
  1. 빅데이터/인공지능
  2. 읽을거리
보너스: Inside a Google data center
EOB

토요일, 2월 01, 2020

[B급 프로그래머] MariaDB에서 root 암호 인증 방식이 먹히지 않는 이유(feat. unix_socket)

먼저 내 실수부터 고백을 하고 넘어가야겠다. 최근 서버 설치 작업을 손놓고 있다가 갑자기 현업(?)으로 복귀할 일이 생겼는데, MariaDB를 설치하는 과정에서 이해하기 힘든 상황에 부딪혔다. 간략하게 시나리오를 정리하면 다음과 같다.

  1. 우분투 16.04가 설치된 인스턴스에서 apt로 기본 MaraiDB 서버/클라이언트 패키지를 설치
  2. 여느 때와 마찬가지로 mysql_secure_installation 명령을 내려 보안 강화
  3. localsystem에서 mysql -u root -p로 로그인하려 했으나... 거부(!) 습관적으로 안전을(응?) 위해 root에 암호를 넣어야겠다는 생각이 발동...
  4. root shell에서 그냥 mysql로 접속하니 들어감(이 때 뭔가 쌔한 기분이 느껴지긴 했지만...)
  5. (검색을 해보니 unix_socket 플러그인(!)을 무력화하기 위한 여러 가지 방법이 있어 순진하게 이에 맞춰) root 계정을 암호 사용 방식으로 변경
  6. mysql -u root -p로 로그인 하니까 잘 들어감
  7. 환경 설정 파일에서 몇 가지 설정을 변경한 다음에 룰루랄라 신나서 적용을 위해 systemctl mysql restart하니까 오류 발생(systemctl status mysql 명령을 내려서 확인해보니 root로 접근 거부되는 상황이 벌어짐) ==> 당황하기 시작

마음이 급하신 개발자들을 위해 결론부터 정리하고 들어간다.

  1. 보안을 위해서나 시스템 연동을 위해서나 unix_socket 플러그인을 절대 무력화하지 마시고 그대로 사용해야 함
  2. root 이외 제한된 접근 권한이 있는 별도 계정을 만들어서 이를 사용해 접근하게 만들어야 함

잠시 인스턴트 커피를 마시고 정신을 차린 다음에 다양한 테스트를 해보다 보니까, 범인은 unix_socket 플러그인이었다. 원인을 파악해보니 MariaDB 10.4 이후(또는 우분투 16.04LTS에 apt으로 설치되는 MaraiDB 10.0)부터는 root 인증이 기존의 암호 기반 방식에서 유닉스 소켓 방식으로 변경되었기 때문이었다. MySQL 최신 버전에서는 플러그인을 사용해 다양한 인증 방식을 가능하게 만들었는데, MariaDB는 그 중에서도 로그인한 계정으로 암호없이 직접 접속이 가능한 unix_socket 방식을 기본으로 적용하면서 전통적인 암호 방식과 동작 방식이 달라져버렸다(비단 root뿐만 아니라 유닉스 계정과 MySQL 계정이 일치하기만 하면 unix_socket 방식으로 다른 인증 작업 없이 바로 로그인이 가능해진다). 이렇게 하는 이유는 root가 전지전능하다보니 굳이 데이터베이스 암호를 걸지 않더라도 우회하거나 망가뜨릴 방법이 무궁무진하며, 데이터베이스 root 암호를 소스코드 형상 관리 시스템 여기저기에 다 뿌리고 다니는 보안 취약성도 막을 수 있기 때문이다(자세한 내용은 다음 슬라이드 참고).

systemctl mysql restart가 먹히지 않은 이유도 바로 정책 변경으로 인해 systemctl 스크립트가 unix_socket을 가정하고 mysqld에 접근했기 때문이었는데, 이 문제를 우회하려면 /etc/mysql/debian.cnf 환경 설정 파일에 root 암호를 넣어야 하는 사소하기도 하고 찜찜하기도 하는 문제가 발생하므로 mysql.user 테이블의 plugin 필드를 업데이트해서 unix_socket 플러그인 방식으로 원상복귀한 다음에 문제를 해결했다(unix_socket을 제거하는 방법을 알려주고 부작용은 전혀 이야기하지 않는 다른 블로그와는 달리 MariaDB; 인증(Authentication) 문제 블로그 글은 상당히 이성적으로 분석을 해놓아서 마음에 들었다).

앞서 잠깐 언급했지만 유닉스 계정과 동일한 MySQL 계정(예: scott)을 만들고 플러그인을 unix_socket으로만 지정하면(예: CREATE USER scott IDENTIFIED VIA unix_socket;) 별도 암호없이 바로 접근 가능하므로 이를 활용하면 서비스 설정이 편해질 것이다. 단, MySQL workbench등의 도구로 외부에서 접근할 경우에는 여전히 전통적인 방식(예: 예전 암호 방식으로 되돌리려면 ALTER USER scott@localhost IDENTIFIED VIA mysql_native_password; SET PASSWORD = PASSWORD('tiger');을 사용해야 할 것이다.

공식적인 설명을 보고 싶으면, Authentication Plugin - Unix SocketAuthentication from MariaDB 10.4를 참고하기 바란다.

결론: unix_socket 방식으로 root 계정에 대한 접근 방법을 유지하라. 웹에서 검색해서 영혼없이 결과대로 따라했다가는(예: unix_socket 방법 폭파하기) 곤란한 상황에 처할지도 모른다.

EOB