Dev
[파이썬/Python] 정규표현식 - 리스트 내 원소들 중 숫자만 필터링하기
import re page = ['처음', '5개 앞', '이전', '6', '7', '8', '9', '10', '다음', '5개 뒤', '마지막'] p = re.compile("^[0-9]+$") page_only_digit = list(filter(p.match, page)) print(page_only_digit) # ['6', '7', '8', '9', '10'] 원래는 p.match 부분에 isdigit 내장 함수를 사용하려고 했는데, '5개 앞' 같이 원소 내 공백이 존재하면 내부적으로 구현되어 있는 ord 메서드를 적용할 수가 없어서 먹히질 않았습니다. 그래서 어쩔 수 없이 정규표현식으로 걸러줬습니다.
[Mac OS] 맥북 기본 실행 프로그램 변경
들어가며 평소에 Typora라는 프로그램으로 md 파일을 보고 있었는데, Xcode를 깔고 난 다음부터 갑자기 모든 md 파일이 Xcode로 열리기 시작했습니다. 파일 우클릭 - 다음으로 열기 - 기타 - 원하는 프로그램 선택 - '항상 선택한 응용 프로그램으로 열기' 체크 를 통해 기본 실행 프로그램이 변경될 줄 알았는데, 해당 파일에 대해서만 기본 실행 프로그램이 변경되더라고요. 그래서 특정 확장자를 가진 모든 파일에 대해 기본 실행 프로그램을 변경하는 방법을 찾아봤습니다. 본론 1. 파일 우클릭 2. '정보 가져오기' 클릭 3. '다음으로 열기' 클릭 후 원하는 응용 프로그램 선택 4. '모두 변경' 클릭 후, 열린 팝업창에서 '계속' 클릭 5. 선택한 응용 프로그램명 우측에 (기본)이라는 글자가 ..
[Shell Script] 변수에 값 할당/변수에 할당된 값 참조
들어가며 쉘 스크립트에서 변수에 값을 할당하고, 변수에 할당된 값을 어떻게 참조하는지 살펴보겠습니다. 변수에 값 할당 (1) 일반적인 형태 VAR1=1004 VAR2=hello VAR3="hello" VAR4='hello' # 큰따옴표/따옴표를 사용하는 습관을 들이자 VAR5=hello world # NO VAR6="hello world" # OK 일반적으로 변수에 값을 할당하는 문법은 변수명=값 으로 통일되어 간단합니다. 단, 주의할 점은 다음과 같습니다. 쉘 스크립트는 기본적으로 값의 타입이 없고(untyped) 모두 문자열로 인식됩니다. 위 예시에서 var1에 할당된 1004도, var2에 할당된 hello도 모두 문자열입니다. 반드시 할당 연산자 좌/우에 공백이 없어야 합니다. 대부분의 언어에서 ..
[Java] 배열(Array) vs. 배열리스트(ArrayList) vs. 연결리스트(LinkedList)
들어가며 본 글에서는 같은 타입의 데이터를 많이 다룰 때 사용하는 자바의 순차적 자료구조 배열(Array)과 리스트(List), 특히 배열 리스트(ArrayList)와 연결 리스트(LinkedList)에 대해 비교해보겠습니다. 자료구조 측면에서 접근하는 글이므로 코드로 배열이나 리스트를 어떻게 사용하는지는 구체적으로 적지 않겠습니다. 아울러 메모리 구조나 물리적/논리적 주소, 시간복잡도 등에 대한 내용이 나오는데, 분량이 너무 많아질 것 같아서 구체적인 설명은 기재하지 않은 점 참고 바랍니다. 글 내용에서 잘못된 점이 있을 경우 언제든 피드백을 남겨주세요. 언제든 피드백 대환영입니다 :) 배열 (Array) | 기본 개념 배열이란 같은 데이터 타입의 변수들로 이루어진 자료구조로, 자바에서 기본적으로 지원..
[Java] gradle 환경에서 JMH를 사용하여 벤치마킹하기
들어가며 최근에 진행했던 프로젝트에서 사용했던 메서드의 성능을 개선시킨 것 같은데, 정확히 얼마나 성능이 향상된 것인지 비교를 해보고 싶었습니다. 메서드 수행 시간을 측정하기 위해 여러 레퍼런스를 찾아봤는데, 그중에서 JMH(Java Microbenchmark Harness)을 활용하는 것이 가장 현대적이고 효율적이라고 생각되었습니다. 본 글에서는 gradle 환경에서 JMH를 활용하여 유닛 단위로 벤치마킹하는 방법에 대해 정리하겠습니다. 구글링해보면 대개 maven 환경에서 JMH를 많이 사용하고, gradle 환경 기반의 JMH 환경 설정 글은 별로 없었습니다. 그래서 gradle 환경에서 최대한 간단하게 JMH 환경 설정하는 방법을 적고자 했습니다. 개발 환경은 다음과 같습니다. OS : Windo..
[Java] 람다식에서 메서드 참조/생성자 참조 사용법
들어가며 Java 8 이상에서 람다식을 사용할 때 콜론 2개를 사용하는 경우가 있습니다. 이를 메서드 참조(Method Reference) 혹은 이중 콜론 연산자(::)라고 표현하는데요. 정식 명칭은 메서드 참조입니다. 그러면 메서드 참조는 어떨 때 사용할 수 있는 것인지, 그리고 어떻게 사용하는 것인지 간단하게 알아보겠습니다. 메서드 참조는 언제, 어떻게 사용할 수 있을까 메서드 참조는 람다식에서 파라미터의 중복을 피하기 위해 사용합니다. 파라미터가 중복되지 않았다면 메서드 참조 표현식은 사용 불가능합니다. 코드로 바로 보겠습니다. 인스턴스의 메서드를 참조하는 경우 public class Main { public static void main(String[] args) { List memberList ..
[Spring] 의존성 주입(Dependency Injection) 개념
들어가며 본 글에서는 Spring과 OOP에서 중요하게 다루는 의존성 주입(Dependency Injection)이 무엇이고, 왜 필요하며, 의존성 주입을 활용했을 때 이점은 무엇인지 살펴보겠습니다. 의존성 주입이란? A 객체가 B 객체를 사용할 때, "A 객체는 B 객체에 의존한다" 혹은 "A 객체는 B 객체의 의존성을 가진다"라고 표현합니다. 여기서 A 객체가 B 객체를 사용하는 방법은 두 가지가 있습니다. 미리 말씀드리자면 두 번째 방법처럼 객체 외부에서 다른 객체의 의존을 주입해주는 것을 의존성 주입이라고 합니다. | 1. A 객체 내부에서 B 객체를 직접 생성한다. 객체 A 안에서 new를 활용하여 객체 B의 인스턴스를 직접 만들고 B를 활용하는 방식입니다. 이러한 의존 관계를 강한 결합이라고 ..