개발 26

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 의존성 주입

스프링 프레임워크와 의존성 주입의존성 주입 (DI, Dependency Injection)객체가 다른 객체에 의존하는 것을 명시적으로 선언하고 외부에서 해당 객체의 인스턴스를 주입하는 설계 패턴 의존성 [생성자 내부에서 오브젝트 초기화]public class TodoService { private final FileTodoPersistence persistence; public TodoService() { this.persistence = new FileTodoPersistence(); } public void create(...){ ... persistence.create(...); }} TodoService 클래스는 Todo 목록을 관리하는 기능이다.FileTodoPersis..

개발 2024.07.18

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - HTTP 메서드

웹 개발 경험 없이는 컴퓨터 시스템 흐름을 평생 이해하기 어렵겠다 싶어서 개발... 까짓거 해보자 싶어서 냅다 도서관에 달려가 책 한 권을 빌렸다.  애플리케이션의 아키텍처HTML/CSS/React.js프론트엔드 애플리케이션 개발에 사용프론트엔드 클라이언트를 반환하는 서버는 역할이 하나이다. React.js 애플리케이션을 반환하는 것이다!스프링부트백엔드 애플리케이션 개발에 사용스프링부트로 REST API를 구현. 이 API는 프론트엔드 애플리케이션이 사용한다. HTTP ( HyperText Transfer Protocol)  애플리케이션 레벨(L7)의 네트워크 프로토콜하이퍼텍스트 ('다른 문서로 향하는 링크가 있는 텍스트') + 트랜스펄 프로토콜 ('통신 규약')하이퍼링크를 위한 마크업 언어 사용자는 브..

개발 2024.07.16

[React.js, 스프링부트, AWS로 배우는 웹 개발] 1장 - 어노테이션

어노테이션(Annotation)Java 코드에 메타데이터를 추가하는 특별한 형식의 주석특정 동작을 수행하기 위해 사용빈 정의, 의존성 주입 등에 사용@Component : 클래스가 빈으로 등록됨@Autowired: 의존성 주입을 자동으로 처리@Service : 서비스 계층에 사용되는 빈@Repository: 데이터 접근 계층에 사용되는 빈@Controlloer: 웹 계층에 사용되는 빈계층서비스 계층데이터 계층웹 계층목적비즈니스 로직 처리데이터베이스와 상호작용프론트. 컨트롤러와 뷰로 구성  XML 설정 (XML Configuration) 애플리케이션의 설정 정보Spring 컨테이너가 관리할 빈을 XML 파일에 설정   ( ex_  )  @SpringBootAppli..

개발 2024.07.16

람다(lambda)

람다(lambda) 함수 선언 키워드, 정렬 기준 # 함수 선언 lambda 매개변수 : 표현식 >>> def hap(x, y): ...return x + y ... >>> hap(10, 20) 30 >>> add = lambda x,y: x + y >>> add(2, 4) 6 pulse = lambda x : 1 if x % 2 else -1 x라는 변수를 받는데, x가 짝수가 아니면 1, 짝수면 -1을 반환한다. # 정렬 기준 sort(key=lambda x: (a, b) ) # 기준 1은 a. 값이 같을 경우, 기준 2는 b data_list = [[1,5], [3,4],[2,6]] # [-1,5] [-3, 4] [-2, 6] # 34 26 15 data_list.sort(key=lambda x: ..

개발 2023.11.26

문자열

문자열 문자열 공백 제거 strip() >>> ex_str = " hello " >>> ex_str.strip() # 'hello'로 출력 map(int, input().strip().split(‘ ‘)) String a 안에 b 문자열이 포함되어있는지 확인 T or F a.startswith(b) split() 1. 띄어쓰기 단위로 리스트에 저장 list(input().split()) list(map(str, input().split())) 2. 공백을 기준으로 분리하여 저장 routes = ["E 2", "S 2", "W 1"] for r in routes: r1,r2 = r.split() 원하는 데이터의 index 알아내기 index() : 숫자 등 find() : 문자열. list 내 문자열.fi..

개발 2023.11.26

리스트(List)

리스트 remove() list = [0, 1, 2, 3] list.remove(3) # index 3 삭제 replace() a = "23" a = a.replace('2', '3') # 2 -> 3 리스트를 [], 없이 출력 “”.join(array) 값 대입 scores = [[1, 2], [4, 6], [0, 6]] a, b = scores[0] # a=1, b=2 for a, b in scores: # a= scores의 x, b= scores의 y 원하는 데이터의 index 알아내기 index() : 숫자 등 find() : 문자열. list 내 문자열.find() 가능 배열 2개 동시에 비교(집합) a = [1,3,2,5,4] for p1, p2 in zip(a, a[1:]): print(p..

개발 2023.11.26

해시 테이블 및 SQL/NoSQL

해시 테이블(Hash Table) 해시 테이블은 딕셔너리와 같이, 키와 값을 짝지어 모은 것이다. menu = { 아메리카노: 10, 라떼: 12, 카모마일차: 15, }; 배열에 담겼다면 배열의 데이터를 처음부터 모두 확인(선형 검색)해야해서 오래 걸리지만, 해시 테이블은 빠르게 알아낼 수 있다. 해시 테이블에 쓰이는 해시 함수는 우리가 검색할 때 쓰는 Key를 숫자, 즉 인덱스로 바꿔주는 역할을 수행한다. SQL 개발자들이 SQL을 잘 모르는 이유는 ORM 때문이다. ORM(Object Relational Mapping) 개발자에게 SQL 번역기 같은 도구 사용자에게 익숙한 프로그래밍 언어로 SQL을 사용할 수 있게 함 NoSQL 데이터베이스 종류 Document DB 데이터를 JSON 형식으로 저장..

개발 2023.10.21

브라우저 엔진

웹 브라우저가 HTML, CSSM 자바스크립트를 이해하기 위해서 확장 프로그램이 필요하다. 이것을 브라우저 엔진 혹은 렌더링 엔진이라고 한다. 엔진 이름 브라우저 이름 게코(gecko) 파이어폭스 웹킷(webkit) 사파리 블링크(blink) 크롬 브라우저는 엔진을 장착해서 HTML, CSS, 자바스크립트를 이해할 수 있는 것이다. 인터넷 익스플로러가 사랑받았던 이유 최초로 CSS를 적용한 웹 브라우저 점유율만 믿고 보안 취약점 방치로 인해 다른 브라우저들이 더 좋은 엔진을 갖추며 치고 올라옴 엣지 웹 브라우저의 엔진은 크롬 브라우저의 엔진인 블링크임

개발 2023.10.21