인기 글
최신 글
[MATE] 개발일지 #7 - 인증 시스템 고도화 및 CRUD 사이클 완성
mate2025.12.22 18:46[MATE] 개발일지 #7 - 인증 시스템 고도화 및 CRUD 사이클 완성

날짜: 2025. 12. 22.주제: Jotai Persistence, JWT Customization, TypeScript Refactoring, Django DRF환경 설정 및 아키텍처프로젝트 루트와 프론트엔드 디렉터리에 각각 존재하는 .gitignore 파일을 정리하고, TypeScript 설정을 최신 표준에 맞게 수정했다..gitignore 계층화 전략:루트의 설정 파일과 프론트엔드 전용 설정 파일을 병합하지 않고 유지했다. 모듈화 된 구조를 통해 추후 프론트엔드 디렉터리의 이동이나 분리 배포 시 설정 종속성을 최소화하기 위해서였다.루트에는 IDE 및 OS 설정, 프론트엔드에는 Next.js 빌드 및 의존성 관련 설정을 분리하여 관리 효율성을 증대했다.tsconfig.json 최신화:TypeScr..

[Mate] 개발일지 #6 - 아키텍처 고도화 및 디자인 시스템 기반 구축
mate2025.12.20 23:00[Mate] 개발일지 #6 - 아키텍처 고도화 및 디자인 시스템 기반 구축

날짜: 2025. 12. 20.주제: Next.js(App Router), DRF, Design System, TypeScript백엔드 안정화 및 환경 정비개발 서버 구동 시 발생하는 경고를 제거하고, 데이터베이스 스키마와 애플리케이션 설정을 동기화했다.PK 모델 경고 해결 및 마이그레이션 (Django Settings):장고 3.2 버전 이후 권장되는 BigAutoField를 명시하여 잠재적인 ID 정수 오버플로우를 방지하고, 시스템 체크 경고를 제거하여 터미널 로그의 가독성을 확보했다.DEFAULT_AUTO_FIELD 설정 및 마이그레이션 적용을 통해 데이터베이스와 모델 구조를 일치시켰다.프론트엔드 컴포넌트 설계 및 상태 관리페이지 중심의 코드에서 컴포넌트 기반 아키텍처로 전환하여 유지보수성과 재사용..

[Mate] 개발일지 #5 - 게시판 기능 고도화 및 마이페이지 API 구현
mate2025.12.19 15:13[Mate] 개발일지 #5 - 게시판 기능 고도화 및 마이페이지 API 구현

