전체 글 144

토비의 Spring_Chapter06_AOP

AOP를 바르게 이용하려면 등장배경과 스프링이 도입한 이유, 그에 대한 장점이 무엇인지에 대한 충분한 이해가 필요하다. 6.1 트랜잭션 코드의 분리 트랜잭션 인터페이스를 썼음에도 비즈니스 로직 내 트랜잭션코드가 많다. 하지만 트랜잭션의 경계는 비즈니스 로직의 전후에 설정돼야 하는 것이니 문제가 없다. 메소드 분리 UserService.java public void upgradeLevels() throws Exception { TransactionStatus status = this.transactionManager.getTransaction(new DefaultTransactionDefinition()); try { List users = userDao.getAll(); for (User user : u..

Spring 2022.11.10

토비의 Spring_Chapter04_예외

JdbcTemplate을 대표로 하는 스프링의 데이터 액세스 기능에 담겨 있는 예외처리와 관련된 접근 방법에 대해 알아본다. 이를 통해 예외를 처리하는 베스트 프랙틱스도 살펴본다. 4.1 사라진 SQLException 3장에서 JdbcTempltae을 적용하면서 SQLException이 사라졌다. UserDao.java 일부 //jdbcTemplate 적용 전 public void deleteAll() throws SQLException { this.jdbcContext.executeSql("delete from users"); } //jdbcTemplate 적용 후 public void deleteAll() { this.idbcTemplate.update("delete from users"); } 그렇..

Spring 2022.10.27

오픈소스SW_Chpater08_병합과 충돌

1. 병합 브랜치를 생성하는 목적은 원본 코드에 영향을 주지 않고 분리하여 개발하기 위함이다. 독립된 브랜치에서 개발 작업이 끝나면 다시 원본 브랜치에 작업한 결과를 반영해야한다. 병합은 분리된 브랜치를 한 브랜치로 합치는 작업이다. 깃의 병합은 브랜치를 기준으로 실행한다.병합할 때는 상대적인 기준을 판별하는 알고리즘들이 존재하며 Fast-Forward 병합과 3-way 병합 방식을 제공한다. git merge 병합할 브랜치명 Fast-Forward 깃의 가장 간단한 브랜치 병합 방식으로 순차적 커밋에 맞추어 병합을 처리하는 방법이다. 혼자 개발할 때 주로 사용한다. 작업한 브랜치를 원본 브랜치에 병합할 때 작업한 브랜치의 시작 커밋을 원본 브랜치 이후에 커밋으로 가리킨다. 브랜치를 병합하려면 기준과 대..

오픈소스SW 2022.10.24

오픈소스SW_Chapter07_임시 처리

스태시 작업 브랜치를 변경하려면 워킹 디렉터리는 정리된 상태여야 한다. 즉 워킹 디렉터리에 작업 중인 내용이나 커밋되지 않은 변경 사항들이 남아있으면 브랜치를 변경할수 없다. 대신 현재 수정 작업을 멈추고, 다른 브랜치에 있는 코드를 수정하려면 스태시 기능을 사용할 수 있다. 스태시는 현재 워킹 디렉터리 내역을 별도의 스택 영역에 잠시 보관하라는 명령이다. 이는 브랜치를 이동할 때 작업 중인 내용 때문에 워킹 디렉터리가 충돌하는 것을 방지하는데 사용된다. 스태시 명령을 실행하면 현재 작업 중인 내용은 임시 저장되고, 수정 전 마지막 커밋 상태로 돌아간다. 즉, 이전 커밋 후 작업하지 않은 상태의 워킹 디렉터리가 된다. 실행법 git stash save "메시지" : 스태시 여러 개를 생성할 때 list ..

오픈소스SW 2022.10.24

컴퓨팅클라우드_Chapter4_AcademyCloudFoundations_Module

5.Networking and Content Delivery 이 Chpater에 앞서 Network, IP, SubNet에 대한 기본적인 개념을 알아햐 합니다. 이에 대한 관련 글은 다음 링크에 있습니다. https://goldtree-of-ce.tistory.com/m/68 Open Systems Interconnection (OSI) model OSI는 컴퓨터 네트워크 프로토콜 디자이놔 통신을 계층으로 나누어 설명한 것이다. 일반적으로 OSI 7계층이라 불리기도 한다. Layer Number Function Protocl/ Address Application 7 - Means for an application to access a computer network. - 응용 프로세스와 직접 관계하여 일반..

AWS 2022.10.21

토비의 Spring_Chapter03_템플릿

변화의 특성이 다른 부분을 구분해주고, 각각 다른 목적과 다른 이유에 의해 다른 시점에 독립적으로 변경될 수 있는 효율적인 구조를 만들어주는 것이 개발 폐쇄 원칙이다. 템플릿이란 이렇게 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법이다. 3.1 다시 보는 초난감 DAO UserDao의 코드에는 아직 문제점이 남아 있다. 바로 예외상황에 대한 처리다. 예외처리 기능을 갖춘 DAO 자원 과부화를 예방하기 위해 어떤 이유로든 예외가 발생했을 경우에도 사용한 리소스를 반드시 반환하도록 만들어야 한다. JDBC 수정 기능의 예외처리 코드 UserDao.java 일..

Spring 2022.10.19

컴퓨팅클라우드_Chapter03_스토리지 S3

스토리지(Storage) 컴퓨터에 데이터를 저장하는 저장소의 역할을 수행하는 부품이다. Direct Attached Storage(DAS) PC나 서버에 다이렉트로 꽂아서(Usb처럼) 사용하는 스토리지 서버와 하드웨어를 1:1로 연결한다. Network Attached Storage(NAS) DAS에 네트워크 기능을 탑재한 스토리지 서버와 저장장치가 이더넷등의 LAN방식의 네트워크에 연결된 방식이다. Storage Area Network 전용네트워크(Fiber Channel)를 통한 고속 DIsk I/O 서버간 물리적인 Disk분할 사용(블럭기반)의 연결이 된다. S3 인터넷 스토리지 서비스로 HTTP 프로토콜로 파일을 접근하는 정적 웹 서비스이다. 무한대의 저장용량을 갖고 있으며, 용량 추가 및 성능 ..

AWS 2022.10.14

토비의 Spring_Chapter02_테스트

애플리케이션은 계속 변하고 복잡해져 간다. 그 변화에 대응하는 첫 번째 전략이 확장과 변화를 고려한 객체지향적 설계와 그것을 효과적으로 담아낼 수 있는 IoC/DI 같은 기술이라면, 두 번째 전략은 코드의 확신과 변화에 유연하게 대처할 수 있는 자신감을 주는 테스트 기술이다. 2.1 UserDaoTest 다시보기 테스트란 결국 내가 예상하고 의도했던 대로 코드가 정확히 동작하는지를 확인해서, 확신할 수 있게 해주는 작업임과 동시에 코드나 설계에 결함을 확인할 수 있다. UserDaoTest의 특징 UserDaoTest의 특징은 다음과 같다. main() 메소드를 이용한다. 테스트할 대상인 UserDao의 오브젝트를 가져와 메소드를 호출한다. 테스트에 사용할 입력 값(User 오브젝트)을 직접 코드에 만들..

Spring 2022.10.14

토비의 Spring_Chapter01_오브젝트와 의존관계

개요 스프링은 자바 기반의 프레임워크다. 그리고 자바의 가장 큰 특징이라면 객체지향 프로그래밍이 가능한 언어라는 것이다. 자바 엔터프라이즈 기술(Java EE)의 혼란속에서 잃어버렸던 객체지향 기술의 진정한 가치를 회복시키고, 그로부터 객체지향 프로그래밍이 제공하는 폭넓은 혜택을 누릴 수 있도록 기본으로 돌아가자는 것이 스프링의 핵심 철학이다. javaEE에 대해 궁금할 수 있지만 이번 챕터는 오브젝트에 초점을 맞췄기에 간단히 알아보면 다음과 같다. 더보기 JAVA EE(Java Enterprise Edition) Java EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합니다. 자바로 구현된 웹프로그래밍에서 가장 많이 사용되는 JSP, Servlet을 비롯하여 데이터..

Spring 2022.10.11

웹어플리케이션_Chapter06_날씨 어플리케이션 제작

이번 챕터는 Open Weather API를 이용해서 날씨 데이터를 받아와 날씨 웹 어플리케이션을 제작하는 것을 배울것이다. 기본 용어 웹 어플리케이션을 제작하기 위해 기본적으로 숙지해야 할 용어들이 있다. API Application Programming Interface의 약자로 두 개의 어플리케이션이 서로 통신하는 방법(요청과 응답)을 정의하는 것이다. JSON JavaScript Object Notation Key/ value 형식을 전달하기 위해 정의된 형식으로 {키 : 값, 키 : 값} 의 형태로 여러 쌍을 저장한다. Open Weather API Open Weather은 40,000개 이상의 기상 관측소 데이터 기반으로 70,000개의 도시의 현재 날씨 정보를 제공한다. https://ope..