분류 전체보기 212

2023 정보처리기사 3회 실기 합격 후기 (비전공자 직장인 기준)

3월에 정보처리기사 필기시험을 보고 합격한 뒤, 2번의 낙방 끝에 결국 합격하게 되었다..ㅠ(정처기만 1년 공부함) 실기 합격한지 3달정도 지났는데 늦은 후기를 작성해본다. 난이도 https://namu.wiki/w/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC/%EC%B6%9C%EC%A0%9C%EA%B2%BD%ED%96%A5 정보처리기사/출제경향 - 나무위키 2018년 1회 필기 합격률은 55%, 실기 합격률은 53.8%이다. 업무 프로세스 부분이 지문만 자세히 읽으면 쉽게 풀 수 있는 수준으로 나와서 15점을 거저 먹을 수 있었던게 큰 요인으로 작용한 것이 컸다 namu.wiki 나무위키에 쓴 출제경향처럼 실기는 제대로 하지 않은사람들은 거르겠다는 ..

[python] Stack을 활용한 괄호검사 알고리즘

수식 표기나, 프로그래밍 언어, HTML 문서 등 다양한 분야에서 괄호로 구분문자를 사용한다. 이들은 주로 간단한 데이터나 문자열을 묶어 그룹으로 만들고 그룹으로 끝낸다. 예를 들어 다음과 같은 소스코드가 있을때, array_max.h int find_array_max(int score[], int n) { int i, tmp = score[0]; for (i = 1; i tmp){ tmp = score[i]; } } return tmp; } 해당 프로그램이 정상작동 하려면, 괄호들이 같은 유형들 끼리 쌍을 이루어야 한다. 해당 코드에서 괄호를 검사 시 다음과 같은 조건이 해당되어야 한다. 1. 왼쪽 괄호의 갯수와 오른쪽 괄호 갯수가 같아야 한다. 2. 같은 타입의 괄호에서 왼쪽 괄호가 오른쪽 괄호보다 ..

[python] docker stack + nginx를 이용한 grpc inference 서버 구축

docker swarm 네트워크를 사용하면 각각의 분산된 PC를 하나로 묶을 수 있고, docker swarm의 ingress 네트워크를 사용하여 클러스터를 구축 가능하고, 이를 사용하여 각각 분산된 PC에 docker시스템을 관리 할 수 있다. 특히 ingress네트워크 상에서 docker 시스템 간 로드밸런싱이 가능하여 여러대의 PC에 손쉽게 Inferecne Docker를 구축이 가능하다. 그런데 모든 상황에서 이 로드밸런싱 기능을 사용할 수 있는 건 아니였다. 프로젝트 진행 중, 기존 https 방식의 REST호출을 사용할 때는 분산 로드 밸런싱이 됬지만, GRPC 통신 방식을 사용하면, 로드 밸런싱 기능을 사용할 수 없었다. GRPC 통신을 통해서 로드밸런싱을 하려면 NGINX 프록시 서버로 사..

[Docker] docker service와 fastapi를 활용한 YOLOv5 inference 서버 구축하기(1)

회사 프로젝트 진행 시, Docker는 더이상 선택사항이 아닌, 필수사항인거 같다. 거기에 쿠버네티스나 docker-compose와 같이 Docker들을 관리할 수 있는 시스템은 얹을 뿐..., 분산 시스템 환경에서 대규모 컨테이너를 다룬다면 쿠버네티스가 최적의 선택지 이지만, 설치 뿐 아니라 관리가 만만치 않다는 단점이 있다. 그에 반해 docker swarm을 기반한 docker service을 이용한다면 쿠버네티스보다는 유연성은 떨어지지만, 관리 및 구현 난이도가 상대적으로 간단하기 때문에 대규모 시스템이 아니면 충분히 매력적인 선택지 이다. 이번 프로젝트에서 YOLOV5 서버를 구축하는 역할을 맡았다. inference를 사용할 inference.py를 작성하고 (yolov5의 detect.py에..

[Docker] docker swarm gpu할당

단일 nvidia docker로 docker 내부에서 nvidia gpu 사용시 --gpus all(또는 번호) 명령어를 붙여주면 gpu 사용이 가능하다. docker run -it --gpus all {image}:{tag} nvidia-smi 그런데 docker swarm에는 --gpus all처럼 gpu를 할당하는 명령어가 없다. swarm에서 gpu할당하여 docker service를 올려야 했기 때문에 docker swarm에 gpu를 할당하는 방법들을 찾아보았다. OS : ubnutu 18.04 설치 : docker, nvidia-docker 두가지 설치 된 상태 https://gist.github.com/tomlankhorst/33da3c4b9edbde5c83fc1244f010815c Ins..

yolo-nas 학습하기[Python]

https://www.youtube.com/watch?v=V-H3eoPUnA8 2023년 초 roboflow에서 출시한 yolov5의 후속작 yolov8과 Object Detection분야에서 다시 SOTA를 찍은 yolov6 두가지를 정확도와 속도에서 더 좋은 결과를 보여주는 yolo-nas를 학습하는 방법을 공부해 보았다. https://www.youtube.com/watch?v=91p2SkSuZkc 환경은 코랩에서 진행했다. https://colab.research.google.com/drive/1yHrHkUR1X2u2FjjvNMfUbSXTkUul6o1P?usp=sharing DeciYoloCustomDatasetQAFineTuning.ipynb Colaboratory notebook colab.r..

[python] 백준 5597번 과제 안 내신 분..?

https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net 풀이 student = [i+1 for i in range(30)] for _ in range(28): n = int(input()) student.remove(n) student.sort() for i in student: print(i)

[kafka] ubuntu22.04 kafka 설치

설치방법 JDK version 11 설치 아파치 카프카 다운로드 리눅스에서 컨텐츠 추출 kafka 관리 플랫폼 컨덕터에서 제공해주는 설치방법을 참고하였다. https://www.conduktor.io/kafka/how-to-install-apache-kafka-on-linux/ https://www.conduktor.io/kafka/how-to-install-apache-kafka-on-linux/ www.conduktor.io Installing Java JDK 11 https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html Downloads for Amazon Corretto 11 - Amazon Corretto Tha..

[백준] 10813번: 공 바꾸기

https://www.acmicpc.net/problem/10813 10813번: 공 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 www.acmicpc.net N, M = map(int, input().split()) n_list = [i for i in range(1,N+1)] for _ in range(M): i, j = map(int, input().split()) ival, jval = n_list[i-1], n_list[j-1] n_list[i-1] = jval n_list[j-1] = ival for i in n_list: print(i, en..

[Python] 람다 표현식 사용하기

람다 표현식 : 익명함수를 통해 다른 함수의 인수를 넣을 때 사용합니다. def puls_ten(x): return x + 10 puls_ten(1) 해당 함수를 람다식으로 작성 lambda x: x + 10 해당 방법으로는 함수를 호출이 불가함 따라서, 람다식에 변수를 할당해주어야 합니다. puls_ten = lambda x: x + 10 puls_ten(1) 람다식 자체를 호출하려면 괄호로 묶어주면 됩니다. (lambda x: x + 10)(1) 람다의 표현식 안에는 새변수를 만들 수 없으며, 반환값 부분은 변수 없이 식 한줄로 표현 해야 합니다. 단, 람다 표현식 바깥에 있는 변수는 사용이 가능합니다. ## 매개변수 x와 람다 표현식 바깥에 있는 변수 y를 더해 반환 y=10 (lambda x: x..