728x90

[스마트홈 구축 프로젝트] 1. AWS EC2 개발환경 세팅(1) 에 이어 ssh 접속을 시도해보려 합니다.

 

[스마트홈 구축 프로젝트] 1. AWS EC2 개발환경 세팅(1)

AWS는 Amazon Web Service EC2는 Elastic Compute Cloud로 컴퓨터를 빌려 사용하는 서비스입니다. AWS EC2로 컴퓨터(환경)을 대여시에 장점은 상황을 고려해서 그에 맞는 성능(사양)에 맞춰 대여가 가능하다는

1d1cblog.tistory.com

 

생성한 인스턴스에서 우클릭 > 연결으로 들어갑니다.

아래 탭에서 ssh 클라이언트를 클릭합니다. 클릭 시 아래 나오는 안내를 따라가면 크게 어려울 것이 없습니다.

ssh 접속에는 이전 키페어 생성 시 다운받았던 pem 파일이 꼭 필요합니다. 

 

윈도우에서 cmd를 입력하여 명령 프롬프트를 실행합니다. 파란화살표가 가르키는 아이콘을 눌러줍니다.

ssh -i "aws1.pem" ubuntu@ec2-xxx-xxx-xxx-xxx.ap-northeast-2.compute.amazonaws.com 형태로 예시가 나와있는데 여기서 " "안의 pem 이름을 pem 파일의 경로로 수정합니다.  (ec2-xxx-xxx-xxx-xxx는 인스턴스의 퍼블릭 IPv4 DNS입니다.)

 

728x90
728x90

AWS는 Amazon Web Service EC2는 Elastic Compute Cloud로 컴퓨터를 빌려 사용하는 서비스입니다. AWS EC2로 컴퓨터(환경)을 대여시에 장점은 상황을 고려해서 그에 맞는 성능(사양)에 맞춰 대여가 가능하다는 점입니다. 사용 중 상황에 맞에 유연하게 수정도 가능합니다. 이제 클라우드에 존재하는 빌린 컴퓨터를 원격으로 제어할 수 있으므로 저는 이 장점들을 활용해서 어디서든 작업할 수 있는 개발 환경을 구축해보려 합니다.

 

라즈베리파이에서 직접 작업 후 빌드해서 실행하거나 그냥 집에 있는 데스크톱을 켜놓은 상태로 원격 접속을 통해 해도 되지만 EC2를 사용하는 것이 더 나을 수 있다고 생각했습니다.

 

이제 EC2를 통해 우분투 환경을 대여 후 그 안에서 빌드 후 라즈베리 파이로 실행파일을 전달하여 사용하려 합니다. 이 우분투 환경 안에서 Git을 통해 소스 관리도 해보고 가능하다면 Jenkins 같은 자동화 도구도 사용해보려 합니다.

 

자 이제 먼저 AWS 회원가입을 합니다. 

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

개발자, 데이터 사이언티스트, 솔루션스 아키텍트 또는 AWS에서 구축하는 방법을 배우는 데 관심이 있는 모든 사용자용 무료 온라인 교육 AWS 전문가가 구축한 500개 이상의 무료 디지털 교육 과정

aws.amazon.com

우측 위에 AWS 계정 생성 버튼을 클릭합니다.

AWS 계정 새로 만들기로 들어갑니다.

사용할 이메일 주소와 이름을 입력 후 이메일 주소 확인을 클릭합니다.

 

전화번호는 +82로 시작하게 주소는 영문주소 변환을 통해 기입합니다.

사용할 카드 번호를 입력합니다. 

가입 완료 버튼 클릭하면 아래 화면이 나오게 됩니다. 우측 지역 이름을 클릭해서 지역을 서울을 선택합니다.

좌측 위 서비스 > 컴퓨팅 > EC2를 선택합니다.

아래 화면에서 중간 아래 주황색 인스턴스 시작 버튼을 클릭합니다.

우측 위 인스턴스 시작 버튼을 클릭합니다.

인스턴스 만들기를 시작합니다. 필요한 운영체제를 선택 후 아래 이미지 선택에서 프리 티어 사용 가능을 선택합니다.

아래 인스턴스 유형도 프리 티어 사용 가능으로 선택합니다.

다음으로 키 페어를 생성해야 합니다. 우측에 새 키 페어 생성 버튼을 눌러줍니다.

정보 기입 후 키 페어 생성 버튼을 누르면 pem 파일이 다운로드되는데 이 파일은 이 키페어와 항상 같이 사용됩니다.

