전체 글

천방지축 얼렁뚱땅 다사다망한 지수의 기술공부.log
· Database
지난 프로젝트에서 과업으로 레거시 프로젝트의 프로시저를 Java의 비즈니스 로직으로 전환하는 과업이 있었다. 현업에선 프로시저의 사용에 대해 뜨거운 감자처럼 찬반이 갈리는 분위기가 좀 있는 분위기다. “프로시저 안좋다” “유지보수 힘들다” “요새 읽을 수 있는 개발자가 별로없다” 등의 반대측의 여러 이유를 듣긴 했지만, 정말 왜 현업 백엔드에서는 프로시저를 선호하지 않을까? 개념과 장단점을 알아보기로 한다. Stored Procedure란 저장 프로시저 또는 스토어드 프로시저 는 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 데이터베이스의 작업의 절차를 RDBMS에 저장한 것이다. 프로시저를 이해하기 앞서 애플리케이션의 아키텍처에 대한 간략히 정리해보자. 일반적인 애플리케이션의 아키..
React.js의 핵심 개념 중 하나는 컴포넌트의 생명주기(Life Cycle)이다. 컴포넌트의 생명주기는 컴포넌트가 브라우저에 나타나고, 업데이트 되고, 마지막으로 사라질 때까지의 과정을 말한다. 이 생명주기는 여러 단계로 나뉘며, 각 단계마다 개발자는 특정 코드를 실행할 수 있는 메서드를 이용할 수 있다. (생명주기 메소드는 Class형 컴포넌트에서만 사용할 수 있다) 먼저 마운드될 때 발생하는 생명주기는 아래와 같다 constructor : 생성자 메서드. 컴포넌트 생성시 가장 먼저 실행되는 메서드 getDerivedStateFromProps : props 로 받아온 것을 state 에 넣어주고 싶을 때 사용한다. render : 컴포넌트를 표시하는 메서드 componentDidMount : 컴포넌..
· JavaScript
비트 NOT연산자(~) 비트 NOT연산자 (~)는 피연산자의 비트를 반전시키는 연산자이며, 한글로 물결표라고 부르듯 Tilde(~,틸드) 연산자라고도 부른다. 피연산자는 32비트 정수로 변환되며 일련의 비트(0과 1)로 표현한다. 32비트를 넘어가는 숫자는 최상위 비트를 기준으로 삭제하며, 다른 비트 연산자와 마찬가지로 피연산자를 32비트 정수로 반환한다. 32비트 정수 피연산자는 2의 보수에 따라서 반전된다. 즉 최상위 비트는 음수를 표현하는데 사용한다. 9 (base 10) = 0000 0000 0000 0000 0000 0000 0000 1001 (base 2) -------------------------------- ~9 (base 10) = 1111 1111 1111 1111 1111 1111..
· DevOps/Kafka
Apache Kafka 개요 소스/타겟 애플리케이션 증가로 데이터 전송라인 복잡 및 파편화 이슈 발생 이에 따른 유지보수 어려움과 복잡함을 해결하기위해 나옴 kafka에서 queue와 같은 역할을 하는 topic에 데이터를 넣는 역할은 producer가, 가져가는 역할은 consumer가 한다.(producer와 consumer는 라이브러리 형태로 제공) 카프카는 낮은 지연과 높은 처리량을 지원하기때문에 빅(Big) 데이터 처리에는 kafka를 도입하는게 유리함 Kafka Topic 카프카에는 다양한 데이터가 들어갈 수 있는데, 그 공간을 topic이라고 함 (AMQP와는 동작 방식이 상이함) kafka에서는 topic을 여러개 생성할 수 있는데, table과 파일시스템의 폴더와 유사한 성질을 가짐 to..
· DevOps/Kafka
Apache Kafka란? 분산 스트리밍 플랫폼 데이터 파이프 라인 구성시, 주로 사용되는 오픈소스 솔루션 대용량의실시간 로그처리에 특화되어 있는 솔루션 데이터의 유실없이 안전하게 전달하는 것이 주목적인 메세지 시스템 클러스트링이 가능하므로 Fault-Tolerant한 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리 수평적으로 서버의 Scale-Out이 가능함 Falut-Tolerant : 시스템 내 장애가 발생하도라도 시스템에 지장을 주지않도록 설계된 시스템 Scale-Out : 서버의 대수를 늘려서 성능을 향상하는 방법 카프카의 탄생 배경 실시간 트랜잭션 처리(OLTP)와 비동기 처리가 동시에 이루어지는 시스템에서 통합된 전송영역 부재로 인한 시스템 복잡도 증대 시스템 복잡도 증대로 인한 운영업무 ..
· JavaScript
옵셔널 체이닝(?.)은 자바스크립트의 새로운 기능으로, 특정 객체가 null 또는 undefined인 경우에도 안전하게 속성에 접근할 수 있게 해줍니다. 옵셔널 체이닝이 필요한 이유 예를 들어 여러 사용자가 있을 때, 그 중 몇명은 주소 정보가 없다고 가정해보자. 이럴 때 user.address.street 을 사용하여 주소 정보를 접근하다면 에러가 발생할 수 있다. let user = {}; console.log(user.address.street); // TypeError: Cannot read property 'street' of undefined 또 다른 사례로는 브라우저에서 동작하는 코드를 개발할 때 발생할 수 있는 문제로, Javascript 를 사용해 페이지에 존재하지 않는 요소를 탐색하여 ..
· Kotlin
코틀린의 가장 매력적인 가능한 모든 널 값을 제거한다는 것이다. 코틀린에서는 변수 타입에 물음표 없이 정의하면 해당 변수에 널이 아닌 값을 요구하도록 한다. 널 허용(nullable)타입은 안전 호출 연산자(?.)나 엘비스 연산자(?:)와 결합해서 사용한다. var name: String name = "didue" 일반적으로 name 변수를 String으로 선언하여 이 변수에는 null을 할당할 수 없거나 널일 경우 코드가 컴파일 되지 않는다. 이제 변수에 널을 할당 가능하게 하려면 타입정의에 물음표를 추가하면 된다. class Person(val first: String, val middle: String?, val last: String) val doncici = Person("Luka", null,..
· JAVA
지난번에 작성한 JavaScript의 Spread 연산자 에 이어, 자바편을 작성해보고자 한다. JavaScript의 Spread 연산자 와 같은 연산자가 Java에는 없을까 생각했다. [ES6] Spread 와 Rest 파라미터 ( ... 연산자) (이 포스팅은 이전 블로그에서 옮겨왔습니다) 근래 JavaScript를 아주 씐나게 공부하고 있는 와중에, ECMA2015(ES6)에서 추가된 새로운 연산자가 있어 공부해보았다.😛 Spread Operator Spread 문법은 ... fascinate-zsoo.tistory.com 유레카🥸✨ 역시나 있었다. Java에서는 이를 가변인자(varargs) 라고 부른다. Javascript에서의 사용법과는 조금 차이가 있으니 이제부터 알아보도록 하자! Java ..
didue
다사다망 데브로그