728x90
반응형
SMALL
728x90
반응형
LIST
728x90
반응형
SMALL

■ 사용하면서 유용했던 단축키 정리

단축키 설명 비고
Shift + Alt + A 새로 블록 편집/해제
단축키를 누르면 십자가 표시로 변경된다.
블록을 잡고 편집한다.
해제시는 다시 동일 단축키를 누른다.

F7 Procedure에서 raise notice를 확인할때 필요  
Ctrl + Space 테이블 조회시, 모든 컬럼 자동생성 select *
  from table

- * 입력 후 Ctrl + Space를 누르면 table에 있는 모든 컬럼 자동으로 생성된다.
- alias를 a로 준 경우 a.* 입력 후 Ctrl + Space
Ctrl + Alt + Space SQL 템플릿 사용  
Ctrl + / 주석 및 해제 -- 를 통한 주석

Ctrl + Shift + /  주석 및 해제 /**/ 를 통한 주석

Ctrl + Shift + Y 소문자로 변환  
Ctrl + Shift + X 대문자로 변환  
Ctrl + D 현재 라인 삭제  
Ctrl + Delete 포커스 기준으로 다음 단어 삭제  
Ctrl + Backspace 포커스 기준으로 이전 단어 삭제  
Ctrl + Shift + Delete 포커스 다음 단어부터 현재 라인 끝까지 삭제  
Ctrl + Shift + Up(↑)/Down(↓) 현재 라인 상/하로 이동  
Ctrl + Shift + Enter 포커스는 고정이 되면서 라인이 추가  
Ctrl + Alt + J 포커스 기준으로 아래 라인 글 붙이기 Del로 붙였을때는 포커스 뒤로 글이 붙고,
Ctrl + Alt + J로 붙였을때는 붙인 글 뒤로 포커스가 붙는다.
Ctrl + Alt + Up(↑)/Down(↓) 현재 라인 복사  
Alt + Up(↑)/Down(↓) 현재 라인 기준으로 개행 아래 있는 블록 선택  
Ctrl + Right(→)/Left(←) 다음/이전 단어로 이동  
Ctrl + Shift + Right(→)/Left(←) 다음/이전 단어로 이동하면서 선택  

 

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 데이터베이스에서 테이블스페이스를 생성할 때, 두 가지 유형의 테이블스페이스를 선택할 수 있다.
이 두 가지 유형 차이를 알아보도록 하자.

 

■ Bigfile 특징

1. 매우 큰 데이터 파일을 지원하는 특별한 유형의 테이블스페이스이다.

2. 하나의 데이터 파일만을 가지며, 대용량 데이터 관리 및 처리에 특화되어 있다.

 

■ Bigfile 장점

1. 하나의 데이터 파일만을 가지기 때문에, 파일 수 관리가 간단해지며 파일 할당과 관련된 오버헤드가 줄어든다.

2. 대규모 데이터베이스 시스템에서 높은 처리량과 입출력(IO) 성능을 제공한다.

3. 대량의 데이터를 빠르게 처리할 수 있는 높은 처리량을 제공한다.

4. 하나의 데이터 파일만을 가지기 때문에, 백업과 복구 작업을 간소화한다.

5. 많은 수의 작은 파일을 생성하지 않아도 되므로 데이터베이스의 설치 및 유지보수가 간소화된다.

6. 디스크 공간을 효율적으로 사용할 수 있다. 작은 파일들로 인해 발생하는 낭비를 줄일 수 있다.

 

■ Bigfile 단점

1. 작은 테이블이나 작은 규모의 데이터를 저장하기에는 적합하지 않을 수 있다.

    작은 크기의 테이블을 위한 것이 아니기 때문에 작은 규모의 데이터베이스에서는 오버헤드가 발생할 수 있다.

2. 파일에 손상이 발생하면 해당 파일 전체를 복구해야 한다. 이로 인해 복구 시간이 증가할 수 있다.

3. 하나의 큰 데이터 파일로 구성되기 때문에 데이터 파일의 크기가 계속 증가할 수 있다. 따라서 데이터베이스 용량 관리가 중요한데, 이를 관리하는데 어려움이 있을 수 있다.

4. 작은 크기의 테이블을 처리할 때에는 성능상의 제약이 있을 수 있다.

 

■ Smallfile 특징

1. 작은 크기의 데이터 파일을 사용하는 특별한 유형의 테이블스페이스이다.

2. 주로 작은 규모의 데이터베이스나 작은 테이블을 다룰 때 유용하다.

 

■ Smallfile 장점

1. 작은 규모의 데이터를 효율적으로 관리할 수 있다. 작은 테이블을 저장하거나 작은 규모의 데이터베이스를 다루는 데에 유리하다.

2. 데이터베이스의 용량 관리가 더욱 유연하다. 필요에 따라 데이터 파일을 추가하거나 관리하기 쉽다.

3. 백업 및 복구 작업이 더 빨리 수행될 수 있다.

4. 테이블이나 인덱스를 저장할 때 더 효율적인 성능을 제공한다.

5. 테이블스페이스의 구조가 단순하다. 데이터베이스의 구조를 이해하고 관리하기가 쉬워진다.

6. 시스템 리소스 사용량이 감소한다. 시스템 자원을 더욱 효율적으로 사용할 수 있도록 도와준다.

7. 대규모 데이터베이스에서 발생하는 관리 부담을 줄일 수 있다.

8. 작은 테이블과 데이터를 처리하는 데 최적화되어 있으므로 작은 크기의 데이터에 대한 액세스 성능을 향상시킬 수 있다.

 

■ Smallfile 단점

1. 대용량 데이터 처리에는 적합하지 않다. 대규모 데이터베이스에서는 데이터 파일의 수가 많아져 관리 오버헤드가 증가하며, 성능 이슈가 발생할 수 있다.

2. 데이터 파일의 수가 많아지면 백업 및 복구 시간이 늘어날 수 있다.

3. 작은 크기의 데이터 파일을 사용하기 때문에 데이터 파일의 크기가 계속해서 증가할 수 있다. 따라서 데이터베이스의 용량 관리가 어려워질 수 있다.

4. 작은 블록 크기를 사용하여 데이터를 저장하므로 대용량 데이터 처리나 대규모 트랜잭션 처리에는 성능 저하가 있을 수 있다.

5. 대량의 데이터를 검색하거나 조인하는 작업에서 성능 이슈가 발생할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL
너무 이쁜 스킨을 발견하고 스킨을 변경했다.
그런데!!! html에 설정해 놓은 구글 에드센스며 네이버, 서치콘솔 등 메타테크가 다 날라가버렸다.
스킨은 함부로 변경하는 게 아니란다.
자세한 내용은 다른 블로그 글을 검색해 보시길 바란다.
이 포스팅은 날라간 설정값을 다시 설정하는 방법을 알려드리고자 한다.

 

■ 구글 서치 콘솔 등록

1. 구글 서치콘솔 사이트로 가서 로그인한다.

2. 로그인 후, 왼쪽 아랫부분에 있는 설정버튼을 누른 후, 오른쪽에 사용자 및 권한의 오른쪽 버튼을 클릭한다.

설정 - 사용자 및 권한 확인

3. 화면이 아래 이미지로 전환되면, 점 3개 버튼을 클릭하고, 소유권 인증 세부정보를 클릭한다.

소유권 인증 세부정보 확인

4. 아래와 같이 팝업화면이 나타나면, HTML 태크가 생성되고, 오른쪽에 복사버튼을 누르고, 티스토리 스킨 html <head> 사이에 붙여 넣는다.

HTML 태그 확인 및 복사

 

■ 구글 에드센스 코드 등록

1. 구글 엔드센스 사이트로 가서 로그인한다.

2. 왼쪽에 광고를 클릭하고, 오른쪽에 나타나는 코드 가져오기를 클릭한다.

광고 코드 가져오기

3. 코드가 적혀있는 팝업 창이 뜨면, 복사하기를 눌러, 티스토리 스킨 html <head> 사이에 붙여 넣는다.

광고 코드 복사하기

 

■ 네이버 서치 어드바이저 등록

1. 네이버 서치 어드바이저 사이트로 가서 로그인한다.

2. 오른쪽 위 웹마스터 도구를 클릭한다.

네이버 서치 어드바이저 - 웹마스터 도구 클릭

3. 소유 확인 메타 태그 확인 방법은 기존에 등록이 되어 있으면 확인할 방법이 없다. 지우고 다시 등록해야 한다.

    아래 이미지 순서대로 진행한다. 3번까지 다 적었으면 오른쪽에 화살표 버튼을 클릭한다.

소유 확인 메타 캐드 확인방법 순서

4. 사이트 소유확인 창으로 이동되면, HTML 태크를 선택하고, 메타태그를 복사하여, 티스토리 스킨 html <head> 사이에 붙여 넣는다.

    붙여 넣고 저장을 하지 않은 상태에서 소유확인을 누르면, 소유를 확인할 수 없다는 메시지가 뜰 수 있으므로, 먼저 저장하고 소유확인을 누른다.

사이트 소유확인 HTML 태그 복사 및 소유확인

5. RSS 제출한다. 블로그 주소뒤에 rss만 붙이면 된다. 붙이고 확인을 누르면 제출된 RSS 리스트에 추가된다.

RSS 제출

6. 사이트맵을 제출한다. 사이트 맵은 티스토리에서 관리 - 블로그로 가면 사이트맵 주소를 확인할 수 있다.

사이트맵 주소 확인

7. 사이트맵을 복사하여 아래 이미지와 같이 사이트맵 URL 입력란에 붙여 넣기하고 확인을 누르면 제출된 사이트맵 리스트에 추가된다.

사이트맵 제출

8. 여기까지 등록되었으면, 상단 탭의 간단 체크를 클릭하여, 사이트 간단 체크를 실시한다.

    블로그 주소를 입력하고 돋보기 버튼을 누르면 URL 실시간 조회결과를 확인할 수 있다. 실제로 블로그 검색되기까지는 며칠 걸린다고 한다.

    과거에 웹 수집 요청이 완료되었던 URL도 다시 한번 확인하여, 등록이 안되어 있으면 번거롭지만 다시 등록하자.

    필자는 포스팅 글 수가 얼마 안되서 모두 다시 등록을 하였다.

간단체크

 

■ 티스토리 광고 목록 상하단 삽입

1. 티스토리 수익 - 애드핏 등 광고 설정을 하는 중에 목록 상단, 목록 하단 클릭 시,

    오른쪽 이미지와 같이 목록 상단 치환자를 추가해 달라는 메시지가 나오는 경우, 스킨 편집을 클릭한다.

광고설정

2. s_list를 찾아 상단에는

728x90
반응형
SMALL
하단에는
728x90
반응형
LIST
를 삽입하고 저장을 누른다.

HTML 상단 하단 목록 삽입

3. 광고설정화면이 이미 열려있으면 새로고침 후에 리스트 상단 하단을 클릭하면 잘 적용되는 것을 볼 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL
Django과 Vue를 연동하면서 Axios를 사용하게 되었다.
Axios를 사용하기에 앞서 왜 Axios를 사용하는지에 대해서 몇 가지 조사를 해보았다.

 

■ Axios가 만들어지게 된 이유

Axios가 처음 개발될 때, 이미 자바스크립트의 HTTP 클라이언트 라이브러리는 존재했지만, 기존 라이브러리들은 몇 가지 단점을 가지고 있었다.

이러한 단점들을 극복하고자 Matt Zabriskie는 2014년에 Axios를 개발하게 되었다. Axios가 개발되기 전 몇 가지 단점을 알아보도록 하자.

 

1. 기존의 HTTP 클라이언트 라이브러리들은 비동기적인 작업을 처리하기 위해 콜백 패턴을 사용했다.

    하지만 콜백 패턴은 중첩된 콜백으로 인해 코드의 가독성과 유지보수성을 저하시켰다.

2. 대부분의 라이브러리들은 XHR(XMLHttpRequest) 객체를 사용하여 HTTP 요청을 처리했다.

    XHR은 기능적으로 제한적이며 복잡한 설정이나 요청의 중단과 재시작과 같은 기능을 구현하기 어려웠습니다.

3. 기존 라이브러리들은 모듈성이 부족한 경우가 있었다. 따라서 다른 라이브러리나 프레임워크와 함께 사용하기 어려운 경우가 발생했다.

4. 몇몇 라이브러리는 브라우저와 서버 간에 호환성이 떨어지는 경우가 있었다. 이는 같은 코드를 브라우저와 서버에서 재사용하기 어렵게 만들었다.

5. Promise는 비동기 코드를 다루는데 매우 유용한 기능이지만, 기존 라이브러리들은 Promise를 지원하는데 어려움이 있거나, 미비한 경우가 있었다.

 

■ Axios의 장점

1. Promise 기반으로 동작한다. 이를 통해 비동기 작업을 보다 간결하고 직관적으로 다룰 수 있으며, 중첩된 콜백을 피할 수 있다.

2. 브라우저 환경과 Node.js 환경에서 모두 사용할 수 있다. 브라우저와 서버 간에 동일한 코드를 공유하고 재사용할 수 있어 개발과 유지보수가 편리하다.

3. 요청과 응답을 인터셉터를 통해 가로채고 처리할 수 있는 기능을 제공한다. 이를 통해 공통적인 요청/응답 처리를 중앙에서 관리하고 코드의 재사용성을 높일 수 있다.

4. 요청과 응답 데이터를 간편하게 변환할 수 있다. JSON, XML, FormData 등 다양한 데이터 형식을 처리할 수 있어서 개발자들이 데이터를 효율적으로 다룰 수 있다.

5. 서버로부터 받은 HTTP 상태 코드를 쉽게 처리하여 성공 또는 에러를 구분할 수 있다. 이를 통해 응답 상태를 쉽게 파악하고 처리할 수 있다.

