본문 바로가기

Programming121

[TIP] 부정조건문은 의미해석이 쉽지 않다. 일반적으로 if 문은 아래와 같이 진행됩니다. if(){ //진행 }else{ //예외를 던짐 } 코드를 진행하기에 앞서 if문으로 검사를 하고 예외의 경우 else문에서 예외를 던집니다. 예시 문자열이 비었는지를 체크하고 코드를 진행하는 로직을 2가지로 제시해보겠습니다. if(!isEmpty(exStr)){ execute(); }else{ throw new Exception("String is empty!"); } if(hasContent(exStr)){ execute(); }else{ throw new Exception("String is empty!"); } 차이점은 첫번째 방법은 조건문에 부정연산자가 들어갔다는 것입니다. 결론은 두번째 방법이 좀더 클린한 코드가 되겠습니다. 왜냐면 아래와 같이 조.. 2022. 3. 8.
js, css, html 파일 웹 브라우저 캐싱 방지 - 쿼리 스트링 문제 원인 해결책 참고 문제 웹 소스들 (html, js, css)에 수정을 하여 서버에 반영해도, 브라우저 상에서 반영이 안 되는 경우가 있습니다. 운영 서비스일 때는 이 문제가 더 심각합니다. 새로운 버전을 만들어 서버에 배포를 했어도, 실제 브라우저에서는 개발자 도구를 열어봐도 이전 javascript파일 (기타 정적 파일들, css 등)을 로딩하는 경우가 발생하는 것입니다. 원인 웹브라우저는 js, css파일을 캐싱해놓고, 동일한 url을 요청한다면 캐싱해둔 소스(이전 소스)를 가져옵니다. 수정한 파일을 서버에 올린다 한들 브라우저는 캐싱되어있는 동일한 url의 소스가 있는 한 새로운 소스를 가져오지 않습니다. 그니까 브라우저가 캐싱하는 것은 문제가 아니고, 캐싱해놓고 내가 새로 올린 파일은 애초.. 2022. 3. 4.
[ORACLE] 시퀀스를 여러 테이블에서 공유하면 안될까 테이블마다 시퀀스 객체를 만들지 말고, 하나의 시퀀스를 만들어서 공유하면 안 될까? 일단 테이블의 pk 컬럼이 insert 순서대로 증분 값을 정확히 1씩 가져가지 않아도 된다는 전제로 포스팅합니다. 테이블을 새롭게 생성하면서 PK에 해당하는 컬럼에는 대부분 시퀀스 객체의 nexval을 insert 해줍니다. 그러다 문득 이와 같은 궁금증이 생기게 되어 포스팅하게 되었습니다. 테이블마다 시퀀스 객체를 왜 하나씩 만들어주지? 그냥 시퀀스 하나로 공유해서 쓰면 안 되나? 일단 결론은 그리 추천하지 않는 방법입니다. 원칙적으로 안되는건 아니나, 지양하는 것이 맞겠죠. 여러 세션에서 시퀀스의 nextval을 호출하게되면 순차적으로 nextval을 제공합니다. (시퀀스의 cache 옵션은 일단 배제하겠습니다.) .. 2022. 3. 3.
HTML의 개요 목표 HTML의 기본 개념과 특징을 이해한다. HTML의 기본 구조와 작성방법을 숙지한다. HTML을 작성하고 실행한다. 목차 마크업 언어 HTML이란? HTML 관련 참고할만한 사이트 마크업 언어 마크업 언어란 태그따위를 이용하여 문서나 데이터의 구조를 명기하는 언어입니다. 일반적으로는 데이터의 구조까지만기술할 수 있기 때문에 프로그래밍언어라고 보지는 않습니다. 마크업 언어로 기술된 문서 안에는 아래와 같은 마크업들이 들어갑니다. 내용 (content) : 문서의 본문 내용 제목, 주소와 같은 데이터를 나타내는 의미적 마크업. 구조 (structure) : 문서의 구성 정보 문단, 제목글 등과 같은 구조적 마크업. 스타일 (style) : 문서의 표현 방법 모양, 생상 등을 나타내는 양식적 마크업. 마.. 2022. 3. 2.
[운영체제] 프로세스 (Process)와 스레드 (Thread) 목차 프로세스 (Process) 스레드 (Thread) 스케줄링(scheduling) 참고 프로세스 (Process) 프로세스란 운영체제에서 현재 실행 중인 프로그램입니다. 크롬 브라우저를 예로 들면 평소 실행되지 않을 때에는 프로그램 (동작을 하지 않는 정적, 수동적 개체)이었다가 실행을 하면 프로세스 (동작을 하는 능동적 개체)가 됩니다. 위 스크린샷에서 제 메모리를 가장 많이 점유하는 프로세스는 Intellij IDEA입니다. 여기서 IntelliJ 프로그램이 3개의 프로세스 (서로다른 PID, 인스턴스)로 띄워져 있고 서로 완전히 다른 독립적인 프로세스입니다. Intellij IDEA는 프로그램이고 이 프로그램이 3개의 프로세스가 실행 중인 상황인 겁니다. 프로세스를 Task라고도 합니다. 나아가.. 2022. 2. 25.
[TOMCAT] webAppRootkey 지정 목차 에러 메시지 원인 해결책 에러 메시지 java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [.../tomcat/webapps/애플리케이션A/] instead of [../tomcat/webapps/애플리케이션B/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 해석 : "webapp.root"라는 value가 이미 설정되어있으니 web.xml의 'webAppRootKey' context-param에 유니크한 value를 지정하라! 원인 web.xml의 c.. 2022. 2. 24.