본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
SLiPP(https://slipp.net) 서비스를 Java에서 Scala로 전환하는 과정에 대해 살펴본다. Scala를 선택한 이유, Java와 Scala를 동시에 서비스하면서 점진적으로 리팩토링하는 과정, Scala + Spring 기반으로 개발할 때 고려사항, Java에서 Scala로 전환하는 과정에 대한 경험담을 공유한다.
스트림 API는 람다 표현식을 적극적으로 활용해서 만들어진 자바의 새로운 API 입니다.
스트림 API를 통해서 자바에서도 맵/리듀스 방식으로 대량의 데이터를 순차 또는 병렬 처리를 할 수 있게 되었는데요, 이번 발표를 통해 스트림 API가 무엇인지- 어떻게 써먹는지에 대해 가볍게 씹고 뜯고 맛보고 즐기셨으면 좋겠습니다. :)
예제코드 : https://github.com/arawn/jdk8-stream-api
본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
SLiPP(https://slipp.net) 서비스를 Java에서 Scala로 전환하는 과정에 대해 살펴본다. Scala를 선택한 이유, Java와 Scala를 동시에 서비스하면서 점진적으로 리팩토링하는 과정, Scala + Spring 기반으로 개발할 때 고려사항, Java에서 Scala로 전환하는 과정에 대한 경험담을 공유한다.
스트림 API는 람다 표현식을 적극적으로 활용해서 만들어진 자바의 새로운 API 입니다.
스트림 API를 통해서 자바에서도 맵/리듀스 방식으로 대량의 데이터를 순차 또는 병렬 처리를 할 수 있게 되었는데요, 이번 발표를 통해 스트림 API가 무엇인지- 어떻게 써먹는지에 대해 가볍게 씹고 뜯고 맛보고 즐기셨으면 좋겠습니다. :)
예제코드 : https://github.com/arawn/jdk8-stream-api
초고속 웹사이트 개발을 위한 Codeigniter PHP FrameworkInseok Lee
지난 10월에 연구실에서 진행했던 세미나 자료입니다.
웹개발에 대한 기본적인 개념이나 프레임웤에 대한 내용을 전혀 모르는 학부 학생들과 연세가 있으신 박사과정 학생들을 위해 제작되었습니다.
Codeigniter의 내용보다도 왜 Codeigniter를 쓰면 좋은지, 그리고 웹 개발 방법은 어떻게 바뀌어 왔는지 등을 이곳저곳의 슬라이드(Codeigniter 한국사용자 포럼의 웅파님, 다음커뮤니케이션의 윤석찬님)를 정리하였습니다.
초보자를 대상으로 하는 강의에서 참고하면 좋을 것 같아용~
관련 문의는 Codeigniter 한국사용자 포럼 codeigniter-kr.org 에서 해주세요~
어느 해커쏜에 참여한 백엔드 개발자들을 위한 교육자료
쉽게 만든다고 했는데도, 많이 어려웠나봅니다.
제 욕심이 과했던 것 같아요. 담번엔 좀 더 쉽게 !
- 독자 : 백엔드 개발자를 희망하는 사람 (취준생, 이직 희망자), 5년차 이하
- 주요 내용 : 백엔드 개발을 할 때 일어나는 일들(개발팀의 일)
- 비상업적 목적으로 인용은 가능합니다. (출처 명기 필수)
[TechDays 2015]에서 발표한 "두근두근 ASP.NET 5!" 세션의 발표 자료입니다.
ASP.NET의 Reboot이라고까지 불리는 ASP.NET 5를 미리 만나볼 수 있는 시간을 가져봅니다.
무엇이 달라졌고 개선되었는지, 또 어떤 매력을 가졌는지에 대해서 알아볼 수 있는 ASP.NET 5와의 첫 만남!
그 두근거림을 느껴 보시기 바랍니다.
3. 배경
• 간결한 코드를 위한 개발자들의 Needs
• 멀티코어 CPU 대중화 (하드웨어적)
4. 배경
• 간결한 코드를 위한 개발자들의 Needs
익명클래스를
이용하는 방법
메서드 레퍼런스를
이용하는 방법
5. 배경
• 멀티코어 CPU 대중화 (하드웨어적)
– 기존에는 멀티코어를 활용하기 위해 Thread를 사용했
다.
• Java 1 : Thread, Lock
• Java 5 : Thread Pool, Concurrent Collection
• Java 7 : Fork-Join Framework
– 자바8에서는 병렬처리를 지원하는 Stream API 지원
• 비싼 자원인 Synchronized 키워드를 사용하지 않음
• 병철 처리 코드를 JVM으로 넘김 (추상화)
• parallelStream()
6. 자바 함수
• 자바8에서는 함수를 새로운 값의 형식으로 추가했다.
(함수를 값으로 넘길 수 있다는 의미)
– Primitive Data Type : int, boolean, float
– Reference Data Type : String, new 키워드로 생성한 각종
객체들
– Method (메소드 레퍼런스) : 메소드 블럭의 메모리상 주소
값
– Function (익명함수 or 람다) : 익명함수 블록의 메모리상
주소값
• 람다와 메소드 레퍼런스를 이용하여 스트림의 기능이
구현된다.
7. 메서드 레퍼런스
File 클래스에 isHidden() 메서드가 존재하고 있지
만 복잡하게 FileFilter 클래스로 감싼후 new 키워드
를 이용하여 인스턴스를 만들어 객체로 만든 후 파
라메터로 전달한다.
File 클래스가 가지고 있는 isHidden() 메서드
를 직접 파라메터로 전달한다.
9. 람다 (익명함수)
• 람다 코드가 길어진다면 메서드로 만들고
메서드 레퍼런스로 넘기는 방식으로 구현
하자.
• 예제로 나온 필터와 같은 집합연산은 직접
구현하지 말고 가급적이면 스트림 API를
사용하자.
10. 스트림 (Stream)
• 스트림이란 한번에 한개씩 만들어지는 연
속적인 데이터 항목들의 모임
• 자바8에서는 우리가 하려는 작업을 고수
준으로 추상화해서 일련의 스트림으로 만
들어 처리할 수 있다.
• 스트림 파이프라인을 이용하면 추상화된
병렬처리를 할 수 있다.
12. 디폴트 메서드
• 기존의 구현을 고치지 않고도 이미 공개된 인터페이스를 변경할 수
있을까?
– Interface의 태생적 한계
• 디폴트 메서드는 특정 메서드 구현을 인터페이스가 포함하는 것
• 자바8에서는 Default 키워드 지원
• 디폴트 메서드를 이용하면 기존의 인터페이스 설계를 자유롭게 확
장할 수 있다.
• 개발자가 디폴트 메서드를 직접 구현할 일은 거의 없어야 한다.
• 디폴트 메서드는 프로그램 구현에 도움을 주는 것이 아니라 미래에
프로그램이 쉽게 변화 할 수 있는 환경을 제공하는 것이다.
• 다중상속?
13. 동작 파라메터화
• 전략 패턴 (Stratege Pattern)
• 알고리즘(전략)을 미리 정의해 둔 다음 런
타임에 알고리즘을 선택하는 패턴
14.
15. 필요한 전략을 런타임에 결정할 수 있다.
그런데 전략을 반드시 클래스로 만들어야 할까?
16. 진짜로 필요한 코드
진짜로 필요한 코드
필요한 전략을 런타임에 결정할 수 있다.
그런데 전략을 반드시 클래스로 만들어야 할까?
진짜 실행에 필요한 알고리즘보다
코드를 보내기 위해 작성된 불필요한 코드량이 더 많다.