daldalhanstory의 등록된 링크

키자드에 등록된 총 337개의 포스트를 확인하실 수 있습니다.

Tistory

사업일지 #6 제품 올릴 준비

오픈마켓은 스스, 쿠팡, 위메프, 티몬만 우선적으로 승인이 완료되었다. 오늘 인감증명서를 뽑고 오느라 시간을 많이 허비했다. 개인인감증명서를 뽑으려면 먼저 근처 도장점에서 내 도장을 파서, 그걸 가지고 근처 주민센터나 동사무소에서 인감등록이라는 것을 먼저 해야 한다. 그리고 그 후 600원에 수수료를 내고 개인인감증명서를 뽑아야 한다. 11번가나 몇몇 스토어는 이 개인인감증명서를 필요시 하기 때문에, 오늘은 이 증명서를 뽑는데, 시간을 좀 보냈다. 이제 셀러픽 사용법만 익히면 본격적으로 물건을 올릴 수 있다. 내일은 셀러픽 사용법을 익히는 시간을 가질 생각이다. 우선적으로 승인이 완료된 오픈마켓의 api를 미리 셀러픽에 연동시켜 놓았다. 할 수 있는 건 미리미리 해두어야지.. 추후에 일이 많이 줄어든다...

Tistory

사업일지 #3 시간은 금이라는 사실을 기억하자

사업자 통장도 만들고, 개인고유통관부호도 신청하여 받았고, 타 배(배송 대행지)도 가입하였다. 문제는.. 타오바오다.. 먼저 위에 것들을 먼저 진행하는 데 있어.. 시간이 어느 정도 걸렸기 때문에 타오바오를 먼저 가입해두어야겠다고 판단한 게.. 미스였다. 가입을 하고 며칠간 결제 사실이 없다면 계정을 동결한다고 한다. 계정이 동결이 되어버리면, 이걸 푸는게 복잡해진다고 한다. 중국어로 메일을 보내며 답변을 받는 과정을 거쳐야 한다고 한다. 벌써부터 복잡하다는 생각이 들어 기존에 내 휴대폰 번호에서 앞에 0만 빼면 다른 계정으로 가입을 할 수 있다고 한다. 부리나케 가입을 했지만, 이미 그 전에 인증번호를 많이 요청하여 오늘은 또 인증요청이 안된다고 한다.. 미칠 노릇이였다. 이렇게 보안이 까다롭다고??라..

Tistory

사업일지 #4 오픈마켓 셀러로 등록하기

오늘은 오픈마켓을 등록하는데 시간을 쏟았다. 저번 시간에 스마트스토어 등록은 끝났고, 쿠팡 셀러 등록을 하였다. 이어서 11번가도 셀러 요청을 했고, 옥션과 지마켓 그리고 인터파크는 나이스 신용평가에 내 사업자가 등록이 되어 있지 않아 이것 또한 승인을 기다려야 한다. 그리고 11번가에 제출할 서류 중에 개인인감 증명서?라는 게 또 필요하다는데, 이건 근처 동사무소에서 출력을 해야한다고 해서, 다음 주 명절 끝나고 평일에 방문을 해야 할 거 같다. 그리고, 오늘 제일 중요한 작업은 타오바오였다. 중국어에 대해 무지한 상태였던 나는 이것저것 누르고, 미리 계정을 며칠전에 만들어, 방치해두고 있었다. 그러더니 계정이 동결되었다는 것이 아닌가?ㅡㅡ 인터넷을 뒤져보니 휴대폰번호 앞에 0을 떼고 가입하면 이중으로..

Tistory

사업일지 #5 셀러픽 가입하기

명절이 끝나고 다시 구매대행 작업을 진행하고 있다.. 우선 오픈마켓을 전부 가입해야 하는데, 몇몇에 스토어에서는 인감증명서를 요구했다.. 이번주 수요일부터 대체 공휴일이 끝나는 시점이라 아직 이틀이나 더 기다려야 한다.. 그래서 이틀 동안 미리 구매대행 시 유의해야 할 점들을 정리하였다. 그리고 셀러픽을 미리 가입했다. 셀러픽 사용가이드도 익혀야 한다. 해야 할 게 정말 많다... 그래도 점점 시작점이 보인다. 관련 서류를 서둘러 제출하고 어서 제품들을 업로드하고 싶다. 그때를 기다리며 칼을 갈고닦자..

Tistory

나의 이야기

이제 이 블로그는 개발에만 국한된 블로그가 아니라, 내가 회사를 그만두고 사업일지를 작성해 나갈 블로그가 될 것 같다. 이야기의 시작은 20살 때였다. 나는 하고 싶은 일이 없었기에 고등학교를 진학할 때 단순히 바로 취업하고 돈을 벌게 해 준다는 이야기만 듣고, 친구 따라 특성화고에 진학하게 된다. 대학에 대한 생각이 없었던 건 아니었지만, 그때는 돈이 더 중요하다고 생각한 것 같다. 하지만 고등학교 2학년 때쯤에 내 주변에 몇 명은 대학을 갈 준비를 하고 있어서.. 나도 함께 동요되어 대학을 가야 하나라는 마음이 커졌다. 다들 가고 싶은 과가 있었고, 뭔가 나도 가고 싶은 과가 있어야만 할 것 같았다. 당시 나의 학교 과 이름은 '자동화 모델링과'였다. CAD나 선반 밀링 등 기계와 관련된 실무작업을 ..

Tistory

사업일지 #1 사업자 등록과 통신판매업 신고를 하다.

드디어 시작이구나라고 느낀 하루였다. 아직 물건을 올리는 과정을 배우는 중이라 시작? 이라고는 말하기 좀 그렇지만, 그래도 인생살면서 처음으로 사업자 등록증을 냈다 ㅎㅎ 기분이 뭔가 이상하다. 사업자 등록증은 하루 만에 발급이 되어 기분 좋은 마음에 사업자 등록증을 프린트로 바로 출력해서 다이소에서 천 원짜리 액자를 사서 안에 넣어 벽에 걸어두었다. 하 이제 진짜 시작이다. 고시원을 사업자주소지로 설정해두었고, 여기서부터 시작하는 것이다. 물건 팔기위해서는 통신판매업도 신청해야 한다고 한다. 아직 처리가 안되었지만, 처리가 되면 40500원을 결제해야 한다고 한다. 동시에 스마트스토어(기존에 가입만 해두었다.) 사업자전환을 하였다. 이 과정도 3일정도에 심사과정이 걸린다고 한다. 여기까지 작업하는데 오늘..

Tistory

사업일지 #2 나태함 때문에 잃은 기회

어제 사업자등록증을 냈다고 신나서, 긴장이 사라진 탓일까 오늘따라 운동도 천천히 하고 굉장히 나태하게 보냈다. 오늘 역시 복잡하게 할 일들이 많았을 터인데.. 너무 내가 나태했다. 천천히 해야지~ 하는 마음으로 임했다가 많은 것을 하지 못했다. 우선 타오바오 회원가입을 하고, 그에 따른 배대지를 선정하였는데, 배대지를 고르고 회원가입 중에 사업자 고유통관부호가 있어야 한다는 것을 깨달았다. 나는 아직은 간이과세자이기 때문에 사업자통장은 굳이 만들지 않아도 되었지만, 은행에 가서 공동인증서를 만들기 위해 OTP를 받아와야 했다. 하지만 오늘 게으름을 부려 시간은 4시가 넘었고, 은행 갈 시간을 날려 먹었다. 이건 내일 하고, 나머지도 해야겠다. 생각하여 셀더웨이의 대해 알아보는 시간을 가졌다. 그런데 셀더..

Tistory

CodingTest #44 Kotlin 숫자 짝꿍, 성격 유형 검사하기 문제풀이

어제 풀다 만 숫자 짝꿍 문제를 풀어보자. 숫자 짝꿍 //숫자 짝꿍 class NumberMate { fun solution(X: String, Y: String): String { val answer = StringBuilder() val arrX = IntArray(10) val arrY = IntArray(10) countNumInArr(X, arrX) countNumInArr(Y, arrY) for (i in arrX.indices.reversed()) { while (arrX[i] >= 1 && arrY[i] >= 1) { arrX[i]-- arrY[i]-- answer.append(i) } } val result = if (answer.toString() == "") { "-1" } else ..

Tistory

CodingTest #45 Kotlin 과일 장수, 옹아리(2) 문제 풀이

오늘의 코딩 테스트는 두 문제를 풀어보았다. 과일 장수 //과일 장수 class Fruiterer { fun solution(k: Int, m: Int, score: IntArray): Int { var sum = 0 score.sortedArrayDescending().also { arr -> repeat(arr.size / m) { i -> val start = i * m val end = start + m arr.copyOfRange(start, end).also { copy -> sum += (copy.minOrNull() ?: 1) * m } } } return sum } } 오름차순을 배열을 정렬하고, 상자에 담을 수 있는 양을 m으로 나누어, 상자에서 제일 낮은 품종의 사과를 m을 곱해 su..

Tistory

CodingTest #41 Kotlin 문자열 내 마음대로 정렬하기, K번째수 문제풀이

오늘은 두 문제를 풀어보았다. 첫 번째 문제를 보자. 문자열 내 마음대로 정렬하기 //문자열 내 마음대로 정렬하기 class SortingStringsMyOwnWay { fun solution(strings: Array, n: Int): Array = strings.sortedWith( compareBy( { it[n] }, { it } ) ).toTypedArray() } 처음으로 두 개의 조건식으로 정렬할 수 있는 sortedWith와 compareBy 메서드를 써보았다. 처음에는 strings로 받은 문자열 배열에서 문자열에 n번째 숫자의 따라 정렬을 해주고, 만약 같은 숫자가 나타날 때는 원래 사전대로 정렬을 위해 기본값인 it을 써주어 정렬하고, 마지막에 이 list를 StringType의 배열..

Tistory

CodingTest #42 Kotlin 실패율 문제풀이

