Celery를 Flower로 로깅하기
·
기타
celery, flower 설치pip install flower celery flower 실행celery --broker=redis://localhost:6379/0 flower 웹 접속기본적으로 5555번 포트를 사용한다.예시: http://localhost:5555Celery Worker가 실행 중이라면 Online 상태임을 확인 할 수 있다.Celery Worker 프로세스가 종료되면 Offline 상태로 변경되며, 작업을 호출하면 worker가 Task 처리 상태를 실시간으로 확인할 수 있다.
안드로이드에서 동기와 비동기 처리
·
안드로이드
동기(Synchronous) 방식작업을 순서대로 처리하는 방식으로, 하나의 작업이 완전히 끝날 때까지 다음 작업은 대기해야한다.만약 안드로이드에서 동기방식으로 네트워크 요청 같은 긴 작업을 동기적으로 실행하면 ANR과 같은 문제가 발생할 수 있다.비동기(Asynchronous) 방식작업을 시작한 후 그 완료를 기다리지 않고 다음 작업을 바로 처리하는 방식으로, 그 결과는 작업이 완료되었을 때 콜백이나 다른 매커니즘을 통해 나중에 받는다.시간이 오래 걸리는 네트워크나 파일 IO 작업을 백그라운드 스레드로 옮겨 메인 쓰레드가 차단되지 않도록 해야 한다. 안드로이드에서 비동기가 중요한 이유는 무엇일까? 안드로이드에서 비동기 처리는 사용자가 앱을 원활하게 사용할 수 있게 제공하는데 중요한 역할을 한다. 무거운 ..
안드로이드 기본 질문 1
·
취준
1. 안드로이드 OS의 아키텍처 구조Linux Kernel가장 하위 계층파워를 관리하고 프로세스나 스레드, 메모리 등의 시스템 자원도 커널에서 관리USB나 카메라 등 각종 디바이스의 드라이버가 위치. 기기의 기본 HW와 통신하는 역할\HAL(Hardware Abstraction Layer)Kernel위 레이어각종 하드웨어 기능을 활용할 수 있는 인터페이스를 상위 레이어에 제공Native C/C++ Libraries(네이티브 데몬 및 라이브러리)HAL위 레이어커널 또는 다른 인터페이스와 직접 상호작용하며 HAL에 의존하지 않음네이티브 라이브러리의 기능을 상위 레이어에 제공게임 엔진이나 미디어 처리 등 성능이 중요한 기능을 개발할 때 활용C나 C++ 코드가 필요할 때, NDK(Native Developmen..
[프로그래머스 - LV2] [3차] 파일명 정렬
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/17686#문제 설명1. `HEAD` : 문자로만 이뤄진 부분2. `NUMBER` : 숫자로만 이뤄진 부분3. `TAIL` : 그 나머지 파일명을 위의 세 부분으로 나눠서 파일들을 정렬해야한다. 정렬 방법1. HEAD를 사전순으로 정렬(대소문자 구분 X)2. NUMBER를 오른차순으로 정렬3. 1, 2번이 모두 같으면, 기존에 주어진 순서를 유지 문제 풀이 1. file들을 `head`, `number`, `tail`로 구분해 문자일 때, 숫자일 때 그 나머지를 각각 넣어준다.- 여기서 char을 쓰면 숫자/문자 구분이 편한 것 같아 자주 쓰고 있다.2. 위의 정렬대로 정렬한다.- 대소문..
[프로그래머스 - LV2] [1차] 프렌즈4블록
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/17679 문제 설명 - 주어진 `m` x `n` 보드에서 같은 모양인 2x2 블록을 찾아 제거- 제거된 후 제거된 공백을 위의 블록들이 떨어져 채움- 제거된 블록이 없을 때까지 반복하고, 제거되 블록 개수를 출력한다. 문제 풀이 1. `HashMap`으로 모양 별로 좌표를 모아 기록한다.2. hash의 각 노드에서 2x2 블럭인 `(x + 1, y)`, `(x, y + 1)`, `(x + 1, y + 1)` 가 같은 `key`를 가진다면, 제거할 좌표를 모은 `toRemove`에 추가한다.3. 모든 노드들을 검사한 후, `map`의 노드들에서 `toRemove` 에 있는 노드를 모두 제..
[프로그래머스 - LV2] 이모티콘 할인행사
·
알고리즘
문제 링크- https://school.programmers.co.kr/learn/courses/30/lessons/150368문제카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따..
[OS] CPU 스케쥴링
·
CS
CPU 스케쥴링OS가 프로세스에게 CPU 자원을 배분하는 것ex) 입출력 집중 프로세스의 우선순위가 CPU 집중 프로세스보다 높다"스케쥴링 큐"를 통해 우선순위를 지정할 수 있다.이런 스케쥴링 큐는 준비 큐와 대기 큐로 이뤄져 있다.- 준비 큐(Ready Queue): CPU 이용을 위해 대기 중인 프로세스들- 대기 큐(Wating Queue): 입출력 장치 이용을 위해 대기 중인 프로세스들 선점형과 비선점형 스케쥴링1. 선점형 스케쥴링(Preemptive Scheduling)하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식ex) 라운드 로빈, SRT, 다단계 큐, 다단계 피드백 큐- 비교적 응답이 빠르다는 장점이 ..
[OS] Thread
·
CS
Thread(쓰레드)쓰레드는 프로세스를 구성하는 실행 흐름의 단위하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있다. 실행 흐름이 여러 개라면?실행 흐름이 여러 개인 프로세스(멀티 스레드 프로세스)는 프로세스를 이루는 여러 명령어를 동시에 실행이 가능하다.예를 들어- 한 쓰레드는 웹 페이지를 렌더링- 다른 쓰레드는 파일을 다운로드- 또 다른 쓰레드는 사용자 입력을 처리 쓰레드의 구성요소쓰레드는 독립적으로 실행되기 위해 최소한의 정보를 가지고 있다.쓰레드 ID: 쓰레드를 식별하는 고유 번호프로그램 카운터(PC): 다음에 실행할 명령어의 주소레지스터 값: 쓰레드의 현재 작업 상태스택: 함수 호출과 지역 변수를 저장하는 공간쓰레드마다 각각의 스택 영역과 프로그램 카운터를 가져 각자 실행이 가능해진다.이때 프..
[OS] 프로세스 상태와 계층 구조
·
CS
프로세스 상태생성 상태, 준비 상태, 실행 상태, 대기 상태, 종료 상태 1. 생성 상태이제 막 메모리에 적재되어 PCB를 할당 받은 상태준비 완료 되면 준비 상태가 된다. 2. 준비 상태당장이라도 CPU를 할당받아 실행할 수 있지만, 자신의 차례가 아니라 기다리는 상태자신의 차례가 되면 실행 상태가 된다.- `준비 -> 실행` 상태로 바뀌는 것 = `디스패치` 라고도 함 3. 실행 상태CPU를 할당받아 실행 중인 상태- 할당된 시간 모두 사용 시, 타이머 인터럽트가 발생해 준비 상태로 이동한다.- 실행 도중 입출력 장치를 사용하면, 입출력 작업이 끝날 때까지 대기 상태가 된다. 4. 대기 상태(block state)프로세스가 실행도중 입출력 장치를 사용하는 경우. 입출력 작업이 느려 이 경우 대기 상태..
[OS] 프로세스
·
CS
프로세스(Process)실행 중인 프로그램을 뜻한다.실행 되기 전 프로그램은 그저 보조 기억 장치 속 데이터 덩어리일 뿐 1) 포그라운드 프로세스사용자가 볼 수 있는 공간에서 실행되는 프로세스 2) 백그라운드 프로세스사용자가 볼 수 없는 공간에서 실행되는 프로세스 백그라운드 프로세스는 2가지 종류로 나눌 수 있다.i) 사용자가 직접 상호작용 가능한 백그라운드 프로세스ii) 사용자와 상호작용 하지 않고 그저 정해진 일만 수행하는 프로세스 ex) 데몬(daemon), 서비스 등 PCB(프로세스 제어 블록)프로세스 관련 정보를 저장하는 곳- 프로세스 생성 시 커널 영역에 함께 생상되었다가 종료 시 폐기된다. 모든 프로세스 실행을 위해서는 CPU가 필요하지만, 자원은 한정되어 있다.그래서 프로세스들이 돌아가며..