Computer Science

Computer Science/C#

WPF 클래스 (class) 개요

WPF framework 를 배우기 시작한 사람이라면 먼저 class 구조를 파악해보자. 각 class 는 다음과 같은 특징이 있다. Object : .NET 의 모든 class 의 가장 base class 이다. WPF 에만 한정되지 않는다.DispatcherObject : WPF class 는 대부분 DispatcherObject 의 자식 class 이다. DispatcherObject 는 thread에 관련한 작업을 하며, 자식 class 들은 thread 를 사용할 수 있게 된다.DependencyObject : WPF의 Dependency Property 를 지원하는 class 들은 DependencyObject 을 상속받아야 한다.Freezable : Freezable class를 상속 받으면..

Computer Science/C#

WPF Thread 내부 원리

본 글은 https://learn.microsoft.com/en-us/dotnet/desktop/wpf/advanced/threading-model?view=netframeworkdesktop-4.8&viewFallbackFrom=netdesktop-8.0 에 나온 WPF의 Thread에 관해서 정리한 글입니다. 개요WPF는 개발자의 편의를 위해 Thread 를 직접 사용하는 수고를 덜어준다. 사실은 거의 사용하지 않아도 된다! 그래서 WPF개발자들은 여러 개의 Thread 를 사용해야 하는 복잡함을 잘 겪지 않지만, 결국에는 하나의 Thread로는 한계가 발생할 수 있다. 이 글에서는, 비동기 호출을 위해서 'InvokeAsync' 매써드를 다룬다. 'InvokeAsync' 매써드는 'Action' 과..

Computer Science/C++

CMake Shared Lib Linker

