[GN#72] GitHub의 youtube-dl 복원과 앱스토어 수수료 15% 인하

2020-11-16 ~ 2020-11-22 사이의 주요 뉴스들
지난 몇 주간 오픈소스 쪽에서 가장 큰 이슈였던 유튜브 다운로더 Youtube-dl의 GitHub 저장소가 복원되었습니다. 깃헙은 youtube-dl이 기술 및 법적으로 위반이 없다는 것을 인지했으며, 앞으로 이렇게 DMCA 관련해서 이슈가 생기면 어떻게 대처하겠다는 내용을 자세히 적은 공지를 했습니다. 또한 자신들이 앞으로 바꿔나갈 프로세스 자체를 다른 회사들도 적용할 수 있도록 오픈소스화하겠다는 얘기와 함께 개발자 친화적인 저작권법을 만들기 위한 싸움에 동참해 달라는 글을 적었는데요. 아주 모범적인 대처를 한 것 같아서 요약 번역해 봤습니다.

애플이 앱스토어 생태계를 만들면서부터 오랫동안 제기되어왔던 30% 수수료 문제가 최근 Epic의 Fortnite 문제로 다시 크게 이슈가 되었는데요. 애플이 여기에 한 발짝 물러나면서 년 100만 달러(11억원) 이하의 매출을 내는 중소개발사 들에는 수수료를 15%로 인하하겠다는 발표를 했습니다. 개인 개발자들에게도 아주 좋은 뉴스 일 듯한데요. 내년부터 인앱 결제 정책을 강화하겠다는 구글은 이에 어떻게 반응할지 궁금해집니다. 참고로 인도는 구글의 인앱 결제 정책 변경에 반대하는 회사들이 늘어나자 구글이 인도에만 정책을 6개월 미뤄서 2022년 3월 이후부터 적용한다고 하여 논란이 되었고, 인도의 결제 사업자인 Paytm 앱이 원스토어와 비슷한 미니 앱스토어를 열자마자 300개가 넘는 회사들이 이 앱스토어에 앱을 등록한 바 있습니다. 또한, 국내 이동통신 3사와 네이버가 합작한 원스토어는 2018년에 30%에서 20%로 전체 수수료를 인하하면서 국내 점유율이 꽤 상승했는데, 이런 상황들 속에서 각 플레이어가 어떤 전략을 수행할지 잘 지켜봐야 할 것 같습니다.

애플 M1칩 관련 정보들이 계속 나오고 있는데요. x86 에뮬레이션을 해도 기존 맥보다도 빠르고, 내장 그래픽칩이 GeForce GTX1050 Ti 나 Radeon RX560 보다 빠르다는 벤치마크도 나왔습니다. TensorFlow의 M1 칩 최적화 버전은 2020 인텔 맥북프로에서보다 7배 빠르다는 얘기도 있더군요. 기존 앱들이 애플칩에 얼마나 최적화되었는지를 알 수 있게 정리한 "Is Apple Silicon Ready?" 라는 웹사이트도 나왔으니 참고하시기 바랍니다. 아직 국내 판매 일정은 나오지 않은 것 같은데 점점 더 기대하게 되네요.

170년된 신문사 "The New York Times" 는 어떻게 디지털 트랜스포메이션 하여 자신들의 체질을 개선하고, 광고모델에서 구독모델로 전환하여 콘텐츠 산업의 성공사례가 되었을까요? 167 페이지 짜리 슬라이드를 알기 쉬운 설명과 함께 같이 읽어보는 실패하지 않는 뉴욕타임즈 - NYT는 어떻게 디지털화에 성공했나 라는 제목의 동영상을 찍어봤습니다. 배경 설명도 열심히 해두었으니 재미나게 감상해 주세요.


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

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


GitHub, youtube-dl 저장소 복원

EFF가 GitHub에 보낸 공식 서한을 통해서 youtube-dl 이 기술적으로 DMCA 및 TPM 을 위반하지 않았다는 것을 설명하고,
GitHub가 이를 받아들여 저장소를 복원하고, 이번 게시중단건과 DMCA 관련된 내용을 정리

- 왜 애초에 게시중단(Takedown)이 일어났나?
플랫폼으로서 법률을 준수해야함. TPM(Technical Protection Measure, 기술적 보호 조치 = 복사방지 )을 우회하게 설계헀다는 경우 코드를 제거해야함. 하지만 이런일은 매우 드뭄.
DMCA 게시중단 사례중 TPM 관련은 2% 미만인데, 그중에서도 이 건은 특히나 이례적인 사례였음.

- DMCA에 따른 우회(Circumvention) 주장
RIAA의 주장은 youtube-dl의 코드가 TPM을 우회하여 저작권이 있는 자료의 액세스 또는 복사를 제어하는 코드를 가지고 있으니, DMCA 섹션 1201을 위반했다는 것.
이 DMCA 섹션 1201은 1990년대 후반에 논의된 것이라 현재 소프트웨어의 다양한 것들을 예상하지 못하고 작성된 것.
결과적으로 기술이 저작권 침해가 아닌 방식으로 사용되었다고 하더라도, 저작물의 액세스 또는 복사를 할수 있게 TPM을 우회한 것만으로도 불법으로 규정함.
이 우회가 youtube-dl 게시중단의 핵심 주장.

- DMCA에 대한 GitHub의 개발자 중심 접근 방법
GitHub 은 개발자 보호를 극대화 하기 위해 DMCA를 처리하고, 게시중단 정책을 설계했음.
UGC(사용자 제작 콘텐츠)가 있는 거의 모든 플랫폼은 법을 준수하기 위해 DMCA 게시중단 요청을 처리함.
GitHub의 경우 이러한 요청든 대부분은 오픈소스 라이선스 준수를 강제하기 위한 것들이 많음.
개발자를 보호하기 위해 GitHub 는 이런 요청에 대해서 개발자에게 사전에 알리고, 이의 제기할수 있게하고, 커뮤니티에 투명하게 공개함

- youtube-dl
위에서 설명한 대로 youtube-dl 게시중단의 핵심 주장은 "우회" 였음.
비록 처음에는 프로젝트를 게시중단 했지만, 단지 코드가 저작권을 가진 콘텐츠에 접근할수 있다는 것 만으로, 저작권을 침해하지 않는 방식으로 저작물에 접근하는데 사용할수 없다는 것을 의미하지는 않는 다는 것을 이해함.
( 이게 번역이 넘 복잡한데.. 풀어서 얘기하면 저작권 가진 콘텐츠에 접근해도 저작권침해 없이도 충분히 사용할 수 있다는 얘기라는 거죠 )
또한 이 프로젝트의 코드가 접근성을 위한 재생 속도 변경, 인권투쟁에서의 증거 보존, 사실 확인을 위한 언론인 지원, Creative Commons 라이선스 및 Public Domain 동영상 다운로드등 많은 정당한 목적을 가지고 있음도 이해함.

새로운 정보(EFF가 보낸)를 통해서 법을 위반하지 않는 다는 것을 알았고, Maintainer가 테스트코드에서 저작권이 있는 비디오를 사용하지 않도록 패치를 제출(저스틴 비버 뮤직 비디오를 다운로드하는 테스트가 있었죠)
이를 통해서 Youtube-dl 프로젝트를 복원하고 모든 Fork들에도 복원 옵션을 제공할 것

- 앞으로 바꿔갈 것
섹션 1201에 대해서 검토 프로세스를 개편할 예정
1. 모든 1201 위반 주장은 기술전문가가 리뷰하겠음.
2. 법률 전문가가 면밀히 검토하여 DMCA의 범위를 넘어가는 요청은 거부할 것임.
3. 클레임이 모호한경우, 개발자 편에 서서 확실한 우회 증거가 없는한 저장소를 그대로 둘 것임.
4. 전문가가 확인해서 클레임이 완전하고 합법적이고 기술적으로 정당하다고 판명된경우, 저장소 소유자에게 연락해서 클레임에 응답하거나 게시중단을 피하기 위해 저장소를 변경할수 있는 기회를 제공. 응답이 없어도 추가 조치를 취하기 전에 다시 저장소 소유자에게 연락을 시도.
5. 이 모든 단계가 진행된다음에야 저장소를 삭제
6. 유효한 1201 클레임으로 저장소가 삭제되더라도, 해당 클레임을 해결하기 위해서, 그때까지 저장소 소유자가 아직 응답안한 경우에는 계속 연락을 시도할 것임.
7. 유효한 1201 클레임으로 저장소가 삭제된 다음에도, 저장소 소유자가 법적으로 가능한 경우, 해당 문제와 PR및 의심되는 우회코드가 포함되지 않는 다른 저장소 데이터를 Export 할수 있도록 보장함.
8. Trust and Safety 팀을 최전선에 배치, 이런것에 대해 개발자 티켓을 최우선으로 대응하여 클레임이 신속하게 해결되고, 저장소가 즉시 복원되도록 지원할 것.

이 모든 비용은 GitHub 을 사용하는 개발자에게 무료로 제공. 우리는 이게 "Developer-First 1201 클레임 처리"의 표준이라고 믿음.
코드나 패키지를 호스팅하는 다른 회사에서도 이런 프로세스를 구축할 수 있도록 이 프로세스를 문서화 하고 오픈소스함.
경험이 증가함에 따라 계속 개선할 것.

- 개발자 방어 펀드 Developer defense fund
게시중단 요청 및 기타 법적인 청구로 인해서 개인적으로 영향받는 개발자들은 Software Freedom Law Center(SFLC) 나 the Electronic Frontier Foundation (EFF) 같은 비영리 단체에 의존해서 법적 조원과 지원을 받을수 있음.

그럼에도 불구하고, 부당한 게시중단 과 싸우는 개발자는 개인적 책임과 법적 방어비용을 부담할 위험이 생길수 있음. 이를 돕기위해 GitHub 는 부당한 "DMCA 섹션 1201 게시 중단 요청" 으로 부터 오픈소스 개발자를 보호할수 있도록 100만 달러(11억원)을 기부하여 개발자 방어 펀드를 조성. 이를 통해서 개발자를 보호하고, 개발자 협업을 보호하기 위한 조치들을 진행할 것.

이런 개발자들을 도우려면 SFLC 나 EFF 에 직접 후원하는 것도 고려해 보세요.

- 법을 개선하기 위해 깃헙이 하는 일
현재 DMCA의 경계는 개발자에게 피해를 주고 있음. 이 문제를 해결하는 한가지 방법은 법률자체를 개선하고 더 나쁜 법률이 세계적으로 제정되는 것을 방지 하는 것.
우리는 EU 저작권 지침이 소프트웨어 개발을 업로드 필터를 의무화 하는 것을 막기위한 다년간의 성공적인 노력을 했고, 이를 통해서 미국내에서 광범위한 DMCA 재논의가 될수 있도록 하고 있음.

특히 youtube-dl 과 같은 사회적으로 유익한 도구를 구축할 수 있는 개발자의 자유를 증진하기 위해, DMCA의 우회 방지 조항을 특별히 지지함.
현재 미국 저작권 사무소는 섹션 1201의 우회 방지 조항에 대한 예외 사항에 대해 리뷰를 수행하고 있음.

곧 개발자 친화적인 저작권법을 만들기 위한 싸움에 여러분이 동참할수 있또록 더 많은 것을 얘기할수 있을 것. 기대해 주시기 바람.

와.. 아주 깔끔하게 정리 되었네요.
앞으로 바꿔갈 것들과 개발자 방어 펀드, 법률 개선까지.. 깃헙이 정말로 일을 잘 처리한 것 같습니다.

Youtube-dl - Youtube 및 각종 비디오사이트에서 동영상 저장하기 https://news.hada.io/topic?id=1629
Youtube-dl, DMCA때문에 깃헙에서 삭제 https://news.hada.io/topic?id=3081
기자들이 Youtube-dl 을 사용하는 방식 https://news.hada.io/topic?id=3100

일처리가 정말 잘 됐네요. 문제 초반부터 Github CEO와 CTO들이 복원을 위해 노력중이라는 기사가 많았는데, 그런 적극적인 자세가 개발자들에게 신뢰를 주는 것 같습니다. 게다가 MS 산하인데도!

 
애플, 중소개발사 앱스토어 수수료 15%로 인하

- 2021년 1월 1일부터 시작, 2020년 연간 수익금 100만달러(11억원) 이하의 개발사는 수수료 15%
- 100만달러 초과시, 해당년도의 남은 기간 동안엔 기본 수수료율 30% 적용
- 향후 어느해에 100만달러 이하 일경우, 다음해 부터 15% 수수료 대상 자격을 얻음

에픽이 쏘아올린 작은 공이 개인/중소개발사에게 큰 도움을 줬군요.
구글은 내년부터 인엡 결제 정책을 강화한다는데, 이 행보에 대해 구글은 어떻게 대응할까요? ㅎㅎ

애플 앱스토어와 구글 플레이에서 Epic Fortnite 삭제 https://news.hada.io/topic?id=2645
구글 플레이, 인앱 결제 정책 업데이트 https://news.hada.io/topic?id=2926

개인 개발자로서 기대치 않은 행운이 넝쿨째 굴러들어왔습니다.
구글도 앞으로 중소개발사들에 대해서는 더 너그럽게 대해주지 않을까 생각합니다.

 
애플 M1칩, x86 에뮬레이션해도 기존 맥보다 빠름

- 새 맥북에어에서 긱벤치를 Rosetta 2로 x86 에뮬레이트 해서 실행
- 싱글코어 스코어 1313 으로 네이티브 일때 1687 의 78% 성능을 냄
- 이것만으로도 인텔 i9 iMac(1251), i7 맥북프로13인치 (1240)보다 더 빠른 성능을 보이는 것으로 기록됨

Rosetta 2가 정말 훌륭하다는 것이기도 하고, M1칩 성능이 정말 뛰어나다는 얘기네요.
정말 중요한건 저렇게 더 높은 성능을 보이면서도, 전력은 절반도 안쓴다는 건데(인텔 니네 뭐했니?)

각종 어플리케이션들이 M1칩에 맞게 컴파일되서 나오면 어찌 될까요.
거기다 내년에 맥북프로 16인치와 iMac 용으로 M1X(아마도) 칩이 나오면 또 얼마나 빨라질지 기대가 됩니다.

이렇게 세대가 바뀌는군요.
데스크탑 라인에서 x86식구들이 진짜 물러나는 날이 오다니...

 
애플 M1, GeForce GTX 1050 Ti 와 Radeon RX 560 보다 빨라

- M1의 내장 GPU는 2.6 TFLOPS 로 GTX 1650 의 2.9보다 약간 아래
- GFXBench 5.0(Metal 이용) 테스트 결과, 대부분의 테스트에서 GTX 1050 과 RX 560 두 "데스크탑" GPU들보다 더 높은 FPS가 나옴
- GFXBench 자체가 모바일 기기 테스트용인데다, 1050 과 560이 오래된 GPU긴 하지만
ㅤ→ 내장 그래픽인 M1칩이 75W짜리 데스크탑 그래픽 카드를 이긴다는 것은 놀라운 결과

 
Is Apple silicon ready ?

다양한 앱별로 현재 애플 M1 디바이스에서 실행되는지 여부를 알려주는 웹사이트입니다. M1칩 성능이 기대이상이어서, 이제 남은 고민거리를 주로 사용하는 앱의 실행여부가 관건인데, 저는 이 페이지를 한동안 찾아보게 될 것 같습니다.

처음엔 이름만 보고 "No" 같은거 써있는 스태틱 유머 페이지 일거라 생각했는데, 꽤 쓸모 있습니다.

개발도구 랑 언어쪽은 아직 미지원이 많네요.
요즘 긱뉴스 팟캐스트 때문에 비디오 도구 들을 많이 쓰는데,
OBS Studio / Premiere / After Effect 미지원이 아직 큰 걸림돌인듯 합니다.

 
일 잘 하는 개발자는 왜 비즈니스까지 신경쓸까?

- 우리는 고용되었다
- 왜 개발자들은 좋은 설계를 하려고 하는걸까?
- 우리는 방망이 깎던 노인이 아니다
- 비즈니스와 좋은 설계의 균형을 찾아보자
- 이게 정말 설계를 고민할 가치가 있을까?
- 튼튼한 설계보다 빠른 개발 속도가 중요할 때
- 지워야 하는 기능을 만들 때도 있다

"개발자가 좋은 설계와 기술 부채 청산을 중요하게 생각하는 만큼 디자이너는 UI/UX를 중요하게 생각하며 CEO는 경영을 중요하게 생각한다. 그리고 결정적으로 유저는 자신이 이 서비스를 사용하며 느끼는 경험들만 중요하게 생각한다.

이렇게 모두 다 각자 중요하게 생각하는 가치가 다르기 때문에 개발자로써 어플리케이션만 생각하는 좁은 시야를 가지면 안 된다는 것을 이 포스팅을 통해 이야기하고 싶었다."

 
푸리에 변환(Fourier Transform)을 반응형으로 배우기 [한국어]

- 푸리에 변환이란 무엇인가
- 푸리에 변환의 실용적 활용
- 푸리에 변환의 무의미하긴 한데 엄청 신기한 활용

결론
- 푸리에 변환은 무언가를 넣으면 여러 주파수로 나눠주는 것이다.
- 이 주파수들로부터 데이터의 근본적인 성질을 알 수 있다.
- 중요한 주파수만 저장함으로써 데이터를 압축할 수도 있다.
- 여러 개의 원을 사용해서 엄청 신기한 애니메이션을 만들 수도 있다.

제가 가끔 수업할 때 이야기하던 내용인데 훨씬 쉽게 되어 있네요. 참고자료로 좋겠네요

복소사인파와, JPEG(이미지 압축)에서 활용하는 부분이 너무 신기하네요.

 
Cutter - 오픈소스 리버스 엔지니어링 플랫폼

- 리버스 엔지니어링(RE) 프레임워크인 radare2 를 GUI / 터미널로 사용
- Ghidra 디컴파일러 네이티브 연동
- 멀티플랫폼 디버거 & 리모트 디버깅, 에뮬레이션 모드 지원
- Hex Editor, Syntax Highlighting, Graph View
- 파이썬 스크립팅 엔진으로 자동화 가능
- Binary Searching & Patching
- Qt + C++ 으로 작성, 윈도우/맥/리눅스 지원

초보자를 위한 리버스 엔지니어링 [PDF] https://news.hada.io/topic?id=982
Reverse Engineering Course https://news.hada.io/topic?id=1312

Radare2 Framework을 이용한 리버스 엔지니어링 PART-1 (번역) https://cpuu.postype.com/post/838572
Radare2를 이용한 리버스 엔지니어링 [Radare2 사용법 및 동적분석 예제] by N0Named http://blog.no-named.kr/how-2-use-radare2/

기드라(Ghidra) 디버깅 툴 설치 및 기본 사용 방법 https://ndb796.tistory.com/323
NSA의 오픈소스 리버스 엔지니어링 도구 Ghidra, 안드로이드 ELF 바이너리 지원 https://news.hada.io/topic?id=280

 
SQL.js - JS로 컴파일된 SQLite

- 브라우저에서 JS로 실행되는 SQL DB
- 메모리에 가상 DB파일을 만들어서 사용하므로 변경은 유지되지 않음
ㅤ→ DB를 Typed Array로 만들어서 Export 가능
ㅤ→ 기존 SQLite 파일 Import 가능
ㅤ→ 온라인 SQL 데모 기능등에 적합
- emscripten 으로 SQLite를 WASM으로 컴파일
- SQLite 는 Public Domain 이지만, SQL.js 는 MIT 라이센스

 
GitHub Pages URL Shortener

- 깃헙 페이지와 이슈를 이용한 단축 URL 생성기
1. 단축 URL을 생성하려면 URL을 제목으로 이슈를 생성
2. 이슈 번호가 단축 URL이 됨
- CNAME으로 gh-pages 에 자신의 도메인 연결
- 실제로는 404.html 이 모든 redirection을 처리

음 이거 GitHub Issues 를 어뷰징 하는 느낌이긴 한데, 이런식으로 처리할 수 있다는 시도가 재미나네요.

비슷하게 GitHub Actions 를 이용한 URL Shortener 도 있습니다.
https://github.com/wesleytodd/short

 
010 Editor - 전문가용 Text + Hex Editor

- 윈도우/맥/리눅스 지원
- Binary Template 기능으로 이진 파일을 구조화해서 볼수 있는 기능을 지원
ㅤ→ 7zip,gzip,zip,mp3,wav,ogg,pdf,exe,elf,ttf,bmp,gif,jpg,ico,torrent,pcap,bson,dex,class(java),pyc,avi,flv,mp4 등 160+개 포맷
- C/C++ 과 비슷한 언어로 스크립팅 지원
ㅤ→ Binary Template과 연동 가능(변수 접근 등)
ㅤ→ UI없이 커맨드라인에서 실행 가능
- 컬럼 모드 지원
- 하드 드라이브 직접 편집 (Binary Template 지원)
ㅤ→ NTFS, FAT16, FAT32, exFAT, HFS 직접 수정 가능
ㅤ→ MBR / EFI 파티션 편집도 가능
- 체크섬/해쉬 계산 지원 : CRC-16, CRC-32, Adler32, MD2, MD4, MD5, RIPEMD160, SHA-1, SHA-256, TIGER
- 대용량 파일 지원 : 50+GB Text 파일, 8EB(ExaByte) Hex 파일
- USB에 넣고 다닐수 있는 포터블 버전도 제공

- $129.95 US (Commercial Use) / $49.95 US (Home/Academic Use)

첫 버전이 나온지 17년이나 된 툴이구요. 현재 버전은 v11 입니다.
에디터로서는 가격이 조금 나간다고도 볼수 있는데, 디지털 포렌식 / 리버스 엔지니어링 시 가장 유용한 도구입니다.
바이너리 템플릿 기능 때문에 특정 포맷의 파일을 분석해야할 필요가 있을 때 뛰어난 기능을 발휘합니다.

템플릿 리파지토리를 보시면 정말 많은 템플릿들이 있습니다.
https://www.sweetscape.com/010editor/repository/templates/

와 엄청난 도구네요 (가격도 ^^;)
저는 늘 xvi32 쓰고 있었어요. http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm

 
Browsh - 텍스트 기반 웹 브라우저

- SSH/TTY 환경에서 HTML5,CSS3,JS,Video,WebGL 등을 지원
- 비디오/이미지 등은 UTF-8 하프블록을 써서 터미널에서 최대한 그래픽을 재현
- 마우스 지원으로 링크 클릭, 라인그리기 등까지 지원
- 헤드리스로 Firefox를 실행, 웹서버에 접속 후 확장을 통해 웹페이지를 터미널에 맞게 변환
ㅤ→ 웹페이지를 하나의 HTML/Text로 전송하여 터미널로 전송되는 웹 트래픽은 최소화
- Go로 작성된 싱글바이너리, Firefox 57이상 필요
- 각종 리눅스,맥,윈도우 지원

이게 변환을 하다보니 속도는 그다지 빠르지 않습니다만,
웹서버 브라우징은 서버에서 한 다음 그 웹페이지를 변환해서 엄청 작은 트래픽으로 쉘에서 볼 수 있기 때문에
네트웍 환경이 엄청 안 좋은 곳에서는 나름 쓸만한 상황이 될수도 있을 것 같습니다.

HN의 한 사용자가 알라스카 에선 한달에 14만원씩 내는 인터넷도 최대 속도가 512k 라서 이런 방식이 유용하다는 댓글이 있네요.
- https://news.ycombinator.com/item?id=25131396

저 이미지 렌더링에 UTF-8 하프블록을 쓰는건 imgcat 에서 봤었는데, 여기서도 활용하는군요.
- imgcat 이미지 해상도 향상 https://news.hada.io/topic?id=3088

 
SVGBox - API for Web Icons

- img 태그에서 직접 사용 가능한 SVG 아이콘들 2500개
ㅤ→ Material UI, 소셜/웹/앱 아이콘, 로딩 애니메이션, Heroicons, 국기
- Cloudflare CDN 으로 제공되어 어디에서나 무료로 빠르게 사용 가능
- Fill Color 지정 가능 : Hex,RGB,HSL,Tailwind Pallete,HTML5 Common Color 로 지정

 
Skija - 자바를 위한 Skia 바인딩

- 멀티플랫폼 2D 그래픽 라이브러리인 Skia를 Java에서 사용 가능하게 만들어주는 오픈소스
ㅤ→ Jetbrains가 개발
- Skia가 성능상 기존 모든 Java 2D 툴킷 보다 훌륭
ㅤ→ GPU 가속 및 최적화, 오픈타입, 색공간 지원 등
- 기존 javacpp 등을 이용한 바인딩과 달리 Java-Native API로 손수 개발
ㅤ→ 자동 메모리 관리
ㅤ→ 자바 클래스/인터페이스/상속/싱글톤 등을 제대로 활용
ㅤ→ Getter/Setter 등을 포함, 자바 컨벤션을 지킴
ㅤ→ Typed Enums
ㅤ→ Skia/C++ 의 자료형이 아닌 네이티브 자바(Strings, arrays, Streams, Files, Byte Buffers, AutoCloseable)
- 윈도우/리눅스/맥, Bitmap/OpenGL/Metal/Vulkan(예정)
- JetBrains Compose가 Skija를 활용중

JetBrains Compose 가 Skia 를 쓴다고 하더니, 내부에 이런걸 만들어서 쓰는 거였군요.
- "JetBrains Compose - 코틀린용 데스크탑 UI 툴킷" https://news.hada.io/topic?id=3154

이제 자바로 만든 도구들에도 좀 빠른 그래픽 화면을 볼 수 있게 되려나요 ㅎ

 
k0s - 설정이 거의 필요없는 초 간단 쿠버네티스

- OS 의존성 없는 싱글 바이너리 패키지
- Self hosted, isolated control plane
- 커스텀 컨테이너 런타임 지원(기본은 containerd)
- 커스텀 Container Network Interface(CNI) 플러그인 지원(기본은 calico)
- x86_64, arm64 지원

> curl -sSLf get.k0s.sh | sh
> k0s server --enable-worker
두개 명령 만으로 실행 가능

Alpine Linux 배포본을 만든 Natanael Copa 도 주요 참여자 여서 기대해 볼만하다는 의견이 있네요.

 
True Size of - 나라들 실제 크기로 보기

- 메르카토르 도법때문에 발생한 지도의 왜곡을 보정해서 보여주는 사이트
ㅤ→ 둥그런 지구를 평면에 투영하면서 극지방은 면적이 크게 보이고, 적도 부근은 작게 보이는 왜곡 현상
- 국가를 검색해서 마우스로 움직이면 상대 크기 비교가 가능
ㅤ→ 여러 국가 추가도 가능, 각 나라는 우클릭으로 제거

West Wing 에 나왔던 Gall-Peters Projection https://www.youtube.com/watch?v=eLqC3FNNOaI ,
True Size of Africa http://kai.sub.blue/images/True-Size-of-Africa-kk-v3.pdf
에서 영감 받아서 만들었다고 합니다.

꽤 오래전에 나온 사이트인데, HN에 다시 올라왔길래 함 공유해봅니다.

콩고 민주 공화국을 유럽에 갖다놓는 슈가월드 영상 보고 소름 돋았어요 ㅎㅎ

 
Nativescript

Angular, Vue.js 등의 자바스크립트 라이브러리를 이용하면 네이티브 모바일 앱을 만들수 있는 프레임워크.

Vue.js를 이용해서 모바일 앱을 개발해 보려고 하다가 발견했습니다. React native와 비슷한 시기에 나온것 같은데 처음 발견해서 공유합니다.

혹시 사용해보신 분이 계시려나요?

공유 감사합니다.
Vue & Angular 개발자를 위한 ReactNative 라고 보면 될 것 같네요.
찾아보니 두개를 비교한 최근 글이 있어서 읽어보니 재미나네요.

NativeScript vs React Native in 2020 - Which One to Choose?
https://www.monterail.com/blog/nativescript-vs-react-native-2020

가장 중요한 차이는 Native API 연동부분인데
- ReactNative 는 기본으로 지원하지 않는 특정 API를 쓸려면 써드파티 모듈을 찾거나, 직접 자신이 Bridge를 만들어야 함
- NativeScript 는 기본적으로 모든 iOS/Android API를 내부의 JavaScript VirtualMachine 에 먼저 다 넣어놓는 방식을 취해서 그냥 가져다 쓰면 됨

요즘은 거의 ReactNative 용으로 모듈이 빠르게 나오니 큰 문제는 없겠지만, 기능이 많아지면 달라지긴 하겠네요.

NativeScript엔 잘 구성된 플러그인 마켓플레이스가 있다는것도 장점이구요. https://market.nativescript.org/

속도의 차이는 거의 없다는 걸로 보이고,
React 사용자라면 RN을, Vue 나 Angular 개발자라면 NativeScript 를 선택하게 되지 않을까 생각이 드는데요.

일단 ReactNative 가 훨씬 사용자층이 많긴 해서 약간 밀리는 감이 없잖아 있네요 ^^;

 
애플이 정말로 실행하는 모든 앱을 다 서버에 기록할까 ?

- 이번에 이슈가 된 OCSP에 대한 기술적인 분석
ㅤ→ 개발자 인증서가 유효한지를 확인하기 위해 앱 실행시에 애플서버에 접속해서 체크
ㅤ→ 네트웍 연결이 불가능하면 그냥 실행함
ㅤ→ 접속은 가능한데 서버가 느리면 이번처럼 애플이 만든것 외의 모든 앱이 안뜨는 이슈가 발생
ㅤ→ 앱 실행시마다 애플서버로 앱의 해쉬를 보내고 있다는 주장이 있음 [1]
ㅤ→ 문제는 HTTPS 가 아닌 HTTP를 사용한다는 것 (HTTPS 인증서를 확인하기 위해서 또 커넥션을 열어야 하는 상황이 나오므로)
- 내부 들여다 보기
ㅤ→ 중간에 HTTP Proxy 나 Wireshark 만 있으면 모두 캡쳐 가능
ㅤ→ 한번 실행해서 OCSP 인증이 되면 특정 시간 동안은 다시 인증 안함
ㅤ→ GET 으로 base64 인코딩 된 80바이트 문자열을 전송
ㅤ→ 해당 값이 앱의 Hash 같지만 "아님"
ㅤ→ OpenSSSL로 그 바이너리 정보를 열어보면, 진짜로 인증서 Issuer 이름 & 키 해쉬값과 시리얼번호가 들어있음
ㅤ→ 그래도 인증서가 앱마다 다르면 어차피 그게 앱에 대한 해쉬값이랑 같은거 아닌가 ? 하는 의심
- 개발자 인증서
ㅤ→ 이 인증서 정보는 어디서 오는 것일까?
ㅤ→ codesign 으로 맥앱의 인증서를 추출해봄(여기선 Firefox)
ㅤ→ 시리얼 번호가 위에 캡쳐한 것과 일치함
ㅤ→ 그럼 다시 Thunderbird 의 인증서를 뽑아보니 역시 시리얼번호가 같음(당연하겠지만)
ㅤ→ 즉 [1]에서 얘기한 대로 모든 앱을 알수 있는 해쉬 정보를 보낸다는 것은 틀린 정보임
ㅤ→ 물론 언제 어떤 컴에서 "어떤 개발자의" 앱을 실행했다는 것 자체를 알 수 있다는 것은 사실
- OCSP를 차단 하는 것에 대해서
ㅤ→ Little Snitch 를 이용하거나 /etc/hosts 를 통해서 막을 수는 있음
ㅤ→ 하지만 이건 중요한 보안 기능 자체를 막는 것이니까 하지 말기를 권함

- TL;DR
ㅤ→ macOS 가 앱을 실행할 때마다 애플로 앱의 해쉬를 보내지 않음
ㅤ→ macOS 가 당신이 사용하는 앱의 개발자 인증서 정보를 보내고 있고, 이건 HTTP로 전송됨
ㅤ→ 웬만하면 ocsp.apple.com 접속을 막지 마세요.

관련해서 읽어볼 이슈들

[1] 당신의 컴퓨터는 당신만의 것이 아니다 https://news.hada.io/topic?id=3200
[2] 맥 OS 카탈리나(10.15) : 디자인에 의해 느려지다 https://news.hada.io/topic?id=2145

이게 iOS처럼 맥앱도 App Analytics 정보를 수집하기 위한게 아닐가 추측해봅니다.

ocsp 는 원래 웹 브라우저도 SSL 인증서의 만료 여부 등을 확인하기 위해서 사용하는 방법이긴 할텐데요. 앱 인증을 SSL 인증서와 동일한 방식으로 하기 때문에 그런 것으로 추정할 수도 있겠네요.

 
Pay Me or Fork This

테스트용 가짜 데이터를 만들어주는 faker.js 오픈소스 개발자의 선언

"내 Free work에 대해서, 이제 더 이상 Fortune 500 및 그 보다 작은 회사들을 위한 공짜 지원 안함.
년간 1억 이상(6 Figure) 의 계약을 하던가 아니면 Fork해서 다른 사람이 작업하게 하세요."

faker.js - Node 및 브라우저상에서 가짜 데이터 생성 https://news.hada.io/topic?id=3166

꽤 사용자가 많은 라이브러리 일텐데, GitHub Sponsor 가 11명밖에 안되는 군요..

게다가 얼마전에 아파트에 불이 나서 가진 것들이 다 타버렸다고..
https://twitter.com/marak/status/1320465599319990272

왜 이런 말을 했는지 어느 정도 이해가 됩니다.

자기가 쓰고 있는 걸 오픈소스로 바꾸는 건 비용이 들지 않지만 ( 코드 퀄리티 올렸다고 치고 ), 지원부터는 비용이 들어서...

요즘 새로 산 게임 엔진 블랙북, 울펜슈타인 3D라는 책에 나와있는 글이 떠오르네요. 존 카맥이 울펜슈타인 3D를 오픈소스로 뿌렸는데, README에 이렇게 적혀 있었습니다.

"다른 건 모르겠고 불랜더 C++ 3.0에서는 잘 돌았음. 버그 리폿이나 이거 안 된다고 메일 보내지 말것!"

 
google sheet를 이용한 api 목업 기능 구현(한국어)

구글 스프레드시트 문서로 데이터를 입력하여 mockup api를 만들수 있도록 구현

공개 보기 설정을 해 둔 상태의 스프레드시트 만 사용가능

npm에 계시 됨

swagger 기반 playground(?): https://api.fureweb.com/

 
크롬, 새창 열기시 보안 이슈 해결

- target="_blank" 로 새창 열었을 때, 원본 페이지에 접근 가능한 보안문제 회피를 위해 강제로 rel="noopener" 가 적용된 것처럼 동작하게 변경
- 사파리는 이미 2018년에 적용
- MS Edge 개발자가 이 기능을 Chromium에 추가해서 Edge/Chrome/Brave 등 모든 브라우저에 적용됨
- 크롬 Canary 에는 추가되었고 2021년 1월에 나올 크롬 88에서 공식 배포 예정

이 이슈는 새 창을 열었을 때 그 새 URL의 자바스크립트가 나쁜맘을 먹으면 오리지널 페이지를 다른 곳(피싱사이트 등)으로 보내버릴수 있는 것입니다.
사용자가 본문/코멘트 등으로 URL을 등록할 수 있는 사이트에서 발생할 수 있구요.
이걸 막으려면 지금부터라도 target 사용시 rel="noopener"를 추가해 주는게 좋습니다.

* 긱뉴스는 새 창 열기가 아예 없어서 적용하지 않았습니다. ^^;

기존처럼 새 창에서 부모창에 액세스하려면 a태그에 rel="opener" 속성을 추가해야 하는군요.
유지보수가 안되는 사이트들에서는 해당 기능을 사용하면 문제가 좀 되겠내요.

개인적으로 부모창과 자식창 간 연동을 위해서 저는 아래와 같이 팝업을 오픈하고 있습니다.

var childWin = window.open("", "childWin");
childWin.location.href = "https://news.hada.io";;

이렇게 하면 부모창, 자식창 모두 페이지가 바뀌어도 서로 컨트롤이 가능하거든요.
플레이어를 팝업으로 띄울 때 이렇게 사용하곤 합니다.

 
Mozilla Servo, Linux Foundation 소속으로 이관

- 모질라 구조조정시 Servo 개발팀도 포함되어 미래가 불투명 했으나, 리눅스재단(LF) 소속으로 모든걸 이관
- Servo 의 목표는 변화 없음 : 다른 어플리케이션에 임베드 가능한 고성능의 안전한 웹 렌더링 엔진 제공 (Rust 기반)
- 거버넌스 변화로 기여가 더 쉬워짐. LF의 크라우드펀딩 사이트를 통해서 Servo에 직접 후원 가능
- 실시간 대화와 토론을 위한 Servo Zulip 오픈

변하는 세상, 변하는 모질라. ( 모질라의 구조조정 소식. ) https://news.hada.io/topic?id=2635
Mozilla의 불확실한 미래 https://news.hada.io/topic?id=2660
Rust의 미래를 위한 재단의 토대 마련 https://news.hada.io/topic?id=2675
Unity 용 Servo 브라우저 플러그인 공개 https://news.hada.io/topic?id=2530

 
City as a Service - Helsinki Relocation Package (90일)

핀란드의 수도 헬싱키에서 재미난 것들 하네요.
City as a Service라고 90일 동안 가족을 핀란드로 초대하는 프로그램을 진행합니다.
북유럽에 속한 나라 중 하나인 핀란드는 러시아, 스웨덴을 끼고 있고 발트해와 맞닿아 있습니다.
링크에 보시면 Why Helsinki? 라는 부분이 있는데, 과연..? ㅎㅎ
가장 큰 스타트업 축제 중 하나인 Slush도 헬싱키에서 진행되기도 하고요.
개인사정만 아니면 지원해보고 싶을 정도로 흥미로운 프로그램이네요 :)

