본문 바로가기

IT 관련

java MVC 모델, mvc 모델2 패턴 웹 개발을 하면서 가장 흔하게 접하는 mvc 모델과 그와 관련된 내용을 적어볼까 합니다. 먼저 입구가 되는 뷰는 사용자가 결과를 보거나 입력을 할 수 있는 화면이라고 생각하면 됩니다. 이벤트를 발생시키고, 이벤트의 결과를 보여주는 역할을 합니다. 컨트롤러는 뷰에서 중간을 연결해 주는 연결자라고 생각하면 됩니다. 뷰에서 받은 이벤트를 모델로 연결하는 역할을 합니다. 여기서는 인터페이스를 제공하여 뷰에서 호출하는 부분입니다. 모델은 뷰에서 입력된 내용을 저장, 관리, 수정하는 역할을 합니다. 이벤트에 대한 실질적인 일을 하는 부분입니다. 이와 같이 웹이 아닌2 티어 구조에서는 이렇게 처리됩니다. 하지만 JSP를 사용하는 3 티어로 되어있는 JSP 모델은 주로 모델 1과 모델 2를 사용합니다. JSP 모델1은.. 더보기
java GC (Garbage Collection)에 대해서 자바 기반의 개발을 하면서 쓰레기 객체 처리(이하 GC, Garbage Collection)가 어떻게 수행되는지 잘 모르고 개발하는 개발자가 많이 있습니다. 물론 이 부분에 대해서 반드시 암기하고 숙지해야 개발을 할 수 있는 것은 아닙니다. 그러나 유닉스 서버든, 윈도우 기반의 서버든 Full GC를 수행하는 시점에는 해당 WAS의 컨테이너에서 서비스가 처리되지 않는다는 단점이 있습니다. 다시 이야기하면 GC를 많이 하면 할수록 응답 시간에 많은 영향을 끼친다는 것입니다. 그러므로 자신이 만든 자바 프로그램의 성능을 생각하는 자바 개발자라면, GC가 어떻게 처리되는지 정도의 기본 지식은 갖고 있는 것이 좋을 것입니다. GC란? 자바에서는 메모리 관리를 누가 해야 하는가에 대해서 생각을 좀 해보겠습니다. .. 더보기
[javascript] 기본 디렉터리 구조 다음과 같이 3개의 주요 자바스크립트 디렉터리가 포함된 구조가 가장 많이 쓰입니다. build 최종 빌드 파일을 위한 디렉터리로, 형상 관리 서버에는 이 디렉터리를 저장하지 않습니다. src 소스 파일을 위한 디렉터리로, 관련된 파일끼리 모아놓은 하위 디렉터리를 포함합니다. test 또는 tests 테스트 파일을 위한 디렉터리로, 주로 src 디렉터리 구조와 디렉터리 구조가 같습니다. 제가 관리하는 css 프로젝트는 기본 디렉터리 구조를 조금 변경해서 사용합니다. CSS는 build 디렉터를 형상 관리 서버에 저장하지 않지만, release 디렉터리는 항상 안정된 최신 버전의 빌드 파일을 저장합니다. src 디렉터리는 하위 디렉터리가 여러개 있고 이 하위 디렉터리에는 비슷한 기능끼리 모아두었습니다. te.. 더보기
javascript 자동화 나는 10초면 할 수 있는 일을 자동화하려고 온종일 프로그래밍하는 건 좋아하지 않는다. 2000년도 이전가지는 형상 관리 서버에 저장한 자바스크립트 파일을 주석까지 포함해서 그대로 배포하는 일이 많았습니다. 마치 미러링처럼 로컬에 10개 파일이 있으면 서버에도 똑같이 10개의 파일이 있었습니다. 따라서 로컬 파일과 서버 파일이 완벽히 같아서 변경사항을 빠르게 적용할 수 있었습니다. 이렇게 파일이 서버에 그대로 배포되어 있다 보니 이른바 '소스보기' 시대가 열리게 되었고 많은 웹 개발자가 웹사이트에 접속해 웹 페이지의 소스를 보며 공부하는 시기이기도 했습니다. 당시 자바스크립트는 요즘과 비교해서 용량이 굉장히 작았습니다. 오늘날 최신 웹 어프리케이션은 자바스크립트 코드가 수천 줄에 달하고 코드를 작성하는 .. 더보기
[javascript] 파일과 디렉토리 구조 빌드 시스템을 갖추기 전에 첫 번째로 정해야 할 것은 파일과 디렉토리 구조를 구성하는 방법입니다. 구조는 프로젝트 성격에 아주 큰 영향을 받습니다. 예를 들면 자바스크립트 라이브러리만 단독으로 개발하는 프로젝트와 웹 사이트에 필요한 모든 파일을 관리해야 하는 프로젝트는 구조가 다를 수밖에 없습니다. 1. 좋은습관 다음은 프로젝트 성격과 관계없이 자바스크립트 파일과 디렉토리 구조를 프로젝트에 적용할 때 추천하는 방법입니다. 파일당 객체 하나 각 자바스크립트 파일에 객체 하나만 정의해야 합니다. 이러한 규칙은 다른 프로그래밍 언어에서도 쉽게 찾아볼 수 있으며 일반적으로 유지보수가 더 쉬워집니다. 파일에 하나의 객체만 정의하면 자연스레 파일 수가 많아지는데 이렇게 파일이 많아지면 같은 파일에 여러 명이 동시에.. 더보기
코드에서 구성 데이터 분리하기 코드는 컴퓨터가 실행하는 명령어 집할일 뿐 그 이상도 그 이하도 아닙니다. 데이터는 명령어에 의해 전달되기도 하고 수정되기도 하지만 궁극적으로는 데이터를 이용해 결과물을 만듭니다. 문제는 데이터를 수정할 때 생깁니다. 소스 코드는 수정할 때마다 에러가 발생할 위험이 있는데, 데이터 값을 변경하려고 코드를 바꾸면 다른 명령어에 영향을 미쳐 필요치 않은 위험을 초래합니다. 잘 디자인된 애플리케이션에서는 주요 데이터를 소스 코드밖에 두어 에러가 발생할 걱정 없이 데이터를 수정할 수 있습니다. 1. 구성 데이터란? 구성 데이터는 애플리케이션 코드에 직접 입력된 값입니다. 다음 예제를 통해 살펴보겠습니다. // 코드에 삽입된 설정 데이터 function validate(valeu){ if(!value){ aler.. 더보기
javascript 브라우저 탐지 브라우저 탐지 방법은 웹 개발에서 항상 뜨거운 쟁점입니다. 이 논쟁은 특히 과거에 가장 인기 있었던 넷스케이프 내비게이터의 등장으로 더 일찌감치 시작되었습니다. 당시 넷스케이프 2.0은 다른 웹 브라우저보다 훨씬 발달하여 웹사이트가 사용자에게 정보를 보내기 전에 사용자 에이전트 문자열을 확인하는 것도 가능했습니다. 이 때문에 많은 브라우저 공급사, 특히 마이크로소프트에서는 어쩔 수 없이 당시 쓰였던 브라우저 탐지 방법에 맞춰 사용자 에이전트 문자열을 넣게 되었습니다. 1. 사용자 에이전트 탐지 요즘에는 클라이언트에서 브라우저를 주로 탐지하지만, 쵝에는 서버에서 사용자 에이전트 문자열을 이용하여 브라우저를 탐지했습니다. 당시에는 단지 사용자 에이전트 문자열을 기준으로 서버에서 특정 브라우저의 접속을 막아 .. 더보기
그림판 상단 메뉴 고정하기 (파일, 홈, 보기 메뉴 고정) 안녕하세요 오늘은 윈도우에서 사용하는 그림판 프로그램에서 그림판 상단 메뉴 고정하는 방법을 포스팅하려고 합니다. 저는 이미지 파일을 가끔 수정할 일이 있습니다. 엄청 고난의도 작업이 아니기 때문에 그림판으로도 충분히 가능한데요 직접 사용하다보면 간단한 작업은 그림판으로도 충분히 가능하니 잘 사용하고 있습니다. 그런데 언젠가부터 상단의 메뉴, 홈, 보기 메뉴의 내용들이 클릭을 해야만 보이더군요 그것들을 고정하는 방법을 설명드립니다. 사용하려는 메뉴를 더블 클릭해줍니다. 예를 들면 '홈' 또는 '보기'에 마우스 커서를 놓고 더블 클릭을 하면 고정됩니다. 상단 더블 클릭 적용 후 반대로 상단의 고정 메뉴가 사라지게 하려면 다시 한번 '홈', '보기' 메뉴를 더블클릭해주면 됩니다. 이것으로 간단하게 그림판 상단.. 더보기