Home

Smart Pointer

C로 프로그램을 짜다 보면 종종 실수하는 부분이 있습니다. 그건 바로 malloc과 new를 통한 동적 메모리 할당과 짝꿍인 “동적 메모리 해체”니다. 이로 인해 발생하는 메모리 누수 문제입니다. 이를 위해 C++11 이후에 도입된 개념이 바로 Smart Pointer 입니다. 한 번 예시를 봐보겠습니다.

Read more

Preproces, Compile and Linker

오늘 시간에는 프로그램이 컴파일 돼 실행되는 과정을 이야기 해보자 합니다. 그리고 언어 중에서는 제가 사용하는 C와 스터디에서 다른 분들이 많이 사용하실 것같아 Java도 함께 곁들여 진행해보겠습니다. 혹시나 틀린 부분이 있다면 콕콕 집어주시기 바랍니다! 진행은 요 링크에 질문들을 따라가보면서 살을 덧붙여볼게요. 링커와, 로더의 차이에 대해 설명해 주세요. 컴파일 언어와 인터프리터 언어의 차이에 대해 설명해 주세요. JIT(Just-in-time) 에 대해 설명해 주세요. 본인이 사용하는 언어는, 어떤식으로 컴파일 및 실행되는지 설명해 주세요.

Read more

Recipe CMake for Compile

이번에 기업과제에서 코드 환경이 윈도우 Visual studio로 환경이었습니다. 저는 윈도우 환경이 없던 터라 빌드 시스템을 작게나마 만들어 보고자, 이번에는 CMake를 이용한 빌드 시스템에 대해서 정리하는 시간을 가져봤습니다. 더 자세히 알고 싶다면 레퍼런스를 참고하시길 바랍니다.

Read more

CPU and CPU Scheduling

이전 시간까지 프로레서와 스레드, 그리고 동시성에 대해서 이야기했었습니다. 내용 중에 “원하는 연산은 CPU 프로세서로 가서 처리 된다.”라고 자주 CPU라는 녀석이 언급됐었는데, 오늘은 그 CPU, Central Processing Uni와 이 CPU가 명령어를 처리하기 위한 Schedule 에 대해서 다뤄볼까 합니다. 1. What is CPU(Central Processing Unit)?

Read more

Process and Thread

프로세스 vs 쓰레드 vs 코어, 오늘 OS에서 CPU나 I/O로 가서 명령을 처리하는 프로세스와 스레드, 그리고 이들을 처리해주는 코어에 대해서 이야기해보려고 합니다. 특히 빠른 시간내에 많은 양의 작업을 처리하기 위해서는 멀티프로세스와 멀티스레드를 사용하는데요, 이 녀석들은 작업관리자에서 열었을 때 프로세스와 스레드는 많이 볼 수 있죠. 코어는 컴퓨터를 구매하는 경우에 8코어 10코어와 같이 많이 볼 수 있구요(M1 Mac살 때 고민했었던 게 생각나네요). 그런 프로세스랑 스레드, 그리고 코어는 어떻게 다른 걸까요? 차근차근 알아보도록 하겠습니다.

Read more

Clarity Challenge for Speech Enhancement in Hearing aid

A result of Speech Enhancement While developing speech enhancement for embedded devices targeting STM32F746, the chance to join 2023 ICASSP Clarity Challenge for Speech enhancement in hearing aid was coming. In this challenge, it focus on amplificed speech quality using HASPI and HASQI metric, which can assess after processing amplific...

Read more

Git Recipe

처음 소스코드의 버전을 관리하기 시작할 때, 정리해두었던 내용들을 공유해보려고 합니다. git을 이용하며 가장 큰 장점이었던 부분은 “모든 브랜치의 독립성”이었습니다. 여러 Git 계정과 Local 컴퓨터를 사용하며 이 부분을 잘 활용하면, 개인적으로 매우 편리하게 사용할 수 있습니다. 자, 이야기를 시작해보겠습니다.

Read more

Binary Tree

글에 앞서 본 내용은 MIT 6.006 Introduction to Algorithms, Spring 2020 에서 Binary Tree Part 1, Binary Tree Part 2, 그리고 Binary Heaps을 정리해 둔 것을 우선 말씀드립니다. 본 내용이 영어로 궁금하시면 강의를 꼭 들어보시길 추천드립니다. 그리고 강의 전반으로 각 자료구조에 대해 이야기할 때, 항상 문제 → 자료구조의 정의 → 동작원리(build, insert, delete) → 인터페이스로의 이용(Find) → Sorting(가능하다면) 의 순서로 진행되니 참고 바랍니다.

Read more