[개발언어] 21

shell 커맨드 파이썬에서 실행하기 - subprocess

subprocess 함수는 파이썬 스크립트에서 쉘 명령이나 다른 프로세스를 실행 하고 결과를 가져 올 수 있다. os.system, os.spawn 등의 대체 라이브러리이다. import subprocess subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs) args = 쉘 명령어를 공백 문자의 리스트로 표현 ex) ["cd", ..

모니터 화면 주사율, requestAnimationFrame의 이해

모니터의 화면 주사율은 hz로 나타내는데 보통의 모니터는 60hz이다 hz는 1초에 몇번의 프레임을 쏘는지에 대한 단위 이며, 인간이 인지할 수 있는 초당 프레임의 갯수는 60프레임을 넘어가지 않기 때문에 60hz로 많이 쓴다. requestAnimationFrame 자바스크립트에서 제공하는 객체로 화면주사율에 맞게 함수를 실행하는 단위이다. requestAnimationFrame(함수) 형태로 넣어주면 함수는 화면 주사율에 맞게 단위별로 실행된다. 리페인트 등의 개념이 있는데, 어럽게 생각할 필요 없이 애니매니션 같은 경우는 1초에 60번만 실행되면 되니깐 1초에 60번의 함수호출 기회가 균등하게 있고, 콜백으로 들어간 함수는 그 호출 클럭에 실행이 된다고 생각하면 된다. 따라서 재귀적으로 실행 되더라..

for 문과 foreach문 차이

차이점은 동기이냐 비동기이냐의 차이 이다. For문은 동기적으로 실행되기 때문에 오류가 나면 거기서 멈춰버리고 더이상 동작하지 않는다 ForEach문은 비동기적으로 실행되기 때문에 각각이 독립적으로 큐에 들어가서 하나가 오류가 나도 나머지는 모두 실행 된다. 따라서 속도는 비동기적으로 처리되는 ForEach 문이 빠르다 비동기적으로 작동하는 API요청이나, Dom에 이벤트 리스너들을 심어 줄 때에는 ForEach문이 적합하다.

마우스 스크롤 방향 알기 (deltaY)

DOM 이벤트 객체의 deltaY값을 활용하면 된다. deltaY값은 스크롤 이벤트당 절대적인 픽셀의 이동값을 나타낸다. 스크롤을 내릴땐(화면이 올라갈땐) 음수로, 스크롤을 올릴땐(화면이 내려갈땐) 양수로 표현이 되기 때문에 방향을 알 수가 있다. window.addEventListener('mousewheel', e => { console.log(e.deltaY); if(e.deltaY > 0 ) console.log('wheel down') if(e.deltaY < 0 ) console.log('wheel up') })

call vs delegatecall

Call - 다른 컨트랙트의 함수를 호출함 - 다른 함수를 호출하면서 컨텍스트가 호출한 함수가 있는 컨트랙트로 변경됨 Delegate Call - 다른 컨트랙트의 코드를 현재 컨트랙트 안에서 실행함(컨텍스트가 변하지 않음) - 따라서 스토리지가 변경되지 않음. B의 코드를 실행하지만, A의 스토리지를 사용함 - 컨트랙트 B의 값을 변경하는 함수를 실행하면 A의 값이 변경된다. - 따라서 delegate call을 할 때는 컨트랙트끼리 스토리지 변수 값이 순서가 꼭 맞아야 한다. Storage Layout - 컨트랙트에서 스토리지가 어떻게 저장되는지에 대한 구조 - 각각 컨트랙트의 변수들은 32바이트 단위(uint256)로 슬롯이 나뉘어서 저장됨 - delegate call을 할 때 슬롯의 순서가 일치하는..

Bitwise Operators(비트연산자)

비트연산자는 비트 단위(2진수)로 논리 연산을 할 때 사용되는 연산자이다 솔리디티에서는 마스킹을 위해 주로 사용 1. 논리연산자 & 대응되는 비트가 모두 1 이면 1을 반환 | 대응되는 비트 중에서 하나라도 1이면 1을 반환 ^ 대응되는 비트가 서로 다르면 1을 반환 ~ 비트를 1이면 0으로, 0이면 1로 반전 2. 이동연산자 비트값을 주어진 숫자만큼 오른쪽으로 이동시킨 후 빈 자리는 정수 a의 최상의 부호비트와 같은 값으로 채운다

receive, fallback 함수, CA가 ETH를 받지 못하게 하는 법

fallback 함수는 컨트랙트에 없는 함수를 호출하거나 컨트랙트에서 함수를 통해 이더를 보낼때, 콜백으로 실행되는 함수이다. receive 함수는 컨트랙트가 이더를 받을때 콜백으로 실행되는 함수이다. Receive - external과 payble 옵션이 필요 - 각 컨트랙트는 하나의 receive 함수만 선언 - 함수는 파라미터를 가질 수 없다 - virtual, overrid 가능 Fallback - external 옵션 필요 - 파라미터를 가지지 않는다. 예외로 bytes calldata 형태의 파라미터를 넣으면 컨트랙트에 보내진 모든 데이터(msa.data)를 반환하게 할 수 있다. - 위의 예외를 제외하곤 반환값이 없다. - payable 옵션 적용시, 이더를 받을 때에도 실행된다. CA가 E..

DOM Node에 html 삽입 : insertAdjacentHTML vs innerHTML

대부분 Dom Tree 밑에 html을 삽입시 innerHTML을 삽입한다. innerHTML 아래와 같은 html 안에 아래처럼 넣기 위해서는 제품명${data.title} 용량${data.capacity} document.getElementById('detail_info_wrapper').innerHTML = '제품명${data.title} 용량${data.capacity}' 과 같은 과정이 필요하다, 문제는 innerHTML은 노드안의 HTML을 초기화 한다는 점이다. 만약 **주의사항: 고온에 조심하세요 라는 소스에 document.getElementById('detail_info_wrapper').innerHTML = '제품명${data.title} 용량${data.capacity}' 을 삽입하..

JS를 이용한 CSS 클래스 제어

Element.classList의 반환형은 DOMTokenList 이다. 이 인터페이스는 공백으로 구분된 토큰집합을 나타낸다. 무슨말인가 감이 안잡힐텐데, 클래스의 예시를 들면 엘리먼트의 클래스가 공백으로 구분되어 있는것을 각각 배열의 인자로 만들어 우리가 핸들링 할수 있게 된다는 뜻이다. DOMTokenList는 물론 클래스에만 사용되는 인터페이스는 아니나 주로 클래스에서 실전활용이 된다. 주로 쓰이는 메서드는 3가지가 있다. [1] Element.classList.toggle - 클래스가 있으면 클래스를 삭제해주고, 클래스가 없으면 클래스를 추가해준다. - Element.classList.toggle('dc_rate') 를 실행하면 위의 태그에서 dc_rate가 삭제됨 - 한번더 Element.cla..