분류 전체보기 268

[마이크로프로세서] 개요

Micro Processor 개요 지난 컴퓨터 구조 시간에서 배웠듯이, 컴퓨터는 하드웨어와 소프트웨어로 구성되는 명령어를 처리하는 기계다. 우리가 일반적으로 사용하는 범용 컴퓨터(PC)는 그 구조 내에 다양한 부품과 기능들을 내장하고 있어, 복잡한 작업들도 손쉽게 처리할 수 있다. 그렇다면 컴퓨터의 핵심이 되는 기본 구성 요소는 무엇일까? 바로 CPU, 메모리(주 메모리, 보조 메모리), 입출력 장치다. 이러한 핵심 부품들이 통합된 장치를 컴퓨터로 정의할 수 있다. 이때, 마이크로컴퓨터라는 용어는 이러한 핵심 부품들을 포함하면서도, 마이크로프로세서를 중심으로 간소화된 구조를 가진 컴퓨터를 의미한다. 초기의 마이크로컴퓨터는 대형 컴퓨터나 미니 컴퓨터에 비해 작고, 특정한 목적에 맞춰진 작업을 수행하도록 설..

[딥러닝] 비선형 회귀 분석(2)

Non-linear regression 본문 구현 import numpy as np import matplotlib.pyplot as plt from sklearn.kernel_ridge import KernelRidge # 1. 비선형 데이터 생성 rng = np.random.default_rng(0) X = rng.uniform(0, 10, 100)[:, np.newaxis] y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0]) # X 값을 정렬 X_sorted = np.sort(X, axis=0) # 플로팅 plt.figure(figsize=(10,6)) plt.scatter(X, y, color='blue', ..

CS/딥러닝 2023.09.26

[딥러닝] 비선형 회귀 분석(1)

Non-linear Regression 개요 지난 시간에는 데이터를 선형적으로 모델링하는 선형 회귀의 기본 개념과 그 적용 방법에 대해 다루었다. 선형 회귀는 많은 상황에서 유용하게 쓰이지만, 현실 세계의 데이터는 종종 복잡한 패턴과 비선형 관계를 가질 때가 많다. 선형 회귀만으로는 이런 복잡한 관계를 정확하게 포착하기 어렵다. 이번 시간에는 선형 모델의 한계를 극복하기 위해 도입되는 비선형 회귀 분석을 중점적으로 다루어 보겠다. 비선형 회귀는 데이터의 복잡한 패턴을 더 정밀하게 잡아내는 데 효과적이다. 그리고 비선형 현상을 선형적으로 근사하는 여러 방법과 원리도 함께 살펴볼 것이다. 이를 통해 데이터의 복잡한 구조를 더욱 깊게 이해하고, 더 정확한 예측과 분석을 수행할 수 있는 기초를 다질 수 있을 것..

CS/딥러닝 2023.09.25

[컴퓨터구조] RAID의 정의와 종류

RAID 개요 복수의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 RAID(Redundant Array of Independent Disks) 방식은 수명이 있는 보조기억장치의 한계를 극복하고자 개발된 기법이다. 이 시스템은 데이터의 안정성 혹은 성능 향상을 중심으로 설계되었다. 이번 시간에는 이러한 RAID 시스템을 적용한 하드디스크에 대해 알아보는 시간을 가지도록 하자. 본문 독립적인 보조기억장치를 하나로 묶는 것이 왜 데이터의 안정성, 그리고 높은 성능과 관련이 있을까? 이는 RAID의 종류(Level)를 알아보면 해답이 된다. RAID의 종류 RAID 0은 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식이다. 주로 성능 향상을 목적으로 사용하는데, 이는 데..

CS/컴퓨터구조 2023.09.13

[Python] matplotlib(1)

matplotlib 개요 matplotlib는 파이썬의 시각화 라이브러리로, 다양한 그래프와 차트를 생성하는 데 사용된다. 보통 numpy 혹은 pandas와 묶어서 배열을 바로 그래프로 시각화할 때 자주 사용하는데, 이번 시간에는 간단한 예제들을 통해 어떻게 그래프를 플로팅하는지 알아보도록 하자. 본문 설치 및 임포트 pip install matplotlib 커맨드창에 matplotlib를 설치하기 위해 해당 명령어를 실행시키자. from matplotlib import pyplot as plt import matplotlib.pyplot as plt 기본적인 그래프 모듈은 pyplot을 사용하며, 임포트는 관례적으로 plt를 약어로 사용한다. 그래프 그리기 pyplot.plot() pyplot.sho..

Language/Python 2023.09.12

[딥러닝] 머신러닝과 1차 선형 회귀

