본문 바로가기

전체 글81

운선제 한복 종로점 예랑이의 찐 후기 + 꿀팁 본 글은 운선제 한복 종로점에 다녀온 예랑이의 내돈내산 찐후기 입니다. 지방 한복집에서 결국 운선제 한복으로식을 위해 하나, 둘 준비하다보니 양가 어머님께서 입으실 한복을 골라야 한다는 막중한 임무가 주어졌습니다. 임무를 듣자마자 제게 바로 먼저 들었던 생각은 한복 대여는 지방에서 하는게 어떠냐는 생각이었습니다. 왜냐면 저희는 서울에 살고 있기는 하지만 식은 지방에서 치루기 때문에, 한복을 서울에서 빌리면 예식 당일에 바쁜 와중에 일을 복잡하게 해야 했기 때문입니다. 이미 저희도 같은 이유로 스튜디오는 서울에서, 드레스나 메이크업은 지방에서 하기로 맘을 먹었더랩죠. 그럼에도 어머님들이 가장 곱고 우아하게 한복을 입으셨으면 하는 바람이 컸기 때문에, 생각과 마음을 열고 서울과 지방의 한복집들을 모두 알아보.. 2023. 4. 30.
공식문서로 iOS 개발 배우기 iOS 개발에 대해 관심이 생겨 팔로우업하기 적당한 문서를 찾아보다가 좋은 글을 발견했다. 일단 공식문서라는 점에서 믿을만 했고, 개발자들이 공식문서를 그렇게 참고해야한다던데 아직 한번도 본 경험이 없어 두마리토끼를 다 잡기 위해서 시작하게 되었다. 일단 notion 페이지로 되어있기에 언제... 사라질지 모르겠어서 그대로 옮기진 않고 내 방식대로 소화한 내용을 본 게시글에 올리려고 한다. 1. A Swift Tour (링크) 일단 C/C++/Python 정도만 조금 경험해본 비전공 개발자인지라, C#에 대한 이해 즉 당연하게 Swift의 코드들은 너무 낯설게 느껴졌기에, 이 스위프트 투어를 지나칠 수 없어 바로 시작했다. Swift Playground 베이스로 되어있어서 바로바로 코드를 고쳐보며 기본 .. 2022. 11. 11.
면접 시 대답을 잘하려면.. feat. 비전공자 C++ 기술면접 키워드 저는 꽤나 긴장을 많이 하는 터라, 갑작스런 질문을 통해 대답을 바로 꺼내야하는 면접같은 형태의 시험에서는 머리가 백지상태가 됩니다(사실 서면 시험에서도 똑같다..). 그렇기 때문에 항상 제 방식대로 이해하려고 노력하는데, 즉 머릿속 개념들과 최대한 연결시키며 청킹을 통하여 기억합니다. 작은 실마리라도 잡으면 거기로부터 개념을 확장하도록 말이죠. 그래서 이번 면접을 준비하면서도 적용했습니다. 실제 면접에서 긴장할 것이 분명하기 때문이죠. 긴장하는 건 당연하고, 버벅이며 말하는 것과는 별개로 진짜 이해했다고 어필할수 있는 대답을 할수 있었으면 했습니다. 해서 정답을 달달 외운다기 보다는 주요 키워들에 대해 저 만의 이해를 하고, 나만의 언어로 설명할 수 있는 개념으로 정리하려 노력했습다. 실제로 회사에서 .. 2022. 10. 4.
NVIDIA의 근접 이웃 탐색 알고리즘 (k-Nearset Neighbors) 본문 : Fast Fixed-Radius Nearset Neighbors: Interactive Million-particle Fluid 본문은 2013년 발표된 위 자료를 공부하며 작성한 글입니다. Background 저는 CFD(Computational Fluid Dynamics) 해석 프로그램을 만드는 일을 하고 있습니다. 그 중에서도 Lagrangian 기반의 프로그램을 개발하고 있습니다. Lagrangian이 뭔가 하시겠지만, 어떤 입자들이 임의로 떠돌아다닌다고 생각하시면 됩니다. 아래 예시들처럼 입자의 위치가 시뮬레이션의 기반이 되는 것이죠. 이런 입자를 해석하는 프로그램들의 성능을 좌지우지하는 것 중 하나가 바로 근접 이웃 탐색 알고리즘 입니다. 입자 주변에 어떤 입자가 있는지 찾는 알고리즘.. 2022. 6. 15.
OpenGL 한국어 꿀 강의 배달 기존에는 openGL을 배우려면 learnopengl 에서 배울 수 있긴하지만, 텍스트로 되어있을 뿐더러 영어이기 때문에 그닥 학습하기 좋지 않은 편이었습니다. 그런데 감사하게도 Rinthel Kwon 님께서 learnopengl 사이트의 내용을 중심으로 한국어로 강의를 하셨고 유튜브에 풀어 주셔서 허들이 좀 낮아졌습니다. 본 강의는 강원대학교 컴퓨터그래픽스 수업이라고 하네요. 뭔가 대학교 에서 정보를 찾기 어려운거 보니 교수님은 아니신 것 같고, 강사분이신지? 여튼 내용이 매우 좋습니다. 기본적으로 그래픽스 이론 강의는 OpenGL로 진행이 되고, 강의 환경 구성을 위해 GLFW, imgui로 윈도우와 UI를 생성해 강의가 진행됩니다. 강의 목록 01-01 컴퓨터그래픽스와 OpenGL 01-02 개발 .. 2022. 6. 15.
[번역] 렌더링 엔진 동작 원리 찍먹해보기-2 원문을 공부하며 번역/의역한 것입니다. 이 과정에서 오류가 있을 수 있습니다. 오류가 있을 시 알려주시면 다시 공부해서 고치도록 하겠습니다! Basic Shader Operation 가장 기본적인 OpenGL 연산은 Vertex position (attibutes)와 Model-World-View 공간(Uniform) 데이터를 필요로 한다. Vertex Shader는 Attribute 뎅이터를 Model-World-View 공간 데이터로 변환하고 Fragment Shader에 전달해 준다. 그리고 Fragment shader는 받아온 Fragment의 색을 채우는 역할을 한다. 여기까지는 이전 포스트에서 OpenGL의 파이프라인을 다루면서 이해한 바 있다. Manipulating 2D/3D Views w.. 2022. 4. 5.
[번역] 렌더링 엔진 동작 원리 찍먹해보기-1 원문을 공부하며 번역/의역한 것입니다. 이 과정에서 오류가 있을 수 있습니다. 오류가 있을 시 알려주시면 다시 공부해서 고치도록 하겠습니다! 렌더링 엔진을 개발하기 위해서는 OpenGL 과 GPU Shader가 어떻게 동작하는 지를 이해하고 있어야 한다. 본문에서는 이에 대해 간략하게 소개하려고 한다. GPU의 주요 데이터 타입을 살펴보고 셰이더에 대해 간단하게 설명하므로 어떻게 렌더링이 이뤄지는지 찍먹해보도록하자. GPU의 데이터 화면의 픽셀을 렌더링 하기 위해서는 GPU와 데이터 교환을 해야한다. 그 교환을 위해 거쳐가는 매개체가 되는 것이 바로 OpenGL이다. 프로그래밍 언어라기보다 API에 가깝고, CPU와 GPU사이의 데이터를 교환해주는 목적을 지닌다. 즉, 그래픽 개발자라고 한다면 데이터를 .. 2022. 4. 5.
[감 익혀보기] Singleton Design Pattern with C++ 원문 싱글톤 패턴은 한 가지 클래스에 대해 한 가지 인스턴스만 보장하는 방법이다. 즉, 클래스를 전역변수와 비슷한 느낌으로 사용할 수 있다. 그러면 바로 의문이 드는 것이, 어떻게 한번 이상의 인스턴스화를 막을 수 있냐는 것이다! 한번 배워보도록 하자. MyObject *myObject = new MyObject(); 일반적인 클래스의 경우 위와 같이 새로운 인스턴스를 생성할 수 있다. Public 클래스라면 원하는 만큼 인스턴스를 만들수 있다. 그런데 만약 Public이 선언되지 않은 함수라면 어떨까? 아래와 같이 생성자가 protected로 되어 있으면 말이다. class SingletonPattern{ private: protected: SingletonPattern(); public: } 이런 상.. 2022. 4. 1.
[감 익혀보기] Strategy Design Pattern with C++ 본문을 공부하며 정리한 내용입니다. 프로그래밍을 하다보면 변경은 꼭 일어나기 때문에 항상 대비를 해둬야한다. 너무 딱딱하게 작성하면 안되고 유연해야한다. 그러기 위해 디자인 패턴을 사용하는 것이고, 디자인 패턴은 프로그램을 유연하고 독립적이고 유지관리가 편하고 사용성 높도록 도와준다. 그 중 Strategy 패턴은 계속 달라지는 행위를 정의할 때 클래스를 수정하지 않아도 되게끔 해준다. 몇 가지 원칙을 보면서 본 디자인 패턴을 익혀보자 Principle 1. 변하는 것은 항상 캡슐화 하자! 항상 클래스가 어떻게 행동(behavior)하는지를 살피고, 찾았다면 이를 캡슐화 해야한다. 예를 들어서 오리 클래스를 생각해보자면 울음과 비행이 행동(behavior)이 되겠다: class Duck{ void qua.. 2022. 3. 31.
게임엔진에 사용되는 디자인 패턴(Harold Serano) 원문: Design Patterns in Game Engine Development 이제 막 프로그래밍 언어들의 구문/문법을 알게 된 것이 프로그래머가 되었다는 말은 아니다. 아니라고 하고 싶지만 트루다. 진짜 프로그래머가되려면 데이터구조, 알고리즘, 그리고 디자인 패턴에 대한 지식이 필요하다. 문법을 아는 것은 알파벳 아는 정도이다. 누구든지 일주일이면 프로르램의 구문이나 문법을 배울 수 있지만, 모듈화 되어있고 유연하고 유지관리한 프로그램을 개발하는 것은 불가능하다. 이게 독자분의 동기를 오히려 감쇠시킨 것 같지만, 디자인패턴을 배워서 훌륭한 개발자가 되어 봅시다! 제일 많이 사용되는 디자인 패턴은 아래와 같습니다. Singleton Design Pattern: 프로그램이 시작될 때 클래스가 최초 한.. 2022. 3. 28.
물리엔진 개발 로드맵(Harrold Serrano) Harrold Serrano 는 Untold Engine이라는 인디 게임엔진을 개발하였다. 그가 물리엔진을 개발하는 방법에 대해 공유하고 있어 이를 번역하려 한다. 어떻게 게임엔진 개발자가 되는가? Step 1: 선형대수학을 배우자! 선형대수학을 먼저 배우자. 벡터나 행렬 계산을 자유롭게 할 수 있도록 익혀두자. 예를들면 내적, 외적, 회전행렬이 있다. Step 2: 프로그래밍 언어를 배우자 (C++) 다음으로는 프로그래밍을 할 수 있어야 한다. 일단 추천하는 언어는 C++이다. 전문가가 될 필요는 없으나, 꼭 알아야할 개념이 있다: classes, methods, inheritance, polymorphism and encapsulation. Step 3: 이제 수학 엔진을 만들자 이전에 익힌 벡터와 .. 2022. 3. 27.
[Julia] 기본2 - 2. 코드 최적화하는 법 링크의 내용을 공부하며 제멋대로 번역한 내용입니다. 줄리아 언어를 최적화 시키는 방법 ◆ TYPES AND TYPE STABILITY 타입과 타입안정성(?) 구조체를 만들때 타입을 정의를 명확히 하는 것이 속도가 빠르다. 구조체 요소의 타입을 정의하는 3가지 방법을 비교해 볼 것이며, 아래와 같다. mutable struct Cube length width height end volume(c::Cube) = c.length * c.width * c.height mutable struct Cube_typed length::Float64 width::Float64 height::Float64 end volume(c::Cube_typed) = c.length * c.width * c.height mutable.. 2021. 10. 29.