일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Two Points
- DP
- Hash
- 이진탐색
- binary search
- SQL
- Brute Force
- Dijkstra
- MYSQL
- two pointer
- Trie
- union find
- Stored Procedure
- 그래프
- 스토어드 프로시저
- String
- 다익스트라
- Today
- Total
목록분류 전체보기 (425)
codingfarm

3. 포그라운드, 백그라운드 프로세스와 작업 제어 3.1 포그라운드 작업과 백그라운드 작업 포그라운드 작업(foreground job) 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 작업 ex) 터미널에서 작업할 때 일반적으로 사용자가 명령을 입력하면 셸이 그 명령을 해석하여 실행하고 결과를 화면에 출력한다. 그러면 사용자는 화면에 출력된 결과를 봐야 다시 명령을 입력할 수 있는 대화식으로 작업을 수행한다. 포그라운드 프로세스 : 포그라운드 작업방식으로 처리되는 프로세스 >> sleep 100 // foreground job // sleep 명령이 끝날 때까지 기다려야 한다. 백그라운드 작업(background job) 사용자가 입력한 명령이 끝나는것과 상관없이 곧바로 ..

manpages.ubuntu.com/manpages/trusty/man1/jobs.1posix.html jos [%작업 번호] 기능 : 백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여준다. %작업 번호 %번호 : 해당 번호의 작업 정보를 출력한다. %+ 또는 %% : 작업 순서가 +인 작업 정보를 출력한다. %- : 작업 순서가 -인 작업 정보를 출력한다. 사용예 jobs jobs %1 실행중인 백그라운드 작업은 kill 명령으로 정지시킬 수 있다. jobs 명령의 출력 정보 항목 출력 예 의미 작업 번호 [1] 작업 번호로서 백그라운드로 실행할 때마다 순차적으로 증가한다([1],[2],[3],...) 작업 순서 + 작업 순서를 표시한다. $\cdot$ + : 가장 ..