날짜: 2025. 12. 19.주제: DRF 필터링 전략 수립, 이미지 처리 로직, 마이페이지 쿼리셋 최적화게시판 기능 고도화 (Community App Enhancement)CRUD 구현 이후 확장성과 유지보수성을 고려한 기술 스택을 도입하여 기능을 고도화했다.검색 및 필터링 전략 (Search & Filter Strategy):기술적 의사결정: 기존의 request.query_params를 하나씩 받아 if문으로 분기 처리하는 방식(Imperative)은 필드 수가 늘어날수록 뷰 로직이 비대해지는 문제가 있었다. 이를 해결하기 위해 선언적(Declarative) 방식인 django-filter와 DRF의 FilterBackend를 도입했다.구현:DjangoFilterBackend: 카테고리(categ..

[Mate] 개발일지 #4 - 인증 시스템 완성 및 게시판 API 보안 구축
mate2025.12.17 21:50[Mate] 개발일지 #4 - 인증 시스템 완성 및 게시판 API 보안 구축

작성일: 2025. 12. 17.주제: 이메일 인증 트러블 슈팅, 게시판 CRUD 구현, 그리고 커스텀 권한(Permission) 관리학교 이메일 인증 구현과 403 에러 해결지난번에 이어 simplejwt를 활용한 로그인 시스템을 구축하고, 실제 학교 이메일로 인증 코드를 발송하는 테스트를 진행했다.Google SMTP를 연동하여 메일 발송을 시도했는데, 예상치 못한 403 Forbidden (CSRF verification failed) 에러를 마주했다.문제 상황: Postman으로 이메일 전송 요청 시 CSRF 토큰이 없다며 거부당함.원인 분석: 요청을 보낸 URL이 API 엔드포인트가 아닌, Django 관리자 페이지(admin/) 주소였다. 브라우저 기반의 관리자 페이지는 CSRF 토큰 검증이 ..

[Mate] 개발일지 #3 - JWT 로그인 도입과 커뮤니티 DB 설계
mate2025.12.16 20:59[Mate] 개발일지 #3 - JWT 로그인 도입과 커뮤니티 DB 설계

날짜: 2025. 12. 16.주제: JWT 인증 시스템 구축, 개발 환경 트러블 슈팅, 게시판 데이터베이스 모델링1. JWT 로그인 시스템 구축 (Authentication)회원가입 이후 실질적인 유저 식별을 위해 로그인 시스템을 구현했다.djangorestframework-simplejwt 라이브러리를 사용하여 JWT(JSON Web Token) 발급 구조를 잡았다. 세션 대신 JWT를 선택한 이유: 추후 AWS Lambda(Serverless) 배포 환경을 고려했을 때, 서버가 상태를 저장하지 않는 Stateless 구조가 필수적이었다. React 프론트엔드 및 향후 모바일 앱 확장을 고려하여 쿠키/세션 방식보다는 헤더 기반의 토큰 방식이 CORS 및 호환성 면에서 유리하다고 판단했..

[Mate] 개발일지 #2 - 이메일 인증 로직 구현 및 트러블 슈팅
mate2025.12.16 15:18[Mate] 개발일지 #2 - 이메일 인증 로직 구현 및 트러블 슈팅

날짜: 2025. 12. 09.주제: 이메일 인증 시스템 코드 구현, URL 연결, 회원가입 API 연동이메일 인증 시스템 로직 구현회원가입 후 수행할 '학교 이메일 인증' 기능을 위한 핵심 코드를 작성했다. 아직 실제 발송 테스트 전 단계다. Serializer (users/serializers.py 생성): 기본 UserSerializer 외에 인증 데이터 검증을 위한 EmailVerificationSerializer, CheckCodeSerializer를 새로 작성했다. View (users/views.py): SendEmailVerificationView: 도메인 파싱 및 인증 코드 생성, 메일 발송 로직 작성. VerifyCodeView: 입력된 코드 검증 및 유저 권한(is_stu..

[Mate] 개발일지 #1 - 백엔드 초기 세팅
mate2025.12.08 17:07[Mate] 개발일지 #1 - 백엔드 초기 세팅

날짜: 2025. 12. 08.주제: 기술 스택 선정, 보안 설정, 회원가입 API 구현프로젝트 시작 및 스택 변경대학생 익명 커뮤니티 '메이트(Mate)' 개발을 시작했다. 핵심은 '학교 인증'을 통한 신뢰성 확보다.기술 스택은 고민 끝에 FastAPI에서 Django로 변경했다. 변경 이유: 생산성: 1인 개발이라 리소스가 부족하다. Django의 Admin 기능과 내장 Auth 시스템을 활용해 개발 속도를 확보하기 위함이다. 보안: 커뮤니티 필수인 SQL Injection, XSS 방지 처리가 기본적으로 되어 있어 안전하다. 배포: 추후 AWS Lambda(Zappa)로 서버리스 배포가 가능하므로 비용 효율성도 챙길 수 있다. 개발 환경 구축 (Monorepo)GitH..

Chlidevknowledge2025.11.18 20:48맥os 환경에서 aws ec2 ssh 서버에 로컬 파일 전송하기

준비물EC2 접속용 키 파일 (.pem)EC2 퍼블릭 IP 또는 퍼블릭 DNSEC2 인스턴스 보안 그룹 inbound rulePEM 권한 설정chmod 400 my-key.pem3. 로컬 → EC2 파일 업로드scp -i my-key.pem /로컬/파일/경로 ubuntu@EC2_IP:/EC2/저장할/경로예시:로컬 파일 app.jar를 EC2 /home/ubuntu/로 전송:scp -i my-key.pem app.jar ubuntu@ec2-3-38-12-123.ap-northeast-2.compute.amazonaws.com:/home/ubuntu/나의 경우 AWS linux 환경이었기 때문에scp -i my-key.pem app.jar ec2-user@ec2-54-224-82-140.compute-1.a..

[Leetcode] 724 Find Pivot Index (Python)
leetcode2025.09.29 17:16[Leetcode] 724 Find Pivot Index (Python)

문제Find Pivot Index - LeetCode설명Given an array of integers nums, calculate the pivot index of this array.The pivot index is the index where the sum of all the numbers strictly to the left of the index is equal to the sum of all the numbers strictly to the index's right.If the index is on the left edge of the array, then the left sum is 0 because there are no elements to the left. This also applie..

[Leetcode] 2390 Removing Starts From a String (Python)
leetcode2025.09.24 13:11[Leetcode] 2390 Removing Starts From a String (Python)

문제Removing Stars From a String - LeetCode설명You are given a string s, which contains stars *.In one operation, you can:Choose a star in s.Remove the closest non-star character to its left, as well as remove the star itself.Return the string after all stars have been removed.Note:The input will be generated such that the operation is always possible.It can be shown that the resulting string will a..

프로젝트
[MATE] 개발일지 #7 - 인증 시스템 고도화 및 CRUD 사이클 완성
[MATE] 개발일지 #7 - 인증 시스템 고도화 및 CRUD 사이클 완성
mate
2025.12.22 18:46
날짜: 2025. 12. 22.주제: Jotai Persistence, JWT Customization, TypeScript Refactoring, Django DRF환경 설정 및 아키텍처프로젝트 루트와 프론트엔드 디렉터리에 각각 존재하는 .gitignore 파일을 정리하고, TypeScript 설정을 최신 표준에 맞게 수정했다..gitignore 계층화 전략:루트의 설정 파일과 프론트엔드 전용 설정 파일을 병합하지 않고 유지했다. 모듈화 된 구조를 통해 추후 프론트엔드 디렉터리의 이동이나 분리 배포 시 설정 종속성을 최소화하기 위해서였다.루트에는 IDE 및 OS 설정, 프론트엔드에는 Next.js 빌드 및 의존성 관련 설정을 분리하여 관리 효율성을 증대했다.tsconfig.json 최신화:TypeScr..
[Mate] 개발일지 #6 - 아키텍처 고도화 및 디자인 시스템 기반 구축
[Mate] 개발일지 #6 - 아키텍처 고도화 및 디자인 시스템 기반 구축
mate
2025.12.20 23:00
날짜: 2025. 12. 20.주제: Next.js(App Router), DRF, Design System, TypeScript백엔드 안정화 및 환경 정비개발 서버 구동 시 발생하는 경고를 제거하고, 데이터베이스 스키마와 애플리케이션 설정을 동기화했다.PK 모델 경고 해결 및 마이그레이션 (Django Settings):장고 3.2 버전 이후 권장되는 BigAutoField를 명시하여 잠재적인 ID 정수 오버플로우를 방지하고, 시스템 체크 경고를 제거하여 터미널 로그의 가독성을 확보했다.DEFAULT_AUTO_FIELD 설정 및 마이그레이션 적용을 통해 데이터베이스와 모델 구조를 일치시켰다.프론트엔드 컴포넌트 설계 및 상태 관리페이지 중심의 코드에서 컴포넌트 기반 아키텍처로 전환하여 유지보수성과 재사용..
[Mate] 개발일지 #5 - 게시판 기능 고도화 및 마이페이지 API 구현
[Mate] 개발일지 #5 - 게시판 기능 고도화 및 마이페이지 API 구현
mate
2025.12.19 15:13
날짜: 2025. 12. 19.주제: DRF 필터링 전략 수립, 이미지 처리 로직, 마이페이지 쿼리셋 최적화게시판 기능 고도화 (Community App Enhancement)CRUD 구현 이후 확장성과 유지보수성을 고려한 기술 스택을 도입하여 기능을 고도화했다.검색 및 필터링 전략 (Search & Filter Strategy):기술적 의사결정: 기존의 request.query_params를 하나씩 받아 if문으로 분기 처리하는 방식(Imperative)은 필드 수가 늘어날수록 뷰 로직이 비대해지는 문제가 있었다. 이를 해결하기 위해 선언적(Declarative) 방식인 django-filter와 DRF의 FilterBackend를 도입했다.구현:DjangoFilterBackend: 카테고리(categ..
[Mate] 개발일지 #4 - 인증 시스템 완성 및 게시판 API 보안 구축
[Mate] 개발일지 #4 - 인증 시스템 완성 및 게시판 API 보안 구축
mate
2025.12.17 21:50
작성일: 2025. 12. 17.주제: 이메일 인증 트러블 슈팅, 게시판 CRUD 구현, 그리고 커스텀 권한(Permission) 관리학교 이메일 인증 구현과 403 에러 해결지난번에 이어 simplejwt를 활용한 로그인 시스템을 구축하고, 실제 학교 이메일로 인증 코드를 발송하는 테스트를 진행했다.Google SMTP를 연동하여 메일 발송을 시도했는데, 예상치 못한 403 Forbidden (CSRF verification failed) 에러를 마주했다.문제 상황: Postman으로 이메일 전송 요청 시 CSRF 토큰이 없다며 거부당함.원인 분석: 요청을 보낸 URL이 API 엔드포인트가 아닌, Django 관리자 페이지(admin/) 주소였다. 브라우저 기반의 관리자 페이지는 CSRF 토큰 검증이 ..
[Mate] 개발일지 #3 - JWT 로그인 도입과 커뮤니티 DB 설계
[Mate] 개발일지 #3 - JWT 로그인 도입과 커뮤니티 DB 설계
mate
2025.12.16 20:59
날짜: 2025. 12. 16.주제: JWT 인증 시스템 구축, 개발 환경 트러블 슈팅, 게시판 데이터베이스 모델링1. JWT 로그인 시스템 구축 (Authentication)회원가입 이후 실질적인 유저 식별을 위해 로그인 시스템을 구현했다.djangorestframework-simplejwt 라이브러리를 사용하여 JWT(JSON Web Token) 발급 구조를 잡았다. 세션 대신 JWT를 선택한 이유: 추후 AWS Lambda(Serverless) 배포 환경을 고려했을 때, 서버가 상태를 저장하지 않는 Stateless 구조가 필수적이었다. React 프론트엔드 및 향후 모바일 앱 확장을 고려하여 쿠키/세션 방식보다는 헤더 기반의 토큰 방식이 CORS 및 호환성 면에서 유리하다고 판단했..
리눅스
[L18] rpm과 세부적인 패키지 파일 설치 방법_Linux/centOS
[L18] rpm과 세부적인 패키지 파일 설치 방법_Linux/centOS
Linux공부
2022.02.09 10:00
rpm 패키지 파일을 구하는 방법 설치 CD에 있는 패키지 파일을 사용 다른 컴퓨터로 internet에서 패키지 파일을 다운받고 공유 rpm 작접 시 주의사함 의존성 오류 가급적 무시 x 설치 /삭제 작업은 눈에 보이는 순서대로 바뀜 단, main 패키지가 있느 경우에만 main 패키지를 우선으로 진행 동일한 종류의 패키지는 가급적이면 버전 정보를 일치시켜야 하낟. 의존성 오류에 나오는 내용 패키지명 = 버전 : 해당 버전의 패키지가 필요하다 패키지명 > 버전 : 해당 버전 보다 더 높은 버전의 패키지가 필요하다 패키지 설치 시 * 기호를 이용하여 모든 패키지를 한 번에 설치 x 의존성 오류 발생 시 패키지 의존 관계 확인이 힘들다. centOS 페이지 접속 후 centOS Linux 칸 클 7-2009..
[L17] 프로그램 설치와 압축, 그리고 의존성 오류_Linux/centOS
[L17] 프로그램 설치와 압축, 그리고 의존성 오류_Linux/centOS
Linux공부
2022.02.07 10:00
프로그램 설치 과정 종류 소스 파일 다운로드 -> compile -> 설정 및 파일 배치 -> 프로그램 실행 tar + 압축 패키지 파일 마련한 상태 -> 명령어를 이용한 설치 -> 프로그램 실행 rpm (Internet 연결) 명령어를 이용한 설치 -> 프로그램 실행 yum 압축 파일의 용량을 줄이기 위해 사용한다. 원본 파일 자체가 압축된다 (복사본 생성 후 압축하는 작업x) 여러 파일이 동시에 압축하면 각각의 파일이 개별 압축된다. 디렉토리 압축은 불가능하다. 형식 명령어 [옵션] 대상 *압축의 형식과 압축/압축해제 작업에 따라 명령어가 달라진다. 압축 형식 압축 압축 해제 .zip zip unzip .gz gzip gunzip (gzip -d) .bz2 bzip bunzip2 (bzip2 -d) ..
[L16] 여러가지 특수 권한_Linux/centOS
[L16] 여러가지 특수 권한_Linux/centOS
Linux공부
2022.02.05 10:00
작업 주체 작업 대상 필요 권한 1. kdj ~kdj owner 영역 x 권한 2. kdj ~kdj owner 영역 r 권한 3. kdj html 소유권에 따른 영역의 x 권한 4. kdj html 소유권에 따른 영역의 w 권한 5. apache html, index.html other 영역 x 권한, other 영역 r 권한 (이 파일의 권한은 변경하지 않기 때문에 파일은 무조건 본다) 특수 권한 특이한 동작을 하는 권한 setUID, setGID, sticky bit 3가지의 특수 권한이 있다. 4777 r w x r w x r w x setUID 2777 r w x r w s r w x setGID 1777 r w x r w x r w t sticky bit *x 위치의 문자가 s/t로 변경 (x가..
[L15] http와 허가권 및 소유권_Linux/centOS
[L15] http와 허가권 및 소유권_Linux/centOS
Linux공부
2022.02.03 10:00
http web server : client의 요청에 web page를 제공해주는 서버 http- 로 시작하는 web server는 apache web server 설치 및 사용 준비 yum -y install httpd-* web server 설치 systemctl restart httpd web server 동작 systemctl enable httpd 부팅 시 web server 자동 동작 firewall-cmd --permanent --add-service=http 방화벽 예외 규칙에 web server 등록 firewall-cmd --reload 예외 규칙 적용 사용 방법 web browser에 web server의 IP를 입력 소유권 파일 및 디렉토리를 어느 사용가와 그룹이 소유하고 있는지 나..
[L14] 권한과 권한 표현 방법_Linux/centOS
[L14] 권한과 권한 표현 방법_Linux/centOS
Linux공부
2022.02.01 10:00
권한 파일이나 디렉토리를 사용할 수 있는지 여부를 정하는 개념이다. 허가권과 소유권으로 구분 허가권 + 소유권 = 권한 허가권 ls -l 명령을 입력했을 때 나오는 출력 내용 중 개체 형식을 나타내는 첫 글자 뒤에 오는 9개의 글자가 허가권을 나타낸다. 8가지 문자로 권한을 표현 : r, w, x, -, s, S, t, T r, w, x, - : 일반 권한을 표현하는 문자 s, S, t, T : 특수 권한을 표현하는 문자 r : 읽기 권한 파일 - 파일 내용 읽기 ex) cat, head, tail, more, less, vi로 열었을 때 등 디렉토리 - 디렉토리 내부 목록 확인 ex) ls, GUI 환경에서 폴더로 들어갔을 때 등 w : 쓰기 권한 파일 - 파일 내용 수정 ex) 문서 편집 후 저장, ..
HTML & CSS
CSS(Cascading Style Sheets) Basics [2]
CSS(Cascading Style Sheets) Basics [2]
HTML & CSS
2023.08.16 19:05
Order 플렉스 컨테이너에 나타나는 순서를 제어한다. 기본 값은 0 flex-grow / flex-shrink 플렉스 박스 아이템의 기본 너비를 자동으로 늘어나거나 줄어들도록 해서 행 안에 적절한 너비로 배치되도록 맞추는 기능을 한다. grow속성의 기본 값은 0이다. 음수는 허용되지 않는다. flex-shrink 필요한 경우 플렉스 item이 축소되는 기능을 정의 flex-shrink 속성은 플렉스 박스에 flex-wrap: wrap 속성을 부여한 경우 적용되지 않는다. flex-item에 flex-grow를 0으로 지정, 나머지 요소들의 flex-grow를 다르게 주었다. 실습 flex-item에 flex-shrink를 0을 주고 item-4에만 1을 준 경우 item-4만 줄어들어서 해당 행에 맞..
CSS(Cascading Style Sheets) Basics [1]
CSS(Cascading Style Sheets) Basics [1]
HTML & CSS
2023.08.15 01:00
CSS를 사용하는 방법? HTML 안에서 Style 속성을 이용하는 방법 (인라인 스타일) 태그를 통해 HTML 문서 내부에서 이용하는 방법 (내부 스타일 시트) 별도로 CSS 파일을 분리하여 HTML의 문서에 연결하는 방법 (외부 스타일 시트) 인라인 스타일, 내부 스타일, 외부 스타일 적용이 혼합되어 사용될 경우 어떤 스타일을 적용하나? 인라인 스타일 -> 내부 스타일 시트, 외부 스타일 시트 -> 웹 브라우저 기본 스타일 순서로 우선적용 CSS의 기본 구조 선택자, 프로퍼티, 값 내부 스타일 시트 방식으로 css를 적용 외부 스타일 시트 방식으로 css를 적용 .a-button:hover a-button 요소에 마우스를 가져갔을 때만 적용되는 스타일 .a-button:active a-button 요..
HTML(Hyper Text Markup Language) Basics
HTML(Hyper Text Markup Language) Basics
HTML & CSS
2023.08.14 15:42
태그 (tag) 웹 문서를 구성하는 명령어 꺽새 안에 들어있는 정보를 정의하는 형식 요소의 일부로 시작 태그와 종료 태그 두 종류 종료 태그가 없는 과 같은 태그가 있음(내부에 내용이 필요없음) 요소 (element) 빈 요소 , 내용 없이 구조적인 기능만 하는 요소 블록 요소 h1~h6, div, list, p, ··· 다른 요소를 포함할 수 있는 요소 인라인 요소를 포함할 수 있다. 블록 요소 이후 블록 요소를 사용하면 내용이 세로로 나타난다. margin, padding 값을 가질 수 있다. 인라인 요소 a, span, strong, ··· 인라인 요소는 블록 요소를 포함할 수 없다. 블록 요소 이후 블록 요소를 사용하면 내용이 가로로 나타난다. 너비, 높이 값을 가질 수 없다. index.html..
728x90
image