| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Clean Code
- uiscrollview
- RxCocoa
- clean architecture
- Human interface guide
- UITextView
- 클린 코드
- map
- SWIFT
- uitableview
- 스위프트
- Observable
- 클로드코드
- swift documentation
- combine
- rxswift
- HIG
- collectionview
- tableView
- Xcode
- swiftUI
- Protocol
- 애니메이션
- UICollectionView
- 리펙토링
- Refactoring
- ios
- 리팩토링
- claude code
- MVVM
- Today
- Total
목록전체 글 (1729)
김종권의 iOS 앱 개발 알아가기
* async & await에 관한 WWDC21 정리한 글 (영상링크: https://www.youtube.com/watch?v=r_clm92NI1s)sync, async 개념 이해하기sync: 함수 하나를 호출했을때 그 함수가 끝나기까지 스레드가 대기async: 함수가 끝나기까지 스레드가 대기 x (ex. 함수 안의 completion 인수)제어권 개념제어권: a함수에서 b함수를 호출했을때, 현재 스레드의 제어권은 a에서 b로 넘어간 것b가 return을 만나기전까지 스레드의 제어권은 b가 가지고 있음b가 return을 만나게 되면 a에게 스레드 제어권이 넘어감func a() { b()}func b() {}비동기 환경에서의 제어권동기 함수는 return 키워드를 만날때 제어권이 종료가 되는데, 비동기 ..
macOS 특정 버전 업데이트보통은 시스템 설정 > 일반 메뉴 > 소프트웨어 업데이트 메뉴 확인이 가능하지만 특정 버전으로 업뎃이 어려움특정 버전으로 업데이트 하려면 아래처럼 커맨드를 통해 가능만약 macOS 26.6으로 업데이트 하려면 터미널에 아래 명령어를 입력% softwareupdate --fetch-full-installer --full-installer-version 26.6명령어 의미softwareupdate: 소프트웨어 업데이트를 관리하는 macOS의 내장 명령어 도구--fetch-full-installer: Apple 서버로부터 운영체제 전체 설치 관리자 파일(InstallAssistant.pkg)을 다운로드하겠다는 옵션--full-installer-version 26.6: 다운로드할 설..
1. Skill이란?반복적으로 설명해야 하는 절차·규칙·컨텍스트를 한 번 문서화해서 재사용하는 것이 핵심. 매번 프롬프트에 장황하게 다시 설명할 필요 없음. ❌ Bad매 대화마다 사용자가 직접 반복 입력:"우리 커밋 메시지는 티켓 번호 접두사 붙이고, 제목은 72자 이내, 본문은 한글로, 브랜치명은 정해진 형식으로 써야 해..." ✅ GoodSKILL.md 파일 하나로 규칙 고정:---name: commit-writerdescription: 커밋 메시지 작성 시 사용. 티켓 번호 접두사 + 컨벤션 자동 적용---변경된 파일 확인브랜치명에서 티켓 번호 추출 [플랫폼] 형식으로 작성한 번 만들어두면 이후 대화에서는 "커밋해줘"만 입력해도 규칙이 자동 적용됨.2. 짧고 명확하게, 한 가지 목적만하나의 Ski..
지난 글 복습class Counter { var n = 0 func bump() { n += 1 }}let c = Counter()Task { c.bump() }Task { c.bump() }n += 1은 읽기 → 더하기 → 쓰기 3단계 → 두 스레드가 겹치면 한쪽 작업이 사라짐 (데이터 레이스)문제는 재현이 안 됨: 99번 잘 돌다가 사용자 기기에서만 터짐. Swift 5는 이걸 막아주지 않았음Swift 6는 이런 코드를 컴파일 에러로 만들어버림핵심 아이디어 = 격리 구역(isolation domain)코드는 항상 어느 구역엔가 속함: actor 인스턴스마다 구역 하나, @MainActor 구역, 또는 아무 데도 안 속한 nonisolated같은 구역 안 = 안전 (동시 접근 없음)구역 경계..
swift6 세팅swift6는 xcode16부터 지원Xcode > targets > Build Settings > swift compiler - Language에서 swift6 선택swfit6는 옵트인 모드패키지/모듈 단위로 swift6를 적용할 수 있음아래처럼 swiftLanguageMode(.v6)으로 적용 가능모듈별 점진적 마이그레이션이 설계 의도// Package.swift.target(name: "MyLib", swiftSettings: [.swiftLanguageMode(.v6)])데이터 레이스란? 두 개 이상의 스레드가 동시에 동일한 메모리 공간에 접근할 때 발생하며, 다음 조건이 모두 충족되는 상태를 의미 동시성: 둘 이상의 스레드가 동시에 메모리에 접근동일 메모리: 최소 하나의 작업이 해..
MCP란?MCP(Model Context Protocol) = AI가 외부 기능을 "도구(tool)"로 호출하는 표준 규격클로드코드에서 "현재 날씨를 조회하는 기능"은 없지만, 내가 날씨를 조회하는 API가 있는 MCP를 만들어서 클로드코드에서 사용하면 날씨를 조회할수있음MCP는 클로드코드에서만 쓰는 용어MCP 예시브라우저/웹Playwright / Chrome DevTools MCP — 실제 브라우저 띄워서 UI 동작 확인, 스크린샷, 콘솔 로그 확인Brave Search / 웹서치 계열 — 최신 정보 검색협업 툴Slack — 채널 메시지 읽기/보내기Notion — 문서 조회·수정Linear / Jira — 티켓 생성·조회, 스프린트 관리데이터Postgres / SQLite — DB 스키마 조회, 쿼리 ..
초기 에이전트 시스템에서 필수적이었던 하네스가 왜 최근 프로덕션 환경에서 기술 부채와 비효율의 원인이 되고 있는지 핵심 문제점과 최신 아키텍처 방향 정리하네스 엔지니어링(Harness Engineering)이란?하네스(Harness)는 마차의 말을 통제하는 '말굴레'에서 유래한 용어로, AI 에이전트 시스템에서는 LLM의 출력을 제어하고 정해진 궤도 내에서 안전하게 작동하도록 감싸는 외부 통제 프레임워크/래퍼(Wrapper)를 의미초기 에이전트 시스템에서 하네스가 담당했던 역할하네스(Harness)는 마차의 말을 통제하는 '말굴레'에서 유래한 용어로, AI 에이전트 시스템에서는 LLM의 출력을 제어하고 정해진 궤도 내에서 안전하게 작동하도록 감싸는 외부 통제 프레임워크/래퍼(Wrapper)를 의미초기 에..
NFX의 "How the Fastest AI-First Companies Actually Work" 아티클을 정리한 글.1. 패러다임의 변화: 0→1에서 1→2로의 병목 이동0→1 (초안 제작): AI 덕분에 프로토타입/코드 초안을 만드는 시간은 0에 수렴함.1→2 (검증 및 반복): 진짜 병목은 "실제 유저에게 출시해서 데이터 학습 후 V2로 얼마나 빨리 개선하는가"임.핵심: AI에게 "이 아이디어 어때?"라고 묻는 함정에서 벗어나 실제 사용자 릴리즈 및 학습 속도(V1 ➔ V2 Loop)를 최우선 지표로 삼아야 함.2. 조직 구조 및 일하는 방식의 변화미션 팟 (Mission Pod) 중심:기능별 부서(개발/디자인/마케팅) 구분을 없애고, 특정 비즈니스 결과(예: 회원가입률 20% 증가)를 끝까지 책..
