root@ip-172-31-28-47:/home/ubuntu# docker --help

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string           Location of client config files (default "/root/.docker")
      -D, --debug               Enable debug mode
      -H, --host list            Daemon socket(s) to connect to
      -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                           Use TLS; implied by --tlsverify
      --tlscacert string       Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string           Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string            Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify                  Use TLS and verify the remote
      -v, --version              Print version information and quit

Management Commands:
  builder        Manage builds
  config         Manage Docker configs
  container    Manage containers
  engine        Manage the docker engine
  image         Manage images
  network     Manage networks
  node          Manage Swarm nodes
  plugin        Manage plugins
  secret        Manage Docker secrets
  service       Manage services
  stack          Manage Docker stacks
  swarm        Manage Swarm
  system       Manage Docker
  trust           Manage trust on Docker images
  volume       Manage volumes

Commands:
  attach         Attach local standard input, output, and error streams to a running container
  build           Build an image from a Dockerfile
  commit       Create a new image from a container's changes
  cp               Copy files/folders between a container and the local filesystem
  create         Create a new container
  diff              Inspect changes to files or directories on a container's filesystem
  events        Get real time events from the server
  exec           Run a command in a running container
  export        Export a container's filesystem as a tar archive
  history        Show the history of an image
  images        List images
  import         Import the contents from a tarball to create a filesystem image
  info             Display system-wide information
  inspect        Return low-level information on Docker objects
  kill               Kill one or more running containers
  load             Load an image from a tar archive or STDIN
  login            Log in to a Docker registry
  logout         Log out from a Docker registry
  logs             Fetch the logs of a container
  pause          Pause all processes within one or more containers
  port            List port mappings or a specific mapping for the container
  ps               List containers
  pull             Pull an image or a repository from a registry
  push           Push an image or a repository to a registry
  rename       Rename a container
  restart        Restart one or more containers
  rm              Remove one or more containers
  rmi             Remove one or more images
  run             Run a command in a new container
  save           Save one or more images to a tar archive (streamed to STDOUT by default)
  search        Search the Docker Hub for images
  start           Start one or more stopped containers
  stats           Display a live stream of container(s) resource usage statistics
  stop           Stop one or more running containers
  tag             Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top             Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update       Update configuration of one or more containers
  version       Show the Docker version information
  wait           Block until one or more containers stop, then print their exit codes

Run  docker <COMMAND> --help  for more information on a command.

 

 

 

플래그

ZF 제로 플래그(Zero Flag) 연산 결과가 0이면 참(1)
SF 부호 플래그(Sign Flag) 연산 결과가 음수이면 참(1)

점프 명령어

jz <Operand>  제로 플래그가 참이면(연산 결과 = 0) Operand로 점프 합니다.
jnz <Operand>  제로 플래그가 거짓이면(연산 결과 != 0) Operand로 점프 합니다.
js <Operand>  부호 플래그가 참이면(연산 결과 < 0) Operand로 점프합니다.
jns <Operand>  부호 플래그가 거짓이면(연산 결과 >= 0) Operand로 점프합니다.

 

CMP 명령어에 따른 점프 명령어

cmp <Dest operand>, <Src operand > 대상 피연산자가 소스 피연산자를 비교해 조건부 점프 명령어가 사용할 플래그를 설정합니다.
je <Operand> CMP 명령어의 대상 피연산자와 소스 피연산자가 같으면 목적으로 점프 합니다.
jne <Operand> CMP 명령어의 대상 피연산자와 소스 피연산자가 같지 않으면 점프 합니다.
jl <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 작으면 점프 합니다.
jle <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 작거나 같으면 점프 합니다.
jnl <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 작지 않으면 점프 합니다.
jnle <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 작거나 같지 않으면 점프 합니다.
jg <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 큰 경우 점프 합니다.
jge <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 크거나 같으면 점프 합니다.
jng <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 크지 않으면 점프 합니다.
jnge <Operand> CMP 명령어의 대상 피연산자가 소스 피연산자 보다 크거나 같지 않으면 점프 합니다.

 

 

 

'Programming Language > Assembly' 카테고리의 다른 글

Calling Convention  (0) 2019.07.03
문법, 레지스터 정리  (0) 2019.07.03
POPAD / PUSHAD  (0) 2019.06.25

 

소수: 1과 자기자신을 약수로 갖는 숫자

소인수분해: 어떤 정수 N 을 소수의 곱으로만 표현한 것

단순히 배수 판정법으로 문제를 해결할 수 있으나 숫자가 커질수록 시간복잡도가 너무 커져 비효율적이다.

위키에 따르면, 다음과 같은 정리가 성립한다고 한다.

3개 이상의 소수로 구성된  합성수는 그 수의 제곱근보다 작거나 같은 약수를 갖는다.

이에 대한 증명은 다음과 같다.

n 을 합성수라 하자. 그러면  n=ab 로 표현할 때, 1<a,b<n 이다.
만약  a,b 가 둘 다  n의 제곱근보다 크다면 [ a, b > sqrt(n) ]
ab > n 가 되어 n = ab 와 모순이다. 따라서  a,b 중 적어도 하나는 n의 제곱근보다 작거나 같다.

위의 증명때문에 1~N 사이의 숫자로 모두 나눠보지 않아도 N의 제곱근보다 작은 숫자만으로 소인수분해가 가능하다는 걸 알 수 있다.

