- 빅데이터/인공지능
- The Illustrated Self-Supervised Learning
- The Korean clusters(시각화의 좋은 예)
- An end-to-end GoodReads Data Pipeline for Building Data Lake, Data Warehouse and Analytics Platform.
- AI Comes to the Tax Code
- Starbucks “Deep Brew”: Hyper Personalization Applications with Reinforcement Learning at Starbucks
- An Intuitive Guide to Linear Algebra
- [DBR] 블록체인, AI, IoT가 커피 한 잔 속에스타벅스, 기술 기반으로 문화를 만들다
- Deep Learning using GPU on your MacBook
- "2019년 스마트 스피커 판매량 70% 증가" 스트래티지 애널리틱스
- 모바일 투표 앱을 둘러싼 '계속되는' 논쟁
- Economics Simulation (using Python notebook)
- Computer Vision Basics in Microsoft Excel (using just formulas)
- SciPy 1.0: fundamental algorithms for scientific computing in Python
- 인공지능, 노동을 지배한다
- 읽을거리
- 코로나바이러스(COVID-19)의 특성 - 울산의대 주철현 미생물학과 교수
- 당근마켓은 중고거래앱이 아니다
- 프랑스 카페의 역사
- Georgia Tech physicists unlock the secret to perfect wok-tossed fried rice
- 결국 멘털 싸움… 마지막 1발까지 ‘봐주기’는 없다
- 블록체인은 광고 산업에서 잠재력을 실현시킬 수 있을까?
- 투자에서 영구적 손실을 피해야 하는 이유
- The 3 Best Resumes I've Ever Seen
- [이슈&탐사] 마흔에 오토바이 처음 탔다. “저임금 일자리로 돌아갈 순 없었다”
- Don Eyles: Extra! Weird-Looking Freak Saves Apollo 14!
- 리뷰빙자리뷰] 류미님의 '스타벅스 사이렌 오더' 기획 이야기
- 美 중앙은행 "CBDC 발행 가능성 검토 중"··· 입장 바꾼 이유?
토요일, 2월 29, 2020
[B급 프로그래머] 2월 4주 소식(빅데이터/인공지능, 읽을거리 부문)
월요일, 2월 24, 2020
[B급 프로그래머] 2월 3주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
- 개발/관리도구
- 크리덴셜 스터핑 공격의 주 목표물이 된 금융 API
- Requirements volatility is the core problem of software engineering
- 견고한 node.js 프로젝트 설계하기
- 분산 시스템의 도전 과제
- 컴퓨팅 사고-자넷 윙, 윤은영, 박성우, 이광근, 홍민희
- 하나의 메모리 누수를 잡기까지
- 멀티 쓰레드 프로그램 설계를 위한 8가지 규칙
- 아마존 웹 서비스 계정 생성 후 해야하는 IAM 보안 조치
- 안심번호 마이크로서비스 개발하기
- Object-Oriented Programming — The Trillion Dollar Disaster
- SHA-1 is a Shambles
- kasaya - A "WYSIWYG" (kind of) scripting language and runtime for browser automation
- The new Office app now generally available for Android and iOS
- 마켓컬리, AWS 기반 신선 식품 샛별 배송 서비스 구현 사례
- Docker Images : Part I - Reducing Image Size
- A Guide to the Newer Python String Format Techniques
- How 1500 bytes became the MTU of the internet
- 타다 웹 프론트엔드의 모든 것
- Why designing for open source can be so difficult
- What 8 years of side projects has taught me
- Mitigations are attack surface, too
- Developer Surveys Survey: Including a Spotlight on Java Results
- Getting started with Deno
- .NET Interactive is here! | .NET Notebooks Preview 2
- Understanding Best Practice Python Tooling by Comparing Popular Project Templates
- Building a static serverless website using S3 and CloudFront
- Engineering for the Long Game
- Let's Build a Compiler, by Jack Crenshaw
- GDBFrontend is an easy, flexible and extensionable gui debugger.
- 모든 자바스크립트 개발자가 알아야 하는 33가지 개념
- Gitpod launches ready-to-code dev environments for your GitHub or GitLab project with a single click.
- Theia - Cloud & Desktop IDE
- Understanding the Node.js event loop phases and how it executes the JavaScript code.
- 컨테이너 내부 Go 애플리케이션 디버깅하기
- 기능 공장에서 일하고 있다는 12가지 신호: 12 Signs You’re Working in a Feature Factory 참고
- Apple's long processor journey
- How do you handle role/permissions updates with JWT?
- 코드 가독성에 대해 – 1. 도입과 원칙
- What made the 1960s CDC6600 supercomputer fast?
- 만들면서 이해하는 도커(Docker) 이미지의 구조 - 도커 이미지 빌드 원리와 Overayfs
- MinIO Client is a replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage.
- Ask HN: How do you learn complex, dense technical information?
- Bash Quick References
- How Big Technical Changes Happen at Slack
- TCMalloc is Google's customized implementation of C's malloc() and C++'s operator new used for memory allocation within our C and C++ code. TCMalloc is a fast, multi-threaded malloc implementation.
- Notes on the Go translation of Reposurgeon
- NeXTSTEP-like desktop environment for Linux
- JPA 선호하는 패턴
- State Of JavaScript 2019의 결과(한국어)
- fyne - Cross platform GUI in Go based on Material Design
- TTY(역사와 기술 소개)
- IMPORTANT WOMEN IN CS WHO AREN'T GRACE HOPPER
- gitea 설치로 git 웹호스팅 서버 구축하기
- Backblaze Hard Drive Stats for 2019
- Bot detection 101: How to detect web bots?
- 네이버 검색의 SRE 시스템
- AWS CLI v2 is now generally available
- AWS 멀티 계정 환경에서 취약한 Security Group 설정 모니터링
- 파이썬(Python) datetime 클래스 치트시트
- Awesome Roadmaps
- Performant front-end architecture
- The Visual 6502
- 쿠폰과 할인으로 앞다리살 하나 더 판매한 이야기 - 왜 그 손님은 쿠폰을 사용하지 못했나
- 고성능 서버/데이터베이스
- M3 - The fully open source metrics platform built on M3DB, a distributed timeseries database
- LINE에서 Kafka를 사용하는 방법 – 2편
- Here to serve Korea’s businesses with a new GCP region in Seoul
- 뉴타닉스, 2019 엔터프라이즈 클라우드 인덱스 한국 결과 발표
- Apple Edge Cache (AEC) is Apple supplied and managed hardware for deployment within our ISP partners networks to deliver certain Apple content directly to our shared customers.
- Google Cuts Jobs at Cloud-Computing Group
- pgcat - Enhanced PostgreSQL logical replication
- 전세계 클라우드 인프라 투자 37% 급증··· 채널이 중추적인 역할
토요일, 2월 22, 2020
[독서광] 출판사가 OK하는 책쓰기
저서와 역서가 제법 되다보니까 종종 출판 관련해서 문의가 들어오곤 한다. 문의하신 분들께 출판이라는 특성에 대해 해줄말은 많지만 요약 정리된 책이 있으면 좋겠다는 생각도 종종 들었었다. 그런데, 이번에 한빛미디어 IT 전문서 편집 경험을 토대로 책이 나왔기에 젭싸게 읽어봤다.
우선 이 책의 특징에 대해 짚고 넘어가야겠다. 일반적인 글쓰기 책과는 달리 이 책은 출판사에서 책을 출판하려는 분들에게 정확하게 목표가 맞춰져있다. 물론 출판을 위해서는 어느 수준 이상으로 글을 잘 써야하지만 전문서/실용서인 경우에는 미려한 문체와 독자를 들었다놓았다하는 스토리 전개가 없어도 되므로 이 책은 글을 잘 쓰는 방법에 대해서는 정말 최소로 다룬다. 그 대신 출판을 위해 출판업의 특성과 출판 과정에 대해 일목요연하게 정리하고 있다. 본문에도 나오지만 출판업에 대한 기본적인 이해가 없으면 본인도 괴롭고 출판사 담당자도 괴로우므로(실제 이런 사례를 여러 번 들었다. 최근에도... T_T) 그냥 자비로 자가 출판하는 편이 바람직하다는 생각에 강력하게 동의한다.
이 책은 집필하면 얼마 정도 버는지부터 시작해서 집필 과정에서 일어나는 여러 가지 사건 사고를 줄이는 방법, 출판사 입장에서 책의 기획부터 출판까지 일련의 프로세스, 목표로 삼는 독자 식별부터 경쟁서 분석에 이르기까지 경쟁력이 높은 책을 기획하는 방법, 출판사에 투고할 때 주의해야 할 사항(특히 실용서인 경우에는 책을 다 쓰고나서 투고하면... 거의 대부분 반려된다는 사실이 중요함), 실용서에 들어가는 글을 잘 쓰는 방법, 저자가 움직이지 않으면 판매가 잘 이뤄지지 않는 이유와 온/오프라인 홍보 방법, 그리고 중요하지 않은 듯이 보이지만 엄청 중요한 저작권과 계약서에 이르기까지 출판사에서 잠재 저자에게 알려주고 싶어하는 핵심적인 내용을 잘 다루고 있다. 뒷부분에는 출판을 진행할 경우 들어가는 공정과 비용도 소개하므로 1인 출판사를 기획하시는 분들도 참고하면 좋을 것 같다.
이 책 저자인 최현우 편집자가 전자책으로 공개한 주유의 IT 책 쓰기 불바다 강론 : 빠르게 포기하거나, 진짜로 저자가 되거나를 읽어보시면 이 책의 성격에 대해 정확하게 파악할 수 있을 것이다. 출간된 종이책은 공개된 전자책을 확대 개편하고 출판 프로세스를 전반적으로 다루고 있다는 사실도 알려드린다.
결론: 출판사마다 모두 어느 정도 지침이 되는 문서가 있긴 하지만 이렇게 포괄적으로 다루는 경우는 보지 못했기에, 아마도 IT 분야 잠재 저자나 역자들의 필독서가 되지 않겠느냐고 조심스럽게 예측한다. 출판을 염두에 둔 잠재 저자/역자에게 강력 추천한다!
EOB토요일, 2월 15, 2020
[B급 프로그래머] 2월 2주 소식(빅데이터/인공지능, 읽을거리 부문)
- 빅데이터/인공지능
- The Map of Mathematics | Quanta Magazine
- It’s 2020. Where are our self-driving cars?
- Neural Quantum States - How neural networks can solve highly complex problems in quantum mechanics
- Semantic Segmentation을 활용한 차량 파손 탐지 딥러닝 모델 개발기
- Snagging Parking Spaces with Mask R-CNN and Python
- Apple Engineer Killed in Tesla Crash Had Previously Complained About Autopilot
- ‘파이토치 속도 극대화’·· MS, 최적화 라이브러리 공개
- A popular self-driving car dataset is missing labels for hundreds of pedestrians
- 2020 Digital Trends report by SimilarWeb
- Google Maps adds dish-covery to the menu
- How our home delivery habit reshaped the world
- Tensor Processing Units (TPUs) are Now Available on Kaggle
- Self-Driving Cars as Edge Computing Devices
- [독서광] 데이터 읽기의 기술(본인이 쓴 글)
- 스타벅스가 '데이터 비즈니스의 신'이 되기까지...
- Michigan’s MiDAS Unemployment System: Algorithm Alchemy Created Lead, Not Gold - A case study into how to automate false accusations of fraud for more than 34,000 unemployed people
- Someone Used Neural Networks To Upscale An 1895 Film To 4K 60 FPS, And The Result Is Really Quite Astounding
- Tesla's self driving algorithm's overlay [video]
- 읽을거리
- [유머] 의외로 치밀한 오리지널 둠의 스토리 요약
- ‘The intelligence coup of the century’- The CIA secretly bought a company that sold encryption devices across the world. Then its spies sat back and listened.
- The cinematographer of Knives Out wants to end the film-vs.-digital debate
- 인프라 지어도 ‘빨대 효과’뿐···지방소멸, 영남이 최대 타격
- Netflix’s Overall Electricity Usage Jumped 84% in 2019, Outpacing Subscriber Growth
- 독서는 자아를 분열시킨다
- Boeing Fixing New Software Bug on Max; Key Test Flight Nears
- PAUL SINGER, DOOMSDAY INVESTOR
- We’re surprisingly bad at reading cats’ facial expressions
- Benedict Evans: Tech in 2020
- YouTube is a $15 billion-a-year business, Google reveals for the first time
월요일, 2월 10, 2020
[B급 프로그래머] 2월 1주 소식(개발/관리도구, 고성능 서버/데이터베이스 부문)
- 개발/관리도구
- SSH over AWS SSM. No bastions or public-facing instances. SSH user management through IAM. No requirement to store SSH keys locally or on server.
- Coding remix site Glitch hits 2.5 million apps
- Unexpected Places You Can And Can’t Use Null Bytes
- Google Chrome to block file downloads – from .exe to .txt – over HTTP by default this year. And we're OK with this
- Learning Technical Writing - Using the Engineering Method
- Jupyter Notebooks in Visual Studio Code
- Analyzing the Attacks on my Website
- Dicts are now ordered, get used to it
- Before the DNS: How yours truly upstaged The NIC's Official HOSTS.TXT
- Protecting users from insecure downloads in Google Chrome
- How to Design a Web Application: Software Architecture 101
- 2020 Java Technology Report
- 1. RESTful API 설계 가이드
- Cloudcraft - Visualize your cloud architecture like a pro - Create smart AWS diagrams
- Opnieuw: A simple and intuitive retrying library for Python
- Full disclosure: 0day vulnerability (backdoor) in firmware for HiSilicon-based DVRs, NVRs and IP cameras
- Diving Deep Into Kubernetes Networking: Docker와 k8s 네트워크 분석
- Java is one of the most energy-efficient languages, Python among least energy efficient
- Service Mesh 란?
- 학생 개발자들이 AWS를 통해 세상을 바꿀 때 — 코로나맵 사례 등
- The Missing Semester of Your CS Education
- Linux containers in 500 lines of code
- TeamViewer stored user passwords encrypted with AES-128-CBC with key 0602000000a400005253413100040000 and IV 0100010067244F436E6762F25EA8D704
- 우아한 모노리스
- ‘편도’ 먹으며 버티는 밤, ‘에러투성이’ 몸은 오늘도 단잠 꿈꾼다
- Top 34 Companies Using Ruby on Rails in 2019
- vanillawebprojects - Mini projects built with HTML5, CSS & JavaScript. No frameworks or libraries
- rtty - Access your device's terminal from anywhere via the web.
- Cascadia Code font(for Developer by Microsoft)
- 사용중인 VSCode(Visual Studio Code) 확장 플러그인 목록
- Troubleshooting Kubernetes deployments
- Game AI Pro 3(free PDF)
- Kubernetes 101 - Concepts and Why It Matters
- 파일 전송이 어려울 때 텍스트 파일 내용 복사하기(putty)
- Anders Hejlsberg on Modern Compiler Construction
- 1082 High-quality SVG logos
- PyRobot - An Open Source Robotics Research Platform
- v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in < 1s with zero dependencies.
- How To Install Software on Kubernetes Clusters with the Helm Package Manager
- C++ 프로그래밍에 요긴한 라이브러리 7종
- Facebook PHP Source Code from August 2007
- sovereign - A set of Ansible playbooks to build and maintain your own private cloud: email, calendar, contacts, file sync, IRC bouncer, VPN, and more.
- Monoliths are the future
- Alpine makes Python Docker builds 50× slower, and images 2× larger
- <번역>자바스크립트 성능 향상 방법
- 리눅스 컨테이너란?
- "완벽한 대응법이 없다" 버퍼 오버플로우 공격의 이해
- 2019 구름 개발자 생태계 설문조사 보고서
- Building structures for architects
- prototype
- '속도와 간결함을 모두 잡은' 지메일 받은 편지함 설정법
- MARKETSRanked: The World’s Most Downloaded Apps
- You Must Understand These 14 JavaScript Functions
- Building personal search infrastructure for your knowledge and code
- jira_clone - A simplified Jira clone built with React/Babel (Client), and Node/TypeScript (API).
- Why numbering should start at zero
- Creating Docker images with Spring Boot 2.3.0.M1
- Leaked Documents Expose the Secretive Market for Your Web Browsing Data
- 서비스 가용성 확보에 필요한 Rate Limiting Algorithm에 대해
- binarysearch - Master algorithms together
- 비주얼 스튜디오 코드(Visual Studio Code)란?
- matterbridge - bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, steam, twitch, ssh-chat, zulip, whatsapp, keybase, matrix and more with REST API (mattermost not required!)
- 인터넷이 동작하는 아주 구체적인 원리
- Microsoft is helping Google improve Chrome’s tab management
- Here's Why Your Static Website Needs HTTPS
- Introducing Yarn 2 !
- Networking Problems by xkcd
- [번역] 쿠버네티스 네트워킹 이해하기#1: Pods
- 고성능 서버/데이터베이스
- Netflix’s Overall Electricity Usage Jumped 84% in 2019, Outpacing Subscriber Growth
- Revised and much faster, run your own high-end cloud gaming service on EC2!
- awesome-scalability - The Patterns of Scalable, Reliable, and Performant Large-Scale Systems
- "2019년 클라우드 지출 37% ↑, 톱4가 60% 점유"··· 카날리스, 분석 보고서 공개
- The Architecture of a Large-Scale Web Search Engine, circa 2019
- Scaling to 100k Users
- User Story - How Trip.com uses Cilium
- AWS Compute Optimizer, 서울 리전 출시
- Why Discord is switching from Go to Rust
- [B급 프로그래머] MariaDB에서 root 암호 인증 방식이 먹히지 않는 이유(feat. unix_socket)(본인이 쓴 글)
- UUIDs are Popular, but Bad for Performance — Let’s Discuss
- Less passwords, more security: unix socket authentication and other MariaDB hardening tips
- Authentication from MariaDB 10.4
- SQLite Is Serverless
토요일, 2월 08, 2020
[독서광] 데이터 읽기의 기술
오늘은 빅데이터와 관련한 독후감을 하나 소개하겠다. 스타벅스코리아 1호 데이터사이언티스트로 알려진 차현나님의 데이터 읽기의 기술이 주인공이다.
이 책은 크게 3부로 나뉘어져 있는데, 솔직히 1부는 많은 책과 블로그에서 다루는 내용이라 재미가 없었다. 2부를 위해 다음 그림과 표만 기억하면 끝나는 것 같다.
5W1H | 데이터 종류 | 의미 |
---|---|---|
누가(WHO) | 멤버십 등급, 동의를 받고 수집한 개인정보(생년월일, 성별, 거주지) | 한 명의 고객. 멤버십에 가입했다면 여러 번 방문한 영수증을 한 사람의 행동으로 연결할 수 있게 되어 더욱 힘을 갖는다. |
언제(WHEN) | 연-월-일-시-분-초, 요일, 공휴일 여부 | 초 단위까지 있다. 회계에서 중요한 기준이 될 수 있다. 여러 관점에서 분절해 분석할 수 있으며, 데이터에 힘을 실어주게 된다. 외부 데이터와 연결할 수 있는 중요한 ‘핵심 가치' |
어디서(WHERE) | 매장 이름, 주소, 상권, 위경도 | 오프라인 매장이며, 이 매장의 위치가 행정구역이나 위경도와 만나는 순간 흔히 상상하는 빅데이터가 될 가능성이 생긴다. |
무엇을(WHAT) | 제품 기준 정보, 범주, 속성, 발주 일시, 가능하면 분자 단위… | 기업의 상품 기준 정보. SKU 단위까지 분류하고 세부 태그를 붙인다. 분류 체계가 중요함 |
어떻게(HOW) | 결제 수단, 쿠폰 사용 여부, 이벤트 참여 여부 | 소비자가 기업에 비용을 지불하는 방법을 다각도로 설명하고, 여기서 프로모션 수단이 나옴 |
왜(WHY) | SNS 분석, 설문 조사, 포커스그룹 심층 면접 | 영수증 데이터만으로는 소비자의 행동 원인을 알기 어려울 때가 있으므로 다른 데이터에서 추정 |
조금 재미있는 내용은 데이터 앞에서 해야할 질문 10가지라는 제목의 2부에 나온다. 기억을 위해 간단하게 정리를 해보았다.
- 우리 회사가 돈을 버는 핵심 제품/서비스는 무엇인가: 데이터로 뭘 할지 모르는 상태에서 "돈을 벌 수 있는 데이터 분석을 해오세요"해도 소용이 없음. 대다수 오프라인 기업들은 데이터가 필수가 아니며, 제품 판매를 높이고 차별화를 주는 하나의 수단에 불과
- 우리 회사의 데이터 역량은 어느 정도인가: 분석 요건, 머신러닝, 고도화된 대고객 마케팅 기법을 이야기하지만… 미봉책으로 신규 데이터를 만들어내고 쌓고, 그러느라 서버를 구매하고, 프로젝트를 띄우고 컨설팅 업체에 돈을 지불하는 악순환을 반복
- 데이터의 필요성을 모두가 느끼고 있는가: 과거를 포함해 현재에도 데이터를 보지 않아도 잘 나가는 회사가 있지만, 세상이 변했기에 이름난 제품 하나로 시장을 휘어잡지 못함. 데이터를 통해 더 빠르고 더 확실한 방법으로 나아갈 방법을 찾아야 함. "빅데이터 그거 어차피 사람들이 이해도 잘 못하는데 꼭 해야 하나?"라는 질문을 하고 싶다면 자신이 데이터를 잘 이해하지 못하기 때문에 중요하지 않다고 생각하는 건 아닌지 되돌아 볼 필요가 있음.
- 데이터가 모든 것을 해결해줄까: 데이터가 많더라도 매출 집계 이외 아무런 분석도 하지 않는 조직이 많음. 데이터는 목적이 있을 때만 정돈이 가능한 특성이 있음.
- 듣도 보도 못한 것을 기대하는가: 실제로 데이터를 보지 않은 사람들이 새로움에 대해 더욱 집착하는 경향이 있음. "이거 내가 다 알던 건데 뭐가 새롭냐?"(지금까지는 감으로 알던 내용을 데이터로 증명했기 때문에 중요함) "다 알던 것을 뭐하러 데이터로 증명했지?"(정합성이나 로직을 따져 일단계 완료하는 데만 에너지가 필요함(2, 3차 분석으로 이어지는 토대))
- 내가 이해하는 만큼만 인정하려 하는가: 내 생각과 맞을 땐 "너무 뻔한 것 아니야? 이거 보기 전에도 난 알고 있었는데". 내 생각과 틀릴 땐 "데이터가 상식적이지 않는데?" 여기서 두 사람은 동일인일 가능성이 높음(의견과 아이디어가 있는 듯이 보이기 때문)
- 목적을 명확하게 세웠는가: "많이 팔릴 것을 만드는 것이 이번 프로젝트의 목적이다" 또는 "사람들이 많이 수집할 만한 제품을 만들어 와"는 실무자에게 전혀 도움이 안 됨. 목적 --> 프로젝트 --> 주제 --> 연구 문제 --> 통찰 --> 모델링 --> 전처리 --> 데이터 순서로 흘러감
- 매출 데이터만 중요할까: 매출은 소비자의 '마지막 결정의 결과'일 뿐이므로 행동 단위를 파악해야 함. 소비자 구매 전후를 많이 알수록 구매행동 결정의 이유를 정확히 알 수 있음.
- 많기만 하면 빅데이터일까: 단순한 문항 하나를 많은 사람을 대상으로 질문했다고 해서 빅데이터로 변신하지는 않음(설문조사를 단순 집계한 결과일 뿐)
- 시간 투자 없이 결과만 원하는가: 만일 빠르게 숫자만 확인하고 싶다면 반복적으로 수치를 확인할 수 있는 대시보드를 만들어라!
3부는 데이터 활용과 관련해 점검해야 하는 사항을 정리하고 있다.
- 프로젝트를 시작할 때 해야 할 질문들: i) 지금 하는 프로젝트는 누가 원하는 것인가? ii) 지루한 분석 작업을 꼭 해야 하는가?(시간이 충분할 때: 최대한 촘촘하게 경우를 나눠 데이터 분석 vs 목표가 명확할 때: 기존 연구 결과에서 일부를 차용해 이야기를 새롭게 구성) iii) 분석해야 하는 명제가 확실한가?
- 프로젝트를 하는 중에 해야 할 질문들: i) WHO(고객 정의) ii) WHEN(시계열 변화, 프로모션 시점) iii) WHAT(제품 카테고리, 개발 통찰력) iv) WHERE(점포 개발, 외부 GIS, 날씨) v) HOW(새로운 방법론, 프로모션) vi) WHY(소비자 마음의 원리)
- 보고서를 만들거나 보고할 때 고려해야 할 것들: i) %보다 복잡한 모델을 이해하는 직장인은 거의 없다 ii) 액션 플랜을 담고 있어야 한다 iii) 실행할 전략을 짜려면 비용을 알고 있어야 한다(예: 1+1 증정, 즉시 50% 할인, 구매 시 50% 쿠폰 증정의 차이점은?)
결론: 마케팅이나 심리학 등을 전공하신 분이라면 이 책이 크게 도움이 안 될 가능성이 높지만, 빅데이터나 분석 쪽에 입문을 하거나 아니면 관련 개발 업무를 하시는 분이라면 이 책을 읽으면 머리 속이 정리될 것이다.
EOB월요일, 2월 03, 2020
[B급 프로그래머] 1월 5주 소식(빅데이터/인공지능, 읽을거리 부문)
- 빅데이터/인공지능
- Autopilot AI by Tesla
- Microsoft ImageBERT | Cross-modal Pretraining with Large-scale Image-Text Data
- How a $300 projector can fool Tesla’s Autopilot
- The Economics of Artificial Intelligence Today
- 구글, '데이터세트 검색' 정식 서비스 개시··· "인기 높은 유형은 '표'"
- “일자리 빼앗는 초지능?” AI를 둘러싼 8가지 오해와 미신
- AI 판사가 선고했다 "재범 확률이 높군, 구속시켜"
- 김진철의 How-to-Big Data | 빅데이터의 미래 (3)
- Understanding Transfer Learning for Medical Imaging
- [Insight Report] 유통 산업 지능화를 위한 플랫폼 전략
- Amazon Personalize 서울 리전 출시
- Table Detection, Information Extraction and Structuring using Deep Learning
- AI '신경망 조정' 지옥에서 탈출하기, '오토머신러닝'
- [데이터 3법의 겉과 속] 당신의 정보는 당신을 위해 쓰이지 않는다
- 기업의 인공지능 도입 : 무엇을 고민해야 하나 - 하편
- Emil’s Story as a Self-Taught AI Researcher
- [일자리 대전환시대①]편의점 마저 ‘키오스크 쇼크’ 내 알바자리가 위험하다
- Key Volkswagen Exec Admits Full Self-Driving Cars 'May Never Happen'
- 35:56 / 1:27:41 Deep Learning State of the Art (2020) | MIT Deep Learning Series
- First Steps With PySpark and Big Data Processing
- 읽을거리
- Coronavirus Forces World’s Largest Work-From-Home Experiment
- [번역] 어떻게 팬데믹(pandemic)에 대응할 것인가 – Joseph Norman, Yaneer Bar-Yam, Nassim Nicholas Taleb* (*나심 탈렙)
- 산전수전 다 겪은 70년대생을 조직 전면에 내새워라
- 자유와 불안 사이를 달리는 새로운 노동
- Our Early Thinking on the Coronavirus and Pandemics by Ray Dalio
- How to Give a Great Presentation: Timeless Advice from a Legendary Adman, 1981
- The Inside Story of the First Picture of a Black Hole
- 2020년 최고의 SSD “가격 변동이 선정에 많은 영향”
- Coronavirus: Don't panic
- 신종코로나바이러스 감염증 유행 관련 FAQ 및 최신 정보 (2020.01.31. 1530)
- 위워크, 그 영화 같은 추락 (번역)
- How Do Bats Live With So Many Viruses?
- Steven Pinker's fake enlightenment: His book is full of misleading claims and false assertions
- [박동휘의 베트남은 지금] '최고,최대,최다' 베트남의 2019년
- I don’t have a retirement plan, and I don’t care
- 용맹스럽게 싸우는 자
- Listen and Write
- 배민의 실험정신
- 대학까지 나와서 일 안하는 비경활인구 381만명 '역대 최대'
- Jobs, Cook, Ive—Blevins? The Rise of Apple’s Cost Cutter
- 40+20 작업법
- 패스트파이브, 4년간 주요 성장 지표 공개
- 코세라, 2019년 가장 인기 있었던 상위 10개 수업 공개
토요일, 2월 01, 2020
[B급 프로그래머] MariaDB에서 root 암호 인증 방식이 먹히지 않는 이유(feat. unix_socket)
먼저 내 실수부터 고백을 하고 넘어가야겠다. 최근 서버 설치 작업을 손놓고 있다가 갑자기 현업(?)으로 복귀할 일이 생겼는데, MariaDB를 설치하는 과정에서 이해하기 힘든 상황에 부딪혔다. 간략하게 시나리오를 정리하면 다음과 같다.
- 우분투 16.04가 설치된 인스턴스에서 apt로 기본 MaraiDB 서버/클라이언트 패키지를 설치
- 여느 때와 마찬가지로 mysql_secure_installation 명령을 내려 보안 강화
- localsystem에서 mysql -u root -p로 로그인하려 했으나... 거부(!) 습관적으로 안전을(응?) 위해 root에 암호를 넣어야겠다는 생각이 발동...
- root shell에서 그냥 mysql로 접속하니 들어감(이 때 뭔가 쌔한 기분이 느껴지긴 했지만...)
- (검색을 해보니 unix_socket 플러그인(!)을 무력화하기 위한 여러 가지 방법이 있어 순진하게 이에 맞춰) root 계정을 암호 사용 방식으로 변경
- mysql -u root -p로 로그인 하니까 잘 들어감
- 환경 설정 파일에서 몇 가지 설정을 변경한 다음에 룰루랄라 신나서 적용을 위해 systemctl mysql restart하니까 오류 발생(systemctl status mysql 명령을 내려서 확인해보니 root로 접근 거부되는 상황이 벌어짐) ==> 당황하기 시작
마음이 급하신 개발자들을 위해 결론부터 정리하고 들어간다.
- 보안을 위해서나 시스템 연동을 위해서나 unix_socket 플러그인을 절대 무력화하지 마시고 그대로 사용해야 함
- 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 Socket과 Authentication from MariaDB 10.4를 참고하기 바란다.
결론: unix_socket 방식으로 root 계정에 대한 접근 방법을 유지하라. 웹에서 검색해서 영혼없이 결과대로 따라했다가는(예: unix_socket 방법 폭파하기) 곤란한 상황에 처할지도 모른다.
EOB