반응형

전체보기 250

[FP] 함수형/선언형에 대한 고찰

프롤로그요즘 AI Transformation으로 IT 사업이 새로운 국면으로 넘어가는 것 같다. 그래서 최근에 이와 관련된 글도 작성했었다. 그런데 이번에는 함수형과 선언형에 대해서 얘기해보고 싶다. 이는 오래된 주제이기도 하고, 필자가 2016년부터 깊게 파고 있는 주제이다. 필자가 짠 코드가 의도된 대로만 동작하도록 제어하고 싶은 맘에서 학부 시절부터 디자인 패턴과 소프트웨어 공학에 심취했던 나였다. 그런 필자에게 새롭게 다가왔던 개념은 함수형이었다. 함수형은 내가 작성한 코드가 내가 의도한 대로 코드가 동작하도록 하는 강력한 무기가 되었다. 발생할 수 있는 예외 케이스 또한 내가 정의한 에러 코드를 통해서 예측 가능한 범주 내로 가이드해주었다. 진정한 함수형/선언형 코드를 작성했다면, 심지어 코드 ..

[Architecture] 미디어 플레이어의 구조에 대한 고찰

Background처리해야 할 데이터가 많은 경우에는 멀티 코어 프로세서의 환경을 적극 활용하여, 최대한 가용한 리소스를 극한까지 사용해야 할 필요가 있다. 미디어 처리를 최대한 빠르게 처리하여 사용자에게 seemless 한 사용자 경험을 제공하는 것이다. 이를 위해서 여러 가지의 방법이 동원되게 된다. 그리고 소프트웨어 구조에 대해서 얘기하자면, 소프트웨어 구조는 확장성이 가능하도록 구현되어야 한다. 기본적으로 응집도를 높이고 결합도를 낮추라는 말을 많이 들었을 것이다. 예전부터 나는 이에 대해 어마무시하게 집중을 했다. 그리고 실제로 많이 중요하다. 실제로 회사에서 소속되어 개발을 하다 보면, 이를 무시하고 거대한 코드 뭉치를 만들어서 손도 못 대도록 구현할 때가 있다. 그리고 본인이 만든 코드 뭉치..

Engineering/OS 2025.11.17

[iOS] 센서 이야기 - 자이로스코프

Background스마트폰에는 여러 가지의 센서들이 들어가 있다. 자기력계, 가속도계, 자이로스코프, 기압계, 고도계, 위치센서(GPS, Glonass, Galileo, Beidou), 조도센서, 근접센서 등이 대표적이다. 모든 센서들은 자기들의 영역이 있다. 자기력계는 자기장 측정, 가속도계는 가속력 측정, 자이로스코프는 기울기, 기압/고도/조도/근접 등등 모두 현실 세계의 물리량을 수치로 환산하여 OS에 제공하는 역할을 한다. 이번에는 그중에서도 자이로스코프와 가속도계의 협업에 대해서 얘기해보려고 한다. Gyroscope누구냐, 넌?아래는 일반적으로 우리가 보는 자이로스코프의 이미지이다. 원래의 자이로스코프는 중심에 횡방향으로 고속 회전하는 회전판이 있다. 정확한 원리의 이름이 이제는 기억나지 않으나..

[iOS] AVFoundation Foundation

PrologAsset과 Track의 이해asset은 하나 혹은 다수의 track으로 이루어져있다. track은 비디오 프레임, 오디오, 자막 등으로 재생에 이용되는 개별 컨텐츠를 의미한다. 이러한 컨텐츠들이 asset이라는 컨테이너에 담긴다. 플레이어는 asset이라는 컨테이너를 읽어와서, 각 track을 적절한 시간에 표시하여 재생한다. AVAsset과 AVPlayerItem의 이해AVAsset은 미디어를 담은 컨테이너인 asset의 데이터를 읽어오고 편집 등을 하기 위한 용도로 사용한다. 편집된거나 합성한 데이터를 읽거나 쓰기 위해서 사용되는 미디어 파일 그 자체라고 생각하면 된다. AVPlayerItem은 AVAsset을 재생하기 위해 사용하는 데이터 모델로서, 플레이어에서 재생에 관한 모든 제어..

