소피아, 2019년부터의 회고
개요저는 지금 슬럼프에 와있는 상황입니다. 여러가지 핑계를 대며 스르로의 발전을 회피하고 게으른 삶만 반복하고 있죠. 특히, 소피아는 계속해서 업데이트가 필요하고 만들어야 될 기능이 많습니다. “해야하는 의무감”과 “하기 싫은 것” 사이에서 스트레스가 상당하게 되며, 자주 우울해지고 회의감에 들 때가 많습니다. 이 글은 제가 소피아를 처음 만들기 시작했었던 일, 감정 현재까지의 행보를 짧은 일기형식으로 작성한 글입니다. 2019년1월초반아는 지인 왈. “내 친구가 이곳에서 방송중이니 잠깐만 들어와서 사람 수를 채워줄 수 있느냐.” 란 말을 들었다. 나는 매우 할 것이 없었고, 앱을 설치할 것 없이 컴퓨터로 들어갈 수 있기에 접속했다. 회원가입 또한 로그인 된 구글과 연동하면 3초만에 끝났다. 간단한 절차에 흡족했다. 방송에선 후원이 있어야지! 간단하게 만원정도 후원을 해보았다. 별 뜻은 없었다. 내가 궁금해서 준 후원에 사람들은 큰손이라며 호들갑을 떨었다. 고작 만원에…? ...


성인사이트 우회 요청 해보기
해당 글은 velog에 작성했던 글을 옮긴 것입니다. 무려 관심을 105개나 받으면서 월간 트렌딩에 올라갔던 글이지만, 불편하신 분들의 민원에 제목을 수정하였음에도 블라인드 처리된 비운의 글입니다. 이곳은 저밖에 없기 때문에 다시 수정하기 전 제목으로 옮깁니다. 개요 만약 글의 제목을 보고 흥미가 돋아 들어오셨다면, 당신은 어엿한 신사(또는 숙녀)입니다. 사실 이 행동은 2020년에 이루어졌으며, 그 때 어딘가에다가 글을 썼지만 잃어버려 이곳 벨로그에 쓰기 적당한 주제기에 새로 다시쓰기로 하였습니다. 오늘의 목표는 www.(그)hub.com 에 요청을 보내고 응답받은 내용을 파싱하는 것 까지 해보겠습니다. SNI 스니핑2019년 그 시절 우리는 정부로부터 HTTPS 패킷을 감청한다는 비극적인 소식을 들었습니다. 하지만 저는 신사답게 어떠한 시련이 저를 덮치더라도 이겨낸 뒤에 행복의 시간, 승리의 기쁨을 느껴야 합니다. SNI 스니핑 방법을 이용해서 유해사이트를 판단, 차단 ...


코드푸시로 완벽한 일렉트론 버전 관리
개요 제가 소피아를 개발하면서 핫픽스나 버전 업데이트를 하는 일이 많았습니다. 거의 배포 8개월동안 자동 업데이트에 대한 지원을 하지 않았고, 업데이트를 하려면 사용자가 직접 사이트에 접속해 최신버전을 다운받아야 하는 비효율적인 문제가 있었죠. 자동 업데이터 또한 아예 다른 프로세스로 동작하게끔 C# WPF로 개발했습니다. 왜냐하면 업데이트시 resource/app.asar과 프로그램.exe 본인을 업데이트 해야되는데, 다른 일렉트론 프로그램을 띄워버리면 똑같이 resource/app.asar을 차지하거나 다른 폴더가 필요하기 때문에 여러모로 비효율적이기 때문입니다. 그렇다고 대부분의 일렉트론 개발자가 다른 언어를 사용해서 사용자 친화적이게 업데이터를 만들 수 있을까요? 저는 잘 모르겠고, 불필요하다고 봅니다. 사실 electron-updater 모듈을 사용하는 자동 업데이트가 있긴 하지만 제가 소개하는 이 글은 이것보다 훨씬 간단하고 빠른 업데이트 방법입니다. 조건일렉트론의 가장 ...


