분류 전체보기 176

Spring Security를 이용해서 custom login page 만들기

spring security를 이용해서 로그인을 만들면, 디폴트 로그인 페이지가 나옵니다. 다음과 같은.. 뭐 최악이라고 할 순 없지만, 이대로 쓰기는 좀 그렇기 때문에, 따로 페이지를 만들려고 합니다. 참고로 이 로그인을 하기 위해서는, username은 user, password는 임시 비밀번호가 콘솔 창에 나옵니다. 그럼 이 화면을 우리가 원하는 화면으로 어떻게 바꿀수 있을까요? WebSecurityConfig.java 파일을 만들고 override를 하면 됩니다. package com.myBoard.demo; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframewor..

Gstreamer 기본 구성 요소들

Element - element는 gstreamer에서 기본적인 구성요소 입니다. 데이터를 보내거나, 받거나, decode/encode하는 등 한 가지의 기능을 하는 요소를 말합니다. Pads - 데이터의 input과 output을 담당하는 구성요소를 말합니다. 구체적으로, 데이터를 보내는 부분을 source pad, 받는 부분을 sink pad라고 합니다. 또, src와 sink를 연결하는 부분을 link라고 합니다. source와 sink 에서 서로 보내는 data type을 정해줘서 그 부분이 맞는 경우에 link가 성공적으로 연결됬다고 할 수 있겠습니다. Data는 보통 Buffer의 형태로 옮겨집니다. (GstBuffer) Bin - element들의 합으로 이루어진 container를 bin이..

Gstreamer에 대해서

참고: gstreamer공홈 : (영어) gstreamer.freedesktop.org/documentation/application-development/introduction/gstreamer.html?gi-language=python Gstreamer란? ffmpeg와 같이 영상을 encoding/decoding하고, streaming 하고, 등등 여러가지를 할 수 있게 해 주는 framework 입니다. 멀티미디아 프레임워크로서 Gstreamer는 미디어 플레이어를 만들 때 많이 쓰입니다. 하지만, 단지 미디어 플레이어를 만드는 것 이외에도, 유저가 플러그인들을 붙여서 애플리케이션을 만들 수 있게 해 줍니다. ffmpeg와 다른 점은, ffmpeg는 여러 라이브러리들을 포함하는 큰 프로그램으로, ..

Video Encode/Decode란?

ref : (영어) www.haivision.com/blog/all/the-beginners-guide-to-video-encoding-decoding-and-transcoding/ 비디오는 아날로그 파일이기 때문에, 파일로 변환하기 위해서는 디지털 신호로 바꿔줘야 합니다. 이러한 일련의 과정을 인코딩(encoding)이라고 하는데, 비디오 인코딩은 live와 file 두 가지가 있습니다. 인코딩을 하지 않고 보내면 용량이 굉장히 크기 때문에, 또 파일로 저장할 경우에도 용량을 줄이기 위해 인코딩을 합니다. 인코딩을 하는 포맷으로는 H264나 H265 등의 파일형식을 사용하고, 인코딩과 디코딩을 사용하는 알고리즘을 Codec이라고 합니다. codec을 사용하면 안하는 것보다 1000배는 더 용량을 줄일 ..

Video Processing 2021.01.07

h2 데이터베이스 설정과 초기 데이터 구축 (User table)

