2024/11 24

[Spring MVC] 06. 스프링 MVC - 기본 기능

06. 스프링 MVC - 기본 기능#Spring/MVC정리로깅운영 서버에는 System.out.println()을 사용하지 않고, 로깅 라이브러리를 사용해 로그를 출력해야 한다.SLF4J로그 라이브러리는 Logback, Log4J, Log4J2 등등 수많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공한다.로그 선언private Logger log = LoggerFactory.getLogger(getClass());@Slf4j 롬복에서 사용할 수 있다.로그 사용 예시@Slf4j@RestControllerpublic class LogTestController { @RequestMapping("/log-test") public String logTest() { String name = "Sp..

Spring/MVC 2024.11.24

[Spring MVC] 05. 스프링 MVC - 구조 이해

5. 스프링 MVC - 구조 이해#Spring/MVC정리이전 챕터에서 직접 만들었던 MVC 프레임워크와 아래 스프링 MVC를 비교해보자.1 ~ 8 단계 구조가 같고, 이름만 다르다.FrontController DispatcherServlethandlerMappingMap HandlerMappingMyHandlerAdapter HandlerAdapterModelView ModelAndViewviewResolver ViewResolver(인터페이스)MyView View(인터페이스)달라진 부분을 하나씩 살펴보자DispatcherServletorg.springframework.web.servlet.DispatcherServlet스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있는데, 그게..

Spring/MVC 2024.11.21

[Spring MVC] 04. MVC 프레임워크 만들기

04. MVC 프레임워크 만들기#Spring/MVC정리프론트 컨트롤러 도입 이유 - 챕터 3 마지막에 다룬 내용포워드 중복View로 이동하는 코드가 항상 중복 호출되어야 한다.Thymeleaf 같은 다른 뷰로 변경한다면 전체 코드를 다 변경해야 한다.사용하지 않는 코드특히 HttpServletResponse의 response 객체는 현재 코드에서 사용되지 않는다.이런 HttpServletRequest, HttpServletResponse를 사용하는 코드는 테스트 케이스를 작성하기도 어렵다.공통 처리가 어렵다기능이 복잡해질수록 컨트롤러에서 공통으로 처리해야 하는 부분이 점점 더 많이 증가한다.공통 메서드로 추출해도 되지만, 호출 과정도 중복이고, 호출하는 것을 놓칠 수도 있다.프론트 컨트롤러를 도입해보자...

Spring/MVC 2024.11.20

[PLT/프로그래밍언어론] 05. Memory Management

Memory Management인터프리터의 주요 기능. 프로그램이 실행되는 동안 다양한 정보(지역변수, 임시값..)가 생성/로드/저장PL에서는 메모리 접근 처리 방법을 결정해야 한다.Subprogram(a.k.a procedure, routine, function)함수, 루틴, 프로시저 다 같은 의미로 사용하겠다. 이론적으로는 반환 값이 있는 것을 subprogram이라고 함.Stack데이터를 쌓는 자료구조. LIFO 구조. 데이터 push/popStack and Procedure스택은 프로시저에 적합하다. 프로시저 또한 LIFO 구조로 호출/종료되기 때문. Env도 이 방식으로 처리 가능Heap(자료구조 아님)힙은 pq나 힙 정렬과 관련된 자료구조이지만, PL에서는 프로그램이 allocated 될 수 ..

[PLT/프로그래밍언어론] 04. Names, Bindings and Scopes

04. Names, Bindings and ScopesName: 단순히 다른 객체를 표현하거나 나타내는 일련의 문자. PL에서는 identifier의 형태name과 object는 같은 것이 아니다. 하나의 이름이 여러 다른 객체, 하나의 객체가 다른 이름을 가질 수 있다.Denotable Object: 이름을 부여할 수 있는 객체들사용자가 부여 : 변수, 매개변수, 함수….PL 부여 : primitive types, primitive operations, pre-defined constnatsBinding: Association(연관성) between a name and a denoted object.다양한 시점에서 생성될 수 있다static : 디자인, 프로그램 작성, 컴파일타임Dynamic : Run..

[PLT/프로그래밍언어론] 03. PL Principle 2

