개발공부(173)
-
[Vue.js] reactivity와 IIFE(즉시 실행함수)
reactivity와 IIFE(Immediately Invoked Function Expression:즉시 실행함수) 반응을 감지해서 value를 넣어주는 기능을 반응성(reactivity)라고 합니다. Object.defineProperty(대상 객체, 객체의 속성, {정의할 내용}의 형식으로 작성해 div.innerHTML에 value를 set으로 재할당해 값이 변경될 때마다 에 출력해줄 수 있습니다. 반응성은 Vue에 반영이 되어 있기 때문에 직접 정의하지 않아도 Vue 객체를 활용해 사용할 수 있습니다. var viewModel = {}; //객체의 동작을 재정의하는 메소드 Object.defineProperty(viewModel, 'str', { // 속성의 접근했을 떄의 동작을 정의 get: ..
2021.09.18 -
[번역자료] spring boot Logback(로그)
spring Logback spring-boot-starter-logging은 간단한 설정으로 편리한 logging을 제공합니다. 설정은 application.properties, XML 두 가지 방식이 있으며 복잡한 커스텀이 필요하다면 XML을 사용해야지만 됩니다. spring-boot-starter 내에는 logback-classic, slf4j 의존성이 포함되어 있습니다. 작동원리를 이해하기 좋은 방법은 직접 사용하면서 연습해보는 것 같습니다. Logger 예제코드를 위해 Service 클래스를 하나 생성해줍니다. @Service public class LoggerService { private static final Logger LOGGER = LoggerFactory.getLogger(Logge..
2021.09.17 -
[@RequsetBody] @RequestBody와 생성자
@RequestBody와 생성자 결론부터 얘기하자면 @RequestBody는 기본 생성자가 필요합니다. @Builder + (@NoArgsConstructor, @AllArgsConstructor) 같이 쓰는 것과 마찬가지죠. 결론을 봤으니 이해를 위해 원리를 알아야 됩니다. 그러기 위해 Serialize 직렬화, Deserialize 역직렬화를 알아야 합니다. 직렬화는 JSON과 관련이 있는데요, Java Object를 JSON으로 파싱해주는 과정을 직렬화라고 부릅니다. 역직렬화라는 용어는 잘 쓰진 않지만 JSON을 Object로 변환하는 것입니다. @RequestBody가 자동으로 처리해주기 때문이죠. Jackson의 ObjectMapper 클래스가 readValue()라는 메서드로 역직렬화를 해주는..
2021.09.11 -
[Ubuntu설치] 깡통 데스크탑 Ubuntu 설치 및 MariaDB, Redis 설정
깡통 데스크탑 Ubuntu 설치 및 MariaDB, Redis 설정 Ubuntu 설치 미리 준비한 부팅 usb을 사용합니다. (iso 다운방법은 우분투 usb 만들기로 검색하시면 어렵지 않게 찾으실 수 있습니다.) BIOS로 진입해줍니다. 펌웨어에 따라 약간의 차이가 있지만 부팅 시 F12나DEL을 연타하시면 됩니다. Boot할 때 사용할 디바이스를 usb로 설정해주고 setUp을 진행합니다. 그 다음부턴 어렵지 않습니다. 파티션을 나누지 않을거라면 username 지정, open-ssh 설치 등을 진행해주시면 됩니다. ssh의 경우 편의를 위해 나오는 것이지 추후 서버를 실행해서 별도로 설치해도 됩니다. 외부 접속 허용: 외부 접속 허용에 앞서 랜덤한 port 번호로 변경해줍니다(보안을 위해) ssh가..
2021.09.11 -
[Supplier] What is Java 8 Supplier interface?
What is Java 8 Supplier interface? Optional을 사용하다보면 파라미터 타입에 Supplier Interface인 경우가 있습니다. 이는 argument를 가지지 않고 결과를 리턴해주는 연산을 수행해주는 인터페이스 인데요, get() 메서드 즉 하나의 추상 메서드만 가지는 functional method 입니다. (예제코드) static Expression of(String expression) { return Arrays.stream(values()) .filter(v -> matchExpression(v, expression)) .findFirst() .orElseThrow(() -> new IllegalArgumentException(String.format("%s는 ..
2021.09.11 -
[ORM 표준 JPA] 16장(완결) 2차 캐시와 락
트랜잭션과 락, 2차 캐시 1) 트랜잭션과 락 트랜잭션은 ACID를 보장해야합니다. A(Atomicity) 원자성: 트랜잭션 내 실행한 작업들을 마치 하나인 것처럼 모두 실패하거나 성공해야 합니다. C(Consistency) 일관성: 모든 트랜잭션은 일관된 DB를 만족해야 합니다. 데이터 무결성 I(Isolation) 격리성: 동시에 실행되는 트랜잭션은 서로에 영향을 미치지 않도록 격리합니다. 격리성은 동시성과 관련된 성능 이슈 로 격리 수준을 선택할 수 있습니다. D(Durability) 지속성: 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 생겨도 DB 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 합니다. 참고로 트랜잭션은 원자성, 일관성, 지속성을 보장..
2021.09.05