반응형

1. 시험환경

    ˙ 윈도우

    ˙ nginx

 

2. 목적

    ˙ 윈도우 환경에서 nginx를 설치하고 실행하는 방법을 알아보자.

 

3. 적용

    ① NGINX 다운로드 사이트에 접속하여 Windows용 nginx를 다운로드 받는다.

        - URL : https://nginx.org/en/download.html

 

nginx: download

 

nginx.org

 

    ② 다운받은 파일을 압축해제한다.

 

     conf/nginx.conf 파일을 메모장 등 Editor 등으로 열어서 웹서비스 디렉토리(location /)를 확인한다.

        - 기본값은 html 경로에 index.html, index.htm 파일로 설정되어 있다.

 

    ④ (선택) 웹서비스 디렉토리 변경이 필요한 경우 경로 및 파일을 변경한다.

        - 주의: 문장끝에 세미콜론(;) 추가

 

    ⑤ nginx.exe 파일을 실행한다.

 

    ⑥ 최초 실행시 엑서스 허용을 해야 한다.

 

4. 결과

    ˙ 브라우저에서 접속하여 서비스가 동작여부를 확인한다.

        - URL : http://localhost:80

 

    ˙ 실행중인 nginx를 종료하기 위한 명령어는 아래와 같다.

        - > nginx  -s  stop

반응형
반응형

1. 시험환경

    ˙ IntelliJ

    ˙ Springboot 프로젝트

    ˙ Gradle, Maven

 

2. 목적

    ˙ SpringBoot 프로젝트 생성시 JSP view는 별도의 설정 과정이 필요하다.

    ˙ Gradle 또는 Maven에 JSP view 관련 의존성 패키지 설치 방법을 알아보자.

    ˙ SpringBoot 프로젝트에서 JSP view 설정하는 방법을 알아보자.

    ˙ 테스트를 위한 JSP 파일을 작성하고 URL 요청시 JSP 파일이 열리는지 확인한다.

 

3. 적용

    ① 최소한의 의존성 패키지로 Springboot 프로젝트를 생성하였다.

        - 참고 : https://languagestory.tistory.com/229

 

spring initializer를 이용한 springboot 프로젝트 생성

1. 시험환경 ˙ Window ˙ Spring Initializr ˙ Gradle ˙ IntelliJ Community 2. 목적 ˙ Spring Initializer를 이용하여 Spring Boot 프로젝트 패키지를 구성한다. ˙ Spring Initializer를 이용하여 구성된 패키지를 IntelliJ에 임

languagestory.tistory.com

 

    ② JSP View 설정을 위한 의존성 패키지를 추가한다.

        - gradle : src/build.gradle

1
2
3
4
dependencies {
    implementation 'javax.servlet:jstl'
    implementation "org.apache.tomcat.embed:tomcat-embed-jasper"
}
cs

 

        - maven : src/pom.xml

1
2
3
4
5
6
7
8
<dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId>
</dependency>
<dependency>
       <groupId>org.apache.tomcat.embed</groupId>
       <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
cs

 

    ③ application.properties 또는 application.yml 파일에 JSP prefix 및 suffix를 추가한다.

        - 경로 : src/main/resources/application.properties

 

        - 경로 : src/main/resources/application.yml (properties 파일 대신 yml 파일을 많이 쓰는 추세이다)

 

 

    ④ application.properties 파일에 설정한 경로(prefix)에 테스트를 위한 JSP 파일을 생성한다.

        - 경로 : src/main/webapp/WEB-INF/views

 

    ⑤ JSP 화면 호출을 위한 Controller를 작성한다.

 

4. 결과

    ˙ URL 페이지를 요청하여 JSP 화면 호출 결과를 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ Window

    ˙ Spring Initializr

    ˙ Gradle

    ˙ IntelliJ Community

 

2. 목적

    ˙ Spring Initializer를 이용하여 Spring Boot 프로젝트 패키지를 구성한다.

    ˙ Spring Initializer를 이용하여 구성된 패키지를 IntelliJ에 임포트(import)하여 시작한다.

 

3. 적용

    ① Spring Initializer 사이트에 접속한다.

       - URL : https://start.spring.io/

 

    ② 최소한의 의존성 패키지 구성으로 Spring Boot 프로젝트를 생성한다.

        - "GENERATE" 버튼을 클릭하여 프로젝트 압축파일을 다운로드 받는다.

 

    ③ 다운받은 압축파일을 workspace(프로젝트 작업공간)에서 압축해제한다.

template.zip
0.06MB

 

    ④ IntelliJ에서 template 폴더를 임포트(import) 하면 자동으로 빌드(build) 작업이 진행된다.

        - build.gradle에 추가된 Dependency는 다음과 같다.

1
2
3
4
5
6
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
cs

 

    ⑤ 테스트를 위한 Controller를 작성한다.

        - 패키지 : com.boot.template.controller

        - 테스트용 컨트롤러 : com.boot.template.controller.TestController.java

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.boot.template.controller;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class TestController {
 
    @GetMapping("/test")
    public String test() {
        System.out.println("test...");
        return "Hello World";
    }
}
 
