Hongveloper

    [백준]RGB거리

    백준저지 [RGB거리]www.acmicpc.net/problem/1149

    [백준]피보나치 함수

    백준저지 [피보나치 함수] www.acmicpc.net/problem/1003

    세상은 넓고 잘하고 열심히 하는 사람은 많다.

    개발 경력 3년... 그냥 아무 말 대잔치 벌써 개발을 시작한지 3년이 다 돼간다. 시간 참 빠르다. 3년 동안 진짜 열심히 산 기간도 있고, 설렁 설렁 산 기간도 있고... 그리고 지금의 나는 어떤 사람이 되었나? 롤 티어로 따지면 실버에서 골드 사이정도 되지 않나 싶다. 딱 어중간한..? 엄청 잘하지도 않고, 엄청 못하지도 않고 (내 기준이다. ㅋㅋ) 이제 첫 직장을 떠나 다른 곳으로 이직하기 위해서 여러 곳에 이력서를 넣고 있긴하다. 최근에 Next Step에서 자바지기님의 TDD 교육을 들으면서 정말 좋은 기회가 생겨서 면접아닌 면접을 본적이 있다. TDD 교육을 들으면서도 '내가 정말 우물안 개구리구나'란 생각을 많이 했었는데, 면접을 한 번 보니까 이렇게 살면 안되겠다는 생각이 들었다. 연애에..

    Packet Switching을 사용하면 왜 Loss나 Delay가 발생할까?

    컴퓨터가 없는 세상은 상상도 못할 만큼 우리 생활 깊숙히 자리잡고 있습니다. 컴퓨터를 통해 다른 사람과 소통하는건 너무나도 자연스럽고 당연한 일입니다. 이렇게 컴퓨터를 통해 각지의 세계 사람들과 소통하고 수 많은 정보를 습득할 수 있는 것도 바로 네트워크 덕분입니다. 네트워크란 무엇일까요? 네트워크는 net과 work가 합쳐진 말입니다. 하드웨어끼리 마치 그물망 처럼 연결되어 데이터들을 주고 받는 집단 이라고 볼 수 있습니다. Network-Core / Network-Edge / Link 위 그림을 보면 수많은 점들이 연걸되어있습니다. 위 그림을 크게 Network-Core / Network-Edge / Link로 나눠볼 수 있습니다. Network-Core 흔히 말하는 Router들이 존재합니다. (R..

    Enum과 Generic 함께 사용하기

    개요 코드를 단순하게 만들면서 가독성을 높히기 위한 개발을 하다보면 Enum 타입을 사용하는 것은 흔하게 일어납니다. 또한 if / else 문 사용을 지양하는 방향으로 코드를 만들다 보면 Enum 클래스에 추상 메소드나 인터페이스를 구현하는 일도 마주하게 될 것입니다. 저 역시 조금 더 클린한 코드를 만들기 위해 Enum 클래스를 많이 사용하는데요. 최근에 회사에서 맡은 프로젝트를 진행하면서 Enum 타입을 생성하고 인터페이스를 상속 받아서 각 타입별로 상속 받은 메소드를 구현하고 있었습니다. 그런데 Enum 타입에 정의한 상수별로 각각 다른 타입의 객체를 리턴해주고 싶은 니즈가 생겼습니다. 그 내용을 아래에 공유하고자 합니다. 인터페이스를 구현한 Enum 클래스 ViewAreaBanner 인터페이스를..

    Bash Terminal을 세련되게(Mac)

    👍 이번 블로그에서는 테마, Powerline, 폰트, Powerline-gitstatus를 추가하여 위의 첨부한 이미지와 같이 일반 Base Terminal을 아름답고 유용하게 보이게 하는 방법을 단계별로 살펴 보겠습니다. Mac에서 아마 기본 Terminal.app을 실행시키면 위와 같은 모습일 것입니다. 자, 그럼 바로 테마와 폰트 등을 적용해봅니다. 💪 Step 1. 새로운 테마 적용하기 첫 번째는 새로운 테마를 적용해 보는 것입니다. 기본 Terminal.app을 이용해서 개발을 하기에는 약간 개발력(?)이 떨어집니다. 그리고 무엇보다 저와 같은 서버 개발자들은 Terminal.app을 사용할 일이 많기 때문에 이왕이면 간지(?)가 나는 Terminal.app으로 개발하고 싶을 것으로 예상합니다..

    6장. AOP4

    6.6 트랜잭션 속성 6.6.1 트랜잭션 정의 트랜잭션 전파 트랜잭션 전파란 트랜잭션 경계에서 이미 진행 중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 1. PROPAGATION_REQUIRED 가장 많이 사용되는 트랜잭션 속성이다. 진행 중인 트랜잭션이 없으면 새로 시작하고, 이미 시작된 트랜잭션이 있으면 이에 참여한다. DefaultTransactionDefinition의 트랜잭션 전파 속성은 바로 이 PROPAGATION_REQUIRED이다. 2. PROPAGATION_REQUIRED_NEW 항상 새로운 트랜잭션을 시작한다. 즉 앞에서 시작된 트랜잭션이 있든 없든 상관없이 새로운 트랜잭션을 만들어서 독자적으로 동작하게 한다. 3. PROPAGATION_NOT..

    6장. AOP3

    6.5 스프링 AOP 6.5.1 자동 프록시 생성 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/6.5.1 프록시 팩토리 빈 방식의 접근 방법의 한계라고 생각했던 두 가지 문제가 있었다. 그 중에서 부가기능이 타깃 오브젝트마다 새로 만들어지는 문제는 스프링 ProxyFactoryBean의 어드바이스를 통해 해결됐다. 남은 것은 부가기능의 적용이 필요한 타깃 오브젝트마다 거의 비슷한 내용의 ProxyFactoryBean 빈 설정정보를 추가해주는 부분이다. 새로운 타깃이 등장했다고 해서 코드를 손댈 필요는 없어졌지만, 설정은 매번 복사해서 붙이고 target 프로퍼티의 내용을 수정해줘야 한다. 중복 문제의 접근 방법 반복적인 프록시의 메소..

    6장. AOP2

    6.4 스프링의 프록시 팩토리 빈 6.4.1 ProxyFactoryBean 실습 코드 링크 : https://github.com/vvshinevv/toby-spring/tree/feature/6.4.1 스프링은 서비스 추상화를 프록시 기술에도 동일하게 적용한다. 따라서 스프링은 일관된 방법으로 프록시를 만들 수 있게 도와주는 추상 레이어를 제공한다. 스프링의 ProxyFactoryBean은 프록시를 생성해서 빈 오브제트로 등록하게 해주는 팩토리 빈이다. 기존에 만들었던 TxProxyFactoryBean과 달리, ProxyFactoryBean은 순수하게 프록시를 생성하는 작업만을 담당하고 프록시를 통해 제공해줄 부가기능은 별도의 빈에 둘 수 있다. ProxyFactoryBean이 생성하는 프록시에서 사용할..

    6장. AOP1

    서비스 추상화와 더블어 스프링 3대 기반기술의 하나인 AOP에 대해서 알아보자. OOP를 대체하려고 하는 것처럼 보이는 AOP라는 이름 뒤에 감춰진, 그 필연적인 등장배경과 스프링이 그것을 도입한 이유, 그 적용을 통해 얻을 수 있는 장점이 무엇인지에 대한 충분한 이해를 해보자. 6.1 트랜잭션 코드의 분리 6.1.1 메소드 분리 실습 코드 링크 :https://github.com/vvshinevv/toby-spring/tree/feature/6.1.1 메소드로 비지니스 로직을 담당하는 코드를 독립시켜보자. 적어도 순수하게 사용자 레벨 업그레이드를 담당하는 비지니스 로직 코드만 메소드에 담겨 있으니 이해하기도 편하고, 수정하기에도 부담이 없다. 6.1.2 DI를 이용한 클래스 분리 실습 코드 링크 : h..