반응형

sudo (substitute user do  또는 super user do 의미)

  • 로그아웃 없이 다른 사용자의 권한을 사용하여 명령을 실행하도록 하는 명령어
  • "sudo 명령어" 는 root 권한으로 명령어를 실행함
  • /etc/sudoers 파일에 지정되어 있는 사용자만 사용가능

su (substitute user 또는 super user)

  • 로그아웃 없이 다른 사용자로 로그인하는 명령어
  • "su 사용자명" 으로 사용 ("su"는 "su root"와 동일함)
  • 로그인 하려는 계정의 패스워드가 필요함

sudo 명령어의 사용방법

sudo [명령어] : root 계정으로 로그인 없이 [명령어]를 실행 | root 계정의 패스워드 필요

sudo su : root 계정으로 로그인 | 현재 디렉토리 유지 (현재 계정의 쉘 유지) | 현재 계정의 패스워드 필요

sudo -s : root 계정으로 로그인 | 현재 디렉토리 유지 (현재 계정의 쉘 유지) | root 계정의 패스워드 필요

sudo -i : root 계정으로 로그인 | "/root"로 디렉토리 변경 (root 쉘 실행) | root 계정의 패스워드 필요

su 명령어의 사용방법 ([아이디] 파라미터가 없을경우 root 로 치환됨)

su [아이디] : root 계정으로 로그인 | 현재 디렉토리 유지 (현재 계정의 쉘 유지) | root 계정의 패스워드 필요

su - [아이디] : root 계정으로 로그인 | "/root"로 디렉토리 변경 (root 쉘 실행) | root 계정의 패스워드 필요

반응형
반응형

 이 번 시간에는 지난 시간에 이어 Ubuntu에 한글 입력기 설치(설정)를 통해 한글 입력이 가능하도록 해볼 텐데요, 아울러 운영체제 메뉴도 한글로 바꾸어 보도록 할게요. 

【 학습 참고 자료 】

1.  【 우분투#1 】윈도에 VMware 가상 머신 설치하기 (Ubuntu 우분투 설치를 위한 준비)

2.  【 우분투#2 】VMware 가상 머신에 Ubuntu 우분투 설치하기

 라즈베리파이에 설치되는 라즈비안OS의 경우에는 한글 폰트부터 직접 다운로드하여 설정을 해주어야 합니다. 

우분투도 설치하면 기본적으로 한글 입력기 설정이 되어 있지 않는데요, 아래 절차에 따라 설정해 보세요.

먼저 터미널을 열고 update(upgrade) 상황을 살펴봅니다.

아래 명령어를 입력해보세요.

~$ sudo apt-get update

 

그리고 신규 업데이트 항목이 있다면, 업그레이드를 진행해 주세요.

~$ sudo apt-get upgrade

그리고 프로그램 표시 항목을 클릭해서 윈도에서 제어판에 해당하는 설정 아이콘을 클릭해서 열어주세요.

그러면, 아래와 같은 창이 열릴 거예요.  그러면, "Resion & Language" 항목을 클릭해서 아래 이미지에서 표시한 Language 제목 바로 아래에 보이는 "Manage Installed Languages"를 클릭하세요.

 그럼, 아래와 같은 창이 열리는데요,  Install 버튼을 눌러주세요. 

그리고 user 패스워드를 물어오는 창이 나타나고 패스워드를 입력해 주면, 아래처럼, 자동으로 Korea 관련 언어패키지 설치가 진행됩니다. 

그리고 아래처럼 창이 뜨면, 화살표로 표시한 Install/Remove Languages... 항목을 클릭해서 보면, 

아래처럼 Korean 한국어가 설치되어 있는 것을 볼 수 있습니다. 

그리고 아래 ①번을 클릭하여  열리는 팝업창에서 아래 ②번을 클릭하고 우분투 재시작(재부팅) 버튼을 누르게 되면 시스템 메뉴를 한글화(폰트 변경) 하게 됩니다. 

그리고 중요!!! 

시스템 재부팅 후, 아래와 같은 창이 떴을 때,  반드시 예전 이름 유지(K)를 선택해 주세요.  

폴더 이름이 한글로 되어 있을 경우 그 아래에 설치되거나 실행되는 프로그램의 경우 제대로 실행되지 않거나 문제가 생기는 경우가 종종 발생하게 있기 때문입니다. 

아래 이미지처럼 창이 열리면 ①번 지역형식 탭을 클릭하고 → ② 한국어가 화면에 뜨도록 제일 상단으로 끌어다 놓아주세요. ③ 그리고 시스템 전체 적용 버튼을 클릭해 주세요(경우에 따라 재부팅하는 경우가 있어요)

 

(아래) 이제 한글화(한글 폰트)가 적용되어 시스템의 기본적인 메뉴들이 아래 이미지처럼 한글로 바뀌게 됩니다.

하지만, 터미널창을 열고 한글을 입력해 보아도 아직 한글 입력에 대해서는 적용되지 않았다는 것을 알 수 있습니다. (아래)

그럼, 이제 아래 이미지처럼 키보드 항목을 클릭하고 입력소스 부분(+)을 클릭하여 입력소스를 한글로 변경해야 합니다. 

그리고 아래처럼 창이 열리면 한국어(Hangul)를 선택하고 추가(A) 버튼을 클릭해 주세요. 

 

그리고 아래 이미지를 참고해서,

① 한국어(Hangul)만 남기고 영어는 삭제해 주세요.

② 점 세 개 부분을 눌러 나타나는 팝업 메뉴에서

③ "기본 설정" 항목을 클릭해 보세요.

④  한영 전환키를 별도로 추가해 주거나 수정이 가능합니다. (여러 개의 단축키 등록 가능)
⑤  한글 모드로 시작을 선택해 주세요.  

⑥  마지막으로 "확인" 버튼을 클릭 해 주면 설정이 완료됩니다. 

그래서 우측상단에 있는 En → 한  으로 바꾸면,  터미널창에서 설정해 놓은 단축키 'Shift+space"로 한국어(Hangul)로 바꾸어서 ,  글자를 입력해 보면 한글입력이 잘 되는 것을 볼 수 있습니다. 

그럼, 여기까지 하고 마치겠습니다.

감사합니다. 

[ 우분투 설치 & 한글 설정 동영상으로 확인하기 ]

 

 

반응형
반응형

지난 게시글에서 윈도 OS 상에서 리눅스 혹은 또 다른 운영체제를 돌리기 위해 VMware라는 가상 머신을 설치하였습니다.  이렇게 설치된 VMware에 Ubuntu를 탑재해서 언제든 윈도환경에서도 우분투를 사용해 볼 수 있도록 해볼게요.

