전체 글 (189) 썸네일형 리스트형 [Threading] Main Thread와 Worker Thread의 Thread Context Switching 최근 신규기능 개발하다가 주 스레드에 있던 작업을 워커스레드로 옮기며 문제가 발생했다.문제의 핵심은 스레드 컨텍스트 (context switching) 였다. 원래 UI 관련 함수는 반드시 메인(UI) 스레드에서 실행돼야 한다.→ Windows의 컨트롤 관련 API(TabCtrl_, SendMessage, EnableMenuItem 등)는 다른 스레드에서 호출하면 무시되거나 오동작할 수 있다.그런데 최근 구조 변경으로, Windows의 컨트롤 관련 API를 워커 스레드에서 실행되도록 옮겨졌다.결과적으로 Windows의 컨트롤 관련 API 가 잘못된 스레드에서 호출된 것.즉, 함수 자체의 문제는 아니고 호출 위치(스레드)가 잘못된 것이 원인이었다. “UI는 반드시 UI 스레드에서만 다뤄야 한다.”멀티스레드.. [git] git 활용하기 (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. git refloggit reset명령어로 head가 이전 커밋을 가리키도록 바꾸었는데, 이 때에도 해왔던 모든 커밋들이 사라지는 것은 아니다.하지만 history를 볼 때 보이지 않는데, 이 때 reflog명령어를 사용하여 사라지지 않았지만 보이지 않는 커밋들을 확인할 수 있다.git reflogreflog는 reference log의 줄임말로 헤드가 이때까지 카리켜왔던 커밋들을 가리키는 정보이다. 2. 커밋 히스토리를 다양하게 보는 방법git log --pretty=oneline --all위 명령어로 모든 브랜치의 커밋 히스토리를 확인할 수 있다. git log--pretty=oneline --all --graph위 명령어로 .. [git] git 협업하기 (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. push 전에는 pull을 하라git으로 협업을 하다보면 이미 누군가 수정한 파일을 내가 다시 수정하는 경우가 발생한다. 위 사진은 그 때 발생하는 에러이다.이런경우에는 git pull을 먼저 해주는 것이 좋다.(pull과 rebase문제는 아래 접은글 확인)더보기하지만 pull을 하려고 봤더니, 나의 'premium' branch가 가장 최근 commit을 가리키고 있지 않아서 git rebase를 통해서 branch가 가장 최근 commit을 가리키도록바꾼다. fatal: Need to specify how to reconcile divergent branches 오류 해결 방법 참고 :https://devum.tistory... [git] Branch (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. Branch란?하나의 코드 관리 흐름을 의미한다.기본적으로 git을 생성하면 master branch에서 작업할 수 있게 된다.같은 프로젝트 내에서 다른 버전으로 만들고 싶을 때 branch를 사용한다. ex) 유로버전과 무료버전을 만들 때각각의 branch들은 다른 branch를 수정할 수 없다.status로 현재 branch를 확인할 수 있으며 master과 main branch의 이름은 공통으로 사용하고 있다.git branch 브랜치이름위 명령어로 새로운 branch를 만들 수 있으며 이때 새로 생긴 branch에는 지금까지 commit했던 내용이 똑같이 들어가있다.git checkout 브랜치이름위 명령어로 원하는 b.. [git] 커밋 다루기 (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. git 히스토리 보기- git log : 모든 커밋 히스토리를 내용과 함께 간단하게 보고 싶을 때 사용- git log --pretty=oneline : 커밋의 히스토리 제목만 보고 싶을 때 사용- git show 커밋의아이디 : 특정 커밋의 내용을 알고싶을 때 사용(커밋 아이디가 기니까 앞의 커밋의 수가 상당히 많지 않는다면 겹치지 않으니 4자리만 입력해도 됨)여기서 -가 붙은 내용은 이전 커밋의 모습을, +는 이후 커밋의 모습을 나타낸다. 2. -m 옵션 없이 커밋 메시지 남기기git commit을 할 때 -m 없이 커밋을 진행하면 커밋 메시지를 남길 수 있는 git의 기본 텍스트 리더가 나오고 여기서 커밋메시지를 상세하게 적.. [git] git hub 사용해보기 (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. git hub에 Repository 만들고 파일 올리기git hub에 올라가 있는 repository : 원격 / 리모트 레포지토리내 컴퓨터에 존재하는 repository : 로컬 레포지토리 원격 레포지토리를 만들면 로컬에 레포지토리를 만들고 커밋을 한 후에 깃허브에 업로드 하는 방법과 (위)이미 만들어져있는 레포지토리를 깃허브에 업로드하는 방법이 있다. (아래) (더보기) push 하다가 fatal: Authentication failed 오류가 날 경우 :더보기push 하다가 fatal: Authentication failed 오류가 날 경우 :git hub에서 token을 만들어서 그 token을 push할 때 pw로 넣어.. [c++] Visual Studio 출력 창에 메시지 출력하기 OutputDebugStringA 함수를 사용하여 출력창에 메시지를 출력할 수 있다.OutputDebugStringW도 존재하는데 UNICODE일 때 사용한다. 헤더는 아래와 같은 헤더가 필요하다.#include #include // ofstream을 사용하기 위한 헤더 파일#include // 문자열 처리를 위한 헤더 파일#include // 시간 기록을 위한 헤더 파일 일반 메시지를 표현하기 위해서 아래와 같은 함수를 사용할 수 있고void DebugPrint(const char* message) { OutputDebugStringA(message); // ANSI 문자열을 출력 OutputDebugStringA("\n"); // 줄 바꿈 추가} 변수를 받아서 메시지를 .. [git] Basic git commit (코드잇 git으로 배우는 버전관리 강의를 보고 작성한 글 입니다.) 1. 기본 commit repository 설정나의 repository 이름은 MathTool이다.폴더를 만들고 나서 git을 사용하기 위해서는 init 명령어를 사용하여 이 폴더가 git이 관리하는 프로젝트 파일이라고 설정하고 .git repository를 생성한다.- git init그리고 이 폴더에 수를 더하고 빼는 calculator.py파일 하나와 접근 정보가 담겨있는 Licence파일을 추가한다. 2. addcommit을 진행하기 전, 변경될 파일을 미리 지정하는 작업이 필요하다. 이것이 add이다.- git add caculator.py- git add Licence add를 하지 않은 상태에서 commit을 진행하게 되면n.. 이전 1 2 3 4 ··· 24 다음