기본 콘텐츠로 건너뛰기

한국에서 구글페이와 가민페이를 사용해보았습니다

대한민국에서는 비주류인, 구글 픽셀 휴대폰을 들고 생활한다는 건 다소 불편한 일입니다. 사서 고생할 정도로요. 구글 픽셀 1세대가 나온지도 벌써 10년이 지났지만, 국내에 정식 발매가 된 적은 한 번도 없습니다. 또한 국내에서 픽셀로 통신을 하려면, VoLTE 패치를 불가피하게 해야 하는 상황에 부딪힙니다. 감사하게도 국내 구글 픽셀 커뮤니티에서는 꾸준히 해결책이 발굴되고, 또 공유되고 있습니다. 예전부터 저는 픽셀 폰으로 물건을 현장 결제하고 싶은 로망이 있었습니다. 삼성 갤럭시 폰 패밀리 입장에서는 케이크 한 조각 먹는 수준의 난도죠. [**삼성월렛**](https://play.google.com/store/apps/details?id=com.samsung.android.spay&hl=ko)(前 삼성페이)라는 막강하고 편리한 앱이 있으니까요. 굳이 쉬운 길 놔두고 힘든 길을 가고 싶은건 왜일까요? 답은 '성공하면 기분이 짜릿할 것 같아서' 입니다. 2023년, 대한민국에 애플페이가 정식 도입된 이래로 NFC 방식의 [EMV Contactless](https://www.emvco.com/emv-technologies/emv-contactless-chip/) 결제가 보편화되고 있습니다. 물론 컨택리스 결제를 지원하는 카드 단말기에 한해서만 사용이 가능하지만요. 그 와중에 제 눈을 반짝이게 하는 정보를 발견했습니다. 위키피디아에 의하면, 애플페이와 구글페이는 동일한 컨택리스 결제를 사용한다고 합니다. > Apple Pay on iPhones and Google Pay on Android mobile phones are common forms of contactless payments used. https://en.wikipedia.org/wiki/Contactless_payment 이런 애플페이의 수혜(?)에 힘입어, 문득 구글페이와 가민페이의 사용 경험을 하고 싶어졌습니다. 조사를 해보니, 구글페이는 국내용 카드의 등...

서피스듀오 리뷰

![](https://raw.githubusercontent.com/jubin-park/blog.jubinpark.com/refs/heads/main/post/2026/05/13/assets/surface_duo1.png) # 서피스듀오 리뷰 어느 날 폴더블폰 아이쇼핑을 하다가 서피스 듀오라는, 듀얼 스크린 폰의 존재를 발견했다. [서피스 듀오1 (OG)](https://support.microsoft.com/ko-kr/surface/models/surface-duo-1st-gen-features-and-specs)는 2019년 10월에 마이크로소프트에서 출시한 제품인데, 이제는 연식이 꽤 지난 제품이다. 원래는 픽셀 폴드를 구하려고 했었다. 하지만 폴더폰 액정이 고장나는 사례들을 보고 나니까, 선뜻 사고 싶지 않아졌다. 그리고 언젠가는 접고 펼치다가 액정이 고장날 것이라는 의견이 다분했다. 그래서 애초에 물리적으로 두 액정으로 분리된 서피스 듀오를 선택했다. 현재 국내에서는 서피스듀오를 중고로 구하기 어려워 나름 희소성이 있는 듯 하다. ## 범퍼케이스 중고거래 했을 때 모서리에 붙이는 범퍼케이스가 일부 부러진 상태여서, 본드로 이어 붙여도 소용이 없었다. 계속 부러진다. 그래서 케이스 없이 사용하고 있다. 제일 큰 문제는, 케이스를 끼운 채 기기을 접으면 화면이 꺼지지 않는다는 단점이 있다. ## duo-de 프로젝트 서피스 듀오를 중고로 구한 후 가장 먼저 했던 일은, [duo-de](https://github.com/Archfx/duo-de)라는 커스텀 롬을 올리는 것이었다. 순정 롬의 최신 버전이 Android 12L이며, 2023년 9월 10일 마지막 업데이트였다. 그래서 커스텀 롬으로 AOS 16 버전으로 올리면 조금 더 쾌적한 환경에서 사용할 수 있지 않을까 하는 기대가 있었다. 그리고 실제 경험했을 때 그 기대는 산산조각이 났다. https://github.com/Archfx/duo-de/releases/tag/v2025....

COMP2300 어셈블리 프로그래밍: 포큐 아카데미 재수강 후기

# COMP2300 어셈블리 프로그래밍: 포큐 아카데미 재수강 후기 ![](https://raw.githubusercontent.com/jubin-park/blog.jubinpark.com/refs/heads/main/post/2026/04/25/assets//COMP2300.png) 포큐 아카데미 COMP2300 어셈블리 프로그래밍 과목을 2023년 9월에 FAILED를 받았으며, 이후 2026년 1월 학기에 재도전하고 작성하는 후기글입니다. 정보 습득에 도움이 되시길 바랍니다. ### 저수준 프로그래밍, 수준 낮은 프로그래밍? 저수준이라는 단어만 놓고 볼 때면, 문득 '하찮은 수준인가?' 같은 생각을 하곤 했습니다. 영어로 번역한 단어인 'low-level'을 봐도 저레벨, 쪼렙 같은 단어들이 생각이 납니다. 반대로 고수준(high-level)이라고 하면, 고급적이고 세련된 느낌이 듭니다. 위 단어들은 일상적이 아닌, 기술적인 용어로 보는 게 올바릅니다. --- (원문) - **High-level** describe those operations that are more **abstract** and general in nature; wherein the overall goals and systemic features are typically more concerned with the wider, macro system as a whole. - **Low-level** describes more specific individual components of a systematic operation, focusing on **the details of rudimentary micro functions** rather than macro, complex processes. Low-level classification is typically more concerned with individual components wit...

버블슈터 jsf 스프라이트 뷰어 제작

내가 초등학교 저학년 쯤 즐겨했던 온라인 게임 버블슈터. 이 게임의 추억에 잠겨, 약 4~5일간 초집중해서 버블슈터의 jsf 스프라이트 이미지를 분석하여 출력하는 작은 프로젝트를 진행했다. #pragma pack ( push , 1 ) struct JSFFileHeader {   int8_t Version [ 32 ];   int8_t Description [ 18 ];   int8_t FileName [ 200 ];   uint32_t InfoCount ; }; #pragma pack ( pop ) #pragma pack ( push , 1 ) struct JSFInfoHeader {   uint32_t Unknown11 ;   uint32_t Unknown12 ;   uint32_t Unknown13 ;   uint32_t Unknown14 ;   uint16_t Unknown15 ;   uint32_t Unknown16 ;   uint32_t Unknown17 ;   uint32_t WordCount ;   uint16_t Width ;   uint16_t Height ; }; #pragma pack ( pop ) JSF 파일의 헤더를 완전 분석하진 못했지만, 필요한 정보들은 모두 충족했기 때문에 추출하는 데는 문제가 없었다. [과정 간략 설명] 1. DXWnd 프로그램으로 클라이언트를 창모드로 실행 2. 치트엔진 실행, 메모리 스캔 및 어셈블리 레벨 디버깅 3. HxD 프로그램 실행 시 클라이언트가 종료되므로, 대신 ImHex 프로그램을 이용하여 jsf 파일 바이너리를 분석 4. C++ 헤더 작성 및 jsf를 읽어서 단일의 스프라이트 파일로 변환 5. Gosu + ruby를 사용하여 변환된 파일을 읽어들인 후, RGB565 -> RGB888 색상 변환하고 한 픽셀씩 점을 찍음  ...

Ruby TCP Socket 생성 및 논블록 send/recv

ruby 클라이언트 소켓 생성 및 connect require 'socket' tcp_socket = Socket . new ( Socket :: AF_INET , Socket :: SOCK_STREAM , 0 ) tcp_socket. setsockopt ( Socket :: IPPROTO_TCP , Socket :: TCP_NODELAY , true ) sockaddr_server = Socket . sockaddr_in ( 9000 , "127.0.0.1" ) begin     tcp_socket. connect (sockaddr_server) end 윈도우 mkxp-z 3.1.3 버전에서  Socket#connect_nonblock  을 쓰려고 시도했으나, 지원하지 않는 메서드라고 에러를 띄웠다. 이러면 connect 시에는 블록되는 상황을 마주할 수밖에 없다. 매우 아쉬운 부분이다.  ruby 논블록 send begin     tcp_socket. write_nonblock ( "안녕 client #{ $ count } " ) rescue IO :: WaitReadable => e # the socket is marked as nonblocking and the connection cannot be completed immediately     print ( "WaitReadable" ) end 1. plain (15 bytes) tcp_socket. write_nonblock ( "안녕 client #{ $ count } " ) 0000   98 83 89 7b 5f 29 34 7d f6 a0 02 d0 08 00 45 00   ...{_)4}......E. 0010   00 37 aa a3 40 00 80 06 18 5d c0 a8 db 01 c0 a8   .7..@....]...... ...