반응형

아래 코드를 실행시켜보면 상단에 간단한 My Menu가 생긴다.

 

메뉴를 아래로 내려보면, menu1 ~ menu3 까지 있고, 해당 버튼을 눌렀을 때 뒤에있는 menu_one 커맨드가 실행된다.

google 버튼을 누르면 해당 사이트가 열린다.

google 버튼을 누를때
나머지 메뉴를 누를때

커맨드는 axlCmdRegister 라는 함수로 등록할 수 있으며, 

저 mymenu 라는 커맨드가 실행되면, 뒤에있는 my_menu라는 함수가 실행하게 된다.

고로 my_menu라는 함수로 내가 원하는 기능을 만들면 된다.

반응형
반응형

dot 모양의 그리드가 보임

 

반응형
반응형

       아래 두 체크박스를 활성화 한다.

반응형
반응형

CentOS에서 만약 Gnome이 안깔려 있다고 가정한다면, 한개의 모니터에서 작업하기가 힘들것이다.

그래서 최대 6개의 가상 모니터를 지원한다고 한다.

 

가상 모니터를 생성하는 단축키는

 

Ctrl + Alt + F1 (default 창, 나의 초기 화면)

Ctrl + Alt + F2

Ctrl + Alt + F3

Ctrl + Alt + F4

Ctrl + Alt + F5

Ctrl + Alt + F6

 

위 키를 누르면서 화면을 이동할 수 있다.

Ctrl + Alt + F2 키로 사용자 로그인

Ctrl + Alt + F3 키로 root 로그인

그리고 다시 Ctrl + Alt + F1을 누르면 돌아온다.

 

============

터미널 명령어로 새로운 가상모니터 열기

명령어 : chvt + [모니터번호]

 

2번 모니터로 바꾸기

ex) chvt + 2

2번 모니터로 이동함

 

반응형
반응형

한국에서 표준으로 하는 기계제도 규격 관련 자료 이다.

총 30페이지.

KS기계제도+규격(2013년).pdf
3.09MB

 

 

 

반응형
반응형

ATC센터에서 주관하는 민간자격증 오토캐드 자격증이 있다.

예제문제는 AutoCAD 2급 예제 문제이다.

 

예제 도면들

 

 

 

https://coupa.ng/bNzEXi

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

한국 ATC센터와 함께하는 오토캐드(AutoCAD)(2019):기계 건축 인테리어 제품 실무 도면으로 배우는 실

COUPANG

www.coupang.com

 

반응형
반응형

cmd에서 파이썬을 구동시켜주기 위해서는 먼저 파이썬3를 설치해야 한다.

테스트 했던 버전은 python 3.8.2 이다. 아래 링크로 다운로드 할 수 있다. (windows OS)

www.python.org/downloads/release/python-382/

 

Python Release Python 3.8.2

The official home of the Python Programming Language

www.python.org

 

 

파이썬 코드를 이용해서 내부 공유기 환경에서 체팅 서버를 만들 수 있다.

하나의 컴퓨터가 서버로 코드를 구동하면, 여러 클라이언트들이 접속해서 대화를 나눌 수 있다.

 

 

아래는 소스코드

(서버 코드)

import socketserver
import threading

HOST = '192.168.219.104' # 서버의 ip를 열음. (이 서버의 ip로 클라이언트가 접속을 해야 한다), 그전에 ping을 먼저 확인하도록.
PORT = 9009				 # 포트번호 (같아야 함)
lock = threading.Lock()  # syncronized 동기화 진행하는 스레드 생성


