전체 글 109

[Flutter] 웹뷰 하이브리드 모드 관련 이슈 해결

서문 이제 네이티브 앱을 플러터로 변경하고, 앱의 디자인 까지 변경한 디지털페이지 5.0 프로젝트가 막바지로 접어들었습니다. 11월 중에는 끝이 날 것 같은데, 끝이 나면 이 프로젝트에 대해 회고글을 시리즈로 한번 써볼까 합니다. 많은 분들이 플러터를 쓰기를 결정하는 데 참고가 되었으면 좋겠고, 프로젝트를 하는데에도 도움이 되었으면 합니다. 아무튼 빨리 바쁜 것이 끝났으면 좋겠네요. 배경 이번에는 안드로이드 플랫폼에서 웹뷰 하이브리드 관련 이슈가 났었던 것을 공유하려고 합니다. 저희 디지털페이지 5.0은 에디터 Core 는 웹으로 동작하기 때문에 웹뷰의 사용을 피할 수 없습니다. 웹뷰를 사용하다 보면 키보드 노출이 안된다 던지 한글을 사용할 수 없는 키보드 이슈를 보게 됩니다. 인터넷 Search 를 해..

플러터 StatelessWidget? StatefulWdiget?

최근 프로젝트 막바지(?) 에 이르러 정신없이 일 만하고 있습니다. 회사를 이직한 후 약 2년간의 경험을 리뷰했던 글의 말미에 적었듯이, 최근 안드로이드, iOS 어플리케이션을 플러터 전환을 하는 프로젝트를 진행하고 있습니다. 이 프로젝트가 잘 풀리지 않아서 요즘 엄청 바쁘게 일하고 있습니다. 그래서, 블로그에 꾸준히 글을 적어야지 하고 글 주제는 많이 수집 해놨는데 글 쓰는 시간이 잘 안나네요. 게다가 예전에 쓰려고 뽑아 놓은 주제들은 시간이 갈 수록 구(old) 기술이 되어 버렸거나 너무 늦었다 라는 감을 지울 수 없는 주제가 많네요. 서두가 길었습니다. 시간이 없는 관계로 최근 플러터 프로젝트를 들어가면서 개인적으로 정리해 놓은 내용 중에 제일 깔끔하고 수정이 필요 없어 보이는 녀석으로... 하나 ..

만 2년의 개발 발자취 돌아보기

서울에 상경한 지 이제 거의 만 2년이 다 되어 갑니다. 처음 강남 사옥으로 출근해서 회사 라운지에서 커피를 마시며 강남의 야경을 감상하던 때가 엊그제 같은데, 이제는 상암 본사로 들어오고 1년이라는 시간이 지났습니다. 게다가 경산에서 아내와 아이들도 다 올라오고, 거처도 용인에서 파주로 옮겨 이제 정착이라는 단어를 쓸 수 있을만큼 저와 가족 모두 적응하게 되었네요. 돌이켜 보면 정말 짧은 시간동안 많은 변화가 있었네요. 이렇게 정신 없이 살다보니 작년에는 연말에 하던 한해 리뷰 조차 하지 못하고 넘어갔네요. 이제 2년이 다 되어가는 시점을 맞아 주요 업무들을 스스로 리뷰를 하며 피드백을 한번 해보려고 합니다. Warming up 2019.06 ~ 2019.10 이 때는 안드로이드 개발을 다시 시작하면서..

Review 2021.06.03

Google I/O 2021 Keynote 키워드 요약

유튜브에서 아래 영상을 Google I/O 키노트 인줄 알고 보고 키워드 별로 요약을 했는데 알고 보니 아래 영상 자체가 요약본이었네요. ^^ 추후 Google I/O 영상을 시리즈로 보면서 개인 적으로 정리할 텐데, 정리 하는 대로 쭈욱 올리겠습니다. Google I/O 2021 keynote in 16 minutes (요약 본) 구글 I/O Keynote 키워드 LaMDA Language Model 로 Chat Application 용 인공지능 엔진 명왕성 주제로 대화를 나눈 예제 딥러닝 이용 아직 초기 연구 단계, 구글 내부적으로 사용 중 이미지, 텍스트, 오디오, 비디오 리소스를 사용하여 모델을 구성 Map + AI 라이브뷰 상세한 거리 뷰 : 표지판, 횡단보도, 휠체어 등 올해말 까지 50개 도..

Android Context

Context 에 대해 공식 문서 내용에는 아래와 같이 나와 있습니다. Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc. 번역을 해보자면, 어플리케이션 환경에 대..

안드로이드 11 대응(Target SDK 30) - Scoped storage