[iOS] Core Video Foundation

Prolog레퍼런스 클래스 - 해당 타입의 기반이 되는 클래스로 동일한 기능의 사용을 위해서 상속 받아야하는 클래스인터페이스 (or 프로토콜) - 메소드의 Function Type을 선언하여 하위 구현체들의 용도/행위를 정의하기 위한 추상클래스 About Video비디오에 대한 이해비디오는 기본적으로 정지 이미지(Frame) 가 시간 축을 따라 연속적으로 표시하면서 움직임을 인식하게 만드는 시각적 매체입니다. 하나의 비디오는 수많은 이미지 프레임으로 구성되며, 이 프레임들은 일정한 속도(프레임 레이트, fps)로 표시됩니다. 예를 들어 1초당 30장의 이미지를 순차적으로 보여주는 영상을 30fps라고 합니다. 이때 각 이미지(Frame)는 약 33.3ms 간격으로 화면에 표시되며, 인간의 시각은 이 빠른..

[iOS] Accelerate computing with Metal

BackgroundCreateML/CoreML이 나오면서 Apple 플랫폼에서 ML model과 관련된 학습과 이용이 가능해졌다. 이러한 ML 관련 API의 등장과 함께 내가 관심을 가지기 시작한 것이 있었으니..... Metal Perfomance Shader (이하, 'MPS')이다. MPS는 ML의 백엔드에서 이산형 부동소수점 데이터의 병렬 연산을 위해서 사용된다고 한다. 만약에.... 우리가 데이터의 연산 처리를 하는데, 고도의 연산 처리가 아니면서 각 데이터의 값이 서로 연관이 없을 때는 GPU의 병렬 연산 처리를 사용한다면 속도와 성능 개선에 큰 기여를 할 수 있을 것이다. 2016년부터 함수형 프로그래밍을 공부하면서, 극한의 병렬/비동기 연산에 대해서 어떻게 활용하고 적용할지에 대해서 고민을..

[AI] LLM : AI Literacy에 대한 고찰

Background위키피디아에 AI Literacy (이하, 'AI 리터러시')를 찾아보았다. "개인이 AI 기술을 비판적으로 평가하고 AI와 효과적으로 커뮤니케이션 및 협업하며, 온라인, 가정 및 직장에서 AI를 도구로 사용할 수 있는 일련의 역량"이라고 정의한다. AI 리터러시는 2가지의 측면으로 구상이 가능할 것 같다. 첫째는 'AI의 작동 원리를 이해하고 본인이 원하는 답변을 이끌어 내도록 환경을 구축하고 활용할 수 있는가?'이고, 둘째는 'AI가 처리한 결과물에 대해서 무조건적인 믿음이 아닌 비판적 사고로 받아들이고, 이를 평가 및 판단할 수 있는가'이다. 우리는 이제는 더 이상 괄시할 수 없는 AI에 대해서 보다 활용을 잘하기 위해서, 'AI 리터러시'라는 과제에 대해서 좀 더 고민하고 공부를..

Engineering/Issue 2025.10.20

[iOS] SwiftUI : View update에 대한 고찰

BackgroundSwiftUI는 선언형 기반으로 구현하도록 설계되어 있다. 이 선언형의 관점을 이해하기 위해서는 함수형 프로그래밍에 대한 깊이있는 이해가 필요하다. Immutable type을 왜 쓰는지, Value type을 왜 사용하는지, 순수함수를 왜 쓰고 어떻게 비지니스 로직을 구현해야 하는지 등이다. 그리고 SwiftUI의 동작 체계에 대한 이해도 필요하다. View의 업데이트는 어떻게 이루어지는지, 이에 대한 최적화 작업은 어떻게 해야 하는지 등이다. SwiftUI를 가볍게만 사용하던지라 이에 대한 이해가 부족했고, 그러기에 이에 대해서 정리하려고 합니다. SwiftUI가 iOS 13부터 지원했지만, 최근까지 버그도 많고 아직 기술 자체가 덜 성숙했던지라 어떤 변화가 생겼는지 정도만 관심을 ..

반응형