나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Language 28

[multi thread] java.util.concurrent Part 1

Java에서는 멀티스레드 프로그램을 작성하는데 도움이 되는 많은 클래스들을 구현해 놓았다. java.util.concurrent 패키지 안에 포함되어 있는데 패키지 내용을 잘 설명한 IBM의 문서가 있어서 이해한 만큼 한글로 정리해 보고자 한다. 1. TimeUnitTimeUnit는 class가 아닌 Enum 타입이다. TimeUnit을 사용하면 코드를 읽기 쉽도록 만들어 준다. Java 개발자가 millisecond 단위의 숫자로 코드를 지저분하게 하는 대신 사용하면 좋다. MILLISECONDS, MICROSECONDS에서부터 DAY, HOURS에 이르기까지 개발자가 다루고자 하는 대부분의 범위의 시간을 표현할 수 있다. 또한 enum에 구현된 함수를 통해 시간 단위 변환을 쉽게 해준다. 2. Cop..

Language/Java 2019.01.04

[python] list

알고 있는 내용을 정리하는 수준으로 블로그에 글을 적으려고 한다. python 문법에 대한 2번째 내용이다. 모든 언어에서 제일 많이 사용하는 데이터 구조인 list. python에서 유용한 것들 정리해 보자. 정의 방법# 빈 리스트 정의my_list = [] my_list = list() # 값과 함께 정의 (여러 데이터 타입들의 섞어서도 가능하다)my_list1 = [1,2,3] my_list2 = [“a”, “b”, “c”] my_list3 = [“a”, 1, “python”, 5] # list들의 list도 가능my_nested_list = [my_list1, my_list2] # list의 병합combo_list = my_list1 + mylist2 # [1, 2, 3, “a”, “b”, “c”..

Language/python 2018.03.28

[python] 상속 기본 및 factory method 패턴 정리

회사에서 python으로 코드를 작성하는 중에 비슷한 비즈니스를 처리하지만 타입에 따라 다르게 동작하는 기능을 넣어야 하는 필요가 생겼다. 비슷한 비즈니스 처리 중에 공통으로 쓰는 것도 있고 타입에 따라 약간 차이나는 것도 있다. 객체지향에 익숙한 사용자라면 상속을 통해 해당 기능을 처리해야 겠다고 바로 생각할 것이다. 그래서 python 문법 정리도 할 겸 상속에 대해 기본적으로 기술하고, 객체를 생성하는 과정에서 factory 패턴을 적용했는데 그 부분도 정리하고자 한다.상속 객체들 간의 관계를 구축하는 방법이다.상속의 핵심을 계층구조를 표현하는 것이다. python 상속의 문법 class 클래스명(상속할 클래스명)python에서는 class 정의 시에 괄호에 상속받을 부모클래스만 적으면 끝난다. 자..

Language/python 2018.03.27

Evaluation Rules

coursera의 Functional Programming Principles in Scala 강좌를 들으며 중요한 개념들만 블로그에 정리해 보고자 한다. call by value : 함수를 실행하기 전에 인자들의 값을 구한다. call by name : 함수를 먼저 실행하고 인자값이 필요할 때 값을 구한다. 다음과 같이 함수가 있다고 하자. 인자값을 달리해서 각 함수를 호출할 때 어떤 속도 차이가 있는지 보자. def square1(x:Int, y:Int) = x*x def square2(x: => Double, y:Int) = x*x square1(2,3) : 2*2 -> 4square2(2,3) : 2*2 -> 4동일한 단계가 필요하다. square1(3+4,8) : square1(7,8) -> 7..

Language/scala 2017.09.12

Dynamic Proxies

Java의 reflection을 사용하면 런타임시에 동적으로 인터페이스를 구현할 수 있다. java.lang.reflect.Proxy를 사용하게 되는데, 그래서 동적 인터페이스 구현을 동적프록시라고 부르는 이유이기도 하다. 동적 프록시는 다양한 용도로 사용할 수 있다. 예를들면, 데이터베이스 연결 및 트랜잭션 관리, 단위 테스트를 위한 동적 모의 객체 및 인터셉트 목적의 AOP와 유사한 메서드 생성 등에 사용한다. Proxy의 생성public static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) throws IllegalArgumentException Proxy.newProxyInstance()..

Language/Java 2017.08.29

[Java8] 람다란 무엇인가?

