오늘은 최근에 개발을 하면서 사용한 Javascript Promise 사용하는 방법에 대해 알아보려고 한다. Promise 에 대한 정의보다는 간단한 사용법을 코드를 통해 간단히 정리를 남기려고 한다 요구사항 firstTask, secondTask, thirdTask 는 setTimout 으로 구현된 비동기 함수이다. firstTask, secondTask, thirdTask. 순서로 함수가 동작해야 한다.다음과 같은 요구사항을 구현을 하려면 아래와 같이 구현할 수 있다. firstTask() --> secondTask() --> thirdTask() 를 순차적으로 호출하는 callback 으로 구현할 수 있다. 지금은 간단한 출력 메소드이고, 숫자도 적지만, 복잡하고 많다면 ... 정말 말그대로 지옥일..
인프런에서 '백기선의 스프링 프레임워크 핵심기술' 이라는 강의를 꾸준히(?) 수강하고 있다. 오늘은 AOP에 대한 강의를 들었고, 정의하려고 한다. 이전에 AOP 관련되서 글을 정리한적이 있는데, 다시 봤는데! 나름 괜찮다!AOP : https://lkhlkh23.tistory.com/122프록시 패턴 : https://lkhlkh23.tistory.com/133AOP 정의 및 용어에 대한 설명은 내가 작성한 [AOP] 의 글을 참고하면 된다. 추가적으로 AOP를 적용할 수 있는 방법 3가지를 정리하겠다.Weaving 이라는 단어는 Target(로직을 적용할 대상) 객체에 Aspect (로직)를 적용해서 Proxy 객체를 생성하는 과정이라고 할 수 있다. 그리고 Weaving을 하는 방식에는 아래와 같이..
인프런에서 '백기선의 스프링 프레임워크 핵심기술' 이라는 강의를 수강하고 있다. 오늘은 ioc 컨테이너와 빈에 대해서 정리하려고 한다. 강의에서는 ioc를 의존 관계 주입 (Dependency Injection) 이라고도 하며, 어떤 객체가 사용하는 의존 객체를 직접 만들어 사용하는 것이 아닌, 주입 받아 사용하는 방법이라고 정의했다. 의존객체 : bean의존 객체 주입 : ioc 컨테이너ioc 컨테이너는 아래와 같은 그림으로 구성이 되있다. 여기서 가장 상위 인터페이스인 BeanFactory와 ApplicationContext 에 대해 알아보려고 한다.BeanFactory : https://docs.spring.io/spring/docs/current/javadoc-api/org/springframew..
인프런에서 '입문에서 실무까지: DevOps의 이해 및 Docker Hands-on' 이라는 강의를 듣고 있다. DevOps가 '개발 + 운영'이라는 뜻만 알고 있을뿐 자세한 내용은 알고 있지 못했는데, 강의를 통해 조금씩 이해하며, 이해한 내용을 정리하려고 한다! DevOps는 서비스의 개발부터 배포까지의 프로세스의 속도를 높여 사용자에게 조금 더 빠른 서비스를 지원할 수 있도록 조직의 역량을 향상시키는 문화, 방식, 도구의 조합을 의미한다. 하나의 서비스를 '기획, 디자인, 개발, 리뷰, 빌드, 테스트, 배포유무 결정, 배포, 운영'을 하는 과정에서 개발자와 운영자의 업무가 명확하게 나누어졌다면 좋겠지만, 누가 해당 업무를 처리해아할지 애매한 업무들이 있다. 예를들어, 아래와 같은 5가지의 업무이다...
같이 스터디했던 동생이 사전과제에 대한 평가에 DTO에 Lombok Setter가 무분별하게 사용을 했다는 피드백을 받았다.그러다가 좋은 DTO는 무엇일까? 라는 고민을 하다가 ... 엉뚱하게 Lombok으로 화제가 변하게 되어 정리를 해봤다. [출처 : https://kwonnam.pe.kr/wiki/java/lombok/pitfall] 개발을 하다보면 Lombok을 많이 사용하게 된다. 특히, @Data를 많이 사용하고 있다. 이 5글자만 있으면, constructor, getter, setter, toString, equals, hashcode 메소드를 자동으로 생성해주기 때문에 코드가 굉장히 간결해보이게 만들어준다. 하지만 이 간결함 뒤에는 Reflection이 존재한다.이렇게 편리한 Lombok..
Class Should be Small! SRP(단일책임원칙)는 한번쯤 들어봤을 것이다. 클래스는 수행해야할 하나의 책임만을 가져야 한다. 책임이라는 것은 유사한 목적을 가진 기능들의 집합이라고 할 수 있다.내가 생성한 클래스가 여러 책임을 가진 마구니가 낀 클래스인지? 하나의 책임만을 가진 클래스인지 확인하는 방법은 클래스의 이름을 보면 알 수 있다.클래스의 이름이 간결하고, 클래스의 인스턴스 멤버와 메소드들이 클래스의 이름과 관련이 있는지 보면 알 수 있다.클래스의 이름은 클래스의 크기와 책임, 그리고 향후 클래스의 운명을 결정짓는 중요한 역할을 수행한다.클래스의 이름이 모호할 수록 클래스가 많은 책임을 갖게 된다. 그리고 향후 유지보수를 하는 과정에서 이름이 모호한 클래스에 많은 메소드들과 책임들이..
Clean Code Function에 대해 더 알아보려고 한다. Use Descriptive Names 메소드의 이름을 선택하는데 많은 시간을 소요하는 것을 두려워하지 마라! 가장 적합한 이름을 선택해라!지금 개발하는 나의 시간이 조금 더 소요될 수는 있겠지만, 훗날 누군가 코드를 이해하는 시간을 많이 감소시킬 수 있을 것이다! Function Arguments 이상적인 메소드의 파라미터수는 몇개일까?! 적을 수록 좋고, 없으면 더욱 좋다. 그리고 3개 이상부터는 권장하지 않으니 피해라!메소드의 파라미터수가 많다는테스트 하기 어렵고, 결국은 사용하기도 어렵다는 것이다. 테스트 코드를 작성 할 때, 해당 메소드가 정상적으로수행하는지 확인하기 위해 거의 모든 경우의 수를 테스트 할 것이다. 그런데 파라미터수..
Clean Code 2번째 이야기! 함수에 대해 정리해보려고 한다. 함수는 2차례 정리를 진행하려고 한다. 오늘은 간단한 코드를 리팩토링하면서 진행해보겠다. 아래 코드를 쉽게 읽을 수 있는가? 바로 이해가 되는가? public static String testableHtml(PageData pageData, boolean includeSuiteSetup) throws Exception { WikiPage wikiPage = pageData.getWikiPage(); StringBuffer buffer = new StringBuffer (); if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) { WikiPage suiteSetup = PageCraw..