Tired of lockdowns, wildfires, social injustices and political turmoil?

봉쇄와, 산불과, 사회적 혼란에 지치셨나요?

이 문구가 인상깊네요. 타겟층을 명백히 알려주는 듯한..

 
Gumroad, Membership 서비스 공개

- 정기 결제 및 유료 멤버쉽을 지원
ㅤ→ 뉴스레터, 콘텐츠 라이브러리 구독, 소프트웨어 구독, 유료 커뮤니티 등
- 멤버쉽 Tier를 하나의 상품처럼 관리 : 가격, 콘텐츠, 워크플로우를 Tier별로 다르게 설정 가능
ㅤ→ 검로드의 특징중 하나인 Pay-What-You-Want (원하는 만큼만 결제) 기능도 Tier안에서 지원

Gumroad 는 창작자를 위한 이커머스 솔루션 입니다.
- 디지털 콘텐츠 판매에 특화되어서 e북(PDF,ePub),아이콘,사진,비디오,온라인 강의,소프트웨어 등을 팔때 쉽게 판매페이지를 만들수 있게 지원
- 물론 피지컬 굿즈들(티셔츠,핸드메이드,그림) 등의 창작물들 파는 것도 가능
- 기본은 무료 : 제품 갯수는 제한없지만, 올릴수 있는 글/Workflow(자동화)/스트리밍은 SD까지만 지원하고 수수료가 비쌉니다. 기본 5% + 결제 건당 (3.5% + 30센트)
- 고급은 고객수 별로 달라서, 1000명 이하는 월 $10, 2천명 이하 $25, 만명 이하 $75 등으로 올라갑니다. 최대 월 $250
ㅤ→ Gumroad 브랜딩 제거가능, 커스텀 CSS, 자신의 도메인 지원, 글/Workflow 무제한, HD 스트리밍
ㅤ→ 3.5% + 건당 수수료 30센트

