본 문서는 소프트웨어 개발 시 준수해야 하는 코딩 스타일을 정의하고 가이드한다. 본 문서의 가이드는 C 언어를 대상으로 하고 있으며 C99 표준이 적용된다(추후 C11 등 최신 표준으로 변경 적용 가능하며, 이에 따라 본 문서의 내용이 일부 변경될 수 있다). 본 문서의 가이드는 구글 C++ 코딩 스타일 가이드(https://google.github.io/styleguide/cppguide.html)를 기반으로 내부적인 필요에 따라 일부 내용을 수정, 변경하여 적용한 것이다. 헤더파일 헤더파일을 바르게 사용하는 것으로 코드의 가독성과 크기, 성능에 큰 차이를 만들 수 있다. #define 가드 H-1. 헤더파일이 중복 포함되는 것을 방지하기 위해, 모든 헤더파일 내에 #define 가드를 사용한다. #d..
Git 사용 규칙 - Git commit 메시지 본 글에서는 더 나은 커밋 로그 가독성, 협업 및 리뷰, 코드 유지보수를 지원하기 위한 깃 커밋 메시지 규칙을 정리한다. 공통 규칙 1. 커밋 메시지는 최대한 한글로 작성한다. 2. 메시지 본문에 모든 변경 사항을 상세히 작성한다. 축약하여 쓰지 않고 제3자가 쉽게 이해할 수 있도록 최대한 풀어서 작성한다. 커밋 메시지 구성 1. 모든 커밋 메시지는 다음과 같이 세 영역으로 구성되며, 각 영역은 빈 줄로 분리된다. 제목 줄 본문 (제목 만으로 표현이 가능할 때에는 생략 가능) 꼬리말 (관련 이슈가 없으면 생략 가능) 유형: 제목 본문 꼬리말 제목 작성 1. 제목 줄은 72자 내로 작성한다. (Git UI 툴인 GitKraken 기준이며, 툴 또는 편의에 따..
소프트웨어 버전 규칙 본 글에서는 개발 중인 또는 개발 완료된 소프트웨어의 버전 할당에 관련된 규칙을 정의한다. 소프트웨어에 할당하는 버전은 기본적으로 유의적 버전 2.0.0-ko2에 소개된 버전 규칙을 따른다. 본 글은 유의적 버전 2.0.0-ko2에 기술된 내용을 그대로 옮겼으며, 해당 내용에서 삭제된 부분은 취소선, 새롭게 추가된 부분은 녹색 글씨로 표시하였다. 유의적 버전 2.0.0 요약 버전을 주.부.수 숫자로 하고: 1. 기존 버전과 호환되지 않게 API가 바뀌면 “주(主, Major) 버전”을 올리고, 2. 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “부(部, Minor) 버전”을 올리고, 3. 기존 버전과 호환되면서 버그를 수정한 것이라면 “수(修, Patch) 버전”을 올린다. 주..
Octotree - Github 저장소 탐색을 위한 필수 확장 기능 Github 사이트는 (개인적으로) 매우 깔끔하게 구성되어 있고 기능 역시 강력하지만, 꽤 큰 불편함이 있다. 이는 바로 저장소 내 폴더와 파일 구조를 한 눈에 확인할 수 없다는 것이다. 이를 해결해 주는 크롬 확장 기능이 바로 Octotree 이다. Github는 저장소의 폴더/파일 구조를 한 눈에 확인할 수 없다.Github 저장소에서 각 폴더 내에 있는 하부 폴더나 파일을 확인하려면 각 폴더를 하나씩 클릭해 들어 가면서 확인해야 한다. 아래 영상에 보이는 예와 같이, Github 저장소의 하부 디렉터리 내 파일의 내용을 확인하려면 폴더와 파일을 순차적으로 하나씩 클릭해서 들어가야만 확인이 가능하다. 다시 다른 폴더에 있는 파일을 확..
Git을 이용하여 소프트웨어 개발을 시작한지도 몇 년이 되었다. 그 동안 Git을 사용해 오면서 Git 커밋 이나 브랜치 규칙(여기서 브랜치 규칙이란 개인적으로 Git-flow, Github-flow 등과 같은 개념을 의미한다)은 이것저것 도입해 사용해 보았으나, 명시적으로(문서 상으로) 규칙을 정해 놓지 않은 관계로, 상황이나 시간의 변화에 따라 때로는 일관된 규칙을 적용하지 못하였다. 곧 시작할 새로운 중요 개발 프로젝트를 본격적으로 시작하기 전에 Git을 어떻게 잘 사용할지에 대해 다시 한번 정리해 보고자 한다. 그 중에서도 본 글에서는 브랜치를 어떻게 관리할 것인지에 대한 브랜치 규칙에 대해 정리한다. 개발 환경회사의 특성 상, 내 개발 환경은 다음과 같은 특징을 가진다.대부분의 프로젝트를 혼자서..
One Tab여러 개의 탭을 하나의 탭으로 모아줌으로써 메모리 사용량 감소https://chrome.google.com/webstore/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=koSave to PocketURL, 컨텐츠 등을 포켓에 저장 (나중에 볼 수 있도록)https://chrome.google.com/webstore/detail/save-to-pocket/niloccemoadcdkdjlinkgdfekeahmfljTooltip Dictionary영어 단어에 마우스 커서를 위치시키면 한글 번역이 툴팁으로 제공https://chrome.google.com/webstore/detail/tooltip-dictionary-englis/hcidimjcobcnah..
터미널 시작 $ screen /dev/tty.usb-xxxxx 115200 터미널 종료 Ctrl + A + D 종료된 터미널 재실행$ screen -r 종료된 터미널을 재실행하려고 할 때 Resource busy 에러가 발생할 경우, 프로세스 완전 종료$ killall SCREEN
.idea/workspace.xml 파일 무시무시하도록 설정을 해도 계속 나타난다. 3)번을 수행하면 잘 된다..gitignore에 .idea/workspace.xml 추가.이미 커밋을 진행한 경우, git rm --cached .idea/workspace.xml 실행.GitKraken에서 "Ignore and Stop tracking" 설정.
Cannot find declaration to go특정 함수에서 "Go to declaration(Command + B)"를 수행했을 때 해당 함수를 찾지 못하고 출력되는 메시지.원인 및 해결방안은 다음과 같다.프로젝트 내에서 해당 함수가 구현되어 있지 않은 경우 → 해당 함수를 구현한다.프로젝트 내에서 해당 함수가 구현되어 있으나,헤더파일에 함수원형이 선언되어 있지 않은 경우 → 헤더 파일에 함수원형을 선언한다.헤더파일에 함수원형이 선언되어 있으나, 해당 헤더 파일을 c 파일에서 include 하고 있지 않은 경우 → include 문을 추가한다. include하고 있는 경우 → 헤더파일의 경로를 검토한다. 같은 경로에 있는 경우 ""로 include하고, 그렇지 않은 경우 include_direct..
불편사항 개선불필요한 툴팁 박스 생성 문제 해결CLion → Preferences → Editor → General → Auto Import → C/C++ → Show import popup 체크박스 해제스펠링 체크 기능 해제변수명에 대한 스펠링 체크 기능 해제: CLion → Preferences → Editor → Inspections → Spelling → Typo → Process code 체크박스 해제따옴표 내 문자열에 대한 스펠링 체크 기능 해제 : CLion → Preferences → Editor → Inspections → Spelling → Typo → Process literals 체크박스 해제주석에 대한 스펠링 체크 기능 해제 : CLion → Preferences → Editor ..
Mac용 CLion 단축키관련된 공식사이트는 https://www.jetbrains.com/help/clion/basic-editing.html입니다. 코드 자동 정렬Option + Command + L세로 편집 선택Option + 마우스 왼쪽 버튼 + 드래그
본 포스트에서는 Mac OS에서 네트워크 인터페이스간 우선순위를 설정하는 방법을 설명합니다. 네트워크 인터페이스 우선순위란 네트워크 인터페이스 우선순위란 시스템에 여러 개의 네트워크 인터페이스가 있고 모두 망에 연결되어 있는 경우, 인터넷을 사용할 때 어떤 인터페이스를 이용하여 인터넷에 접속할 지를 결정하는 것이라고 볼 수 있습니다. (기술적으로 조금 더 들여다보면 단순한 인터넷 사용이 아니라, 시스템이 직접 연결되어 있지 않은 다른 도메인 내에 있는 장치와 통신할 때 사용할 네트워크 인터페이스를 결정하는 것이라 볼 수 있습니다만.. 자세한 내용은 생략합니다) 즉 인터넷에 접속할 때, 시스템에 존재하는 여러 개의 네트워크 인터페이스 중 우선순위가 가장 높은 인터페이스를 통해서 접속하게 됩니다. 시나리오 ..