2023. 1. 8. 22:16

/etc/apache2/apache2.conf 에서 

 

<Directory /var/www>

  Options Indexes FollowSymLinks

  AllowOverride None

  Require all granted

</Directory>

 

이 부분에서 /var/www 으로 되어 있는 부분을 원하는 위치로 변경한다

 

하나의 파일을 추가로 변경해야 한다

 

/etc/apache2/sites-available/000-default.conf

 

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

 

DocumentRoot의 부분을 변경해야 한다

 

저장하고 나서 apache 2 서버를 중지한 후 다시 실행한다

 

apache2 중지

 

sudo service apache2 stop

 

꺼져 있는지 확인

 

ps aux | grep apache2

 

apache2 다시 시작

 

sudo service apache2 start

2023. 1. 8. 21:49

git을 private으로 된 것을 clone으로 받으려고 할 때

 

이름이나 비밀번호를 잘못입력하면 발생하는 오류이다

 

요즘은 로그인 비밀번호를 이용하지 않고

 

private access token을 입력한다

 

사용자 - settings - developer setting 에 들어가서

 

private access token을 발급한 후 

 

비밀번호에서 이것을 입력하면 정상적으로 받을 수 있다

2023. 1. 8. 21:21

fatal: destination path '.' already exists and 

 

is not an empty directory.

 

이런 메시지가 뜨면 소스를 받으려는 디렉토리에 파일이 있기 때문이다

 

따라서 해당 디렉토리에 존재하는 모든 파일을 삭제 후 

 

다시 clone을 해서 받는다

 

sudo rm -r filename

2023. 1. 4. 17:09

/var/www/html

2023. 1. 4. 16:59

1. Extension에서 remote-ssh 설치

 

 

2. F1 눌러서 Remote-SSH: Open SSH Configuration File 선택

 

Host apple
    HostName ec2-15-115-242-115.ap-northeast-2.compute.amazonaws.com
    User ubuntu
    IdentityFile D:\Document\Key\apple.pem

 

Host : 접속 호스트 이름

HostName: 접속 주소

User: 접속할 때 사용자 이름

IdentityFile: pem 경로

 

 

3. 다시 F1 눌러서 Remote-SSH: Connect to Host... 눌러서 apple 호스트 선택 후 접속

2022. 11. 2. 16:12

http 포트 번호는 80 인데 node에서 설정한 서버 포트 번호는 3048이라면

 

이 둘을 연결시키는 작업이 필요하다

 

그 명령어는 다음과 같다

 

sudo iptables -t nat -A PROROUTING -i eth0 -p tcp --dport 80 -j REDIRET --to-port 3048

2022. 11. 2. 13:43

1. 사용자 버튼 누른 후 Settings 를 누른다

 

 

2. Personal access tokens - Fine grained tokens 버튼을 누른다

 

3. Generate new token을 누른다

 

4. Token name을 입력한다

5. Expiration 을 설정한다 최대 1년이다

6. Repository access를 설정한다

 - 개인적으로 Repository마다 다른 token으로 설정하기 위해 Only select repositories를 선택한다

 

7. Repository Permissions와 Account Permissions를 설정한다

- 무슨 항목인지 모르기 때문에 다 Read and Write로 설정했다

 

그냥 놔두고 No Access로 진행하면 아무 동작도 못하고 git init 도 막힌다

 

8. Generate token 버튼을 누른다

 

9. 생성한 token을 password로 입력한다

 

git clone "https://github.com/{name}/{repo_name}.git

 

Username for 'https://github.com': {name}

 

Password for 'https://{name}@github.com': 생성한 토큰 입력

 

현재 내 username은 다음 명령어로 확인할 수 있다

 

git config --list

 

 

 

 

 

 

2022. 4. 27. 18:38

리눅스에 Docker를 설치하는 방법이 3가지

 

 - Repository

 

 - Download

 

 - Script 

 

이 중에서 Repository 방법을 이용하여 설치한다

 

Repository는 보관소이고 Docker 서버에 있는 Docker의 

보관소에 저장되어 있는 Docker를 설치한다

 

참고 사이트

 

https://docs.docker.com/engine/install/ubuntu/

 

1. Docker 설치 이전에 필요한 프로그램 설치

 

sudo apt-get update

 

sudo apt-get install ca-certificates curl gnupg lsb-release

 

 

