전체 글
-
덧셈 & 뺄셈을 이해해보자Game/Game Mathematics 2021. 2. 27. 01:01
도대체 왜 이런걸... 기본이 가장 중요하다. 그리고 이 내용은 정말 충격적이다. 들어가기 전에 수학 또는 물리에서 벡터 라는 친구가 있는데 이 친구는 방향 과 값 이라는 특징을 가지고 있다. 그리고 스칼라 라는 친구는 값 이라는 특징만 갖는다. 지금까지 일반 실수 또는 정수들의 덧셈과 뺄셈은 스칼라 의 특징만을 가진 연산이라고 생각했다. 덧셈과 뺄셈을 할 때 내가 가진 물건을 + 또는 - 가 된다는 의미로만 생각했었다. 그런데 말입니다... + 와 - 에 다른 의미를 부여한다면...? 덧셈 A = 5, B = 9 라는 값이 있다고 하자. A + B 는 14 이다. 그럼 이 의미는 무엇일까? 5개와 9개가 더해져서 14개가 되었다. 맞다. 뺄셈 자 다시, A = 5, B = 9 라는 값을 가지고 A - ..
-
Mac에서 YouCompleteMe 사용하기Shell 2021. 2. 4. 02:02
맥에서 vim을 IDE처럼 써보자는 생각에 블로그들을 돌아다니다가 굉장히 유용한 블로그 글을 하나 발견했다. (Linux) Vim 에디터 다양한 기능 설명 및 C++/Python 개발환경설정 Edward Im 님께서는 친절하게 .vimrc 템플릿도 제공해주시고 vim 의 IDE화를 하나하나 친절하게 설명해주셔서 바로 따라해봤다. 참고로 Edward Im 님은 Ubuntu에서 작업하셨고 난 MacOS에서 작업했다. vim 에서는 plugin들을 Vundle을 통해 설치가 가능한데 Edward Im 님께서 미리 필요한 plugin들을 추가해주셔서 vim 안에서 :BundleInstall 명령어만 치면 손쉽게 설치가 된다. 그 다음, 문제는 YouCompleteMe 라는 자동완성 plugin을 설치할때 발생했..
-
Factory Pattern within SpringJAVA/Spring 2020. 7. 18. 02:12
스프링에서 팩토리 패턴을 사용하기 좋은 방법을 발견해서 기록해둔다. 한번 봐보자. DI와 팩토리의 만남. 기가막힌다. 인터페이스 정의 먼저 인터페이스를 하나 만들어 보자. 뭐가 좋을까? 간단하게 자동차로 해보자. public interface Car { Color getColor(); } 그냥 색깔만 보여준다. 이제 색깔별 차들을 구현해보자. 색깔별 자동차 클래스 구현 @Component public class RedCar implements Car { @Override public Color getColor() { return Color.RED; } } 빨간차... @Component public class BlackCar implements Car { @Override public Color getC..
-
FunctionFP 2020. 7. 12. 02:04
정의 함수 란? () 연산자를 적용하여 평가할 수 있는 모든 호출 가능 표현식 호출시 사용 가능한 결과값을 반환 자, void 를 반환하는 함수를 우리는 앞으로 함수로 쳐주지 않기로 한다. 그럼 뭐라고 부르지? 일급 시민 Javascript에서는 함수가 객체이므로 값으로 다룰 수 있어서 일급 또는 일급 시민 이라고 부른다. 보통 프로그래밍에서 일급이라고 함은, 적용 가능한 모든 연산을 수행할 수 있는 것들을 일급 이라고 부른다. (어렵다...?) 그럼 그러한 연산은 뭐가 있을까? 값을 할당하거나 함수의 인자로 전달하거나 함수의 반환값으로 사용하거나 보통 위와 같은 케이스를 말한다. 그럼 Javascript에서 이러한 연산을 어떻게 수행하나 한번 보자. 먼저 값을 할당하거나 const add = funct..
-
CGLIB Proxy 와 Mockito 콜라보레이션 (feat. Not a Mock)JAVA/tips 2020. 7. 10. 01:00
근황 최근 팀 이동으로 인해 갑작스럽게 자바 개발자가 되었다. 대한민국은... 어딜가나 자바를 해야한단 말인가... 😢 그래서 나름 열심히 스프링 공부를(?) 하고 있다. 자바개발자가 아니라 스프링 개발자인듯 멘붕 갑작스럽게 프로젝트 하나를 맡아서 열심히 분석하고 개발하려고 봤는데 테스트코드가... 음... 이참에 기능 분석도 하고 리팩토링 준비도 할 겸 테스트 코드들을 작성하기 시작했다. JUnit으로 테스트 코드는 아주 간단한 것들만 짜봤었는데 이번 기회에 Mockito도 써보고 생각보다 재미가 쏠쏠했다. 그러다가 서비스 클래스의 테스트 코드를 작성하는데 안에서 다른 서비스 클래스를 참조하고 있었다. 그래서 참조되는 서비스 클래스를 스파이로 만들어서 호출여부만 확인하려고 했는데 이상한 에러가 발생했다..
-
How to make the Object as immutable in JSFP 2020. 7. 9. 01:00
불변 FP에서 객체의 상태를 불변으로 유지하는건 굉장히 중요하다. 불변을 통해 부수효과를 방지하기 때문이다. Why JS? 간단하다. 굉장히 범용적으로 사용되는 언어이고 무엇보다 내가 좋아하기 때문이다. -끝- 농담이다. 🙃 JS에서 객체의 상태 관리 ES5까지는 변수를 상수처럼 고정 할 수 있는 방법이 없었지만 ES6에서 const 라는 멋들어진 키워드가 소개되면서 우리는 변수를 상수처럼 런타임시에 변경할 수 없도록 지정할 수 있게 되었다. 하지만 그것도 잠시... 객체의 속성은 여전히 런타임에도 맘데로 지멋데로 제멋데로 바꿀 수 있다. 속성의 변신은 무죄? function Dog(name) { this.name = name; } Dog.prototype.toString = function() { re..
-
FP vs OOPFP 2020. 7. 8. 00:41
함수형 VS 객체지향 함수형 객체지향 합성 단위 함수 객체(클래스) 프로그래밍 스타일 선언적 명령형 데이터와 기능 독립적인 순수함수가 느슨하게 결합 클래스 안에서 메서드와 단단히 결합 상태 관리 객체를 불변 값으로 취급 인스턴스 메서드를 통해 객체를 변이시킴 제어 흐름 함수와 재귀 루프와 조건 분기 스레드 안전 동시성 프로그래밍 가능 캡슐화하기 어려움 캡슐화 모든 것이 불변이라 필요 없음 데이터 무결성을 지키기 위해 필요함 함수형과 객체지향을 섞으면 형식 간의 관계가 자연스럽고 풍성한 도메인 모델을 손에 넣고, 다른 한편으론 이들 형식을 가지고 어떤 일을 할 수 있는 순수함수까지 얻을 수 있음 오늘은 간단한 표 하나만 남겨봤다. 출처: 함수형 자바스크립트
-
Initial commit - FPFP 2020. 7. 7. 02:19
애플리케이션 설계 요소 확장성: 추가 기능을 지원하기 위해 계속 코드 리팩토링해야 하는가? 모듈화 용이성: 파일 하나를 고치면 다른 파일도 영향을 받는가? 재사용성: 중복이 많은가? 테스트성: 함수를 단위 테스트하기 어려운가? 헤아리기 쉬움: 체계도 없고 따라가기 어려운 코드인가? 함수형 프로그래밍(Functional Programming) 이란? 함수 사용을 강조하는 소프트웨어 개발 스타일 진짜 목표는 애플리케이션의 부수효과(side effect) 를 방지하고 상태 변이(mutation of state) 를 감소하기 위해 데이터의 제어 흐름과 연상을 추상화(abstract) 하는 것 어려울땐 예제로 보자 document.querySelector('#msg').innerHTML = 'Hello World..