인스턴스 시작 버튼을 클릭하면 아래처럼 인스턴스 생성 성공 창이 뜨게 됩니다.

 

생성이 다 완료됐으니 다음 포스팅에는 연결, VNC를 통한 접속 설정을 해보겠습니다. 감사합니다.

728x90
728x90

예전에 대학생 때 스마트홈 프로젝트를 진행하면서 많은 공부를 했었고 실생활에서도 유용하게 사용했었습니다.

 

[개인프로젝트] 라즈베리파이를 이용한 스마트홈 및 원격관리 어플리케이션

Github Link : https://github.com/psy1064/DJU_OSP psy1064/DJU_OSP 대전대학교 오픈소스프로젝트. Contribute to psy1064/DJU_OSP development by creating an account on GitHub. github.com DJU_OSP 2019 대전..

1d1cblog.tistory.com

 

이에 다시 한번 이와 비슷한 주제를 다시 한번 진행해 보려고 합니다. 기존 프로젝트와 겹치는 기능도 많지만 공부를 위해 다른 기술과 공부를 많이 병행하면서 진행할 예정입니다. 글을 보시다 더 좋은 방향이나 잘못된 부분 있을 시 피드백 부탁드리겠습니다.

 

기본 구조는 위와 같이 진행할 예정입니다.

 

라즈베리파이에서 센서 데이터를 수집하고 어플에서 확인하는 기본 기능은 같지만 전 프로젝트에서는 1:1 TCP 소켓 통신을 통해 주고 받았다면 AWS Database를 이용해볼 예정입니다. Zigbee 통신을 이용해 여러 아두이노 모듈을 붙여 각 방들의 센서 정보 확인과 스위치 제어를 합니다.

 

개발 환경은 그냥 데스크톱에서 VirtualBox를 사용하거나 라즈베리파이에 바로 Qt Build를 할 수도 있지만 EC2 Ubutntu 인스턴스를 생성해서 Build 후 파이에 전달하려고 합니다.

 

소스 관리는 Github 사용합니다. 혼자 repository를 사용하지만 일부러 branch, tag, trunk 등을 사용할 예정입니다.

 

위 기능이 다 마무리 된다면 추가로 해보고 싶은 것은 실제 유통되고 있는 IoT 제품들과 연동을 통해 어플이나 라즈베리파이에 연결된 터치스크린으로 조작, openCV를 통해 카메라 데이터 처리, IR 센서 이용 등이 있습니다.

 

프로젝트 진행을 위해 먼저 AWS 관련 공부부터 시작하려 합니다. 고로 다음 포스팅은 AWS 관련 내용입니다. 감사합니다.

728x90
728x90

시험 정보 및 자격 요건, 출제 기준 등은 2020년 개정된 정보처리기사 정보 및 일정을 참고해주세요

 

2020년 개정된 정보처리기사 정보 및 일정

2020년부터 정보처리기사 개정이 되었습니다. 전체적으로 국가 직무능력표준(NCS) 체계를 반영하여 문제가 출제되었습니다. 응시 자격 정보처리기사를 응시하기 위해서는 응시 자격을 갖춰야 합

1d1cblog.tistory.com

시험 일정

필기 정리 보기

 

2020 정보처리기사 필기 정리

본 정리 글은 시나공 정보처리기사 필기책과 학교 특강을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 필기 2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은

1d1cblog.tistory.com

실기 정리 보기

 

2021 정보처리기사 실기 정리(完)

본 정리 글은 시나공 정보처리기사 실기책과 2020년 기출문제 등을 참고하여 작성하였습니다. -> 책 정보 확인하기 시나공 정보처리기사 실기 수험생들의 궁금증을 100% 반영시험에 나올만한 내용

1d1cblog.tistory.com

필기 접수 방법 보기

 

2020 정보처리기사 필기 접수 방법

1회 정기시험 필기 접수기간입니다. 필기 접수를 위해선 큐넷에 들어갑니다. Q-net 자격의 모든것 www.q-net.or.kr 큐넷에 들어가서 회원가입 / 로그인을 해줍니다. 사진이 등록이 안되어 있다면 먼저

1d1cblog.tistory.com

 

728x90
728x90

젠킨스는 자동화를 해주는 도구입니다. 빌드, 통합, 테스트, 배포 등을 자동화해 줄 수 있습니다.

 

자동화 없이 수동으로 한다면 프로젝트에 추가로 작업 후 커밋하고 빌드서버에서 내역을 update 받아 빌드 후 인스톨을 제작하고 제작한 인스톨을 수동으로 배포하는 과정을 간단하게 설정하여 처리할 수 있게 됩니다.

 