우선, 
→ ① 구글에서 " 우분투 다운로드 또는 " Ubuntu Download " 검색합니다.   
   그리고 아래 보이는 링크를 클릭해 주세요.

 

다운로드 사이트 직접 링크
https://ubuntu.com/download/desktop

 

https://ubuntu.com/download/desktop

 

ubuntu.com

 

→ ② VMware를 실행 시키면 아래와 같은 VMware 메인 창이 열리게 되는데요, Create a New Virtual Machine을 클릭합니다.

→ 그럼, 아래와 같은 창이 열리는데요,  아래처럼,  ①과 ②를 순서대로 클릭하세요.

→ 그리고 열리는 창에서 위에서 받아 놓았던 우분투 이미지 파일(xxx.iso)을 선택 후 NEXT를 클릭해 주세요.

→ 계정 관련 정보를 입력 후 잘 기억해 주세요.  만약 ID, Password는 차후에 잊어버리게 되면 밀고 다시 설치해야 하니 잘 기억해 두세요.    여기서는 간단히 user  ,   1234로 해두었습니다.

 

아래는 Ubuntu 우분투가 가상 공간으로 디스크를 차지하게 될 영역을 지정하는 화면인데요, 디폴트 값으로 20Gb 정도로 되어 있습니다.  만약 용량이 더 필요하다면 올려서 Next를 클릭하세요.

→  그리고 Finish를 클릭하면 아래처럼 우분투가 실행됩니다.

→  아래는 키보드 언어를 설정하는 화면인데요, 우선 디폴트 값인 영어로 설정하고 넘어가는 것을 추천드립니다. 추후에 한글 폰트와 언어 패키지를 제대로 설치하면 자연히 한글 입력도 가능해집니다. 

→ Continue 버튼 클릭하고 아래 이미지를 참고하여 계속 진행해 주세요.

→ 위에서 입력한 계정 정보를 그대로 입력해 줍니다.

→ 설치 진행되는 모습

→  아래는 구글 혹은 마이크로 소프트 계정이 있을 경우 등록하는 절차인데요, 일단은 Skip 할게요.

→ 일차적으로 설치 완료 되었으며, 우분투 버전의 업그레이드가 존재할 경우 아래와 같은 창이 뜨는데 업데이트를 해주세요.

→ 그리고 마지막으로 필요한 소프트웨어가 있을 경우 설치하라는 창이 뜨고 설치가 마무리 되었습니다. 

 

다음 시간에는 우분투에서 한글 설정 및 사용에 대해 다루어 볼게요.
감사합니다.

 

반응형
반응형

윈도 OS 상에서 리눅스 혹은 또 다른 운영체제를 돌리기 위해서는 기존 OS를 살려두고 논리적으로 분할된 하드디스크의 일정한 공간을 할당받아 멀티 OS 구동을 지원해 주는 소프트웨어가 필요합니다.  

대표적으로 VMware(브이엠웨어)와 Virture-Box(버추얼 박스)가 있는데요,  버추얼 박스는 오라클이 개발한 오픈 소스 가상화 소프트웨어이고 따라서 무료로 이용할 수 있습니다.  

VMware는 가상화 전문 소프트웨어 기업에서 제공하는 툴로  VMware vSphere, VMware Workstation, VMware Fusion, VMware Horizon 등의 제품이 있고,  우리가 주로 사용하는 제품은 VMware Workstation입니다.  
그리고 Workstation 버전은 Pro 버전과 Player 버전으로 나뉘어 있는데, Pro 버전은 30일간만 무료사용가능한 트라이얼 버전이고, Player 버전은 무료로 계속 사용할 수 있는 버전이기 때문에  VMware Workstation Player 버전을 다운로드하여 사용하면 됩니다.  이 버전은 비상업적인 용도에 한해서 개인이 사용하는 것은 무료로 이용할 수 있습니다. 
따라서 VMware Workstation 가상머신을 설치하고 여기에 Ubuntu를 설치해 보도록 할게요.

우선,
→ ① 구글에서 " VMware workstation player download "로 검색합니다.   
   그리고 아래 보이는 링크를 클릭해 주세요.

사이트 링크 :  https://www.vmware.com/kr/products/workstation-player/workstation-player-evaluation.html 

 

Download VMware Workstation Player | VMware

Download VMware Workstation Player for free today to run a single virtual machine on a Windows or Linux PC, and experience the multi-functional capabilities.

www.vmware.com

 

 

  ②  VMware download 사이트가 나오면 화면을 아래로 스크롤해보면 무료로 설치할 수 있는 버전이 아래 이미지처럼 나타나며, 클릭하면 탐색창 DOWNLOAD 폴더로 다운로드가 시작됩니다.

그럼, 탐색창을 띄우고 다운로드 폴더로 가서 VMware player 설치 파일을 실행시켜 주세요.

아래 이미지가 보이면 Next를 클릭!

I accept에 체크를 하고  Next를 클릭!

아래와 같이 체크 하고 다시 Next 클릭!

아래와 같이 체크 하고 다시 Next 클릭!

아래와 같이 체크 하고 다시 Next 클릭!

Install 버튼을 클릭하면 아래처럼 설치가 진행됩니다.

마지막으로 Finish 선택하면 기본적으로 설치가 완료되는데요,

바탕화면 또는 시작메뉴에 있는 VMware 아이콘을 클릭해서 실행합니다.

그리고 아래 이미지를 참고하여 계속 진행해 주세요

자,  여기까지 설치하면 기본적으로 현재시점으로 다운로드하여서 설치되는 VMware Workstation Player 17 버전의 설치가 끝납니다.  이렇게만 설치하고 그대로 사용해도 좋지만,   설치 후 바로 아래처럼 17.5 버전에 대한 업데이트를 할 수 있다는 메시지를 띄워주는데요, 보통의 경우 여러 가지 개선사항이 있을 수 있기 때문에 업그레이드를 해볼게요.

여기서 바로 Download and Install 버튼을 클릭해도 좋지만, 중간에 재부팅을 해야 제대로 진행 되기에,  지금 시점에 재부팅한 번 하는 것도 좋습니다.   

  만약 재부팅없이 바로 진행하면 아래처럼 재부팅해야 한다는 메시지를 띄우게 됩니다. 

그래서,  재부팅하거나 하여 다시 VMware 아이콘을 실행시키고 있으면, 아래처럼 다시 업데이트 메시지가 뜨는데, 다시 Download and Install 버튼을 클릭합니다.  

