전체 글

Android 및 취미 활동을 공유하는 블로그입니다!!
Android/Common

[Android] 내부 DB - Room

로컬 디바이스에 데이터를 저장하는 방식을 SQLite를 사용하고 있다가 요즘 유명한 AAC인 Room을 공부해보려고 합니다. Room은 SQLite를 내부적으로 사용하고 있어 기능적으로 동일하지만 데이터베이스를 구조적으로 분리하여 편리한 데이터 접근과 유지 보수의 유연성을 높여줍니다. 하지만 어노테이션을 사용하여 관계를 정의하므로 안드로이드에 익숙하지 않다면 복잡하게 느껴질 수도 있습니다. 들어가며 이 포스팅은로 필자의 개인 프로젝트에서 사용자의 계정을 저장하는 Account Database를 Room으로 구현하는 방법에 대해 필요한 코드만 간추려서 작성한 글입니다. 구현하고자 하는 기능, 요구에 따라 구조가 달라 질 수 있으니 참고정도로만 생각해주시면 감사하겠습니다. build gradle depend..

Algorithm_Java

[알고리즘] 백준 1929 소수 구하기 - 에라토스테네스의 체

문제 본문 소수는 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수입니다. 대표적으로 2, 3, 5, 7.. 등등이 있습니다. 단순 소수 찾기 - O(n^2) public static boolean isPrime(int num) { if (num == 1) return false; for (int n = 2; n < num; n++) { if (num % n == 0 ) { return false; } } return true; } 가장 간단하게 소수를 구하는 방법은 1을 제외하고 자신보다 작은 자연수로 나누어 나머지가 0이 나오는 지 확인하는 것입니다. 하지만 위 방법은 O(n^2)의 시간 복잡도를 가져서 num의 값이 크다면 시간초과를 발생합니다. 제곱근을 활용하여 소수 찾기 -..

Language/kotlin

[Kotlin] Singleton

