반응형

전체 글 230

Swift 6을 프로젝트에 적용한 후에... #3 마치며...

Swift 6로 만들던 프로젝트를 업데이트한 후에 든 생각은 기존에 계속 업데이트하고 있는 앱인 나만의 프로젝트는 Swift 6로 업데이트를 심각하게 고민해봐야겠다것 이었습니다. 정말로 중요한 교훈일수도 있습니다. 신규로 만들고 있던 5xxx라인짜인 앱을 고치는데 Swift 6 스터디까지 합해서 몇주간이 걸렸습니다. 대부분의 시간은 클래스 구조를 다시 디자인하고 actor로 변경하는 것이었습니다. 또한 태스크 블록이나 비동기처리 관련 버그 처리에도 많은 시간이 걸렸습니다. 그렇다고 UI가 아닌 클래스가 메인쓰레드에서만 실행되게 하는건 어딘가 문제가 있어 보입니다. 나만의 프로젝트는 몇 만라인의 코드를 가지고 있고 이것을 바꾸고 테스트하는 시간은 상상이상일거 같습니다. 이 글을 보시는 분들도 신규 프로젝트..

iOS 프로그래밍 2025.07.03

Swift 6을 프로젝트에 적용한 후에... #2 알아야 하는 것들

Swift 6로 프로그래밍하기 위하여 알아야할 기본 상식에 대해서 적어 보도록 하겠습니다. Swift 6은 기존 버전과는 다르게 실행이 태스크 블록 단위로 멀티쓰레드에서 실행됩니다. 이것은 디버깅시 다양한 쓰레드의 콜스택에서 확인할 수 있습니다. 그리고 이것은 다른 언어들과는 다르게 언어 레벨에서 지원하며 데이터 경합에 의한 문제는 컴파일시에 체크된다는 점입니다. 컴파일시 체크된다는 것은 어떻게 작성하든 컴파일러가 검증해준다는 의미가 아닙니다. Swift 6에서 언어적으로 지켜야할 방법에 따라 프로그래밍해야 한다는 점입니다. 실제로 언어에 맞게 작성하게 되면 실행 선후 관계의 문제는 발생해도 데이터 경쟁에 따른 문제가 발생하지는 않습니다. Swift 6를 사용하게 되면 Task 블록을 많이 사용하게 됩니..

iOS 프로그래밍 2025.07.03

Swift 6을 프로젝트에 적용한 후에... #1 시작

최근에 iOS용 신규 앱을 하나 새롭게 개발하고 있습니다. 몇 개월간의 개발 속에서 기본 골격을 만들었을 때 하나의 사소한 에러를 만났습니다. 해당 에러를 수정하던 중 이게 병렬처리와 관련된 에러란 것과 현재 Swift가 버전 6까지 나왔다는 것을 알게되었습니다. 신규 프로젝트를 만들때 따로 Swift 버전을 확인하지 않고 기본 설정된 버전(Swift 5.x)으로 개발했기 때문에 버전 6에 대해서는 모르고 있었습니다. 신규 프로젝트인 관계로 처음 만들때 최신 Swift를 적용하자는 생각에 Swift 버전을 6으로 올렸고 그때부터 컴파일 지옥이 시작되었습니다. 지금까지 참 많은 언어의 버전업을 경험했던거 같습니다. 그 때마다 언어의 버전업을 두려워하지 않았던 것은 보통 과거 버전 언어의 호환이 크게 문제가..

iOS 프로그래밍 2025.07.03

[서평] 30가지 패턴으로 배우는 분산 시스템 설계와 구현기법

제목은 일반적인 서버 분산처리 패턴 관련 내용이 있는 듯 하나 실제로 책의 내용은 분산 저장 시스템의 구현 패턴에 대한 내용을 가지고 있는 책이었습니다. 쉽게 말하여 NoSQL 관련 분산처리 관련 구현 패턴을 설명하고 있습니다. 이 책은 해당 분야의 기본적인 이해가 있는 상태에서 구현이 궁금할 때 보면 좋은 중고급 서적입니다. 전반적으로 네트워크 프로그래밍이나 서버 구성이 아닌 그 위에서 동작하는 분산처리 로직에 대한 패턴적인 설명만을 담고 있습니다. 책의 내용을 보다가 왜 이런 설계가 들어갔는지 궁금하면 데이터 중심 애플리케이션 설계를 읽어보면 좋습니다. 마지막으로 책의 내용은 그리 쉽지는 않고 일반적인 서버의 분산처리보다는 NoSQL 분산 저장 시스템에 유용한 분산 처리에 관심이 있다면 크게 도움이 ..

[서평] 임베디드 웹서버를 위한 TCP/IP

