본문 바로가기

Dev

(46)
[Linux] Raspberry Pi 4B 와 카메라 모듈을 이용한 실시간 스트리밍 구축 이번 포스팅에서는 라즈베리파이 4B 모델과 카메라 모듈을 이용해 스트리밍 환경을 구축해보겠습니다. 본 포스팅에서 스트리밍 환경 구축에 사용할 소스와 카메라는 mjpg-streamer와 NOIR CAMERA MODULE V2라는 카메라 모듈이지만, 카메라는 라즈베리파이의 카메라 포트에 연결 가능한 카메라라면 어떤 것이든 상관없습니다. 1. 라즈베리파이 카메라 포트 활성화 카메라를 사용하기 위해서는 라즈베리파이에서 카메라 포트를 활성화시켜야 합니다. 본 포스팅에서는 GUI에서 설정하는 방법과 와 터미널 환경에서 설정하는 방법 모두 설명하겠습니다. 먼저 GUI 환경에서의 방법입니다. 작업 표시줄에서 기본 설정 > Raspberry Pi Configuration을 엽니다. root 권한이 필요합니다. 인터페이스..
[Algorithm] 선택, 삽입, 버블 정렬 본 포스팅에서는 선택, 삽입 버블 정렬에 대한 포스팅입니다. 구현 언어는 Python입니다. 이 세 가지 정렬 방식은 다른 알고리즘에 비해 성능이 떨어지지만 구현이 쉽고 코드 읽기가 쉽다는 장점이 있습니다. (선택과 버블 정렬은 데이터의 상태와 관계없이 O(n²)의 시간 복잡도를 가지고 삽입 정렬은 데이터의 상태에 따라 O(n)의 이상적인 시간 복잡도를 가지지만 최악의 경우 O(n²)의 시간 복잡도를 갖는다고 합니다. 우선 본 포스팅을 위해 위 3가지 정렬 기능을 하나의 스크립트로 미리 작성해두었습니다. import copy class Sorts: def __init__(self, array): self.array = array #결과 출력용 함수 def print_result(self, name, ar..
[Algorithm] 에라토스테네스의 체 저는 학창 시절 배웠던 교과목 중 제일 흥미를 가지지 못했던 과목이 수학입니다. 성적도 다른 과목에 비해 제일 낮았고 소위 말하는 수포자였죠. 그런 와중에 프로그래머를 업으로 시작하고 현재에 이르러서 수학적 지식의 필요성을 느껴 뒤늦게 다시 수학책을 펼쳐보고 있습니다. (중학교 수학 지식 조차 잊어버려 지금은 상당히 애를 먹고 있습니다.) 공부하던 중 에라토스테네스의 체라는 소수를 걸러내는 알고리즘을 알게 되었습니다. 소수란 1과 자기 자신 외에 다른 약수가 없는 수를 뜻합니다. 이를 걸러내는 방법으로는 에라토스테네스의 체가 흔히 쓰인다고 합니다. 에라토스테네스의 체는 여러 숫자들 중 체로 치듯 걸러서 소수만 남기는 방법으로 과정은 아래와 같습니다. 1. 찾을 범위까지의 수를 나열하고, 소수가 아닌 1을..
[Jenkins] Docker를 이용한 Jenkins - Spring Boot 프로젝트 배포 이번 시간에는 Docker 환경에서의 Jenkins 빌드 자동화 구축에 대해 알아보겠습니다. Docker는 OS, 프로그램 등과 같은 소프트웨어를 컨테이너라는 단위로 묶어 별도의 격리된 프로세스를 할당받아 실행시키는 가상 머신 비슷한 도구입니다. (비슷한 도구라 표현 한것은 가상 머신과는 기저 단위에서 그 개념이 다르기 때문입니다.) 이는 PC에서 게임을 실행시키기 위해서, 게임 CD를 구해 CD-ROM에 CD를 넣어 실행시키는 것과 유사한 사용 과정입니다. 호스트 PC가 Ubuntu20.04인 상태에서 Ubuntu 14.04를 사용해야하는 상황을 가정했을 때, Docker를 사용한다면 Docker Hub에서 Ubuntu 14.04 이미지를 받아와 (게임 CD를 구함) 컨테이너에 적재해 (CD-ROM에 ..
[Jenkins] Jenkins - Spring Boot 프로젝트 jar 배포 이번 포스팅에서는 빌드, 배포 자동화 툴인 Jenkins를 사용한 Spring Boot 프로젝트 jar 배포에 대해 다뤄보도록 하겠습니다. *본 포스팅은 깃, 스프링에 대한 기본적인 이해가 없는 상태에서 참고하기에는 부적절할 수 있음을 알려드립니다. 또한 본 포스팅에서는 Docker를 사용하지 않습니다. Spring Boot는 패키징을 jar와 war 방식 중 선택할 수 있습니다. war 파일은 tomcat 패키지가 필요하고 jar는 서버가 내장되어있는 패키지입니다. war 방식 배포를 한 번이라도 해보신 분들이라면 본 포스팅을 완주하시면 충분히 응용해 배포가 가능하리라 생각되므로 본 포스팅에서는 다루지 않도록 하겠습니다. 구축에 앞서, 본 예제에서 Jenkins를 사용하기 위한 구축 환경을 살펴보겠습니..
[PHP] Laravel - PayPal 결제 모듈 연동하기 (2) - 백엔드 처리 본 포스팅은 [PHP Laravel - PayPal 결제 모듈 연동하기 (1) - 프런트 엔드 처리에서 이어집니다. 만약 이전 포스팅을 보지 않았다면 먼저 보고 오시는 걸 권장드립니다. 2020/12/30 - [Dev/PHP] - [PHP] Laravel - PayPal 결제 모듈 연동하기 (1) - 프런트엔드 처리 [PHP] Laravel - PayPal 결제 모듈 연동하기 (1) - 프런트엔드 처리 이번 포스팅에서는 Laravel 프로젝트에서 PayPal 결제 모듈 연동하는 방법에 대해 알아보겠습니다. 연동 방법은 매우 다양하게 있지만, 여기서는 화면에서 javascript를 통해 결제 모델을 생성하고 서 dev-overload.tistory.com 이전 포스팅에서 프런트엔드에서 결제 모델 생성, 서..
[PHP] Laravel - PayPal 결제 모듈 연동하기 (1) - 프런트엔드 처리 이번 포스팅에서는 Laravel 프로젝트에서 PayPal 결제 모듈 연동하는 방법에 대해 알아보겠습니다. 연동 방법은 매우 다양하게 있지만, 여기서는 화면에서 javascript를 통해 결제 모델을 생성하고 서버 측에서 capture(결제 승인) 하는 방식을 이용해보도록 하겠습니다. 본 포스팅에서 다루는 방법은 결제 후 결제 정보를 자체 DB에 저장하기 위한 솔루션으로 고안했습니다. (javascript api만으로 결제 진행하는 것도 가능하고 javascript api 없이 서버 스크립트만으로 결제 진행하는 것도 가능합니다.) 1. PayPal 가입 www.paypal.com/kr/webapps/mpp/home 위 링크를 타고 PayPal에 계정을 생성합니다. 사이트 우측 상단에 가입하기 버튼을 누르면..
[PHP] Laravel - 사용자 정의 클래스 본 포스팅은 PHP7.4 / Laravel 8 버전을 기준으로 작성되었습니다. 이번 포스팅에서는 어렵지는 않지만 간과하기 쉬운 사용자 정의 클래스를 생성하는 방법에 대해 알아보겠습니다. Laravel에서 개발을 하다 보면 주로 app\Http\Controllers 경로에서 주로 작업을 많이 하게 됩니다. DB 접속도 Eloquent 덕분에 여기저기 파일을 뒤적이지 않아도 간단하게 처리할 수 있기 때문에 컨트롤러가 많은 처리를 담당하게 됩니다. 이때 컨트롤러가 처리하는 일이 많아질 수록 코드가 복잡해지고 중복되는 함수가 발생할 가능성이 높아집니다. 이러한 이유 때문에 별도의 사용자 정의 클래스가 필요합니다. 본 포스팅에서는 필자가 실무에서 활용하는 파일 관리 구조를 예시로 기술해보도록 하겠습니다. (반드시..