🪩 35

[Nest.js] Select 'Retry as Sudo' to retry as superuser. 에러

Failed to save 'app.service.ts': Insufficient permissions. Select 'Retry as Sudo' to retry as superuser. Nest.js 실습 과정에서 vscode를 이용해 app.service.ts 파일의 함수를 조금 수정했는데, 저장을 시도하니 저런 오류 메시지가 떴다. cli 설치 과정에서 이런저런 오류 때문에 sudo 명령어를 이용하여 프로젝트를 생성했었는데 그것이 문제가 된게 아닐지 의심중.. 아무튼 해결 방법 echo $USER // 유저 이름 출력 echo $HOME // 홈 디렉토리 출력 먼저 해당 명령어들로 유저 이름과 홈 디렉토리를 알아낸다. sudo chown -R [유저 네임] [홈 디렉토리] 그런 다음 해당 명령어를 ..

🪩/기타 2024.03.07

디자인 패턴(Design pattern) : 전략 패턴

디자인 패턴이란? 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것 (출처: 위키백과) 말이 어렵게 정리되어 있지만, 간단하게 특정한 패턴을 가진 문제 해결 방식을 정의한 것이라고 이해했다. 디자인 패턴 중에서도 전략 패턴을 학습해봤다. 전략 패턴이란? 객체가 할수있는(나올수있는?) 행위들을 전략으로 정의하고, 행위의 수정이 필요해지면 전략만 수정함으로 행위의 수정까지 가능하도록 만들어주는 패턴 나의 언어로 정리한다고 한건데도 말이 어렵다. 먼저 달라지는 부분과 달라지지 않는 부분을 분리하는 캡슐화 작업이 필요하다. 그런 다음 인터페이스를 사용..

🪩/기타 2024.02.26

메모리, 제어장치, CPU

메모리 CPU -> 메모리 : 접근 속도 느림 CPU -> 레지스터 : 접근 속도 메모리에 비해 빠름 메모리: 책장에 책을 꽂아둠 레지스터: 책상에 책을 올려둠 그래서 ALU가 계산 후 내보내는 정보는 일시적으로 레지스터에 먼저 저장 제어장치 ALU는 단순 계산기인 반면 제어장치는 CPU의 구성 요소 중 가장 정교하게 설계된 부품 제어 신호를 내보내고 명령어를 해석 clock 클럭 신호 컴퓨터의 부품이 움직이는 시간 단위 컴퓨터의 작업 주기 제어장치는 외부로 전달되는 제어신호 / 내부로 ‘’ 둘로 나뉨 CPU 제어장치 ALU 레지스터 레지스터 프로그램을 실행하면 메모리에 올라감 임시 저장 장치 다음에 읽을 것을 프로그램 카운터에 지금 읽는 것을 명령어 레지스터에 저장 명령어 싸이클 CPU가 하나의 명령어..

🪩/기타 2024.02.23

객체 지향 설계 5원칙 (SOLID)

SOLID란 객체 지향 프로그래밍 설계에 필요한 다섯 가지 원칙의 앞글자를 따서 만든 것이다. 단일 책임의 원칙 (Single Responsibility Principle, SRP) 하나의 클래스는 하나의 책임만 가져야 한다. (= 한가지 일만 해야한다) 클래스나 모듈을 변경할 이유는 하나뿐이어야 한다. 개방-폐쇄 원칙 (Open-Closed Principle, OCP) (개체의 행위)확장에는 열려있고, (개체자체)변경에는 닫혀있어야 한다. 클래스의 기존 코드에 영향을 주지 않고 소프트웨어에 새로운 기능이나 구성요소 추가가 가능해야함 인터페이스나 상속을 사용하면 부모클래스의 수정을 이용하지 않고 사용 가능 리스코프 치환 원칙 (Liskov substitution principle, LSP) 서브(자식)타..

🪩/기타 2024.02.22

계층형 아키텍처 패턴 (Layered Architecture Pattern)

아키텍처 패턴은 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시한다. 각각의 시스템들과 그 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함된다. 그중에서 계층형 아키텍처 패턴이란, 시스템을 여러 계층으로 분리하여 관리하는 방법으로 현재 가장 많이 쓰인다고 한다. 목표는 각 계층을 명확하게 분리하여 유지하고, 각 계층이 자신의 바로 아래 계층에만 의존하게 만드는 것이다. 클라이언트가 서버에 요청 - 프레젠테이션 ⬇️ 서버는 해당 요청을 바탕으로 비즈니스 로직 처리 - 비즈니스 로직 ⬇️ 비즈니스 로직에서 데이터베이스가 필요하면 - 데이터베이스 ⬇️ 데이터베이스를 가져옴 컨트롤러: 클라이언트의 요청을 받고 응답 반환 서비스: 클라이언트의 요구사항 처리, DB정보가 필요하면 리..

🪩/기타 2024.02.21