Java8의 추가된 큰 기능 중 하나로 람다를 첫번째로 든다. 그러면 람다란 무엇일까? 정리해보자. 람다를 한마디로 표현하면 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다. 익명클래스(anonymous class)는 무엇인가? 익명클래스는 이름이 없는 로컬 클래스 입니다. 익명 클래스는 new 연산자를 사용하여 하나의 간결한 표현식으로 정의되고 인스턴스화된다. 로컬 클래스는 Java 코드 블럭이지만 익명클래스는 표현식이므로 메서드 호출과 같은 표현식의 일부로 포함될 수 있다. 아래 코드를 살펴보면 Thread를 생성할 때, 파마미터로 익명클래스를 생성해서 전달함을 볼 수 있다. public class ThreadTest { public static void main(String[] args)..

Language/Java 2017.08.09

[Java8] CompletableFuture 정리

기존 Future 인터페이스는 비동기 계산의 결과로 제공하기 위해 Java5에서 추가되었지만, 이런 계산들을 결합하거나 오류를 처리할 방법이 없었다. 그래서 Java 8에서 CompletableFuture가 추가되었다. CompletableFuture은 Future 뿐만 아니라 CompletionStage도 상속하는데, CompletionStage의 특징을 살펴보면 CompletableFuture의 장점을 알 수 있다. CompletionStage는 결국은 계산이 완료될 것이라는 의미의 약속이다.계산의 완료는 단일 단계의 완료 뿐만 아니라 다른 여러 단계 혹은 다른 여러 단계 중의 하나로 이어질 수 있음도 포함한다. 뿐만 아니라 각 단계에서 발생한 에러를 관리하고 전달할 수 있다. 지금부터 Complet..

Language/Java 2017.08.09

Generators (제너레이터)

제너레이터는 하나의 값을 결과로 리턴하는 것이 아니라 연속된 결과를 리턴하는 함수이다.아래 코드는 제너레이터의 간단한 예제 코드이다. # countdown.py # # A simple generator function def countdown(n): print("Counting down from", n) while n > 0: yield n n -= 1 print("Done counting down") # Example use if __name__ == '__main__': x = countdown(10) print(x) for i in x: print(i) 결과는 다음과 같이 나온다.Counting down from 101098...1Done counting down 제너레이터 함수를 보면은 retur..

Language/python 2017.04.12

이름 재사용과 관련된 기술

자바 퍼즐러를 읽는 중에 이름 재사용과 관련되어 개념을 명확히 하지 않으면 버그가 나올 가능성이 많아 정리를 해보았다.(물론 책에 나온 내용을 정리하는 수준이다) 오버라이딩자식 클래스에 있는 인스턴스 메서드가 부모 클래스의 접근 가능한 메서드와 동일한 이름과 매개변수를 가지면 오버라이딩 합니다.오버라이딩되면 동적 디스패치가 가능해집니다. 여기서 동적 디스패치란 무엇인가? 동적 디스패치는 동적바인딩과 동일한 개념이다.동적 바인딩 설명 가상머신은 실행 중에 인스턴스의 자료형에 기반해서 호출할 메서드를 결정한다.class Base { public void f() { }} class Derived extends Base { public void f() { }} 하이딩부모 클래스의 필드, 정적 메서드, 클래스, ..

Language/Java 2016.10.13

[ASP.NET MVC] Complie-Time에 View 에러 확인

ASP.NET MVC를 사용하다 보면 View에서의 에러를 찾는데 어려움을 겪곤 한다. View는 compile-time이 아닌 run-time시에 에러를 확인하기 때문에 실행을 하고 나서야 발견하게 된다. 그런데 프로젝트 파일의 속성을 변경하면 compile-time에 View단의 에러를 확인할 수 있다. 1. Solution Explorer에서 프로젝트를 Unload한다. 2. project.csproj 파일을 수정 모드로 연다. 3. 의 를 확인한다. (없으면 추가) 4. 의 속성을 true로 변경한다. true 5. 프로젝트 파일을 저장한다. 6. Solution Explorer에서 프로젝트를 load한다. 참고 url http://blog.falafel.com/Blogs/JonathanTower..

Language/C# 2013.12.20

HTTP 인증(1) - Basic

HTTP 1.1에서 규정하고 있는 인증의 종류에는 Basic 인증과 Digest 인증이 있습니다. http://www.ietf.org/rfc/rfc2617.txt HTTP 요청에 대해서 인증 처리가 되지 않은 경우, 스테이터스 코드 401을 통해 클라이언트에 리소스 접근에 필요한 인증정보를 통지하게 된다. [요청] POST /api/employees/12345 HTTP/1.1 Host: basic.auth.com [응답] HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="basic.auth.com" WWW-Authenticate 헤더에 의해서 클라이언트는 서버가 제공하는 인증 방식을 이해할 수 있고, 그 방식에 따른 인증 정보를 보낼 수 있다. Basi..

Language/C# 2013.09.04

HttpClient

HttpClient HttpClient는 .Net에서 제공하는 유연하고 확장가능한 API 접근 모듈이다. NuGet에서 다운로드 받을 수 있으며 아래와 같은 package들로 구성되어 있다. 1. System.Net.Http : HttpClient와 관련된 기본 클래스들을 포함하고 있다. 2. System.Net.Http.Formatting : 직렬화, 역직렬화의 추가적인 기능을 포함. 3. System.Json : Json 문서를 읽고 조작하기 위한 기능을 포함. Install Nuget Package Manager Nuget에서 Microsoft ASP.NET Web API Client Libraries를 다운 받으면 된다. HttpClient를 쓰는 예제는 아래 url에서 구현된 web api를 호..

Language/C# 2013.06.29
반응형