전체 글 243

Compose + AGSL 셰이더를 이용해서 간지나는 카드 애니메이션 만들기

어디선가 카드를 휘리릭 돌리면 카드가 돌아가면서 번쩍거리는 멋진 인터렉션을 본 적이 있는거 같다.셰이더나 애니메이션에 관심이 많아진 요즘 뭐라도 해보고 싶어서 뚝딱 해봤다. 일단 최종결과물부터 봐보자.꽤 멋져.  자자 액티비티부터 만들어준다.class MainActivity : ComponentActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        enableEdgeToEdge()        setContent {            MetalCardFilpTheme {                Scaffold(modifier = Modifier...

입사 근황

이제 입사하고 슬슬 3주쯤 접어들고 있다. 일단 가장 다행인건 동료들이 다들 참 좋은 사람같다.일은 딱딱 열심히하고 워라밸도 챙기는 멋쟁이들. 스타트업만 다니다가 규모가 조금 있는 회사를 다니게 됐는데확실히 "진짜" 회사같다 라는 느낌은 들지만 엄청 다르게 느낀다거나그런건 없다. 건물전체를 사옥으로 쓰거나 사내 카페가 있는건 좀 좋긴하다 ㅎㅎ 이런 저런 이유로 인해서 생각보다 일에 빨리 투입됐는데 솔직히 코드만 계속 분석하는게지겹긴 했어서 오히려 의욕이 생겼다. 시간도 더 잘가고이해도 더 빠르게 되고 있다. 그리고 마침내 첫 pr 도 통과해서 머지도 해보고(짝짝)열심히 적응하고 있다. 입사하고 나서 그 전에 이력서를 넣었다거나 했던 기업들이 꽤 많이 붙었는데다 전형 포기를 하기로 결정했다.이미 마음을 굳..

잡담 2024.10.12

안드로이드의 암호화

안드로이드 개발을 하다보면 암호화에 대한 이야기가 종종 나온다. 민감한 정보를 사용하지 않는 앱이라면 굳이 할 필요가 없을 수 있지만 개인정보나 중요한 key 를 다뤄야할 일이 생기는데이것들이 악의를 가진 사람들에 의해 외부로 노출되면 심각한 문제가 될 수 있다. 하지만 개발자들은 바보가 아니지.시도할 수 있는 방법들이 이미 여럿 만들어져 있는데 대표적인 것들을 알아보고 필요할때 적용해보도록 하자. 암호화의 기본적인 개념암호화에 대해서 설명하기전 아래 개념을 알면 좀 더 이해가 편하다. 평문(Plaintext) : 해독 가능한 형태의 메시지(암호화전 메시지)암호문(Cipertext) : 해독 불가능한 형태의 메시지(암호화된 메시지)암호화(Encryption) : 평문을 암호문으로 변환하는 과정복호화(De..

Android 2024.10.12

결국 다 좋은 방향으로 가게 될 것

이런 저런 많은 일들을 겪으면서최근에 드는 생각은 그 당시에는 그 일이 너무 힘들고 속상하고 원하는바를 가지지 못한다고 생각할지라도그건 그 시점의 상황인 것이지놓지 않고 끝까지 물고 늘어지면 결국엔 그 때의 결정들이미래의 최선의 결과를 만들어낸다. 원하는바를 이루지 못했음은 그것보다 더 값진 결과를 내게 주기위해그것이 잠시 물러난 것이고, 나의 부족함으로 인해 놓친 결과들은현재 내게 더 어울리는것을 주기 위해 나중을 기약한 것이다. 라는 생각을 했다. 불안함은 불확실함에서 나온다.그 불확실함은 인간인 이상 누구나 마주 볼 수 밖에 없고그걸 위해 할 수 있는 방법은다 포기하고 내려놓거나포기하지 않고 조금씩이라도 해내거나둘 중 하나고 선택은 개인의 몫이다.포기하지 않기로 결정했다면 결국 성취해낼 것이다. 누..

잡담 2024.09.09

안드로이드 compose 비트맵으로 캡쳐하기

를 만들려고 하루종일 삽질을 했다...결국 만드는건 포기했는데관련해서 괜찮은 라이브러리를 찾아서 소개한다.https://github.com/PatilShreyas/Capturable GitHub - PatilShreyas/Capturable: 🚀Jetpack Compose utility library for capturing Composable content and transforming it into🚀Jetpack Compose utility library for capturing Composable content and transforming it into Bitmap Image🖼️ - PatilShreyas/Capturablegithub.com어떻게 만들었다 들여다봐야지 ㅠㅠ..

사실 내 로망중엔 OpenGL 도 있었어

카메라 관련 기술에 꾸준히 흥미가 있었는데필터쪽으로 찾아보게 되면 항상 나오는 단어중 openGl 이라는게 있다.openCV는 예전에 졸업 작품 만들때 써봤던 기억은 있는데 openGL 은 대충 그래픽 처리를 하는뭐시기구나 하고만 있었다. 행렬도 나오고 좌표 , 카메라 이것저것 관련 지식들이 많이 필요하다보니딥하게 알아보려고 하지 않았던거 같다. 마침 카메라 기능을 가진 클린아키텍쳐 샘플앱도 만들고 있겠다. 이번에 그냥 openGL 도여기다가 써볼까한다. 직접 만들면서 개념도 정리해보자. OpenGL의 기본 개념OpenGL은 정점(Vertex)과 프래그먼트(Fragment)라는 기본 단위로 그래픽 데이터를 처리한다.정점(Vertex): 화면에 그려질 점의 위치 데이터를 의미한다. OpenGL은 2D 또는..

Android 2024.08.31

일하고 싶다.

누구는백수가 된게 부럽다.이렇게 된김에 준비도 하면서 여유를 좀 가져.라고 하는데 나는 그게 어렵다. 일을 하면서 활력을 얻는 사람이고 거기서 큰 보람을 느끼는데그러지 못하고 공부만하고 있으니 이래도 되는걸까 싶다. 그래도 이 시간동안연습해보고 싶었던 기술들도 프로젝트로 만들어보고라이브러리도 하나 배포해보고알고리즘 공부도 꾸준히 해보고면접도 봐보고 하면서스스로에 대해 돌아보기도 하고 공부도 많이 됐다. 취직시장이 많이 어렵다고들한다인원감축이나 회사가 망하면서 나와있는 경력 개발자들도 많은거 같고TO 자체도 줄어들고이 현상이 계속 지속되면서 점점 쌓이는중이란다.그러면서 자연스럽게 신입 개발자를 지원하는 분들도 많이 힘들어하는거 같다. 얼른 다시 일을 할 수 있었으면 좋겠다.그리고 나와 같은 상황이 다른 분..

잡담 2024.08.29

프로그래머스 - 인사고과

https://school.programmers.co.kr/learn/courses/30/lessons/152995?language=kotlin 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 완호의 점수만 생각하고 필터링을 했는데문제를 잘 읽어보면 임의의 직원도 다른 직원에 비해 두 점수가 모두 낮으면 인센티브에서 제외된다는걸먼저 처리해줘야했다. 이를 위해서는 모든 직원들을 다 체크해볼 필요가 있었는데 2중 for 문은 절대로 쓰기 싫었기에 고민을 하다가정렬을 하기로 했다.하나를 기준으로 정렬을 해두면 두 점수 모두 확인할 필요 없이나머지 점수만 비..

알고리즘 2024.08.28

프로그래머스 - 연속 펄스 부분 수열의 합

https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 솔직히 문제 자체가 복잡했다고 생각하진 않는다그냥 내가 풀이법을 못떠올렸을뿐.. 처음에는 부분 수열을 죄다 만들어서 처리해볼려고 했다.class Solution { fun solution(sequence: IntArray): Long { var answer: Long = -99999 var maxPulse1: Long = Long.MIN_VALUE var ..

알고리즘 2024.08.28

프로그래머스 - 모음사전

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에는 규칙이 보여서 수학적으로 접근해보려고 했는데 멍청해서 그런가 풀이가 안떠올랐다.그래서 주어지는 조건으로 추측했을때 경우의 수가 엄청 많지는 않겠다 싶어서무식하게 발생할 수 있는 경우의 수를 다 생성하는 함수를 만들고정렬한 뒤 indexOf 를 이용해서 순서를 찾아냈다. class Solution { fun solution(word: String): Int { var answ..

알고리즘 2024.08.28