DB-ENGINES 사이트는 Database 정보 사이트로

오스트리아 DBMS 컨설팅 회사 SOLID IT가 주관하는 웹 사이트입니다.

 

 

1. DBMS 관련 뉴스 및 이벤트 스크랩을 제공합니다.

데이터베이스에 대한 최근 뉴스정보 및 각 데이터베이스에서 주관하는 이벤트 정보를 제공합니다.

뉴스 검색 기능은 Google News를 활용하기 때문에 단순한 스크랩에 가깝지만

DBMS 이벤트 정보는 각 사이트에 들를 필요 없이 일정을 확인할 수 있어 매우 유용한 것 같습니다.

 

 

2. 특정 DBMS에 대한 정보를 제공합니다.

랭킹정보 기준으로는 총 397개,

모든 데이터베이스 기준으로는 약 450여개의 데이터베이스 상세 정보를 제공합니다.

라이센스 정보, 클라우드-기반 정보, 스키마 적용 여부부터 기반 언어까지

한눈에 데이터베이스 정보를 파악할 수 있는 매우 유용한 기능을 제공합니다.

 

3. DBMS 랭킹 정보를 제공합니다

 

데이터베이스 랭킹 기능을 제공합니다.

이를 통해 현재 데이터베이스 트랜드를 빠르게 파악할 수 있습니다.

다만 실제 서비스하는 웹 사이트나 프로그래밍, 기업 등을 대상으로 낸 통계는 아니고,

SNS, 구글 트랜드 등을 통해 언급한 비율을 가중치로 두어 순위에 적용하고 있습니다.

 

이러한 선정방식 때문에 최근 빠르게 부상하는 데이터베이스를 파악하기는 쉽지만,

기존의 서비스 점유율을 추측하기에는 힘드니 어디까지나 참고용 자료로 사용해야 할 것 같습니다.

 

 

사이트 소개를 종합하면

운영업체인 SOLID IT 가 DBMS 컨설팅 회사라는 점을 감안할 때

정밀한 측정보다는 홍보성이 강한 사이트인 것 같습니다.

 

다만 잘 사용하지 않거나 새로 트랜드가 되는 DB에 대해

빠르게 정보를 얻기 좋은 사이트 인 것 같아 소개드립니다.

 

데이터베이스에 관심이 있으시다면 꼭 한번  DB-ENGINES 사이트를 참고해보시길 바랍니다.

 

 

참고 자료

 

Solid IT DBMS consulting

We care about databases We advise on the appropriate database technology and data model for given requirements (e.g. relational vs NoSQL variants). We compare different DBMS with regard to specific use cases. We support in data modelling. We operate the DB

solid-it.at

 

 

 

DB-Engines Ranking - Method

Ranking > Method Method of calculating the scores of the DB-Engines Ranking The DB-Engines Ranking is a list of database management systems ranked by their current popularity. We measure the popularity of a system by using the following parameters: Number

db-engines.com

 

 

FECONF 2022

국내 최대 프론트엔드 개발 컨퍼런스, FECONF 2022가 10월 8일 오프라인으로 찾아옵니다.

2022.feconf.kr

 

국내 최대 프론트엔드 컨퍼런스로 프론트엔드 개발그룹에서 주최하는 컨퍼런스입니다. 

 

2022년에는 롯데 타워 31층에서 열린다고 합니다. 

 

오늘의 집, 뱅크샐러드, 토스 등 많은 기업들이 후원 자격으로 참여하니 관심이 있으시면 홈페이지를 참조하시기 바랍니다. 

 

티켓 값은 3만원으로, Track A, B로 나누어 강의가 진행되는 것 같습니다. 

 

개인적으로는 Javascript 표준 모듈 시스템인 ECMAScript Modules에 대한 발표, " 내 Import문이 그렇게 이상했나요?" 의 내용이 궁금하네요. 

 

track A에는 프론트엔드 DDD에 관한 내용도 있어 기대되는 컨퍼런스인 것 같습니다.

 

 

ES6부터 지원하게 된 함수(function)의 새로운 모습이다.

 

본격적으로 화살표 함수에 대해서 이야기하기에 앞서서 기존의 함수 표현식과 화살표 함수의 선언 방법을 먼저 비교하고 넘어가자.

// 기존의 함수표현식
const basicFunction = function() {
	// code..
}

