이 메일 정규 표현식

const emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/;
emailRegex.test(testEmailAddress); // true || false

 

  • ^[a-z0-9._%+-]+: 이메일의 로컬 파트에서 영어 소문자 알파벳, 숫자, 점(.), 밑줄(_), 퍼센트(%), 플러스(+), 하이픈(-)을 허용
  • @[a-z0-9.-]+: 도메인 부분에서 영어 소문자 알파벳, 숫자, 점(.), 하이픈(-)을 허용
  • \.[a-zA-Z]{2,}$: 최상위 도메인 부분에서 최소 2자 이상의 영어 알파벳을 허용

 

이메일의 시작과 끝에 특수문자 있는지 확인

 

const specialChars = /[!#$%&'*+/=?^_`{|}~-]/;
const localPart = email.split('@')[0];

if (specialChars.test(localPart[0]) || specialChars.test(localPart[localPart.length - 1])) {
  return false;
}

 

특수문자가 연속으로 사용되었는지 확인

for (let i = 0; i < localPart.length - 1; i++) {
  if (specialChars.test(localPart[i]) && specialChars.test(localPart[i + 1])) {
    args.constraints[0] = 'consecutiveSpecialChars';
    return false;
  }
}

하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다. 

- 한 프로세스의 상태는 프로세스 제어 블록 (PCB, process controll block)에 저장되어 있다.

- 문맥을 교환하는 동안 유용한 작업을 수행할 수 없기 때문에  너무 빈번한 문맥교환은 큰 오버헤드가 발생한다.

 

*프로세스 제어 블록 : 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조

*오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 

 

Switching cases

- 멀티테스킹

- 인터럽트 처리

- 사용자 모드와 커널 모드 간 전환

 

 

 

참고자료

https://ko.wikipedia.org/wiki/%EB%AC%B8%EB%A7%A5_%EA%B5%90%ED%99%98

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

[ OS ] 세마포어 와 뮤텍스  (0) 2024.06.19
[OS] 경쟁상태 (Race Condition)  (1) 2024.06.19
[ OS ] 시스템 콜 (system call)  (0) 2024.06.18
일반적인 프로그램들은 사용자 모드에서 실행되므로 커널 모드에 대한 직접적인 접근이 불가능하다. 하지만 커널에 접근할 수 없으면 사용자 모드의 프로세스들이 파일을 쓰거나 불러올 수 없고 그래픽 처리와 같은 거의 모든 작업을 할 수 없다. 따라서 커널에 요청하여 커널 모드에서 처리하고 그 결과를 사용자 모드의 응용 프로그램에게 전달하는 것이 바로 시스템 콜이다. 시스템 콜은 프로그램의 거의 모든 코드의 실행에서 발생하며 파일 생성이나 쓰기 또는 읽기, 키보드 입력, 그래픽 출력, 스레드 생성 및 제어 같은 것도 시스템 콜을 통해 커널에 요청하여 커널 모드에서 처리한다. 

 

- 시스템 호출 또는 간단히 시스콜(syscall) 이라도 불린다.

- 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스이다.

- 응용 프로그램에서 커널의 서비스를 사용하는 방법

- 프로그래밍 언어에서 지원하지 않는 기능에 대하여 운영 체제의 루틴을 호출하여 이용하는 것

 

시스템 호출의 세 가지 기능

1. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 한다.

2. 시스템 호출을 하면 사용자 모드에서 커널 모드로 바뀐다.

3. 커널에서 시스템 호출을 처리하면 커널 모드에서 사용자 모드로 돌아가 작업을 계속한다.

 

예를 들어

실행 중인 프로그램(응용프로그램)에 있는 함수가 아닌 커널에 있는 함수(파일 생성이나 쓰기 또는 읽기)를 호출할 때 사용되는 방법

 

시스템콜은 운영 체제의 커널이 제공하는 서비스에 프로그램이 접근할 수 있게 해주는 인터페이스

 

참고 자료

'컴퓨터 공학 > 운영체제' 카테고리의 다른 글

[ OS ] 세마포어 와 뮤텍스  (0) 2024.06.19
[OS] 경쟁상태 (Race Condition)  (1) 2024.06.19
[ OS ] 문맥교환 (context switch)  (0) 2024.06.18

라이브러리 설치

$ npm init
$ npm i -D jest ts-jest @jest/globals @types/jest

 

ts-jest config 파일 생성

$ npx ts-jest config:init

 

1.  간단한 테스트 및 셋팅

테스트 작성할 파일 생성 :  "xxx.spec.ts" 혹은 "xxx.test.ts" 로 생성

      app.spec.ts 에 아래코드를 작성

function sum (a: number, b: number): number {
    return a + b;
}

test(`1 + 2 는 3이다.`, ()=>{
    expect(sum(1, 2)).toBe(3);
})

      

      package.json 에 아래 설정 추가

{
  ...
  "scripts": {
    "test": "jest"
  }
  ...
}

 

      터미널에서 테스트 실행

 $ npm test
 
 PASS  ./app.spec.ts
  ✓ 1 + 2 는 3이다. (1 ms)

 

참고자료

https://kulshekhar.github.io/ts-jest/docs/getting-started/installation/

 

먼저 webstorm -> setting 으로 이동

Prettier

 

 

ESLint

+ Recent posts