The Devil Wears Prada

영어로 처음 다 읽은 소설 😆

주인공이 작가 지망생답게 어려운 단어를 잘 쓴다며 열심히 찾아가면서 읽었는데 이 책 단어 수준이 중급이라구요 …? 다음 책은 그래도 읽기 수월하겠지

주인공이 젊은이라 그런지 재밌는 문장이 꽤 있어서 읽는동안 지루하진 않았다. 반면 그녀의 행동에 공감이 안갈때도 있다는건 나는 꼰대가 되었는가 ..

실리콘밸리의 팀장들

팀장이 될 기회도, 생각도 없지만 … 그냥 궁금해서 사 봤었는데 팀원이 읽어도 좋긴 한 것 같다.

팀장의 입장에서 어떤 고민이 있는지 간접적으로 알 수 있고, 팀원으로써 어떻게 하면 좋을지 생각해볼 기회가 되기도 했다.

지금은 기억이 잘 안나지만 .. 구글이나 애플에서 일했던 경험으로 썰도 풀어주는것도 은근 재밌었다. 그리고 문화적 차이인지 몰라도 회사에서 고성이 오가고 울기도 한다는거 보고 놀랐었다.

책상에서 휴지를 치우면 상대방이 덜 운다니 … 얼마나 자주 우는거냐구요

자기계발서는 오랜만이라 더 재밌었을지도 모르겠다.

dispatch barrier로 동시성 이슈 피하기

디자인 패턴 책 보다가 concurrent queue의 동시성 이슈를 피하기 위해서 .barrier 주는 코드를 봤는데 요거 꽤 좋은거 같다

.barrier 플래그를 주면 concurrent라도 그 옵션이 붙은 블락이 끝날때까진 순차적으로 실행을 시켜주는 거라는데.. lock 과 비슷하다고 보면 될듯

읽던 책에선 싱글턴을 구현하는거였는데 값이 수정될때 읽어오려고 하면 동시성 이슈가 생기니깐 값을 수정할땐 저 플래그를 줘서 수정이 끝날때까진 값을 바로 가져가지 못하게 하는 효과를 줬다

덕분에 앱이 죽는 이슈는 피하게 됨 🤗

경험상 concurrent 큐를 쓰다가 동시성 이슈가 있네..? 그럼 성능이슈가 좀 있지만 순차적으로 바꿔야지 이러고 끝냈었다.

실제로 성능 차이가 막 느껴지는 기능도 아니긴 했지만 ..

애플 문서를 찾아보니 DispatchWorkItemFlags중 하나였는데 다른 flag도 하나도 모르고 있었자나 … 그동안 GCD 대충 쓰고 있었다 😇

나머지 옵션도 읽어 둬야지 …

프로그래머의 뇌

인지과학은 금시초문인데 이런 개념도 있었구나 ..

다른 개발서적에서 자꾸 인용하길래 사서 봤는데 읽어보길 잘한것 같다.

실력을 향상시키기 위해서 보통 개발을 많이 해보는데 코드를 읽는것도 꽤 중요하다는 것 ..

그리고 남들이 읽기 편한 코드를 짜려면 어떻게 해야할지도 어느정도 감을 잡을 수 있었다.

책에서 추천한 것 처럼 플래시카드를 만든다거나 코드를 프린트해서 보진 않겠지만 .. 새로운 언어를 배울때 도움이 될 내용도 많았다.

책에서 인용한 논문도 다 저장하긴 했는데 언제 읽을 시간이 있을라나 ..

그 중 하나 초보가 프로그래밍을 배울때 흔히 하는 착각 리스트 라고 저장해놓은건데 정말 리스트 맞나..? 내가 잘못 저장한건가 싶을 정도로 넘 길다

나중에 읽어보면 재밌겠다고 저장한건데 언젠간 읽어보겠지

네덜란드의 심리학자 파울 키르슈너는 2010년에 수행한 연구에 서 약 200명의 학생들에게 페이스북 사용 습관에 대해 물어봤다. 페이스북을 많이 사용하는 사람은 비사용자들만큼 오래 공부했지만, 학점은 훨씬 낮았다. 이것은 특히 메시지를 받는 즉시 답장한다고 응답한 학생들에게서 뚜렷이 나타났다. 흥미로운 점은, 멀티태스킹을 하는 사람들은 종종자신이 매우 생산적이라 고 느낀다는 것이다.


학생들이 온라인 메시지를 사용하여 파트너와 의사소통하면서 과제를 수행하는 통제된 실험에서 학생들 본인은 자신의 수행 능력이 만족스럽다고 느꼈지만, 그들의 파트너는 그들에게 훨씬 더 낮은 점수를 주었다. 이것은 슬랙에서 채팅을 하면서 프로그래밍하는 것이 일을 끝내기 위한 좋은 방법이 아닐 수도 있다는 것을 의미한다.

일할때 메신저 자주 하는 편인데.. (코딩을 메신저로 같이하는 정도는 아니지만) 상대방은 불편할 수 있구나 .. 조심해야겠다

