Text
Java8 람다 표현식
Reference
java 8 in action
람다 함수
이름이 없는 함수(익명함수)
람다 표현식
메서드로 전달할 수 있는 익명 함수를 단순화한 것
익명
보통의 메서드와 달리 이름이 없으므로 익명 이라 표현한다
함수
람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수 라고 부른다 파라미터 리스트 & 바디 & 반환타입 & 예외처리 등을 포함한다
전달
람다 표현식을 메서드 인수로 전달하거나 변수로 할당할 수 있다
간결성
익명 클래스처럼 번거로운 코드 구현이 필요가 없다
비교
다음은 Comparator 커스텀 객체 구현 예제이다
Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } };
람다로 바꾸어 보자
Comparator byWeight = (Apple a1, Apple a2) -> // 람다 파라미터, 화살표 a1.getWeight().compareTo(a2.getWeight()); // 람다 바디
Java8의 람다 표현식
다음은 다섯 가지 람다 표현식 예제이다
1. return 문을 명시적으로 사용하지 않아도 int를 반환
(String s) -> s.length()
2. Apple 형식의 파라미터를 가지며, boolean을 반환
(Apple a) -> a.getWeight() > 150
3. 다중 파라미터, void 리턴, 여러 행의 문장을 포함하는 {}
(int x, int y) -> { System.out.println("Result:"); System.out.println(x+y); }
4. 파라미터 없이, int 반환
() -> 2014
5. Apple 형식의 다중 파라미터, int 반환
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
람다의 기본 문법
(parameters) -> expression =람다 바디가 표현식이냐 또는 (parameters) -> { statements } =람다 바디가 구문이냐
0 notes
Text
OOP를 위한 객체지향 개념#1
Class
클래스 class를 구성하는 속성, class의 행위(기능)을 멤버함수 형태로 표현한다 private, protected, public, etc. 접근 권한자(Access Specifier): 정보 은닉장치 제공
Object
객체 = new 연산자 + 객체 생성자(Constructor)
Order o1 = new Order(); // 객체생성 o1.processOrder(); // 특정 객체에게, 서비스를 요청하는 메세지 전송
Inheritance
상속 : extends 1. 일반 클래스(class) 간의 상속 관계 2. 추상 클래스(abstract class)와 일반 클래스(class) 간의 상속 관계 3. 인터페이스(interface)간의 상속 관계
Polymorphism
다형성 : overloading vs overriding 1. 함수 오버로딩 같은 이름의 메소드를 여러개 but 매개변수 유형과 개수가 다르다 2. 함수 오버라이딩 상위 클래스(super class or parent class)가 가진 메소드를 하위 클래스(sub class or child class)가 재정의(Override)하여 사용
구분 오버로딩 오버라이딩 메소드 이름 동일 동일 매개변수, 타입 다름 동일 리턴 타입 상관없음 동일
super
자식 클래스에서 부모 클래스를 재정의(Override)하면, 부모클래스의 함수를 사용하지 못하므로, super 키워드 사용(in 자식 클래스)
Abstract class
추상 클래스 : abstract 이 키워드를 함수에도 적용 가능 하다. 상속 관계에 있는 하위 클래스에서 추상함수를 구현한다. (-> 함수 오버로딩)
Interface
인터페이스 : 함수들의 집합, 모든 함수들은 public으로만 선언 인터페이스에서 선언된 함수들은 클래스를 통해서만 구현 가능(구현관계) - using class name implements interface name
Component
0 notes
Text
F-measure: using Precision, Recall
성능평가
동전이나 주사위를 돌려서 어떤 결과가 나오길 원한다 (ex: 주사위의 앞면이 1이 나오는 확률, 동전의 앞면이 나오는 확률)
그 결과를 10번 반복했다고 해서 나온 확률을 결정할 수 있을까? 횟수가 적기에 그렇지 않다고 말할 것이다 즉 반복적으로 돌렸을 때, 동일하게 결과가 나오는지 확인해야한다
Intro
ex) Search
[Precision] 검색 결과 10개의 아이템이 있다면, 그 중 가치있는 것 몇 개 일까?
[Recall] 책 검색 결과, 내가 찾고자 하는 책은 몇권인가?
F-measure
Precision (정확도)
Recall (재현율)
서로 반비례 관계를 가진다 둘 다 중요한데, 이걸 어떻게 측정하고 조합평균을 낼 것인가?
reference links
Precision_and_recall
1 note
·
View note
Text
Machine Learning: Symbol-Based
Introduction
Learning any change in a system that allows it to perform better the second time on repetition of the same task or the similar task.
Paradigms
Symbolic approach
Neural or connectionist networks
Genetic and evolutionary learning
Dynamic and probabilistic approaches
Most of the learning algorithms learn by searching through a space of possible concepts(concept space) to find an acceptable generalization.
0 notes
Text
Pet projects - Todolist #1
여러가지 하고 싶은게 있음에도 불구하고 딱 하나만 정해서 하기 어렵다
todos
1. 온라인 쿠폰만들기
음식점이나 까페에서 지급하는 쿠폰을 온라인에서! 이것은 터칭이라는 어플리케이션을 보고 생각이 났다
2. 영화 평점 검색
여러 곳에서 사용중인 영화 평점 데이터를 모아서 볼 수 있는 웹 rails + semantic-ui (여기서 제공하는 api를 사용해서 실시간 검색 구현)
3. 컨텐츠를 추천하는 챗봇
LINE의 Messaging API를 사용해서 만들어 볼 예쩡 호스팅은 c9.io을 이용할 생각이다.
4. github API를 이용한 desktop 프로그램
아... 일렉트론 배운다고 한지 1녀언 전인 것 같다 꼭 한번 해보고 싶다
5. shell로 모르는 단어 변환 (영한번역기)
쉘스크립트를 얼마 못짜지만, api 사용해서 간단히 만들 수 없을까 이걸 생각한 이유는 쉘 프랜들리 사용자로서.. (^3^).. 영어공부에도 도움이 되며...
coming soon
업데이트 예ㅈ쩡
0 notes
Text
Pet projects
Think about Pet projects
나혼자 한 경우는 조금 드물었던 것 같다. 팀플은 많이 해보았지만, 진정으로 혼자서 무엇을 배우고 할지 해본적은 대학교 1학년이 끝이었던 것 같아서 몹시 후회된다. 자잘한 펫프로젝트를 진행해보려한다.
내게 있어 최고의 자가 학습, 자가 훈련 방법은 펫(Pet) 프로젝트다. 펫 프로젝트는 취미생활과도 비슷한 나만의 소프트웨어 프로젝트다.
https://thebook.io/006777/part01/ch04/04/02/
지금까지 사소하게 했던 것
LIST
emoji-parser python command line interface text emoji parser using (https://textfac.es/), python web crawler. you can save text emoji to Python variable somethin
rotto ruby command line interface In 1 to 45 interger number, you can get to sample 6 integer by asc sort
open-tabs shell script ! command line interface When you have to close quickly chrome browser all tabs, How do you do it? A shortcut called Control + Shift + T will help you open the chrome tab you closed, but it will not be remembered for a long time. So how about saving a web address as a text file and opening it all at once? This shell script that takes a text file as an argument and open all tabs in the text file you write.
auto-control-web Python automation program. I have not decided what I want to do yet. It is created using selenium! The motivation for doing this is that it is attractive to automatically click on and type what you want to do.
1 note
·
View note
Text
HWG: 1
How to Work at Google 구글 면접과 인턴십, 그리고 소프트웨어 엔지니어링.
What to Expect in Your Technical Interview
How to Solve a Technical Problem?
Solving a Technical Problem
Response Framework
Clarify the problem
Define your approach
Propose a solution
propose alternative solution
Implement the solution
-
Mock Interview
Question
"Given an collection of numbers, determine whether there exists two distinct elements in the array whose sum equals a target value." e.g. * elements = [2, 4, 5, 9, 1], target = 8 -> False * elements = [2, 4, 5, 9, 1], target = 7 -> True (5+2 = 7)
Answer
Input : int arr, int n Output : true if find pair which sums to n Assumpthions - n is any integer - fixed array Ex. Input = [2, 4, 5, 9, 1], n = F => True
Approach 1 - Compare every elements to every subsequent elements - Time : O(n2) - Space : O(1) constant
문제푸는이(@TSION BEHAILU)가 샬라샬라 하는데 무슨말인진 잘 알아듣지 못함.. 자료구조로써는 hash set을 쓰고 그 다음엔 알고리즘을 설명하고 이에 대한 빅오를 이유를 대며 제시
질문자가 빅오를 보며 "What about the space complexity, the memory?" 변수를 이만큼 쓰니가 이래이래 될거에요(@TSION BEHAILU)라고 대답하심
Approach 2 - Save elements in Hash set if n - element is not already in the set - Time : O(n) - Space : O(n)
질문자가 다시 살펴보며 "And I wonder if there's any other approach that could improve on any of these constraints."
-
Resume Tips
(강조하며 했던 말)
Try not to pad too much the resume.
Keep it to one page. It needs to be very clean, and if you are going to be putting something important, put it on the left of the page
So name of the University, degree that you're pursuing important Projects with two bullet points. That's kind of the thing that we're talking about.
일경험이 없을 경우, 지원한다면 이게 첫 인턴쉽 일 것이다. 오픈소스프로젝트나 개인프로젝트들 - 또 당신이 셋팅해놓은 작은 웹사이트 - 포트폴리오 사이트, 해커톤 프로젝트들이 있다면 비교적 일경험이 없지만 works 할 것이다.
절대 많은 언어 집어넣지마라. 차라리 c++ 전문가라고 어필하는게 더 basically 하다.
Don't boast 자랑하지 말라. 나는 유창하고 뭐 이런 뉘앙스 풍기지 말란 뜻인듯하다
a bullet point!! 영상에서 몇번이나 나온 문장이다
Resume Sections to Include
4가지 정도의 간단한 다음과 같은 섹션 아마 필수이자 이정도면 된다는 뜻인 것 같다 너무 많이 넣으려고 하지 말라고 한다
Educational Information
School, Major, GPA, Expected Graduation Date
Relevant Work Experience
Internshops, TA or Tutoring Experience, Research Projects
Technical Projects
Individual, Group or Hackathon Projects
GitHub
Leadership & Activities
Involvement in Clubs / Groups / Associations
-
질문하는 것에 대해
물어봐라 * What they like by just asking them! * 마지막에가서 저에게 주실 피드백은 없나여? 라든지 * 제가 이걸 어떻게 향상시킬 수 있을까여? 라든지
0 notes
Text
HWG: review
How to Work at Google: Internship & Interview Insights, Software Engineering
youtube
코드리뷰는 몇개월 해봤지만 깔끔하게 못한적이 많은 것 같다. 게다가 안한지 오래되었고(알고리즘도).
Input과 Output, Assumpthions, Approach들을 일목정연하게 정리하며 말하는 것이 정말 멋지다. 혼자만 설명만 하다 끝나는게 아니고, 질문자들의 요구도 있고 그에 따라 토론도 하고 있다.
방학 때 알고리즘 스터디를 또 할텐데, 이걸 보고나서 어떻게 진행해야할지 공부해야할지 도움이 많이 되었다. 공부는 언제나 하는 것이라 끝까지 가는게 어렵다. 하지만 이런식으로 미디어를 접할 때마다 새로움을 느껴 재미있고 놓칠 수 없는 것 같다.
그리고 영어공부도 이제는 Hard 하게 해야해서 이 동영상을 시작으로 번역을 해보려고 한다. 짧은 시간의 영상이든 아티클이든 방학때 도전해보려고 한다.
잠깐 메모를 해보자
__Response Framework__
1. Clarify the problem 2. Define your approach 3. Propose a solution 4. propose alternative solution 5. Implement the solution
Q 다이나믹프로그래밍에 대해.. 면접자들이 풀거나 못풀거나 하는 것에 대해서
A 많은 방법이 있다 (multiple way). 그 문제를 어떤 방식으로 풀 수 있고, 설명할 수 있을 것이다. 당신의 알고리즘을 다른 사람들 봤을 때 "아 나 이 알고리즘 이해했고 너가 왜 이렇게 풀었는지 알겠어" 라면 gotcha!
Q 면접자들이 하지 말아야할 것들이 있다면?
A 침묵하지 말라. 선제코딩 하지마라. 당신의 접근법에 대해 질문이 들어올것이다.또 문제를 마법처럼 풀어주는 library 는 당신을 도와주지 못한다.
Q 얼만큼 알고리즘을 연마해야할까요?
A (요약) 기본기가 중요하다. 복잡한것들은 기본적인 것에서 유도할 수 있다. 해쉬맵은 당연히 알아야하고. 아마 복잡한 데이터 구조에 대해 공부하려한다면 그건 배울필요 없을듯 (맥락상)
0 notes