320x100

0. 도커(Docker) 사용이유

   - 도커는 컨테이너 라는 표준화된 형태로 패키징하고 이 컨텐이너 안에는 라이브러리, 시스템 도구, 코드, 등 소프트웨어를 실행하는데 필요한 모든 것들을 포함할 수 있다.

   - 도커를 통하여 이미지화 하고 이러한 이미지들은 배포 및 관리를 단순하고 쉽게 하게 한다.

   - 일반적으로 가상머신과 컨테이너(도커)를 비교하는데 차이점은 가상머신은 운영체제와 하드웨어까지 모두 가상화에 포함되기 때문에 무거우며 컨테이너(도커)는 운영체제 수준에서 가상화를 하기 때문에 가상머신 보다 가볍다.

 

1. Docker 설치 여부 확인 및 옛날 버전 삭제하기

   - 명령어: sudo apt-get remove docker-engine docker.io containerd runc

   - 그외 설치 관련 명령어 설명

      sudo apt-get update: 새로 추가되거나 변경된 패키지 정보를 업데이트 한다. 새로운 패키지 존재 여부확인을 위해  해야된다.

      sudo apt-get upgrade: 설치된 모든 패키지의 버전을 업그레이드 한다.

      sudo apt-get install [패키지 이름]: [패키지 이름]를 설치한다.

      sudo apt-get remove [패키지 이름]: [패키지 이름]를 삭제한다.

      sudo apt-get purge [패키지 이름]: 패키지 삭제와 동시에 관련된 모든 설정 파일을 함께 삭제한다.

      sudo apt-get autoremove: 불필요한 의존성을 가진 패키지를 모두 삭제한다. 이전에 설치된 패키지를 설치할 때 함  께 설치된 패키지들중 지금 더이상 사용하지 않는 패키지들을 삭제한다.      

2. 설치 가능한 패키지 정보 업데이트

   - 명렁어: sudo apt-get update

3. 필수패키지 설치

   - 명령어: sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

4. GPG Key 인증

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

   - 정상적으로 동작하면 OK 가 출력됨

5. Docker Repository 등록

   - 자신의 아키텍쳐에 맞춰서 Docker Repository를 등록해야됨

   - 아키텍쳐 확인 명령어: arch

   - 명령어:

          sudo add-apt-repository \
          "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
          $(lsb_release -cs) \
          stable"

정상 작동 결과

6. Docker 설치

   - 명령어: sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

   - Docker 설치후 설치된 Docker 확인 명령어: docker -v

7. Docker Service 동작 유무 확인

   - 명령어: systemctl status docker 또는 service docker status

   - Docker 가 active 되어 동작하고 있는 것을 확인할 수 있다.

   - 타 블로그 내용에서 시스템 부팅시 Docker가 시작되도록 설정하는 내용들이 있는데, 설정 없이도 시스템 부팅시  docker가 기본적으로 시작되도록 설정되어 있음

   - 만약 부팅시 자동실행 설정을 해야된다면 아래 명령어를 사용하면 된다.

      명령어: sudo systemctl enable docker && service docker start

Docker 상태 출력결과(Ctrl + C 를 누르면 원래 명령어 입력 상태로 돌아감)

 

8. 서비스 관리 명령어 정리

   - service 명령어와 systemctl 명령어?: 실행결과는 같지만 service 명령어를 실행하면 결국 systemctl 명령어가 실행되어 동작하게 된다.

   - systemctl start [서비스명]: 서비스 시작

   - systemctl stop [서비스명]: 서비스 중지

   - systemctl status [서비스명] : 서비스 상태 확인(서비스 구동 유무 확인이 가능)

   - systemctl restart [서비스명] : 서비스 재시작

   - systemctl reload [서비스명] : 서비스를 중지하지 않고 설정 값을 반영

   - systemctl enable [서비스명] : 시스템이 재부팅하면 자동으로 서비스 실행하도록 등록

반응형
320x100
from tkinter import *