03. Principle 2#PLT이전 시간에 컴파일 Step에 대해 배웠다. 그 중 Syntax Analysis를 자세히 살펴보자.문법 vs. 의미론 vs. 화용론문법(Syntax)은 프로그램의 형식에 관한 것이다.의미론(Semantics)은 프로그램의 의미에 관한 것이다.화용론(Pragmatics)은 특정 맥락에서 프로그램의 의미를 다룬다.예시: 톰과 제리문법:"쥐가 고양이를 차고 있다." ➞ 올바름!"쥐 고양이를 차고 있다." ➞ 잘못됨!의미론:"쥐가 고양이를 차고 있다." ➞ "음, 잠깐만… 뭐라고?"화용론:"쥐는 제리, 고양이는 톰이다." ➞ "아하! 가능하군."문법에 중점세 가지 중, 이 강의에서는 문법에 더 중점을 둔다.다른 것들에 대해 논의하기 전에, 프로그래밍 언어를 어떻게 정의할지 알아..

[PLT/프로그래밍언어론] 02. PL Principle 1

02. Principle 1#PLTComputers and Turing MachineWhat is a Computer?이 강의에서는 PL을 중점으로 다룰 예정이다.우리는 프로그래밍 언어의 크리에이터가 된다고 생각하자.PL을 디자인할 때, 컴퓨터에서 프로그램이 동작하도록 하기 위해 많은 것들을 고려해야 하고, 우리는 이 부분을 중점으로 학습한다.PL의 관점에서 컴퓨터란 무엇인가요?프로그래밍 언어는 결국 컴퓨터에서 실행됩니다.프로그래밍 언어를 설계하거나 프로그래밍 언어로 프로그램을 개발하려면 ➞ 컴퓨터가 어떻게 작동하는지 이해해야 합니다.이 질문을 들으면 컴퓨터에 대한 다양한 이미지가 떠오를 수 있습니다.이번 주 강의에서는 이 질문에 대해 좀 더 이론적으로 살펴볼 것입니다.강의가 끝나면 컴퓨터에 대한 일반적..

[AI/Concepts] 07. Optimization

최적화 및 탐색 알고리즘 개요최적화 (Optimization)정의: 가능한 여러 옵션 중에서 최선의 옵션을 선택하는 것.문제 해결 도구: 비용을 최소화하는 방법을 찾는 것 등 더 넓은 범위의 문제 해결.탐색 문제: 최선의 방법을 찾는 문제.탐색 방법: 그 중 하나로 지역 탐색이 있음.지역 탐색 (Local Search)정의: 단일 노드를 유지하고 인접 노드로 이동하여 탐색하는 알고리즘.미로 해결과의 비교:미로: 목표까지 가장 빠른 경로를 찾음.지역 탐색: 질문에 대한 최선의 답을 찾는 데 중점.특징:종종 최적의 답을 찾지는 못하지만, "충분히 좋은" 답을 찾아 계산 자원을 절약함.예시: 병원 위치 선정평가 기준: 이동 거리를 비용(cost)으로 사용.현재 결정의 평가 기준: 현재 decision이 얼마나..

AI/Concepts 2024.11.19

[AI/Concepts] 06. Uncertainty

AI Concepts불확실성 (Uncertainty)현실에서는 인공지능이 세계에 대한 부분적인 지식만을 갖고 있기 때문에 불확실성(uncertainty)이 존재합니다.이러한 상황에서도 우리는 인공지능이 가능한 최선의 결정을 내리길 바랍니다.예측 (Prediction)내일 날씨를 100% 정확하게 예측할 수 있는 방법은 없지만, 우리는 최선의 방법을 찾으려 합니다.강수확률: 확률로 표현되며, 이는 불확실성을 나타냅니다.Uncertainty: Likelihood를 숫자로 표현Probability: 특정 사건이 일어날 확률우연?불확실성은 여러 사건과 각각의 사건의 수, likelihood, probability로 나타낼 수 있습니다.Likelihood: 사건들을 설명할 수 있는 통계 모델Probability:..

AI/Concepts 2024.11.19

[AI/Concepts] 05. Knowledge

AI Concepts지식 (Knowledge)인간은 기존의 지식(existing knowledge)을 바탕으로 추론하여 결론을 도출(draw conclusion)합니다.Reason: Thinking rationally사고과정이 knowledge에 기반하여 이루어진다.지식을 표현하고 그로부터 결론을 도출하는 개념은 인공지능(AI)에서도 사용됩니다.지식 기반 에이전트 (Knowledge-based Agents)지식의 내부 표현을 바탕으로 추론하는 에이전트."지식을 기반으로 추론하여 결론을 도출한다 (“reasoning based on knowledge to draw a conclusion)”의 의미는 무엇인가요?예시: 해리 포터 사례비가 오지 않았다면, 해리는 오늘 해그리드를 방문했다.해리는 오늘 해그리드나..

AI/Concepts 2024.11.19