ca-certificates : 리눅스 인증서

 

curl : 웹에서 파일을 다운 받기 위한 프로그램

 

gnupg : gnu privacy guard - 리눅스 보안 프로그램

 

lsb-release : linux standard base release

 

 

2. Docker 서버가 가지고 있는 인증서를 클라이언트 PC에 저장

 

이전 방법

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

최신 방법

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

 

3. 인증서 등록

 

현재 페이지는 이상하게 등록되어 있는데 이전 명령어로 등록 가능

 

지금은 인증서가 필요 없는것인지 확실히 모르겠다

 

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \

$(lsb_release -cs) stable"

stable 뒤에 nightly 나 test 를 추가하여 채널을 추가할 수 있다

 

 

4. Docker 설치

 

이전에 추가한 인증서를 업데이트 하기 위해 다음 명령어를 입력

 

sudo apt-get update

 

인증서 업데이트 이후 docker 설치

 

sudo apt-get install docker-ce docker-ce-cli containerd.io

 

 

docker-ce : docker 대몬

 

dokcer-ce-cli : 클라이언트 커맨드

 

containerd.io : docker 런타임 엔진

 

위의 명령어 끝에 -y를 붙여서 자동으로 y 입력하면서 설치하면 편리

 

docker 설치는 여기서 완료

 

우분투는 따로 서비스 대몬을 구동시키지 않아도 docker를 설치만 하고 나면 바로 사용 가능

(이 말은 틀린듯 하다 - 서버를 실행해야 한다)

 

5. 잘 설치되었는지 테스트

 

다음 명령어를 실행하여 결과가 나오면 정상 설치 확인

 

sudo docker run hello-world

 

hello-world 이미지를 실행하여 바르게 설치되었는지 확인

 

docker 버전 확인 명령어

 

sudo docker version 

 

버전을 확인했을 때 클라이언트 버전과 서버 버전이 나와야 한다

 

서버가 실행이 안 되어 있을 때는 다음과 같은 메시지가 뜬다

 

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 

Docker Service 실행 확인 명령여

 

sudo systemctl status docker

 

실행이 안 되면 다음과 같은 메시지가 뜬다

 

System has not been booted with systemd as init system (PID 1). Can't operate.

Failed to connect to bus: Host is down

 

Docker를 시작하고 활성화 하는 명령어 

 

sudo systemctl start docker

 

sudo systemctl enable docker

 

WSL2 기반 우분투에서 설치하면 성공하지 못했다

 

설치가 성공했는데 위의 Docker 시작 명령어가 틀려서 다시 올린다

 

sudo service docker start 

 

위의 명령어를 실행하면 docker 서버가 실행되고 다시 버전 확인 명령어를 치면

 

sudo docker version

 

을 치면 클라이언트와 서버의 정보가 표시되고 docker가 정상적으로 설치된 것을 확인한다

 

 

2022. 3. 23. 19:54

0. 데이터 베이스 접속

 

1. 스키마 생성

 

CREATE DATABASE apple;

 

2. 데이터 베이스 보여주기

 

SHOW DATABASES;

 

3. 스키마 사용

 

USE apple;

4. 테이블 생성

 

CREATE TABLE store(

id int(11) NOT NULL AUTO_INCREMENT,

name varchar(20) NOT NULL,

color char(20) NOT NULL,

description text,

created datetime NOT NULL,

PRIMARY KEY(id));

 

5. 테이블 보기

 

SHOW TABLES;

 

 

 

2022. 2. 23. 20:26

WSL 버전 확인 명령어 

 

wsl -l -v

2022. 2. 21. 17:36

cmake --help 를 커맨드 창에 치면 다음과 같이 나오는데

 

다음 Options 를 사용하면 MinGW로 빌드할 수 있다

 

-S : 소스 디렉토리 경로 (path-to-source) : 소스 코드 경로

 

-B : 빌드 디렉토리 (path-to-build) : 빌드 결과물이 생기는 경로

 

-G : generator 이름 (generator-name) : 빌드 시스템 생성자

 

cmake -S ".." -B "../Step_build" -G "MinGW Makefiles"

 

이렇게 입력을 하면 Step_build 폴더에 CMakeCache.txt와 Makefile이 생긴다

 

이 폴더 경로로 이동하여 make 명령어를 입력하면 빌드가 되어

 

