etc 26

[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

[42 seoul] 42서울 4기 합격 후기

4기 1차 라피신이 끝나고 2차 라피신이 시작 되어서 한달을 넘게 기다렸는데 드디어 발표가 났다! 2차 라피신이 종료하고 일주일 뒤인 금요일에 발표가 나왔다. 3기 후기에서는 오전 9시 42분에 메일이 왔다길래 오전부터 기다렸는데 오후 4시 42분에 메일이 왔다 ㅠ 기다리다가 지쳤었다.............. 핸드폰으로 메일 확인을 했는데 "최종 합격" 보고 매우 안심...ㅋㅋㅋㅋ 메일 확인하고 "kick off"까지 완료 했다 ㅎㅎ 1차에서 코로나로 일주일 중단 되었던 것과 2차에서 final exam이 제대로 이루어지지 않았던 것 때문에 통합 선발을 하지 않고 1차, 2차 각각 뽑았다고 한다. 2차 끝나는 것만 기다렸는데 ㅠ..... 애초에 따로 뽑는 게 맞았던 것 같다. 개인적으로 final exa..

etc/42 seoul 2021.04.24

[c 언어] 포인터와 call by address : 실제 값에 영향 있는 경우와 없는 경우!

1. *a는 int형 정수 "aa = 1"을 참조, *b는 int형 정수 "bb = 2"를 참조 2. (&aa, &bb)로 주소를 매개변수로 전달 (1, 2의 주소 값) 3. 주소 값을 swap했지만 main에서 swap이 이루어지지 않음 -> 주소로 전달하고 주소 swap을 했지만, 복사된 인자들이 참조하는 주소를 swap해서 실제로 swap이 이루어지지 않음 1. 문자열을 가리키는 *a, *b 2. 참조하는 문자열의 주소가 아닌, a, b의 주소를 매개변수로 전달 3. 복사된 새로운 *a, *b는 main에서의 a, b 주소가 가리키는 문자열 swap 4. 함수 종료 후 main 함수에서는 a, b가 가리키는 문자열이 swap 됨 전달되는 매개변수는 값을 복사해서 쓰이기 때문에 새로운 변수임을 잊지 ..

etc/algorithm 2021.03.27

[42 seoul] 라피신(La Piscine) 4기 3-4주차 후기

코로나로 일주일 중단되었다가 재개했는데 너무 바빠서 다 끝난 이후에 후기를 쓰게 되었다. 특히 마지막 주 4주차는 정말 정말 하루 하루가 힘들고 멘탈 깨지고......ㅠ 힘들다는 생각을 살면서 한 적이 없는 것 같은데 마지막 주에는 힘들다는 생각이 들었다. 정신적으로 힘든 것보다 체력적으로 너무 힘들었다. 진도가 느린데 bsq도 하려니까 밥도 못 먹고 잠도 못 잤다. ㅜㅜ 그래서 피로가 누적되고... 이게 결국 정신적으로 힘들어지게 만들었던 것 같당. 우선 추억으로 남겨둔 사진부터 !! 1. exam 열 체크 후 주는 스티커 (무슨 용도인지 모르고 있다가 나중에 알게 되었는데 온도에 따라 색깔이 변한다고... WOW) 2. 클러스터 오아시스 여기서만 음료 섭취가 가능하다. 자리에서 못 마심! 3. 제발요..

etc/42 seoul 2021.03.26

[42 seoul] 라피신 (La Piscine ) 4기 2주차 후기 : 코로나로 일정 중단

이번주도 클러스터 가는 날에는 열심히 했는데 원격인 날이면 열심히 못했던 것 같다. 저번주에 쉘 과제가 끝나고 C 과제를 시작 했는데 포인터에 집착하는 나의 고집 때문에 진도가 빨리 빨리 안나갔다..ㅠㅠ 그냥 배열을 써도 되는 건데 포인터를 마스터 하겠다는 이상한 욕심?에 혼자 공부하는 시간이 길었다. 주변 사람들한테 묻고.... 같이 고민하고.... 또 다른 사람한테 묻고, 반복했다 ㅋㅋㅋ 나 때문에 같이 혼란을 겪었지만 해결했을 때 서로 공유하면 엄청나게 짜릿한 행복이 ㅎㅎㅎㅎㅎ 같이 고민해준 피시너 분들 같이 본과정까지 갔으면 좋겠다 ㅠㅠ 수요일에 러쉬 팀 평가 때문에 클러스터 나오는 날이 아니였지만 나왔다! 첫 러쉬가 가장 쉽다고 들어서 점수를 잘 받기 위해 팀원들과 열심히 준비했다. 미리 카페에..

etc/42 seoul 2021.02.26

[C언어] 포인터 문자열 VS 배열 문자열 (같지 않다!)

포인터를 이용한 문자열은 "리터럴 문자열"로 내용 수정이 불가능 하지만 주소값 변경을 이용한 값 변경은 가능하다 배열을 이용한 문자열은 내용 수정이 가능 배열의 주소값 변경이 불가능하다 (arr++ 가 불가능) 아래 예시 참고 #include void func(char *str, char *arr) { printf("%c\n", *str);// str[0]문자 'p' 출력 printf("%s\n", str);// str 문자열 "pointer" 출력 printf("%s\n", arr);// arr 문자열 "array" 출력 //str[0] = 'P'; 포인터 문자열 = 리터럴 문자열 = 문자 값 수정 X arr[0] = 'A';// 배열 arr[0] = 'A' 로 값 수정 ("Array") printf(..

etc/algorithm 2021.02.25

[42seoul] 라피신(La Piscine) 4기 1주차 후기

오늘 첫 exam을 쳤다! 코로나 때문에 페이스 쉴드도 썼는데 답답했다..ㅋㅋㅋㅋ 페이스 쉴드에 습기가 찼다... 건조한 클러스터였는데 오늘만큼은 얼굴이 건조하지 않았다..ㅋㅋㅋㅋㅋ ^^ 라피신 후기에서 많이 봤었던 첫 exam... 시험 시작 후 10분 안에 시작하지 못하면 나가야 된다고 해서 다들 걱정했다. 그래도 나름 우린 앞 기수보다 정보가 있으니까(많은 라피신 후기글과 같은) 시험을 풀지 못하고 나가는 사람이 적지 않을까 했는데, 시험 시작 10분 후에 시작하지 못한 사람들이 우루루 나갔다..ㄷㄷ 나는 어찌어찌 찾아서 시험을 시작할 수 있었다. 시험 내용은 노코멘트! 클러스터는 코로나 때문에 격일제로 이용이 가능하다. 나는 그룹2로 화,목,일 오전 9시 ~ 다음날 오전 8시 59분 59초까지 이..

etc/42 seoul 2021.02.19

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

[42 Seoul] 라피신(La Piscine) 신청 성공

4기 1차 라피신 신청에 성공했다! 체크인 미팅 신청도 pc방 가서 했고 이번에도 불안해서 pc방에 갔다..ㅋㅋㅋㅋ 노트북도 가져가서 준비했다. 오두방정 짱... pc방 컴퓨터, 노트북, 핸드폰 순으로 우선순위를 두고 새로고침을 했는데 제일 기대 안하고 있었던 핸드폰으로 성공했다..ㅋㅋㅋㅋ 피시방 컴퓨터는 끝까지 로딩... 라피신 등록이 끝난 건 아니고, 여기서 2일 후에 다시 들어가서 Online Check까지 해야 등록이 완료된다. 진짜 라피신 열심히 해서 본과정까지 가고 싶다..!!!!! +) 라피신 'Confirm presence' 등록 완료! 2그룹으로 나눠서 진행하는데 아직 정해지지 않았다. 등록 완료 기간 지나면 정해질 것 같다.

etc/42 seoul 2021.02.01