본문 바로가기

Archive/우당탕탕 개발 일지9

[개발일지] 프로젝트 X 중간평가 및 후기 개요4학년 과목으로 수강 중인 프로젝트 X 중간평가 후기다.플젝X는 학생들이 모여 원하는 프로젝트를 만드는 것이고, 이에 대해 학교의 빵빵한 지원을 받을 수 있다.  우리학교에 koala라는 알고리즘 학회가 있는데, 운영진들은 매번 카톡/노션을 활용해서 스터디원들을 관리한다.이를 웹사이트로 만들어보자는 운영진이 있었고, 운좋게 참여하게 되었다~!   크게 내가 지금까지 한 건 다음과 같다.ERD 개념적 스키마 설계 참여보안성, 가용성을 고려한 AWS 세팅Jenkins + Docker 조합으로 CI/CD POC 진행EB + Github actions CI/CD개발 서버 운영 - shell script 정의도메인 구매 및 세팅작업 문서화팀프로젝트에 대한 운영1. ERD 개념적 스키마 설계 참여처음 프로젝트 .. 2024. 5. 1.
[개발일지] API의 멱등성을 고려하여 개발하기 개요내가 개발한 기능을 쓰는 사람이 Admin 관리자였는데, 개발 과정/구현 내용을 모르다보니 이걸 쓰다가 문제가 생겼다. 이 문제의 핵심은 API의 멱등성을 고려하지 않아서 발생한 것또한, 사용자 관점에서 테스트를 진행해야 한다는 깨달음을 얻었다. API 멱등성이라는 것에 대해 전혀 몰랐고,, 코드 리뷰를 통해 알게 되었다. 따라서 이 포스팅에서는 API의 멱등성에 대해 다루어 앞으로 의식하고 적용할 수 있도록 해볼 것이다! 멱등성(Idempotency)생소한 용어 먼저 살펴보자. 멱등성은 보통 수학에서 자주 사용하는 용어로, 여러 번 연산을 적용하더라도 결과는 달라지지 않는 성질을 말한다. 한자어도 덮을 멱, 무리 등인데 무리(swarm)의 효과를 덮어버린다! 이런 뜻을 담고있다.  HTTP의 멱등성.. 2024. 4. 26.
[개발일지] 메일 전송 시 CSS 적용(inline 자동 변환기) 개요 JAVA로 특정 사용자에게 메일을 전송하는 프로그램을 개발하는데, 이때 메일은 html 파일로 템플릿을 만들어서 보낸다. 템플릿에 CSS를 적용하면 CSS를 style 태그로 담은 페이지는 정상적으로 잘 작동하지만, 메일 발송을 할 때에는 정상적으로 작동하지 않는다. 이유와 해결방법에 대해 작성하는 포스팅이다. 문제상황과 이유, 해결 방법 메일 전송 시 CSS가 깨지는 이유 Gmail, Naver 등의 이메일 서비스는 각 사의 보안상 메일 내용을 일부 변조를 하게된다. 이때 script, style등 head태그 내부에 작성하는 내용들이 메일 전송 시에 배제된다고 한다. HTML에 CSS를 적용하는 방법은 3가지가 있다. 외부 .css 파일을 적용 style 태그를 사용하는 임베디드 방식 각각의 H.. 2023. 12. 21.
[개발일지] 개발자가 가져야하는 습관, git pull 이슈 한 Task가 끝나고 새로운 Task를 진행하려고 새로운 repo에 들어가서 작업시도했다. 그런데 아래 사진과 같이 어떤 파일이 없다는 error 아무리 해당 레포의 브랜치를 pull해도 해결이 안되었다. 보안상 사진을 업로드할 순 없어서 대충 글로쓰면 사실 bitbucket을 확인했을 때 원격에서도 확인 안돼서 결국 이사님께 HELP 요청을 드렸던 건데, 이건 이유 모르겠음… 해결 이유는 다음과 같다. 작성된 코드를 보면 repository의 내용들이 서로 연관되어있기에, 위에서 없다고 알려주는 해당 레포(packge)에 가서 pull을 받아와야 한다. (너무 당연한데 작게 사이드 프로젝트만 했었다면 충분히 모를 수 있는 거같음..) 깨달음 사실! 이정도면 포스팅까지 하지않겠는데 작업할 때 항상 .. 2023. 9. 20.
[개발일지] git 영역(Staging)과 소스관리 | 브랜치 전략, PR과 Merge | 협업 시 git 잘 쓰는 방법 개요 지금까지 프로젝트를 하면서 깃허브를 단순 코드 공유기로만 사용하였는데, 회사에서 github를 통해 협업을 진행하며 깃허브의 다양한 기능과 활용법, 장점에 대해 많이 배웠다. 이러한 내용들을 정리하여, 꾸준히 복기하려 한다. git 소스 관리 소스 상태의 확인은 git status 명령어를 통해 확인할 수 있다. 관리 대상 상태 untracked: 파일 변경을 감지하지 않음.(아무런 변화 없는 상태) tracked: 파일 변경 감지함. modified: 파일이 변경된 상태지만 staged는 안되었으므로 Working Dir에서만 변한 상태. staged: 커밋할 대상 commited: Staging Area에 안전하게 저장됨. 보통 github 원격 저장소에 push를 할 때, 다음과 같은 과정을 .. 2023. 9. 16.
[개발 일지] 프로젝트 성능 최적화 | 원하는 폴더에 python package 함께 설치하고 AWS Lambda에 zip 파일 올리기 1편 냉시피 프로젝트의 모든 API 개발과 배포가 완료되었다. 이후 개발 마무리 회의에서 내가 구현한 Recipe API의 성능 최적화 작업을 시작하기로 했다. 성능 최적화를 고민한 이유 성능 최적화 전 Recipe API 로직은 다음과 같다. GET 요청이 들어오면 Crawling 함수를 실행하여 "만개의 레시피" 사이트 크롤링 database Recipe Entity의 recipe_name column을 확인하여 중복되지 않은 경우 크롤링 정보 db에 저장 사용자가 저장한 재료(Ingredient Entity)와 저장된 Recipe 목록(Recipe Entity)을 비교하여, 사용자가 저장한 재료를 기반으로 레시피 목록을 출력 위와 같이 postman, nengcipe 서버 모두에서 api가 잘 작동하는 .. 2023. 6. 13.
[개발 일지] 도커 컨테이너에서 웹 개발하기 (1) 오픈소스 강의 4주차부터 도커를 배우기 시작했다. 이전 4, 5 주차까지는 도커 사용법과 개념에 대해 배웠다면 중간고사 이후 9, 10주차는 응용을 하는 것을 배웠다. 이 응용 내용이 [도커 컨테이너에서 web 개발하기]이다. 우선 컨테이너 사용을 위해 도커 컨테이너를 생성하고, 이를 호스트와 마운팅해준다. 도커 컨테이너의 저장소 도커 컨테이너의 저장소는 외부와 단절되어 있으며 컨테이너가 삭제될 때 같이 삭제된다. 이와 같은 특성 때문에 컨테이너가 삭제되어도 데이터를 보관할 수 있는 영구 저장소가 필요하다. 또한 외부와 단절되어 있기에 이 컨테이너가 외부와 데이터를 주고 받기 위한 저장소도 필요하다. 따라서 도커는 다음과 같은 2가지 영구 저장소 사용 방식을 제공한다. 도커 볼륨 바인드 마운트 호스트와 .. 2023. 5. 15.
[개발 일지] 개발을 잘한다는 건 어쩌면.. 소프트웨어 공학 유심히 좀 들을걸 | 산학 프로젝트 중간 발표 후기 산학 프로젝트를 하고서 소프트웨어 공학의 중요성을 많이 느낀다. 산학 프로젝트란? KAU sw학과인이 꼭 거쳐야 하는 졸업 필수 과정 우리 학교 소프트웨어학과는 3학년 때 산학 프로젝트 - 4학년 캡스톤(종합설계)로 총 2번의 큰 프로젝트를 수행해야 졸업을 할 수 있다. 나는 현재 3학년이고 1학기에 산학 프로젝트 수강을 선택했다. 내가 개발을 할 수 있을까..? 이런 생각이 컸어서 많이 고민을 했었는데 대부분 그냥 해라! 라고 했었고 결정적으로 이정도 자세면 나도 할 수 있겠는데라는 생각으로 그냥 도전했다. 확실히 배운 건 정말 많다. 배운 게 많다는 건 그만큼 충돌과 난관이 많았다는 뜻이기도 하다........ 결론 지금까지 제대로된 프로젝트를 해본 적이 없어서 몰랐는데 어떤 한 프로젝트를 성공적으로.. 2023. 5. 13.
[개발일지] API 명세서 작성 가이드 라인 | 작성 예시 프로젝트에서 API 명세서와 ERD 설계를 맡았다. API 명세서를 작성해본 적이 없어서 최대한 공식적인 자료를 바탕으로 찾아보다가 사막의 오아시스같은 글을 발견해서 정리하고 두고두고 보려고 한다. 이번 프로젝트에서 활용을 당연히 하겠지만 앞으로도 정말 큰 도움이 될 것같다..😍 API는 '서버와 클라이언트가 데이터를 주고 받을 수 있도록 도움을 주는 매개체'이다. API 명세서는 서버와 클라이언트간 특정 기술을 사용하기 위한 약속이다. API 문서화에 들어가야할 내용 1) 개요 기술 문서의 서론은 독자들에게 본문의 요약, 작성 배경, 관련 개념을 설명해준다. 즉, 독자들을 위한 '가이드'이다. API 문서에도 서론의 역할을 하는 개요(Overview)가 필요하다. API 소개 단순히 API에 대한 기능.. 2023. 5. 5.