젠킨스는 다양한 플러그인도 지원하기 때문에 각자 상황에 맞고 편리해보이는 기능들을 추가하여 적용하는 것이 가능합니다.

 

먼저 Jenkins 사이트로 들어갑니다. 가장 메인에 보이는 Download를 눌러 설치 파일을 받아줍니다.

아래 창이 나오게 되면 로컬에서만 사용하실 경우에는 위 옵션을 체크 만약 외부에서도 접속할 경우가 있다면 아래 옵션을 체크합니다.

Account / Password 생성 방법은 아래와 같습니다.

제어판 > 시스템 및 보안 > 관리 도구 > 로컬 보안 정책 > 로컬 정책 > 사용자 권한 할당 > 서비스로 로그온을 더블클릭합니다.

사용자 또는 그룹 추가를 눌러줍니다.

아래 화면에서 고급을 눌러줍니다.

지금 찾기를 누른 후 계정을 선택 후 확인을 눌러줍니다.

계정 이름이 추가되었다면 확인을 눌러준 후 적용을 눌러줍니다.

계정, 비밀번호 입력 후 Test Credentials로 계정 인증(증명) 후 Next를 눌러줍니다.

Port도 원하는 포트 선택 후 Test Port를 진행합니다. (Default 8080)

Java JDK 선택 화면에서 아래와 같이 팝업이 발생한다면 Java JDK가 설치된 경로로 다시 선택하거나 설치되어 있지 않다면 설치를 해줘야 합니다.

Java JDK 8 버전 설치 페이지로 들어가 Windows 64버전 exe 파일을 다운로드합니다.

설치가 완료됐다면 jdk가 설치된 경로를 선택 후 Next를 선택합니다.

설치 후 localhost:8080으로 접속한다면 아래와 같이 password를 입력하는 링크가 나옵니다.

위 경로의 InitialAdminPassword 파일을 메모장으로 열면 패스워드가 있습니다. 입력 후 Conitune를 클릭합니다.

Getting Started 화면이 뜨면 기본 추천 plugin으로 설치를 선택합니다.

 

728x90

'Programming > SVN & Jenkins' 카테고리의 다른 글

Qt + SVN + Jenkins CI/CD 구성하기(1) - Tortoise SVN  (0) 2022.01.21
728x90

Qt C++로 작성한 코드를 SVN에 commit 후 Jenkins를 통해 CI/CD하는 과정을 공부 겸 실무에 적용하기 위해 작성하였습니다.

 

먼저 SVN 설정부터 해주겠습니다. SVN은 Tortoise SVN을 사용합니다.

테스트를 위해 Repository도 로컬에 생성해주겠습니다.

기본 trunk/branches/tags 폴더 구조를 사용하기 위해 Create folder structure도 선택 후 OK를 눌러줍니다.

이제 클라이언트쪽을 담당할 디렉토리에서 우클릭 후 checkout을 해줍니다.

이제 위 구조를 보면 trunk는 소스코드를 관리하는 기본 몸통, 토대이면서 여기서 작업이 이루어집니다. 작업 프로로젝트에서 따로 관리하면서 작업하고 싶을 때 branches에 branch 후 작업을 하고 merge를 하게 됩니다. tag 폴더에는 프로젝트를 버전별로 보관하기 위해 사용됩니다.

 

간단히 trunk에 프로젝트를 하나 생성 후 commit 해보겠습니다. Create Project를 통해 Gui Project를 하나 생성해줍니다. 작업이 끝났다고 가정하고 trunk 폴더에서 작업 폴더에 우클릭 > Add 해줍니다.

이제 Add한 파일들을 Commit 해줍니다.

커밋 완료 후 log를 통해 그동한 커밋된 내역들도 확인할 수 있습니다.

728x90
728x90

작업 중 아래처럼 화면에 white space에 dot 표시가 보여진 적이 있습니다.

이때 이 dot 표시들을 표시/제거해주는 단축키는 ctrl + e, ctrl + v입니다.

 

이 말고도 다른 단축키들을 확인하기 위해서는 Tools > Options > Environment > Keyboard에서 확인할 수 있습니다.

728x90
728x90

Windows 10, C++, Qt 5, OpenCV 4.5.4 기준으로 설명하겠습니다.

 

먼저 http://qt.mirror.constant.com/archive/qt/5.9/5.9.3/에서 Qt Creator를 다운받습니다.

 

