적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

분류 전체보기 568

동기화를 위한 방법들 Spinlock / Mutex / Semaphore

참고 : youtube - 쉬운코드 를 참고하여 정리한 것임 동기화 매커니즘 세 가지 - 스핀락 Spinlock - 뮤텍스 Mutex - 세마포 Semaphore race condition 경쟁 조건 : 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때, 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황 synchronization 동기화 : 여러 프로세스/스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것 critical section 임계 영역 : 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행(mutual exclusion) 가능한 영역 Spinlock mutual exclusion 을 위해 lock 을 가질 수 있을 때까지 반복해서 시도하는 방법 ..

컴퓨터시스템 2022.09.05

[Swift iOS] 앱에서 web 페이지 여는 방법 세 가지

iOS에서 webView를 보여주는 방식 3가지 - 외부 브라우저(사파리)로 열기 - SFSafariViewController - WKWebView 1. 외부 브라우저(사파리)로 열기 앱 내부 작동과 무관하게 외부 브라우저에서 여는 방법이다. @objc func openSafari(_ sender: Any) { if let url = URL(string: "https://hongssup.tistory.com") { UIApplication.shared.open(url, options: [:]) } } UIApplication.shared.canOpenURL(url) : if 문에서 이 조건을 추가로 넣으면, 링크가 유효하지 않을 경우 사파리 앱으로 아예 안넘어갈 줄 알았는데 그건 아니더라. 딱히 있고 없..

HTTP referer 란? (+ send referer header in iOS)

HTTP referer 란? HTTP 프로토콜에는 referer 라는 헤더 값이 있는데, 이 referer를 통해 현재 웹페이지가 어디로부터 이동이 되었는지 경로를 알 수 있다. 헤더에 "referer"를 추가하여 웹으로 보내면 특정 앱 혹은 웹사이트에서 유입된 방문자 추적이 가능하기에, 웹사이트의 방문객이 어떤 경로로 방문했는지 알아볼 때 유용하게 사용된다. (유입 분석) 간단히 말해 referer는 현재 페이지의 헤더에 담겨있는 이전 페이지의 uri 정보라고 할 수 있다. 대부분의 웹서버에는 이전 브라우저가 송신한 HTTP referer를 기록하고 있지만, 보안상 referer 정보를 송신하지 않는 설정을 하기도 한다. 올바른 referer 정보를 송신하지 않는 브라우저에 대해 엑세스를 블록해 버리기..

웹 개발 2022.09.01

[UI/UX] 닫기 버튼 위치 왼쪽 ? 오른쪽 ?

https://www.panopt.net/106 ZEN of UX. 13 - 닫기 버튼이 왼쪽으로 가는 까닭은 앱 디자인이 태동하던 10여 년 전¹ 만 해도, 앱이 수행하는 기능은 웹사이트와 크게 다르지 않았어. 하지만 요즘의 앱은 웹과 비교도 안될 정도로 넓은 영역을 포괄하는 것 같아. to-do앱처럼 가벼 www.panopt.net 모달 회면에서 닫기 버튼이 오른쪽에 있는게 터치하기 편하지 않나? 하는 생각을 했는데 요즘 왼쪽에 x 버튼을 두는 앱들이 많아지고 있다고 한다. 대부분의 사람들은 오른손 잡이이기 때문에, 우측 상단의 버튼이 더 사용성이 높다. 따라서 더 중요한 기능의 버튼을 우측 상단에 두기 위해 창을 닫기 위한 x 버튼이 왼쪽으로 밀려나고 있는 것이다. x 버튼이 왼쪽 / 오른쪽 중에 ..

Trend 2022.08.29

[Swift iOS] 서버 점검 중 팝업 띄우기 Firebase Remote Config

Remote Config 란? 앱을 업데이트 하지 않아도, 앱의 동작이나 UI를 변경할 수 있도록 도와주는 클라우드 서비스이다. 앱을 강제로 업데이트 시켜주어야 할 때, A/B 테스트를 할 때 등 여러가지 상황에서 유용하게 사용할 수 있다. 참고 : Firebase 원격 구성 서버 점검중 팝업 띄우기 Firebase 설정 Firebase 콘솔 - Remote Config 로 들어간다. 1. 매개변수 추가 매개변수의 이름(키)을 설정해주고, 원하는 데이터 유형을 설정해준다. 1-1. 매개변수 수정 Bool 형태의 값은 다음과 같이 설정해줄 수 있다. String 형식의 값은 다음과 같이 설정해줄 수 있는데, 개행을 하기 위해서는 아래 버튼을 눌러 문자열 편집기를 사용할 수 있다. 2. 변경사항 게시 변경사..

notification / callback / delegate 사용법

https://yagom.net/forums/topic/cell-%EC%95%88%EC%9D%98-button%EC%9D%84-%EC%B2%98%EB%A6%AC%ED%95%98%EB%8A%94-%EC%97%AC%EB%9F%AC%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95%EB%93%A4/ 이벤트 발생을 감지하는 방법 Cell 내 버튼을 처리하는 여러가지 방법들. Delgate 패턴 Callback Completion Handler로서 Callback Closure를 사용하는 방법. 예시) 관심상품 추가 보내는 곳 // MyCell lazy var favoriteBtn: UIButton = { let button = UIButton() ... button.addTarget(self, ..

Xcode 형상관리 툴 Fork 사용법

iOS 개발할 때 형상관리 툴에 여러가지가 있지만, 내 마음을 사로잡은건 Fork💙 다른 툴을 사용해본적은 없어서 뭐가 더 편하다 좋다 판단할 수는 없지만, 예쁘다. 예쁜게 최고야. 기분이 좋잖아? 처음 써보고 반해버려서 fork를 계속 쓰고 있는데 사용하는 사람이 많지 않은 것 같다. Interactive Rebase 만약 commit을 이미 해버렸는데 수정 혹은 삭제를 하고싶다면? rebase를 통해 간편하게 수정이 가능하다! 😆 원하는 타겟 commit 우클릭 > Interactive Rebase > Drop : commit 삭제

Github 2022.08.08

[Swift iOS] keyboard와 함께 올라갔다 내려갔다 하는 버튼 만들기

하단의 버튼이 keyboard가 있는 상태에서도 가려지지 않고 keyboard와 함께 올라갔다 내려가는 것을 구현해보았다. NotificationCenter를 통해 키보드의 움직임을 감지하여 처리할 수 있다. 1. bottomConstraint 설정 var button = UIButton() var bottomConstraint: NSLayoutConstraint? override func viewDidLoad() { ... let safeArea = self.view.safeAreaLayoutGuide self.bottomConstraint = NSLayoutConstraint(item: self.button, attribute: .bottom, relatedBy: .equal, toItem: safe..

카테고리 없음 2022.07.31
728x90
반응형