class BasicForm:
    def __init__(self):
        window = Tk()
        window.title("기본폼")
        window.geometry("640x480")
        
        self.canvas=Canvas(window, bg ="white")
        self.canvas.pack(expand=True, fill=BOTH)

        self.canvas.create_text(320,440,font="Times 15 italic bold",text="Basic Form")
        
        while True:
            #
            window.after(33)
            window.update()


BasicForm()

위 코드와 이후 공유되는 코드들은 파이썬에서 GUI 개발 모듈인 tkinter 를 이용한 게임 제작에 필요한 몇가지 기능들을 구현한 내용입니다.

코드에 대한 설명은 기초적인 파이썬 문법과 클래스에 대한 이해와 사용이 가능하다는 가정하에 작성을 하도록 하겠습니다.

-------------------------------------------------------------------------------------------------------

파이썬에서 tkinter 모듈을 이용하여 GUI 기반의 윈도우 프로그래밍을 할 수 있다. tkinter 에서 가장 기본 단위를 위젯이라고 하며 위젯의 종류에는 버튼(button), 라벨(label), 콤보박스(combobox), 캔버스(canvas) 등 이 있다. 게임을 위해서는 이미지를 이용한 애니메이션이 기본이되며 이와 같은 기능 구현은 캔버스에서 가능하다. 그러므로 작성된 코드에는 사운드를 제외한 대부분의 기능들을 캔버스만을 이용한다.

 

그림 1. 게임 코드 영역

게임을 만들때 일반적으로 코드는 3가지 영역(준비, 무한루프, 이벤트처리)으로 구분되어 작성된다.

  1. 준비영역에서는 윈도우를 생성, 사운드 및 이미지 파일등의 리소스 파일 로딩, 그리고 게임에 필요한 변수들을 초기화하는 코드가 작성된다(line5 ~12). 
  2. 무한루프 영역에서는 게임이 실행되는 동안 변화되는 데이터, 이미지의 위치, 사운드 on / off 등에 대한 코드를 작성한다.(line 15~17)
  3. 마지막으로 이벤츠처리 영역에는 키 또는 마우스 입력이 있을 때 처리해야 될 코드(이미지 위치값 이동, 사운드 on/off등)를 작성한다.(위 예제코드에는 이벤트처리 영역이 미 작성됨)

준비영역은 최초 게임 코드가 시작될 시 한번만 실행되며, 무한루프 영역은 계속 반복해서 실행된다.(일반적으로 while 을 이용한 무한루프형식으로 작성됨) 이벤트처리 영역은 키 또는 마우스 입력이 있을 시 실행되고 실행이 끝나면 다시 무한루프 영역의 코드가 실행되며, 이러한 방식을 Event-based Programming 방식이라고 한다. 무한루프 영역에서 키 또는 마우스 입력이 있을 시 바로 이벤트처리 영역으로 이동하는 것이 아닌 루프영역에서 마지막 코드인 window.update() 함수 호출시 이벤트처리 영역으로 이동하여 코드가 실행된다.

 

준비 영역과 무한루프 영역에 대한 코드 설명은 아래와 같다.

  • 윈도우 프로그래밍에서 가장 먼저 해야될 일은 윈도우 만들기다. Tk 클래스를 이용하여 윈도우 창을 생성할 수 있다.(line 5) 그리고 title, geometry 함수를 이용하여 윈도우 이름과 크기를 설정한다. (line 6~7)
  • 다음으로 캔버스 객체를 생성하는데, 생성시 캔버스가 붙여질 윈도우를 인수로 작성한다.(line 9) 윈도우 틀이 만들어지고 그 앞에 캔버스를 붙인 후 캔버스 위에 원하는 위치에 이미지를 그릴 수 있는 것이다.