// 함수 호출
functionName();

// 화살표 함수
const arrowFunction = () => {
	// code..
}

// 함수 호출
arrowFunction();

/* 
	주의
	화살표를 아래와 같이 개행 문자를 포함하여 할 수 없다는 것은 꼭 기억하자. 
*/
const arrowFunction = () 
=> {
	// code..
}

 

 

그다음으로 매개변수가 있는 상황을 살펴보자.

// 기존의 함수표현식
const basicFunction = function(args) {
	// code..
}

// 기존의 함수 호출
functionName(DATA);

// 화살표 함수
const arrowFunction = (args) => {
	// code..
}

// 화살표 함수 호출
arrowFunction(DATA);

 

기본적으로 함수 표현식과 화살표 함수를 어떻게 다르게 쓰는지 알았는지 파악했으니 본격적으로 화살표 함수를 사용해보자. 쉬운 거부터 만들면서 익히자.

// 2개의 숫자를 더하는 함수를 이런식으로 만들 수 있지 않을까?
const sum = (num1, num2) => {
	return num1 + num2;
}

// 화살표 함수에서 위의 식처럼 한줄이면 더욱 더 짧게 가능하다.
const sum = (num1, num2) => num1 + num2

 

조금 더 머리를 써서 응용을 해보자. 아래는 좋은 예제는 아니지만 이렇게도 가능은 하다.

// 화살표 함수의 블럭안에서는 일반적인 함수처럼 사용이 가능하다.
const myObj = {
    name : '바보',
    age : 10,
}

const arrFun = (myObj) => {
    if (myObj['name'] === '바보') {
        myObj['age'] -= 1;
    }
    return myObj;
};


let obj = arrFun(myObj);
console.log(obj);

 

여기까지가 기본적인 화살표 함수를 사용하는 방법이다. 여기까지 내용만 보면 자바스크립트에서 기본적으로 제공해주는 함수 표현식은 물론 아래와 같은 함수 선언도 안 써도 되는 거 아닌가라는 생각이 들 수 있다. 화살표 함수가 멋지니까?

// 함수 선언
function normalFunction() {
	// code..
}

 

마음 같아서는 모든 걸 화살표 함수로 만들어 버리고 싶지만... 알다시피 완벽한 기술은 없듯 화살표 함수도 가지지 못한 기능이 존재한다.

 

화살표 함수는 프로토타입이 존재하지 않는 객체(?)이다. 정확히 말하면 객체도 아닌 익명 함수이다. 그렇기에 prototype의 속성 값을 가지지 못하며 동시에 객체도 아니기에 생성자 함수도 없다. 특히 더 중요한 것은 this의 값이 다르다.

 

자세한 건 밑의 코드를 입력하여 두 눈으로 직접 확인해보자.

// 일반적인 함수 선언
function fun() {
    console.log(this);
}

let nonfun = new fun();

this를 생성할 생성자가 있다는걸 확인 가능하다.

// 위와 똑같은 조건을 화살표 함수로 실행해보자
const fun = () => {
    console.log(this);
}

let arrFun = new fun();

화살표 함수는 익명 함수로써 생성자가 없기에 생성 조차 되지 않는다.

생성자가 없어서 화살표 함수를 저렇게 못쓴다는 것은 이해를 했는데 만약 위의 코드에서 new 키워드를 제거하고 실행을 한다면 위와 근접한 결과를 가져오지 않을까? 해서 사용을 해도 결과는 예상과 다를 것이다.

window객체 나오는 걸 본 순간부터 머리가 어지럽다.

즉 자바스크립트에서 this는 자기를 호출한 시점에서 자신을 나타내는 값인데 화살표 함수는 언제나 상위 스코프를 가리키는 값이다. 그렇기에 화살표 함수를 사용할 때는 기존의 함수에서 this를 사용할 때와 전혀 다른 개념으로 접근을 해야 한다. 꼭 주의하자

 

해당 글에 기술된 내용 외에도 arguments 라던지  ES6의 축약 메서드 표현 등 이 있으니 꼭 찾아보자


 

참고한 내용들

 

[Javascript] 일반 함수 vs 익명 함수 — 개발하는 사막여우 (tistory.com)

화살표 함수 - JavaScript | MDN (mozilla.org)

 

