extension의 prettier를 사용해도 되지만, 직접 C/C++의 코드 포매터를 설정해보자. 개인적으로 Google이 내 코드 스타일과 가장 적합하여, 해당 포맷을 사용하기로 했다. 1.먼저 vscode를 키고, 좌측 하단 톱니바퀴를 누른다. 2. 리눅스의 경우, ctrl+shift+p 단축키로 Command Palette를 연뒤, open user settings를 검색하고 open user settings(JSON) 파일을 연다. 3.해당파일의 하단에 "C_Cpp.clang_format_fallbackStyle": "Google" 해당 코드를 추가해준다. 여기서 Google 부분에는 원하는 formatter를 써주면 된다. LLVM: LLVM coding standards Google: Goo..
지난 포스팅을 보지 않았다면 먼저 읽고 오자. [CA] - MIPS의 Datapath 이해하기 오늘 배워볼 것은 MIPS의 Datapath이다. CPU의 핵심 구성 요소인 Datapath는 Computer Architecture의 꽃이고, 이후 CA내용을 이해하는데 있어 굉장히 중요한 요소라고 생각해서 포스팅을 작성하게 되었다. ❓D kangmanjoo.tistory.com 📚MIPS의 instruction들 MIPS의 명령어들은 다음 세가지 + jump 중 하나의 구조를 가지고 있다. 각 명령어의 필드와 일부 예시를 먼저 설명해보겠다. R-type 필드 opcode : 명령어의 종류를 나타내는 필드 rs,rt,rd : 각각 source, source, destination 레지스터를 가리키는 필드 sh..
오늘 배워볼 것은 MIPS의 Datapath이다. CPU의 핵심 구성 요소인 Datapath는 Computer Architecture의 꽃이고, 이후 CA내용을 이해하는데 있어 굉장히 중요한 요소라고 생각해서 포스팅을 작성하게 되었다. ❓Datapath란 Datapath는 컴퓨터 아키텍쳐에서 데이터를 처리하는 논리 회로와 구성 요소들의 집합을 말한다. 데이터 경로라고도 할 수 있고, 무엇보다 CPU의 핵심 구성 요소이기에 중요하다. 앞으로의 최적화 기술들과 주소 연산을 이해하는 데 있어 아주 중요하기에 자세하게 짚고 넘어가는 것이 좋다. 이 포스팅에서는 컴퓨터 아키텍쳐들 중에서도 RISC 기반인 MIPS 아키텍쳐의 Datapth에 대해 알아볼 것이다. 👀Datapath의 구성 요소 (MIPS) Datap..
저번 포스팅에서 말했듯, 우리는 NAS에 공인 IP를 직접 입력하기로 결정하였다. 지난 포스팅 >> 2023.06.09 - [Project/스마트팜-web] - [스마트팜] - 공인IP와 사설 IP, 포트 포워딩 [스마트팜] NAS 설치, 포트 포워딩 kangmanjoo.tistory.com 👀학교 서버실을 가다 계획서에서는 NAS를 학교 서버실에 설치하기로 했었기에, 신공학관 10층에 위치한 서버실을 방문했다. 학교 서버실을 들어와본 건 처음이라 신기했는데, 흔히 아는 서버실의 풍경다웠고 발열을 잡고자 에어컨을 24시간 틀어놔서 굉장히 춥고 팬이 돌아가는 소리가 어마어마했다. (말소리도 잘 안들릴 정도) ❓NAS에 공인 IP 설정하는 법 이제 서버실에 NAS를 설치하려면, 공인 IP를 할당해야 한다. ..
킥오프 미팅이후, 메일로 다음 미팅 약속을잡은 뒤 우리는 강서구에 위치한 업체에 가서 나스를 업어왔다. 사실 나스 설치까지는 업체측에서 해주기로 했었는데, 좋은 경험이 될 것 같아 우리가 직접 하겠다고 나섰다. (이후 굉장히 후회했다) 나스를 직접 본 건 처음이었는데, 안에 2TB 하드 디스크가 꽂혀있었음에도 생각보다 더 작고 가벼웠다. 이게 40만원이 넘는다니,, 정말 탐난다. 나스의 초기 세팅은 이미 되어있는 것으로 전달받았으나, 계정 비밀번호가 유실되어 초기 세팅부터 직접 진행했다. 우선 NAS 뒤에 있는 reset 버튼을 눌러 초기화 후, OS 설치부터 진행하였다. NAS의 OS는 리눅스 기반 OS인 DSM이다. 이후 계정 생성등 초기 설정을 마친 뒤 (https://chelly.kr/synolo..
아는 교수님의 소개로, 한 회사와 산학 협력 관계로 프로젝트를 진행할 기회가 생겼다. 약 2.5개월짜리 짧고 간단한 사이드 프로젝트이지만, 회사에서는 프로젝트를 어떤 프로세스로 진행하는지, 어떤 일들을 하는지 경험해볼 수 있는 좋은 기회라고 생각하여 동기 한 명과 함께 바로 참여하게 되었다. [Project Overview] 우선 이번 프로젝트의 목적은, 건대 충주 목장에 설치된 중계장치에서 기존 해당 업체 서버로 전송하던 데이터들을, 건국대학교 내에 따로 서버를 구축하여 데이터를 받아오고, 건대 충주 목장 전용 웹을 서비스하는 것이다. 우리가 해야할 일은 크게 건국대학교 서버실 내부에 NAS 설치하기 웹페이지 개발하기 (화면 정의서 有) 서버 만들기 서버로 전송된 데이터 웹페이지에서 서비스하기 이렇게 ..
❓Concurrency란 뭘까? 운영체제에서 Concurrency란 상당히 중요한 개념이다. 현대의 컴퓨터는 기본적으로 멀티코어 프로세서를 가지고 있기에 작업의 병렬 처리가 가능하다. 웹 브라우저에서 여러 웹 페이지를 동시에 로드하거나, 편집기에서 여러 문서를 동시에 편집하거나 등등. 즉 concurrency(동시성) 란, 한 번에 여러 작업을 수행할 수 있는 컴퓨터 시스템의 능력을 가리키는 개념이다. OS로부터 각각 자원을 할당 받는 프로세스를 여러개 두고 관리하거나, 한 프로세스에서 자원을 공유하는 여러 스레드를 생산해 멀티 쓰레딩 프로그래밍을 하거나 할때에, concurrency는 빛을 발한다. 하지만 concurrency는 상당히 예민한 개념이다. 한 광산(프로세스)에서 여러명의 인부(스레드)가 ..
💡최대 유량이란? 그래프에서 두 정점 사이에 얼마나 많은 유량(flow)을 보낼 수 있는지 계산하는 알고리즘을 네트워크 유량(Network Flow) 혹은 최대 유량(Maximum Flow) 알고리즘이라고 한다. 아래 용어들은 최대 유량 알고리즘을 이해하는데 도움이 되므로, 미리 짚고 넘어가자. 용량(Capacity) Capacity[u][v]는 정점 u에서 v로 가는 간선의 용량이다. 유량(Flow) flow[u][v]는 정점 u에서 v로의 간선(파이프)에 실제로 흐르는 유량을 의미한다. 잔여 용량(Residual Capacity) 간선의 용량과 유량의 차이를 의미한다. ResidualCapacity[u][v] = Capacity[u][v] - flow[u][v] 즉, 해당 간선에 추가적으로 더 흘려 ..