평소에 자바를 공부하면서 백엔드 공부를 하고 있었지만 스타트업은 Python이나 Node.js를 통하여 서버리스 환경을 구축한다. 그렇기에 자바 뿐만 아니라 Node.js에 대해서 좀 더 알아 보려고 한다. Node.js ? 위키에는 아래와 같이 정의 되어 있다. 이 의미를 하나씩 분석 해보았다. "Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로자바크립트를 활용하며 논블록킹(Non-blocking) I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통..
OAuth란 유저가 비밀번호나 아이디를 입력하지 않고 다른 웹사이트의 정보로 다른 웹사이트나 어플리케이션의 접근 권한을 부여할 수 있는 즉 웹사이트의 제한된 접근 권한 위임을 다른 웹사이트를 통해 할 수 있도록 만든 프로토콜이다. OAuth2 동작과정 client는 resourceServer에 oauth 사용 요청함 resource서버는 clientID와 client secret 정보를 줍니다. 이를 바탕으로 클라이언트에 client OAuth를 붙이고 나면 사용자가 이를 클릭할 수 있음 resource owner가 클라이언트 접속하면 어떤 정보가 필요하고 승인할지 되묻는다. 승인 버튼을 누르면 owner는 해당 정보를 제공하는 것을 허락할 것인지 묻는다. 승인이 완료되면 server는 클라이언트에게 c..
fetch join이란 SQL 조인 종류 X JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한 번을 통해 조회할 수 있다. 페치 조인 ::= [ LEFT [OUTER] | INNER ] JOIN FETCH 조인경로 엔티티 fetch join 회원을 조회하면서 연관된 팀도 함께 조회 SQL을 보면 회원 뿐만 아니라 팀(T.*)도 함께 SELECT -- [JPQL] select m from Member m join fetch m.team -- 실제 나가는 SQL SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID = T.ID SQL JPQL fetch join 사용하는 이유 String jpql = "select m f..
계기 면접을 준비하면서 프로젝트와 문법만 공부하고 파이썬의 내부구조에 대한 이해가 낮다는 것을 알게 되었다. 이참에 정리하면서 내부구조도 학습해야 겠다. 참고 사이트: https://medium.com/dmsfordsm/garbage-collection-in-python-777916fd3189 GC(Garbage Collector란?) 거의 모든언어에서 사용되며 GC를 통해 메모리를 직접 관리 해주면서 개발자가 직접 메모리를 관리하는 코드를 작성 하지 않게 됨으로써 생산성이 크게 향상되었다. 하지만 메모리를 자동으로 관리는 해주지지만 서비스, 환경이 달라도 동일하게 관리를 해서 최적화가 덜 되어 있는 현실이다. 메모리 관리해야하는 이유 프로그램의 실행에 프로세스의 실행의 필요한 메모리가 할당되어야 한다...
스프링 부트는 스프링 프레임워크를 기반으로 만들어진 백엔드 프레임 워크이다. 스프링 부트의 동작원리를 이해하기전에 스프링 부트의 다양한 계층, 클래스를 알아보자 레이어 Presentation Layer (프레젠테이션 계층)프레젠테이션 계층은 HTTP 요청을 처리하고 JSON으로 받은 데이터를 객체로 변환하여 요청을 인증하고 비지니스 계층으로 전달한다. 간단히 말해서 뷰, 즉 프론트엔드 부분으로 구성됨 Business Layer (비지니스 계층)비지니스 계층은 모든 비즈니스 로직을 처리하며 서비스 클래스로 구성되어 데이터 엑세스 계층에서 제공하는 서비를 사용합니다. 그리고 권한 부여 및 유효성 검사를 수행합니다. 데이터 엑세스 계층: DAO나 Repository와 같은 데이터 베이스와 직접 접근하는 계층...
알고리즘 문제를 풀면서 두선을 교차해서 교차여부를 확인하는 문제가 나왔지만 풀다가 시간초과로 인해 풀지 못했지만 다음에 기회가 생기면 풀 수 있도록 하기위해 블로그에 기록해서 남겨야할 필요성을 느꼈다. CCW "평면에 놓여진 세 점의 방향관계를 구하는 알고리즘" 세 점이 주어져 있는 경우에, 이 점세개가 시계방향, 아님 반대 시계방향, 평행하는지 구하는 알고리즘으로 CCW 알고리즘은 시계반대방향일 때 양수, 시계방향일 때 음수, 평행일 때 0을 반환한다. 각각의 점을 P1(x1, y1) , P2(x2, y2), P3(x3, y3) 이라고 좌표를 두고, A,B,C 순서로 방향관계를 구한다면, CCW 함수의 return값은 (x2 - x1)*(y3 - y1) - (x3 - x1)*(y2 - y1) 이 된다 ..