TechNote. 354

Chromium Edge 에서 chromecast 사용하기.

Microsoft Chromium Edge 를 사용하다 보면 chromecast 와 같이 외부에서 미디어를 재생하게 해주는 아이콘이 보이지 않는 경우가 있다. [Chromium Edge 관련 링크 : Chromium Edge 의 사용 및 비교] 아래와 같이 Chromium Edge 를 통해 Youtube 를 볼 경우 Chrome 에서는 보이는 "TV에서 재생" 아이콘이 보이지 않는다. 이런 상황에서 빈 화면의 아무 곳을 선택하여 마우스 오른 버튼을 눌러 나오는 메뉴 중 "장치로 미디어 캐스트" 를 선택하거나, 오른쪽 위 메뉴 버튼을 눌러 "메뉴 > 기타 도구 > 장치로 미디어 캐스트" 를 선택하여 원하는 기능을 동작시켜도 된다. 반면 chrome 과 동일하게 "TV에서 재생" 아이콘이 나오게 하려면 다음..

Products & Services 2020.03.29

Python - pywinauto, Microsoft Windows GUI 제어 자동화

pywinauto WebSite : http://pywinauto.github.io/ Github : https://github.com/pywinauto/pywinauto Doc : https://pywinauto.readthedocs.io/en/latest Microsoft Windows GUI 제어를 자동화할 수 있는 Python Module 설치 > pip3 install pywinauto (pywinauto 설치시 six, comtypes, pywin32 또한 의존성에 의해 자동 설치된다.) 사용의 예 1) "메모장" 실행 후 "Sample" 문자열을 입력하는 예제 from pywinauto.application import Application app = Application(backend="u..

Language/Python 2020.02.29

Python - PyInspect 설치 및 실행

1) https://github.com/pywinauto/py_inspect 에 접속하여 code 다운로드 2) python 3.5 이상, pywinauto, PyQt5 설치 3) "python py_inspect.py" 으로 실행 특이사항 1) 실행시 2회 실패 후 3회시 부터 정상 실행됨. 1회 실패시 에러 내용 D:\workspace\py_inspect-master>python py_inspect.py QWindowsContext: OleInitialize() failed: "COM error 0xffffffff80010106 RPC_E_CHANGED_MODE (Unknown error 0x080010106)" Traceback (most recent call last): File "py_inspe..

Language/Python 2020.02.28

Python - reduce(), 인자를 누적적으로 적용하여 결과를 반환

reduce >>> functools.reduce(function, iterable[, initializer]) iterable 한 data를 왼쪽에서 오른쪽으로 누적적으로 fuction 의 인자로 넣어 하나의 결과를 반환하는 함수 python2 에서는 builtin 함수로 바로 사용할 수 있었지만 python3 에서는 functools 모듈의 함수로 포함되어 있다. [Link : iterable 과 iterator, 그리고 반복문] functools.reduce(function, iterable[, initializer]) Apply function of two arguments cumulatively to the items of iterable, from left to right, so as to r..

Language/Python 2020.02.23

[Node.js] libuv 의 Design overview

libuv Node.js 를 위해 작성된 cross-platform 을 지원하는 라이브러리 (Event-driven (이벤트 기반) asynchronous (비동기) I/O (입출력)을 지원하기 위해 설계) libuv 의 전반적인 Design overview I/O (혹은 Event) loop 는 libuv 의 핵심 부분으로 모든 I/O 동작에 대해 Single thread 에서 처리 될 수 있도록 한다. 그리고 loop 가 반복되는 동안 I/O waiting 을 하지 않으므로 별도로 들어온 I/O 작업에 대해 수행할 수 있다. Network I/O libuv의 모든 Network I/O 는 non-blocking socket 위에서 동작하도록 되어 있다. 이를 위해 각 platform 에서 지원하는 방..

Language/Node.js 2020.02.23

Python - filter(), iterable 변수 내 값 중 조건에 맞는 값만 반환

filter >>> filter(function, iterable) iterable 한 data를 function 의 인자로 넣어 False 가 아닌 결과를 반환하는 인자들만 iterator 형태로 반환해 주는 함수 [Link : iterable 과 iterator, 그리고 반복문] filter(function, iterable) Construct an iterator from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If function is None, the identity fu..

Language/Python 2020.02.22

[Node.js] 학습 관련 정보