그림 2. 윈도우, 캔버스, 이미지 레이어 구조

  • 윈도우도 하나의 위젯으로 생각할 수 있는데 위젯 간에 서로 붙이기 위해서는 붙일 대상 위젯 지정(line 9)과 실제 붙이는 동작이 있어야 되며 그 중에 하나가 pack() 이라는 함수이다.(line 10) 옵션은 윈도우에 꽉차게 그리기 위해 expand를 true 그리고 fill=BOTH로 설정하였다.
  • 캔버스는 도화지 처럼 무엇이든 그릴 수 있는 함수를 제공하고 있다. 그 함수들의 이름은 "create_"로 시작되며 create_rectangle, create_oval, create_line, create_text, create_image 등 그리는데 필요한 다양한 함수들을 이용할 수 있다. 위 코드에서는 create_text() 함수를 이용하여 "Basic Form" 글자를 320, 400 위치에 작성한다.

그림 3. canvas 클래스에서 사용되는 다양한 create 함수들

  • 캔버스에 무언가를 그리기 위해서는 기준좌표와 기준점이 어디 인지 알아야 된다. 아래 그림은 width: 640, hegiht: 480 크기로 그려진 윈도우의 좌표를 보여준다. 윈도우의 기준좌표는 왼쪽 위가 되며 0, 0 의 좌표값을 가진다. 그리고 그려지는 글자는 글자크기의 가운데 위치가 기준점이 된다. 그래서 글자는 코드에서 작성된 320, 400 의 위치에 글자의 기준점이 맞춰서 그려지게 된다.

그림 4. 기준좌표와 기준점

  • 무한루프 영역에서는 윈도우 클래스의 after()와 update() 함수가 호출된다(line 16, 17). after() 에는 33 이 작성되어 있으며 33은 대기 시간(단위: ms) 나타낸다. 위 코드에서는 게임영상을 초당 30 프레임로 동작하게 하기위해 33 을 작성하였다. 마지막으로 update() 함수 호출시 변화된 내용의 반영과 앞서 설명된 키 또는 마우스 이벤트들이 처리된다.
  • 무한루프 영역에서 이미지의 위치 변경 코드가 작성되어 있으면 그 코드가 호출된 시점에서 바로 이미지의 위치변경이 되는 것은 아니다. 이미지의 위치변경 코드가 많을 경우 코드마다 바로 위치변경하여 화면에 보여주게 되면 컴퓨터가 많은 부하가 발생할 수 있다. 그렇게 때문에 변화된 내용들을 모아서 특정 시간 마다 한번에 처리하면 부하를 줄일 수 있다. 모든 게임에서 그래픽 애니메이션은 이러한 방식으로 처리됨을 명심하기 바란다.

앞서 설명된 내용들은 다른 프로그래밍 언어(c++, java, visual basic등)로 게임을 제작할 때도 동일한 영역과 동작방식을 가지고 있어서 위 내용들을 이해하면 다른 프로그래밍 언어를 이용한 게임제작도 쉽게 할 수 있다. 모든 게임 개발 및 동작을 위한 코드 구조가 위와 동일하다고 생각하면된다(Unity, UnReal Engine 역시 기본구조는 동일함).

이상으로 게임 기본구조에 대한 설명 끝~~!

 

코드 실행결과

반응형
320x100

1. 파이썬 실행 구조의 이해

   ▶ 시작은 어디인가?
      - 모든 일의 행위는 시작이 있음

      - 프로그램의 실행은 컴퓨터가 일을 하는 행위

      - 일의 시작을 알려줘야 됨

   ▶ 명시적 시작 위치

      - 일반적인 프로그램 언어는 명시적으로 시작 위치가 정해져 있음

자바와 C언어에서의 시작 위치
   ▶ 파이썬 코드
      - 묵시적으로 시작위치를 설정함
      - 파이썬은 왼쪽에 있는 코드로 시작

2. 변수란 무엇인가?

   ▶ 값을 저장하는 저장공간
   ▶ 컴퓨터에게 저장공간을 만드는 명령어
      - 컴퓨터가 값이 저장된 공간을 구분하기 위해 변수 이름이 필요함

3. 변수의 종류

   ▶ 정수형: 10, 20, 1000, …
   ▶ 실수형: 1.2, 0.2, 10.4, …
   ▶ 문자열: 안녕’, ‘이름’, ‘ABCED’, '102425'
 

4. 변수 생성 방법과 출력하기

   ▶ 코드 작성
   - 작성방법: 변수 이름 = 값
   ▶ 출력결과

