전체 글

웹 개발 공부를 하고있습니다 ᕕ( ᐛ )ᕗ
Study/Booooooook

도메인 주도 설계 핵심 1-2장

Chap1. 나에게 도메인 주도 설계는DDD (Domain Driven Design, 도메인 주도 설계)DDD는 소프트웨어 개발에 대한 복잡한 접근법이라기보다, 복잡한 소프트웨어 프로젝트에 사용할 수 있는 수준 높은 기술들을 모은 것이다. 그러니까, 복잡함을 간단히 풀어줄 수 있는 방법으로 생각하는 게 맞겠다. 오히려 너무 단순한 프로젝트에 DDD 를 도입하면 복잡성을 증가시킬 수도 있겠다. 설계의 중요성설계는 필연적이다. 설계하지 않는 것은 각자 다른 설계를 하고 이를 하나로 뭉뚱그리는 것을 만들 뿐이다. 모델링이라고 인정하든 인정하지 않든 우리는 모델링을 한다. 설계를 제대로 하지 않으면 앞으로 유지보수하는 데에 훨씬 더 많은 비용이 들어간다. 전략적 설계와 전술적 설계앞으로 이 책에서는 다음의 내용..

Study/Booooooook

자바 객체 지향의 원리와 이해 5. SOLID

객체 지향의 설계 5원칙객체 지향 설계 (OOD) 5원칙 SOLID 은응집도는 높이고 결합도는 낮추는 원칙을 객체 지향 관점에서 재정립한 것이다.- 응집도 Cohension : 한 모듈 내 구성 요소들의 기능적 관련성응집도가 높으면 하나의 책임에 집중하고 독립성이 높아져 재사용과 유지보수가 용이하다.- 결합도 Coupling : 모듈(클래스) 간의 상호 의존 정도결합도가 낮으면 객체의 재사용이나 유지보수가 용이하다. SOLID 는 객체 지향을 프로그램에 올바르게 녹여내기 위한 원칙이다.속성, 메서드, 클래스, 객체, 패키지, 모듈, 라이브러리, 프레임워크, 아키텍처 등 다양하게 적용된다. SRP : Single Responsibility, 단일 책임 원칙어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어..

Study/Booooooook

자바 객체 지향의 원리와 이해 4. 객체 지향 (2)

abstract추상 메서드: 선언부만 있고 구현부는 없는 메서드  (추상? 공통 특성 추출?)✓ 추상 메서드를 하나라도 갖고 있는 클래스는 반드시 추상 클래스여야 한다.      → 추상 메서드는 추상 클래스 안에서만 존재할 수 있다 (인터페이스에도 존재..)✓ 추상 클래스는 인스턴스(객체)를 만들 수 없는 클래스이다. new 사용 불가      → 오로지 상속을 통해서만 사용될 수 있다✓ 추상 클래스를 상속한 하위 클래스는 반드시 추상 메서드를 오버라이딩(구현) 하여야 한다. 그러면 그냥 인터페이스 역할을 하는 클래스가 아닌가? 인터페이스와 차이점이 뭘까?일단, 인터페이스는 추상 클래스의 하나의 특수한 형태.추상 클래스는 추상 메서드 말고도 멤버변수, 메서드, 생성자를 선언할 수 있다.인터페이스는 이 ..

Study/Booooooook

자바 객체 지향의 원리와 이해 3. 객체 지향 (1)

객체 지향객체 지향은 우리가 현실 세계에서 사물을 인지하는 방식대로 프로그래밍 하려고 하는 데에서 출발했다.세상에 존재하는 모든 사물은 객체(object)이다.각각의 사물은 고유하다. 사물은 속성(property)을 가지고 있으며, 행위(method)를 한다.그리고 인간은 사물을 분류(class)하여 인지한다. e.g. 강호동(object), 유재석(object) 은 사람이라는 분류(class)에 속한다.그리고 이 객체들은 나이, 키 등의 속성(property)과 걷다, 말하다 등의 행위(method) 를 가진다. 객체object 를 번역하면 객체보다는 개체에 더 가깝다.객체 지향에서의 객체는 '세상에 존재하는 유일무이한 사물' 에 가깝다.그리고 이 객체는 속성과 기능을 가지고 있다. 클래스객체를 특성..

Study/Booooooook

자바 객체 지향의 원리와 이해 2. 메모리

JDK JRE JVM JDK: Java Development Kit, 자바 개발 키트Java SE 스펙을 준수한 구현체.자바 기반 소프트웨어를 개발하기 위한 도구들로 이루어진 패키지와 JRE 를 포함한다.자바 소스 컴파일러 javac.exe 를 포함하고 있다.  JRE: Java Runtime Environment, 자바 실행 환경자바 코드를 실행하기 위한 도구들로 구성된 패키지.자바 프로그램을 구동하기 위한 독립된 구성요소로 사용할 수 있지만, 동시에 JDK 의 일부이기도 하다.자바 프로그램 실행기 java.exe 를 포함하고 있다.  JVM: Java Virtual Machine, 자바 가상 머신자바 코드가 컴파일된 바이트 코드 파일을 실행하는 가상머신. 애플리케이션을 운영체제에 무관하게 실행..

