728x90
728x90
- [ 프로그래밍/42 Gyeongsan ]push_swap - swap_push는 그다지 자연스럽지 않아서2025-09-21 17:33:28들어가며Push_Swap 과제를 성공적으로 해결하기 위한 첫걸음은 문제의 본질을 정확히 이해하는 것이다. 이 과제는 단순히 두 개의 스택을 이용해 데이터를 정렬하는 문제를 넘어, 제한된 명령어 집합으로 원형 리스트를 효율적으로 재배열하는 고유한 제약 조건을 가진 알고리즘 퍼즐이다. 핵심 과제 및 제약 조건이 프로젝트의 공식 문서에 따르면, 목표는 명확하다: 주어진 정수들을 가장 적은 수의 명령어로 정렬하는 것이다[^1]. 이를 위해 반드시 준수해야 할 핵심 규칙과 제약 조건은 다음과 같다. 기본 구조: a와 b라는 두 개의 스택이 주어진다. 프로그램 시작 시, 모든 정수는 스택 a에 위치하며 스택 b는 비어 있다[^1].오류 처리: 입력값에 중복이 있거나, 정수가 아닌 인자가 포함되거나, 정수 범위를 초..
- [ 프로그래밍/42 Gyeongsan ]Born2beRoot2025-08-05 18:53:21들어가며이번에 다룰 과제는 Born2beroot 과제이다. 나는 시간이 없어 아쉽게도 Debian으로 과제를 수행했지만, 과제 정리만큼은 Rocky Linux의 핵심 개념을 정리해보고자 한다. Born2beroot 과제를 수행하기 위해 Rocky Linux를 사용하는 경우 필요한 주요 사전 지식은 다음과 같다.LVM(Logical Volume Manager): 디스크 파티셔닝과 유연한 스토리지 관리 기법UFW(Uncomplicated Firewall): 방화벽 설정 및 네트워크 보안SSH 보안 설정: 원격 접속 보안 강화 및 설정 방법Sudo와 사용자 관리: 권한 관리 및 보안 설정SELinux: 시스템 보안 정책 및 적용 방법Hostname 및 네트워크 설정: 서버의 네트워크 환경 구성기본적인 서비스 ..
- [ 프로그래밍/Unity Engine ]Unity의 비동기 프로그래밍: 코루틴, 스레드, 그리고 최신 대안들2025-07-30 02:56:57들어가며얼마 전, 모 회사에서 "Unity Engine의 코루틴과 스레드의 차이점이 무엇인가?"에 대한 질문을 받았고, 제대로 대답하지 못하여 부끄러웠던 경험이 있었다. 때문에, 이 글을 바탕으로 이 둘의 공통점과 차이점 그리고 최신 대안들까지에 대한 것들을 정리해보고자 한다. Unity Engine은 비동기 프로그래밍을 위한 여러 접근 방식을 제공하며, 각각은 고유한 기술적 구현과 성능 특성을 가진다. 코루틴은 협력적 멀티태스킹을 사용하여 메인 스레드에서 실행되는 반면[^1], 스레드는 진정한 병렬성을 제공하지만 Unity API에 접근할 수 없다[^2]. 최신 Job System과 Burst 컴파일러는 두 방식의 장점을 결합하여 기존 접근법보다 10배에서 100배의 성능 향상을 달성하는 안전한 멀티스..
- [ 프로그래밍/42 Gyeongsan ]ft_printf - ft_putnbr()과 ft_putstr()만으로는 충분하지 않기 때문에2025-07-20 19:28:56들어가며printf는 C 표준 라이브러리의 대표적인 출력 함수로, 서식 문자열(format string)을 해석하여 가변 인자들을 형식화된 텍스트로 변환하고 표준 출력(stdout)에 출력한다. 이 글에서는 printf 함수의 작동 원리와 주요 기능, 가변 인자 처리 기법(stdarg.h 활용), 출력 버퍼링과 성능 최적화, 구현 시 직면할 수 있는 문제점과 그 해결 방법을 알아본다. 또한 표준 printf와 이를 재구현하는 과제인 ft_printf의 차이점을 분석하고, 간단한 구현 예제 코드를 통해 내부 동작을 설명한다. 이를 위해 C 표준 문서[^1], GNU libc 문서[^2], 권위 있는 서적[^3] 등 신뢰할 만한 자료를 인용하여 정확한 정보를 제공한다. printf 함수 개요 및 작동 원리p..
- [ 프로그래밍 ]리눅스 한 학기 살기 - 13주차 (完)2025-06-02 01:18:45들어가며 드디어 "리눅스 한 학기 살기" 시리즈를 마무리했다. 졸업을 앞둔 마지막 학기, 매주 하나씩 새로운 리눅스 프로그램을 탐구하며 보낸 12주는 내게 있어 단순한 과제를 넘어선 진정한 성장의 시간이었다. 이 글을 통해 그동안의 여정을 되돌아보고, 리눅스와 함께하며 배우고 느낀 점들을 정리해보고자 한다. 처음 이 프로젝트를 시작할 때만 해도, 솔직히 말해서 막막했다. 3학점만 들어도 졸업이 가능했음에도 불구하고 18학점을 꽉 채운 것도 모자라, 매주 2페이지 이상의 심도 있는 보고서를 작성하겠다는 다소 무모한 도전을 감행했다. 게임 개발에만 집중하던 내가 백엔드 수업 4개를 한꺼번에 듣는 것도 버거운데, 추가로 리눅스 프로그램을 하나씩 파헤치는 일정을 잡은 것이다. 하지만 지금 돌이켜보니, 그 선택이..
- [ 프로그래밍 ]리눅스 한 학기 살기 - 12주차2025-06-02 00:35:44들어가며이번 주차에서 다룰 프로그램은 네트워크 맵퍼(Network Mapper)라는 이름의 Nmap은 네트워크 환경의 호스트와 서비스를 검색하고 보안 점검을 수행하는 무료 오픈 소스 스캐너이다[1]. 원 저작자인 Gordon "Fyodor" Lyon이 1997년 처음 발표한 이래로 지속적으로 발전해 왔으며, 현재는 리눅스를 비롯한 다양한 운영체제에서 사용할 수 있는 범용 도구로 자리잡았다. Nmap은 IP 패킷을 활용하여 대상 시스템의 열린 포트, 실행 중인 서비스 버전, 운영체제 정보를 파악함으로써 네트워크의 "지도"를 작성하는 데 도움을 준다[2]. 이러한 기능을 통해 네트워크 인벤토리 작성, 서비스 업그레이드 일정 관리, 서버 가동 모니터링 등 시스템 및 네트워크 관리 업무에도 유용하게 활용된다[1..
- [ 프로그래밍 ]Unity(C#)와 Unreal(C++) 중심의 옵저버 패턴 (Observer Pattern)2025-06-01 17:16:08들어가며 이번 학기 오픈소스SW개발방법및도구 강의에서 마지막으로 디자인 패턴을 조사하는 과제가 주어졌다. 싱글톤 패턴을 정리할까 하다, 싱글톤은 눈 감고도 코드를 작성하는 수준이라 아직 눈 뜨고 코드를 작성해야 하는 옵저버 패턴과 조금 더 친숙해보고자 이를 조사했다. 목적, 동작 방식, UML, 그리고 코드 순서로 문서를 기술한다. Goal (목적)옵저버 패턴은 한 객체의 상태 변화를 자동으로 여러 다른 객체들에게 알리는 디자인 패턴이다. 이를 통해 한 객체(주체, Subject)의 변화가 다수의 객체(옵저버, Observer)로 일대다로 전파되어 각 객체가 알아서 대응할 수 있다. 이 패턴의 주요 목적은 객체 사이의 결합도를 낮추고 이벤트 기반의 효율적인 상호 작용을 구현하는 데 있다. 옵저버 패턴이 ..
- [ 프로그래밍 ]리눅스 한 학기 살기 - 11주차2025-05-30 21:01:25들어가며이번 주차에서 다룰 프로그램은 htop이다. 자세한 내용은 아래에 소개하겠지만, htop는 Windows로 치면 작업 관리자의 역할을 수행한다고 이해하면 될 것 같다. 라즈베리파이를 서버용 기기로 구매했으니, 꼼꼼한 모니터링은 당연지사. 여러 개의 프로그램이 존재했으나, 그 중에 하나인 htop을 깊게 파고 들었다. htop 명령어 개요와 목적 (top 명령어와의 차이)htop은 리눅스/유닉스 계열 OS에서 시스템의 프로세스와 자원 사용량을 실시간으로 모니터링하는 대화형 터미널 프로그램이다. 기본적으로 모든 리눅스 배포판에 포함된 전통적인 명령어 top의 기능을 현대적으로 개선한 대안 도구로서, 컬러풀한 UI와 강화된 사용자 인터페이스를 제공한다[^1]. top이 단순 텍스트 기반 출력으로 상위 ..
728x90
728x90