전체 글
-
1장 1교시 : 실습 환경 구축리눅스 2020. 5. 26. 00:57
VMWare Workststion 12 Pro 설치 - Win10 [다운받는곳] https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/12_0 [설치과정] 1. VMware Workstation 12 Pro 다운받기 2. VMware Workstation 12 Pro 설치 이상으로 VMWare WorkStation 12 Pro를 설치하고 실행해 보았습니다.
-
0장 : 리눅스를 사용하는 이유리눅스 2020. 5. 26. 00:55
윈도우 시대에 리눅스의 역할은? 리눅스(Linux)는 컴퓨터 운영체제의 한 종류이자 커널 자체를 의미한다. 스마트폰 운영체제로 많이 사용되고 있는 안드로이드(Android)도 리눅스 기반의 오픈소스 운영체제입니다. 리눅스는 오픈소스 운영체제로 전 세계의 많은 개발자들이 개발에 참여하여 데스크탑 뿐만이 아니라 중소형 서버 운영체제로도 다양하게 사용되고 있습니다. 리눅스의 특징 1. 유닉스 기반 리눅스 커널 자체가 유닉스의 미닉스(Minix)를 참고하여 개발 되었습니다. 기존의 유닉스는 높은 하드웨어 스펙을 기반으로 복잡하고 큰 네트워크 시스템을 위해서 만들어진 운영체제였습니다. 하지만 리눅스는 여기에서 커널과 명령어 체계를 바꾸어서 일반인들이 보다 사용하기 쉽게 하였습니다. 그리고 유닉스를 기반으로 하기 ..
-
Client Connection Pool Manager 설정(1)Spring 2020. 3. 17. 14:13
ClientConnectionPoolManager의 풀을 유지 관리하고 HttpClientConnection여러 실행 스레드의 연결 요청을 처리 할 수 있습니다. 연결은 경로별로 풀링됩니다. 이미 관리자가 풀에서 사용 가능한 영구 연결을 가지고있는 경로에 대한 요청은 완전히 새로운 연결을 만드는 대신 풀에서 연결을 임대함으로써 서비스가됩니다. @PostConstruct private void init() { CommonUtil.sConnectTimeout = connectTimeout; CommonUtil.sSocketTimeout = socketTimeout; PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager..
-
지속 가능한 소프트웨어를 위한 코딩 방법(1)주니어 개발자 2020. 2. 26. 21:39
서론 1. 소프트웨어의 기능이 점차 복잡해지면서 개발자를 더 많이 투입 2. 하지만 현실은 프로젝트에 투입된 개발자는 많아졌지만 소프트웨어를 개발하는 속도와 기능 추가 속도는 비례하지 않는다. 3. 새로운 기능을 추가하거나 버그 수정하면 다른 기능에서 버그가 새롭게 생겨나 상황이 더욱 나빠질 수 있습니다. 4. 즉 개발자가 버그를 관리하지 못하면서 소프트웨어는 신뢰성을 잃고, 사용자는 하나 둘 떠나기 시작한다. 5. 그래서 소프트웨어의 신뢰성을 높이기 위해서 개발자들은 소스코드를 이해하기 쉽게 만드려고 합니다. 6. 의식의 흐름대로 자연스럽게 읽혀서 소프트웨어가 어떤 동작을 하는지 쉽게 이해되는 코드가 좋다. 7. 이 글은 소프트웨어의 복잡성을 줄이기 위한 정리이다. DRY 원칙 1. 하나의 기능이 여러..
-
Pageable 사용하기JPA 2020. 2. 8. 12:13
개요 JPA를 이용해서 Paging API를 만들어 보도록 하겠습니다. 페이징 처리는 거의 모든 웹 개발에서 사용하고 있습니다. 그렇게 복잡하고 어려운 구현은 아니나 실제 쿼리로 작성할 때는 상당히 번거로운 작업이 됩니다. 또 데이터베이스마다 페이징 쿼리가 조금씩 다르다는 점도 복잡도를 높이는 요인 중 하나입니다. Paging이란? DB에 저장된 Entity들을 페이지로 나누는 것이다. 예를들어, DB에 21개의 게시판이 작성되어있다. 프론트에서 "DB에 있는 게시판을 5개씩 분류해서, 두 번째 파트를 줘!" 라고 요청한다. 그러면 백엔드에서는 5개씩 분류하고, 분류된 게시판들의 두 번째 파트를 프론트에게 넘겨준다. 위 상황과 같이, 일정 갯수만큼 분류하고, 분류된 부분들 중 어떤 부분을 보내주는 것이 ..
-
고급 객체지향 프로그래밍(3)객체지향 2020. 1. 20. 21:33
3. 캡슐화 3.1. 객체의 캡슐화 원칙 객체지향 패러다임의 캡슐화는 연관된 속성들과 연관된 오퍼레이션들을 하나의 단위인 객체로 묶어서 정의하는 원칙이다. 객체가 특정 기능을 제공하는 데 필요한 속성 및 오퍼레이션을 한 캡슐에 모아서 정의해야 한다. 3.2. 객체안의 관련성 종류 객체는 관련된 속성들과 오퍼레이션들을 모아놓은 캡슐인데, 여기서 관련이 있다는 것이 구체적으로 무엇을 의미하는지 살펴보자 3.2.1 속성들 간의 관련성 객체는 관련이 있는 여러 속성들로 구성되어야 하는데, 이 속성들 간의 관련성은 두 가지 형태로 나타낸다. * 유형 1 상태 유지 완전성 관점의 관련성 객체는 그 상태 유지를 위해 필요한 속성들의 완전한 집합을 가져야 한다. 예를 들면 원이란 도형 객체의 상태를 유지하기 위해서 x..
-
고급 객체지향 프로그래밍(2)객체지향 2020. 1. 17. 23:04
2. 객체 2.1. 객체의 정의 객체는 객체지향 패러다임에서 프로그램을 구성하는 기본 단위이다. 개발하려는 목표 시스템의 업무 영역에 실제로 존재하는 어떤 사물, 개체 또는 개념이 바로 객체가 된다. - Person: 인사관리 시스템에 사용되며, 조직의 직원을 나타내는 객체 - Car: 자동차 생산관리 시스템에 사용되며, 생산된 자동차를 나타내는 객체 - Book: 서점의 도서판매 시스템에 사용되며, 판매할 책을 나타내는 객체 객체지향 프로그램은 여러 개의 객체들로 구성되어 있으며, 각 객체는 상태(State) 정보를 기록 유지하기 위한 속성들과 이 속성들을 처리하는 오퍼레이션 집합으로 정의된다. 즉, 각 객체는 관련성이 높은 속성들과 오퍼레이션들을 포함하고 있다. 잘 설계된 객체는 재사용의 기본 단위가..