2020년 11월 1일 부로 안드로이드 Target SDK 레벨이 29 이상이어야만 업데이트가 가능합니다. 이로 인해서 Target SDK 를 올리는 작업을 하기로 결정하게 되었고, 이왕 작업하는 거 Target SDK를 30으로 올리자고 의사결정했습니다. Target SDK 30 으로 올리기 위해 작업한 내용들을 공유하고자 합니다. Scoped Storage 적용, Custom Toast 를 시스템 Toast로 전환, 백그라운드 서비스 권한 부여 및 처리 등을 진행했습니다. 이번 시간에는 Scoped Storage 를 적용한 것을 공유합니다. 과거 상태 회사에서 개발하고 있는 앱에서 접근 하고 있는 파일들의 구조를 간략하게 설명해보면 아래와 같습니다. 외부 저장공간(Environment.getExter..

Fragment에서 호출한 Activity의 결과 받기(onActivityResult 호출 원리)

Fragment 에서 activity 호출 후 호출된 Activity 종료 시 작업 결과 DATA 를 리턴받고 싶을 때가 있습니다. 이 때 아래와 같이 하면 리턴을 받을 수 있습니다. 1. Fragment를 포함하는 Activity 에 FragmentActivity 를 상속 2. Fragment 에 onActivityResult 를 오버라이딩하여 구현 3. Fragment 에 startActivityForResult() 메소드를 호출 4. Fragment 에 의해 실행된 Activity 에서 setReslut 후에 finish 5. Fragment 의 onActvityResult 가 실행됨. 일단, onActivityResult 는 Fragment 를 포함하고 있는 Activity 부터 먼저 호출됩니다...

[자바지기님 강의] 무엇이 시니어 개발자인가?

최근 NextStep 캠프의 DDD 세레나데 교육을 듣고 있었습니다. 마지막 시간에 자바지기님 강의가 있었는데, 함께 공유하면 좋을 것 같아서 기록한 내용을 공유합니다. 제가 여러분이 읽기 좋게 편집할 시간이 없어, 강의를 들으면서 기록한 거의 날것으로 공유하오니 양해부탁드립니다. 시니어 개발자라면 어떤 능력을 가져야 할까? 10년 ~ 20년 정도의 경력이 되면 기술적인 수준은 비슷할 것이다. 시니어 개발자가 될 수록 개발을 위한 문화를 만들 수 있어야 한다. 그렇다면 시니어의 경쟁력은 무엇인가?? 성장과 조직의 문화 리딩 역량은 한 순간에 쌓이지 않는다. 기술적인 사항을 주변 개발자에게 공유, 문제의 현상을 적극적으로 개선, 경력이 적더라도 조금씩 노력해야한다. 아래의 생각전환이 필요하다. 프로그램 역..

org.apache.commons.io 라이브러리에서 java.lang.NoSuchMethodError 에러 해결

몇 달 전부터 APP.을 실행시키거나 사진이 들어간 페이지를 작성하면 죽는다는 VOC를 접수했습니다. 사용자는 삼성 노트 4에 안드로이드 6 버전을 사용하고 있었습니다. 최근 10월 말 릴리즈를 하면서 테스트할 때는 이상이 없었기에 안드로이드 API 호환성 문제로 의심하고, 애뮬레이터를 해당버전에 맞게 세팅하고 재현에 들어갔습니다. 그러자, 이미지를 TEMP 디렉토리에 복사 또는 제거하는 부분에서 Crash가 되었습니다. 로그 중에 특별한 내용은 아래와 같았습니다. java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration o..

2019 GDG DevFest Suwon 참석 후기

제가 서울로 이직한 이유 중 하나가 개발 관련 좋은 교육, 세미나, 커뮤니티 참여 때문이었습니다. 하지만 이직하고, 3개월이 지났지만 대구에 있는 아내와 두 딸 때문에 금요일과 주말에는 참석이 어려운 관계로 여러 교육이나 세미나를 생각보다 많이 참석하지 못해서 아쉬워하고 있던 찰나 GDG DevFest 수원은 평일 저녁에 하는 것을 보고 냉큼 신청하고 오늘 다녀왔습니다. 최근 슬럼프가 온 건지 일에 집중력이 떨어지고, 개인적으로 개발 공부나 사이드 프로젝트을 진행도 손놓고 있었는데, 가서 발표하시는 분들의 이야기를 듣고, 함께 참여한 분들을 보며 다시 열심히 해봐야지 라는 생각을 가졌습니다. 그리고, 일과 관련된 것이 아닌 딴짓이라 불릴 수 있는 개인사이드프로젝트나 개발 등을 한 경험을 나누는 주제로 진..