반응형

분류 전체보기 108

Scope 함수(범위 지정 함수 - apply, with, let, also, run)

코틀린의 표준 라이브러리는 다양한 기능 과 편리한 기능으로 함수형 프로그래밍을 쉽게 적용할 수 있도록 도와줍니다. 그중에서도 apply, with, let, also, run 과 같은 범위 지정함수에 대해 알아보겠습니다. 이 5개의 함수는 전달받는 인자와 작동 방식, 결과가 매우 비슷하기 때문에 많은 경우에 서로를 대체 해서 사용할수도 있습니다. 이 함수들은 두가지 구성 요소를 가집니다. 수신 객체 (확장함수가 호출되는 대상이 되는 객체) 수신 객체 지정 람다 (lambda with receiver) apply 사용 규칙 수신 객체 람다 내부에서 수신 객체의 함수를 사용하지 않고 수신 객체 자신을 다시 반환 하려는 경우에 apply 를 사용합니다. 수신 객체 의 프로퍼티 만을 사용하는 대표적인 경우가 객..

Kotlin 2022.03.26

backing field <custom getter(), setter() 설정>

코틀린에서 객체의 프로퍼티에 접근은 변수에 직접 접근하는 것이 아니라 Accessor 메소드(getter & setter)를 통해서 이루어집니다. 프로퍼티를 선언할 때 별도로 getter & setter 메소드를 구현하지 않으면 해당 속성은 디폴트로 정의된 메소드가 생략되어 있습니다. 여기서, 프로퍼티로 이용할 수 있는 변수는 어떤 블록 { } 에도 포함되지 않는 최상위 레벨 변수와 클래스 내부에 선언한 멤버 변수입니다. 최상위 레벨 변수에도 getter or setter 를 적용할 수 있다는 의미입니다. 이때, var은 변경 가능한 속성이기에 getter & setter 메소드를 가질 수 있고, val의 경우 변경 불가능한 속성이기에 setter 메소드 없이 getter 메소드만 가질 수 있습니다. 기..

Kotlin 2022.03.26

val, const val

