프로그래밍 381

[Javascript] Canvas 태양, 지구와 달 애니메이션 그리기 (Circle animation)

태양을 중심으로 지구, 지구를 중심으로 달을 움직이는 애니메이션을 만들어보았다. 코딩으로하는 애니메이션에 대해서 그동안 감이 좀없고 낮설었는데, (특히 게임 스크립팅도...) 익숙해질겸 건드려보고있는데 이거...재밌다..ㅋㅋㅋㅋㅋㅋ 우선 매 프레임마다 모든 요소를 다시그려주어야한다. 어렸을때 책 귀퉁이에 한장 한장마다 그려서 쭈루루룩 넘기면서 애니메이션을 만들었던것처럼, 다음장을 넘기고 그리고를 반복한다. 반복 윈도우가 로드되면, 루프를 시작한다. 이 루프는 일정한 프레임마다 영원히 돌면서 update()를 실행시키게 된다. var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); window.onload ..

프로그래밍을 위한 수학 - 삼각비, 삼각함수 그래프

삼각비 각 A의 크기가 같은 세 직각 삼각형 ABC / ADE / AFG은 모두 닮은 도형이다. 이 닮은 도형들의 대응변 길이의 값은 항상 그 비율이 같게 된다. CB / AB = ED / AD 이런식으로... 이렇게삼각형의 각 변에 대해서 두 변의 길이의 비례값을 구할 수 있는데, 이것이 sin, cos, tan이다. sin A, cos A, tan A를 모두 통틀어 각 A에 대한 삼각비라고 한다. 유치하지만 이렇게 sin, cos, tan을 외웠었지...아무튼 각 삼각비가 어느 변들의 비례를 말하는 것인지만 기억하면 된다. 특수각 30° / 45° / 60°도에대한 삼각비 값이 정리된 표를 심심찮게 볼 수 있지만 아래처럼 계산하기 편한 삼각형을 만들어서 특수각들에 대한 sin, cos, tan 값을 ..

프로그래밍을 위한 수학 - 호도법

180도면 180도지! 왜 각도를 지맘대로 쓰세요?? 일반적으로 우리가 사용하는 0 ~ 360도로 각도를 표현하는 방법은 60분법(Degree)이다. 대부분의 프로그래밍 언어에서는 삼각함수를 다룰때 매개변수로 Radian을 받는다. 이처럼 각도를 Radian으로 표기하는 방법을 호도법이라고 한다. 호도법을 이용하면 °같은 단위표기없이 숫자로만 각도를 표시할 수 있기때문에 계산이 편하다는 이점이 있다. 호도법 호도법은 원의 호의 길이를 이용해 각도를 나타내는 방법이다. 반지름의 길이가 r인 원에서, 길이가 r인 호에대한 중심각의 크기를 a°라고 하면 호의 길이는 중심각의 크기에 정비례 하므로 다음과 같이 계산할 수 있다. 원주율 π는 원의 둘레가 지름의 몇 배인지나타내므로, 원의 둘레는 2r * π이다. ..

Docker 사용방법 실습 - Node.js / MySQL / Nginx 사용 서비스 만들기

Docker series [ - ] Docker 개념정리 포스팅 [https://jizard.tistory.com/322] [ x ] Docker 실습 포스팅 Project File Tree ├── app │ ├── Dockerfile │ ├── index.js │ ├── node_modules │ ├── package-lock.json │ └── package.json ├── docker-compose.yml ├── mysql │ └── Dockerfile └── nginx ├── Dockerfile └── default.conf *Github에서 전체 프로젝트 소스보기 [https://github.com/lx5475/Docker-] Docker를 사용하여 독립된 환경에서 mysql와 nginx를 구동..

Docker 컨테이너와 이미지의 개념과 강점 알아보기

Docker series [ x ] Docker 개념정리 포스팅 [ - ] Docker 실습 포스팅 [https://jizard.tistory.com/324] 컨테이너 Container Docker는 LXC라는 컨테이너 기술에 기반한 상위 레벨의 컨테이너 기술이다. LXC는 Linux Container의 약자로, 단일 리눅스 시스템에 동작하고 있는 프로세스를 격리시켜 독자적 환경을 구축할 수 있게 해준다. Host OS와 격리된 환경을 만들어 준다는 점에서 가상 머신(Virtual Machine)과 유사하지만, 약간의 차이점이 있다. VM을 사용하여 하나의 서버에서 여러 애플리케이션을 구동하는 방법은 Host OS 위에 여러 Guest OS를 띄워서 구성하는 것인데, Hypervisor는 각각의 Gues..

마인크래프트 서버 최적화 방법 (Can't keep up! Is the server overloaded)

마인크래프트 서버를 운영할때, 분명 하드웨어 스펙이 충분한데도 사람이 들어오면 버벅거리거나 "Can't keep up! Is the server overloaded?" 메세지를 뱉어내며 서버가 고통스러워 하는 순간이 있다. Java에서 Garbage Collector가 동작하는 순간에는 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드가 모두 작업을 멈추는 Stop the world 현상이 일어난다. 이는 게임 플레이 중에는 버벅임으로 이어진다. 그렇기 때문에 불필요한 GC가 일어나지 않도록 하거나 GC가 효율적으로 수행될 수 있도록 튜닝이 필요하다. 한 마인크래프트 서버 관리자 Aikar는 자신이 수년간 서버를 운영하며 최적화된 Java Flag 설정을 공유했는데, 이를 Aikar Flags라고 한다. A..

[Unity] 벡터의 내적 Vector2D, Vector3D

벡터는 크기(Magnitude)와 방향(Direction)을 표현하는 값으로, 주로 화살표를 통해 나타낸다. 그림에서의 벡터는 원점에서 부터 P2(12, 5)로 방향성을 띄고 있으며, 백터의 크기는 피타고라스 정리를 통해 계산하면 13이된다. Vector2 v1 = new Vector2(12, 5); Debug.Log(v1.magnitude); // 13 움직이는 물체는 그 속력(Velocity)이 있는데, 이 속도 역시 벡터로 표현 가능하다. Fredrick은 현재 (5, 6)에 위치해있고, 1시간에 (12, 5)만큼 이동하는 속력를 가지고 있을때, Fredrict의 1시간 뒤 위치를 계산하기 위해서는 Fredrick의 현재 위치 벡터 값과 Fredrick의 속력 벡터값을 더하면 된다. Vector2 ..

[운영체제] 프로그램, 프로세스, 스레드 파헤치기

프로그램 디스크에 저장되어있는 실행 코드. 프로세스 프로그램이 실행되어 메모리에 적재된 상태로, 실행중인 프로그램을 프로세스라고 한다. 프로그램과는 다르게 생명주기를 가진다. Windows에서는 tasklist 명령어를 이용하면 실행중인 프로세스의 PID, 이름, 세션 메모리 사용량을 볼 수 있다. 리눅스에서는 ps 명령어를 이용하면 된다. 프로세스는 독립된 메모리 영역을 할당 받는다. 고정된 크기의 CODE, DATA, BSS 영역과, 동적인 크기의 HEAP, STACK으로 구성되어있다. 프로세스는 독립된 메모리 영역을 할당받았기 때문에 프로세스 간의 변수나 데이터 공유는 불가능하다. 프로세스간 통신, IPC(Inter-process communication)을 위해서는 별도의 매커니즘이 필요하게 된다..