Arrow function | PoiemaWeb

[javascript] 화살표 함수 (()=>, Arrow Function) (tistory.com)

JavaScript에서는 함수(Function)도 객체(Object)다. (tistory.com)

화살표 함수 기본 (javascript.info)

 

Java는 객체지향 프로그래밍 언어이지만,

 

실제 개발을 진행하다보면 절차지향적인 코드를 구현할 때가 많이 있습니다.

 

이러한 절차지향적인 코드는 코드의 진행순서를 읽기 쉽다는 장점이 있으나

 

로직의 재사용성이 떨어지고 유지보수를 어렵게 만듭니다.

 

그래서, 객체지향의 5대 개발원리(SOLID) 중 하나인 단일책임원칙(SRP, Single Responsibility)에 의하여

 

두 개 이상의 역할을 수행하는 코드들은 하나의 기능을 하도록 분리하는 것이 좋습니다.

 

이를 자바에서는 메서드 분리(Method Extract)라고 합니다.

 

메서드분리는 다음과 같은 장점을 가지고 있습니다.

 

맴버변수의 쓰임을 제한하여, 예상치 못한 변수 사용을 막을 수 있다.

 

변수를 위쪽에 몰아서 선언하는 경우,

 

메서드분리가 제대로 되어있지 않으면 코드를 읽는 사람이

 

중간에 변수가 바뀌는 것을 눈치채지 못할 수 있습니다.

 

이는 컴파일 시점에 드러나지 않으므로 오류의 원인이 되는 객체와 오류가 발생하는

 

물리적 지점의 거리가 멀어지는 원인이 됩니다.

각 기능간의 의존성이 낮아지기 때문에, 유지보수가 쉽고 편해진다

파일함의 업로드 기능을 예시로 들면, “업로드”와 “로그 남기기” 기능을

 

메서드분리한다면 로그 남기기 기능에 다소 변경사항이 있더라도

 

“업로드” 기능에는 영향을 주지 않으므로 기능을 더 쉽게 변경할 수 있습니다.

 

코드 맥락(Context)의 가독성이 높아진다

** 절차지향적 코드는 if문 중첩이 조금만 반복되어도 맥락을 매우 파악하기 어렵습니다.

 

2천줄을 읽은 후에, 갑자기 else문이 등장했다면 과연 2천줄 전의 조건을 기억할 수 있을까요?

 

메서드분리는 몇천줄의 코드를 한 줄의 메서드로 줄일 수 있기 때문에,

 

중첩 if문이라 하더라도 어떤 조건을 이용하는지를 빠르게 파악할 수 있습니다.

 

 

 

이렇게 코드를 리팩토링 하면서 메서드분리를 염두에 둔다면

 

예상치 못한 변수의 변경 및 쓰임을 예방하면서 유지보수와 가독성을 높일 수 있습니다.

 

Intellj의 리팩토링 기능, 자동 메서드분리

 

intellij에서는 이런 메서드 분리를 위해 자동 메서드분리 기능을 제공합니다.

 

먼저 메서드분리를 원하는 코드블록 ( {} 로 표현되는 하나의 스택 블록 ) 을 드래그하여 선택합니다.

 

Ctrl + Alt + M 을 누르면 자동으로 메서드분리가 진행됩니다.

 

분리된 메서드는 intellij가 원 메서드에 있는 매개변수를 추적해서 넣어주므로,

 

어떤 매개변수와 타입이 필요한지 선언부에 일일히 적을 필요가 없습니다.

 

선언부와 매개변수는 직접 수정할 수도 있으나,

 

엄격하게 하려면 intellij에서 제공하는 “More options” 를 사용하는 것도 좋습니다.

 

이렇게 접근제한자, 이름, 매개변수를 설정할 수 있습니다.

 

다만, ReturnType을 여러개로 인식할 수 있는 코드블록이라면 메서드분리 기능을 제공하지 않으니

 

반환값에 따라 다시 단일 메서드로 분리하면 됩니다.

 

유지보수와 가독성 향상을 위한 메서드분리를 위해서 Intellij의 자동 메서드분리 기능을 활용해보시기 바랍니다.

참고 자료

intellij IDEA 메서드분리 기능 official Document

 

 

Extract method | IntelliJ IDEA

 

www.jetbrains.com

 

+ Recent posts