cs

 

 

    Main()에서 프로젝트를 실행한다.

 

4. 결과

    ˙ SpringBoot 실행 결과를 확인한다.

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Docker Desktop(docker, docker-compose)

 

2. 목적

    ˙ 윈도우 운영체제에서 Docker Desktop을 설치한다.

    ˙ Docker Desktop을 설치하면 docker와 docker-compose가 모두 설치된다.

 

3. 적용

    ① Docker 사이트에 접속한다.

        - URL : https://www.docker.com/

 

Empowering App Development for Developers | Docker

Learn how Docker helps developers bring their ideas to life by conquering the complexity of app development.

www.docker.com

 

    ② 사이트 화면 "우측 상단"에 "Get Stared" 버튼을 클릭한다.

 

    ③ Windows "Docker Desktop" 설치 프로그램을 다운 받는다.

        - Docker Desktop : Docker Image를 사용할 수 있는 프로그램

        - Docker Hub : Docker Image가 저장된 Cloud 저장소

 

    ④ 설치 파일이 다운완료되면 실행한다.

 

    ⑤ Docker 설치가 완료되면 PC 재부팅한다.

 

4. 결과

    ˙ 바탕화면에 생성된 Docker Desktop을 실행하 GUI 화면이 나타나는 것을 확인한다.

Docker Desktop GUI

 

    ˙ 명령 프롬프트(CLI)에서 "docker 버전" 및 "docker" 명령어를 실행하여 동작을 확인한다.

반응형
반응형

1. 시험환경

    ˙ Flutter

    ˙ Android Studio

 

2. 목적

    ˙ Flutter(플러터) 프로젝트 초기 설정시 Lint 기능을 off 하기 위한 설정을 한다.

    ˙ Flutter Lint란 Dart 코드에서 코딩 스타일 및 잠재적인 오류를 식별하고 경고하는 도구이다.

 

3. 적용

    ① 프로젝트를 최초 생성한다.

        - 참고 : https://languagestory.tistory.com/298

 

Flutter(플러터) 최신 버전 설치 및 개발환경 설정

1. 시험환경 ˙ 윈도우 ˙ Flutter SDK ˙ Android Studio 2. 목적 ˙ 윈도우 운영체제에서 Flutter(플러터) 초기 개발환경을 설정한다. 3. 적용 ① Flutter(플러터) SDK 다운로드 사이트에 접속한다. - URL : https://doc

languagestory.tistory.com

 

    ② analysis_options.yaml 파일에서 다음과 같이 설정한다.

1
2
3
4
5
  rules:
    avoid_print: false
    prefer_typing_uninitialized_variables: false
    prefer_const_constructors_in_immutables: false
    prefer_const_constructors: false
cs

 

4. 결과

    ˙ Lint 기능 off 전/후 비교 결과이다.

 

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Flutter SDK

    ˙ Android Studio

 

2. 목적

    ˙ 윈도우 운영체제에서 Flutter(플러터) 초기 개발환경을 설정한다.

 

3. 적용

    ① Flutter(플러터) SDK 다운로드 사이트에 접속한다.

        - URL : https://docs.flutter.dev/get-started/install

 

Install

Install Flutter and get started. Downloads available for Windows, macOS, Linux, and ChromeOS operating systems.

docs.flutter.dev

 

    ② 설치할 운영체제 해당하는 SDK를 다운로드 받아서 압축을 해제한다.

        - 여기서는 Windows 운영체제에 설치할 것이다.

 


    ③ Android Studio를 설치한다.

        - 참고 : https://languagestory.tistory.com/174

 

Android Studio 설치

1. 시험환경 ˙ 윈도우 ˙ 안드로이드 스튜디오 2. 목적 ˙ 윈도우 운영체제에서 안드로이드 스튜디오를 설치한다. 3. 적용 ① 안드로이드 개발자 사이트에 접속해서 "Andriod 스튜디오" 메뉴를 클릭

languagestory.tistory.com

 

    ④ Android Studio Plugin에서 flutter를 검색하여 Flutter Plugin을 설치한다.

 

    ⑤ SDK Manager → SDK Tools → Android SDK Command-line Tools (latest)를 설치한다.

 

    ⑥ Android Studio에 "New Flutter Project" 버튼이 생성된 것을 확인할 수 있다.


    윈도우 검색 → 시스템 환경 변수 편집 → 환경변수 Path ②번 과정에서 수행한 압축해제 bin 폴더를 지정한다.

        - 압축 해제한 Flutter의 bin 디렉토리 : D:\util\flutter_windows_3.16.2-stable\bin


    ⑧ Android Studio를 실행하여 Flutter 신규 프로젝트를 생성한다.

 

    ⑨ 최초 실행시 ②번 과정에서 수행한 Flutter 압축해제 경로를 Flutter SDK Path로 설정한다.

 

    ⑩ 프로젝트 설정 정보를 입력하고 "Create" 버튼을 클릭하여 신규 프로젝트를 생성한다.

 

    ⑪ lib/main.dart 파일에서 프로젝트 개발을 시작한다.

 

