문제해결
-
Amazon Lightsail에 배포문제해결 2023. 12. 4. 21:49
서론모두의 토론 백엔드를 아마존 라이트세일에 배포하는 과정을 정리했다.배포 과정모두의 토론 백엔드는 도커 위에 개발 환경을 구축했다. php-apache 이미지를 기반으로 라라벨 웹 서버를 구동시키고, redis 이미지를 활용하여 job을 처리하고, mysql 이미지를 활용하여 데이터베이스를 사용했다. 세 컨테이너를 관리하기 위하여 도커 컴포즈를 활용했다. 따라서 배포 역시 도커를 기반으로 하면 좋을 것이라고 생각하고 진행했다.0. 배포 방법 고민어떻게 배포를 할까 생각했다. AWS, Azure 사이에서 고민했다. Azure를 사용하면 새로운 경험을 할 수 있지만, 결제 정보 관리 포인트가 늘어나므로 AWS로 결정했다. AWS를 만지작 거리다 보니 Lightsail이란 게 눈에 띄었다. AWS의 여러 서..
-
Laravel, 리퀘스트에서 불필요한 필드가 있으면 자동으로 반려하기문제해결 2023. 9. 27. 18:13
서버의 요청 처리 과정 서버가 받은 요청을 처리하는 과정은 다음과 같다. 검증 -> 추출 -> 정제 -> 로직 -> 응답 집중해서 보고 싶은 부분은 검증과 추출의 일부분이다. 검증은 서버에 들어오는 요청에 API 스펙으로 정한 필드의 유무와 필드가 있다면 타입 등의 제약 사항을 제대로 지키는지 확인하는 데 사용된다. 추출은 검증 후에 로직에 맞게 필요한 데이터를 가져오는 과정이다. 라라벨은 검증에 필요한 도구를 제공한다. 밸리데이터, 폼리퀘스트 등이 있을 것이다. 그러나, 일반적인 상황에서 벗어난 것들은 직접 만들어줘야 한다. 이 글에서 다룰 내용은 요청 안에 스펙에 없는 필드가 왔을 때 자동으로 반려하는 것이다. 검증할 요소들 요청에서 검증할 요소들은 다음과 같다. 반드시 존재해야 하는 필드. 라라벨에..
-
라라벨 프로젝트 진행중에 문제해결문제해결 2023. 7. 13. 23:11
문제해결 라라벨 프로젝트를 진행하며 경험한 문제와 그 해결방법을 기록 1. 개발 환경 구축 라라벨은 라라벨 Sail, homestead 등의 개발 환경 구축을 위한 지원이 있음. Sail은 설치만 해보고 명령어만 써봐도 편한 것을 알 수 있었음. 그러나, 이것을 이용하지 않고 개발 환경을 직접 구축하기로 했음. 라라벨에 익숙해질 수 있을 것이고, 서버나 디비 세팅을 하면서 웹 개발 자체에 익숙해지는 효과를 기대했음. 이전에 php-apache 도커 이미지를 기반으로 세팅해 본 경험이 있기에 할만하다고 기대했음. 먼저 php-apache, mysql 기본 이미지를 기반으로 도커 파일을 생성하여 라라벨 코드를 도큐먼트 루트에 마운팅 하여 실행했음. 에러가 나서 화면이 안 나오는 것이라 생각할 정도로 매우 느..
-
TOC 만들기문제해결 2023. 2. 9. 22:58
TOC 만들기 TOC는 Table of contents로 목차를 가리킨다. 티스토리 블로그에서는 자체 목차는 없지만, Tocbot같은 라이브러리가 존재한다. tocbot을 그대로 적용하려고 했다가 직접 만들어보는 것도 해볼 만한 것 같아서 시작하였다. 목적 현재 블로그에 TOC를 적용할 수 있도록, TOC를 처음부터 만든다. 목표 블로그에 TOC를 라이브러리 없이 제작한다. 대상은 사용 중인 티스토리 블로그와 현재 선택한 블로그 스킨이다. TOC를 선택하면 해당 문단으로 이동하는 등의 기본적인 기능을 추가한다. 과정 티스토리 블로그는 관리자 메뉴에서 스킨 편집을 할 수 있다. 편집을 누르면, HTML과 CSS를 수정할 수 있고, 필요한 파일을 업로드할 수 있도록 되어 있다. 이에 HTML 탭 하단에 자바..
-
mipsel32 개발 환경 구축문제해결 2021. 12. 9. 02:03
툴체인 구성 개발 컴퓨터의 CPU와 실행 환경의 CPU가 다를 때, 항상 문제 되는 부분이 빌드 환경의 구축이다. 크로스 컴파일을 위해선 컴파일러, 사용할 C런타임 라이브러리 등 신경 써야 할 것이 너무 많기 때문이다. x86 계열과 ARM 계열은 크로스 컴파일이 잦다 보니 쉽게 세팅할 수 있지만, mips는 그렇지 않았다. 그래도 몇 번 반복하다 보니 숙련도가 생겨서 프로세스를 적립할 수 있었다. mipsel32bit를 기준으로 다음과 같다. 툴체인을 구축하기 위해서 buildroot를 사용한다. 단, buildroot에서만 가능한 것은 아니다. Yocto, 미리 준비된 도커 이미지를 사용할 수 있을 것이다. 최대한 오래 지원해주는 Latest long term support release 버전으로 다..
-
VMWare기반 개발 환경을 호스트 OS로 옮겼다.문제해결 2021. 10. 21. 18:54
이전 글 도커 도입의 필요성 도커를 도입했다 도커를 윈도우(호스트 OS)에서 실행 이전에 도커를 도입한 이후로 계속해서 잘 쓰고 있었다. 호스트 OS는 윈도우로 하고, VMWare에 우분투를 설치하고 도커를 사용하고 식이었다. 그러나, VMWare에서 하는 개발은 아무래도 불편한 점이 많았다. 그래서, 생각해보니 윈도우에 WSL2이 있고, 이걸 이용하면 윈도우에서 리눅스를 이미지로 사용하는 도커를 사용할 수 있지 않을까 싶었다. 그래서 시도해봤다. 구체적인 단계를 보기 전에... 윈도우(호스트 OS)에서 코드를 수정하고 수정된 코드를 빌드할 때만 컨테이너를 열고, 프로젝트를 마운트 해서 빌드할 수도 있다. 이렇게 하면, 윈도우용 도커만 설치하고 빌드 스크립트만 조금 수정해주면 된다. 그러나, 개발 단계에..
-
ESP32 write cycles의 중요성문제해결 2021. 10. 6. 02:10
EPS32의 쓰기 횟수 ESP32와 같은 IOT 디바이스들을 사용할 때 주의할 것이 있다. 그것은 바로 쓰기 횟수이다. NOR, NAND 플래시를 사용하는 제품은 메모리에 데이터를 쓰면 메모리가 닳게 된다. 때문에 저장매체마다 그 쓰기 횟수의 상한이 정해져 있다. 생산된 각 제품마다 최고치는 다를 수 있으므로, 제조사는 최소한 얼마만큼의 쓰기 횟수를 보장하는 식으로 스펙을 보여준다. 위 스펙은 GigaDevice의 GD25Q32C 플래시의 일부이다. 최소한 100k의 write cycle을 보장해준다는 것을 알 수 있다. 프로그램을 쓸 때도 지울 때도 변화를 불러오기 때문에 Program/Erase cycles이라고 되어있다. ESP32가 쓰고 있는 플래시 메모리 모델을 GD25Q32C라고 추측하고 있다..
-
도커를 도입했다.문제해결 2021. 8. 15. 12:40
이전 글: 도커 도입의 필요성 도커 도입의 필요성 타겟 CPU의 종류가 계속해서 늘어나고 있다. mips(openwrt용 공유기), arm(라즈베리파이), ESP32 같은 임베디드와 윈도우 프로그램까지... 처음 접하거나 익숙하지 않은 환경에서는 헤딩을 할 수밖에 없 crmerry.tistory.com 도커를 도입했다. 도커를 도입하는 목적은 개발 환경을 꾸미는데 들어가는 시간을 줄이고, 서로 다른 개발환경에서 발생하는 문제를 없애는데 목적이 있다. 개발자 각각이 개발 환경을 꾸미는 게 아니라, 한 명의 개발자가 개발 환경(툴체인 등)을 갖추고 그것을 도커 이미지로 만들어서 공유하면 시간을 아낄 수 있다. 첫 번째로, 라즈베리파이를 위한 크로스 컴파일용 세팅과 더불어서 wiringPi와 boost를 쓸 ..