전체 글 99

메모리, 제어장치, 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

[Node.js] 팀 프로젝트: 뉴스피드 서비스

이번 주제는 뉴스피드 구현이었고 주제부터 정하는 형식이었다. 우리 조는 팀원 한 분께서 탐정들의 영업비밀이라는 프로그램 얘기를 꺼내주셨고, 그 얘기를 들으니 로톡의 해결사례 페이지가 떠올라서 말씀을 드리게 되었다. 그렇게 최종적으로 나온 주제는 법률 문제에 익숙하지 않은 일반인들을 대상으로 한 뉴스피드였다. 모여서 관련 고민도 나누고 전문 법조인들의 답변도 얻는 느낌을 구상했다. 나는 댓글 작성, 조회, 수정, 삭제, 그리고 소셜 로그인 구현을 맡았다. 먼저 post로 받아와서 인증 미들웨어를 거쳐 로그인이 되어있는(=토큰이 있는) 유저인지 확인한다. board는 현재 구현 중인 comment가 달릴 게시글이다. 댓글은 무조건 게시글에 종속되어있고 일반적인 게시판 형식을 떠올렸을 때 게시글 없이 댓글만 ..

💻/프로젝트 2024.02.16

카카오 로그인 api 구현 오류 기록

1. OAuth2Strategy requires a clientID option 원인: .env 파일의 환경변수를 못 읽어와서 생기는 오류 해결: clientID 라고 써야하는데 clientId 라고 썼음 오타 수정 2. Unknown authentication strategy "kakao" 서버 열고 http://localhost:3010/api/log-in/kakao 링크로 들어갔을 때 뜨는 오류 메시지 원인: kakao(); 구문이 빠졌음 (빠짐없이 작성한게 맞고 결론적으로는 오타였음) 해결: “kakao-login“ -> “kakao" 수정 3. bad client credentials 원인: 카카오 앱 생성시 보안을 위해 ClientSecret 설정을 활성화했으나 코드에서는 ClientSecre..

💻/프로젝트 2024.02.14

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

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