목록백앤드 개발일지 (66)
늘
Servlet (서블릿) 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램 혹은 그 사양을 말함 Controller 스프링 서버 개발자 입장에서는 시작점과 끝점으로 보이지만, 사실 스프링이 사용자의 요청 (Request)과 응답 (Response)을 처리해 주고 있습니다. 그럼 controller를 사용하지 않은 코드와 controller를 사용한 코드는 무엇이 다른지 코드로 확인해 보겠다. /* Servelte 코드 */ @WebServlet(urlPatterns = "/api/products/*", loadOnStartup = 1) public class AllInOneServlet extends HttpServlet { // 신규 상품 등록 @Override protected void ..
OneToOne에서 새로운 이슈를 맞이했다... 쿼리가 두번 나가는 즉, eager로 로딩이 된다. 바로 OneToOne으로 Lazy 로딩을 사용하려면 따로 설정을 해야한다. 또한 OneToOne관계는 fk를 어디에 두느냐에 따라 성격이 달라져서 잘 생각해보고 정해야한다. 결론부터 말하자면 3가지 처리가 필요하다. nullable이 허용되지 않는 @OneToOne 관계. (ex: Plan과 PlanResult) 양방향이 아닌, 단방향 @OneToOne 관계. (parent -> child) @PrimaryKeyJoin은 허용되지 않음. optional 을 false 로 해두는 값은 CascadeType.PERSIST 와 같이 동작 안한다라고 한다.(null일 수 없다) 위의 사진은 주 테이블에 fk를 둔..
우선 gradle에 swager를 설치해준다. 자료는 mavenrepository(https://mvnrepository.com/)에서 얻었다! implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' 우선 jwt를 이용하기 때문에 swagger 관련 페이지를 들어가기 위해 web.ignore에 추가해준다. 그리고 swagger config파일을 만들어 기본 설정들을 해주었다. Docket을 생성하여 api정보, jwt를 사용하기 때문에 securityContext..
fork로 복사를 끌어와 나중에 MR로 original에 집어넣는다. git config user.name / git config user.email : 이름과 이메일 설정 git diff {commit_id} {commit_id} : commit차이 알려줌 git reset --{option} {commit_id} : 가리키는 HEAD를 바꿈 즉, working directory가 바뀜(hard여서 바뀜) --soft는 워킹 디렉터리가 잘 반영되어있어서, 바로 commit해도 된다. 또는 고치고 add, commit해도 된다. --mixed를 하면 코드를 수정하고 git add, commit을 해야 한다. [커밋 보기] git reflog : HEAD가 가리켰던 commit 목록을 보여줌 git log..
TDD(Test Driven Development): 테스트 주도 개발 짧은 개발 서클을 반복하는 SW 개발 프로세스 중 하나이다. 자동화된 테스트 케이스를 먼저 작성한 후, 테스트 케이스를 통과하기 위한 최소한의 코드를 작성, 그 후 코드에 대한 리펙토링을 진행한다. 즉, 테스트 코드 작성-> 테스트 코드를 성공시키기 위한 최소한의 코드 구현-> 코드 리팩토링 특징 코드량이 많아지면 기능 별로 함수를 나누게 되는데 그 과정에서 테스트 코드가 중심을 잡아줄 수 있다. 개발하다 에러가 나도 테스트를 함으로써 금방 복구가 가능하다. BDD(Behavior-Driven Development): 행동 주도 개발 TDD에서 파생된 개념으로 BDD는 테스트 케이스 자체가 요구 사양이 되도록 개발하는 것이다. TDD..
스프링 프레임워크란? - 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. - 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다 특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. 관점 지향 프로그래밍(AOP : Aspect-Oriented Pro..
클린 코드란? 한마디로는 가독성 좋은 코드, 코드를 작성하는 의도나 목적이 명확해야 하고 다른 사람이 쉽게 읽을 수 있는 코드를 말한다. 1. 의미있는 이름 & 네이밍(Naming)과 주석달기 범용적으로 사용되는 단어는 사용하지 않는게 좋다. 연속된 숫자는 피하는게 좋다. 의도를 분명히 밝혀라 주석은 반드시 필요한 경우에만 작성하는것이 좋다. (설명을 위한 설명은 달지 않는다.) getActiveAccount(); getActiveAccounts(); getActiveAccountInfo(); //3가지 모두 getAccount()와 구별이 어렵다 //다른 예시로 customerInfo는 customer와 차이가 없으므로 더 명확하게 이름을 짓자 발음하기 쉬운 이름을 사용하라 & 검색하기 쉬운 이름을 사..
화창한 오후..시험도 끝나고 오랜만에 블로그도 정리할겸 확인해보는데 정작 JPA대한 정리가 없었다!!..그래서 오늘은 JPA에 대해서 공부해왔던 내용을 정리해보려고 한다 JPA(Java Persistence Api) JPA가 나온 배경을 보자면, 기존의 MyBatis와 같은 SQL매퍼를 이용한 데이터베이스의 작성은 객체지향과는 거리가 멀다. 그래서 객체 모델링보다는 테이블 모델링에 집중하는 모습을 해결하기 위해서 JPA라는 자바 표준 ORM기술이 나오게 되었다.(* ORM은 객체를 매핑하는 것이고, MyBatis와 같은 SQL Mapper는 쿼리를 매핑하는 것) 관계형 DB는 어떻게 데이터를 저장할지에 초점이 맞춰진 기술이고, 객체지향 프로그래밍은 메시지를 기반으로 기능과 속성을 관리하는 기술이다. --..
웹스크래핑(크롤링) 기초 bs4 크롤링 기본 세팅 import requests from bs4 import BeautifulSoup # 타겟 URL을 읽어서 HTML를 받아오고, headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} data = requests.get('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303',headers=headers) # HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한..
멋쟁이 사자처럼에서도 웹에 대해 공부했지만 이번에 한이음을 하면서 스파르타 코딩에서 한번 더 웹에 대해서 배울수 있었다. HTML은 뼈대, CSS는 꾸미기 그렇다면 멋사에서는 배우지 못했던 js에 대해서 정리하고 시작하려고 한다. 자바스크립트(js)는 프로그래밍 언어 중 하나로, 브라우저가 알아들을 수 있는 언어이다. Q. 왜 브라우저는 Javascript만 알아들어요? HTML안에다 파이썬, Java 같은 언어를 써서 주면 안되나요? A. 불가능한 이야기는 아닙니다. 다만, 이 "역사적인 이유 & 이미 만들어진 표준"이기 때문에, 모든 브라우저는 기본적으로 Javascript를 알아듣게 설계되어있고, 모든 웹서버는 HTML+CSS+Javascript를 주게 되어있죠. jQuery 란? HTML의 요소들..