전체 글

전체 글

    [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 connectio..

    [서버 장애 (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 권한을 분석..

    [Django 웹 프로젝트] 7. 유지 보수를 위한 새로운 인가인증 체계 고민 (2021-10-31)

    [Django 웹 프로젝트] 7. 유지 보수를 위한 새로운 인가인증 체계 고민 (2021-10-31)

    https://github.com/InhaBas/Inhabas.com/discussions/77 새로운 권한설계 고민 · Discussion #77 · InhaBas/Inhabas.com — 기존 권한 검사 문제점 — 유저마다 역할과 그룹이 있는데, 어떤 url 요청이 있을 때마다 해당 유저의 역할과 그룹을 확인하는 함수를 이용했다. 권한 관련 설정이 초기에 계획했던 것보다 더 github.com — 기존 권한 검사 문제점 — 유저마다 역할과 그룹이 있는데, 어떤 url 요청이 있을 때마다 해당 유저의 역할과 그룹을 확인하는 함수를 이용했다. 권한 관련 설정이 초기에 계획했던 것보다 더 복잡해지면서, if 문으로 추가되는 코드량이 점점 많아졌다. 현재는 유저 역할이나 그룹에 대한 변경이 필요할 시에, 거..

    [Django 웹 프로젝트] 6. 유지 보수를 위한 새로운 아키텍처 고민 (2021-10-21)

    — 현재 문제점(2021-10-21) — views, DB, 권한간 의존성이 커서 서로 종속적이다. 하나가 수정될 시에 다른 여러곳에 영향을 미칠텐데 그 영향을 최소화할 필요가 있다. (DB 와 views) spring의 dao, domain, dto 와 같은 형태 도입이 필요해보임 view 안에서 db 속성값을 기술하니, 가독성이 떨어짐 db 최적화 등의 이유로 추후 db 모델을 변경할 때, 모든 views 에서 일일히 변경해야함. 다 완벽하게 찾을 수 없음. 장고 ORM 쿼리를 views 에서 직접 날리는 것 안좋은 듯. (DB 와 forms) 현재는 클라이언트 사이드를 장고 템플릿 언어로 해결하고 있지만, 향후 vue로 분리될 것을 생각하면, forms 는 vaildation의 역할만 하게 됨. f..

    [Spring Boot] 4. 로컬 개발을 위한 CORS 설정 - (1) w3c recommendation

    공식 레퍼런스 https://fetch.spec.whatwg.org/ [프론트 단에서의 비동기 통신 요청] - XMLHttpRequest 객체를 이용한 AJAX(AsynchronousJavaScript And XML (en-US)) 프로그래밍을 용이하게 하기 위해 jquery-ajax/fetch/axios 를 사용함. [서버 단에서의 비동기 통신 응답] - api 엔드포인트에서 적절한 응답을 보내주면 되는데, 이 때 CORS 정책을 잘 지켜주어야 한다. 1. CORS(Cross Origin Resource Sharing)란? - Origin 이 다른 경우에 자원을 주고 받을 수 있도록 하는 http 통신 프로토콜. - Origin 은 https://naver.com, http://localhost:808..

    [Django 웹 프로젝트] 5. static file name hashing 하기 (2021-09-09)

    [배경] 당시에 프론트 단의 js validation 로직을 구현하고 서버에 적용을 시켰는데, 적용된 파일이 제대로 작동하지 않는 현상이 발생했다! 일일이 서버의 파일 수정 -> 빌드 -> 재배포 하면서 계속 디버깅해본 결과,, static file 이 브라우저에 의해 캐시되고 있어서 변경된 js 파일이 적용되지 않았던 것이다. 파일 이름은 동일하니까, 브라우저 입장에서는 해당 파일이 변경되었는지 알 수 없다. [가능한 대처 방안] 이 경우에는 사용자가 직접 쿠키를 지우거나, ctrl+f5 눌러서 새로 정적파일을 받아오거나 파일 이름에 해시값을 붙여, 배포 시에 변경된 파일 이름만 해시값을 변경해주는 방식 파일 이름에 태그를 붙이는 방식인데, naver 메인페이지 html 헤더 보니까, 태그에 수정날짜를..