어제까지 정규 표현식에 대해 알아보았지만 내가 주로 사용하는 프로그래밍 언어인 Kotlin에서의 사용법은 아직 공부하지 못했다. 정규 표현식 작성법을 알았으니 사용법을 공부해보고 정리해보았다. 1. Kotlin에서 정규 표현식 사용하기1-1. 정규 표현식 객체 생성하기정규 표현식을 사용하려면 먼저 정규식 객체를 생성해야한다. 객체 생성 방법 3가지를 정리해보았다. Regex 생성자를 이용하는 법, String 클래스의 toRegex() 함수를 이용하는 법, 정적 팩토리 함수인 fromLiteral을 활용하는 법이다.fun main() { val reg1 = Regex("^[a-zA-Z0-9][a-zA-Z0-9]+") val reg2 = "^[a-zA-Z0-9][a-zA-Z0-9]+".toReg..
오늘은 그저께부터 해왔던 정규 표현식 기본적인 부분들에 대해 정리를 끝내보았다. 1. 정규 표현식 익혀보기1-1. 문자 클래스\ 뒤에 특정 알파벳은 입력하게되면 특정한 한 문자를 나타내는 문자 클래스를 나타내게 된다. \w, \W, \s, \S, \d, \D 와 같은 문자클래스가 있다. 같은 알파벳의 소문자와 대문자의 경우 서로 반대의 의미가 된다. 예시로 살펴보는 것이 이해가 빠르다.\w는 한 개의 알파벳 또는 한 개의 숫자 또는 언더바 _ 와 동일하다. 따라서 [a-zA-Z0-9_]와 동일하다. 사례 1소스 : A1 B2 c3 d_4 e:5 ffGG77--___--정규 표현식 : \w 첫 번째 매치 A1 B2 c3 d_4 e:5 ffGG77--___-- 전체 매치 A1 B2 c3 d_4 e:5 ff..
어제는 정규 표현식 공부한 내용을 정리해보았는데 마저 끝내지 못해서 오늘 나머지 부분을 정리해보았다. 1. 정규 표현식 익혀보기1-1. 서브 패턴정규 표현식에서 소괄호()로 모아진 일부분을 서브패턴이라고 한다. 이 소괄호 안에는 다양한 문자, 문자열들을 입력할 수 있는데 (a|bc|de|f|g) 이런식으로 입력할 수 있다. 여기서 |는 or의 의미를 갖는다라고 이해하면 쉽다. a 또는 bc 또는 de 또는 f 또는 g 이 중 하나라도 매치되는 것이 있다면 매칭되게 된다. 사례 1소스 : Monday Tuesday Friday정규 표현식 : (on|ues|rida) 첫 번째 매치Monday Tuesday Friday 전체 매치Monday Tuesday Friday on 또는 ues 또는 rida 와 매칭..
공부를 하다보니 정규 표현식이라는 것과 마주치게 되었는데 급하게 알아야 할 건 아닌 것 같아서 일단은 건너뛰고 공부를 진행했었으나 간단히라도 알아두면 좋을 것 같아 기본적인 것에 대해 공부해 보았다. 막상 공부해보니 복잡해보였던 외관과 다르게 이해가 쉽게 되었다. 튜토리얼과 설명을 제공하는 사이트들이 다양하게 있어 모두 참고해보았다. 정리를 위해 주로 참고한 것은 zvon.org의 내용이다. https://zvon.org/comp/m/regexp.html regexp @ZVON.orgregexpzvon.org https://regexlearn.com/learn/regex101 Regex 101 - ENYou can learn the basics of Regex in this tutorial.regexle..
지난번에 찾아본 데이터베이스에 대해 발표 준비를 하며 다시 자료를 보니 좀 더 찾아보고 추가할 수 있는 부분이 있을 것 같아 추가로 조사를 해보았고 그 내용을 간단하게 정리해보았다. 1. 수직 확장과 수평 확장 NoSQL의 경우 수평 확장성이 뛰어나다는 특징을 가진다라고 정리를 해두었으나 사실 이게 어떤 의미인지는 정확하게 알지 못했고 그리하여 조금 더 찾아보게 되었다. 먼저 수직 확장이란 단일 서버를 더 좋은 스펙의 서버로 업그레이드 하는 것을 말한다. CPU를 더 좋은 것으로 업그레이드 하거나 아니면 용량이 더 큰 서버로 업그레이드를 하는 것을 말한다. 위와 같이 더 좋은 스펙의 서버로 업그레이드 하는 것이 아니라 여러 대의 서버를 추가하는 방식을 수평 확장이라고 한다. 계속에서 서버를 추가할 수 있..
어제 공부하다가 끝내지 못했던 컬렉션을 집계하는 방법에 대해 마저 다 알아보았다. 1. fold()와 reduce() 1-1. fold(), reduce() fold()와 reduce()는 입력받은 연산을 컬렉션 요소에 순차적으로 적용하여 누적된 결과를 반환하는 함수이다. 두 연산 모두 누적된 값과 컬렉션 요소 두 가지의 인자를 받는다. fold()는 초기 값을 받아 첫 번째 누적 값으로 사용하지만, reduce()는 첫 연산에서 첫 번째 요소와 두 번째 요소를 인수로 사용한다. reduce()의 경우는 람다의 두 인자 타입이 서로 호환되어야 사용이 가능하다. 따라서 누적 값의 타입이 컬렉션 원소와 다르면 reduce()를 사용해 값을 누적할 수 없다. fold()의 경우는 누적값의 첫 값이 존재하고 거..
Kotlin으로 문제풀이를 하고 다른 풀이들을 보고있으면 내가 모르는게 참 많구나 하는 생각이 든다. fold와 같은 함수도 여러번 보았지만 정확한 사용법을 익히지 못해 아직 사용해보지 못했다. 코틀린의 공식문서에는 코틀린에서 컬렉션 요소들로 단일한 하나의 값을 도출해내는 집계 연산에 자주 사용되는 함수들에 대해 잘 정리되어 있다. 이 내용들과 직접 찾아본 내용들을 더해 자세히 정리해 보려고 한다. 코틀린 공식문서 링크 https://kotlinlang.org/docs/collection-aggregate.html Aggregate operations | Kotlin kotlinlang.org 1. 최대, 최소, 평균, 합, 개수 1-1. maxOrNull(), minOrNull(), max(), min..
오늘은 웹개발과 관련된 CS 공부를 하였고, 발표 준비를 하며 찾아본 내용을 적어보았다. 내가 맡은 파트는 데이터베이스와 쿼리와 관련된 것이어서 그에 대해 정리해보았다. 1. 데이터베이스 1-1. 데이터란? 데이터베이스에 대해 알려면 먼저 데이터에 대해 알아야 한다. 데이터는 어떠한 의미나 목적 없이 단순히 수집된 순수한 자료를 뜻한다. 데이터를 정보와 혼동하기 쉽지만 데이터는 정보보다 더 작은 개념이다. 이런 데이터가 모여서 의도나 목적에 따라 분석되어 의미가 부여되면 정보가 된다. 특정 지역에서 날마다 측정한 온도 자료를 예를 들어 설명할 수 있다. 날마다 측정한 섭씨 온도 그 자체는 모두 데이터이다. 데이터 자체에는 어떤 의미 부여 없이 사실 그 자체만 반영되어 있다. 이 데이터들이 모이면 이를 바..