본문으로 바로가기

파일의 IT 블로그

2022/11

해당되는 글 13
  • thumbnail
    카테고리 없음

    [C] 쓰레드 스케줄러 과제 구현 80%?

    Segmentation Fault 의 오류는 제가 직접 구현한 이중 연결 리스트 (Queue로 묶여있는) 의 버그였습니다. 아무리봐도 제 코드엔 문제가 없는데 무언가 예외가 있어서 프로그램이 계속 터지고 있었던 거 같습니다. 결론적으로 이제 Segementation Fault 오류는 안뜨고, 과제 테스트 케이스는 전부 통과하는데 좀 짜증나는건 스케줄링이 가끔 꼬여서 순서가 바뀐다던가, 아주 가끔 제대로 동작하지 않는 문제가 있습니다. 위는 Best Case로 제대로 동작했을때 모습이네요. 근데 이제 구토가 나와서.. 메모리 참조 오류 안나고 통과 시킨거에 만족할렵니다 ㅎㅎ.. 앞으로 이렇게 깊게 C언어 프로그래밍 할 일이 얼마나 있나 싶겠지만 GDB 다루는 실력도 부족하고 CMake 나 Make 사용법을..
  • thumbnail
    프로그래밍/Talk

    [C/C++] 연결리스트 구현은 되도록 라이브러리(인터넷)를 사용합시다

    혹시 본인이 과제로 연결 리스트를 구현할일이 생겼다? 그러면 본인이 정말 머리가 잘돌아가는 유능한 프로그래머가 아니라면.. 되도록 인터넷이나 라이브러리를 참고해서 구현하는것을 추천드립니다. (사실 참고하라곤 했는데 복붙하고 유사도 검사 피하기 위해 변수 이름 정도만 바꾸는게 편합니다.) 아니 직접 구현하는게 자기 실력느는데 무슨 소리냐? 네 이것도 맞습니다.. 당연히 자기가 직접 구현해봐야 실력이 늘지요 ㅎㅎ; 근데 단일 연결리스트는 직접 구현한다고 쳐도, 이중 연결 리스트는 정말 제대로 생각했는데도 C/C++ 동적할당 & 포인터 특성상 NULL 포인터를 참조한다던가, 잠정적으로 어디선가 문제가 터져서 공포의 Segmentation Fault(메모리 참조 오류) 를 만날 가능성이 높습니다. 그러므로 되도..
  • thumbnail
    프로그래밍/Talk

    [C] 쓰레드 스케줄러 과제 구현 90% -> 50%...

    pthread 계열의 Thread 함수를 직접 구현하고, 스케줄러까지 구현해서 쓰레드를 Round Robin 형태로 스케줄링 실행하는 과제를 진행하고 있습니다. 저번에는 비슷하게 시스템 콜로 Tree를 구현했었는데 이번건 진짜 말도 안되게 어렵네요. 머리가 아파집니다. 분명 다 제대로 구현했다고 생각했는데 thread_join() 구현하는 부분에서 계속 프로그램이 터지네요 ;; 과제하라고 테스트 케이스를 던져줬는데 계속 내용도 바뀌고 출력이 어떻게 나와야 한다는 것도 없으니 제대로 진행하고 있는지도 모르겠고 짜증만 납니다 ㅡㅡ. C로 연결리스트도 만들고, 컨텍스트 스위칭도 구현해보고, clone() 으로 쓰레드도 생성해보고 사실 초반에 잘 돌아갈때까진 나름 즐거웠는데 join 에서 막히니 시간은 계속 뺏..
  • thumbnail
    정보/게임

    [Fallout4] 폴아웃 4 NPC 적대 풀기 명령어

    폴아웃 4 퀘스트 진행중 다이아몬드 시티에서 경비병을 보고 몸이 반사적으로 공격키를 눌렀습니다.. 당연히 경비병이라길레 기본 적대인줄 알았더니.. 다이아몬드 시티 NPC들 학살은 쉬웠으나 문제는 여기서 메인 스토리를 진행해야하는 NPC들은 무적이라 계속 적대인 상태로 저를 죽이러온다는 겁니다. 스토리 진행이 막혀버렸죠.. 스카이림 리버우드에서 실수로 공격키를 눌렀더니 주민 전체가 저를 죽이러오는 당황스러운 상황이 역시 폴아웃 4에서도 일어났습니다. 사실 이전 세이브로 돌리는게 제일 쉬운 방법인데, 저는 세이브를 덮어쓰기해서.. 적대가 걸린 NPC를 명령어로 풀어주시면 됩니다. ` 키를 (키보드 맨 왼쪽위에 있음) 콘솔을 열고, 적대를 풀 NPC를 클릭해서 잘 타겟팅 한다음에 아래 명령어를 입력해봅시다. ..
  • thumbnail
    CS/System

    [Unix] 시스템 소프트웨어 개요 / 시스템 프로그래밍이란 무엇인가? (OS, System Call)

    * 본 글은 학부생의 입장에서 공부 내용을 정리하기 위해 작성되었습니다. 틀린 내용이 있으면 피드백 부탁드리며, 무분별한 비방 작성시 차단 될 수 있음을 알려드립니다. 안녕하세요 파일입니다. 이번에 UNIX 시스템 프로그래밍에 대해서 학습하게 됐는데 기억을 잊지 않고자 관련 내용을 정리하고자 합니다. 만약에 UNIX 기반 운영체제나, Linux 등을 잘 모른다면 해당 포스팅을 먼저 선행 학습하시고 해당 글을 읽는걸 추천드립니다. 기본적으로 전공자를 대상으로하며, 컴퓨팅 시스템의 대략적인 이해를 가지고 읽는걸 권장합니다. 우선 시스템 프로그래밍 (소프트웨어) 에 관한 내용을 알아보기 앞서 필요한 간단한 사전지식을 획득하고 넘어가 보겠습니다. 우리는 기본적으로 컴퓨터를 사용 시 HW를 직접 이용하진 않습니다..
  • thumbnail
    프로젝트/아두이노

    [Arduino] 아두이노 레오나르도 절대 좌표 이동 구현 (영상 포함)

    아두이노 레오나르도를 이용한 절대 좌표 이동 테스트 입니다. 기본적으로 레오나르도에서 제공하는 Mouse.move() 함수의 경우 옮길 수 있는 양이 한번에 127 스탭만큼 옮길 수 있는 제한도 있고 기본적으로 절대 좌표가 아니라 현재 마우스 위치에서 x , y 좌표 만큼 +/- 옮길 수 밖에 없습니다. 아두이노를 이용해서 절대 좌표 이동을 구현하고 싶으면, 기본적으로 MouseTo 같은 라이브러리를 이용하거나, 현재 마우스 좌표 위치와 원하는 좌표 위치를 같이 보내서 처리하면 됩니다. 저는 2번째 방법인 현재 마우스 좌표 위치는 PC쪽에서 pyautogui로 계산해서 보내고, 원하는 좌표를 레오나르도에 시리얼 통신으로 제공하면 레오나르도에서 알아서 계산해서 그 좌표로 이동하는, 절대 좌표 기능을 구현했..
  • thumbnail
    프로그래밍/C++

    [Arduino/C++] 시리얼 모니터 데이터 공백구분으로 입력받기, 명령어 처리

    // 생성자의 여러번 호출을 막기 위해 전역 변수로 String 변수 2개를 호출한다. String input; String args; void setup() { Serial.begin(9600); } void loop() { //시리얼 데이터가 들어왔을때 (버퍼에 내용이 채워졌을때) 작업 if(Serial.available() > 0) { input = Serial.readStringUntil('\n'); //엔터까지 입력받기 Serial.println("INPUT : " + input); for(int i = 0; i < input.length(); i++ ) { char c = input[i]; //공백이 아닌경우만 문자열에 결합시킨다. (담아준다.) if(c != ' ') { args.concat..
  • thumbnail
    프로그래밍/C++

    [C++] 연산자 오버로딩 (Operator Overloading)

    * 본 글을 읽기 전에 미리 구조체와 C++의 Class 개념에 대해 미리 알고 학습을 하는 것을 권장드립니다. 일반적으로 C언어에서 사용하는 +, -, ==, [] 와 같은 기본 연산자들은 모두 C언어에서 기본적으로 정의 되어 있는 데이터 타입 (int, double, char 등) 에서만 사용 가능한 연산이였기에, 사용자가 정의해서 만든 타입인 구조체로 만든 구조체 변수의 경우 이러한 연산자를 적용할 수 없었습니다. #include struct point{ int x; int y; }; int main(){ struct point pos1 = {10,20}; struct point pos2 = {20,40}; if(pos1 == pos2){ //오류 발생 printf("same"); } return ..
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.