지난 MS 10월 이벤트에서, 서피스 프로를 또 사골 고으면서 ARM 윈도 탑재 "서피스 프로 X"에 큰 힘을 실었는데요.

프로 X 리뷰를 보면 역시나 x86 에뮬레이션 성능은 여전히 제자리걸음입니다. 이제 쓰려는 글과는 무관하지만 심지어 대기시간도 ARM 답지 않게 짧고요. 이래놓고 가격은 아이패드 프로 급입니다. 이러려고 서피스 프로 사골 고았습니까악?

현재 ARM 윈도의 한계점은:

  • ARM CPU용으로 개발된 윈도 프로그램이 별로 없습니다
    • ARM용 프로그램이 대세가 되면 에뮬레이션 당연히 필요없겠죠. 네, 안 됩니다.
    • ARM용 (크로미움) 엣지 브라우저는 성능 좋다더군요
  • x64 (AMD64) 에뮬레이션이 안 됩니다, 즉 64비트용 프로그램 안 돌아갑니다
  • x86용 벤치마크 성능이 바닥을 기는 것을 볼 때, SSE2 같은 SIMD 명령 지원을 안 하는 것 같습니다 (뇌피셜)
  • 그나마 x86 프로그램도 호환성을 탑니다

이래놓고 본픔 $999에 펜+키보드 별매라니 서피스 수장님 정신 차리십시오

 

ARM64 특허 만료가 2019년 기준으로 이제 2년 정도 남았다는데요,

1차: https://gigglehd.com/gg/soft/6031493

2차: https://www.neowin.net/news/exclusive-microsoft-is-working-to-bring-64-bit-intel-app-emulation-to-windows-on-arm

내년 윈도10 업데이트에서 x64 에뮬레이션 기능이 추가된다고 하네요! 특허를 어떻게 피한거죠? AMD에서 기껏 라이젠 띄워놓고 ARM CPU라도 팔려는걸까요 ㄷㄷ

x64 지원된다고 해서 프로그램 성능이 올라가지는 않을 것 같지만, 이제는 x86/64보다 ARM 윈도가 빛나는 미래가 될테니 기대가 되......지 않네요.

저는 서피스 프로 + 베젤 축소 + 썬더볼트 3가 좋습니다. 외않된데?ㅠㅠㅠㅠㅠㅠㅠㅠ

포알못이 적습니다. 포덕님들이시던 아니시던 뒤로가기 하십시오.

 

이름이 유치함

"소드", "실드"라니!

그러나 기존 이름도 단순했죠. 이름 불만은 게임 품질이 나빠서 곁가지로 트집잡히는 것으로 보여요.

포켓몬 전국도감 절반 가까이 삭제

쓰레기들... 캐릭터 모델링 재탕한 놈들이... 이건 누구도 실드 못 칩니다.

라이트 유저 사랑

원래 "진입은 쉽게, 마스터는 어렵게" 만든 게임이 잘 만든 게임이라던데요. 아무리 그렇더래도 전반적 난이도가 너무 낮아졌다는 평이 있습니다.

그래픽, 게임 시스템 뭉뚱그려서 의견

  • 기존 시리즈에서 불편했던 요소를 많이 고쳤대요
    • 어디서나 포켓몬 박스 접근
    • 학습기 삭제, 항상 6마리 전부 경험치 획득
    • ...
  • 허술한 캐릭터 공격 모션 이야기가 많았는데, 중후반 주요 캐릭터 공격 모션은 힘 줘서 만들었대요.
  • 축구 경기 느낌을 낸 체육관 배틀 평이 좋고요.

 

  • 20년 전 젤다 느낌 나무 텍스쳐 품질은 다들 아실 겁니다.
  • 주인공 캐릭터 커스터마이징이 되긴 되네요. 얼굴형 바꾸는 건 전혀 바라지 않고, 피부색, 머리모양, 눈코입 조절되면 됐죠 뭐. 주인공 말고 포켓몬 커스터마이징이 되어야 하는 것 아닌지.
  • 대놓고 라이트 유저 타겟이라는 렛츠고 시리즈보다도 못한 배틀 화면 배경.

    • 다리 위에서 싸움 붙으면 다리 배경 그대로 보여줬던 전작과 달리 풀숲으로 워프하는 이번 시리즈. 이유가 뭡니까.

  • 건물은 죄다 장식, 진입 불가 또는 텅 비어있거나

결론

