전체 글 243

[다시 만들어보는 클린아키텍쳐] 모듈분리 편

클린아키텍쳐가 유행한지도 이제 꽤 시간이 지난 것 같다.하지만 여전히 현업에서도 많이 쓰이고 있고 시간이 흐를수록 더 관리하기 편하고깔끔한 구조로 변화해가는듯하다. 최근에 보이는 nowinandroid 나 드로이드나이츠 앱을 참고하며 내가 필요한 부분만 취해서새롭게 샘플앱을 구성해보려한다. 단발성으로 끝나는것이 아닌 지속적으로 몇년이고 업데이트 할 사항이 생긴다면추가하고 리펙토링도 진행하며 관리해나갈 목적으로 레포를 만들었다. 그럼 프로젝트를 구성하는 첫번째 발걸음인 모듈 분리를 해보자.참고로 클린아키텍쳐라고 꼭 모듈을 분리해야하는건 아니다.다만 분리를 하면 좀 더 강력하게 코드 관심사를 분리 시킬 수 있다.초기에 설정해야하는 일들이 꽤나 복잡하지만 해두고나면 코드를 보기에도 훨씬 편하다. 모듈분리 모듈..

Android 2024.07.25

다시 프로젝트를 해보자.

요즘 계속 잡담글만 올라오는 기분이지만..빨리 이직을 해야겠다는 생각에 정신없이 서류, 이력서, 알고리즘 공부에만 신경을 썼던거 같다.물론 다 중요하지만 근본적으론 내가 안드로이드 개발을 잘해야하고이걸 쉬고 있을수는 없다. 요즘은 컴포즈로 앱을 전부 짜고 있는데 기능 개발에는 문제 없지만아직도 리컴포지션 최적화는 알듯하면서도 쉽지않다. 꾸준한 노력만이 답일듯하다.  전에 만들었던 Linkzip 은 앱을 올리고 싶은데개발자 계정을 새로 만들면서 본인인증을 하란다원래 없었던거 같은데 생겼나보다..제출 해야하는 서류가 제약 조건이 좀 귀찮아서 아직 내질 못했다.이것도 얼른 출시해야지 휴휴 아! 그리고 요즘에는 오프라인 기기 제작도 해보려고 하고 있다.나는 연동되는 앱을 담당하겠지만 친하게 지내는 분중에 하드웨..

잡담 2024.07.24

퇴사..

원하던 퇴사는 아니였지만회사가 힘들어지면서 회사 대부분의 인원이 퇴사를 하게 됐다.애정을 가지고 개발하던 서비스여서 마음이 아프다아직도 실감이 잘나지 않는다순식간에 회사 밖으로 내쳐지니 갑작스럽게 취준생이 됐다.여유를 가지고 지금까지 쉬어보지도 못했으니 괜찮다고 생각해도내 성격상 일을 안하면 오히려 찝찝한 기분이 든다.다시 정신차리고 뭐든 해보자 파이팅

잡담 2024.06.25

[Kotlin/Swift 문법 비교] String 출력과 변수와 Optional / Nullable 처리

대부분의 프로그래밍 언어에 통용되는 기본적인 내용까지 적지는 않을것이고안드로이드 개발에 쓰이는 코틀린과 다르게 사용되는 문법들에 대해서 정리를 하려고한다. 첫번째는 String 출력과 변수와 Optional / Nullable 처리대해서 적어보려고 한다. String - String 출력 Swift print("ios도 개발하고싶어요!") Kotlinprintln("Hello, world!") 키워드를 잘보면 눈치를 챌 수 있는데 Swift는 저렇게 적어주면 자동으로 줄바꿈이 포함된다. - String 안에 변수 Swiftlet real = "진짜 슬프다"let realValue = 3000let data = "아이폰이 없네 ㅠ \(real) 얼마나 슬프냐면 \(realValue)만큼 슬퍼" Kotlin..

IOS/Swift 2024.05.11

안드로이드 키보드 높이 구하기

키보드가 올라왔을때 키보드 위로 특정 레이아웃을 올리고 싶을때가 있다.매니페스트 파일이나 코드상으로 넣어도 화면 구조상 어려워서 원하는대로 동작하지 않을때가 있는데  아래와 같은 방법으로 해결 할 수 있다. 화면의 적당한 곳에 아래 코드를 적어준다. 이 코드를 Fragment 에서 사용했을때 기준이다.ViewCompat.setOnApplyWindowInsetsListener(requireActivity().window.decorView.rootView) { _, insets -> val sysBarInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) val imeHeight = insets.getInsets(WindowInsetsCo..

Android 2024.04.29

Fast api 에서 playwright 을 사용할때 NotImplementedError 에러

최근 개발하고 있는 취향 링크 수집 프로젝트에서 LangChain 과 Open ai api 를 사용해서 키워드 추출 기능을 백엔드로 추가 할 계획으로백엔드를 개발한다고 Fast api 를 써봤는데 링크로 웹 크롤링이 필요해서 playwright  를 쓰는 도중에  계속해서 NotImplementedError  에러가 발생했다.서버를 실행할때 쓰는 uvicorn 과 연관된 에러인거 같은데 .. 사실 정확한 이유는 모르겠고 실행할때 항상  uvicorn main:app --reload 로 실행했었는데 uvicorn main:app 이렇게 reload 를 빼고 실행하니까 문제가 발생하지 않았다. 혹시나 이유를 아신다면.. 알려주시면 감사하겠습니다!

BackEnd 2024.04.28

컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 2

2024.04.21 - [Android/Android Compose] - 컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 1 컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 1컴포즈에는 side effect 라는 개념이 존재한다. 단어의 원래 뜻은 부작용이라는 뜻인데 왜 이런 명칭을 붙였는지 의아하긴 했는데 찾아보니 composable 은 단방향으로 state 를 전달하는게 기본인데 전choi-dev.tistory.com이전 글에 이어서 알아보자. 이번에는 DisposableEffect SideEffect 이렇게 알아볼 예정이다. DisposableEffect  는 앞글에서 봤던 LaunchedEffect 와 비슷하지만 취소됐을때 onDispose 가 호출된다.취소될때의 동작을 추가..