Scala의 장점 중 하나는 Java 코드를 사용할 수 있다는 점이다. 사용하고 싶은 Java 클래스를 import 하여 사용하면 된다. 또한 java.lang 패키지 하위에 있는 모든 클래스들은 Scala에선 따로 import 하지 않아도 기본적으로 사용할 수 있다. 다음은 Java 코드를 Scala 코드에 적용해보겠다. Java의 Date class와 Dateformat class는 날짜 관련한 유틸리티 클래스로 강력한 기능을 제공하고 있다. 이를 Scala 코드에서 다음과 같이 사용할 수 있다. [ 현재 시간을 한국에서 사용하는 시간대 표현으로 출력하는 코드 ] import java.text.DateFormat._ import java.util.{Date, Locale} object KoreaDat..
문제: 직사각형의 좌표 구하기 설명: 직사각형을 만드는데 필요한 4개의 점 중 3개가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 coordinates 가 매개변수로 주어질 때, 직사각형을 만드는데 필요한 나머지 한 점의 좌표를 return 하도록 함수를 작성해주세요. 단, 직사각형의 각 변은 x 축, y축에 평행하며, 반드시 직사각형을만들 수 있는 경우만 입력으로 주어집니다. 입력 및 출력 예: 입력 출력 [[1,4],[3,4],[3,10]] [1,10] [[1,1],[2,2],[1,2]] [2,1] 위 문제는 다음과 같이 간단하게 xor 연산으로 풀어낼 수 있다. package com.tistory.johnmarc; import java.util.Arrays;..
스칼라 프로젝트를 만들고, Hello World를 출력해보는 코드를 작성해보자. 일반적으로 자바 프로그래밍을 해본 사람이라면 Hello World 코드를 다음과 같이 작성할 것이다. public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } 반면 스칼라 코드는 다음과 같다. object Helloworld { def main(args: Array[String]): Unit = { println("Hello, World") } } 자바에서 정적멤버(함수 또는 필드)를 선언하기 위해 클래스의 일부로 정적 멤버를 정의한다. 하지만 정적멤버에 대한 개념이 없는 스칼라에서는 이러한 ..
package com.tistory.johnmarc; import java.util.Scanner; public class InputIntegerSum { public static void main(String[] args) { System.out.print("Input: "); Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); System.out.println("SUM: " + sumInputInteger(x)); } private static int sumInputInteger(int value) { int sum = 0; while (value != 0) { sum += value % 10; value /= 10; } retu..
최근 예전에 꿈꿨던 데이터 엔지니어의 꿈을 다시 상기하면서 Scala 공부를 시작했다. Intellij를 사용하고 있기에 스칼라 개발 환경을 구축하는 것은 Intellij 플러그인 설치로 쉽게 해결했었는데, REPL 환경에서 공부를 하고 싶어 Window 10에서 Scala REPL 환경을 구축하는 내용을 공유해본다. REPL은 Run Evaluate Print Loop 의 준말이다. 실행하고, 평가하고(구문을), 출력하고, 이 과정을 반복한다는 뜻을 가진다. 먼저 Scala 공식 홈페이지에 접속 해보자. The Scala Programming Language www.scala-lang.org 다음은 스칼라 언어를 소개하는 문구이다. 스칼라는 객체지향 개념과 함수형 개념이 섞인 언어임을 설명하고 있다. ..
Spring Boot 환경에서 Redis로부터 MessagePack으로 압축되어 전송된 문자열을 복호화 하느라 며칠 삽질을 했었다. 최신 릴리즈 버전과 관련 자료도 없었기에 더 고생을 했는데, 나 같은 사람이 더 이상 발생하지 않길 빌며 공유해본다. 😅 Spring Boot에서 Redis를 사용하고 있고, 특정 Channel을 Subscribe 하고 있을 때, Publish 되어 전송되는 메시지가 MessagePack 방식으로 압축이 되어있는 경우 다음과 같이 압축을 해제하여 메시지 원문을 받을 수 있다. * MessagePack 이란? MessagePack: It's like JSON. but fast and small. MessagePack for CLI What is it? This is Messa..
Spring Boot 환경에서 Redis를 사용한다면, build.gradle에 다음과 같이 스크립트를 작성 할 것이다. // Redis 의존성 implementation 'org.springframework.boot:spring-boot-starter-data-redis' 외부 Redis 서버를 사용하는 경우, application.yml에 다음과 같이 Redis 접속 정보를 입력한다. spring: redis: host: localhost port: 6378 database: 0 password: redispassword 이후 application.yml에 작성된 접속 정보를 바탕으로 Redis 환경설정을 다음과 같이 해준다(임베디드 Redis 서버를 사용하는 경우 아래 설정코드와는 다르게 설정해야한..
오늘 회사에서 안드로이드 개발을 하시는 팀원분이 코틀린 기반의 프레임워크인 ktor를 알려주셨고, 팀 채팅에 올려주셔서 프로젝트 홈페이지를 들어가봤다. https://ktor.io/ Ktor - asynchronous Web framework for Kotlin Ktor is a framework for building asynchronous servers and clients in connected systems using the powerful Kotlin programming language. This website provides a complete reference to the Ktor application structure and programming interface. And how to a..