2024. 3. 15. 15:45

npm install -D @babylonjs/inspector

 

import { Inspector } from '@babylonjs/inspector';

 

Inspector.Show(scene, { });

2024. 3. 15. 13:38

npm create vite@latest .

 

Vanilla

JavaScript

 

npm install

npm run dev

 

npm install -D @babylonjs/core

 

counter.js javascript.svg 삭제

 

main.js style.css 내용 전체 삭제

 

main.js에 기본 코드 입력

 

import * as BABYLON from '@babylonjs/core';


const canvas = document.querySelector('#renderCanvas');

const engine = new BABYLON.Engine(canvas);


const createScene = () => {

  const scene = new BABYLON.Scene(engine);


  return scene;

}


const scene = createScene();


engine.runRenderLoop(() => {

  scene.render();

});

style.css 에 기본 스타일 입력

 

html, body { overflow: hidden; width: 100%; height: 100%; margin: 0; padding: 0; }

#renderCanvas { width: 100%; height: 100%; touch-action: none; }

2024. 3. 15. 10:40

1. 업데이트

 

sudo apt update

sudo apt upgrade

 

2. 엔진엑스 공식 패키지 저장소 설정을 도와줄 패키지 설치

 

sudo apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring

 

gnupg2 - an encryption tool that includes digital signitures and certificates

 

 

 

3. 엔진엑스 패키지 저장소의 서명키를 다운로드하고 저장

 

curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \

| tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null

 

4. lsb_release 명령을 이용해 운영체제와 배포판 이름을 정의하는 변수 선언

 

OS=$(lsb_release -is | tr '[:upper]' '[:lower]')
RELEASE=$(lsb_release -cs)

echo "deb [signed-by=/usr/name/share/keyrings/nginx-archive-keyring.gpg] \ 

http://nginx.org/packages/${OS} ${RELEASE} nginx" \ 

| tee /etc/apt/sources.list.d/nginx.list

 

5. 업데이트 후 엔진엑스 설치

sudo apt update

sudo apt install -y nginx

nginx

 

APT - Advanced Package Tool

 

패키지 관리 시스템

 

엔진엑스 GPG 패키지 서명키 - 저장소의 패키지 검증

 

 

2024. 3. 15. 08:25

npm create vite@latest

 

Vanilla

Vue

React

Preact

Lit

Svelte

Others

 

2024. 3. 13. 12:02

global SESSIONS

 

사용자의 전화번호, 적립 횟수 담고 있음

 

각 상태 정보는  32글자의 랜덤 ID를 Key로 가짐

 

이 ID는 session_id로 쿠키에 저장

 

요청할 때마다 쿠키에서 session_id를 조회

 

쿠키에 session_id가 없다면

 

랜덤으로 session_id를 생성

 

이렇게 session_id 예측을 최소화 해서 보완성을 강화

 

세션

 

서비스에 접속한 사용자의 상태를 저장/유지하기 위한 방식

 

메모리

디스크

데이터베이스 서버(MySQL, PostgreSQL)

캐시 서버 (memcached, redis)

 

웹 서비스에서 세션 데이터는 매 요청을 처리할 때마다 조회가 발생

 

데이터베이스의 데이터에 비해 변경 및 삭제가 많이 일어남

 

세션 데이터의 입출력 속도가 빨라야

 

서비스 응답 속도도 빨라짐

 

 

2024. 3. 13. 10:02

웹 브라우징할 때 쿠키는 까페의 쿠폰과 같은 역할

 

까페에 방문할 때마다 쿠폰을 가져가서

 

커피를 구매하면 스탬프를 받듯이

 

브라우저도 서버로부터 받은 쿠키를 저장해 두었다가 

 

웹사이트에 다시 방문할 때마다 

 

해당 쿠키 정보를 서버로 자동 전송

 

이 과정은 cookie 라는 요청 헤더를 통해서 진행

 

서버는 사용자의 행동에 따라 

 

새로운 쿠키를 발급하거나

 

기존 쿠키를 업데이트 

 

해야 한다고 판단할 때 

 

