Bash 를 잘 좀 써보자.

출처 : [책]배시 핵심 레퍼런스

 
늘 헷갈리는 부분을 두고두고 보려고 메모합니다.

명령 형식

cmd &
백그라운드에서 cmd 실행
cmd1 ; cmd2
다수의 cmd를 실행함
{cmd1;cmd2;}
현재 쉘에서 명령들을 그룹으로 실행
(cmd1; cmd2)
하위 쉘에서 명령들을 그룹으로 실행
cmd1 | cmd2
파이프. cmd1의 출력을 cmd2 의 입력으로 사용함
cmd1 \`cmd2\`
cmd2 가 명령으로 치환되며 cmd1의 인자로 사용
cmd1 $(cmd2)
POSIX 쉘 명렬 치환, 중첩허용됨
cmd1 $((expression))
POSIX 쉘 산술치환. 수치결과가 인자로 사용
cmd1 && cmd2
cmd1 이 성공하면 cmd2 실행
cmd1 || cmd2
cmd1 이 성공하면 cmd2는 실행되지않고, cmd1 이 실패하면 cmd2 는 실행된다.
!cmd
NOT

리디렉션

  • 0 : 표준입력(stdin;키보드)
  • 1 : 표준출력(stdout;화면)
  • 2 : 표준에러(stderr; 화면)
cmd > file
# cmd 의 출력을 file 로 보냄(덮어쓰기)
cmd >> file
# 추가로 보냄
cmd < file
# file에서 cmd에 대한 입력을 받음
cmd << text
# text 와 동일한 라인까지의 쉘 스크립트 내용이 cmd 에 대한 표준 입력이 된다.
# cat, ex, sed
cmd <> file
# 표준 입력에 읽고 쓰는 file을 연다.
cmd >| file
cmd >&n
# cmd출력을 파일 서술자 n으로 보낸다.
cmd >&-
# 표준 출력을 닫는다.
cmd <&n
# 파일 서술자 n에서 cmd에 대한 입력을 받는다.
cmd <&-
# 표준 입력을 닫는다.
cmd <&n-
# 파일 서술자 n을 복사하여 표준입력으로 옮긴 후 원래 것을 닫는다.
cmd >&n-
# 파일 서술자 n을 복사하여 표준 출력으로 옮긴 후 원래 것을 닫는다.


'TOOL > CMD, BASH' 카테고리의 다른 글

[gitlab] 프로젝트 CLI 생성  (0) 2018.03.07
[CMD] 사용법  (0) 2017.04.14
블로그 이미지

ohnewdev

배워서 남주자

,

개인적인 학습목적으로 작성한 포스트 입니다.

SAP FIORI

SAP의 Front-end 프레임웍 입니다. 
사용자경험 기반의 UI로 새롭게 단장하고 폰, 테블릿, PC에서도 같이 보여집니다. 
SAP UI5 에 기반한 기반한 UX 입니다.

[SAP 기존 UI vs Fiori UI 비교 동영상] 
https://www.youtube.com/watch?v=_morrLqAZTQ

참고 : Fiori 소개 
https://blogs.sap.com/2016/09/17/understanding-sap-fiori/

[정리할 개념 및 용어]

1. SAPUI5

  • SAP가 구축한 HTML5 툴킷의 이름입니다. 
    (즉, 웹화면 부분을 개발할 수 있는 개발도구 입니다.)
  • Web 개발이 Server-client 방식으로 개발되는데, 웹클라이언트 개발의 
    javascript, CSS, HTML5 를 기반으로 만든 UI 라이브러리입니다.
  • Javascript Framework 으로 IE, Chrome, Firefox 등 메인 브라우저를 지원합니다.
  • 튜토리얼 ( https://sapui5.hana.ondemand.com/ )

2. FIORI

  • SAP 에서 SAPUI5로 만든 Front-end Framework 입니다. 
    (즉, SAPUI5를 이용하여 시스템의 화면부를 구성할 수 있도록 개발환경을 제공합니다.)
  • 모바일, 테블릿, PC 에서도 동일하게 작동하도록 설계되어있습니다.

3. Odata

  • 웹상에서 손쉽게 데이터를 조회하거나 수정할 수 있도록 주고 받는 웹프로토콜(규약) 입니다.
  • Fiori 에서 사용되며, Fiori 화면을 SAPUI5 로 만들어낸다고 하면, 그 내부적으로 데이터를 
    던지고 받는 구조적인 역할을 합니다.

4. Front-end Server

UI add-Ons(Fiori App Repogitory) + SAP NetWeaver Gateway

로 구성됩니다. 

  • Fiori App Repogitory : Fiori 프로그램의 구성된 공간
  • SAP NetWeaver Gateway : ABAP Back-end Server 와 Fiori 간의 Odata 전달

5. SAP UI5 Concept

1) Model-view-Controller(MVC)
  • Client 단에도 MVC 구조를 이루고 있음.
  • View : 화면 레이아웃 구성
  • Model : 데이터를 채워주는 부분. 뷰에 어떤 데이터를 보낼지 담는 그릇 역할
  • Controller : View 에 버튼이 눌러졌을 때 Model 에 어떤 데이터를 넣어줄건지, 어떤 행동을 할 것인지를 정의하고 있는 부분.
2) Data Binding
  • 서버에서 뿌려지는 것 뿐 아니라 화면에서 사용자가 변경한 부분까지 묶이도록 코딩으로 정의 하는 작업.
[코드 예]
// 샘플로 oData 를 만듬.
var oData = { recipient : { name : "world"} };
//위에서 만든 oData 를 model 로 구성함.
var oModel = new JSONModel(oData);
this.getView().setModel(oModel);
// model 에는 데이터가 실려있고, 이 model 을
// View 쪽에 연결(데이터 바인딩)
// 이렇게 데이터가 바인딩 되면....
// 화면에 데이터를 변경하면 연결된 데이터들도 함께
// 변경된다. 즉, 화면값과 연결된 model 내부의
// 값도 변경된다.
// 예를들어 화면의 world 값을 ABC 로 바꾸면,
// model이라는 그릇내의 world 값이 ABC로 바뀝니다.
// 이것을 다시 ABAP Back-end로 전달하면, 되겠지요.

그럼, Fiori는 뭘로 개발하나? (개발도구)

1) web IDE

  • 웹사이트 들어가서 개발함.
  • 하나클라우드에 들어가서 개발함.

2) web ide personal edition

  • 로컬에 띄워놓고 개발하는 것임.

3) Eclipse 플러그인

  • 웹화면 개발하는 것과 거의 유사.

  • SAP 에서는 클라우드 플랫폼에서 개발하도록 권하긴 합니다. 
    가입을 하면 트라이얼 환경에서 개발을 해볼 수 있습니다. 
    가짜 서버도 띄워보고 할 수 도 있습니다.

  • 개발도구 링크 : https://tools.hana.ondemand.com/#sapui5


블로그 이미지

ohnewdev

배워서 남주자

,

개인적인 학습으로 둘러보면서 작성한 메모입니다.
잘 정리해주신 분들의 문구를 메모하였습니다.


개발환경 준비

1) 아두이노 설치 
https://www.arduino.cc 
레퍼런스 
https://www.arduino.cc/en/Reference/HomePage

2) 시뮬레이터 설치 
이 글을 작성하는 곳이 실습할 수 없는 환경이라… 
시뮬레이션 해볼 수 있는 도구를 찾아보니, 
Fritzing 이란 도구가 있었다.

https://kocoafab.cc/tutorial/view/652 
참조하여 설치를 진행하고~~ 
kocoafab 은 설명이 너무너무 잘되어 있다.

http://pawns.tistory.com/entry/아두이노가-없을-때-사용하자-Fritzing 
(http://pawns.tistory.com/entry/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8%EA%B0%80-%EC%97%86%EC%9D%84-%EB%95%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EC%9E%90-Fritzing)

PWM

PWM이란 
https://opentutorials.org/module/2106/12246

아두이노 digital 쪽 단자를 보면, ~# 으로 된 단자들이 있다. 이들은 PWM 단자인데, 
PWM 이란 Pulse Width Modulation 로서 펄스의 폭을 컨트롤 하는 주기 제어 방법입니다. 
출력되는 전압값을 일정한 빙율(duty) 동안은 high 상태를 유지하고, 나머지는 low 상태를 유지 시킬 수 있습니다.

아두이노의 analogWrite 함수를 통해서 이런하 PWM 출력을 제공합니다.

실습 : http://eskelt.tistory.com/3

pwm(펄스폭 변조)를 통해 입력전압을 점점 높이거나 낮추는 것과 같은 효과를 낸다.

외부 빛의 양에 따른 LED 깜박이기 + 부저

http://eskelt.tistory.com/5

LED깜박이는 시간간격과 부저의 소리내는 간격을 같이 맞췄다.

범위가 다른 값을 다른 범위로 변환(map)

센서들을 다루다 보면, 다루고자 하는 범위가 각각 있다. 이것을 다른 것의 범위를 맞추고자 할 때 유용한 함수가 map() 이라는 함수가 있다.

map : 
https://www.arduino.cc/en/Reference/Map

실습 : 
http://eskelt.tistory.com/6

피에조 스피커를 이용, 소리에 반응하는 LED

http://eskelt.tistory.com/7

피에조 센서 : 외부소리나 압력에 의해 진동이 발생되면 전류가 흐른다.

아두이노 모터

아두이노에서 사용하는 모터는 보통 다음 3가지를 쓰는데, 
1) DC모터 
2) 스테핑모터 : 스텝에 의해 구동되는 모터. 
3) 서보머터 : 명령을 따르는 모터를 서보모터라고 합니다. 펄스에 따라 각도를 제어하는 모터입니다.

https://m.blog.naver.com/PostView.nhn?blogId=seep1505&logNo=220543950979&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

이중 서보모터는 일정한 각도내에서만 회전을 하는 모터이다.

http://eskelt.tistory.com/8

서보의 작동은 일정 시간 동안 신호를 보내면 그 신호 펄스 폭이 서보의 작동 각도가 된다.

아두이노 포트 확장

이것저것 만들고 싶은게 많은데, 아두이노 보드는 몇 없고… 
포트를 많이 제어할 수 있을까 했는데~ 요렇게 유용한게 있었다니.. 이 포스트는 참 유용하다.

http://eskelt.tistory.com/9

래치를 내린다음, 데이터를 래치에 싣고, 그 다음 다시 래치를 올려 그 데이터를 유지시키는 것 같군요.

[간단 용어] 
. 클럭 : 클럭을 사용하는 이유는 입력 신호와의 동기화를 위한 것임. 
. 래치 : 신호가 회로에 공급되다가 끊어지면 그 신호도 같이 없어지게 된다. 그래서, 래치 또는 플립플롭을 통해 그 신호를 저장하기 위해서 사용합니다. 
플립플롭은 클럭을 가지고 있고, 래치는 클럭을 가지지 않습니다.

클럭
두 개 이상의 디지털 회로의 동작을 통합하는 데에 쓰이는 신호이다.
시간의 흐름에 따라 일정 주기를 가지고 신호의 전압(voltage)이 오르고 내리는 소자입니다. 디지털 소자들은 이런 clock 신호를 입력받아 시간적으로 제어할 일이나 동작을 합니다.
디지털 회로에서 모든 동작의 기준점을 잡아 주는역할을 한다.

참고 : 
https://m.blog.naver.com/PostView.nhn?blogId=miniskirtzia&logNo=220054685053&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
클럭 소자 
http://blog.naver.com/PostView.nhn?blogId=jinohpark79&logNo=220251467901&parentCategoryNo=&categoryNo=7&viewDate=&isShowPopularPosts=true&from=search

https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9F%AD_%EC%8B%A0%ED%98%B8



'전기전자 & IOT > Arduino' 카테고리의 다른 글

Manuals and Curiiculum(Link)  (0) 2017.09.04
블로그 이미지

ohnewdev

배워서 남주자

,