Spring Boot에서 인메모리 데이터베이스인 h2를 테스트로 사용해 보았습니다. 1. Spring Boot에서 pom.xml에서 dependency를 추가합니다. 그 후, Maven을 사용해 Build 합니다. com.h2database h2 2. application.properties에서 h2 설정을 세팅합니다. spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:jinmo 3. model package 에서 User class를 세팅해줍니다. package com.myBoard.demo.model; import javax.persistence.*; @Entity @Table(na..

rtsp feed 에서 이미지 저장하기

stack overflow 링크 : stackoverflow.com/questions/56439798/how-to-check-if-rtsp-url-is-up-down-using-python-script ffmpeg를 이용하여 rtsp feed의 이미지를 저장할 수 있습니다. /usr/bin/ffmpeg -y -frames 1 snapshot.png -rtsp_transport tcp -i rtsp://test_url_here 또한 Gstreamer를 이용해서 여러 장의 이미지를 저장할 수도 있습니다. stack overflow 링크 : stackoverflow.com/questions/59025321/capture-jpeg-images-from-rtsp-gstreamer gst-launch-1.0 -v ..

Video Processing 2021.01.04

Tx2 에서 안쓰는 CPU코어 사용하기 (JTOP, nvpmodel 사용)

출처 : forums.developer.nvidia.com/t/cannot-enable-denver-cores-for-tx2-jetpack-4-4-dp/124708/38 Tx2를 사용하다 보면 jtop을 사용할 수 있는데, jtop이란, pc 의 상태를 확인하게 해 주는 것이고, 이 command로 설치가 가능합니다. $ sudo -H pip install -U jetson-stats 6개의 cpu중에 2개를 사용하지 않는 것을 확인할 수 있습니다. Jetson에서는 CPU의 전력제한을 풀어주는 모드가 있는데, 이를 조절하는 옵션을 nvpmodel 이라 하고, 다음과 같은 커맨드로 바꿀 수 있습니다. $ sudo nvpmodel -m 0 # 0번 모드로 설정 $ sudo nvpmodel -q –verbo..

GRPC (1) - grpc란 무엇일까요?

출처 : grpc.io/docs/what-is-grpc/introduction/ (영어, 어려움) 출처 : blog.naver.com/n_cloudplatform/221751268831 (한국어, grpc가 나오게 된 과정) 1. HTTP/2 GRPC란 google 에서 만든 google remote procedure call의 준말입니다. 회사에서 사용하기로 해서 공부를 해 보기로 했습니다. GRPC가 나오기 전에, Server - Client model, Socket, RPC, REST 등 여러 프로토콜이 있었는데, 이 모든 프로토콜의 문제는 HTTP/1.1 을 사용한다는 점이었습니다. http/1.1 과 http/2.0의 차이는 상당히 큰데, 그림으로 보시는 것 과 같이 http/2 는 비동기 통신..

Network/protocols 2020.12.29

SFTP 사용법과 사용하는 이유

보통 linux 서버에 접속할 때 ssh를 사용합니다. 파일을 전송할 때는 scp를 사용합니다만, ssh를 외우고 있는 사람도 scp 커맨드를 다 외우고 있지는 않은 경우가 많습니다. 특히 scp는 연결되어 있는 상태에서 하다 보니깐 모든 커맨드를 외워서 해야하기 때문에 바로바로 debugging을 하기가 힘든 경우가 많아서 여러 커맨드를 할 때 불편합니다. 그럴 때 SFTP를 사용하면 편합니다. 윈도우라면 PUTTY 를 사용하는 것도 좋은 방법일 수 있을 것입니다. www.digitalocean.com/community/tutorials/how-to-use-sftp-to-securely-transfer-files-with-a-remote-server (영어. 자세함) hongci.tistory.com/..

Linux/Ubuntu 2020.12.18

컨테이너 업데이트와 Docker Compose

출처 : subicura.com/2017/01/19/docker-guide-for-beginners-2.html Container Update 지금까지 도커를 왜 사용하는지, 도커가 왜 좋은지, 그리고 도커의 사용방법에 대해서 알아보았습니다. 하지만 도커가 이미지에서 컨테이너를 만드는 방법이라면, 이미지에서 컨테이너를 만들때마다 Fresh한 컨테이너가 계속 생성될 텐데, 그 데이터는 어떡하나요? 이를 방지하기 위해 쌓아놨던 데이터는 AWS S3같은 스토리지에 저장하거나, 아님 호스트의 데이터 볼륨을 이용하여 저장하여야 합니다. 이를 위해 run 명령어에 -v 를 추가해서, 추가해줍니다. # before docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWOR..

Cloud/Docker 2020.12.10