전체 글

Never stop acting like the new one on the team
한달에 교양 책 한권

IT 개발자의 영어 필살기

오랜만에 읽은 책 회사 책장에서 영어라는 단어가 보여서 호기심에 읽어봤다.(유난한 도전 읽어보고 싶었는데 없었던건 안비밀) 어느새 한달에 교양 책 한권이 아니라 두달에 책 한권 도전이 되어 버렸다 핳 240 페이지가 되지 않아서 읽기에 부담스럽지 않은 수준이다. 개발 문서, PR, 뉴스, 이메일 등의 구체적인 사례를 들며 좀더 개발자와 관련 있는 영어 학습법을 제공해주는데, 후반부에는 테크닉적 요소들이 들어 있다. 개인적인 경험으로는 흥미롭게 읽혀지진 않았다. 부록에 자주 쓰이는 영어 단어와 예시 문장을 제공하는데 중복되는 것들이 굉장히 많아서 아쉬웠지만, IT 에서 사용하는 전문 용어들이 조금은 도움이 되었다. 친해지고 싶다, 영어야!

Daily & Thinking

Cryptography 관련 초간단 정리

대칭 키 암호(Symmetric key encrption) * 암호화 복호화에 같은 키를 사용 * 피어간 통신을 한다면 보내는쪽 받는 쪽 같은 키를 미리 공유하고 있어야 함 (키 노출에 매우 취약함) * 대표적인 방식 AES, DES 류 가 있다 비대칭 키 암호(Asymmetric key encryption) 혹은 공개 키 암호 방식( public-key cryptography) 이라고 부르기도 한다. * Public key, Private Key 두 개의 키를 가짐 * 평문 -> 전문(암호문) 암호화 할 때는 Public key 를 사용 / 전문(암호문) -> 평문 으로 복호화시에 Private Key 를 사용 * 대칭 키와는 다르게 피어간의 키 공유를 미리 하지 않아도 됨 즉 A -> B 에게 전문을..

Daily & Thinking

SOPT 앱잼 데모데이에 다녀왔다

SOPT 앱잼 데모데이에는 총 2번 참석하였는데, 별볼일 없는 나에게 멘토라는 역할이 주어졌고 역시나 매우 즐거웠다. 예전에 대학다닐 때는 YAPP 이라는 동아리에서 해커톤을 몇번 나갔던 것 같은데, 예전 생각이 많이 났다. 그 시절(Latte is horse)에는 이미지 뷰에 간단한 애니메이션이나 뷰타입 나눠서 리싸이클러뷰가 앱에서 실제로 보여지면 굉장히 좋아했던 기억이 나는데, 요즘 학생분들은 이전 학창시절때보다 훨씬 잘한다고 느껴져서 그런지 자극도 받고, 학생분들의 열정도 느낄 수 있었다. (다른 멘토분들 말도 잘하시고, 너무 짱짱하셔서 수그리고 있었음ㅋㅋㅋ) 1년 전에 참석 했을 때, 학생이던 분이 오늘 인사했을 때는 취업한 경우도 있었고, 다들 잘 성장하고 있어서 나만 잘하면 되겠거니 싶었다 ㅎ..

Android/Development Tips

Summary MVI 직접 작성 해야/하지 않아야 하는 이유

https://www.youtube.com/watch?v=E6obYmkkdko 를 정리만 해둔 글 입니다. 주요 컨셉 단방향 데이터 흐름 (unidirectional cycle of data) 논블록킹(non blocking) 불변상태(immutable state) 모델(Model)에서 유저(User)의 인텐트(Intent =의도)를 처리하는 시간이 오래걸릴 수 있기 때문에, 데이터 사이클(cycle of data) 을 논블럭(non-blocking) 하는 것이 매우 중요 합니다 상태(state)의 무결성을 보장하는 것이 모델이 하는 일 외부에 의해 상태가 변화 되지 않습니다(immtable) 내부에서는 상태가 변화합니다 인텐트는 네트워크 작업과 같은 비즈니스 작업을 수행하는 변환기(transformer..

