전체 글 200

NowSay - 실시간 강의 질문 익명 Q&A 플랫폼을 만들다

https://nowsay.xyz/ NowSay — 실시간 강의 익명 질문 & 투표 플랫폼강의 중 실시간 익명 질문과 투표. QR코드로 즉시 참여. 결과를 PDF/JSON으로 내보내기.nowsay.xyz 로그인이 필요없는 실시간 강의 질문 익명 Q&A 플랫폼을 만들었다. 그동안 꽤나 오랜시간동안 강의를 듣기도, 하기도 하며 느꼈던 건질문하기 정말 불편하다.였다. 특히 한국에서는 손을 들고 내가 주목받으며 수많은 사람들 앞에서질문을 한다는 건 단순히 몇가지 이유만으로 설명하기 힘든 어려움이 있다. 내가 강의를 들을때도 그랬고, 그렇기 때문에 내가 강의를 할때도 청중들에게 질문을 강요하기가 미안했다. 그래서 만들었다.실시간으로 질문을 올리고 이걸 확인할 수 있는 서비스다. 얘랑 똑같은 서비스가 사실 sli..

일기 2026.05.04

C++ Demangling (함수, 변수이름 심볼 인코딩 복원하기)

Demangling은 C++ 컴파일러가 함수나 변수 이름을 링크용 심볼로 인코딩한 것을 사람이 읽을 수 있는 원래 이름으로 복원하는 과정이다. C++은 함수 오버로딩, 네임스페이스, 클래스, 템플릿 같은 정보까지 심볼에 담아야 하므로, 예를 들어MyApp::Renderer::instance() 같은 이름이 바이너리에서는__ZN5MyApp8Renderer8instanceEv 처럼 mangling된다. 이 인코딩된 이름을 다시 원래 C++ 형태로 푸는 작업이 demangling이다.직접 해보면:echo "__ZZN5MyApp8Renderer8instanceEvE6object" | c++filt=> MyApp::Renderer::instance()::object 해석해보면:_ZN → namespace / c..

카테고리 없음 2026.04.10

MacOS(ARM, M1,M2..) 에서 UTM을 이용해 Ubuntu VM실행하기

1. UTM 설치QEMU 기반 VM을 GUI로 감싼 툴이라고 한다.무료이고 이게 압도적으로 편하다는 설이 많다.2. ubuntu server for arm iso 설치ubuntu server를 설치한 뒤 아래 명령어를 치면 ubuntu desktop처럼 사용할 수 있다 $ sudo apt update$ sudo apt install ubuntu-desktop$ sudo reboot 3. boot from next volume이후에 boot from next volume으로 접속하면 우분투 접속이 된다.

공부/이모저모 2026.03.19

Javascript의 객체와 prototype inheritance(프로토타입 기반 상속)

들어가며javascript 는 프로토타입 기반 객체지향 프로그래밍 언어이다.프로토타입이 뭘까? Prototype의 의미중복으로 사용되는 곳이 너무 많아 정리한다1. 일반 공학에서의 prototype : 최종 제품을 만들기 전에 만든 초기 시험 모델(시제품)2. C언어에서의 함수 prototype : 함수를 정의하기 전에 컴파일러에게 함수의 이름, 반환형, 매개변수 타입을 미리 알려주는 선언 3. javascript의 prototype : 객체가 다른 객체의 속성과 메서드를 상속받기 위해 연결하는 상위 객체 참조 이 글에서는 3번만 얘기할거니까 헷갈리지 말자표현을 정리하자면, 프로토타입 패턴이라는 것은 객체를 생성하는 방법을 다루는 디자인 패턴을 뜻한다. Javascript의 객체객체라 함은 메모리에 저장..

공부/JUN STUDY 2026.03.05

JavaScript Object Property Lookup이란 (자바 스크립트 객체가 property를 찾는 순서)