그리고 업데이트용 설치파일이 모두 다운로드되고 나면 아래처럼, 지금 실행되고 있는 17 Player 프로그램을 닫아야 설치업데이트)을 진행할 수 있다는 메시지를 띄우기 때문에,  배경에 깔린 프로그램을 닫아줍니다.

 

그러면, 처음 설치할 때와 같은 화면들이 동일하게 이어지니,  위에 설명드린 이미지를 참고해서 설치를 완료해 보세요.

 

이렇게 17.5 버전으로 업그레이드가 완료되고 다시 실행 시키면 아래처럼 가상툴을 본격적으로 사용할 수 있게 되며,  다음 게시글에 우분투 최신버전을 설치해 보도록 하겠습니다. 

 

※  영상을 보며 설치 따라하기 (아래 유튜브 영상 클릭!)

또는 아래 티스토리 영상 클릭!

반응형
반응형

리눅스에서 사용하는 확장자가 .deb 파일은  윈도에서의 실행파일인 .exe나 .msi의 install 파일과 같은 역할을 합니다. 조금 더 정확하게는 프로그램을 설치할 수 있는 패키지 파일이며 더블 클릭해 보면 어떤 패키지로 구성되어 있는지, 확인할 수 있습니다.   아래, 예를 들어 우분투에서 크롬 브라우저를 설치하기 위해 아래와 같은 파일을 다운로드하였고, 이를 더블 클릭해 보면 패키지 내용을 확인할 수 있습니다. 

위의 패키지(설치) 파일을 더블클릭하면 아래처럼 패키지 내용을 볼 수 있습니다.

 

  확장자가 .deb 인 패키지(꾸러미) 파일은 데비안 파일과 관련 있으며,  예시로 리눅스용 크롬 브라우저를 설치해 볼게요,  .deb 패키지 파일을 설치하는 명령어는 아래와 같습니다.

deb 파일

dpkg -i "패키지이름.deb"


설치한 패키지 제거는 -r 옵션을 붙여서 제거할 수 있습니다.

dpkg -r "패키지이름.deb"

 

아래, 크롬 브라우저 패키지(.deb) 파일 설치를 dpkg -i 명령어와 옵션을 사용하여 설치해 보았습니다.

위와 같이 설치가 진행되면 아래처럼 크롬 브라우저 아이콘을 볼 수 있습니다. 

 

감사합니다.

반응형
반응형

이번 게시글은 아래 지난 게시글 핵심노드 설명 4편에 이은 설명입니다.  순서는 크게 상관없지만 다른 노드의 설명과 Node-RED의 기초적인 설명을 참고하려면 맨 앞쪽 링크를 참고해 보세요.

【Node-RED #⑤】노드-레드! 핵심노드 설명 4편/ Core Node Description! #4

①  delay 노드

  delay 노드는 입력 받는 메시지를 일정한 규칙에 따라 지연해서 전달하도록 해주는 노드입니다.

지연 전달하는 몇 가지 조건 설정을 할 수 있는데요,  예를 들어 아래처럼 5초의 시간 delay를 시켜볼 수 있습니다.   확인을 위해 1번 debug 창은 바로 연결하였고,  2번 debug 창은 5초의 시간 delay를 거치도록 하였습니다. 

1. 타임스템프(inject 노드)의 속성 값으로 전달할 적당한 메시지를 아래처럼 작성합니다. 

 

2. delay 노드의 속성은 아래처럼 해주세요. 

 

3. 그리고 배포하기를 누르고 Inject 버튼을 누르면 아래처럼 debug 창으로 결과를 확인해 보면,  delay가 없는 출력과 비교해서 5초의 설정에 따라 5초의 delay가 정확히 발생하는 것을 알 수 있습니다.

 delay 속성중에는 방금과 같은 고정 값 지연(Fixed delay) 외에,  일정 범위 값 안에서 랜덤으로 지연시킬 수 있는 속성도 사용 가능합니다.

또한, 기본(default) delay 값으로 예를 들어 3초를 설정하고,  특정 메시지(페이로드) 마다 delay를 다르게 설정하여 구분해 줄 수도 있습니다.  (아래 예시)

먼저,
1. 아래처럼 노드를 구성해 주세요.  

2.  delay 노드의 속성은 아래처럼 "msg.delay에 지연을 설정"으로 바꾸고 시간은 default 값으로 임의로 3초를 지정해 줍니다.

 

3.  'A' inject노드에는 단순한 전달 메시지만 입력합니다.

 

4. 'B' inject 노드에는 둘 째줄에 있는 'msg.topic'을  'msg.delay'로 바꿔주고, 속성을 '0~9' number 형식으로 바꾼 다음, delay 값 5000 millisecond (5초)를 입력해줍니다.

 

5.  결과를 실행해 보면, 'A inject'노드를 눌렀을 때, delay (variable) 노드에 기본 값으로 설정된 3초를 기다린 후 A의 메시지(페이로드)를 debug 창으로 전달(출력)했으며, 

 

6.  'B inject'노드를 눌렀을 때는 B inject 노드에 설정된 delay 값이 적용되어 5초를 기다린 후 B의 메시지(페이로드)를 debug 창으로 전달(출력)하는 것을 알 수 있습니다. 

 

7. 그 밖에, delay 노드 사용할 때  inject 노드에서 Reset 기능을 설정할 수 있는데요, 예를 들어, A나 B노드의 inject를 실행하고 설정된 delay 값이 완료되기 전,  Reset inject노드를 누르면 delay가 취소되고 결국 debug창으로 페이로드가 전달되지 않게 됩니다.  (이 실습을 위해 아래처럼 Reset inject 노드를 추가해 주세요)

그리고 리셋(Reset) inject 노드의 속성은 아래처럼 합니다.  일반 inject 노드를 추가해서 두 번째 줄에 있는 msg.topic 항목의 topic 글자를 지우고 reset를 입력합니다.(자동완성 기능 제공)   그리고 속성창에 있는 속성을 Boolean(불린)으로 변경하고, true값으로 설정 확인해 주면 됩니다. 

실습은 먼저 A 혹은 B inject 노드(여기서는 5초로 설정된 B 노드를 클릭)를 클릭 한 다음 5초가 되기 전 Reset inject노드를 클릭하면 delay가 취소되고 debug창으로 아무런 페이로드가 전달되지 않는 것을 볼 수 있습니다. 

