프로젝트/사이드 프로젝트

🐥 카카오테크캠퍼스 - 2단계 1주차 강의 OT : BE 파트 개발 프로세스 BE는 FE를 만들지 않을 것이므로, 제시된 jar 파일을 구동하여 FE를 대신한다 기능 개발 확인은 PostMan 또는, 직접 Docker로 빌드하면서 개인 별로 기능을 구현할 것이다 전체적으로, 로컬에서 개발하고, 테스트를 한 후 Github 브랜치에 계속 개발을 진행한다. 크램폴린(카카오 클라우드)는 Github에서 코드를 업데이트한다 기억하자! BE는 FE가 개발하기 편하도록, 데이터를 넘겨줘야 한다 화면에 필요한 DTO만 던져준다던가 DTO가 바뀌면 꼭 프론트에게 말해준다던가 PK는 보이지 않아도 꼭 만들어줘야 한다 Entity 파악 : UI를 보고 어떤 데이터가 필요한지 보는 시야 필요 예를 들어 아래와 같이 회원 가..
오늘은 프로젝트를 진행하며 생긴 갈등을 기록하고자 합니다. 항상 팀 프로젝트 과제는 악명이 높습니다. 누군가는 의미 없다고도 하죠 그럼에도 팀 프로젝트 사라지지 않는 이유는 우리 사회가 협력을 통해 성장해왔기 때문이라 생각합니다 즉 팀 프로젝트는 일종의 사회 나가는 연습을 하는 것이죠 또한, 팀 프로젝트가 중요한 이유는 기술적인 역량보다 사람과 소통하는 능력을 키우는게 더 어렵기 때문입니다 1차 난관 : 왜 하지 않는걸까…? Feat 내 욕심 캡스톤을 시작하며 전 욕심이 있었습니다. 한 마디로 정의하면 이상적인 개발자 협업 방식을 꿈꿨습니다. 예를 들면 잘 지켜지는 커밋 규칙, 어느 정도 변동을 반영하며 일정 대로 진행 되는 개발, 최소한의 서류 작업 등이 있었습니다 하지만, 역시나 이상과 현실은 달랐습..
BlindTok (4) - Entity와 Service를 너머 API까지 Entity와 Service를 생성하며, 특이 사항들을 기록합니다. 파일을 어떻게 저장했는지, 친구 관계들을 어떻게 인덱스 하나로 처리했는지 등 제가 겪은 어려움을 기록합니다 File 기능 구현의 어려움 저희 서비스에서는 user의 이미지와 음악 파일들을 저장해야하기에 기존의 music 테이블을 지우고, file 테이블을 생성하도록 하였습니다. File Id에 UUID부여 uudi를 사용한 이유는 uuid를 사용하면 전역적으로 유니크한 아이디를 가지기 때문에 테이블에서 중복 문제를 해결 할 수 있습니다. 또한 pk를 자동으로 증가시키는 것보다 추측이나 예측이 어렵기 때문에 보안이 강화됩니다 import {v4 as uuidv4} f..
BlindTok (3) - DB 연결 및 테이블 설계 서버 인스턴스를 생성했으므로 다음은 테이블을 설계하고 DB를 연결할 차례이다. 프로젝트의 빠른 진행을 위해 테이블과 기능 명세는 구체적으로 잡고 가야 하기 때문에 오늘은 테이블 설계를 하는 시간을 가졌다. 개발도 해야 하는데, 시험 기간이라 할게 산더미다 PostgreSQL DB 연결 import config from "@config/ormconfig"; import {DataSource, EntityManager} from "typeorm"; const {host, port, username, password, database, synchronize, logging, entities, migrations} = config; let _datasourc..
Intro. CI/CD는 필수 - Stress 탈출하자! 협업을 하다보면, github 프로젝트가 실행 되지 않는 코드를 합침으로써 터지는 경우가 발생한다. 사실 그 이유는 다양한데 각자의 환경 변수 설정이라던가, 다른 OS에서 개발한다던가 등이 있다. 하지만, 실행 되지 않는 코드가 이렇게 섞이기 시작하면, 불필요한 에너지 낭비가 당연히 존재하는 법 이 문제를 깃허브 액션을 통해 해결하고자 한다 배포까지는 고려하지 않고, 일단 CI 구성해서 사용하다가 확장해 나갈 것이다 Github Action 구성 - 정말 CI 인가? CI/CD는 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)의 약자로, 개발자들이 지속적으로 코드를 통합하고 배포하는 과..
BlindTok (1) - 프로젝트 init 원활한 협업을 하기 위해서는 프로젝트 초반에 코드 린트나 커밋 규칙 등을 잘 정의하고 가는 것이 중요합니다 졸업 프로젝트인 BlindTok를 만들기에 앞서 프로젝트 초기 설정을 어떻게 하였는지 공유하기 위해 기록합니다 1. Code Format 및 Git ignore 파일 설정 Prettier : 코드 포맷터 Prettier는 코드 포맷터로, 프로젝트에서 사용하는 코딩 스타일을 일관되게 유지하는 데 도움을 줍니다. .prettierrc 파일을 사용하여 프로젝트별 Prettier 설정을 지정할 수 있습니다. 예를 들어, 들여쓰기 크기, 따옴표 스타일, 줄바꿈 방식 등을 설정할 수 있습니다. { "arrowParens": "avoid", "bracketSpacin..
학교 공지 사항 자동화를 해보자 - 5 Intro. Github Action… 완전 혜자다 Github Action은 깃허브에서 제공하는 CI/CD 등의 자동화를 위해 지원하는 기능이다. 나의 경우, Crontab 용도로 사용 할 것이다. 기존에 구글 클라우드 등에서 스크립트를 계속 돌며, 시간을 체크 했는데 자원 낭비라 생각이 들어, Github Action Crontab을 생각했다 지금 만들고 있는 간단한 스크립트 위주의 봇 경우 깃허브 액션으로 돌리면 클라우드 비용도 안들고 괜찮은 듯하다 진행 방법 1. 레퍼지터리에 .github/workflows 생성 .github/workflows 디렉터리를 생성하고 auto.yml로 파일을 생성한다. 2. auto.yml 내용 채우기 name: Auto Pos..
학교 공지 사항 자동화를 해보자 - 4 Intro. 이제 메일로 전송해보자! 이메일에 담을 내용은 이제 모두 준비가 되었다! smtp와 email 라이브러리를 사용하면 파이썬으로 구글 이메일을 전송 할 수 있다. 주의 해야 할 점은 구글 기준으로 앱 비밀번호를 생성해서 넣어야 한다. 일반 비밀번호를 입력하면 에러가 발생한다 또 신경 썼던게 있다면, 환경 변수로 내 개인 정보를 감춘 것이다. 나중에 github action을 쓸 때도 마찬가지고, 개인 정보를 추상화하는 것은 기본이기에 os.environ을 사용해서 개인 정보를 숨겼다 아래 코드를 보면 알 수 있지만, 보내는 사람,받는 사람, 제목 등을 입력 할 수 있다. 앞서 말한 앱 비밀번호만 유의하자 예외 처리는 메일 발송 과정에서 전송 실패 등의 이..
학교 공지 사항 자동화를 해보자 - 3 Intro. 사업단 공지 데이터 추출을 해보자 앞선 학과 공지와 같이 리스트 형태로 공지를 뿌리고 있음을 확인 할 수 있다. 보다보니 게시판 형태라 이런 패턴으로 데이터를 뿌리는 것은 당연하다 역시나 개발자 도구를 켜서 CSS 셀렉터를 추출해서, 리스트의 위치를 특정해야 한다 html 코드를 보니 역시나 tr로 뿌리고 있다. 대신 td 태그 내의 내용물이 조금씩 다르다 학과 공지 사항에서 데이터를 추출한 것과 비슷한 맥락으로 코드를 짜면 될거 같다 코드 import requests import re from bs4 import BeautifulSoup from datetime import datetime url = 'https://www.sojoong.kr/www/..
학교 공지 사항 자동화를 해보자 - 2 Intro. 학과 공지 사항에서 데이터 추출 해보자 위와 같이 리스트 형태로 공지를 뿌리고 있음을 확인했다. 먼저 개발자 도구를 켜서 CSS 셀렉터를 추출해서, 리스트의 위치를 특정해야 한다 tr 태그 내에 notice 클래스 안에 공지들이 들어 있음을 볼 수 있다 오른쪽 마우스 클릭을 해서 css 셀렉터를 추출한다 코드 import requests import re from bs4 import BeautifulSoup from datetime import datetime # 웹페이지에서 데이터를 가져올 URL url = 'https://sw.jnu.ac.kr/sw/8250/subview.do' today = str(datetime.now().date()) toda..
berom
'프로젝트/사이드 프로젝트' 카테고리의 글 목록