본문 바로가기

분류 전체보기

(207)
HTTP VS Socket HTTP 단방향 통신 클라이언트의 요청이 있을 때 서버가 응답하는 방식 (= 서버가 클라이언트에게 먼저 정보를 주지 못한다.) HTTP를 통해 서버의 새로운 데이터를 받기 위해서는 클라이언트의 요청 필요 (= 클라이언트의 요청이 없다면 서버의 데이터를 받아 올 수 없다.) 정보가 필요한 경우에만 요청을 하기 때문에 소켓과 비교했을 때 상대적으로 리소스 부하가 낮다. Socket 서버-클라이언트 양방향 연결이 이루어지는 방식 양방향으로 연결되어 있기 때문에 서버가 클라이언트의 요청이 없어도 데이터를 전달할 수 있다. 채팅, 메신저 클라이언트의 요청이 없어도 (메시지를 먼저 보내지 않아도) 서버가 상대방의 메시지를 클라이언트에게 전송할 수 있다. 계속 연결을 유지하고 있기 때문에 http 통신보다 리소스 부..
Singleton Pattern 주로 네트워크 관련 코드 또는 외부 라이브러리 코드를 보면 shared, standard, defaults로 프로퍼티 또는 메서드에 접근하고 있는 코드를 볼 수 있다. 이런 코드들은 싱글톤 패턴을 적용해 만들었기 때문인데, 싱글톤 패턴이 무엇인지 알아보자. Singleton 싱글 .. 벙글 .. 이 아니고 싱글톤, 이름에서 알 수 있는 것처럼 어떤 것을 '하나'로 관리/유지하고 있다는 것을 알 수 있다. 싱글톤에 대한 정의를 찾아보면 아래와 같다. The singleton pattern is a software design pattern that restricts the instantiation of a class to one “single” instance. 즉, 한 개의 클래스로 만드는 객체는 단 하..
.gitignore .gitignore 파일을 프로젝트에 적용하기 전에 !! 먼저 이 파일이 무엇인지 알아보자. .gitignore 파일이란? 간단하게 말하면 불필요한 파일이 remote에 즉, 레포지토리에 올라지 않게 만들어주는 파일이다. 여기서 말하는 불필요한 파일에는 파일 백업 정보, 제품 빌드 정보, .DS_Store (메타 데이터가 저장되어 있는 파일) 등을 예로 말할 수 있다. 이러한 파일들은 굳이 remote에 업로드가 될 필요가 없기 때문에 올라가지 않도록 하는 것이다. 또한, 이러한 파일들로 인한 혹시라도 발생할 수 있는 데이터 충돌을 막을 수 있다. 그렇기 때문에 혼자서 작업할 때도 필요하지만, 협업 시에는 초기 세팅 과정에서 .gitignore를 작성해서 레포에 푸시하는 것이 좋다. xcode proje..
프로토콜 - Basic To Advanced 프로토콜을 잘 사용하면 보다 효율적인 코드를 작성할 수 있다. 먼저 프로토콜의 기본적인 내용은 아래 [더보기]를 통해서 확인할 수 있다. 더보기 프로토콜이란? "A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality" (= protocol은 특정 작업 혹은 기능들을 구현하기 위한 메소드, 프로퍼티, 그리고 기타 다른 요구사항들의 청사진이다.) .. 보다 이해하기 쉽게 설명하자면, 프로토콜은 구현해야 하는 것들의 리스트이다. 그리고 프로토콜은 이름을 통해서 보다 직관적으로 명시할 수 있어야 한다. 이름만 봐도 그 역할을 짐작할 ..
프로토콜 프로토콜 프로토콜이란? 프로토콜은 일종의 약속이라고 생각할 수 있다. 프로토콜을 어떻게 활용하냐면, 특정 컨트롤러에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(Delegate)를 지정하여 이벤트 처리를 위임하고 실제로 이벤트가 발생하면 위임된 대리자가 콜백 메소드를 호출해주는 델리게이트 패턴을 구현하기 위해 사용된다. 구현해야 하는 메서드의 명세가 작성되어 있고 단순한 선언 형태(구현 없이)로 구성되어 있다. 그러므로 구체적인 내용은 별도로 구현을 해야 한다. 이렇게 특정 프로토콜의 명세를 따르는 타입은 프로토콜을 준수한다고 표현할 수 있다. 구조체, 클래스, 열거형, 익스텐션에서 사용할 수 있고 실질적인 내용은 여기서 작성할 수 있다. 프로토콜과 부모 클래스의 차이점 만약 뷰 컨트롤러에서..
Network - 가볍게 HTTP HTTP란? Hyper Text Transfer Protocol의 약어로, 인터넷에서 데이터를 주고 받을 수 있는 프로토콜을 말한다. 메시지를 평문 그대로 전송하기 때문에 주고 받을 수 있는 데이터가 공개될 수 있는 여지가 있다. 만약, URL에 중요한 정보를 담아서 주고 받는다면 보안에 취약할 수 있다. 모든 프로그램이 규칙에 맞춰 개발하므로 (클라이언트와 서버가 동일한 규칙을 바탕으로 정보를 주고 받으므로) 상호간의 정보 교환이 가능하다. 클라이언트(앱) ---reqeust(POST/GET/PUT/DELET) + 인증키---> 서버 클라이언트(앱) 로 끝나는 Tag로 이루어진 마크업 구조 iOS의 경우 XMLParser 모듈을 Foundation Framwork에서 제공하므로 데이터를 쉽게 ..
SSAC - 다마고치 프로젝트 피드백 정리 1차 평가과제(?)였던 다마고치 프로젝트의 피드백을 받았다. 평가과제 기간과 앱잼 데모데이 일정이 겹쳐 두가지 작업을 진행하느라 제법 .. 얼레벌레 코드를 작성했었기에 (죄송합니다..) 싹 .. 갈아엎을 생각으로 피드백을 보았다. 공통 피드백과 개별 피드백을 읽어보면서 어떻게 코드를 정리하면 되는지 알게 되었고 평가 과제 이후로 자가회고를 하면서 .. 나에게서 무엇이 부족한지 느낄 수 있었다. 피드백 내용은 후술할테니 자가회고를 하면서 느꼈던 것을 먼저 정리하자면, 아래와 같다. 자가 피드백 기술/실력적인 회고에 앞서서 스스로를 되돌아보았을 때, 부끄러운 부분들이 많다. 초반의 열심히하겠다고 한 마음가짐과 다르게 체력적인 한계에 부딪혀서 최선을 다하지 못한 모습이 있었다. 무엇보다 절대적인 시간을 많이 ..
0729 Q&A 정리 1. IBOutlet의 didSet이 한번만 호출되는 이유? IBOutlet을 통해 연결한 UIComponent에 대해서 didSet으로 설정을 바꿀 수 있지 않을까? @IBOutlet weak var button: UIButton! { didSet { button.backgroundColor = .red } } 그렇다면, 위와 같이 코드를 작성하게 된다면 button의 속성이 바뀔 때마다 didSet이 호출되는 것이 아닌가?라는 생각을 할 수 있다. 그러나, 그렇지 않다. 프로퍼티라면 그렇게 동작할 수 있지만 IBOutlet은 클래스이므로 button 자체를 바꾸지 않는 이상 didSet이 호출되지 않는다. 클래스이므로 인스턴스 자체를 바꾸지 않는 이상 didSet이 호출되지 않는다. 코드를 통해서 살..