8. 아래처럼, 플러쉬(Flush) inject 노드를 추가해 주는데요, 마찬가지로 일반 inject 노드를 추가해서 두 번째 줄에 있는 msg.topic 항목의 topic 글자를 지우고 flush를 입력합니다.   그리고 속성창에 있는 속성을 Boolean(불린)으로 변경하고, true값으로 설정확인해 주면 됩니다.   Flush 기능은 delay 타임이 적용되고 있든 그렇지 않든 클릭하는 즉시 페이로드를 전달시키는 기능입니다. 

 

반응형
반응형

이번 게시글은 아래 지난 게시글 핵심노드 설명 3편에 이은 설명입니다.  아래 게시글 링크를 먼저 참고해 주세요.

【Node-RED #④】노드-레드! 핵심노드 설명 3편/ Core Node Description! #3

①  trigger 노드

 trigger 노드는 메시지를 일정한 규칙에 따라 전달할 수 있도록 해주는 노드인데요, 예를 들면, 메시지에 따라서 일정간격으로 메시지를 전송하도록 하거나, 특정 메시지를 수신하면 홀드 시키거나 하는 등 이벤트를 줄 수 있는 노드입니다.   또한 시스템에서 무한루프에 빠져 있는 경우와 같은 오류등을 감지해 줄 수 있는 와치독 타이머(Watchdog timer)와 같은 역할도 줄 수 있습니다.    정리하자면 노드 플로우에서 흐름을 멈추거나 다시 트리거 시켜주는 등 제어가 가능한 노드라고 볼 수 있습니다. 

그럼, 실습을 위해 아래처럼 노드를 구성해 주세요.

 

1) "타임스탬프" (인젝트) 노드의 설정화면입니다. 

 

2) "STOP" 인젝트 노드의 설정화면입니다.

 

3) "RESET" 인젝트 노드의 설정화면입니다.

 

4) "trigger"노드의 설정화면입니다. 

송신데이터에는 "1"을 적어 놓았는데요,  전달하고 싶은 특정 문자를 적거나하면 되고,  초기화 조건에 "stop"을 적어 놓았는데요,   "STOP" 인젝션을 누를 때 "STOP" 메시지가 전달되면 트리거를 멈추도록 하고 있습니다. 

그럼, 여기서 아래처럼 trigger노드의 속성을 수정해 주면, 3초 간격으로 송신데이터"1"을 반복 송신하게 됩니다. 

 

이때, STOP 인젝터를 클릭하게 되면, 아래처럼 trigger가 멈추게 되고 디버그 창으로도 더 이상 메시지가 전달되지 않게 됩니다.

여기서 기본 트리거 간격을 1초로 바꾸고,   2초 간격의 Trigger 타임스탬프를 하나 더 추가해 볼게요.   그래서 1초 간격으로 트리거 되는 상태에서 추가한 인젝터를 누르게 되면, 2초 간격으로 트리거 시킬 수도 있습니다. 

그리고, 각각의 속성을 아래처럼 입력하거나 수정해 주세요. 

실행해 보면,  처음 기본 "타임스탬프"를 클릭하면 trigger에 설정한 대로 1초 간격으로 "1"이라는 메시지가 디버그창으로 전달되다가, "Trigger 2 sec"인젝터를 클릭하는 순간 2초 간격으로 "1"메시지가 전달되는 것을 볼 수 있습니다. 

 

②  join 노드

 Join 노드는 수신된 메시지들을 지정된 규칙에 따라 하나의 메시지로 변환해 주는 기능 등을 수행합니다. 
우선 Join 노드의 기능알 알아보기에 앞서 직전 게시글에서 다루었던 Split 노드로 메시지를 분리해보고 나서, 여러 개의 메시지가 수신될 때 이를 합쳐서 출력해 보도록 하겠습니다. 

그럼, 아래처럼 Sprit 노드가 포함된 플로우를 구성해 주세요. 

타임스탬프 노드는 아래처럼 해주세요.

다음, Split 노드 속성창인데요,  아래 보시면 '분할 항목'에 아무것도 입력 되어 있지 않은 것처럼 보이지만, "공백 한 칸"이 입력되어 있습니다. 주의해 주세요.  만약 공백을 입력하지 않을 경우, 메시지는 Split 되지 않고 모두 이어져서 하나로 전달 됩니다.

그리고서 배포 후 타임스탬프를 클릭해서 실행하면 아래처럼, 한 줄의 메시지가 각각 분리된 것을 볼 수 있습니다. 

다음으로, 아래처럼, Join노드를 구성해 주시는데요, 다섯 개의 타임스탬프 입력을 Join 노드에 연결한 플로우를 구성해주세요,  각각의 타임스탬프에 있는 메시지를 합쳐서 디버그창으로 출력해 볼게요.

아래는, Data1의 세부 속성 모습인데요,  Data2~Data5의 속성도 동일한 형태로 설정해 주세요. 

다음으로, Join 노드의 속성을 아래와 같이 설정해 주세요.    동작부분에는 수동으로 해주시고, 출력 부분에는 문자열로 선택합니다.  다음으로 연결문자 항목에는 아무 입력도 없을 경우에는 메시지들이 모두 붙어서 출력되며, 공백, '콤머', '+' 기호 등등 메시지들을 결합하고자 하는 문자가 있을 경우 입력하면 됩니다.   그리고 "지정수의 메시지파트를 수신 후" 항목에 5를 입력하여, 5개의 타임스탬프 메시지가 입력되면 자동으로 출력되도록 설정을 하였습니다.   그리고  "첫 메시지수신후부터 타임아웃 후" 항목에 10을 입력하거나 하게 되면, 첫 메시지를 수신하고 10초가 지날 경우 자동으로 입력된 메시지가 출력되는 설정입니다. 

이제 무입력, 공백 한칸, 콤머, + , /  으로 연결문자를 각각 입력해서 결과를 보면 아래처럼 결합되어 출력되는 것을 볼 수 있습니다.  물론 타임스탬프 누르는 순서를 바꾸면 출력도 바뀐 순서대로 결합되어 나오게 됩니다. 

그럼, 다음으로 Join 노드의 속성 중에서 "출력"부분의 항목을 아래처럼 "배열"로 변경해서 실행해 보세요. 

이렇게 하고, 결과를 출력해 보면, 아래처럼 데이터가 배열 형태로 결합되어 저장되는 것을 확인할 수 있습니다. 

그리고 마지막으로, 아래 Join노드의 속성에서 "출력"항목의 선택을 "key/value오브젝트"로 선택해 볼게요. 
이렇게 할 경우 사용할 값 항목에 보면 "msg.topic"으로 되어 있는데요, 이에 따라, 타임스탬프(inject) 노드에 있는 msg.topic 항목에다가, 예를 들어, 숫자 키값을 1~5 각각 입력해 주면,  key/value 오브젝트로 인식되어 결합처리해 줄 수 있게 됩니다. 

