본문 바로가기
728x90

HOOAI749

[Error Code] Docker Errors: Incompatible CPU detected Docker Errors: Incompatible CPU detected # Incompatible CPU detected 이 놈의 맥은 친해질 뻔하면 한 번씩 튕겨주는 자식이다. 맥을 쓰는 개발자 브로들 중에서도 새로 나온 애플 M칩이 내장되어 있는 맥북의 경우 Docker를 사용하려고 할 때 아래와 같은 에러 메시지가 뜰 수 있다. 해당 도커를 리셋하더라도 문제가 지속적으로 발생한다면 도커를 새로 설치해줘야 한다. 기존 도커 버전과 새로 나온 M칩 버전들이 충돌이 발생해서 이러한 오류가 나타나기 때문에 새로운 도커를 공식 사이트에서 다운로드해 주고 재설치를 해주면 문제를 손쉽게 해결할 수 있다. 여기서 유의할 점이 Docker errors에 대한 문제점들을 인터넷에서 찾다보면 BIOS 문제라면서 세팅.. 2023. 12. 4.
[C Examples] 버블 정렬 (Bubble sort)을 활용해서 티켓 추첨하기 버블 정렬 (Bubble sort)을 활용해서 티켓 추첨하기 포스트 난이도: HOO_Junior # Example Code 이번 포스트에서는 버블 정렬 (Bubble sort)를 다루는 예제코드를 살펴볼 수 있다. 기본적으로 알고 있어야 하고 처음으로 가장 많이 접하는 버블 정렬의 경우 그만큼 사용할 수 있는 방법과 기회가 많다. 따라서 버블 정렬을 어떻게 구현해서 C에서 어떻게 사용하는지를 해당 코드를 통해서 살펴볼 수 있다. 코드에서 산출하고자 하는 내용은 단순하고 많이 봐온 티켓 추첨에 대한 내용이다. 따라서 버블 정렬이 어떻게 코드 내에서 활용되고 있는지를 쉽게 확인할 수 있다. 이러한 주요 functions들의 경우, 다른 프로그래밍 언어에서도 작성 방식만 다르지 동일하게 사용이 되기 때문에 다.. 2023. 12. 4.
[카카오 같이가치] 교사가 꿈인 고등학교 3학년 수아야 힘내! # 카카오같이가치 안녕하세요 HOOAI 블로그를 운영하고 있는 HOO입니다. 바쁜 일정 속에 2023년이 정말 빠르게 지나가 버렸네요. 아무쪼록 우리 개발자 브로들도 다들 좋은 2023년을 보내셨기를 바랍니다. 블로그를 운영하면서 발생하는 광고 수익금을 토대로 카카오같이가치를 통해 우리나라 청소년들을 돕고자 시작했던 저의 작은 프로젝트가 이루어지는게 쉽지 않습니다. 사비를 털어 기부를 정기적으로 하려고 하다보니 금액이 매번 크지 않아 청소년들에게 미안할 따름입니다. 그래도 십시일반 도움이 되어 학생, 청소년들에게 도움이 되기를 기원합니다. 이번에 카카오같이가치를 하게된 이유는 교사의 꿈을 가지고 있는 고등학교 3학년 수아에게 힘이 되기를 바라는 마음이었습니다. 고등학교 3학년이라는 시기에 공부하고 투정부.. 2023. 12. 4.
[Blockchain] 블록체인(Blockchain)에서 해시(Hash)란? 블록체인(Blockchain)에서 해시(Hash)란? 포스트 난이도: HOO_Junior # Hash 우리가 해시 (Hash)에 대해서 알아보기 위해 검색을 해보면 "해시 함수는 임의 길이의 입력값을 받아 고정된 길이의 출력값을 생성하는 함수"라는 문장으로 시작되며 해시를 소개하는 많은 글들을 살펴볼 수 있다. 해시에 대해서 다뤄본 적이 있거나 이미 알고 있다면 해당 문장이 무슨 의미를 나타내는지 한 번에 이해할 수 있지만 처음 해시에 대해서 알아보고자 하는 브로들에게는 여기서 블록체인에 대한 흥미를 떨어지게 만들 수 있다. 한마디로 압축적으로 한 문장 안에서 해시에 대한 설명을 하려고 하니 무슨 말인지 이해가 잘 되지 않는다. (사실 글쓴이가 논문을 쓸 때마다 실수하는 부분 중 하나다.) 해시에 대해서.. 2023. 12. 3.
[C Examples] Struct과 포인터를 활용해서 입력한 점수 저장하고 출력하기: struct, pointer Struct과 포인터를 활용해서 입력한 점수 저장하고 출력하기 포스트 난이도: HOO_Intern # Example Code 이번 예제코드에서는 Struct과 Pointer를 활용해서 사용자가 입력한 점수를 저장하고 다시 출력하면서 평균값을 산출해 낼 수 있다. 코드의 내용 자체는 매우 간단하기에 이번 예제코드에서 중점적으로 봐야 하는 부분은 Struct과 포인터가 어떻게 사용되는지이다. 코드 자체에서 하고자 하는 프로세스 자체가 간단하기 때문에 각 함수의 역할들을 이해하기 수월하다. #include #include struct node { float value; struct node* next; }; struct node* head = NULL; void displayList() { struct nod.. 2023. 12. 1.
[C Example Code] queue를 활용한 환자의 우선 순위 나타내기: malloc(), queue, struct, point, void() queue를 활용한 환자의 우선순위 나타내기: malloc(), queue, struct, point, void() 포스트 난이도: HOO_Junior # Queue, Enqueue, Dequeue 이번 예제코드에서는 Queue (큐)를 활용한 우선순위를 나타내고 변경하는 결과를 살펴볼 수 있다. 예제코드 포스트이다 보니 큐에 대해서 이미 알고 있겠지만 간단히 Wrap-up 하자면 큐는 First in first out, 즉 FIFO 원칙을 따르는 데이터 구조이다. 따라서 큐에 추가 된 첫 번째 요소가 가장 먼저 제거되는 것을 의미한다. 해당 예제코드를 살펴보면 큐에 입력된 값을 변경하여 우선순위를 변경해 줄 수 있는데 이 부분이 기존의 값이 삭제되고 새로운 값이 추가된다고 볼 수 있다. 큐에는 Enq.. 2023. 11. 29.
[C Examples] 출력되는 문장 거꾸로 뒤집기: void printReverse(), sizeof(), if() 출력되는 문장 거꾸로 뒤집기: void printReverse(), sizeof(), if() 포스트 난이도: HOO_Intern # Example Code 이번 예제코드에서는 void function을 사용해서 printReverse라는 recursive function을 만들어준 뒤에 출력되는 문장을 거꾸로 뒤집어줄 수 있다. Recursive는 프로그래밍에서 많이 사용하는 간단한 기능이기 때문에 어떻게 구현하는지를 정확히 이해하고 가는 것이 중요하다. 처음에는 다소 어려워 보이지만 "반복"에 초점을 두고 코드를 살펴보면 이해하는데 어렵지 않을 것이다. 아래의 예제코드에서는 void function 안의 printReverse() function이 어떻게 작성되어 적용되는지를 보는 것이 가장 중요하다.. 2023. 11. 28.
[Blockchain] 블록체인 DID (Blockchain Decentralized Identifiers) 블록체인 DID (Blockchain Decentralized Identifiers) 포스트 난이도: HOO_Middle # Decentralized Identifiers 블록체인의 여러 기능 중에 참여자가 많은 시스템 또는 플랫폼에서 데이터에 대한 위변조를 방지하고 데이터의 소유권을 명확하게 하기 위해서 사용되는 기능이 바로 Decntralized Identifiers (DID)이다. DID는 한국말로 탈중앙화 신원증명이라고 직번역되어 부르다 보니 용어만 보고 이해하는데 다소 어려움을 느낄 수 있다. 예를 들어 탈중앙화 신원증명이라고 한다면 마치 각 참여자에 대한 신원의 위변조를 막고자 DID를 사용한다고 볼 수 있는데, 이는 DID에 대한 기능을 모두 나타내지는 않는다. DID를 통해서 각 사용자의 .. 2023. 11. 26.
[Computer Vision Examples] Convert PyTorch: pt to onnx Convert PyTorch: pt to onnx 포스트 난이도: HOO_Senior # pt to onnx 아래는 onnx로 전환하는 예제코드이다. Colab이나 Notebook에서 작업할 수 있고 vscode에서도 notebook이 있으면 가능하다. 사용 조건에 맞춰서 조정해서 사용하면 된다. !pip install ultralytics onnx onnx-simplifier onnxruntime from ultralytics import YOLO model = YOLO("model_name.pt") model.export(format="onnx",imgsz=[640,640], opset=12) # export the model to ONNX format 2023. 11. 15.
[Computer Vision] YOLO랑 Fast R-CNN을 합쳐보았습니다. YOLO랑 Fast R-CNN을 합쳐보았습니다. 포스트 난이도: HOO_Senior # YOLO, 2015 Computer vision을 다루는 브로들이라면 2015년에 처음 나온 YOLO (욜로) 페이퍼를 최소 한번 정도는 읽어봤을 것이다. 물론 현재 버전의 욜로와 차이가 많이 있지만 욜로의 근본적인 구조는 동일한 방식으로 Detecting이 되기 때문에 꼭 한번 정도는 읽어보는 것을 추천한다. 글쓴이의 주관적인 견해뿐만 아니라 객관적으로도 4만 번 이상 cited가 된 페이퍼이기 때문에 충분히 입증되었다. Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conf.. 2023. 11. 15.
[Error Code] RuntimeError: Dataset 'data.yaml' error RuntimeError: Dataset 'data.yaml' error # RuntimeError, 데이터셋 경로를 찾지 못할 때 모델링에 학습할 데이터셋을 만들고 해당 데이터셋에 대한 경로를 입력해서 학습을 시키려고 하는데 에러가 발생하는 경우가 있다. yaml 파일 안에 각 학습할 데이터셋의 경로를 제대로 지정해 두었는데도 불구하고 지속적으로 RuntimeError가 뜨면서 경로를 찾을 수 없다고 나온다면 미치고 팔짝 뛸 노릇이다. 글쓴이가 개인적으로 싫어하는 에러코드가 바로 간단하면서 분명히 문제가 없는데 문제가 있다고 할 때이다. 어렵거나 코드 안에 에러가 있으면 찾아서 고쳐나가면 되지만 이렇게 경로가 문제가 없는데 갑자기 안된다고 하면 스트레스를 받는다. 따라서 이번 에러코드 포스트에서는 데이터.. 2023. 11. 14.
[Python] Random Seed(랜덤 시드) Random Seed(랜덤 시드) 포스트 난이도: HOO_Middle # Random seed Random seeds(랜덤시드)는 한국에서 난수 생성기라고도 부르며, 랜덤 한 값을 생성해 낸다. 랜덤 한 값을 생성해 낸다고 해서 마치 무작위 시드 값을 생성하는 것 같지만 반은 맞고 반은 틀린 말이다. 임의의 값을 랜덤 하게 생성해 낸다는 점에서는 맞지만 한번 정해진 시드 값은 다음 랜덤시드에서도 동일하게 산출된다. 따라서 랜덤 시드란 랜덤하게 컴퓨터가 시드 값을 정하는 걸 의미하며 랜덤 하게 시드 값이 계속 바뀌는 걸 의미하지는 않는다. 또한 랜덤 시드값은 사실 무작위로 정해지는 것도 아니다. 인간은 뇌에서 무작위 숫자를 선택해서 결정할 수 있지만 컴퓨터는 자율적으로 생각해서 랜덤 한 숫자를 선택하지 못.. 2023. 11. 10.
[Computer Vision] Object Detection Systems: YOLO (욜로) Object Detection Systems: YOLO (욜로) 포스트 난이도: HOO_Senior # Introduction 이번 포스트는 YOLO(욜로)에 대한 전반적인 내용을 담고 있다. 특히 욜로의 첫 번째 버전이 나오던 시점의 2015년을 기준으로 욜로가 왜 나오게 되었는지, 욜로와 다른 Object detection systems들의 차이가 무엇인지에 대해서 살펴보았다. YOLO와 Object detection systmes에 대한 배경 지식이 있으면서 구체적으로 어떤 차이와 욜로만이 가진 특징이 무엇이었는지를 살펴보고 싶다면 해당 포스트를 참고하는 게 도움이 되는 부분들이 있을 수도 있으니, 가볍게 읽어보기에 좋다고 본다. (여담으로 포스트 작성과 더불어 연구 발표를 하면서 글쓴이의 성과와 .. 2023. 11. 10.
[C Examples] Stack을 활용해서 Stack 값 바꿔보기, Dynamic stack Stack을 활용해서 Stack 값 바꿔보기, Dynamic stack 포스트 난이도: HOO_Junior # Example Code 1 이번 포스트에서는 C언어의 Stack (스택) 값을 바꿔보는 예제코드를 통해 스택에 대해서 보다 더 익숙해질 수 있다. 특히 이번 예제코드에서는 동적 배열 또는 동적 스택이라고 불리는 Dynamic stack에 대해서 살펴볼 수 있다. 아래의 예제코드 1을 보면 Lottery 숫자가 스택으로 주어져있는 상황에서 사용자가 임의의 7자리 숫자를 입력하고 난 뒤에 중간 스택에 새로운 값이 추가되는 걸 확인할 수 있다. 이때 예제코드 1에서는 중간 배열의 스택이 지속적으로 추가가 되어 처음 스택보다 스택의 값이 증가하는 걸 알 수 있다. 반면에 예제코드 2에서는 중간에 새롭게.. 2023. 11. 9.
[Computer Vision] R-CNN vs Fast R-CNN vs YOLO R-CNN vs Fast R-CNN vs YOLO 포스트 난이도: HOO_Senior # Object detection algorithms 현재 기준으로 Object detection의 세 가지 주요 알고리즘을 뽑으라고 한다면 R-CNN, Fast R-CNN 그리고 YOLO를 말할 수 있다. 사실상 Object detection에 있어서 가장 많이 사용되고 있으며 그중에서도 개인적으로 가장 선호하는 YOLO의 경우는 v8 버전이 새롭게 나오면서 그동안의 문제점으로 이야기해 온 작은 사이즈의 그리드 구분이 점차적으로 해결되고 있다. 그럼에도 우리는 Object detection을 다룰 때 세 가지 알고리즘을 모두 다 고려하여 머신러닝을 돌리고 있다. 그 이유인즉슨 각 알고리즘의 장단점이 각기 다르기 때문이.. 2023. 10. 31.
[C Examples] Recursive power function: 제곱근 계산기 Recursive power function: 제곱근 계산기 포스트 난이도: HOO_Intern # subTitle 이번 포스트에서는 반복문을 사용하지 않고 Recursive를 활용해서 제곱근을 계산해 주는 power function에 대한 예제를 살펴볼 수 있다. 아래의 예제코드를 보면 float type의 power라는 사용자 정의 함수가 작성이 되어 있는 걸 알 수 있다. 해당 블록을 살펴보면 if statement를 사용하여 반복할 조건과 아닐 조건을 설정해 줄 수 있다. 아래의 코드에서는 exponent가 0으로 더 이상 없을 경우 끝이 나고 else문에서는 exponent가 1씩 줄어들면서 base 값에 곱해지는 반복적인 recrusive case를 살펴볼 수 있다. 이처럼 자주 사용하는 기능.. 2023. 10. 30.
[Error Codes] IndentationError: unexpected indent IndentationError: unexpected indent # IndentationError: unexpected indent Indentation error의 경우는 파이썬에서 종종 나타나는 에러로써 들여 쓰기를 잘못해서 나타나는 간단하지만 짜증 나는 에러이다. 파이썬은 다른 프로그래밍 언어들처럼 브래킷이라고 불리는 괄호를 함수마다 사용하지 않고 있기 때문에 들여 쓰기가 그 역할을 대신해주고 있다. 편리한 반면에 가끔씩 들여 쓰기가 잘못되어 있을 때 긴 코드를 하나하나 살펴야 돼서 귀찮기도 하다. 그래도 신경을 많이 써야 하는 에러와 달리 들여 쓰기만 고쳐주면 되기 때문에 간단하게 수정이 가능하다. 아래의 Figure 1을 보면 들여 쓰기 에러가 어떻게 나타나는지 알 수 있다. 해당 라인의 코드의.. 2023. 10. 29.
[Computer Vision] Data Augmentation (데이터 증강) Data Augmentation (데이터 증강) 포스트 난이도: HOO_Senior # Data augmentation이란 무엇인가요? 한국말로 데이터 증강이라고 불리는 Data augmentation은 쉽게 말해서 부족한 데이터 수를 반강제적으로 늘려주는 역할을 의미한다. 우리가 일반적으로 테스트 데이터가 부족하면 학습데이터에서 가져오지만 학습 데이터 자체가 부족해지면 결국 데이터를 더 수집하고 가공해줘야 한다. 이럴 때 데이터를 새롭게 수집하는 게 가장 기본적인 방법이지만 현실적으로 원시 데이터의 추가적인 수집과 가공 과정 자체가 어려울 수 있다. 이런 경우 우리는 Data augmentation 통해 데이터의 수를 마치 원래부터 많았던 것처럼 늘려주는 것이다. Data augmentation를 반강.. 2023. 10. 28.
[Data Science] 엑셀에서 데이터 분석하기 (Data Analysis on Excel) 엑셀에서 데이터 분석하기 (Data Analysis on Excel) 포스트 난이도: HOO_Middle # Data analysis 글쓴이 이전 세대의 데이터 분석가라면 당연히 엑셀을 다룰 줄 알아야 했고 엑셀만 잘 다뤄도 6 digits 연봉을 받을 수 있었다. 지금도 엑셀로 간단한 데이터 분석과 통계 작업이 가능하지만 워낙 파이썬이나 R과 같이 작업할 수 있는 방법들이 다양해지고 편리하게 제공되다 보니 엑셀이 점점 등한시되고 있다. 그럼에도 데이터를 다루는 데이터 관련 개발자뿐만 아니라 모델링을 하는 엔지니어라면 엑셀 데이터 분석 기능 정도는 기본적으로 잘 다룰 수 있어야 한다. 이 포스트를 읽는 브로들의 경우에는 이미 데이터 사이언스 분야에 대한 지식이 있다는 가정하에 기능적인 방법에 대해서만 간.. 2023. 10. 26.
[Computer Vision] 공개형 학습 데이터셋: 로보플로우 (Roboflow) 퍼블릭 학습 데이터셋: 로보플로우 (Roboflow) 포스트 난이도: HOO_Middle # 로보플로우(Roboflow) 욜로 (YOLO)를 다뤄본 적이 있는 브로라면 로보플로우 (Roboflow)에 대해서 많이 들어봤을 것이고 실제로 기본 예제로 제공해 주는 coco 라이브러리라든지 로보플로우에서 공개되어 있는 데이터셋을 사용해 본 적이 있을 것이다. 로보플로우는 컴퓨터 비전(Computer vision)의 개발과 데이터의 관리에 있어서 편리성을 제공해 주는 도구이자 하나의 데이터셋 플랫폼이다. 이미지 데이터 작업을 하는 데 있어서 기본적인 데이터셋을 제공해 줄 뿐만 아니라 라벨링 작업을 하는 것도 아이콘화된 도구들을 활용해서 쉽게 데이터 가공이 가능하다. 무엇보다 글쓴이가 좋아하는 부분은 사용할 개발.. 2023. 10. 25.
[Q&A] 유학을 가지 않고 미국 개발자 취업이 가능할까요? 유학을 가지 않고 미국 개발자 취업이 가능할까요? # 한국 학부생의 미국 개발자 취업 CS, CE 전공자이면서 미국 개발자로 취업을 희망하는 브로들이 많이 하는 고민 중 하나가 유학이다. 이미 한국 대학교에서 학부생으로서 지내고 있으면서 편입 유학이나 아니면 신입학을 조건으로 유학을 알아보다가도 두려움과 걱정에 고민을 하고 있었다. 왜냐하면 국내 학부 졸업에 비해서 미국에서 개발자로 취업하기가 미국 대학교 졸업을 하는 것으 유리하다는 걸 알고 있지만 막상 그만큼의 시간과 돈, 노력을 등을 투자해야 한다는 것이 결정하는데 쉽지 않기 때문이다. 그렇다 보니 미국 개발자를 꿈꾸는 국내 학부 졸업생 브로들이 가장 많이 하는 질문 중에 하나가 미국 대학교를 나오지 않고도 미국 개발자로 취업이 될 수 있냐는 것이었.. 2023. 10. 22.
[카카오 같이가치] 민영이의 꿈을 응원합니다! 민영이의 꿈을 응원합니다! # 카카오 같이 가치 안녕하세요, HOOAI 블로그를 운영하고 있는 HOO입니다. 정기적으로 청소년들의 꿈을 위해서 작은 도움이라도 주고자 블로그 운영과 더불어 카카오 같이가치를 시작하게 되었습니다. 선순환 구조를 만들고자 광고 배너 수입을 기부로 이어지게 하는게 목표였지만 제 역량 부족으로 광고 배너 수입이 많지 않다보니, 정기적 기부가 어려워 안타까울 따름입니다. 그래서 광고 수입이 부족할 경우 사비를 통해서 적은 돈이지만 카카오 같이가치를 지속적으로 해보려고 노력하고 있습니다. 청소년 친구들에게는 많은 돈을 보태주지 못해 미안하지만 도움이 되기를 바랄 뿐입니다. 여러분도 관심이 있다면 아래의 링크를 통해 민영이를 도와줄 수 있습니다. 감사합니다. https://togeth.. 2023. 10. 20.
[미국 박사] 연구 제안서 (Research Proposals)에 꼭 들어가야하는 요소들 연구 제안서 (Research Proposals)에 꼭 들어가야 하는 요소들 # 연구 제안서 (Research Proposals) Research proposals이라고 부르는 연구 제안서 또는 프로포절은 박사생들이라면 한번 정도는 꼭 써보게 된다. 왜냐하면 본인 졸업 연구 논문에 해당하는 제안서를 작성하기 때문이다. 이 외에도 교수님이나 다른 박사생들과의 연구를 하다 보면 연구 제안서를 작성하는 경우가 종종 있다. 그렇다 보니 미국 박사를 하기 희망한다면 기본적으로 제안서를 어떻게 작성해야 하는지를 알고 있어야 한다. 이번 포스트에서는 졸업 연구 논문 제안서에 대한 가이드라인이라기보다는 기본적으로 연구 제안서를 작성하는 데 무엇이 필요한 지에 대해서 이야기를 나눠볼까 한다. 연구 제안서 중에서도 1~2.. 2023. 10. 17.
[HOOTips] 멘토링 문의는 여기에 해주세요. 멘토링 문의는 여기에 해주세요. # 질문은 댓글로 남겨주시거나 디스코드로 연락 주세요 포스트와 관련된 질문의 경우에는 각 포스트마다 댓글 작성이 가능하지만 이 외의 질문 사항이 있을 경우 소통이 어렵다는 이야기가 나와 별도로 소통할 수 있는 포스트를 작성하게 되었습니다. 해당 포스트는 포스트 외 적으로 질문이나 이야기를 나누고 싶은 부분이 있다면 댓글로 작성해 주시면 감사하겠습니다. 댓글은 비밀댓글로 작성이 가능하며, 확인한 댓글은 주기적으로 삭제됩니다. 추가적으로 궁금한 사항이 있거나 질문하실 내용이 길다고 생각하신다면 이 포스트 하단에 비밀 댓글로 디스코드 아이디를 알려주시면 감사하겠습니다. 이후에 제가 댓글로 제 디스코드 계정을 공유하거나 디스코드를 통해서 연락을 드리도록 하겠습니다. 또한 디스코드.. 2023. 10. 14.
[AI & ML Examples] Computer Vision Calibration: Normalized Points 예제코드 Computer Vision Calibration: Normalized Points 예제코드 포스트 난이도: HOO_Senior # Example Code 이번 포스트에서는 Computer vision에서 Normalized points에 대한 값을 구하기 위해서 Calibration이 어떻게 이루어지는지 살펴볼 수 있다. 아래의 예제코드를 보면 2 dimensional과 3 dimensional에 해당하는 포인트 값들이 homogeneous과정을 거치고 svd를 통해서 Normalized point에 대한 "M" 값이 구해지는 과정을 볼 수 있다. 여기서 꼭 svd function 말고도 lstsq () funciton을 사용해서도 Normalized 된 M을 산출해 낼 수 있다. 또한 산출된 resi.. 2023. 10. 13.
[C++ Example] 포인터(Pointer)를 활용한 간단한 배열 값의 증가 예제코드 포인터(Pointer)를 활용한 간단한 배열 값의 증가 예제코드 포스트 난이도: HOO_Intern # Example Code 이번 포스트에서는 포인터의 가장 기본적인 기능을 활용하여 배열의 elements들이 증가하는 것을 살펴볼 수 있다. 우선 void function을 사용해서 addNum()과 display()라는 기능을 만들어준다. addNum은 배열 안의 값, 즉 원소들을 증가시켜 주는 역할을 수행하고 display() 기능에서는 포인터를 활용해서 변화된 배열 원소들을 출력해 주는 역할을 수행한다. 여기서 addNum을 통해서 배열 안의 원소 값을 증가시킬 수 있는 범위를 지정할 수 있고 display()에서는 원하는 배열 원소까지 만을 출력할 수 있도록 설정이 가능하다. Figure1의 첫번.. 2023. 10. 13.
[C Examples] Stack push(), pop()을 활용해서 stack overflow와 underflow을 살펴보는 예제코드 Stack push(), pop()을 활용해서 stack overflow와 underflow을 살펴보는 예제코드 포스트 난이도: HOO_Junior # Example Code 이번 포스트에서는 push()와 pop() 기능들을 살펴보면서 Stack에 대해서 복습해 볼 수 있다. 이전 예제코드에서 다뤘던 Struct, 구조체와 더불어 이번 코드에서는 Stack에서 사용되는 기본적인 기능들을 통해서 Stack의 overflow와 underflow가 어떻게 이루어지는 지를 살펴볼 수 있다. 코드가 점차적으로 길어지고 기능들을 추가되다 보니, 어려울 수도 있겠지만 나눠서 살펴보면 이해하기가 훨씬 수월하다. 각 기능들이 어떻게 작동하고 해당 예제코드에서 어떤 역할을 수행하는지를 우선적으로 이해해 보는 게 좋다. .. 2023. 10. 13.
[Data Science] 데이터 캘리브레이션 (Data Calibration) 데이터 캘리브레이션 (Data Calibration) 포스트 난이도: HOO_Middle # Data calibration 데이터 교정이라고도 불리는 Data calibration은 데이터를 다루는 대부분의 분야에서 한번 정도는 들어본 적이 있을 것이다. 캘리브레이션에 대한 의미를 찾아보면 "교정"이라는 뜻을 가지고 있고 하드웨어 쪽에서는 오차를 교정하는 과정을 캘리브레이션이라고 부르기도 한다. 데이터 사이언스 (Data science)에서도 결과를 교정한다는 점에서 비슷한 의미를 가졌지만 사실상 "표준화"에 더 가까운 의미를 가지고 있는 것이 데이터 사이언스에서의 캘리브레이션이다. 따라서 데이터 사이언티스트에게는 데이터를 어떻게 캘리브레이션에서 표준화하여 생성 및 수집해 내는지도 정말 중요한 요소 중에.. 2023. 10. 12.
[C Examples] Struct를 활용하여 특정 위치의 값을 출력하거나 출력하는 순서를 바꿔보기 Struct를 활용하여 특정 위치의 값을 출력하거나 출력하는 순서를 바꿔보기 포스트 난이도: HOO_Junior # Example codes C언어에서 구조체라고 부르는 Struct은 Pointer와 함께 사용되는 편리한 기능 중 하나이다. 아마 C언어를 배우기 전에 다른 프로그래밍 언어를 배워본 적이 없거나 이제 막 전공자로서 공부를 시작했다면, 이 부분을 익히는 게 다소 어렵게 느껴질 수 있다. 하지만 모든 프로그래밍 언어가 그렇듯이 사람을 위한 언어이다 보니, 기계어를 익히는 것보다 훨씬 쉽다고 긍정적으로 생각하면서 차근차근 보면 생각보다 어렵지 않은 개념이다. Struct은 마치 글에서 "서식"과 비슷한 역할을 수행하는데, 반복적으로 사용되는 구조를 특정화하여 매번 선언하고 정의할 필요없이 쉽게 .. 2023. 10. 11.
[AI / Computer Vision] Singular Value Decomposition (SVD) Singular Value Decomposition (SVD) 포스트 난이도: HOO_Middle # Computer vision에서의 SVD Computer vision에서의 Singular Value Decomposition (SVD)는 결과를 산출해 내기 위한 기본적인 매트릭스 계산 방법이다. 눈으로 보이는 물체를 우리는 이미지나 영상으로 담아냈고 이것을 컴퓨터가 분석하거나 인지하게 만들기 위해서는 픽셀 단위로 살펴봐야 한다. 이때 엄청난 픽셀의 수를 계산하고 분석하는 데 있어 간단하게 만들어줄 수 있는 아주 기초적인 방법이 바로 SVD인 셈이다. 그래서 우리는 SVD를 통해서 Data reduction, Fast fourier transform, Tailored에서 발생되는 특정 문제들을 해결할 .. 2023. 10. 9.
728x90