본문 바로가기
STUDY/TIL

TIL 241128 폭설..🌨️❄️ | map, HTTP

by 23g 2024. 11. 28.

쩌는애가 보내준 산본...x.x

0. 회고 및 개선점 📝

  • 느낀 점: 시간이 많은데 왜 많은 일을 못할까?! 
  • 잘한 점 : 폭설을 뚫고 카페로 출근 완! 
  • 개선 점 : 강의 쫌 듣자
  • 앞으로 : 오늘처럼만 하자~

1. 오늘 배운 내용 📘 (데일리 루틴)

swift 강의는 못들음 ㅠ


1일 1커밋

📜 문제 설명

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 
emergency
가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

⌨️ 입출력 예

[3, 76, 24]     [3, 1, 2]

 

✏️ 나의 과거 코드

import Foundation

func solution(_ emergency:[Int]) -> [Int] {
    
    // emergency 배열의 인덱스를 기준으로 내림차순 정렬된 배열 생성
    let sortedEmergency = emergency.sorted(by: >)
    
    // 응급도 순서를 저장할 배열
    var rankArray = [Int](repeating: 0, count: emergency.count)
    
    // sortedEmergency의 각 값의 순위를 rankArray에 저장
    for (index, value) in sortedEmergency.enumerated() {
        if let originalIndex = emergency.firstIndex(of: value) {
            rankArray[originalIndex] = index + 1
        }
    }
    return rankArray
}

심지어 이것도 지피티 도움을 왕창왕창 받았던,,,

오늘도 enumerated를 생각하긴 했었다 ㅎ

내 코드지만 내가 봐도 잘 모르겠다...!!!

 

📚 개선 코드

func solution(_ emergency:[Int]) -> [Int] {
	// 바로 sorted하기! sort는 불가 let이라
    var arr = emergency
    var sortNum: [Int] = arr.sorted(by: >)
    
    //map에서 바로 +1 하기
    var result = arr.map { sortNum.firstIndex(of: $0)!}.map { $0 + 1 }
    
    return result
}

오,,, 나 좀 뿌듯

물론 map 안에서 +1 해도 되는걸 모르고 두번이나 하긴 했지만 ㅎ

 


cs 공부

질문 : HTTP와 HTTPS의 차이점, 그리고 iOS에서의 보안 통신 방법에 대해 설명해주세요.

 

답변 :

더보기

HTTP와 HTTPS의 차이점

HTTP와 HTTPS는 웹에서 데이터를 주고받는 프로토콜인데, 중요한 차이는 보안성임.

  • HTTP: 데이터를 암호화하지 않고 전송하기 때문에 해커가 데이터(비밀번호, 카드 정보 등)를 쉽게 훔칠 수 있음.
  • HTTPS: HTTP에 SSL/TLS 암호화 기술이 추가된 버전으로, 데이터를 안전하게 전송함.

비유:
HTTP는 우체통에 잠금장치 없이 편지를 보내는 것과 같음.
HTTPS는 편지를 암호화된 봉투에 담아 자물쇠로 잠그고 보내는 것과 같음.


##SSL/TLS의 동작 원리는 무엇인가요?

SSL/TLS의 동작 원리 🛡️

SSL/TLS는 클라이언트(브라우저 등)와 서버 간 통신을 암호화하여 데이터를 보호함.

1. 핸드셰이크 과정

통신 시작 시, 클라이언트와 서버가 암호화 방법을 정하고, 키(Key)를 교환함.

  1. 클라이언트가 서버에 "안전하게 통신하고 싶어요" 요청을 보냄.
  2. 서버는 인증서(SSL/TLS 인증서)를 클라이언트에게 보냄.
    • 이 인증서에는 서버의 신원을 증명하는 정보와 공개 키(Public Key)가 포함됨.
  3. 클라이언트는 인증서를 확인한 후, 서버의 공개 키로 암호화된 데이터를 생성해 보냄.
  4. 서버는 비공개 키(Private Key)로 이를 복호화해 서로의 키를 공유함.

2. 데이터 암호화

핸드셰이크가 끝나면 클라이언트와 서버는 공유한 키를 사용해 데이터를 암호화하고 복호화함.

  • 대칭키 암호화 사용: 빠르고 효율적인 암호화 방식.

3. 보안 보장

  • 데이터를 가로채도 해커는 내용을 이해할 수 없음(암호화된 데이터).
  • 인증서를 통해 통신 대상이 신뢰할 수 있는 서버임을 보장함.

iOS에서의 보안 통신 방법 🔒

iOS는 HTTPS SSL/TLS를 기본으로 지원하며, 추가적인 보안 기능도 제공함.

  1. ATS(App Transport Security):
    • iOS 앱에서 HTTPS 통신을 기본적으로 강제하는 보안 정책.
    • HTTP를 사용할 경우, ATS 예외 설정이 필요함.
  2. URLSession:
    • 네트워크 통신을 위한 iOS API로, SSL/TLS를 기본적으로 적용하여 안전한 데이터 전송을 보장함.
  3. 인증서 핀닝(Certificate Pinning):
    • 특정 인증서만 신뢰하도록 설정하여 중간자 공격을 방어함.

쉽게 풀어서 설명 🌐

  • HTTP는 그냥 대화하는 것처럼 데이터를 주고받지만, 중간에 누군가 엿들을 수 있음.
  • HTTPS는 둘 사이에 암호를 사용해 데이터를 주고받음.
    -> 중간에 누군가 엿들어도 이해할 수 없는 암호문일 뿐!
  • SSL/TLS는 안전하게 대화하기 위해 암호를 미리 약속하는 과정(핸드셰이크)을 거침.
  • iOS에서는 이 HTTPS를 기본으로 사용하고, ATS와 URLSession 같은 기능으로 보안을 더 강화함.

 


💬

아놔 상또마쫓

상지 또 마감이라 쫓겨난다는 뜻

최근댓글

최근글

skin by © 2024 ttutta