5. 변수의 사용

   ▶ 다른 값 저장하기

   ▶ 계산 값 저장하기
   ▶ 문자열, 실수 저장하기

6. 입력 함수

7. 변수 이름

   ▶ 의미 있는 이름을 사용
   ▶ 소문자 대문자가 서로 구분됨
   ▶ 변수 이름은 영문자, 숫자, 밑줄(_)만 가능함
   ▶ 변수 이름 중간에 공백 불가

 

8. 낙타체(Camel Case)

   ▶ 소문자로 적고 뒤에 붙는 단어의 첫 글자는 대문자로 작성

9. 상수(constant)

   ▶ 변하지 않고 항상 같은 값을 가지는 수

   ▶ 저장된 값을 변경할 수 없는 변수

   ▶ 파이썬에서는 모두 대문자로 작성한 변수를 상수로 약속함

 

10. 주석

   ▶ 소스코드에 설명 글 작성
   ▶ 코드 전체 설명을 위해 작성

 

반응형

'IT > 파이썬 문법' 카테고리의 다른 글

파이썬 sort, sorted 함수에 key, lambda 사용  (0) 2024.05.08
파이썬 sort, sorted 함수 차이  (0) 2024.05.08
파이썬 zip 함수 사용하기  (0) 2024.05.08
파이썬 map 함수  (0) 2024.05.08
파이썬 enumerate 함수  (0) 2024.05.04
320x100

VMware 시작시 아래와 같이 에러 창이 나타난다면?

VMWare에서 하드웨드 세팅시 기본적으로 CD/DVD가 있다. 하지만 사용되는 컴퓨터에서 CD/DVD가 없는 경우 이와 같은 에러 창이 나타난다.

해결방법: 하드웨어 세팅에서 CD/DVD 를 제거하면된다.

 - Edit virtual machine settings 선택(왼쪽 그림)

 - CD/DVD(SATA) 선택(오른쪽 그림)

 - 아래 Remove 버튼 클릭(오른쪽 그림)

 - OK 버튼 클릭(오른쪽 그림)

 

에러 창 없이 잘 실행됨을 확인할 수 있다.^^

반응형
320x100

1. 종료하기

   1.1 UI에서 종료하기

      - 아래 화면에서 오른쪽위 버튼 클릭

      - Pwer Off / Log Out 선택

      - Power Off... 선택

      - Power Off 팝업 창에서 Power Off 선택

  1.2 터미널에서 종료하기

      - Ctrl + Alt + T 키를 입력하여 터미널 실행한다.(왼쪽 그림)

      - sudo shutdown -h now 입력 후 엔터(오른쪽 그림)

      - 계정 비밀번호 입력 

 

2. 터미널 실행하기

   - 터미널이란 컴퓨터에 사용자가 명령을 할 수 있게 하는 인터페이스이다. 인터페이스는 명령어를 직접 입력할 수 있는 창으로 되어 있으며 그 창에 키보드를 이용하여 명령어들을 입력한다.

   - 1990년 말 윈도우 운영체제가 대중화 되고 대부분의 사람들은 GUI 인터페이스가 익숙하지한 90년 중반 이전에는 MS 도스 운영체제를 사용하고 Console 창을 이용하여 명령어를 직접 입력하고 이를 통하여 필요한 프로그램을 실행하였다.

MS 도스 운영체제에서 명령어 입력

   - 리눅스(우분투) 에서도 이와 동일하게 터미널을 이용하게 된다.

 

   2.1 UI에서 터미널 실행

      - 왼쪽아래에 3x3 그리드 형태의 아이콘 클릭

      - 맨 아래에 Ter...(원래는 Terminal) 으로 보이는 아이콘 클릭

      - 터미널 실행됨^^

   2.2 단축키로 터미널 실행

      - Ctrl + Alt + T 키를 누르면 터미널이 실행됨

