C++ Emplace / emplace_back()
·
LAB/C++
Emplace 메서드 정의컨테이너에 키가있는 요소가 없는 경우 지정된 인수로 구성된 컨테이너에 새 요소를 삽입한다.emplace를 주의해서 사용하면 불필요한 복사 또는 이동 작업을 피하면서 새로운 요소를 구성할 수 있다.반복자 및 참조자가 무효화되지 않는다.여기서 말하는 첫 번째, "컨테이너에 키가 있는 요소가 없는 경우"는 map과 같이 중복되는 원소(키 값)를 허용하지 않는 컨테이너에 한정되는 듯하다. 추가로 emplace는 영어로 "배치하다"라는 뜻으로 새로 삽입한다고 생각하면 편하다. 두 번째, "불필요한 복사 또는 이동 작업을 피하면서 새로운 요소를 구성할 수 있다" 이 부분이 가장 중요한데, 보통 2개 이상의 요소들을 묶어서 queue나 vector에 옮기기 전에pair나 tuple을 만들고,..
MFC 기초
·
LAB/C++
MFC 란?- Microsoft가 제공하는 C++ 라이브러리로, Windows API 호출을 쉽게 하기 위한 클래스를 제공- MFC는 Windows 메시지 기반 구조를 사용하며, 메시지를 처리하는 클래스를 제공 이번 프로젝트에서 MFC 어플리케이션 종류에 단일문서 / 여러문서/ 대화상자/ 여러최상위문서가 있는데 저희는 대화상자기반으로 프로젝트를 진행하기로 ** 대화상자 기반 MFC : 대화 상자는 기본적으로 팝업 창 형태로 제공되며, 사용자와 상호작용할 수 있는 컨트롤(버튼, 텍스트박스 등)이 포함된 창** CDialog 클래스를 기반으로 작성되며, 대화 상자가 프로그램의 중심 역할 [MFC 솔루션 탐색기]- 리소스 파일 : 애플리케이션의 UI 요소(대화 상자, 메뉴, 아이콘, 문자열, 비트맵 등)를 정..
C# - MVVM 패턴 ICommand
·
LAB/C#
변수와 프로퍼티 차이점 알아보기** 변수는 소문자 / 프로퍼티는 대문자로 시작 ^^1. 변수 변수는 데이터를 저장하기 위한 메모리 공간으로, 클래스나 메서드 내에서 값을 직접 저장하고 가져오는 데 사용됩니다.- 외부 접근 제어 및 로직 추가가 불가능합니다.- 외부 접근 제어 및 로직 추가가 불가능합니다.2. 프로퍼티- 필드에 대한 읽기/쓰기 접근을 캡슐화합니다.- 로직을 추가하여 데이터 접근을 제어할 수 있습니다.- get : 값을 반환 - set : 값을 설정대리자 생성 Action , Function(Func) 으로 대리자를 선언하는데반환값이 없으면 Action 반환값이 있으면 Func 사용 ** Action - 최대 16개의 매개젼수를 받을 수 있다.  ICommand   - 인터페이스 ** ICo..
MVVM 패턴 - Accuweather API 기반 날씨 검색 APP
·
LAB/C#
MVVM 정의Model (모델) : 데이터를 포함하는 데이터 구조 - 데이터 저장소와 직접적으로 연계되는 구조- API 호출이 이뤄지는 부분- DB 접근, 데이터와 관련된 연산  View (뷰) : 사용자에게 데이터를 표시하고 상호작용하는 UI- 일반적으로 컨트롤러로 구성- XAML에서 객체로 사용되는 부분 ViewModel (뷰 모델) : 모델에 값을 할당 하고 뷰와 상호작용 할 때 모델을 업데이트하는 역할 - 뷰모델 과 뷰는 데이터 바인딩 기능으로 연결 - 모델에서 선언한 클래스 객체 생성 - 객체가 생성 후 프로퍼티 값 할당- 외부API, DB등에서 각 프로퍼티로 업데이트 되었을 때 값이 할당되는 동작 구현  ** API Json 파일 C#클래스 모델로 변환 https://jsonutils.com/..
C#) C# WPF TCP/IP 메세지 전송
·
LAB/C#
WPF 를 이용한 TCP/IP 연결 메세지 송수신 출처 입력[Server]using System.Net;using System.Net.Sockets;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace First_wpf{ /// /// Inte..
Deep Learning(딥러닝) - 알파벳 대문자 손 글씨 학습 시키기
·
LAB/Python
알파벳 대문자 손 글씨 이미지 학습 모델 만들기출처 입력1. 알파벳 대문자 손 글씨 이미지 파일을 찾아 Pandas로 CSV 파일 불러오기2. 데이터 전처리 과정- 데이터 컬럼을 확인하고 rename()을 사용하여 첫 번째 열의 이름을 'label'로 변경- drop()을 사용하여 'label' 열을 제외한 나머지 열을 X에 저장하고, 'label' 열을 y에 저장- len(y.unique())를 사용하여 고유한 속성 수를 계산3. 훈련셋 과 테스트셋으로 분할4. CNN모델 생성- Conv2D(), MaxPooling2D(), Dropout(), Flatten(), Dense()를 사용5. 모델 컴파일- 손실함수 (categorical_crossentropy) : A~Z 까지의 데이터에서 비슷한걸 찾기 ..
Deep Learning(딥러닝) - 실제 데이터 모델 만들기, 이미지 학습시키기
·
LAB/Python
데이터 전처리 과정 1. 데이터 파악하기import pandas as pddf = pd.read_csv('../data/house_train.csv')print(df) => 1460개의 샘플들로 이루어져 있다.=> 80개의 속성으로 이루어져있고 81번째 열인 집값(SalePrice)이 타깃 2. 보다시피 숫자, 문자로 이루어진 데이터이며 데이터가 어떤 유형으로 되어있는지 알 필요가 있어보인다.import pandas as pddf = pd.read_csv('../data/house_train.csv')print(df.dtypes) => 정수형, 실수형, 오브젝트형으로 이루어진 데이터라는걸 알 수 있다. 3. 결측치가 있는지 확인 import pandas as pddf = pd.read_csv('../da..
Deep Learning(딥러닝) - Model설계 기초
·
LAB/Python
딥러닝 - 모델 : 특정구조로 만들어진 인공지능 객체 모델 설계- 활성화 함수 : 각 노드에서 계산된 값을 다음층으로 전달하기 전에 비선형 변환을 적용하는 함수- 손실함수 : 딥러닝 모델의 예측값과 실제값 사이의 차이를 측정하는 함수이며, 모델이 얼마나 정확하게 예측하는지를 나타내는 지표- 최적화 함수 : 딥러닝 모델이 학습과정에서 손실함수를 최소화(0과 가깝게 줄이기위해)하여 모델의 성능을 향상 시키는데 사용# TensorFlow 라이브러리 안에 있는 Keras API에서 필요한 함수들을 불러옵니다.from tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense# 데이터를 다루는 데 필요한 라이브러리를 불러옵니..
C# ) C# 기초 (스레드 , 태스크 ,네트워크 프로그래밍)
·
LAB/C#
스레드 ** .NET은 스레드를 제어하는 클래스로 System.Threading.Thread를 제공합니다. 1. Thread의 인스턴스를 생성한다. 이때 생성자의 인수로 스레드가 실행할 메소드를 넘긴다.2. Thread.Start()  메서드를 호출하여 스레드를 시작한다.3. Thread.Join() 메서드를 호출하여 스레드가 끝날 때까지 기다린다.static void DoSomething() // 스레드가 실행할 메서드{ for(int i = 0; i => 실제 스레드가 메모리에 적재되는 시점은 t1.Start()메서드를 호출 했을 때=> Thread 클래스의 인스턴스는 '준비' 만 해놓을 뿐 t1.Start() 메서드가 호출되고 나면, CLR은 스레드를 실제로 생성하여DoSomething() 메서드..
C# ) C# 기초 5 (대리자, 이벤트)
·
LAB/C#
대리자 C#에서는 콜백을 맡아 실행하는 일을 '대리자'가 담당합니다. 대리자(Delegate)는 다른 말로 '대리인' 또는 '사절'이라고 할 수 있습니다. 즉, 누군가를 대신해서 일해주는것을 전문으로 하는 사람을 의미합니다.** 대리자는 메서드에 대한 참조입니다.** 대리자에 메서드의 주소를 할당한 후 대리자를 호출하면 이 대리자가 메서드를 호출해줍니다.** Delegate는 메서드를 가리키는 참조 변수  한정자 delegate 반환_형식 대리자_이름(매개변수_목록);delegate int MyDelegate(int a, int b);대리자는 인스턴스(객체)가 아닌 형식(Type)입니다. 다시말해 MyDelegate는 int, string과 같은 형식이며 '메서드를 참조하는 그 무엇'을 만들려면 MyDe..
C# ) C# 기초 4 (일반화 프로그래밍, 예외처리)
·
LAB/C#
일반화 프로그래밍특수한 개념으로부터 공통된 개념을 찾아 묶는 것을 ‘일반화.Generalization’라고 합니다.일반화 프로그래밍GenericProgramming은 이러한 일반화를 이용하는 프로그래밍 기법 입니다. 일반화 프로그래밍은 일반화하는 대상이 조금 특이한데, 바로 '데이터 형식Data Type'입니다.** 오버로딩을 하지 않고도 모든 형식을 지원하는 프로그래밍을 뜻한다. 일반화 메서드한정자 반환_형식 메서드_이름 (매개변수_목록){ //...} 사용예시// int버전void CopyArray(int[] source, int[] target){ for(int i = 0; i데이터 형식이 사용된 부분을 T 기호로 치환하여 사용 / T는 '형식 Type'을 뜻합니다." T가 C#에서 지원하는 형식이..
C# ) C# 기초 3 (프로퍼티, 컬렉션, 인덱서)
·
LAB/C#
프로퍼티class 클래스_이름{ 데이터_형식 필드_이름; 접근_한정자 데이터_형식 프로퍼티_이름 { get { return 필드_이름; } set { 필드_이름 = value; } }}get { ••• }과 set { ••• }을 일컬어 접근자 라고합니다. get 집근자는 필드로부터 값을 읽어오고 set 접근자는 필드에 값을 할당합니다.set 접근자 안에 있는 value는 암묵적으로 매개변수로 간주합니다.[장점] 캡슐화: 객체의 내부 데이터를 외부에서 직접 접근하지 못하도록 숨겨서 데이터를 보호할 수 있습니다.유효성 검사: set 접근자에서 값을 설정하기 전에 유효성 검사를 수행하여 잘못된 값..