응답 헤더에 Set-Cookie 를 포함시켜

 

쿠키 정보를 전달하면

 

브라우저는 이 쿠키를 저장

 

쿠키의 만료 시간을 Expires 로 설정

 

브라우저는 해당 웹사이트에 요청을 보낼 때마다

 

cookie 헤더를 통해 자동으로 전송

 

쿠키는 발급된 도메인에 한해서만 유효

 

이것은 특정 까페에서만 사용되는 쿠폰과 같음

 

 

쿠키는 서버와 클라이언트 간에

 

정보를 공유고 교환하기 위한 데이터 저장 구조 방식

 

웹사이트에서 보내는 모든 요청은 쿠키를 자동 전송

 

웹사이트 방문, 웹사이트 새로고침, 링크 클릭,

 

자바스크립트를 이용한 http 요청에서 쿠키는 자동 전송

 

응답 객체에서 set_cookie로 설정된 쿠키 값은 

 

사용자가 브라우저 개발자 도구를 통해 

 

손쉽게 바꿀 수 있음

 

만약 사용자의 쿠키 값 변경을 막으려면

 

set_signed_cookie( ) 를 이용해서

 

서명된 쿠키를 생성

 

서명된 쿠키는 브라우저에서

 

값 확인만 가능하고 변경은 불가능

 

쿠키는 이름 : 값으로 설정

 

추가로 만료 시간인 max_age와 expires 인자 설정

 

쿠키가 유효한 도메인을 지정하는 domain 인자

 

https에서만 설정되는 secure 인자

 

다른 사이트로의 요청에서 쿠키 전송에 대한 정책을 지정하는

 

samesite 인자

 

브라우저에서는 document.cookie 문자열 속성을 이용해 

 

브라우저의 쿠키 내역을 확인

 

쿠키 생성할 때 httponly 옵션이 설정된 쿠키는

 

자바스크립트를 통해서는 조회할 수 없고

 

브라우저의 개발자 도구로는 모든 쿠키 확인

 

쿠키는 브라우저의 개발자 도구에

 

애플리케이션 - 쿠키 에서 확인하고

 

이곳에서 직접 수정 가능

 

쿠폰 적립 횟수 같은 정보는 사용자가 쉽게 변경 가능해서

쿠키에 저장하는 것은 적절하지 않음

 

쿠키에 저장하기 적절한 예시

 

사용자 선호, 테마 설정, 장바구나 정보, 

 

최근 검색어, 최근 본 상품, 광고 추적 ID 등

 

민감하지 않은 상태 정보들

 

 

HTTP에서는 다른 페이지와 상태를 공유하기 위해 쿠키를 사용

 

스탬프 적립할 때 쿠키에 전화번호를 저장 

 

다른 페이지에서 쿠키의 전화번호를 조회

 

 

2024. 3. 12. 19:45

프로세스 확인

 

netstat -ano

 

해당 포트의 PID 확인 후 종료

 

taskkill /f /pid 20972

 

해당 포트 검색

 

netstat -ano | find "443"

 

현재 열린 포트 확인

 

netstat -ano | find "LISTEN"

 

TCP만 확인

 

netstat -anp tcp | find "LISTEN"

 

해당 IP의 PORT 확인

 

netstat -ano | find "특정 IP:443"

 

특정 PID의 종료 명령어

 

tasklist | find "pid"

2024. 3. 12. 10:50

sudo curl -SL

https://github.com/docker/compose/release/download/v2.24.7/docker-compose-linux-x86_64

-o /usr/local/bin/docker-compose

docker-compose version 확인 사이트

 

https://github.com/docker/compose/releases

2024. 3. 11. 17:35

settings.py에 다음을 추가한다

 

APPEND_SLASH=False

2024. 3. 11. 15:27

http://localhost:5173 does not match any trusted origins.): /auth/login/

 

이런 메세지가 떴을 때는

 

settings.py 에 다음을 넣어준다

 

CSRF_TRUSTED_ORIGINS = ['http://localhost:5173']

2024. 3. 11. 14:38

8000 번 포트 검색

 

netstat -nap | grep :8000

 