해당 알고리즘은 for문을 2~sqrt(n) 번 돌리면서 나오는 약수의 소수를 찾아서 배열에 저장한다.

 

에라토스테네스의 체: 숫자 2부터 N까지 있으면, 각 숫자의 소수임을 판별할 때 배수가 되는 숫자들을 지워나가는 방법으로 속도가 빠르네 메모리 공간을 많이 차지하므로 비트마스크 등 별도의 최적화를 수행하기도 한다.

int n;
bool isPrime[MAX_N+1]; // 숫자 i의 소수 유무

void eratosthenes() {
	memset(isPrime, 1, sizeof(isPrime));
	// 1은 항상 예외 처리
	isPrime[0] = isPrime[1] = false;
	int sqrtn = int(sqrt(n)); // 어떤 약수도 sqrt(n) 을 넘기지 않음
	for (int i=2; i<=sqrtn; i++)
		if (isPrime(i)) // 이 수가 아직 지워지지 않았다면
			for (int j=i*i; j<=n; j+=i)
				isPrime[j] = false;
	// i의 배수 j에 대해 isPrime[j] = false;
	// i*i 미만의 배수들은 이미 처리됨. (2*i, 3*i 등 j=2,3일 때)
}

 

 

에라토스테네스의 체를 이용한 빠른 소인수 분해

// minFactor[i]: i의 가장 작은 소인수 저장 (i가 소수인 경우 자기 자신)
int minFactor[MAX_N];
// 에라토스테네스의 체를 수행하면서 소인수분해를 위한 정보도 저장
void eratosthenes2() {
	// 1은 항상 예외 처리
	minFactor[0] = minFactor[1] = -1;
	// 모든 숫자를 처음에는 소수로 표시
	for (int i=2; i<=n; i++)
		minFactor[i] = i;
	// 에라토스테네스의 체를 수행
	int sqrtn = int(sqrt(n));
	for (int i=2; i<=sqrtn; i++) {
		if (minFactor[i] == i)
			for (int j=i*i; j<=n; j+=i)
				if (minFactor[j] == j)
					minFactor[j] = i; // 아직 약수를 본 적 없는 숫자인 경우
	}
}

// 2이상의 자연수 n을 소인수분해한 결과를 반환
vector<int> factor(int n) {
	vector<int> ret;
	// n이 1이 될 때까지 가장 작은 소인수(minFactor)로 나누기를 반복한다.
	while (n > 1) {
		ret.push_back(minFactor[n]);
		n /= minFactor[n];
	}
	return ret;
}

 

 

 

[번역글]

https://m.blog.naver.com/passion053/221079317719

 

파이썬 입문자가 알면 좋은 유려한 기능 10선

* 이하의 내용은 10 Neat Python Tricks Beginners Should Know 의 글을 직접 번역한 것입니다. * 예...

blog.naver.com

https://m.blog.naver.com/PostView.nhn?blogId=passion053&logNo=221112010085&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

효율적인 성능, 메모리, 사용성을 위한 파이썬 코드 사례

* 이하의 내용은 Python Practices for Efficient Code: Performance, Memory, and Usability 의 글...

blog.naver.com

https://m.blog.naver.com/passion053/221058266968

 

파이썬의 유용한 기능들

* 이하의 내용은 Advanced Python Features 의 글을 직접 번역한 것입니다. * 제가 번역한 것을 다른곳...

blog.naver.com

 

파이썬 class 기본 메소드

https://corikachu.github.io/articles/python/python-magic-method

 

파이썬 더블 언더스코어: Magic Method | Corikachu

파이썬에서 __를 달고있는 메소드들에 대해서 살펴봅시다.

corikachu.github.io

 

파이썬 메모리 관리

https://b.luavis.kr/python/python-malloc

 

Luavis' Dev Story - Python의 메모리 할당

Python이 메모리를 할당하고 관리하는 방법

b.luavis.kr

https://www.evanjones.ca/memoryallocator/

 

Improving Python's Memory Allocator

Improving Python's Memory Allocator Evan Jones <ejones@uwaterloo.ca> http://evanjones.ca/ [PDF version] Abstract Python automatically manages memory using reference counting. In order to provide good performance for typical programs, Python provides its ow</ejones@uwaterloo.ca>

www.evanjones.ca

 

쓰레드 관련

https://dgkim5360.tistory.com/entry/understanding-the-global-interpreter-lock-of-cpython

 

왜 Python에는 GIL이 있는가

Python 사용자라면 한 번 쯤은 들어봤을 (안 들어봤다 해도 괜찮아요) 악명 높은 GIL (Global Interpreter Lock)에 대해 정리해본다. Global Interpreter Lock 그래서 GIL은 무엇인가? Python Wiki에서는 이렇게..

dgkim5360.tistory.com

 

비동기 프로그래밍

https://mingrammer.com/translation-asynchronous-python/

 

[번역] 비동기 파이썬

Asynchronous Python을 번역한 글입니다. 파이썬에서의 비동기 프로그래밍은 최근 점점 더 많은 인기를 끌고있다. 비동기 프로그래밍을 위한 파이썬 라이브러리는 많다. 그

mingrammer.com

+ Recent posts