class UserManager:  # 사용자관리 및 채팅 메세지 전송을 담당하는 클래스
    # ① 채팅 서버로 입장한 사용자의 등록
    # ② 채팅을 종료하는 사용자의 퇴장 관리
    # ③ 사용자가 입장하고 퇴장하는 관리
    # ④ 사용자가 입력한 메세지를 채팅 서버에 접속한 모두에게 전송

    def __init__(self):
        self.users = {}  # 사용자의 등록 정보를 담을 사전 {사용자 이름:(소켓,주소),...}

    def addUser(self, username, conn, addr):  # 사용자 ID를 self.users에 추가하는 함수
        if username in self.users:  # 이미 등록된 사용자라면
            conn.send('이미 등록된 사용자입니다.\n'.encode())
            return None

        # 새로운 사용자를 등록함
        lock.acquire()  # 스레드 동기화를 막기위한 락
        self.users[username] = (conn, addr)
        lock.release()  # 업데이트 후 락 해제

        self.sendMessageToAll('[%s]님이 입장했습니다.' % username)
        print('+++ 대화 참여자 수 [%d]' % len(self.users))

        return username

    def removeUser(self, username):  # 사용자를 제거하는 함수
        if username not in self.users:
            return

        lock.acquire()
        del self.users[username]
        lock.release()

        self.sendMessageToAll('[%s]님이 퇴장했습니다.' % username)
        print('--- 대화 참여자 수 [%d]' % len(self.users))

    def messageHandler(self, username, msg):  # 전송한 msg를 처리하는 부분
        if msg[0] != '/':  # 보낸 메세지의 첫문자가 '/'가 아니면
            self.sendMessageToAll('[%s] %s' % (username, msg))
            return

        if msg.strip() == '/quit':  # 보낸 메세지가 'quit'이면
            self.removeUser(username)
            return -1

    def sendMessageToAll(self, msg):
        for conn, addr in self.users.values():
            conn.send(msg.encode())


class MyTcpHandler(socketserver.BaseRequestHandler):
    userman = UserManager()

    def handle(self):  # 클라이언트가 접속시 클라이언트 주소 출력
        print('[%s] 연결됨' % self.client_address[0])

        try:
            username = self.registerUsername()
            msg = self.request.recv(1024)
            while msg:
                print(msg.decode())
                if self.userman.messageHandler(username, msg.decode()) == -1:
                    self.request.close()
                    break
                msg = self.request.recv(1024)

        except Exception as e:
            print(e)

        print('[%s] 접속종료' % self.client_address[0])
        self.userman.removeUser(username)

    def registerUsername(self):
        while True:
            self.request.send('로그인ID:'.encode())
            username = self.request.recv(1024)
            username = username.decode().strip()
            if self.userman.addUser(username, self.request, self.client_address):
                return username


class ChatingServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass


def runServer():
    print('+++ 채팅 서버를 시작합니다.')
    print('+++ 채텅 서버를 끝내려면 Ctrl-C를 누르세요.')

    try:
        server = ChatingServer((HOST, PORT), MyTcpHandler)
        server.serve_forever()
    except KeyboardInterrupt:
        print('--- 채팅 서버를 종료합니다.')
        server.shutdown()
        server.server_close()

runServer()

 

반응형

 

서버 사용 방법.

cmd로 해당 파이썬 파일을 실행시키며 구동.

 

서버 구동.

1. cmd 입력

2. 내 ip주소 확인

    ipconfig

서버의 ip주소를 192.168.219.104 로 한다.

3. 해당 ip주소로 파이썬 server.py 코드를 수정해준다.

4. 해당 디렉터리로 이동해서 명령 프롬프트로 아래와 같이 쓰면 서버가 실행된다.

python server.py

 

 

클라이언트 사용 방법.

cmd로 해당 파이썬 파일을 실행시키며 구동.

 

(클라이언트 소스코드)

import socket
from threading import Thread

HOST = '192.168.219.104'    # 내가 접속할 서버의 ip주소
PORT = 9009                 # 서버의 포트 번호 (서로 같아야 연결 가능)


def rcvMsg(sock):
    while True:
        try:
            data = sock.recv(1024)
            if not data:
                break
            print(data.decode())
        except:
            pass


def runChat():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        sock.connect((HOST, PORT))
        t = Thread(target=rcvMsg, args=(sock,))
        t.daemon = True
        t.start()

        while True:
            msg = input()
            if msg == '/quit':
                sock.send(msg.encode())
                break

            sock.send(msg.encode())


runChat()

 

클라이언트 구동.

