TIL (Today I Learned)87 [TS] TypeScript 기본 & 기본 타입2 본 포스팅은 Maximilian Schwarzmüller 님의 강의를 바탕으로 작성되었습니다. Tuple 타입스크립트는 튜플 타입을 제공한다. 위와 같이 객체 타입을 각각 지정하여 array구문 안에 각 요소의 타입을 지정하면 튜플로 명시된다. 하지만, 안타깝게도 push에 대한 보호가 안된다. 대신 array의 길이에 대한 것과 해당 인덱스의 타입은 보호할 수 있다. 다음과 같이 push된 "admin"은 존재하는 것을 볼 수 있다. enum 타입스크립트에만 있는 타입(자바스크립트에 없다). 기본적으로 enum 값이 0부터 시작하지만, 만약 수정하고 싶다면 등호(=)를 사용하여 변경할 수 있다. 또한 string 데이터로 명시할 수도 있다. union 두개 이상의 타입을 명시하고 싶을 때 union 타.. 2023. 1. 18. [TS] TypeScript 기본 & 기본 타입 본 포스팅은 Maximilian Schwarzmüller 님의 강의를 바탕으로 작성되었습니다. Core Types 타입스크립트는 자바스크립트보다 더 많은 타입들을 명시할 수 있다. 1. number : int, float, double .. ➡️ 모든 숫자들, 정수와 실수의 차이가 없이 number 타입을 사용. 2. string : 'Hi', "Hi", `hi` ➡️모든 text value 3. boolean : true, false ➡️ 오직 true or false. 위 세가지의 코어 데이터 타입을 어떻게 사용할 수 있을까. number 위와 같은 함수를 호출한 경우 tsc app.ts 를 터미널에서 호출하여 .js 파일로 컴파일 시키면 아무런 문제없이 7.8이 찍힌다. 하지만 number1 에 s.. 2023. 1. 18. [pintOS 3] Thierry Snas의 Virtual Memory 개요 https://www.youtube.com/watch?v=HWxMH_SNnNM&ab_channel=ThierrySans 토론토 대학 pintOS강의 Thierry Sans의 토론토 대학 강의를 참고하여 작성하였습니다. 지난 프로젝트2에서는 사용자 가상 메모리는 다음과 같이 배치됐다. USER_STACK +----------------------------------+ | user stack | | | | | | | | V | | grows downward | | | | | | | | | | grows upward | | ^ | | | | | | | +----------------------------------+ | uninitialized data segment (BSS) | +-------------.. 2023. 1. 3. [CS] Kaist PintOS User Programs, System Call #5 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다 Pintos Project2 systemcal User program에서 write를 호출하면 syscall.c에 있는 write함수를 호출한다. write함수는 syscall3 함수를 호출한다. syscall3함수는 3개의 인자를 받아 User Stack에 쌓고 Interrupt Vector Table의 syscall_handler를 호출한다. 프로젝트에서 구현할 부분은 syscall_handler의 내용이다. 여기 채워져야할 systemcall의 'number'는 syscall_nr.h에 정의되어있다. System call handler 구현 목표 1. system call handler가 system call number를 사.. 2022. 12. 27. [C 기초 문법] 이중 포인터 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 두 배열을 교환 (Swap) 하려면? 방법 1 : 각 원소에 대해 swap 연산 수행 👉 비효율적 방법 2 : 이름만 바꿔줄 수는 없을까? 🤔 #1 이중 포인터 포인터는 변수 모든 변수(포인터)는 그 변수를 가리키는 포인터를 가질 수 있다. 즉, 포인터를 가리키는 포인터를 생성할 수 있다. int a = 10; int* p = &a; int** dP = &p; a = 10 *p = 10 **dP = 10 (이중 참조) 이전에 원본값을 바꾸기 위해서 주소값을 함수의 인자로 사용했다. 이처럼 포인터를 바꾸기 위해서 포인터의 주소값을 함수의 인자로 사용하고, 이를 이중 포인터가 매개변수로 사용된다. 방법 2 : 포인.. 2022. 12. 26. [C 기초 문법] 포인터와 배열 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 배열 이름은 연속된 메모리 공간의 시작 주소 배열의 이름 전달 👉 메모리 주소 전달 - 배열을 전달 한 것과 같은 효과 (call-by-reference) - 배열의 원소 접근가능 #1 포인터의 산술 연산 (Pointer Arithmetic) 사용 가능 산술 연산 : +, -, ++, -- 포인터가 가리키는 대상의 data type의 크기(bytes)만큼 증/감 주의사항 *(p+1) vs (*p+1) : 포인터 산술 연산 vs 포인터 간접 참조한 값 연산 *++p vs ++*p : 포인터 산술 연산 vs 포인터 간접 참조한 값 연산 *(asterisk)의 위치에 따라 결괏값이 달라질 수 있다. #2 포인터로 다.. 2022. 12. 26. [C 기초 문법] 포인터 주의사항 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. #1 원본 값을 보호 - "const" 함수에서 포인터를 매개인자로 받을 때 원본 값을 보호하기 위해서는 'const'를 사용한다. 그렇게 되면 함수 내에서 상수 취급을 한다. const의 위치에 따라 상수 취급하는 대상이 달라진다. 1. const int *ptr : 간접 참조된 위치의 값을 상수 취급한다. *ptr = 100; // error prt = &b; // okay 2. int* const ptr : 포인터 변수를 상수 취급한다. *ptr = 100; // okay ptr = &b; // error #2 Local variable 주소 반환 ? 함수 내 지역 변수의 주소를 반환하면, 함수가 종료되는.. 2022. 12. 25. [C 기초 문법] 포인터? 이 포스팅은 한국기술교육대학교 김덕수 교수님의 'C언어 Lv2' 강의를 바탕으로 작성됐습니다. 포인터에 대한 이해가 부족하여 포스팅을 작성하게 됐습니다. 제 이해를 위해 작성하는 포스팅이라, 최대한 구어체로 작성될 수 있으며 도움이 안 될 수 있습니다. &(Ampersand) : "변수의 주소" (시작 주소) 메모리 주소의 길이 = Address bus의 크기 (word) 배열의 이름 = 배열 시작 주소 " Call by reference는 원본이 전달되는 것과 유사하다." 그렇다면 다음 두 가지 궁금점이 생긴다. 1. 메모리 주소를 전달받을 매개변수는 무엇인가? 2. 해당 주소의 값을 변경하려면 어떻게 해야하는가? #1 포인터 ( Pointer or Pointer Variable) 1. 주소를 저장하는.. 2022. 12. 25. [CS] Kaist PintOS User Programs, Passing the arguments #4 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다. 이 문서는 카이스트 핀토스 프로젝트 가이드라인을 정리한 글입니다. Part 2 : User Program 현재 핀토스는 명령어 전체 한 줄을 통째로 읽는다. 'echo x y z' thread name : 'echo x y z' find program with file name : 'echo x y z' arguments : 'echo', 'x', 'y', and 'z' are not passed 각각의 인자가 구분되도록 수정해야한다. thread name : 'echo' find program with file name : 'echo' pushl the arguments(x, y, z) to user stack. 수정해야 하는 .. 2022. 12. 23. 이전 1 2 3 4 5 6 7 ··· 10 다음