개발/정리

    [정리] DDD 설계 vs SQL중심 설계

    1. DDD (Domain Driven Design) (1) DDD란? 먼저 도메인이란 소프트웨어로 해결하고자 하는 문제 영역이다. 예를 들면 온라인 쇼핑몰의 도메인은 전자상거래이다. 하위 도메인으로 상품 판매의 이커머스 도메인이 있고 그 하위 도메인으로 상품이라는 도메인이 있다. 이러한 도메인을 중심으로 설계해 나가는 방법을 DDD(도메인 주도 설계)라고 한다. (2) DDD가 왜 필요한가? DDD는 기존 어플리케이션 설계가 도메인에 대한 이해가 부족한 상태로 설계 및 개발 되었다는 반성에서 출발했다. DDD에서는 현실 -> 서비스 로의 일방향 소통구조를 탈피하여 현실 서비스 의 쌍방향 커뮤니케이션을 위해 필요하다. 예를 들면 상품판매의 도메인을 놓고 기획자와 개발자는 다른 생각을 가지고 있을 수 있다..

    [정리] Youtube가 가진 기능 도메인으로 정리해보기

    유투브는 어떤 기능이 존재할까라는 생각을 하며 유튜브 홈페이지를 들어가봤다. 1. 사용자 관점에서 기능 정리 먼저 눈에 보이는건 동영상과 관련된 기능이었다. 1. 동영상 나열 2. 쇼츠 동영상 나열 3. 동영상 미리보기 4. 동영상 검색 5. 카테고리 선택 6. 구독한 채널 동영상 보기 그다음 눈에 들어온건 로그인 관련 기능이다. 1. 로그인, 로그아웃 2. 알람 3. 동영상 만들기 4. 보관함 5. 시청기록 6. 내 동영상 그 다음 하나의 동영상을 클릭하여 들어가봤다. 1. 일시정지 2. 영상 구간 선택 3. 구독 4. 좋아요, 싫어요 5. 신고 6. 클립만들기 7. 댓글 달기 8. 댓글 좋아요 9. 대댓글 10. 다른 동영상 보기 11. 날짜 표시 12. 조회수 표시 설정도 들어가봤다. 1. 멤버십 ..

    [정리] 객체지향의 4가지 특징

    객체지향에는 4가지 특징이 있다. 1. 캡슐화 캡슐화는 캡슐처럼 감싼다고 해서 캡슐화이다. 우리가 먹는 알약을 떠올리면 알약안에 있는 성분은 모르지만 그 효과는 알고 있다. 이처럼 안의 내용을 숨기면서 동작하는 것이 캡슐화이다. public class Main { public static void main(String[] args) { Capsule capsule = new Capsule(); String randomString = capsule.getRandomString(); } } 나는 getRandomString이라는 메소드 이름을 보고 랜덤으로 문자열을 주는구나 생각하고 메소드를 실행시켰다. 여기서 나는 어떻게 랜덤으로 값을 뽑아주는지 모르고 결과값만을 받게 된다. 설령 아래와 같이 임의로 값을..

    [정리] 라이선스(저작권)

    먼저 한글로 라이센스라고 알고 있었지만 라이선스라고 한다. 개발자들에겐 라이선스란 굉장히 중요한 부분이다. 오픈소스를 가져다 기능을 구현했지만 어느날 그 오픈소스의 라이선스때문에 코드를 강제적으로 오픈해야 될수도 있다. 또한 상업적사용을 제한할 수도 있기 때문에 사용하기전 해당 소스의 라이선스를 한번 확인하는것이 중요하다. 현재 소프트웨어 라이선스 분류는 아래와 같다. 이 중 흔히 볼수 있는 라이선스는 MIT, Apache2.0, GPL 등이 있다. 1. MIT MIT 라이선스는 MIT공대에서 자기 학교의 개발자들을 위해 개발한 라이선스이다. MIT 라이선스를 따르는 소프트웨어를 개조한 제품을 반드시 오픈 소스로 배포해야 한다는 규정이 없으며 다른 엄격한 라이선스를 피하려는 사용자들에게 인기가 있다. 배..

    [정리] 변수란 무엇일까?

    지금까지 코딩을 해오며 아무 생각 없이 변수를 사용했다. 그러다 변수란 무엇일까라는 질문을 들었을때 매일 사용했던거였지만 바로 대답이 나오지 않았다. 변수란 무엇일까? 처음 질문을 듣고 메모리 주소를 가리키는 이름?? 이라고 생각했지만 확신은 없었다. 그렇다면 왜 다른이름도 많은데 하필 변수라는 이름이 탄생했을까라는 추가적인 생각이 들게 했다. 질문을 던진 분은 그릇을 빗대어 그릇안에 담는 물건은 바뀔수 있다를 비유하며 설명해주셨고 평소에 값을 변수에 담는다라는 표현을 하곤 했는데 이말을 들으니 이해가 됐다. 나무위키에 따르면 변수란 특정 값을 저장하는 메모리 공간이라고한다. 해당 메모리 공간에는 허용되는 범위 내에 어떤값이든 저장할수 있으므로 변수라고 한다고 한다. 위 고민을 거치니 '허용되는 범위 내..

    [정리] ubuntu java 개발자 세팅 (그래픽카드 드라이버 설치, vscode, ibus, LibreOffice, virtualBox, openJDK)

    1. 한글 세팅 (ibus) (1) ibus-hangul 설치 sudo apt install ibus-hangul (2) ibus-setup에서 한글 추가 ibus-setup Hangul 검색후 Add 오른쪽 상단 Settings 접속 위와 같이 설정 오른쪽 위에서 한글모드 설정 2. vscode 설치 https://code.visualstudio.com/ 홈페이지 접속후 deb 파일 다운로드 터미널 켜기 (ctrl + alt + t) 경로 이동후 dpkg cd ~/Downloads/ sudo dpkg -i 다운받은deb파일.deb + java 세팅을 위한 extension 설치 spring boot 를 위한 extension 설치 + 깃 설치 sudo apt install -y git 3. java 설..