[GN#73] Data Discovery Platform(DDP)의 모든 것, Reddit 활용하기

2020-11-23 ~ 2020-11-29 사이의 주요 뉴스들
서비스가 성장하고 조직이 커지면서, 다양한 데이터들이 사방에 쌓이게 됩니다. 처음엔 프로덕션 DB만 뒤져봐도 알 수 있지만, DB가 다양해지고, 분석하는 주체들도 여럿이 되고, 누가 관리하는지, 언제 만들었는지, 얼마나 자주 업데이트되는지 등등의 정보를 한눈에 알 수가 없게 됩니다. 사내 위키에라도 적어두면 좋겠지만, 그나마도 최신으로 업데이트 안되기 마련이고요. 누군가의 머릿속에 들어가 있다가 퇴사하거나, 구전으로만 전해지다가 잊히거나 하는 일도 겪으며 계속 레거시가 되어가죠. 그래서 페이스북, 넷플릭스, 우버, Lyft 같은 회사들은 이런 문제를 해결하기 위해 메타데이터 들을 관리하는 데이터 디스커버리 플랫폼(DDP) 을 만들어서 사용하고 있습니다. 이 DDP는 어떤 일을 하고 왜 필요한지, 그리고 오픈소스로 공개된 Amundsen, DataHub, Metacat 들은 어떤 기능을 가지고 있는지를 설명한 "Data Discovery Platform(DDP)의 모든 것" 글을 추천합니다.

긱뉴스에서 단골로 소개해 드리는 뉴스 중 하나는 해외의 신규서비스/아이디어들이 어떻게 처음에 사용자를 모집하고, 트랙션을 만들어내는지에 대한 것들입니다. 국내 환경과는 안 맞을 수도 있지만, 국내 회사/개발자들이 만든 서비스가 해외에도 알려지는 데 도움이 되도록 계속 다양하게 소개해 드리고 있는데요. 이번엔 세계에서 가장 큰 커뮤니티 사이트 중 하나인 Reddit 을 이용하는 글을 두 개 같이 소개해 드립니다. "스타트업/인디개발자가 Reddit을 활용하는 법" 에서는 아이디어 피드백 받기, 초기 사용자 모집, 트래픽을 끌어내는 법을 같이 소개하고 있고요. 마치 이걸 잘 활용한 듯한 "무료 일러스트 공개해서 하루 만에 15만뷰 받기" 는 1500만명의 멤버를 가진 /r/InternetIsBeautiful 서브레딧을 활용했다고 합니다. 해외 특히 영어권 사용자 대상 서비스를 만드시는 분들은 참고하시기 바랍니다.


✓ 사내에서 슬랙을 쓰신다면 뉴스채널에 GeekNews SlackBot 을 추가하여 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요.
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.
Twitter , Facebook 에서도 긱뉴스를 받아 보실 수 있습니다.
✓ 긱뉴스를 유튜브와 팟캐스트로 들어보세요 : 애플, 유튜브, 팟티, 팟빵, 구글, 네이버 오디오클립

매주 월요일 아침, 지난 일주일간의 GeekNews 중 엄선한 뉴스들을 이메일로 보내드립니다.


Data Discovery Platform(DDP)의 모든 것

Nemo, Amundsen, DataHub 등이 필요한 이유와 제공하는 기능들을 정리
"왜 DDP가 필요한가요? 그게 무슨 일을 하죠?"
ㅤ→ 조직 내에서 필요한 데이터가 어디 있는지 빠르게 검색하고, 어떤 건지 이해하고, 사용 방법을 배우게 도와 주는 플랫폼

[ 데이터를 찾을 때 주로 묻는 질문들 ]
ㅤ→ "_____" 데이터는 어디서 찾을수 있나요? : 어떤 단어로 검색해야할지도 모를 때도 있음. click, page view 등의 단어로 테이블/컬럼명을 검색
ㅤ→ 이 데이터는 뭔가요? : 이 테이블은 어떤 컬럼을 가지고 있나요, 어떤 데이터형이고, 이 값들이 뭘 의미하나요 ?
ㅤ→ 누구한테 접근 권한을 요청해야 하죠 ? : 데이터의 오너십과 권한 정보 역시 메타데이터의 일부가 되어야 함
ㅤ→ 이 데이터는 어떻게 생성 되었나요? 신뢰할수 있는 건가요? : 누가 만들고, 어떤 경로로 생성되었나요? 분석가가 월간으로 수작업한건가요? 회사내에서 얼마나 쓰이죠? 이 데이터의 계보는 ?
ㅤ→ 이 데이터를 어떻게 사용해야 하죠? : 어떤 컬럼들이 관련이 있나요? 어떤 테이블이랑 조인해야 하죠? 데이터를 정리하려면 어떤 필터를 써야하죠? 이 테이블을 주로 사용 하는 사람은 누군가요? (그 사람에게 물어 보면 되니까) 어떤 컬럼을 주로 사용하죠 ?
ㅤ→ 이 데이터가 얼마나다 리프레시 되나요? : 종종 지연된다면 얼마나 자주 일어나나요? 데이터의 기간은 얼마나 되나요? 몇주밖에 되지 않았으면 머신러닝에 적합하지 않을거 같아요.

[ 데이터를 찾고, 이해하고, 사용하기 위한 기능들 ]

- 데이터를 검색 또는 더 똑똑한 방법들로 찾기
ㅤ→ 원하는 데이터를 찾기위한 기본 방법은 컬럼명,테이블과 컬럼 설명, 사용자가 입력한 설명이나 코멘트 등의 메타데이터를 ElasticSearch 에서 검색
ㅤ→ 많은 검색결과가 있다면 이에 대한 우선순위를 매기는게 필요함. Lyft와 Spotify의 경우는 테이블이 얼마나 많이 사용되는가로 순위를 결정. 즉, 쿼리로그를 파싱하여 테이블 사용량을 ElasticSearch의 랭킹정보로 넣음.
ㅤ→ Facebook 의 Nemo는 이걸 더 확장. 검색어를 spaCy로 자연어 파싱, 소셜그래프 검색에 사용하는 Unicorn 으로 kNN기반 스코어링등을 통해서 랭킹을 결정
ㅤ→ 또 다른 방법은 추천을 통한 것. 조직과 팀내에서 가장 많이 접근하고 사용하는 데이터를 추천

- 데이터를 스키마, 미리보기, 통계, 계보(Lineage)로 이해하기
ㅤ→ 테이블을 이해하는 기본 정보는 데이터 스키마 : 컬럼명, 데이터 타입, 설명(Description)
ㅤ→ 사용자가 읽기 권한이 있다면 데이터의 미리보기(100줄 정도)를 제공 가능
ㅤ→ 미리 계산된 컬럼 단위의 통계도 제공 : 컬럼별 Row수, Null인 Row수, 최대/최소/평균/중간값/표준편차, 고유한 Row수, 날짜 컬럼이라면 데이터의 전체 기간 범위
ㅤ→ 데이터 계보를 제공해서 앞뒤 의존성 관계도 확인 : ETL 작업(Airflow 로 스케줄링 되는)의 경우 스케줄/지연 여부등을 확인할수 있음.

- 다른 사용자의 이용형태를 통해서 데이터 사용법을 배우기
ㅤ→ 테이블을 찾고 나면, 어떻게 테이블을 이용하도록 도와줄수 있을까 ? 간단한 방법은 그 테이블과 관련된 사람들을 보여주는 것
ㅤ→ 데이터 소유자는 권한을 부여해 줄수도 있고, 자주 사용하는 사람들은 데이터에 대한 소개나 특이점을 알려줄 수 있음 : Amundsen 과 DataHub는 테이블에 사람을 엔티티로 연결하는게 가능
ㅤ→ 하지만 이렇게 그 데이터를 잘 아는 전문가만을 활용하는건 병목현상이 생길수 있으니, 추가적인 메타데이터를 연결해주는게 더 Scalable 한 방식
ㅤ→ 사용자가 가장 관련성이 높은 컬럼을 찾을수 있도록, 각 열의 사용통계를 제공하는게 가능.
ㅤ→ 또한 해당 테이블과 조인할 테이블이 어떤건지 알기 위해, 주로 조인되는 테이블 목록과 조인하는 열들을 제공하면 편리. 이런 데이터들은 쿼리 로그 파싱을 필요로 함
ㅤ→ 데이터 사용에 대한 더 자세한 정보를 제공하기 위해서는 해당 테이블에 대한 최근 쿼리를 제공하는게 가능하고, 이를 통해서 실제로 어떤 데이터를 필터링 하는지를 알 수 있음.

ㅤ→ 데이터 계보(Lineage)도 유용. 현재 테이블을 사용하는 다운스트림 테이블에 대해 알수 있고, 그걸 생성하는 쿼리도 보여줌. 이를 통해서 테이블이 다른 유스케이스에 어떻게 이용되는지를 확인 가능
ㅤ→ 이렇게 알게된 다운스트림 테이블이 내 목적과 일치할 경우 그걸 이용하면 계산/저장 비용을 줄일 수 있게됨.
ㅤ→ Twitter 의 Data Access Layer , Uber의 Databook, Netflix 의 Metacat 등이 Lineage를 지원

ㅤ→ 데이터를 실제로 사용하기 전에, 얼마나 자주 업데이트 되는지도 알고 싶어함. 데이터가 어떤 시간단위로(일/시 등) 파티션 되어있는지 명시하는 것이 도움이 됨.
ㅤ→ DDP는 Airflow 같은 플랫폼과 연계해서, 스케줄링된 ETL 작업들을 조사하고, 얼마나 걸리는지 등을 볼 수 있음.

[ 각 DDP 들의 상위 비교 ]
ㅤ→ 모두 ElasticSearch 또는 Solr 기반의 free-text 검색 지원. Amundsen 과 Lexikon 은 홈페이지에서 추천 기능을 제공
ㅤ→ 모두 기본 테이블 정보(스키마,설명)는 표시. Amundsen 과 Databook 은 데이터 미리보기와 컬럼통계를 제공
ㅤ→ 대부분의 플랫폼이 데이터 Lineage 기능은 내장. Amundsend이 현재는 지원안하는데 2020 로드맵에 있음
ㅤ→ 5개의 플랫폼이 오픈소스로 공개

[ 오픈소스 DDP들 비교 ]
- DataHub (LinkedIn) : https://github.com/linkedin/datahub
ㅤ→ 2020년 2월에 공개
ㅤ→ 검색, 테이블스키마, 오너십, 계보 기능 지원
ㅤ→ Dataset, User, Group 세개의 엔티티 지원. Schemas/Jobs/Metrics/Dashboards 등의 엔티티 추가 예정
ㅤ→ Hive, Kafka, RDB 메타데이터 지원 ( 내부에선 더 많이 지원하며, 더 공개될 수도 있음 )
ㅤ→ Expedia, TypeForm 등이 채택했으며 MS,Morgan Stanley, Orange Telecom, ThoughtWorks 등도 POC 중

- Amundsen (Lyft) : https://github.com/amundsen-io/amundsen
ㅤ→ 2019년 10월에 공개
ㅤ→ 검색, 추천, 미리보기/컬럼통계/소유자/주사용자 들이 잘 표현된 테이블 상세 페이지 지원. 계보기능은 없지만 추가예정
ㅤ→ Data Quality System 과의 연동도 제공 예정 (아마도 Great Expectations - https://greatexpectations.io/)
ㅤ→ 훌륭한 커뮤니티가 있음 : BigQuery/Redshift/Apache Atlas 등의 연동등을 개발해서 기여함
ㅤ→ 15종 이상의 데이터 소스( Redshift, Cassandra, Hive, Snowflake 및 각종 RDB), Tableau,Redash, Mode Analytics 대시보드, Airflow 등과 연동을 지원
ㅤ→ 문서화도 잘 되어있고, Docker 로 로컬에서 테스트 가능
ㅤ→ Asana, Instacart, iRobot, Square 를 포함 30개 이상의 조직이 도입.
ㅤ→ 2020 7월에 Linux AI 재단의 새 인큐베이션 프로젝트로 조인.

- Metacat (Netflix) : https://github.com/Netflix/metacat
ㅤ→ 2018년 6월에 공개
ㅤ→ 검색, 스키마 보기, 비용과 공간을 분석하는 메트릭 포함.
ㅤ→ 테이블/파티션 변경에 대한 노티 알림 기능이 있음. 비용등의 문제로 지워질때 알림을 받는게 가능.
ㅤ→ Hive, Teradata, Redshift, S3, Cassandra, RDS 연동 지원
ㅤ→ 스키마/메타데이타의 버저닝/검증 기능 작업중이라고 밝힌바 있음.
ㅤ→ 오픈소스 이긴 하지만, 문서가 하나도 없어서 도입한 회사는 없음.

- Marquez (WeWork) : https://github.com/MarquezProject/marquez
ㅤ→ 2018년 10월에 공개
ㅤ→ 데이터 품질과 계보에 집중
ㅤ→ 데이터 거버넌스, Great Expectations 를 통한 데이터 품질, 데이터셋과 잡에 대한 카탈로그 지원
ㅤ→ WebUI 및 Airflow 컴포넌트 및 Java/Python 클라이언트 제공
ㅤ→ Docker로 로컬에서 테스트 가능하지만 문서는 많지 않음

- Apache Atlas (Hortonworks) : https://atlas.apache.org/
ㅤ→ 2015년 7월에 Data Governance Initiative의 일부로 시작
ㅤ→ 2018년 6월에 1.0이 공개되고 현재 2.1
ㅤ→ 주 목표는 데이터 거버넌스로 조직이 보안/컴플라이언스 요구사항을 준수하도록 도와주는 것.
ㅤ→ 자원에 대한 태깅, 다운스트림 데이터셋에 대한 태그 전파, 메타 데이터 접근에 대한 보안등 풍부한 기능을 가지고 있음
ㅤ→ 메타데이터 변경 알림 기능도 가능
ㅤ→ free-text 검색, 스키마 상세 보기, 데이터 계보 지원
ㅤ→ 고급 검색 기능으로 SQL 과 비슷한 구문으로 검색하는 것도 지원
ㅤ→ HBase, Hive, Kaflka 등의 메타데이터 소스와 연동 지원
ㅤ→ 메타데이터를 REST API로 생성/수정도 가능
ㅤ→ 문서화도 잘 되어있음

* ING가 Atlas 와 Amundsen 을 같이 도입한 사례는 흥미로움 https://medium.com/wbaa/…

* 완전한 DDP는 아니지만 오픈소스 Whale 은 데이터웨어하우스의 내용을 마크다운으로 인덱싱 하는 초간단 DDP 도구로 검색,수정,버저닝등을 지원
ㅤ→ 개발자용 DDP 도구로 살펴볼만함. https://github.com/dataframehq/whale

* 머신러닝처럼 섹시하진 않지만, 데이터 디스커버리는 데이터 사이언스 워크플로우의 중요한 첫 단계

Nemo - 페이스북의 데이터 디스커버리 플랫폼 https://news.hada.io/topic?id=3024

국내에 잘 없는 DDP 구축 사례
- 베이글코드의 Amundsen 을 활용한 DDP 구축 사례 https://medium.com/bagelcode/…

 
스타트업/인디개발자가 Reddit을 활용하는 법

- 아이디어 검증 : 개발전부터 먼저 아이디어 던져보고 피드백 받기.
ㅤ→ /r/webdev
- 초기 사용자 모집 : MVP 완성후 타겟이 일치하는 작은 서브레딧에 공개
ㅤ→ NoCode도구를 만들었다면 /r/startups(51만명) 보다는 /r/nocode(3700명) 그룹이 더 피드백 받거나 사용자 모집이 쉬움
- 트래픽 끌어내기 : 제품에 대한 콘텐츠를 만들기
ㅤ→ 제품에 대한 비밀스런 정보들, 성장시킨 법, 상세한 사용자 통계, 돈을 얼마나 버는지 등등의 정보를 정리
ㅤ→ 사용자 많은 /r/Entrepreneur, /r/Programming, /r/Marketing 같은 곳에 공개
ㅤ→ 각 서브레딧의 룰은 꼭 체크하고, 글 마지막에 제품/블로그 링크 넣을 것

 
무료 일러스트 공개해서 하루만에 15만뷰 받기

- ProductHunt가 아니라 Reddit에 올린게 큰 성공
- 특히 r/InternetIsBeautiful 서브레딧은 방문자가 1500만명이 넘고, 링크만 올리는 것도 가능하며 사람들도 우호적임
- 유행어나 마케팅 문구 없이 "I made .." 라고 표현한게 잘 바이럴 됨
ㅤ→ "I made 100 high-quality illlustrations, totally free. Will continue to add a new one each day. Use it anywhere without attribution"
ㅤ→ 24400개의 업보트, 700개의 코멘트, 147000뷰

무료 일러스트 Scale by Flexiple : https://2.flexiple.com/scale/all-illustrations

뭔가를 공개하는데 ProductHunt가 가장 좋은 것 같지만, Reddit 도 서브레딧을 잘 찾으면 훌륭하다는 거네요.
완전히 무료인데 얘네가 얻는건 뭘까요?
이 Flexiple은 프리랜서 디자이너/개발자를 고용하는걸 도와주는 웹사이트 입니다.
이렇게해서 사람들의 트랙션을 만들어 내는거죠. 들어갔다가 여긴 뭐지? 하고 저처럼 홈화면을 한번이라도 보게될테니까요.

제가 긱뉴스에 해외 바이럴 사례를 계속 찾아서 올리는건..
국내에서도 해외에 이렇게 디자인/오픈소스/서비스를 만들어서 공개하는 성공 사례가 많아졌으면 해서입니다. ^^;

Redddit 을 잘 쓴 사례로 아래 글도 참고하세요
- 무명 게임을 바이럴하기 : Spellbreak의 성장 교훈 https://news.hada.io/topic?id=2794
ㅤ→ Reddit을 메인으로 활용한 건 아니지만, Reddit 같은 high upside channel 에 대해서 이야기 합니다.
ㅤ→ 이 SpellBreak 의 발표자료는 제가 긱뉴스 팟캐스트에서 슬라이드 하나씩 설명한 것도 있으니 같이 보시면 좋습니다.
ㅤ→ https://news.hada.io/podcast/…

새로운 콘텐츠 아이디어를 찾는 방법들 https://news.hada.io/topic?id=2888
- 이 글의 3번째 항목에서도, Reddit 을 활용하는 방법을 얘기합니다.

 
누구나 원하는 개발자되기

적지 않은 시간 개발자 채용에 관여해왔습니다. 그동안 많은 지원자를 만나면서 느꼈던 점들을 정리해봤습니다 :)

좋은 글 올려주셔서 감사합니다. 글 중에서 제가 특히 공감갔던 것은 [성과라는 스토리에 대한 어필]과 [발표나 교육을 염두에 둔 마음가짐]이었습니다. 실제로 저도 기존에 이미 잘 안다고 생각하던 것도 글을 쓰거나 발표를 하려고 준비하다 보면 새롭게 알거나 더 깊이 알 수 있는 경우가 많았고, 이번에 취업에 성공할 때도 가장 컸던 것이 면접에서 이전 프로젝트에서의 성과를 제대로 어필할 수 있었기 때문이라고 생각하거든요.

 
ex-구글러를 위한 개발도구 가이드

- 구글내의 개발환경에 익숙한 개발자가 퇴사후 다른 회사에 갈때 쓰게 될 개발 도구들에 대한 가이드
- 양쪽의 개발도구를 비교해서 볼 수 있는 재미난 글

구글 내부 ↔ 외부
- 기능/버그 트래커 : Issue Tracker ↔ GitHub Issues, JIRA
- 코드 읽기 : Code Search ↔ 에디터, OpenGrok, Hound, Sourcegraph
- 코드 작성 : Critique, IntelliJ, Emacs, Vim, VS Code ↔ Critique 제외한 전부
- 테스트 코드 : Blaze ↔ Bazel
- 코드 리뷰 : Critique ↔ GitHub PRs, Gerrit, Phabricator, Reviewable
- 배포 : Borg ↔ Kubernetes
- 모니터링 : Borgmon, Dapper, Viceroy ↔ Prometheus, Grafana, Lightstep, Honeycomb, Sentry

Google Diaspora 라는 표현이 적절하네요.
저도 10년전에 KTH에 있을때 거기서 썼던 지라/컨플루언스/Git(GitLab) 등의 도구에 손에 익은 분들이 다른데 가서도 다 그걸 쓰는걸 본 적이 있어서 공감이 갑니다.
구글은 자체 도구가 워낙 방대하다보니 이런 글들이 나올 수가 있군요.

글 중간에 있는 xg2xg 저장소 링크도 유용합니다.
"xg2xg - by ex-googlers, for ex-googlers - a lookup table of similar tech & services"
- https://github.com/jhuangtw/xg2xg

 
고성능 TypeScript를 위한 팁

- 실행성능이 아닌 "컴파일 및 편집 시 성능"을 높이기 위한 팁들
- TypeScript 팀이 직접 정리

→ 잘 컴파일 되는 코드 작성법
→ 프로젝트 참조 사용법
→ tsconfig.json 과 jsconfig.json 설정
→ 다들 빌드도구 설정
→ (느려진) 원인 조사하는 법

 
Big Sur 게이트, 사람 바보 취급하는 애플코리아

- 2014년형 맥북프로를 빅서로 업데이트 했더니 벽돌이 됨(부팅 불가)
- 애플스토어(가로수길) 가서 물으니 메인보드가 나갔다고 함 : 50만원 유상수리
- 찾아보니 2014년형 맥북프로가 다 비슷한 증상이 나타난다는 해외 사례들이 많음
- 다시 가서 물어보니 I/O보드가 고장난거라 끄면 부팅은 된다고(와이파이 불가)
- 이 와중에 애플코리아 직원들의 고압적인 태도 와 OS업데이트는 고객의 선택이라고 말함
- 작성자 분은 스토어에서 맥북을 부숴버림

* 2014년 맥북프로는 Big Sur 업데이트 할때 I/O보드가 고장나는 경우가 있으니 조심하세요.

 
MuscleWiki - 근육 부위별 운동 가이드 위키

- 남성/여성의 근육 부위별로 운동/스트레칭/바디웨이트/케틀벨 운동을 어떻게 하는지를 상세하게 정리
- 해부도에서 부위 클릭시
ㅤ→ 해부학적인 설명
ㅤ→ 운동하는 법 영상 : 짧은 GIF 형식 과 설명
ㅤ→ 사이트내에서 구글 자동번역으로 한국어도 지원

 
dog - 쓰기 편한 DNS 클라이언트

- UDP/TCP(포트 53) 및 DoT(DNS-Over-TLS, 포트 853), DoH(DNS-Over-HTTPS, 포트 443)를 지원하는 CLI용 오픈소스 DNS 클라이언트
- 내용을 읽기 쉬운 컬러풀한 출력
- JSON 출력을 지원. jq등과 연동하여 자동화 스크립트에서 사용 가능
- 윈도우/맥/리눅스 지원

 
iPhone OS 1.0과 iOS 14를 트리맵으로 비교해 보기

내부 파일 시스템의 기능별 바이너리를 묶어서 트리맵으로 표현

iPhone OS 1.0
- UIKit 13%
- 배경화면과 벨소리 6%
- ICU(유니코드) 5%
- SpringBoard 2%

iOS 14
- 머신러닝에 활용되는 자원들이 많음 : 얼굴인식, Deep CNN, 문자인식..
- iPhone OS 3.1 부터 적용된 dyld shared cache 기능으로 프레임웍들이 분산되어 있음
- Health 관련기능이 꽤 큼
- 카메라/사진 관련 많은 기능들 : 효과, Memories(추억), 비디오 처리..
- 계속 추가되어온 기능들 : HomeKit, Watch, CarPlay, Spotlight, Emoji, News, iWork, Wallet, Shortcuts, ARKit, ...
- 폰트가 전체의 6%
- Linguistic(언어) 데이터가 8%
- ICU 크기는 3배가 커졌지만, 전체의 0.5% 밖에 안됨

* 용량을 비교해보면, iPhone OS 1.0 의 전체 크기는 iOS14 의 배경화면들 사이즈 밖에 안됨

 
M1 맥에서 MS윈도우 ARM버전 가상화 성공

- QEMU를 사용해서 에뮬레이션 없이 M1 맥OS에 윈도우 ARM64버전을 실행
- 윈도우 ARM64 버전은 내부에서 x86 윈도우 어플리케이션을 에뮬레이션 하여 실행 가능
ㅤ→ Rosetta 2 만큼 빠르진 않지만 거의 비슷한 성능
ㅤ즉, M1 ARM macOS → QEMU → Windows ARM64 → MS의 x86에뮬레이션 → x86 윈도우 앱 실행

애플이 x86 윈도우 앱을 에뮬레이션해줄 일은 없으니,
ARM버전 윈도우를 올리고 그 안에 MS가 만든 x86 에뮬레이션 코드를 사용하는 거군요.

ARM에서 x86 에뮬레이션이 작동하는 방식
- https://docs.microsoft.com/ko-kr/windows/…

 
2021년 디지털트랜스포메이션 트렌드 분석 보고서

국내외 매체/기관들이 분석한 2021년 디지털 트랜스포메이션 전략, 소비자트렌드, 비즈니스, 마케팅, 테크 트렌드 자료들을 정리

컨슈머 트렌드
- 트렌드 키워드
- 비즈니스 트렌드
- MZ세대 트렌드
- '예측불허' VUCA시대
- 미국 식품 트렌드
- 화장품 트렌드 키워드

리테일 & 마케팅 트렌드
- 디지털 마케팅 트렌드 10대 키워드
- 브랜드가 주목할 3가지 흐름
- 글로벌 마케팅 트렌드
- 리테일 트렌드 플레이북
- 소셜 미디어 트렌드
- SEO 트렌드

테크 트렌드
- 디지털 트렌스포메이션 8대 트렌드
- ICT 10대 트렌드
- 가트너 기술 트렌드
- 디지털 비즈니스 혁신 5가지
- 기업이 겪을 변화 12가지
- 포브스 주목해야할 기술 5가지 트렌드
- AI 10대 트렌드
- AI 챗봇 트렌드
- UX 디자인 트렌드
- 디지털 디자인 및 그래픽 디자인 트렌드

 
rehex - 리버스 엔지니어를 위한 오픈소스 Hex 에디터

- 크로스 플랫폼(윈도우/맥/리눅스) UI
- 1TB+ 이상 파일 지원
- 정수/실수형 디코딩
- 머신코드 디스어셈블
- 원하는 바이트 블럭에 코멘트 작성 지원
- 선택 영역 좌우 diff 비교 지원

 
11년동안 작업한 Line Rider 트랙

- 2006년에 나온 Line Rider 는 선을 그리면 라이더가 따라서 이동하는 간단한 플래시 게임
- 2008년부터 만들기 시작해서 11년간 만들어낸 Omniverse II 트랙을 공개 (4분짜리 유튜브 영상)
- 중학생때 Line Rider를 알고, 고등학생때 트랙을 만들기 시작, 나중엔 프로그래밍을 배우고 공대에 가서 Line Rider 자체를 여러번 재개발해보고 최종적으로 웹버전으로 만들어서 https://www.linerider.com/ 의 공식 버전이 됨 (현재는 소프트웨어 엔지니어 이자 미디어 아티스트)
- 사용한 기법들을 하나 하나 설명하는 굉장히 긴 글

 
까치가 병뚜껑을 물어오면 음식으로 바꿔주는 기계를 만들다

- 인공지능 & 로봇 분야에서 일하는 Hans Forsberg가 야생 까치를 위해 만든 자동 음식 공급장치
- 라즈베리파이 3 + 아두이노 UNO
- 디스펜서는 3D 프린터로 출력하고 4.5v DC 모터와 연결 : 디자인은 Thingiverse에 공개
- 동작영상, 제작과정 및 처음에 어떻게 까치가 병뚜껑을 물어오게 트레이닝 했는지 등은 유튜브로 공개
- 현재는 메탈디텍터로 병뚜껑을 인식하고 있으며, 카메라 기반으로 AI기반 범용 감지기를 통해서 다른 물건들로도 실험할 예정

 
이제 React.js 를 버릴 때가 왔다

1. React는 UI 라이브러리였지만 SSR덕분에 SEO가 가능한 SPA로 사용하면서 문제가 시작
2. hooks는 멍청한 선택
3. SSR은 느리고, 반대로 검색엔진이 똑똑해졌다
4. 좋은 대체품들이 많이 나왔다

"React 보다 더 좋고 쉬우며 편한 기술이 많이 있는데, 굳이 React 로 모든걸 만들어야할 필요가 있을까?"

 
Salesforce가 Slack 인수 협상을 진행중

- 시총 18조원($17B) 보다 높은 가치로 논의가 되고 있다는 WSJ의 기사
- 뉴스 이후 슬랙 주가는 장외에서 37% 상승해서 $22.5B, 실제로 인수가 진행되면 25조원 이상이 필요할 듯
- 올해 60% 주가가 오른 세일즈포스는 현재 시총 250조원(뉴스 이후 5% 하락)
ㅤ→ 2019년 Tableau를 16조원 정도에 인수한 이후 가장 큰 인수가 될 듯

- MS가 2016년에 Slack을 $8B에 인수하려고 했으나 (빌게이츠의 반대로) 실패하고 Teams에 집중
- 세일즈포스는 이미 내부에 5만명의 직원대상으로 Slack을 도입해서 사용중

슬랙 주가가 37%나 상승하긴 했지만, 3월초 주가와 비교해서는 10% 밖에 안 오른것입니다.
3월초 대비 현재 Zoom 의 주가는 280% 올랐거든요.
슬랙이 업무용 소프트웨어 시장에서 아주 힙하진 않은 상태이기 때문에, 저 딜이 성사되지 않을까 생각도 듭니다.

Microsoft Teams is now officially bigger than Slack https://news.hada.io/topic?id=73
Slack, EU에 MS Teams를 경쟁법(반독점법) 위반으로 신고 https://news.hada.io/topic?id=2512

저희는 회사에서 팀즈를 쓰는데요(팀즈 긱뉴스 봇 기다립니다 흐흐)

팀즈가 어떻게 이렇게 많은 기능을 짧은 시간에 제공했나 놀라웠는데, 사용해보니 뒷단은 SharePoint 가 제공하는 부분이 많은 것 같아요. 뭔가 기능 사용하다가 항목의 링크 복사하기를 눌러보면 SharePoint 사이트가 주소가 나오고 그 링크로 웹브라우저에서 접근하면 진짜 쉐어포인트 사이트가 나오는 기능들이 좀 있거든요.

사실 이전에는 SharePoint 를 협업용으로 사내에서 몇년간 사용한 적도 있어서 반갑기도 하면서, 팀즈가 아직은 약간 얼기설기 부족한 부분을 노출하는 것들도 있어서 아쉽기도 하고 그렇네요.

 
SQLite를 도큐먼트DB로 사용하기

- SQLite의 Generated Columns 와 JSON 관련 함수를 사용해서 Document DB처럼 사용하는 방법
- GENERATED ALWAYS 와 json_extract 를 조합

> CREATE TABLE t ( body TEXT, d INT GENERATED ALWAYS AS (json_extract(body, '$.d')) VIRTUAL);
> INSERT INTO t VALUES(json('{"d":"42"}'));
> SELECT * FROM t WHERE d = 42;
{"d":"42"}|42

 
JSX Lite - Write components once, run everywhere

- JSX의 서브셋으로 작성한 웹UI 컴포넌트를 Vue, React, Solid, Angular, Svelte, Liquid 에서 다 쓸 수 있게 컴파일 해주는 오픈소스 도구
- Figma/Sketch 에서 디자인을 가져와서 변환 가능
- https://www.builder.io/ 에서 Drag & Drop UI 편집 지원
- 현재 알파단계로 곧 Stable 릴리즈 예정, ReactNative 지원 및 VS Code 플러그인도 개발중

 
PHP 8.0 릴리즈

- 두개의 JIT 엔진으로 속도 개선 : Tracing JIT + Function JIT
- 타입 시스템 과 에러처리 개선

- Named arguments
ㅤ→ htmlspecialchars($string, double_encode: false);
- Attributes
ㅤ→ #[Route("/api/posts/{id}", methods: ["GET"])]
- Constructor property promotion
ㅤ→ __construct( public float $x = 0.0 ) {}
- Union Type
ㅤ→ private int|float $number
- Match expression
ㅤ→ match (8.0) { '8.0' => "Oh no!", 8.0 => "This is what I expected", };
- Nullsafe operator
ㅤ→ $country = $session?->user?->getAddress()?->country;
- Saner string to number comparisons
ㅤ→ 0 == 'foobar' // false (예전엔 true 였음)

- 추가 : WeakMap 클래스, Stringable 인터페이스, str_contains(), str_starts_with(), str_ends_with() 함수들

 
애플 CPU의 트릭들 - 메모리 리오더링, JS지원, Ref 카운팅

1. 흑마법처럼 보이는 애플의 인텔코드 실행 속도는 기본적으로 Arm과 Intel 아키텍쳐의 결합
2. 두 CPU는 기본적으로 "메모리 오더링"이 달라서 에뮬레이션 속도가 느린데, 애플이 한 해결책은 인텔의 방식도 넣어 버린 것. x86코드를 실행할때는 인텔의 메모리 오더링을 따르게 만듬
3. 자바스크립트 최적화된 명령어들을 추가하고, L1캐쉬를 두배로 함으로써 웹브라우징을 할때 더 빠르고 배터리가 오래가게 만듬
4. 인텔 맥북에어의 듀얼코어는 빠를때는 3.8Ghz 이고, 느린모드에서는 1.2Ghz로 동작해서 전력을 아꼈지만, 인텔은 다운클럭에서 실행되도록 설계한게 아님.
애플은 성능과 효율용 프로세서를 각각 4개씩 넣어서 최적화. 저전력모드에서는 성능 프로세서 4개를 끄고 효율 프로세서 만으로 동작.
컴파일 같은 작업을 할때는 4개의 프로세서 전부를 활용해서 정말 빠름.
5. 인텔이 무어의 법칙에서 3년 뒤쳐짐. 애플 실리콘은 TSMC의 최신 5나노 공정을 사용하는데, 인텔은 10나노/7나노 공정을 사용하고, 심지어 많은 인텔 제품들은 더 오래된 14/10나노 공정을 사용함 .
6. Swift 언어는 안드로이드의 "가비지 콜렉션" 대신, "레퍼런스 카운팅"을 사용함. 애플은 레퍼런스 카운팅 속도를 두배로 올리기위해 CPU에 뭔가를 해뒀음.

 
eDEX-UI - SF느낌의 크로스플랫폼 터미널

- 영화 Tron Legacy 에서 보던 느낌의 미래풍 터미널 UI
- 터미널 좌우 : 시스템(CPU,RAM,SWAP,Process)/네트웍(GeoIP,연결,전송량) 모니터링 UI
- 터미널 하단 : 디렉토리 뷰어 + 온스크린 키보드 내장
- 터치 디스플레이 지원
- 테마 지원 : 다양한 화면 개인화, 키보드 레이아웃, CSS 인젝션 가능

 
애플 Rosetta Translation 환경에 대해서

- Rosetta 는 애플실리콘에서 x86_64 명령으로 된 앱들을 실행할수 있게 해주는 번역 프로세스
- 사용자에게 Rosetta는 보이지 않음. 실행파일이 인텔 명령어들만 가지고 있을때 macOS가 자동으로 Rosetta를 실행해서 번역을 시작
- 번역이 끝나면 시스템이 오리지널 대신 번역된 실행파일을 실행함. 이 번역시간은 실행이 걸리므로 앱이 실행/동작하는게 느릴 수 있음
- 시스템은 앱의 arm64 명령어 실행을 선호함. 바이너리가 arm64 와 x86_64를 둘다 가지고 있을때 사용자는 강제로 Rosetta 로 실행되도록 지정 가능. 예를 들어 특정 플러그인이 arm64를 지원 안하거나 할때
- 시스템은 같은 프로세스 안에서 arm64 와 x86_64 코드를 섞는 것을 방지함. Rosetta 는 동적로딩 하는 코드 모듈을 포함해서 전체적으로 적용됨.

번역 될수 없는 것
- JIT를 컴파일러를 포함한 앱들을 다 번역하지만 아래 것들은 번역하지 않음
ㅤ→ 커널 확장
ㅤ→ x86_64 컴퓨터플랫폼을 가상화하는 Virtual Machine
- 로제타는 모든 x86_64 명령어를 번역하지만, AVX,AVX2, AVX512 같은 최신 또는 프로세서 기능들은 지원 안함.
ㅤ→ 이런 함수들이 코드에 있다면, sysctlbyname 함수 등으로 실제 가능한지 확인 후에 호출해야함.

- 로제타로 번역된 바이너리로 실행되는지 확인하려면 sysctlbyname 함수에 sysctl.proc_translated 플래그를 줘서 확인 가능