시작은 미미하나 끝은 쥬쥬하리라.

분류 전체보기 105

[Window System Programming] Chapter 11. 프로세스 vs 스레드 / 커널 레벨 vs 유저 레벨 스레드 / 커널 모드 vs 유저 모드

3-11 프로세스 vs 스레드 커널 레벨 vs 유저 레벨 스레드 커널 모드 vs 유저 모드 프로세스 vs 스레드 ex) 1인용 테트리스 프로그램 -> 하나의 프로세스 사용 ex) 2인용 테트리스 프로그램 -> 하나의 부모 프로세스에 두 자식 프로세스를 생성해서 구현 -> 만약 프로세스를 상속하면 부모와 자식 프로세스는 모두 데이터/힙/스택/코드 세그먼트가 존재 -> 스케쥴러는 커널 오브젝트 관리와 컨텍스트 스위칭이 부담될 수 있음 일반적으로 코드의 흐름을 2개의 분기로 가져가기 위해서는 함수 호출을 위한 스택이 필요 -> 스택의 논리적 분할이 가능하다면 프로세스를 2개 생성하지 않아도 되지 않을까 ? : 스레드 -> 스레드는 부모 프로세스와 데이터/힙/코드 영역은 공유, 스택만 논리적으로 분할하여 사용 ..

[Window System Programming] Chapter 10. 절차적 함수 호출

3-1 절차적 함수 호출 스택 프레임 / 프레임 포인터 프로그램 카운터 스택 프레임 / 프레임 포인터 스택 프레임 함수 호출 과정에서 할당되는 메모리 블록 -> 함수 호출이 마무리된 이후에는 해당 함수의 지역 변수에 접근 불가 -> 메모리 블록이 함수 호출이 끝나면서 반환되었기 때문 -> main()이 fct1을, fct1은 fct2를 호출하는 구조 -> fct2의 지역변수 e와 h는 fct2 호출이 완료되면 반환되어 사라지는 스택 프레임에 해당 스택이라는 이름이 부여된 이유는 메모리의 구조적인 특성 때문 -> 가장 먼저 할당되면 가장 나중에 반환, 가장 나중에 반환되면 가장 먼저 반환되는 특성 : Stack sp 스택 포인터 기본적으로 스택이 데이터를 쌓거나 반환하기 위해서는 어느 위치까지 데이터를 저..

[Window System Programming] Chapter 09. 스케쥴링 알고리즘과 우선순위

2-9 스케쥴링 알고리즘과 우선순위 프로세스 스케쥴러 스케쥴링 알고리즘 프로세스 스케쥴러의 동작 시점 프로세스 스케쥴러 스케쥴러 일반 OS와 리얼타임 OS를 결정짓는 역할 -> 스케줄러의 동작 방식에 따라 일반 OS가 되기도, 리얼타임 OS가 되기도 함 리얼타임 OS : 실시간으로 동작을 처리하며 응답성이 좋은 OS -> A라는 프로그램을 리얼타임 OS와 일반 OS가 동시에 실행한 경우, 리얼타임 OS가 더 빠르게 처리 -> 최종적으로 동작 처리를 마무리하고 실행하는 것은 CPU 성능에 의존적(리얼타임 OS가 무조건적으로 빠르진 않음) 타임 슬라이스 프로세스는 클럭을 기준으로 동작하고, 이 클럭이 모여서 타임 슬라이스를 형성 -> 프로세스에게 할당된 러닝 시간의 기준을 의미 ex) 타임 슬라이스가 3클럭..

[QT] Qt4 - 기본 웹 브라우저로 설정한 URL 열기

기본 웹 브라우저로 설정한 URL 열기 코드 startDetached() 코드 미리 정의한 URL을 기본 브라우저로 오픈하는 코드를 구현해보겠습니다. URL을 미리 정의하고 기본 브라우저에서의 오픈은 startDetached() 함수로 구현하였습니다. int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString Url = "https://naver.com/"; QProcess::startDetached("cmd /c start " + Url); return a.exec(); } 해당 로직은 main 함수에서 구현하였기 때문에 프로젝트를 실행하면 그 즉시 naver.com 도메인으로 연결됩니다. startDetached() start..

Programming/QT 2024.01.18

[QT] Qt4 - 단축키로 파일 오픈하기

단축키로 파일 오픈하기 단축키 구현 결과 단축키 구현 Qt4에서 단축키 관련 메서드를 이용하여 특정 문서를 오픈할 수 있는 방법은 많습니다. 저는 오늘 그 중에서 두 가지 방법을 보여드리려 합니다. 첫 번째 방법은 단축키를 누르면 문서 파일이 직접적으로 오픈되는 방법입니다. 두 번째 방법은 단축키 클릭 시, 파일 브라우저를 오픈하는 방법입니다. 아래는 코드입니다. #include #include #include #include #include #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setup..

