전체 글 238

[Kotlin] 함수형으로 데이터 구조 만들기

주요 개념 - 함수형 개념을 사용하여 List를 구현 - 순수 함수 (Pure function) - 꼬리 재귀 (Tail recursion) - 고차 함수 (High order function) - 패턴 매칭 & 코틀린 매칭 - 이진트리를 직접 구현 아래의 코드는 단일 연결리스트의 구조 정의로, 비어있는 리스트와 값이 들어가 있는 리스트를 생성할 수 있는 형태이다. 값을 넣는 head와 리스트를 연결할 수 있는 tail 형태로 이루어져있다. 다형적으로 사용하기 위해서 A로 타입을 추상화 했다. sealed class List object Nil: List() data class Cons(val head: A, val tail: List): List() 아래는 companion object를 통해서 Jav..

Programming/Kotlin 2023.09.06

[Kotlin] 함수형 프로그래밍 시작하기

주요 개념 - 꼬리 재귀 함수를 이용한 루프 작성 - 고차 함수 (High-order function) - 타입 추상화 순수함수 만을 사용하여 프로그래밍을 하는 것이 함수형 프로그래밍의 기본이다. 그럼 순수함수만 이용해서 루프를 구현하라고 하면 대부분의 사람들은 어려워할 것이다. 이를 위해서 우리는 꼬리 재귀 함수를 사용한다. 아래와 같이 피보나치 함수를 꼬리재귀를 이용해서 짜보자. 피보나치 말고도 구구단 출력이나 기타 수열 문제들을 꼬리 재귀를 통해서 해결해보도록 한다. 재귀함수는 오로지 매개변수만을 참조하여 처리하도록 구현한다. 즉, 순수함수를 이용한 재귀 호출로 루프를 구현하는 것이다. fun factorial(i: Int): Int { fun go(n: Int, acc: Int): Int = if..

Programming/Kotlin 2023.09.05

[Kotlin] 함수형 프로그래밍이란? (순수함수)

Side effect를 유발하는 코드 - 블럭 외부에서 변수를 변경하는 경우 (공유 자원) - 메모리에 직접 접근하여 값을 변경하는 경우 (공유 자원) - 객체에 필드를 설정하는 경우 (공유 자원) - 예외를 던지거나 발생해서 프로그램을 중단 (실행 흐름) - 콘솔 출력이나 사용자의 입력 대기 (실행 흐름) - 파일을 입출력 (공유 자원) - 화면 출력 (공유 자원 /. 실행 흐름) 위와 같은 Side effect를 줄이는 방법으로 프로그래밍을 하도록 한다. IO 수행, 오류 처리, 데이터 변경 등의 처리를 보다 제한적이고 안전한 방법으로 한다. 이를 위해 함수형 프로그래밍을 살펴본다. 함수형 프로그래밍을 하기 위해서는 순수 함수를 이해하는 것이 중요하다. 위의 Side effect를 유발하는 코드의 공..

Programming/Kotlin 2023.09.05

[Life] '8년 10개월'의 개발자 소회.1 - 회고록

Prolog 3. 기사, Knight (2017~2019)나의 개발자로서의 커리어의 여정은 세 번째 회사에 당도하기에 이른다. 세 번째 회사는 나의 커리어의 전환점이자, 내가 가지고 왔던 생각과 활동들을 모두 할 수 있게 해 준 회사였다. 처음으로 이 회사에서 임원을 하고 싶다는 생각이 들게 만들었던 회사인 것 같다. 물론 결론부터 말하자면 Tech Lead까지 맡았으나, Manager로서의 트랙은 이행하기 전에 퇴사했다. 워낙 욕심도 많았고 책임감도 많았던 지라, 3번째 회사에서는 직책이 많을 때는 겸직을 포함해서 5가지의 직책을 수행한 적도 있었다. 그저 손만 들어주면 뭐든 시키는 회사가 어떤 때는 좋았으나, 어떤 때는 야속했던 애증의 관계였던 것 같다. 세 번째 회사에 와서 가장 먼저 했던 일은…...

Tips/Life 2022.06.06

[Life] '8년 10개월'의 개발자 소회.0 - 회고록

사내 발표 자료 정리하면서 영어사전 뒤져보다가 무슨 바람이 불었는지..... 그동안의 개발자 생활을 소회 해보고 싶어졌다. 여러 강연과 술자리에서 많이 했던 얘기들이라 대부분의 주변 분들은 지루해할지도 모르지만, 어리다면 어리고 늙었다면 늙은 한 개발자의 소회 정도로 지나가면서 심심할 때 읽을만한 글이 되기를 바라며 적어본다. 1. 영링, Youngling (2010~2013) 2010년은 군대에서 전역을 한 해이다. 나는 이때부터 인생이 뭔가 빠르게 진행되는 편이었던 것 같다. (* 훨씬 빠른 분들이 주변에 있는지라, 빠르다는 말을 입에서 꺼내지는 잘 못 한다....) 분대장은 일병 때 달았던 것으로 기억한다. 상병 말쯤엔가 분대장을 넘겨주고 인생에 대한 고민을 시작했다. 열심히라면 열심히 살았고, 놀..

Tips/Life 2022.06.01

[Apple] WWDC 2018 키노트 요약

메인 키노트 요약Welcome home, developers77개국 개발자가 모임전세계 2천만명의 애플 개발자매주 5억명의 앱스토어 방문자iOSIos11 81% 설치 : 안드로이드 6% – 만족도 95%Ios11이 동작하는 모든 기기에서 ios12가 동작 할 수 있다.구형 기기를 target으로 성능 향상 : 앱 런치 40%, 키보드 50%, 카메라 70%, share sheet 2배, overload 환경에서 앱 런치 2배ARKit : 픽사와 새로운 AR 파일 포맷 만듦 -> USDZ어도비 CC에서 USDZ 지원Measure : 센서를 이용한 측정 앱 (길이, 넓이 등)ARKit 2 : 멀티유저 증강현실 지원Photo : search suggestion (장소, 카데고리, 이벤트 등), for you ..

WWDC/2018 2018.10.14

[Tip] 사라진 '네이버 음악 검색' 단축키, iOS 단축어로 쉽게 이용하기!!

우리나라 검색 필수 앱인 '네이버앱'!!! 어느 순간 3D 터치 단축키에서 '음악 검색'이 사라졌다. 이를 편리하게 사용할 수 있는 방법이 있어 공유드립니다. 네이버 앱에서는 네이버 앱과 쉽게 연동할 수 있도록 URL 연동 가이드를 제공합니다. 아래의 URL 연동 가이드를 참고하면 네이버 앱 안의 여러 기능들을 연동할 수 있습니다. 우리는 이 연동 가이드 중 '음악 검색'을 이용할 예정입니다. 네이버 앱 URL 연동 가이드 먼저 아이폰은 iOS 12로 업데이트 해주세요. iOS 12에서 제공하는 단축어 기능을 사용하여 실행할 예정입니다. 단축어 기능은 아이폰을 이용할 때 사용하는 여러 사용자 동작들을 하나의 명령어로 단축시켜 주는 기능을 해주는 유용한 기능입니다. 단축어 기능 아래의 영상을 따라서 하면 ..

Tips/iPhone 2018.10.07

[iOS] 버전별 히스토리 관리

지속 업데이트 중.... OS 버전기능SDK출시일비고1iOS 11 (beta 2)파일 탐색기 지원독을 활용한 Splitview/Slideover (멀티태스킹)드래그앤 드롭 기능Live Photo 루프/바운스/장노출 효과App Store 리뉴얼Siri 번역 기능Apple Music 친구 기능 강화제어센터 리뉴얼애플 지도 건물 내부 지원Quicktype 키보드 한손 타이핑 가능가까이 있는 iOS와 Mac으로 자동 복원 기능사진앱에서 GIF 및 QR code 기능 지원파일앱에서 FLAC 재생 가능32-bit 미지원ARKit (증간현실) 지원ApplePay (NFC API 개방 : iPhone7 이후 모델 대상)바이너리 바코드 지원 : CIBardoceDescriptor를 이용MusicKit : 애플 뮤직 카탈..

[macOS] 화면이 뿌옇게 될때, HiDPI 사용하기 (Mac 고해상도 적용)

macOS 서브모니터 (듀얼) 저해상도 및 폰트 흐릿함 해결 방법1. 위의 파일을 다운받아, 설치한다.2. 터미널을 실행하여, 아래 명령어를 입력한다.sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool YES3. 사용자 계정을 로그아웃한 다음, 로그인을 한다. (혹은 재부팅)4. RDM.app을 실행한 다음, HiDPI 해상도를 선택한다. RDM Open Source : https://github.com/avibrazil/RDMhttps://www.clien.net/service/board/lecture/11548093

Tips/macOS 2018.03.19