[Javascript Event Loop 에 대한 이해] What the heck is the event loop anyway? | Philip Roberts | JSConf EU https://www.youtube.com/watch?v=8aGhZQkoFbQ [libuv 에 대한 이해] Node.js 에서 event-driven 비동기 I/O 모델을 지원 가능하게 하는 라이브러리의 Design Overview http://docs.libuv.org/en/v1.x/design.html[libuv 에 대한 이해] https://nodejs.org/ko/docs/guides/event-loop-timers-and-nexttick/ [Node.js 에 대한 이해] https://nodejs.dev/the-nod..

Language/Node.js 2020.02.22

Python - map(), 함수와 iterable 변수를 인자로 받아 iterator 결과를 반환

map >>> map(func, *iterables) iterable 한 data를 func 의 인자로 넣어 나온 결과들을 iterator 형태로 반환해 주는 함수 [Link : iterable 과 iterator, 그리고 반복문] map(function, iterable, ...) Return an iterator that applies function to every item of iterable, yielding the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With ..

Language/Python 2020.02.19

MacOS - 특정 Application 실행 단축키 만들기

1. 특정 Application을 실행하는 서비스 만들기 2. 해당 서비스에 단축키 설정하기 3. 단축키를 통한 해당 Application의 실행 특정 Application을 실행하는 서비스 만들기 Finder > 응용 프로그램 > Automator 를 실행한다. 프로그램을 실행시킬 서비스 생성을 위해 도큐먼트 유형로 "서비스"를 선택한다. "응용 프로그램 실행" 을 클릭 한 후 오른쪽 "동작 또는 파일을 여기로 드래그하여 작업흐름을 구축하십시오." 부분에 Drag & Drop 한다. "서비스가 받는 항목" 을 "입력 없음" 으로 선택, "선택 항목 위치"를 "모든 응용 프로그램" 으로 선택한 후 "응용 프로그램 실행" 부분에 실행하기 원하는 프로그램을 선택한다. command + s 를 눌러 지금까지 ..

OS/Mac 2020.02.17

일급 객체 (first-class object)

일급 객체 (first-class object) 는 아래와 같이 불리기도 한다. first-class citizen first-class type first-class entity first-class value 일급 객체의 특징 함수의 인자로 전달 가능 함수의 결과로 반환 가능 Python 에서는 정수, 문자열, list 등과 더불어 함수 또한 일급 객체이다. 이에 따라 아래와 같이 하나의 함수를 다른 함수의 인자로 넘겨줄 수 있다. >>> def reverse(data): ... return data[::-1] ... >>> data = ['zbc', 'tde', 'dcd', 'xfg'] >>> sorted(data, key=reverse) ['zbc', 'dcd', 'tde', 'xfg'] 할당문의..

Language 2020.02.17

Windows - 스크린샷 찍는 법

Windows 에서 기본적으로 화면을 캡쳐하는 방법은 다음과 같다. Print Screen : 전체 화면 스크린샷 찍기 Alt + Print Screen : 특정 Window 스크린샷 찍기 Windows + Print Screen : 전체 화면 스크린샷 찍은 후 자동 저장 Windows + Alt + Print Screen : 특정 Window 스크린샷 찍은 후 자동 저장 Print Screen : 기본적으로 화면을 캡쳐하는 역할 Alt : 누르면 전체 화면이 아닌 현재 선택된 창을 캡쳐하는 역할 Windows : 누르면 클립보드가 아닌 파일로 자동 저장하는 역할 위 3개의 key 조합에 따라 원하는 방식으로 화면 캡쳐를 할 수 있다. Windows 10 (ver. 1809) 이후로는 UI 를 통해 아래..

OS/Windows 2020.02.16

Tistory - 글 작성시 Keypad 이미지 표시하기

