전체 글 52

KNeighborsClassifier 첫 걸음

요약: X(단일 데이터 혹은 배열) 와 y(정답)로 1:1 매칭된 데이터들을 학습(fit) 시켜준 후, 테스트 데이터인 X' 를 주었을 때 기존 학습 데이터를 기반으로 가까운 정답을 내 뱉는다. 목표 : 생선의 너비(cm)와 무게(g)가 주어지면 도미와 빙어를 구분한다. 도미 데이터 (35세트) bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0] bream_..

ML 2022.04.17

Numpy 배열 미세정리

● 파이썬 기본문법에는 배열이란게 없다 (!!!) mylist = [[1,2,3],[10,20,30]] print(mylist) 출력: [[1, 2, 3], [10, 20, 30]] 요건 그냥 리스트. import numpy as np myarr = np.array([[1,2,3],[10,20,30]]) print(myarr) 출력: [[ 1 2 3] [10 20 30]] 이것이 Numpy 를 이용한 배열. (숫자 사이 콤마가 없다) ● 무슨차이? 리스트의 각 요소는 형식이 모두 달라도 되지만, 배열은 같은 형식이어야 하고 크기도 최초 만든 후 제한 받는다. 대신 빠르다. 리스트 배열 각 요소 형식이 달라도 된다. 같은 형식이어야 한다. 느리다. 빠르다. 사이즈를 마음대로 조절 가능하다. 사이즈는 고정된..

ML 2022.04.14

[C#] 어느날 갑자기 Smtp 메일 전송이 안된다

오피스365 Exchange 계정을 통해 C# 으로 .Net SmtpClient 클래스를 통해 메일을 보내는 기능을 구현해서 1년 넘게 잘 쓰고 있다가, 최근에 점점 실패 횟수가 잦더니 이제는 아예 기능 자체가 먹통이 되어 버렸다. 원인은 .Net 의 SmtpClient 라이브러리가 deprecated 된 탓이고, 자세한 이유는 최근의 여러 보안 프로토콜(가령 StartTLS)을 지원하지 못한 탓이란다. We don't recommend that you use the SmtpClient class for new development because SmtpClient doesn't support many modern protocols. Use MailKit or other libraries instead...

C# 2022.02.11

[C#] 한글의 받침 유무 가려내기

// 한글 받침 유무 체크 bool isExistLastSyllable(char ch) { int n = Convert.ToInt32(ch); // 한글의 제일 처음과 끝의 범위밖일 경우는 예외처리 if (n 0xD7A3) { throw new Exception("한글이 아님"); } if((n - 0xAC00) % 28 > 0) { return true; } else { return false; } } char ch = '손'; try { bool bExist = isExistLastSyllable(ch); Console.WriteLine($"{ch}{(bExist ? "은":"는")} 받침이 {(bExist?"있다":"없다")}"); } catch(Exception ex)..

C# 2021.11.02

정규식을 이용한 소스 Replace

레퍼런스가 존재하지 않는 C# DLL 을 디컴파일 하면 프로퍼티들이 get_XXX, set_XXX 형식으로 디컴파일 됨. 일일이 수작업으로 하려면 너무 무의미한 시간이 필요함. 그래서 정규식을 사용하면 순식간. 정규식 규칙상 괄호 ( ) 로 묶으면 그룹 1 번이 되고, replace 에서 $1 로 표현. - "get_XXX()" => "XXX" 찾을 문구 : get_([A-Za-z0-9]*)\(\) 바꿀 문구 : $1 - "set_XXX" => "XXX = " set_([a-zA-Z0-9]*)\( $1 = ( - 이벤트 핸들러 add_([A-Za-z0-9]*)\( $1 += ( \(object\)this, __methodptr\(([A-Za-z0-9_]*)\) $1

C# 2020.02.21

Unity 프로젝트를 Git 로 관리할 때 주의사항

프로그램 코드를 Git 로 관리 하는 이유는 여러가지 있겠지만 가장 중요한 건 역시 백업에 있지 않나 싶다. 그렇다고 무턱대고 모든 파일을 repository 에 넣어버린다면 불필요한 파일을 저장하는건 둘째 치더라도, github 에서 거부를 해버린다. 100mb 이상의 바이너리 파일은 Push 를 허용하지 않는다. (50mb 이상은 경고를 보낸다고 한다.) 유니티에서 Library 폴더의 경우가 여기에 해당된다. 빌드 과정에서 엄청나게 용량이 큰 바이너리들이 수시로 생성되고 없어진다. 그렇다고 Library 를 뺀다면 어떻게 될까? 별도의 폴더로 받아서 유니티로 로드했더니 에러 투성이었다. 이를 해결하기 위한 결론은 다음과 같다. *.meta 파일을 git 에 포함시켜라. (.gitignore 에서 *..

Unity 2019.11.07

[Unity] Failed to install the following Android SDK packages as some licences have not been accepted.

구글의 64비트 정책 때문에 빌드 옵션을 바꿨더니(IL2CPP, ARM64) 제목과 같은 빌드 에러가 발생했다. Android SDK 라이센스가 없기 때문에 빌드가 되지 않는 에러 메시지이다. 구글링해보니 Android Studio 의 경우만 나와 있는데 SDK Tools 중에 Google Play Licensing Library 라는 것을 설치하면 된다고 한다. 하지만, 유니티의 경우 유니티 허브에서 Android SDK 를 설치했기 때문에 저런 설치 옵션이 존재하지 않거나 내가 찾지 못했다. 그래서, 어쨌든 Android Studio 에서는 라이센스가 설치가 됐으니 해당 폴더를 살펴 보기로 했다. 이 licenses 폴더를 통채로 카피한 다음 유니티 에디터 밑에 복사 했다. 결과는? 성공!!

Unity 2019.10.15

[Unity] YesNo 팝업 만들기

event 와 delegate 를 이용. Canvas 에서 UI 를 아래처럼 만든다. YesnoBox, MsgPanel => Panel YesButton, NoButton => Button MsgText, Text => Text 프리팹으로 집어 넣는다. 필요할 때마다 런타임에 로드하기 위해 Assets/Resources/Prefabs/Canvas/YesnoBox 에 집어 넣었다. YesnoBox.cs using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class YesnoBox : MonoBehaviour { [SerializeField] ..

Unity 2019.10.04

[Unity] 클릭 혹은 터치한 곳의 오브젝트 정보 얻어내기

어떤 오브젝트를 터치했는지 알아내서 처리하는 코드 void Update() { if (Input.GetMouseButton(0)) { Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hitInformation = Physics2D.Raycast(touchPos, Camera.main.transform.forward); if (hitInformation.collider != null) { //We should have hit something with a 2D Physics collider! GameObject touchedObject = hitInformation.transform.gameObject;..

카테고리 없음 2019.09.28