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는 클라이언트(브라우저 등)와 서버 간 통신을 암호화하여 데이터를 보호함.
통신 시작 시, 클라이언트와 서버가 암호화 방법을 정하고, 키(Key)를 교환함.
- 클라이언트가 서버에 "안전하게 통신하고 싶어요" 요청을 보냄.
- 서버는 인증서(SSL/TLS 인증서)를 클라이언트에게 보냄.
- 이 인증서에는 서버의 신원을 증명하는 정보와 공개 키(Public Key)가 포함됨.
- 클라이언트는 인증서를 확인한 후, 서버의 공개 키로 암호화된 데이터를 생성해 보냄.
- 서버는 비공개 키(Private Key)로 이를 복호화해 서로의 키를 공유함.
핸드셰이크가 끝나면 클라이언트와 서버는 공유한 키를 사용해 데이터를 암호화하고 복호화함.
- 대칭키 암호화 사용: 빠르고 효율적인 암호화 방식.
- 데이터를 가로채도 해커는 내용을 이해할 수 없음(암호화된 데이터).
- 인증서를 통해 통신 대상이 신뢰할 수 있는 서버임을 보장함.
iOS는 HTTPS와 SSL/TLS를 기본으로 지원하며, 추가적인 보안 기능도 제공함.
- ATS(App Transport Security):
- iOS 앱에서 HTTPS 통신을 기본적으로 강제하는 보안 정책.
- HTTP를 사용할 경우, ATS 예외 설정이 필요함.
- URLSession:
- 네트워크 통신을 위한 iOS API로, SSL/TLS를 기본적으로 적용하여 안전한 데이터 전송을 보장함.
- 인증서 핀닝(Certificate Pinning):
- 특정 인증서만 신뢰하도록 설정하여 중간자 공격을 방어함.
- HTTP는 그냥 대화하는 것처럼 데이터를 주고받지만, 중간에 누군가 엿들을 수 있음.
- HTTPS는 둘 사이에 암호를 사용해 데이터를 주고받음.
-> 중간에 누군가 엿들어도 이해할 수 없는 암호문일 뿐! - SSL/TLS는 안전하게 대화하기 위해 암호를 미리 약속하는 과정(핸드셰이크)을 거침.
- iOS에서는 이 HTTPS를 기본으로 사용하고, ATS와 URLSession 같은 기능으로 보안을 더 강화함.
💬
아놔 상또마쫓
상지 또 마감이라 쫓겨난다는 뜻
'STUDY > TIL' 카테고리의 다른 글
250211 TIL | Swift ImageLiteral | 아이폰 사용 이미지는 2x로 (0) | 2025.02.12 |
---|---|
241130 열공 썰 풀게요 | 클로저 실행 형태, 딕셔너리, HTTP 프로토콜 (1) | 2024.11.30 |
241125 TIL | 코드로 UI 짜기, 네트워크 프로토콜 스택 (0) | 2024.11.25 |
241115 TIL | 최소직사각형 swift, ARC | 알고리즘 공부 효율 찾기 (3) | 2024.11.15 |
241108 델리게이트 패턴, 슬라이딩 윈도우, CPU 아키텍쳐 (0) | 2024.11.08 |