본문 바로가기

IT SW 지식 및 기타20

VS Code에서 C++ 개발 환경 구축하기 C/C++를 코딩할 때에는 Visual Studio(보라색리본)을 사용하는 것이 제일 정석적인 방법이겠지만. 현재 나는 C/C++로 전문적인 개발을 하려는 것이 아니라, 단순히 PS(Problem Solving)을 하며 기본기를 익히려 하는 단계다. 그래서, 새로운 설치 없이 기존에 사용하고 있는 Visual Studio Code에 개발 환경을 셋업하려 한다. 컴파일러 설치 MinGW 프로그램 설치 MinGW는 C/C++의 컴파일러이다. 자바를 컴파일 할려면 JDK를 설치하듯이, C/C++를 하려면 MinGW를 설치해야한다. 아래 링크에 들어가서 설치파일을 다운받고 실행하자. MinGW - Minimalist GNU for Windows - Browse Files at SourceForge.net Uni.. 2023. 12. 17.
UML 개요 UML 이란? What is UML Diagram? Definition, Use Case and Types The UML diagram, grounded in the Unified Modeling Language (UML), is defined as a dynamic template facilitating the visualization of processes and sequences. Learn more about UML diagram use cases and how to make. ideascale.com Unified modeling language의 약자 시스템의 직관적인 표현수단 combine the best of the best form. 단어 그대로 해석하면 통합 모델링 언어. 말 그대로 1.. 2023. 12. 16.
소프트웨어 개발 방법론 및 프로세스 유투브 SW 개발방법론 및 절차 강의 듣고 정리하는 노트. 안랩 최바울 연구원님이 강의를 해주셨다. 비유와 예제가 정말 머리에 쏙쏙 들어와서 흥미로웠다. 건축 = 개발? 집을 짓는 것과 소프트웨어 개발은 언뜻 비슷해 보인다. 단계 집짓기 개발하기 1) 계획 어떤 집을 지을까? 어떤 앱을 만들까? 2) 설계 건축도면 개발설계도 3) 구현 설계도가 있으니 삽을 떠볼까? 직영? 도급? 설계도 끝났고 코딩을 해볼까? 아니다 외주를 줘볼까? 4) 테스트 감리 개발 검증 5) 유지보수 하자 (안방에 창문이 너무 작아!) 버그 (이 버튼만 누르면 튕기네!) 하지만 곧 다른 점들도 많이 보일 것이다. 소프트웨어 여러 개발 방법론에 대해 알아보자 1. 폭포수 모델 🚿 #하향식, #순차적 굉장히 전통적인 모델. 1960년.. 2023. 12. 16.
프로그램 vs 프로세스 vs 스레드 ◆ 프로그램 vs 프로세스 vs 스레드 개념 다시 알기 내용 출처 : https://velog.io/@gparkkii/ProgramProcessThread 프로그램(Program), 프로세스(Process), 쓰레드(Thread) ✍🏻 프로그램, 프로세스, 쓰레드 알아보기 프로세스와 스레드의 차이는 운영체제 공부에서도 아주 중요하게 다룬다. 개발자 면접에서도 자주 나오는 주제인 프로세스와 쓰레드에 대해 아는 velog.io 2022. 5. 22.
git study note (16) branch 5 - 가지를 합칠 때 주의할 점 브랜치간 병합을 할 때 충돌에 대해서도 조심해보자. 충돌이 없었던 합치기 : 사실 이전에 했던 branch 병합은 서로 conflict되는 부분이 없었다. 변경 사항이 아래와 같았으니까... main branch : 타이거, 레오파드, 팬더 3개 파일에 팀멤버 1명씩 추가 add-coach branch : 타이거, 레오파드, 팬더 3개 파일에 코치 정보 추가 new-team branch : 퓨마와 재규어라는 2개 yaml파일이 생성됨 도착 브랜치인 main 브랜치 기준 시점에서 볼 때, 새로운 퓨마, 재규어 파일이 생겨나고, 새로운 코치 정보가 추가되는 것이니까 말이다. 다 추가의 개념이었다. 하지만 아래와 같은 경우라면 어떨까? 충돌 있는 합치기 : MERGE의 경우 Conflict1 및 Conflic.. 2022. 3. 18.
git study note (15) branch 4 - 가지 합치기 이제 본격적으로 가지 합치기를 해보자. main 브랜치로 이동하여 new team 브랜치와 add coach 브랜치의 변경사항을 다 가져와보자. Merge로 합치기 일단 최종 목적지인 합쳐질 브랜치로 이동해야한다. 그 다음 : git merge 이것은 마치 커밋을 추가로 한 것과 같아서, 가장 최근 커밋이 "Merge branch 'add-coach'라고 뜨며, reset을 통해서 병합 취소가 가능하다 그리고, 합체가 되었기 때문에, add-coach는 브랜치 삭제를 해도 좋다. (그렇다고 가지 기록이 삭제되지는 않는다. 커밋 삭제까지는 아니니까) Rebase로 합치기 new teams는 리베이스로 합쳐보겠다. 이 경우 최종 목적지가 아니라 소스 브랜치로 이동한 뒤 : git rebase 그런데 소스트리.. 2022. 3. 18.
git study note (14) branch 3 - 가지를 합치는 두 가지 방법 merge vs rebase 지난번에는 main 브랜치에서 사이드 브랜치를 만드는 법. 각자 브랜치에서 각기 다른 수정과 커밋을 해서 가지치기를 하는 법을 배웠다. 이번에는 뻗어나갔던 가지들을 합치는 방법 개요에 대해 공부해보자. 가지 치기도 중요하지만 이 것을 합치는 것을 잊어서는 안된다. 실험이 끝났다면, 주 브랜치에 적용시키는 것이 필요하니까~ 이제 메인 브랜치는 재규어팀과 퓨마팀도 가지고, 새로운 멤버와 코치도 가질 것이다. 그런데 가지를 합치는데는 2가지 방법이 있다. MERGE & REBASE main에서 분산된 add coach branch (초록색)는 merge로 main에 붙이고 이후 new team branch (분홍색)는 rebase로 main에 붙여보자. 그런데, merge와 rebase가 무엇이 다를까? ME.. 2022. 3. 18.
git study note (13) branch 2 - 가지 뻗어나가기 기존에 만든 main, new teams, add coach 브랜치에 서로 각기 다른 수정사항을 적용하고 커밋을 해보겠다. main 브랜치에서는 : leopard와 panthers에 멤버 한 명 씩 추가하고 (각각 추가할 때마다 커밋) add-coach 브랜치에서는: (※ main에서 add-coach로 돌아오면, 올리비아와 프래디가 사라짐) 각 파일당 코치 추가함 new-team 브랜치에서는: (※ git switch로 돌아오면, 코치들도 올리비아 프래디도 사라짐) pumas.yaml, jaguars.yaml 이라는 아예 새로운 팀 파일 추가. 참고로 git log는 현재 브랜치에 대한 커밋 기록만 나오는데, 모든 브랜치에 대한 커밋 로그를 확인하고 싶으면: git log --all --decorate.. 2022. 3. 18.
git study note (12) branch 1 - 브랜치생성 이전에는 한 프로젝트를 수정하고 수정을 취소하고, 또는 수정취소를 취소하는 과정을 배웠다. 그런데 우리가 코드 작성을 하다 보면 한 버전에서 컨트롤+Z와 컨트롤+Y만 하면서 왔다갔다 할 수는 없는 법이니, *커밋*이란 방법으로 중요 시점에 버전을 저장하고, Reset(돌아가기) 또는 Revert(되돌리기)로 예전 버전을 복구/복귀 하였고. 이러한 방법은 위 그림에서 하늘색 노드를 왔다갔다 하는 방식이다. (main version) 하지만 때 때로는 보라색 노드 또는 초록색 노드의 길을 타야하는 때도 있다. 이것을 차원만들기 / 분기점 만들기 / 가지치기 / branch 만들기... 라고 표현한다. 그럼 다른 차원을 탄다는 것이 어떤 의미일까? 크게 2가지로 볼 수 있다. 한 번에 여러 모습의 프로젝트를 .. 2022. 3. 18.
git study note (10) 과거로 돌아가는 법 2 - Revert git study note (9) - 과거로 돌아가는 법 - 1 Reset 가자 과거로 커밋을 한 후에도 수정은 계속 된다. 그런데 기존 상태에서 무언가를 추가적으로 바꾸어나가는 수정이 아니라, 예전에 했던 상태로 돌아가고 싶을 때는 어떻게 할까? AS IS : 5번 커밋 mylittlenotepad.tistory.com 위에서는 Reset을 사용하여 과거로 돌아갔다면, 이제는 revert를 사용하여 과거로 돌아가보자. Reset으로 과거로 돌아가면, 백업한 .git폴더를 덮어씌우기 하지 않는 이상 다시 현재로 돌아올 수 없었다. 하지만 Revert를 사용하면 보다 자유롭게 왔다갔다가 가능하다. Revert는 우리가 했던 수정->Staging->커밋의 과정을 거꾸로 수행하는 개념이다. 컨트롤제트를 반복해.. 2022. 3. 17.
git study note (9) - 과거로 돌아가는 법 - 1 Reset 이 글은 앞선 글에 계속되는 글로서, 5번째 커밋을 마친 이후의 작업을 설명합니다. git study note (5) - git work flow 깃 워크플로우 - 2 (tracked, untracked, modified, diff) 이전 글인 깃 워크플로우 1은 여기에: https://mylittlenotepad.tistory.com/40 git study note (4) - git work flow 깃 워크플로우 - 1 (staging area, commit) 깃에는 크게 3가지의 환경이 있다. Working Direct.. mylittlenotepad.tistory.com git study note (6) - git work flow 깃 워크플로우 - 3(실습1) 아래 내용은 얄코 프로그래밍 인플루.. 2022. 3. 16.
git study note (8) - .git 파일은 매우 중요하다 매우 ㄴㄴ 2022. 3. 16.
git study note (7) - git work flow 깃 워크플로우 - 3(실습2) 이 글은 실습1에서 계속 된다 : 직전 이미 lions와 tigers란 파일을 커밋했기 때문에 staging area에도 unstaging area에도 아무 것도 없는 상태이다. git study note (6) - git work flow 깃 워크플로우 - 3(실습1) - yalco라는 폴더 내에서 git init을 하고 아래와 같은 yaml파일 2개를 생성하였다. (각 파일당 8줄짜리) - 여기서 깃배쉬의 git status를 확인해본다면? 그리고 또 소스트리의 상황은? - git add로 두 파일 mylittlenotepad.tistory.com - 세 번째 커밋을 위한 수정 : Tigers에 Geroge라는 멤버 추가. 커밋 메세지는 : ADD GEROGE TO TIGERS - 네 번째 커밋을 위.. 2022. 3. 16.
git study note (6) - git work flow 깃 워크플로우 - 3(실습1) 아래 내용은 얄코 프로그래밍 인플루언서 학습사이트를 따라하고 독학하며 기록을 남긴 것임을 밝힙니다. https://www.yalco.kr/ - yalco라는 폴더 내에서 git init을 하고 아래와 같은 yaml파일 2개를 생성하였다. (각 파일당 8줄짜리) - 여기서 깃배쉬의 git status를 확인해본다면? 그리고 또 소스트리의 상황은? - git add로 두 파일 모두를 staging area에 옮기기? - git commit으로 staging에 있는 두 개 파일 깃 레파지토리로 옮기기 - 커밋 후 변경사항 발생!lions 파일 완전 삭제. tigers 내용 중 manager를 Donald로 변경. leopard란 신규파일 추가 - git diff를 보면 코멘드 윈도우 창에서 불편하게 변경사항을.. 2022. 3. 16.
git study note (5) - git work flow 깃 워크플로우 - 2 (tracked, untracked, modified, diff) 이전 글인 깃 워크플로우 1은 여기에: https://mylittlenotepad.tistory.com/40 git study note (4) - git work flow 깃 워크플로우 - 1 (staging area, commit) 깃에는 크게 3가지의 환경이 있다. Working Directory : 로컬 컴퓨터에서 우리가 프로젝트의 파일을 실시간으로 수정하는 공간 후술하겠지만, 여기서도 tracking과 untracking 둘로 나눠진다. Staging Area: 어 mylittlenotepad.tistory.com ♣RECALL♣ 자~ 이 구역은 앞으로 깃이 관리한다 : git init 깃아 이 파일들 좀 봐~ Staging으로 옮겨줘~ : git add Staging에서 깃 레파지토리로 옮겨서 .. 2022. 3. 16.
git study note (4) - git work flow 깃 워크플로우 - 1 (staging area, commit) 깃에는 크게 3가지의 환경이 있다. Working Directory : 로컬 컴퓨터에서 우리가 프로젝트의 파일을 실시간으로 수정하는 공간 후술하겠지만, 여기서도 tracking과 untracking 둘로 나눠진다. Staging Area: 어느 정도 작업을 하다가 버전 히스토리에 남길 준비가 된 파일들을 옮겨놓는 공간 (꼭 최종본이 아니어도 됨!) git Directory : 버전 히스토리를 가지고 있는 공간 git repository 깃 레파지토리라고 불리기도 한다. 깃 워크 플로우 개요 깃은 어떠한 과정을 거쳐 로컬 컴퓨터에 있는 파일들을 버전 별로 정리해서 기억/정리 하는 것인지 알아보자. 로컬 컴퓨터 워킹 디렉토리에 있는 파일들은 깃 디렉토리로 옮겨진 후 타임캡슐안에 묻혀야만 한다. 이게 깃이 시.. 2022. 3. 15.
git study note (3) - 깃 기초 코멘드 명령어 깃노트 2번에서도 언급했지만 깃은 코멘드에서 배우는 것이 제일이다. 직관적이게도 깃 명령어는 git + 명령어 형태이다. 예: git add, git commit, git config 자세한 내용은 홈페이지 다큐멘테이션 참고 : https://www.git-scm.com/docs Git - Reference Reference www.git-scm.com ▷ git config --list .gitconfig 안에 깃 모든 설정이 저장되기 때문에, 깃에 현재 모든 내용을 볼 수 있음. q를 눌러 빠져나오기. ▷ git config --global -e gitconfig을 edit모드로 여는 것. (터미널에서 열릴 수도 있고, 텍스트 에디터에서도 열릴 수 있음.) ▷ git config --global us.. 2022. 3. 15.
git study note (2) - 깃 git 사용 방법 - 설치 및 세팅하기 설치 할 것: 1. 깃 2. 소스트리 3. Visual Studio Code 깃을 배우고 쓰려면 무엇을 설치해야 할까? 깃은 명령어를 기본으로한 프로그램이기 때문에 터미널에서 코멘드를 쳐가며 배워야지 깃을 제대로 익힐 수 있다. (CLI) 물론 GUI 도 유용하다. 깃을 제대로 배워보면 알겠지만, 파일 상태를 시각화 하는 것이 필요하다. unstaging area ↔ staging area ↔ git repository를 파일이 넘나들고, branch & merge 과정이 빈번하기 때문이다. 터미널 창에서 CLI로만 하기엔 내가 지금까지 어떠한 파일을 어떻게 수정해왔는지 머릿속에 잘 안그려지니까... 그래도 코맨드창에서 순수 명령어를 하는 것보다는 기능이 적다는 것을 참고. 하지만 아무 GUI나 설치하지.. 2022. 3. 15.
git study note (1) - 깃 git 이란? 우리가 깃을 쓰는 이유. 깃의 장점은 무얼까? 깃은 VCS(Version Control System) 중 하나로, 프로젝트의 시간과 차원을 관리한다. 타임머신을 타고 원하는 순간으로 돌아가고 싶은 것 처럼, 깃과 함께라면 우리가 만들고 있는 파일을 원하는 순간으로 돌아갈 수 있다. 작업을 하다보면 (꼭 프로그래밍 작업이 아닐지라도) 계속 수정에 수정을 거친다. 작업 중간 중간 파일을 계속 저장한다. 진짜 최종본이라고 믿고 저장했지만, 고쳐야 할 부분이 또 생기는 경우가 허다하다. 가장 마지막 버전이 꼭 제일이라는 보장도 없어서, 예전 버전으로 돌아가기도 한다. 만약 내가 중간 과정의 파일들을 별도로 저장하지 않고, 덮어쓰기를 하며 작업해 왔는데, 3시간 전의 파일이 필요하다면....? 참 슬픈 상황이 아.. 2022. 3. 15.
프로그래밍 기본 용어 및 개념 정리 (1) 이 글에서 다룬 단어들 : #기계어, #저급언어, #고급언어, #어셈블리어, #소스, #컴파일, #컴파일러, #프로그램, #JVM, #플랫폼 종속적 #메모리 #프로세스 #프로세서 #스레드 #멀티테스킹 #멀티프로세스 #멀테스레드 #CLI #GUI #기계어 Machine Language 컴퓨터가 알아 듣는 언어. 0과 1로만 이루어진 이진수(binary code)로만 되어있음 그래서 사람이 바로 기계어를 작성하는 것은 힘들다. 프로그래머가 짜는 코드는 기계어가 아님. 코드 → 기계어 번역의 과정이 필요. #저급언어 Low Level Language 0과 1로만 이루어진 기계어는 사람이 도저히 이해할 수 없으니, 문자적으로 표현하여 사람이 이해할 수 있게 한 것. 그러나 역시 기계어에 매우 가까워, 이해가 어.. 2021. 8. 9.