[VSC] 줄바꿈 문자 LF로 고정하는 법
·
학습 일지/Pintos
문제 상황Pintos 프로젝트 시작 팀원 두 명은 macOS, 두 명은 Windows 사용 Docker Desktop + Dev Container를 통해 우분투, 리눅스 환경을 구축하고 프로젝트를 진행하기 때문에 OS 차이로 인한 문제는 생기지 않을 줄 알았다! 그 러 나 Pintos 테스트를 돌리는데 나만 팀원들과 다른 결과가 나오는 개최악 상황 발생. Pintos가 그래도 구현은 되어있는 상태에서 최적화를 목표로 하는 프로젝트이기 때문에 간단한 테스트 케이스는 PASS가 나오는 것이 정상인데, 나는 모든 테스트 케이스가 FAIL 과 함께 Error 127이 떠 버렸다 원인원인은 바로 줄바꿈 문자 때문이었다!(macOS, Linux는 LF, Windows는 CRLF) 리눅스 컨테이너로 환경을 구축해둬도..
[Git] 프로젝트를 새로운 Git 레포지토리에 업로드 하기
·
학습 일지/Pintos
이미 레포를 하나 파서 작업 중이던 프로젝트를 새로운 레포를 만들어 프로젝트 폴더를 통째로 옮겨야 하는 상황이 발생. 깃 명령어 몇 줄로 바로 업로드가 가능하다!해결법1. 원래 작업하던 프로젝트 폴더로 들어가서 .git 폴더를 지운다 2. 새로 만든 깃 레포를 클론 3. Git bash -> 새로 만든 깃 레포 클론 폴더 경로로 이동 4. 아래 순서대로 입력git initgit remote add origin {새로 만든 레포 주소}git add .git commit -m "Clean start"git push -u origin main(= git push --set-upstream origin main)참고-u 명령어-> --set-upstream의 단축어 --set-upstream 명령어-> 현재 브..
[WIL] WEEK8
·
Krafton Jungle SW-AI Lab 12기/WIL(What I Learned)
그간 격조했습니다...😂WEEK8 목표팀 목표- 출근아침에 출근 찍고 단톡방에 보고하기! - 코어 타임 금, 월~수: 303호 코칭실, 19:00 ~ 20:00토: 2층 회의실, 21:00 ~ 23:00(+ 시간 부족하면 교육장이나 외부에서 추가 진행)금요일: 개념만토요일: 개념 + 코드 - 공부 방식/순서 각자 11.4 소켓 인터페이스부터 CS:APP 교재 or 강의 영상으로 공부금요일 코어 타임 전까지 11장 공부하고 각자 질문 만들기학습 키워드와 관련된 큰 개념의 질문 가능세부적인 질문도 가능 3. 각자의 질문 공유하고 합쳐보기AI를 통해 중복된 질문 통합 4. 통합한 질문은 깃에 md 파일로 올리기질문 바로 확인 및 깃 잔디 채우기 가능개인 AI 활용 원칙- 개념 학습에 최대한..
Windows11 Docker + DevContainer Ubuntu 환경 구축
·
학습 일지/C
Docker Desktop 설치 https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.www.docker.com 도커 공식 홈페이지에서 Windows 설치 파일 다운 설치 설치 확인 로그인 devcontainer 설정 추가(Dockerfile 사용 기준)프로젝트 루트에 .devcontainer ..
동적 메모리 할당
·
학습 일지/C
동적 메모리 할당의 개념프로그램 실행 중(Runtime)에 필요한 만큼의 메모리를 요청하여 할당받는 방식. 스택(Stack) 영역이 아닌 힙(Heap) 영역을 사용하며, 컴파일 타임에 크기가 결정되는 정적 할당과 달리 유연한 메모리 관리가 가능하다.언어별 동적 할당 방식C 언어가장 원시적인 형태의 메모리 제어를 제공한다.함수: malloc(), calloc(), realloc(), free()특징: 할당받은 메모리는 void* 타입을 반환하므로 형변환이 필요하며, 사용 후 반드시 free()를 통해 수동으로 해제해야 한다. 하지 않을 경우 메모리 누수(Memory Leak)가 발생한다.C++객체 지향에 최적화된 연산자를 제공한다.연산자: new, delete (배열은 new[], delete[])특징: ..
C Pointer(*, &)
·
학습 일지/C
C언어 포인터 개념 (*, &)포인터는 C언어의 핵심이자 메모리에 직접 접근할 수 있는 강력한 도구다. 게임 클라이언트 및 엔진 레벨에서는 성능 최적화와 메모리 관리를 위해 포인터의 이해가 필수적이다.1. 포인터의 기본 개념포인터는 메모리 주소를 저장하는 변수다. 일반적인 변수가 '값'을 저장한다면, 포인터 변수는 그 값이 위치한 '메모리 상의 주소'를 저장한다.주소 연산자 (&)변수 앞에 붙여 해당 변수의 시작 주소값을 추출한다.C++의 참조자(Reference)와 기호는 같으나 포인터 문맥에서는 주소 추출의 기능을 수행한다.역참조 연산자 (*)포인터 변수 앞에 붙여 해당 주소에 저장된 값에 접근한다."이 주소로 가서 데이터를 읽거나 써라"라는 의미다.2. 언어별 포인터와 메모리 접근C / C++직접 ..
[VSC] C 소스 코드 실행 파일 이름 변경
·
학습 일지/C
"${fileDirname}/${fileBasenameNoExtension}"VSC 환경에서 C 소스 코드를 빌드/디버깅 할 경우, C 소스 코드와 동일한 이름의 실행 파일이 생성된다 어차피 C 소스 코드를 빌드할 때마다 자동으로 생성되기 때문에 삭제해도 괜찮지만 용량 + 깃허브 백업 등의 문제로 우선 .gitignore를 통해 깃허브에 올라가지 않도록 하고 싶었다 .gitignore를 깔끔하게 작성하기 위해 모든 C 소스 코드의 실행 파일 이름을 main으로 통일하자! 1. tasks.json 파일 수정VSC -> Ctrl + Shift + P -> tasks.json 파일 열기 아래와 같이 json 파일 내용을 수정 { "version": "2.0.0", "tasks": [ {..
trigraph ??! ignored, use -trigraphs to enable [-Wtrigraphs] 해결
·
학습 일지/C
환경Visual Studio Code(VSC) + Docker + Ubuntu 발생 문제printf("%s??!", id);trigraph ??! ignored, use -trigraphs to enable [-Wtrigraphs]trigraph ??! ignored 오류 문구 + 빌드 불가능 발생 원인C언어 trigraph에 의해 경고 발생 -> VSC + Docker + Ubuntu 환경이라 GCC가 경고를 에러처럼 취급 -> 빌드 실패 trigraph(삼중자)컴파일러가 해당 문장 부호 문자로 대체하는 두 개의 연속된 물음표로 시작하는 세 문자의 시퀀스-> 특정 문장 부호 문자에 대한 편리한 그래픽 표현을 포함하지 않는 문자 집합이 사용되는 C 소스 파일에서 사용할 수 있다 C 소스 프로그램의 소..
[WIL] WEEK5
·
Krafton Jungle SW-AI Lab 12기/WIL(What I Learned)
한 마디 --WEEK5 목표팀 목표- 코어 타임매일 오후 9시 ~ 11시 코칭실basic 문제 랜덤 발표리트코드 30분 1 문제 풀이 - CSAPP 개념 정리 각자 진행화요일 퀴즈 풀이 이후 코어 타임 때 개념 공유개인 AI 활용 원칙- 알고리즘 문제 풀이(basic, 난이도 하 구간)1문제 당 1시간 이상 자력으로 풀이 진행 - 알고리즘 문제 풀이(난이도 중 구간 이상)1문제 당 2시간 이상 자력으로 풀이 진행 - 자력으로 풀이 진행하는 시간 이상으로 문제 풀이 진행에 어려움이 있을 때사용해야 하는 알고리즘/자료구조 등 힌트 요청에 AI 활용 - AI가 제공하는 힌트 관련 개념 학습 및 이해최대한 구글링 활용, 어려움이 있을 때만 AI 활용 - 오류 분석최대한 구글링 활용 - 문제 풀이 이후 자력으로..
[CS:APP] 1.3 컴파일 시스템이 어떻게 동작하는지 이해하는 것은 중요하다
·
학습 일지/Computer Systems(CS:APP)
컴파일 시스템이 어떻게 동작하는지 이해해야 하는 중요한 이유 1. 프로그램 성능 최적화최신 컴파일러들은 복잡한 도구로 우수한 코드를 생성-> C 프로그램 작성 시 올바른 판단을 하기 위해 기계어 수준 코드에 대한 기본적인 이해 및 컴파일러가 C 문장을 어떻게 기계어 코드로 번역하는지 이해 필요 ex)- switch문은 if-else문을 연속해서 사용하는 것보다 항상 효율적일까? - 함수 호출 시 발생하는 오버헤드는 얼마나 될까?* 함수 호출 오버헤드: 함수 호출 시 실제 로직 실행 외에 필요한 매개변수 전달, 반환 주소 저장, 스택 프레임 생성 등의 부가 작업에 소요되는 시간과 메모리 비용(작은 함수 반복 호출/재귀 함수 사용 시 심화) - while 루프는 for 루프보다 효율적일까? - 포인터 참조가..