목록공부한 내용정리 (19)
JinHee's Board
Nifi 에서는 내부 zookeeper 설정을 통해 클러스터링을 설정할 수 있습니다.그러나 클러스터링 설정 시 해당 Nifi 노드에 보안 설정 (https)이 되어 있는 경우에는 각 노드 간 통신이 막혀 클러스터 설정이 되지 않습니다.여기서는 해당 상태에서 클러스터링 설정하는 방법에 대해 공유하려 합니다.각 서버마다 키를 생성하고 인증서 추출 및 등록하는 과정이 있어 다소 복잡합니다.(nifi 1.28.1 버전, 서버 3대에 대한 클러스터 설정 기준) 0. 사전준비nifi 1.28.1 → https://www.apache.org/dyn/closer.lua?path=/nifi/1.28.1/nifi-1.28.1-bin.zipnifi-toolkit 1.28.1 → https://www.apache.org/dy..

개요 Nifi에서 특정 기능을 활용해야 하는 일이 생겼으나 해당 기능은 Nifi에서 Processor로 제공하지 않는것 같다 Custom Processor를 직접 만들어 해당 기능을 구현하고 내용을 기록하고자 한다 참고한 링크 GitHub - apache/nifi: Apache NiFi Apache NiFi. Contribute to apache/nifi development by creating an account on GitHub. github.com Nifi Processor 프로젝트 생성 및 배포 (feat. Maven) Maven Archetype으로 NiFi Processor 프로젝트 생성하기 Maven Archetype은 Maven 프로젝트 템플릿을 생성하는 tookit입니다. 이 툴킷으로 ..