6. 잘 구성된 문서와 활발한 개발자 커뮤니티를 가지고 있다. 이러한 문서화와 커뮤니티 지원으로 인해 사용자들이 쉽게 학습하고 문제를 해결할 수 있다.

7. API는 간결하고 직관적이어서 사용하기 쉽다. 빠르게 설정을 구성하고 HTTP 요청을 보내고 응답을 받는데 필요한 기능들이 간편하게 제공된다.

 

■ Axios의 단점

1. 다른 경량화된 HTTP 클라이언트 라이브러리들보다 더 큰 번들 크기를 가질 수 있다. 이는 프로젝트의 번들 크기가 중요한 경우에 영향을 미칠 수 있다.

2. 대부분의 최신 브라우저에서 잘 동작하지만, 구형 브라우저와의 호환성이 제한적일 수 있다. 따라서 구형 브라우저 지원이 필요한 경우에는 추가적인 처리가 필요할 수 있다.

3. 브라우저 환경에서 기본적으로 XHR(XMLHttpRequest) 객체를 사용하여 HTTP 요청을 처리한다.

    XHR은 기능적으로 제한적이고 좀 더 복잡한 설정이나 요청의 중단과 재시작과 같은 기능을 구현하기 어려울 수 있다.

4. Fetch API를 사용하지 않고 별도의 XHR 기반 구현체를 사용한다. Fetch API는 모던 브라우저에서 기본적으로 지원되는 표준 API이므로,

    특정 브라우저와 호환성을 고려한다면 Fetch API를 직접 사용하는 것이 더 나은 선택일 수 있다.

5. 기본적으로 다양한 기능들을 제공하지만, 모든 프로젝트에서 필요하지는 않을 수 있다. 때로는 불필요한 기능들이 번들 크기를 증가시키고 코드의 복잡성을 높일 수 있다.

 

■ 그 밖의 HTTP 클라이언트 라이브러리 순위

1. Axios

2. Fetch API

3. SuperAgent

4. Request

5. Got

728x90
반응형
LIST

'JavaScript' 카테고리의 다른 글

yarn이란 무엇인가?  (0) 2023.07.29
Node.js (18.16.1 LTS) 설치 방법  (0) 2023.07.16
728x90
반응형
SMALL

 

Vue3에서 Axios를 통하여 Django Ninja API 연동 중에 CORS policy 메시지와 함께 에러가 발생하였다.
에러 해결은 그리 어렵지 않았다. 나중에 혹시 또 이런 문제가 발생할 수 있으니,

잊어 먹지 않기 위해서 블로그에 글을 써놓고자 한다.

 

■ 에러 해결 방법

1. 정확한 에러 메시지는 아래와 같다. (회색 글씨는 각각 API 주소가 다름에 따라 변할 수 있다.)

  - Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/get?param1=1&param2=1' from origin 'http://localhost:8080' has been blocked by CORS policy:

    No 'Access-Control-Allow-Origin' header is present on the requested resource.

2. API가 있는 Django 프로젝트로 가서 터미널의 Command Prompt(명령 프롬프트) 실행한다.

3. 아래 빨간색 글씨의 명령어를 실행한다. 실행한 후 아래 메시지가 나오면 설치 성공

# django-cors-headers : Cross-Origin Resource Sharing(CORS)에 필요한 서버의 헤더를 조작하기 위한 Django App

(django_project_2) Z:\django_project_2>pip install django-cors-headers

 

Collecting django-cors-headers

  Downloading django_cors_headers-4.2.0-py3-none-any.whl (12 kB)

Requirement already satisfied: Django>=3.2 in c:\users\mjmk\anaconda3\envs\django_project_2\lib\site-packages (from django-cors-headers) (4.2.1)

Requirement already satisfied: asgiref<4,>=3.6.0 in c:\users\mjmk\anaconda3\envs\django_project_2\lib\site-packages (from Django>=3.2->django-cors-headers) (3.6.0)

Requirement already satisfied: tzdata in c:\users\mjmk\anaconda3\envs\django_project_2\lib\site-packages (from Django>=3.2->django-cors-headers) (2023.3)

Requirement already satisfied: backports.zoneinfo in c:\users\mjmk\anaconda3\envs\django_project_2\lib\site-packages (from Django>=3.2->django-cors-headers) (0.2.1)

Requirement already satisfied: sqlparse>=0.3.1 in c:\users\mjmk\anaconda3\envs\django_project_2\lib\site-packages (from Django>=3.2->django-cors-headers) (0.4.4)

Installing collected packages: django-cors-headers

Successfully installed django-cors-headers-4.2.0

 

4. Django 프로젝트에 있는 settings.py에 내용을 추가(빨간색 글씨)하면 에러가 해결된다.

INSTALLED_APPS = [

    .....     # 기존에 있는 내용

    'corsheaders'

]

 

MIDDLEWARE = [

    # MIDDLEWARE는 웹 서버와 Django 애플리케이션 사이에 있는 기능이므로, Cors를 전체적으로 적용시키기 위해서는

    # 반드시 맨 처음 줄에 추가한다.

    'corsheaders.middleware.CorsMiddleware',

    .....     # 기존에 있는 내용

]

 

CORS_ORIGIN_ALLOW_ALL = True    # 모든 호스트 허용

CORS_ALLOW_CREDENTIALS = True    # 쿠기 cross-site HTTP 요청에 포함

 

■ 에러가 나는 이유

1. 웹 애플리케이션에서 다른 도메인, 프로토콜, 또는 포트 번호로 리소스를 요청하는 경우, CORS 문제가 발생할 수 있다.

2. 브라우저는 보안상의 이유로 기본적으로 동일 출처 정책을 따른다. 따라서 다른 출처로 리소스 요청을 보낼 때에는 브라우저에서 CORS를 확인하게 된다.

3. 일부 브라우저에서는 브라우저가 먼저 간단한(GET, POST) 요청을 보내고 서버가 허용하는지 확인하는 "프리플라이트" 요청이 발생한다.

    서버가 이를 올바르게 처리하지 않으면 실제 요청도 거부될 수 있다.

4. 브라우저가 아닌 다른 사용자 에이전트(예: cURL)를 사용하여 다른 출처로 요청을 보낼 때도 CORS 문제가 발생할 수 있다.

728x90
반응형
LIST

'Django' 카테고리의 다른 글

Django Ninja Swagger API Setting  (0) 2023.05.13
Django Swagger description - MarkDown  (0) 2023.05.12
Django Swagger DRF - FBV, @api_view 활용  (0) 2023.05.08
PyCharm Project 생성, Path 경로 수정  (0) 2023.05.07
Django Swagger DRF Setting  (1) 2023.05.06
728x90
반응형
SMALL
Vue3을 공부하면서 npm이라는 것을 사용하다가 우연히 yarn이라는 것을 알게 되었다.
그렇다면 yarn은 무엇이며, npm이 있는데 왜 yarn이 생겼는지에 대해 궁금증도 생겼다.

그래서 이번 포스팅에서는 yarn에 대해서 알아보고자 한다.

 

■ yarn이란?

1. Facebook에서 2016년에 개발한 자바스크립트 패키니 매니저중 하나이다. npm(Node Package Manager)과 비슷한 역할을 수행하지만,

    더 빠른 성능과 일관성 있는 의존성 버전 관리를 제공하여 개발자들에게 인기가 있다.

    ※ 의존성 버전 관리 맨 하단 설명 참고

2. 프로젝트에 필요한 외부 라이브러리나 모듈, 패키지들을 관리한다. 프로젝트의 package.json 파일에 기록된 의존성 정보를 바탕으로 패키지들을 설치하고 관리한다.

3. yarn add 명령을 사용하여 새로운 패키지를 프로젝트에 추가할 수 있다. 이때 의존성 관련 정보가 package.json 파일에 자동으로 추가된다.

4. yarn upgrade 명령을 사용하여 모든 패키지 또는 특정 패키지를 최신 버전으로 업데이트할 수 있다.

5. yarn remove 명령을 사용하여 불필요한 패키지를 프로젝트에서 제거할 수 있다. 이때 package.json 파일에서도 해당 패키지에 대한 의존성 정보가 자동으로 삭제된다.

6. yarn.lock 파일을 사용하여 프로젝트에 설치된 패키지의 정확한 버전을 기록한다.

    이로 인해 모든 개발자가 동일한 의존성 버전을 사용하며, 의존성 충돌과 호환성 문제를 사전에 방지한다.

7. npm과 호환되기 때문에 기존 npm 프로젝트를 yarn으로 이전하거나 npm으로 작성된 패키지를 yarn을 사용하여 설치하는 것도 가능하다.

    개발자들은 프로젝트 요구 사항과 개인적인 선호에 따라 npm과 yarn 중에서 선택하여 의존성을 효과적으로 관리할 수 있다.

 

■ yarn은 왜 만들어졌을까?

1. npm은 큰 규모의 프로젝트에서 패키지 설치가 느려지는 성능 문제가 있었다. 특히 의존성 트리를 해석하고 다운로드하는 과정에서 시간이 오래 걸리는 경우가 있었다.

    yarn은 병렬 다운로드와 캐싱 기능을 도입하여 더 빠른 패키지 설치를 가능케 했다.

2. npm은 npm-shrinkwrap.json 파일을 사용하여 의존성 버전을 고정시키지만, 이 파일의 생성과 관리가 번거로웠다.

    yarn은 yarn.lock 파일을 사용하여 의존성을 고정시키는 방식을 도입하여 모든 개발 환경에서 일관성 있는 패키지 버전을 유지할 수 있도록 하였다.

3. yarn은 npm과 마찬가지로 보안을 중요시하며, 패키지 설치 과정에서 악성 코드나 취약점이 있는 패키지를 탐지하여 사용자를 보호한다.

4. 의존성을 설치할 때 버전 간 충돌을 자동으로 해결해 주는 기능을 제공한다.

    이를 통해 패키지 버전 간에 발생할 수 있는 일부 문제를 자동으로 처리해 주어 사용자의 부담을 줄여준다.

5. npm에는 없는 몇 가지 추가 기능을 제공한다. 예를 들어, yarn why 명령을 사용하여 특정 패키지가 설치된 이유를 확인할 수 있다.

 

■ yarn의 단점

1. 의존성을 해석하는 방식에서 문제가 발생할 수 있다.

    의존성 트리를 해석하는 알고리즘이 복잡하고, npm과는 약간 다른 방식을 사용하기 때문에 종종 예상치 못한 의존성 충돌이 발생할 수 있다.

2. npm보다 더 많은 메모리를 사용하는 경향이 있다. 큰 규모의 프로젝트에서 의존성 트리를 구성하는 데 필요한 메모리 양이 증가할 수 있다.

3. npm에 비해 더 느린 시작 시간을 가지고 있습니다. 처음으로 yarn을 사용하는 프로젝트의 경우, 패키지 캐싱 등의 초기 작업으로 인해 초기 설치 시간이 더 오래 걸릴 수 있다.

4. npm이 더 오래된 패키지 매니저이며, 자바스크립트 생태계에서 널리 사용되고 있다.때로는 yarn이 npm 생태계의 일부 패키지와 호환성 문제를 겪을 수 있다.

5. JavaScript 생태계에서는 npm과 yarn을 모두 사용하는 경우가 많다.

    프로젝트 팀 간에 패키지 매니저를 통일하기 어려울 수 있으며, 여러 패키지 매니저를 동시에 사용하면 일관성이 떨어질 수 있다.

 

■ yarn의 몇 가지 명령어

# 새로운 프로젝트를 시작할 때 사용하는 명령어로, package.json 파일을 생성한다. 프로젝트의 이름, 버전, 라이선스 등의 정보를 입력할 수 있다.

>yarn init

 

>yarn install    # 파일에 명시된 의존성들을 설치한다.

>yarn    # yarn install과 동일

 

# 새로운 패키지를 프로젝트에 추가한다. yarn add [package] 명령을 사용하면 패키지가 dependencies에,

yarn add [package] --dev 명령을 사용하면 패키지가 devDependencies에 추가된다.

>yarn add [package]

 

>yarn upgrade [package]    # 특정 패키지를 최신 버전으로 업그레이드한다.

>yarn remove [package]    # 프로젝트에서 해당 패키지를 제거한다. package.json 파일에서 의존성 정보도 함께 삭제된다.

 

# package.json 파일의 scripts 섹션에 등록된 사용자 정의 스크립트를 실행한다.

예를 들어, "scripts": { "start": "node index.js" }와 같이 정의된 스크립트는 yarn start 명령으로 실행할 수 있다.

>yarn run [script]

>yarn [script]    # yarn run [script]와 동일

 

>yarn list    # 프로젝트에 설치된 모든 패키지들을 나열한다.

>yarn outdated    # 프로젝트에서 업그레이드할 수 있는 패키지들을 확인한다.

>yarn global add [package]    # 전역으로 패키지를 설치한다. 전역으로 설치된 패키지는 특정 프로젝트가 아닌 시스템 전체에서 사용할 수 있다.

>yarn cache clean    # 캐시를 지운다. 캐시를 지워서 새로운 패키지를 다시 다운로드하고 설치할 수 있다.

 

(참고) 의존성 버전 관리

프로젝트에 사용되는 외부 라이브러리, 프레임워크 또는 패키지와 같은 소프트웨어 구성 요소들 간의 관계를 관리하는 방법을 말한다.

대부분의 소프트웨어 프로젝트는 외부에서 개발된 라이브러리나 도구들을 활용한다. 이러한 외부 구성 요소들은 주로 다른 개발자들에 의해 관리되며 자주 업데이트된다.

하지만 이러한 업데이트가 항상 호환되지 않을 수 있기 때문에, 프로젝트는 특정 버전의 외부 구성 요소와 함께 잘 동작함을 보장해야 한다.

이때 의존성 버전 관리를 통해 관리된다.

 

1. 프로젝트가 특정 버전의 외부 구성 요소와 함께 안정적으로 동작하도록 보장한다.