4. 결과

    ˙ 브라우저를 선택하고 프로젝트 Run 버튼을 실행한다.

 

    ˙ 프로젝트 실행화면을 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ 라즈베리파이 4 (Raspberry Pi 4 Model B)

    ˙ raspberry camera module v3

 

2. 목적

    ˙ 라즈베리파이에 카메라 모듈을 연동한다.

    ˙ 10분씩 녹화하는 프로그램을 작성한다.

 

3. 적용

    ① Raspberry Camera Module v3을 사용하기 위해서 32bit 운영체제를 설치해야 함에 주의한다.

 

    ② 라즈베리파이 보드에 카메라 모듈을 설치한다.

 

     라즈베리파이 카메라 녹화 프로그램을 작성한다.

        - 카메라가 작동하여 10분씩 저장

        - 저장 파일명의 prefix로 "_날짜_시간" 추가

        - 녹화 시작 전 디스크 잔여 공간을 확인하고, 500MB 이하인 경우 생성날짜가 빠른 파일 삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import time
import picamera
from datetime import datetime
import os
import shutil
 
def capture_video(output_file, duration):
    with picamera.PiCamera() as camera:
        # 카메라 설정 (해상도, 프레임 속도 등)
        camera.resolution = (1280720)  # 적절한 해상도로 변경 가능
        camera.framerate = 30
 
        # 비디오 녹화 시작
        camera.start_recording(output_file)
        
        # 지정된 시간만큼 녹화
        camera.wait_recording(duration)
        
        # 비디오 녹화 종료
        camera.stop_recording()
 
def get_disk_usage():
    # 현재 디렉토리의 디스크 사용량 확인 (바이트 단위)
    return shutil.disk_usage("/").free
 
def delete_oldest_file(directory):
    # 디렉토리 내에서 생성일 기준으로 가장 오래된 파일 삭제
    files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
    if files:
        oldest_file = min(files, key=lambda f: os.path.getctime(os.path.join(directory, f)))
        os.remove(os.path.join(directory, oldest_file))
        print(f"{oldest_file} 파일이 삭제되었습니다.")
 
if __name__ == "__main__":
    video_directory = "/path/to/video_directory"  # 비디오 파일 저장 디렉토리 경로
    duration = 600  # 녹화 시간 (초 단위)
    min_disk_space = 500 * 1024 * 1024  # 최소 디스크 용량 (500MB)
 
    while True:
        try:
            # 디스크 용량 확인
            disk_space = get_disk_usage()
 
            # 디스크 용량이 500MB 미만인 경우 가장 오래된 파일 삭제
            if disk_space < min_disk_space:
                delete_oldest_file(video_directory)
 
            # 현재 날짜 및 시간 가져오기
            current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
            
            # 비디오 파일명 생성 (날짜_시간_video.h264 형식)
            output_file = os.path.join(video_directory, f"{current_time}_video.h264")
 
            # 비디오 녹화
            capture_video(output_file, duration)
            
            # 10분 대기
            time.sleep(duration)
        except KeyboardInterrupt:
            print("프로그램을 종료합니다.")
            break
cs

 

4. 결과

    ˙ 프로그램을 실행하여 영상 녹화 여부를 확인한다.

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ 라즈베리파이 (라즈비안)

 

2. 목적

    ˙ 라즈비안에서 VNC 접속을 위한 설정을 알아보자.

    ˙ 라즈베리파이 보드 부팅 후 VNC를 이용하여 접속하는 방법을 알아보자.

 

3. 적용

    ① 라즈베리파이 최초 부팅 후 VNC 접속 허용을 설정한다.

        - $ sudo raspi-config

3 Interface Options 선택

 

I2 VNC 선택

 

예 선택

 

    ② VNC 프로그램을 설치한다. 여기서는 "RealVNC"라는 프로그램을 사용하였다.

        - URL : https://www.realvnc.com/en/connect/download/viewer/windows/

 

Download VNC Viewer for Windows | VNC® Connect

Control VNC® enabled computers with VNC® Viewer.

www.realvnc.com

 

    ③ 신규 Connection을 생성한다.

 

    ④ 접속 정보를 입력한다.

        - VNC Server : 동일 네트워크에 존재하는 라즈베리파이 IP

        - Name : Connection 이름 (계정 이름 아님)

 

    ⑤ 신규 Connection이 생성되었다.

 

    ⑥ 생성된 Connection을 더블클릭하여 접속한다.

        - Username : 라즈베리파이 접속 계정

        - Password : 라즈베리파이 접속 비밀번호

 

4. 결과

    ˙ GUI 환경으로 라즈베리파이 보드에 접속한다.

 

반응형

+ Recent posts