분류 전체보기 229

Concurrency

1️⃣ Swift Concurrency 개요무엇이 추가되었나?Swift 5.5: async / await 도입Swift 6: 데이터 레이스 없는 동시성을 컴파일러가 보장왜 중요한가?UI 멈춤 방지네트워크 / 계산 작업과 UI를 동시에 처리Swift 6 모드에서 안전한 동시성 강제2️⃣ 핵심 개념 정리Asynchronous (비동기)작업을 중단(suspend) 했다가 재개(resume)기다리는 동안 다른 작업 가능⏱ 시간은 그대로지만 앱이 멈추지 않음Parallel (병렬)여러 작업을 동시에 실행⏱ 전체 시간 단축관리 난이도 ↑👉 비동기 ≠ 병렬👉 병렬은 비동기의 한 형태3️⃣ 문제 상황: Concurrency 없는 앱기존 코드 문제 toastLabel.text = makeToast() // 2초 sl..

Protocols / Extensions/ Error Handling

1️⃣ Protocol (프로토콜)역할타입이 반드시 가져야 할 속성과 메서드의 “약속”Class / Struct / Enum 모두 채택 가능protocol CalorieCountable { var calories: Int { get } func description() -> String } 핵심 포인트구현 ❌, 요구사항만 정의{ get } → 읽기 전용{ get set } → 읽기/쓰기2️⃣ Protocol 채택 (Conformance)Class / Struct에서 직접 채택class Burger: CalorieCountable { ... } struct Fries: CalorieCountable { ... } 요구된 모든 프로퍼티/메서드 구현 필수var 요구 → let 구현 가..

Class / Struct

1️⃣ Class (클래스)목적복잡한 객체 표현예: 직원, 상품, 동물 등구성Properties: 상태 저장Methods: 동작 정의 class Animal { var name: String func makeSound() { } } 특징인스턴스 생성: let a = Animal()initializer (init) 로 초기값 강제 가능상속 가능Reference Type (참조 타입)2️⃣ Initializer (초기화자) init(name: String) { self.name = name } 인스턴스 생성 시 모든 프로퍼티 초기화 보장self → 프로퍼티 구분용3️⃣ Subclass (상속) class Mammal: Animal { let hasFurOrHair = true } 부모..

Functions (함수) / Closures

기본 형태func name(param: Type) -> ReturnType { ... } 핵심 포인트매개변수, 반환값 모두 선택 사항호출 시 argument label 사용단일 표현식이면 return 생략 가능주요 기능 정리기능문법 / 예함수 정의func f() {}매개변수func f(x: Int)반환값func f() -> Int호출f(x: 10)암묵적 returnfunc f() -> Int { 10 } ※ 한줄코드의 경우 return 생략 가능매개변수의 별칭func f(forValue x: Int) ※ 호출하는 쪽은 f(forValue : 50) 📌 Nested Functions (중첩 함수)기능설명함수 안의 함수함수 내부에 정의외부 변수 접근가능 (클로저처럼 동작)용도로직 분리, 가독성 향상..

Swift / C++ Collection Types 비교

Array구분Swift ArrayC++ vector초기 선언var a: [Int] = []vector v;초기 선언var a = [1,2,3]vector v{1,2,3};초기 선언Array(repeating:0, count:5)vector v(5,0);개수a.countv.size()상태a.isEmptyv.empty()접근a[i]v[i]추가a.append(x)v.push_back(x)삽입a.insert(x, at:i)v.insert(v.begin()+i, x)수정a[i] = xv[i] = x제거a.remove(at:i)v.erase(v.begin()+i)제거a.removeLast()v.pop_back()초기화a.removeAll()v.clear() Dictionary구분Swift DictionaryC++ ..

Swift vs C/C++ 문법 비교

C/C++Swift선언 종료반드시 ; 로 종료n/a데이터 타입short / unsigned shortint / unsigned intfloatdoubleboolchar / unsigned charstringInt 혹은(Int8, Int16, Int32, Int64)UInt (부호 없는 정수) 혹은(UInt8, UInt16, UInt32, UInt64)FloatDoubleBoolCharacterString상수 선언const int a = 0;let a = 0 혹은 let a : Int = 0변수 선언int a = 0;var a = 0 혹은 var a : Int = 0변수선언시 null/nil의 대응없음 (컴파일러가 초기값을 넣어줌)var a : String? print..

(ubuntu) github repository 을 ssh 로 액세스

1. git 을 인스톨sudo apt install git 2. 유저설정git config --global user.name 사용자이름git config --global user.email 사용자 이메일 주소 3. ssh-key 공개키 작성ssh-keygen -t rsa -C "메일 주소" 디폴트 옵션으로 작성하면 아래의 폴더에 ~/.ssh/id_rsa.pub 가 생성 4. 공개키를 클립보드에 복사일단 클립보드 복사 툴을 설치sudo apt update sudo apt install xclip 공개키 복사cat ~/.ssh/id_rsa.pub | xclip -selection clipboard 5. 4에서 복사한 공개키를 자신의 github 에 설정github.com 에 로그인settings >> SS..

CSRF(일부XSS포함) 방지책 (ReactJS + Flask)

🛡️ Flask API 서버: HttpOnly와 CSRF 토큰으로 XSS/CSRF 동시에 방어하기React와 같은 프론트엔드와 연동되는 Flask API 서버에서 가장 흔한 두 가지 웹 보안 위협, XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery)를 어떻게 효과적으로 방어하는지 코드와 함께 설명합니다.우리가 살펴본 Flask 코드는 'Double Submit Cookie' 또는 'Synchronizer Token Pattern'을 기반으로 하며, 강력한 쿠키 옵션을 활용하여 보안을 구축합니다.1. 🔑 XSS 방어의 핵심: HttpOnly 쿠키XSS 공격의 주요 목적은 사용자 브라우저에 삽입된 악성 JavaScript를 통해 세션 쿠키를 탈취하는..

Web Security 2025.12.02

XSS 방지책 (Express.js)

🛡️ Express.js (API Only) XSS 방지 대책1. 📝 입력 데이터 정제 (Input Sanitization)사용자 입력(JSON, 쿼리 파라미터 등)을 데이터베이스에 저장하거나 응답으로 보내기 전에 악성 HTML이나 스크립트 코드를 제거합니다.✅ 샘플 코드: dompurify와 jsdom을 사용한 정제Express 환경에서는 브라우저 환경에서 사용되는 **dompurify**를 서버 측에서 실행하기 위해 **jsdom**과 함께 사용하거나, **sanitize-html**과 같은 라이브러리를 사용합니다. 여기서는 널리 사용되는 **sanitize-html**을 사용합니다.Bash # 💡 라이브러리 설치npm install sanitize-html expressJavaScript co..

Web Security 2025.12.02

XSS 방지책 (Flask)

🛡️ Flask (CRUD API Only) XSS 방지 대책API 서버에서 가장 중요한 XSS 방지책은 클라이언트 측에서 예상치 못한 방법으로 스크립트가 실행되는 것을 막는 것입니다.1. 📝 입력 데이터 정제 (Input Sanitization)Flask가 사용자로부터 받은 데이터를 데이터베이스에 저장하기 전, 또는 응답으로 보내기 전에 잠재적인 악성 HTML/스크립트 코드를 제거하는 과정입니다.✅ 샘플 코드: bleach 라이브러리 사용파이썬에서는 bleach와 같은 라이브러리를 사용하여 사용자 입력에서 HTML 태그와 속성을 안전하게 제거할 수 있습니다.Bash # 💡 라이브러리 설치pip install bleachPython import bleachfrom flask import Flask,..

Web Security 2025.12.02