2. 프로젝트의 개발 및 배포 단계에서 사용되는 외부 구성 요소들의 버전이 일관되게 유지되어, 동일한 환경에서 항상 동일한 결과를 얻을 수 있도록 한다.

3. 보안 취약점이나 버그가 발견될 경우, 해당 버전의 외부 구성 요소를 신속하게 업데이트하여 보완할 수 있다.

4. 여러 개발자들이 함께 작업하는 경우, 모든 개발자들이 동일한 버전의 외부 구성 요소를 사용하여 문제를 최소화할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

 

이전 포스팅에서 App.vue를 수정하여 신규.vue 파일을 실행하는데 까지 성공했다면,
이번 포스팅에서는 router를 설치하여 신규 페이지를 연결하는 방법을 알아보자.

 

■ npm을 사용한 router 설치

1. visual studio code 터미널에서 아래의 명령어를 입력한다.

프로젝트 경로>npm i vue-router@next

 

# 설치 과정 메시지

up to date, audited 968 packages in 1s

 

108 packages are looking for funding

  run `npm fund` for details

 

found 0 vulnerabilities

 

2. router가 잘 설치되어 있는지 확인한다. (아래 2가지가 있으면 설치 성공)

  - node_modules 폴더 안에 vue-router가 있는지 확인한다.

  - package.json 파일 내용에서 dependencies에 vue-router가 있는지 확인한다.

3. vue add router를 사용 안 했을 때 추가 작업 (4번으로 하는 게 편함)

  - src 폴더 안에 router 폴더를 생성한다.

  - router 폴더 안에 index.js를 추가한다. index.js 안에 페이지 연결 소스를 작성한다.

  - src 폴더 안에 main.js에 router를 import 하고, 하고 router 관련 소스를 추가한다.

 

4. vue add router를 사용하여 router 관련된 패키지를 설치한다.

프로젝트 경로>vue add router

 

# 설치 과정 메시지

📦 Installing @vue/cli-plugin-router...

run `npm fund` for details

 

found 0 vulnerabilities

✔ Successfully installed plugin: @vue/cli-plugin-router

 

? Use history mode for router? (Requires proper server setup for index fallback in production) Yes

 

🚀 Invoking generator for @vue/cli-plugin-router...

⚓ Running completion hooks...

 

✔ Successfully invoked generator for plugin: @vue/cli-plugin-router

  - 추가적으로 router를 바로 사용할 수 있도록 기본적인 소스와 views 폴더 안에 샘플 vue 파일이 만들어진다.

  - 주의) App.vue, main.js 파일은 기존에 작업한 내용이 있으면 초기화된다. 반드시 Backup을 해놔야 한다.

 

■ router를 통한 페이지 연결

1. 터미널에서 아래 명령어를 입력한다. (아래와 같이 나오면 router를 통한 페이지 연결 성공)

프로젝트 경로>npm run serve

실행된 화면(App.vue파일)

 

2. vue add router를 통하여 생성된 폴더 및 파일, 소스를 확인한다.

확인해야할 파일

3. src - router - index.js 소스

  - routes를 통하여 About.vue, Homeview.vue가 실행된다.

  - Homeview.vue : http://localhost:8081/

  - About.vue : http://localhost:8081/about

  - 신규 페이지를 만들면 routes 추가해야 한다.

src - router - index.js

 

3. src - App.vue

  - 1번에서 나온 이미지 소스 내용

src - App.vue

 

4. src - main.js

  - router를 통하여 vue파일 실행

src - main.js

 

728x90
반응형
LIST
728x90
반응형
SMALL

 

Vue를 설치하고 Vue3 프로젝트를 만들었다.
HelloWorld까지 실행되는 것을 확인했더니, 신규 페이지를 추가하여 실행해 보고 싶었다.
다른 페이지를 추가하고 실행하려면, Vue의 작동순서를 알아야 추가할 수 있으므로,
작동 순서 및 페이지를 추가하여 실행하는 거 까지 공유해 보고자 한다.
참고로 필자는 Vue.js에 완전 초보이다.

(개발 환경 : Visual Studio Code)

 

■ Vue3로 프로젝트 생성 후, HelloWorld 실행

1. Visual Studio Code 실행 후, 터미널에서 아래 명령어를 실행한다.

터미널이 보이지 않을 경우, 위 이미지 순서대로 실행

프로젝트 경로>npm run serve

 

# 여기부터 끝까지는 위의 명령어 실행 후 나오는 메시지

> vue_project_1@0.1.0 serve    # 에러가 나면 2번 참고

> vue-cli-service serve

 

INFO Starting development server...

 

DONE Compiled successfully in 2585ms

 

App running at:

# 컨트롤을 누르고 Local 또는 Network에 있는 링크를 누르면 HelloWorld 사이트로 이동

- Local: http://localhost:8082/

- Network: http://192.168.219.189:8082/

 

Note that the development build is not optimized.

To create a production build, run npm run build.

HelloWorld 실행 화면

2. npm run serve 실행 시 아래와 같은 메시지 출력 후 에러, 해결 방법

npm ERR! Missing script: "serve"

npm ERR!

npm ERR! To see a list of scripts, run:

npm ERR! npm run

 

npm ERR! A complete log of this run can be found in:

npm ERR! C:\Users\MJMK\AppData\Local\npm-cache\_logs\2023-07-23T06_25_40_219Z-debug-0.log

  - 해결방법 : project - package.json 파일 내용에 scripts 확인 후 없으면 serve를 추가한다.

  - 파일 내용을 수정했으면 꼭 저장한다. 고쳤더라도 저장을 하지 않으면 계속 에러가 난다.

 

3. package.json - scripts 설명

  - serve : 프로젝트 실행

  - build : 프로젝트 컴파일 후 dist 폴더로 출력

  - lint : 프로젝트 오류 체크

 

■ 페이지 작동 순서 ( 경로)

1. project - package.json

2. project - public - index.html

3. project - src - main.js

4. project - src - App.vue

5. router / index.js

6. Component

 

■ 신규 페이지 추가하여 실행하기

1. 신규 VueTest.vue 파일을 만든다. (우측 이미지 msg는 아래 2번의 msg 내용이 출력된다.)

왼쪽 : 생성 파일 경로 / 오른쪽 : VueTest.vue 파일 내용

2. App.vue 파일 내용을 새로 만든 VueTest.vue로 연결한다.

3. export default 안의 name : '이름', 이름을 어떻게 주느냐에 따라 에러가 발생할 수 있다. 에러 내용은 다음과 같다. (해결은 5번 참고)

  - 컴포넌트 이름은 항상 여러 단어로 되어야 한다는 메시지

19:9 error Component name "VueTest" should always be multi-word vue/multi-word-component-names

 

4. 2번에서 import HelloWorld from...... 이 부분 주석을 안 하면 생기는 에러는 다음과 같다. (해결은 5번 참고)

  - import는 되었지만 사용되지 않았다 라는 메시지

8:8 error 'HelloWorld' is defined but never used no-unused-vars

 

5. 위의 유효성을 체크하고 싶지 않으면, package.json 파일에서 rules 안의 내용을 추가한다.

  "eslintConfig": {

    "root": true,

    "env": {

      "node": true

    },

..........중간 내용 생략..........

    "rules": {

      "vue/multi-word-component-names": "off",

      "no-unused-vars": "off"

    }

 

6. 수정이 완료되면, 컨트롤 + C를 눌러 종료하고, npm run serve로 다시 실행한다.

 

728x90
반응형
LIST
728x90
반응형
SMALL
오라클을 사용하면 SID, ServiceName이라는 말을 들어봤을 것이다.
항상 헷갈려왔던 SID, Service Name의 차이를 알아보고, SID를 여러 개 구성하는 이유를 살펴보자.

 

■ SID

1. 오라클 데이터베이스를 고유하게 식별하는 문자열로 데이터베이스 서버에는 여러 개의 인스턴스가 존재할 수 있다.

2. 각각의 오라클 인스턴스(Instance)는 유일한 SID를 가져야 한다.

3. 이 SID는 오라클 데이터베이스 서버가 실행될 때 자동으로 설정되는 값으로, 일반적으로 데이터베이스를 설치할 때 지정한다.

4. SID 추가 방법은 윈도우 - 시작 - Database Configuration Assistant을 클릭하여, 설치할 때와 동일한 방법으로 추가한다.

5. SID 확인방법

SELECT INSTANCE FROM v$thread;

 

■ ServiceName

1. 오라클 데이터베이스에 접속할 때 사용되는 서비스 식별자이다.

2. 이는 클라이언트 응용 프로그램이 오라클 데이터베이스와 통신할 때 사용되는 문자열이다.

3. 오라클 데이터베이스를 사용하려는 클라이언트가 데이터베이스 서버에 접속하면, 서비스 이름을 지정하여 특정 데이터베이스 인스턴스에 연결한다.

4. 오라클 데이터베이스는 한 번에 여러 개의 서비스를 호스팅 할 수 있으며, 각 서비스는 고유한 서비스 이름을 가질 수 있다.

5. Service Name은 TNSNAMES.ORA 파일로 관리된다.

6. TNSNAMES.ORA 파일의 기본 위치는 클라이언트 시스템의 ORACLE_HOME 디렉터리에 있다. 일반적으로 ORACLE_HOME/network/admin 경로에 위치한다.

    (경로예제: Z:\...\product\12.2.0\dbhome_1\network\admin\)

7. tnsnames.ora파일은 아래와 같이 구성된다.

<서비스 이름> =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = <호스트 이름 또는 IP 주소>)(PORT = <포트 번호>))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = <데이터베이스 서비스 이름>)

    )

  )

8. ServiceName 확인방법

SELECT name, db_unique_name FROM v$database;

 

■ SID 여러 개 구성하는 이유

1. 각각 다른 메모리 구성, 파라미터 설정, 데이터베이스 객체 등을 가질 수 있다. 이로 인해 데이터베이스의 특정 요구 사항에 맞게 최적화된 설정이 가능하다.

2. 데이터베이스 간에 서로 접근 권한을 분리할 수 있고, 또한 중요한 데이터를 보다 강력하게 보호할 수 있다.

3. 여러 개의 데이터베이스 인스턴스는 부하를 분산하여 데이터베이스 전체의 성능을 향상시킬 수 있다. 특정 데이터베이스에 발생하는 부하가 다른 데이터베이스에 영향을 미치

    지 않도록 구성할 수 있다.

4. 여러 개의 데이터베이스 인스턴스를 이용하여 고가용성 및 장애 복구를 구현할 수 있다. 하나의 데이터베이스가 장애를 겪더라도 다른 데이터베이스가 가용하게 유지될 수 있

    다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ Oracle 장점

1. 강력한 성능

  - 높은 처리 속도와 최적화된 쿼리 실행 계획을 제공하여 뛰어난 성능을 갖추고 있다. 대규모 데이터베이스와 복잡한 애플리케이션에서도 높은 성능을 유지할 수 있다.

2. 확장성

  - 대규모 엔터프라이즈 환경에서도 우수한 확장성을 가지고 있다. 클러스터링과 리플리케이션 등의 기능을 통해 고가용성과 확장성을 제공한다.

3. 다양한 운영 체제 지원

  - Windows, Linux, UNIX, macOS 등 다양한 운영 체제를 지원하여 다양한 환경에서 배포와 사용이 가능하다.

4. 고급 보안 기능

  - 데이터 보안에 많은 신경을 쓰고 있으며, 암호화, 접근 제어, 감사 기능 등을 통해 데이터의 안전성을 유지한다.

5. 다양한 기능

  - 트리거, 저장 프로시저, 함수, 고급 분석 기능, 데이터 마이닝 등 다양한 기능을 갖추고 있다.

6. 높은 안정성

  - 데이터 무결성을 강조하며, 장애에 대비한 백업 및 복구 기능을 통해 데이터의 안정성과 신뢰성을 보장한다.

7. 지원과 커뮤니티

  - 사용자들에게 풍부한 지원과 커뮤니티를 제공하여 문제 해결과 최신 기술에 대한 정보를 얻을 수 있다.

8. SQL 표준 준수

  - SQL 표준을 준수하는 데이터베이스 관리 시스템으로, SQL을 사용하여 데이터를 쿼리하고 조작하는 데 편리하게 사용할 수 있다.

 

■ Oracle 단점

1. 비용

  - 상용 데이터베이스 관리 시스템으로 라이선스 비용과 유지 보수 비용이 매우 높다. 대규모 엔터프라이즈에서 사용할 경우 라이선스에 상당한 비용이 들 수 있다.

2. 복잡성

  - 초기 설정, 관리, 튜닝 등이 비교적 어려울 수 있다. 경험이 부족한 관리자나 개발자가 사용하면 실수가 발생할 수 있으며, 제대로 관리하지 않으면 성능 이슈가 발생할 수 있다.

3. 리소스 사용

  - 메모리와 디스크 공간을 많이 사용하는 경향이 있다. 큰 데이터베이스나 사용자가 많은 시스템에서는 하드웨어 리소스가 많이 필요할 수 있다.

4. 벤더 종속성

  - 특정 벤더에 종속적인 솔루션이다. 따라서 다른 벤더의 시스템과 통합할 때 추가적인 노력과 비용이 들 수 있다.

5. 오픈 소스 커뮤니티의 부족

  - 상용 제품으로서 오픈 소스 커뮤니티의 혜택을 그대로 누리지 못한다. 라이선스 정책이 엄격하기 때문에 사용자들이 직접 소스 코드를 수정하거나 커뮤니티로부터 지원을 받기

    어려울 수 있다.

 

■ PostgreSQL 장점

1. 오픈 소스

  - 오픈 소스 데이터베이스 관리 시스템으로 무료로 사용할 수 있다.

2. 강력한 기능

  - 풍부한 기능과 확장성을 제공한다. 트리거, 저장 프로시저, 사용자 정의 함수, JSON 지원, 공간 지리 데이터 지원 등 다양한 고급 기능을 갖추고 있다.