[NodeJS] ZIP 파일 구조 및 관리 모듈 제작
개요시작은 분명 이용자가 거의 없는 게임의 데이터파일을 분석하는 일이었습니다. 어쩌다보니 얻게 된 파일 언패커와, 그 파일이 널리 보급되면서 생긴 핵들. 해당 문제를 수정하기 위해 대규모 패치가 이루어진 역사. ​ 사실 언패커는 컴파일된 프로그램이었고, 어떤 식으로 동작하는진 관심 없었습니다. 꽃이 지고 나서야 봄인 걸 알듯 패치되어 사용 못 하게 돼서야 파일 구조를 뜯어보기 시작했습니다. 데이터 파일게임은 대체 어떤 식으로 데이터를 로딩할까요? 배경음악, 효과음, 목소리 음성파일만 해도 벅찰텐데 이미지 및 모델링 파일도 로딩해야 하죠. ​ 또한 RPG의 경우, 장비마다 모델링 파일을 로딩해야 합니다. 그럼 모든 데이터 파일을 메모리에 로딩할까요? 위는 유명한 배틀그라운드 게임의 최소 사양입니다. 저장공간이 약 33GB이며, 실행파일 및 동적 링크 파일을 제외하더라도 대부분 게임 데이터파일임에 틀림 없습니다. ​ 그럼 30GB나 되는 용량을 메모리에다가 넣을 순 없죠. 때문에 필 ...


FRIDA 사용법
이 글은 제가 카카오톡 봇 커뮤니티에 작성했던 글을 그대로 복사한 것입니다. 개요안녕하세요. 그동안 카페 눈팅만 하다가 드디어 글을 쓰게 된 윤입니다. 카페 에디터가 스마트 에디터 3.0으로 바뀐 이후로 처음 쓰는 글이군요. ​ 먼저, 해당 글을 쓰게 된 배경부터 알아봅시다. 몇 분이 제 블로그를 보셨을진 모르겠지만, 저는 타 플랫폼에서 봇 시스템을 구축했습니다. WEB 버전이 존재했기 때문에 쉬웠습니다. 그러다가 하게 된 것이 모든 API의 호출이 가능한 모듈을 만들기 시작했고, 결국엔 APP 버전에서만 지원하는 동작들을 구현하기 위해 후킹을 다짐했습니다. ​ 분명 HTTPS 통신을 하는데, 일반적인 HTTPS 스니핑 도구는 패킷을 잡지 못 하더라고요. 왜 그런진 모르겠습니다. 어떻게든 비밀스러운 이 부분을 알고 싶었기 때문에 직접 소스를 보진 못 하겠고, 훔쳐보는 방식으로라도 주고받는 파라미터들을 보기 위해서, ​ 오늘 알아볼 것은 Frida(프리다) 입니다. 변태처럼 앱이 어 ...


SASS를 알아야 하는 이유
개요저는 사실 CSS와 담을 쌓고 지냅니다. 웹 디자인이 깔끔한 것을 사랑하지만 제가 감히 다루려고 시도하면 폭탄이 되어버리는 관계죠. 그런데 거기서 더 진화된 SASS를? 박물관에 계시는 그림의 떡입니다. 저는 박물관을 즐겨찾지도 않으며 그림의 떡은 먹을 수 없는 떡이듯이요. 이미 훌륭하신 오픈소스 기여자분들께서 만들어둔 정성을 무시할 수 없었던 저는 직접 CSS를 디자인하는 일이 없었습니다. ​ 근데 중요한 것은 이제 가르치는 입장이란 것입니다. 스승은 제자에게 답을 배울 수 있도록 길을 알려주는 존재이며 벽에 가로막혔을 때 넘을 수 있도록 조언을 주는 사람입니다. 제자가 배우고자 하는 것에 답을 해줄 수 없는 것은 스승으로서 가히 수치스럽다 할 수 있겠습니다. 성장하지 않는 스승은 성장하는 제자를 가르칠 자격이 없으니까요. 때문에 제자가 배우고자 하는 SASS를 스승으로써 아예 모르고 있을 순 없었습니다. SASS 란? Sass is the most mature, stabl ...


Rust 크로스 컴파일
개요시작은 매우 빠른 속도를 가지며 매일 하는 C언어를 대체할 언어를 찾는 것이었습니다. 러스트라는 언어의 존재를 알게 된 지 1년은 조금 넘었지만 그동안 딱히 무엇을 위해 다루어야 할지 흥미가 없어 건드리지 않은 언어. 회사프로젝트에 구겨넣기를 결심하고 크로스 컴파일을 시도했습니다. RUST 러스트의 장점은 조금만 검색해 보면 이것 저것 나옵니다. 하지만 제가 러스트를 하고자 했던 이유는 오로지 새로운 것에 대한 호기심입니다. 지금 하는 언어들도 제대로 못 하는 주제에 무슨 새로운 언어를 배우나 할 수 있겠지만 그게 무슨 상관입니까, 내가 재밌는 걸 하는 게 중요한 거지. Hello World!새로운 언어를 배우면서 가장 기초적인 Hello World!를 출력하는 걸 언제 마지막으로 했을까요? 적어도 년(Year) 단위가 넘었을 것입니다. 이번 기회에 새로운 마음가짐으로 간단한 출력하는 프로그램을 만들었습니다. 물론, 이곳에 적힌 것을 따라쳤을 뿐입니다. 123fn main() ...