해당 프로그램의 실행파일이 생성된다

2022. 2. 15. 16:34

정적 분석

 

프로그램을 실행하지 않고 코드를 검사하여 수행하는 컴퓨터 프로그램 디버깅의 방법

이 방법론의 핵심은 실행의 부재

 

정적 분석의 다른 범주

 

1. 패턴 기반 정적 분석 (Pattern-based static analysis)

 

이 범주는 하나의 코드에서 패턴들을 본다

 

이것은 분석의 바이너리 형태이다

 

즉 패턴은 존재하거나 존재하지 않는다

 

이것은 거짓 양성(false positive)에 대하여 기억할 좋은 것이다

 

패턴 기반 분석은 CWE, MISRA, OWASP와 같은 프로그래밍 표준에 기반한 

 

소프트웨어 결함을 생성하는 것을 아는 소스 코드에서 단어를 검출한다

 

패턴 기반 정적 분석은 개발자들이 조직의 개발 정책뿐만 아니라 

 

최적의 패턴을 집행하는 동안 위험한 패턴을 피하고 최고의 실행을

 

하는 코딩을 보장하는데 도움을 준다

 

 

2. 흐름 기반 정적 분석 (Flow-based static analysis)

 

분석의 이 타입은 오직 런타임동안 나타나는 잠재적인 결함을  검출하기 위한 

 

가상적인 실행 경로를 실행하기 위한 코드의 심볼릭 실행을  한다

 

응용프로그램 코드의 매우 큰 부분을 걸치는 복잡한 경로를 분석함으로써 

 

패턴 기반 분석에 의해 검출될 수 없는 이슈를 발견할 수 있다

 

이것은 런타임 버그를 강조할 것이다

 

그 분석은 물론 거짓 양성의 불가피한 가능성이 있는 많은 경로를 검사한다

 

그러나 거짓 양성의 처리는 생산 코드에서 버그를 다루는 것보다 훨씬 쉽다

 

 

3. 계량적 분석 (Metrics)

 

계량적 분석은 코드에 수치의 시야를 제공한다 

 

그것은 코드 구성에서 잠재적 약점을 검사하기 위한 순환 복잡성(cyclomatic complexity), 

부채꼴(fan out), 응집력 부족(lack of cohesion) 과 같은 코드 특성을 측정한다

 

이것은 코드가 그들의 정책을 준수하지 않을 때 사용자가 경고되기 위해

계량적 분석(metrics)에 대한 적합한 범위를 구성할 수 있다

2022. 2. 4. 11:31

WSL은 기본적으로 있음

 

WSL2로 변경 명령어

 

wsl --set-default-version 2

 

wsl을 이용하여 Ubuntu 설치

 

wsl --install -d Ubuntu-20.04

 

관리자 권한이 승인이 필요 명령어

 

net user administrator /active:yes

2021. 4. 14. 00:04

cp -r package ~

 

cd ~ 

 

 

2021. 4. 12. 23:42

1. Package - 바이너리 패키지의 이름

 

패키지 이름은 오직 다음과 같은 문자만 포함해야 한다

 

 - 소문자 (a ~ z)

 

 - 숫자 (0 ~ 9)

 

 - plus (+) 와 minus (-)

 

 - periods ( . )

 

 

최소 문자 2개 이상 포함하고 첫 시작 문자는 문자 또는 숫자

 

2. Source

 

 - Source 패키지 이름

 

3. Version

 

패키지의 Version 숫자 

 

형식 [epoch:]upstream_version[-debian_revision]

 

epoch - 하나의 양의 정수 (일반적으로 작은 수), 생략 가능

 

upstream_version - version 숫자의 주요 부분

 

   문자와 숫자 그리고 . + - ~ (마침표, 더하기, 빼기, 물결표) 만 포함

 

   시작은 숫자

 

debian_revision

 

  Debian packge의  버전

 

  - 이 버전이 표시 안 되면 debian_revision은 0으로 간주

 

4. Section

 

패키지가 구체화되는 응용 프로그램 영역을 구체화

 

자세한 사항은 Sections 을 참고

 

5. Priority

 

사용자가 패키지를 설치하는 것이 얼마나 중요한가를 나타냄

 

자세한 사항은 Priorities 를 참고

 

6. Architecture

 

다음과 값들의 집합을 포함해야 한다