면접 질문으로 받았던 건데, 관련해서는 대답을 잘 했으면서도 막상 꼬리 질문에는 알면서 순간 머리가 새하얘지는 바람에 ^-ㅠ "... ... 모르겠습니다!" 라는 대답을 해 버렸다. 이 대답이 왜케 이불을 차고 싶던지... ... 아무튼. 해당 주제에 대해서는 실제로 정리해 본 적은 없고 직접 구현해 보면서 머리/몸으로 알고 있던 게 다라서 말로 뱉으면서 이게 맞나? 하는 생각이 들었다. 내 생각에는 그래도 이 질문에는 그래도 오답을 얘기하지는 않았던 것 같지만, 내가 몰랐던 부분이나 머뭇거렸던 부분을 명확히 정리하여 온전히 알고 넘어가려고 한다. HTTP 통신이란? HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜 초기에는 HTML 파일을 전송하려는 목적으로 ..
결론부터 이야기하자면, 보안의 차이라고 보면 된다!!! 네트워크에서 데이터 통신을 하게 되면 여러 라우터와 모뎀을 거쳐서 송신하는 컴퓨터에서 수신하는 컴퓨터로 데이터가 전달되게 된다. 이전에 TCP / UDP를 할 때도 나왔던 개념인 OSI 7 Layer Model에 대해서 기억하고 있는가?.? HTTP와 HTTPS는 OSI 7계층 중 1계층인 Application 계층에 속하는 친구들로, 데이터를 주고 받기 위한 프로토콜을 말한다. HTTPS는 HTTPS에서 아까 말한 보안 요소가 추가된 거라고 보면 된당. HTTP는 송신하는 데이터가 전달하는 과정에도 암호화 없이 그대로 전달되고, 이때 중간에 해커가 데이터를 탈취할 경우에는 사용자가 보낸 데이터가 모두 드러날 수 있으므로 HTTP의 문제점인 보안을 ..
갑자기 TCP와 UDP는 어디서 나왔을까? => OSI-7 레이어 모델에서 나왔당. OSI-7 Layer Model이 뭔데? 쉽게 말하자면! 컴퓨터와 컴퓨터가 네트워크를 통해 데이터를 공유할 때 통신이 일어나는 과정을 7단계로 나눈 것을 의미한다. 왜 굳이 계층을 나눴을까? 그야 ... ... 통신이 일어나는 과정을 단계별로 파악하기 위해서가 아닐까?! 이렇게 말하니 질문과 동시에 뱅글뱅글 도는 답변을 하는 것 같지만, 조금 더 서술하여 답변해 보자면, 네트워크의 계층을 나눈 이유는 흐름을 한눈에 알아보기 쉽고 특정한 곳에 이상이 생기면 이상이 생긴 단계만 빠르게 고치기 위해서라고 생각한다. OSI-7 Layer Model은 컴퓨터와 컴퓨터가 네트워크를 통해 데이터를 공유할 때 통신이 일어나는 과정이라고..
기존의 방법으로 Widget에 Background를 적용하려고 하면, 제대로 적용되지 않고 이상한 padding이 적용되어 있다. 이런 식으로! 너무 이상해 보여서 여러 방법을 찾아보다가 괜찮은 글을 발견해서~~! 블로그에도 기록해놓으려고 한다. 찾아보니 Xcode15 / iOS 17부터는 Widget에 contentMargin이 기본으로 적용되어 있어 이를 해제해 주는 것이 필요하다. 그 방법으로는. .. . struct CoinWidgets: Widget { let kind: String = "CoinWidgets" // 위젯의 고유한 문자열 var body: some WidgetConfiguration { AppIntentConfiguration(kind: kind, intent: Configura..
이전 블로그에 비공개로 작성해놨던 글이 있는데, 지금은 그 차이를 명확하게 알게 되어 예전 내용과 덧붙여서 내용을 조금 더 정리해 보고자 한다. 사실 이전 블로그에서 CS 관련된 글을 조금 써놨는데 올리지 않았던 거나 가져오지 않은 게 꽤 있는데 텅 비어 있는 지금 블로그의 CS 지식 카테고리가 아쉽기도 하구 그래서~~~ ^___^ ;; 아무튼간. 꼬. 시작. 꼬. 프레임워크 먼저, 프레임워크란 일정한 형태와 필요한 기능을 갖추고 있는 뼈대를 말한다. 일종의 밀키트와 같다고 보면 되는데, 만드는 방법과 재료가 정해져 있어 우리는 그 틀에 따라 코드를 작성해야 한다. 즉, 통제권은 사용자가 아닌 프레임워크가 쥐고 있다. 앱 / 서버의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크과 관리하..
Enum 먼저 Enum을 사용할 때 연관값과 CaseIterable을 왜 사용하는지를 이야기하기 위해서는 Enum이 몬지 알아야겠쬬. Enum, 열거형은 서로 연관된 값들의 집합입니다. 열거형은 컴파일 최적화가 되어 있어 컴파일 타임에 어떤 요소가 해당 열거형에 속하는지가 미리 정해집니다. 열거형에는 연관값 말고도 원시값이라는 RawValue를 사용하는데, 이 원시값을 통해서 해당 열거형을 더욱 폭넓게 사용할 수 있습니다. 원시값은 해당 열거형 케이스의 별칭이라고 불러도 좋을 것입니다. 예를 들어 봅시다. enum 음식점: String { case 파스타 = "pasta" case 김밥 = "gimbap" } 이런 식으로 사용할 수 있겠군뇨! 만약에 원시값을 사용하겠다고 선언하고 위처럼 따로 지정해 주지..