Programming/QT 2024.01.18

[QT] Qt4 - List 데이터에서 특정 단어의 빈도수 산출하기

Qt4 데이터에서 특정 단어 빈도수 산출하기 코드 구현 결과 코드 구현 데이터를 QStringList 형식이라 가정하고 진행해보겠습니다. 저는 미리 QStringList 형식의 데이터를 선언했습니다. 저는 이 List가 가진 데이터 중 title이라는 key값의 value에 해당하는 데이터만을 1차적으로 추출하고 이들을 대상으로 빈도수를 산출하겠습니다. #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 데이터 List. QStringList qList; qList

Programming/QT 2024.01.18

[QT GUI] Qt4 - GUI와 QGraphics 클래스로 막대 그래프 그리기

Qt4 GUI와 QGraphics 클래스로 막대 그래프 그리기 간단한 막대 그래프 구현 그래프 개수 / 높이 / 이름 할당, 수정된 코드 간단한 막대 그래프 구현, 수정된 코드 QT 프레임워크에서 제공하는 QGraphicsScene, QGraphicsRectItem 등을 활용해서 간단한 막대 그래프를 구현하는 예제를 진행해보도록 하겠습니다. QT Widget 어플리케이션 프로젝트에서 기본적으로 생성되는 MainWindow 클래스에 구현하도록 하겠습니다. Form에는 QT 위젯인 graphicsView 오브젝트를 하나 생성해놓았습니다. // 막대 그래프를 표시할 graphicsView 오브젝트에 연결. scene = new QGraphicsScene(this); ui->graphicsView->setSce..

Programming/QT GUI 2024.01.18

[QT] Qt4 - QStringList & for문 활용해서 json데이터 값 추출하기

Qt4 QStringList 활용해서 json 데이터 값 추출하기 데이터 추출 코드 결과 데이터 추출 코드 Qt4에서 json 데이터 중에서 원하는 값을 추출하는 코드를 작성해보겠습니다. 특정 API 등을 통해서 이미 데이터를 파싱해서 가져왔다고 가정하겠습니다. 아래는 예시 코드입니다. #include #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // JSON 데이터를 가상의 예시로 초기화 QString jsonData = "{ \"lastBuildDate\":\"Thu, 18 Jan 2024 09:28:30 +0900\", \"total\":137675, \"start\":1, \..

Programming/QT 2024.01.18

[개발자 상식] json과 XML 뭐가 다를까 ?

json과 XML json XML 요약 기본적으로 json과 XML 모두 데이터의 교환을 위한 형식으로 사용됩니다. 현재도 두 형식은 활발히 사용되고 있고 많은 사랑을 받지만 주요한 차이점과 장단점들이 존재합니다. XML은 오랜 기간 사용된 데이터 형식으로 아직도 많은 시스템에서 사용하고 있으며, json은 그 장점으로 최근 들어서 점점 XML을 대체해 가고 있는 데이터 형식입니다. json 개요 텍스트 기반 데이터 교환 형식 key value의 쌍으로 이루어진 객체 또는 배열로 표현 각 key와 value는 문자열, 숫자, bool 타입, 배열, 객체 등 다양한 데이터 타입을 가질 수 있음 일반적으로 Web에서 Client Server 간 데이터 교환에 사용 목적 JavaScript에서 데이터를 쉽게 ..

CS/Dev Ack 2024.01.16

[QT] Qt4 - Naver 검색 API 사용해서 데이터 파싱하기

Qt4 Naver 검색 API 사용해서 데이터 파싱하기 오픈 API 요청 코드 작성 데이터 파싱 결과 오픈 API 요청 코드 작성 네이버 오픈 API에서 제공하는 검색 API를 이용해서 블로그 데이터를 크롤링하는 코드를 작성해보겠습니다. 앞서서 네이버 오픈 API 사용을 위한 애플리케이션 등록은 선행되었다고 가정하고 진행하겠습니다. [API] 네이버 오픈 API 사용하는 방법 네이버 오픈 API 사용하는 방법 1. 네이버 오픈 API 사이트 접속 2. 사용할 네이버 오픈 API 결정 3. 애플리케이션 등록 4. 애플리케이션 정보 확인 5. 신청한 서비스 API 요청 및 응답 예시 확인 1. 네이 tiptapcoding.tistory.com 네이버 오픈 API에 데이터의 요청부터 QT에 데이터의 파싱까지 ..

Programming/QT 2024.01.16