Index of /archive/qt/5.9/5.9.3/

 

qt.mirror.constant.com

다음으로 https://github.com/opencv/opencv/releases에서 opencv-4.5.4-vc14_vc15.exe를 다운받습니다.

 

Releases · opencv/opencv

Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub.

github.com

CMake 설치 전 환경 변수를 설정합니다. 윈도우에서 시스템 환경 변수 편집을 검색하여 실행합니다. 아래 화면에서 환경 변수 클릭합니다.

Path를 더블 클릭하여 아래 화면을 띄운 후 C:\Qt\Qt5.9.3\Tools\mingw530_32\bin\ (mingw530_32\bin 경로)를 추가합니다.

다음으로 https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0-windows-i386.msi에서 CMake를 설치합니다.

설치 후 CMake를 실행 후 source code에 설치한 opencv 폴더 안의 sources 폴더를 build the binaries에는 빌드된 결과물을 저장할 폴더를 지정 후 Configure를 클릭합니다.

다음 화면에서 아래와 같이 체크 후 Next를 클릭합니다. 

 

다음으로 Compilers에서 C에는 Qt/Qt5.9.3/Tools/mingw530_32/bin/gcc.exe C++에는 Qt/Qt5.9.3/Tools/mingw530_32/bin/g++.exe을 선택합니다.

마지막으로 Configurate를 클릭합니다.

한번의 과정이 끝나고 아래처럼 항목들이 생겼다면 BUILD_QT, BUILD_OPENGL을 체크, CMAKE_BUILD_TYPE에 Debug 후 다시 Configure를 해줍니다.

Configure이 끝났다면 마지막으로 Generate를 해줍니다.

build the binaries에 설정한 경로에 Makefile이 생긴지 확인합니다.

이제 Qt for Desktop (MinGW 5.3.0 32bit)를 실행 후 Makefile이 생성된 경로로 이동 mingw32-make를 실행합니다.

마지막으로 mingw32–make install를 실행합니다.

이제 설정한 경로 안 bin 폴더에 dll 파일이 생긴 것을 확인할 수 있습니다.

다음으로 환경 변수에 해당 라이브러리 파일들이 있는 경로도 추가해줍니다.

위 과정을 마치셨다면 Qt Creator를 실행 후 New Project > Qt Widgets Application 후 프로젝트를 생성합니다.

pro 파일을 아래와 같이 설정합니다.

#-------------------------------------------------
#
# Project created by QtCreator 2021-11-29T22:35:26
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Start
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += \
        main.cpp \
        imageload.cpp

HEADERS += \
        imageload.h

FORMS += \
        imageload.ui

INCLUDEPATH += C:\OpenCV4.5.4\opencv\Qt_Lib\install\include

LIBS += \
    C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_core454d.dll \
    C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_highgui454d.dll \
    C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_imgproc454d.dll \
    C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_imgcodecs454d.dll \

main.cpp는 건들지 않고 ui cpp 파일을 아래와 같이 수정합니다.

#include "imageload.h"
#include "ui_imageload.h"
#include <opencv2/opencv.hpp>
#include <QDir>
#include <QDebug>

ImageLoad::ImageLoad(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ImageLoad)
{
    ui->setupUi(this);

    connect(ui->btnShowImage, SIGNAL(clicked()), this, SLOT(Slot_pushShowImageButton()));
}

ImageLoad::~ImageLoad()
{
    delete ui;
}

void ImageLoad::ShowDebugMessage(QString sMsg)
{
    qDebug() << sMsg;
    ui->statusBar->showMessage(sMsg,3000);
}

void ImageLoad::Slot_pushShowImageButton()
{
    QString sImagePath = QApplication::applicationDirPath() + "/iu.jpg";
    qDebug() << sImagePath;

    QFile file(sImagePath);
    if ( !file.exists() ) {
        ShowDebugMessage("파일을 찾을 수 없습니다.");
    }

    cv::Mat image = cv::imread(sImagePath.toStdString(), cv::IMREAD_COLOR);

    if ( image.empty() ) {
        ShowDebugMessage("이미지 파일을 읽을 수 없습니다.");
    }

    cv::imshow("Image Test", image);
    cv::waitKey(0);
    cv::destroyAllWindows();
}

버튼을 누르면 아래와 설정한 이미지를 띄우게 됩니다.

 

GitHub - psy1064/OpenCV_Example

Contribute to psy1064/OpenCV_Example development by creating an account on GitHub.

github.com

 

728x90

+ Recent posts