Visual Studio 에서 libpng 사용하기
개요시작은 분명 예전에 만들어둔 게임 소스를 빌드했던 것일테죠. 5년전에 C언어로 만든 게임을 보니 추억이 새록새록 피어오르면서 욕심이 나기 시작합니다. 지금 만든다면 더 잘 만들 수 있는데 그래서 새로운 게임을 간단하게 구상해 봤습니다. 오목같이 간단한 보드게임은 게임의 구현보단 알고리즘의 공부가 아닐까 싶었고, 리듬게임이나 슈팅게임은 만들어 보았습니다. 물론 지금 만들면 더 잘 만들겠지만. 이전에 미로찾기도 만들어 봤습니다. ​ 결국, 도달한 것은 지금껏 실패만 했었던 2D 횡스크롤 게임입니다. 그냥 간단하게 만드는 것 보단 CUI라도 조금은 보는 게 즐거웠으면 하는 마음에 아스키 아트로 이루어진 애니메이션을 만들어보자! 그렇게 탄생한 것이 이것입니다. 구현 방법사실 위 애니메이션은 원본이 있습니다. itch.io 에서 무료 게임 에셋 중 하나를 다운받은 것입니다. https://rvros.itch.io/animated-pixel-hero 해당 이미지를 다운받을 경우, ...


C 언어 콘솔 색깔 출력 (RGB 적용)
개요키보드에 손을 올리고 문득 든 생각이 CUI 환경에서 역동적인 효과 애니메이션을 연출할 수 있으면 좋겠다고 생각했습니다. 아마 그 전에 봤었던 인디게임 소개 영상을 본 영향인 것 같습니다. 그러다가 색깔을 좀 더 다채롭게 할 수 없을까 찾아보다 생각외로 되게 별거 아니었던 것이었습니다. 이럴 수가. 리눅스랑 비슷하더군요. 사용 방법사용 방법은 헤더파일만 추가해 주면 됩니다. 해더파일의 내용도 별거 없습니다. 다음 세 가지의 함수를 집중적으로 보면 됩니다. ​ FG_COLOR(r, g, b) , BG_COLOR(r, g, b) , SET_COLOR(type, r, g, b) ​ FG_COLOR(r, g, b) 와 BG_COLOR(r, g, b) 두 함수는 rgb 값에 오로지 0~255의 숫자만 들어갈 수 있습니다. 변수는 받지 않습니다. 그리고 문자열로 반환됩니다. ​ 즉, 다음과 같이 사용할 수 있습니다. 123456789#include <stdio.h>#inclu ...


Grep에 자바스크립트 정규식 뿌리기
개요grep 명령어는 유닉스 사용자에게 있어서 뗄레야 뗄 수 없는 아주 훌륭한 유틸리티입니다. 어느 날, 명령어를 사용하다가 문득 든 생각입니다. 자바스크립트 정규식을 사용할 수 있다면 grep의 정규식을 외우지 않고 더 쉽게 검색할 수 있을텐데. 예. 물론 찾아보면 있을법한 프로그램입니다. 또한 이미 있는 grep이 더 안전하고 빠르고 좋겠죠. 하지만 얼마 걸리지 않을 것 같아 만들어 보았습니다. TypescriptJavascript의 상위 호환. 타입에 대한 정의가 가능한 타입스크립트에 한 번 도전해 보았습니다. 사용하는 방법이 틀린 것 같지만 어쨌든 동작합니다. 일단 동작한 것에서 만족하죠. 설치일단 Node JS 8.x 이상의 버전과 Git이 있어야 합니다. 123$ git clone https://github.com/raravel/ngrep.git$ cd ngrep$ npm install 위 명령어를 입력하면 설치는 끝났습니다. /usr/bin/ngerp 을 확인할 ...