SIL로 Swift 클로저 뜯어보기
·
Programing Langauge/swift
👋 들어가기 전이전 학습에 이어서, 이번는 간단한 형태의 클로저, 구조체, 클래스를 SIL로 변환시켜 해석해보자. 중복된 내용은 생략하고, 각 타입에 특별한 SIL 문법을 읽어보자.🏁 학습할 내용클로저외부 참조 없는 클로저외부 참조 있는 클로저1️⃣ 외부 참조가 없는 클로저var clo1: (Int, Int) -> Int = { a, b in return a + b }print(clo1(1,2)) 🔥 전역 변수 및 클로저 정의 섹션 // 1. 전역 변수 clo1 선언 (저장 공간 및 초기값 가짐)@_hasStorage @_hasInitialValue var clo1: (Int, Int) -> Int { get set }// 2. 실제 SIL 내에서 관리되는 전역 기호(Symbol)sil_gl..
SIL 맛보기
·
iOS/SwiftUI
👋 들어가기 전이번 시간은 컴파일 과정과 그 과정중에 있는 SIL에 대해 한번 알아보자.🏁 학습할 내용컴파일 과정컴파일 과정 중, SIL의 역할간단한 SIL 해석하기⚙️ 컴파일 과정 🌳 AST (Abstract Syntax Tree, 추상 구문 트리) 단계컴파일의 첫 시작은 소스 코드를 컴퓨터가 분석하기 좋은 구조로 바꾸는 것구문 분석 (Parsing)Swift 소스 코드(.swift)를 읽어 들여 문법 구조를 트리 형태로 만듬.이 단계에서는 문법이 맞는지(괄호가 잘 닫혔는지 등)만 확인의미 분석 및 타입 체킹 (Semantic Analysis & Type Checking):컴파일러가 AST를 훑으며 타입을 추론하고 검사 (예: String 변수에 Int를 대입하려고 하면 여기서 에러 감지.)이 과..
소유권이란?
·
Programing Langauge/swift
👋 들어가기 전최근 일과 사이드 프로젝트에 바쁘게 생활하고 있어, 기저 개념을 학습할 수 있는 시간과 기회가 부족했는데팀동료께서 좋은 개념을 설명해주셔서 한번 학습해보려고 한다. 주제는 바로 제목과 같이 소유권이라는 개념과 함꼐 Swift 진영에서는 어떻게 다루고 있는 지 살펴보려고한다.🏁 학습할 내용소유권은 무엇이고, 왜 필요한가?Copyable과 ~CopyableborrowingconsumeconsumingSIL 맛보기🧐 소유권은 무엇이고, 왜 필요한가? 1️⃣ 소유권아래 코드가 있을 떄, 메모리 관점에서 다음 지문들을 생각해보자.let a = Data(...)let b = aa ----+ | ↓ Data ↑ |b ----+누가 Owner인가?언제 O..
바이너리 분석하기
·
iOS/Modularization
👋 들어가기 전랭그래프 포스팅 이후, 약 3개월만의 포스팅이다..회사와 사이드에 치이다보니, 학습시간이 많이 없어 포스팅을 할께 없었다. 이번 포스팅은 최근 회사에서 바이너리를 분석하는 경험을 하게되었는데, 그 때 알게된 지식과 유용한 tool 사용버을 기록하고자한다.🏁 학습할 내용nmotool✊ nm유닉스 계열 운영체제의 object, 실행, 라이브러리등파일내에 포함된 심볼을 확인하는 도구🚀 역할컴파일/링크 오류 디버깅라이브러리 분석바이너리 분석 💬 명령어nm -[옵션 나열..] [파일]옵션설명-n (numeric-sort)주소 순서대로 정렬-u (undefined-only)정의도지 않은 심볼만 -C (Demangle)Mangling 심볼을 다시 사람이 읽기 쉬운 형태로 변환-D (dyamic)..
히스토리 관리
·
AI/LangGraph
🏁 학습할 내용히스토리 관리가 필요한 이유히스토리 관리 시작하기최적화를 위한 삭제Remove 담당 NodeHuman-in-the-loop📖 히스토리 1️⃣ 히스토리 관리가 필요한 이유중간에 장애가 발생해도 복구할 수 있음 대화 / 작업 흐름을 유지할 수 있음Human-in-the-loop: 개발자가 개입하여, 검토 및 수정을 할 수 있음디버깅 및 추적이 간편함 2️⃣ 히스토리 관리 시작하기checkpoints를 활용, Snapshot을 만듬, 우리는 간단한 MemorySaver checkpointer를 이용함checkpointer는 매 실행마다, 상태 스냅샷(checkpoint)를 thread에 누적하게 됨 💡 Thread란?checkpointer가 저장하는 checkpoint들을 묶는 고유 ID그..
tool
·
AI/LangGraph
🏁 학습할 내용랭체인 tool 활용랭그래프에서 tool 제공⛓️ LangChain tool 제공 1️⃣ tool 만들기랭체인에서 tool은 schema를 가진 함수다.@tool 데코레이설명파라미터 및 리턴 타입from langchain_core.tools import tool@tooldef add(a: int, b: int) -> int: """숫자 a와 b를 더합니다.""" return a + b@tooldef multiply(a: int, b: int) -> int: """숫자 a와 b를 곱합니다.""" return a * b 2️⃣ llm에 바인딩small_llm = AzureChatOpenAI( azure_deployment='gpt-4o-mini-2024-07-18'..