Dev 90

테스트 용이성(Testability) 향상을 위한 델리게이션(Delegation)

이전 포스팅 ‘테스트 용이성(Testability) 향상을 위한 DI(Dependency Injection)’에서 이어지는 내용이다. 종속성 문제 테스트 코드 없이 개발할 때는 잘 인지하지 못하다가 테스트 코드를 넣으려고 할 때 만나는 문제 중 하나로 종속성 문제가 있다. 테스트 환경에서 특정 객체 하나를 생성하기 위해서 너무 많은 객체가 필요해지는 상황과 특정 객체가 내부적으로 다른 객체를 직접 생성하는 상황이 그것이다. 이런 상황은 몇 가지 방법으로 개선을 할 수 있다. 파라미터 수정 객체의 일부 값을 사용하려고 해당 객체를 파라미터로 받아서 생긴 종속성은 poor()가 info에서 얼마나 많은 정보에 접근하는지에 따라서 정리가 가능하다. 예를 들면 이런 식이다. 그 값들만 파라미터로 받는 것으로 리..

Dev 2019.08.01

HackerRank 에서 몇 문제 #1

Hacker Rank는 Codility보다 성능 부분에서 까다롭지 않은 것 같다. Java Stream을 사용해서 풀어도 time out없이 처리가 된다.Web 편집기도 codility보다 편의성이 좋다. 그래도 역시 IntelliJ에서 코딩하고 붙여넣는 것이 편하다. 쉬운 것으로 몇 문제를 풀어보았고 github에 풀이를 올려놓았다. Counting ValleysJumping on the CloudsSock MerchantGrid ChallengeElectronics ShopTwo CharactersMissing Numbers

Dev 2019.03.17

Codility Lessons 6 완료

4번 문제(NumberOfDiscIntersections) 어렵다! 저번 주 일요일 오후를 다 썼는데 정확도 100점, 성능 점수 25점으로 총점 62점까지가 한계였다. 결국, 컨닝을 하기로 하고 구글링을 했는데, 2010년도 챌린지 문제였네. 그래, 어렵더라. 여러 가지 솔루션이 있는데 정말 참신하다고 생각되는 솔루션이 2개 있어서 그걸 읽고 이해한 후에 다시 풀었다. 첫 번째는 두께로 접근해서 풀이한 방법이었는데 자바로 돌리면 성능 점수 62점으로 총점 81점이 나온다. 언어에서 pair 를 지원하지 않으니 객체를 만들어서 돌렸는데 객체 생성 비용에서 걸리는 것이 아닌가 생각한다. 두 번째는 원의 앞, 뒤를 주어진 배열 크기로 다 잘라내고, 시작점의 개수, 끝점의 개수를 카운팅하여 모아두고 해당 카운..

Dev 2019.02.22

Go 언어 입문서 추천

최근 프로젝트는 Go 언어로 개발을 진행하고 있어서 작년 말부터 Go 언어를 사용하고 있지만, 아직 손에 익지 않았다. 작년에 처음 Go 언어로 프로젝트를 시작하면서 몇 권의 Go 언어 책을 구매하고 공부했다. 그 중에 ‘개발자를 위한 하룻밤에 읽는 Go 언어 이야기’와 ‘디스커버리 Go 언어’ 2권을 추천한다. Go 언어는 스팩만을 보면 아직은 애매한 포지션에 있는 언어라고 생각한다. 처음에 접했을 때, 다시 C 로 코딩하는 느낌의 어색함과 반가움이 교차했었다. 그래도 최근 언어 답게(?) 동시성을 언어에서 go func 과 channel, select 등의 기본 스팩으로 제공한다. 하지만, class 는 없다. 상속도 없다. struct 와 receiver 라는 기능의 조합으로 구성을 해야 하는데 이..

Dev 2019.02.16

Codility Lessons 1 ~ 5 완료

이전 직장에서는 지원자에게 코딜리티 서비스를 사용해서 코딩 테스트를 봤었다. 그때는 무료 문제가 경력을 입력하면 해당 경력에 어울리는(겁나 어려운) 문제를 무료 문제로 풀어볼 수 있었는데. 언젠가 레슨이라는 기능이 생겼네.https://app.codility.com/programmers/lessons 설 연휴 동안 오랜만에 집에서 코딩을 해봤다.겨울이라고 요즘 너무 놀기는 했다. 보딩하러 가고, 책 보고, 영화 보고, 게임하고...레슨 5 까지 완료했고, 6 은 조만간 완료 예정이다.아래는 풀이를 github 에 올려놨는데, 먼저 문제를 풀어보고 참고용으로 사용하면 좋을 것 같다.https://github.com/prostars/codility Lession 1 Iterations1. BinaryGap ..

Dev 2019.02.06

7가지 동시성 모델

[2017년 9월 13일 작성글 옮김] 얼마 전에 클로저 입문서 하나를 봐서 다행이다. 이 책에 이렇게 클로저 코드가 많이 나올 줄이야. 액터까지는 매우 공감하면서 재밌게 봤다. (이후부터 좀 어렵다.) 아카의 액터를 사용할 때 이게 얼랭에서 가져온 거라고는 알고 있었는데 실제 엘릭서 코드를 보니 또 신기하네. 실제로 돌려보면서 봤으면 더 좋았을 건데 좀 아쉽다. 특히 8장의 하둡은 개념은 얼추 알겠는데 실제 돌려봐야지 감이 오겠다. 7장의 OpenCL 10여 년 전 자막기를 개발할 때 알았으면 유용했을 것 같다. (그때도 있었나??) 조만간 업무적으로 자바 / 스프링을 만져야 하니 당분간 스프링 쪽을 봐야겠구나~ 스프링은 어디부터 봐야하나... 리디북스 : 7가지 동시성 모델 #독서 #기술서적 #추천도서

Dev 2018.12.17

IntelliJ 의 JShell Console 을 활용하자

최근에 Java 를 실무에 사용하면서 JShell 이 있어서 참 다행이라고 생각하고 있다. IntelliJ 가 JShell Console 이라는 기능으로 툴 안에서 JShell 을 연동해주고 있어서 더 편리하게 사용하고 있는데 이번 글에서는 JShell 에 대한 간단한 소개와 유용함을 알아보자. 이 글은 macOS 를 기준으로 하며 다음의 내용을 다룬다. JShell 에 대한 간단한 소개Java 8, 9, 10 를 손쉽게 전환하면서 사용하는 방법IntelliJ 의 JShell Console 사용하기IntelliJ 의 JShell Console 에서 사용자 클래스 사용하기 JShell 에 대한 간단한 소개JShell 은 node.js 의 shell 이나 scala 의 shell 처럼 코드를 바로바로 실행하..

Dev 2018.04.30
반응형