그럼, 타임스탬프를 순서대로 클릭해서 출력을 확인해 보면 아래처럼, key/value 오브젝트 형태로 데이터가 결합 정리되어 출력되는 것을 확인할 수 있습니다. 

 

반응형
반응형

이번 게시글은 아래 지난 게시글 핵심노드 설명 2편에 이은 설명입니다.  아래 게시글 링크를 먼저 참고해 주세요.

【Node-RED #③】노드-레드! 핵심노드 설명 2편/ Core Node Description! #2

①  Status 노드

Status(상태) 노드는 플로우 내에 있는 특정 노드들의 상태 메시지를 수신하는 역할을 합니다.   노드의 상태를 표시해 주는 기존 기능을 통해서 상태가 변경될 때 Status 노드는 관찰을 하는데요, 특정 노드의 출력을 감지하여 메시지를 출력하는 경우 등에 활용할 수 있습니다. 

예시)  예를 들어 아래와 같은 플로우가 구성되어 있을 때, debug2로 메시지(숫자'2')가 전달 되는 상황에서 Debug2로 메시지가 전달되면 "status 노드"를 통해서 이를 확인하는 플로우를 구성할 수 있습니다.

[ 지난 게시글에 입력한 Function node의 코드 설정입니다 ]

var msg1 = { payload: "1" };
var msg2 = { payload: "2" };
var msg3 = { payload: "3" };

return [msg1, msg2, msg3];

우선, 위와 같이 노드 플로우를 구성하고, Status의 설정과 디버그 1, 2, 3, 4의 설정은 아래와 같이 해주세요. 

 

이렇게 설정 후 '배포하기'를 누르고 'Hello world!'노드의 인젝션을 실행시키면 아래처럼, debug4를 통해서 상태를 수신하게 됩니다. 

 

②  Comment 노드

comment 노드는 플로우에 영향을 미치지 않는 노드로써, 설명 또는 주석을 작성할 때 사용되는데요, 설명이 필요한 플로우 주변에 넣거나 플로우 구간끼리 구분을 위해 넣어 놓을 수 있습니다. 아래 예시를 참고해 보세요. 



③  Split 노드

Split노드는 입력으로 들어오는 데이터를 설정한 규칙으로 분리 시키는 작업을 수행할 수 있는 노드입니다. 
메시지 내용을 줄 단위(엔터) 혹은 ','컴머나  '.'마침표 등과 같은 특정 문자(스트링) 단위로 구분을 하거나, 노드에 입력되는 메모리 버퍼 단위로 분리 가공할 수 있습니다. 

그럼, 예시로 split노드를 이용해서 전달할 메시지를 줄바뀜이 날 때마다 분리해 볼게요. 

예시①-1) 줄바뀜 ("\n")이 일어날 때 분리해 주는 예시

우선 아래와 같이 노드를 구성해주세요.  "데이터 노드"는 "Template"노드를 이용하면 됩니다. 

아래는 데이터 노드와, split 노드의 속성창 설정 내용입니다. 

 

이렇게 하고서, 타임스템프(인젝션)을 클릭해 보면, 아래처럼 데이터의 줄 바뀜이 일어날 때마다 데이터가 분리(Split)되는 것을 볼 수 있습니다.


예시①-2) 위 예시에서 콤머 ', '  와  마침표 '. ' 등의 여러 가지 문자로도 구분을 할 수 있으니 참고해 주세요. 

 

예시①-3) 마침표 ', '  문자로 데이터를 분리한 예시.

 

예시 ②)  입력되는 문자 길이로 일괄적으로 분리하는 경우. (split 노드에서 아래처럼 분할 부분을 고정장(영문표기: Fixed length of)으로 변경하고 구분하고자 하는 단위의 숫자를 입력해 주세요,  여기서는 3개의 스트링으로 입력) 

템플릿(Template) 노드의 데이터 설정은 아래처럼 했습니다. 

그래서 결과를 출력해 보면 아래처럼 출력되는 것을 볼 수 있습니다. 

 

예시 ③)  배열 단위로 데이터를 분리(구분)할 수 있습니다.  템플릿 노드의 데이터와 속성을 아래처럼 수정해 주세요.  ( 데이터를 배열형태로 바꾸고, 출력 형식을 'JSON'으로 변경합니다.)

그리고 Split노드의 속성은 아래처럼 구분해 주세요.  먼저 2로 입력하여 배열의 값을 두 개씩 묶는 경우입니다. 

결과 출력을 보면 아래처럼 배열값이 2개씩 분리되어 출력되는 것을 볼 수 있습니다. 

그럼, 이어서 배열 묶음을 3으로 변경해서 출력해보면 아래처럼 결과를 정확하게 얻을 수 있습니다. 

 

예시 ④)   오브젝트의 경우는 파이썬의 딕셔너리 구조와 같은 Key값을 기준으로 데이터를 분리할 수 있도록 해줍니다. 
split노드의 속성을 아래처럼 변경해 주세요. 

이를 실행하면 아래처럼 Key값을 기준으로 데이터가 분리되어 출력되는 것을 확인할 수 있습니다. 

 

④  Sort 노드

sort 노드는 입력데이터를 규칙에 따라 정렬해 주는 노드인데요, 정렬은 전달된 msg.payload값이나 JSONata 식을 통해서 정렬할 수 있습니다.   정렬방식은 값을 기준으로 오름차순과 내림차순으로 정렬되며, 수치로서 도 오름차순과 내림차순으로 정렬 가능합니다. 

먼저 템플릿 노드의 데이터를 아래처럼 입력해 주세요. 

Sort노드는 아래처럼 입력하는데,  먼저 "수치로써 비교" 부분을 체크해제하고 결과를 출력해본 후, 체크 후 결과도 차례로 출력해 보세요. 

내림차순의 경우도 동일하게 활용할 수 있습니다. 

또한, Sort노드에서 키값을 Json 표현식으로하여 변경하면 딕셔너리 자료의 Value값을 기준으로도 정렬할 수 있습니다.   예를 들어,  이름과 나이 형태로 된 딕셔너리 데이터가 있을 때,  나이를 기준으로 오름차순이나 내림차순으로 정렬이 가능합니다.  
먼저 "Template"노드를 아래처럼 입력해 주세요. 

그리고,  Sort노드는 아래처럼 수정해 주세요. 

 

그리고 인젝트 버튼을 클릭하여 결과를 출력해보면 아래처럼 나이를 기준으로 오름차순으로 출력된 결과를 볼 수 있습니다. ( 데이터가 안 보일 경우 ▼array [3]  부분의 삼각형을 눌러 아래로 펼쳐보세요)

 

