본문 바로가기

분류 전체보기

[Java] Java Interface feature 변화의 history - 번역 History of Java interface feature changes 원문 : https://www.vojtechruzicka.com/java-interface-history/ 지나가며 글을 읽다가 빠른 번역(잘못된 번역이 많을 수 있습니다)을 해보았습니다. Original interfaces java 1.0의 interface는 두개의 type만 포함한다. constants와 public abstract methods. Constant fields Inteface는 field를 포함하고, 보통의 class와는 몇가지 차이점이 있다. - Fields는 value가 할당되어야 한다.(Fields must be assigned a value) - Fields는 public static final로 간주..
[Spring] Lazy Initialization in Spring Boot 2.2 - 번역 Lazy Initialization in Spring Boot 2.2 https://spring.io/blog/2019/03/14/lazy-initialization-in-spring-boot-2-2 위의 글을 읽다가 조금만 번역해 보았습니다. 잘못된 부분이 있을 수 있으니 있다면 제보해주세요~ What Does it Mean to be Lazy? Spring Framework는 기본적으로 application context가 refresh될때 context의 모든 bean을 생성하고 dependency들을 inject(주입)된다. 대조적으로 bean definition이 느리게 초기화되도록 설정되면, 필요할 때까지는 dependency가 inject되지 않는다. Lazy Initialization 활성..
[Java] Java Iterator를 Java Stream 으로 변환하기 원문 Java Iterator to Java 8 Stream 을 가볍게 번역한 글입니다. list 대신 Iterator 객체를 반환하는 다른 라이브러리를 써야할 때가 있는데, 라이브러리의 관점에서는 문제가 없지만 반환된 iterator에서 Java 8 stream을 사용하려는 경우 문제가 될 수 있다.Iterator를 Iterable로 변환한 다음 쉽게 stream 쓸 수 있는 방법이 있다. Iterator iterator = elements.iterator(); Iterable valueIterable = () -> iterator; List StreamSupport.stream(valueIterable.spliterator(), false) .map(element -> element.asString(..
[책] 함수형 사고 - Chapter 2. 전환 - 2.4 골치 아프게 비슷비슷한 이름들. [책] 함수형 사고 - Chapter 2. 전환 책 함수형 사고(Functional Thinking)을 읽고, 관련 예제를 살펴보며 간단 정리한 것입니다. 책 예제와는 조금 다를 수도 있습니다. 참고) 영문 책의 예제 https://github.com/oreillymedia/functional_thinking 2.4 골치 아프게 비슷비슷한 이름들 - 스칼라 버전 /** 필터(filter) **/ //각 숫자가 3으로 나뉘어야 한다는 조건을 가진 코드 블록을 filter() 함수를 적용한다. val numbers = List.range(1, 11) numbers filter (x => x % 3 == 0) //res0: List[Int] = List(3, 6, 9) //스칼라에서는 매개변수를 언더바로 치환..
[책] 함수형 사고 - Chapter 2. 전환 책 함수형 사고(Functional Thinking)을 읽고, 관련 예제를 살펴보며 간단 정리한 것입니다.책 예제와는 조금 다를 수도 있습니다. 참고) 영문 책의 예제https://github.com/oreillymedia/functional_thinking Chapter 2. 전환 명령형 처리명령형 프로그래밍이란 상태를 변형하는 일련의 명령들로 구성된 프로그래밍 방식.전형적인 for 루프가 명령형 프로그래밍의 훌륭한 예. 초기 상태를 설정하고 되풀이할때마다 일련의 명령을 실행한다. 명령형 프로그래밍은 개발자로 하여금 루프 내에서 연산하기를 권장한다. 책에 나와 있는 예제에서는 세가지를 실행했다.한 글자짜리 이름을 필터했고, 목록에 남아있는 이름들을 대문자로 변형하고, 이 목록을 하나의 문자열로 변환했다..
[책] 함수형 사고 - Chapter 1. 왜 책 함수형 사고(Functional Thinking)을 읽고, 관련 예제를 살펴보며 간단 정리한 것입니다. 책 예제와는 조금 다를 수도 있습니다. 참고) 영문 책의 예제 https://github.com/oreillymedia/functional_thinking Chapter 1. 왜 전혀 새로운 프로그래밍 패러다임의 문제는 새로운 언어를 배우는 것이 아니고, 다른 방식으로 사고하는 법을 배우는 것. 객체지향 프로그래밍은 움직이는 부분을 캡슐화하여 코드 이해를 돕고, 함수형 프로그래밍은 움직이는 부분을 최소화하여 코드 이해를 돕는다. - 마이클 페더스 함수형 개발자는 적은 수의 자료구조와 그것들을 잘 이해하기 위한 최족화된 방법을 만들기를 선호한다. 객체지향형 개발자는 항상 새로운 자료구조와 그것에 부착..
[ios] iphone 무선 디버깅 연결하기 iphone app 개발시, USB 쓰기 귀찮으니까 무선으로 연결해보자! 아주 간단!!블로깅하는게 더 오래걸리는... 하지만, Xcode 9에서 새로 지원된 기능인 만큼.Xcode 9 이상, iOS 11 이상에서만 지원한다. Xcode > WindowDevices and Simulators 를 선택. Devices 탭에 connect via network 선택이 기본으로 선택해제 되어 있으니, 체크 해주고 나오면 끝! 빌드해서 실행해보자!
[ios] iPhone is busy. Preparing debugger support for 에러 문구 swift 문법을 처음으로 공부하고 나의 첫 앱을 시뮬레이터에서만 보다가 내 iphone 에서 보려고 설정중에,아래와 같은 문구가 한참을 나오고 사라지지 않았다. 해결방법 Xcode > Window Devices and Simulators를 선택 Devices 창에 아래와 같은 화면이 노출된다. 여전히 iPhone is busy... 라는 문구를 볼 수 있다. 왼쪽 하단의 아래 + 버튼을 눌러주고 현재 연결되어있는 iPhone 을 선택 후 Next 버튼을 클릭! Done 버튼을 누르고, 여전히 문구가 사라지지 않는다면 USB 연결되어있다면 다시 재연결해보자!
[Akka] Akka Document - Actor Architecture (3) - Failure handling 이 글은 원문 : https://doc.akka.io/docs/akka/current/guide/tutorial_1.html 글을 읽고 간략하게 정리한 내용입니다. (생략된 내용도 있습니다.) Akka Version 2.5.12 Failure handling 부모와 자식은 라이프 사이클 전반에 걸쳐 연결된다. actor가 실패 할 때마다 (예외를 던지거나 처리되지 않은 예외가 receive에서 끊어지면) 일시적으로 일시 중단된다. 앞서 언급했듯이, 실패 정보는 부모에게 전달되며, 부모는 자식 actor에 의해 발생한 예외를 처리하는 방법을 결정합니다. 이런 식으로 부모는 자식을 감독하는 역할을 한다. 기본 수퍼바이저 전략은 자식을 중지했다가 다시 시작하는 것이다. 기본 전략을 변경하지 않으면 모든 실패로..
[Akka] Akka Document - Actor Architecture (2) - actor lifecycle 이 글은 원문 : https://doc.akka.io/docs/akka/current/guide/tutorial_1.html 글을 읽고 간략하게 정리한 내용입니다. (생략된 내용도 있습니다.) Akka Version 2.5.12 The actor lifecycle actor가 만들어지면 존재하게되고 나중에 사용자 요청에 따라 멈추게 된다. actor가 멈추면 모든 자식도 재귀적으로 멈춘다. 이 동작은 리소스 정리를 크게 단순화하고 열린 소켓 및 파일로 인해 발생하는 리소스 유출을 방지하는 데 도움이 된다. 사실 저수준 멀티 스레드 코드를 처리 할 때 일반적으로 간과되는 어려움은 다양한 동시 자원의 라이프 사이클 관리하는 것이다. actor를 정지 시키려면, actor 내에서 getContext().sto..
[Akka] Akka Document - Actor Architecture (1) 이 글은 원문 : https://doc.akka.io/docs/akka/current/guide/tutorial_1.html 글을 읽고 간략하게 정리한 내용입니다. (생략된 내용도 있습니다.) Akka Version 2.5.12 Part 1: Actor Architecture Akka를 사용하면 actor system 을 위한 인프라를 만들고 기본 동작을 제어하는 데 필요한 저수준 코드를 작성하지 않아도 된다. 이를 이해하기 위해 코드에서 생성한 actor와 Akka가 생성하고 관리하는 actor 사이의 관계, actor 라이프 사이클 및 오류 처리를 살펴본다. The Akka actor hierarchy Akka의 actor는 항상 부모에게 속한다. 일반적으로 context.actorOf ()를 호출하..
[Swift 4] 타입 캐스팅 (Type Casting) 이 포스팅은 The Swift Programming Language (Swift 4.1) 의 Type Casting 문서를 보고 이해하며 제 것으로 만들면서 정리해 놓은 문서입니다. 원문 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html#//apple_ref/doc/uid/TP40014097-CH22-ID338 타입 캐스팅(Type Casting) 타입 캐스팅은 인스턴스의 타입을 체크하거나 해당 인스턴스를 고유한 클래스 계층 구조의 다른 수퍼 클래스나 서브 클래스로 처리하는 방법이다. Swift에서의 타입 캐스팅은 is와 as 연산자로 구현된다..
[Swift 4] Optional Chaining(4) - 옵셔널 체이닝을 이용하여 서브스크립트 접근하기 이 포스팅은 The Swift Programming Language (Swift 4.1) 의 Optional Chaining 문서를 보고 이해하며 제 것으로 만들면서 정리해 놓은 문서입니다. 원문 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-ID245 옵셔널 체이닝을 이용하여 서브스크립트 접근하기(Accessing Subscripts Through Optional Chaining) 옵셔널 값의 서브스크립트로부터 값을 가져오거나 설정하기 위해, 옵셔널 체이닝을 사용 할..
[Swift 4] Optional Chaining(3) - 옵셔널 체이닝을 이용하여 메소드 호출하기 이 포스팅은 The Swift Programming Language (Swift 4.1) 의 Optional Chaining 문서를 보고 이해하며 제 것으로 만들면서 정리해 놓은 문서입니다. 원문 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-ID245 옵셔널 체이닝을 이용하여 메소드 호출하기(Calling Methods Through Optional Chaining) 옵셔널 체이닝으로 옵셔널 값에서 메소드 호출하고, 메소드 호출이 성공하는지 확인 할 수 있다. 리턴 ..
[Swift 4] Optional Chaining(2) - 옵셔널 체이닝을 이용하여 프로퍼티 접근하기 이 포스팅은 The Swift Programming Language (Swift 4.1) 의 Optional Chaining 문서를 보고 이해하며 제 것으로 만들면서 정리해 놓은 문서입니다. 원문 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-ID245 옵셔널 체이닝을 위한 모델 클래스 정의하기 옵셔널 체이닝을 사용하여, 한 단계 이상의 레벨에 해당하는 프로퍼티, 메소드, 서브스크립트 호출하여 사용 할 수 있다. 상호 관련된 타입의 복잡한 모델내에서 서브프로퍼티로 내려..
[Swift 4] Optional Chaining(1) - 강제 언래핑 대안으로서의 옵셔널 체이닝 이 포스팅은 The Swift Programming Language (Swift 4.1) 의 Optional Chaining 문서를 보고 이해하며 제 것으로 만들면서 정리해 놓은 문서입니다. 원문 https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html#//apple_ref/doc/uid/TP40014097-CH21-ID245 Optional Chaining옵셔널 체이닝(Optional chaining)현재 옵셔널이 nil이 될 수 있는 프로퍼티, 메소드, 서브스크립트를 조회하고 호출하는 과정 옵셔널에 값이 있으면, 프로퍼티, 메소드, 스크립..
[Swift 4] Swift 둘러보기 오랫만에 새로운 언어를 배워볼 겸, Swift를 시작해보았습니다.시작해보면서 Swift 4로 변경된 부분의 글은 많지만, Swift 4로 언어를 시작하는 사람을 위한 문서는 없는 것 같아 정리해 보았습니다. Swift를 알지 못하는 사람이 배우면서 번역한 글이라 영어를 떠나서 내용을 이해못하고 쓴 부분이 있다면 피드백이 있었으면 좋겠네요~ 해당 글은 여기에서 참고 하세요.https://flyburi.gitbooks.io/swift4/content/chapter1.html
[Scala] Mac에서 Scala 설치 Mac에서 Scala 설치 설치 환경os : mac / jdk : 1.8 / 설치할 scala : 2.11.8 0. JDK 설치 확인 및 미설치시 먼저 설치할 것. 1. Scala 공식 홈페이지로 접속http://www.scala-lang.org/ 2. Download 버튼 클릭 후 현재 안정화 된 버전의 Scala 버전 다운로드 3. 다운받은 zip 파일을 적당한 곳(예: /usr/local)에 압축을 푼다. 4. SCALA_HOME Path 설정(예: ~/.profiles)아래와 같이 압축해제한 scala 폴더의 위치 HOME으로 설정후 bin 폴더를 PATH에 추가한다.export SCALA_HOME=/usr/local/scala-2.11.8 export PATH=$PATH:$SCALA_HOME/b..
[Play] Play설치(activator) 글 작성 기준 버전 : Play 2.5.x 참고 : https://www.playframework.com/documentation/2.5.x/Installing Prerequisites Play 2.5.x 버전은 java 1.8 을 필요로 한다. Play 설치 activator 다운로드 https://playframework.com/download에서 Offline Distribution 클릭하여 다운로드 받는다. /usr/local이나 쓰기권한있는 원하는 위치에 압축을 풀어준다. Path에 activator 추가. 자신의 profile 파일에 path를 추가한다. MacOS/Linux는 보통 $HOME/.profile 에 추가한다. (/etc/paths에 추가하기도 하고 자신이 쓰는 path 지정하면 ..
[책] 훌륭한 프로그래머 되는 법 - 경로 탐색하기 최근 환경이 바뀌어 새로운 환경, 시스템에 적응할 일이 있어 코드를 분석할때 느낀점을 '훌륭한 프로그래머 되는 법'(Becoming a Better Programmer) 책을 읽으며 공감한 부분이 있어서 정리해 봅니다. '훌륭한 프로그래머 되는 법'(Becoming a Better Programmer) 6장 경로탐색하기 에서 발췌한 내용입니다.. 경로 탐색하기. - 새로운 프로젝트에 투입되었을때 코드를 둘러볼 계획을 어떻게 세워야 했을까? 프로젝트에 투입된 최초 시점에서, 성과를 낼 수 있는 상태에 빠르게 도달하기 위해 어떻게 해야했을까? 이미 존재하는 거대한 코드베이스에 적응을 위해선 다음과 같은 작업을 재빠르게 해내야 한다. 그래야 작업한 첫 번째 변경 사항이 다른 이들에게 당황스럽게 보이거나, 이미..