반응형

Programming 61

[Swift] Memoization

함수형 프로그래밍에서는 캐싱을 어떻게 구현할까? 클래스 내부에 캐시를 두면 결국 상태값을 클래스에 보관하는 것이 아닐까? 함수안에 변수를 쌓아둘 수는 없을까? 함수형 프로그래밍을 접하게 되면 위와 같은 고민을 자연스럽게 하게 될 것이다. '함수형 사고' 책 4장에는 이러한 고민을 덜어줄 기법이 나온다. 바로 '메모이제이션'이라는 기법이다. 도널드 미치의 Memo functions and machine learning 논문에서 처음 등장했다고 한다. 메모이제이션은 함수 레벨에서 캐싱을 할 수 있도록 도와준다. 그루비에서는 memoize()라는 함수를 제공한다. someFunction.memoize() 와 같이 호출할 수 있다. 이렇게 되면 클래스 내부에 캐시를 가지고 있지 않더라도 캐시와 동일한 기능을 구..

Programming 2018.10.12

[iOS] High Performance Auto Layout

https://developer.apple.com/videos/play/wwdc2018/220/ Don't churnInstruments로 Layout performance 확인하는 방법이 생길 예정임 (beta)1. 모든 constraints를 제거하는 것을 피하자2. static constraints는 한번만 추가하자3. 변경해야할 constraints를 교체해주자4. view를 제거하기 보다 hide 시키는 것이 좋다 영상에서 나왔던 예제 관련한 코드를 직접 작성해보는 것도 좋을 것 같다. fps의 차이가 얼마나 나는지 비교해보는 것도 좋겠다.코드가 더 간결해지는지도 확인해보자. Intrinsic Content SizeUIView.noIntrinsicMetricnoIntrinsicMetric을 어느..

Programming 2018.10.08

프로그래밍 공부할 것들

프로그래밍 공부를 시작한 친구를 위해 자료를 조금 정리해봤다. 내가 공부한 것도 있고, 좋다고 얘기만 들은 것도 있다. 적고보니 공부해야할 것들이 엄청 많다는 것을 느꼈다. 실무에서 눈에 보이게 사용되는 것 뿐 아니라 이러한 기반 지식을 알 때 전체적인 구조를 보는 프로그래머가 될 수 있을 듯 하다. 공부하면서 꾸준히 업데이트 해봐야겠다. Coding Interview University (한국어)CS 기초 지식이 없었던 저자가 구글을 목표로 두고 공부했던 것을 정리했다. 공부를 했던 동기가 확실했던 터라 집중적으로 공부했을 것이다. 저자는 많은 책을 읽었지만 실력을 쌓기 위해서는 몇가지 책을 제대로 공부하는 것이 더 중요하다고 말한다. 실제로 글을 보면 시간이 부족할 때, 시간이 많을 때로 나눠서 설명..

Programming 2018.10.06

로컬에 존재하는 저장소를 Github에 올리기

1. Github 에서 새로운 저장소를 만든다. 에러를 피하기 위해 READE나 gitgnore 파일을 만들지 않는다. (라고 되어있지만 그냥 무시하고 만들었다.)2. 터미널을 연다.3. 프로젝트 파일이 있는 곳으로 이동한다.4. git init5. git add .6. git commit -m "First Commit"7. Github 원격 저장소 URL 복사하기8. 원격 저장소를 지정해주자git remote add origin (원격_저장소_URL)git remote -v9. 푸시!!git push -u origin master 라고 했더니 역시 에러가 뜬다.순서를 조금 바꿔보자. 1. Github 에서 새로운 저장소를 만든다. README도 만들고 gitignore도 만든다.2. 터미널을 연다.3...

Programming 2018.03.10

Custom version check

Objective-C에서 버전 체크 해주기.앱이나 연동되는 기기 버전에 따라 다른 흐름으로 코드를 처리해주고 싶은데, 모든 클래스 마다 변수를 불러와서 사용하려니 매우 귀찮다.안드로이드에서 SDK 버전 체크해서 어떤 버전 보다 높을 때 해당 함수를 실행해주는 코드를 만들어야 겠다... 간단하게 헤더 파일에만 정의해두면 글로벌 변수로 사용할 수 있는 코드가 있다. 12extern int PROTOCOL_VERSION; cs 헤더 파일 (.h file) 에 위와 같이 선언해두면 별탈 없이 다른 클래스에서도 가져오고, 정의할 수 있다. 12345678910111213#import "headerFileName.h" PROTOCOL_VERSION = 100; // 최초로 버전을 불러올 때 정의해주기. if(PRO..

Programming 2017.03.08

Log 메세지 정리

Log 분류별 생각 없이 사용하고 있었는데 찾아보니 중요도에 따라 분류할 수 있다.Verbose < Debug < Info < Warning < ErrorError로 갈 수록 심각한 내용의 로그.안드로이드에서 이런 방식으로 분류하는 것을 볼 수 있다.http://promobile.tistory.com/63 Debug 단계에서는 Verbose 부터 모든 내용을 다 볼 수 있으면 좋을 것이고,Release 단계에서는 불필요한 로그를 보여줄 필요 없기 때문에 Warning 부터만 로그로 남기면 좋을 것이다. iOS 에서는 NSLog나 print를 통해서 로그를 출력한다. 위와같이 자세한 상황별 로그가 없다. https://github.com/CocoaLumberjack/CocoaLumberjackCococaL..

Programming 2017.02.22
반응형