etc/study 5

[Architecture] '레이어드 아키텍처에서 인터페이스 잘 사용하면 그게 헥사고날 아키텍처 아닌가?'에 대한 의문을 해결해보자

0. Intro"레이어드 아키텍처에서 인터페이스 잘 사용하면 그게 헥사고날 아키텍처 아닌가?"하는 의문을 해결하기 위해 이 글을 작성하게 되었다. 결론부터 얘기하자면 맞지만 다르다. 레이어드 아키텍처에서 OCP 원칙이 지켜지지 않는다는 단점을 헥사고날 아키텍처가 보완한다는 얘기가 있는데, 사실 계층별로 인터페이스를 잘 설계하고 추상화 한다면 DIP, OCP 원칙 모두 지킬 수 있다고 생각한다. 하지만, 아키텍처의 핵심 철학이 다르고, 이것 때문에 레이어드 아키텍처는 여러 문제점을 야기한다. 좀더 자세히 알아보자. 1. 레이어드 아키텍처, 그리고 문제점레이어드 아키텍처에서는 상위 계층에서 하위 계층 방향으로 단방향 제어 흐름을 가진다. Presentation 계층은 Domain 계층에 의존하고, Domai..

etc/study 2024.10.11

[Spring] 새로운 마음으로 Spring 시작하기 (with 토비의 스프링 + 공식 문서)

어쩌다 Spring스프링을 단순 프레임워크 사용자로 사용만 해보았고, 제대로 구조와 원리에 대해서 공부하진 않았다.spring 구조, 원리, 가치에 대한 이해가 부족하니 선택 기준이 정립되지 않았고, 개발도 일관성이 떨어진다고 느꼈다.그래서 토비의 스프링 교재와 Spring 공식 문서를 통해 spring의 구조와 원리를 학습하고 spring의 가치와 목표를 이해하여, 스프링을 효과적으로 사용하는 개발자로 성장하고자 한다.  앞으로의 계획1. 토비의 스프링 예제 코드에 대한 기록은 GitHub에 기록한다.2. Spring 공식 문서는 친구와 함께 월~금 매일 읽고, 매주 월요일 정리한 내용을 공유한다.3. 토비의 스프링 + 공식 문서 내용을 함께 정리하여 기록한다. 자세한 기간은 공부하면서 진행 속도를 살..

etc/study 2024.08.05

VS Code : C언어 컴파일 tasks.json 설정, terminal로 컴파일

1. tasks.json 이용한 컴파일 작업에 필요한 여러 명령어들을 정의하는 파일이다. 명령 팔레트 이용하거나 직접 '.vscode' 폴더와 'tasks.json' 파일을 추가하는 방법이 있다. 명령 팔레트를 이용한 방법을 이용했다. 1. 'F1'키를 누르고 'tasks'를 입력 2. 'Tasks: Configure ~~' 선택 (없으면 '파일 만들기' -> 'Others' 선택) 3. '.c' 컴파일 후 '.exe' 실행파일 만들기 (build) tasks.json 파일에서 "tasks": [ ] 의 색칠된 위치에 아래 내용들을 넣어주면 된다. { "type": "shell", "label": "gcc.exe build active file", "command": "gcc", "args": [ "-g..

etc/study 2021.02.03

Git (깃), Github (깃헙), Git Bash, Sourcetree (소스트리)

1. Git - 소스 코드 관리를 위한 분산 버전 관리 시스템 - 전체 기록과 각 기록을 추적할 수 있는 정보 저장소 - Repository : 저장소 - Working Tree : 어느 한 시점을 바라보는 작업자의 현재 시점 - Staging Area : 저장소에 commit하기 전에 준비하는 위치 - Head : 현재 작업중인 Branch - Branch : 가지 또는 분기점을 의미 (default가 master == main) - Merge : remote repository에 다른 branch의 내용을 현재 branch와 합치는 작업 - Commit : 현재 변경된 작업 확정 후 저장 - push / pull : remote repository의 branch에 저장하기 / 가져오기 (local r..

etc/study 2020.10.13

Git 과 GitHub

버전 관리 시스템 (Version Control System) -> 소스코드를 효율적으로 관리하기 위해 만들어진 것 -> Git, Mecurial, Bazaar, Darcs 등 -> 클라이언트가 파일들의 마지막 스냅샷을 가져오는 대신 repository 전체를 복제 -> 서버 문제가 생겨도 클라이언트에 복제된 repository를 다시 서버로 복사하면 복구 됨 -> 여러 개의 repository 존재 -> 서버(GitHub) repository = 원격 repository -> 사용자 PC repository = 로컬 repository -> 여러 사용자도 서버에 직접 push, pull이 가능 p.s) 로컬 버전 관리 시스템 (Local Version Control System) 중앙집중식 버전 관리 ..

etc/study 2020.05.17