티스토리에서 글을 작성하다 보면 keyboard key 조합에 대해 언급해야 할 경우가 있다. 예를 들면 control 키와 R 키를 누르는 것을 표현해야 하는데, 이럴 경우 기존에는 Ctrl + R 로 표현하였다. 티스토리 글작성시 tag 와 css 를 이용해 좀 더 가독성이 높게 표현하는 법을 확인하여 정리해 보았다. [기존] Ctrl + R [개선] Ctrl + R 1) CSS 설정을 추가 "티스토리 > 블로그관리 > 꾸미기 > 스킨 편집" 진입 "스킨 편집" 화면에서 "html 편집" 버튼 선택 이후 CSS 항목을 선택하고 임의의 위치에 하기 설정을 추가한다. kbd { border: 1px solid #aaa; border-bottom-width: 2px; border-radius: 3px; p..

MacOS - CPU, Storage, Memory 등 실시간 사용량 확인

Windows 에는 "작업 관리자""가 있다면 MacOS 에는 "활성 상태 보기" (Activity Monitor) 가 있다. [접근 경로] Launchpad > 기타 > 활성 상태 보기 "활성 상태 보기" 에서는 5가지 상태를 확인할 수 있다. CPU 메모리 에너지 디스크 네트워크 1) CPU 각 프로세스의 CPU 점유율, Process ID, 사용자 등을 확인할 수 있다. Process 를 하나 선택하고 왼쪽 상단의 "X" 아이콘을 선택하면 프로세스 종료도 가능하다. 2) 메모리 각 프로세스의 메모리 점유율을 확인 할 수 있다. 3) 에너지 각 프로세스의 전력 소모 영향을 확인 할 수 있다. 4) 디스크 각 프로세스의 Disk I/O 상태를 확인 할 수 있다. 5) 네트워크 각 프로세스의 네트워크 사..

OS/Mac 2020.02.14

스팀(Steam) 계정 해지/탈퇴

예전에 스팀(Steam)에 가입만 해두고 사용하지 않는 ID가 있다. 언젠가 부터 지속적으로 누군가 로그인 시도를 했다는 메일이 계속 날라왔다. 더 이상 사용하지 않는 계정을 삭제해 보았다. 1) 처음 화면에서 SUPPORT 메뉴를 선택한다. 2) SUPPORT 화면 하단에 검색 창이 있는데, "terminate" 를 입력한다. 3) "terminate"를 입력 후 하단에 보이는 "Account Deletion" 을 선택한다. 4) "Account Deletion" 을 선택하면 나오는 항목 중 "How do I delete my account" 내 "you can request that Steam Support delete your account" 링크를 선택한다. 5) "Delete my Steam a..

ETC 2020.02.11

MacOS - 저장공간 현황 확인하기

MacOS 에서는 디스크 용량 확인을 다음과 같이 할 수 있다. 왼쪽 상단 사과 모양 아이콘 > 이 MAC에 관하여 > 저장공간 저장 공간 탭을 선택하면 위와 같이 각 항목별로 얼마나 저장 장치를 사용하고 있는지 파악이 가능하고, 관리 버튼을 누르면 아래와 같이 좀 더 상세하게 파악이 가능하다. 저장 공간이 부족할 경우 최적화를 통해 불필요한 파일이나 프로그램들을 삭제할 수도 있다.

OS/Mac 2020.02.10

MacOS - 스크린샷 찍는 법

전체 화면 찍기 : Shift + Command + 3 화면 일부 찍기 (파일 저장) : Shift + Command + 4 이후 화면 부분 선택 화면 일부 찍기 (클립보드 저장) : Shift + Control + Command + 4 이후 화면 부분 선택 원하는 Window 찍기 (파일 저장) : Shift + Command + 4 + Space 이후 원하는 Window 선택 원하는 Window 찍기 (클립보드 저장) : Shift + Control + Command + 4 + Space 이후 원하는 Window 선택 1. 전체 화면 찍기 : Shift + Command + 3 전체 화면을 캡쳐하게 되면 바탕화면에 캡쳐 화면이 PNG 파일로 저장된다. 2. 화면 일부 찍기 (파일 저장) : Shift..

OS/Mac 2020.02.09

Python - iterable 과 iterator, 그리고 반복문

iterable 의 정의 및 이해 iterator 의 정의 및 이해 iterable 의 정의 및 이해 iterable : 한 번에 하나의 member를 반환할 수 있는 object (객체)를 의미. iterator 로 변환이 가능. list, str, tuple 와 같은 모든 Sequence type dict, file object 혹은 sequence semantic 을 가진 __iter__() method 나 __getitem__() method 가 구현된 object iterable 은 for loop 나 sequence 가 필요한 zip(), map() 등에 사용될 수 있다. 일반적으로 iterator 로 변환 후 사용된다. iter() 를 이용해 해당 object의 iterator를 생성하여 사..

Language/Python 2020.01.02

DDR-SDRAM 계열 RAM 에 대한 이해

