[GN#74] Apple M1칩은 왜 그렇게 빠를까?

2020-11-30 ~ 2020-12-06 사이의 주요 뉴스들
애플이 자신들의 새 프로세서를 Apple Silicon이라고 명명했을 때, 왜 저런 이름을 붙였나 궁금했는데요. 애플 실리콘은 애플이 그동안 만들어왔던 CPU, GPU, ISP, DSP, NPU, T1 등 다양한 전용 칩들과 UMA라는 통합 메모리, IO 컨트롤러를 하나의 실리콘 다이에 올린 통합칩이기 때문에 붙인 이름이었네요. 애플과 인텔/AMD의 SoC(System on a Chip) 비즈니스 모델 차이 및 CPU 아키텍처 측면까지 M1 칩이 빠른 이유에 대한 자세한 내용을 다룬 "Apple M1 칩은 왜 그렇게 빠를까?" 글이 굉장히 인기를 끌었습니다. 글 내용중에 "They control the whole widget"라는 말이 가장 무섭게 느껴졌습니다. 이렇게 소비자 대상의 기기를 칩과 하드웨어, 소프트웨어까지 다 설계하고 만드는 회사가 시장에 없는지라 앞으로 어떻게 시장이 바뀌어 갈지 흥미진진합니다. 전 애플 실리콘이 들어갈 16인치 급 노트북이나 iMac도 기대합니다만, 아이폰, 아이패드, 애플워치, 에어팟 이후에 애플이 새롭게 내놓을 기기가 무엇일지가 궁금하네요. 소문대로 "애플 글라스" 와 "애플 카"가 나오게 될까요?

비대면 상황이 지속되면서, 온라인 발표/강의 자료들이 더 많이 나오고 있는데요. Screenity는 이런 온라인 강의를 녹화하고 편집하기에 좋은 오픈소스입니다. 별도의 실행파일이 아니라 크롬 확장으로 만들어져서 다양한 OS에서 이용이 가능하고, 녹화 시 특정 부분 강조를 위한 추가 기능들을 제공하고 있습니다. 저는 개인적으로 OBS Studio를 이용해서 긱뉴스 팟캐스트를 찍어서 유튜브에 올리고 있었는데요. 앞으로는 Screenity도 같이 활용해 보려고 합니다.


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

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


Apple M1칩은 왜 그렇게 빠를까?

- M1은 한개의 CPU가 아니라, 대형 실리콘 패키지에 여러개의 칩들을 넣은 전체 시스템. CPU는 그중의 하나 일뿐
ㅤ→ CPU,GPU,메모리,IO콘트롤러 등을 묶은 SoC(System on a Chip)
- 범용 코어를 많이 넣는 대신, 특정 작업에 특화된 칩들을 넣음
ㅤ→ CPU : OS와 앱들을 실행
ㅤ→ GPU : 그래픽 작업을 수행. 앱의 UI, 2D/3D 게임등
ㅤ→ ISP(Image Processing Unit) : 이미지 프로세싱 속도 증가
ㅤ→ DSP(Digital Signal Processor) : CPU보다 더 수학집약적인 기능을 수행. 음악파일 압축 해제와 같은
ㅤ→ NPU(Neural Processing Unit) : 머신러닝, 음성인식, 카메라 처리등을 가속
ㅤ→ Video Encoder/Decoder : 저전력으로 비디오 파일/포맷 처리
ㅤ→ Secure Enclave - 암호화, 인증, 보안
ㅤ→ UMA(Unified Memory Architecture) : CPU,GPU 및 다른 코어들이 빠르게 정보 교환
ㅤ이런 칩들이 이미지/비디오 편집 및 큰 비디오 인코딩에서 성능이 뛰어난 이유 임

- Unified Memory Architecture(UMA)는 뭐가 특별한거야 ?
ㅤ→ 이 전의 CPU/GPU 통합 칩들은 느렸음
ㅤㅤㅤ둘은 서로 다른 메모리 영역을 서로 다른 방식으로 사용.
ㅤㅤㅤ게다가 GPU는 발열이 심하니까 큰 쿨링팬이 있는 거대한 카드들이 고성능을 보임
ㅤㅤㅤ하지만 이러면 서로간에 많은 데이터를 복사해야 하다보니 PCIe 같은 버스가 필요해짐

ㅤ→ Unified Memory 는 CPU/GPU를 위해 따로 할당하지 않음 그냥 같이 씀.
ㅤㅤㅤShared Memory 와 다르게 CPU와 GPU가 동시에 접근이 가능하며, 위치 정보 교환만으로 접근해서 복사가 필요없어짐

- 이 SoC 방식이 좋으면 다른 제조사들은 왜 안하지 ?
ㅤ→ 하고 있음. AMD가 CPU/GPU를 같은 실리콘 다이에 올린 APU형태를 만들기 시작
ㅤ→ 하지만 실제로 하기는 어려움. 왜나면 SoC 는 전체 컴퓨터를 하나의 칩에 올리는 것이기 때문에 HP나 델 같은컴퓨터 제조사에 더 어울림
ㅤ→ 인텔과 AMD의 비즈니스 모델은 사람들이 PC마더보드에 꼽는 범용 CPU기반인데,
ㅤㅤ 새로운 SoC 시장은 서로 다른 벤더의 피지컬 제품들을 가져와서 조립하는게 아니라, IP(Intellectual Property)를 조립하는 것
ㅤ→ 과연 인텔,AMD,Nvidia 가 Dell 이나 HP에 IP를 라이센스 줄 수 있을까 ?
ㅤ→ 물론 인텔과 AMD가 완성된 SoC를 판매할수 있지만, CPU제조사/PC제조업체/MS 간에 이해의 충돌(뭘 넣어야 할지 등)이 발생 가능
ㅤ→ 하지만 애플에겐 간단한 이슈. 그들은 자신이 모든걸 만듬. "They control the whole widget"

- CPU를 빠르게 만드는 가장 근본적인 도전
ㅤ→ M1의 빠른 범용 CPU 코어인 Firestorm 은 진짜로 빠름. 이게 기존 AMD/Intel 등과 비교했을때 느렸던 기존 ARM과의 차이
ㅤ→ Firestorm은 대부분의 인텔/AMD Ryzen 코어를 속도면에서 다 이기는데, 상식으로는 일어나지 않을 일.
ㅤ→ 빠른 CPU를 만드는 전략은 뭔가 ?
ㅤㅤㅤ1. 순차적으로 더 빠르게 명령을 실행
ㅤㅤㅤ2. 여러개의 명령을 병렬로 실행

ㅤㅤ80년대엔 쉬웠음. 그냥 클럭주파수를 높이면 명령이 빨리 실행됨.
ㅤㅤ컴퓨터는 클럭 사이클당 뭔가를 하는데, 이 "뭔가"는 아주 작아서, 명령 하나가 몇개의 클럭 사이클이 필요하기도 함
ㅤㅤ하지만, 현대에 와서는 클럭 주파수를 높이는 데에는 한계가 있음.
ㅤㅤ"무어 법칙의 끝"
ㅤㅤ따라서, 이젠 최대한 많은 명령을 병렬로 실행하는 것이 중요

- Multi-core or Out-of-Order processors?
ㅤ→ 병렬실행엔 두가지 접근 방법이 있다
ㅤㅤㅤ1. 더 많은 CPU코어를 넣는 것 (개발자 관점에서는 쓰레드를 더 추가하는 것 )
ㅤㅤㅤㅤㅤ이론적으로는, 프로세서의 코어는 여러개의 쓰레드를 실행할 수 있음(소프트웨어 쓰레드)
ㅤㅤㅤㅤㅤ이건 쓰레드간에 전환하며 실행하는 거라, I/O 나 네트웍에서 뭔가를 대기하는 상황에서나 사용
ㅤㅤㅤㅤㅤ하드웨어 쓰레드는 속도가 빨라지지만, 개발자가 이를 활용하기 위한 코드를 작성해야함.
ㅤㅤㅤㅤㅤ서버/클라우드에서는 이 모델이 적합.
ㅤㅤㅤㅤㅤ그래서 Ampere 같은 회사가 128코어를 가지는 Altra Max 같은 클라우드용 ARM CPU를 만드는 것.

ㅤㅤㅤㅤㅤ애플은 이것의 정확히 반대임. 애플은 싱글 사용자를 위한 기기를 만드는 회사
ㅤㅤㅤㅤㅤ데스크탑 소프트웨어들은 대부분 많은 코어를 활용하도록 만들어지지 않음.
ㅤㅤㅤㅤㅤ게임은 8코어에서는 성능 향상이 되겠지만, 128 코어는 낭비일뿐.
ㅤㅤㅤㅤㅤ그래서, 더 적은수의 강력한 코어를 필요로 하게 됨
ㅤㅤㅤ2. 비순차 실행 (Out-of-Order Execution, OoO )은 더 많은 명령을 병렬로 실행하지만 다중쓰레드 처럼 명시해서 사용할 필요가 없음
ㅤㅤㅤㅤㅤ개발자 관점에선 그냥 각 코어들이 빠르게 동작하는 것처럼 보임

ㅤㅤㅤㅤㅤ특정 위치의 메모리 장소에서 데이터를 가져오는 것은 느림
ㅤㅤㅤㅤㅤ하지만, 1바이트를 가져오나 128바이트를 가져오나 Delay 차이는 없음
ㅤㅤㅤㅤㅤ데이터는 데이터버스를 통해서 이동하는데, 이 버스가 넓으면 동시에 여러 바이트를 읽어올수 있음

ㅤㅤㅤㅤㅤCPU는 실행할때 여러 덩어리의 명령어들을 한번에 실행하게 되는데, 이 명령어들은 순차적으로 실행하게 작성되어 있음
ㅤㅤㅤㅤㅤ최신 마이크로프로세서들은 Out-Of-Order 실행을 함.
ㅤㅤㅤㅤㅤ즉 여러개의 명령어들을 분석해서, 서로간에 의존성이 있는지를 알아냄.

ㅤㅤㅤㅤㅤㅤㅤㅤ01: mul r1, r2, r3 // r1 ← r2 × r3
ㅤㅤㅤㅤㅤㅤㅤㅤ02: add r4, r1, 5 // r4 ← r1 + 5
ㅤㅤㅤㅤㅤㅤㅤㅤ03: add r6, r2, 1 // r6 ← r2 + 1

ㅤㅤㅤㅤㅤ위 명령에서 1과2는 의존성이 있지만, 3번은 앞과 전혀 상관이 없음.
ㅤㅤㅤㅤㅤ이러면 Out-of-Order 프로세서들은 의존성이 없는 3번 명령을 병렬로 실행할수 있음.
ㅤㅤㅤㅤㅤ실제로는 CPU가 한두개가 아닌 수백개의 명령어들간에 의존성을 파악할 수 있음.

ㅤㅤㅤㅤㅤCPU는 명령어를 노드 그래프로 연결하고 그걸 분석해서 병렬로 수행할수 있는 명령과, 실행전에 결과를 기다려야 하는 위치를 알아낼수 있음.

ㅤㅤㅤㅤㅤM1의 Firestrom 코어가 엄청난 속도를 내는 이유는 아주 뛰어난 Out-of-Order 실행을 하기 때문.
ㅤㅤㅤㅤㅤIntel/AMD 를 포함한 주류시장의 다른 누구보다도 뛰어날 것 같음.

- 왜 AMD 와 Intel 의 Out-of-Order 실행은 M1보다 느릴까 ?
ㅤ→ 앞에서 얘기한건 실제로는 ROB(Reorder Buffer) 라고 하며 일반적인 기계어 코드 명령이 아님(CPU가 실행하기 위해 메모리에서 가져오는)
ㅤㅤ이 명령어들은 CPU Instruction Set Architecture(ISA)라고 하며, 우리가 x86, ARM, PowerPC 라고 부르는 것들임.
ㅤ→ CPU는 내부에서 프로그래머가 모르는 완전히 다른 명령어 세트인 micro-operations (마이크로 명령어, micro-ops or μops)로 실행되며, ROB는 이 micro-ops 로 가득 차 있음
ㅤ→ ARM/x86 명령어는 공개 API, micro-ops 는 비공개 API라고 생각하면 됨.
ㅤ→ CISC 는 명령어가 크고 복잡하기 때문에 micro-ops를 꼭 써야하지만, RISC는 쓸지말지 선택할 수 있음.
ㅤㅤ(예를 들어, 작은 ARM CPU들은 micro-ops를 안써도 됨. 그렇다고 OoO를 못하는건 아님)

ㅤ→ 이게 왜 중요할까 ? "빠른 속도는 ROB를 얼마나 빨리,많이 채울수 있는지"가 중요
ㅤ→ 더 빠르게 채울수록, 더 많은 명령어를 병렬로 실행할수 있는 기회가 많아져서 성능이 향상
ㅤ→ 기계어 코드들은 디코더에 의해서 micro-ops 로 분할이 됨.

ㅤ→ 인텔/AMD 코어는 4개의 디코더가 있는데,
ㅤㅤ애플은 '미친' 8개의 디코더가 있고, ROB가 3배 더 커서 기본적으로 3배더 많은 명령어들을 담을 수 있음

- 그럼 왜 인텔과 AMD는 더 많은 명령어 디코더를 안 넣어 ?
ㅤ→ 여기서 RISC의 반격이 시작됨. M1 Firestorm 코어에 ARM RISC가 있다는게 중요.
ㅤ→ x86 명령어의 길이는 1~15바이트이고, RISC는 고정 사이즈
ㅤ→ 모든 명령어의 길이가 같으면 그냥 8개의 다른 디코더에다 잘라서 던지면 그만임
ㅤ→ 하지만, x86은 한 명령어의 다음 명령어가 언제 시작하는지를 모르기때문에 실제로 각 명령어를 분석하는 수 밖에 없음

ㅤ→ 인텔과 AMD는 이 문제를 brute-force 하게 처리하는 방법은 모든 명령어의 시작마다 디코딩 하는것
ㅤㅤ즉, 잘못된 추측이나 실수를 계속 버려야 한다는 것.
ㅤㅤ그래서 더 많은 디코더를 추가하기가 어렵지만, 애플은 아주 쉬움

ㅤ→ 이게 기본적으로 동일한 클럭 주파수에서 AMD/Intel CPU보다 두 배 많은 명령을 처리할수 있게 하는 것
ㅤ→ 현실에선 x86은 복잡한 CISC는 잘 안쓰고 RISC 처럼 짧은 명령을 주로 쓰기는 하지만, 저 15바이트짜리 명령어를 처리는 해야하기 때문에 복잡성은 있음.

- 근데 AMD의 Zen3 코어가 아직 더 빠르자나 ?
ㅤ→ 벤치마크에서 Zen3 가 Firestorm 보다 빠르긴 한데, Zen3는 5Ghz고 파이어스톰은 3.2Ghz
ㅤ→ 애플이 클럭주파수를 높이지 않는건 칩이 뜨거워 지기 때문.
ㅤ→ 기본적으로 Zen3 보다 Firestorm 코어가 우수함
ㅤ→ Zen3는 더 많은 전력을 소비하고 열을 내면서 게임에 사용할수 있지만, "애플은 그걸 하지 않기로 한 것임"
ㅤ→ 애플이 더 높은 성능을 원한다면 더 많은 코어를 추가할 것. 이를 통해 더 높은 성능을 더 적은 전력으로 낼수 있음

- 미래
ㅤ→ AMD/Intel 이 두가지 부분에서 자신들을 코너에 몰아 넣은 것
ㅤㅤ1. 이기종 컴퓨팅 및 SoC 설계를 밀어줄 비즈니스 모델이 없음
ㅤㅤ2. 복잡한 x86 CISC 명령어들이 레거시가 되어 OoO 성능을 개선하기 어렵게 만듬
ㅤ→ 물론 게임 오버는 아님. 더 클럭을 올리고 냉각을 더 하고, 더 많은 코어를 사용하고..
ㅤ→ 인텔은 더 안 좋음. 이미 코어속도에서 Firestorm에 밀리는데다가 SoC에 넣은 GPU가 후짐.
ㅤ→ 많은 코어는 당연히 서버에 좋지만, 아마존과 Ampere가 128코어로 공격하고 있음. 인텔/AMD는 양쪽을 다 싸워야 하는 상황

ㅤ→ 다행스럽게도 AMD/Intel 과 달리 Apple은 칩을 시장에 판매하지 않음
ㅤ→ 당장은 안그렇겠지만, PC사용자들은 천천히 애플로 이동하게 될 것이고, 애플은 PC마켓에서 더 많은 비중을 차지 하게 될 것

저 글안에 저자가 적은 RISC/CISC 비교글도 있는데 완전 강추드립니당. 왜 그런 명령어 구조를 가지게 됐을까? 라는 걸 술술 풀어서 설명해줘용.

인텔과 AMD는 이제 어쩌나요..

오늘 올린 긱뉴스 팟캐스트 16화에서 M1칩의 Memory-Order 트릭에 대해서 간단히 소개했는데 그것과는 또 다르게 자세한 글이네요.
- https://news.hada.io/podcast/22
다음주 팟캐스트에서도 또 얘기하게 될 듯 ^^;

컴퓨터 아키텍처 수업을 다시 듣는 기분이네요 ㅎㅎ
결국 애플은 애플이 가장 잘하는 걸 계속 더 잘할 수 밖에 없는 구조죠

 
Screenity - 스크린/카메라 녹화용 크롬 확장

- 온라인 강의등을 녹화하기 위한 오픈소스
- 크롬 탭/데스크탑/특정 앱/카메라 모두 무제한 녹화 가능
- 선긋기,글자입력,화살표 표시등 지원
- 클릭 하이라이트, 마우스 강조 또는 녹화에서 숨김 가능
- 커스텀 카운트다운, 마우스 호버시에만 컨트롤 보이기 등 다양한 개인화 지원
- mp4, gif, webm 으로 저장 및 Google Drive에 직접 저장 지원
- 녹화본의 일부 잘라내기 지원

* 비디오 녹화를 지원하는 여러 크롬 확장들 중 가장 기능이 많은 오픈소스

개발자인 Alyssa는 꽤 유명합니다. https://alyssax.com/
예전에 소개한 다른 오픈소스인 Animockup 의 개발자이기도 합니다.

- Animockup - 앱/웹의 애니메이션 목업 만들기 https://news.hada.io/topic?id=1768

다른 커미터인 Christian Heilmann 은 제가 좋아하는 개발자인데요. https://www.christianheilmann.com/
제가 예전에 개발자 에반젤리스트 활동할때 많이 참고한, Developer Evangelist Handbook 책을 쓴 사람이기도 합니다.
- http://developer-evangelism.com/

 
개발자 관점의 애플 Air M1 리뷰

- Xcode : 속도 빠름. 샘플용 PDF뷰어 iOS앱 컴파일 속도 비교시
ㅤ→ Air M1 - 8:49 (따뜻했지만 조용함)
ㅤ→ MBP 16 2019 2.4Ghz 8-Core i9 32GB - 7:31 (팬소리 큼)
ㅤ→ Hackintosh 3.6Ghz 8-Core i9 64GB - 4:47 (200W 파워 사용)
ㅤ→ MacBook 12 2017 1.4Ghz 2-Core i7 16GB - 41:02 (팬리스)

ㅤ→ M1 을 외부팬이 달린 쿨링독에 설치하고 해보니 8:49 가 8:33 으로 줄어듬 (쓰로틀링은 크지 않다는 것)

ㅤ→ 다만 iOS 14 아래 버전은 테스트가 불가능 - WebKit 이 크래쉬되고, 속도도 엄청 느림
ㅤ→ 해결되지 않으면 M1 만으로 iOS 12,13 까지 지원하는 것은 어려울수 있음.

- Docker : 현재 사용 불가능하지만 도커팀이 작업중
ㅤ→ ARM Linux를 통해서 우회하는 방법이 있긴 하지만, 내년 1분기에는 ARM기반 컨테이너를 실행하는 방법이 나올것으로 예상

- Virtualization : 현재 가상화 솔루션은 동작 불가능.
ㅤ→ VMware 와 Parallels팀이 작업중. VirtualBox 는 (아마도 또는 근시일내엔) 불가능 할 것
ㅤ→ 다양한 시도를 하고 있으니 언젠가는 ARM기반 윈도우는 실행가능해 질 것 같음
ㅤ→ 예전 버전 macOS를 실행하는 것은 훨씬 문제가 많음. VMWare 나 Parallels가 완벽한 x64 에뮬레이션을 하지 않는 이상 어려울 거고, 된다해도 느릴 것.

ㅤ→ 16GB 램은 부족함. 병렬로 테스트 돌리면 스와핑과 함께 성능이 엄청 떨어짐. 가상머신이 돌면 더 그럴 것. 32GB 버전을 기다려야

- Android Studio : IntelliJ가 JetBrains Runtime을 포팅중
ㅤ→ 현재 Rosetta 2 로 Gradle 빌드는 엄청 느림 ( 동적으로 코드를 생성하는데, 선컴파일해두는 Rosetta 2 와 나쁜 조합 )

- Homebrew : 현재 Rosetta 2 에서 동작함 (모든 것에 arch -x86_64 를 붙이는 것으로)
ㅤ→ 점점 ARM 지원 소프트웨어들이 늘어나고 있음

- Applications : 대부분의 앱들이 그냥 동작하고, 로제타가 동작하는지 알기 어려움.
ㅤ→ 큰 어플들은 처음에 뜨는데 오래걸리지만 그다음엔 빠름(MS Word의 경우 약 20초)
ㅤ→ 몇몇 앱들은 실패하기도 함.
ㅤ→ 실제 코드와 로제타로 변환된 바이너리의 저장 위치 때문에 문제가 생기기도 함
ㅤ→ Electron 기반 앱들은 Rosetta 로 실행되면 느림. V8 컴파일러가 로제타의 선컴파일을 방해하기 때문. Electron 11 은 이미 애플실리콘을 지원하고, 슬랙은 이미 베타를 이를 적용하여 내놨음.
ㅤ→ 구글이 ARM용 크롬을 내놨지만, 아직 사파리 보다는 느림

 
개발자 입장에서 가볍게 써보는 M1 맥 미니 사용기

지난주 토요일에 M1 맥 미니를 받고 일주일간 짧게 사용해본 경험을 나눠봅니다.

정말 다양하게 써보시고 분석해주셨네요. 사고 싶게 만드는 글입니다 ㅎㅎ

 
M1 맥에서 Docker 사용하기

M1 맥에서 vftool을 이용해 ubuntu linux를 띄우고 macOS에서 docker를 사용하는 방법을 소개합니다.

 
Times가 선정한 2020년 최고의 발명품 100가지

매년 선정하는 "우리 삶을 바꾸는 100가지 혁신들"

ACCESSIBILITY
→ Logitech Adaptive Gaming Kit : 장애가 있는 게이머를 위한 컨트롤러
→ LUCI : 안전경로를 찾아서 충돌을 방지하는 전동 휠체어
→ Earlens Contact Hearing Solution : 고막에 음파를 직접 전달하는 보청기
→ Martin Bionics Socket-Less Socket : 편안한 의족/의수 장착을 위한 소켓없는 소켓

ARTIFICIAL INTELLIGENCE
→ Embodied Moxie : 어린이용 사회성/정서적 기술 향상 로봇
→ Beewise Beehome : 2백만마리 꿀벌이 살 수 있는 AI기반 미래형 꿀벌집
→ TrialJectory : 암 진단 가이드 앱
→ BrainBox AI : AI 날씨예보로 기상조건을 예측하여 건물 난방을 제어하는 기기
→ Krisp : 원격회의용 잡음 제거 앱

AUGMENTED AND VIRTUAL REALITY
→ Pico Interactive Neo 2 Eye VR Headset : 기업용 시선 추적 기술 내장 VR 헤드셋
→ Augmedics xvision : CT스캔을 3D시각화해서 환자 몸위에 보여주는 외과용 증강현실 헤드셋
→ Virti : 교육하기 어려운 상황을 시나리오로 만들어 주는 증강/가상 현실 기반 교육 플랫폼

BEAUTY
→ Dyson Corrale : 머리가 상하지 않게 1초에 100번씩 온도를 조절하는 무선 고데기
→ Pour Moi Climate-Smart 3-Step Rotating System : 기후에 따라 조절하는 스킨케어
→ ManiMe : 3D 모델링으로 손톱사진을 올리면 주문 제작해주는 젤네일 스티커
→ L’Oréal Perso : 셀카를 업로드 하면 자신의 피부와 현재 습도/햇빛 노출정도에 맞게 커스터마이징 해서 나오는 스마트 화장품병

CONNECTIVITY
→ Owl Labs Meeting Owl Pro : 온/오프 하이브리드 미팅시, 회의실에서 말하는 사람에게 렌즈/마이크의 초점을 이동해주는 360도 카메라
→ Roland GO:LIVECAST : 마이크 조절/입력 선택/카메라 전환기능 등을 가지고 있는 라이브 스트리밍 전용 기기
→ Vocera Smartbadge : 의사들이 목에 걸고 음성 명령을 통해서 쉽게 서로간에 의견을 나눌수 있게 도와주는 기기

CONSUMER ELECTRONICS
→ Insta360 One R : 카메라 모듈을 교체해서 커스터 마이즈 가능한 차세대 액션 캠
→ Microsoft Surface Duo : 듀얼 화면 안드로이드 스마트폰
→ Miller Engineering Dark Skys DS-1 Planetarium : 침실 천장에 4백만개의 별을 보여주는 프로젝터
→ MOON UltraLight : 스마트폰 카메라에 붙여서 적당한 빛을 쏴주는 클립형 라이트
→ Sony a7C : 소형 풀프레임 미러리스 카메라
→ Lexon Oblio : 충전하면서 UVC 라이트를 쏴서 폰의 박테리아를 소독해주는 충전장치
→ KEEP : 온도 및 습도제어 기능과 생체인식 락을 통해서 대마초와 처방약을 안전하게 저장하는 장치. 누군가 열려고 하면 폰으로 알림도 전송
→ Nuheara IQbuds2 MAX : 음악을 들으면서도 앞에 사람과의 대화는 가능한 능동형 소음제거 기능을 가진 무선 이어폰.

DESIGN
→ Ammunition x Gantri 3-D Printed Lights : 3D 프린팅을 통해서 가격을 낮춘 고급 디자인의 조명기기
→ Cuzen Matcha : 자동으로 찻잎을 갈아서 자기 믹서로 적당히 휘저어 최적의 거품 말차를 만들어 주는 기기
→ Allbirds Tree Dasher : 유칼립투스,피마자 기름, 사탕수수 등의 자연재료로 만들어서 탄소배출량을 1/3로 줄인 런닝화

EDUCATION
→ Van Robotics ABii : 초등학생들의 수학 및 읽기능력 교육을 위한 로봇 교사
→ Duolingo ABC : 어린어 언어 교육용 앱
→ Outlier.org : MasterClass 개발팀이 만든 저가격 고품질의 교육 과정
→ Kiri Toys : RFID가 내장된 블록을 통해서 단어를 가르치는 놀이형 교육도구

ENTERTAINMENT
→ Microsoft Xbox Series S : 게임패스와 함께 즐기는 차세대 콘솔 (근데 왜 S 를 ??)
→ Nvidia GeForce Now : 비싼 장비 없이 즐기는 클라우드 게이밍
→ Sony Playstation 5 : 햅틱 피드백센서가 내장된 컨트롤러, 훌륭한 차세대 콘솔
→ Nintendo Animal Crossing New Horizons : 간단함을 내세운 게임임에도, 2600만명이 즐기고, 조 바이든이 대통령 선거 캠페인까지 진행한 동물의 숲
→ LG 65-in. GX OLED 4K TV (65GX) : 밝고 선명하고 얇은 하이엔드 TV. 알렉사 & 구글어시스턴트 호환
→ Samsung Sero : 바퀴달린 43인치 버티컬 TV. 폰에서 보던 소셜미디어/스트리밍/게이밍 콘텐츠를 세로로 즐기는 TV

EXPERIMENTAL
→ Climate TRACE : 머신러닝, 적위선 위성 사진 등을 이용해서 환경 오염원을 실시간 추적
→ Vollebak Full Metal Jacket : 박테리아를 죽이기 위해 구리 섬유로 만든 풀 메탈 재킷
→ ZeroAvia : 무공해 수소 전기 비행기
→ MIT Media Lab AlterEgo : 머리속으로 생각한 것을 컴퓨터에 입력해주는 인터페이스

FINANCE
→ Remitly Passbook : 이민자들을 위해서 사회보장번호 없이 여권이나 외국인등록증 등으로 은행계좌 개설을 할수 있는 앱
→ Upsolve : 복잡한 서류작업엇이 개인 파산 신청을 도와주는 앱
→ FairShake : 기업에 대한 클레임 제기 프로세스를 자동화 해주는 무료 서비스. 10~20%의 성공수수료를 받음

FITNESS
→ Nike Air Zoom Alphafly Next% : 마라톤 2시간 돌파를 가능하게 했던 런닝화
→ Hydrow : 로잉머신계의 펠로톤. 실제 강들 위에서 인터랙티브하게 조정운동 가능.
→ Supernatural by Within : 오큘러스를 사용하는 VR기반 피트니스 앱

FOOD AND DRINK
→ The Greater Good Fresh Brewing Co Pinter : 다양한 팩을 꼽아서 1주일내에 맥주를 만들어 주는 간단한 가정용 홈 브루잉 키트
→ Air Vodka : 곡물 발효가 아닌 이산화탄소를 에틸알코올로 변환하는 과정을 통해 증류하는 방법을 찾은 보드카. 한병 만들때마다 이산화탄소 1파운드를 제거하는 탄소네거티브
→ Impossible Pork : 콩으로 만든 돼지 고기 대체품

HOME HEALTH
→ Oura Ring : 심박수,활동수준,수면,체온을 추적하는 웨어러블 반지. NBA가 선수들에 도입.
→ Willo : 실리콘 트레이를 입에 물면 손을 쓰지않고 자동으로 양치를 해주는 기기
→ FEND by Sensory Cloud, Inc. : 약물없이 소금/칼슘 기반의 미스트를 코로 흡입해서 질병예방을 도와주는 기기

HOUSEHOLD
→ Narwal T10 : 자동 충전 및 세척 스테이션을 가진 로봇 청소기. 대걸레를 자동으로 세척하고 건조.
→ CHEF iQ Smart Cooker : 200가지 레시피와 내부의 압력을 가변으로 조정 및 발효 모드 등의 기능을 가진 멀티 쿠커
→ Gardyn : AI로 거실에서 과일/채소/허브등을 수직형태로 키우는 실내형 정원
→ Sepura : 음식물 쓰레기를 냄새 안나게 처리해주는 기기

MEDICAL CARE
→ Nella NuSpec Reusable Vaginal Speculum by Ceek Women's Health : 여성 골반검사를 위한 더 나은 검경도구
→ mRNA Vaccines : 유전 물질 기반 백신
→ Provizio SEM Scanner by Bruin Biometrics : 욕창이 생기기 전에 알아내서 예방하도록 도와주는 스캐너
→ Under the Weather IntubationPod : 의료 종사자를 보호하기 위한 투명 덮개
→ OraSure OMNIgene Oral : 가정용 COVID-19 샘플 수집키트
→ Carrier OptiClean : 이동식 고효율 HEPA 필터 공기청정기

OUTDOORS
→ Bontrager WaveCel : 더 안전한 헬멧
→ CasusGrill : 골판지,대나무,용암석 등으로 만든 1회용 BBQ 그릴. 불꽃없이도 섭씨 315도까지 가열
→ YETI V Series : 진공 단열 패널로 되어 몇일동안 차갑게 온도유지가 가능한 스테인리스 아이스 박스
→ CrazyCap : UVC 광선을 사용해서 60초만에 물을 살균하는 충전식 병 뚜껑
→ Yakima CBX Solar : 태양열 패널을 내장해서 USB포트가 달린 자동차 루프 캐리어

PARENTING
→ Yoto Player : 오디오 카드를 꼽으면 음악과 책을 재생하는 스피커
→ Cradlewise Smart Crib : 아기가 울때, 아기의 수면 스케줄에 따라 움직여서 더 재울지, 깨울지를 결정하는 AI기반 스마트 침대 및 요람
→ Mifold Hifold Fit-and-Fold Highback Booster Seat : 쉽게 휴대가 가능한 어린이용 자동차 부스터 시트.
→ Cybex e-PRIAM : 전기 모터가 내장된 유모차. 내리막을 감지하고 브레이크를 적용하거나, 오르막에서 자동으로 힘을 줘서 부모를 도와줌

PRODUCTIVITY
→ reMarkable 2 : 종이에 쓰는 느낌을 가진 e잉크 태블릿
→ Sarcos Robotics Guardian XO Full-Body Powered Exoskeleton : 90키로그램을 쉽게 들어올릴수 있게 하는 웨어러블 로봇 쉘
→ Guardhat HC1 Communicator : 착용자의 위치를 실시간으로 모니터링하여 위험물질 근접을 감지하고, 핸즈프리 음성통화를 제공하는 산업노동자용 안전모
→ 3M Post-it Flex Write Surface : 어디서든 마커펜으로 필기가 가능한 대형 화이트 보드 스티커. 유성매직으로 써도 물로 잘 지워짐.

SOCIAL GOOD
→ Flare : 911같은 의료시스템이 없는 케냐에서 500대 이상의 구급차에 연중무휴 24시간 액세스할수 있는 앱
→ Fairphone 3+ : 재활용 플라스틱으로 만들어지고, 부품을 쉽게 교체해 오래 쓸수 있게 만든 폰
→ Skysource WEDEW : 신선한 식수를 생산하는 이동식 발전기. 나무/땅콩껍질 같은 버려진 식물/동물성 재료를 넣으면 가열하면서 발생되는 수증기를 식수로 응축
→ LIXIL Sato Tap : 비누홀더가 달린, 들고 다닐수 있는 손씻기 스테이션
→ Loon : 풍선을 띄워서 인터넷을 제공하는 구글의 문샷프로젝트

STYLE
→ B2, Pli, RunMask : 세척가능한 B2 마스크, 플라스틱병을 재활용해서 만든 Pli 마스크, 운동중에 사용가능한 RunMask
→ Renewcell Circulose : 버려진 옷에서 면을 회수해서 만든 원료로 다시 섬유를 만들어 옷을 만들어 냄
→ CuteCircuit SoundShirt : 30개의 소형 햅틱모터로 청각장애인이 촉각으로 노래를 경험할 수 있게 만들어주는 의상

SUSTAINABILITY
→ Heliogen HelioHeat : 40만개 거울이 햇빛을 거대한 돋보기 타워로 반사하여 한점에서 섭씨 1천도까지 열을 발생시켜, 태양열로 강철을 녹이고, 시멘트, 전기를 만들어 내는 기술
→ FarmWise Titan FT-35 : 제초제 대신 기계학습과 컴퓨터비전을 사용하는 무게 3톤짜리 잡초 제거 로봇. 경로를 따라 이동하며 1cm 정확도로 잡초만 뽑아냄.
→ Pivot Bio PROVEN : 공기에서 질소를 포착해서 식물이 사용할 수 있는 형태로 변환해주는 미생물 생물 비료
→ Tom’s of Maine Recyclable Tube : 고밀도 폴리에틸렌으로 된 재활용 가능 튜브를 사용하는 치약

TRANSPORTATION
→ Gocycle GXi : 작게 접어지지만, 시속 30km로 최대 80km까지 갈수 있는 전기 자전거. 탈착식 소형배터리로 쉽게 재충전
→ Hunter Board : 서스펜션을 내장하고, 시속 54km 까지 속도를 낼수 있는 전동 스케이트 보드. 배터리 교체 가능
→ NASA Ingenuity Helicopter : 내넌 화성에 착륙할 Perseverance 탐사선에 들어가 있는 헬리콥터. 분당 2400회 회전하는 2개의 역회전 블레이드를 내장. 빠르고 무거운 물건이동에 적합.
→ Dimer GermFalcon : 음료수 카트 크기의 항공기 내부를 소독장치. SARS 및 MERS에 효과적이었음. (코로나는 아직 미 테스트)
→ CLIP : 기존 자전거 앞바퀴에 부착하는 모터로 시속24km 까지 가속해주는 4.5kg짜리 기기. 탈착식으로 자리에 가져가 충전 가능

WELLNESS
→ Callaly Tampliner : 불편함을 해소한 차세대 탐폰
→ Johns Hopkins Corona­virus Resource Center : 존스 홉킨스 코로나 바이러스 정보 센터
→ Hatch Restore : 침대용 전등이면서 백색 소음 및 명상 가이드를 통해 수면을 도와주는 기기
→ Tombot Jennie : 실제 강아지와 비슷하게 생기고 느끼고 행동하는 정서 지원 로봇

SPECIAL MENTIONS
→ Solar Water Solutions Adaptive Nozzle Valve System : 태양열을 이용하여 물을 정수하는 기술
→ Truepic Foresight : 딥페이크 같은 위조된 사진인지 여부를 판단해주는 소프트웨어
→ Perfect Day Milk Protein : 단백질을 만들어내는 진균류(fungi)를 이용한 비건용 유제품
→ City Transformer Electric Vehicle : 매우 작은 2인승 전기 자동차
→ Samsung The Terrace TV : 비,눈,폭염을 견딜수 있고 아주 밝아서 화창한 날에도 시청 가능한 실외용 TV
→ Ethique Concentrates : 샴푸/컨디셔너/로션의 95%는 물이기 때문에 작은 고형물체에 뜨거운 물만 넣으면 사용가능한 환경 친화적인 제품
→ Nite Ize TRU Zip : 이빨없는 지퍼로 만들어진 밀봉 방수/방진 팩
→ Solar Foods Solein : 재생에너지로 공기에서 추출한 수소와 이산화 탄소 거품을 미생물에게 공급해서 생산한 단백질 분말.
→ Zauben Model Z : 울과 재활용 플라스틱으로 만든 8피트 높이의 벽에 공기를 자연적으로 정화하는 열대식물을 넣은 공기청정기
→ Perfect Corp. YouCam Makeup : 셀카를 찍은 뒤 메이크업 및 머리색,액세서리를 가상으로 시착해 보게 만들어주는 앱
→ Yap Lab Outlinx QR Smart Stickers : 제품에 대한 기록을 할수 있는 가상 메모장으로 연결되는 QR 스마트 스티커
→ Rocean One : 향이 첨가된 탄산수를 만들어주는 기기 ( SodaStream 과 Keurig 커피머신의 중간 쯤)
→ Flare Safety Jewelry : 위험 알림 기능이 있는 블루투스 팔찌. 불편한 상황일때 전화오는것 처럼 꾸며주는 기능 제공
→ Infinite Objects Video Prints : 최대 24시간 길이의 동영상을 영구 재생하는 사진 액자
→ TiVo Stream 4K : HDMI에 연결하는 스마트 TV 기기
→ Yale Smart Delivery Box : 안전하게 택배 배달을 받을수 있게 해주는 스마트 박스. WiFi로 잠기는 보안장치가 있고, 배송이 도착하는 시간에 자동으로 열리도록 설정가능. 물건이 도착하면 스마트폰으로 알려줌
→ Matatalab Pro Set : 5세 어린이에게 프로그래밍을 가르치는 세트. 로봇을 프로그래밍해서 움직이게 지시하는 방식.
→ DouxMatok Incredo Sugar : 설탕과 동일한 단맛을 유지하면서 설탕함량을 30~50% 줄인 감미료
→ LG Wing : T자 모양으로 열리는 두번째 화면을 가진 스마트폰
→ Lenovo Flex 5G : 세계 최초의 5G 내장 PC 노트북. 최대 24시간의 배터리 수명

이거를 꼭 정리해봐야 하나 싶었는데, 이렇게 하니까 하나하나 찬찬히 보게되네요.

저는 가장 맘에 드는거 하나 뽑으라면 3톤짜리 잡초 제거로봇 "FarmWise Titan FT-35" 인듯 합니다.

LG만 모르는 잘 만든 디바이스 LG Wing

 
TakeNote - 개발자를 위한 웹 기반 노트앱 오픈소스

- 플레인 텍스트로 메모 작성
- 마크다운 프리뷰
- 노트 연결 가능 {{uuid}}
- 코드 구문강조 지원
- 모든 동작에 대한 키보드 단축키 지원
- 멀티커서 편집 (CodeMirror)
- 노트 단위 드래그 앤 드롭 지원 (카테고리 이동,삭제,즐겨찾기)
- 검색 지원
- TypeScript, React, Redux, Node, Express, Codemirror, Webpack, Jest, Cypress, Feather Icons, ESLint, Mousetrap

- 기본적으로 메모는 브라우저 로컬에 저장 (데모버전 - https://takenote.dev/app )
- 코드에는 GitHub 레포지토리에 자동싱크를 지원하는 Node/Express 서버가 포함되어 있음
ㅤ→ 개발자라면 자신의 서버에 배포하고, GitHub OAuth 연동을 하면 Private Repo에 노트를 싱크 가능

- TakeNote 개발자는 이 코드로 별도 서비스를 만들지 않겠다고 선언
ㅤ→ 상세한 내용은 블로그에 정리 https://www.taniarascia.com/building-takenote/
ㅤ→ 서버를 유지보수 하고 싶지 않고,
ㅤㅤ누군가의 프라이빗 데이터를 책임지고 싶지 않으며,
ㅤㅤGitHub OAuth 는 기본적으로 모든 Private Repo에 접근이 가능하기 때문에 이런 권한을 요구하기는 어려움.
ㅤㅤ또한, 좋은 모바일 경험을 주기가 어렵다는 걸 깨달았다고

 
NAND GAME - 바닥부터 컴퓨터를 만드는 게임

Not And 게이트로 다른 논리 게이트를 만들어보고, 그 논리 게이트로 사칙연산을 만들어보고, 그 사칙연산으로 메모리를 만들어보고, 그 메모리로 컴퓨터를 만드는 게임입니다.

논리 게이트를 배치하는데 최적화된 뷰를 제공해주고, 특히 곧 바로 테스트 결과가 나와서 어떤 게 문제인지 바로바로 잡아 주기 때문에 '조금만 더 고치면..' 이라는 생각 때문에 빠져나가기가 쉽지 않았습니다. 그리고 만약 지금 만든게 논리 게이트가 가능한 한 최소보다 더 많이 썼으면 '성공은 했는데, 이것보다 더 작게 만들 수 있어!' 라고 메시지가 나와 도전 욕구도 샘솟고요.

즐겁게 컴퓨터 사이언스를 배울 수 있을 것 같아 추천드립니다. 'ㅁ'b. 개인적으로는 영어를 몰라도 쉽게 접근 가능하지만, 다만 저는 논리 게이트에 대한 사전 이해가 있었기 때문에 가능한 걸지도 모르겠습니다.

 
browserslist 쾌속 가이드

은근슬쩍 FE개발환경에 크게 자리잡은 browserslist를 빠르게 파악할 수 있도록 정리해봤습니다.

 
Java & Spring 개발자가 Ruby on Rails를 해보고 마주친 생각들

Ruby on Rails 의 강점
- 낮은 진입 장벽
- Ruby 언어의 강력함
- rails console
- 테스트 코드 작성의 편리성
- 날짜 관련
- DB 스키마 관리
- 이메일 발송 Preview
- 비동기 로직 처리를 위한 sidekiq

Spring 의 강점
- 선언적인 API endpoints routing
- 선언적인 DB 트랜잭션 관리
- Container 와 DI
- DB Entity layer 와 Query layer 의 명확한 분리
- cloud platform, MSA
- Static Type (Java, Kotlin)
- 개발 생태계
- openapi 문서 작성의 편의성

다른 이야기
- 생산성
- Case convention

"이전에는 Rails 만이 갖고 있던 강점들이 두드러졌으나, 시간이 지나면서 Spring 진영이 매우 빠른 속도로 진보하여 Rails 의 강점이 더 이상 Rails 만의 강점이라고 하기 어려워 진 것 같습니다.

하지만 Ruby on Rails 도 Spring 만큼 성숙한 Framework 이며 오픈소스 커뮤니티만으로도 지속적인 진보를 이뤄내고 있습니다."

지금이야 강점이 많이 희석 되어가고 있지만 처음 릴리즈되고 퍼지던 시기를 돌아보면 정말 많은 언어와 개발 환경에 영향을 크게 끼친 프레임워크인듯합니다

한때, Ruby에 꽂혀서 Rails까지 많이 했었는데요~ 강점도 강점이지만, 그냥 개발 철학이 꽤나 매력적이라는 생각이 들었습니다. 오랜만에 다시금 관련 내용을 찾게 보게 됐네요~ ^*

 
205Byte로 짠 플래피 버드

- Canvas에서 동작하는 Flappy Bird 게임
- 마우스 클릭하면 점프
- 원래는 341바이트로 시작했는데 많은 사람들이 댓글로 코드골프에 참여하면서, 용량이 계속 줄고 SVG 버전으로도 변환

아래는 브라우저 주소창에 붙여 넣기 가능한 dataurl 버전들

- 오리지널 버전 (341바이트)
data:text/html,<body onload="z=c.getContext`2d`;c.width=c.height=W=401,Q=z.fillRect.bind(z),N=M=>z.fillStyle=M;c.onclick=_=>M=9;M=S=p=0;Y=E=200;setInterval(_=>{!p&&(p=W,P=E*Math.random()),N`red`,Q(0,0,W,W),Y-=M-=.5,p-=8,N`black`,Q(p,0,V=50,P),p<-V?p=0:Q(p,P+E,V,W),((Y<P||Y>P+E)&&p<B)||Y>W?(M=S=p=0,Y=E):z.fillText(S++,9,B);Q(0,Y,B,B)},B=24)"><canvas id=c>

- 최종본 (205바이트)
data:text/html,<body onload=z=c.getContext`2d`,setInterval(`c.width=W=150,Y<W&&P<Y&Y<P+E|9<p?z.fillText(S++${Y=`,9,9|z.fillRect(p`}*0,Y-=--M${Y+Y},P+E,9,W),P))):p=M=Y=S=6,p=p-6||(P=S%E,W)`,E=49) onclick=M=9><canvas id=c>

- SVG 버전 (227바이트)
data:text/html,<svg onload="Y=G=T=0;W=99;setInterval('T%W?p.setAttribute(`d`,`M${W-T%W} ${G}h9V0h-9Zv75h9V150h-9ZM0 ${Y}v9h9v-9H0`):Y>G&&Y<G+75?G=75*Math.random():V=Y=T=0;Y-=V-=.03;t.innerHTML=T++',9)"onclick=V=2><path id=p /><text id=t y=11>

- jsfiddle에서 바로 실행해보기 : https://jsfiddle.net/5gjbtn74/

 
k6 - 현대적인 로드 테스팅 도구

"유닛 테스팅처럼 성능 테스팅하기"
- ES6 JavaScript 스크립팅 지원
- 테스트로직과 설정옵션이 모두 JS코드
- CI와 연동하기 쉬운 자동화 옵션
ㅤ→ check : assert 처럼 동작하지만 실행을 중단하지는 않고, 결과값을 저장하고 계속 진행
ㅤ→ threshold : 실패율, 응답시간, 응답시간 범위내 성공율 등으로 pass/fail 조건 설정 가능
- HTTP/1.1, HTTP/2, WebSocket 지원
- HTML Form, Cookies, Crypto, 커스텀 메트릭, 환경변수, 테스트를 위한 로컬파일 로딩 등 지원
- 로컬, k6 Cloud(유료), 클러스터(지원예정) 에서 실행 가능
- 브라우저 세션을 녹화한 HAR(HTTP Archive format) 파일을 읽어서 k6 스크립트로 변환 가능
- InfluxDB (+Grafana) 나 JSON 으로 메트릭 저장 또는 k6 Cloud에 업로드도 가능

 
gping - 그래프가 내장된 ping

- 서버의 ping 시간을 그래프로 그려주는 오픈소스 유틸리티
- 여러대의 서버를 지정하면 비교해서 그리기 가능
- -b 옵션으로 표시할 핑단위 지정. 기본값은 100
- Rust 코드. 윈/맥/리눅스 지원

> gping google.com facebook.com

 
Please - 속도/확장성에 집중한 멀티 언어 빌드시스템

- Go 로 작성되어 병렬 빌드&테스트를 빠르게
- Blaze/Bazel(구글), Buck(페이스북), Pants(트위터) 등의 도구에서 영향 받음
- Python, C++, Go, Java, Protobuf & gRPC, Shell Script 빌드가능
ㅤ→ 여러 언어를 쓰는 모노레포 빌드 및 CI 에 적합. 테스트를 쉽게 샌드박싱 가능
- 리눅스, macOS, FreeBSD 지원

 
아마존, EC2 Mac 인스턴스 발표

- 맥 미니 와 AWS Nitro를 결합, EC2위에서 macOS/iOS/iPadOS/tvOS/watchOS/Safari 용 앱의 빌드/테스트/패키징을 지원
- 8세대 6코어 인텔 i7(커피레이크) 32GB 장비를 사용하는 Dedicated Host
- M1 장비는 이미 작업중이고, 2021년에 도입 예정
- VPC 내부에서 실행. ENA(Elastic Network Adapter) 제공
- macOS 10.14(Mojave) 와 10.15(Catalina) 를 SSH / VNC로 접속 지원
- EC2 Mac AMI 는 ENA Driver, AWS CLI, CloudWatch Agent, CloudFormation 스크립트 등을 기본 내장해서 EC2에 최적화
ㅤ→ 그냥 이용하거나, 커스터마이즈 가능 ( Homebrew-AWS Repo https://github.com/aws/homebrew-aws 참고 )

기본 가격이 시간당 $1.083 이어서 1년하면 $9,487 이네요.
세이빙플랜 하면 한 27~8% 할인해주긴 할텐데 그래도 비싸긴 하네요.

MacStadium 이 싱글 맥 미니 한대가 듀얼코어 i5에 8GB램 이긴 하지만 월 $59 부터고,
EC2 사양과 비슷한 32GB i7 6코어는 월 $139 정도 합니다.
https://www.macstadium.com/pricing

 
AlphaFold - 단백질 접힘 문제의 솔루션

- DeepMind에서 개발한 단백질 접힘 문제를 해결하는 신경망 모델

## 단백질 접힘 문제
- 단백질은 아미노산이 사슬 형태로 연결되어 입체적으로 접힌 복잡한 구조
- 단백질을 구성하는 아미노산과 접혀있는 구조에 따라 여러가지 기능을 함
- 그러나 아미노산의 배열만 가지고 단백질의 구조를 예측하는 것은 매우 어려움

## AlphaFold
- 단백질 데이터 뱅크의 약 170,000개 단백질 구조 데이터와 그 밖에 구조가 알려지지 않은 단백질 데이터를 학습
- 약 128개의 TPUv3 코어를 사용해 몇 주간 학습

## CASP(Critical Assessment of protein Structure Prediction)
- 1994년에 최초로 개최된 2년마다 열리는 세계 단백질 구조 예측 대회
- 아직 구조가 알려지지 않은 단백질의 구조를 예측
- AlphaFold의 초기버전이 2018년에 열린 CASP13에 참가
- 2020년에 열린 CASP14에서 AlphaFold가 평균 92.4 GDT로 1위
- 이는 원자 1개의 너비 정도의 오차

## 기대효과 및 전망
- 올해 AlphaFold는 ORF3a, ORF8 등 코로나 바이러스 단백질을 예측함
- 앞으로 여러 생물학적 문제 해결과 신약 개발 등에 기여할 것이 기대됨

세포 노화를 되돌리는데 단백질을 사용한다는 기사가 나왔던데
인공지능이 생명연장의 꿈을 이루는데 큰일을 할지도 모르겠네요.

노화한 피부세포 다시 젊게 만드는 '세포 역노화' 기술 나왔다
http://m.dongascience.donga.com/news.php?idx=41855

세포 노화를 되돌리는 전략으로 ‘역분화’ 기술이 가장 널리 연구되고 있다. 역분화는 피부세포처럼 특정신체 조직으로 자란 세포에 ‘야마나카 전사인자’라는 단백질 4종을 추가해 특정세포로 분화하기 이전의 젊은 상태로 되돌리는 기술이다

 
AWS re:Invent 2020의 주요 발표들

EC2
- mac : 맥 인스턴스
- G4ad : AMD GPU 기반 인스턴스
- D3/D3en : 고밀도(Dense) 스토리지 인스턴스
- R5b : 3배의 EBS성능 제공하는 메모리 최적화 인스턴스

Lambda
- 100ms 에서 1ms 단위 빌링으로 변경. 최소 실행시간 없음
- Container 이미지 지원 : 최대 10GB, 베이스 이미지(파이썬,Node,Java,.NET,Go,Ruby)제공.

Container
- EKS Distro : EKS 클러스터를 원하는 곳에 설치
- ECR Public : 공개 컨테이너 레지스트리
- AWS Proton : 컨테이너 및 서버리스 배포를 관리 자동화 도구

Customer Engagement
- Amazon Connect : 클라우드 컨택센터(2017) 개선
ㅤ→ Contact Lens Real Time : 머신러닝을 이용해서 실시간으로 인사이트를 도출하는
ㅤ→ Connect Wisdom : 지식 검색 & 추천. 써드파티 연결 지원(Salesforce, ServiceNow 등)
ㅤ→ Connect Voice ID : 음성 화자인식
ㅤ→ Connect Customer Profile : 고객 프로필 연계
ㅤ→ Connect Tasks : 업무 자동화

Database
- Amazon QuickSight : 자연언어 쿼리(Natural Language Query) 추가
- EBS io2 Volume : 100x higher durability and 10x more IOPS/GiB than io1
- EBS gp3 Volume : 고성능 SSD 볼륨. gp2보다 20% 저렴

Front-end Web and Mobile Development
- AWS Amplify Admin UI : 더 쉬운 앱 백엔드 개발

Machine Learning
- Amazon DevOps Guru : 자동으로 운영 문제를 찾고 해결책을 추천해주는 도구
- Amazon Lookout : 장비의 센서데이터 분석을 통해서 장비의 이상을 감지해주는 서비스
- Amazon Lookout for Vision : 비젼 기술로 제품의 결함을 판별하여 주는 서비스
- AWS Panorama Appliance : 카메라를 통해 제품 생산 품질, 공장 프로세스 모니터링 등을 가능하게 해주는 하드웨어 장비
- Amazon Monitron : 간단하고 효율적인 장비 컨디션 모니터링

Storage
- S3 Multi-Destination Replication : 여러 데스티네이션으로 복제 지원
- S3 is Now Strongly Consistent : 모든 리젼/모든 S3개체에 바로 적용되고, 추가 비용 없음

- AWS Amplify 서비스는 구글의 Firebase와 비슷한 서비스로 아래 데모를 보시면 쉽게 이해할 수 있습니다.
React로 정적페이지를 만들어 CLI로 쉽게 호스팅하고 백엔드도 서버리스로 쉽게 구성해서 현대적인 아키텍쳐로 애플리케이션을 개발하고 운영가능합니다.
https://youtu.be/GiYG57uMmxM
- AWS Amplify Admin UI를 사용하면 Firebase 콘솔처럼 Web UI를 사용해서 백엔드를 생성하고 관리할 수 있습니다.
https://www.youtube.com/watch?v=iabegXf05DE

 
GraphQLEditor - GraphQL 비쥬얼 편집기

- 블록 형태의 비주얼 편집 기능으로 간편하게 GraqhQL을 작성
- 스키마 버저닝 지원
- Fake 백엔드 자동 생성해서 즉시 테스트 가능
- 문서 자동 생성 기능
- 실시간 협업 지원

 
Salesforce, Slack 인수 발표

- CRM분야 1위 기업인 Salesforce가 업무용 메시지 앱 Slack을 277억달러(약 30조원)에 인수
- Salesforce Cloud, Customer 360와 Slack 통합해 향상된 커뮤니케이션 및 협업 제공
- 인수 후에도 현재 CEO인 Stewart Butterfield가 계속해서 Slack팀을 이끌 것
- 최근 코로나19로 인한 원격근무로 커뮤니케이션 시장의 급격한 성장
- Salesforce의 인수로 엔터프라이즈 환경에서 시너지를 낼 것으로 기대됨

Salesforce가 Slack 인수 협상을 진행중 https://news.hada.io/topic?id=3261

일주일전에 얘기 나올때만해도 슬랙의 시총이 18조원이었는데.. 그 사이 엄청 올라갔네요.

Teams 랑 경쟁이 심화되고 있어서 좋은 타이밍에 인수되었다고 생각합니다.

 
TimescaleDB vs. Amazon Timestream 성능 비교

- "TimescaleDB가 인서트는 6000배, 쿼리는 5~175배 빠르고, 비용은 150~200배 저렴"
- "아마존 Timestream은 느리고, 비싸고, 백업/복원/갱신/삭제 같은 주요 기능도 빠져있다"
- 10억개 메트릭 인서트 : 5분 vs. 300+시간
- Amazon Timestream 은 $336, 완전 관리형 TimescaleDB 사용시 $2.18, 자체 VM으로 TimescaleDB 오픈소스 실행시 $1.50

- Amazon Timestream 의 240페이지 개발 가이드 확인 결과
ㅤ→ Recovery/Restore 란 말은 안나옴. Backup 이란 단어는 한번 나오는데, 백업이 없다고 얘기하는 것 "개발자가 직접 알아서 저장하세요"
ㅤ→ 데이터의 DELETE/UPDATE 방법이 없음. 지우려면 테이블을 Drop 해야 하고, 그 마저도 복원할 방법이 없음

ㅤ→ TimescaleDB는 PostgreSQL 기반이라 pg_dump/pg_restore/pg_basebackup 같은 도구를 그대로 사용 가능

* 테스트한 Time Series Benchmark Suite 는 GitHub에 공개

엄청 공격적인 글이네요.
Timescale측은 계속 시계열DB에서만큼은 AWS가 기존 오픈소스 가져다 돈 버는 것을 경계했어서..
Timescale License(TSL)을 통해서 완전히 무료로 공개하지만 as-a-Service 만드는 것만 금지하고 있습니다.
경쟁이 재미납니다.

- TimescaleDB 2.0 공개 https://news.hada.io/topic?id=3112
- Timescale, 멀티노드 TimescaleDB를 무료로 공개 https://news.hada.io/topic?id=2138

전 AWS Kinesis 가 Kafka 에 비해 성능이 넘 떨어지니까, MSK(Managed Streaming For Apache Kafka)를 내놓았다고 보는데..
과연 시계열DB쪽은 ?

 
구글 지도, 커뮤니티 피드 기능 추가

- 탐색 탭에서 지역소식/추천 을 보는 기능
- 최신 리뷰, 사진, 지역 전문가, 로컬 소식지들이 올린 글을 페이스북의 뉴스피드 처럼 보고, 좋아요를 누를 수 있게 됨
ㅤ→ 사람/장소 등을 팔로우 하는 것도 가능
ㅤ→ 해당 비즈니스 소유자(프로필을 만든)와 대화 가능 : 페이스북 비즈니스 페이지와 비슷

구글이 지역 가이드(Local Guide) 서비스를 꽤 오래 잘 유지 하고 있는데, 이들한테 SNS같은 기능을 만들어줬네요.
남긴 리뷰/사진들로 좋아요를 많이 받거나, 각 가게에 대한 답변을 남기면 레벨도 올라가고 하면서 소소한 보상도 줍니다.
구글답지 않게 Gamification 이 잘 된 서비스에요.

- Local Guides Connect - 공식 커뮤니티 : https://www.localguidesconnect.com/
- 자신의 가이드 홈 : https://maps.google.com/localguides/home

 
구글, 폰으로 스트리트뷰 영상 촬영 기능 추가

- 구글 스트리트 뷰 앱에 "Connected Photos" 기능으로 베타 공개
- ARCore 호환 안드로이드 폰 사용자들 대상
ㅤ→ 예전엔 특수한 360도 카메라가 필요했었음
- 구글 지도에 이 스트리트 뷰 영상을 반영
ㅤ→ 자체 스트리트 뷰는 파란색 실선
ㅤ→ 이 UGC 영상은 파란색 점선으로 표시
ㅤ→ 얼굴과 번호판을 Blur 처리하는 정책은 그대로 준수
- 캐나다 토론토, 뉴욕, 텍사스 오스틴 및 나이지리아, 인도네시아, 코스타리카 등 일부 지역에서 업로드 가능 해짐(확대 예정)

이러면 나중에 상점 주인이 상점 내부 찍은 영상도 보여주게 만들수 있겠군요.

 
CloudQuery - 클라우드 인프라를 SQL로 조회하기

- AWS/GCP 등의 클라우드에서 인프라 정보를 가져다 SQL로 조회 가능하게 만들어주는 오픈소스
- SQLite/PostgreSQL/MySQL/MSSQL에 저장
- Go로 작성되어 리눅스/맥/윈도우 지원

→ SELECT * FROM aws_elbv2_load_balancers WHERE scheme = 'internet-facing';
→ SELECT * from aws_s3_buckets
ㅤㅤㅤJOIN aws_s3_bucket_encryption_rules ON aws_s3_buckets.id != aws_s3_bucket_encryption_rules.bucket_id;

- 현재 지원 AWS 테이블 : autoscaling, directconnect, ec2, ecr, efs, elasticbeanstalk, elbv2, emr, ecs, fsx, iam, rds, redshift, s3

→ SELECT gcp_storage_buckets.name
ㅤFROM gcp_storage_buckets
ㅤㅤㅤJOIN gcp_storage_bucket_policy_bindings ON gcp_storage_bucket_policy_bindings.bucket_id = gcp_storage_buckets.id
ㅤㅤㅤJOIN gcp_storage_bucket_policy_bindings_members ON gcp_storage_bucket_policy_bindings_members.bucket_policy_binding_id = gcp_storage_bucket_policy_bindings.id
ㅤWHERE gcp_storage_bucket_policy_bindings_members.name = 'allUsers' AND gcp_storage_bucket_policy_bindings.role = 'roles/storage.objectViewer';

- GCP 테이블 : compute, iam, storage

- Azure / DigitalOcean 은 지원 예정
- 각 플랫폼의 지원리소스도 계속 확장중

 
DuckDB - Embedded OLAP DB 오픈소스

"SQLite for Analytics"
- 복잡한 분석쿼리에 최적화된 임베디드 RDBMS
- C++11로 작성된 의존성 없는 싱글 바이너리로 호스트 프로세스내에서 실행
- Python/R/Java/C/C++/Node.js API 제공
- SQLite 처럼 한개의 파일에 DB저장

- 적합한 Usecase
ㅤ→ CSV/Parquet 등의 tabular 데이터 처리 및 저장
ㅤ→ 여러 큰 테이블들을 Join & Agggreate 하는 인터랙티브 데이터 분석
ㅤ→ 여러개의 대형 테이블에 동시에 큰 변경을 할 때 (여러 줄을 추가 또는 컬럼 추가/삭제/변경 등)

 
Stripe, 금융 기능을 API로 제공하는 Treasury 서비스 공개

- 자신의 플랫폼/마켓플레이스에 금융서비스를 쉽게 붙이게 해주는 Banking-as-a-Service
- 한번의 연동으로 Stripe 를 이용한 플랫폼 내에서 쉽게 돈을 예치/송금/수신 할수 있음
- 미국내에선 골드만삭스, 해외에선 Citi, Barclays 등과 연계해서 글로벌 금융기능을 제공

* Shopify를 이용하는 상점들이 서비스 내부에서 금융 기능을 다 수행할 수 있게 되는 것
ㅤ→ https://www.shopify.com/balance

Treasury 서비스를 활용한 Shopify Balance를 국내 상황과 비교해서 예를 들어보면,

네이버 스마트스토어를 개설하면서 은행 계좌는 은행에 가서 별도로 개설해야 하는데
그걸 그냥 네이버에서 한번에 계좌개설까지 다 해주고,
스마트스토어에서 나온 판매 비용은 그 계좌로 이체도 해주고,
상점 주인은 그 계좌에서 다른 비용도 낼 수 있게 하는거네요.

이거 처음부터 하려면 네이버는 금융쪽과 연계하는 API를 열심히 개발해야 하는건데,
Stripe 의 Treasury 를 사용하면 한 방에 끝! 이란 얘기

 
JsDiff - 자바스크립트 라이브러리 쉽게 비교 하기

- 비교할 라이브러리 들을 넣으면 비교그래프를 보여줌
ㅤ→ 지난 5년간 NPM 다운로드 추이
ㅤ→ 구글 트렌드
ㅤ→ 깃헙 통계 : Star, Age, Issue, PR
ㅤ→ ThoughtWorks TechRadar 에서의 위치 (Assess,Trial,Adopt,Hold)

 
maddy - 올인원 메일 서버

- SMTP(송신 MTA, 수신 MX), IMAP, DKIM, SPF, DMARC, DANE, MTA-STS 등의 주요 이메일 기능을 다 묶어서 구현한 메일 서버
- 기존 Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC 등 여러 오픈소스들을 대체해서 한개의 설정으로 관리 가능
- Go로 작성된 오픈소스

* DKIM : DomainKeys Identified Mail
* SPF : Sender Policy Framework
* DMARC : Domain-based Message Authentication, Reporting & Conformance
* DANE : DNS-based Authentication of Named Entities
* MTA-STS : RFC 8461 - SMTP MTA Strict Transport Security

* IMAP 저장소는 아직 베타, 안정적으로 사용하려면 Dovecot 을 사용하는 걸 추천

자신의 서비스에서 이메일을 기능으로 제공해줘야 할때 쓸만하겠네요.

docker-mailserver 와 rainloop-webmail 로 개인용 메일 서버를 만들었던 글도 참고하세요.
- 개인용 이메일 서비스 만들기 삽질기 https://news.hada.io/topic?id=2302

 
TSMC, 2022년 하반기부터 3나노 공정 생산 가능

- 1평방 밀리미터당 2.5억개의 트랜지스터가 탑재되며, 실제론 3억개까지 가능할 수도
- 애플이 사용하는 5나노 공정은 1평방 밀리미터당 1억 3300만개의 트랜지스터를 수용
- 인텔의 10나노 노드보다 최소 2.5배 집적도가 높고, AMD의 새 Radeon RX 6000 칩 보다 3배 더 복잡한 GPU를 구현 가능

- 현재 AMD가 Radeon 6800/6900에 사용하는 Navi 21 GPU는 7나노 공정으로 270억개의 트랜지스터를 사용하는데, 3나노 GPU라면 같은 크기에 약 800억개의 트랜지스터 수용 가능
- 하지만 AMD 가 TSMC를 통해 2022년에 내놓을 Zen 4는 5나노여서 2022년엔 3나노 AMD제품은 안 나올 것

- 인텔의 7나노 공정은 2022년말로 밀렸으며, 아마도 2023년까지 미뤄질수 있음.
- 인텔의 7나노는 평방 밀리미터당 약 2~2.5억개의 트랜지스터를 제공하는 것으로 추정

- 삼성은 2022년 하반기 목표로 3나노 공정 계획을 세워서 TSMC와의 격차를 줄인다고 발표

 
초보 Bug Bounty Hunter를 위한 자료 모음

1. 기초 : 스탠포드 CS253 웹 보안 강의, HTTP/Network 기초, 자동화
2. 셋업 : 테스트용 가상서버(VM/Docker등) 구축 하기,
3. 도구 : 패킷 스니퍼(Burp Suite, Zap Proxy, Wireshark), Recon, OSINT, 포트스캐너
4. 분야별 자료들
ㅤ→ Labs & Testing 환경
ㅤ→ 취약점 : XSS, CSRF, XXE, IDOR..
ㅤ→ 모바일 해킹 : Android, iOS
ㅤ→ 관련 유튜브 채널/팟캐스트/스트리머/책/트위터 계정들

 
Got Your Back - Gmail 백업/리스토어 도구

- Gmail API를 이용해서 메일을 내려받거나 복원
ㅤ→ 구글 Takeout으로 백업한 mbox도 복원 가능
ㅤ→ 다른 계정으로도 복원 가능
ㅤ→ 같은 계정으로 재 복원해도 중복 안 생김
ㅤ→ 검색을 이용해서 특정 메일만 백업가능 "is:important OR is:starred" (지메일의 검색어 구문 그대로 사용)
- 윈도우/맥/리눅스 지원 코맨드라인 툴
- Google Workspace 관리자는 사용자 암호를 몰라도 전체 사용자의 메일 백업/리스토어 가능
ㅤ→ 메일을 사용자 메일함이 아닌 구글 그룹으로 복원하기 지원 (그룹에서 백업은 지원안함. 쓰기만 가능)