header-img
Info :
전체 κΈ€ 42
[iOS] unix timestamp swift
2023.04.07
A. μ„€λͺ… iOS의 unixTimeStampλ₯Ό μ‚¬μš©ν•  일이 μžˆμ–΄μ„œ μ°Ύμ•„λ³΄λ‹ˆ κΈ°λ³Έ μ œκ³΅ν•˜λŠ” 것이 있음. Date().timeIntervalSince1970둜 μ‚¬μš©ν•˜λ©΄ 되고 1970λ…„ 1μ›” 1일 00μ‹œ 00λΆ„ 00초 κΈ°μ€€μœΌλ‘œ λͺ‡ μ΄ˆκ°€ μ§€λ‚¬λŠ”μ§€ 확인할 수 μžˆλŠ” ν”„λ‘œνΌν‹°μž„. λ‚΄κ°€ ν•„μš”ν–ˆλ˜ 것은 ν˜„μž¬κΉŒμ§€ 1357μ΄ˆκ°€ 지났닀고 ν–ˆμ„ λ•Œ 135κΉŒμ§€ ν•„μš”ν–ˆμœΌλ―€λ‘œ μ•„λž˜μ™€ 같은 처리λ₯Ό μΆ”κ°€μ μœΌλ‘œ ν•΄μ€¬μŒ. (10으둜 λ‚˜λˆˆ ν›„ Int둜 ν˜•λ³€ν™˜ν•˜μ—¬ λ‚˜λ¨Έμ§€ μž˜λΌλ‚΄κΈ°) import UIKit class TimeSynchronizer { init() { } func getTimeInfo() -> String { var unixTS = Date().timeIntervalSince1970 unixTS = trunc(unixTS / 10..
[iOS] μ„œλ²„ 톡신 Base Service
2023.04.07
A. μ„€λͺ… api 톡신 ν•„μš”ν•  λ•Œλ§ˆλ‹€ 보일러 ν”Œλ ˆμ΄νŠΈ μ½”λ“œκ°€ λ„ˆλ¬΄ 많이 μƒκΈ°λŠ” 것 κ°™μ•„ base둜 μ‚¬μš©ν•  μ½”λ“œ λ§Œλ“¦. ν”„λ‘œν† μ½œλ‘œ μ •μ˜ν•΄μ„œ μž¬μ‚¬μš©μ„± μš©μ΄ν•˜λ„λ‘ κ΅¬ν˜„ν•¨. μ›Ή μ—°κ²°μ—λŠ” Alamofire ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•¨. B. μ½”λ“œ import Foundation import Alamofire protocol BaseService { /// api request url var url: String { get set } var header: HTTPHeaders { get set } var param: Encodable? { get set } /// Request에 λ“€μ–΄κ°€λŠ” .put, .get λ“± method var method: HTTPMethod { get set } /// Request에 λ“€μ–΄κ°€λŠ” P..
[iOS] μ›Ήλ·° μΏ ν‚€ κ΄€λ ¨ μœ ν‹Έ
2023.04.07
기둝용으둜 λ‚¨κ²¨λ†“λŠ” κ²ƒμœΌλ‘œ, 더 κΉ”λ”ν•˜κ²Œ κ΅¬ν˜„ν•  수 μžˆλŠ” 방법이 μ‘΄μž¬ν•˜κ² μ§€λ§Œ.. ν•˜λ‚˜ν•˜λ‚˜ νŒŒλΌλ―Έν„°λ‘œ λ‹€ λ„˜κΈ°κΈ° μ‹«κ³  ν•¨μˆ˜μ˜ 길이도 κΈΈμ–΄μ§€λŠ”κ²Œ μ‹«μ–΄μ„œ μ•„λž˜μ™€ 같이 μ €λŠ” κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ ν•¨μˆ˜λ₯Ό 톡해 λ§Œλ“€μ–΄μ§„ μΏ ν‚€λ‘œ 웹뷰에 λ„£μ—ˆμ„ λ•Œ 정상 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. import UIKit class CookieUtil { private let path: String = "/" let cookieDomain = "_" private enum cookieBaseName: String { case appId = "_" // ... } func getAppCookie() -> HTTPCookie? { guard let cookie = HTTPCookie(properties: [ .domain: cookieDomain, .pa..
[iOS] 킀체인 μœ ν‹Έ
2023.04.07
String νƒ€μž…μ˜ κ°’ 킀체인에 μ €μž₯ν•  λ•Œ μ‚¬μš©ν•˜λ €κ³  κ΅¬ν˜„ν•΄λ†“μ€ 킀체인 μœ ν‹Έ ν΄λž˜μŠ€μž…λ‹ˆλ‹€. μ‹±κΈ€ν†€μœΌλ‘œ κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. store μ‹œ 이미 μ‘΄μž¬ν•˜λ˜ 값이면 μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈκ°€ λ˜λ„λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. λ°œμƒν•˜λŠ” 각쒅 였λ₯˜μ— λŒ€ν•œ μ„€λͺ…은 μ£Όμ„μœΌλ‘œ λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. import Foundation import Security enum KeyChainType: String { case tokenKey = "Token_Key" // ... } enum KeyChainError: Error { case invalidBundleID case invalidData case recognizedKeyChainError(OSStatus, CFString?) case unrecognizedKeyChainError case dataC..
list_img
[iOS] ν•΄μ‹±
2023.04.07
μš©μ–΄ 정리 key : ν•΄μ‹±λ˜κΈ° μ „μ˜ κ°’ digest : ν•΄μ‹±λœ ν›„μ˜ κ°’ rainbow table : μ—¬λŸ¬ 값듀을 λŒ€μž…ν•΄λ³΄λ©΄μ„œ 얻은 λ‹€μ΄μ œμŠ€νŠΈλ“€μ„ λͺ¨μ•„놓은 ν…Œμ΄λΈ” ν•΄μ‹œ ν•¨μˆ˜ 단방ν–₯ ν•¨μˆ˜λ‘œλ§Œ μž‘λ™ν•¨ input 값이 μ•„μ£Ό λ―Έμ„Έν•˜κ²Œ 달라져도 output 값은 μ „ν˜€ 달라짐 → Avalanche Effect ν•΄μ‹œ ν•¨μˆ˜μ˜ μ›λž˜ 섀계 λͺ©μ μ€ λΉ λ₯Έ 검색을 μœ„ν•¨μž„ (OS λΆ€λΆ„ ν•΄μ‹œν…Œμ΄λΈ” μ°Έκ³ ) input 값이 κ°™μœΌλ©΄ output 값은 항상 κ°™μŒ (즉 ν•¨μˆ˜λ‘œμ„œ κΈ°λŠ₯함) ν•΄μ‹œ ν•¨μˆ˜μ˜ μœ„ν—˜μ„± input이 κ°™μœΌλ©΄ output은 항상 κ°™μœΌλ―€λ‘œ ν•΄μ‹±λœ λ¬Έμžμ—΄μ˜ 원문을 레인보우 ν…Œμ΄λΈ”μ—μ„œ 찾을 μœ„ν—˜μ„±μ΄ μ‘΄μž¬ν•¨. brute-force μ›λž˜ ν•΄μ‹œ ν•¨μˆ˜κ°€ λΉ λ₯Έ 검색을 μœ„ν•΄ μ„€κ³„λ˜μ—ˆλ‹€ λ³΄λ‹ˆ μ‹€μ œ λŸ°νƒ€μž„μ—μ„œμ˜ 속도도 λΉ λ₯Έ 건 맞음. ν•˜μ§€λ§Œ κ·Έ..
[iOS] Framework, Library RnD
2023.04.07
iOS ν”„λ ˆμž„μ›Œν¬, 라이브러리 μ‘°μ‚¬ν•œ λ‚΄μš©λ“€μž…λ‹ˆλ‹€. μ‹€μ œ 개발 μ‹œ μ—‘μŠ€μ½”λ“œμƒμ—μ„œ μ„€μ •ν•΄μ€˜μ•Ό ν•  뢀뢄이 더 μžˆλŠ”λ° ν•΄λ‹Ή 뢀뢄은 기계 마λƒ₯ 계속 였λ₯˜ ν•˜λ‚˜μ”© λ³΄λ©΄μ„œ λΌμ›Œλ§žμΆ”λŠ” λ°©μ‹μœΌλ‘œ ν•΄κ²°ν–ˆκΈ° λ•Œλ¬Έμ— 방식 μ •λ„λ§Œ μ°Έκ³ ν•΄μ£Όμ„Έμš”. μ•„λž˜ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ λ³΄μ‹œλŠ”κ²Œ 더 이해가 잘 λ˜μ‹€ κ²ƒμž…λ‹ˆλ‹€. μ €λŠ” iOS μ²˜μŒν•˜λŠ” μž…μž₯μ—μ„œ μž‘μ„±ν•œκ±°λΌ ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 각자 λΉŒλ“œ μ„ΈνŒ…μ— 맞게 μ„€μ •ν•΄μ€˜μ•Ό ν•˜λŠ” 뢀뢄이 λ§Žλ‹€κ³  νŒλ‹¨ν•΄μ„œ 였λ₯˜λ„ 많이 λ‚˜μ‹€κ²λ‹ˆλ‹€... [iOS] framework κΈ°λ³Έ : https://dongdong216.tistory.com/4 [iOS] framework κΈ°λ³Έ 1. CPU Architecture 아이폰은 기쒅에 따라 λ‹€λ₯Έ μ•„ν‚€ν…μ²˜μ˜ CPUλ₯Ό μ‚¬μš©ν•¨. λΉŒλ“œλ₯Ό ν•˜λ©΄ Execute file이 생..