제작진의 무성의함이 온 몸으로 느껴지지만, 그래도 재미는 충분한가보네요 :(

개선된 점이 많이 있다고 하고, 정석 스토리로 돌아갔다는 점도 뭐 좋습니다.

 

최근 불만이었던 시리즈를 생각해 보면,

  1. XY 시리즈 게임 시스템은 개선되었으나 뭔가 이상했고
  2. 썬문 시리즈 릴리에 위주로 진행하여 스토리 말아먹었으나 잘 팔렸다고 하고
  3. 라이트 유저층 타겟한 렛츠고 시리즈 대박나고, 포켓몬Go 계속 잘나가고 있어서

부자는 망해도 삼대는 간다고 하고, 이번이 썬문 이후로 병맛 퀄리티 2대째인데... 전혀 망할 것 같아보이지 않습니다. 잘 팔리니 프로듀서들이 딱히 반성할 것 같지도 않고요.

그래서 팬들이 바라는 고퀄리티는 다음 버전에도 기대하기 어려울 것 같아요. 어서 탈출하시던지, 그냥 포기하고 즐기세요.

1단계: 수정 대상 앱 또는 시스템 프레임워크 확보

특정 앱을 수정하고 싶다면,

  • 앱 파일 획득

    • 기기에서 직접 추출
      요즘 파일 탐색기에 다들 앱 추출 기능이 있죠. 아니면 Send Anywhere 앱도 있고요.

    • APK 공유 사이트 이용
      저는 APKMirrorAPKPure를 이용하는데요, APKPure 사이트는 왜인지 모르게 중국 풍이 느껴지기는 하지만 한국 개발사 포함해서 각종 앱이 다 있습니다. 혹 변조되었을지 두려운 마음 조금 있지만, 디지털 서명을 믿을 수밖에요. (서명 v1은 뚫릴 수 있다던데... 설마...)

한편 휴대폰 UI를 바꾸고 싶다면,

  • 시스템 프레임워크 파일 획득: 보통 아래 파일을 획득하면 되는 것 같습니다.
    • /system/framework/framework-res.apk : 안드로이드 OS 공통
    • /system/priv-apps/SystemUI.apk : 상태바, 내비게이션 버튼 등 시스템 요소 그리는 애
    • 또한 /system/framework 디렉토리에 제조사별 커스텀 리소스도 있으니 함께 확보해야 합니다.

그 외에 프레임워크 소스 파일, Settings.apk도 확보하셔서 소스를 들여다보면 이 리소스가 어디에 쓰이는지 아는 데 도움이 됩니다. 문제는 안드로이드 OS 5.0부터 ART를 도입하고, 그 후로 갖가지 최적화가 적용되면서 소스 파일이 점점 숨어들어갔습니다. 디컴파일해서 소스 들여다보기가 쉽지는 않습니다.

2단계: 역컴파일 툴 통해 코드 및 리소스 분석

최근 저는 JADX 즐겨 쓰고 있습니다. 별다른 복잡한 조작 없이 달빅 바이트코드를 자바 코드로 바꿔 보여주고, 전체 코드 검색 가능한 점이 좋습니다. 리소스 대상으로는 키워드 검색 안 되는 점은 아쉬워요.

JADX 개발자님들께 이 자리를 빌어 감사드립니다. 물론 의미없죠..
JADX 프로젝트 홈페이지

팁은... 잘 모르겠고... 감으로 때려맞추고 이래저래 하다보면 답이 나옵니다...

한편, 시스템 프레임워크를 수정한다면 제조사 또는 서드파티 테마 파일을 열어보는 것도 좋습니다. 어디를 건드려야 할 지 가이드가 되거든요.

와디즈 펀딩을 통해 구입한 피아톤 볼트 완전무선 이어폰입니다. 핵심 장점은,

  • 이어폰 + 포터블 스피커 2in1 구성
  • 피아톤표 BA 드라이버 탑재로 수준급 음질 제공
  • 귀에서 빠지지 않게 하는 "이어윙"

입니다.

이어폰+스피커 2in1 구성

재미있는 기믹이지만 저한테 매우 유용하지는 않습니다. 놀러갈 때 쓸만한데, 놀러갈 일이 별로 없어서........ 또, 스피커 크기 한계상 소리가 압도적이지는 않은 점이 조금 아쉽습니다. 제 휴대폰 (LG G7) 대비 큰 차이가 느껴지지는 않았습니다.

2in1 하느라 생긴 가장 큰 문제는.. 스피커를 장착하느라 충전 케이스가 커진 점입니다. 주머니에 잘 안 들어가고, 넣으면 불룩해서 불편하고요. 에어팟과 비교하기는 에어팟 케이스가 워낙 작아서 민망하고, 다른 메이저 제품과 비교해서 큼직한 것이 불편합니다.

음질

(iOS 기기 / 안드 8.0 이상에서 지원되는) AAC 코덱을 잘 지원하고요, 피아톤표 BA 드라이버 덕분에 막귀로는 동사 유선 이어폰과 구별 안 되는 좋은 음질입니다. 저음 좋고, (커널형 감안해서) 고음 깨끗합니다. 음질에 불만이 없어요.

저는 번들 실리콘 팁은 음질 면에서 별로였고, 알리발 짭 폼팁 쓰니 괜찮았습니다. (TWS용 짧은 폼팁 말고, 일반 폼팁을 썼습니다.) 컴플라이 정품 폼팁 쓰면 더 좋을 거에요.

퀄컴 칩셋이 아니라 그런지 Apt-X 지원이 안 되어서 아쉬운 점은 있습니다. AAC로도 충분한 것 같지만요.

편리한 이어윙

유닛에 귀에서 빠지지 말라고 만든 실리콘 "이어윙"이 있습니다. 나름 인체공학적인 보스 이어폰에 달린 것과 비슷한데요, "이갑개정"(방금 검색함)에 이어윙을 걸쳐놓는 식입니다. 별 것 아니어 보이지만 얘 덕분에 귀에서 안 빠집니다. 배터리 때문인지 유닛이 나름 큰데도, 이어윙 덕분인지 무게로 인한 불편함이 없기도 해요.

편의성에서 아쉬운 점

  • 출시 후 업데이트를 받았지만, 그래도 지하철에서 끊기기는 끊깁니다. (이후에 업데이트가 또 있었는지 모르겠네요.)

  • 충전 없이 케이스에 오래 놓아두면 (4-5일) 방전됩니다. 관리를 잘 못 한 것인지 모르겠네요.

  • 에어팟처럼 멀티포인트 연결이 지원되지 않아서, 다른 기기에 연결하려면 먼저 이전 기기와의 연결을 끊어야 합니다.

  • 이어폰 유닛 위의 볼륨 조절 버튼이 대충 누르면 잘 안 눌립니다. 적절한 방법으로 누르면 되지만요. 뽑기 실패일 수도 있겠네요.

  • 험하게 쓰니 흰둥이 케이스 도색이 점점 벗겨지네요 ㅠ.ㅠ

  • 무선 충전 안 됨...

마지막으로

본 제품이 출시되자마자...

  • 다음 세대 TWS 칩셋을 장착한 제품이 우수수 쏟아져나왔고
  • 저가형에서는 QCY T1

  • 고가형에서는 애플 에어팟 및 소니, 젠하이저 등에서 만든 제품들

  • 시장 점유율을 위해 S10 사은품 정책을 들고나온 삼성 갤럭시 버즈

쏟아져나온 탓에 가격 우위를 점하기 힘들어 보였습니다. 고객을 끌어들이기에는 이 제품의 특징인 스피커 기믹, 그리고 피아톤표 BA 드라이버가 타사 대비 압도적이지는 않으니까요.

다음 제품에서는 피아톤의 자랑 (가성비) 노이즈 캔슬링을 밀면 좋겠으나, 노캔 TWS 시장을 싹 쓸어갈 에어팟 프로, 그리고 제품 가격을 생각하면 더 가까운 적수일 아마존 에코 버즈가 나왔네요. 문외한이 보기에도 쉽지 않아 보입니다.

다음 제품에서 이러한 어려운 시장 환경을 어떻게 헤쳐나갈 지 기대가 됩니다.

RRO 또는 runtime resource overlay

개념

안드로이드 앱 패키지의 주요 구성 요소는 코드, 리소스라 할 수 있습니다. 이 중 리소스에는 색상, 문자열 같은 단순 값부터, 그림 (drawable), 그리고 (XML) 레이아웃 등이 들어있는데요.

(런타임) 리소스 오버레이는 앱 패키지를 불러올 때, 원래 앱의 리소스를 사용자가 설치한 오버레이 패키지의 리소스로 덮어씌워주는 도구입니다.

소니 모바일 팀에서 개발했고 6.0 - 7.0 시절에 AOSP에 기부했다고 하고요, 8.0부터 본격적으로 도입이 된 것 같아요. 삼성, LG를 포함해서 많은 제조사들이 이 리소스 오버레이 기능을 바탕으로, 휴대폰 테마 기능을 개발하여 적용했습니다. substratum 테마 앱도 리소스 오버레이를 기반으로 작동하죠.

한계

  • 소스 코드를 고칠 수 없습니다. 당연하죠.
  • 새 버전이 나올 때마다 변경 사항이 있는지 보고 반영해야 합니다. 못할 짓이죠.
  • 앱 오류, 또는 시스템 전체에 오류를 일으킬 수 있습니다
    • 단순한 값 변경도 경우에 따라 코드에서 부작용을 일으킬 수 있습니다
    • 레이아웃처럼, 코드에서 리소스 내부 구성요소에 (예. 레이아웃 내 뷰) ID로 접근한다던지 하면, 없어진 요소를 프로그램에서 찾지 못하고 NullPointerException 예외를 일으킬 수 있는 등 예기치 못할 위험이 있습니다

안드로이드 9.0 파이 제한 사항 및 우회 방안

다만 안드로이드 9.0부터는 구글이 보안 개선을 이유로 제조사 서명이 되지 않은 리소스 오버레이는 설치할 수 없도록 제한했습니다. 보안 위협 시나리오가 어떤 것이 있을지..., 소설을 써 보겠습니다만 실현 가능성이 없어 보이네요.

  • 사악한 DLC 앱: 스토어에는 검수하기에 멀쩡해 보이는 앱을 게시하고, 사용자를 속여 리소스 오버레이가 설치되면 오버레이에 정의된 플래그 값을 읽어서 숨겨진 사악한 기능이 활성화되는 앱. 구글 검수를 퍽이나 통과할 수 있겠죠?
  • 앱 기능 망치기: 특정 상수값을 고쳐서 앱 동작을 방해한 뒤, 기밀 정보를 빼돌리기. 참 쉽겠죠?

삼성 기기의 경우 S9/노트9 빼고는 설치 제한이 걸린 것으로 보입니다. 만, 플레이스토어에 파이 OS용 리소스 오버레이 기반 테마 제작 앱이 있습니다. 대단합니다.
LG 기기는 사용자 테마를 만들고 그 안에 직접 만든 리소스 오버레이를 넣어둘 수 있습니다. 안 막히기를 바랍니다.

제작 절차

  • 수정하려는 앱 및 시스템 프레임워크 파일을 획득
  • 역컴파일 툴 (JADX 추천) 통해 코드 및 리소스 분석
  • 리소스 오버레이 프로젝트 폴더 준비: AndroidManifest.xml 파일, res 폴더
  • 수정할 리소스 만들어 넣기
  • aapt 툴 통해 프로젝트를 APK 파일로 생성, 서명 후 기기에 설치

국내 스마트폰은 플레이스토어, 제조사 스토어에서 원하는 폰트를 유·무료로 구입해서 쓸 수 있습니다.

아이폰에는 탈옥 않으면 절대 바랄 수 없고, 외산폰은 루트 권한 있어야 하는 것 같은데...

그런데 스토어에 없는 (수정도 허용되는 라이선스 또는 개인 소장) 폰트를 쓰고 싶으면.. 폰트 패키지를 직접 만들어 써야겠죠. 국내 두 제조사는 각기 다른 패키지 형식을 쓰는데요.

"플립폰트"를 쓰는 듯한 (아직 그대로죠?) 삼성폰은 방법이 여러가지 마련되어 있죠.
예를 들어 파이 OS 즈음부터 (S9/노트9 빼고) 사용자 폰트 추가가 차단된 듯 하나, 테마 무료체험 기능을 오용하는 꼼수가 마련되어 있습니다. https://tali.tistory.com/378
역시 사용자 많고 봐야 합니다. 저도 끼워주세요... 곧 아이폰11 나오니 기대하겠습니다.. 지금도 잘 팔리니 그런 일은 없을 것..
지금은 없는... 팬텍도 플립폰트였네요.

 

그럼 LG는...? "HY폰트"라는데 한양에서 만든 폰트 시스템인가봐요.
문제는 이 집은 해독하기 어려운 폰트 패키지 형식을 쓰는 바람에 사용자가 비공식 폰트 패키지를 만들기가 쉽지 않습니다. 조금 더 자세히는 패키지 내의 "/asset/font.dat" 바이너리 파일이 도대체 무슨 형식인지 알 수가 없습니다.

HY폰트 형식이 나온지가 매우 오래되었기 때문에 비공식 패키지 제작법이 나올만 한데, 저는 아직까지는 찾지 못했습니다. 미국, 아니면 베트남 커뮤니티에서 뚫어줄 만 한데, 굳이 고생할 유인이 없는 듯 합니다. 폰트 판매자 입장에서는 다행이지요.

 

방법이 완전히 없는 건 아니라고 합니다. 다른 폰트 패키지를 하나 받아서, 패키지 내의 폰트 파일을 원하는 폰트로 바꿔치기하는 방식이 있다고 하네요. "font.dat"를 수정하지 않겠다는 의도가 되겠습니다. 이미 수 년 된 방법입니다.

폰트 파일만 교체
폰트 수정 (FontCreator 사용) + 파일 교체

  1. 쓰지는 않을 폰트 패키지를 하나 다운로드하거나 구입하고, PC로 추출해 둡니다.
  2. 패키지를 반디집 같은 압축 프로그램으로 열어서, 폰트 이름, 폰트 파일 이름을 확인합니다.
  3. (필수 아님?) 사용하려는 폰트를 FontForge(무료!) 같은 프로그램으로 열어서 폰트 이름을 패키지의 것으로 바꿉니다.
  4. 사용하려는 폰트 파일 이름을 패키지의 폰트 파일 이름으로 바꾼 뒤, 패키지에 넣어줍시다.
  5. 패키지를 다시 서명한 후, 기기에 설치하고 적용합시다. 기기에서 폰트 이름은 패키지의 것으로 표시되겠습니다.

...뭔가 자괴감 드는 방법이죠.. 그냥 스토어에 있는 폰트 씁시다.

 

더버지표 11분 요약

총평

  • 오늘도 약장수 위엄 파노스 파나이

  • 새 "서피스 프로" 제품이 또다시 재탕이라 크게 실망했습니다. 벌써 4년째.

  • 신박한 제품들이 나오기는 했으나 실용성이 의심됩니다

    • 네오, 듀오: 만듦새 좋아보이지만, "응, 갤럭시 폴드.."
    • 프로 X: ARM 윈도, 이번에는? 전문 리뷰 사이트 평가를 보아야겠습니다
    • 서피스 이어버드: 원반...
  • AMD 가즈아!!!

  • 수리·교체 용이성 자랑에 빵끗

서피스 프로

  • 인텔 10세대 달고, USB-C 달고, 끝...
  • 화면 크기, 베젤, 서피스 커넥터 모두 그대로...

  • 물론 썬더볼트 없음. 자꾸 이럴거면 이름에서 "프로" 뺍시다.

프로 X 밀어주려고 MS가 올해도 서피스프로 사골을 고았습니다. 매우 실망입니다. 하드웨어 발표회에 오피스 펜 기능 자랑은 왠 말인가요.

다만 삼성 갤럭시 연동, 특히 통화 연동은 좋습니다. 타사 안드로이드 기기는 당분간 안 될 것 같지만 언젠간 되겠죠?

서피스 프로 X

 

오늘의 주인공

서피스 RT 말아먹은 이후, 오랜만에 돌아온 ARM 태블릿이네요. 자체퀄컴과 함께 설계했고, AI 연산 성능 좋다는 SQ1 칩셋을 탑재했다는데, 퀄컴 8cx 칩에서 무엇이 달라졌는지 전문 리뷰 사이트를 통해 만나봐야겠습니다. 높은 AI 연산 성능으로 무엇을 하려는 건지도요. TODO

ARM용 윈도는 x86 호환을 위해 BT(Binary Translation) 기술을 쓴다는데요, 잘은 모르지만 성능 저하가 있어왔고 이번 모델에서도 여전하리라 예상됩니다. 지난달에 스냅드래곤 8cx 칩셋이 MS오피스 (x86), MS 엣지 브라우저 성능 비교에서 인텔 i5-8250U를 근소한 차이지만 이겼다는 전문 리뷰 사이트 기사가 있었는데요. 여전히 x64 호환은 불가하고, SSE2 같은 명령 호환이 안 될 것이기 때문에 큰 기대가 안 됩니다. 과연 이번에는 다를까요? 오버헤드 적은 호환 기술이 적용되었을까요.

아이패드 프로 3세대 12.9와 같은 가격($999)인데, 펜, 키보드 모두 별매일테니 가격 메리트는 없는 것 같습니다. 딱 하나, RAM이 8GB에서 시작하는 건 장점일 수도 있겠습니다.

* 191105: 엔가젯 리뷰가 떴네요:

https://www.engadget.com/2019/11/05/microsoft-surface-pro-x-review-price-specs-availability-windows-arm-lte/

서피스 랩탑

지난 제품에서 알칸타라 천으로 키보드 부분을 싹 덮어놓은 결과 iFixit 수리용이성 소세지빵점을 받은 치욕을 엄중히 받아들였는지, 올해는 분해가 됩니다 (아래 사진 참조). 천 대신 금속으로 (서피스인데 플라스틱은 아니겠죠) 마감하니 더 예쁘네요. 서피스 패밀리에 기대하는 각진 고급스러움이 묻어납니다.

감성가격 생각하면 (상대적으로..) 값싸고 좋은 국내 LG 그램(흰둥이 감성), 삼성 노트북 펜(얘도 펜 됨) 라인이 좋긴 한데요. 디스플레이는 해상도, 3:2 비율로 서피스가 좋죠.

협력사 대표한테도 약파는 서피스 수장

https://www.youtube.com/watch?v=dmaioTs0NH8&t=724s

인텔 외길이었던 MS 서피스에도 AMD CPU가 달려나오는 날이 오네요. 발표회장에 AMD CEO 리사 수 박사도 와 있었대요. 15인치 모델에 (MS에서 커스텀 주문한) AMD 라이젠 APU가 들어간다고 합니다. 배터리 성능은 기대하지 않지만, 그래픽 성능이 외장 GPU 버금갈지가 기대됩니다. TODO

분해 가능, SSD 교환 가능 자랑

그동안 수리 용이성 따위는 엿바꿔먹었던 서피스 시리즈였으나, 이번에는 몇 가지 개선점을 자랑스레 보여주었습니다.

  • 랩탑 분해 가능

  • 프로 X 뒷면 우하단 뚜껑 열어서 SSD 교체 가능 (프로는 안 됨)

그런데 프로는?

서피스 네오 (2020년 출시 예정)

2010년대 초반에 컨셉만 유출되고 말던 '쿠리에' 프로토타입이 결국 제품화되었네요. 진짜 화면이 접히는 갤럭시 폴드가 팔리고 있는 시점이라, 중국 ZTE도 만들었던 듀얼 스크린 기기를 이제야 내놓는 건 너무 늦은 건 아닌가 싶지만.. 서피스 시리즈답게 기구 마감은 매우 좋아 보입니다. 경첩 디자인이 깔끔하네요.

ARM CPU를 안 쓰고 인텔 CPU를 썼네요. 아이패드 미니 크기라서, 이 제품이야말로 배터리 성능을 위해 ARM CPU를 써야 할 것 같은데 의외입니다. 듀얼스크린을 쓰기에 ARM CPU 성능이 부족해서 그랬다는 의견이 있더군요. 한 세대 전 CPU를 썼던 서피스 스튜디오 사례를 볼 때, 그냥 개발 기간이 길었기 때문에 그랬을 것 같습니다.
인텔에서 각 잡고 만든 물건이 들어가네요 ㄷㄷ "Foveros" 기술을 통해 빅/리틀 CPU, GPU 코어를 칩 하나에 때려박고, 그 위에 DRAM까지 쌓았대요. 칩 하나에 CPU, (GPU,) 메모리 죄다 때려박은 제품이랍니다. [기글하드웨어의 관련 글](https://gigglehd.com/gg/hard/3996041)
인텔 칩은 올해 연말에 출시된다는데요, 서피스 네오 나오기 전에 다른데서 제품이 나올텐데 과연 ARM의 저전력 명성을 압도할 수 있을지 기대가 됩니다.

프로토타입 기기 구동 모습을 보여주었는데요, 화면 회전 굼뜨고, 키보드 붙일 때 화면 전환 굼뜨고.. 갈 길이 멀어보입니다. 윈도 팀 이제는 제발 일하십시오.

배터리 성능 별로, 윈도+태블릿 여전히 별로, 가격 끔찍할 것이 예상되지만..

펜 되는 고급 다이어리! 가격 착하다면 하나 갖고 싶네요.

서피스 듀오 (2020년 출시 예정)

소문만 무성하던 서피스 폰이 놀랍게도 나왔네요. 더 놀랍게도 안드로이드 OS.

비슷한 컨셉의 ZTE Axon M, LG V50이 생각나지만, 각 잡고 만들어서 훨씬 쓰기 좋아보여요. 물론 펜도 되고요. MS에서 안드로이드용 앱 열심히 만드시더니, 다 계획이 있었네요.

그러나 화면 닫은 채로 통화 불가한 모양새. 바깥에는 카메라가 없는 것 같고요. 따라서 화면 접고 펴다 지문 많이 묻을 것 같아요.

서피스 이어버드

저 디자인을 누가 소화할 수 있을까요.

 

 

 

참고: Enable Windows 10 Fluent Design Acrylic Effects in VirtualBox

Windows 10 1903 (19년 5월 업데이트) 즈음부터 'Fluent Design', 특히 아크릴 느낌 배경 효과가 본격 적용되고 있습니다.

그러나 PC 성능이 부족하다던지 하면 알아서 효과가 해제되는데요, 설정 앱에서 "투명 효과"를 아무리 껐다켰다 해도 소용이 없습니다.

위 링크를 보시면 가상PC인 경우 안 되는 모양이고요, 저 같은 경우에는 사용중인 PC가 저성능 PC로 인식이 되었습니다.

이 경우 위의 링크를 참조해서 레지스트리 편집 하나 해 주면 고급 꾸밈 효과를 강제로 동작시킬 수 있다고 합니다.

  • 레지스트리 편집기를 열고
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Dwm까지 찾아 들어가서
  • 새 32-bit DWORD 값을 만들고, 이름은 ForceEffectMode로, 값은 2로 지어주세요. (왜 2일까...)
  • PC를 재부팅하면 끝!

한편, 창이 비활성화될 때 아크릴 효과가 꺼지고 단색 배경으로 대체되는 건 원래 그렇게 설계된 거랍니다. 안 쓰는 창에도 아크릴 배경을 그리는 불필요한 연산을 줄이기 위해서래요. 고성능 PC에서는 다 돌려도 괜찮은데 말이죠.

레딧에 항상 아크릴 배경을 그리게 만든 분이 계시네요. 링크

High-level Synthesis

아키텍처 레벨에서(SystemC 같은 프로그래밍 언어 사용), 바로 RTL 레벨 로직을 만들어내는(합성해내는) 기법입니다. ...그냥 위키백과 찾아보세요.

Verilog/VHDL 같은 하드웨어 프로그래밍 언어를 직접 사용해서 행동 레벨, RTL 레벨 디자인을 하려면 관련 지식이 좀 많이 필요하죠. 그 대신 C/C++/SystemC 같은 보다 상위 레벨 언어로 하드웨어 동작을 지시할 수 있다면, 꼭 하드웨어 엔지니어가 아니라 소프트웨어 개발자도 구현하려는 연산을 해당 연산에 최적화된 하드웨어로 만들어낼 수 있겠습니다. 물론 약간의 지식이 필요하죠. 🤔

경쟁 상대

  • Xilinx Vivado HLS
    • Xilinx사 FPGA 전용입니다...
  • Mentor Catapult
    • 나름 제일 잘 나가는 듯. 하→지↗만→♬, (저에게) 없↘죠→↗♬.
  • Synopsys Synplify
    • 알못이지만 아무튼 못 들어봤습니다.

왜 써봤냐면

Cadence에서 학교에 Stratus 등 몇 가지 툴 라이선스를 무상 제공한다더군요. 홍보 목적인가봐요. 그래서...

설치

  • 공식 지원 환경은 레드햇 계열 RHEL, SuSE이지만, Ubuntu 18.04에 설치했습니다.

    • 툴 돌아가는 동안 계속 미지원 환경이라고는 하지만, 동작은 합니다.
  • 필요한 필수 패키지들 미리 깔아두시고 (build-essential, csh, ksh, ...)

  • Cadence 자체 설치 도구(InstallScape) 및 온라인 계정이 있으면 그냥 거기서 받아다 설치하면 되나,

  • 계정 발급이 아직 안 되었기 때문에 다른 경로로 설치 프로그램을 다운받았습니다.

  • tar 압축파일이니, 압축 해제해주고: $ tar xf <filename>
  • InstallScape GUI 띄워서 설치해도 되고, 다음 배치 명령어를 써도 됩니다: $ sudo <path_installscape>/bin/iscape.sh -batch majorAction=InstallFromArchive archiveDirectory=<path_installer> install_directory=<path_destination>

  • 다음으로 환경변수 설정이 필요합니다

    • LM_LICENSE_FILE 변수에 라이선스 서버 주소를 덧붙입니다.
    • PATH에 툴이 설치된 위치를 덧붙입니다: <path_destination>/tools.lnx86/bin
    • 그리고, HOST 변수를 만들고 호스트명을 값으로 설정했습니다: export HOST=$(hostname)
      • 레드햇을 잘 모르겠지만, 툴 돌아갈 때 HOST 변수 값이 없다면서 오류를 일으키더군요. 그래서...
  • RTL 시뮬레이션을 위해 Cadence Xcelium 또는 Synopsys VCS 등이 설치되어 있어야 합니다. 그건 잘 하시리라 믿습니다.

실행

  • 명령줄 툴도 있는 것 같지만, stratus_ide 하면 실행됩니다.
    • Qt4로 만들어서 보기가 좋네요.
    • 도움말이 충실해 보이지만, 읽지는 않았습니다.
    • 툴 내에 튜토리얼이 충실히 갖춰져 있으나, 코드에 대소문자 오류 있는 예제가 하나 있었고 만든 뒤로 관리를 그리 열심히 하지는 않은 것 같은 느낌적인 느낌이 듭니다. 뒤로 갈수록 점점 만들기 귀찮음이 눈에 보이는 듯 했습니다.

의견

  • Xilinx 툴은 Xilinx사 FPGA 전용이고, Mentor 툴은 수중에 없으니... 쓸 수 있는 건 요것 뿐인데
  • 일단 당장 어디다 쓸 지 모르겠네요. 이 글 보는 분 없으시겠지만, 쓸 데가 있길 빌어주십시오. 감사합니다.

(깔아만 놨던..) 텐서플로우 2 알파에 이어 며칠 전에 베타가 나왔다길래 드디어 한 번 써 봅니다.

뭐 의미있는 건 아니지만... 제 맘대로 썼으니 틀린 것 많을 겁니다. 어차피 보실 분 없으니 틀리면 추후 고치는 걸로.

눈에 띄는 달라진 점

(공식 문서 경로가 영구링크가 아니네...)

"이펙티브 텐서플로 2.0" --- (어디서 많이 본 제목...)
1.0에서 2.0으로 이사하기
2.0으로 변환 스크립트

아래는 "이펙티브 텐서플로 2.0" 문서에 있는 것 중 눈에 띄는 것 적어본 것입니다.

  • 그래프 차리고 이것저것 차린 다음에 세션 열고 돌리는 방식에서

    • 적절히 만든 (=데코레이터 씌운) 파이썬 함수를 호출하면 알아서 지지고 볶아준다고 합니다.
      • 각 모델 구현을 파이썬 함수로 감싸고 텐서플로 함수라고 데코레이터 씌운 뒤 (`@tf.function`) 그냥 호출하면 알아서 돌려준답니다.
      • Eager(?) 기능이 메인이 되었네요.
      • 모든 함수를 텐서플로 함수로 감쌀 필요는 없고, 최상위 작업만 (inference, train 같은 거) 감싸주면 된다고 봤습니다.
    • v1 스타일대로 세션 열고 돌리려면 tf.compat.v1 네임스페이스로 이사간 'Session' 함수를 쓰라네요.
  • 전역 네임스페이스가 없어졌대요. 이제 정의한 변수를 잘 갖고 있어야 된답니다.

    • tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES) 같은 거 이제 안 되나봅니다. 어쩌지...
    • 대신 Keras에 model, layer 단위에서 정의했던 변수를 모아두는 기능이 있다네요. variables, trainable_variables 속성이 있대요.
  • 로그 수집 방법이 살짝 좋아진 것 같네요. tf.metrics를 쓰면 평균 같은 것 쉽게 수집할 수 있는 듯 합니다.

    • 예전에 저는 잘 몰라서 직접 파이썬 변수에 loss 값 같은 거 모은 뒤, batch 개수로 나눠서 평균 표시했었는데...
  • v2 기능이 정 싫다면 v1 모드로 돌릴수도 있지만, v2로 코드 변환 스크립트 및 v1 호환성 모듈을 준비했으니 어서어서 갈아타주시라네요. 과연 몇 년 걸릴지...

설치

기존 v1 설치된 환경에서 (Ubuntu 18.04, Nvidia 10x0 시리즈 GPU, 드라이버 410, CUDA 10, libcudnn v7) 그냥 아나콘다 새 환경 파고 pip 패키지 설치로 깔았습니다.

$ conda create -n tf_2 python=3.6
$ conda activate tf_2
$ conda install <필요 패키지>

$ pip install tensorflow-gpu==2.0.0-beta

그러나 돌려보니 libcudnn 오류 ㄷㄷㄷ

다른 블로그 글 찾아보고 GPU 드라이버 버전을 430으로 올려도 봤지만, 그냥 libcudnn 최신 버전으로 업그레이드하니 잘 동작하게 되었습니다.

일부 환경에서 per_process_gpu_memory_fraction 또는 allow_growth를 켜 줘야 GPU 연산이 정상 동작한다는 이야기가 있네요.

Session이 없어졌으니... GPU 설정은 어디서 하지?

  • GPU 2개 이상인 경우 원하는 GPU만 쓰도록 설정하거나
  • TF가 GPU 메모리를 모두 할당하지 않게 하기 위해
    • 여러 사용자가, 또는 여러 프로세스가 GPU 함께 쓰는 경우를 고려해야겠죠

v1에서는 tf.Session(config=<blahblah>)했었죠. v2에는 tf.Session이 없네요..

대신, 깃헙 이슈를 보니 tf.config.experimental에 있는 함수를 쓰라는군요.

참고: tf.config 코드

아래 예시는 모든 GPU에 대해 allow_mem_growth 설정을 먹인 뒤, 두 번째 GPU(와 CPU)만 쓰도록 하는 코드 조각입니다:

# set GPU devices not to allocate all memories
gpu_devs = tf.config.experimental.list_physical_devices('GPU')
[tf.config.experimental.set_memory_growth(i, enable=True) for i in gpu_devs]

# find CPU device
cpu_devs = tf.config.experimental.list_physical_devices('CPU')

# explicitly set devices to be used
tf.config.experimental.set_visible_devices([*cpu_devs, gpu_devs[1]])

가상 디바이스를 만들 수도 있나 보던데, 아직 _메모리 상한선을 명시_해야 작동해서 안 쓰기로 했습니다.

좋은 친구 MNIST, LeNet 돌려보기

2.0 시작하기

위 문서를 보면 MNIST 돌려보는 예시가 있습니다. 내 주피터 노트북에 위 문서의 코드 복붙하고 돌려보면 당연히 잘 돌아갑니다.

코드를 둘러보면,

  • 데이터 준비가 간편해보이네요
  • 모델 클래스... Keras 쓰기 싫으면 어떻게 할 지 모르겠네요
  • loss function, optimizer도 keras 걸 갖다 쓰네요.
  • tf.GradientTape이라는 게 새로 생긴 것 같습니다
  • placeholder 그만 쓰는 것 아주 좋은데, dimension 점검이 쉽지 않을 것 같아요

소감

  • 이제 세션 같은 거 만들 필요 없이, 함수 호출만 하면 알아서 돌아가니 좋긴 하네요
    • 코드를 보다 깔끔하게, 파이썬스럽게 쓸 수 있겠습니다
    • 저수준 제어가 어려워졌을까요. 그건 차차 알아보기로
  • 데이터 로더 좋아졌다고는 하는데... v1 때 개선되었다던 데이터 로더 전혀 이해 못했는데... v2 것도 제가 쓸 정도로 쉬울 것 같지는 않습니다
  • 기존의 컴파일(?)되면 고정되는 그래프에서, 파이토치 것 같은 다이나믹 그래프로 갈아탄 것 같은데요, 실험하기 좋을 것 같습니다
    • 진짜 그런지는... 그것도 차차 알아보기로
  • Keras 안 쓰는 경우의 예시를 한 번 찾아봐야겠습니다

굳이 지금 갈아타야할까 하면... v1으로 하던 실험이나 잘 하는 걸로 합시다 😢😢

'리뷰' 카테고리의 다른 글

TensorFlow 2 (베타) 입문  (0) 2019.06.12
2019년 감상 영화 소고  (0) 2019.03.19
2018년 감상 영화 소고  (0) 2019.03.19
2016년 감상 영화 소고  (0) 2017.10.16
2017년 감상 영화 소고  (0) 2017.10.16
책 '소수의견'을 읽고  (0) 2017.05.15

+ Recent posts