3. 높은 확장성

  - 대규모 애플리케이션과 데이터베이스에 대한 확장성이 뛰어나다. 수평 및 수직 확장을 지원하며, 분산 데이터베이스와 클러스터링 기능을 제공하여 고가용성과 성능을 향상 시

    킬 수 있다.

4. ACID 트랜잭션

  - ACID(원자성, 일관성, 격리성, 지속성) 트랜잭션을 지원하여 데이터 무결성과 일관성을 보장한다.

5. 풍부한 데이터 유형

  - 다양한 데이터 유형을 지원하여 유연한 데이터 모델링을 가능하게 한다. 문자열, 숫자, 날짜, 배열, JSON 등 다양한 유형을 다룰 수 있다.

6. 지원 커뮤니티

  - 활발한 오픈 소스 커뮤니티와 지원 기관을 갖추고 있어서 사용자들이 문제를 해결하고 최신 정보를 얻을 수 있다.

7. 크로스 플랫폼

  - 여러 운영 체제에서 작동하며, Windows, Linux, UNIX, macOS 등을 지원한다.

8. 보안

  - SSL 인증, 접근 제어, 데이터 암호화 등으로 데이터의 안전성을 유지할 수 있다.

 

■ PostgreSQL 단점

1. 성능

  - Oracle과 비교했을 때 약간 성능이 떨어질 수 있다. 특히 대규모 데이터베이스와 많은 동시 사용자를 처리해야 하는 경우 성능 이슈가 발생할 수 있다. 최신 버전의 PostgreSQL

    은 성능 개선에 많은 노력을 기울여 왔고, 향후 버전에서 더 많은 개선이 있을 수 있다.

2. 기능 비교

  - Oracle과 비교했을 때 일부 고급 기능이 부족할 수 있습니다. 그러나 대부분의 일반적인 요구 사항을 충족하기에는 충분한 기능을 갖추고 있다.

3. 복제 기능

  - 스트리밍 복제는 Oracle의 고급 복제 옵션에 비해 기능이 상대적으로 적다. 최근 PostgreSQL 버전에서는 더 많은 복제 기능이 추가되었고, 이러한 측면에서 더 개선될 수 있다.

4. 지원

  - 상용 데이터베이스 관리 시스템 (예: Oracle, SQL Server)에 비해 상대적으로 덜 유명하고 퍼져있는 오픈 소스 시스템이다. 그래서 기술 지원을 찾기가 어려울 수 있다. 그러나

    PostgreSQL은 활발한 오픈 소스 커뮤니티와 사용자 기반을 갖추고 있으며, 커뮤니티 지원과 다양한 온라인 자료를 통해 문제를 해결할 수 있다.

 

■ Oracle vs PostgreSQL

1. 소유 비용

  - Oracle은 상용 데이터베이스 관리 시스템으로 비용이 많이 든다. 라이선스 비용과 유지 보수 비용이 있다.

  - PostgreSQL은 오픈 소스 데이터베이스 관리 시스템으로 무료로 사용할 수 있으며, 소스 코드에 대한 액세스와 수정이 가능하다.

2. 전반적으로 Oracle 이 우세

  - Oracle은 비용이 들기 때문에 전반적으로 PostgreSQL보다는 더 강력한 기능을 제공한다.

  - PostgreSQL도 Oracle이 가지고 있는 기능을 전반적으로 가지고 있지만 Oracle보다는 기능이 떨어진다.

 

■ 전 세계 SQL 사용순위(2021년 기준)

1. MySQL - 무료

2. PostgreSQL - 무료

3. Microsoft SQL Server - 무료, 유료 

4. Oracle - 유료

5. SQLite - 무료

728x90
반응형
LIST

'ETC' 카테고리의 다른 글

HL7 FHIR란 무엇인가?  (0) 2024.04.16
728x90
반응형
SMALL

■ INS-35075 오류 - 오라클 완전 삭제 방법

1. 윈도우 - 시작 - 서비스를 입력한다.

2. 서비스를 실행하여, Oracle에 관련된 서비스를 중지시킨다.

3. 오라클이 설치되어 있는 폴더(.... product\12.2.0\dbhome_1\ 밑에 있음)로 가서 deinstall.bat을 실행시킨다.

4. 삭제가 완료되었으면, 실행창(Ctrl+R)을 실행시킨다.

5. 실행창에 regedit를 입력한다.

6. 레지스트리에서 아래 목록을 삭제한다.

  - HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\ControlSet001\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\ControlSet002\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_LOCAL_MACHINE\SYSEM\CurrentControlSet\Service에서 Oracle로 시작하는 것 있으면 삭제

  - HKEY_CLASSES_ROOT ORACLE, Ora로 시작하는 거 있으면 삭제

7. 6번까지 완료되었으면, 반드시 컴퓨터를 재부팅하고 다시 설치한다.

 

■ 오라클이 완전히 삭제되지 않는 이유

1. 대규모 데이터베이스 관리 시스템으로, 매우 복잡한 설치 구조를 가지고 있다. 이로 인해 제거 과정도 매우 복잡하고 시스템의 여러 부분에 설치되어 있을 수 있다.

    설치 프로세스 중에 생성된 여러 파일과 레지스트리 항목들을 하나하나 식별하여 삭제해야 하므로 완전한 제거가 어려울 수 있다.

2. 다른 소프트웨어와 강력한 의존성을 가질 수 있다.

    예를 들어, 다른 애플리케이션 또는 시스템 프로세스가 오라클 데이터베이스와 연동되어 작동하거나, 다른 프로그램이 오라클 클라이언트를 사용하는 경우 등이 있다.

3. 설치 과정에서 서비스와 백그라운드 프로세스를 생성하여 데이터베이스 관리를 수행한다.

    이러한 서비스와 프로세스는 시스템이 부팅될 때 자동으로 실행되며, 설치된 오라클을 완전히 제거하기 위해서는 이러한 서비스와 프로세스도 중단해야 한다.

4. 대량의 데이터 파일과 로그 파일을 생성한다.

    이러한 파일들은 데이터베이스 운영에 필수적이지만, 설치된 오라클을 삭제하더라도 데이터 파일과 로그 파일은 그대로 남을 수 있다.

    이로 인해 디스크 공간을 차지하게 되고, 완전한 삭제를 어렵게 만들 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ Docker 사용 이유

1. 환경의 일관성

  - Docker는 애플리케이션과 그에 필요한 라이브러리, 종속성, 환경 변수 등을 하나의 컨테이너로 패키징하여 구동한다.

    이로 인해 개발 환경, 테스트 환경, 프로덕션 환경 등 모든 환경에서 애플리케이션을 일관성 있게 실행할 수 있다.

2. 빠른 배포

  - Docker 컨테이너는 가볍고 빠르게 생성, 시작 및 중지할 수 있으며, 가상 머신과 비교해 배포 속도가 훨씬 빠르다.

    이러한 특성으로 인해 개발자와 운영팀은 빠르게 애플리케이션을 배포하고 확장할 수 있다.

3. 효율적인 자원 관리

  - 가상 머신과 달리 Docker는 호스트 운영 체제의 커널을 공유하여 자원을 효율적으로 관리한다.

    이로 인해 더 많은 애플리케이션을 동일한 물리적 머신에서 실행할 수 있다.

4. 이식성

  - Docker 컨테이너는 독립적으로 실행되므로 어느 환경이든 동일한 방식으로 작동한다.

    개발 환경과 프로덕션 환경 사이의 차이를 최소화하여 애플리케이션 배포와 스케일링을 간편하게 만든다.

5. 강력한 이미지 관리

  - Docker 이미지는 컨테이너를 생성하는 데 필요한 모든 정보를 포함한다.

    이미지를 버전 관리하고 공유하여 애플리케이션을 쉽게 관리할 수 있다.

6. 마이크로서비스 아키텍처

  - Docker는 마이크로서비스 아키텍처를 구현하는 데 이상적이다.

    각 마이크로서비스를 독립적인 컨테이너로 실행하여 개별적으로 관리하고 확장할 수 있다.

7. 커뮤니티와 생태계

  - Docker는 거대한 커뮤니티와 풍부한 생태계를 가지고 있다.

    다양한 플러그인, 도구, 이미지 등이 사용자들에 의해 지속적으로 개발되고 공유되어 생산성을 향상시킨다.

8. 가상 머신과의 통합

  - Docker는 기존 가상 머신과 함께 사용할 수 있다.

    가상 머신 내부에 Docker를 설치하여 가상 머신의 이점과 컨테이너의 이점을 함께 활용할 수 있다.

 

■ Docker 공개

- Docker는 2013년에 처음으로 공개되었다. Docker는 Docker Inc.라는 회사가 개발하고 출시한 오픈 소스 프로젝트로 시작되었다.

  초기 버전은 dotCloud라는 회사에서 개발된 dotCloud PaaS(Platform as a Service)의 일부로 사용되었다.

  2013년 3월, dotCloud에서 프로젝트를 공식적으로 "Docker"라는 이름으로 발표하고, 4월에 첫 번째 베타 버전이 출시되었다.

  Docker는 빠르게 인기를 얻고 개발자들과 기업들 사이에서 컨테이너 기반 가상화 기술로서 널리 채택되기 시작했다.

  이후 Docker Inc.는 컨테이너 기술을 발전시키고 보급시키는데 지속적인 역할을 하면서 Docker 프로젝트를 발전시켜 왔다.

  2017년에는 Docker의 세컨드 버전인 "Docker CE"와 "Docker EE"를 발표하여 더 많은 사용자와 기업들이 Docker를 채택할 수 있도록 하였다.

  현재 Docker는 개발자들과 기업들 사이에서 매우 인기 있는 컨테이너 가상화 솔루션으로서 사용되고 있으며, 컨테이너 기반의 애플리케이션

  배포와 관리를 단순화하는 강력한 도구로 폭넓게 활용되고 있다.

 

■ Docker 단점

1. 복잡성

  - Docker는 기본적으로 컨테이너화된 애플리케이션을 생성하고 관리하는 작업을 단순화한다.

    그러나 처음 사용자들은 Docker의 개념과 동작 방식을 이해하는 데 시간이 걸릴 수 있으며, 복잡한 설정과 문제 해결이 필요할 수 있다.

2. 보안 위험

  - Docker 컨테이너는 호스트 운영 체제의 커널을 공유하므로, 악의적인 사용자가 컨테이너 내부에서 호스트 시스템에 영향을 미칠 수 있는

    보안 위험이 있다. 적절한 보안 관행과 격리를 적용해야 한다.

3. 자원 소비

  - Docker 컨테이너는 가상 머신과 비교하면 상대적으로 자원 소비가 적지만, 여전히 추가적인 자원을 요구한다.

    컨테이너화된 애플리케이션을 실행하는 데에는 일정 수준의 오버헤드가 발생할 수 있다.

4. Docker 호환성

  - 모든 애플리케이션이 Docker로 컨테이너화되지는 않는다.

    특히, 레거시 시스템이나 일부 특정 기술 스택은 Docker 컨테이너를 지원하지 않을 수 있다.

5. 크기 증가

  - Docker 이미지는 컨테이너를 생성하는 데 필요한 모든 요소를 포함하므로 이미지 크기가 커질 수 있다.

    큰 이미지는 네트워크 대역폭과 저장 공간을 소비하며, 이미지 배포 시에도 시간이 더 오래 걸릴 수 있다.

6. Docker Daemon 문제

  - Docker를 실행하기 위해 Docker Daemon이 항상 백그라운드에서 실행되어야 한다.

    이 데몬의 오작동이나 충돌은 컨테이너 운영에 영향을 미칠 수 있다.

7. Docker 파일 시스템 오버헤드

  - Docker는 호스트 시스템과 컨테이너 사이에 파일 시스템 매핑을 수행한다.

    매핑된 파일 시스템의 오버헤드가 발생할 수 있으며, 성능에 영향을 미칠 수 있다.

8. Docker 네트워킹 복잡성

  - 여러 개의 컨테이너가 동시에 실행되고 상호 작용할 때 네트워킹 설정과 연결에 대한 복잡성이 발생할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ 에러 과정 및 해결

1. impdp를 통하여 database import 중 에러가 발생

2. Z:\998.Oracle\oradata\orcl\ (경로는 사용자마다 다를 수 있음) 안에 만들어 둔 .DBF을 삭제

3. DBeaver를 통하여 오라클을 접속하려고 하는데 ORA-01033 에러 발생

4. 아래 서비스를 재가동해 봄. - 여전히 되지 않음

5. 명령 프롬프트(cmd) - sqlplus 접속 - shutdown 및 시작 명령어 실행 (빨간색 글씨) - 여전히 안됨

C:\Users\MJMK>sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 일 7월 16 11:39:45 2023

Copyright (c) 1982, 2016, Oracle. All rights reserved.

 

다음에 접속됨:

Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

 

SQL>shutdown immediate;

ORA-01109: 데이터베이스가 개방되지 않습니다

 

데이터베이스가 마운트 해제되었습니다.

ORACLE 인스턴스가 종료되었습니다.

 

SQL>startup;

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE 인스턴스가 시작되었습니다.

 

Total System Global Area 5133828096 bytes

Fixed Size                                 8757472 bytes

Variable Size                      1560284960 bytes

Database Buffers               3556769792 bytes

Redo Buffers                            8015872 bytes

데이터베이스가 마운트 되었습니다.

ORA-01157: 데이터 8 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오

ORA-01110: 8 데이터 파일: 'Z:\998.ORACLE\ORADATA\ORCL\xxxx.DBF'

Database Buffers 3556769792 bytes

Redo Buffers 8015872 bytes

 

6. 아래와 같이 다시 실행 후, DBeaver 접속 시도 - 성공

SQL>alter database datafile 'Z:\998.ORACLE\ORADATA\ORCL\xxxx.DBF' offline drop;

