Programing Language 24

object, class, case class, trait 의 상속과 인스턴스

Scala는 객체지향 프로그래밍과 함수형 프로그래밍을 모두 지원하는 프로그래밍 언어입니다. Scala에서는 object, class, case class, trait 같은 여러 키워드를 사용해 다양한 타입의 데이터 구조와 행동을 정의할 수 있습니다. Java와 비교하면서 각각에 대해 설명하고 예제를 들어 보겠습니다. 1. Class Scala의 class는 Java의 class와 매우 비슷합니다. 클래스는 객체의 청사진을 제공하며, 데이터와 그 데이터를 조작하는 메소드를 포함할 수 있습니다. Scala 예제: class Person(var name: String, var age: Int) { def greet(): Unit = { println(s"Hello, my name is $name and I a..

JAVA 바이트 코드 조작

출처 : https://www.inflearn.com/course/the-java-code-manipulation 바이트 코드 조작의 사용예시 (코드 커버리지) 코드 커버리지는 테스트 코드가 소스 코드의 어느 부분을 실행(확인)했는지를 백분율로 나타낸 것입니다. JaCoCo는 Java 코드 커버리지를 측정하는 도구 중 하나입니다. JaCoCo 사용하기 JaCoCo 설정: Maven 프로젝트의 pom.xml에 JaCoCo 플러그인을 추가합니다. JaCoCo 사용법. https://www.eclemma.org/jacoco/trunk/doc/index.html http://www.semdesigns.com/Company/Publications/TestCoverage.pdf pom.xml에 플러그인 추가 org..

RxJS 파이프라인 연산자

pipe RxJS의 pipe 함수는 여러 개의 연산자를 함께 사용하여 복잡한 데이터 흐름을 쉽게 관리할 수 있도록 도와줍니다. pipe 함수는 Observable에 메서드 체인으로 연산자를 적용하고, 최종적으로 새로운 Observable을 반환합니다. 이 방법을 통해, 입력 Observable로부터 출력 Observable까지 데이터가 어떻게 변형되고 처리되는지 명확하게 볼 수 있습니다. import { interval } from 'rxjs'; import { filter, map, take } from 'rxjs/operators'; const observable = interval(1000).pipe( filter(value => value % 2 === 0), // 짝수만 통과 map(value ..

RxJS 설명과 Observable 예제

RxJS RxJS는 특히 비동기 이벤트를 처리할 때 강력하며, 복잡한 데이터 스트림을 다루어야 하는 상황에서 꼭 필요하다고 할 수 있습니다. 이러한 상황은 주로 실시간 데이터 처리, 사용자 입력 처리, HTTP 요청 처리 등에 해당됩니다. RxJS를 사용하면 이벤트 스트림을 쉽게 생성, 변환, 조합 및 구독할 수 있으며, 이는 복잡한 비동기 코드를 보다 선언적이고 관리하기 쉬운 형태로 만들어줍니다. 예제: 실시간 검색어 기능 구현 다음은 사용자가 입력 필드에 텍스트를 입력할 때마다 검색어를 실시간으로 서버에 쿼리하고 결과를 받아 표시하는 기능을 구현한 예제입니다. 이 예제는 사용자 입력 처리와 HTTP 요청을 동시에 다루는 방법을 보여줍니다. RxJS를 사용하면 이런 유형의 상호작용을 효과적으로 구현할 ..

타입스크립트 스프레드 연산자, 나머지 매개변수(...), 언더스코어(_)

TypeScript에서 .., ..., _ 같은 기호들은 각각 다른 용도로 사용됩니다. 여기서 ..는 TypeScript 문법에 직접적으로 해당하는 기호가 아니지만, ... (스프레드 연산자 또는 나머지 매개변수)와 _ (일반적으로 무시되는 변수 또는 속성을 나타내는 데 사용)는 TypeScript 및 JavaScript에서 중요한 역할을 합니다. ... (스프레드 연산자 또는 나머지 매개변수) 스프레드 연산자 (Spread Operator): 배열이나 객체의 모든 요소를 개별 요소로 확장하거나, 함수 호출 시 인자 리스트로 전개하는 데 사용됩니다. 배열 또는 객체 리터럴 내부에서 사용할 수 있습니다. let numbers = [1, 2, 3]; let moreNumbers = [...numbers, 4..

CSS 박스 모델과 요소의 크기

html의 요소는 box로 둘러쌓여 있으며 가장 내부의 contents에 실제로 작성하는 내용이 들어간다. padding,border,margin순으로 감싸고 있다. 1.border hi 2. padding 추가 hi 3. margin 추가 hi box의 크기 hi width와 height를 주더라도 border,padding,margin의 값이 추가 된다. 컨텐츠 기준으로 작성한 box의 총 사이즈를 결정하려면 box-sizing옵션을 사용하면된다. hi hi

TypeScript 자료형

1. Primitive type : string, number, boolean 숫자는 모두 number으로 사용 정수, 소수 간 연산 시에도 같은 자료형이기 때문에 형변환 필요 없음 primitive type도 객체로 취급하나 number는 string으로 자동 형변환 되지 않음 boolean은 스트링과 결합시 자동형 변환됨 number + string 불가 number + boolean 불가 string + boolean 가능 const t = { a1 : "1", a2 : 1, a3 : 0.1, a4 : true } console.log(t.a2+t.a3) // 1.1 console.log(t.a1+t.a2.toString()) // "11" console.log(t.a1+t.a3.toString()..

Kotlin Null 처리 방식 정리

1. 기본적인 Null 변수 fun main() { val a:Int; // a = null; -> null 할당 불가 val b:Int?; b = null; } 코틀린에서는 변수 할당 시에 일반적인 변수 선언으로는 null을 할당할 수 없다. "Type?" 형태로 뒤에 '?'를 추가해야지만 null을 할당 받을 수 있는 변수가 된다. null이 가능한 타입은 기존의 코틀린 기본 타입과 다른 타입으로 구분된다. 2. 함수에서의 null fun main() { val a = null; //add(a);

JAVA Concurrent 프로그래밍 (Completable Future)

1. 기본적인 쓰레드 예시 System.out.println(Thread.currentThread().getName()); Thread a = new Thread(()-> { System.out.println(Thread.currentThread().getName()); try { Thread.sleep(1000l); } catch (InterruptedException e) { return; } }); a.start(); // my code // a.join() or a.interrupt() // my code start : 시작 join : 해당 쓰레드가 끝날때 까지 기다림 interrupt: 해당 쓰레드를 interrupt 하여 catch 블락에 접근하도록 유도 => 쓰레드 관련하여 모든 코드 작성..

R ggplot을 interaction plot 으로 변경하는 방법(ggiraph, htmltools 활용)

R ggplot을 ggiraph을 사용하여 html과 java script를 활용한 interaction plot. html 리소스 만들기 - 웹에서 java script 통해 상호작용이 가능한 plot으로 변경 1. 데이터 준비 ggplot에서 기존에 사용하던 데이터 컬럼 구성(위의 데이터는 시계열 데이터) 추후에 각 선과 점에 마우스를 올렸을때 동작하는 tooltip과 interaction을 위해서 tooltip용 컬럼을 추가해준다. 2. 기본 ggplot grid 생성 library(ggplot2) library(ggthemes) library(ggiraph) gg