Javascript를 보면 위와 같은 충격적인 상황을 마주할 수 있다. 이것이 가능한 이유는 JavaScript는 모든 것이 객체이고 객체의 property를 찾을때 자바스크립트 엔진은 spec에 근거한 lookup 과정을 거치기 때문이다. 배열의 arr[index] 접근도 일반 객체의 property lookup과 같은 규칙을 따르기 때문이다. property lookup이라 함은 특정한 객체의 property를 찾는 과정을 의미하는데, 자바스크립트의 특정 객체 인스턴스의 property를 탐색하는 순서가 있다. 1. obj 자체에 property 있는지 확인2. 없으면 obj.[[Prototype]] 로 이동3. 거기서 property 찾기4. 계속 반복5. 끝까지 없으면 undefined이게 pr..

공부/JUN STUDY 2026.03.04

리눅스 권한 이제는 좀 이해하기 (Owner, Group, Other과 프로세스 권한 ruid, euid, suid 까지)

리눅스 권한을 이해할때 크게0. 권한은 파일(리눅스에서는 디렉터리도 파일이다)에 부여된다 1. 어떤 권한이 있는가 (rwx)2. 누구에게 그 권한이 있는가 (owner, group, other)개념을 이해하면 된다. 1번 rwx는 표현법만 익히면 되는거니 그냥 넘어가고owner, group, other 개념을 확실히 익혀보자. 바로 예제아래와 같이 파일들이 있다고 했을때 (ls -l로 확인가능하다)-r-------- 1 pwned pwned 69 flag-4a366de5f9250ee00973d579cd8a9e87-r-sr-x--- 1 pwned pwn 17552 flag_reader-2b6cfa9d53f87254b7c90bbd12d17ab6-rwxr-xr-x 1 root root 3..

공부/이모저모 2026.03.04

Type Casting과 Type Punning의 차이

Cast (형변환): "데이터의 의미를 유지하며 형태를 바꿈"Cast는 데이터를 다른 타입으로 바꾸되, 그 값(Value)의 의미가 유지되도록 비트를 재구성하는 과정동작: 컴퓨터가 CPU 연산을 통해 비트 패턴을 새로 만듬예시: 정수 1을 실수 1.0으로 캐스팅할 때.정수 1: 0x00000001실수 1.0: 0x3f800000 (IEEE 754 방식)=> 비트 패턴이 완전히 달라졌지만, 인간이 읽는 '값'은 여전히 1Punning (타입 퍼닝): "비트는 그대로 두고 해석만 바꿈"Punning은 메모리에 저장된 비트 패턴을 단 1비트도 건드리지 않고, 그것을 바라보는 타입만 바꿔서 읽는 기법동작: 추가적인 CPU 연산(번역) 없이, 메모리 주소에 있는 값을 그대로 가져와 다른 타입으로 우깁니다.예시: ..

VMware 에서 Ubuntu 디스크 용량 늘린 후에 적용하는법

Vmware나 Naver Cloud 등에서 Disk 크기를 조정한다Ubuntu Disk 용량 늘리기 -> Ubuntu 내부 Disk Setting 이용하면 가능!https://kysf.tistory.com/20 Ubuntu 디스크 용량 늘리는 방법STEP 1. VMware 설정에서 용량 확장1) 수정하고자 하는 machine의 설정 페이지에 들어간다."Edit virtual machine settings" 2) 현재 할당된 Hard Disk의 용량을 확인후, Expand 버튼을 클릭한다. 3) 늘리고자 하는 크kysf.tistory.com

공부/이모저모 2026.02.24

V8(d8) 빌드 및 gdb를 이용한 디버깅 방법

타겟 빌드V8 빌드 도구(depot_tools) 다운ninja나 관련된 모든 빌드 도구들이 depot_tools에 들어있다.git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATH=$PATH:$(pwd)/depot_toolsV8 소스코드 다운fetch v8cd v8# 특정 CVE가 수정되기 전의 특정 커밋으로 이동 (예: 2024년 3월 중순)git checkout 28877c5520gclient sync V8 빌드 (d8 쉘 생성)./tools/dev/gm.py x64.debug./tools/dev/gm.py x64.release V8 실행./out.gn/x64.release/d8 *.js# 혹은./out..

Configuration 2026.02.23