2002년에 번역서가 발매된 오래된 서적을 읽었습니다. 정말로 굉장히 인상적인 서적이었입니다. 네트워크 스택에 대해서 나와있는 이론서는 많지만 실제로 소스 레벨에서 이해시켜주는 서적은 찾기 어렵습니다. 이 책은 소스레벨에서 네트워크 스택을 이해시켜 주는 책이었습니다. TCP/IP 스택을 이더넷이나 SLIP 레벨에서 부터 웹서버로 HTTP 레벨까지 소스레벨에서 이해시켜줍니다. 추가로 임베디드 시스템용으로 가장 기초가 되는 이더넷이나 SLIP 레벨에서 부터 웹서버까지 다 구현한 저자는 뭔가 네트워크 프로그래밍에 관한한 신의 레벨처럼 느껴집니다.  이 책은 프로토콜에 대해서 상세히 설명 하지 않습니다. 그런 관계로 네트워크 이론은 알고 보는 것이 이해하기 좋습니다. 소스는 간단한 C 소스니 프로토콜을 이해하면..

[서평] 실전! Core ML을 활용한 머신러닝 iOS 앱 개발

이 책은 iOS에서 딥러닝이나 머신러닝을 적용한 앱을 만드는 법을 설명한 책이다. 책의 구성은 보통 머신러닝 알고리즘(객체 인식, 감정탐지, 스타일전이, 스케치인식 등등)의 간단한 설명과 iOS 앱을 만드는 방법을 설명합니다. 머신러닝과 iOS 앱 개발이라는 두 마리 토끼를 잡으려 했기에 두 부분다 깊은 설명보다는 개괄적인 설명이라서 아쉽게 느껴질 수도 있지만 두 부분 다 어느정도 이해하고 있는 입장이라면 도움이 많이 되는 책입니다. 이 책이 좋았던 이유는 우선 딥러닝 쪽 설명을 짧지만 대략적으로 이해 가능하게 잘 설명하고 있어서 입니다. CNN이나 RNN 같은 개념을 이해하지 못한 상태에서 책을 보면 무슨 말인가 궁금할 수도 있지만 해당 개념을 이해하고 응용 예제를 보고 싶어하던 저한테는 도움이 많이 ..

인공지능 2025.03.28

[서평] 실용 Direct3D 11 렌더링 & 계산

이 책은 DirectX 11을 이용한 3D 게임 프로그래밍 입문 이나 DirectX 12를 이용한 3D 게임 프로그래밍 입문을 보았으면 그 뒤로 읽을 만한 책입니다. Direct3D 11로 예제가 만들어져 있으나 실제로 책의 중요 부분을 이해하는데 DirectX 11 관련해서 큰 이해를 필요로 하지는 않습니다. 물론 DirectX 11의 API 관련 부분을 깊이 있게 설명한 부분도 많습니다. 하지만 해당 부분은 DirectX 12에도 거의 같은 개념으로 그대로 사용되는 부분이 많아 DirectX 12 관련 기초 책에서 크게 설명하지 않는 API 부연 설명이라고 생각하고 보아도 좋을거 같습니다. 이런 관계로 DirectX 12를 공부하시는 분들도 보면 좋을거 같습니다.이 책이 볼만한 이유는 다른 Direc..

[서평] 3D 게임을 움직이는 수학과 물리

이 책은 제목과 같이 수학과 물리에 대한 내용을 다루고 있는 책인데 체계적으로 수학과 물리를 다룬다기 보다는 일본 게임에 사용되었을거 같은 수학과 물리에 대한 내용을 다루고 있습니다. 실제로 저자는 게임 관련 수업을 진행하는 강사이기도 합니다. 일본 책인데 국내에 소개된 미국쪽 책에는 없는 인상적인 부분이 많습니다. 텍스처 UV 애니메이션을 이용한 테크닉, 충돌 판정, 빌보드의 응용 등 봐두면 도움이 되는 테크닉이 많습니다.  이 책도 책의 설명만 볼 것이 아니라 예제 소스를 다운받아 분석하면서 보면 정말로 많은 것을 배울 수 있습니다. 일부 내용은 단시간에 완벽히 이해하기에는 좀 어렵게 느껴지는 부분도 있을 정도로 깊이도 어느 정도 있는 책입니다. 소스는 다이렉트X 11기반으로 짜여져 있어서 언리얼이나..

[서평] 데이터 중심 애플리케이션 설계

제목만 봐서는 개발자을 위한 책인 듯 싶습니다. 하지만 실제로 보면 어떻게 보면 DBA와 같은 데이터 관리자에게 더 적합한 책인거 같다는 생각도 듭니다. 책 내용은 초급보다는 여러 저장소에 대한 지식이 있는 중급을 위한 서적입니다. 서버 개발자, 백엔드 개발자, DBA와 같은 데이터 관리자가 보기에 적합합니다.  내용은 DBMS부터 DW 그리고 빅데이터 처리나 NoSQL까지 다양한 데이터 저장소의 알고리즘, 문제점 그리고 해결 방법이나 각 방법의 장담점이 주를 이룹니다. 다양한 문제 서술 중에 파티셔닝과 분산 처리 관련 문제에 대한 부분이 꽤나 읽을만 했습니다. 그 외에 저장소 외에도 스트리밍 등 저장과 관련된 다른 주제도 많이 설명되어 있습니다.    서버 개발자나 백엔드 개발자라면 처음 저장 부분을 ..