자 문제를 풀어보자. 실패율 //실패율 class FailureRate { fun solution(N: Int, stages: IntArray): IntArray { val result: IntArray //실패율 = 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수(notCleardLength) / 스테이지에 도달한 플레이어 수 cleardLength //스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 var notCleardLength: Int //스테이지에 도달한 플레이어 수, 처음은 스테이지 사이즈가 기본 값(전체 문제) //소수점 비교를 위해 float 사용 var cleardLength = stages.size.toFloat() //결과 담을 map 만들어주기 //사이즈 초깃값..

Tistory

CodingTest #43 Kotlin 콜라 문제, 푸드 파이터 대회, 신규 아이디 추천 문제풀이

휴.. arcore로 정신없이 코딩하다.. 코테를 많이 하지 못해.. 한 번에 세문제를 풀었다. 콜라 문제 //콜라 문제 class ColaProblem { fun solution(a: Int, b: Int, n: Int): Int { //가지고 있는 빈병 갯수 var empty = n //받은 콜라 개수 var recieved = 0 while (empty > a - 1) { //몫 val share = (empty / a) * b //나머지 val remainder = empty % a //남은 콜라수 empty = share + remainder //받은 콜라수 recieved += share } return recieved } } 빈병 개수가 마트에서 콜라를 받기 위해 주어야 하는 병 수 a에서 ..

Tistory

CodingTest #39 Kotlin 부족한 금액 계산하기, 직사각형 별찍기 문제풀이

문제를 풀어보자.. 부족한 금액 계산하기 class Solution { fun solution(price: Int, money: Int, count: Int): Long = (1..count).foldIndexed(0L) { idx, acc, i -> acc + (price * i) }.minus(money).let { if(it < 0) 0 else it } } 처음 금액에 N배가 되어 증가하는 풀이이다. 금액이 부족하지 않으면, 0을 반환하는 메서드이다. 이 풀이는 아래 코드가 더 심플해 보여서 가져왔다. //부족한 금액 계산하기 class CalculateTheShortfall { fun solution(price: Int, money: Int, count: Int): Long = (1..count..

Tistory

CodingTest #40 Kotlin 최소직사각형 문제풀이

일이 많아.. 문제를 많이 풀지 못해지고 있다. 한 문제씩이라도 풀어보자. 최소 직사각형 //최소직사각형 class MinimumRectangle { fun solution(sizes: Array): Int { val sorted = sizes.map { it.sorted() } return (sorted.map { it[0] }.maxOrNull() ?: 0) * (sorted.map { it[1] }.maxOrNull() ?: 0) } } 2차원 배열을 받는 문제인데 먼저 받은 배열 안에 int 배열들을 정렬시켜준다. 문제 자체가 제일 넉넉한 지갑을 최소 사이즈로 만드는 것인데, 만약 세로 사이즈가 가로사이즈보다 크다면, 뒤집어서 사용이 가능하다고 하기 때문에, 위에 조건대로라면, 각 int 배열들을..

Tistory

CodingTest #37 Kotiln 문자열 내림차순으로 배치하기, 문자열 다루기 기본 문제풀이

요즘 꾸준히 문제를 푸는 중이다. 아직 코틀린 쉬운 단계지만, 기본을 잘 익혀보자. 문자열 내림차순으로 배치하기 //문자열 내림차순으로 배치하기 class PlacingStringsInDescendingOrder { fun solution(s: String): String = String(s.toCharArray().sortedArrayDescending()) } 코틀린 내장함수에 sortedArrayDescending() 메서드를 이용했다. 숫자도 가능하지만, charArray로 만들면, 소문자 대문자 순으로도 바꿀 수 있기 때문에, 바로 구현이 가능하였다. 다른 방법으로는 //문자열 내림차순으로 배치하기 class PlacingStringsInDescendingOrder { fun solution(s..

Tistory

CodingTest #38 Kotlin 약수의 개수와 덧셈, 행렬의 덧셈 문제풀이

문제를 풀어보자. 첫 문제는 약수의 개수에 따라 덧셈을 할지 빼야 할지 정해서 값을 산출하는 문제이다. 약수의 개수와 덧셈 class Solution { fun solution(left: Int, right: Int): Int { var cnt: Int var result = 0 for(i in left..right) { cnt = 0 for(j in 1..i) if(i % j == 0) cnt++ if(cnt % 2 == 0) result += i else result -= i } return result } } 처음에는 이런식으로 풀었는데, 코드가 난잡하고, 한눈에 알아보기가 힘들어, 답안을 보았는데, 한 줄에 깔끔하게 끝나는 코드를 발견할 수 있었다. //약수의 개수와 덧셈 class NumberA..

Tistory

FireBase Latest Release 버전 갱신이 안될때 / Google Analytics 연동이 안되는 문제 / debugView 안되는 이유 / 앱이 Google 서버와 통신했는지 확인하는 중입니다. 앱을 제거했다가 다시 설치해야 할 수 있습..

당황스러운 일이 있었다. 예전부터 구글 파이어베이스를 통해 구글 애널리틱스의 연동하여, 사용자를 모니터링하고, 앱 코드 안에 있는 logEvent 기능으로 인한, 이벤트 내역을 확인하려 했는데.. 이용자가... 0명... 으로 나와있다. 그럴리 없었다. 구글 플레이 콘솔은 하루 50명 ~ 100명 정도가 다운을 받는다는 기록이 세세히 나와있었기 때문에.. 불가능했다. 이유는 연동이 제대로 되지 않고 있었다는 소리였다.. 예전에 테스트도 해봤었는데.. 무슨 일일까 서둘러 문제법도 검색해보고, 고객센터에도 문의하였다. 그러면서 다른 문제점도 찾게 되었는데, FireBase -> Latest Release로 들어가게 되면, 파이어베이스에서 인식하는 나의 앱 버전이 나오게 되는데, 엥?? 내가 구글 플레이 콘솔..

Tistory

CodingTest #34 Kotlin 나누어 떨어지는 숫자 배열, 제일 작은 수 제거하기, 음양 더하기 문제풀이 feat. foldIndexed 메서드 사용법 및 설명

주말이라도 예외는 없다. 문제를 풀어보자. 나누어 떨어지는 숫자 배열 //나누어 떨어지는 숫자 배열 class DivisibleArrayOfNumbers { fun solution(arr: IntArray, divisor: Int): IntArray = arr.filter { it % divisor == 0 } .sorted() .toMutableList() .also { if(it.isEmpty()) it.add(-1) }.toIntArray() } 이 문제는 약간의 답을 참고하여 풀었다. also의 재발견... also로 객체 자체를 전달받아.. 코드를 한 줄로 스무스하게 만들 수 있는 좋은 메서드이다. divisor로 나누어지는 요소들을 필터링하고, 오름차순으로 정렬한 다음, 수정할 수 있는 mut..

Tistory

CodingTest #35 Kotlin 수박수박수박수박수박수?, 가운데 글자 가져오기 문제풀이

이구 졸리다.. 내일 처음으로 후 맛집 프로젝트 팀원들과 식사 자리를 가진다.. 얼른 글을 쓰고 자보자.. 수박수박수박수박수박수? StringBuilder().apply { repeat(n) { append(if(it % 2 == 0) "수" else "박") } }.toString() 내 처음 풀이는 이러했다. 전달받은 파라미터 n이 짝수인지, 홀수 인지 판단해서, StringBuilder에 append를 반복해주는 코드이다. 이 코드도 정답이었지만, 답안에서 CharArray를 사용한 방법이 더 깔끔하고, 효율이 좋아 코드를 가져왔다. //수박수박수박수박수박수? class WaterMelonWaterMelon { fun solution(n: Int): String = String(CharArray(n..

Tistory

CodingTest #36 Kotlin 없는 숫자 더하기, 내적 문제풀이

fold 메서드를 알게 된 후로 자주 애용하게 된 것 같다. 아래 코드를 보자. 없는 숫자 더하기 class Solution { fun solution(numbers: IntArray): Int = (0..9).fold(0) { acc, num -> acc + if(!numbers.contains(num)) num else 0 } } 0.. 9에서 숫자를 fold로 뿌려주고, 파라미터로 전달받은 numbers IntArray에 포함되어 있지 않으면, acc에 더해주는 메서드이다. 근데 이것보다 훨씬 간결한 코드를 보았다. //없는 숫자 더하기 class AddMissingNumbers { fun solution(numbers: IntArray): Int = 45 - numbers.sum() } 와우.. ..

Tistory

CodingTest #31 Kotilin 정수 내림차순으로 배치하기, 문자열을 정수로 바꾸기, x만큼 간격이 있는 n개의 숫자 문제풀이

프로그래머스 입문자 시선으로 볼 때는 아직까지 비교적 쉬운 문제들이 마주하고 있다. 연습문제 느낌인데, 이런 거라도 풀면서 자신감도 늘리고, 코틀린 기능을 익히는 느낌으로 임하는 중이다. 첫 번째 문제는 파라미터로 입력받은 long타입에 수를 내림차순으로 반환하는 문제이다. 정수 내림차순으로 배치하기 //정수 내림차순으로 배치하기 class PlacingIntegersInDescendingOrder { fun solution(n: Long): Long = n.toString() .toCharArray() .sortedDescending() .joinToString("") .toLong() } 이 문제 같은 경우는 전달받은 long값을 문자열로 변환하고, 정렬을 위해 char 배열로 변환해준다. 그리고 내..

Tistory

CodingTest #32 Kotlin 나머지가 1이 되는 수 찾기, 콜라츠 추측 문제풀이

하루 시작에 머리를 맑게 해 주는? 코딩 테스트를 풀고 정리해본다. 우선 나머지가 1이 되는 수 찾기이다. 나머지가 1이 되는 수 찾기 //나머지가 1이 되는 수 찾기 class FindANumberWhoseRemainderIs1 { fun solution(n: Int): Int { var x = 1 while(true) if(n.rem(++x) == 1) break return x } } 문제는 입력받은 n 값을 나누어 나머지 1인 최솟값을 구하는 문제였는데, 원하는 값이 나올 동안 while문을 돌려 1씩 증가시켜 값을 얻었다. 증감 연산자를 전위형으로 하였고, n을 나누어줄 때 rem 메서드를 사용하였다. rem 메서드는 나머지를 구해주는 메서드이다. 여기서 한 가지 배운 사실이 있다. 숫자끼리에 ..