DDR-SDRAM 계열 RAM 기본 정보 DDR/DDR2/DDR3/DDR4 표준이름/모듈 이름 목록 정리 PC 내 메모리 정보 확인 방법 DDR-SDRAM 계열 RAM 기본 정보 ▶ 서로 다른 속도의 RAM이 혼용될 경우 낮은 속도의 RAM에 맞추어 동작한다. ▶ 일부 Main Board 의 경우 특정 RAM 이 지원되지 않을 수 있다. (Main Board 사의 홈페이지에서 해당 보드에 지원하는 RAM 목록을 확인하고 장착한다.) 예 ) https://www.gigabyte.com/kr/Motherboard/GA-B150M-DS3H-rev-10/support#support-doc ▶ 성능이 낮은 RAM 이 항상 싼 것은 아니다. DDR/DDR2/DDR3/DDR4 표준이름/모듈 이름 목록 정리 DDR S..

Chromium Edge 의 사용 및 비교

2019-12-21 기준으로 아직 Beta 버전이라 정식 출시된 다른 브라우져와 동등하게 비교하기 무리가 있지만 2020-01-15 정식 릴리즈에 앞서 참고를 위해 아래와 같이 확인해 보았다. [추가 수정] 2020년 1월 15일에 정식 버전이 공개 되었다. https://www.microsoft.com/en-us/edge Microsoft Edge, based on Chromium 다운로드 및 설치 icrosoft Edge Addons 및 chrome 웹 스토어의 사용 Google Chrome 과 Microsoft Edge 의 시스템 자원 사용 비교 기본 검색 엔진의 변경 Microsoft Edge, based on Chromium 다운로드 및 설치 Microsoft Edge Page 접속 [Link ..

Products & Services 2019.12.21

Python - 문자열(str)/바이트(bytes) 시퀀스와 인코딩(encoding)/디코딩(decoding)

문자열(str) : 사람이 인지 가능한 문자의 형태. Python에서는 유니코드 문자를 기반으로 문자열 표시. (유니코드 문자를 나타내는 하나하나의 문자의 단위 원소를 코드 포인트라고 함.) 바이트(bytes) 시퀀스 : 기계가 처리하는 문자의 형태. 문자를 표현하는 실제 바이트. 인코딩(encoding) : 유니코트 문자로 표현되는 문자열을 바이트 시퀀스로 변환 디코딩(decoding) : 바이트 시퀀스를 유니코드 문자로 변환

Language/Python 2019.11.28

[Notepad++] 폰트 바꾸기

Notepad++ 에 메뉴가 많다보니 글꼴/폰트를 바꾸는 것도 쉽지가 않은 듯하다. Notepad++ 설치 후 한글을 써 보니 아래 이미지 처럼 매우 작게 나타났다. 아마도 한글을 제대로 지원하지 않는 폰트가 설정된 것으로 보여 폰트를 다시 설정해 주었다. 1) Menu > Settings > Style Configurator 선택 2) Style > Default Style 선택 후 원하는 한글 글꼴 및 크기 선택 주의 사항> Default Style이 아닌 Global override 에 아래와 같이 선택이 되어 있을 경우 해당 설정이 먼저 적용됨으로 주의 하여야 한다.

Python - Sequence Type을 Slice 하기

Python 은 데이터에 순서를 붙여 나열한 Sequence Type 으로 리스트(list), 튜플(tuple), 범위(range), 문자열(string) 등 여러 가지 형태를 제공한다. Python 은 이렇게 나열된 데이터들을 쪼갤(Slice) 수 있는데, ":" 을 slice notation 으로 하여 아래와 같은 기능을 제공하고 있다. Python Sequence Type 의 Slice Notation 기본 문법 variable[start:stop:step] [slice() 함수를 이용한 sequence type 변수 나누기] start, stop 의 값이 양수 일 경우 인덱스 처음을 기준으로 시작하고, 음수 일 경우 인덱스 끝을 기준으로 시작한다. step 의 양수/음수에 따라 결과의 방향이 바뀌..

Language/Python 2019.11.25

Python - with, context manager에 대한 이해.