끝으로 Sort노드에서 내림차순으로 바꾸어 출력해 보면 아래처럼 잘 출력되는 것을 확인할 수 있습니다. 


그럼, 이번 시간은 여기까지하고, 다음 시간에 핵심노드 설명을 이어가도록 하겠습니다. 
감사합니다. 

 

반응형
반응형

이번 게시글은 지난 게시글 핵심노드 설명 1편에 이은 설명입니다.  아레 게시글 링크를 먼저 참고해 주세요.

【Node-RED #②】노드-레드! 핵심노드 설명 1편/ Core Node Description! #1

⑥  switch 노드

스위치노드는  입력으로 들어오는 메시지를 분석하여 설정한 조건에 따라 메시지의 출력 방향을 조절할 수 있는 기능을 제공합니다. 

예를 들어, 인젝트(inject)에서 "Dog"라는 메시를 설정하고 switch노드에서 목적상 여러 개의 출력을 설정하였을 때,  "Dog"라는 메시지와 동일한(==) 출력 노드로만 메시지를 보낼 수 있습니다.   즉 메시지에 일정한 규칙을 설정하여 Flow의 방향을 조절할 수 있습니다.

우선, 앞의 인젝트(inject)노드에서 "Dog"라는 메시지를 설정함.

여기서 만약 아래 이미지처럼, 처음 맞는 조건에서 더 이상의 하위 조건들을 검사하지 않고 종료할 수도 있는 옵션도 사용할 수 있습니다.


 검토할 수 있는 조건의 종류는 아래와 같습니다.   인젝터에 있는 메시지 전체에 대해 판별하며, 일치할 경우 true값을 반환합니다.    

특히, JSONata를 지원하기 때문에, 좀 더 디테일하게 조건을 판별 처리할 수 있습니다. 
( JSONata는 JSON 데이터를 위한 경량 쿼리 및 변환 언어입니다. XPath 3.1의 '위치 경로' 시맨틱에서 영감을 받아 정교한 쿼리를 간결하고 직관적인 표기법으로 표현할 수 있습니다. 추출된 데이터를 조작하고 결합하기 위해 내장된 연산자 및 함수의 풍부한 보완이 제공되며 쿼리 결과는 친숙한 JSON 개체 및 배열 구문을 사용하여 모든 JSON 출력 구조로 형식화될 수 있습니다. 사용자 정의 함수를 생성하는 기능과 함께 고급 표현식을 구축하여 모든 JSON 쿼리 및 변환 작업을 처리할 수 있습니다.   참고 →  http://docs.jsonata.org/overview.html   )

⑦  Template 노드

템플릿 노드는 이름 그대로 원하는 형태로 본을 떠주는 노드라고 할 수 있는데요, 아래 예시를 참고해 보세요. 

예시 1)

이 경우, template의 속성은 아래처럼 되어 있습니다.  그리고, 전달할 내용(payload)을  {{  ...  }}  이중 괄호 묶어서 템플릿을 구성하면 됩니다. 

 

예시 2)

예시 3) 여기서 템플릿노드는 특정문자를 HTML 이스케이프 코드로 바꾸어 버리는 경우가 생기는데,  이럴 때는 {{ ... }} 이중 괄호가 아니라,  {{{ ... }}} 삼중 괄호를 사용해 주면 됩니다. 

아래 예시는 html에서 강조(bold) 태그인 <b> </b>를 사용한 메시지를 전달할 때 이중괄호와 삼중괄호를 비교한 예시이니 참고해 보세요.  

 

