computer engineering 19

WSL2 - windows 위의 wsl2, 그 위의 VSCode 개발환경 구동

VSCode의 Remote - WSL 확장 (Remote - WSL Extension)VSCode가 제일 많이 쓰이지만 요즘은 커서 쓰시는 분들도 꽤 늘어나는걸로 보입니다. 커서 AI가 싸다면 싸다고 할 수 있는 요금제이지만 무료라는 장점은 동서고금을 막론하고 강력한 회유책이죠. 또한 WSL2 위에서 VSCode를 돌리는 저같은 사람은 IDE를 바꾸면 세팅을 다시 해야하는 귀찮음 때문에 그냥 쓰던거 쓰고 있기는 합니다. 그것과는 별개로 커서 AI 써보니까 좋긴 하더군요...그냥 WSL2 위에서 VSCode 디버깅 환경 세팅하다가 문뜩 관련 내용 블로그로 남겨봅니다.WSL (Windows Subsystem for Linux): Windows 10/11에서 리눅스를 네이티브처럼 실행할 수 있게 해주는 가상화..

WSL2 - Windows에서 linux를 돌리는 가장 효율적인 방법

WSL이란?WSL(Windows Subsystem for Linux)는 Windows에서 리눅스 환경을 실행할 수 있게 하는 하위 시스템특히 WSL2는 리눅스 커널을 직접 포함하며, WSL1과 구조적으로 완전히 다름🔰 WSL 개요WSL1 (2016~): Windows의 NT 커널 위에서 리눅스 시스템 콜을 호환 계층(LXSS)으로 번역해 실행WSL2 (2020~): 리눅스 커널을 포함한 경량 VM을 실행하여 실제 리눅스 환경을 구동→ WSL1: 시스템 콜 에뮬레이션→ WSL2: 실제 가상 머신⚙️ WSL2 vs WSL1 아키텍처 비교항목WSL1WSL2커널NT 커널 기반 (리눅스 API를 NT에서 처리)리눅스 커널 자체를 Hyper-V VM으로 실행실행 방식시스템 콜을 Windows에서 번역 처리Hype..

File - 파일이 뭔데? File이란? 파일의 본질에 관한 고찰

"파일이 뭔데?""파일이라는 게 뭔지 설명해보세요."이 질문을 받으면 많은 사람들은 당황한다. 우리는 매일같이 파일을 다룬다. 사진을 올리고, 문서를 저장하고, 영화를 다운로드받고, 코드를 작성하면서도 수없이 많은 파일을 생성하고 삭제한다. 그런데 ‘파일이란 정확히 무엇인가요?’ 라는 질문 앞에서 막상 입이 떨어지지 않는다.‘그냥 저장된 데이터?’‘문서 같은 거?’‘이름 붙은 무언가?’익숙하지만 설명하기 어려운 이 개념은, 사실 현대 컴퓨터 구조의 핵심이며, 우리가 디지털 세계에서 정보를 다루는 모든 방식의 기초이기도 하다. 이 글에서는 우리가 너무 당연하게 생각했던 파일의 본질과 실체에 대해서 알아봅시다.파일의 본질: 0과 1의 모음집컴퓨터에서 파일이란 무엇일까요? 간단히 말하면, 파일은 컴퓨터 저장장..

객체지향(OOP)의 오버헤드에 관한 고찰

