분류 전체보기 489

WGSL 기본

Shader의 Lifetime Shader Creation const-expressions에 대한 값을 확정 리터럴 @const 함수 const 선언 값 Pipeline Creation override-expressions 대한 값을 확정 Shader Execution runtime-expressions에 대한 값을 확정 let 선언 값 함수 호출 변수 참조, 포인터 가변 내용 WGSL 함수 문법 Rust와 문법과 사용방법이 동일하다. fn negate(v: vec3f) -> vec3f { return -v; } EntryPoints @vertex, @fragment, @comute 어노테이션이 붙은 함수는 Shader Entrypoint다. @must_use @must_use 어노테이션이 붙은 함수는 ..

[wgpu] 파이프라인 (Pipeline)

Pipeline Pipeline은 OpenGL로치면 Shader의 강력한 버전이라고 보면 된다. Pipeline은 데이터 세트에 대해 작업을 수행할때 GPU가 해야할 모든 일을 설명한다. *Shader는 GPU가 데이터에 대해 어떤 동작을 수행할지 알려주는 작은 프로그램이다. Shader의 종류 Vertex Fragment Compute Vertex Vertex는 3D혹은 2D 공간에서의 한 점이다. 2개로 선을, 3개로 삼각형을 만들 수 있다. Vertex를 조작하여 모양을 이룬다. Fragment Vertex가 모여서 Fragment를 형성한다. Fragment는 각각의 픽셀들이 어떤 색상으로 그려질지를 정의한다. WGSL WebGPU Shading Language의 약자로, WebGPU를 위한 Sh..

Android Studio Custom Shortcuts

