전체 글 415

Machine Learning 기본적인 용어와 개념

ML(머신러닝)? 머신러닝은 일종에 소프트웨어 입니다. 이 소프트웨어를 개발자들이 만들때 경우에따라선 엄청나게 많은 경우의수를 요구하는 경우가 존재합니다. 예를 들자면 스펨메일 필터같은 것이지요. 어떤 메일이 스펨인지 유효한 메일인지 컴퓨터가 가려내기위해서 개발자가 전부 분기처리하기엔 무리가 있기때문이죠. 그래서 탄생한것이 머신러닝입니다. 이러한 분기처리를 프로그렘자체가 데이터를 보고 학습하는 능력을 같게 하자는 취지에서 시작됐습니다. 무려 1950년도에 Arther라는 사람이 생각해 낸 이론입니다. Supervised learning 어떠한 이미 정해져 있는 데이터를 토대로 학습을 시키는 것입니다. 예를 들자면 어떠한 이미지를통해 이 이미지에 고양이가 있는지 없는지 고양이라는 테그가 달려있는 이미지를 ..

머신러닝 2023.04.16

벡터와 시리즈 기초 개념

시리즈 판다스에서 1차원 데이터를 담는 시리즈 자료형을 제공한다. 1차원 데이터 배열, 인덱스와 값을 가지는 데이터 구조. 시리즈는 열 단위로 데이터를 다루는 데이터프레임에서 각 열을 나타내는 자료형 데이터를 일련의 레이블(인덱스)에 매핑합니다. NumPy 배열과 비슷한 구조이나, 인덱스를 사용하여 각 데이터에 접근할 수 있습니다. 데이터의 순서가 보장됩니다. 예시 `import pandas as pd` # 데이터와 인덱스를 지정하여 시리즈 생성 s = pd.Series(\[1, 2, 3, 4\], index=\['a', 'b', 'c', 'd'\]) print(s) 결과 a 1 b 2 c 3 d 4 dtype: int64 백터 2차원 배열이며 다음과같이 예시를 들 수 있습니다. 벡터는 순서쌍(order..

데이터 분석 2023.04.04

Elastic Beanstalk기본 개념과 내부 구성/ Elastic Beanstalk 통해서Spring boot project 배포

Elastic Beanstalk? - OS설치가 필요 없음(이미 설치가 돼 있다) - JDK 설치가 필요 없음(이미 설치가 돼 있다) - 오토 스케일링, 각종 소프트웨어 구성, 로드벨런서, 모니터링, 업데이트 버전 관리 등등 많은 설정 포함 샘플 어플리케이션 설치 AWS 콘솔에서 Elastic Beanstalk을 검색한후에 네브바에 "환경"탭을 눌러서 기본적인 설정을 한후에 "샘플 에플리케이션"을 채크한후 환경을 빌드하면 된다. 그럼 여러가지 환경을 빌드하고 도메인주소가 나올텐데 들어가보면 샘플애플리케이션이 다음과 같이 띄워져 있고 EC2 인스턴스 콘솔에 가도 새로운 EC2인스턴스가 생성된것을 확인할 수 있다. 여기서 이상한 점을 발견할 수 있는데 도메인으로 들어갈때 요청했던 IP와 EC2 인스턴스에 퍼..

spring boot -> aws ec2 ubuntu 배포 스크립트

기존에 배포 프로세스 이해도를 높히기 위해서 spring boot project를 aws ec2 ubuntu 서버에 자동 재 배포하는 쉘 스크립트 작성을 해봤다. #!/bin/bash # 1. env variable source ./var.sh echo "1. env variable setting complete" # 2. clone delete touch crontab_delete crontab crontab_delete rm crontab_delete echo "2. cron delete complete" # 3. server checking if [ -n "${PROJECT_PID}" ]; then # re deploy kill -9 $PROJECT_PID echo "3. project kill c..

AWS 2023.03.26

spring boot project의 기본적인 배포 흐름

간단한 스프링 프로젝트를 이용해서 ec2에 배포를 도커나 ci/cd 도구 없이 원시적으로 배포를 하는 연습을 해보려고 합니다. (물론 도커, git action같은 ci/cd 도구를 사용하면 훨신 좋겠지만 그전에 배포에 대한 흐름을 파악하기 위한 연습입니다.) 1. 인스턴스 생성 aws에 배포를 할 서버 인스턴스를 대여를해서 배포를 할 서버 컴퓨터를 준비해 놓습니다. 고정 Ip 간단하게 집에서 인터넷이 되는 이유는 통신사에서 연결해놓은 공유기를 통해서 네트워크 통신을 하기 때문입니다. 하지만 통신사 입장에서는 우리집에만 Ip를 할당해 주는 것이 아닙니다. 이때 어떠한 지역에 컴퓨터가 5대가 있는데 이 지역 컴퓨터 갯수만큼 ip 갯수를 주지는 않습니다. 그 이유는 모든 집에서 지속적으로 동시에 인터넷을 사..

AWS 2023.02.26

ubuntu 프로세스 실습

