Procedure 프로젝트를 하다가 데이터베이스와 관련된 글들을살펴보면 간혹 프로시저에 대한 내용들이 나온다. 매번 그냥 넘겨짚어서 아 이런게 있구나 했지만 알아두면 좋을것 같아서 따로 정리해보기로 했다. 프로시저란 간단하게는 프로그램을 여러개의 단위로 분해한것을 프로시저라고 한다. 보통 기능에따라 분해되는 단위로 프로시저라고 일컫는데, 이를 세부적으로는 서브 프로시저와 함수 프로시저로 구분한다고한다. 서브 프로시저 프로시저를 수행후 결과값을 반환하지 않는 프로시저를 말한다. [Private][Public][Static] Sub 프로시저명 [Args] [명령문] [Exit Sub] [명령문] End Sub 위는 서브 프로시저의 구문 형태를 나타내고있다. Private, Public같은 경우 프로시저의 유..
gRPC 심화 gRPC는 RPC(Remote Procedure Call) 에서의 컨셉과 같이 한 프로세스가 원격 서버에서 호출할 수 있도록 하는 방식을 사용합니다. gRPC는 여러 기술의 확장판으로 표현할 수 있습니다. CORBRA와 같이 서비스 정의를 위해 IDL(Interface Definition Language)를 사용합니다. Java RMI와 같이, 클라이언트가 로컬에서 원격 메소드를 호출합니다. SOAP과 같이, 여러 언어를 위한 클라이언트 및 서버 코드를 자동으로 생성 가능합니다. REST와 같이 HTTP를 (정확하게는 HTTP/2)를 사용합니다. 하지만 gRPC는 단순히 기술의 집합체가 아니라, 보다 더 많은 분야서 서비스 아키텍처의 창출을 위해 설계된 프레임워크입니다. Protocol B..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eLUMGg/btqvJKszzD4/VlZsG8OwRQY9pYdkrYs1H1/img.png)
RPC 와 gRPC 과거에는 Client - Server간에 자료를 요청하고, 받을때 주로 Socket 프로그래밍을 활용하였습니다. 소켓은 대부분의 프로그래밍 언어에서 API 형태로 제공하고 있지만, 실제로 소켓을 통해 서비스되기 위해서는 여러 장애물이 있습니다. 네트워크가 언제나 빨라야함 서버는 클라이언트의 요청시 언제든 즉시 응답 클라이언트는 언제든 서버와 바로바로 연결 때문에 이런 환경 이외의 예외 상황들을 모두 대비해야하는데요, 이것은 순전히 개발자의 몫이었습니다. 이러한 소켓 프로그래밍의 문제점으로 인해 RPC(Remote Procedure Call) 이 등장하게 됩니다. RPC는 위와 같은 구조로 도식화되는데, Server에 있는 프로그램 정보를 알고있는 IDL(Interface Definit..
변수의 초기화 변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다. 멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만 지역 변수는 사용하기 전에 반드시 초기화를 해야한다. class InitTest { int x; int y = x; //문제 없음 void method() { int i; int j = i; // 컴파일 에러: 지역변수를 초기화하지 않고 사용함 } } 멤버 변수의 초기화 방법 명시적 초기화(explicit initialization) 생성자(constructor) 초기화 블럭(initialization block) 인스턴스 초기화 블럭 : 인스턴스 변수를 초기화 하는데 사용 클..
생성자란? 생성자는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드이다. 생성자는 다음과 같은 특징을 지닌다 생성자의 이름은 클래스의 이름과 같아야 한다. 생성자는 리턴 값이 없다. 생성자는 다음과 같이 정의한다 class Card{ Card() { // 매개변수가 없는 생성자 //.. } Card(String k, int num) { // 매개변수가 있는 생성자 //... } 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아니다. 생성자는 단순히 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메소드일 뿐이다. 인스턴스가 생성되는 과정은 다음과 같다 Card c = new Card(); 1. 연산자 new에 의해서 메모리(heap)에 Card 클래스의 인스턴스가 생성..
JVM 메모리 구조 메소드 영역(method area) 프로그램 실행중에 어떤 클래스가 사용되면 JVM은 해당 클래스의 클래스파일을 읽어서 클래스에 대한 정보를 이곳에 저장한다. 해당 클래스의 변수도 이곳에 저장된다. 힙(heap) 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에 생성된다. 호출스택(call stack) 호출스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 기본형 매개변수와 참조형 매개변수 자바에서는 메소드를 호출할 때 매개변수로 지정한 값을 메소드의 매개변수에 복사해서 넘겨준다. 매개변수의 타입이 기본형(primitive type)일 때는 기본형 값이 복사되겠지만, 참조형(reference type) 이면 인스턴스의 주소가 복사된다. 메서드의 매개변수를..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8Ua3o/btqve7a7Toy/TSO3D11BK8yz5twXFk52j1/img.png)
[VueJS] component 동일한 포맷이 반복되는 템플릿의 경우 기존의 html 코드로 표현하면 그 포맷의 갯수만큼 코드길이가 늘어났다. 하지만 VueJS에서는 이를 Component를 통해 관리할 수 있다. Vue.component 함수를 통해 컴포넌트를 생성하고, 첫번째 인자로 컴포넌트 이름, 두번째 인자로는 템플릿에 사용될 변수값을 props, 틀을 template 이라는 속성 값으로 하는 객체를 넣어주면 됩니다. 중요한 점은 template에 선언되는 html 틀의 경우 VueJS 기본 기능들이 모두 동일하게 동작하기 때문에 편리하게 사용 가능하다는 점입니다.
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/W2ZY5/btqvgG4WBHI/sMneh0gPCfySJLGqGhTqF0/img.png)
[VueJS] method & event handling method 메소드는 특정 객체에 포함되어 동작한다. VueJS에서는 메소드 선언을 Vue 객체에 methods 라는 어트리뷰트를 선언함으로써 생성 가능합니다. 주의할점이 하나 있는데, VueJS 에서 메소드선언에서는 arrow function이 사용되면 안됩니다. 그 이유는 methods 영역에 arrow function 선언시 this 바인딩이 안되므로, data()함수에 정의된 변수값에 접근이 불가능 하기 때문입니다. 위와같이 작성시 원하는대로 동작하지 않음 제대로 동작하는 코드 event handling 더하기 {{ counter }} 위와같은 click 이벤트 생성시 v-on:click이후 영역은 javascript 코드 영역이므로, 연사..