분류 전체보기
-
20.03.09 ~ 20.03.14 TWIL개발 일기장/TWIL 2020. 3. 15. 23:52
refrence로 전달되는 리스트를 변형해서 값을 반환할 때는 안전하게 복사해서 사용하자. 코드 리뷰 당시 인자로 전달되는 객체를 사용하는 곳이 없어서 변경하지 않아도 됐지만, 안정적인 코드 개발을 위해 필요한 습관. 인자로 받는 객체를 다른 곳에서도 사용할 수 있는데, 인자로 받은 객체를 변경해버리면 다른 사용하는 곳에서도 변경이 일어나버리기 때문에 side effect를 생각해서 객체를 복사해서 사용하는게 낫다. public Product makeCookieBox(Ingredient ingredient) { return new Product( getCandy(ingredient), getChocolate(ingredient), // 예제 메서드 getSnack(ingredient) ); } // AS..
-
20.03.02 ~ 20.03.07 TWIL개발 일기장/TWIL 2020. 3. 7. 17:02
이번주 코드리뷰, 개발을 통해 배운 것들. 1. 가독성! private static final BASE_URL_PREFIX = "https://zorba91.tistory.com"; // Before String secondContentUrl = BASE_URL_PREFIX+"/2" // After // 문자열을 연결할 때 + 사이에 공백을 주자. String secondContentUrl = BASE_URL_PREFIX + "/2" // Before if(isMatch(args)) { // do something... } // After // if문 딱 붙이지말고, 뒤에 공백을 주자. if (isMatch(args)) { // do something... } 2. 외부 의존성을 띈 테스트는 줄이자. 통..
-
[운영체제] 운영체제와 정보기술의 원리 - 반효경IT, 기술 도서 2020. 3. 7. 09:59
CS(Computer science) 지식의 부족함을 느끼며 지냈기에 가벼우면서 간단하게 요약된 책을 찾고 있었다. 당장 일을 하기 위해 필요한 지식들을 습득하기에도 급급하기 때문에 흔히 OS를 한 방에 정리할 수 있는 '공룡책'을 읽을 시간적 여유, 마음적 여유가 없었고, 당장 내게 우선순위를 따졌을 때 OS의 깊이있는 공부는 우선순위가 높지 않았다. 그래서 찾은 책이 '운영체제와 정보기술의 원리'! (뵌적은 없지만 대단하다 생각하는 다른 개발자분의 블로그 글에서 칭찬하고 있었던 책이었다.) 책은 부담스럽게 두껍지 않고 약 300페이지 되는 분량이다. OS에 필요한 기본적인 목차들을 가져가며 이해하기 쉽게 설명하고 있다. '패스트캠퍼스'에서 OS 강의를 한 번 완강하긴 했지만, 공부란게 공부했던 것도 ..
-
[MySQL] B-tree, B+tree란? (인덱스와 연관지어서)DataBase/MariaDB & MySQL 2020. 2. 10. 20:37
B-tree는 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 'B'는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 'Balanced'를 의미하는 'B'가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tree로 이뤄져있는데, B-tree의 확장된 개념이다. 먼저 B-tree를 살펴보자. 트리 구조의 우위성 트리 구조는 꼭 데이터베이스에 한정하지 않더라도 시스템 세계에서는 데이터를 유지하기 위해 자주 사용하는 구조이다. '탐색' 시, 단시간 내에 실행할 수 있기 때문이다. B-tree의 핵심은 데이터가 정렬된 상태로 유지되어 있다는 것이다. 그림에 표시된 사각형으로 표시된 한 개 한 개의 데이터를 '노드(Node)'라고 한다. 가장 상단의 노드를 '루트 노드(Ro..
-
[MySQL] 인덱스(Index) 정리DataBase/MariaDB & MySQL 2020. 2. 9. 11:50
인덱스(Index) 정리 인덱스를 알아보기 전에 풀 스캔(Full Scan)과 레인지 스캔(Range Scan)을 이해해야 한다. 풀 스캔(Full Scan) & 레인지 스캔(Range Scan) 풀 스캔 : 테이블에 포함된 레코드를 처음부터 끝까지 읽어들인다. 레인지 스캔: 테이블의 일부 레코드에만 엑세스한다. 앞으로 예시로 들 테이블 구조 CREATE문 CREATE TABLE `user` ( `idx` bigint(20) NOT NULL AUTO_INCREMENT, `created_date` datetime DEFAULT NULL, `email` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) DEFAULT NULL, `password` varchar(..
-
[WebFlux] publisher(발행) - subscriber(구독) 패턴에 대해서웹 개발/WebFlux 2020. 1. 24. 16:00
publisher(발행) - subscriber(구독)패턴에 대해서 처음 WebFlux를 썼을 때, publisher와 subscriber 모델의 개념을 이해하지 못해서 삽질을 많이했다. spring mvc로 동기식 개발을 할 때는 메서드 호출만 하면 결과값이 return 됐었다. 그러나, reactive하게 동작하는 WebFlux에서는 메서드만 호출해서는 아무 일이 일어나지 않는다. (reactive 선언문) 개념 publihser - subscriber패턴은 observer 디자인 패턴과 유사한 부분이 많다. 옵저버 패턴 위키피디아의 옵저버 패턴 설명을 보자. 옵서버 패턴(observer pattern)은 객체(subject)의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들(observers)의 목록을..
-
[Study] Reactive 선언문(그대로 인용)웹 개발/웹&프로그래밍 2019. 12. 26. 23:57
Webflux를 활용하려면 꼭 머릿속에 두어야 하는 내용이지만, 깜빡할 때를 대비해 아예 블로그에 그대로 가져옴. Reactive 선언문 2014년 9월 16일에 발행됨. (v2.0) 다른 분야에서 활동하는 조직들은 유사한 소프트웨어를 구축하기 위한 패턴들을 독립적으로 발견하고 있습니다. 이러한 시스템은 보다 견고하고, 탄력적이며, 유연하며 최신의 요구사항을 반영하기 쉽습니다. 최근 몇 년간 애플리케이션의 요구사항이 급격하게 변화했기 때문에 이러한 변화가 발생하고 있습니다. 불과 몇 년 전까지만 해도 거대한 애플리케이션은 수십 개의 서버로 구성되어, 몇 초의 응답 시간과 몇 시간의 오프라인 유지보수를 허용하고, 기가 바이트 데이터를 담고 있었습니다. 오늘날의 애플리케이션은 모바일 기기에서 부터 수천 개의..