데이터베이스가 변경되었습니다.

SQL>alter database open;

데이터베이스가 변경되었습니다.

 

7. 아래와 같은 오류 메시지가 나오면 데이터 파일명이 아직 drop이 안된 것이 있는 것으로, 메시지가 안 나올 때까지 6번과 같이 반복 실행한다.

SQL>alter database open;

*

1행에 오류:

ORA-01157: 데이터 11 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을 보십시오

ORA-01110: 11 데이터 파일: 'Z:\998.ORACLE\ORADATA\ORCL\xx.DBF'

728x90
반응형
LIST
728x90
반응형
SMALL

■ Vue3 설치 방법 및 프로젝트 생성

1. node.js를 먼저 설치한다.

  - node.js 설치방법 : https://200-rush.tistory.com/entry/NodejsInstall

 

2. 명령 프롬프트에서 아래와 같은 명령어를 입력하여 Vue를 설치한다.

C:\Users\MKMJ>npm install -g @vue/cli

 

3. 아래 이미지와 같이 나오면 설치가 완료된 것이다.

 

4. 설치가 완료되었으면, 명령 프롬프트에서 설치가 잘 되었는지 확인한다. 버전이 나오면 정상적으로 설치가 완료된 것이다.

C:\Users\MKMJ>vue -V

@vue/cli 5.0.8

 

5. 설치가 성공적으로 되었으니, 아래 명령어를 입력하여 vue 프로젝트를 생성한다. 프로젝트 경로를 변경하고 싶으면 원하는 경로에 가서 아래 명령어를 입력한다.

C:\Users\MKMJ>vue create vue_project_1

 

6. 아래와 같이 어떤 버전으로 프로젝트를 만들지 선택하여 엔터를 누른다.

Vue CLI v5.0.8

? Please pick a preset: (Use arrow keys)

> Default ([Vue 3] babel, eslint)

   Default ([Vue 2] babel, eslint)

   Manually select features

 

7. 프로젝트 생성이 완료되었으면, 프로젝트 생성 경로로 이동하여 잘 생성되었는지 확인한다.

8. 명령 프롬프트 창에서 프로젝트 생성 경로로 이동 후, 아래와 같은 명령어를 입력한다.

C:\Users\MKMJ\vue_project_1>npm run serve

 

9. 명령 프롬프트에 아래와 같은 메시지가 나오면 성공한 것으로, Local 또는 Network 주소를 복사하여 브라우저에 붙여 넣는다.

 DONE Compiled successfully in 2465ms

 

  App running at:

  - Local: http://localhost:8080/

  - Network: http://192.168.219.189:8080/

 

  Note that the development build is not optimized.

  To create a production build, run npm run build.

 

10. 아래 이미지와 같이 나오면 성공

728x90
반응형
LIST
728x90
반응형
SMALL

■ Node.js (18.16.1 LTS) 설치 방법

1. node.js 다운로드 사이트 : https://nodejs.org/ko

2. 18.16.1 LTS(안정적, 신뢰도 높음) 버튼을 클릭하여 다운로드한다.

3. 다운로드한 파일 node-v18.16.1-x64.msi를 클릭하여 설치한다.

4. 아래 이미지와 같이 순서대로 진행한다.

  - Node.js runtime : Node.js

  - corepack manager : 패키지 관리자로 yarn, pnpm과 같은 package manager를 프로젝트별로 지정하여 사용할 수 있게 함.

  - npm package manager : Node Package Manager 패키지 관리자

  - Online documentation shortcuts : 온라인 문서 바로가기

  - Add to PATH : PATH 환경변수 등록

5. 위의 이미지대로 설치를 하였으면, 설치가 잘 되었는지 명령 프롬프트를 열어 확인해 본다. 설치한 버전이 나오면 설치가 완료된 것이다.

C:\Users\USER>node -v

v18.16.1
728x90
반응형
LIST
728x90
반응형
SMALL

■ Vue.js 에 대한 설명

1. Evan You에 의해 만들어진 프런트엔드 자바스크립트 프레임워크로, 2014년에 처음으로 공개되었다.

2. 현대적인 프런트엔드 자바스크립트 프레임워크로, 사용자 인터페이스를 구축하기 위한 도구이다.

3. 컴포넌트 기반 아키텍처를 기반으로 하여 웹 애플리케이션의 다양한 부분을 재사용 가능한 작은 조각으로 분리하여 개발하도록 돕는다.

4. 반응형 데이터 바인딩으로 데이터와 뷰를 자동으로 동기화하여, 데이터의 상태 변화에 따라 자동으로 화면이 업데이트된다.

5. 컴포넌트 기반 구조로 화면을 구성하는 모든 요소를 컴포넌트로 분리하여 개발한다. 이러한 컴포넌트들은 독립적으로 작동하며, 재사용성과 유지보수가 용이하다.

6. 가상 DOM을 사용하여 실제 DOM 조작을 최소화하여 성능을 최적화한다. 변경된 부분만 실제 DOM에 적용하여 빠른 렌더링이 가능하다.

7. 이벤트 핸들링을 간편하게 처리할 수 있는 방법을 제공합니다. 사용자의 입력, 클릭 등의 이벤트에 반응하여 적절한 동작을 수행할 수 있다.

8. 컴포넌트는 생성, 업데이트, 소멸과 같은 다양한 생명주기 메서드를 가지고 있다. 이를 이용하여 컴포넌트의 동작을 제어하거나 작업을 수행할 수 있다.

9. 다른 프런트엔드 프레임워크와 비교해도 학습 곡선이 낮고 간결한 문법을 가지고 있기 때문에 쉽게 접근할 수 있으며, 작은 규모의 프로젝트부터 대규모의 애플리케이션까지 다양한 상황에서 사용될 수 있다.

 

■ Vue.js 장점

1. 가볍고 빠르며, 압축된 파일 크기가 작다. 이로 인해 초기 로딩 시간이 단축되고 사용자 경험이 향상된다.

2. 간단하고 직관적인 문법을 가지고 있어, 새로운 개발자들도 상대적으로 빠르게 배울 수 있다.

3. 다양한 기능을 제공하는 라이브러리와 플러그인을 가지고 있어 개발자들이 자신의 프로젝트에 맞게 선택하여 사용할 수 있다.

4. 리액트와 앵귤러의 장점을 조합한 프레임워크로, 양쪽의 장점을 융합하여 사용할 수 있다.

5. 컴포넌트 기반 아키텍처를 기반으로 하여 코드의 재사용성과 유지보수가 용이하다.

6. 데이터와 뷰를 자동으로 동기화해 주는 양방향 데이터 바인딩을 제공하여 개발자가 상태 관리에 대해 더 쉽게 작업할 수 있다.

 

■ Vue.js 단점

1. 리액트와 앵귤러를 비교했을 때, Vue.js의 생태계는 다소 작을 수 있습니다. 따라서 리액트와 앵귤러에서 제공하는 특정 기능이 Vue.js에서는 찾기 어려울 수 있다.

2. 작은 및 중간 규모의 프로젝트에 적합하지만, 매우 큰 규모의 애플리케이션에 대한 지원이 리액트나 앵귤러만큼 강력하지는 않을 수 있다.

3. 커뮤니티는 리액트나 앵귤러보다 작을 수 있으므로, 문제 해결이나 지원을 받을 때에는 조금 더 어려울 수 있습니다.

4. 리액트와 앵귤러의 장점을 조합한 프레임워크로, 양쪽의 장점을 융합하여 사용할 수 있다.

5. 새로운 버전을 릴리스하는 속도가 빠르기 때문에, 이로 인해 기존 프로젝트가 새로운 버전과 호환되지 않을 수도 있다.

6. 데이터와 뷰를 자동으로 동기화해 주는 양방향 데이터 바인딩을 제공하여 개발자가 상태 관리에 대해 더 쉽게 작업할 수 있다.

 

■ Vue.js 버전

1. Vue.js 1.x

  - 초기 버전으로 2014년에 출시되었다.

  - 가볍고 빠르며, 쉬운 학습 곡선을 제공하여 초보자들도 쉽게 접근할 수 있었다.

  - 단방향 데이터 바인딩만을 지원하였으며, 가상 DOM을 사용하지 않았다.

2. Vue.js 2.x

  - 2016년에 출시되었다. 이 버전에서는 성능과 기능이 크게 개선되었다.

  - 양방향 데이터 바인딩이 추가되어 데이터와 뷰를 더 쉽게 동기화할 수 있게 되었다.

  - 가상 DOM이 도입되었다.

3. Vue.js 3.x

  - 2020년에 출시되었다. 이 버전에서 가장 큰 변화는 가상 DOM 라이브러리로서 "Vue 3 Composition API"를 도입한 것이다.

  - 이 API는 코드를 더 구조적이고 유연하게 작성할 수 있도록 도와주며, Vue.js 애플리케이션의 성능과 유지보수성을 향상시켜 준다.

  - TypeScript 지원이 향상되어 타입 시스템과의 통합이 더욱 강화되었다.

728x90
반응형
LIST
728x90
반응형
SMALL

■ 오라클 12C 다운로드

1. 오라클 다운로드 사이트 : https://edelivery.oracle.com/osdc/faces/Home.jspx

2. 다운로드를 위해서는 계정이 있어야 한다. 계정이 있으면 Sign In, 없으면 계정을 생성한다.

오라클 Sign In, Create Account 화면

3. 필자는 계정이 있으므로 사용자 이름 및 암호를 입력하고 로그인

오라클 계정 로그인

4. 오라클 설치버전을 선택한다. 설치버전을 클릭하고, 우측 상단의 Continue버튼을 클릭한다.

오라클 설치버전 선택

5. 설치할 패키지를 체크한다. 필자는 서버와 클라이언트만 필요하기 때문에 위의 2개를 체크하고 Platforms/Languages를 선택한다.

    (필자는 OS가 Microsoft Windows x64 (64-bit)를 선택), 이후 우측 상단 또는 하단의 Continue 버튼을 클릭한다.

패키지 선택화면

6. 하단의 체크란에 체크하고 Continue 버튼을 클릭한다.

7. Download 할 파일을 확인하고 Download 버튼을 클릭한다.

8. 다운로드가 완료되면 아래와 같은 파일이 다운로드 폴더 안에 생성된다.

9. 파일을 클릭하면 아래 이미지와 같이 실제 파일을 다운로드할 수 있는 창이 뜬다. 다운로드 폴더를 선택하고 Next를 눌러 파일을 다운로드한다.

10. 압축파일 V839963-01.zip을 풀고 setup을 클릭하여 설치를 시작한다. [My Oracle Support를 통해 보안 갱신 수신 체크]를 해제하고 다음을

      클릭한다. 그럼 아래와 같이 경고 메시지가 뜨는데, 예를 클릭한다.

11. 순서대로 아래 이미지와 같이 설치를 진행한다.

12. Oracle Base 등 경로에는 한글 및 특수문자가 들어가지 않도록 하며, 전역 데이터 베이스 비밀번호는 대소문자, 숫자 포함을 권장하나, 간단하게 입력해도 무방하다.

      설정한 비밀번호는 system 계정의 비밀번호로, 사용자를 만들지 않고 로그인할 때 필요하다.

      (설치 도중 에러 발생, 14번 참고 : Failed to add [Computer Name] install user to %2% group.)

13. 설치를 완료했으면, 오라클이 접속되는지 확인해 본다. (Oracle SQL Developer를 통해 확인)

      항목을 입력하고 테스트 버튼 클릭, 왼쪽 하단 상태가 성공이면 접속 완료된 것이다.

      (로그인 도중 에러 발생, 14번 참고 : ORA-01017: 사용자명/비밀번호가 부적합, 로그온 할 수 없습니다.)

    - 접속 이름 : 아무거나 입력

    - 사용자 이름 : system

    - 비밀번호 : 오라클을 설치하였을 때 지정한 비밀번호

    - 호스트 이름 : local에 접속할 것이므로, localhost

    - 포트 : 오라클에서 사용하는 기본포트로 1521

    - SID : 오라클을 설치하였을 때 만든 orcl

14. 위와 같은 절차로 진행하였을 때, 순조롭게 오라클이 설치될 수도 있지만, 그렇지 않은 경우 여러 에러에 부딪힐 수도 있다.

      설치하면서 났던 에러를 정리해 보았다. - 오라클 12C 에러 (설치, 접속)

728x90
반응형
LIST
728x90
반응형
SMALL
오라클 12C 설치를 설치 및 접속하는 동안 여러 에러를 만날 수 있었는데,
에러 종류와 해결 방법을 알아보자.

 

■ 오라클 12C 설치 에러

1. 에러 메시지 : Failed to add [Computer Name] install user to %2% group.

  - Computer Name은 각 PC에 따라 명칭이 달라진다.

  - 이 에러는 사용자 이름과 컴퓨터 이름과 같으면 안 된다고 한다. 무슨 말인지 이해를 못 해서 무시하고 계속 설치를 진행한 결과 사용하는 데는 문제가 없었다.

 

■ 오라클 12C 접속 에러

1. DBeaver를 이용하여 접속을 시도했으나 다음과 같은 에러 메시지가 발생하였다. (초기 비번 대소문자 혼용해서 만듦)

  - ORA-01017: 사용자명/비밀번호가 부적합, 로그온 할 수 없습니다.

2. 명령 프롬프트(CMD)에 접속하여 다음과 같은 명령어를 입력한다.

C:\Users\MK> sqlplus / as sysdba

 

3. SQL에 접속되었으면, 다음과 같은 명령어를 입력하여 대소문자 구분 설정값을 확인한다.

  -  설정값 : TRUE (대소문자를 구분한다는 뜻)

SQL> show parameter sen

대소문자 설정값 확인

4. 대소문자 구분 안 하게 설정값을 변경한다.

SQL> alter system set sec_case_sensitive_logon=FALSE;

 

