분류 전체보기 73

[Spring/Backend] 프로젝트 개발 5주차. 배포 지옥과 프로젝트 마무리

우여곡절 끝에 백엔드 기능 개발을 마치고 프론트와의 연결을 위해 배포를 진행했다. 배포를 위해 AWS EC2와 Heroku 중 어떤 것을 사용할지 고민하게 되었다. AWS를 사용해보고 싶었으나 서버에 직접 설정해주어야 하는 것들이 많고 무엇보다 전에 Free Trial 해제를 안 해서 과금할 뻔하여 힘들었던 경험이 생각나서 이번 프로젝트에서는 간단하게 Heroku를 사용해보았다. Heroku는 Git에 올라가 있는 레포지토리를 기준으로 서버에 올려주어서 작업하던 환경에 쉽게 연결할 수 있고, 무료로 사용할 수 있는 ClearDB가 있어 좋은 선택지가 되었다. (로컬에서 MariaDB로 작업을 했어서 Heroku에 제공되는 DB 중 MariaDB 기반의 JawsDB를 사용하고자 했으나 무료 용량이 5MB였..

[Spring/Backend] 프로젝트 개발 4주차. Group DB 재설계 + 구현하기, @RequestBody 사용하기

그룹을 생성하려고 했는데 만들어둔 테이블을 보니 그룹에 참여하는 유저 정보를 한 엔티티에 받도록 설정해놨다..ㅎ 설계해둔거 제대로 확인 안 한 내 잘못이다..ㅎ 그래서 뒤늦게 테이블 설계부터 다시 했다 group과 group_rltn을 분리하여 user : group_rltn을 1:N으로, group : group_rltn을 1:N으로 분리해주었다. 테이블 설계는 했는데 이제 구현이 또 약간 바뀌게 되었다. 그룹 생성을 하게 되면 그룹 뿐만 아니라 거기에 포함된 유저들에 대해 관계도 또한 추가해주어야 했기 때문에 기존에 하던 것보다는 약간 복잡하게 느껴졌다. error executing ddl create table via jdbc statement 테이블을 생성하며 에러가 났는데 Group 이란 테이블..

[Spring/Backend] 프로젝트 개발 3주차. Query String vs 주소 매핑

Query String 이란? 서버에 필요한 데이터를 전달하기 위해 사용하는 방법 중 하나로 URL 주소에 필요한 데이터를 파라미터로 넘기는 방식이다 ex. https://jonnie99.tistory.com/posts?type=backend ?를 사용하여 시작됨을 알리고 key=value 형태로 데이터를 전송한다 여러 개의 데이터를 넘길 경우 &를 사용하여 넘길 수 있다 Path Variable(주소 매핑 방식)이란? Query String과 비슷한 방식으로 경로를 변수처럼 사용하는 방식이다 ex. https://jonnie99.tistory.com/posts/1201 Query String vs Path Variable Path Variable은 구체적인 리소스를 식별할 때 사용 ex. 10번째 글 ..

[Spring/Backend] 프로젝트 개발 2주차. 로그인 에러 해결하기 (loadUserByUsername - null)

팀원으로부터 회원가입/로그인 기능을 전달받아 게시판 기능과 연결하기 위해 확인하던 중, 로그인 기능이 실행되지 않는 것을 확인했다. 정확히는 UserDetailsService의 loadUserByUsername 서비스를 구현하는데 아이디값이 계속 null로 넘어오는 문제였다. 해당 문제를 해결하기 위해 열심히 구글링했으나 결국 하루가 지나도록 문제를 발견하지 못했고 포기하고 싶던 중 한 블로그를 발견했다! https://dublin-java.tistory.com/31 [Spring Security] loadUserByUsername(String username)에서 username이 empty일 때 스프링 시큐리티를 이용해서 로그인을 하는데 public class MemberDetailsService i..

[Spring/Backend] 프로젝트 개발 1주차. API 문서 작성하기

진행하기 전에 간단한 와이어프레임 제작과 기능 상세에 대해서는 마친 상태 개발 1주차부터 본격적으로 프론트엔드와 백엔드로 분리해서 파트 진행 백엔드는 ERD 설계까지 마친 상태로 1주차에는 API명세 작성과 회원가입/로그인 기능으로 나누어 진행 나는 API 명세 작성을 맡았다 프론트엔드와 본격적인 협업이 처음이고, 팀원들이 프로젝트 경험이 거의 없으므로 가능한 이해하기 쉽게 명세를 작성하기 위한 틀을 만들고자 했다 서칭을 해보며 여러 형태의 API 문서를 살펴보고 내가 원하는 방식으로 조합해서 만드는 것이 가장 적합할 것 같다고 판단하여 Notion을 사용해 직접 틀을 만들었다. 우선 주요 역할별 테이블을 만들고 그 안에서 세부 기능들을 쪼개어 작성하였다. 프론트엔드 팀원들이 궁금한 점이 생기면 물어볼 ..

MAC에서 Jenkins 사용하기 (Github 연결)

Jenkins 설치 brew install jenkins brew services start jenkins homebrew를 사용해 jenkins를 설치 및 실행하고 나면 localhost:8080 으로 접속하여 Jenkins를 사용할 수 있다 Jenkins 설정 접속하게 되면 처음에 아래 사진과 같은 화면이 보이는데 cd 보이는 주소(~/secrets) vi initialAdminPassword 위 명령어로 파일에 접근한다 이후 파일에 있는 비밀번호 복사해서 localhost:8080에 붙여넣어주면 된다 Continue를 누르면 아래와 같은 화면이 보이고 Install suggested plugins를 선택한 뒤 기다린다 (꽤 시간이 소요된다) 플러그인이 설치되면 Admin User를 만들 수 있다 공..

Etc. 2022.07.12

[CS 스터디] OSI 7계층

OSI 7계층 네트워크 모델의 종류 TCP/IP 모델: TCP/IP 프로토콜을 OSI 7계층 형식에 맞추어 더 추상화(간략화)시킨 모델 OSI 7계층각 계층은 다른 계층에 대해 알 필요가 없이 자신의 계층에서 캡슐화와 은닉 가능. 컴퓨터와 컴퓨터 사이의 데이터 전송을 분류한 모델 (데이터를 주고받을 때 데이터 자체의 흐름을 각 구간별로 나누어둔 것) TCP/IP 모델과 OSI 7계층 모델 비교 기준 TCP/IP OSI 7계층 계층의 수 4계층 7계층 분류 기준 프로토콜 기반 역할 기반 특징 데이터 전송기술 특화 통신 전반에 대한 표준 공통점: 계층적 네트워크 모델, 계층간 역할 정의 패킷 패킷이란? 네트워크를 통해 전달되는 데이터를 통칭하는 말로 네트워크에서 전달하는 데이터의 형식화된 블록 패킷의 구조:..

Etc./CS 2022.06.14

[Python] K번째 큰 수

문제 개요 문제 💡 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값은 22입니다. 입력 첫 줄에 자연수 N(3

Algorithm 2022.06.05

[CS 스터디] SQL Injection

[Database] SQL Injection SQL Injection 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 공격의 난이도가 쉬운 것에 비해 피해가 크게 발생하는 편이다 공격 방법 1) 인증 우회(AB: Auth Bypass, Error Based SQL Injection) 보통 로그인을 할 때, 아이디와 비밀번호를 input 창에 입력하게 된다. 쉽게 이해하기 위해 가벼운 예를 들어보자. 아이디가 abc, 비밀번호가 만약 1234일 때 쿼리는 아래와 같은 방식으로 전송될 것이다. SELECT * FROM Users WHERE ID = "abc" AND PASSWORD = "1234"; SQL Injection으로 공격할 때, input 창..

Etc./CS 2022.05.27

[CS 스터디] CPU 스케줄링

CPU 스케줄링 스케줄링 메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할지 순서를 정하는 것. Ready Queue에 있는 프로세스들 중에 누구에게 CPU를 할당해 줄 것인지 정하는 과정 오버헤드는 줄이고 사용률은 향상시켜야 하며 기아 현상을 해결해야 함 기아 현상: 어떤한 우선 순위로 작업을 처리할 때 우선순위가 낮은 작업은 영원히 처리되지 않는 현상 목표 일괄처리 시스템(Batch System): 가능하면 많은 일을 수행. 시간(time) 보단 처리량(throughout)이 중요 대화형 시스템(Interactive System): 사용자가 컴퓨터 앞에서 대화형으로 동작하기 때문에 빠른 응답 시간, 적은 대기 시간이 중요 실시간 시스템(Real-time System): 시간 제약 조건, 즉 ..

Etc./CS 2022.05.20