AI가 개발자를 대처할까?

ChatGPT가 나오고 ChatGPT가 보여준 가능성과 기능은 가히 충격적이었다. 개인적으로는 AI가 코딩을 하는 것은 짧은 인생살이에서 경험한 프로그래밍 관련된 것 중 어느 것보다도 인상깊은 것이었다. 이런 충격도 잠시 어느새 구글보다 ChatGPT에 먼저 물어보는 것이 일상이 되었다.경험을 하고 나니 ChatGPT가 나오고 사람들이 하는 이야기 AI가 개발자를 대처한다는 생각에 대하여 몇 가지 현시점의 식견이 생기기 시작했다. 이 문제에 대해서 살펴보려면 우선 AI의 코딩능력에 대해서 한번 살펴볼 필요가 있다. ChatGPT를 사용하면서 느끼는 점은 AI가 해주는 코딩은 처음 나왔을 때의 충격만큼 매년 충격적으로 발전하고 있는 거 같지는 않다. 편의성은 모르겠지만 전문성으로 바라보면 그렇다. 다음으로..

개발이야기 2025.01.21

오래 간만에 단어장 앱을 업데이트한 후에...

스스로 단어장(Self Vocabulary)를 오래 간만에 업데이트 하였습니다.참고로 이 앱은 슬프게도 너무 평범한 이름(?)이라서 플레이스토어에서 검색할 때 해당 이름이 아닌 gosae로 검색해야 합니다.gosae는 안드로이드 앱 관련 개발자 계정 이름입니다.이 앱은 처음에는 심플하게 제가 입력한 영어 단어를 관리하고 암기하는데 최적화된 앱을 만드는 것이 목적이었습니다. 이외에 그 때 공부하던 코틀린으로 안드로이드 앱을 만들어봐야겠다는 기술 실증 프로젝트이기도 했습니다.막상 만들고나니 그제서야 알게된 것이 영어 단어 앱이 정말로 많다는 것이었습니다. 물론 조금 복잡하거나 유료인 경우가 많아서 나름 개인적으로 사용하는 것은 만족하고 있습니다. 하지만 온갖 기업들이 만드는 그 많은 영어 단어 앱과 경쟁은 ..

위처 3(Witcher 3)를 클리어 한 후에...

너무 유명하지만 서양 RPG를 크게 즐기지 않는 관계로 사놓고 모셔만 두던 위처 3 GOTY 에디션을 플레이하였습니다. 참고로 GOTY 에디션은 원작에 2개의 확장팩인 하츠 오브 스톤(Hearts Of Stone)과 블러드 앤 와인(Blood and Wine)이 포함되어 있는 버전입니다. 덕분에 확장팩까지 하려면 플레이 시간이 일반 RPG에 비하여 굉장히 긴 편입니다. 클리어한 후의 느낌은 이 재미있는걸 왜 이제 했을까 였습니다. 플레이하니 왜 이 게임이 그토록 높은 평점을 받고 온갖 게임상을 다 받았는지 이해할 수 있었습니다. RPG를 좋아하는 사람이라면 특히 판타지 소설, 드라마 혹은 만화를 좋아하는 사람이라면 정말로 강력히 추쳔하고 싶은 작품이라고 느껴졌습니다.  이 게임은 전반적으로 오픈월드 RP..

기타 2024.12.15

자체 3D 엔진만들 때 도움이 될 만한 무료 강의

DirectX 12를 공부하고 각종 예제를 만들어도 보면서 라이브러리화 시키고 있었습니다. 그럴 때 좀 더 좋은 엔진같이 만들고 싶어서 관련 강의를 찾다가 괜찮은 강의를 발견하고 본 후에 추천하려고 합니다. 추천 강좌는 유튜브 무료 강좌이며 아래와 같습니다.Game Engine Series강좌는 해당 유튜브 채널의 재생목록에서 Game Engine Programming 을 클릭하고 처음부터 보면 됩니다. 개인 적으로 만들고 있는 것의 방향성을 고민할 때 에디터를 C#으로 만들거나 FBX 임포트 등을 고민하고 있었습니다. 그런데 해당 강좌는 제가 구상한 관련 내용을 다 포함하고 있어서 좋았습니다. 해당 강좌는 기본 C#, WPF를 이용하여 에디터를 만들고 C++, DirectX 12를 이용하여 게임 엔진을..

반응형