전체 글
-
[SAP 시험관리] 프로젝트 DEV 서버 구축일기.학습/프로젝트 2024. 4. 24. 08:36
프로젝트 구축 회고: 팀 작업과 기술 선택의 중요성프로젝트 개요프로젝트는 테스트 응시자 관리 시스템을 개발응시자의 계정 발급, 시험 성적 관리, 시험 문제 관리 등 백오피스 개발팀 구성과 역할퍼블리셔: UI 구현프론트엔드 개발자: React를 사용한 클라이언트 사이드 로직 구현백엔드 개발자 (나): 서버 사이드 로직 및 데이터베이스 관리기술스택프론트엔드: React(프론트엔드)백엔드: Spring Boot 3, MybatisDB: MySQL기술 선택 이유프론트엔드: 팀원 중 React에 능숙한 개발자가 있어 선택.백엔드: 복잡한 도메인 로직 관리가 필요 없어 JPA 대신 MyBatis 선택.JWT 토큰: 시스템 간 통신과 인증에 JWT를 사용하여 보안 강화.기술 스..
-
[JS] Map, Filter, Reduce기초/자바스크립트 2022. 12. 17. 02:53
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ *custom Map 함수 /** f : 맵 속성을 위임할 함수 iter : 이터러블을 반환하는 제너레이터 function : 이터러블을 받아 맵을 생성하는 함수 **/ const map = (f, iter) => { let res = []; for (const a of iter) { res.push(f(a)); } return res; }; *원하는 value만 맵으로 생성 console.log(map(p => p.name, products)); console.log(map(p => p.price, products)); /** let names = []; for (const p of products) { names.push(p.name)..
-
[JS] 제너레이터기초/자바스크립트 2022. 12. 17. 00:40
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일반함수 이름에 *을 붙여 제너레이터 함수를 만든다 제너레이터 함수 : 이터레이터를 만들어준다. 마지막 return 값은 done을 할 때 반환되는 값이다. function *func() { yield 1; if ( false ) yield 2; yield 3; } 제너레이터는 문장을 순회할 수 있는 값으로 만들 수 있다. 제너레이터를 통해 순회할 수 있는 이터러블을 쉽게 만들 수 있다. //제너레이터 코드를 이용한 홀 수 이터러블 만들기 //1씩 무한하게 증가시키는 함수 function* infinity(i = 0) { while (true) yield i++; } //1씩 무한하게 감소시키는 함수 function* infinity2(i..
-
[JS] Symbol.iterator카테고리 없음 2022. 12. 15. 23:31
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 이터러블/이터레이터 프로토콜 - 이터러블: 이터레이터를 리턴하는 [Symbol.iterator]() 를 가진 값 - 이터레이터: { value, done } 객체를 리턴하는 next() 를 가진 값 - 이터러블/이터레이터 프로토콜: 이터러블을 for...of, 전개 연산자 등과 함께 동작하도록한 규약 Collection[Symbol.iterator] - Array[Symbol.iterator] // values() { [native code] } - Set[Symbol.iterator] // values() { [native code] } - Map[Symbol.iterator] // entries() { [native code] } //..
-
[JS] 일급 함수와 고차함수기초/자바스크립트 2022. 12. 14. 19:04
인프런 강의 정리 함수형 프로그래밍과 Javascript ES6+ 일급함수 - 함수를 값으로 다룰 수 있다. - 조합성과 추상화의 도구이다. - 함수가 값으로 다뤄질 수 있다. 고차함수 - 함수를 값으로 다루는 함수 - 함수를 인자로 받아서 실행하는 함수 -일급함수 예제 const inc = x = x + 1; log( inc ); // x = x + 1 log( inc(10) ); // 11 const func1 = () = () => 1; const func2 = func1(); log( func1() ); // () => 1 log( func2 ); // () => 1 log( func2() ); // 1 고차함수 - 함수를 인자로 받아서 실행하는 함수 const apply = func => fun..
-
[JWT] 어디에 저장하는게 좋을까?학습/개발노트 2022. 10. 28. 22:35
사전 준비 Authentication Server에서 API서버에 AccessToken과 RefreshToken을 발급한 상태 클라이언트에 저장방법 1. SessionStorage 세션 변수로써 새창, 새로고침 등에 추가로직이 필요함 2. Localstorage 글로벌 변수 XSS 취약점 : 방어 불가능 ex) 공격예제 3. 로컬변수 새로고침 시 토큰이 사라짐 4. 쿠키 XSS 취약점 : HttpOnly 속성 사용으로 방어 가능 alert(document.cookie); 스니핑 : Secure 속성 사용으로 방어 가능 https://ko.wikipedia.org/wiki/%ED%8C%A8%ED%82%B7_%EB%B6%84%EC%84%9D%EA%B8%B0 패킷 분석기 - 위키백과, 우리 모두의 백과사전 위..
-
OAUTH 2.0 정리학습/개발노트 2022. 10. 19. 21:09
용어 정리 ex) 티스토리에서 카카오 로그인 [ Target ] Resource Owner : 유저, 사용자 Client Server : 애플리케이션 제공서버 ( 티스토리 ) Resource Server : 인증, 권한 부여 서버 ( 카카오 ) [ Jargon ] Client Id : Client Server의 고유 ID Client Secret : Client Server의 비밀번호 Redirect URL : Client Server에서 Resource Server에 인증을 요청한 이후 Resource Server가 Client Server에 응답값을 전송하기 위한 URL Scope list: 권한 목록 Authorization code : Resource Server가 승인한 코드 티스토리 카카오톡 ..
-
FINAL 키워드의 집착을 버려본다.학습/개발노트 2022. 10. 14. 00:07
final 변수가 불변이라는 사실을 명확하게 알 수 있다. Builder 패턴을 통해 vo를 불변객체라고 명확하게 알려주었다. @Getter public class UserInfo { private final Long id; private final String password; private final String name; private final String gradeCode; private final LocalDateTime createdAt; private static final Long PASSWORD_MIN_LENGTH = 6L; private static final Long PASSWORD_MAX_LENGTH = 18L; @Builder public UserInfo(Long id, Stri..