특정 구문을 시작 전후 반드시 실행해야 하는 구문이 있다면 Python에서는 어떻게 구현할 것인가. 일반적인 코드로 구현하자면 다음과 같다. print("->> Before routine") routine1() print(" Before routine") routine2() print(" Before routine") routine3() print("> Before routine") try: routine1() finally: print(" Before routine") try: routine2() finally: print(" Before routine") try: routine3() finally: print("> Before routine") def __exit__(self, type, value,..

Language/Python 2019.11.16

[VSCODE] VS Code 를 이용한 원격(Remote) 코드 개발

VS Code 를 통한 원격 개발이 필요한 상황들 VS Code 에서 SSH 를 통한 원격 개발 설정 Key file 을 통한 SSH 자동 접속 in VS Code VS Code 를 통한 원격 개발이 필요한 상황들 [상황 1] Client 개발일 경우 일반적으로 Local Machine 에서 개발이 가능하지만 Server 개발일 경우 원격으로 접속하여 개발을 하거나, Local Machine에서 개발 후 Server로 이동을 시키던지 해야 한다. [상황 2] 사용하는 Local Machine가 Windows 인 반면 Linux Program을 개발해야 한다면 원격으로 Linux Machine에 접속하여 개발을 진행해야 한다. 이와 같이 다양한 상황에서 Remote Machine을 상대로 개발을 해야하는 ..

캐시(Cache) 메모리에 대한 이해

주기억 장치 (일반적으로 DRAM) 성능이 많이 개선되었음에도 불구하고 CPU 에 비하면 느린 수준이다. 이와 같이 CPU 와 주기억장치의 성능 차이로 인해 CPU가 주기억장치에 접근할 때 마다 성능 저하가 발생하곤한다. 이를 방지하기 위해 CPU와 주기억장치 사이에 CPU 보다는 느리지만 주기억장치보다는 빠른 캐시(Cache) 메모리를 두어 성능 저하 빈도를 줄이고자 한다. 캐시 (Cache) 메모리 : 단위 용량당 가격이 비싸지만 빠르다 주기억장치 : 단위 용량당 가격이 캐시 메모리보다는 싸지만 상대적으로 느리다. 하지만 캐시 메모리와 주기억장치는 위와 같은 장단점을 가지고 있고, 아래와 같은 루틴을 통해 주기억장치의 용량을 캐시 메모리의 성능으로 사용하는 효과를 누리게 하고자 하는 것이 목표이다. ..

Ubuntu - repository(저장소) 변경하기

Ubuntu를 통해 Package 를 Update 하다보면 설정되어 있는 저장소(repository) 외에 다운로드 속도등의 문제로 다른 저장소에서 받고 싶을 때가 있다. 자주 사용하는 저장소가 있다면 아래 경로의 저장소 주소를 바로 수정도 가능하다. # /etc/apt/sources.list 하지만 저장소 주소를 항시 외우고 있는 경우가 없기 때문에 이때는 Ubuntu의 "Software & Updates" 에서 제공해 주는 저장소 (repository) 변경 기능을 사용하면 유용하다. 1) 검색을 통해 Software & Updates 를 실행한다. 2) "Ubuntu Software" tab 에서 "Download from:" 의 combobox 를 열고, Other... 항목을 선택한다. 3) 사..

OS/Linux 2019.11.11

Ubuntu - SSH Server 설치 및 접속하기

Ubuntu machine 와의 연결에 ssh 를 사용하기 위해서는 해당 Ubuntu machine에는 SSH Server가 설치되어 있어야 하고, 해당 Server에 접속하려는 PC 에서는 SSH Client 설치가 필요하다. SSH Server의 설치 Ubuntu 에서는 아래와 같이 openssh-server를 설치한다. (Ubuntu 14/16/18 등 버전에 따라 큰 차이가 없음) $ sudo apt install openssh-server user@TechNote:~$ sudo apt install openssh-server Reading package lists... Done Building dependency tree Reading state information... Done The fol..

OS/Linux 2019.11.11

주기억장치에 대한 이해

주기억장치는 막연히 RAM이라 인지하고 있고, Register, Cache, 보조기억장치와 함께 기억장치의 계층 구조 중 일부를 구성하고 있는 것으로 이해하고 있었다. 그런데 Cache 를 공부하다 보니 cache 는 SRAM 으로 이루어져 있다는 것을 알게 되었고, 용어를 명확하게 구분하여 사용하지 못해 여러 면에서 의미에 혼동이 있다는 것을 깨달았다. 주기억장치 명령어(instruction) 혹은 관련 데이터들을 저장해놓고, CPU 가 직접 접근하여 읽거나 실행이 가능한 기억장치를 의미 직간접적으로 memory bus (address bus, data bus)를 통해 CPU 와 연결 일반적으로 DRAM 으로 구성 Booting 전 Computer 초기화를 위한 목적으로 ROM (BIOS)이 존재 (D..