5. 그래도 접속이 되지 않는다면, 비밀번호를 재설정한다. (필자는 1로 변경)

SQL> alter user system identified by 1;

 

6. 그래도 접속이 되지 않는다면, 대소문자 설정값을 다시 구분하게 설정한다.

SQL> alter system set sec_case_sensitive_logon=TRUE;

 

7. 이렇게 반복해서 접속이 완료되었다.

728x90
반응형
LIST
728x90
반응형
SMALL
Windows 버전에 따라 시작이나 메뉴 구성이 다를 수도 있으니 참고

 

■ Windows 10 사용자 계정 추가 방법

1. 시작버튼을 클릭 - 맨 위 사람모양을 클릭 - 계정 설정 변경 클릭

2. 왼쪽에 가족 및 다른 사용자를 클릭한 후, 이 PC에 다른 사용자 추가를 클릭한다.

3. 아래 이미지와 같이 진행한다. 우측 이미지 동의 체크란 활성화는 자세히 버튼을 누르고 바로 뒤로 버튼을 누르면 체크란이 활성화된다. 이후 동의 버튼을 클릭한다.

4. 마찬가지로 이미지와 같이 진행한다. 사용자 이름 및 암호를 입력하면, 암호를 잃어버렸을 때, 힌트란이 나오는데 3개 전부 필수값으로 입력해야 한다.

5. 여기까지 완료되었으면 계정이 생성된 것을 볼 수 있다. 계정 유형을 변경하고 싶으면 계정 유형 변경 버튼을 클릭하여 수정할 수 있다.

 

■ Windows 10 사용자 계정 추가 후 로그인 변경

1. 시작버튼을 클릭 - 맨 위 사람모양을 클릭하여 새로 생성된 계정을 클릭하여 로그인한다.

2. 새롭게 로그인을 하였으므로, 간단한 설정만 하면 새로운 계정으로 로그인을 할 수 있다.

728x90
반응형
LIST
728x90
반응형
SMALL
서버에 postgresql 설치했으면, 외부 클라이언트에서 서버에 접속할 수 있도록 설정을 해주어야 한다.
서버가 Ubuntu일 경우와 Windows일 경우 설정하는 방법,

설정 후 DBeaver에서 접속하는 방법을 알아보도록 하자.

 

■ 서버가 Ubuntu일 경우

1. postgres에 접속한다.

pmk@pmk-virtual-machine:~$ sudo -i -u postgres

 

2. pg_hba.conf 파일 위치를 확인한다.

postgres@pmk-virtual-machine:~$ psql

postgres=# show data_directory;    # 위치 출력 : /var/lib/postgresql/14/main

 

3. pg_hba.conf 파일 내용을 수정한다. (0.0.0.0/0으로 수정)

postgres@pmk-virtual-machine:~$ vi /etc/postgresql/14/main/pg_hba.conf

IPv4 변경

 

5. postgresql.conf 파일 내용을 수정한다.

  - listen_addresses = '*'로 수정하고, 앞에 # 표시도 제거(주석 해제)

postgres@pmk-virtual-machine:~$ vi /etc/postgresql/14/main/postgresql.conf

listen_addresses 변경

 

6. 수정 후 postgres 계정에서 나온다.

postgres@pmk-virtual-machine:~$ exit    # 실행하면 logout, There are stopped jobs. 표시

postgres@pmk-virtual-machine:~$ exit    # 실행하면 logout, 마지막에 Vim: Finished. 표시

 

7. postgresql 서비스를 재실행한다.

pmk@pmk-virtual-machine:~$ sudo service postgresql restart

 

8. DBeaver를 실행하여 Host 부분을 서버 IP주소로 변경하고 Test Connection.. 클릭하면 Connected 메시지와 함께 팝업이 뜨면 접속 성공!

DBeaver 접속

참고) postgres 비번을 모를 경우 설정방법

pmk@pmk-virtual-machine:~$ sudo -i -u postgres

postgres@pmk-virtual-machine:~$ psql

postgres=# alter user postgres with password 'postgres';    # alter user 사용자 with password '비밀번호'

 

■ 서버가 Windows일 경우

1. C:\Program Files\PostgreSQL\15\data 폴더 안에 pg_hba 파일을 수정한다. (경로는 다를 수 있음)

pg_hba 파일

2. C:\Program Files\PostgreSQL\15\data 폴더 안에 postgresql 파일을 수정한다. (경로는 다를 수 있음)

postgresql 파일

3. postgresql 서비스를 재실행한다.

postgresql 서비스를 재실행

 

4. DBeaver를 실행하여 앞서했던 방식과 동일하게 접속한다.

728x90
반응형
LIST

'Postgresql' 카테고리의 다른 글

postgresql 설치 방법 - Windows  (0) 2023.07.01
postgresql 삭제 방법 - Ubuntu22.04.2.LTS  (0) 2023.06.30
postgresql 설치 방법 - Ubuntu22.04.2.LTS  (0) 2023.06.25
728x90
반응형
SMALL

■ postgresql 다운로드

1. postgresql 다운로드 : https://www.postgresql.org/download/

2. 아래 Windows 클릭 후, Download the installer 클릭한다.

3. 원하는 버전을 클릭하여 다운로드한다. (필자는 15.3을 선택)

 

■ postgresql 설치

1. postgresql 다운로드 파일을 클릭하여 설치를 진행한다.

2. 아래 이미지 순서대로 설치한다.

3. postgreSQL Server : PostgreSQL 서버 설치

    pgAdmin 4 : postgresql 서버에 접속하기 위한 클라이언트 프로그램

    Stack Builder : postgresql의 추가적인 유틸리티 프로그램

    Command Line Tools : 말 그대로 Command Line Tools로 Command Line으로 postgresql로 접속할 수 있다.

4. password는 초기에 postgresql 접속할 때 사용한다.

5. postgresql port는 기본적으로 5432를 사용하지만, 변경해도 무방하다.

6. Locale은 Korean, Korea로 변경한다. (데이터에 한글이 들어올 수 있으므로..)

    Locale 설정은 아래와 같은 영향을 준다.

  - 대소문자 구분

  - 문자열 정렬

  - like문에서 인덱스 사용여부 결정

7. 설치가 완료되면 작업 관리자를 실행하여 postgresql 서버가 실행되고 있는지 확인한다.

postgresql 서버 실행 확인

■ postgresql 실행

1. 클라이언트 프로그램을 사용하여 postgresql에 접속한다.

    postgresql을 처음 설치할 때, pgAdmin4 설치 옵션 체크를 하고 설치를 하였기 때문에 별도로 다운로드하지 않아도 된다.

    pgAdmin4를 실행하여 postgresql에 접속한다. (접속 비밀번호는 설치할 때 설정했던 비밀번호)

pgAdmin4 실행화면

2. postgresql 클라이언트 프로그램은 pgAdmin4 말고도 DBeaver와 같은 많은 프로그램이 있기 때문에, 다른 클라이언트 프로그램으로 접속하려

    면 추가적인 설치를 통하여 사용하면 된다. (DBeaver 추천)

 

참고) postgresql 외부 접속 방법 : https://200-rush.tistory.com/entry/PostgresqlOutConnect

728x90
반응형
LIST
728x90
반응형
SMALL

■ postgresql 삭제방법

1. postgresql 서비스 상태

pmk@pmk-virtual-machine:~$ systemctl list-unit-files postgresql*

2. postgresql 서비스 중지

pmk@pmk-virtual-machine:~$ sudo systemctl stop postgresql.service

 

3. postgresql 서비스 비활성화

pmk@pmk-virtual-machine:~$ sudo systemctl disable postgresql.service    # 활성화는 disable 대신 enable

4. postgresql 삭제

pmk@pmk-virtual-machine:~$ sudo rm -rf /var/lib/postgresql    # postgresql 디렉터리 삭제

pmk@pmk-virtual-machine:~$ sudo apt remove "postgresql*"    # postgresql 패키지 삭제

pmk@pmk-virtual-machine:~$ sudo apt --purge remove "postgresql*"    # postgresql 패키지 및 패키지의 환경설정 삭제

pmk@pmk-virtual-machine:~$ sudo apt autoremove    # 의존성이 없는 패키지 삭제

 

5. postgresql 설치된 패키지 확인

pmk@pmk-virtual-machine:~$ dpkg -l | grep postgres*    # 아무것도 조회 안되면 삭제가 완료된 것

728x90
반응형
LIST
728x90
반응형
SMALL

■ postgresql 설치방법

1. postgresql 설치가능한 버전 확인

pmk@pmk-virtual-machine:~$ apt show postgresql

설치 가능한 postgresql 버전

2. 패키지 최신화

pmk@pmk-virtual-machine:~$ sudo apt update    # 설치 가능한 패키지 최신화

pmk@pmk-virtual-machine:~$ sudo apt upgrade    # 패키지 업그레이드

 

3. 버전을 확인했으면 postgresql 설치 (2개 모두 postgresql 설치 명령어로 하나만 선택하여 실행한다.)

pmk@pmk-virtual-machine:~$ sudo apt install postgresql postgresql-contrib

pmk@pmk-virtual-machine:~$ sudo apt install postgresql

(참고)

- postgresql-contrib 설치여부 (추가 유틸리니 및 기능추가 설치여부)

- 어떤 것을 설치해도 무방

- sudo apt install -y postgresql    # -y를 써주면 설치하면서 나오는 yes/no를 무조건 yes로 설치한다.

- 다음과 같은 메시지와 같이 설치 안될 때 재부팅

  E: Could not get lock /var/cache/apt/archives/lock. It is held by process 3072 (unattended-upgr)

  N: Be aware that removing the lock file is not a solution and may break your system.

  E: Unable to lock directory /var/cache/apt/archives/

 

4. postgresql 상태확인 (2개 모두 상태확인 명령어)

pmk@pmk-virtual-machine:~$ service postgresql status

pmk@pmk-virtual-machine:~$ systemctl status postgresql

 

5. postgresql 프로세스 확인

pmk@pmk-virtual-machine:~$ ps -ef | grep post    # 약 8개 정도 프로세스 확인

 

6. postgresql 리스너 확인

pmk@pmk-virtual-machine:~$ ss -lntp    # 5432 postgresql 포트 확인

 

7. postgresql 시작

pmk@pmk-virtual-machine:~$ sudo service postgresql start    # 설치되면 자동으로 active 상태임

 

8. postgresql 접속

pmk@pmk-virtual-machine:~$ sudo -i -u postgres    # -i(로그인 옵션) -u(유저 옵션)

postgres@pmk-virtual-machine:~$ psql

 

9. 사용자 확인 등 명령어

postgres=# \du    # 사용자 확인

postgres=# \l    # DB 확인

postgres=# create database pmk_test;    # pmk_test database 생성, 만들어졌으면 CREATE DATABASE라는 문구 표시

postgres=# \c pmk_test;    # pmk_test database로 이동 (You are now connected to database "pmk_test" as user "postgres")

pmk_test=# create table computer(brand varchar(100), year varchar(8));    # computer table, 칼럼 brand, year 생성, 만들어졌으면 CREATE TABLE라는 문구 표시

pmk_test=# insert into computer(brand, year) values('samsung', '20230625');    # 데이터 insert

pmk_test=# select * from computer;    # 데이터 조회

 

10. postgres 나오기

postgres=# \q

postgres@pmk-virtual-machine:~$ exit

 

참고)

postgresql 삭제방법 : https://200-rush.tistory.com/entry/UbuntuPostgresqlDelete

postgresql 외부 접속 방법 : https://200-rush.tistory.com/entry/PostgresqlOutConnect

728x90
반응형
LIST
728x90
반응형
SMALL

■ Ubuntu(우분투) Server 22.04.2.LTS 설치 시 나오는 Featured Server Snaps 항목 설명

  1. mictok8s : Kubernetes(쿠버네티스)를 테스트 목적으로 사용해 보기 위해서 우분투가 제공하는 가벼운 배포판

  2. nextcloud : 구글 드라이브와 같이 문서를 저장, 편집할 수 있는 서비스를 제공하는 오픈 소스 소프트웨어

  3. wekan : 오픈 소스 칸반(kanban)

  4. kata-containers : 초경량 VM으로 컨테이너처럼 작동하는 기술

  5. docker : 개발자가 모든 환경에서 해당 코드를 실행하는데 필요한 애플리케이션 소스 코드와 운영 체제(OS) 라이브러리 및 종속성을 결합하는

      표준화된 실행 가능 구성 요소인 컨테이너를 빌드, 배포, 실행, 업데이트 및 관리할 수 있는 오픈 소스 플랫폼

  6. canonical-livepatch : 재부팅 없이 주요 커널 패치 적용 가능

  7. rocketchat-server : 웹, 데스크톱 또는 모바일에서 실시간으로 안전하게 통신하고 다양한 플러그인, 테마 및 기타 주요 소프트웨어와의

      통합으로 인터페이스를 사용자 지정할 수 있는 오픈 소스 팀 채팅 협업 플랫폼

  8. mosquitto : MQTT 브로커

  9. etcd : key:value 형태의 데이터를 저장하는 스토리지

  10. powershell : powershell은 명령줄 셸 스크립팅 언어 및 구성 관리 프레임워크로 구성된 플랫폼 간 작업 자동화 솔루션

  11. stress-ng : 과부하 테스트 프로그램

  12. sabnzbd : 무료로 제공되는 간편한 바이너리 뉴스리더

  13. wormhole : 파일, 디렉터리, 텍스트 및 URL 공유 및 송수신 가능

  14. aws-cli : AWS 명령줄 인터페이스(CLI)는 AWS 서비스를 관리하는 통합 도구

  15. google-cloud-sdk : Google Cloud 제품 및 서비스와 상호작용하기 위한 도구 및 라이브러리

  16. slcli : SLCLI는 SoftLayer API와 쉽게 상호작용하는 데 사용되는 도구

  17. doctl : DigitalOcean을 사용하면 DigitalOcean CLI(doctl)를 통해 리소스를 관리

  18. conjure-up : 쿠버네티스와 다른 대형 소프트웨어 스택을 설정할 수 있는 전용 도구

  19. postgresql10 : postgresql 서버

  20. heroku : PaaS (Platform as a Service) 클라우드 플랫폼으로써, 서버, 프레임워크, OS 등 클라우드 상에서 제공해 주는 방식의 서비스로

         heroku에 애플리케이션을 업로드하면 프로젝트의 언어, 프레임워크 정보 등을 인식하여, 빌드, 서비스 배포까지 자동으로 해주는 플랫폼

  21. keepalived : 서비스의 가동 상태를 감시하는 소프트웨어로 서비스에 장애가 발생하여 정지했을 경우, 그 서버로 오는 요청을 다른 가용 서버로

        할당하도록 하여 서비스가 정지하지 않고 무정지 운영이 가능하도록 하는 기능

  22. prometheus : SoundCloud 사에서 만든 오픈 소스 기반 모니터링 솔루션

  23. juju : Ubuntu를 배포하는 Canonical의 오케스트레이션 툴