아래 Gumroad 창업자의 이야기는 제가 긱뉴스를 만들고 싶게한 글이기도 합니다.
( 그래서인지 Gumroad 서비스에는 이상한? 애정을 가지고 있습니다 )
ㅤ→ 1조 회사를 만들다 실패한 경험 이야기 https://news.hada.io/topic?id=2

iOS14 용 아이콘을 팔았던 디자이너도 Gumroad를 썼고
ㅤ→ Six Figures in 6 days - 6일만에 1억 벌기 https://news.hada.io/topic?id=2947

유튜브의 1년 트렌딩 데이터를 크롤링해서 데이터셋으로 파는 사람도 Gumroad를 씁니다.
ㅤ→ 1년 간의 유튜브 트렌딩 비디오 분석 (US) https://news.hada.io/topic?id=2407

 
RAFT - REST API Fuzz Testing

- MS가 공개한 Azure 기반의 오픈소스/셀프호스트 테스트 플랫폼
- FAAS (Fuzzing-As-A-Service)
ㅤ→ Fuzzing : 자동으로 여러가지 이상한 입력값을 넣어서 블랙박스 테스팅 하는 기법
ㅤ→ MSR의 RESTler를 연동, Swagger스펙을 통해 API를 테스트
ㅤ→ OWASP의 ZAP(Zed Attack Proxy, 웹앱 스캐너) 지원
ㅤ→ RESTler 외의 다양한 Fuzzer를 지원 가능
- 싱글 커맨드라인으로 CI/CD 와 연동해서 사용가능

 
트위터, 24시간후 사라지는 메시지 Fleets 정식 공개