Android/Development Tips

확대, 축소, 이동, 회전 가능한 컴포즈 뷰

예시 영상은 티스토리 버그로 동영상 첨부가 안되어, 파일로 첨부합니다. @Composable fun ZoomableBox( modifier: Modifier = Modifier, enableRotation: Boolean = false, minScale: Float = 0.5f, maxScale: Float = 3f, content: @Composable ZoomableBoxScope.() -> Unit ) { var rotationZ by remember { mutableStateOf(0f) } var scale by remember { mutableStateOf(1f) } var offsetX by remember { mutableStateOf(0f) } var offsetY by remember {..

Android/Development Tips

간단 Tips. FrameLayout 위에 Fragment 를 올리는 것보다 FragmentContainerView 에 Fragment 를 올리는 것이 안전한 이유

FrameLayout 위에 Fragment 를 올려둔다면 Fragment 를 잘못 사용하거나, 구성요소 변경(Configuration change) 로 복원되는 경우 아래와 같은 에러를 만날 수 있습니다. 에러는 간단 합니다 상태를 저장하는 onSaveInstanceState 콜백 이후에 Commit 하려 했으니 상태를 저장할 수 있는 단계가 넘어간 상태이기에 불가능 한 상태라는 의미 입니다. 결국 FrameLayout 위에 Fragment 를 올려두게 되면, 상태에 대해 잘 다뤄줘야 합니다. 상태 저장 상관 없이 사용하고 싶다면 commit 이 아닌, commitAllowingStateLoss 메서드를 명시적으로 호출해줘야 합니다. 기본적으로 FragmentContainerView 는 FrameLayo..

Android/Development Tips

간단 Tips. Lottie 에서 Url 을 통해 로드할 때, Unable to parse composition 에러가 발생한다면 ?

결론만 이야기 드리면 LottieAnimationView 클래스에서 제공하는 setFailureListener 를 구현하면 됩니다. Url 을 통해 Lottie 를 이용할 경우, setAnimationFromUrl 를 사용하게 되는데 코드를 차근차근 보면 CacheComposition (캐시 허용) 이 true 라면 앞의 메서드가 호출되어 cacheKey 에 "url_" prefix 가 붙은 cacheKey 가 넘어가고 아니라면 cacheKey 에는 null 이 들어가게 되고 결과를 LottieTast 자료형의 task 에 담고 있습니다. 그리고 실패하는 경우에는 wrappedFailureListener 콜백 함수를 통해 결과를 넘겨 주고 있습니다. 실패했을 때 보여줄 이미지(fallbackResourc..

Android/Development Tips

간단 Tips. 코루틴 SupervisorJob 또는 SupervisorScope 를 사용해야 하는 경우

아래의 함수는 OneShot 으로 어떤 데이터를 가져올 때 많이 구현하게 되는 코드모양새 입니다. 그리고 aUseCase 에서 어떤 에러가 발생하면 runCatching 에 Catch 되어 최종적으로 onFailure 메서드가 호출 됩니다. fun fetchData() { viewModelScope.launch { runCatching { withContext(Dispatchers.XX) { aUseCase() } }.onSuccess { aResult -> }.onFailure { } } } 하지만 이따금식 여러개의 데이터를 가져와야하는 경우가 있습니다. fun fetchData() { viewModelScope.launch { runCatching { listOf(async { aUseCase() }..

Android/Development Tips

간단 Tips. Lottie 가 Android, iOS, Web, Window 등 에서 다르게 보인다면?

https://lottiefiles.com/supported-features Lottie Supported Features Lottie does not support all features of Adobe After Effects; please refer to the list below for details. lottiefiles.com 에서 각각 플랫폼에서 제공하는 Feature 들을 확인해보자! (저의 경우에는 Layer Effects 를 Android 에서 제공하지 않는 것이 문제 였습니다)

Nanamare
TEAM > SELF