JAVA 설치하기 자바 JDK를 설치하려면 오라클 계정이 있어야 합니다. 다음 URL은 오라클 웹사이트 JAVA 버전별 설치 경로입니다. 페이지는 하나이지만 화면상 어디 있는지 모를 수도 있어서 링크를 걸어놨습니다. 저는 Java 8을 다운로드해서 설치하겠습니다. Java 18 Download Java 17 Download Java 8 Download Java 11 Download 윈도우즈의 경우에는 다음과 같이 Windows 탭을 선택해서 해당 OS 버전에 맞는 설치 프로그램을 다운로드 받습니다. 리눅스나 맥 OS 의경우 압축파일로 제공하며 윈도우는 설치파일이 있어서 설치하기 편리합니다. 설치는 매우 간단하며 기본 위치인 C:\Program Files\Java\jdk1.8.0_321 에 설치됩니다. 버..
안드로이드나 iOS 개발은 사실 UI의 비중이 큽니다. 웹 프론트엔드 개발 보다 다양한 기술을 포함하긴 하지만 일단 화면을 잘 그릴 수 있어야 합니다. 때문에 안드로이드 앱 개발의 핵심 요소는 인터페이스 디자인과 생성이라고도 할 수 있습니다. 안드로이드의 화면 구성은 뷰와 뷰 그룹 그리고 레이아웃으로 이루어집니다. 뷰와 뷰 그룹 안드로이드 화면 인터페이스의 모든 컴포넌트는 View(android.view.View) 클래스의 서브 클래스입니다. 안드로이드는 TextView, Button, CheckBox 와 같은 여러가지 View의 서브 클래스를 제공합니다. 이런 뷰들을 위젯(Widget) 또는 컴포넌트(Component)라고 합니다. 또한 뷰를 서브클래싱 해서 새로운 위젯을 만들 수도 있으며 기존의 컴포..
안드로이드 앱 프로세스 안드로이드 앱은 프로세스로 실행되며 액티비티나 서비스 및 브로드캐스트 수신자 형태의 여러 컴포넌트로 구성됩니다. 모바일이라는 제한적인 환경에서 리소스를 효율적으로 관리하기 위해서는 특히 앱이 실행되는 프로새스와 앱을 구성하는 모든 컴포넌트의 생명주기를 잘 알고 관리해야 하며 앱과 액티비티 생명주기를 반드시 이해해야만 효율적인 앱을 만들 수 있고 앱이 실행하는 동안 다양한 상태와 이벤트에 맞춰서 프로그래밍할 수 있습니다. 안드로이드 우선순위 안드로이드 앱은 안드로이드 운영체제의 별개의 프로세스에서 독립적으로 실행됩니다. 때문에 만약 독립적인 안드로이드 앱이 메모리 한계에 다다를 경우 안드로이드 시스템은 메모리 확보를 위해서 해당 프로세스를 강제로 종료하는 방법을 취합니다. 메모리 확..
안드로이드 뷰 바인딩 이전 버전의 안드로이드 스튜디오에서는 코드에서 레이아웃 뷰를 사용하기 위해 findViewById() 함수 또는 코틀린 확장 플러그인을 사용했었습니다. 하지만 더 이상 추천하는 방법이 아니고 이제는 뷰 바인딩을 사용해서 레이아웃을 관리하는 형태로 변경되었습니다. 한 번 바인딩하게 되면 편리하고 다양하게 사용이 가능하니 뷰 바인딩을 사용하는 법과 findViewById 와 비교해서 무엇이 달라졌는지 확인해보겠습니다. ▼ 안드로이드 뷰 바인딩은 Android Studio 3.6 Canary 11 이상에서 동작합니다. 안드로이드 스튜디오 3.5 이전에는 뷰 바인딩을 사용할 수 없었고 아래와 같이 findViewById를 통해 컴포넌트들을 로드해서 사용했습니다. 뷰 바인딩 추가하기 ▼ 뷰 ..
안드로이드 앱은 다양한 요소가 결합되어 만들어집니다. 그중에 UI에 관련된 액티비티, 프래그먼트 등이 있고 인텐트와 액티비티를 이용해 독립적으로 실행 가능한 모듈을 생성해 재사용성을 높일 수 있다. 또한 콘텐츠 제공자를 구현해 앱 간 데이터 공유도 가능하다. 서비스와 브로드캐스트 수신자를 통해서 백그라운드 작업을 할 수 있으며 매니페스트 파일을 통해서 앱 구성을 정의할 수 있고 앱 리소스와 매니페스트 설정을 통해서 앱 컨텍스트를 만들어 낼 수 있다. 안드로이드 액티비티 안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 반드시 결합되어 생성됩니다. 액티비티란 안드로이드 앱을 구성하는 기본 단위이며 앱의 기능을 갖는 단일의 독립 실행 모듈입니다. 액티비티는 안드로이드 Activity 클래스의 서브 클래스로 ..
SwiftyUserDefaults는 사용자 기본값을 쉽게 사용할 수 있는 오픈소스입니다. 키값을 한 곳에서 저장하고 관리할 수 있어서 편리합니다. UserDefaults 값은 사실 문자열로 관리하기 때문에 실수할 가능성도 높고 전역적으로 값을 관리하다 보면 실수할 가능성도 높습니다. 그래서 보통은 관련 매니저 클래스를 만들어서 한 곳에서 관리할 수 있게 하는게 보통입니다. 하지만 SwiftyUserDefaults 를 사용하면 조금 쉽게 모든 과정을 자동화 할 수 있습니다. 키 값 정의 ▼ 다음과 같이 키값은 기본 타입 또는 옵셔널 타입으로 지정할 수 있습니다. SwiftyUserDefaults 사용법 ▼ 사용법은 다음과 같습니다. ▼ 만약 스위프트 5.1 버전 이상을 사용한다면 다음 처럼 쉽게 접근이 ..
평소에 JetBrain사에 DataGrip IDE로 데이터베이스를 접속해서 관리하고 있습니다. 하지만 MySQL Workbench로도 작업을 하는 경우가 많이 있는데요. 오늘은 데이터베이스를 ERD 다이어그램으로 변경하는 방법을 알아보겠습니다. MySQL Workbench에 모델링(Modeling) 툴을 사용하면 테이블을 쉽게 관리할 수 있습니다. ERD 다이어그램 ERD (Entity Relationship Diagram) 이란 E-R 다이어그램이라고 하며 보통 ERD 라고 말합니다. ERD란 데이터베이스의 관계를 도표로 나타낸 것이라고 할 수 있는데요. 여러개의 테이블을 관리하다보면 단순히 코드로만 생각하기 어려울 때가 있습니다. 때문에 모델링 툴로 관계를 생각하면서 디자인을 할 수 있습니다. MyS..
스프링 부트란? 스프링부트(Spring Boot)는 자바 기반의 웹 어플리케이션 프레임워크인 스프링(Spring) 프레임워크 프로젝트를 좀 더 손쉽게 사용할 수 있도록 만든 도구라고 할 수 있습니다. 사실 웹 개발자가 아니라면 이전에는 스프링을 배우기가 굉장히 까다로웠습니다. 사실 자바 개발자들의 편의를 위해서 나온 프레임워크이긴 하지만 시간이 지날수록 다양한 기능과 설정들이 더해지면서 일반 개발자들이 접근하기는 러닝 커브가 꽤 있는 편이었죠. 하지만 지금은 스프링 부트 프로젝트로 인해서 많은 사람들이 스프링 부트로 개발을 하고 있습니다. 왜 스프링 부트인가? 국내 대부분의 대형 백엔드 프로젝트는 스프링(Spring)을 사용합니다. 자바스크립트(Javascript)나 파이썬(Python) 또는 루비(Ru..
IntelliJ 자동 import 인텔리제이에는 다양한 기능이 있습니다. 그중에 코드 완성이 정말 잘돼서 편리하죠. 아직 임포트 하지 않은 패키지가 있다면 엔터만 입력하면 자동으로 import 됩니다. 하지만 너무 과해서 필요 없는 패키지의 import를 유도할 때도 많습니다. 설정에서 간단히 수정해보도록 하겠습니다. ▼ 다음과 같이 자동완성이 될 때 현재 필요하지 않은 패키지 라이브러리가 자동 완성되지 않기를 원할 때가 있습니다. ▼ File(파일) -> Settings(설정) 메뉴로 이동합니다. ▼ Editor -> General -> Auto Import 메뉴로 이동합니다. 다음과 같은 화면에서 + 버튼을 눌러 새로운 조건을 추가할 수 있습니다. 다음 조건을 추가할 수 있습니다. (보통 패키지를 선..
Unresolved database references in annotations 설정 ▼ 인텔리제이(IntelliJ)를 사용해서 JPA를 쓰다보면 다음과 같이 Column 이나 테이블 명을 변경할 경우 텍스트에 경고표시를 볼 수 있습니다. 그냥 사용해도 빌드도 되고 문제는 없지만 조금 보기 좋게 출력하기 위해서 설정을 변경해 줄 수 있습니다. ▼ 다음과 같은 경로로 해당 옵션을 꺼줍니다. File > Settings > Editor > Inspections > JPA > Unresolved database reference in annotations ▼ 이렇게 옵션을 꺼주면 다음과 같이 해당 테이블 명이 녹색으로 잘 표시됩니다. 아주 간단한 것이지만 테이블 이름을 똑같이 쓰지 않을 경우 경고가 뜨는 것..
DataGrip 데이터베이스를 관리하기 위한 툴은 다양합니다. 그중에 IntellJ를 만든 젯 브레인에서 IntellJ와 유사한 인터페이스로 데이터 그립이라는 툴이 있습니다. MariaDB나 오라클 및 아주 다양한 DBMS를 지원합니다. 기타 MySQL 워크벤치나 데이터베이스 관리 툴에 비해 빠른 속도와 효율적으로 데이터를 검색할 수 있습니다. 인텔리 J나 안드로이드 스튜디오를 써보신 분은 알겠지만, JetBrain사의 툴은 코드 입력 시 다양하게 조합하여 기능을 구현할 수 있는데요. DataGrip도 인터페이스가 이와 유사해서 매우 편리하게 쿼리를 실행해 볼 수 있습니다. ER 다이어그램 보기 ▼ 데이터베이스 테이블을 더블클릭 하면 다음과 같이 데이터의 값과 항목들이 나타납니다. 현재 값이 없기 때문에..
이전 포스팅에 이어서 간단한 코틀린 문법을 전반적으로 알아보겠습니다. 코틀린은 현대적인 언어의 대부분의 장점을 가지고 있습니다. 그중에 타입추론과 타입체크가 편리하고 Nullable 을 도입함으로써 어플리케이션의 개발시 안정성이 높아졌습니다. 이번 포스팅에서는 코틀린이 가진 간단한 특징을 볼 수 있습니다. When 과 같은 구문은 스위치와 비슷하지만 훨씬 편리하고 다양하게 활용할 수 있어서 좋습니다. 기존의 자바보다 문자열 템플릿 또한 간결하고 활용범위가 넓습니다. 주석 ▼ 코틀린은 한 줄 주석과 블록 형태의 여러행 주석을 지원합니다. ▼ 블록 주석의 경우 안쪽에 또다른 주석을 넣을 수 있습니다. 문자열 템플릿 ▼ 문자열 안에서 ${} 구문을 통해 변수 또는 함수등을 사용할 수 있습니다. 조건문 ▼ 대부..