전체 글

전체 글

    [Error / Gradle] mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature.

    인턴 기간 동안 개발한 앱을 배포하려고 앱 아이콘 이미지를 첨부하고 Gradle에서 debug -> release 로 변경하고 Build Apk 를 눌렀는데! 아래와 같은 오류가 떴다. mockup1/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: failed to read PNG signature: file does not start with PNG signature. 서칭을 해보니까 Gradle 버젼이 맞지 않는다. 다른 문제다~ 이런 글들이 많은데 뭔가 이상했다. 지금 사용하고 있는 버젼이 7인데 4까지 낮춰야한다고? 괜히 건드렸다가 다른 오류로 터미널이 터질 것 같다는 생각에 첨부한 앱 아이콘 이미지를 살펴봤다. 파일명은 ic..

    [NCSOFT] 2022 NC Summer Intern 후기 - 1부 (Feat. 우당탕탕 인턴 입사기)

    모처럼 회고 글로 찾아왔다. 퍼듀 이후로 이쪽 게시판에서 쓰는 건 처음인데 (사실 작성 중인 비공개 게시글이 있다...^^) 오늘은 다음 주면 끝날 NC Summer Intern에 대한 글을 쓰려고 한다. 어떻게 알게 됐나요? 1학기에 인턴, 동아리, 교육 프로그램을 좀 알아보고 지원하던 중 2022 엔씨소프트 썸머 인턴이라는 글을 보게 됐고 사내 모바일 앱 개발이 눈에 들어왔다. 공고에 플러터의 역량이 기재되어 있는 것을 보아하니 플러터로 사내 앱을 개발하고 있음을 직감했고 안드로이드 뿐만 아니라 플러터 역시 관심 있었기에 해당 공고에 지원했다. 1차 - 서류 + 코테 전형 자소서 분량이 문항당 300자로 많지는 않았다. 1번은 평소에 관심 있었던 클린 아키텍쳐와 디자인 패턴을 중심으로 인턴에서 무엇을..

    [Flutter] ModalBottomSheet가 키보드에 의해 가려지는 현상

    블로그 내의 게시물은 PC 버전에 최적화 되어 있습니다. 오늘은 ModalBttomSheet를 사용하면서 발생했던 문제에 대해 적어보려고 합니다. ModalBottomSheet에 TextField를 사용하여 키보드로 사용자의 입력을 받으려고 했습니다. 하지만 ModalBottomSheet가 팝업된 키보드의 높이만큼 올라가지 않아서 ModalBottomSheet가 키보드에 가려지는 현상이 발생했습니다. 아래와 같은 상황입니다. 키보드가 팝업되면서 ModalBottomSheet를 가려 사용자가 입력한 텍스트를 확인할 수 없는 문제가 발생했습니다. ModalBottomSheet가 키보드에 의해 가려지는 현상 우선 ModalBottomSheet의 속성에 대해 분석했습니다. 그러던 중 isScrollContro..

    [Error / Gradle] The current Gradle version is not compatible with the Kotlin Gradle plugin

    오늘 수도권에 비가 엄청 내려서 재택을 하게 됐다. 사내 깃과 연동이 되어 있지 않아서 프로젝트를 새로 생성해서 빌드를 하는데 아래와 같은 오류가 발생했다. Gradle 버젼과 Kotlin Gradle Plugin 버젼이 맞지 않아 생기는 오류였다. 친절하게도 해결 방법을 알려준다. android/gradle/wrapper/gradle-wrapper.properties를 수정하면 된다. 알려준 해결 방법대로 버젼을 6.7.0에서 6.7.1로 변경했는데 정상적으로 빌드가 됐다. Gradle 버젼은 아래 링크에서 확인할 수 있다. Gradle Distributions services.gradle.org

    [Flutter / Dart] What is Equatable?

    블로그 내의 게시물은 PC 버전에 최적화 되어 있습니다. 오늘은 Equatable에 대해 알아보려고 합니다. BLoC에 대한 글을 쓰기 전에 BLoC에서 사용하는 Equatable에 대한 정리가 우선적이라고 생각했습니다. 바로 본론으로 들어가보죠! 아래 코드를 먼저 살펴보겠습니다. class Person { final int pid; final String name; final int age; Person(this.pid, this.name, this.age); } void main() { Person p1 = new Person(20221234, "kodo", 25); Person p2 = new Person(20221234, "kodo", 25); (p1 == p2) ? print("same") : ..

    [Flutter] BLoC 패턴으로 자동 로그인, Splash Screen 구현하기 - 1

    블로그 내의 게시물은 PC 버전에 최적화 되어 있습니다. 오늘은 플러터에서 자동 로그인와 Splash Screen을 구현해보려고 합니다. 자동 로그인은 앱 개발을 접해봤다면 한 번쯤은 구현해봤을 기능이라고 생각합니다. SharedPreference를 활용해서 구현하는데 오늘은 조금 다른 방식으로 접근했습니다. 바로 BLoC를 통해서 구현하는데요, BLoC를 사용하면 자동 로그인과 Splash Screen을 하나의 로직으로 처리할 수 있습니다. 한번 시작해보죠. 바로 BLoC로 구현하지 않고 기존의 방식으로 구현하고 BLoC로 리펙토링하는 방식으로 접근합니다. 기존 방식으로 구현하면서 발생하는 문제와 이 문제를 어떤 식으로 해결하는지가 중요하니까요. 자동 로그인 앞서 말씀드린 것처럼 SharedPrefer..

    [Flutter / Dart] What is Singleton?

    블로그 내의 게시물은 PC 버전에 최적화 되어 있습니다. 정말 오랜만에 글 쓰는 거 같네요. 미국에서 돌아와서 일기 쓴 게 마지막인데 주기적으로 쓰려고 했었는데 1학기에 프로젝트가 너무 많아서 바빴습니다. 글 쓰고 있는 지금은 엔씨소프트에서 7주짜리 채용연계형 인턴을 하고 있습니다. 인턴을 진행하면서 플러터로 개발을 하고 있는데 개발하면서 알게된 것들, 정리하면 좋은 것들을 적어두고 싶어서 오늘부터 주기적으로 포스팅을 해보려고 합니다. (1학기 회고록을 작성하고 있는데 아직 작성이 안돼서 비공개로 해놨습니다...) 싱글톤 싱글톤, 전공자라면 다들 많이 들어봤을 단어일 겁니다. 말 그대로 싱글, 하나의 인스턴스만 존재하도록 하는 것입니다. 인스턴스를 하나만 가지기 위해서는 어떻게 해야할까요? 머리 속에 떠..

    [프로그래머스] 124 나라의 숫자

    문제 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이 언어 Python 풀이 방법 우선 진법 변환 문제이다. 좀 특이하긴 한데 3개의 숫자를 사용하므로 3진법을 생각하면 된다. 하지만 10진수 3을 변환했을 때 10이 아니라 4가 나오는 것을 볼 수 있다. 어떻게 변환을 해야하는 것일까? 우선 변환 전과 변환 후를 표로 나타내봤다. 10진법 3진법 124 나라 1 1 1 2 2 2 3 10 4 4 11 11 5 12 12 6 20 14 3으로 나누어 떨어지는 경우에만 특이한 값을 갖는 걸 볼 수 있는데 여기에도 규칙이 있다. 맨 앞 숫자에서 -1 을 하고 뒤의 0을 4로 변환해준다는 점. 즉, 3으로 나누어 떨어지는 경우 몫에서 -1을 해준다는 의미이다. 코드 def solu..

    [LeetCode] 167. Two Sum II - Input Array Is Sorted

    입력 예시 풀이 언어 Python 풀이 방법 정렬된 배열에서 target을 만족하는 두 원소의 index를 반환하는 문제였다. 오름차순을 정렬된 배열이었기에 BST 문제라고 생각했다. 어렵지 않게 해결했다. 코드 class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: start = 0 end = len(numbers) - 1 while start < end: mid = numbers[start] + numbers[end] if mid > target: end -= 1 elif mid < target: start += 1 else: return [start + 1, end + 1] 결과

    [Android] 알림 클릭시 Activity, Fragment로 이동

    구현 문제 알림 클릭하면 특정 화면을 띄어줘야 하는 문제였다. 해결 방법 PendingIntent 를 사용하면 된다. Notification 속성에 Intent 속성을 부여할 수 있는데 이 때 PendingIntent 를 넘겨준다. 또한 PendingIntent 객체에 putExtra 로 화면 이동으로 띄어줄 Fragment 의 식별자를 넘겨준다. 이를 활용하여 MainActivity 가 onCreate 됐을 때 getStringExtra 로 Fragment 의 식별자를 가져오고 해당 Fragment 로 전환한다. 코드 - ReceiverService 우선 지난번에 구현했던 이벤트 수신 알림에 대한 코드를 가져왔다. // 이벤트를 수신했을 경우 사용자에게 알림 전송 private fun occurEven..