분류 전체보기 234

NETCONF에 대해

1. NETCONF란? 1.1 NETCONF란 IETF NETCONF WG에서 표준화한 network management 프로토콜이다. (RFC 6241) 흔히 '프로토콜' 하면 7계층에 매핑되는 스택에 메시지 교환 절차 및 형식을 떠오르기 마련인데, NETCONF는 TCP/SSH 위에서 정의되는 응용 계층 프로토콜로 주로 xml 형식과 그 형식에 따른 동작에 대한 내용이 주가 된다. 1.2 NETCONF 의 구조 NETCONF layer 구조는 다음과 같다. 그림의 제일 오른쪽에 있는 example을 기준으로 설명하자면, 태그는 message 단위를 정위한다. 이외에 그 응답인 와 이벤트 발생 시 그 알림을 위한 이 있다. 그 내부의 는 message로 전달하고자 하는 동작의 종류를 정의한다. 다음의 ..

Network 2022.09.05

[Java] 빌더 패턴(Builder Pattern)에 대해

1. 빌더 패턴(Builder Pattern)이란? 빌더 패턴은 복잡한 객체를 생성하는 방법을 정의하는 클래스와 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다. 빌더 패턴은 생성해야 되는 객체가 Optional한 속성을 많이 가질 때 빛을 발휘한다. 2. 빌더 패턴(Builder Pattern)을 사용해야 하는 이유 생성자와 수정자로 구현된 다음과 같은 Employee 클래스를 바탕으로 왜 생성자나 수정자보다 빌더를 써야하는지 이해해보도록 하자. @NoArgsConstructor @AllArgsConstructor public class Employee { private String id; private String name..

Java 2022.08.30

2019년 여름 컴공 진학준비생 한달 과외 후기

1. 개요 때는 대학교 4학년 여름방학때였다. 전에 실습을 하였던 기관 연구소장님께 연락이 와서, 미국에 있는 대학교로 컴퓨터공학과 진학을 희망하는 학생이 있는데, 한달 동안 과외를 해줄수 있겠냐는 의뢰를 받았다. 하지만 교육업계에 종사하지 않았고, 어떻게 가르쳐야할지 감이 오지 않아서 막막했지만, 연구소장님께서 과외 소재 방향을 제시해주시고, 장소 지원 및 피드백을 도와주신다는 응원을 듣고 시작하게 되었다. 2. 과외 시작 전, 첫 만남 2.1 학생 만나기 전 학생을 만나기 전, 그 친구에 대해 아직 정확히 파악하지 못하여서, 지난 학년동안 보았었던 전공책들을 훑어보기 시작했다. 컴퓨터공학부의 커리큘럼들을 한번 훑는다는 느낌으로 오리엔테이션을 진행하고, 더 나아가서는 C언어의 기초부터 시작하고자 하였다..

Record/When Univ. 2022.08.28

[대학교 실습일기] 2019년 초 겨울방학의 실습

1. 개요 때는 대학교 3학년의 겨울방학 실습할때의 이야기이다. 일부 전공과목 학점 이수를 위해 방학때 실습을 나가게 되었었는데, 그간(2019년 1월부터 3월까지 약 3달간)의 시간동안 체험하고 배운 내용들을 정리하여 포스팅하고자 한다. 2. 실습을 통해 경험한 것들 내가 실습을 수행한 기관은 다빈치창의융합연구소 이며, 이곳에서 주로 하는 일은 교과수업, 방과후 수업, 캠프 운영 및 교육컨설팅 등 진로체험기관 역할을 수행한다. 방학 실습 기간동안 내가 맡은 일은 위의 일들의 전반적인 보조를 위해 캠프 프로그램 기획 및 3D 프린터& 3D 펜 및 임베디드 프로그래밍이 가능한 초소형 보드를 활용한 메이킹을 도맡게 되었다. 정리하자면, 실습을 통해 아래 항목들을 경험할 수 있었다. 소형 로봇 설계 및 제작 ..

Record/When Univ. 2022.08.27

API 서버에 설치한 postgresql 서비스가 간헐적으로 죽는 문제 해결

1. 개요 며칠 전부터 내 AWS EC2서버의 postgresql 서비스가 아래와 같은 로그가 찍히면서 간헐적 종료되는 현상이 발생하였다. 무슨 문제로 종료되는지 찾기위해 이리저리 검색해보았지만.. 일부는 서버 리소스가 부족할 시에 발생한다고 하기도 하고, 아직은 근본적인 문제를 발견하진 못하였다. 현재 운영중인 게임앱의 랭킹정보 등 실제 데이터를 운용하고 있는 터라, 해당 문제의 해결이 필요하였다. 2. 해결방안1 (DB상태 확인 콘솔 앱 구현) 2.1 해결과정 첫번째 해결방안으로 아래와 같이 서버 상태 확인용 자체 콘솔 앱을 만들었다. 현재 나의 REST API서버에서 DB 연동을 위해 ORM(ORM이란? 포스팅참고) 으로 사용하는 sequelize 라이브러리에는 DB connection을 test하..

[Database] ORM에 대해

1. ORM이란? ORM(Object Relational Mapping)이란, 번역하면 (객체-관계-매핑)의 약자로, 다음과 같은 특징을 가지고 있다. 프로그래밍 언어의 객체와 데이터베이스의 데이터 관계를 매핑해주는 도구이다. MVC패턴에서 모델(Model)을 기술하는 도구이다. 객체와 모델 사이의 관계를 기술하는 도구이다. 2. ORM의 사용 이유 OOP vs Relational Database 객체지향 프로그래밍은 클래스를 이용하고 관계형 데이터베이스는 테이블을 이용하는데 여기서 객체 모델과 관계형 모델 간의 불일치가 존재한다. 따라서 ORM을 이용하여 데이터베이스 접근을 프로그래밍 언어의 관점에서 맞출수 있게 된다. 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. SQL문을..

DataBase 2022.08.20

[Window] 이 시스템에서 스크립트를 실행할 수 없으므로 ~~(about_Execution_Policies 해결법)

1. 개요 Window의 TERMINAL에서 일부 명령어 실행시 출력되는 about_Execution_Policies 에러 해결방법을 포스팅하였다. 2. 현상 npm으로 설치한 typescript의 명령어 tsc를 입력시 에러가 발생한 현상이다. 3. 해결과정 1. Windows PowerShell 프로그램을 관리자 권한으로 실행한다. 2. 아래 명령어를 입력하여 본인의 권한 상태를 확인한다. Get-ExecutionPolicy 3. 권한이 RemoteSigned가 아니라면 아래 명령어를 입력하여 권한을 RemoteSigned으로 변경해준다. Set-ExecutionPolicy RemoteSigned 해당 권한들이 어떤 의미인지는 공식사이트에 다음과 같이 나와있다. Restricted: 구성 파일을 로드..

Window 2022.08.14

[Java] Ubuntu에 AdoptOpenJDK 설치

수동으로 설치할 수도 있지만 패키지 매니저로 간단하게 설치할 수 있다. # adoptopenjdk의 패키지를 인증하는데 사용하는 키를 신뢰할수 있는 키 목록에 추가한다. wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - # adoptopenjdk의 apt repository를 추가한다. sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ # 현재 사용 가능한 패키지와 그 버전에 대해서 리스트를 업데이트 해준다. sudo apt update # 아래 목록중 설치하고자하는 버전과 JVM type(hotsp..

Java 2022.08.10

Maven repository 설정

1. 개요 maven을 이용하여 원하는 라이브러리를 손쉽게 프로젝트에 추가할 수 있다. 이 때, 라이브러리가 저장된 곳을 maven repository라고 한다. 1) maven local repository의 기본 경로 windows : c:\Users\사용자계정\.m2\repository linux : /home/사용자계정/.m2\repository 2) maven repository 경로 수정 방법 maven/conf 경로 안에 settings.xml 파일을 이용하여 maven repository 경로 수정이 가능하다. 사이에 경로를 추가하면 된다. (덧붙여 위의 설정파일을 보면 Default 경로가 ${user.home}/.m2/repository임을 알수 있다.) 3) 서버 메이븐 폴더 위치 찾..

Java/Maven 2022.08.03

Maven에 대해

1. Maven이란? Maven이란 자바용 프로젝트 관리 도구이다. (공식사이트: Apache Maven Project) Maven은 프로젝트의 전체적인 LifeCycle을 관리하는 관리도구이다. 프로젝트 객체 모델(Proejct Object Model:POM) 이라는 개념을 바탕으로 프로젝트의 의존성 관리, 라이브러리 관리, 프로젝트 LifeCycle 관리 기능 등을 제공한다. 플러그인을 기반으로 소스코드로부터 배포 가능한 산출물을 만들어내는 빌드 기능을 제공한다. 빌드(build) 란? 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물이다. 이를 좀더 쉽게 풀어 말하자면 우리가 작성한 소스코드(Java), 프로젝트에서 쓰인 각각의 파일 및 자원 ..

Java/Maven 2022.08.03
반응형