728x90
반응형
LIST
728x90
반응형
SMALL

리눅스 파일 관련 명령어 정리
명령어 옵션은 실제로 정리된 것 보다 더 많으나, 공부한 것 위주로 정리해 본다.
명령어 --help를 치면 리눅스에서 제공하는 옵션 설명을 볼 수 있으니 알아두자.

 

● cat - 파일 내용 출력 및 병합 등

1. cat file :  file 내용 출력

2. cat file file1 : file, file1 내용 출력

3. cat file > new_file : file를 복사하여 new_file생성

4. cat file file1 > new_file : file, file1을 복사하여 new_file생성

5. cat file >> new_file : file의 내용을 new_file에 추가

6. cat > file : file의 내용을 직접 쓰고 저장, 기존 내용은 없어짐, 내용을 작성했으면 ctrl+c를 누르면 저장완료

7. cat >> file : 6번과 동일하나, 쓴 내용은 기존 file 내용에 추가

8. cat -n file : file 내용 왼쪽에 줄번호 표시

 

● cd - 디렉터리 이동

1. cd [디렉터리 명] : 디렉터리로 이동, 디렉터리 이름은 대소문자 구분

2. cd .. : 한 단계 위 디렉터리로 이동

3. cd / : 최상위 디렉터리로 이동

4. cd : 홈 디렉터리로 이동

5. cd - : 이전 경로로 이동

 

● cmp - 파일비교 (비슷한 명령어 : diff, diff3, comm)

1. cmp file file1 : file과 file1 비교, 첫 번째로 다른 점이 있는 곳 위치가 출력

2. cmp -b file file1 : 1과 동일, 추가적으로 서로 다른 문자까지 표시

 

● comm - 파일비교

1. comm file new_file : file과 new_file 비교

- file 내용

    file_new_file1

    file1

    file2

- new_file 내용

    file_new_1

    new_file1

    new_file2

    new_file3

- 두 파일을 비교하면 비교 내용이 표로 출력되진 않지만 공백으로 아래 표와 같이 비슷하게 출력이 됨

file 내용 new_file 내용 file과 new_file 같은내용
    file_new_file1
  new_file1  
file1    
file2    
  new_file2  
  new_file3  

 

● cp - copy의 줄임말로 복사 기능

1. cp -r folder folder1 : folder를 복사하여 folder1 생성 (하위 디렉터리와 파일 모두 복사)

2. cp -v folder folder1 : 1과 동일, 추가적으로 복사 진행 상태를 출력

  - 디렉터리 복사가 cp : -r not specified; omitting directory와 같이 메시지가 나오면서 안 되는 경우 -r 옵션이 빠져서 나오는 경우임

  - 이럴 경우 다음과 같이 입력 : cp -vr folder folder1 (옵션을 조합할 때는 -[옵션][옵션] 또는 -[옵션] -[옵션] 이런 식으로 사용)

3. cp -i file file1 : file를 복사하여 file1 생성, 파일이 존재하면 덮어쓰기 여부 체크 (y/n으로 덮어쓰기 여부 실행)

4. cp -f file file1 : 3번과 동일, 대신 강제로 덮어쓴다.

5. cp -p file file1 : 4번과 동일, 대신 file(원본파일)의 소유주, 그룹, 권한, 시간정보를 보존하여 복사

6. cp -a file file1 : 4번과 동일, 대신 file(원본파일)의 속성, 링크 정보를 보존하여 복사

 

● find - 파일 검색

1. find -name aaa : 대소문자를 구분하여 aaa 파일을 검색

2. find -iname aaa : 대소문자를 구분하지 않고 aaa 파일을 검색

3. find ./test -iname aaa : 대소문자를 구분하지 않고 test폴더 안에서만 aaa 파일을 검색

 

● grep- 문자열 검색

1. grep "문자열" file : file안에 입력된 문자열을 검색

2. grep "문자열" * : 현재 디렉터리 안의 모든 파일에서 문자열 검색

3. grep "문자열" *.txt : txt확장자를 가진 모든 파일에서 문자열 검색

4. grep -i "문자열" *.txt : 3번과 동일하나 대소문자 구분 없이 검색

5. grep -w "문자열" *.txt : 3번과 동일하나 단어단위로 검색

6. grep -n "문자열" *.txt : 3번과 동일, 추가적으로 라인번호 출력

7. grep -r "문자열" *.txt : 3번과 동일, 하위 디렉터리까지 검색

 

● ls - 디렉터리 나열

1. ls -l : 권한 보기

2. ls -a : 숨겨진 파일이나 디렉터리까지 표시

3. ls -r : 알파벳 역순으로 출력

4. ls -R : 하위 디렉터리까지 출력

 

● mkdir - 디렉터리 생성

1. mkdir -p 폴더1/폴더2 : 존재하지 않은 폴더1안에 폴더2을 만들 때에는 앞에 -p 옵션 사용 

 

● mv - move의 약자로 파일이나 디렉터리의 위치를 이동 및 다른 이름으로 변경

1. mv folder1/file1 folder2 : folder1안에 file1을 folder2로 이동

2. mv folder1/file1 folder2/file1_mod : folder1안에 file1을 folder2로 이동하되, 이름을 file1_mod로 변경

3. mv -b folder1/file1 folder2/file2 : 이동할 파일이 이미 존재할 경우 백업파일을 만듦

4. mv -i folder1/file1 folder2/file2 : 이동할 파일이 이미 존재할 경우 덮어쓰기 여부 체크

5. mv -f folder1/file1 folder2/file2 : 이동할 파일이 이미 존재할 경우 강제로 덮어쓴다.

6. mv -r folder1 folder2 : folder1안의 하위 디렉터리까지 folder2로 이동

7. mv -v folder1 folder2 : folder1을 folder2로 복사할 때, 복사 진행 상태를 출력

 

● rm- 파일/디렉터리 삭제

1. rm file, file1, file2 : 파일 여러 개를 한 번에 삭제

2. rm -d 디렉터리 : -d를 붙이면 디렉터리 삭제, 디렉터리 안에 파일이 있으면 삭제 안됨

3. rm -r 디렉터리 : -r을 붙이면 디렉터리 안에 있는 파일까지 같이 삭제

 

● sort - 파일의 내용을 정렬

1. sort file : file안의 내용을 정렬

2. sort -r file : file안의 내용을 역순으로 정렬

3. sort -n file : 문자와 숫자가 있을 시, 문자 우선으로 정렬

 

● touch - 빈 파일 생성

1. touch file1 : 파일이 없는 경우에 file1 생성

2. stat file1 : 파일의 atime(access time), mtime(modification time)을 확인

3. touch -a file1 : atime 변경

4. touch -m file1 : mtime 변경

5. touch -mt 202306180000.00 file1 : file1 mtime을 2023-06-18 00:00:00으로 변경

728x90
반응형
LIST
728x90
반응형
SMALL
VMware Workstation Pro 17 설치 방법

 

■ VMware 다운로드

1. VMware 다운로드 사이트 : https://www.vmware.com/kr/products/workstation-pro/workstation-pro-evaluation.html

2. 지금 다운로드를 클릭한다.

vmware 다운로드 사이트

 

■ VMware 설치

1. 다운로드 한 VMware-workstation-full-17.0.0-20800274 파일을 클릭한다.

2. Install 시작 전, Vmware 제품 설치 메시지 박스가 뜨면, Microsoft VC 프로그램을 설치해야 한다.

Vmware 제품설치 안내 메세지

3. Microsoft VC 설치 사이트 : https://learn.microsoft.com/ko-KR/cpp/windows/latest-supported-vc-redist?view=msvc-170

4. 사이트 접속 후 스크롤 바를 내려서 아래 이미지의 빨간 네모칸을 선택하여 다운로드 후 설치한다.

    (PC가 32 비트면 X86을 선택)

Microsoft VC 다운로드 사이트

5. 이후 재부팅이 필요하면 재부팅한 후, 다시 VMware를 설치한다.

6. Next 후,  I accept~ 란을 체크 후, Next를 클릭한다.

VMware Setup

7. 아래 이미지의 Enhanced Keyboard Driver를 추가적으로 체크한다. (기본설정은 체크가 안되어 있음)

    Enhanced Keyboard Driver~ : 키보드 드라이버 추가 설치 (특정 OS 대소문자 마음대로 입력되는 문제 차단)

    Add VMware~ : 콘솔 도구에 VMware 시스템 경로 추가

VMware Setup

8. 이후에는 기본적으로 세팅되어 있는 값으로 Next후 설치 완료한다.

    Check for project updates on startup : 시작 시 업데이트 확인

    Join the VMware~ : 사용자 체험 개선 프로그램에 참여

    Desktop : 바로가기 만들기

    Start Menu~ : 시작 메뉴에 프로그램 폴더 생성

    Enter License Key : 제품키 입력

VMware Setup

728x90
반응형
LIST
728x90
반응형
SMALL

 

Ubuntu Server 22.04.2.LTS 설치하는 방법을 포스팅하였으니,
이번에는
Desktop 22.04.2.LTS 설치하는 방법을 알아보도록 하자.

 

■ VMware 설치

1. VMware 설치 방법 (VMware Workstation Pro17 기준) : VMware Workstation Pro 17 설치 방법

 

■ Ubuntu Desktop 다운로드

1. VMware에 Ubuntu Desktop을 설치하기 위해서는 iso파일이 필요하다. Ubuntu iso를 다운로드할 수 있는 사이트로 이동한다.

  - Ubuntu Desktop 다운로드 사이트 : https://ubuntu.com/download/desktop

2. 우측 하단에 Download 22.04.2를 클릭한다.

Ubuntu Deskup Download 화면

 

■ VMware에 Ubuntu Desktop 설치

1. VMware 실행 후, ubuntu-22.04.2-desktop-amd64.iso를 인스톨한다.

VMware에 Ubuntu Desktop 설치

2. 아래 순서대로 VMware를 설정한다.

- Linux에 사용할 로그인 정보, 비번 등을 설정한다. (Ubuntu 설치할 때 다시 설정하는 부분이 있어서, 이 설정은 의미 없음)

- Virual machine name(가상머신이름), Location(파일이 풀어질 위치)을 설정한다.

- 하드디스크 기본용량을 설정한다.

- 설정을 완료했으면 Finish

VMware Ubuntu Desktop 설치 순서 및 방법

3. VMware세팅이 끝나면 Ubuntu Desktop을 아래 순서대로 설정한다.

- Keyboard layout을 설정한다. 원하는 언어를 클릭하여 설치한다. (Korean도 있지만 나는 English(US)을 선택하여 설치)

- 2번째 이미지에서 Install third-party.... 가 기본적으로 체크가 해제되어 있는데 이 부분을 체크한다.

- 지역설정을 서울로 바꾸면 시간이 서울시간으로 변경된다.

Ubuntu Desktop 설치화면

4. Ubuntu에서 사용할 로그인 정보를 입력한다.

5. 4번까지 설치를 하고 재부팅을 하면 Ubuntu 설치완료

- 4번에서 설정한 로그인정보를 입력하고 들어가면 Ubuntu를 사용할 수 있다.

Ubuntu Desktop 설치완료 화면

 

(참고) Server와 차이점

- 초기 인스톨하면 GUI가 제공된다.

- Server에 비해서 기본적으로 제공되는 것들이 많아, Install 시간이 서버보다 오래 걸린다.

- Ubuntu(우분투) Server 22.04.2.LTS 설치 방법 : Ubuntu(우분투) Server 22.04.2.LTS 설치 방법

728x90
반응형
LIST

'Linux_Ubuntu' 카테고리의 다른 글

Featured Server Snaps 항목 설명  (0) 2023.06.21
리눅스 파일 관련 명령어  (0) 2023.06.19
Ubuntu(우분투) Server 22.04.2.LTS 설치 (VMware)  (0) 2023.05.29
728x90
반응형
SMALL
Vmware 설치 및 Vmware에 Ubuntu 설치하는 방법을 알아보도록 하자.

 

■ VMware 설치

1. VMware 설치방법 (VMware Workstation Pro17 기준) : VMware Workstation Pro 17 설치 방법

 

■ Ubuntu Server 다운로드

1. VMware에 Ubuntu Server를 설치하기 위해서는 iso파일이 필요하다. Ubuntu iso를 다운로드할 수 있는 사이트로 이동한다.

  - Ubuntu 다운로드 사이트 : https://ubuntu.com/download/server

2. 중간에 Download Ubuntu Server 22.04.2 LTS를 클릭한다.

Ubuntu Server 다운로드 화면

■ VMware에 Ubuntu Server 설치

1. VMware 실행 후, ubuntu-22.04.2-live-server-amd64.iso를 인스톨한다.

- Create a New Virtual Machine 선택한다.