머신러닝 개요 개요 인공지능(Artificial Intelligence)은 인공적인 방법을 통해 인간의 지능을 모방하는 컴퓨터과학의 분야 중 하나다. 이는 합리적인 추론을 통해 문제를 해결하거나, 기계가 세상에 대한 지식을 표현하거나, 경로를 추적하거나, 데이터를 학습하여 입력과 출력 사이의 함수를 찾는 등 다양한 분야에서 응용되고 있다. 즉, 기계가 인간처럼 사고하고 학습하며 작업을 수행하는 능력을 가진 것을 인공지능이라고 한다. 이러한 인공지능은 매우 넓은 분야로서, 여러 하위 분야를 포함하고 있다. 주요 분야로는 머신러닝(Machine Learning), 로보틱스(Robotics), 전문가 시스템(Expert Systems), 자연어 처리(Natural Language Processing), 컴퓨터..

CS/딥러닝 2023.09.11

[C++] 중복 처리 (2)

본문 중복 인덱스 처리 #include #include #include #include int main() { unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); std::mt19937 generator(seed); std::vector word_pairs = { {"game", "게임"}, {"start", "시작하다"}, {"smart", "똑똑한"}, {"string", "문자열"}, {"combination", "조합"}, {"pair", "쌍"} }; 다음과 같이 벡터에 단어와 그 정의가 저장되어 있고, 여기서 무작위로 5개의 문제를 낸다고 해보자. 이때 중복된 문제가 없으려면 어떻게 해야 할까? std::sh..

Language/C++ 2023.09.08

[C++] 중복 처리 (1)

중복 처리 개요 지난번에 업로드된 게시글에서는 다양한 난수 생성 방법들을 알아보았다. 이러한 난수를 활용하여 시스템을 설계하게 되면, 중복 문제가 불가피하게 발생할 수 있다. 특히 무작위로 고유한 값을 생성하거나 선택하는 과정에서 중복은 예기치 않은 오류를 발생시킬 수 있다. 따라서 중복 처리는 이러한 시스템에서 필수적인 단계가 되어야 한다. 이번에는 난수 생성 시 발생하는 중복 문제와 그를 효과적으로 해결하는 방안들에 대해 살펴볼 예정이다. 특히, 중복된 값 자체의 처리와 중복 인덱스 처리, 이 두 가지 주제에 초점을 맞추어 알아보도록 하겠다. 본문 중복 제거 std::vector v = { 7, 7, 1, 2, 3, 5, 5, 2, 8 }; 다음과 같이 vector 배열에 중복된 값이 있다고 가정해 ..

Language/C++ 2023.09.07

[Dictionary] 영어 단어 시험지 ver 1.1 (코드 리뷰) with Notion

영어 단어 시험지 코드 리뷰 본문 구성 ver 1.1 기준으로 해당 프로그램은 다음과 같이 API를 호출하는 부분(get_api.h/get_api.cpp), JSON 파일을 파싱해 단어를 저장하는 부분(get_vocabulary.h/get_vocabulary.cpp), 시험을 출력하는 부분(test.h/test.cpp), 메인 함수(main.cpp)로 구성되어 있다. 즉, 프로그램을 실행하면 Notion의 API를 호출하여 데이터베이스와 연결하고, 단어들을 JSON 구조로 추출하여 DOS 창에서 단어가 나오면 정답을 입력하게 되어 있다. 자세한 코드는 해당 리포지토리를 확인하면 된다. API 호출 저번 게시글에서도 언급했듯이, C++에서 Notion API를 호출하는 것은 번거로운 작업이다. 그래서 sy..

Program/Dictionary 2023.09.06

[Dictionary] 영어 단어 시험지 ver 1.1 (사용법) with Notion

ver 1.1 개요 지난 ver 1.0과 비교하였을 때, 메인 함수에 묶여 있는 코드들을 헤더 파일과 구현 파일로 분리하여 코드의 재사용성과 가독성을 보완했다. 또한 이번 게시글에서는 간단한 사용 방법을 설명하고, 다음 게시글에서는 코드 리뷰를 진행해 보도록 하겠다. 본문 사용법 해당 시험지를 사용하기 위해선 Notion의 API 키와 단어장이 저장되어 있는 데이터베이스의 ID가 필요하다. 먼저 노션의 API를 호출하기 위해 key를 발급받아 보자. 해당 링크(노션 Developers)를 타고 들어가 View my integrations(내 통합)으로 이동한다. 그 후 Create new intergration을 클릭해 새 API를 만든다. 여기에 어느 계정의 API 키를 받아올 것인지를 Associat..

Program/Dictionary 2023.09.05