일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Python
- 함수형 프로그래밍
- 파이썬
- Collection
- 로버트마틴
- 람다 칼큘러스
- Pattern
- design-pattern
- 자바
- Rails
- JDBC
- 큐
- Eclipse
- Network
- javscript
- JavaScript
- lambda calculus
- exception
- functional programming
- Java
- DesignPattern
- tcp
- 백준
- 겨울카카오인턴
- 스택
- Spring
- Collections
- solid
- 프로그래머스
- 디자인패턴
- Today
- Total
목록전체 글 (177)
개발자 노트
서론 logging은 비즈니스 로직을 처리를 위한 코드라기 보다는 모니터링을 위한 코드라고 생각됩니다. 그래서 비즈니스 로직 중간에 나타나는 logging이 매우 보기 불편했죠. Spring이 AOP를 제공해준다고 하지만... Spring에서 구현한 답지를 보지 않고 직접 구현해보고 싶었습니다. 따라서 이번 시간에는 어떻게 해야 기가막힌 logging aop를 할까... 그 고찰을 적어보겠습니다. 상황 person class의 sayHello 메서드를 작성하고, main에서 sayHello method를 호출합니다. 이때, framework를 통해서 person 객체를 전달 받는다고 하겠습니다. Person public class Person { private String firstName; privat..
도입 lazy evaluation 개념자체는 어렵지 않습니다. 그래서 이번엔 활용성 측면 위주로 설명드리도록 하겠습니다~ 배경 지식 여태 expression과 evaluation이 헷갈리시다면 아래 글을 참조하시면 좋을 것 같습니다. https://jurogrammer.tistory.com/129 정의 evaluation 전략 중 하나로 expression의 value가 필요할 때까지 evaluation을 미루는 전략이라고 보시면 됩니다. 보통 성능 개선을 목적으로 lazy evaluation을 사용하지요. 어떻게 evaluation을 미룬 어떻게 성능을 개선할 수 있는지 한 번 살펴보겠습니다. 성능 개선의 예시 특정 조건을 만족해야만 해당 value를 사용하는 예시입니다. import time def ..
도입 closure를 영단어로 검색해봅시다. 영사전 an act or process of closing something, especially an institution, thoroughfare, or frontier, or of being closed. 폐쇄의 의미를 가지고 있죠. 그래서 처음 closure를 공부했을 때 전혀 와닿지 않았습니다. 뭐가 폐쇄되있다는 거죠? 오늘은 이 베일을 벗겨보겠습니다! closure 개념 lambda calculus는 1930년도에 나온 개념이고 closure는 1960년도에 나온 개념입니다. Peter J. Ladin이라는 사람이 1964년도에 labmda calculus expression을 평가하는 머신을 고안하는데 처음 정의되었습니다. 그후 1970년도에 Jo..
상위 주제 exception handling 여정 제가 잘못 사용했던 냄새나는 코드를 준비해보았습니다. 상황 주문 번호를 받아 해당 주문서 내용을 반환해주는 기능입니다. 만약 클라이언트가 요청하는 주문 번호가 존재하지 않으면 error를 발생시키고 해당 주문이 없음을 전해주어야 하지요. 코드 Controller package com.company.exceptiontest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Controller { private final Service service; private final Logger logger = LoggerFactory.getLogger(this.getClass()); pu..
상위 주제 exception handling 여정 참고 자료 clean code effective java oracle java docs 이번엔 exception이 무엇인지 exception을 어떻게 처리해야할 지를 말씀드려보겠습니다. exception이란? oracle에서 어떻게 정의하는지 보죠 An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. 프로그램이 실행하는 중에 일반적인 흐름을 방해하는 이벤트를 의미합니다. 허허; 일반적인 흐름이 무엇일까요? 전 다음처럼 일반적인 흐름을 정의했습니다. 다음 상황을 가정해보죠..
상위 주제 exception handling 여정 참고 https://opentutorials.org/course/2598/14199 https://en.wikipedia.org/wiki/Standard_streams https://en.wikipedia.org/wiki/Redirection_(computing) 정의 redirection은 interprocess communication(IPC)의 한 형태입니다. 대부분 command line interpreter에서 가지는 함수이지요. 이전에 콘솔에 입력된 데이터가 어떻게 app으로 전달될까? 의 고민에서 나온 그 방법입니다. Cat 사실 정의와 설명은 생활코딩님이 너무 잘 설명해주시니 링크로 대체하겠습니다. https://opentutorials.o..
상위 주제 exception handling 여정 상황 - 간단한 입출력 프로그램 app에서 키보드의 입력을 받는다. app에서 입력받은 값을 console로 출력한다. 이 앱을 console에서 실행한다. 추가로 과정을 정밀히 분석하기 위해서 pid도 출력합니다. 코드 public class App { public static void main(String[] args) { printPid(); Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { System.out.println(scanner.next()); } } private static void printPid() { long pid = ProcessHandle.curren..
첫걸음 exception은 예외 상황이라 볼 수 있습니다. oracle docs 발췌 An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. 따라서 개발자가 exception이 발생한 상황을 이해할 수 있도록 exception 메세지를 제공해주어야 합니다. 또한, API를 Call한 클라이언트에게는 개발자와는 다른 메세지를 전달해줄 수 있어야 하죠. 그래서 문제를 정리하면 다음과 같았습니다. 개발자가 어디에서 log를 볼 수 있는지. 사용자에게 어떻게 내부 메세지를 분리해서 전달해줄 수 있는지 이해하기 쉬운 excepti..
계기 이번은 좀 서론이 기네요... 넘어가셔도 좋습니다. 시작은 flux개념을 이해하는데에서 시작했습니다. 그래서 redux + canvas로 벽돌 깨기를 구현하고 있었습니다. (뭐 어떻게 삽질하니 react를 제외하고 redux만 사용이 가능하더라구요? ) 문제 - 상태 변경시, 관련된 renderer에게만 notify하고 싶다. redux에서는 상태변경시 특정 상태 변경에 대해 subscribe중인 rendering 로직이 실행됩니다. 예를 들면 공이 벽돌과 충돌한 action이 있다면 벽돌이 부셔져야겠지요? 그래서 벽돌 상태를 inactive정도로 변경했다면 벽돌을 그리는 담당을 하는 render function만 실행해야겠죠? 그런데 redux에서는 rootState로 관리하고, rootState..
데이터 테이블을 만들어 보자 현업에서 서버개발 뿐만 아니라 종종 관리자 페이지도 개발합니다. front를 잘 모르더라도 개발할 수 있도록 jquery를 사용하지요. 그런데 성능을 개선해야하는 일이 생겼고... 이를 개선하는과정을 말씀드리겠습니다. 선 결과물: https://jsfiddle.net/who3fa7t/2/ 문제 약 5000 row * 13 column을 페이징없이 한 화면에 출력해야 했습니다. 기존에 사용하고 있는 dataTable로는 속도가 느리더군요... 약 10초정도 걸렸습니다. 해당 라이브러리의 document를 3일동안 뒤져봤지만, 어떻게 개선할 방법을 못찾겠더라구요. 전체 데이터를 정렬할 때마다 10초씩 걸렸습니다. 기존에 엑셀을 사용하여 데이터를 처리하시던 분들이라 얼마나 답답하실..