3. 터미널 명령어

   - cd <directory 이름>: 디렉토리 위치 이동시 사용

   - ls : 현재 디렉토리에 있는 파일 및 폴더를 출력

   - cp <파일1> <파일2>: 파일1과 동일한 파일2를 만든다.

   - mkdir <디렉토리이름>: <디렉토리이름>의 폴더를 만든다.

   - rmdir <디렉토리이름>: <디렉토리이름>의 폴더를 삭제한다.

   - pwd: 현재 경로 출력

   - touch <파일명>: <파일명> 파일 생성

   

반응형
320x100

최신버전 vmware workstation player 17 무료다운로드 및 우분투 설치는 아래 링크에서 확인하기바랍니다.

https://ckang.tistory.com/78

 

VMWare Workstation Player 17 (17.5.2) 무료 다운로드 우분투 (Ubuntu 24.04) 설치

1. https://www.vmware.com/ 접속해서 다운로드 받으려고 하면 다음과 같이 링크가 깨져 있다.  2. 다음 설치파일 경로로 바로 접속 하면 다운로드가 가능하다 (VMware-player-17.5.2-23775571.exe.tar 파일다운로

ckang.tistory.com

 


아래는 이번 버전(WMWare Player 16)으로 설치 불가능 합니다.
-------------------------------------------------------------------------------------------------------------------------------------------------------------
1. https://www.vmware.com/kr.html 접속하기

2. Worksspace -> Workstation pro 선택

3. 평가판 다운로드 선택

 

4. Workstation 16 Pro for Windows  DOWNLOAD NOW 선택(설치파일(VMware-workstation-full-16.2.3-19376536.exe)이 다운로드됨)

5. 우분투 이미지 파일 다운로드: https://ubuntu.com/ 접속

6. Download -> Ubutu Desktop 20.04 LTS 선택

7. 아래 화면에서 잠시후 파일 다운로드 시작됨(파일: ubuntu-20.04.4-desktop-amd64.iso)

8. VMWare 설치는 기본 옵션이 선택된 내용들에서 Next 와 마지막에 Install 버튼을 클릭하면 간단히 설치가 끝난다.

9. VMWare에서 우분투 설치:

   - 설치된 VMWare를 확인하면 아래와 같이 VMWare Workstation 16 Player(무료) 와 VMWare Workstation Pro(유료 또는 30일 버전)가 있다. 이때 VMWare Workstation 16 Player 를 실행시킨다.

10. Create a New Virtual Machine 선택한다.

11. 다운로드 받은 우분투 iso 파일을 선택후 Next 버튼 클릭

12. 설치될 우분투(Full name)의 이름과 사용자 계정 이름(User name), 비밀번호(Password)를 각각 입력한다.

13. 설치될 가상머신(=우분투)의 경로, 할당될 하드디스크 용량 등을 설정하고 최종 하드웨어 스펙을 확인한다.

14. 하드웨어 스펙 수정이 필요하면 Customize Hardware를 선택하고 아래와 같이 필요한 부분을 설정한다.

(저는 메모리 크기를 4GB -> 8GB로 수정함)

15. 하드웨어 설정이 끝나면 Finish 버튼 클릭하면 설치가 시작된다.

16. 설치가 완료 되면 아래와 같이 화면이 나타난다.

&lt;설치 완료 화면&gt;

17. 설치후 사용자 이미지를 클릭하고 앞서 설정된 비밀번호를 입력하면 로그인이 되고 몇가지 설정 화면들이 나타난다.

(나는 그냥 skip 했다)

18. Livepatch 사용 유무를 설정하는 페이지다.

찾아보니 시스템을 재시작 하지 않고 Linux 커널 보안 업데이트를 설치 및 적용할 수 있게 하는 것이 Livepatch라고 한다. 무료이나 가입이 필요하다고 해서 일단 그냥 Next~~~!

19. 대부분의 설정이 끝나면(나는 특별한것은 없는 듯해서 그냥 Next 계속 선택함) 아래와 같이 우분투 OS 바탕화면을 볼 수 있다. 

20. 업데이트 창이 나타나면 Install Now 선택함

이상 VMWare에서 우분투 설치를 종료합니다.

반응형

+ Recent posts