728x90

개발 339

[Kotlin] 코틀린 기초 살펴보기

코틀린 기초 나는 Java + Spring boot를 주로 사용하는 개발자 이지만, Kotlin은 같은 JVM 환경에서 돌아가고, Java를 공부한 사람이 접근하기 쉽다고 하여 한번 겉핥기 식으로 공부해보려한다. 기본적 특징 기존 자바 언어와 완벽한 호환성을 제공 안전성: NPE 방지, Immutable 자료구조 제공 간결성: 코드는 작성되는 시간보다 읽히는 데 훨씬 많은 시간이 소모(간결한 코드는 가독성과 유지보수성을 향상시킴) 코루틴 라이브러리를 통한 비동기 프로그래밍 OOP와 FP 구조를 함께 사용할 수 있음 코틀린 기본 문법 // java int a = 10; // Kotlin val a: Int = 10 var a = 15 - 변수 선언 방식이 Go나 TS와 비슷하다. - Go 처럼 ";"를 생..

[Spring] 스프링 부트에 캐시 적용하기

스프링 부트에 캐시 적용하기 캐시(Cache) - 자주 사용하는 데이터를 미리 보관해둔 임시 장소 - 비교적 저장 공간이 적고, 전체적인 비용이 비쌈 - 빠른 IO를 통해 성능적 이점을 갖는다. - 도중에 변경될 일이 없는 DB 조회 값이나 자주 호출되는 데이터에 사용 스프링 부트에서의 캐시 - 스프링 부트에서 사용할 수 있는 캐시는 대부분 JSR-107를 따른다.(JSR: Java Specification Requests, 자바 플랫폼에 대한 규격을 제안하거나 기술한 것을 의미, JSR-107은 JCACHE에 대한 내용) - JSR-107을 따르는 캐시를 사용하면 어떤 구현체 캐시를 사용하는지에 관계없이 추상화를 지원 로컬 캐시와 글로벌 캐시 로컬 캐시 - 로컬에서만 사용하는 캐시 - 외부 서버와 트랜..

[Spring] 테스트 커버리지 확인하기

테스트 커버리지 확인하기 코드 커버리지 - 소프트웨어의 테스트 수준이 충분한지 표현할 수 있는 지표 중 하나 - 테스트를 진행했을 때 해당 코드가 실행되었는지를 표현하는 방법 - 많은 코드 커버리지 도구가 있다. Jacoco란? - Java 코드의 커버리지를 체크하는 라이브러리 - 작성된 코드의 테스트 커버리지(Test Coverage)를 측정하는 도구 - Runtime으로 Test Case를 실행하여 Coverage를 체크하는 방식 - 테스트 코드를 통해 테스트를 실행하고 그 결과를 html, xml, csv 등의 형식으로 Report를 제공 블랙 박스 테스트 / 화이트 박스 테스트 블랙 박스 테스트 - 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식 - 다양한 값을 입력하여..

[Spring] 테스트 코드 적용하기

