Backend

· Backend/Java
서론 현재 프로그래머스 백엔드 데브코스 5기 멘토를 진행하던중, 아래와 같이 멘티의 질문이 있었다. Java11까지만 해봤기 때문에 toList()에 대해서 잘 알지 못한다고 생각해 아래와 같이 정리를 해봤다. stream의 최종연산을 List로 반환하기. stream의 최종연산을 List로 반환하는 방법은 Java11에선 아래와 두개가 있었다. List collectorToList = numbers.stream() .filter(it -> it % 2 == 0) .collect(Collectors.toList()); List collectorToUnmodifiabledList = numbers.stream() .filter(it -> it % 2 == 0) .collect(Collectors.toUnm..
· Backend/Java
Java String의 isEmpty와 isBlank 서론 String 타입에서 해당 값이 빈 문자열인지 체크하는 메서드가 두개가 있다. isEmpty와 isBlank의 차이점을 알고, 각각 어느 상황에 써야 하는지 이해하는 시간을 가져보려고 한다. 일단 결론부터 말하자면 whiteSpace(공백)과 tap(탭)까지 포함해서 빈 문자열로 인정할것인가 이다. isEmpty 실제 자바 구현체를 보면 아래와 같다. /** * Returns {@code true} if, and only if, {@link #length()} is {@code 0}. * * @return {@code true} if {@link #length()} is {@code 0}, otherwise * {@code false} * * @..
1.9.0 언어 업데이트 release note What's new in Kotlin 1.9.0 | Kotlin Enum 클래스 entries 속성 values()의 함수를 entries라는 속성으로 대체하였습니다. values()의 단점은 호출할때마다 새로운 인스턴스를 매번 할당해야 하기 때문에 성능 문제로 이어질수 있다는 단점이 있습니다. 모든 호출마다 Mutable Array 복사본을 생성해 반환. 아울러 불변이 아니기 때문에, 수정이 가능한 부분이 있었습니다. enum class Direction { NORTH, SOUTH, EAST, WEST } fun main() { val directions = Direction.values() directions.forEach { println(it) } ..
서론 도커를 사용해 MySQL을 띄우는 작업을 해볼 예정입니다. docker-compse.yml을 이용해 협업자에게도 같은 환경을 제공해줄수 있다. 도커를 사용하는 이유는 팀워크에서의 이점이 있기 때문이다. 프로그램은 버전에 따라 많은 차이점을 가질수가 있다. 다른 버전을 쓰면 다른 협업자에겐 오류가 나는 경우도 있다 보니, 그런 부분을 맞추기 위해 docker를 사용해 컨벤션을 지켜본다. docker-compose 여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히하는 기능이다. compose 파일을 준비하여 커맨드를 1회 실행하는 것으로, 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다. MySQL을 위한 docker-comp..
IntelliJ IDE에서 Spring Initializr를 이용해 프로젝트를 생성해보자. 서론 이 글은 Intelli J를 통해 Spring 프로젝트를 생성해보는 글입니다. Spring 프로젝트를 만드는 방법은 여러가지 있지만, 간단히 만들어 볼 예정입니다. 단계 IntelliJ IDE를 설치를 진행합니다. 설치는 IntelliJ IDE를 실행합니다. 위 사진 페이지에서 New Project를 클릭합니다. 그리고 왼쪽 Generators에서 Spring Initializr를 클릭합니다. 위 사진의 각 값들을 채워넣습니다. Name: 프로젝트 이름 Location: 로컬 내에 저장할 경로 Language: 사용할 언어 Type: Build 도구 선택 Group: 패키지 그룹 Artififact: 프로젝트..
· Backend/Ruby
Numeric의 zero? & positive? & negative? Numeric 루비의 숫자 타입으로 숫자인 경우에 Numeric Class가 됩니다. to_i로 integer로 변경하면 Numeric 메서드를 사용할수 있습니다. cf) nil을 to_i로 하면 어떻게 되는가? nil.to_i // 0 혹시라도 zero? & positive? & negative? 메서드를 사용할때, null safe를 해야할 경우 nil.to_i를 하는것도 방법임. 그러나 zero?인 경우에 true가 나오기 때문에 nil이 0이라는 조건 하에 사용해야함. zero? APIdock 메서드명에서 보이다 싶이, 해당 숫자가 0인지를 체크하는 메서드 입니다. 구현 코드 static VALUE num_zero_p(VALUE..
dicts의 get() 메소드와 default 인자 # The get() method on dicts # and its "default" argument name_for_userid = { **382**: "Alice", **590**: "Bob", **951**: "Dilbert", } **def** **greeting**(userid): **return** "Hi %s!" % name_for_userid.get(userid, "there") >>> greeting(**382**) "Hi Alice!" >>> greeting(**333333**) "Hi there!" dictionary 딕셔너리 타입은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합..
Django Improvements - Part 3: Frontend Optimizations(장고 성능 향상 - Part 3: 프론트엔드 최적화) Django 애플리케이션 성능 향상에 관한 이전 시리즈에서는 데이터베이스와 코드 최적화에 중점을 두었습니다. 3부에선 프론트엔드 성능 향상 방법에 중점을 두도록 하겠습니다. Minification(축소) Put Javascript Files at the bottom of the Page(페이지 하단에 자바스크립트 파일 배치) Http performance(HTTP 성능) Caching(캐시) CDN systems 성능 속도 측정 모든 사이트 최적화의 첫번째 단계는 속도를 측정해 벤치마크를 얻는것 입니다. Google Page Insights는 웹 사이트가 모..
Django 성능 향상 - Part2: 코드 최적화 Django Performance Improvements - Part 2: Code Optimization(Django 성능 향상 - Part2: 코드 최적화) 다음으로 소개할 글은Sentry 및 Python용 애플리케이션의 Profiler(프로파일러를 사용해 서비스를 개선하는 방법을 설명합니다. 이 게시물을 확인하여 Sentiry의 향후 애플리케이션 및 모바일 애플리케이션의 프로파일링 제인을 확인해보 긴급한 문제를 더 빨리 해결할 수 있도록 성능 모니터링에 대해서 투자하고 있습니다. 프로파일링을 처음 접하는 사람들을 위해 애플리케이션 프로파일러는 주어진 작업에서 발생하는 모든 단일 호출을 캡처해 성능 모니터링 데이터로 사용합니다. 아래에서 읽을 수 있..
Django Performance Improvements - Part 1: Database Optimizations(Django 성능 향상 - Part1: 데이터베이스 최적화)Django 프로젝트에서 최적화의 주요 목표는 시스템 리소스를 최대한 활용하여 데이터베이스 쿼리를 빠르게 수행하여 프로젝트가 실행하게 하는 것입니다. 적절히 최적화된 데이터베이스로 응답시간을 줄여 더 나은 사용자 경험을 제공합니다.이 4개의 시리즈에선 Django 애플리케이션의 다양한 영역에서 최적화 하는 방법을 배우게 됩니다.이 파트에선 데이터베이스를 최적화하여 Django 애플리케이션의 속도를 향상시키는 것에 중점을 둡니다.쿼리를 이해하기QuerySet이 어떻게 동작 하는지 이해하면 더 좋은 코드를 작성할 수 있습니다. 최적화 ..
Seyun(Marco)
'Backend' 카테고리의 글 목록 (4 Page)