systemctl systemctl이라는 서비스 제어 명령어가 있습니다. service라는 명령어도 있지만 service명령어는 systemctl의 wrapper script입니다. 그렇기 때문에 systemctl이 권장되는 것 같습니다. 다음명령어로 system에 등록된 서비스 목록을 전부 볼 수 있다. sudo systemctl list-unit-files | grep 위 명령어로 서비스 목록을 보고 사용하려는 프로그램이 현제 사용중인지 아닌지도 체크할 수 있습니다. 프로세스 실행 명령어 systemctl start ps ps -ef 명령어를 통해 실행중인 프로세스에 대해서 다 볼 수 있습니다. 프로세스 종료 명령어 kill -l 위 명령어로 종료방법에 대한 리스트를 볼 수 있다. 위 리스트 중에 s..

LINUX 2023.02.12

프로세스?

프로세스란? 컴퓨터에 기본적인 필수 장치중 CPU(연산장치)와 RAM(저장장치)이 있습니다. 하지만 이 둘만 있어서는 컴퓨터는 제대로 작동할 수 없습니다. 이 두가지 장치만 있다고 하고 ram이 1gb라고 할때 문자를 10억개정도밖에 저장할 수 없기때문에 프로그램을 돌리기엔 턱없이 부족한 양이며 ram은 휘발성이기때문에 전력공급이 중단되면 저장내용이 다 날라갈 것입니다. 그럼 ram에 있는 내용을 영구히 저장하기위해 HDD와 SSD라는 저장장치가 등장했습니다. 그렇다면 예를 들어 HDD에 tomcat8을 설치한다고 가정을 해봅니다. 그럼 HDD에 tomcat8이라는 프로그램이 설치가 됐습니다. 그럼 이 HDD에저장된 프로그램을 RAM에 끌어 올리는 행위를 load 라고 합니다. 이렇게 tomcat을 lo..

cs 2023.02.12

Cpython 병렬성과 동시성 /(2) 멀티 스레딩

멀티 스레딩 CPython은 스레드를 생성, 스폰, 제어 할 수 있는 파이썬용 고수준 API와 저수준 API를 제공한다. pthread: POSIX 스레드 ( 리눅스, macos) nt threads: NT 스레드 ( 윈도우 ) 프로세스는 다음과 같은 요소들을 같는다. 서브루틴의 스택 메모리와 힙 운영체제의 파일, 잠금, 소켓에 접근할 수 있는 권한 단일 프로세스의 가장 큰 제약은 운영체제가 실행 파일마다 하나의 프로그램 카운터를 가진다는 것이다. 이 문제를 해겨라기 위해 최신 운영 체제는 실행을 여러 스레드로 분기할 수 있도록 운영체제에 신호를 보낼 수 있다. 각 스레드는 저마다 다른 프로그램 카운터를 가지지만 호스트 프로세스와 리소스를 공유한다. 또한 각 스레드는 별도의 콜 스택을 가지고 있기 때문에..

CPython 2023.02.12

Cpython 병렬성과 동시성 /(1) 멀티 프로세싱

CPython은 병렬성과 동시성에 대해 다양한 접근방식을 제공한다. 주어진 상황에 따라 적절한 방식을 고르면 된다. 버마다의 장단점이 있는 각각의 동시성 구현을 주어진 상황에 따라 선택해서 사용할 수 있다. Cpython은 기본적으로 네가지 모데을 제공한다. threading : 동시실행 O 병렬실행 X multiprocessing : 동시실행 O 병렬실행 X asyncio : 동시실행 O 병렬실행 X subinterpreters : 동시실행 O 병렬실행 X 프로세스의 구조 운영체제는 실행 중인 프로세스를 제어할 책임이 있다. 그것이 사용자 인터페이스 앱일 수 도 있고 네트워크 서비스나 운영체제 서비스 처럼 백그라운드로 동작할 수 도 있다. 운영체제는 프로세스를 제어하기 위해 새 프로세스를 시작하는 AP..

CPython 2023.02.12

병렬성과 동시성

병렬성과 동시성 최초의 컴퓨터는 한번에 한 작업만 실행하도록 설계됐고 주로 계산 수학 분야의 작업을 처리했습니다. 시간이 지나며 컴퓨터는 다양한 종류의 입력을 처리하고 네트워크 계념이 생기며 한번에 한 작업만 하는 일은 아무리 연산이 빠른 기계라고해도 프로그램에서 락이 걸리면 기다리기만 해야하는 상황이 생기던 시절이 있었다고 합니다. 이로 인해 생긴 혁신이 멀티태스킹 운영 체제로 이동한 것입니다. 멀티 태스킹은 현대의 다중 코어 CPU가 등장하기 이전에도 필요했기 때문에 운영 체제들은 이전부터 여러 프로세스끼리 시스템 자원을 공유하는 방법을 제공해왔습니다. 모든 운영 체제의 핵심 기능은 실행중인 프로세스를 관리하는 것입니다. 모든 프로세스는 주인을 가지고 있고 메모리와 CPU같은 자원을 요청할 수 있습니..

cs 2023.02.06