TechNote. 339

[Docker][해결방법] WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Dockerfile 내에서 apt 를 사용하면 "WARNING: apt does not have a stable CLI interface. Use with caution in scripts." 문구가 출력된다. apt 명령어의 경우 사용자와의 interaction 에 중점을 둔 CLI 이기에 script 내에서 사용하기에 부적절하다는 에러로 apt-get 등의 명령어로 대체하여 사용하면 된다. apt 명령어별 대체 CLI는 apt의 manpage 에서 확인 가능하다. update (apt-get(8)) upgrade (apt-get(8)) full-upgrade (apt-get(8)) install, reinstall, remove, purge (apt-get(8)) autoremove (apt-get(..

[Docker] docker image - Docker 이미지 관리 명령어

docker image 명령어 목록 technote@TechNote:~$ docker image --help Usage: docker image COMMAND Manage images Commands: build Build an image from a Dockerfile history Show the history of an image import Import the contents from a tarball to create a filesystem image inspect Display detailed information on one or more images load Load an image from a tar archive or STDIN ls List images prune Remove unus..

[Docker][해결방법] image is being used by stopped container

Docker Image 삭제시 에러가 발생하는 경우가 있다. technote@TechNote:~/docker$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my-test-build latest 22b5185b193b 2 minutes ago 885MB python 3 2a93c239d591 6 days ago 885MB hello-world latest bf756fb1ae65 13 months ago 13.3kB technote@TechNote:~/docker$ docker rmi bf756fb1ae65 Error response from daemon: conflict: unable to delete bf756fb1ae65 (must be forced) ..

[Docker][해결방법] Got permission denied while trying to connect to the Docker daemon socket

docker image 를 다운로드 받으려고 했을 때 아래와 같이 권한 에러가 발생하는 경우가 있다. 해당 문제는 사용자가 /var/run/docker.sock 을 접근하려고 하였지만 권한이 없어 발생하는 문제로 사용자가 root:docker 권한을 가지고 있어야 한다. technote@TechNote:~$ ls -al /var/run/docker.sock srw-rw---- 1 root docker 0 2월 15 15:16 /var/run/docker.sock root 권한을 가지고 실행하는 것은 권장되지 않으므로, 사용자를 docker group에 포함시켜주면 된다. ($USER 환경 변수는 현재 로그인한 사용자 아이디를 나타내므로 그대로 입력하면 된다.) technote@TechNote:~$ sud..

[Notepad++] 다크 테마(Dark Theme) 적용하기

기본 테마는 하얀 바탕에 검은 글씨를 기본으로 하고 있다. 하지만 개인적인 차이로 인해 다크 테마가 눈에 편안하여 Notepad++에 다크 테마를 적용해보려고 한다. (Notepad++ 은 기본 테마 외에 별도의 테마 적용이 가능하다.) 1) 기본 설정은 아래와 같이 하얀 바탕을 기본으로 하고 있다. 2) Notepad++을 설치하면 기본 테마 외에 다른 테마는 포함되어 있지 않다. 이에 따라 적용하고자 하는 테마를 다운로드 받아 설치해야 한다. Notepad++ Dark Theme 다운로드 : Dark theme for Notepad++ and 160+ apps — Dracula (draculatheme.com) 해당 웹사이트 접속하여 Install manually > Download using Dra..

[Docker] 설치 on Ubuntu 20.04 Focal

Docker 를 Ubuntu 에 설치하는 방법은 3가지가 있다. docker repository를 통해 설치하는 방법 수동으로 deb 파일을 다운로드하여 설치하는 방법 별도의 설치 스크립트를 이용하는 방법 여기서는 첫번째인 docker repository를 설정하고 이를 통해 apt로 설치하는 방법을 알아보자. 1) 기존 docker 관련 package들을 삭제 $ sudo apt-get remove docker docker-engine docker.io containerd runc Ubuntu 20.04 를 바로 설치한 직후에는 docker 관련 package 들이 설치되어 있지 않지만, 이전에 docker를 사용한 이력이 있을 경우 삭제해 준다. 2) Docker Repository 를 등록하기 위한..

마이크로 서비스 아키텍처 (Microservice Architecture)

독립적으로 동작하는 다수의 작은 서비스들이 상호 협업하는 구조의 아키텍처 기존 모놀리식 (Monolithic) 아키텍처와 같이 하나의 서비스로 되어 있는 구조에서 기능을 수정하거나 추가할 경우 해당 코드들이 기존의 코드들에 영향을 미칠 수 있고, 이는 점점 더 시스템의 유지 보수를 어렵게 한다. 반면, 마이크로 서비스 (Microservice) 아키텍처는 내부적으로 다수의 작은 서비스들을 가지고 있고, 각 서비스들은 상호협업 한다. 각 서비스들은 독립적이고, 자율성을 가지기 때문에 기능이 수정되거나 추가되더라도 기존 다른 서비스에 미치는 영향은 제한적이다. (각 서비스들은 네트워크 호출을 통해 통신하기 때문에 서로 다른 기술 기반으로 구현 가능하다는 특징도 있음) 마이크로 서비스 아키텍처는... 분산 시..

Use Case Model - Use Case Diagram

