분류 전체보기

공부하면서 얻은 지식들

로깅(Logging)

로그(Log)란 프로그램 개발이나 운영 시 발생하는 문제점을 추적하거나 운영 상태를 모니터링하기 위한 텍스트이다. System.out.println(); 를 사용하여 로그를 확인할 수 있지만 일반적으로, 실무에서는 로그를 기록하는 클래스를 만들어 사용한다. /* getClass()메서드를 통해 사용되는 클래스 타입 반환하여 삽입 */ private Logger log = LoggerFactory.getLogger(getClass()); 로그(Log)는 다음과 같은 레벨을 가진다. 낮은 순서대로 나열하겠다. TRACE : 디버그 레벨이 너무 광범위한 것을 해결하기 위해서 좀 더 상세한 이벤트를 나타낸다. DEBUG : 디버그 용도로 사용하는 메시지를 나타낸다. INFO : 어떠한 상태 변경과 같은 정보성 ..

객체지향(Java)

객체지향의 사실과 오해 부록A. 추상화 기법 (2)

객체지향 프로그래밍 언어를 이용해 타입을 구현하는 가장 보편적인 방법은 클래스를 이용하는 것이다. 클래스는 타입을 구현하는 용도 외에도 코드를 재사용하는 용도로 사용되기도 한다. 클래스 외에도 인스턴스를 생성할 수 없는 추상 클래스나 인터페이스를 이용해 타입을 구현할 수도 있다. 일반적으로 동일한 범주에 속하는 객체는 동일한 클래스의 인스턴스여야 한다. 계층의 상위에 위치한 범주를 계층의 하위에 위치한 범주의 일반화라고 하고, 계층의 하위에 위치한 범주는 계층의 상위에 위치한 범주의 특수화라고 한다. 내연의 관점에서 특수한 타입을 일반적인 타입의 속성을 포함한다. 외연의 관점에서 서브타입은 슈퍼타입의 부분집합이다. 프로그래밍 언어를 이용해 일반화와 특수화 관계를 구현하는 가장 일반적인 방법은 클래스 간의..

객체지향(Java)

객체지향의 사실과 오해 부록A. 추상화 기법 (1)

추상화는 도메인의 복잡성을 단순화하고 직관적인 멘탈 모델을 만드는 데 사용할 수 있는 가장 기본적인 인지 수단이다. 도메인에 존재하는 개념들을 구조화하고 단순화하기 위해 다양한 추상화 기법을 사용한다. 객체지향의 가장 큰 장점은 동일한 추상화 기법을 프로그램의 분석, 설계, 구현 단계에 걸쳐 일관성 있게 적용할 수 있다는 점이다. 객체를 분류하고 범주로 묶는 것은 객체들의 특정 집합에 공통의 개념을 적용하는 것을 의미한다. 개념이란 속성과 행위가 유사한 객체에 공통적으로 적용되는 관념이나 아이디어다. 세상에 존재하는 객체에 개념을 적용하는 과정을 분류라고 한다. '수많은 개별적인 현상들'을 객체라고 하고, '하나의 개념'을 타입이라고 한다. 타입을 객체의 분류 장치로서 적용할 수 있으려면 다음과 같은 세..

CS/소프트웨어공학

유스케이스

유스케이스의 특성 1. 유스케이스는 사용자와 시스템 간의 상호작용을 보여주는 '텍스트'다. 유스케이스는 다이어그램이 아니다. 중요한 것은 유스케이스 안에 포함되어 있는 상호작용의 흐름이다. 2. 유스케이스는 하나의 시나리오가 아니라 여러 시나리오들의 집합이다. 시나리오는 유스케이스를 통해 시스템을 사용하는 하나의 특정한 이야기 또는 경로다. 3. 유스케이스는 단순한 피처 목록과 다르다. 피처는 시스템이 수행해야 하는 기능의 목록을 단순하게 나열한 것이다. 4. 유스케이스는 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다. 유스케이스는 자주 변경되는 사용자 인터페이스 요소는 배제하고 사용자 관점에서 시스템의 행위에 초점을 맞춘다. 5. 유스케이스는 내부 설계와 관련된 정보를 포함하지 않는다. ..

객체지향(Java)

객체지향의 사실과 오해 4장. 역할, 책임, 협력

4장. 역할, 책임, 협력 협력이라는 것은 객체의 행동 방식을 결정한다. 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이 중요한 것이다. 객체의 모양을 빚는 것은 객체가 참여하는 협력이다. 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태를 결정한다. 협력 -> 행동 -> 상태 4-1. 협력 4-1-1. 요청하고 응답하며 협력하는 사람들 협력의 본질은 요청과 응답으로 연결되는 사람들의 네트워크다. 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작된다. 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다. 4-1-2. 누가 파이를 훔쳤지? 객체지향의 세계는 동일한 목적을 달성하기 위해 협력하는 객체들의 공동체이다. 객체지향의 관점에서 재판 장면에 등장하는 모든 ..

Spring

Spring MVC 동작순서

동작 순서 1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 3. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다. 4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다. 5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. 6. viewResolver 호출 : 뷰 리졸버를 찾고 실행한다. (JSP의 경우 InternalResourceViewResolver가 자동 등록되고, 사용된다.) 7. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환한다. ..

공부하면서 얻은 지식들

어댑터 패턴(Adapter Pattern)

해외 여행 갔을 때, 전원 어댑터 규격이 맞지 않았던 경우 있으신가요? 코드를 작성할 때도 마찬가지인 경우가 생길 수 있습니다. 그래서 어댑터 패턴이라는 것이 등장하였습니다. 이는 클라이언트의 요구 타입과 반환 타입이 다를지라도 중간에 어댑터를 둠으로써 둘을 연결해주는 것입니다. public class Math { public static double twoTime(double num) { return num * 2; } public static double half(double num) { return num / 2; } } 기존에 double 타입의 값을 받아 두 배를 반환하는 twoTime 메서드와 절반을 반환하는 half 메서드가 있습니다. 그런데 요구사항이 있습니다. 1. Float 매개변수를 ..

공부하면서 얻은 지식들

import os [파이썬 자동화]

import os 를 통해 내 컴퓨터 안의 있는 파일들을 다룰 수 있다. os.listdir(경로) : 폴더 안의 내용을 문자열로 된 리스트로 출력한다. os.path.abspath() : 해당 파일 혹은 폴더에 대한 절대 경로를 출력한다. os.path.exists() : 해당 경로가 실제로 존재하는 경로인지 True or False로 출력한다. os.path.join() : 여러 경로를 합쳐준다. os.walk() : 파라미터의 경로 아래에 있는 모든 폴더, 파일들을 출력한다. for문과 같이 사용한다. 예시 ) for path, directory, files in os.walk("/"); os.rename(파일의 원래경로, 이동할 경로) : 파일의 이름을 변경해준다. 혹은 파일을 이동시킨다.

화서동 병아리
'분류 전체보기' 카테고리의 글 목록 (4 Page)