- Browser를 클릭하고, iso 파일이 있는 곳으로 가서 Image 삽입한다.

- Virual machine name(가상머신이름), Location(파일이 풀어질 위치)을 설정한다.

- 하드디스크 기본용량을 설정한다.

- 설정을 완료했으면 Finish (이미지 미첨부)

VMware 기본 설정

2. Try or install Ubuntu Server 선택, 원하는 언어를 선택한다.(나는 English를 선택)

Ubuntu Server 설치 및 언어 선택

3. 새로운 Installer로 업데이트하고 싶으면 Update to the new installer, 그렇지 않으면 Continue without updating 선택한다.

    키보드 또한 원하는 것을 선택한다. (나는 Installer는 Continue without updating, 키보드는 English 선택)

Installer Update여부 및 키보드 언어 선택

4. 인스톨 타입은 Ubuntu Server 선택한다. 네트워크 관련해서는 고정 IP로 설정하고 싶으면 빨간 박스에서 엔터를 눌러 설정을 변경한다.

    (나는 그냥 초기 설정 값으로 Done)

Install 타입 및 네트워크 설정

5. proxy 서버가 있으면 proxy 서버 주소를 입력한다. mirror 주소도 국내로 변경하고 싶으면 변경할 주소를 입력한다.

    (나는 따로 변경하지 않고 Done)

- proxy 서버 : 클라이언트가 서버로 접속할 때 바로 접속하지 않고 중간에 대신 전달해 주는 서버 (보안 등에 용이)

- mirror 서버 : Ubuntu에서 패키지를 다운로드할 때 사용되는 서버, 아래는 국내 사이트로 속도가 빠른 장점이 있다.

  - 카카오 : http://mirror.kakao.com/

  - 카이스트 : http://ftp.kaist.ac.kr/

Proxy 및 Mirror 서버 설정

6. Storage를 설정한다. (나는 기본값으로 진행)

Storage 설정

7. Ubuntu 로그인할 때 사용하는 정보로 서버 이름 및 비밀번호 설정한다. Upgrage관련해서는 Skip for now를 선택한다.

로그인 정보 및 Upgrade 설정

8. Install OpenSSH server 선택, Snap관련해서는 Done 선택한다.

- SSH : Secure Shell의 줄임말로 원격 호스트에 접속하기 위해 사용되는 프로토콜, Telnet과 비슷하나 Telnet은 암호화가 이루어지지 않음

- FeaturedServerSnaps 설명 : FeaturedServerSnaps

SSH 및 Snaps 설치 여부 설정

 

■ Ubuntu Server 실행

Ubuntu Server에 로그인된 화면

- 위에서 설정했던 login // password를 입력하면 위와 같이 로그인이 되는 것을 볼 수 있다.

 

(참고) Desktop과 차이점

- 초기 인스톨하면 GUI가 제공되지 않는다.

- 필요한 것만 Install 되기 때문에 용량도 적고, Install 시간도 빠르다.

- Desktop 설치방법 : https://200-rush.tistory.com/entry/UbuntuDesktop22042LTS

728x90
반응형
LIST
728x90
반응형
SMALL
Python 정규식의 표현 및 사용방법을 알아보자.
알아두면 매우 유용하게 사용할 수 있다.

 

■ 정규식 : [] 안에 . ^ $ * + ? { } [ ] \ | ( ) 을 사용하는 식

표현식 동일 표현식 설명
\d [0-9] 숫자와 매치
\D [^0-9] 숫자가 아닌 것과 매치
\s [\t\n\r\f\v] 공백 매치
\S [^\t\n\r\f\v] 공백 아닌 것과 매치
\w [a-zA-z0-9_] 문자, 숫자 매치
\W [^a-zA-z0-9_] 문자, 숫자 아닌 것과 매치
.   a.d 사이에 들어가는 모든 문자와 매치 (Yes : abcd, abd    No : ade, a0e)
ab*c   * 바로 앞에 있는 문자 b가 0부터 매치 (ac, abc, abbc 모두 매치)
ab+c   * 과 동일, 다른점은 문자 b가 1부터 매치 (ac는 매치 안됨)
ab{2}c   b가 2번 반복 되어야 매치 (Yes : abbc    No : abc)
ab{2,5}c   b가 2~5번 반복되면 매치
ab?c ab{0,1}c b가 0~1번 반복되면 매치
^abc   문자열의 처음은 항상 abc로 시작하면 매치 (re.MULTILINE 일 경우 라인별 첫 문자)
\Aabc   문자열의 처음은 항상 abc로 시작하면 매치 (re.MULTILINE 과 상관없음)
abc$   문자열의 마지막은 항상 abc로 끝나면 매치 (re.MULTILINE 일 경우 라인별 첫 문자)
abc\Z   문자열의 마지막은 항상 abc로 끝나면 매치 (re.MULTILINE 과 상관없음)
abc|def   abc 또는 def가 있으면 매치
\babc\b   앞뒤로 스페이스가 있을 경우에만 매치
\Babc\B   앞뒤로 스페이스가 없을 경우에만 매치

 

■ 정규식 응용

import re

p = re.compile('[a-z]+')

 

m = p.match("abc")    # 문자열 처음부터 정규식과 매치되는지 확인

print(m)    # 결과값 : <re.Match object span=(0, 3), match='abc'>

 

m = p.match("00abc")

print(m)    # 결과값 : None

 

m = p.search("abc")    # 문자열 전체를 검색하여 정규식과 매치되는지 확인

print(m)    #과값 : <re.Match object; span=(0, 3), match='abc'>

 

m = p.search("00abc")

print(m)    # 결과값 : <re.Match object; span=(2, 5), match='abc'>

 

m = p.findall("a b c")    # 리스트로 반환

print(m)    # 결과값 : ['a', 'b', 'c']

 

m = p.finditer("abc def ghi")    # 반복 가능한 개체로 돌려줌

print(m)    # 결과값 : <callable_iterator object at 0x000001886C72FFD0>

for i in m:

    print(i)

# 결과값

# <re.Match object; span=(0, 3), match='abc'>

# <re.Match object; span=(4, 7), match='def'>

# <re.Match object; span=(8, 11), match='ghi'>


참고) 위 2줄은 아래 1줄로 사용할 수 있음.

p = re.compile('[a-z]+')

m = p.match("abc")

 

m = re.match('[a-z]+', "abc")


# #1, #2의 차이점

import re

 

p = re.compile("^abc\s\w+")    #1

p = re.compile("^abc\s\w+", re.MULTILINE)    #2

 

data = """abc one

abc two

abc three"""

 

print(p.findall(data))    # 결과값 : ['abc one'] - 첫 번째 줄만 매치    #1

print(p.findall(data))    # 결과값 : ['abc one', 'abc two', 'abc three'] - 라인별로 매치    #2


# '\abc'를 찾을 때는 \를 하나 더 쓴다. '\\abc'를 찾을 때는 '\\\\abc' 이렇게 사용한다.

p = re.compile("\\abc")

 

# 간단하게 사용하는 방법은 앞에 r을 붙이면 된다. 

p = re.compile(r"\abc")


# 전화번호 형태의 정규식

p = re.compile(r"(?P<name>\w+)\s+(?P<phone>\d+[-]\d+[-]\d+)")

m = p.search("mobile 010-1234-5678")

 

print(m.group(0))    # 결과값 : mobile 010-1234-5678 (전체 문자열 반환)

print(m.group(1))    # 결과값 : mobile (괄호로 묶인 1번째 문자열 반환)

print(m.group("name"))    # 결과값 : mobile (괄호로 묶인 1번째 문자열을 name이라는 이름을 통하여 문자열 반환)

print(m.group(2))    # 결과값 : 010-1234-5678 (괄호로 묶인 2번째 문자열 반환)


# 문자열 바꾸기

p = re.compile("(park|kim|lee)")

m = p.sub("first", "park name and kim name")

print(m)    # first name and first name

 

p = re.compile(r"(?P<name>\w+)\s+(?P<phone>\d+[-]\d+[-]\d+)")

m = p.sub("\g<phone> \g<name>", "mobile 010-1234-5678")

print(m)    # 결과값 : 010-1234-5678 mobile

728x90
반응형
LIST
728x90
반응형
SMALL
Python 내장 함수 및 라이브러리를 어떻게 사용하는지, 파일 읽기, 쓰기 등 어떻게 하는지 살펴보자.

 

■ 파일 읽기, 쓰기 등 

# 파일 생성

f = open("d:/new.txt", 'w')    # 'r' : 읽기 모드    'w' : 쓰기 모드    'a' : 추가모드

for i in range(0, 10):    # 0~9까지 

    a = str(i) + "row\n"    # "\n"은 new line

    f.write(a)

f.close()    # close를 하지 않으면 파일이 열려 있는 상태이므로 꼭 close를 해줘야 한다. (파일 삭제가 되지 않음)

 

# 파일 읽기 (case1 ~ case3)

f = open("d:/new.txt" , 'r')

 

# case1 - line별로 담아서 출력

lines = f.readlines()

for line in lines:

    print(line)

 

# case2 - line 1개 출력

line = f.readline()

print(line)

 

# case3 - line 1개를 담아 1 글자씩 출력

lines = f.readline()

for line in lines:

    print(line)

 

f.close()

 

# read를 통하여 한번에 가져오기

f = open("d:/new.txt" , 'r')

a = f.read()

print(a)

f.close()

 

# 파일 내용 추가

f = open("d:/new.txt", 'a')

for i in range(10, 20):    # 10~19까지

    a = str(i) + "row"

    f.wirte(a)

f.close()

 

# f.close()를 사용하지 않고 파일 닫기

with open("d:/new.txt", 'r') as f:

    f.read()

 

■ Python 내장 함수

1. 절대값 : abs(-1.3) → 1

2. 모두 참이면 : all([1,2,3,4,5]) → True,    all([0,1,2,3,4]) → False

3. 하나라도 참이면 : any([0,1,2,3]) → True

4. 몫과 나머지 : divmod(9, 4) → (2, 1)

5. 정수 변환 : int(1.4) → 1

6. 문자열 변환 : str(7) → '7'

7. 리스트 변환 : list("12345") → ['1', '2', '3', '4', '5']

8. 튜플 변환 : tuple("12345") → ('1', '2', '3', '4', '5')

9. 길이 : len("12345") → 5

10. 최대값 : max([1, 2, 3]) → 3

11. 최소값 : min([1, 2, 3]) → 1

12. 아스키 값 : ord("a") → 97

13. 제곱 : pow(2, 3) → 8

14. 범위

   - list(range(5)) → [0, 1, 2, 3, 4]

   - list(range(5, 10)) → [5, 6, 7, 8, 9]

   - list(range(1, 10, 2)) → [1, 3, 5, 7, 9]

15. 반올림

   - round(0.7) → 1

   - round(0.5) → 0    # ※ 0이 되는 것 주의

   - round(0.555, 2) → 0.56

16. 정렬 : sorted([3, 2, 1]) → [1, 2, 3]

17. 합 : sum([2, 3, 5]) → 10

18. 자료형 가져오기 : type("a") → <class 'str'>

19. 자료형 묶음 : list(zip([1, 2], [3, 4])) → [(1, 3), (2, 4)]

 

■ 라이브러리(library) 사용

import os

import shutil

import glob

import tempfile

import time

import calendar

import webbrowser

 

os.environ    # 환경변수 출력

os.chdir("d:/")    # 디렉터리 변경

os.getcwd()    # 디렉터리 위치

 

shutil.copy("d:/new.txt", "d:/new1.txt")    # new.txt을 new1.txt로 복사, 파일이 있으면 덮어씀

 

glob.glob("d:/new*")    # d드라이 안에 new로 시작하는 파일 찾기

 

file = tempfile.mkstemp()    # 중복되지 않은 임시 파일을 만듦, 결과값은 파일 경로

# 임시로 파일을 만들고, close()로 파일을 삭제한다.

f = tempfile.TemporaryFile()

f.close()

 

time.time()    # 1970.01.01 00:00:00 기준으로 지난 시간을 초단위로 반환 (UTC 기준)

time.localtime(time.time())    # 년, 월, 일, 시, 분, 초로 반환

time.asctime(time.localtime(time.time()))    # 날짜 정렬

time.ctime()    # 오늘날짜 반환

time.strftime('%a', time.localtime())    # 요일 반환 (형태 : 'Sun') - 날짜 포맷 코드는 아래 표 참고

 

calendar.calendar(2023)    # 2023년 달력 (한 줄 표시)

calendar.prcal(2023)    # 2023년 달력 (달력처럼 표시)

calendar.prmonth(2023, 5)    # 2023년 5월 달력

calendar.weekday(2023, 5, 21)    # 6 반환 (월요일 : 0 ~ 일요일 : 6)

calendar.monthrange(2023, 5)    # (0, 31) 반환 : 0은 5월 시작일의 요일, 31은 5월의 마지막 날

 

webbrowser.open("http://200-rush.tistory.com")    # 해당 url open

 

■ 날짜 포맷 코드

코드 표현 (설명) 코드 표현 (설명) 코드 표현 (설명)
%a 'Sun' (약자) %I '02' (12시 기준 시간) %w '0' (요일)
%A 'Sunday' %j '141' (1년 중 누적날짜) %W '20' (1년 중 누적 주 - 월요일 시작)
%b 'May' (약자) %m '05' (월) %x '05/21/23/
%B 'May' %M '08' (분) %X '14:13:39'
%c Sun May 21 14:04:38 2023 %p 'AM' or 'PM' %Y '2023'
%d '21' (날짜) %S '23' (초) %Z '대한민국 표준시'
%H '14' (24시 기준 시간) %U '21' (1년 중 누적 주 - 일요일 시작) %y '23' (yy만 표시)

- 날짜 포맷 코드 응용 : time.strftime('%Y%m%d', time.localtime()) → '20230521'

728x90
반응형
LIST

+ Recent posts