final 키워드

우버에서 쓴 프로토콜 성능을 개선했다는 논문을 보다가 (2019년 기준, 프로토콜을 9000개 이상을 사용하는 관계로 성능을 개선하려고 컴파일러 분석까지 하시는 분들..)

모르는것을 검색하다가 private으로 선언하면, 오버라이딩 하지 못하기 때문에 컴파일러 내부적으로 final로 마크를 하고 그럼 static dispatch로 실행을 하고, 런타임시 어떤 함수를 호출할지 찾아보지 않아도 된다는 이야기

…를 보고 어..? 그럼 함수에 final로 선언을 하면 컴파일러가 할 일을 줄여주겠구나 라는 생각을 했다

근데 왜 실제 코드에선 잘 보이지 않을까.. 하고 검색을 해 보니 final 클래스 내부 변수, 함수들은 다 오버라이딩 금지이기때문에 final 마크를 추가로 할 필요가 없다

우리 팀들은 대부분의 class를 final로 마크하고 있기 때문에 자주 보이지 않는 거였나보다

검색하다가 찾은 글에서는 extension의 함수들도 오버라이딩이 안되기 때문에 final이 필요 없다고 한다 (적어도 2019년 당시.. 지금도 그렇지 않을까?)

대부분의 경우에는 final 마크 안했다고 성능에 크게 차이가 없겠지만, 알아두면 좋지 않을까 싶다

Xcode 디버그 콘솔에서 뷰 계층 출력하기

엑스코드에서 뷰 계층을 3D로 예쁘게 보여주는게 이미 되지만 가끔은 특정 뷰 밑으로 쭉 찍어보고 싶을때가 있다.

그럴땐 디버그 콘솔에서 UIView의 숨겨진(?) 함수인 recursiveDescription()를 부르면 된다.

스위프트는 비공식 함수를 부르는 방식이 쉽진 않은데 밑의 방법으로 가능하다.

po view.value(forKey: "recursiveDescription")

그러면 요렇게 나온다.

perform으로도 부를순 있는데

po self.view.perform("recursiveDescription")

뭔가 아까 방법과는 조금 다르게 출력이 되긴 하지만 뷰가 찍히긴 한다.

참고 : https://www.hackingwithswift.com/articles/101/how-to-debug-your-view-hierarchy-using-recursivedescription

[iOS] YouTube를 재생하기 위한 헬퍼

유투브에서 ios용으로 동영상을 재생하기 위한 오픈소스를 제공하고 있었다.

이 소스를 적용해본 블로그 글을 보니 player뷰가 제공되고 그 뷰에 동영상 아이디로 로드해서 재생하는 방식으로 되어있다.

동영상을 재생할 때 전체화면으로 안덮고 동영상 뷰 크기를 설정할 수 있으니, 그 점은 좋은 것 같다.

관련 글 : http://dev.classmethod.jp/smartphone/youtube-player-ios-helper/

[iOS] APNS http/2 지원 API 공개

클라이언트 보다는 서버쪽에 관련된 이야기이지만, http/2 를 지원하는 push api가 공개되었다는 뉴스가 올라왔다.

덕분에 관련 wwdc를 좀 봤는데, http/2를 소개하기를 한 커넥션으로 request와 response를 여러 개 받을 수 있게 된다고 한다. 스트리밍과 비슷한건지 그렇게 비유를 해줬다.  그리고 여러개의 request 중 한 놈이 실패를 하더라도 커넥션은 살아있다고 한다. 클라이언트 쪽에서만 보면 http/2를 위해 따로 대응을 안해줘도 되는 것 같은데, 과연 그럴지 ..

 

덤으로 APNS 쪽에서 새로워진 점은 payload 사이즈가 4kb로 또 늘어나고, device token 길이도 길어진다. silent notification은 앱을 깨우는 형태로 동작하는거 같은데, 동작하는 타이밍은 os단에서 결정하는 모양이다.  apns feedback 서비스도 소개했는데, 이건 다시 알아봐야 할 듯 싶다.

 

 

 

 

[watchOS 2.0] 애플와치 2.0 

어떤 팀이 watchOS 도큐먼트랑 소스코드를 분석해서 개발 가능한 기능 몇가지를 정리해줬다.

그 중에서 개인적으로 기억할 만한 것 정리

  • 시계에서 이제 자체적으로 네트워크 통신정도 하는 줄 알았는데, 동영상이랑 음악 플레이도 되나보다.
  • 음성 녹음이 된다하고, 센서 접근쪽도 뚫어준 모양이다. 
  • WKInterfacePicker를 이용해서 디지털 크라운을 빙글빙글 돌리면 리스트나 이미지들이 넘어가게 제어할 수 있다고 한다. 
  • 게임에 유용할 법 한 크라운 델타값 얻어오는 API는 못찾았다고 한다.

블로그 원문 : http://www.sneakycrab.com/blog/2015/6/8/watchos-20-tldr