Tistory

CodingTest #33 Kotlin 두 정수 사이의 합, 서울에서 김서방 찾기, 핸드폰 번호 가리기 문제풀이

배고프다.. 다이어트는 너무 힘들다. 문제를 풀어보자. 두 정수 사이의 합 class Solution { fun solution(a: Int, b: Int): Long { var result = 0L when { a == b -> result = a.toLong() a < b -> for(n in a .. b) result += n a > b -> for(n in b .. a) result += n } return result } } 두 정수 사이의 합을 구하는 문제이다. a와 b를 파라미터로 받고 대소 관계를 따져서 그에 맞는 for문을 돌려주어 문제를 해결하였다. 그런데 이 코드보다 더 효율적인 코드를 찾았다. class SumBetweenTwoIntegers { fun solution(a: Int,..

Tistory

CodingTest #29 Kotlin 짝수와 홀수, 자릿수 더하기, 약수의 합, 평균 구하기, 정수 제곱근 문제풀이 Java에서 Kotlin으로 코테 언어 전환하기

지금껏 Java로만 코딩 테스트를 풀었지만, 안드로이드 개발할때 코틀린만 쓰기도 하고, 오히려 코틀린 코딩테스트로 더 효율적인 코드로 알고리즘을 구현할 수 있지 않을까라는 생각, 게다가 보통 여러 회사들이 자바로 보통 테스트하지 않을까 생각했지만, 오히려 코틀린으로 코테를 보는 곳이 더 안드로이드에 대해 빠삭하지 않을까라는 로너 님의 의견을 듣고 마음이 흔들려 오늘부터 Java에서 코틀린으로 전환하기 했다. 삘타서 오늘 프로그래머스 문제로 5개의 문제를 풀어보았다. 첫 번째 문제는 짝수와 홀수 //짝수와 홀수 class EvenAndOdd { fun solution(num: Int): String = if (num % 2 == 0) "Even" else "Odd" } 짝수라면 Even을 홀수면 Odd를 ..

Tistory

CodingTest #30 Kotiln 자연수 뒤집어 배열로 만들기, 하샤드 수 문제풀이

자바로만 코딩 테스트를 하다가 코틀린으로 하니.. 너무 수월한 내장함수들이 많은 듯하다.. 자바에서는 Arrays나, Collections 클래스를 많이 이용하고, 그에 맞게 namespace를 import 해주었는데, 코틀린은 내부에 적절하게 위에 코드에서 구현할 수 있는 메서드를 가지고 있어서 굳이, import하지 않고, 간편하게 구현할 수 있었다. 아래 문제를 보자. 자연수 뒤집어 배열로 만들기 //자연수 뒤집어 배열로 만들기 class FlipNaturalNumbersToFormAnArray { fun solution(n: Long): IntArray = n.toString() .reversed() .map { it.toString().toInt() } .toIntArray() } 파라미터로 받..

Tistory

CodingTest #27 Java 18870 (좌표 압축) 문제 풀이

쉬우면서도 어려운 문제였다. 나 같은 경우는 한 배열로 두 번의 Arrays.sort함수를 사용했다. 코드를 보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Test18870 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseI..

Tistory

CodingTest #28 Java 25501 (재귀의 귀재) 문제 풀이

처음 코딩 테스트 입문 때 11단계까지만 풀자 했는데.. 조금 늦었지만, 다 풀었다!! 라고 생각하는 순간 재귀와 정렬 쪽에서 문제가 추가되었다. 자주 문제가 추가되는 것 같긴 하다. 저것만 풀고 다음 단계로 넘어가자. 백준을 더 풀거나 프로그래머스 문제도 풀 생각이다. 저 11단계까지 문제가 무려 89문제나 된다.. ㅎㄷㄷ 아직 부족하다는 느끼지만, 더 풀어봐야 할 거 같다. 25501 문제는 거저 주는 느낌이 강했다. 코드를 살펴보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test25501 { public static void main(String[]..

Tistory

Android/Kotiln Compose 처음 시작할때 보여주는 온보딩 화면 만들기

컴포즈를 공부하는 중이라 내용이 정확하지 않고, 부실할 수 있다는 점 양해 바랍니다. 오늘은 간단히 compose에서 사용하는 viewPager 기능과 유사한 기능을 사용함을 써, 앱을 처음 시작할 때 사용자에게 소개하는 가이드 화면을 예시로 만들어 보려고 합니다. 예시로 검은색 화면을 두었습니다. 가이드 화면이 있고, 옆으로 슬라이드 하게 되면 아래 왼쪽에 큰 하얀색점이 작아지고, 오른쪽 점이 커지게 하여, 가이드 페이지의 위치와 개수를 표현하게 됩니다. 사실 여러 viewPager를 찾는 중에 첫 번째 방법은 HorigontalPager라는 페이저 라이브러리였는데, 이러한 편리한 라이브러리도 있구나 정도로 생각을 했고, 두 번째 방법은 굳이 라이브러리를 사용하지 않고도, 만들 수 있는 법이 있었습니다..

Tistory

CodingTest #24 Java 11650 (좌표 정렬하기) 문제 풀이

추석이다.. 아고 언제 내려가나.. 문제 하나 풀어보았다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Test11650 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); StringTokeniz..

Tistory

CodingTest #25 Java 11651 (좌표 정렬하기 2) 문제 풀이

이전 시간에 좌표 정렬하기 문제에서 y로 바뀐 것 말고는 바뀐 게 없다. 이번에는 저번 문제에서 인터넷에서 찾아본 아래 코드 방법으로 배열을 정리해보면서 풀어보려고 한다. Arrays.sort(arr, (e1, e2) -> { //y값이 같으면 x로 순서 정렬 if(e1[1] == e2[1]) { return e1[0] - e2[0]; } //그게 아니면 y로 순서 정렬 return e1[1] - e2[1]; }); 좌표 정렬하기 1 문제의 링크이다. 2022.09.09 - [Programing/CodingTest] - CodingTest #24 Java 11650 (좌표 정렬하기) 문제 풀이 CodingTest #24 Java 11650 (좌표 정렬하기) 문제 풀이 추석이다.. 아고 언제 내려가나.. ..

Tistory

CodingTest #26 Java 1181 (단어 정렬) 문제 풀이

너무 졸리다.. 시골 와서 한 문제만 더 한 문제만 더 이러다가 2문제 째이다.. 이제는 문제 풀면서 졸고 있어서.. 한계이다.. 정렬 문제가 나한테 잘 맞는 것 같다.. 자신 있게 잘 풀어나가지는 것 같았다. 아래 코드를 봐보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Test1181 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Syste..

Tistory

Android/Kotlin Flow onCompletion, catch, collect 예제

flow에는 종료 시점에 후처리 할 수 있는 onCompletion이 존재한다. 우선 코드의 상황은 다음과 같다. useCase를 통해서 서버에 요청하여 list를 불러오는 viewModel의 코드 부분이다. class MainViewModel(private val useCase: UseCase) : ViewModel() { private val _blogList = MutableStateFlow(UiState.Loading) val blogList : StateFlow = _blogList.asStateFlow() private var isLast = false init { viewModelScope.launch { flow{ emit(useCase.getBlogList().toUiBlogList())..

Tistory

Android/Kotlin Coroutine StateFlow, SharedFlow, Channel 예제 및 특징

3번째 flow 예제 공부를 마쳤다. stateflow, sharedflow, channel에 대한 예제를 꾸렸지만, 모두 클릭 리스너를 달아 데이터를 가져오는데 그친 간단한 예제이지만, 기능보다는 각각의 특징과 공부한 내용들로 주를 이루었다. 우선 코드를 보자. MainViewModel.kt class MainViewModel : ViewModel() { //StateFlow private val _uiState = MutableStateFlow(UiState.Loading) val uiState: StateFlow = _uiState.asStateFlow() //SharedFlow //설정할 수 있다는 것만 보여주기 위함 //아래 설정은 다 기본값 private val _uiShared = Mutab..

Tistory

CodingTest #23 Java 1427 (소트인사이드) 문제 풀이

오늘 추석이라 회사에서 점심먹고 퇴근하라고 한다. 개이득!!! 오늘 푼 문제는 소트인사이드이다. Primitive type을 Wrapper type으로 바꾸는 것만 신경쓰면 정말 쉬운 문제였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Comparator; public class Test1427 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRead..

Tistory

Cannot access 'XXXXXXXXXXXX'. Check your module classpath for missing or conflicting dependencies

지금은 해결되고 캡처한 것이지만, 모든 코드에 빨간줄이 그어졌다... 해결법은... 윈도우나 맥에 사용자 폴더 안에 있는. gradle 폴더를 삭제하고 cleanProject -> RebuildProject -> Invalidate Caches Restart를 해주면 된다!! 그러면. gradle를 처음부터 다시 삭제하고 깔아주면서 해결이 된다. 갑자기 이런 오류가 뜬 요인은 잘 모르겠다.. 만약 위에 방법이 안된다면, 두번째 방법을 사용해보자. 안드로이드 스튜디오를 잠시 꺼주고, 해당 프로젝트 파일 안에 있는 .idea 파일을 삭제하고 다시 실행해본다. 나같은 경우는 두번째 방법으로 해결되었다.

Tistory

CodingTest #22 Java 25305 (커트라인) 문제풀이

하루에 한번씩 푸는 코딩테스트다. 요즘 프로젝트랑 같이 하느라 정신이 없지만.. 최대한 하루에 하나씩 해나가보려고 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; import java.util.StringTokenizer; public class Test25305 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sy..

Tistory

Android/Kotlin Waiting for application to come online WipeData해도 되질 않을때

평소처럼 run버튼을 누르고 앱을 실행했는데, 앱이 켜지지 않는 무반응 상태가 되었다. 디버그 모드로도 실행을 해보니 Waiting for application to come online:~~~~ 이런 글만 나오면서 빨간 에러가 뜨는 것이었다. 구글에 서치 해보니.. Device Manager에 들어가 해당 에뮬레이터를 wipe data 해주라는 것이었다. 아쉽게도 해결이 되지 않았는데, manifest에 들어가서 해당 액티비티에 exported를 true로 바꾸어주니 해결되었다!! 정말 알다가도 모르겠는 안드로이드 스튜디오이다...

Tistory

데이터 형식 피드백 이후 변경 사항

데이터 형식 모델 피드백 이후 변경 사항입니다. 우선 blog 부분입니다. 기존에는 Blog라는 클래스를 두고, 두 개의 클래스 DaumBlog, NaverBlog의 상속시켜 코드를 짰지만, Blog 클래스 자체적인 프로퍼티인 BlogType enum 타입을 통해 Daum과 Naver를 구분 짓도록 변경하였습니다. Blog.kt import kr.loner.shared.BlogType /* * 블로그 데이터 클래스입니다. * id : 고유값 * title : 블로그의 타이틀명입니다. * info : 블로그에 대한 설명글 입니다. * img : view의 표시될 하나의 이미지입니다. * blogUrl : 아이템을 눌렀을 때, 웹뷰로 전달할 url입니다. * type : blog의 종류를 결정하는 타입 값입..

Tistory

Android/Kotlin Flow를 이용하여 데이터 상태에 따라 버튼 활성화 비활성화 변경하기 TIL # 86

상황은 이렇습니다. 다음과 같이 3개의 EditText가 있고, 이 EditText의 글씨가 모두 써졌으면, 아래 버튼이 활성화되게끔 하려고 합니다. 우선 저는 상태에 따른 모델 값이 필요하다고 생각하여 다음과 같이 UiState를 만들었습니다. UiState.kt data class UiState( val type: EditType? = null, var editState: EditState = EditState.EMPTY ) { enum class EditState { EMPTY, WRITTEN } enum class EditType { NAME, ADDRESS, PHONENUM } }ㅇ UiState는 type: EditType -> EditText의 들어갈 내용에 대한 타입입니다. (NAME, A..

Tistory

CodingTest # 21 Java 3003 (킹, 퀸, 룩, 비숍, 나이트, 폰), 25304 (영수증) 문제 풀이

3003 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Test3003 { static int[] correct = { 1, 1, 2, 2, 2, 8 }; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); S..

Tistory

CodingTest # 22 Java 2231 (분해합) 문제 풀이

2231 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test2231 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String N = br.readLine(); int valueLength = N.length(); int value = Integer.parseInt(N); int result = getInitialNum(value, valueLength); Syste..

Tistory

Android/Kotlin 직렬화 / 역직렬화 개념 Kotlinx.serialization 공부 일지(feat. moshi, Gson) / TIL #85

네트워크 통신 즉, 하나의 컴퓨터에서 다른 컴퓨터로 객체를 보낼때 그 자체를 보내는데에는 어려움이 있다. 보낼 객체가 통신이 가능하게 변환해 주어야 하는데 우리는 이러한 작업을 직렬화라고 하고, 이렇게 받은 직렬화된 파일을 다시 객체로 변환해주는 것을 역 직렬화라고 한다. 직렬화에는 여러 종류가 있다. 첫 번째는 gson이다. 간단하게 장점이라면, Json으로 또는 그 반대로 변환 가능한 간단한 메서드인, toJson() 와 fromJson()를 제공 Java Generics의 광범위한 지원 개체에 대한 사용자 지정 표현 허용 등이 있다. 두번째는 moshi 이다. moshi 같은 경우는 Gson이 하지 않는 몇 가지를 최적화 한다고 합니다. 첫번째는 코틀린의 지원 @HexColor int와 같은 한정자..

Tistory

Android/Kotlin Retrofit 이미지와 데이터 서버 MultiPart와 PartMap으로 전송 하는 법 / TIL #83

최근에 새로운 앱을 만들기 위해 고군분투 중이다. 기존 앱에 서버에서 받는 api의 원시 데이터는 xml을 사용했는데, 이번 앱은 json을 사용하게 되었다. 다행이 인터넷에 자료가 많아 데이터를 보내는데 문제가 없었다. 그렇지만, 이미지를 보내는 과정에서 어려움이 생겼다. 서버 개발자분이 Multpart를 통해서 서버로 이미지를 보내달라고 요청하셨다. 멀티파트?? 구글에 쳐본 결과 멀티파트란? - HTTP 요청의 한 종류로서 서버에 파일이나 데이터를 보내기 위한 요청 방식이다. - 보통은 큰 용량의 바이너리 데이터 전송에 적합하다. 한마디로 큰 이미지 파일 등을 서버로 넘겨줄 때 적합한 방법이다. 레트로핏을 이용해서 사용해보자 (물론 레트로핏 종속성과 실행법은 모두 알고 있다는 전제로 설명하겠다.) 데..

Tistory

CodingTest # 21 Java 2798 (블랙잭) 문제 풀이

요즘은 회사도 바쁘고, 사이드도 진행하느라, 바쁘지만, 그동안 잊고 안 했던 코딩 테스트를 다시 해보려고 한다. 오랜만에 해보니 역시 살짝 감을 잃은 느낌이다. https://st-lab.tistory.com/97 [백준] 2798번 : 블랙잭 - JAVA [자바] www.acmicpc.net/problem/2798 2798번: 블랙잭 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블 st-lab.tistory.com 스트렌져님의 블로그를 참고하였다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr..

Tistory

Android/Kotlin Retrofit + RxJava onError 받는 Throwable에서 body 가져오기 / ErrorBody 받기 / TIL #84

rxjava와 레트로핏을 다음과 같이 사용하였다. CompositeDisposable 객체를 만들고, 다음과 같이 네트워크를 호출하였다. val disposable = CompositeDisposable() disposable.add( RetrofitClient.getRetrofitInstance(application) ?.getProductList( user?.authCompanyCode, getAuthKey(application), user?.mobileUid, user?.sessionId, pageNo, pageSize, "desc" )?.subscribeOn(Schedulers.newThread()) ?.observeOn(AndroidSchedulers.mainThread()) ?.subscrib..

Tistory

Android/Kotlin 리사이클러뷰 어뎁터 중복된 이미지가 나오는 현상 해결법 / Recyclerview adapter duplicate image error TIL #82

오늘 회사에서 하루 종일 삽질한 문제이다. 나 같은 경우는 리사이클러뷰 안에 리사이클러뷰를 사용하는 중복 리사이클러뷰를 구현하고 있었는데, 글라이드 라이브러리를 통해서 이미지를 디스플레이하였다. 그런데 문제는 arrayList에서 0인덱스 자리에만 이미지가 출력되면 좋겠지만, 9인 덱스 자리에서도 똑같은 이미지가 출력되는 것이었다. 아이템의 개수를 증가하니, 9 배수 자리의 인덱스 값에서만 같은 이미지가 계속 출력되는 것이었다. 리사이클러뷰 어뎁터를 갱신할 때는 DiffUtil을 사용하고 있었는데, 혹시나 리사이클러뷰가 두 개이니 각각의 리사이클러뷰를 갱신하지 못해서 생긴 문제인가 생각이 들었다. (리사이클러뷰 하나만 갱신을 진행하고 있는 상태) 물론 이게 문제가 아니었다.. 이것 때문에 막혀서 시간을 ..

Tistory

취했다.

제목 : 취했다. 으아.. 취했다.. 오랜만에 세민이랑 한잔했다.. 물론 세민이는 술을 마시지 않아서 나만 마셨다. 나도 처음 알았다. 내 주량이 2병에서 2병 반 정도라는 것을 알았지만, 혼자서도 2병을 먹을 수 있다니.. 술 상대가 없어도 두병을 마실 수 있다는 사실이 놀라웠다. 오늘 기쁜 점이 있었다. 최근에 회사에서 주문했던 클로즈잇에 개발이 거의 끝났다고 볼 수 있다. 이제 서버에서 API연동만 끝나면 내 작업도 마무리로 이어진다. 다시 여유롭게 코딩테스트도 하고, 안드로이드 공부도 따로 하고 싶다. 솔직히 말하면 코딩테스트보다 안드로이드 공부를 더 하고 싶다. 안드로이드 공부가 더 재밌다. 코딩테스트를 풀면, 솔직히 못 푼 날이 더 많지만, 정답일지 모르는 답변을 블로그 글로 작성하기 조금 꺼..

Tistory

몸이 가벼워 진다.

제목 : 몸이 가벼워 진다. 확실히 회사에서 일거리가 좀 생기니 요즘 정말 재밌어 진다. 유튜브 프리미엄도 끊고, 책만 보니, 생각 보다 재밌어서 일 끝나고 책 볼 생각에 신나기 까지한다. 앞으로 다가오는 7월 10일부터 헬스장을 다니기로 했는데, 꾸준히 다녔으면 한다. 공부할 의지도 다시 생기면서 기분이 좋다. 그래도 번아웃을 막기 위해 일주일에 한번 피시방과 매일 한시간 정도 게임을 해주고 있다. 이것마저 하지 않는다면.. 큰일나는 것은 아니지만, 나한테도 여가가 필요하다고.. 생각이 든다. 운동도 열심히 하고, 공부도 열심히 해서 내 가치를 올려보자..!! 어제 친구와 술을 먹으면서 대화를 나누었다. 문득 친구의 얼마나 돈을 모았냐는 말에.. 살짝 위축이 되었다. 나는 사실 그렇게 돈을 많이 모으지..

Tistory

android/kotlin StatusBar(상태표시줄) 가려짐 문제/ 보이지 않는 문제 해결법 TIL # 81

A 액티비티에서 B 액티비티로 이동하는 중, 다음과 같이 상태 표시줄이 사라지는 상황이 생겨 버렸다. 처음 들어간 화면인 A 액티비티에서는 잘 나오지만, B 액티비티로 이동하면 사라진다. A 액티비티 B 액티비티 알아보니 안드로이드에는 light모드와 dark 모드가 있는데, 그 둘을 구분하기 위한 statusbar 속성을 달아주어야 하는 것이다. theme.xml 이 두개가 있을 텐데, light 모드는 true 이것을 추가해주고 dark 모드는 false로 해준다. false 이렇게 각각 설정해주고 다시 앱을 실행해 보자. 정상적으로 잘 나오는 것을 확인할 수 있다.

Tistory

의도치 않게

제목: 의도치 않게 아고 갑자기 감기 기운이 있어서 아침에 의도치 않게 휴가를 써버렸다.. 너무 아까웠지만, 그래도 쓴 휴가인데 오늘 하루 알차게 보내려 했지만, 잠으로 거의 반나절을 보내버렸다.. 역시 쉬는 날이 그렇지... 역시나 휴대폰을 하게 되면 나도 모르게 시간이 많이 가 있다. 오후 8시가 넘어서 도서관에 들려 책을 한 권 빌리고, 집에 돌아와 코딩 테스트를 풀어보니 벌써 11시가 지났다. 이 일기를 쓰고 나서 빌려온 책을 읽으려고 한다. 코딩 테스트를 풀었는데, 오늘은 조금 어려운 문제인지라.. 현타가 힘들게 왔다. 답답한 마음에 해설을 읽었지만, 어.. 오히려 더 어려움을 느끼게 되었다. 강의라도 들어볼까.. 강의를 듣기 전에 어렵더라도 하나씩 이해해가면서 문제를 습득해봐야겠다. 오늘도 게..

Tistory

CodingTest # 19 Java 10250(ACM 호텔), 2775 (부녀회장이 될테야) 문제 풀이

https://st-lab.tistory.com/78 [백준] 2775번 : 부녀회장이 될테야 - JAVA [자바] https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1

Tistory

CodingTest # 20 Java 1978 (소수 찾기), 2581 (소수) 문제 풀이

역시나 전 문제도 문제풀이를 볼 수밖에 없었던 너무나도 어려운 문제였다ㅠㅠ 그래도 이번 문제는 직접 풀어 기분 좋아 글을 써본다. 물론 효율적인 방법은 아닌 것 같다. 다른 분이 써놓은 코드랑 비교하니 내가 너무 비효율적이었던 것이다. 우선은 기록이니 글을 쓰고, 답과 한번 더 비교해보며 공부해봐야겠다. 1978 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; import java.io.BufferedReader; import java.io.IOException; import java..

Tistory

다시 마음가짐 잡기

제목 : 다시 마음가짐 잡기 너무 오랜만이다. 사실 글을 쓸 때마다 자주 사용하는 단어이다. 갑자기 오랜만에 일기를 쓰는 이유는 간단하다. 내가 너무 나태해지며, 생활에 만족을 하면서 이 정도면 족하지, 오늘은 할 만큼 다했어, 유튜브 봐야지.. 디즈니 플러스 봐야지 넷플릭스 봐야지.. 집 가서 피파 해야지.. 등등 나를 위한 여가라고 생각이 들었다. 그러다가 문득 유튜브에서 한 영상을 봤는데, 동영상을 볼 때 우리 뇌가 활성화를 하지 않는다는 내용을 본 것이다. 우리 뇌가 활성화가 잘 될 때는 바로 '책 읽기'였다. 책을 읽을 때 뇌가 빨개지면서 매우 붉어지는 것을 확인할 수 있었다. 왜 사람들이 책을 읽으라는지 이해가 되었다. 뭔가 나 자신이 변했으면 하는 마음이 강했다. 바로 유튜브 프리미엄을 해지..

Tistory

CodingTest #16 Java 10809 (알파벳 찾기), 5622 (다이얼), 2941 (크로아티아 알파벳), 2908(상수), 2675(문자열 반복), 1157(단어 공부), 1152(단어의 개수)

오늘은 여자 친구와 하루 종일 공부를 했다. 평소에 하루에 하나씩 풀자던 코딩 테스트를 자주 풀지 못해 오늘 이렇게 하루종일 풀게 되었다. 하나하나 자세히 설명하기엔 시작은 부족하지만, 조금 설명을 해보겠다. 10809 public class Test10809 { //알파벳은 총 26개 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[26]; //모든 값 -1로 초기화 Arrays.fill(arr, -1); String s = br.readLine(); for(int i = 0; ..

Tistory

CodingTest # 17 Java 1316(그룹 단어 체커), 1712(손익분기점), 2292(벌집), 25083(새싹) 문제풀이

허.. 점점 어려워지고 있다. 난이도가 급 상승한 느낌이다... 한 문제를 몇 시간 동안 쳐다보고 있는지 모를 정도였다. 내 부족한 수학 실력에 대해서 깨우칠 수 있었던 시간이었던 것 같다. 이거.. 수학도 같이 공부해두면 좋을 것 같다. 1316 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Test1316 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStream..

Tistory

CodingTest # 18 Java 1193 (분수 찾기) 문제 풀이

목요일부터 시작해 오늘까지 풀 공부를 달리는 중이다.. 뿌듯한 마음도 들지만, 아직까지도 내가 부족하다 느낀다. 오늘은 어제 마지막까지 풀었지만, 수학 능력이 부족하다고 판단하여.. 계차수열을 좀 더 공부하고, 풀어본 1193 분수 찾기 문제이다. 오랜 시간이 걸려서 마침내 결과를 정답으로 바꾸었다. 아쉬운 점은 메모리를 많이 먹었다는 점.. 아무래도 코드를 간결하게 짜지 못했을뿐더러.. 대책없는 천만 단위까지 for문 돌리기, List에 사용으로 인한 것 같다. 그래도 서툰 정답과 구글을 통해 다른 사람의 정답과 비교해보았다.. 무려 100ms 시간 차이가 났다.. 보고 배울게 많은 것 같다. 우선 나의 코드이다. 1193 import java.io.BufferedReader; import java.i..

Tistory

CodingTest #13 / Java 4344 (평균은 넘겠지) 문제 풀이

오늘부터 코딩 미라클 모닝을 시도 중이다. 아침에 한 시간 일찍 일어나서 코딩 테스트를 푸는데 시간을 할애하는 것이다. 처음이라 조금 피곤하긴 했지만 나쁘지 않은 것 같다. 회사가 끝나고 돌아와서는 안드로이드 공부와 사이드 프로젝트를 할 수 있는 여유를 만들어 둘 생각이다. 오늘은 고로 한문제밖에 풀지 못하였다. 4344 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Locale; import java.util.StringTokenizer; public class Test4344 { public static vo..

Tistory

CodingTest #14 / Java 15596 (정수 N개의 합) 문제풀이

오늘도 미라클 모닝을 실현했다. 그리고 지금 이 글을 쓰고, 안드로이드 강의를 들으려고 한다. 그런데, 오늘 아침 코딩 테스트를 풀어보니 느낀 점은, 어려운 문제가 나오면 출근 전이다 보니 시간에 쫓기듯 문제를 푼다는 점이다. 가뜩이나 시간도 별로 없는 상황에서 말이다. 그래서 한번 아침에 강의를 듣고, 저녁에 코딩 테스트를 풀어보려고 한다. 시간적 여유를 가지고 풀고 싶기 때문이다. 오늘 문제도 1문제밖에 풀지 못했지만, 꾸준히 풀어나가자. 이번엔 처음으로 함수를 만드는 문제였다. 15596 public class Test15596 { long sum(int[] a) { long result = 0; for(int i = 0; i < a.length; i++) { result += a[i]; } ret..

Tistory

CodingTest #15 / Java 4673 (셀프 넘버), 1065 (한수), 11654 (아스키 코드) 문제 풀이

정신없이 흘러간 일중리이다.. 셀프 넘버를 풀다 어려워 답을 보고, 한수를 풀다가 어려워 답을 보고... 갑자기 난이도가 급 어려워진 느낌을 받았다. 자연스레 어려운 느낌을 받아 며칠간 코딩 테스틀 풀기가 꺼려지면서 도전하지 못하고 있다가, 너무 쉰 것 같아서 이어서 풀었다. 역시나.. 늦은 시간이라 답만 접어두려 한다. 4673 public class Test4673 { public static void main(String[] args) { boolean[] check = new boolean[10001]; for (int i = 1; i < 10001; i++) { int self = getSelf(i); //true는 셀프넘버가 아닌 숫자이다. if (self < 10001) check[self]..

Tistory

CodingTest #10 / Java 1110 (더하기 사이클), 10818 (최소, 최대) 문제 풀이

어제 반복문 과제의 마지막 문제인 "더하기 사이클"을 풀다가, 아무리 풀어도 시간 초과가 되어 푸는데 어려움 겪었다. 풀이는 다음과 같다. 1110 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; public class Main { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Bu..

Tistory

CodingTest # 11 / Java 2562 (최댓값), 2577 (숫자의 개수) 문제풀이

오늘은 어머님 생신 기념으로 복어를 먹으러 간다. 난생처음으로 먹는 복어라서 설레는 마음이 가득하다. 복어 먹으러 가기 전에 여자 친구와 스터디 카페에 와서 공부 중이다. 오늘 문제는 조금 고전했다. int [] 배열과 Integer [] 배열에 적용되는 메서드가 달라서 애를 먹었기 때문이다. 문제 풀이를 보자. 2562 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.stream.IntStream; public class Main { public static void main(String[] args) throw..

Tistory

CodingTest #12 / Java 3052(나머지), 1546(평균), 8958(OX퀴즈) 문제풀이

새벽에 삘이 꽂혀 풀은 3문 제이다. 내일부터는 아침 6시 30분에 일어나서 코딩 테스트를 풀려고 한다. 저녁에는 사이드 프로젝트나, 안드로이드 강의를 들을 시간을 남겨두어야 할 것 같다. 3052 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; public class Test3052 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(S..

Tistory

CodingTest #8 / Java 10871 (X보다 작은 수) 풀이

오늘은 여자 친구와 벚꽃을 보러 갔다 왔다. 아침에 조기축구까지 해서 너무 피곤하다.. 하지만 한 문제라도 풀자.. 10871 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.i..

Tistory

CodingTest #9 / Java 10952 (A + B - 5), 10951 (A + B - 4) 풀이

앱을 배포하는데 이슈가 생겼다. 이 이슈에 대해선 글을 하나 더 써야겠다. 오늘은 3문제를 풀었는데, 한 문제는 백준이 중간에 서버가 이상하여 풀다 말았다. 내일 올려야겠다. 오늘은 두 문제를 풀었다. 10951 import java.util.StringTokenizer; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..

Tistory

Android aab(앱 번들) 용량이 150MB가 넘을 때 해결법 (shrinkResources와 minifyEnabled를 쓰지않고)

오늘 정말 수난시대였다. 물론 내가 릴리즈를 제대로 실행시켜 보지 못하고, (그 전날에 테스트해서 괜찮을 줄 알음) 그대로 올린 것이다.. 결과는.. 로그인이 되지 않는 대형사고를 쳐버린 것이다. 서둘러 아침부터 원인을 찾아 나섰다. 우선 어젯밤 내가 aab 파일이 180mb가 넘어서 구글 플레이 콘솔 정책상 150mb가 넘으면 안 된다는 규칙 때문에, 올리지 못하게 된 것이다. 그래서 다음과 같이 릴리즈 버전에 설정을 달리 하였다. 바로 이 shrinkResources와 minifyEnabled 속성을 true로 바꾸어 주는 것이다. shrinkResources는 드로어블 파일을 전체적으로 축소시켜 주어, 앱의 사이즈를 줄여 주는 역할을 하고, minifyEnabled은 코드를 난독 처리하여, 보안 강..

Tistory

CodingTest #6 / Java 1021 (A+B - 7), 1022 (A+B - 8), 2438 (별 찍기 - 1) 풀이

오늘은 3문제를 풀었다. 문제를 풀다가 String과 StringBuffer와 StringBulider의 차이점에 대해서 검색해보았다. String 같은 경우는 하나의 메모리 주소를 가지고 있기 때문에 값이 변하지 않는 immutable 성격을 가지고 있다. 그런데 이 String의 문자열을 붙이면, 기존의 있던 String의 주소가 힙 메모리에 임시로 저장되게 되어, 성능 저하로 이어진다. 이러한 문제를 해결하기 위해 두 가지 해결방안이 제시된다. StringBuffer와 StringBuilder이다. 이 둘 중 어느 것을 써도 상관은 없다. 하지만, 코드 양이 많아지고, 문자열 연산이 많아지면, 두 개중에서 적절한 것을 사용해야 한다. StringBuffer 같은 경우는 동기화를 고려하고, 멀티 스레..

Tistory

CodingTest #7 / Java 2439 (별 찍기 - 2) 풀이

오늘은 채팀장님과 술을 마시고 와서, 시간이 늦어 하나만 풀어보았다. StringBuilder에 익숙해지고 있다. append와 replace에 익숙해지자. https://github.com/qjsqjsaos/CodingTest GitHub - qjsqjsaos/CodingTest: 하루에 하나씩 목표로 하는 코딩테스트 하루에 하나씩 목표로 하는 코딩테스트. Contribute to qjsqjsaos/CodingTest development by creating an account on GitHub. github.com 2439 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public..

Tistory

CodingTest #3 / Java 2739번(구구단), 10950번(A+B - 3) 문제 풀이

오늘 우리나라와 UAE와 축구가 하는 날이다.. 쉽더라도 두 문제만 풀고 어서 축구를 보려고 한다. 두문제 모두 Stream과 StringTokenizer를 이용하여 쉽게 해결하였다. 2739 import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException{ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int num = Integer..

Tistory

CodingTest #4 / Java 8393번(합), 15552번(빠른 A +B) 풀이

아고.. 이번 주가 앱 배포라 바쁘다. 최근에 사이드 프로젝트에도 참여하려고 했으나.. 여유가 없으니./ 우선 코딩테스트를 더 적응하고 나서 해도 늦지 않을 것 같다. (아니면 병행을 해도..) 8393 이 문제는 전 문제와 비슷하여 쉽게 풀었다. import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); int value = Integer.parseInt(bf.readLine()); int result = 0; for(int i = 1; i

Tistory

CodingTest #5 / Java 2741 (N 찍기), 2742 (기찍 N) 풀이

오늘 부터 풀은 문제를 깃헙에 정리해서 올리려고 한다. https://github.com/qjsqjsaos/CodingTest GitHub - qjsqjsaos/CodingTest: 하루에 하나씩 목표로 하는 코딩테스트 하루에 하나씩 목표로 하는 코딩테스트. Contribute to qjsqjsaos/CodingTest development by creating an account on GitHub. github.com 2741 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRead..

Tistory

Android / java 카카오 로그인 중 발견한 에러 해결하는 법 / KakaoTalk is installed but not connected to Kakao account.TIL # 81

너무 오랜만에 글을 써서 어색하다. 요 며칠 동안 코딩 테스트, 스마트 스토어 준비, 회사 앱 개발, 마블 정주행 등등.. 아무쪼록 빈틈없는 바쁜 날들을 보내고 있다. 오늘은 카카오톡 로그인 기능을 구현하고, 디버그와 릴리즈 해시 키를 등록하였음에도 불구하고, KakaoTalk is installed but not connected to Kakao account. 같은 오류가 뜨는 이유를 알아보자. 위에 영어 뜻은 카카오톡은 설치되엇지만, 카카오 계정이 연결되지 않았다는 뜻이다. 말 뜻 그대로, 카카오톡은 설치했지만, 카카오톡 로그인을 하지 않았다는 뜻이다. 이에 대한 예외 처리를 해주면 된다. 다음 코드를 보자. public void signInKakao(Context context) { this.co..

Tistory

CodingTest #1 / 백준 오븐시계 답안

바쁘다 바뻐... 회사일도, 코딩 테스트도 준비하다보니, 글을 많이 쓰지 못했다. 거의 한달만에 글을 쓰는 것 같다. 이제 매일매일 하루에 하나 이상 코딩 테스트를 풀고 기록하려고 한다. 다음은 내가 푼 백준 오븐시계 이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.StringTokenizer; import java.lang.Math; public class Main{ public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new ..

Tistory

CodingTest #2 / Java 백준 주사위 세개 답안

오늘 풀어본 코딩 테스트는 백준 "주사위 세 개"라는 문제였다. 코딩 테스트를 진행할 때 나는 문제 푸는 것에만 즉, 정답을 맞히는 것만 집중을 하다가 오늘은 명확하게 잘 알 수 있게 코드를 정리하면서 쓰는 것에 집중하여 작성하였다. 코드 스타일에 대해서 좀 더 신경을 써보자. 3개의 주사위가 모두 같을 때를 구분하기 위해 불리언 값으로 미리 나누어 두었는데, 마지막에 if를 세 개를 써서 사용하니, 예외 처리를 하지 못해 답이 올바르게 나옴에도, 틀렸습니다가 나왔다. 되도록이면 if if else else 문으로 사용을 해야겠다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; impo..

Tistory

Android / Java 안드로이드 암호화 (RSA) / 비대칭 암호화와 대칭 암호화 TIL # 78

요즘 일찍 일찍 자는 중이다. 취미도 잘 즐기고 있고, 코딩도 즐겁게 하고 있다. 12시에 자야 하고, 배운 것도 써야 하니, 오늘 배웠던 것은 크립토 라이브러리이다. https://developer.android.com/guide/topics/security/cryptography?hl=ko 암호화 | Android 개발자 | Android Developers Android의 암호화 기능을 알아보세요. developer.android.com 자세한 정보는 이 곳에서 볼 수 있다. 암호화는 보통 로그인을 할 때 아이디나 비밀번호 등 보안을 위한 값들(키 스토어 라이브러리 사용을 하는 경우이지만 여기서는 암호화)을 보통 암호화를 해주고 서버에 보내주곤 한다. 보통 크게 암호화에는 두 가지가 있다. 대칭 암..

Tistory

Android / java 레트로핏2 rxJava2 오류 해결법 Unable to create call adapter for io.reactivex.Observable<retrofit2.Response> for method XXXXApi.postXXX /TIL # 79

안드로이드 레트로핏을 연동 rxJava2를 통해 스트림으로 서버를 호출하였다. 그런데 하루 종일 다음과 같은 오류가 계속 떴다. Unable to create call adapter for io.reactivex.Observable for method LeaveOutApi.postLeaveOutUser 호출하는 어뎁터를 만들 수 없다는 뜻인 것 같은데, 해결법을 찾아보니, .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 레트로핏 빌더에다가 다음과 같은 AdapterFactory를 추가해주라는 것이었다. 하지만 이미 난 레트로핏에다가 추가를 해주었다. 그렇다면 무엇이 문제일까? 문제는 이것이었다. REST를 호출하는 인터페이스 부분에서 Observa..

Tistory

Android/java Mac 터미널로 간단히 private Git Repositary Clone 하는법TIL # 80

오늘은 간단히 터미널로 private 되어 있는 깃 레포지터리를 가져오는 방법을 알아보겠다. git clone https://[git userName]:[git password or git token]@github.com/[repositary path] 정말 간단하다 터미널에 다음과 같이 입력한다. git userName은 이 녀석이고, git password or git token에다가는 깃 비밀번호나 토큰 값을 넣어주면 된다. 나 같은 경우는 토큰을 넣었다. 그리고 repositart path에다가는 깃 주소를 넣어준다. 이 드래그 친 부분을 넣어주면 된다. 이런식으로 넣어주면 된다.

Tistory

Android/Java 일일이 xml에서 바꾸지 않고 java코드 한줄로 텍스트 sp를 dp로 고정하기 TIL # 76

간혹 이런 일이 있는 듯하다. 나 또한, 회사에서 디바이스별로 대응하기 위해서도 있지만, 일반적인 디바이스와 태블릿 디바이스로 크게 나누었을 때, 일반적인 디바이스에서 크기를 고정해서 앱을 출시하는 쪽으로 가는 경우 말이다. 그런 경우 때문에 회사에 요구대로 기존 텍스트를 sp로 사용했던 것을 dp로 변환하는 작업을 하게 되었다. 하지만, 이미 만들어진 앱은 모든 text가 sp로 되어 있었다. 나는 그래서 답을 찾았다. sp로 되어 있어도, 모든 앱을 sp 자체를 고정시킨 값으로 디바이스에 적용시킬 수 있다. 바로 다음 코드이다. @Override protected void attachBaseContext(Context newBase) { final Configuration override = new ..

Tistory

Android / Java interface(인터페이스) 초간단 이해 / callback #TIL 77

이 글은 간단한 인터페이스에 대한 예제만을 보여드립니다. 깊게는 들어가지 못하는 제 게으름과 실력을 탓합니다. flutter만 하다가 자바로 넘어온 지 어언 2주가 넘어간다. 문득 궁금한 기능이 생겼는데, 바로 A라는 액티비티에 있는 메서드를 내가 B액티비티 혹은 프래그먼트에 있을 때, 실행시키고 싶다면 어떻게 해야 할까? flutter에 경우는 생성자로 Function을 넘겨주어 그 function을 실행하면, 생성자를 넘겨준 쪽에서 이 함수가 실행이 되었다. 그렇다면 자바에서 어떻게 할까? 바로 인터페이스다. 나도 항상 이 인터페이스를 그날그날 이해하면서도, 잘 모르고 넘긴 경우가 있다. 사실은 아직도 잘 모르지만, 이번에 내가 위와 같은 상황에서 인터페이스를 활용하는 법을 기록하기 위해 적어둔다. ..

Tistory

Git / Android Studio Github(깃헙)에 올라간 커밋 삭제하기 TIL # 74

요소수 앱이 벌써 다운로드 100회를 돌파했다!! 아 지금은 이 얘기보다는 새로운 회사에 들어가 내가 모르고 커밋을 실수로 하는 바람에 쓸데없는 커밋이 깃허브로 푸시되었다. 자 간단하게 지우는 법을 알아보자. 우선 커밋 내역을 확인하자 터미널에 다음과 같이 입력한다. (Android Studio 터미널이나 맥 터미널 윈도는 명령 프롬프트) git log 커밋 내역을 확인하는 기능인데, 사실 이 기능은 어떤 커밋이 있나 확인만 하는 거라 굳이 안 해도 된다. git reset HEAD^ 이렇게 입력하면 최근 커밋이 하나 사라진다. 아쉽게도 내가 어떤 특정 커밋을 지우는 법은 잘 모르지만, 순차적으로 최신 것부터 차례대로 지우는 법만 알고 있다. 만약 여러 개를 지우고 싶다면 git reset HEAD~n ..

Tistory

앱 다운로드 수 210회 돌파!! "요소수 주유소" / 수익 공개

하 정말 감격스러운 순간이다. 앱 개발자를 시작한 이례로 딱 두 번 앱을 출시했다. 첫 번째 앱은 "그만 : 금연 다이어리" 앱이다. 취업을 위한 첫 포트폴리오를 위해 만들었던 앱으로, 정말 한 땀 한 땀 정성스레 만들어 4개월 만에 만들었다. 지금 만들라고 하면, 한 달이면 가능할 것 같다... 하지만 그 앱은 망했다.. 멋진 추억이지만, 사용자수도 10명 안팎이었고, 서버 비용도 들어서.. 그냥 추억은 추억으로 묻어두고 싶어, 앱을 플레이스토어에서 내렸다. 그렇게 시간을 흘러 나는 앱 개발자로서 직장을 다니던 무렵, 요소수 대란이 찾아오게 되었다는 소식을 화물을 하시던 아버지께 들었다. 뭔가 좋은 방법이 없을까 생각하던 중에 혹시나 하고 공공데이터 포털 사이트로 들어가게 된다. 그곳에는 무료로 국가에..

Tistory

Android/Java 현재 설정된 디바이스 언어 값 가져오기 TIL # 75

현재 회사의 앱에서 영어와 한국어, 이렇게 두 글로벌 언어를 두고, 기기에서 언어에 맞게 대응하고 있다. 그러다가, 자바 코드에서 언어뿐만 아니라, 해당 언어에 따라, ui나 메서드를 달리하고 싶은 일이 생겼다. 그렇게 해서 알아낸 코드가 이것이다. Locale mSysLocale = getResources().getConfiguration().locale; String strLanguage = mSysLocale.getLanguage(); 다음 코드를 사용하면, 현재 디바이스에 설정되어 있는 언어 코드가 String에 담긴다. 메서드를 만들어 예를 들면 public class MainActivity extends AppCompatActivity { @Override protected void onCre..

Tistory

Android Studio/ Java 안스에서 main함수 실행시 실행이 안되는 이유 TIL # 72

2021.11.26 - [Programing/Android Studio With Java] - Android Studio/ Java Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 오류 해결하기 TIL # 71 Android Studio/ Java Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 오류 해결 안드로이드 스튜디오에서 자바로 main를 두고 어느 때와 다름없이 RunTime 버튼을 눌렀는데 다음과 같은 오류가 떴다. Deprecated Gradle features ..

Tistory

Java 얕은 복사와 깊은 복사, Shallow copy vs Deep copy / List에 값을 변경해도 값이 같아지는 이유 TIL # 73

이 글은 잭 코딩님의 글을 참조했습니다. https://jackjeong.tistory.com/100 [Java] Shallow copy(얕은 복사) vs Deep copy(깊은 복사) 안녕하세요~ 잭코딩입니다! 이번 내용에서는 Shallow copy(얕은 복사)와 Deep copy(깊은복사)를 살펴봅시다 코드를 짜다보면 객체를 복사해야할 경우가 생깁니다 이 때 실수로 복사를 잘못하면 큰 이 jackjeong.tistory.com 코딩 중에 갑자기 문득 궁금한 게 생겼었다. 나 같은 경우는 리사이클러뷰 어뎁터를 사용하다가 검색창 기능을 만들기 위해 같은 ArrayList를 두개 만들어주고, 똑같은 값을 이런 식으로 넣어 주었다. 그런데 이렇게 값을 넣어주는데, 검색을 해도 아이템이 나오지 않았다. 구글링..

Tistory

틈틈이 하는 주식 공부 # 1 /왕초보 주식 투자 시크릿

개발 공부도 좋지만, 역시 성공을 하려면 돈을 벌고, 그 돈을 어떻게 쓰는지가 중요하다고 생각한다. 돈은 유동적이야 그 가치가 생긴다고 생각한다. 돈을 벌고 투자를 하는 법을 알아보자. 그래서 시작한게, 주식 책을 산 것이다. 주식 책을 하루에 30분정도라도 보면서 이렇게 배운 것을 정리하려고 한다. 지금은 초반이니까 그냥 무지성으로 필기했던 것을 쓰려고 한다. 이렇게 하는 게 맞겠지.. 하하 참고 책 : 왕초보 주식 투자 시크릿 (박동우) 2011년 1월 주식 투자자는 460만명에 달한다. 시가총액은 1300조 원에 이른다. 2010년 7월에는 외국인 투자자가 3만명을 돌파했다. 1년 동안 돈을 가장 많이 번 수단이 부동산 다음으로 주식이 높았다. 주식은 기본에 충실해야 한다. 남들이 많이 사는 종목이..

Tistory

The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion 에러 해결법 / TIL # 70

최근 sdk 버전 31까지 나와 이러한 오류가 뜬 것 같다. The minCompileSdk (31) specified in a dependency’s AAR metadata is greater than this module’s compileSdkVersion 이 말인즉슨, 현재 사용되는 라이브러리 패키지들의 최소 sdk 버전이 이 앱의 compileSdkVersion 보다 크다고 한다. 그러면 우리는 compileSdkVersion을 31로 바꾸어 주면 된다. android { compileSdkVersion 31 //

Tistory

Android Studio/ Java Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 오류 해결하기 TIL # 71

안드로이드 스튜디오에서 자바로 main를 두고 어느 때와 다름없이 RunTime 버튼을 눌렀는데 다음과 같은 오류가 떴다. Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. 빌드 시에 deprecated 된 기능들이 있어서 현재의 gradle과 호환이 맞지 않다는 이야기이다. 그 아래에 --warning mode all을 사용하라고 명시까지 해주었다. 그렇다면, 이 녀석을 어디서 사용할까? 맥은 preferences로 윈도는 settings로 가게 되면, Build, Execution, Deployment -> Compiler를 들어가면, Command-line Options 입력창에 --w..

Tistory

Android / Java Retrofit2 완전 쉬운 사용법 / 예제 feat. POJO Class 자동생성 사이트 #TIL 68

네이티브로 돌아온 느낌은 꽤나 신선하다. 오늘은 현직에서도 자주 사용되고 있는 Retrofit을 다루려고 한다. 보통 서버 api 통신을 할 때 편리하고 간단하게 사용될 수 있는 라이브러리로써 많은 사람들에게 사랑받고 있는 라이브러리라고 할 수 있다. 그렇다면 한 번 예제를 봐보자. 사용법 dependencies { //retrofit2 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' } 우선 이 두 종속성을 build.gradle(:app)에 추가를 해주는 것으로 시작합니다. 최신 버전이 있다면 버전을 올려주세요! 여기서 잠깐 알고 갈 것!! g..

Tistory

Android / Java 로딩창 간단히 띄우는 법 #TIL 69

로딩 창을 간단히 띄우는 법에 대해 소개하려고 한다. 우선 로딩 창 화면을 만들기 위해 SplashActivity라는 이름으로 EmptyActivity를 하나 만들어 주자. 현재 나는 뷰바인딩을 같이 쓰고 있는 상태이다. public class SplashActivity extends AppCompatActivity { ActivitySplashBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivitySplashBinding.inflate(getLayoutInflater()); setContentView(binding.get..

Tistory

flutter / dart retrofit2 패키지를 이용하면서 statusCode 추출하기 200/400/500 # TIL 67

지금 회사에서 플러터를 거의 마무리하면서, 내가 토이 프로젝트를 하지 않는 이상 이제 플러터와는 살짝 멀어지면서, 네이티브에 더 집중할 것으로 예상이 된다. 오늘은 이전 글이었던, 2021.10.04 - [Programing/Android Studio With Kotlin] - flutter/dart /JSON과 직렬화 api 서버통신 자동으로 만들기 / retrofit, dio, retrofit_generator, build_runner, json_serializable /TIL # 64 flutter/dart /JSON과 직렬화 api 서버통신 자동으로 만들기 / retrofit, dio, retrofit_generator, build_runner, json_ 오늘은 api 서버통신에 대한 글을 작성..

Tistory

요소수 주유소 개인정보처리방침

요소수 주유소 앱은 어떠한 개인정보도 수집하지 아니하며, 공공데이터포털에 정보를 통해서만 요소수 재고량, 위치 등만 고지됩니다.

Tistory

요소수 거점 주유소 실시간 알림앱 "요소수 주유소" 만드는 과정과 후기

앱 출시일 현재 앱 검토 중이니 느리면 1주일에서 2주일 정도 소요될 것 같습니다ㅠㅠ 빠르면 4일 안에 검토 완료되고 배포 될 것 같습니다. 앱을 만들게 된 계기 시작은 요소수 대란이 일어나고, 운수업을 하시던 아버지께서 부족해진 요소수로 인해, 물량이 있고, 싼 가격에 거점 주유소를 찾기가 힘들어졌고, 화물 운수를 종사하시는 분들이 단톡방을 만들어서 서로 공유를 주고받고 있으시다는 걸 알게 되었다. 그 와중에 나 또한 플러터 회사에서 네이티브로 옮기게 되면서, 한 번 엄청난 기능은 아니지만, 오랜만에 네이티브도 경험할 겸, 도움도 될 겸, 저 데이터들을 편하게 볼 수 있는, 굳이 정부 데이터 사이트 들어가서 정보를 가져오는 번거로움을 줄이고자, 앱을 만들자고 생각이 들었다. 그래서 부리나케 앱을 만들었..

Tistory

TIL # 65 androidStudio / plugin과 gradle 버전 맞추기 (feat. offlineMode)/ No cached version of com.android.tools.build:gradle:4.0.0 available for offline mode. / could not resolve all files for configuration ':classpath'. / could not resolve com.a..

코딩을 하다 보면 배우고 싶거나 모르는 라이브러리에 대한 소스코드를 찾아다니게 된다. 나 같은 경우는 githup에서 소스코드를 찾는 경우가 있는데, 깃 헙 홈페이지에서 소스를 참고하면서 라이브러리 예제를 보면서 적용을 할 수가 있다. 혹은 예제 소스를 그대로 다운을 받아 우리가 빌드를 해보려고 시도하는 경우가 있는데, 아주 자주자주 이 오류와 마주치게 된다. could not resolve com.android.tools.build:gradle:x.x.x. could not resolve all files for configuration ':classpath'. No cached version of com.android.tools.build:gradle:4.0.0 available for offline..

Tistory

android / flutter no devices found with name or id matching 'emulator-xxxx' exited (1) 에러 해결하기 TIL # 66

여느 떄와 같이 플러터 작업을 하던 중에 저런 오류가 떴다. 일시적인 오류로 디바이스를 찾지 못하는 이유인 것 같아서, 구글링을 해보니 해결법은 생각보다 간단했다. 아이폰 시뮬레이터에 경우에는 기존 바탕화면에 설치되었던 앱을 삭제하고, usb 포트를 뽑고 다시 연결 후 앱을 빌드하면 정상 빌드가 되고, 안드로이드 같은 경우는 Tools -> AVD Manager로 들어가 해당 안드로이드 기기를 Wipe Data(데이터 초기화) 해주고, 다시 재빌드를 해보면 정상 작동하는 것을 알 수 있다. 끝!

Tistory

Xcode 설치 및 업데이트가 느릴 때 / Xcode 설치가 느려요/ Xcode 빠르게 설치하는 법

예전에 봐둔 내용이지만 유용할 수 있어서 정리 해본다. 맥북을 이용하면서 플러터를 사용하다보니 App Store에서 Xcode를 업데이트하라는 메세지를 받게 되어 업데이트를 진행하였다. 그런데... 무슨 3시간이 지나도 끝 지점에서 그대로 있는 것이다.. 구글링을 해보니 8시간 기다려도 그대로인 사람도 있다고 하더라. 앱 스토어 리뷰를 보니, 엑스코드 자체가 설치가 굉장히 느린 듯하다. 다른 사람들도 비슷한 피해를 입은 듯하다. 빠르게 설치하는 해결법은 다음과 같다. 해결법 차리리 이렇게 업데이트하는 것보다 삭제하고 다시 설치하는게 더 빠르다는 의견을 보았다. 그러나, 앱스토어에서 다운을 받으면 안된다. (이상하게 앱스토어에서 다운을 받으면 느렸다.) http://developer.apple.com/do..

Tistory

Flutter / dart / Provider를 활용하여 Infinite_Scroll 구현하기 / Future.microtask/ TIL # 62

예전에도 이와 비슷한 글을 올린 적이 있다. 2021.07.27 - [Programing/Android Studio With Flutter(Dart)] - Flutter/Dart 리스트 슬라이드 로딩 구현 SmartRefresher 사용법 / Refresh 새로고침 구현 하기 TIL # 47 Flutter/Dart 리스트 슬라이드 로딩 구현 SmartRefresher 사용법 / Refresh 새로고침 구현 하기 TIL # 47 요즘 뜻대로 코드가 잘 짜여서 기분이 좋다. 오늘은 회사앱에도 적용 SmartRefresher이라는 패키지에 대해서 소개해 볼까 한다. https://pub.dev/packages/pull_to_refresh/install pull_to_refresh | Flutter Pa.. d..

Tistory

Android / kotlin / 컬렉션 타입 (3) Array, List, Set, Map /TIL # 63

오늘 벌써 글만 3개째이다. 공부량이 많은 만큼 좋다고 생각한다. 오늘도 역시 깡샘의 안드로이드를 출처로 한다. 오늘 배울 것은 코틀린의 컬렉션 타입이다. Array - 배열 표현 코틀린의 배열은 Array라고 표현하며, 첫 번째 매개변수는 배열의 크기를 지정하며, 두 번째 매개변수는 초기값을 지정하는 함수이다. (size: Int, init: (int) -> T) 예를 들어 이렇게 선언할 수 있다. val data: Array = Array(3, { 0 }) 배열의 데이터에 접근할 때는 대괄호([])나 set(), get() 함수로 값을 넣어주거나 가져올 수 있다. fun main() { val data1: Array = Array(3, { 0 }) data1[0] = 10 data1[1] = 20 d..

Tistory

flutter/dart /JSON과 직렬화 api 서버통신 자동으로 만들기 / retrofit, dio, retrofit_generator, build_runner, json_serializable /TIL # 64

오늘은 api 서버통신에 대한 글을 작성하려 한다. 참고 자료는 코딩 팩토리님의 영상과 아래 공식 문서를 참고했다. https://flutter-ko.dev/docs/development/data-and-backend/json JSON과 직렬화 어느 시점부터 웹 서버와 통신하지 않거나 구조화된 데이터를 적절하게 보관하지 않는 모바일 앱을생각하기 어려워졌습니다. 네트워크와 연결된 앱을 제작할 때, 결국에는 제법 괜찮은 JSON을사 flutter-ko.dev 우선 이 직렬화를 자동으로 쓰지 않으면 생길 수 있는 문제점에 대해서 설명하겠다. 보통 우리가 서버에서 api를 통해 json 데이터를 받아오는데, 모델 클래스를 만들어 받는 경우가 흔하다. class User { final String name; fi..

Tistory

Android/ kotlin 코틀린 변수와 함수 정리(2) / 여러 데이터 타입, Any, Unit, Nothing, 널 허용과 불허용, 명명된 매개변수(named parameter) # TIL 60

2021.09.29 - [Programing/Android Studio With Kotlin] - Android/ kotlin 코틀린 변수와 함수 정리(1) / 데이터 타입과 문자열, lateinit, lazy등등 # TIL 58 Android/ kotlin 코틀린 변수와 함수 정리(1) / 데이터 타입과 문자열, lateinit, lazy등등 # TIL 58 플러터를 사용하면서 동시에 코틀린을 공부하려고 한다. 하이브리드 앱이 대세라고 하지만, 주 언어로 네이티브를 가져가고 싶은 욕심이 커서 동시에 공부 중이다. 역시 나는 do it 책에서 헤어 daldalhanstory.tistory.com 우선 앞서 공부했던 첫번째 글부터 보고 오시면 이해가 빠르실 겁니다. 두번째 공부내용을 정리해보겠습니다. 저번..

Tistory

Flutter / dart / Equatable 개념에 대해서 설명 / 객체 비교 TIL # 61

이 글은 코딩 팩토리님의 equatable 강의를 바탕으로 참고했습니다. 이제 회사에서 새로운 앱을 만들기 앞서, 필요한 플러터 지식을 쌓기 위해 고전해야겠다고 생각이 들어 필요할 것 같은 플러그인을 찾고 있는 중이다. 그중에 Formz라는 로그인 기능 구현 시 유용한 플러그인을 발견하게 되었는데, 같이 사용할 수 있는 Equatable이라는 플러그인을 알게 되었다. Formz를 배우기 앞서 Equatable에 대한 개념을 잡고 가고자 한다. 객체의 인스턴스 우선 인스턴스에 대해 알아볼 필요가 있다. 객체의 인스턴스에 대한 개념은 지난 싱글톤 글에 대해서 설명한 적이 있다. 2021.07.11 - [Programing/Android Studio With Flutter(Dart)] - flutter/Dar..

Tistory

flutter / dart Error: CocoaPods's specs repository is too out-of-date to satisfy dependencies.To update the CocoaPods specs, run: pod repo update 에러 해결 TIL # 57

이따금씩 플러터 앱을 실행하면 이러한 오류가 뜬다 영어 뜻대로 flutter를 실행하기 위한 cocoaPods의 저장소가 오래되어, 종속성을 충족하기 어려워 Pod 레포지터리 업데이트를 해주세요. 라는 뜻이다. 그렇다면... 해줘야지.. 우선 왼쪽에 프로젝트 창에서 ios 안에 Podfile.lock을 지워준다. 저기 연두색 Podfile.lock을 우선 지워준다. 그러고 나서 터미널 창에 다음과 같은 명령어를 입력해준다. cd 내 앱이 있는 경로/ (ex test앱이라 가정할 때, folder/test) 입력한다. 그다음에는 cd test/ios를 입력하여 ios로 들어가 준다. pod install --repo-update 라고 입력하고, 앱을 실행해 보자. 만약에 아래와 같은 오류가 뜬다면 지정된 ..

1 2 3 4