Study/Booooooook

자바 객체 지향의 원리와 이해 1. Intro

기계어이진수 0과 1 로만 표현되며 CPU 에 따라 코드가 다르다.에드삭, 유니박 ... 등등 컴퓨터 마다의 전용 기계어가 존재. 어셈블리어기계어와 사람이 알아보기 쉬운 니모닉 기호를 일대일 매칭하는 코드표를 만들었다.기계어와 마찬가지로 CPU 에 따라 코드가 다르다. 그리고 이를 기계어로 번역해주는 어셈블러도 다르다. C 언어C 언어 이전까지는 같은 일을 하는 프로그램의 소스 파일을 기계의 종류만큼 만들어야 했다. 즉 멀티소스.하지만 C 언어는 소스파일을 단 하나만 만들면 된다. 싱글 소스! → 강력한 이식성 (어셈블리어 대비)One Source Multi Object Use Anywhere하나의 소스 파일을 각 기계에 맞는 컴파일러로 컴파일하면 각 기계에 맞는 기계어 목적 파일들이 만들어진다.(하지만..

Study

REST API

아니 그래서 REST API 가 뭐냐고 물어보면 뭐라고 대답해야되냐고 ... ʅ( ⌓̈ )ʃ 일단 REST 는 ROA(Resource Oriented Architecture) 이다. API 설계의 중심에 자원(Resource)이 있다. 그리고 REST 는 REpresentational State Transfer, 표현(representation) 에 의한 상태(State) 전달(Transfer) 이다. representation(표현)으로 해당 자원의 상태를 전달한다는데, 그러면 representation(표현)은 뭘까? representation은 특정 시점에 자원(resource)의 상태(state)를 반영하고 있는 정보이다. 우리가 api 요청을 보냈을 때, 응답으로 오는 payload 가 바로 r..

Study

데몬 daemon

데몬 daemon 요청에 응답하기 위해 오랫동안 실행중인 백그라운드 프로세스 부모프로세스(PPID)가 1 이거나 다른 데몬 프로세스인 프로세스 이름이 d로 끝나는 프로세스들이 대표적 (ex. sshd, httpd 등) 백그라운드 프로세스 사용자에게서 입력장치로 무언가를 전달받지 않고 스스로 동작하는 프로세스 ↔ 포그라운드 PID Process ID 시스템을 시작하고 종료하는 데에 사용되는 init 프로세스는 커널이 처음 만든 프로세스이므로 PID가 1이다 모든 프로세스는 init (PID 1) 을 부모 프로세스로 가지고 모든 스레드는 kthreadd (PID 2) 를 부모 프로세스로 가진다 nohup no hang up 의 약자 세션과 연결을 종료해도 실행시킨 프로그램을 종료하지 않음 데몬의 형태로 실..

Study

ssh, scp

SSH : Secure SHell 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 기존에 사용하던 telnet 에 암호화 기능을 추가하여 보안이 개선된 프로토콜이다 * Shell: 운영체제에서 커널과 사용자 사이에서 사용자의 명령을 해석하고 처리결과를 뿌려주는 시스템 프로그램 shell 은 흔히 두 종류로 구분하는데 CLI, GUI / 그 외에도 이 환경으로 접속하는 SSH 를 일컫는 말이기도 하다~! ssh [사용자계정]@[ip주소] -p [포트] # exit 로 연결을 끊을 수 있음 SCP : Secure CoPy SSH 기반으로 원격 ↔ 로컬 사이 파일과 디렉토리를 보내거나 가져올 때 사용하는 파일 전송 프로토콜 remote to local scp [옵션] [사용자계정]@[ip주소]:[파일경로]..

Study

리눅스 명령어

파이프라인 [명령어1] | [명령어2] 앞 명령어의 결과 값을 뒤의 명령어로 필터링하거나 가공할 때 주로 사용한다 awk, cut, grep, more 등과 조합하여 많이 사용한다 리다이렉션 grep, tail, cat, cut, more grep 지정한 문자열이나 정규표현식을 포함한 행을 출력한다 grep [옵션] [패턴] [파일] 옵션 -c : 일치하는 행의 수 출력 -i : 대소문자 구분 X ex. grep -i error output.log tail 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력한다 (기본값 10줄) tail [옵션] [파일] 옵션 -f : 종료하지 않고 실시간 업데이트 출력 -n : 라인 수 지정 ex. tail -f output.log | grep error ex..

코딩하는토끼
TOKKI Library