분류 전체보기

운영체제의 기본 구조에서 Interrupt, Trap, System Call은 프로세서와 커널, 디바이스 간에 매 순간마다 발생하는 핵심적인 이벤트들이다. 이 3가지에 대해서 알아보고자 한다. 우선 현대의 운영체제들은 대부분 Dual mode(듀얼 모드)로 동작한다. 듀얼 모드란, User mode(사용자 모드)와 Kernel mode(커널 모드)를 아우르는데 User mode는 일반적인 애플리케이션이 동작되는 환경이고 Kernel mode는 커널이 구동되는 환경으로 이 모드에서는 OS 시스템에 영향을 줄 수 있는 명령을 내릴 수도 있다. (이것이 Dual mode를 만든 주요 원인이다. 사용자 단계에서 시스템에 함부로 접근할 수 없도록 하기 위함이다.) 일반적으로 trap과 interrupt가 발생할 ..
· 정보
익스텐션으로 알록달록하게 꾸며놓은 vscode를 사용하다가 intellij를 사용하게 되면 투박하다는 느낌을 지울 수 없다... PyCharm, WebStorm, Datagrip 등등 Jetbrain 사의 소프트웨어는 모두 유사한 UI를 갖고 있고 인텔리제이 또한 그렇다. 물론 이게 심플하고 편안하다고 느낄 수도 있다! 개인 취향 차이니까... 그런데 새로운 UI를 베타서비스로 제공하고 있는 것을 알게되어 변경해보았다. 설정방법은 매우매우 간단하다. 인텔리제이에서 Setting(Appearance)에 들어간 후, 아래와 같이 New UI 탭에 들어가 Enable new UI 체크박스를 활성화시키고 적용하면 된다! 단, 새로운 UI가 적용되려면 인텔리제이를 재시작해야 한다. 인텔리제이가 재시작되고 나면, ..
스프링부트를 이용해 프로젝트를 생성하고 별도의 설정을 건드려주지 않으면 로그는 info 단계 상위만 출력된다. (로그 단계 순서: trace-debug-info-warn-error) 따라서 만약 그 하위 로그 단계도 출력하고 싶다면 별도로 설정을 변경해주어야 한다. 현재 스프링 생태계에서 많이 사용되는 로깅 라이브러리로 logback과 slf4j가 있고, 이 두 라이브러리의 설정을 건드려주면 로깅에 대한 설정을 변경할 수 있다. 오늘은 이 두 라이브러리가 아닌, 간단하게 속성파일을 변경하여 외부 설정정보를 바꿔주는 방법으로 출력 로그 단계를 변경해보고자 한다. application.properties: 스프링부트가 동작하는데 필요한 설정정보를 담아두는 파일로, 외부 설정 정보를 변경해줄 수 있다. 예전에..
이전에 들었던 김영한님의 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 강의에 대해 복습을 하기 위해 요약을 해보았다. 라이브러리 Apache 클라이언트에서 요청하는 HTTP 요청을 처리하는 웹서버 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이 등장하게 되었다. Tomcat(톰캣) WAS Java EE 기반으로 만들어져, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다. 컨테이너란? 동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈 서블릿(servlet)이란? 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스. java.servlet.package에 정의된 인터페이스로서 서블릿..
옵셔널 체이닝 연산자 ES11(ECMAScript2020)에서 도입된 옵셔널 체이닝(optional chaning) 연산자 ?. 는 좌항의 피연산자가 null 또는 undefined 인 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다. 예제는 다음과 같다. var elem = null; var value = elem?.value; console.log(value); // undefined 옵셔널 체이닝 연산자가 등장하기 전에는 논리 연산자 && 를 활용해 단축 평가를 했었으나, 옵셔널 체이닝 연산자를 활용하면 좀 더 깨끗한 코드를 작성할 수 있다. 하지만 논리 연산자 && 를 활용하는 것과 옵셔널 체이닝 연산자 ?. 를 활용하는 것에는 분명한 차이가 있는데, 다음과 같다..
변수 호이스팅 console.log(number); var number; 위의 코드를 실행해보면 console.log(number); 는 어떤 값이 출력될까? 자바스크립트를 처음 접한다면 ‘당연히 에러가 발생하지 않을까?’ 라고 생각할 수 있다. 하지만 undefined 가 출력된다. 분명 자바스크립트의 소스코드도 여느 프로그래밍 언어와 마찬가지로 한줄씩 차례대로 실행되는데 어떻게 이게 가능한걸까? 바로 자바스크립트의 호이스팅에 의해 그렇다. 호이스팅에 대해 알아보고자 한다. 호이스팅(Hoisting)은 변수 또는 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징이다. 따라서 위의 코드를 살펴볼 때, 실제 동작 순서는 number 변수가 선언되고 나서 콘솔 코드가 실행되게..
· 정보
DNS에 등록하지 않은 도메인을 로컬 설정을 통해 접근할 수 있다. macOS 환경에서 해당 방법을 알아보고자 한다. 우선, 위와 같이 sudo 권한을 이용해 /private/etc 에 있는 hosts 파일을 vim, nano와 같은 편집기를 활용해 연다. (vim이 익숙하지 않다면, vim 사용법은 아래 내용을 참고할 수 있다.) https://zeddios.tistory.com/122 왕초보를 위한 vim 사용방법 ㅎㅎ안녕하세요 :) 오늘은 vim에 대해서 알아볼거에요. 오늘 우리가 할 거는 1. vim이 무엇이냐?2. vim을 어떻게 쓸 것이냐? 입니다.시작해볼게요 :) 참고로 저도 못해서 ㅠㅠ 이 글을 쓰는이유는 알 zeddios.tistory.com 아마 내용을 변경하지 않았다면 초기 내용은 위..
· 정보
TypeORM에 이어 타입스크립트 ORM으로 널리 사용되고 있기도 하고, 데이터베이스 마이그레이션에서도 사용되는 Prisma에 대해 알아보고자 한다. TypeORM과는 또다른 사용 방법을 가지고 있으며, 자체적으로 제공하는 스키마 형성 방식을 이용하면 SQL 쿼리를 직접 짜지 않아도 되는 장점이 있으며, 제공하는 ORM 메서드들 또한 다른 ORM과 비교했을 때 풍부함을 느낄 수 있다. 특히 서버리스 오픈소스 플랫폼인 Supabase에서 공식적으로 데이터베이스를 관리할 때 Prisma를 권장하고 있으며, 뿐만 아니라 여느 RDBMS와 같이 Prisma Studio라는 자체 GUI도 제공하는데, 이는 소프트웨어 설치가 필요하지 않아 더욱더 편리하게 느껴졌다. Prisma란? Node.js 및 TypeScr..
말도 못하는 감자
'분류 전체보기' 카테고리의 글 목록 (3 Page)