canvas 를 사용중인데 그리기용 캔버스랑 보여주기용 캔버스 2개를 겹쳐서 사용하고 있었다.

그래서 그리기용 캔버스가 앞에 있어야 마우스 클릭이 돼서 그릴 수 있었는데 그러다보니 

보여주기 캔버스가 그리기용 그림에 덮여버리는 현상이 있었다. js 코드를 어떻게 바꾸면 되긴 되겠지만.. 귀찮아서

다른 방법을 찾아봤다.

 

<canvas id="realtimeCanvas" style="position: absolute;"></canvas>
<canvas id="canvas" style="position: absolute;"></canvas>

canvas 가 클릭, 그리기용 이었고, realtimeCanvas 가 실시간으로 계속 변경되는 캔버스였다.

 

 

그런데 realtimeCanvas 가 자꾸 뒤에 그려지다 보니 

<canvas id="canvas" style="position: absolute;"></canvas>
<canvas id="realtimeCanvas" style="position: absolute;"></canvas>

순서를 바꾸니깐 canvas 에 걸어둔 클릭 이벤트가 안되더라..

 

 

그래서 찾은게

pointer-events: none;

 

CSS 에 적어도 좋고

 

 

<canvas id="canvas" style="position: absolute;"></canvas>
<canvas id="realtimeCanvas" style="pointer-events: none; position: absolute;"></canvas>

나는 캔버스 쪽은 그냥 간단하게 이렇게 적었다.

'Frontend > HTML' 카테고리의 다른 글

[HTML] html tag에 데이터 저장  (14) 2020.04.23

ubuntu docker 에서 mongodb container 를 설치하고 python에서 pymongo로 db를 조금 만져보려고 한다.

 

Ubuntu => Docker

 

$ docker run -d --name mongodb -p 27017:27017 mongo

위 명령어를 실행하면

-d 백그라운드에서 동작하는

--name mongodb mongodb 라는 이름을 가지고

-p 27017:27017  컨테이너 내부외부를 27017 포트로 통신하는 (mongodb의 기본 포트이다) 

mongo container 를 실행한다.

 

만약 mongo image 가 없으면 자동으로 다운(pull) 받는다.

 

 

$ docker ps

위 명령어로 컨테이너가 제대로 실행됐나 확인해본다

mongo 이미지로 mongodb 라는 이름을 가진 컨테이너가 실행돼있다.

docker ps

 

 

웹브라우저에서 localhost:27017 로 접속해보자. 

localhost:27017

이렇게 뜨면 제대로 실행중이다.

 

 

 

 

Python 

이제 python 에서 mongodb 를 사용해보자.

 

$ pip install pymongo

mongodb 사용을 위해 pip로 pymongo 를 설치하고 코드를 작성하자

 

#db.py

from pymongo import MongoClient

client = MongoClient('mongodb://localhost:27017/')


db = client.newDB 			# db 를 하나 만들고
userCollection = db.user	# db 에서 collection 을 만든다.

# insert_one() 으로 db 를 추가
userCollection.insert_one({
    'name' : 'mik_a',
    'age'  : '100',
})

# find() 로 collection 에 저장된 데이터를 불러와서 출력한다
for i in userCollection.find() :
    print(i)

# collection 의 데이터를 전부 삭제한다.
userCollection.delete_many({})

 

출력

 

NoSQL DB인 mongodb 를 python 으로 간단하게 사용해봤다.

python3, windows 를 기준으로 작성했습니다.

 

python 으로 작성한 코드를 C# 에서 사용해야 할 일이 있어서 컨버팅 작업이 필요했다.

python 코드를 바로 C# 에서 사용하는 방법도 있었는데 코드 보안을 위해 pyd (dll)로 컨버팅 하기로 했다.

 

$ pip install Cython

일단 Cython이 없다면 설치해주고,

 

# sum.pyx

def sum(a,b) :
    return a + b

파이썬 코드를 작성하는데 확장자를 *.pyx 로 해준다.

 

 

# setup.py

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
    cmdclass = {'build_ext': build_ext},
    ext_modules = [Extension("sumdll", ["sum.pyx"])] )

 

setup.py 의 코드는 이렇게 작성하고,

 

$ python .\setup.py build_ext --inplace

 

위의 커맨드로 setup.py 를 실행시킨다.

 

결과물

c, pyd 로 컨버팅된 파일이다. pyd 파일은 파이썬, 운영체제 버전에 따라 뒤에 붙는 이름이 조금 달라진다.

이것저것 검색하거나, 다른 사람들과 대화할 때 리턴값, 전달값등 표현할 때 parameter, argument 를

그냥 생각나는대로 말하다가 의문점이 들었다. 무슨 차이일까?

 

검색으로 내가 이해하기론..

 

Parameter (매개 변수) 는 함수 정의에서 선언한 입력 변수 ,

Argument (전달 인자) 는 함수에 입력 하는 변수 로 이해했다.

 

def func(a,b) :
  return a + b

func 함수에서 정의한 a, b는 parameter

 

func(1,3)

func 함수를 호출하기 위해서 1, 3 을 입력한건 argument

 

이것말고도 헷갈려서 혼동하면서 쓰는 단어가 몇개씩 있는데 찾아가며 구분해가며 써야겠다.

 

Reference :

https://stackoverflow.com/questions/1788923/parameter-vs-argument

https://ko.wikipedia.org/wiki/%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)

python3 를 기준으로 작성했습니다.

 

파이썬 앱을 실행할 때 Windows 에서 관리자 권한으로 실행했는지 확인하는 방법이다.

 

 

pip 로 pywin32 를 설치하자

pip install pywin32

 

 

그다음엔 파이썬 파일을 작성하자

# admin.py

from win32com.shell import shell
if shell.IsUserAnAdmin() :
    print("관리자입니다.")
else :
    print("관리자가 아닙니다.")

admin.py

 

위 사진처럼 관리자 권한으로 실행했는지 아닌지 확인할 수 있다.

 

+ Recent posts