java와는 다르게 kotlin에서 singleton은 아주 간편하게 구현할 수 있다. java의 Singleton Object 기본 사용 object A var a : A = A kotlin의 object 키워드는 Singleton을 보장해준다. 한 줄이여서 너무 간편하다.. 하지만 object는 생성자를 지원하지 않기 때문에 만약 Singleton을 생성할 때 매개변수가 필요하다면 사용할 수 없다. companion object로 구현 class A { companion object { @Volatile private var instance: Singleton? = null @JvmStatic fun getInstance(context : Context): A = instance ?: synchron..

Language/Java

Java의 Singleton

Singleton 패턴은 Class의 인스턴스를 여러 번 생성하는 것이 아닌 하나의 클래스당 하나의 인스턴스를 가지게 만들어 불 필요한 메모리 낭비를 최소화하는 디자인 패턴입니다. Java에서 Singleton 패턴을 구현하는 방법은 여러 가지가 있고 하나씩 소개하도록 하겠습니다. Eager Initialization public class A { private A instance = new A(); private A() {} public static A getInstance() { return instance; } } 가장 기본적으로 singleton으로 구현한 형태입니다. 기본 생성자를 private로 선언하여 외부에서 생성자의 호출을 막고 오직 getInstance함수로 인해 클래스 객체에 접근할 ..

Language/Java

Java - String pool

평범했던 평일 오후, 오픈 톡방에서 한 사람이 Android Intent 이동 부분에서 발생한 오류 부분을 알려달려고 물어 봤다. final String val = "길찾기" if ( val == textView.getText().toString()) { // Intent로 다른 엑티비티로 이동 } 보자마자 String 객체를 == 연산으로 비교한 것이 잘못이라고 생각했지만 큰 오산이었다. String의 메모리 할당 구조에 대해서 잘 알지 못하여 발생한 착각이었다. Java String 참조형 비교 int a1 = 1; int a2 = 1; String b1 = new String("Hello world"); Integer b2 = new String("Hello world"); System.out.pr..

기타

협업 - 칸반보드의 활용

지금 프로젝트에서 어떤 기능이 남았지? 다른 팀원들과 겹치지는 않을까? 팀원들이 아직 프로젝트 협업에 익숙하지 않다면 위 고민을 겪을 수 있습니다. 팀원과의 의사소통이 활발한 편이어도 프로젝트 끝날 때까지 "너 지금 뭐하고 있어?", "나 이 기능 한다" 등 질문들로 인해 시간을 낭비할 수 있죠. 이런 상황에서 도움이 되는 협업 도구가 칸반 보드입니다. 칸반보드 제가 소개할 칸반보드는 간단한 real_time 칸반 보드 입니다. 실시간으로 팀원들이 어떤 기능을 하고 있는 지, 어떤 기능들이 남아 있는 지, 놀고 있는 팀원들은 없는지? 등을 한눈에 알아 볼 수 있습니다. 칸반보드의 가장 기본 형태는 ToDo, In Progress, Done의 리스트를 가집니다. 리스트는 기능이 정해진 카드가 여러개 존재할..

이야기/후기

2020 Naver HackDay 참여 후기

들어가며 어느덧 4학년 안드로이드와 친해진 지 3년 정도 돼가던 해, 졸업이 눈앞에 보여 마음이 급한 대학 동기들끼리 여러 취업 공모전과 행사 소식을 소개해주고 있었고 그중 네이버 핵 데이를 무조건 해보라고 추천해 줘서 알게 되었다. 핵 데이에 지원하기 전 앱 개발 챌린지 공모전에서 3번 정도 탈락을 해서일까? 2020년 하반기 네이버 핵 데이에 큰 기대 없이 지원했고 코딩 테스트를 본 것만으로 만족했었다. 지원하고 나서도 개인적으로 친하지 않은 사람들을 만나는 것에 대한 두려움이 있어서 탈락했으면 좋겠다는 나쁜 생각도 했다. 결과 발표 날까지 시간이 꽤 있었고 그 시간 동안 iOS 등 개인 프로젝트를 진행하면서 머릿속에서 잊혀갈 무렵 합격 메일을 받았다. 너무 좋았다. 드디어 나에게도 합격이. 그것도 ..

ML

[ML]머신러닝이 학습하는 원리는??

참고 - 머신러닝,텐서플로우 일단 한번 해봤습니다. - 딥러닝 강화학습으로 나보다 잘하는 쿠키런 AI 머신러닝의 개념 일반적인 프로그램은 개발자가 프로그램의 동작 방식을 직접 설계하는 방식이다. 하지만 자율주행 자동차라던지 프로그램에서 발생하는 변수들의 수가 셀 수 없이 많을 때는 개발자가 일일이 조건문으로 설계를 한다는 것은 거의 불가능에 가깝다. 이를 위해 프로그램이 스스로 학습하여 문제를 해결하는 방법이 머신러닝이다. 머신러닝의 학습 방법 1) 지도 학습 - 학습 데이터를 이용 학습데이터란 입력과 정답으로 된 데이터 셋을 가지고 학습하는 방법이다. 수많은 데이터 셋을 학습을 하고 나서 입력이 주어 질 때, 그 입력이 꿀벌일 확률 5% , 고양이일 확률 80%, 강아지일 확률 10% 각각 나오며 가장..

ML

[ML]텍스트 마이닝와 자연어 처리 - 어떤 API가 있을 까?

최근 "내일 오후 1시에 영화보자"라는 Text를 가지고 Calendar의 일정을 등록하는 프로젝트를 진행하고 있다. 해당 기능을 구현하기 위해서는 Text에서 시간, 장소 단어를 추출하는 머신러닝이 필요하다. 이러한 기능을 제공해주는 API가 있을까? Microsoft Azure (텍스트 분석 API) 테스트 주소 언어 감지,핵심어구 추출, 감정분석 글에서 가장 핵심인 단어 하나정도 추출하고 글의 언어와 긍정적인 글인지를 분석해준다. 하지만 주어진 API로는 구현하기 힘들것 같다... 가격 일단 인스턴스의 Web/Container가 무엇인지 정확히 모르겠다. ( JSP 실행되는..?) 일단 Azure 계정을 생성할 때 7일 무료버전, 신용카드 등록후 크레딧을 제공해주는 버전 등 무료로 사용해볼 수는 있..

Android/Common

[Android] Google Calendar API 사용법

Google Cloud Calendar API 설정 Step 1. 구글 콘솔 사이트 들어가기 Step 2. 프로젝트 만들기 Google Cloud Platfrom 에서 프로젝트를 생성해야 해당 Project ID를 통해 Calendar API 등 여러 API를 사용할 수 있습니다. Step 3. 프로젝트 이름을 입력하고 만들기를 눌러주세요. Step 4.라이브러리에서 Google Calendar API 설정 Step 5. 인증정보 만들기 사용자 인증 정보 만들기 위해 OAuth에 대해 사용자에게 동의를 구할 때 나오는 화면을 설정해 주어야 합니다. Google Cloud Platform G Suite 계정이 아니면 내부 User Type 선택이 불가능 하므로 외부로 설정합시다. 동의화면은 외부만 선택이 ..

점냥
점냥's Log