Use Case Model 시스템의 Functional Requirements를 표현한 모형 Actor와 Use Case(UC), 그리고 이들간의 관계(Association)를 Diagram으로 표현 (Use Case Diagram) Actor 시스템과 Interaction하는 모든 요소 개발 범위 외부에 존재 Use Case 시스템이 제공하는 기능을 의미 사용자 관점에서 개별적인 기능 단위 표현 필요 Association Actor와 Use Case 간의 관계 및 방향 Use Case 간에는 association을 쓰면 안되고, , 만 허용 임의의 UC내에 특정 UC가 있을 경우 로 표현 (공통의 부분을 떼어 내어 중복 방지를 위한 모듈화를 위함) 특정 조건에 발생하는 추가 UC의 경우 로 표현 (가변..

SOLID - 객체 지향 디자인을 위한 5가지 기본 원칙

유지가능(Maintainable)하고 확장가능(Extensible)한 시스템을 위한 객체 지향 디자인을 위한 5가지 기본 원칙 SRP: Single Responsibility Principle OCP: Open-Closed Principle LSP: Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle SRP: Single Responsibility Principle 하나의 모듈은 변경을 위한 하나의 이유만 있어야 한다. 모듈을 변경해야 할 이유가 두개 이상이라면 해당 모듈은 두개 이상의 책임을 가지고 있다는 의미로 SRP를 지키지 못한 것이다. OCP: Open-Closed..

Quality Attribute Scenario

어떤 자극(Stimulus)에 대해 시스템이 어떤 측정(Measure)하에 응답(Response)해야 하는지에 대한 Description ex> The game shall change view modes(response) in < 500 ms(response measure) when the user presses the button(stimulus). 는 환경에서 를 발생시킨다. 는 를 하에 처리한다. Source of Stimulus Stimulus를 생성하는 개체 Stimulus 시스템에 전달되었을 때 Response를 필요로하는 조건 예> 사용자의 요청, 이벤트, interrupt, 에러 등. Artifact Stimulus가 전달되는 대상으로 System 전체이거나 일부분 Environment S..

Architectural Drivers - 핵심 요구 사항

Architectural Drivers (AD) SW architecture를 Design하기 위해 Architect가 파악해야 할 Key Requirements. 시스템의 Fundamental에 영향을 미침 시스템을 위한 모든 요구 사항을 의미하지는 않음 (AD는 전체 Requirement의 subset) Architectural Driver는 architectural decision에 영향을 미치기 때문에 조기 파악이 중요 Architectural Driver의 종류 Functional requirements => Use Case Model과 Use Case Specification (Scenarios)를 통해 파악 Non Functional requirements Quality attributes ..

[Design Pattern] Singleton 패턴

인스턴스가 하나 뿐인 객체를 만들 수 있게 해주는 패턴 특정 클래스에 대해 객체 인스턴스를 하나만 만들 수 있다. 사용 용도> 자원 관리 Pool, 특정 하드웨어를 Control하는 디바이스 드라이버 등 비슷한 역할을 하는 전역 변수와의 비교> 전역 변수는 애플리케이션 시작될 때 생성 불필요하게 자원을 잡아먹는 경우 발생 Singleton은 필요할 때 객체 생성 [Singleton 기본 구조] public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if(uniqueInstance == null) uniqueInstance = new..

Language/Java 2020.11.26

[VSCODE] Github Pull Requests 생성하기

[Github 에 반영하기 (git commit/push)] 에서 보았듯이 write 권한이 없는 repository 에는 직접 반영을 할 수 없다. 이에 write 권한을 가지고 있는 계정의 review를 받고 해당 계정을 통해 반영이 이루어 져야 한다. 이러한 과정을 Pull Requests 라고 하며 github 의 tab 들 중 하나에서 확인할 수 있다. Pull Request 를 위한 전반적인 Flow 에 대한 이해 Pull Request 를 올리는 실제 사례 다수 개의 Pull Request 를 올리는 방법에 대한 이해 Pull Request 를 위한 전반적인 Flow 에 대한 이해 Pull Request 는 fork 된 repository 를 통해 이루어지게 되고, 이를 위한 reposito..

[VSCODE] Github 에 반영하기 (git commit/push)

git clone 하여 local PC 에 코드를 sync 한 이후 코드를 주성하여 다시 github repository 에 반영해야 하는 경우가 있다. [Github 와 연동하기 : https://technote.kr/352] 코드 반영은 Flow는 다음과 같다. 1) 코드 수정 2) [Ctrl + Shit + `] 을 눌러서 teminal 을 실행시킨 후 수정 코드 실행해서 에러 유무 확인 3) 문제가 없을 경우 왼쪽 세번째 아이콘 선택 4) 자동으로 수정된 파일들이 탐지되고, 상단에 수정 내용 작성한 후 "V" 아이콘 선택하여 commit 생성 (git commit) 5) 하단에 push 가능한 commit 의 수가 나오고 해당 버튼 누르면 github repository 로 push 진행 (git..

[VSCODE] Github 와 연동하기 (git clone)

vscode 를 기반으로 github project 를 작업할 때 가장 먼저 진행되어야 할 것은 github repository를 local PC로 git clone 하는 것이다. cmd 로 진행시에는 아래와 같이 진행하면 되지만 vscode 와 연동시에는 vscode의 UI 를 통해 진행해야 자동으로 vscode의 workspace까지 생성된다. D:\Github>git clone https://github.com/technotekr/Sample.git Cloning into 'Sample'... remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% ..

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 (1)

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