1. 프로세스의 개념 프로세스 : 현재 시스템에서 실행중인 프로그램 다중 프로세스 시스템 : 여러 개의 프로세스가 동시에 실행되는 시스템 1.1 프로세스의 부모-자식 관계 리눅스에서 모든 프로세스는 부모-자식 관계를 가진다. systemd와 kthreadd를 제외한 모든 프로세스는 부모 프로세스를 지닌다. (이 둘은 리눅스 시스템 부팅시 스케줄러가 실행한다) 자식 프로세스 부모 프로세스에 의해 만들어지는 프로세스 종료시 부모프로세스에게 종료 정보(exit status)를 돌려주고 종료된다. ex) 사용자가 vi를 실행하면 셸이 vi 프로세스를 생성할 경우, 셸은 부모 프로세스가 되고 vi는 자식 프로세스가 된다. 사용자가 vi를 종료하면 다시 부모 프로세스인 셸로 돌아간다. 1.2 PID(process ..

manpages.ubuntu.com/manpages/focal/en/man1/kill.1.html 프로세스에게 signal을 보내어 프로세스를 종료한다. 1. signal 프로세스에 무언가 발생했음을 알리는 간단한 메시지 signal을 받은 프로세스는 기본적으로 종료된다. kill -l 명령으로 리눅스에서 지원하는 시그널 목록을 알 수 있다. 주로 쓰이는 시그널은 아래와 같다. 시그널 번호 기본 처리 의미 SIGHUP 1 종료 터미널과의 연결이 끊어졌을 때 발생 SIGINT 2 종료 인터럽트로 사용자가 `Ctrl + c`를 입력하면 발생 SIGQUIT 3 종료, 코어 덤프 종료 신호로 사용자가 `Ctrl + \`을 입력하면 발생 SIGKILL 9 종료 이 시그널을 받은 프로세스는 무시할 수 없으며 강제로..

manpages.ubuntu.com/manpages/xenial/man1/ps.1.html 기능 : 현재 실행중인 프로세스의 목록을 본다. ps [option] 유닉스 옵션 -e : 시스템에서 실행중인 모든 프로세스의 정보를 출력 -f : 프로세스의 자세한 정보를 출력한다.(PPID, 터미널 번호, 시작 시간 등) -u uid : 특정 사용자에 대한 모든 프로세스의 정보를 출력 -p pid : pid로 지정한 특정 프로세스의 정보를 출력 BSD 옵션 a : 터미널에서 실행한 프로세스의 정보를 출력 u : 프로세스의 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 절보를 출력 x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력 GNU 옵션 --pid PID 목록 : 목록으로 지정한 특정 PID의..

특정파일의 접근권한을 알고 싶을때 우리는 ls -l 명령어를 사용하며 기본접근 권한을 알고 싶을땐 umask를 쓴다. 이런 명령어를 통해 파일들의 유저, 그룹, 다른 사용자들에 대한 접근권한과 기본 접근 권한에 대해 알 수 있다. 하지만 리눅스에는 일반적인 접근 권한 외에 특별한 접근 권한을 제공하는데, 이를 특수 접근 권한 이라 한다. 가령 umask를 실행해보자. 맨 앞자리에 있는 숫자가 특수 접근 권한을 나타낸다. 맨 앞자리의 수가 1,2,4 중 어떤 수를 가지느냐에 따라 특수 접근 권한이 설정된다. 0 : 일반적인 접근 권한 1 : 스티키 비트(sticky bit) 2 : SetGID 4 : GetUID 숫자 권한 종류 0 일반적인 접근 권한 1 스티키 비트(sticky bit) 2 SetGID ..

함수 리터럴 자바스크립트의 함수는 객체 타입의 값이다. 숫자 값을 숫자 리터럴로 생성하고, 객체를 객체 리터럴로 생성하듯이, 함수도 함수 리터럴로 생성할 수 있다. 함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성된다. 1 2 3 4 5 6 7 // 변수에 함수 리터럴을 할당 var f = function add(x, y) { return x + y; }; console.log(f(1,2)); // 3 console.log(add(3,4)); // reference error cs 위 코드를 보면 함수 리터럴을 변수에 할당하고 있다. 리터럴은 사람이 이해할 수 잇는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기방식이다. 즉, 리터럴은 값을 생성하기 위한 표기법이..
progtrend.blogspot.com/2017/03/deleted-functions.html C++ deleted functions (함수의 삭제 선언) C++ deleted functions. progtrend.blogspot.com 어떤 함수를 삭제하면 그 함수에 대한 어떠한 호출도 불가능해진다. C++ 11이전에서는 그런 메서드를 private로 선언하여 사용을 막았으나, C++ 11부터는 함수 삭제 기능을 지원한다. 그렇다면 함수를 처음부터 안만들면 되는것 아닐까? 문제는 컴파일러가 자동으로 만드는 함수들에 있다. C++ 컴파일러는 클래스의 생성자, 파괴자, 대입연산자를 자동으로 생성한다. 이때, 그런 함수들을 일정 사용하지 못하게끔 하기 위해서 함수를 delete 시킨다. 1 2 3 4 5 ..

my.cnf MySQL 서버를 설정하기 위한 유일한 설정 파일 경로 리눅스 : /etc/my.cnf mysqld --verbose --help 명령어로 경로 확인 가능 (verbose와 help 옵션중 하나라도 제외하면 서버가 가동된다.) mysql --help 명령어로도 경로 확인 가능 (실수로라도 서버를 가동하지 않는다.) 윈도우 : /etc/my.ini MySQL 서버가 시작될때 참조하는 설정파일 서버 실행시, 지정된 여러 개의 디렉터리를 순차적으로 참조하다 처음 발견된 my.cnf 파일을 사용하게 된다. my.cnf 파일 경로 확인하기 위 그림을 보면 my.cnf 파일(또는 my.ini 파일)을 찾는 순서를 볼 수 있다. /etc/my.cnf /etc/mysql/my.cnf /usr/local/m..

자바스크립트가 제공하는 데이터 타입은 7가지이다. 숫자 문자열 불리언 null undefined 심벌 객체 타입 이 데이터 타입들은 크게 원시 타입(primitive type)과 객체 타입(object/reference type)으로 구분된다. 원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다. 원시 타입(primitive type) 객체 타입(object/reference type) 변경 불가능한 값(immutable value) 변경 가능한 값(mutable value) 변수에 실제 값이 저장된다. 변수에 참조 값이 저장된다. 값에 의한 전달(pass by value) 참조에 의한 전달(pass by reference) 1. 원시 값(primitive type) 1.1 변경 불가능한 값(immu..

nodejs.org/ko/ Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. Node.js는 서버로 주로 사용되지만, 그이외의 용도로도 사용이 가능하다. 1. 서버 Node.js를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있지만, node.js는 서버 어플리케이션을 실행하는데 주로 사용됩니다. 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 or 프로그램 클라이언트 : 서버로 요청을 보내는 주체(ex : 브라우저, 어플리케이션, 또 다른 서버...) 우리가 웹서..
cc0textures.com/

이 책의 예제 프로그램들은 d3dUtil.h, d3dUtil.cpp, d3dApp.h, d3dApp.cpp 파일의 코드를 사용한다. d3dUtil 파일 : 유용한 편의용 코드가 포함됨 d3dApp 파일 : direct3D 예제 응용 프로그램을 캡슐화 하는데 스이는 핵심 Direct3D 응용 프로그램 클래스 코드가 들어 있다. Win32 프로그래밍 지식은 이미 있다고 가정한다. 이 프레임워크는 창 생성 코드와 Direct3D 초기화 코드를 숨기는것이 목적이다. 개요 본격적으로 분석하기에 앞서 프로젝트의 class diagram과 sequence diagram을 통해 클래스 관계와 실행 흐름에 대해 살펴보겠다. 1. Sequence Diagram InitDirect3D와 D3DApp의 관계를 눈여겨 볼만하다..
정확한 애니메이션의 수행을 위해선 인접한 두 프레임 사이에 흐른 시간의 양을 측정할 수 있어야 한다. 프레임률이 높은 경우 프레임간 경과 시간이 상당히 짧으므로, 정밀도가 높은 타이머를 사용할 필요가 있다. 1. 성능타이머 이 책의 예제들은 Windows가 제공하는 성능 타이머(performance timer)를 사용한다. 이를 성능 카운터(performance counter) 라고도 부른다. 성능 타이머를 조회하는 Win32 함수를 사용하려면 반드시 Windows.h를 포함시켜야 한다. 성능 타이머의 시간 측정 단위는 '지나간 클릭 틱(tick)들의 갯수(count)' 즉, 틱수 이다. 성능 타이머로부터 틱 수 단위의 현재 시간을 얻을 때에는 QueryPerformanceCounter 함수를 사용한다...
anglenara.kr/product/420-%EA%B2%BD%EB%9F%89%EC%95%B5%EA%B8%80-%ED%9A%8C%EC%83%89-%EA%B0%9C%EB%8B%B9-%ED%8C%90%EB%A7%A4/107/category/51/display/1/ 앵글나라 공식사이트 앵글,조립식앵글,철제선반,선반,조립식선반,스피드랙,중량랙,경량랙,경량앵글,중량앵글,셀프랙,파렛트랙 www.anglenara.kr www.youtube.com/watch?v=GMNAmdZwGFQ&ab_channel=tomthomas21 www.youtube.com/watch?v=9xhsdXZ_GrU&ab_channel=AgaYuditraStudio www.youtube.com/watch?v=Snbkv_mvt8Q&ab_channel..

이제 Direct3D를 초기화하는 구체적인 방법을 살펴본다. Direct3D의 초기화 과정은 꽤 길지만, 응용 프로그램 실행시 한 번만 해 주면 된다. 이 포스팅에서 다루는 Direct3D 초기화 과정은 다음과 같은 단계들로 구성된다. 1. Device 생성 2. Fence 객체 생성, 서술자들의 크기 확보 3. 4X MSAA 품질 수준 지원 여부 점검 4. command queue와 command allocator 그리고 command list를 생성한다. 5. 교환사슬을 서술하고 생성한다. 6. 응용 프로그램에 필요한 서술자 힙들을 생성한다. 7. 후면 버퍼의 크기를 설정하고, 후면 버퍼에 대한 렌더 대상 뷰를 생성한다. 8. 깊이$\cdot$스텐실 버퍼를 생성하고, 그와 연관된 깊이$\cdot$스텐..
Direct3D 12는 다중 스레드를 효율적으로 활용할 수 있도록 설계되었다. Command List의 설계는 Direct3D가 multi thread 적용의 장점을 취하는 한 방법이다. 물체가 많은 큰 장면을 다룰 때, 장면 전체를 하나의 명령 목록으로 그리려 한다면 Command list를 구축하는 데 시간(CPU 시간)이 오래 걸린다. 이에 대한 자명한 해결책은 여러 개의 command list을 병렬로 구축하는 것이다. 가령 thread 네개를 띄워서 각자 하나의 command list를 구축하데 하면, 전체적인 시간이 기존의 25%로 줄어든다. 다음은 Command list 구축에 다중 스레드를 적용할 때 주의해야 할 점 몇가지이다. 1. Command list는 자유 스레드(free-threa..
https://ssinyoung.tistory.com/40 자원 상태 전이 자원 위험 상황(resource hazard) GPU가 자원에 자료를 다 기록하지 않거나 기록을 시작하지 않은 상태에서 자원의 자료를 읽으려 하는 상황 ex) 한 단계에서 GPU가 자원 $R$에 data를 기록하고, 이후의 한 단계에서 그 자원 $R$의 자료를 읽어서 사용하려는데, 읽기전에 자원 $R$에 다른 data를 기록하려 할 경우 이를 해결하기 위해 Direct3D는 자원들에 상태를 부여함 어떤 리소스에 대해 특정 상태가 되기 전까진, 해당 리소스를 실행할 수 없게 만듬 자원 상태 모든 리소스는 하나의 상태(state)를 꼭 가저야 함 어떤 그래픽 명령이 특정 리소스를 사용해서 실행되기 위해선, 그 명령에 필요한 상태로 리..
www.slideshare.net/ImseongKang/ndc15-imseong-pdf

그래픽 프로그래밍에는 CPU와 GPU 2개의 장치(프로세서)가 작동한다. CPU : 로직제어 GPU : 화면표시 이들은 병렬로 작동하지만 동기화를 할 필요가 있다. 하지만 최적의 성능을 얻으려면 1. 최대한 둘다 바쁘게 돌아가야한다. 2. 동기화를 최소화 해야한다. 2가지 조건을 만족해야한다. 동기화는 한 처리 장치가 작업을 마칠 때까지 다른 한 처리 장치가 놀고 있어야 함을 의미하며, 따라서 성능에 바람직하지 않다. 즉, 동기화는 병렬성을 망친다. 1. 명령 대기열(Command Queue)과 명령 목록(Command List) GPU에는 명령 대기열(Command Queue)가 있고, CPU에는 명령 목록(Command List)가 있다. CPU는 그리기 명령들이 담긴 Command List를 Dir..