Tool Windows Logcat: Cmd + 8 App Inspection: Cmd + 4 Window > Editor Tabs 오른쪽으로 창 나누기(Split and Move Right): Option + Cmd + 방향키(우) 하단으로 창 나누기(Split and Move Down): Option + Cmd + 방향키(하) 다음 창으로 이동(Goto Next Splitter): Option + Cmd + ] 이전 창으로 이동(Goto Previous Splitter): Option + Cmd + [ 창 합치기(Unsplit All): Option + Cmd + U 현재 탕의 다른 탭 닫기(Close Other Tabs): Option + Cmd + W

Javadoc 알고 쓰기

Java 수업때 가장 등한시했던 부분이 바로 Javadoc이었는데 이제 정말 필요한 상황이 왔다. 코드를 작성하는 시간보다 코드를 다시 보고, 다른사람에게 설명하는데 쓰는시간이 배로 많다. 잘 작성된 Javadoc은 이런 비효율적인 일을 줄여줄 수 있다. 기계인간 Johngrib님의 포스팅과 javadoc 문서를 참고했다. 예시 코드는 Android Source Code다. 작성 원칙 코드의 역할을 3초안에 파악할 수 있도록하는 것이 목적이다. 가독성이 중요하다. 세부 구현은 언제든지 바뀔 수 있으므로 구현에 대한 내용은 적지 않는다. 루프를 돌아서 반환한다던가 하는 설명 @deprecated /** * Main Sidecar interface definition that will be used by t..

본질을 이해하기

본질을 이해하는 것은 어렵다. 어려운 이유는 분명하다. 그건 눈에 보이지도 않고, 들리지도 않으며 어떠한 감각으로도 느껴지지 않는다. 어쩌다 기획 회의에 한 번 낀 적이있다. 제품에서 전하고자하는 메세지를 어떻게 전달할 수 있을까 생각하다보니 단어 자체에 매몰되고 있는 나를 발견했다. 고등학생부터 여러 다양한 공모전에 참가하면서도 늘 겪는 현상이다. 늘 나오는 아이디어는 공모전의 주제를 말장난으로 풀어낸 것이다. 예를 들어 "힐링캠프"를 주제로 어떤 이벤트를 할지 정하라는 미션이 떨어지면 생각하는게 "달링과 함께하는 힐링캠프" 이런 식이다. 뻔하다! (뻔하다도 짝꿍이 있다. Fun하다) "힐링캠프...힐링캠프..." 단어에 갇혀서 생각하다보니 중심은 글자라는 도구에 가 있고 "왜" 힐링캠프라는 주제가 잡..

[Hilt] Custom Component의 활용 - 지역별 DB 생성하기

Hilt의 Component와 Scope Hilt에서는 안드로이드 앱의 다양한 생명주기에 맞는 미리 정의된 컴포넌트 들을 제공한다. 컴포넌트 위의 어노테이션은 해당 컴포넌트의 수명에 대한 바인딩 범위를 지정한다. 이렇게 어노테이션을 붙이면 해당 컴포넌트와 오브젝트는 생명주기를 같이하게 된다. 바인딩은 Scoped와 Unscoped 두 가지 유형으로 나누어지는데, 기본적으로는 Unscoped 바인딩이다. Unscoped: 해당 바인딩이 요청될 때마다 새로운 인스턴스가 생성됨 Scoped: 범위가 지정된 컴포넌트의 인스턴스 당 한 번만 생성되며, 해당 바인딩에 대한 모든 요청은 동일한 인스턴스를 공유함 @Module @InstallIn(FragmentComponent::class) object FooModu..

[Jetpack Compose] @Immutable과 @Stable이란

Stable과 Unstable Recomposition이 일어날때, Compose는 Stable과 Unstable로 유형을 구분한다. - Stable: 불변하는 것(Immutable), 혹은 Recomposition간에 값이 변경되었는지 여부를 추적할 수 있는 경우. - Unstable: Recomposition간에 값이 변경되었는지 알 수 없는 경우. 만약에 어떤 타입이 Stable하다면 Skip할 수 있지만 Unstable하다면 다시 그려야하므로, Stable과 Unstable하다는 것은 Compose에게 아주 중요하고 이것은 결국 성능에까지도 영향을 미치게 된다. 따라서 가능한한 클래스를 Immtable하게 만든다면 성능에 조금이나마 도움이 될 것이다. @Immutable @Immutable은 컴포..

[Python] SlackBot 쉽게 만들기

오늘 소개할 것은 Slack Bolt다. Slack Bolt 이전에는 슬랙봇을 만들기 위해 Redirect URL을 App에 정의 해주어야 했고, 그렇기 때문에 도메인도 필요하고 LocalHost에서 돌릴려면 ngrok 같은 서비스도 부가적으로 이용해야 했다. 웹 애플리케이션을 만들어야 했던건 덤이다 ㅎ... 하지만 이 모든것은 Bolt선에서 모두 정리된다! 두-둥 시작하기 슬랙 앱 만들기 봇 토큰 Scope 요청해서 토큰 발급받기 위 2가지 과정이 선행되어야 함은 기존과 변함없다. 하지만 Socket Mode를 켜줘야하는 추가 설정이 필요하다. Socket Mode는 우리의 봇이 HTTP 엔드포인트를 노출하지 않고도 작동할 수 있게 해준다. 설령 봇이 방화벽 뒤에있더라도 말이다. Socket Mode를..

Devfest GDG Songdo 2023 후기

올해의 마지막 행사라고 생각하고 신청한 GDG Songdo 2023이다. 송도라 좀 멀긴하지만 발표 주제도 다양하고 알차보여서 신청했다. 난 도전적인 문제를 해결하고 싶은데, 안드로이드 개발을 하면서 화면만 뽑아대니 회의감이 들었던 시절도 있었다. 화면빼고 정말 문제들만 남는 DevOps나 백엔드로 일하고 싶었다. 하지만 최근에 문득 생각이 든게... "잘하는 걸 즐기지 못한다는 건 인생을 하드모드로 살아가는 것"이라는 생각이 들었다. 정말 길을 걷다가 뿅-하고 떠올랐다. 잘하는 걸 더 잘해서 잘하는 자체로 재미있게 즐겨도 좋지않을까? 그래서 이번 발표는 안드로이드/KMP 관련 발표만 있는 gradle clean방에서 썩어보았다. 모두 양질의 발표로 정말 유용하게 잘 들었지만, 코드샘플이 있었던 몇 가지..

나/이슈 2023.12.10

방예담 <하나만 해(Only One)>에 숨은 저스틴 비버의 노래들

저스틴 비버의 팬이자 코리안 저스틴 비버인 방예담의 노래를 듣다 깜짝 놀랐다! 가사에 저스틴 비버의 노래가 마치 팬송처럼 섞여나오고 있었기때문이다 ㅋㅋㅋ 빌리버는 빌리버를 알아보는 법... 오랜만에 저스틴 비버 노래를 정주행 할 겸, 방예담의 에 숨은 저스틴 비버 노래들을 알아보도록 하겠다. (주관적 억지 있음) Baby just believe in yourself 자꾸 널 속이려 해 다른 누구보다 멋진 남자가 돼주고픈 맘을 왜 그렇게 멋대로 흔들어 놓고선 baby "believe" Justin Bieber - Believe 앨범의 수록곡 Believe다. 저스틴 비버의 팬송이라고 보면 된다. 난 이 노래를 그렇게 자주 듣진않지만 Believe 앨범, 특히 Acoustic 버전은 아주 명반이다. 얼마나 ..

나/이슈 2023.12.03