또한,  템플릿 노드에서는, HTML, JSON... 뿐 아니라,   mustache(머 스테치)라는 템플릿 문법을 지원하는데요, 머스테치는다양한 언어를 합쳐서 사용할 수 있는 하나의 템플릿 엔진으로,  Loop와 같은 로직 구문이 존재하지 않으므로, Logic-Less Templates라고 불리는 엔진입니다.  머스테치는 가장 심플한 템플릿 엔진 중 하나이며, 다양한 언어를 지원하기도 합니다. (C++, C#, PHP, Java, JavaScript, Python, Perl... 등 50여 개 이상 지원)

따라서 머스테치와 같은 템플릿 엔진을 사용한 템플릿 노드를 이용해서 사용자가 정의한 형태의 타입으로 메시지를 가공하는데 효과적으로 사용할 수 있는 노드입니다.  특히, HTML과 같은 웹페이지 출력 형태를 사용할 때 많이 사용하게 됩니다.   뒤에서 다루게 될 [http response] 노드와 함께, 웹으로 출력하는 것을 볼 수 있습니다. 

 

⑧ Complete 노드

노드들의 Flow에서,  어떤 노드들은 출력이 없는 노드들이 있습니다.  따라서 수행완료(처리)를 파악하는 것이 필요할 경우가 생기는데,  complete 노드는 이런 경우처럼 다른 노드의 메시지 처리가 완료되면 이를 체크할 수 있는 기능을 제공하는 노드입니다.   물론 출력이 있는 노드도 체크할 수 있습니다. 
아래 예시에서 보면,  Complete노드에서  "Hello World!" 메시지를 갖고 있는 인젝트(Inject) 노드의 출력 메시지를 감지하면 "debug 2"를 통해서 동일한 메시지를 출력할 수 있도록 하였습니다. 

 

물론 "debug 1" 메시지의 출력을 체크하여도 동일한 결과를 얻을 수 있습니다. 

다만 모든 노드가 이벤트를 발생시키는 것은 아니기 때문에,  Complete노드를 모든 노드에 적용할 수 있는 것은 아닙니다. 

⑨ Link in, out과  Link Call 노드

Link 노드는  플로우 화면에 배치된 노드와 플로우가 너무 복잡할 경우 실제 링크 연결을 대신하여, 즉 무선으로 연결시켜 줄 수 있는 역할을 하는 노드로서, 플로우를 간결하게 표현하는 데 사용할 수 있는 노드입니다. 

아래 예시를 보면, 인젝터에 있는 Hello world! 메시지와 Function 1의 메시지를 합친 출력을 "Link Out 1"노드 → "Link In 1"노드로 전달시켜 debug 1으로 출력시켜본 예제입니다. 

 

아래 "Link Out 1" 노드를 선택해 보면, 옵션에서 "Link In 1" 연결되었다는 표시를 볼 수 있습니다.

 

위와 같이 연결되기 위해서는 아래에 있는 Link Out노드와 Link In노드의 설정을 참고해 주세요.

 

또한 Link 노드를 아래 예시처럼 서부루틴 함수처럼 활용할 수도 있습니다.   (Link Call 함수 활용)

Link node의 옵션은 아래 이미지들을 참고하세요~

 

그리고 아래처럼, 여러 개의 Flow node에서 Link Call 하여 정말 서부루틴 함수 활용하듯 할 수 있습니다.

 

그리고 아래처럼, 플로우 화면 1과 화면 2로 나누어 좀 더 체계적으로 플로우노드를 구성할 수도 있습니다.

 

⑩  Catch 노드

Catch노드는 플로우에서 발생되는 에러를 감지하는 노드인데요,  모든 플로우를 설계하고서 어떤 예상치 못하는 에러가 발생하는 경우 의도적으로 에러를 발생시켜 플로우를 종료해야 되는 경우가 발생됩니다.  특히, 외부 서비스를 연동하거나 할 때 예를 들어, 외부 DB나 HTTP연동에서 응답이 없는 경우에 대한 처리를 해줄 필요가 있습니다.  이러한 경우 등에 catch 노드를 사용하여 대비하는 플로우를 짜는 것이 좋습니다. 

아래 이미지들은 Function 함수에서 에러를 발생시켜 이를 Catch노드에서 감지하도록 하여 에러 발생 내용을 debug 6 노드로 출력하도록 한 예시입니다. 

Function 노드 내용 :

var msg1 = { payload: "1" };
var msg2 = { payload: "2" };
var msg3 = { payload: "3" };

 

return [msg1, msg2, msg3];
 
function 노드에는 msg3에 대한 리턴이 없고 msg4로 잘못 리턴이 되어 에러가 발생하게 됩니다.

 

Catch노드에서는 에러를 체크할 노드로 "function 1"을 체크해 주세요.   물론 하나의 catch노드에서 플로우에 있는 여러 개의 노드를 동시에 에러 체크할 수 있습니다.

 

그리고 catch 노드와 연결된 메시지로 에러메시지를 출력하기 위해,  대상: msg.error.message  로 입력해 주세요.

 

에러가 나는 부분을 정상정으로 수정 후에는 아래처럼 정상 출력(작동) 되는 것을 볼 수 있습니다. 

 

그럼, 다음 게시글에서 핵심노드 설명 3편으로 이어가도록 하겠습니다.

감사합니다.

반응형
반응형

1.  노드 그룹

이번 글에서는 노드레드(Node-RED)에서 플로우를 작성하기 위한 기본 단위인 노드에 대해 설명 주요 노드를 중심으로 설명을 드리려고 하며,  이를 그룹별로 정리한 노드 그룹(Group)에 대해 설명하고자 합니다. 

아래는 노드래드를 실행하면 보이는 좌측 팔레트(Palette Side) 영역에 보이는 노드와 기본 노드 그룹에 대한 설명을 표로 정리하였습니다. 

이 노드는 Node-RED를 처음 실행하면 보이는 기본 그룹이며,   팔레트 관리 메뉴에서 추가적으로 필요한 노드를 라이브러리 검색으로 검색하여 추가시킬 수 있습니다. 
아래는 가장 많이 추가해서 사용되는 Dashboard 노드 그룹과 Raspberry Pi 노드 그룹입니다. 

2.  핵심 노드  설명

  ①  Inject 노드  

인젝트(Inject) 노드는 작업영역에 배치하면 Time Stemp(타임스템프)로 표시되는 노드이며,  좌측에 있는 버튼을 눌러 수동으로 플로우를 발생시킬 때 사용할 수 있는 노드입니다.   또는 일정한 시간 간격(인터벌)으로 플로우를 발생시킬 수 있습니다. 

(타임스템프 노드를 더블 클릭하여 이미지와 같이 설정할 수 있습니다)

또한 아래처럼 지정한 시간 간격, 일시 형태로도 설정이 가능합니다.

전달하는 기본 형태는 msg.payload와 msg.topic을 설정할 수 있는데, 메시지 타입을 숫자, 문자열(String), Josn 타입 등 다양하게 전달할 수 있습니다.

 

그리고 화면 아래  '+추가' 버튼을 클릭하면, 메시지를 추가하거나 삭제 그리고 메시지의 타입을 선택할 수 있습니다.  

inject 노드에서 전달할 수 있는 메시지의 주요 타입(속성)은 아래와 같습니다. 

 

②  디버그(Debug) 노드  

 디버그 노드는 아두이노IDE로 예시를 들자면 시리얼 모니터와 같은 기능을 하는 노드로 이해하면 됩니다.  플로우 사이에 이동되는 메시지를 파악하거나 탐색하기 위해 많이 사용되는 노드입니다.  편집기 화면에서 디버그 내용을 보기 위해서는 측면영역(Side Bar)에 있는 debug 탭을 클릭하면 그곳으로 출력됩니다. 

 

만약,  시스템 콘솔 (system console)로 출력을 선택하면, 아래처럼 Node-Red를 실행시킨 콘솔(터미널) 화면으로 출력 됩니다. 

 

또한, 노드 상태(node status)창으로 출력을 설정할 경우 플로우 작업영역의 노드 아래에 32 character까지 출력해 줍니다. 


그리고 이 옵션들은 중복해서 적용할 수 있습니다.  (동시 출력 가능함)
그리고 이과정에서 디버그 노드는 앞선 글에서도 다루었지만, 활성화 또는 비활성화할 수 있는데요, 필요치 않은 경우 비활성화시켜놓다가 다시 체크해 볼 상황이 되면 활성화시켜 확인해 보는 식으로 하면 편리하게 디버그 노드를 활용할 수 있습니다. 

 

③  함수(function) 노드  

 함수 노드는 전달 받은 메시지를 JavaScript를 활용하여,  처리하고 처리된 결과를 뒷 단의 노드로 전송할 수 있습니다.  사용자가 원하는 기능을 정의한다고 생각하면 됩니다. 

예를 들어 인젝트 노드에서 'Hello World!'라는 문자열을 받아서 문자열 전체 개수를 카운트하여 전달할 수 있습니다.  아래 이미지를 보면, 공백포함하여 정확히 '12'가 카운트되어 전달되는 것을 볼 수 있습니다. 

예제 1)  전달 되는 메시지(Hello World!)의 문자열 길이를 출력하는 함수(function) 넣기

▷  Function 함수 내용 :    var msg= { msg.payload.length );     return   msg;

 

예제 2)  다중 함수를 구성하여 기본 전달 메시지(Hello World!)와,  설명 문자열 출력과 전달되는 문자열의 길이를 출력하는 3중 출력 함수 Json코드 넣기.