테스트 코드 적용하기 TDD에 대한 간단한 정리 - 테스트 주도 개발이라는 의미 - 테스트를 먼저 설계 및 구축 후 테스트를 통과할 수 있는 코드를 작성 - 코드 작성 후 테스트를 진행하는 방법 - 애자일 개발 방식 중 하나 코드 설계 시 원하는 단계적 목표에 대해 설정하여 진행하고자 하는 것에 대한 결정 방향의 갭을 줄이고자 함 최초 목표에 맞춘 테스트를 구축하여 그에 맞게 코드를 설계하기 때문에 보다 적은 의견 충돌을 기대할 수 있음(방향 일치로 인한 피드백과 진행 방향의 충돌 방지) 테스트 코드 작성 목적 - 코드의 안정성을 높일 수 있음 - 기능을 추가하거나 변경하는 과정에서 발생할 수 있는 Side-Effect를 줄일 수 있음 - 해당 코드가 작성된 목적을 명확하게 표현할 수 있음(코드에 불필요..

[RN] 드랍다운(Dropdown) 사용하기

리액트 네이티브 버전 : "react-native": "0.69.2" 드랍다운(Dropdown) 사용하기 라이브러리를 활용하여 드랍다운을 사용해봤다. 웹개발을 할 때는 HTML에서 기본으로 제공하는 건데, 리액트 네이티브는 라이브러리를 설치해서 사용해야했다. npm i react-native-dropdown-picker 명령어로 설치하면 "react-native-dropdown-picker": "^5.4.3" 버전이 설치 된다. - 예시 코드 const [open, setOpen] = useState(false); const [value, setValue] = useState(null); const [items, setItems] = useState([ {label: '보기1', value: '1'}, ..

[Spring] 스프링 부트에서의 예외 처리

스프링 부트의 예외 처리 방식 - 스프링 부트의 예외 처리 방식은 크게 2가지 1. @ControllerAdvice를 통한 모든 Controller에서 발생할 수 있는 예외 처리 모든 컨트롤러에서 발생할 예외를 정의 2. @ExceptionHandler를 통한 특정 Controller의 예외 처리 발생하는 예외 마다 처리할 메소드를 정의 @ControllerAdvice, @RestControllerAdvice - @ControllerAdvice는 Spring에서 제공하는 어노테이션 - @ControllerAdvice나 @RestController에서 발생하는 예외를 한 곳에서 관리하고 처리할 수 있게 하는 어노테이션 - 설정을 통해 범위 지정이 가능하며, Default 값으로 모든 Controller에 ..

[Spring] 알아두면 좋은 디자인 패턴

알아두면 좋은 디자인 패턴 디자인 패턴이란? - 디자인 패턴이란 특정 문맥에서 공통적으로 발생하는 문제에 대해 쓰이는 재사용 가능한 해결책. - 목적별로 일정한 패턴이 제시되어 있다. - 현재 상황에 맞춰 최적화된 패턴을 결정하여 사용. 디자인 패턴의 장점 - 개발자 간의 원활한 협업이 가능 - 소프트웨어의 구조를 파악하기 용이 - 재사용을 통해 개발 시간 단축 - 설계 변경이 있을 경우 비교적 원활하게 조치 가능 디자인 패턴의 단점 - 객체지향적 설계를 고려하여 진행해야 함 - 초기 투자 비용이 많이 들어감(돈, 시간 등) GoF 디자인 패턴 목적에 따른 분류 - 생성 패턴, 구조 패턴, 행동 패턴, 3가지로 구분된다. - 각 패턴이 어떤 작업을 위해 생성되는 것인지에 따른 구분. 1. 생성 패턴 - ..

[RN] 현재 위치의 경도, 위도 가져오기

리액트 네이티브 버전 : "react-native": "0.69.2" 라이브러리를 활용하여 현재 위치의 경도, 위도를 가져와봤다. npm i @react-native-community/geolocation 로 설치하면 "@react-native-community/geolocation": "^3.0.3" 버전이 설치된다. 안드로이드와 iOS 설정을 해줘야 한다. - iOS ios 폴더에서 pod install 후 Info.plist에 NSLocationWhenInUseUsageDescription 을 찾아서 아래 코드를 넣어준다. NSLocationAlwaysAndWhenInUseUsageDescription NSLocationAlwaysUsageDescription - Android andriodMani..

[Fiber] Fiber Template 사용하기

Fiber Template 사용하기Springboot처럼 Fiber로 백엔드를 개발하고, 화면은 프론트엔드 프레임워크를 사용하거나 템플릿 엔진을 사용한다. 난 회사에서 Springboot + Thymeleaf로 개발하는데, Fiber에서는 Html을 템플릿 엔진으로 사용할 수 있다. Fiber에서 제공하는 템플릿 엔진은htmlaceamberdjangohandlebarsjetmustachepug이렇게 8가지 이다. 난 전회사에서 사용했었던 html을 템플릿으로 사용하고, 포스팅을 작성했다. - 사용법package mainimport ( "github.com/gofiber/fiber/v2" "github.com/gofiber/template/html")func main() { // Initialize sta..

개발/Go 2022.11.08

[Fiber] Fiber Routing과 Grouping

Fiber Routing과 GroupingFiber의 Routing은 URI가 클라이언트의 요청에 응답하는 방식을 나타낸다. - PathPath는 문자열, 문자열 패턴으로 이루어져있다.app.Get("/", func(c *fiber.Ctx) error { return c.SendString("root")})app.Get("/about", func(c *fiber.Ctx) error { return c.SendString("about")})app.Get("/random.txt", func(c *fiber.Ctx) error { return c.SendString("random.txt")})  - ParameterParameter는 받을 수 있고, 선택적으로 받을 수 있다.// Param..

개발/Go 2022.11.07
728x90