클래스 기반 OOP의 오버헤드 클래스 정의 자체의 메모리 오버헤드 - 클래스가 정의되면 메타정보(vtable, type info 등)가 메모리에 로딩됨 - 사용하지 않아도 런타임 시 로딩 및 관리됨 단일 인스턴스를 위해서도 클래스 정의 필요 - 1회성 객체라도 클래스 정의가 필수 - 명시적 설계 구조를 강제하지만 유연성은 떨어짐 상속 체계로 인한 비용 - 다형성, 가상 함수, 동적 바인딩 등은 런타임 비용을 수반 - vtable 조회는 실행 성능에 영향 가능 복잡한 설계 패턴 강제 - SRP, SOLID 등으로 구조가 깊어짐 - 단순 기능도 여러 객체와 계층 구조 필요 함수형 프로그래밍(예: JavaScript의 ..

Javascript - 클로저(Closure)란? OOP와의 비교 및 고찰

클로저 (Closure)자신이 정의될 때의 스코프를 기억하는 함수외부 함수가 종료되어도 해당 스코프 변수에 접근 가능function outer() { let count = 0; return function inner() { count++; console.log(count); };}const counter = outer();counter(); // 1counter(); // 2inner는 outer의 count 변수에 접근 가능이 현상이 클로저클로저 특징종료된 함수의 변수도 참조 중이면 GC 대상 아님은닉화 가능 (private 변수처럼 사용)상태 유지 가능 (카운터, 메모이제이션 등)활용 예시function createUser(name) { return { sayName: func..

Rust - 러스트 기본

Rust 개요Rust는 C/C++처럼 컴파일된 언어.기계어(어셈블리어)로 변환되어 실행됨.Rust의 컴파일 과정컴파일러는 rustc.LLVM 기반으로 동작함. Rust 소스코드 (.rs) ↓ rustc LLVM 중간 표현 (LLVM IR) ↓ 최적화 어셈블리 코드 (.asm) ↓ 어셈블러 + 링커 실행 파일 (Machine Code)LLVM은 다양한 CPU 아키텍처 지원.x86, ARM 등으로 변환 가능.결국 Rust도 CPU별 어셈블리어로 실행됨.Rust와 하드웨어 상호작용1. OS와 상호작용표준 라이브러리(std) 사용.OS API(System Call) 호출함.파일, 네트워크 등 하드웨어 기능 제어 가능.2. no_std 환경운영체제 없이 실행 가능.Bare-metal, 임베디드, OS..

LLM - 언어모델 개선을 위한 접근 방법론 이모저모

LLM 개선을 위한 6가지 핵심 전략1. 데이터 품질 및 다양성 확보 고품질 데이터 확보 - 노이즈 적고 다양성 있는 정제된 데이터 사용 데이터 증강(Data Augmentation) - 문장 구조 변형, 동의어 치환 등으로 다양성 강화 도메인별 특화 데이터 수집 - 의료, 법률 등 특정 도메인에 특화된 데이터 추가 확보 노이즈 제거 및 정제 - 오타, 문법 오류, 불필요한 텍스트 제거 2. 모델 아키텍처 및 구조 개선 최신 아키텍처 활용 - GPT-4, PaLM 등 최신 구조 채택 또는 하이브리드 설계 하이퍼파라미터 최적화 - 학습률, 배치 크기, 드롭아웃 등 튜닝 스파스 모델 도입 - 계산 비용을 줄이면서 ..

Python - 비동기 프로그래밍 실전 적용

Python 비동기 라이브러리 asyncio: 표준 비동기 이벤트 루프. async/await 기반 aiohttp: 비동기 HTTP 요청 처리. requests 비동기 버전 aiofiles: 비동기 파일 I/O. open() 대신 aiofiles.open() aiomultiprocess: asyncio + multiprocessing. CPU 바운드용 trio / curio: asyncio 대체. 현대적 구조(nursery) httpx.AsyncClient: aiohttp 대체 가능. requests 스타일 + async크롤링 Task 구조 요약 콘텐츠 단위로 유저 데이터 수집 작품별 회차 수 다름 (예: 1~100화 vs 1~57화) 회차별 데이터 수량 다름 (예: 1화=1000개, 2..

Python - 비동기 프로그래밍(asynchronous programming) 원리 및 주요 개념

동시성과 병렬성: Python에서의 성능 향상 접근법1. 접근 방법 개요 asyncio: 코루틴 기반 비동기 프로그래밍 (I/O 바운드, 싱글 코어) threading: 멀티스레드 기반 동시성 (GIL로 인해 병렬 아님) multiprocessing: 다중 프로세스 기반 병렬 처리 (CPU 바운드 적합)2. async / await 키워드 사용 조건 async def 함수는 coroutine 객체를 반환 await는 오직 awaitable 객체만 가능 (coroutine, Task, Future, __await__ 구현 객체)async def fetch_data(): return "data"async def main(): result = await fetch_data() # fetc..

OS - 가상화(Virtualization), 네트워크 격리(Isolation)

가상화(Virtualization)와 보안 격리 실습 환경 정리 1. 가상화의 종류 에뮬레이터: 완전히 다른 아키텍처도 모방 가능 (속도 느림) 소프트웨어 가상화: 호스트 자원을 에뮬레이션하여 VM 실행 (예: VirtualBox) 하이퍼바이저 가상화: 드라이버 없이 직접 디바이스에 접근 (성능↑) OS 레벨 가상화: 커널 공유 기반, 빠르지만 격리 수준 낮음 (예: WSL2) 2. Hypervisor의 분류 Type 1 (Bare-metal): 하드웨어 위 직접 설치 (예: Hyper-V, ESXi) Type 2 (Hosted): 기존 OS 위에 설치 (예: VirtualBox, VMware Workstation) 3. 구조별 가상화 예시 ✅ VirtualBox / VMware Workstati..