특정 포트를 종료시키려면 tcp 포트가 8000 일 때

 

fuser -k -n tcp 8000

2024. 3. 8. 16:49

X-CSRFToken

2024. 3. 8. 15:10

1. pip freeze > requirements.txt
a. pip freeze 는 현재 설치되어 있는 python 라이브러리 목록 표시
  b. requirements.txt 에 목록을 써서 배포할 때 표시
  c. github에 requirements.txt 커밋
2. settings.py에서 ALLOWED_HOSTS = ['*'] 로 표시
3. 리눅스에서 다음 명령어 실행
  a. sudo apt update
  b. sudo apt upgrade
  c. sudo apt install build-essential, pip3, python3
  d. sudo pip3 install --upgrade pip
4.홈 디렉토리에 소스코드 다운로드
  a. git clone https://github.com/xxxx
5. 가상환경 생성
  a. sudo apt install virtualenv
  b. virtualenv -p python3 venv
  c. source venv/bin/activate
6. 패키지 설치
  a. pip install -r requirements.txt
  b. 설치하다가 pkg-config 없다고 에러나면 pkg-config 설치
    i. sudo apt install pkg-config
  c. 설치하다가 Command ‘pkg-config --exists mariadb' 뜨면 default-libmysqlclient-dev 설치
    i. sudo apt install default-libmysqlclient-dev
7. 서버 실행
    a. python manage.py runserver 0.0.0.0:8000
    b. 확인 후 종료
8. 웹서버와 연결할 uwsgi 설치
    a. pip install uwsgi
9. uwsgi.ini 작성 후 저장
    a. vi uwsgi.ini
    b. chdir=/home/ubuntu/{프로젝트폴더}
    module={프로젝트내 파일이름}.wsgi:application
    master=True
    pidfile=/tmp/project-master.pid
    vacuum=True
    max-requests=5000
    daemonize=/home/ubuntu/{프로젝트폴더}/django.log
     home=/home/ubuntu/{프로젝트 폴더}/venv
     virtualenv=/home/ubuntu/pybo/venv
     socket=/home/ubuntu/{프로젝트 폴더}/uwsgi.socket
     chmod-socket=666
     프로젝트 폴더 - manage.py가 있는 경로 디렉토리 이름
     프로젝트 내 파일 이름 - settings.py 가 있는 경로 디렉토리 이름


     c. chdir=/home/leejae/pybo
     module=icube.wsgi:application
     master=True
     pidfile=/tmp/project-master.pid
     vacuum=True
     max-requests=5000
     daemonize=/home/leejae/pybo/django.log
     home=/home/leejae/pybo/venv
     virtualenv=/home/leejae/pybo/venv
     socket=/home/eejae/pybo/uwsgi.socket
     chmod-socket=666

          i. xcube2 내의 pybo 디렉토리 안에 icube 프로젝트 생성시 작성
     d. uwsgi --ini uwsgi.ini 입력
          [uWSGI] getting INI configuration from uwsgi.ini 뜨면 통신 정상
10. nginx 설치
     a. sudo apt install nginx
11. nginx.conf 수정
     a. sudo vi /etc/nginx/nginx.conf
     http {
     upstream django {
          server unix:/home/leejae/pybo/uwsgi.sock;
     }
}
입력
     c. uwsgi 사용하면 uwsgi.sock 생성 후 nginx 하고 연결됨
12. default 수정
     a. sudo vi /etc/nginx/sites-enabled/default
     b. location / {
          include /etc/nginx/uwsgi_params;
          uwsgi_pass django;
}
          location /static/
               alias /home/xcube2/pybo/pybo/static;
}
          location /media/ {
               alias /home/leejae/pybo/pybo/media;
}
13. nginx 재시작
     a. sudo service nginx restart
14. python 서버 실행 - 외부 접속을 위해 0:8000 으로 시작해야 함

    a. python manage.py runserver 0:8000
15. 접속 후 확인

2024. 3. 4. 16:57

python -m pip3 install --upgrade pip

2024. 3. 4. 13:47

npm init svelte@latest myapp .