... 생략 add_library(mylib SHARED src/mylib.c src/buffers.c ) set_target_properties(mylib PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} PUBLIC_HEADER api/mylib.h ) target_include_directories(mylib PRIVATE .) install(TARGETS mylib LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES ${CMAKE_BINARY_DIR}/mylib.pc D..

Computer Science

Terminal vs Console vs Shell 개념 정리 (터미널 vs 콘솔 vs 쉘)

이 글에서 언급하는 terminal은 Linux-based 시스템입니다. (mac OS 포함) Telegraph 기계의 진화 전쟁 당시 소통을 위해 Telegraph라는 기계를 통해서 원격으로 정보를 전달하였다. 전쟁 이후에도 Telegraph 기계는 사용되었고, 더 빠르고 좋은 기계가 탄생한다. Teleprinter 의 등장으로 키보드가 달렸고, ASCII Code 등 text를 encoding 하는 방식이 등장한다. (현재는 동양 언어 (한자, 한국어, 일본어 등) 을 지원하기 위해 Unicode 가 가장 대중적으로 사용된다) 컴퓨터와 TTY Linux 운영체제를 공부하거나 /dev 에서 'ls' command를 shell에 입력하면 'tty'를 볼 수 있다. tty는 Teletype의 약자로 Tel..

Computer Science/C++

알기 쉬운 CMake 개념 정리 및 구조 파악. CMake 튜토리얼 (Tutorial)

본 글의 목적은 개인 정리이므로 100 % 정확한 내용은 아닐 수 있습니다. CMake 설치 CMake는 Cygwin, Debian, FreeBSD, Mac OS X 등 Unix 기반 OS distribution에는 자동으로 package manager로 설치되어 있을 확률이 높다. Windows는 cmake-gui 설치를 권장하며 source에서 binary installation도 가능하니 cmake 웹사이트를 참고하면 된다. 왜 CMake? CMake의 매력은 Cross-Compiling을 쉽고 간편하게 하는 데에 있다고 생각한다. 현재에 IT 생태계는 운영체제 Windows, Mac OS, iOS, Android 등 방대하고 Software를 각 운영체제에 맞춰서 설계하는 것은 쉽지 않다. 이를 ..

Computer Science/C#

C# Net Framework 역사 및 개념 정리 (C#, DotNet 구조 파악)

Object Orientation - 객체 지향 C#은 객체 지향성을 가진 언어로, 함수형 프로그래밍(함수를 객체처럼 사용 가능)도 가능하다. 다형성, 상속, 캡술화가 가능한 쓸모가 많은 Microsoft가 지원하는 훌륭한 프로그래밍 언어이다. Microsoft가 지원하는 부분이 많으며 Cross-Platform으로 다양한 기기에 배포될 수 있는 앱을 만들 수 있고, Web Backend 및 서버에서도 사용 가능하다. Type Safety - 타입 안전성 Runtime이 아닌 Compile Time에 type을 체크하는 언어이다. 조금 더 안전하다! Memory Management - 메모리 자동 관리 자동 메모리 관리를 해준다. 대부분에 HIgh-level Language가 그렇듯.. Java, Pyt..

Computer Science/AI

Classification 분류기 분석. Cross-Validation 대신에 Confusion Matrix 사용하기.

머신 러닝의 한 분류인 Supervised Learning은 크게 Regression 또는 Classification으로 나뉜다. Computer Vision에서 classification 분류는 흔한 일이기에 정리한다. Scikit-Learn의 SGDClassifier를 이용하여 MNIST 데이터 셋의 숫자 7을 분류하는 분류기를 구현하던 도중, 숫자 7은 어차피 전체 비율의 10 % 밖에 없기에 항상 false로 예측하더라도 예측률이 적어도 90%는 찍게 된다. 여기까지의 과정은 다음 코드에 담겨있다. 개발 환경은 Google Colab 이다. 1. import 데이터 from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784'..

Computer Science

Linux File 구조 [리눅스 파일 구조]

나는 Windows 운영체제 노트북을 쓰고 있으며 VM VirtualBox를 통해 Ubuntu Desktop Version을 사용중이다. 학교 과제로 인해 사용중이지만 리눅스 운영체제에 관심이 생겨 공부 중에 정리하고자 작성한다. Command 'ls'를 터미널에 작성하면 현재 경로에 있는 파일 또는 폴더명이 나온다. 색깔별로 구분이 되며, 현재 내가 보고 있는 화면은 가장 바깥 폴더에서 'ls'를 쳤을 때이다. 가장 바깥 폴더로 가려면 cd / 를 작성하면 된다. 색깔로 구별되어 있는 폴더명 중에 하늘색 폴더명은 symbolic link이다. 즉, 다른 경로로 연결되어 있는 매크로이다. 터미널에 file lib 이라고 치면 symbolic link to usr/lib 이라고 뜨는 것을 볼 수 있다. 하..

Computer Science/C++

VSCode에서 C++ include 설정하기. include error. MSYS64, UCRT, Mingw

오늘은 일상 코딩을 하다가 발생한 VSCode에서 msys64의 Ucrt(msys64의 mingw과 유사하다)를 사용하다가 include error을 해결하는 과정에서 알게 된 내용이다. Visual Studio Code 가 아닌 Visual Studio를 사용하면 발생하지 않을 문제들이지만 Visual Studio Code에서 코딩해야 하는일은 꼭 있다. https://code.visualstudio.com/docs/cpp/config-mingw Windows 운영체제에 mingw이 깔려있지 않다면 이 링크를 그대로 따라하면 된다. Visual Studio Code 공식 사이트이다. 시스템 환경 변수 설정도 잊지 말자! 그대로 따라 해서 workplace folder (vscode에서 한 개의 프로젝트..

Computer Science/AI

[Computer Vision / Graphics] 논문 리뷰 3D ShapeNets: A Deep Representation for Volumetric Shapes

이 글은 논문에 대한 번역글이 아니며, 중요 부분과 요약 부분을 다룬 글이다. 대학 학부생의 수준이니 높은 신뢰성은 보장되지 못한다. Summary of Paper 이 글이 나왔을 시점인 2015년 경에 2.5D depth sensor가 생겼다. 2D 이미지지만, 2.5D의 depth (깊이)를 빨간색이 먼쪽, 파란색이 가까운쪽을 의미하게 색칠하여 보이게 한다. 이 글에서는 2.5D depth map에서 3D volume을 얻는 것과 2.5D depth map image가 가리키는 사물의 category recognition 분류를 목표로 한다. 한 개의 2.5D depth map이 아닌 target 3D object를 카메라의 여러 각도, 위치로 찍은 여러 개의 2.5D depth map image로 ..

Computer Science/C++

Multithreading Mutex using MSYS2, Ucrt64 (Mingw64) 멀티스레드 (Windows 운영체제, C++)

기본적으로 MSYS2의 ucrt64, mingw64 등등이 깔려 있음을 가정한다. 운영체제도 Windows임을 가정한다. (gcc 도) https://code.visualstudio.com/docs/cpp/config-mingw Visual Studio Code IDE에서 제공하는 mingw64를 다운로드하는 가이드라인이니 참고. Mutex Thread에 관한 내용이 궁금하다면 다음 게시글 참고 2023.08.10 - [Computer Science/C++] - 멀티 스레드 Multi-thread (+ Windows, MFC) 멀티 스레드 Multi-thread (+ Windows, MFC) What is Thread? 코딩을 하다 보면 언어가 멀티 태스킹 (multi-tasking), 멀티 스레드 (m..

Computer Science/C++

멀티 스레드 Multi-thread (+ Windows, MFC)

What is Thread? 코딩을 하다 보면 언어가 멀티 태스킹 (multi-tasking), 멀티 스레드 (multi-thread)를 지원한다는 얘기를 들어봤을 거다. AI 언어로 인기를 받는 파이썬도 AI 분야에서 이루어지는 많은 계산을 빨리 하기 위해서 병렬을 가능케 하는 Multi-Tasking과 Multi-Threading을 지원한다. 운영체제 내부에서 응용 프로그램이 작동할 때 응용 프로그램을 프로세스(Process)라 부른다. Multi-Tasking은 운영체제가 여러 process를 동시에 실행하게 하고, Multi-Threading은 process안에서 여러 개의 thread를 동시에 실행한다. Thread는 일하는 노동자 수라고 보면 된다. 따라서 많을수록 동시에 다양한 일을 빨리 많..

Computer Science/Graphics

OpenGL 2. Coordinates, 좌표

OpenGL Space 개념 Local Space / World Space / View Space / Clip Space / Screen Space 좌측부터 OpenGL 좌표계에 가까운 단계이며, 우측인 Screen Space는 말 그대로 우리가 컴퓨터 화면을 통해 보는 스크린의 좌표계이다. 이번 글에서는 이 공간들에 대해 차근차근 알아보자. 아래 그림에서 좌표계의 축들은 실제 OpenGL 축과 밀접한 관련은 없으니 그냥 이해를 위해 보도록 하자. Local Space 가장 첫번째 단계인 Local Space다. 나의 object의 시작 단계라고 보면 된다. object의 시작 단계라고 생각하니, object를 구성하는 모든 점들의 좌표가 (0, 0, 0)으로 이해하니 이상하다. 필자의 해석으로는 '관찰..

Computer Science/Graphics

OpenGL 1. Introduction

기본 요구 사항 본 블로그는 C++ 언어, Windows 운영체제를 기반으로 OpenGL 을 공부한다. What is OpenGL? OpenGL은 주요 키워드는 cross-platform, state machine 이다. cross-platform은 Ios, Android, Windows, Linux 등 각종 운영 체제에서 사용 가능하다는 뜻이며, state machine은 어떤 상태를 저장하여 출력하는 기계라고 생각하자. 학습을 하면서 더 와닿게 된다. 기본적으로 OpenGL은 version 3.3에서 극적으로 바뀐다. version 3.3 이전에는 Immediate Mode를 통해 손쉬운 방법이 가능했지만, OpenGL 3.3을 기점으로 Core-Profile이라는 모드가 생겼다. Immediate ..

Computer Science/Python

[AI PYTHON] AUTOENCODER 오토인코더 (ChatGpt, Stable Diffusion의 원리)

Generative Model (생성형 모델) 중 하나인 ChatGPT가 AI의 잠재력을 전세계에 퍼뜨리고 있다. 개인적인 생각으로 만든 사람도 정확히 ChatGPT가 어떻게 학습이 가능한 지에 대한 설명을 할 수는 없다고 생각한다. Model의 layer, weight들이 학습되는 형태는 처음에 초기값을 어떻게 잡는 지, 어떤 activation function을 쓰는 지에 따라 다르며, chatGPT처럼 데이터가 많게 되면 더더욱 설명하기는 어렵다. 우리가 ChatGPT의 원리를 정확히 알 수는 없더라도 생성형 모델의 기본적인 유형 중 하나인 Autoencoder에 대해서 먼저 보도록 하자. Autoencoder는 encoder 부분과 decoder 부분으로 나뉜다. Encoder는 latent sp..

아키엔지
'Computer Science' 카테고리의 글 목록