분류 전체보기

    [도메인 주도 설계 철저 입문] 1. 도메인 주도 설계 읽게 된 이유

    [도메인 주도 설계 철저 입문] 1. 도메인 주도 설계 읽게 된 이유

    www.inhabas.com rest 개편 작업 중, 파일 업로드 및 다운로드에 관한 모듈을 따로 생성해야할 필요가 느껴졌다. 그러면서 프로젝트 구조에 관한 고민을 하게 됐다. (아래 글 참고) [Spring boot] 6. 멀티모듈? MSA? 좋은 아키텍쳐? 도대체 뭐야?! 프로젝트 구조 변경을 고민하게 된 배경이 몇가지 있다. (1) layer 는 구분이 가지만, 파일이 많아져서 해당 layer 안의 특정 도메인을 한눈에 찾기가 어려워지고 있다. 또 그렇다보니 어떤 도메인 letsmakemyselfprogrammer.tistory.com 기존에는 모노리식으로 작업하고 있었다. 물론 최대한 영역을 나누어, 의미상 모듈처럼 분리될 수 있도록 "최대한" 의존성을 나누며 작업하고 있었다. ​ 프로젝트 폴더 ..

    [Java의 정석] 05. 배열

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.2 배열의 선언과 생성 byte, short, int, long 타입 배열 : 0으로 초기화 char 타입 배열 : null('/u0000')로 초기화 float, double 타입 배열 : 0.0 으로 초기화 boolean : false 로 초기화 참조 타입 배열 : null 로 초기화 1.3 배열의 길이와 인덱스 - 배열은 한번 생성하면 길이를 변경할 수 없다. - 배열의 길이는 JVM 이 별도로 갖고 있다. - (배열이름).length 로 값을 읽을 수 있다. (상수이기 때문에 변경은 불가능하다.) 1.4 배열의 출력 - 배열 이름을 그대로 println 하게 되면, '배열타입@배열주소' 와 같이 출력된다. - 하지만 char[] 배열은 string ..

    [Java의 정석] 04. 조건문

    모르는 것만 짧고 빠르게 정리한 노트입니다. 2.1 enhanced for statement for (타입_변수명 : 배열_또는_컬렉션) { // do something } - read only, jdk 1.5 부터 추가됨. 2.6 이름 붙은 반복문 Loop1 : for (int i = 2; i

    [Java의 정석] 03. 연산자

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.4 연산자 우선순위 - instanceof 는 비교연산자 , = 와 우선순위가 동일하다. 1.5 일반 산술 변환 - 피연산자의 타입이 다르면, 더 큰 타입으로 자동 형변환된다. (overflow 방지) - 피연사자의 타입이 int 보다 작은 타입이면 int 로 변환된다. 3.1 사칙 연산자 - 상수 또는 리터럴 간의 연산은, 컴파일러가 최적화를 진행한다. char c1 = 'a' // char c2 = c1 + 1; // compile error! 명시적 형변환 필요! char c2 = 'a' + 1; // java complier 에 의해 'b'로 치환됨. 3.2 나머지 연산자 - 우항은 0이 될 수 없다. - 음수도 가능한데, 양수일 때와 절대값이 동일..

    [Java의 정석] 02. 변수

    모르는 것만 짧고 빠르게 정리한 노트입니다. 1.1 변수란? : 단 하나의 값을 저장할 수 있는 메모리 공간. 1.2 변수의 선언과 초기화 : 변수를 선언하면, 메모리 빈 공간에 변수타입에 알맞은 크기의 저장공간이 확보되고, 이 공간은 변수이름을 통해 사용할 수 있게 된다. : 추가로 하나의 프로세스는 가상 메모리를 OS 의해 할당받는데, 하나의 java application 또한 가상 메모리를 할당 받는다. 할당받은 가상 메모리를 이용하여, JVM을 띄운다. JVM 은 특별한 설정을 하지 않으면 기본 350MB 정도의 힙 메모리 제한을 갖는다고 한다. 보통 로컬 변수를 생성할 때는 이 힙 메모리에 생성되고 GC 에 의해 관리된다. : 한번 JVM 이 할당한 물리메모리는 GC 가 JVM 내의 힙메모리에서..

    [Java의 정석] 01. 자바란

    [Java의 정석] 01. 자바란

    모르는 것만 짧고 빠르게 정리한 노트입니다. 자바란 현재는 오라클 사에 인수된 썬 마이크로시스템즈에 의해 개발된 객체지향 프로그래밍 언어이다. JVM 때문에 운영체제에 독립적인 이식성(portability)이 뛰어난 언어이다. 전통적인 컴파일러와 인터프리터의 성격을 모두 갖는 하이브리드 컴파일러의 특성을 갖고 있다. 소스코드는 javac(java compliler) 에 의해 bytecode 로 변환된 후 java(java interpreter) 에 의해 런타임으로 해석된다. 자바 언어의 특징 운영체제에 독립적이다. 객체지향 언어이다. 비교적 배우기 쉽다. Garbage Collection 으로 프로그래머가 메모리 관리에 신경을 덜 써도 된다. 네트워크와 분산처리를 지원한다. 멀티쓰레드를 지원한다. 동적 ..

    [서버 장애 (2022-01-11 21:20)] 갑자기 다른 TLS 인증서가 적용됐다?! 홈페이지 차단당함 ㅠ

    [서버 장애 (2022-01-11 21:20)] 갑자기 다른 TLS 인증서가 적용됐다?! 홈페이지 차단당함 ㅠ

    상황: 07일 금요일 저녁, 홈페이지 도메인과 인증서 상의 도메인 불일치로 인해 브라우저에서 '신뢰할 수 없는 사이트'로 차단하는 현상 발생.: 인증서가 갑자기 *.inha.ac.kr 학교 인증서가 걸려버림.: 기존 서버는 학교 내부에 위치하고 있었음.분석IS 라우팅 오류로 교내 서브넷이 한꺼번에 묶였다?=> CIDR 방식의 라우팅 테이블 특성 상 address aggregation 할 때 longest mask 가 우선하기 때문에, 해당 가정은 의미가 없다.=> dns 라우팅 오류라기에는 *.inhabas.com 이 모두 잘 접속되었다. 다만 인증서만 기존 것이 아닌 학교 인증서가 걸렸다.nginx 까지는 접속이 잘 되는 상황. 로그를 확인해보니 ssl handshake connection close ..

    [서버 장애 (2021-09-13 12:22)] uwsgi  --ini 과 linux effectiveUser 에 대한 문제

    [서버 장애 (2021-09-13 12:22)] uwsgi --ini 과 linux effectiveUser 에 대한 문제

    상황 : 프로젝트 폴더를 옮긴 후 기존의 프로젝트 폴더를 삭제하자마자 발생 : 예산 내역과 명예의 전당 페이지 렌더링 중에 not found file or directory 오류 발생 해결 : 2021-09-13 13:15 : uwsgi 프로세스 ini 시, 기존의 작동하던 프로세스가 꼬여서 새로운 프로세스가 nginx와 연결되지 못함. 기존의 프로세스가 nginx 와 붙은 채로 떨어지지를 않음 : uwsgi 관련 모든 프로세스 강제 종료 후 올바른 권한의 계정으로 새롭게 ini 해주었음 분석 : uwsgi ini 시 프로세스의 effective user 권한이 설계와 다르게 움직이면서, 그에 따른 파일들의 권한도 꼬이게 됨.. 추가 방향 : 서버 권한 및 프로세스 effective user 권한을 분석..