분류 전체보기
-
문제 길이가 인 문자열 가 주어진다. 플레이어는 문자열 를 서로 겹치지 않는 개의 부분문자열로 나누려고 한다. 부분문자열은 모두 길이가 이상이어야 하며, 원래 문자열에서 연속해야 한다. 문자열을 나누는 방법에 따라 플레이어는 점수를 얻을 수 있다. 점수는 다음 과정에 따라 계산된다. 문자열 를 위 조건에 따라 나눴을 때, 등장하는 모든 부분문자열을 중복 제거하고 사전순으로 정렬한 결과를 라고 한다. 나누어진 개의 문자열이 각각 에서 번째로 등장하는 문자열이라면, 얻을 수 있는 점수는 이다. 예를 들어, abcd라는 문자열을 개의 부분문자열로 나누는 방법은 {a, b, cd}, {a, bc, d}, {ab, c, d}의 세 가지가 있다. 여기서 부분문자열을 중복 제거하고 사전 순서로 정렬한 결과는 a, a..
구름톤 챌린지 2주 차 학습 일기(Day 01)문제 길이가 인 문자열 가 주어진다. 플레이어는 문자열 를 서로 겹치지 않는 개의 부분문자열로 나누려고 한다. 부분문자열은 모두 길이가 이상이어야 하며, 원래 문자열에서 연속해야 한다. 문자열을 나누는 방법에 따라 플레이어는 점수를 얻을 수 있다. 점수는 다음 과정에 따라 계산된다. 문자열 를 위 조건에 따라 나눴을 때, 등장하는 모든 부분문자열을 중복 제거하고 사전순으로 정렬한 결과를 라고 한다. 나누어진 개의 문자열이 각각 에서 번째로 등장하는 문자열이라면, 얻을 수 있는 점수는 이다. 예를 들어, abcd라는 문자열을 개의 부분문자열로 나누는 방법은 {a, b, cd}, {a, bc, d}, {ab, c, d}의 세 가지가 있다. 여기서 부분문자열을 중복 제거하고 사전 순서로 정렬한 결과는 a, a..
2023.08.21 -
TIL을 쓴 지 거의 두 달은 넘은 것 같은데 그동안 블로그를 쓸 시간이 없기도 했고 프로젝트에 집중하다 보니 블로그에 글을 써야 한다는 생각이 들지 않을 정도로 바쁘게 지나갔던 것 같다. 크래프톤 정글에 입소한 지 얼마 안 된 거 같은데 엊그제 8월 17일 크래프톤 정글 2기 수료식을 마쳤고 현재는 공식적인 일정은 다 끝났다. 처음 들어왔을 때에는 단지 전공자라는 타이틀하나로 기본기도 제대로 갖춰지지 못한 상태로 입소했던 것 같은데 지금 와서 생각해 보면 그래도 꽤나 많은 지식들을 얻어서 수료한 것 같다. 중간중간 커리큘럼에 대해서 의구심이 생길 때도 있었지만 다 이유가 있었던 것 같고 개발자로서 필요한 CS지식들 위주의 커리큘럼이라서 특히 마지막 "나만의 무기 갖기" 프로젝트에서 많은 도움이 되었다...
[TIL]23.08.19(토) - 크래프톤 정글 2기 후기TIL을 쓴 지 거의 두 달은 넘은 것 같은데 그동안 블로그를 쓸 시간이 없기도 했고 프로젝트에 집중하다 보니 블로그에 글을 써야 한다는 생각이 들지 않을 정도로 바쁘게 지나갔던 것 같다. 크래프톤 정글에 입소한 지 얼마 안 된 거 같은데 엊그제 8월 17일 크래프톤 정글 2기 수료식을 마쳤고 현재는 공식적인 일정은 다 끝났다. 처음 들어왔을 때에는 단지 전공자라는 타이틀하나로 기본기도 제대로 갖춰지지 못한 상태로 입소했던 것 같은데 지금 와서 생각해 보면 그래도 꽤나 많은 지식들을 얻어서 수료한 것 같다. 중간중간 커리큘럼에 대해서 의구심이 생길 때도 있었지만 다 이유가 있었던 것 같고 개발자로서 필요한 CS지식들 위주의 커리큘럼이라서 특히 마지막 "나만의 무기 갖기" 프로젝트에서 많은 도움이 되었다...
2023.08.19 -
1️⃣ 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 예) 톰캣(Tomcat) Jetty, Undertow 웹 서버, 웹 애플리케이션 서버의 차이점 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 사실은 둘의 용어도 경계도 모호함 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함 웹 애플리케이션 서버도..
웹 애플리케이션 이해1️⃣ 웹 서버(Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 예) 톰캣(Tomcat) Jetty, Undertow 웹 서버, 웹 애플리케이션 서버의 차이점 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 사실은 둘의 용어도 경계도 모호함 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함 웹 애플리케이션 서버도..
2023.07.06 -
스프링이란? 스프링 부트 스프링 Rest Docs, 스프링 시큐리티 핵심 개념 - 이 기술을 왜 만들었는가 / 이 기술의 핵심 컨셉은 ? : 스프링은 자바 언어 기반의 프레임워크, 스프링은 객체 지향 언어가 가장 강력한 특징을 살려내는 프레임워크, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체 지향 프로그래밍이란? - 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 다형성(Polymorphism) 실세계와 객체 지향을 1:1로 매핑X 그래도 실세계의 비유로 이해하기에는 좋음 역할과 구현으로 세상을 구분 자동차가 바껴도 운전을 할 수 있다 -> 새로운 자동차가 나와도 클라이언트는 새로운 걸 안배워도 되..
객체 지향 설계와 스프링스프링이란? 스프링 부트 스프링 Rest Docs, 스프링 시큐리티 핵심 개념 - 이 기술을 왜 만들었는가 / 이 기술의 핵심 컨셉은 ? : 스프링은 자바 언어 기반의 프레임워크, 스프링은 객체 지향 언어가 가장 강력한 특징을 살려내는 프레임워크, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 좋은 객체 지향 프로그래밍이란? - 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 다형성(Polymorphism) 실세계와 객체 지향을 1:1로 매핑X 그래도 실세계의 비유로 이해하기에는 좋음 역할과 구현으로 세상을 구분 자동차가 바껴도 운전을 할 수 있다 -> 새로운 자동차가 나와도 클라이언트는 새로운 걸 안배워도 되..
2023.07.03 -
이번에는 프로젝트 3의 마지막 구현과제인 Swap In/Out에 대해서 구현을 해보도록 하겠습니다. 먼저 메모리 스왑은 물리적 메모리 사용량을 최대화하기 위한 메모리 회수 기술입니다. 주 메모리의 프레임이 할당되면 시스템은 사용자 프로그램의 메모리 할당 요청을 더 이상 처리할 수 없습니다. 한 가지 해결책은 현재 사용되지 않는 메모리 프레임을 디스크에 스왑아웃하는 것입니다. 이렇게 하면 일부 메모리 리소스를 확보하여 다른 애플리케이션에서 사용할 수 있습니다. Anonymous Page에는 백업 스토리지가 없기 때문에 스왑을 지원하기 위해 스왑 디스크라는 임시 백업 스토리지를 만들어서 사용합니다. 그에 반해 File Mapped Page는 콘텐츠를 파일에서 가져오기 때문에 매핑된 파일을 백업 저장소로 사용..
[Pintos-Kaist] Project3 - Swap In/Out이번에는 프로젝트 3의 마지막 구현과제인 Swap In/Out에 대해서 구현을 해보도록 하겠습니다. 먼저 메모리 스왑은 물리적 메모리 사용량을 최대화하기 위한 메모리 회수 기술입니다. 주 메모리의 프레임이 할당되면 시스템은 사용자 프로그램의 메모리 할당 요청을 더 이상 처리할 수 없습니다. 한 가지 해결책은 현재 사용되지 않는 메모리 프레임을 디스크에 스왑아웃하는 것입니다. 이렇게 하면 일부 메모리 리소스를 확보하여 다른 애플리케이션에서 사용할 수 있습니다. Anonymous Page에는 백업 스토리지가 없기 때문에 스왑을 지원하기 위해 스왑 디스크라는 임시 백업 스토리지를 만들어서 사용합니다. 그에 반해 File Mapped Page는 콘텐츠를 파일에서 가져오기 때문에 매핑된 파일을 백업 저장소로 사용..
2023.06.26 -
이번 포스팅에서는 Stack Growth, Memory Mapped Files에 대한 구현을 해보겠습니다. Stack Growth 구현 1️⃣ bool vm_try_handle_fault (struct intr_frame *f, void *addr, bool user, bool write, bool not_present) 이 함수는 페이지 오류 예외를 처리하는 동안 userprog/exception.c의 page_fault에서 호출됩니다. 이 함수에서는 페이지 오류가 스택 증가에 유효한 경우인지 여부를 확인해야 합니다. 스택 증가로 오류를 처리할 수 있음을 확인했다면 오류가 발생한 주소로 vm_stack_growth를 호출합니다. bool vm_try_handle_fault (struct intr_fra..
[Pintos-Kaist] Project3 - Stack Growth, Memory Mapped Files이번 포스팅에서는 Stack Growth, Memory Mapped Files에 대한 구현을 해보겠습니다. Stack Growth 구현 1️⃣ bool vm_try_handle_fault (struct intr_frame *f, void *addr, bool user, bool write, bool not_present) 이 함수는 페이지 오류 예외를 처리하는 동안 userprog/exception.c의 page_fault에서 호출됩니다. 이 함수에서는 페이지 오류가 스택 증가에 유효한 경우인지 여부를 확인해야 합니다. 스택 증가로 오류를 처리할 수 있음을 확인했다면 오류가 발생한 주소로 vm_stack_growth를 호출합니다. bool vm_try_handle_fault (struct intr_fra..
2023.06.24 -
이전 포스트에서는 프로젝트 3의 Memory Management부분에 대해 구현을 했습니다. 마지막 부분에 해당하는 vm_alloc_page_with_initializer라는 함수를 시작으로 나머지 Anonymous Page를 구현 시작해 보도록 하겠습니다. ✔️ Anonymous Page란? Anonymous 페이지는 파일 기반 페이지와 달리 이름이 지정된 파일 소스가 없기 때문에 Anonymous page라고 부릅니다. Anonymous 페이지는 스택 및 힙과 같은 실행 파일에 사용됩니다. Anonymous 페이지는 프로그램이 실행되는 동안 필요한 메모리 공간을 동적으로 할당하여 프로그램의 요구에 맞게 메모리를 사용할 수 있습니다. Anonymous 페이지는 가상 메모리 공간에서 실제 메모리로 데이터..
[Pintos-Kaist] Project3 - Anonymous Page이전 포스트에서는 프로젝트 3의 Memory Management부분에 대해 구현을 했습니다. 마지막 부분에 해당하는 vm_alloc_page_with_initializer라는 함수를 시작으로 나머지 Anonymous Page를 구현 시작해 보도록 하겠습니다. ✔️ Anonymous Page란? Anonymous 페이지는 파일 기반 페이지와 달리 이름이 지정된 파일 소스가 없기 때문에 Anonymous page라고 부릅니다. Anonymous 페이지는 스택 및 힙과 같은 실행 파일에 사용됩니다. Anonymous 페이지는 프로그램이 실행되는 동안 필요한 메모리 공간을 동적으로 할당하여 프로그램의 요구에 맞게 메모리를 사용할 수 있습니다. Anonymous 페이지는 가상 메모리 공간에서 실제 메모리로 데이터..
2023.06.19 -
핀토스 프로젝트 3에서는 Virtual Memory에 관한 내용들을 토대로 구현을 시작합니다. 우선 첫 번째 구현 요소인 Memory Management에 대해서 알아보겠습니다. Memory Management 가상 메모리 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 즉, 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가, 어떤 용도로 사용되고 있는지 등을 추적해야 합니다. 먼저 보충 페이지 테이블을 다룬 다음 물리적 프레임을 다룰 것입니다. 이해를 돕기 위해 가상 페이지에는 '페이지'라는 용어를, 물리적 페이지에는 '프레임'이라는 용어를 사용한다는 점에 유의하세요. Struct page struct page에 hash_elem 멤버를 추가해서 해당 페이지를..
[Pintos-Kaist] Project3 - Memory Management핀토스 프로젝트 3에서는 Virtual Memory에 관한 내용들을 토대로 구현을 시작합니다. 우선 첫 번째 구현 요소인 Memory Management에 대해서 알아보겠습니다. Memory Management 가상 메모리 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야 합니다. 즉, 어떤 (가상 또는 물리적) 메모리 영역이 어떤 목적으로, 누가, 어떤 용도로 사용되고 있는지 등을 추적해야 합니다. 먼저 보충 페이지 테이블을 다룬 다음 물리적 프레임을 다룰 것입니다. 이해를 돕기 위해 가상 페이지에는 '페이지'라는 용어를, 물리적 페이지에는 '프레임'이라는 용어를 사용한다는 점에 유의하세요. Struct page struct page에 hash_elem 멤버를 추가해서 해당 페이지를..
2023.06.16