본문 바로가기
[책 정리] 숙달을 통해 프로가 돼라 - 문제는 무기력이다 -행동 치료가 지속적이고도 강력하게 사람을 변화시키지 못하는 데는 이유가 있다.이는 마음의 요소인 동기와 정서, 인지가 관여하기 때문이다. 잠만 자던 명문대생 -목표를 달성하는 것만으로는 유능감이 생기지 않는다.올림픽 금메달리스트 중에도 메달을 획득한 후 슬럼프를 경험한 사람이 많다. -목표를 달성하고도 유능감을 느끼지 못하는 이유는 무엇일까?첫째는 목표 달성이 자신의 기량을 향상시켰다는 느낌을 주지 못하기 때문이다.이런 일은 목표 달성이 타인에 의해 이루어졌을 때 종종 일어난다.내적 만족감이 따르지 않는 성공은 단지 외적인 보상에 지나지 않는 것이기 때문에 허탈감을 느낄 뿐이다. 둘째, 기량이 향상됐지만 그것이 본인에게 가치있는 성장이나 숙달이 아니기 때문이다. 결국 유능감을 키우기 위해서는 본인이 기.. 2021. 1. 15.
[책 정리] 6장. 함수형 프로그래밍 - Clean Architecture 정수를 제곱하기 - 함수형 언어에서 변수는 변경되지 않는다. 불변성과 아키텍처 - 경합 조건(race condition), 교착 상태(dealock) 조건, 동시 업데이트(concurrent update) 문제가 모두 가변 변수로 인해 발생한다. 우리가 동시성 앱에서 마주치는 모든 문제, 즉 다수의 스레드와 프로세스를 사용하는 앱에서 마주치는 모든 문제는 가변 변수가 없다면 절대로 생기지 않는다. - 아키텍트라면 동시성(concurrency)문제에 지대한 관심을 가져야만 한다. 우리는 스레드와 프로세스가 여러 개인 상황에서도 설계한 시스템이 여전히 강건하기를 바란다. 가변성의 분리 - 불변성과 관련하여 가장 주요한 타협 중 하나는 앱 또는 앱 내부의 서비스를 가변 컴포넌트와 불변 컴포넌트로 분리하는 일이.. 2020. 4. 10.
[Java8 In Action] #13 함수형 관점으로 생각하기 [Java8 In Action] #13 함수형 관점으로 생각하기 Java8 In Action 내용을 보며 정리한 내용입니다.정리자는 기존에 Java8 을 한차례 rough 하게 공부한 적이 있고, Kotlin 역시 공부한 적이 있습니다.위의 prerequisite 가 있는 상태에서 추가적인 내용만 정리한 내용이므로, 제대로 공부를 하고 싶다면 책을 구매해서 보길 권장합니다! 13.1. 시스템 구현과 유지보수 13.1.1. 공유된 가변 데이터 -변수가 예상하지 못한 값을 갖는 이유는 결국 우리가 유지보수하는 시스템의 여러 메서드에서 공유된 가변 데이터 구조를 읽고 갱신하기 때문이다. -자신을 포함하는 클래스의 상태 그리고 다른 객체의 상태를 바꾸지 않으며 return 문을 통해서만 자신의 결과를 반환하는 .. 2019. 1. 2.
[머신러닝] #4 신경망 학습 #2 [머신러닝] #4 신경망 학습 #2 "Deep Learning from Scratch” 책을 보고 제가 필요한 내용만 정리한 내용입니다.자세한 내용은 책을 구매해서 보세요~ 4.4. 기울기 -x0 와 x1 의 (두 변수의) 편미분을 동시에 계산하는, 모든 변수의 편미분을 벡터로 정리한 것을 기울기(gradient)라고 한다.def numerical_gradient(f, x): h = 1e-4 grad = np.zeros_like(x) # x 와 형상이 같은 배열을 생성 for idx in range(x.size): tmp_val = x[idx] # f(x+h) 계산 x[idx] = tmp_val + h fxh1 = f(x) # f(x-h) 계산 x[idx] = tmp_val - h fxh2 = f(x) .. 2018. 7. 6.
[Effective Objective-C] #52 NSTimer 가 타깃을 리테인한다는 사실을 기억하라 [Effective Objective-C] #52 NSTimer 가 타깃을 리테인한다는 사실을 기억하라 출처 : Effective Objective-C -NSTimer 클래스는 절대 날짜(absolute date)와 시간 또는 주어진 시간 뒤에 실행되도록 스케줄될 수 있다.타이머는 또한 반복할 수 있다.그렇기 때문에 얼마나 자주 발생시켜야 할지 정의하는 반복 주기(interval)이 있다.예를 들어 리소스를 5초마다 폴링하기 위해 타이머를 사용할 수 있다. -타이머는 실행 루프(run loop)와 연관되어 있다.실행 루프는 타이머가 이벤트를 발생시켜야 할 때를 다룬다.타이머를 생성할 때 현재 실행 루프에 스케줄 된 상태로 생성할 수 있다.또는 타이머를 생성하여 직접 실행 루프에 스케줄시킬 수도 있다.어떤.. 2017. 10. 20.
[Effective Java] 잘 판단해서 최적화하자 [Effective Java] 잘 판단해서 최적화하자 - 최적화에 대한 명언이 있다. 더 많은 컴퓨팅 죄악이 다른 어떤 한 가지 이유(무지로 인한 어리석음을 포함해서)보다는 효율성(달성이 안 되는)의 이름으로 저질러진다. 사소한 효율성은 잊어야 한다. 97%의 시간에 대해 논하자. 성급한 최적화는 모든 죄악의 근원이다. 최적화에 관한 두 가지 규칙을 따르자. 규칙 1. 하지 말자. 규칙 2. (전문가에 한해서). 아직 하지 말자. 정말 최적화되지 않은 솔루션이 있을 때까지는. - 성급한 최적화는 얻는 것보다 잃는 것이 더 많기 쉽다. 최적화를 하면서 빠르지도 않고 제대로 동작하지도 않으며, 문제를 쉽게 해결하기도 어려운 소프트웨어를 만들기도 쉽다. - 성능 때문에 훌륭한 아키텍쳐 원리를 포기하지 말자. .. 2017. 2. 16.
[Effective Java] 문자열 결합의 성능 저하를 주의하자. [Effective Java] 문자열 결합의 성능 저하를 주의하자. - 문자열 결합 연산자(+)는 편리하지만 크기 조정이 안 된다는 단점이 있다. 문자열 결합 연산자를 n개의 문자열에 반복적으로 사용하면 n의 제곱에 비례하는 시간이 소요된다. String 이 불변(immutable)이기 때문이다. - 원하는 성능을 얻으려면 String 대신 StringBuilder 를 사용하자. - StringBuilder 를 결과를 충분히 저장할 만큼의 크기로 만들면 성능에 더 유리하다. 미리 산정된 만큼의 크기로 StringBuilder 를 생성하지 않고, 기본 크기로 생성해도 + 형태보다 여전히 50배 이상 빠르다. - StringBuilder 를 사용하기 싫다면 문자 타입을 저장하는 배열을 사용하거나, 문자열을 .. 2017. 2. 7.
[Effective Java] 전략을 표현할 때 함수 객체를 사용하자. [Effective Java] 전략을 표현할 때 함수 객체를 사용하자. - 자바는 함수 포인터를 제공하지 않는다. 대신 객체 참조를 사용해서 유사한 효과를얻을 수 있다. 호출된 객체의 메소드에서 다른 객체(메소드로 전달되는)의 메소드를 수행하도록 객체를 정의하는 것이 가능하다. 그런 메소드 하나만 달랑 외부에 제공하는 클래스의 인스턴스는 사실상 메소드 포인터의 역할을 한다. 그런 인스턴스를 함수 객체(function object)라고 한다. ex) Comparator Interface 를 상속한 Class instance. - 좋은 함수 객체는 상태가 없어 static final, singleton 으로 사용 가능한 녀석이다. Summary 함수 포인터의 주 용도는 전략(strategy) 패턴을 구현하는.. 2016. 11. 15.
[iOS Study] 애니메이션 제어 [iOS Study] 애니메이션 제어 출처 : 아론 힐리가스의 iOS 프로그래밍 -애플 문서는 언제나 iOS 기술을 배우기에 좋은 출발점이다. -기본 애니메이션(basic animation) 은 시작값과 끝값 사이를 애니메이션으로 만든다. -[UIView animateWithDuration:0.5 animtations:^{ label.alpha = 1.0;}]; animateWithDuration:animations: 메소드는 즉시 반환한다.즉, 이 메소드는 애니메이션을 시작하지만 애니메이션이 완료되는 것을 기다리진 않는다. -UIView 에서 가장 간단한 블록 기반 애니메이션 메소드가 animateWithDuration:animations: 이다.이 메소드는 애니메이션이 수행되는 시간과 애니메이션을 적.. 2016. 3. 6.
반응형