본문 바로가기

전체 글

(37)
URLSession을 이용한 네트워킹 작업 개요이 글은 URLSession으로 네트워킹 작업을 수행하는 데 알아야 하는 관련 개념들을 정리한다 간단하게 정리해보면 다음과 같다URLSession을 통해 네트워킹 작업을 수행할 때, URLRequest가 이용된다URLRequest는 요청에 필요한 정보들을 가진 객체인데, URL이 필요하다URL은 URLComponents를 통해 관리될 수 있다 URL, URLComponents, URLRequestURLSession URL과 URLComponents 그리고 URLRequestURL, URLComponents, URLRequest는 전부 Foundation 프레임워크에 포함되어 있고 네트워킹 작업을 수행하는 데 이용된다 URL은 요청에 이용되는 주소를 나타내며, URLComponents를 통해 URL객체..
ARC(Automatic Reference Counting) 개요이 글에서는 Swift에서 사용하는 메모리 관리 기법인 ARC(Automatic Reference Counting)에 대해 알아본다우선, 다른 언어에서 많이 사용되는 GC(Garbage Collection)를 이용한 메모리 관리와 ARC 방식은 어떤 차이가 존재하는지 확인하고,Swift에서 강한 순환 참조 문제를 해결하기 위해 사용되는 다음 키워드들에 대해 알아본다 weakunownedCapture List GC와 ARCC++의 스마트 포인터는 참조 카운팅을 통해 객체가 더 이상 사용되지 않을 때 자동으로 메모리를 해제시킨다.. Swift는 Heap 영역 관리에 ARC 방식을 사용하는데, ARC 방식을 이용하면 언어 차원에서 스마트 포인터처럼 객체 카운팅을 수행하고 관리한다GC(Garbage Coll..
#Preview를 위한 환경 구분 방법 개요TodoMate라는 프로젝트에선 FirebaseSDK의 Firestore를 사용하는데, 프로젝트 타겟에 해당 라이브러리를 추가하면 import를 안 해도 프리뷰 오류가 발생한다지금까지는 그냥 코드 작성하고 빌드하고 직접 실행해가면서 확인했는데, 이젠 너무 불편해서 이를 나름 해결하는 과정을 글로 작성해 본다추가로 런타임 시점에 설정된 값을 바탕으로 코드 분기를 수행시키는 방법에 대해서도 기억해 두자. 문제 원인https://hot6.tistory.com/14Thread 0 Crashed:: Dispatch queue: com.apple.main-thread0 libsystem_kernel.dylib 0x19eeb6b4c __abort_with_payload + 81 ..
Poetry 개요파이썬 프로젝트를 하면서 패키지로 배포할 일이 발생했는데프로젝트를 만들고, 의존성을 관리하고, 패키지로 배포하는데 만약 Poetry가 없었다면 상당히 불편했을 것이다 나중에 또 파이썬 프로젝트를 수행해야 할 때, 빠르게 필요한 내용들을 기억해내기 위해 핵심내용들만 글로 정리한다그리고 이런 프로젝트 관리 프로그램의 개념을 적립해두면, Go언어의 go?나 Rust의 cargo? 또는 Swift의 SPM을 사용할 때도 유용할 것이다 https://github.com/python-poetry/poetry 프로젝트 시작과 가상환경프로젝트 초기화Poetry를 사용해 새로운 Python 프로젝트를 초기화하려면 다음 명령을 실행한다 poetry init 이 명령을 통해 프로젝트의 메타데이터와 의존성을 관리하는 py..
Tensor에 대하여(with PyTorch, TPU) 개요이 글은 PyTorch를 기반으로 DQN 관련 프로젝트를 하면서, 이 프레임워크에 대해 가볍게 정리해보고 싶었던 것들에 대한 글이다 우선 그동안 막연하게만 알았던 Tensor라는 데이터 타입에 대해 정리해본다그리고 PyTorch에서 이런 Tensor들로 구성된 모델을 저장하고 불러오는 방법에 대해 정리한다이런 모델은 CPU, GPU 뿐만 아니라 TPU에도 로드가 가능한데, TPU에 대해서도 간단히 알아본다 Tensor모델 저장 및 불러오기TPU TensorPyTorch의 핵심 개념 중 하나는 Tensor다 Tensor는 수학적으로는 다차원 배열을 의미하며, PyTorch에서 데이터를 저장하고 연산을 수행하는 기본 자료 구조다NumPy의 배열과 상당히 유사하여 상호변환 시, 오버헤드가 거의 없다(메모리..
공유기는 라우터인가? 스위치인가? 개요문득 네트워크 관련 개념들을 복기하다가 인터넷 공유기가 라우터인지 스위치인지에 대해 의문이 들었다그렇게 생각해보니 정확하게 네트워크 구성 요소들에 대해 정확하게 이해하고 있지 못했다는 생각이 들었고, 다시한번 정리하기 위해 글을 쓴다 네트워크 통신 계층IP 주소계층별 네트워크 장비 네트워크 통신 계층네트워크 통신은 개념적으로 OSI 7계층 모델을 통해 구조화되어 있지만, 실제로는 주로 이를 단순화한 TCP/IP 계층 모델을 사용한다 OSI 7 계층All People Seems To Need Data Protocol 7. 응용 계층 (Application Layer) - Data(=Message)사용자와 네트워크 간의 상호작용을 담당하는 계층. 애플리케이션이 직접 사용하는 데이터 전송의 인터페이스 제..
강화학습(4) 개요이전 글에서는 DQN(Deep Q-Network)의 원리에 대해 자세히 알아보았는데, 이젠 이를 실제로 활용하여 학습을 진행한다테트리스 게임을 환경으로 선택하여 학습을 진행했으며, 이를 통해 깨달은 내용들에 대해 끄적여본다 KaggleGymnasium학습 코드마무리(하소연?) Kaggle무료로 P100을 최대 연속 9시간 사용할 수 있는 서비스가 있다? 이전까지 Colab을 사용하면서, 브라우저로 작업을 돌면서 항상 세션이 종료되지 않을까 걱정했었는데 찾아보니 Kaggle을 이용하면 이런 불편함을 해소할 수 있었다Kaggle에서 Job은 코드 셀 실행 시 자동으로 시작되며, 사용자 개입 없이 백그라운드에서 작업을 처리한다 즉, 기존에 노트북파일을 직접 연결해서 수행하던 걸 그냥 해당 파일만 전달하면 ..
강화학습(3) 개요이전까지 강화학습이 무엇인지, 그리고 다양한 강화학습 알고리즘 중 게임 환경에 적합한 DQN의 기반이 되는 Q-Learning의 수학적 원리에 대해 알아보았다 그 내용을 한 번 간단하게 요약해 보면 다음과 같다마르코프 결정 과정(MDP)을 활용하면 환경을 수학적으로 모델링할 수 있고, 이를 통해 행동 선택의 기준이 되는 최적의 Q-값을 반환하는 최적 행동 가치 함수(q*)를 정의했었다 이 글은 이제부터 아래와 같은 요소들을 정리하면서 진행된다 Q-LearningDeep Q-learningDQN(Deep Q-Network) Q-LearningQ-Learning은 학습 과정을 통해 이 최적 행동 가치 함수의 값을 점진적으로 근사해가는 알고리즘이다이전에 다음과 같이 최적 행동 가치 함수를 정의했다 이제부턴..