urlQueryAllowed 외에도 가능한 URL 인코딩 옵션을 알아봅시다

TL; DR;

addingPercentEncoding(withAllowedCharacters:) 함수를 이용해서 String을 인코딩할 수 있습니다.

url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)

이때 인자로 들어갈 수 있는 CharacterSet 중에, URL Encoding을 위한 것은 6가지가 있습니다. 우리는 웬만하면 urlQueryAllowed 를 사용하도록 합시다.

https://github.com/sujinnaljin?tab=repositoriesurlQueryAllowed
https://github.com/sujinnaljin?tab=repositories
urlFragmentAllowed
https://github.com/sujinnaljin?tab=repositorie …

Make UICollectioViewCell StickyHeader using UICollectionViewFlowLayout

요구 사항

collectionView에서 특정 indexPath에 있는 cell을 sticky header 로 만들어야 했슴다. 바로 이렇게 말이죠.

stickyIndexPath를 IndexPath(row: 4, section: 0)로 설정 -> 분홍색 cell이 sticky Header 처럼 작동

CollectionReusableView 를 이용해서 비슷하게 header 느낌을 낼 수 있다지만 내가 원하는건 UICollectionViewCell을 sticky 하게 만드는 것인걸요..??

그렇다면 UICollectionViewFlowLayout 을 잘 조져서 커스텀해야죠 머.. 시작해봅시당. (설명이고 뭐고 다 됐고 코드만 보고 싶다면? 여기로!)

시작하기 with Starter Project

일단 이곳(starter branch)에서 간단히 작업해 놓은 collectionView 를 확인할 수 있습니다. 랜덤한 색상과 높 …


아두이노와 블루투스를 이용한 원격 제어 스위치로 침대 밖을 최소화하자

누워서 원격으로 불을 끄고 싶다,, 하지만 제품들은 너무 비싸,, 집에 있는 아두이노로 비벼볼 수 없을까?

아두이노 스마트 스위치 만들기 바로 시작해봅시다!

미리보기


경쟁 상태(Race Condition) 해결 방법에 대해 알아봅시다 — Serial queue + sync

Previously on GCD…

저번 시간에는 아래의 세가지 동시성 문제 중 첫번째 경쟁 상태에 대해 알아보았어요!

  1. Race Condition (경쟁 상태)
  2. Deadlock (교착상태)
  3. Priority Inversion (우선 순위의 뒤바뀜)

경쟁 상태란 “두 개 이상의 스레드를 사용하면서, 동일한 메모리 접근 등으로 인해 발생할 수 있는 문제”로 정의 내린 후, 두 개의 스레드가 동일 메모리에 접근하여 자료의 일관성을 해치는 예시를 살펴보았습니다.

그럼 이번 시간에는 경쟁상태에 대한 해결 방안에 대해 다뤄볼건데요! 자원에 다수의 스레드가 접근해서 문제가 되는거니까 한번에 한개의 스레드만 접근 가능하도록 처리하면 되겠죠?! (Thread-safe)

경쟁 상태 확인 방법 — TSan (Thread Sanitizer)

그럼 경쟁 상황이 …


동시성과 관련된 문제들 (Concurrency Problems) 중 경쟁 상태(Race Condition)에 대해 알아봅시다

Previously on GCD…

대박대박대박버거~~~~ 개-하! (개발자들 하이라는 뜻)

이게 몇만년만의 GCD람요~~!! 사실 글 초안은 좀좀따리 써놨었는데 주제가 주제인지라.. ㅎㅎㅎ 기약 없이 미루다보니 벌써 두달이 지났네유 ◠‿◠ .. ㅎㅎ (사실 저는 예전에 강의도 다 들음여~~!!) 튼 아무래도 글이 길어지면 더 안쓰게 되는 것도 있는거 같아서 끊어 쓰려고요 ㅎ

저번 시간에는 DispatchSemaphore에 대해 다뤘는데 ㄱ나니..? (아련) 흠 사실 저도 안난답니다!

당-당

