iOS

    nohup 명령어를 사용해도 서버가 꺼지는 문제

    nohup 명령어를 사용해도 서버가 꺼지는 문제

    리눅스 환경에서 서버를 백그라운드에서 실행시켜놓기 위해 nohup 명령어를 사용했다.하지만 자꾸 서버가 꺼지는 문제가 발생했고, 그럴 때마다 수동으로 다시 실행시켜주었다.하지만 이대로면 불침번을 서가며 서버를 켜야할 것 같아 문제 해결에 나섰다.Vapor 가 문제?가장 먼저 의심했던건 애석하게도 Vapor 프레임워크였다.분명 Node.js 서버를 nohup node main.js & 명령어를 통해 백그라운드에서 실행해두었을 땐 멀쩡했는데, Vapor 서버로 바꾸고 나서부터 이런 일이 발생했다고 생각해 Vapor를 의심했다.하지만 구글링도 해보고 vapor run 명령어에 관련 옵션이 있는지 문서도 찾아보았지만 별다른게 없었다.터미널 강제종료그 다음 의심한건 나의 터미널이다.다시 서버를 구동시키기 위해 터..

    Tuist 없이 모듈 만들기 with DemoApp

    Tuist 없이 모듈 만들기 with DemoApp

    모듈화는 Tuist가 있어야만 할 수 있을까요? 그렇지 않습니다. Tuist나 XCodeGen 과 같은 모듈화를 도와주는 도구들도 코드나 yml을 아래에서 설명할 형태로 바꿔주는 것이에요ㅎㅎ 그렇기 때문에 도구 없이도 모듈화를 할 수 있어야합니다. Tuist없이 모듈을 하나 만들어보겠습니다. 현재 모듈 구조는 아래와 같습니다. 여기서 TestFeature 라는 모듈을 하나 만들어 볼거에요.File - New - Project 를 눌러줍니다.그리고 Framework(Dynamic Framework)를 골라줍니다.모듈명을 설정하고Add to, Group을 xcworkspace 를 지정해 워크스페이스에 들어가도록 설정하고 create를 눌러 모듈을 생성합니다.짜잔 모듈이 생겼어요.이 헤더 파일을 objc와 브..

    네이버 클라우드 VPC 서버에 연결이 되지 않는 문제

    네이버 클라우드 VPC 서버에 연결이 되지 않는 문제

    WebRTC 시그널링 서버를 배포하기 위해 네이버 클라우드 서비스를 사용해보았다.하지만 서버의 public IP로 핑도 안나가고, 클라이언트에서 연결도 안되는 문제가 발생했는데, 해결한 과정을 간단하게나마 기록해보려고 한다. 우선 아래처럼 서버로 핑을 날려보아도 응답이 오지 않았고, ip를 잘못 입력했나싶어 이것저것 바꾸어보았지만 전부 실패했다. 천천히 생각해보기그리고 처음으로 돌아가보기로 생각했고, 서버에 핑은 나가지만 타임아웃이라는건데 왜 응답을 주지 않지? 방화벽에 막히는게 아닐까? 라는 생각이 들었다.그래서 네이버 클라우드 문서를 찾아보며 구조를 이해해보았다.그리고 아래 그림과 같이서브넷의 접근을 관리하는 NACL과 서브넷 내에 있는 서버에 접근을 관리하는 ACG가 존재한다는 걸 알게 되었다.네이..

    Swift Concurrency - Sendable

    Swift Concurrency - Sendable

    Swift6부터 Sendable 관련 경고나 에러가 너무 많이 뜨더라구요.Concurrency도 모르고 Sendable도 모르는데..!그래서 Sendable 애플 공식문서와 swift docs를 읽고 감을 익혀보려고 합니다.먼저 애플 공식문서부터 읽어볼게요! 애플 공식문서 링크: https://developer.apple.com/documentation/swift/sendableSwift docs 링크: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/concurrency/#Sendable-TypesSendable 이란?protocol Sendable 데이터 레이스 위험(a risk of data races) 없..

    Swift Concurrency - Task

    Swift Concurrency - Task

    Swift6가 나오면서 컴파일 단계에서 동시성 문제를 강하게 잡더라구요.그래서 더 이상 Swift Concurrency 공부를 미룰 수 없겠다 싶어 차근차근 학습해보려고 합니다.오늘은 Task에 대해서 공식문서와 함께 알아볼거에요. Task 공식 문서: https://developer.apple.com/documentation/swift/taskTask 란?비동기적인 작업의 단위(A unit of asyncchronous work) 입니다.@frozen struct Task where Success : Sendable, Failure : ErrorOverview 개요작업(Task)는 생성 직후에 바로 실행될 수 있으며, 명시적으로 시작하거나 예약할 필요가 없습니다.Tasks can start runnin..

    Swift Task 내에서 weak self를 붙여야 하는가

    Swift Task 내에서 weak self를 붙여야 하는가

    피어 세션을 진행하며 동료가 겪었던 트러블 슈팅을 공유 받았었습니다.Task 블럭 내에서의 self 캡쳐와 관련된 내용이었는데, 당시 Concurrency에 대해 잘 몰라 이해가 가지 않았고 이해하기 위해 직접 실험해보았습니다!weak self 를 하는 이유Swift에서의 이스케이핑 클로저에서 self에 접근하려고 하면 명시적으로 self를 선언하라는 컴파일 에러가 아래와 같이 발생합니다.이는 self의 프로퍼티로 할당된 클로저가 self를 캡쳐하면 클로저와 self 인스턴스 사이에 순환참조가 일어나 메모리 누수가 발생할 수 있는 경우를 방지하기 위해 Swift에서 띄워주는 컴파일 에러입니다.이러한 문제를 해결하기 위해 이스케이핑 클로저에서는 self를 약하게 캡쳐해 순환 참조를 방지하도록 합니다. Ta..