- 트윗, 사진, GIF, 비디오를 Fleets에 올릴 수 있음
ㅤ→ 24시간후 사라짐
ㅤ→ 리트윗/마음/공개답글 불가
ㅤ→ 쪽지보내기 및 이모티콘으로 리액션
ㅤ→ 누가 내 Fleet을 보았는지 확인 가능
ㅤ→ 배경과 글자 옵션으로 꾸미기 지원
ㅤ→ Tweet을 Fleet으로 공유할 수 있음
- 생방송 과 스티커 기능 추가 예정
- 팔로워들은 홈 타임라인 상단에서 Fleets를 볼수 있음

 
유튜브, 창작자가 원치 않아도 광고가 보이게 약관 변경

- YPP(유튜브 파트너 프로그램)에 가입하지 않은 채널의 영상에도 광고가 노출
- 해당 채널은 YPP 계약이 안되어 있으니 창작자가 광고 수익을 받지 못함
- 이 광고는 창작자가 원치 않아도 노출됨
- YPP 가입을 위해서는 1000명 구독자 + 지난 1년간 4000시간 재생시간 필요
- 미국은 즉시 적용, 미국외 국가는 2021년부터 적용

일부러 광고가 안 보이게 지정하는 계정들도 있을텐데, 반발이 심하긴 하겠네요.
구글 입장에서는 광고도 안보이고 네트웍 트래픽만 소모하는 계정은 자신들한테 도움 안되니 문제였을테구요.

 
Docker에서 Podman으로 전환하기

- Podman : RedHat이 만든 리눅스용 Docker 대체제
ㅤ→ 데몬이 없는 OCI 컨테이너 도구 : 커널에 직접 컨테이너를 실행해서 데몬과 상관없이 독립적으로 운영가능
- 도커와 CLI 수준에서 호환 가능 : alias docker=podman
ㅤ→ 도커 이미지도 그대로 사용 가능

Podman : https://podman.io/
Podman 설치 및 사용법 [한글] : https://chhanz.github.io/container/2020/03/02/podman/
Centos8 & Centos7 컨테이너 비교 (Podman & Docker) : https://blog.naver.com/tkdldjs35/221977555582