하지만 괜찮아여 기억 안나는건 또 보면 되는거고 오늘은 새로운 마음가짐으로 동시성 문제를 다룰거니까여~~ 그럼 각설하고 고고링~!

동시성 문제 (Concurrency Problem)

우리는 2강? 3강?에서 concurrency 의 …


VNDetectHumanHandPoseRequest 를 이용해보자

WWDC 2020 에서 Detect Body and Hand Pose with Vision 이라는 흥미돋 세션을 봤따 (뒷북)

이제 손 모양 / 몸 모양 (?)도 인식할 수 있게 해줄게! ㅎㅎ 이런 느낌이었는데 발표 예제가 넘 신기했다

무려 이렇게 엄지랑 검지 모으고 글자를 쓸 수 있게 하는 것는데.. 간 지 나

VNDetectHumanHandPoseRequest


눼에? UIView()UIView의 initializer가 아니라구여?

안녕하세여 여러분. 흠 원래 required init?(coder: NSCoder) 에 대해 쓰려다가 또 딴 길로 새버렸네유. 이 내용은 다른 곳에서도 충분히 잘 설명되어있는 것 같아서 그건 TIL에 개인적으로 정리하기로 하고..!

지금까지 UIView() 잘 써오셨나요?? 거두절미하고 UIView의 문서에서 initializer 를 보자요.

맞아여 이렇게 두개예요. 읭?? 근데 나는 UIView() 이렇게도 써왔는데?!!?!?! 왜 init() 에 대한 설명은 없는겨..?


Value Type은 cow를 한다면서 왜 Array만 동일 instance에 대해 같은 주소를 반환할까요?

들어가며

흠.. 제목이 딱 맘에 들진 않네유.. 부제에 집중해주세요! (이걸 제목으로 쓰기엔 너무 길었어요 흑흑)

튼 오늘은

Value Type은 cow를 한다면서 왜 Array만 동일 instance에 대해 같은 주소를 반환할까?

에 대한 이야기입니다. 무슨 말이냐고요? 일단 스크롤을 내려봅시다 ㅎㅎ 그럼 고고링~!

의문의 시작

얼마전 Swift의 Type에 대해 공부하다가 OptimizationTips 문서에서 기본 Value Type은 copy on write 최적화를 사용한다는 것을 보았습니다.

All standard library containers in Swift are value types that use COW (copy-on-w …


Value Type이 Heap에 할당 될 때가 있다구여???

Swift의 Type

Swift의 Type 은 크게 두 카테고리로 나뉩니다.

1. Value Type

  • struct, enum, tuple
  • Swift의 기본 자료형 타입 (Int, Float, Double, Bool, String, Array, Dictionary, Set 등은 모두 struct 형태로 구현)

2. Reference Type

  • class, function, closure

이 두가지의 차이점은 뭘까요? 바로 Copying 의 동작에 차이가 있습니다.

Value Type 은 copying시 data의 unique한 복사본을 생성합니다. 반면 Reference Typeshared instance 를 사용합니다. 따라서 두번째 변수에 할당된 instance 의 값을 변경하면 기존 값도 같이 …


Storage Access API 를 이용해서 쿠키 정보를 가져옵시다

TL; DR

iOS 14 부터 개인 정보 보호 정책으로 third party cookie 사용이 막힘. 이에 파생되는 이슈에 대해선 Storage Access API 를 사용

쿠키 배경 지식

First-party cookie

  • 유저가 website 를 방문할때마다 생성됨.
  • website에 따라 쿠키에 무엇을 수집하고 저장할지 결정함으로서 유저 경험을 향상시키고자 함. (만약 쿠키가 없다면 새로 고침 때마다 로그인 다시 하거나, 장바구니 다시 담아야함)

Third-party cookie

  • 현재 유저가 방문한 웹 사이트 외 다른 곳에 의해 생성된 쿠키.
  • 유저가 들어간 A / B 도메인에서 각각 facebook.com 에서 코드를 로드하고 있다면, facebook.com 에 해당하는 쿠키가 자체적으로 생성될 수 있는데 이것이 …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store