클래스, 상속, 추상 클래스, 인터페이스

오늘은 객체지향에서 중요한 부분이라고 강조해주신 네가지를 내가 이해할 수 있는 정도로 정리해봤다. 객체지향 프로그래밍이란 정말 간단하게 압축해서 말하면 클래스로 코드를 짜는 것 클래스 이전 글 참고 상속 a 클래스의 속성과 메서드를 b 클래스가 물려받는 행위를 상속이라고 함 불필요한 코드 반복을 줄일 수 있음 extends 키워드를 사용하여 부모클래스(=슈퍼클래스)를 확장 상속 오버라이딩은 덮어 쓰는 행위를 뜻함 자식클래스가 부모클래스 함수의 동작을 새롭게 정의하는 것 서브타입 -> 슈퍼타입 : upcasting 슈퍼타입 -> 서브타입 : downcasting 추상 클래스 인스턴스화를 할수없는 클래스 상속을 통해 자식클래스에서 메서드를 강제로 제각각 구현하는 용도 abstract 를 사용하여 정의 (e..

🪩/기타 2024.02.20

객체(object), 클래스(class), 인스턴스(instance)

~오늘의 수강 과목~ 1. Node.js 심화 (이용우 튜터님) _ 객체 지향 프로그래밍(OOP) 공부하다보니 낯선 용어가 많이 나오는데 머릿속에서 구조가 잘 안 잡히는 느낌이라 이걸 먼저 잡고 다시 시작했다. 개인적으로 처음 공부하는 개념들은 연관관계를 파악하고 시작하는게 제일 효율적으로 공부할 수 있는 방법인 것 같다. 객체(object)는 소프트웨어로 구현할 대상(물체나 개념..) 그 자체 구성 요소 정보(data) 그 정보를 처리하는 행동(function 혹은 method) 클래스(class)는 객체를 만들기 위한 템플릿 구성 요소 속성(attribute) : 객체의 성질을 결정함 (ex: 팥 붕어빵의 "팥"이라는 속성) 메서드(method) : 객체의 성질을 변화시키거나, 객체에서 제공하는 기..

🪩/기타 2024.02.16

🔥💖스파르타 코딩클럽 가족돌봄청년지원 캠페인💖🔥

https://spartacodingclub.kr/csr_youngcarer?origin=shared 가족돌봄청년 지원 캠페인 | 스파르타코딩클럽 모든 바쁨이 희망이 될 수 있도록 spartacodingclub.kr 현재 열심히 공부중인 스파르타 코딩클럽에서 굿네이버스와 함께 너무! 좋은! 이벤트를 진행하고 있길래 소개하는 차원에서 글을 올리게 되었다. 이벤트 페이지에 방문해보면 알겠지만 몇 초만 시간을 내서 버튼 한 번 누르면 스파르타 코딩클럽에서 나의 이름으로 대신 기부를 해준다! 참여 방법 자체가 쉽기도 했고, 무엇보다 이렇게 뜻깊게 쓰인다고 하여 주변 친구들에게도 조금씩 소개하고 다녔다. (해줬는지는 모르겠지만..) 나의 이름으로 된 기부증서.. 갖고싶지 않으신가요 여러분 이렇게 대감집 곳간 털어..

🪩/기타 2024.02.13

[AWS] ec2 ssh 터미널 진입 방법

먼저 터미널을 켜고 키페어가 있는 폴더 경로로 들어간다. 나같은 경우는 다운로드 폴더에 pem 파일을 받아놨기 때문에 cd Downloads 다운로드 폴더로 이동했다. sudo chmod 400 sparta_keypair.pem 먼저 키페어 파일의 권한을 읽기만 가능하도록 수정한다. ssh -i 키페어파일명.pem ubuntu@aws에서 확인한 ip번호 그리고 해당 명령어를 입력하면 환경이 바뀌며 ssh로 접속이 가능하다. 그후에는 git clone을 이용하여 프로젝트를 다운받고 똑같이 cd 명령어로 경로를 변경한 뒤 sudo -s 명령어를 입력하여 루트계정으로 전환하고 yarn 패키지, pm2 등을 설치하는 과정 등이 있다. pm2 start app.js pm2를 이용하면 서버가 꺼지지 않도록 유지가 ..

🪩/기타 2024.02.13

[mysql] mac m1Homebrew, mysql 설치 방법

Homebrew 설치 mysql을 설치하려면 먼저 homebrew가 깔려있어야 한다. 터미널을 열고 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 해당 명령어로 설치를 해준다. 근데 이 글의 제목을 검색하고 들어오신 분이라면 맥북 m1을 사용하고 계신거겠죠... 그럼 여기서 끝이 아니고 입력해야할 명령어가 조금 더 있다. (설치 직후 터미널을 통해 관련 안내가 나온다) echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/{사용자명}/.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv..

🪩/기타 2024.02.07