Project - Socket과 ElasticSearch 를 활용한 채팅 사이트 개발일지 [3] 구현 결과 로그인시 현재 참여중인 채팅방 목록 표시 사용자간의 채팅 구현 채팅방 목록 표시 Elastic Index 생성 ( 채팅방 목록 ) 채팅방 구분에 필요한 키와 그 외의 데이터를 담을 인덱스를 생성한다. 인덱스 생성에 필요한 매핑을 설정한다. ( 필드 타입 지정 등.. ) PUT chat_room { "mappings" : { "properties" : { "room_date" : { "type" : "date", "ignore_malformed" : true }, "room_id" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword" ..

Project - Socket과 ElasticSearch 를 활용한 채팅 사이트 개발일지 [2] 구현 결과 메인 화면 및 로그인 , 회원 가입 기능 구현 프로젝트 개발 ( Front ) React App(Front) 에 Router를 적용하는 작업 수행 - React Router 설치 npm i react-router-dom@5.3.0 - App.js 파일 수정 import React from 'react'; import io from "socket.io-client"; import { BrowserRouter as Router, Switch, Route, Link } from "react-router-dom"; import Login from "./routes/Login" function App() {..

Project - Socket과 ElasticSearch 를 활용한 채팅 사이트 개발일지 [1] 구현 결과 메인 화면 및 로그인 , 회원 가입 기능 구현 채팅방 하나를 임시로 만들고 두 사용자 간의 채팅 구현 (우선 Node로 구현 예정) React 프로젝트와 Node 프로젝트 연동 기존의 Node 프로젝트 하나에 Back단과 Front단이 모두 하나의 프로젝트에 있었지만 이번 프로젝트에서 React 프로젝트를 생성하면서, Back단과 Front단을 분리했다. 프로젝트 개발 - React 프로젝트 생성 및 NPM 설치 ( Front ) npx create-react-app eschat-react-project(프로젝트명) npm install socket.io npm install socket.io-cl..

개요 교육받는 기간에 파이널 프로젝트로 제출했던 그룹웨어 프로젝트에서 개발한 채팅 기능을 좀더 정리하여 기록한다. 프로젝트 변경 목표 - Node.js 로 개발된 채팅기능을 React.js로 새로 개발한다. - Oracle DB와 연동하여 활용했던 채팅기능을 ElasticSearch로 변경하여 적용한다. - 개발완료된 부분은 git command로 항상 commit 한다. 프로젝트 생성 및 준비 NPM 설치 npm init npm install express npm install http npm install fs npm install elasticsearch npm install socket.io npm install app-root-path GIT remote git init git add * git..

개요 Apache Spark와 OpenSearch 자바로 연동시 발생하는 문제를 해결하는 과정을 기록하고자 한다. 문제확인 Opensearch는 엘라스틱에서 서비스하는 Elasticsearch 오픈소스를 포크(코드를 복사)하여 만든 AWS판 ElasticSearch 다. Spark와 Elasticsearch를 Java를 통해 연동하는 과정에 있어 사용하던 Elasticsearch를 Opensearch로 교체해야 할 일이 생겨 교체했는데 이후 잘만 실행되었던 Spark가 실행되지 않는 문제가 생겼다. 오류메시지 Elasticsearch를 연동하고 있었을때는 오류가 없었으나 Opensearch로 연동한 다음 이와 같은 오류가 발생했다. 눈여겨볼점은 (No search type for [scan]) 이라는 메..

개요 대용량의 CSV 파일을 Elasticsearch에 적재하고자 할때 Logstash를 사용하여 적재작업을 했는데 이때 CSV 파일의 데이터를 일부 변환하는 Logstash의 ruby플러그인에 사용되는 키워드들을 기록한다. 준비 - ELK Stack (Elasticsearch, Logstash, Kibana) 설치 - 적재할 데이터 (csv) 사용된 데이터 링크 한국교통안전공단_사업용차량 Trip단위 위험운전운행데이터(샘플)_20191227 한국교통안전공단에서 수집관리하고 있는 트립단위의 위험운전행동데이터 샘플입니다. (운행일자, 운수회사코드 등) 운행기록과 관련된 데이터는 대용량데이터로 샘플데이터만 업로드 www.data.go.kr 과정 Logstash 정상 작동 테스트 1. Elasticsearch..

개요 서버에서 작업을 할때 해당 포트에 접근이 가능한지 확인할 일이 생겼다. 목적지 서버에서 포트를 열고 그 포트에 접근이 가능한지 확인하는 과정을 기록한다. 원리 - 목적지 서버(우측)에서 ServerSocket을 사용하여 원하는 Port 번호로 오픈한다. - 출발지(좌측)에서 Socket을 사용하여 목적지 서버의 ip와 Port번호를 통해 목적지 서버로 접근 시도 한다. - 접근 가능 여부를 통해 방화벽에서 해당 Port번호를 허용했거나 허용하지 않았는지 확인 한다. 과정 1. 목적지 서버에서 포트 오픈 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MultiPortRun { p..

개요 OpenApi를 사용하여 데이터들을 추출하고 추출한 데이터를 파싱 및 데이터베이스에 삽입해야 할 일이 생겼다. Nifi에서 OpenApi를 어떤식으로 사용해야 데이터를 추출할수 있는지 등을 알아보고 그 내용들을 기록하고자 한다. 참고한 링크 Apache Nifi HTTP/HTTPS 연결. SSL 연결하기 | Apache Nifi로 작업을 하다보면 웹 사이트에서 컨텐츠를 가져 오거나 다양한 REST API를 통해서 JSON, XML, TXT 형태로 데이터를 가져와야 하는 일이 있다. 이러한 방법에 대해서 알아 보며 brunch.co.kr Nifi에서 OpenApi를 활용하는 방법들을 설명한 위 링크를 참고했다. Nifi에서 Api 호출하여 데이터 불러오기 - 사전준비 호출하고자 하는 OpenApi의 ..

개요 nifi를 서버에 올려서 사용할 때 http://아이피:포트/nifi 만으로 접속이 가능한데 이 접속을 조금더 까다롭게 하기 위해 nginx를 사용하여 접속링크를 바꾸는 방법을 기록한다. 사전준비 - NGINX 설치 [CentOS 7] CentOS 7 - NGINX 설치 방법 CentOS 7 버전에 Nginx 설치 방법 정리 요약 yum 외부 저장소 추가 yum install 방화벽 포트 개방 nginx 포트 설정 nginx 데몬 실행 실행 1. yum 외부 저장소 추가 yum 저장소에는 nginx가 없기 때문에 외부 저장.. holjjack.tistory.com 더보기 yum 저장소에는 nginx가 없으므로 직접 추가 필요 # cd etc/yum.repos.d/ # vi nginx.repo ngi..
프로세스(Process) 프로그램을 실행시켜서 출력시키는 과정 운영체제로부터 시스템 자원을 할당받는 작업의 단위 멀티 프로세스 : 여러 프로그램들을 독립적으로 실행시켜 작업 쓰레드(Thread) 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업단위 프로세스가 발생했을 때 main 안의 실행문이 하나의 쓰레드 프로세스가 할당받은 자원을 이용하는 작업의 단위 멀티 쓰레드 : 하나의 프로세스 에서 여러 쓰레드를 실행시켜 작업 쓰레드의 생성 방법 Thread 클래스 상속 Runnable 인터페이스 상속 Thread와 Runnable 차이점 객체 생성 가능성의 여부에 차이가 있다. Thread는 클래스라 인스턴스화(객체화) 가 가능하다. Runnable는 인터페이스 이기 때문에 인스턴스화가 불가능하다. 쓰..
오버로딩 하나의 클래스 안에서 메소드 이름은 같지만 매개변수를 다르게 선언하여 메소드를 정의하는 것 오버로딩의 성립요건 메소드의 이름이 같아야 한다. 매개변수가 달라야 한다. 리턴(반환)타입은 관계없다. 오버로딩의 예시 더보기 class minExample { public void method() { System.out.println("아무것도 없는 메소드"); } public void method(int a) { System.out.println(a + "값이 매개변수인 메소드"); } public int method(int b, int c) { System.out.println("숫자를 반환한다."); return b + c; } } public class example{ public static v..
OOP(객체지향 프로그래밍)의 3가지 특징 캡슐화 데이터와 데이터를 처리하는 메소드의 형태를 하나의 단위로 묶는 것 캡슐화로 인해 클래스의 외부에서 클래스 멤버변수에게 직접 접근하여 값을 변경할수 없음 외부에서 접근할 수 있도록 정의된 getter, setter을 통해서만 접근이 가능하다. 캡슐화의 결과로 정보은닉이 가능해진다. (프로그램 변경시에 발생하는 오류를 줄일 수 있다.) 상속 상위 클래스의 멤버 메소드들을 하위 클래스가 사용할수 있는 특징 부모 클래스의 생성자, 초기화 블럭은 상속되지 않는다. 모든 클래스는 Object 클래스의 후손 클래스다. 반복되는 코드를 줄여서 개발시간을 줄일 수 있고 확장성이 용이해진다. 다형성 한번의 명령으로 여러 객체가 명령에 맞는 각각의 역할을 수행할수 있는 특징..

--2018.11.25년도에 작성되었던 글을 옮겨왔습니다-- 학교에서 보안수업을 듣는데 얼마전에 RSA 암호화를 파이썬으로 직접 코딩해보고 간단하게 예시를 통해 암호화 과정을 설명하라는 과제가 나왔습니다. RSA 암호화는 암호화 하는데 사용하는 키와 복호화하는데 사용하는 키가 서로 다른 비대칭 암호화 방식이라 합니다. 즉 공개키로 암호화한 문서는 공개키로 복호화 할 수 없고, 대신 개인키로만 복호화 가능한 암호화 방식입니다. 먼저 암호화 과정에서 쓰이는 알고리즘들을 정의해 보았습니다. def encrypt(pk, text): key, n = pk cipher = [(ord(char) ** key) % n for char in text] return cipher (암호화(encrypt) ..