함수에 입력된 JSON 코드 :

var msg2 = { payload: "메시지의 총길이는:" };
var msg3 = { payload: msg.payload.length };
return [ msg, msg2, msg3 ];

( ※ msg는 기본 전달되는 메시지여서 별도로 객체를 생성할 필요 없습니다)

이때, 함수(function) 노드의 설정창의 Setup탭에서 함수 노드 수를 3개로 변경해 주어야 합니다. 

그럼, 아래와 같이 디버그 창으로 동시에 원하는 3가지 형태의 출력 결과를 얻을 수 있습니다.

 

또한,  if 조건문을 넣어 원하는 입력일 경우 그대로 출력하고 그렇지 않을 경우 에러 메시지 등과 같은 것을 출력하는 등, 좀 더 다양하게 활용할 수 있습니다. 

① 원하는 입력('Hello World!')이 들어오면 설정한 대로 출력합니다.

1. 원하는 입력('Hello World!')이 들어오면 설정한대로 출력합니다.

 

② 만약 원하지 않는 입력('Nice World!')이 들어오면 다시 확인할 수 있도록 메시지를 출력할 수도 있습니다. 

2. 원하지 않는 입력 ('Nice World!')이 들어오면 다시 확인할 수 있도록 메시지를 출력합니다.

 위에서 입력한 function 코드는 아래와 같습니다. 

var msg2 = { payload: "메시지의 총길이는:" };
var msg3 = { payload: msg.payload.length };
var msg4 = { payload: "입력문자를 확인하세요!"};
if (msg.payload == "Hello World!") {
    return [msg, msg2, msg3];
} else {
    return [msg4];
}

 

예제 3) 하나의 디버그 노드로도 여러개의여러 개의 메시지를 순차적으로 출력할 수 있습니다. (한 번의 인젝션으로 여러 개의 메시지를 출력할 수 있음)

 

아래 function 내용을 참고하세요. 

또한, return 에서 대괄호 [ ]는 배열을 의미합니다. 따라서,  function 노드의 Setup에서 출력수를 2로 하고 디버그를 하나더 연결 후 아래와 같이 msg, msg1과  msg2, msg3를 배열의 요소로 따로 분류하면 각각의 디버그 노드로 분리되어 출력되는 것을 볼 수 있습니다.

[ [msg, msg1], [msg2, msg3] ] 으로 Function 코드를 수정하세요

 

배열로 분리된 리턴값이 디버그1과 디버그2로 각각 분리되어 출력됩니다

 

예제 4)  이벤트 로깅

 필요할 때마다 콘솔을 통해 무언가를 기록해야 하거나, 특정 노드에서 주의(경고)나 에러(오류)가 발생하는 상황에 대해 메시지를 출력하도록 할 수 있습니다. 
function 노드에 아래와 같이 코드를 입력하고 실행시켜 보면,  이벤트 로깅이 되는 것을 볼 수 있습니다. 단, node.log ()의 경우는 사이드바로는 출력되지 않고 콘솔로만 출력됩니다. 

node.log("로그 기록입니다.");
node.warn("주의 경고 사항발생!");
node.error("에러 발생~!");
 

그리고 이벤트 함수에 직접 메시지를 입력할 수도 있지만 아래처럼, 변수를 지정해서 할 수도 있습니다.
var msg1 = { payload:"로그 기록입니다."};
var msg2 = { payload: "주의 경고 사항발생!" };
var msg3 = { payload: "에러 발생~!" };
node.log(msg1.payload);
node.warn(msg2.payload);
node.error(msg3.payload, msg3);
return [[msg1, msg2, msg3]];

아래 이미지를 보면, 이벤트 로깅 함수에의해 발생되는 것(분홍색 표시)과  일반 메시지로 출력되는 것(주황색 표시)의 차이를 구분하실 수 있을 거예요.

 

④  Catch 노드  

catch 노드를 통해서는  노드 전체나 특정 노드에서 발생하는 에러가 있을 경우 이벤트 메시지를 발생시키도록 할 수 있습니다. 

 

⑤  Change 노드  

Change 노드는 Function노드에서 처럼 JavaScript  코드에 의존하지 않고 사용할 수 있는 노드로서, Node-RED에서 자주 사용될 수 있는 기능인,  payload값을 변경하거나, 설정, 삭제, 이동 같은 작업들을 처리해 줄 수 있는 노드입니다. 

Change노드의 설정으로 들어가보면 4가지 속성을 선택할 수 있는데요, 각각의 예시를 들어 볼게요.

예제 1)  값의 대입 (Set)   속성
Change노드의 설정부분에서 "값의 대입(Set)"으로 놓고 대입하고자 하는 값('Welcome!')을 입력해 놓으면,  인젝터에 입력값이 없는 경우에도 특정 값을 대입(설정,Set)시킬 수 있습니다. 

 

예제 2) 값의 치환(Change) 속성

치환 속성은 예를들어 인젝트 노드로부터 입력되는 값에서 특정 문자열을 검색하여 바꾸고자 하는 문자열로 변경해 주는 속성입니다.

"Hello World!" 문자열에서 Hello를 검색하고 이 문자열 대신 "Nice"로 치환하여 출력 하도록 합니다. 
그래서 결국 "Hello World!" 문자열은 Change 노드를 거친 결과 값은  "Nice World!"로 바뀌어 출력되게 되는거죠.


예제 3) 값의 삭제(Delete) 속성

값의 삭제(Delete)속성은 입력되는 payload 값을 삭제하도록 합니다. 아래처럼 Change의 속성을 값의 삭제로 변경하게 되면,  

Change 노드를 거친 "디버그 2" 노드로는 출력값이 나오지 않게 됩니다. 

 

예제 4) 값의 이동(Move) 속성

 값의 이동은 이동(Move)이라는 말보다는 추출이라는 말로 생각하면 더 빠르게 이해할 수 있는데요, 예를 들어, Raspberry Pi에 연결 된 dht11 온도센서가 있다면,  센서로부터 전달 받는 데이터(payload)는 오브젝트(객체)로 전달 받게 되는데요  즉, dht11이라는 정보 객체 속에는 온도값과 습도값의 데이터 집합(뭉텅이) 형태로 전달 받게 되는데, 실제로 활용하고자 하는 온도(Temperature) 값이나 습도(Humidity)값을 추출(이동-Move)해야 활용할 수 있게 되겠죠?   따라서 이런 상황에서 아래처럼, 이동(Move) 속성을 이용하여 플로우를 구성하여 사용할 수 있습니다. 

반응형