val 런타임 시 할당 val로 선언한 변수는 코틀린에서 프로퍼티로 get() 함수를 가지는 변수 해당 변수를 직접 변경할 수 없지만 get() 함수의 처리 방식에 따라 의도한 값과 다른 값이 나올 수 있음 즉, 항상 초깃값만 반환하지 않음 const val const val 는 컴파일 시간에 결정되는 상수이다. 런타임에 할당되는 val 와 달리 컴파일 시간 동안 할당이 되어야 한다. 즉, const 는 함수나 어떤 클래스의 생성자에게도 결코 할당 될 수 없고 오직 문자열이나 기본 자료형으로 할당되어야 한다. 때문에 const 로 선언을 하면 클래스의 프로퍼티나 지역변수로 할당 할 수 없게 된다. 때문에 일반적으로 companion object 안에 상수로 선언하게 된다. class Sample { co..

Kotlin 2022.03.25

람다, 고차함수, 함수합성, 클로저

Lambda 식 ? Value 처럼 다룰 수 있는 익명 함수 val lambdaA : returnType = { argument -> body } argument 는 하나일 경우 생략 가능하다. //val lambdaA : (Int) -> Int= { x : Int -> x*2 } val lambdaA : (Int) -> Int= { it*2 } return type 도 compiler가 추론 가능할 경우 생략 가능하다. val square : Int = { x : Int -> x * x } -> val square = { x : Int -> x * x } // 매개변수의 Int 로 타입추론이 가능하다. 고차함수 고차 함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수다. 코틀린에서는 람다나 함수 참..

Kotlin 2022.03.25

NewsFeed - JSoup / Nested RecyclerView

관심있는 뉴스 정보를 매시간마다 서버로 모아 퇴근시에 한번에 보는 어플리케이션을 만들어 보려고 합니다. 서버의 필요성은 현재 찾지 못해서, 현재 시간대의 기사를 검색할 때마다 보여주는 앱으로 만들어 보았습니다. 주요 기능들은 아래와 같습니다. 1. 뉴스 키워드(키워드 최대갯수는 10개??), 뉴스 크롤링 시간(최소 2시간마다??) 설정 화면 (Settings Activity) 2. 뉴스 검색 결과를 parsing 해서 필요 정보(타이틀, URL, 뉴스시간정보 등)를 수집 3. 위에서 수집한 정보를 서버에 post 4. 서버에 post 한 결과를 가져와서 보여주는 화면 (NewsViewer Activity) --> 서버가 과연 필요한 것인가?? 뉴스가 시간별로 크게 달라질 것 같지는 않은데,, 고민해보겠습..

Kotlin 2022.03.16

3. AWS - EC2 서버에 프로젝트 배포

1. EC2에 프로젝트 clone 받기 git hurb에서 코드를 받아 올 수 있게 EC2에 git을 설치합니다. > sudo apt install git 프로젝트를 저장할 디렉토리를 생성합니다. > mkdir ~/app && mkdir ~/app/footprinter_server > cd ~/app/footprinter_server git hurb 웹페이지에서 복사할 repository의 https 주소 (.git으로 끝남)를 복사합니다. > git clone 복사한 주소 > cd 프로젝트명 gradle build > ./gradlew build //코드가 잘 수행되는지 확인 > chmod +x ./gradlew maven build > mvn package 공교롭게도 아래와 같이 빌드 에러가 발생했습..

Web 2022.03.05

2. AWS - RDS 환경 구축

RDS (Releational Database Service) AWS는 관리형 서비스인 RDS를 제공합니다. RDS는 AWS에서 지원하는 클리우드 기반 관계형 데이터베이스입니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스 입니다. 이러한 RDS를 이용하여 본인만의 데이터베이스 환경을 구축해 보겠습니다. RDS 인스턴스 생성 1. 데이터베이스 생성 AWS 서비스 > RDS 검색 > 데이터베이스 생성 > MySQL or MariaDB 등 선택 > 프리 티어 > 스토리지 선택 > DB 인스턴스, 마스터 사용자 정보 등록 ( 네트워크 및 보안 : 서브그룹 default, 퍼블릭 엑세스 가능 > VPC 새로 생성, 새 ..

Web 2022.03.04

1. AWS 서버 환경 구축 (AWS EC2)

외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수입니다. 일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하나 특정시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴수 있는 클라우드가 유리합니다. AWS의 EC2는 서버 장비를 대여하는 것이지만, 실제로는 그 안의 로그관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원하고 있습니다. 그럼, AWS 서버환경을 만들어 보겠습니다. 1. AWS 회원가입 http://aws.amazon.com/ko/ 에서 무료계정 생성 (준비물: Master 혹은 Visa card) 2. 콘솔 로그인 > EC2 인스턴스 생성 EC2(Elastic Computer Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사..

Web 2022.03.04

3. Android - Location post service (feat. Alarm)

설정한 시간을 주기로 현재 위치를 서버로 post하는 어플리케이션을 생성하겠습니다. 아래 순서대로 해 보겠습니다. - 저장 주기 설정 - 알람 등록 - 현재 위치와 현재 시간 가져오기 - 저장 주기마다 값을 서버에 POST 하기 기본적인 UI는 안드로이드의 preference UI를 이용해서 서비스의 시작 시간과 제어 시간, 중심 위치등을 설정할 수 있게 합니다. 저장 주기 설정 TimePickerPreference를 설정합니다. TimePickerPreferenceDialog를 생성합니다. class TimePickerPreferenceDialog : PreferenceDialogFragmentCompat() { lateinit var mTimePicker: TimePicker override fun ..

Kotlin 2022.03.01

2. Android - JPA Client with location DB

지난 서버측 포스팅에 이어 클라이언트가 되는 안드로이드에서 값을 주기적으로 저장하고, 저장된 정보를 읽어와서 지도화면에 시간별로 출력해 보겠습니다. 개발에 필요한 내용 정리 1. 값 생성하기 현재 위치와 현재 시간 가져오기 저장 주기 설정 저장 주기마다 값을 서버에 POST 하기 2. 값 읽어오기 서버의 저장된 DB값을 ReadAll > RecyclerView로 list-up Item 선택시 지도로 보여주기 Item 복수 선택시 시간순서대로 이동 경로 보여주기 (화살표 등으로 표현) 전체 삭제하기 3. 확장판 저장하는 App(client1)에서는 백그라운드 서비스로 동작함 (ex. 자녀폰) 동작시키는 App(client2)에서는 client1을 on/off 하거나 설정을 변경할 수 있음 (ex. 부모폰)..

Kotlin 2022.03.01

1. SpringBoot - JPA server using MySQL

안드로이드에서 정해진 시간마다 데이터베이스에 시간/위치 정보를 저장할 수 있게 시간 정보와 Location 정보의 데이터베이스를 처리하는 서버를 만들겠습니다. 먼저 Project를 생성한 뒤, dependency를 추가해 줍니다. 4.0.0 org.springframework.boot spring-boot-starter-parent 2.6.3 com.kakaroo.springlocationjpa SpringLocationJPA 0.0.1-SNAPSHOT SpringLocationJPA Eclipse JPA project for Spring Boot 11 org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring..

Web 2022.02.18

Android에서 SpringBoot JPA 서버와 연동하기

SpringBoot에서 JPA Repository 를 활용해 CRUD를 구현했습니다. https://kakaroo.tistory.com/49 Spring Boot - Eclipse Maven으로 Spring Web Layer 실습 아래 기등록한 포스트는 IntelliJ + Gradle 로 구현하였기에 Eclipse + Maven 환경으로 다시 해 보겠습니다. (공부삼아.. ) https://kakaroo.tistory.com/39 2 - Spring Boot - JPA 구현 by Spring Web Layer Spri.. kakaroo.tistory.com 이제, Android UI에서 input 을 서버에 주고 서버의 결과를 화면에 출력하는 것을 만들어 보겠습니다. 기본적인 UI는 아래처럼 JPA re..

Web 2022.02.17

Spring Boot - Eclipse Maven으로 Spring Web Layer 실습

아래 기등록한 포스트는 IntelliJ + Gradle 로 구현하였기에 Eclipse + Maven 환경으로 다시 해 보겠습니다. (공부삼아.. ) https://kakaroo.tistory.com/39 2 - Spring Boot - JPA 구현 by Spring Web Layer Spring Web Layer 구조로 H2 database를 사용하여 JPA를 구현해 보겠습니다. https://kakaroo.tistory.com/41 Spring Web Layer (공사중...) 보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요. kak.. kakaroo.tistory.com 1. Project 생성 여기까지만 하면 아래 Project 생성한 게 간단하게 끝이 납니다. https://kaka..

Web 2022.02.14
반응형