1. cmd 입력

2. 접속할 서버의 ip주소로 파이썬 client.py 코드를 수정해준다.

3. 그리고 같은 공유기 망에 있는 어떤 컴퓨터든 간에 명령프롬프트로 client.py를 실행시키면 접속이 된다.

    필자는 컴퓨터가 1대이므로 루프백 방식으로 서버이자 클라이언트로 접속했다.

 

    3-1. 로그인 ID를 입력하라고 나오면 id를 입력하면 된다. 필자는 student1으로 입력해서 접속했다.

왼쪽 서버, 오른쪽 클라이언트

    3-2. student2, student3 계정을 더 만들어서 접속했다.

    서버에는 아래와 같이 현재 몇명이 접속되었는지 실시간으로 체크가 된다.

 

 

(에러 문제) 만약 서버의 ip주소를 잘못 입력하거나, 서버가 닫혀있을때 아래와 같은 에러가 발생한다.

 

반응형
반응형

이미지파일에 원하는 부분에 색상을 넣고, 글자를 넣는다.

 

원본파일은 아래와 같다. (mask.jpg)

이 파일을 아래 파이썬 코드를 실행시켜본다.

3개의 함수를 직접 만들었다.

'''

made by 안산드레이아스
https://ansan-survivor.tistory.com/

'''

import cv2

clickflag = 0       # 클릭상태 확인 전역변수 초기값 0

def draw_circle(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN :                         # 마우스 왼쪽버튼을 누르면
        cv2.circle(img, (x, y), 10, (255,0,0), -1)              # (x,y)마우스좌표 중심점으로 반지름 10, (B,G,R)색상, -1은 내부 모두 채움

def draw_rec(event, x,y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.rectangle(img, (x,y), (x+100,y+100), (0,255,0), 3)  # (x,y)마우스좌표 중신점으로 100x100 사각형을 만듦

def free_drawing(event, x,y, flags, param):                     # 자유롭게 그리기
    global  clickflag                                           # 클릭상태를 확인 (전역 변수를 불러옴)

    if event == cv2.EVENT_LBUTTONDOWN:                          # 왼쪽버튼을 누르면 플레그를 1로
        clickflag = 1
    if event == cv2.EVENT_LBUTTONUP:                            # 버튼은 때면 0으로
        clickflag = 0

    if clickflag == 1:
        event = cv2.EVENT_MOUSEMOVE                             # 플레그가 1일때, 마우스가 움직여도 그림이 그려짐
        cv2.circle(img, (x, y), 10, (255, 0, 0), -1)

img = cv2.imread('./mask.jpg', cv2.IMREAD_COLOR)                                    # img에 이미지를 불러옴.
img = cv2.line(img,(0, 100), (1025, 100), (155,55,55),(30))                         # 위쪽에 가로 줄을 그음.
font = cv2.FONT_HERSHEY_DUPLEX                                                      # 텍스트의 폰트를 지정.

cv2.putText(img, "WARNNING!! This is DDOS Virus", (20, 90), font, 2,(0,0,155), 2, cv2.LINE_AA)  # 텍스트를 입력, 글자, 위치, 폰트, 크기 등

cv2.namedWindow('image')
cv2.setMouseCallback('image', free_drawing)         #  free_drawing함수 호출 (이곳에서 윈도우에서 실행결정)

while(1):
    cv2.imshow('image', img)
    if cv2.waitKey(20) & 0xFF == 0x1B:                  # 무한 반복중, 키보드 ESC 아스키코드가 들어오면 빠져나감.
        break

cv2.destroyAllWindows()             # 창을 종료

 

반응형

 

(결과)

먼저 위에 코드에 있는 "WARNNING!! This is DDOS Virus" 라는 텍스트가 쓰여지고 위에 길다란 직사각형이 생성된다.

이제 유저가 마우스 드레그를 하면 아래와 같이 그림이 그려진다. (hello world라고 써봤다)

그리고 ESC가 들어오면 해당창이 꺼진다.

 

 

 

 

 

반응형
1···140141142143144145146···181

+ Recent posts