728x90
반응형

분류 전체보기 82

(코틀린) Testing with Kotest

테스트 프레임워크는 개발 생명 주기 전반에서 품질을 유지할 수 있도록 도움을 주고, 재사용 가능한 코드 작성을 돕는 중요한 역할을 합니다. Kotest 명세 Kotest를 설정하는 방법과 테스트 하는 방법에 대해 알아봅니다. Kotest 시작하기 Kotest를 하려면 프로젝트 의존성에 Kotest를 추가해야 합니다. testImplementation "io.kotest:kotest-runner-junit5:4.5.0" Kotest와 IntelliJ의 통합해주기 위해 제공되는 플러그인이 있습니다. import io.kotest.core.spec.style.StringSpec import io.kotest.matchers.shouldBe class NumbersTest : StringSpec({ "2 + 2..

개발/코틀린 2022.12.18

(코틀린) 동시성

동시성(concurrent) 주제로 코루틴에 대해 알아보겠습니다. 코루틴 코틀린 프로그램에서도 자바 동시성 기본 요소를 쉽게 사용해 스레드 안전성을 이용할 수 있습니다. 하지만 동시성 연산인 Thread.sleep(), Thread.join(), Object.wait()등이 스레드를 블럭하기 때문에 문제가 남아있습니다. 스레드를 블럭하고 나중에 재개하려면 문맥 전환(context switch)를 하면서 성능이슈가 발생할 수 있습니다. 또한 자원을 많이 사용하기 때문에 비효율적입니다. 더 효율적인 접근 방법은 비동기(Asynchronous) 프로그래밍입니다. 동시성 연산에 대해 연산이 완료될 때 호출될 수 있는 람다를 제공할 수 있고, 원래 스레드는 블럭된 상태로 작업 완료를 기다리는 대신 다른 유용한 작..

개발/코틀린 2022.12.11

(코틀린) 자바 상호 운용성

자바 코드를 코틀린에서 사용하기 코틀린은 JVM을 주 대상으로 설계됐기 때문에 자바 코드를 코틀린에서 쉽게 사용할 수 있습니다. 자바 메서드와 필드 Unit과 void 자바에서 void는 코틀린에서 Unit으로 변환되서 사용합니다. 연산자 관습 Map.get()과 같은 몇몇 자바 메서드는 코틀린에서 연산자 관습을 만족합니다. 자바 메서드에는 operator가 붙어있지 않지만 코틀린에서는 연산자처럼 사용할 수 있습니다. 그래서 List나 Map의 get을 코틀린에서는 []로 접근 할 수 있습니다. 합성 프로퍼티 자바에는 합성 프로퍼티가 없고 getter와 setter를 사용하는 일이 많습니다. 이로 인해 코틀린 컴파일러는 자바의 getter와 setter를 일반적인 프로퍼티처럼 사용할 수 있게 변형 해줍니..

개발/코틀린 2022.12.03

(코틀린) 도메인 특화 언어(DSL)

도메인 특화 언어(Domain-Specific Language, DSL)는 특정 기능이나 영역을 위해 만들어진 언어를 뜻합니다. 연산자 오버로딩 코틀린 내장 연산자에 대해 새로운 기능을 제공하도록 해주는 기능입니다. + 가 수 타입에서는 덧셈 연산이지만 문자열의 경우 연결 연산인고 컬렉션의 경우는 원소를 맨 뒤에 붙이는 연산입니다. 이렇게 + 가 다르게 동작할 수 있는데 연산자 오버로딩이 되어 있기 때문에 가능합니다. 연산자 오버로딩은 operator 키워드를 붙이고 그에 맞는 이름을 붙이면 됩니다. operator fun String.times(n: Int) = repeat(n) fun main() { println("abc" * 3) // abcabcabc println("abc".times(3)) ..

개발/코틀린 2022.11.27

(고기) 고기꾼김춘배, 강남맛집, 갈매기살, 새로, 제로콜라

오늘은 저녁에 술 약속이 있었는데 갈매기살이 먹고 싶어서 강남에 있는 맛집인 고기꾼김춘배에 왔어요 ㅎㅎ 위치는 강남역과 신논현역 사이에 있고 경사가 조금 있는 곳에 있어요 엘레베이터를 타고 3층으로 올라오면 고기꾼김춘배 식당에 도착할 수 있어요. 도착하시면 웨이팅을 해야해요! 안에 좌석이 있긴 했지만 직원분께서 안내를 해주셔야해서 웨이팅하고 기다리고 있으면 됩니다~ 여기는 좌석도 많아서 모임하기에 딱인 것 같아요 그리고 고기꾼김춘배는 요즘 트렌드에 맞게 Zero sugar를 하고 있어서 새로와 제로콜라가 둘다 있었어요! 다이어트 하시는분들께 양심을 지킬 수 있는 그런 곳이랄까 ㅎㅎ 우선 갈매기살 2인분 먼저 시켰는데 여기는 생갈매기살로 자르지 않고 나와요 고기가 정말 질이 좋았고 맛도 너무 좋았어요 회사..

맛집 2022.11.12

(서울식불고기) 미미담, 센터필드, 역삼맛집, 주차

평일에 회사 직원들과 함께 역삼 센터필드에 있는 미미담에 다녀왔어요! 여기는 조선페리스 호텔이 있는 곳이기도 하고 이상한 변호사 우영우 드라마를 촬영한 곳이기도 해요. 저희는 오늘 여기서 서울식 불고기를 먹기로 했어요! 3명이서 간거라 3인분을 시키고 여기는 제로콜라가 있어서 제로콜라도 시켰어요 ㅎㅎ 반찬은 이렇게 나와요. 주문한 고기도 같이 나왔어요! 고기 너무 맛있어 보여요 ㅠㅠ 여기는 주문과 동시에 직원분께서 직접 구워주세요! 먼저 육수를 부어주시고 팽이버섯을 넣어주세요~ 살짝 달달하면서 고소한 고기가 정말 존맛탱이였어용 ㅋㅋ 여기는 좌석도 많아서 사람 많을 때도 걱정없이 들어올 수 있을 것 같아요 ㅎㅎ 주차 주차는 센터필드에 주차하시면 되고 계산하시고 나가실 때 차량번호 뒷자리 이야기 하시면 2시..

맛집 2022.11.12

(코틀린) 제네릭스

제네릭 선언을 정의하고 사용하는지 보고 런타임 타입 소거(type erasure)와 구체화(reification)로 인해 제네릭스 사용 시 어떤 문제가 생기는지 보고 같은 제네릭 타입에 대해 타입 파라미터 값이 달라지는 경우까지 하위 타입 관계를 확장함으로써 제네릭스의 유연성을 향상시켜주는 중요한 개념인 변성(variance)에 대해 알아봅니다. 타입 파라미터 제네릭 선언 어떤 선언을 제네릭 선언으로 만들려면 하나 이상의 타입 파라미터를 추가해야 합니다. fun main() { val map = HashMap() val list = arrayListOf() // 컴파일러가 문맥에서 타입 인자를 추론할 수 있으면 생략 가능 val map2: HashMap = HashMap() val list2: Array..

개발/코틀린 2022.11.12

(이자카야) 오롯 - 마포맛집, 공덕맛집, 데이트, 소개팅, 주차

안녕하세요~ 이번 주말에 마포 맛집인 이자카야 오롯에 다녀왔어요 위치는 대흥역과 공덕역 사이에 경의선숲길쪽에 있어요~ 가게 외부가 너무 이쁘고 내부도 너무 이쁠것 같지 않아요? ㅎㅎ 여기는 분위기가 정말 데이트나 소개팅으로 딱이었어요 웨이팅이 너무 많은 곳이라서 저는 네이버 예약으로 미리 예약을 했어요! 미리 예약했으면 가게 안으로 들어가서 예약자 성함 말씀해주시면 바로 자리로 안내해주세요. 네이버 예약 바로 가기 > 오롯 : 네이버 방문자리뷰 893 · 블로그리뷰 545 m.place.naver.com 저는 이번에 2명이서 가서 바에 앉았고 바에서 먹는 것도 느낌 있고 너무 좋았어요~ 여기는 1인 1 음료를 주문해야 했는데 저는 차를 가져와서 사이다 마시고 친구는 하우스 와인을 마셨어요. 처음에는 도..

맛집 2022.11.06

(Tesla) 알리 화이트 커버 시공 후기 및 시공 업체 소개

안녕하세요. 저는 테슬라 모델Y 퍼포먼스 22년식 3분기 인도 차량을 타고 있습니다. 알리에서 이것저것 많이 사서 사용 중인데 이번에 알리에서 화이트 시트 커버를 구매했습니다. https://ko.aliexpress.com/item/1005004622188997.html 저는 화이트 색상에 Full Surround로 옵션 선택했습니다. 가격은 22만원 정도 했어요 실제로 배송이 오고 나서 제품을 확인해봤는데 혼자서는 시공하기 너무 힘들 것 같아서 시공업체를 찾았고 수원에 있는 업템포 업체에 시공 의뢰를 했습니다. 시공 전에는 이렇게 검정 시트였어요! 시공할 때는 앞에 시트 밑 부분을 저렇게 꺼내놓고 하셨어요 앞 시트 시공 중간 사진인데 벌써부터 너무 이쁜 게 보여요 ㅎㅎ 사장님께서 이렇게 열정적으로 시공..

자동차 2022.11.06

(코틀린) 클래스 계층 이해하기

클래스 상속 개념을 이해하고 하위 클래스를 정의하는 방법을 터득하며 abstract class, interface, 클래스 위임을 통해 복잡한 클래스 계층 구조를 설계하는 방법에 대해서 알아봅니다. 그리고 강력한 스마트 캐스팅을 사용할 수 있는 타입 검사를 가능하게 해주는 대수적 데이터 타입(Alegebraic Data Type, ADT)인 Sealed class에 대해서도 알아봅니다. 상속 객체지향 언어에서 상속은 도메인 개념에 있는 is-a 관계를 표현합니다. is-a는 사람은 동물이고, 자동차는 이동수단과 같은 개념을 의미합니다. 여기서 동물과 이동수단은 상위 클래스(superclass), 기반클래스(base class)라고 부르며 사람과 자동차는 하위 클래스(subclass), 파생클래스(deri..

개발/코틀린 2022.11.06
728x90
반응형