프로그래밍 39

for 와 foreach 비교

둘 다 데이타를 반복 처리를 하는 점에서는 비슷하지만, 다루는 방식에서 몇 가지 차이가 있다. 차이점1. for 는 루프 중에 각 요소를 수정할 수 있는 반면, foreach 는 읽기 전용이다.2. for 는 증감을 제어할 수 있지만, foreach 는 처음부터 끝까지 순회한다.3. foreach 는 IEnumerable 를 구현한 컬렉션에서만 사용 가능하다. - 배열 [], List, Dictionary , yield return 을 사용하는 이터레이터 메서드 등을 포함한다.4. foreach 는 인덱스를 다루지 않기 때문에 코드가 더 간결하다. 결론적으로for 문은 인덱스 제어가 필요하거나 반복 범위를 직접 조절하고 싶을 때 적합하다.foreach 문은 컬렉션의 요소를 간단하게 탐색하고, 수정할 필요..

프로그래밍/C# 2024.10.03

배열[], ArrayList, List<T> 의 각 기능과 차이점

모두 여러 개의 데이타를 저장하고 관리하는 기능을 제공하는 자료구조로 기본적인 목적은 유사하다.다만 몇가지 중요한 차이점이 있기 때문에 장, 단점을 살펴 상황에 맞게 사용하면 된다. 배열 [ ]  * 고정 크기 - 배열은 생성할 때 크기가 고정되며, 생성 후에는 크기를 변경할 수 없습니다.* 타입 지정  - 배열은 특정 타입의 데이터를 저장할 수 있습니다. 예를 들어, int[]는 정수만 저장할 수 있습니다.* 빠른 접근 :  - 배열은 메모리 상에서 연속된 공간을 사용하기 때문에 인덱스를 통해 빠르게 데이터에 접근할 수 있습니다.  int[] numbers = new int[3]; // 크기가 3인 배열 생성 numbers[0] = 1; numbers[1] = 2; numbers[2] = 3; Arra..

프로그래밍/C# 2024.10.03

ScriptableObject

스크립트 파일을 Asset 형태로 만든 Object.주로 Data 를 처리하기 위해 사용하며 각 field를 에디터에서 편집할 수 있다. 이를 위해서 class MoneBehaviour 대신 ScriptableObject 를 상속받는다.따라서 GameObject 에 Component 로 추가할 수 없고 Asset 형태로 존재하게 된다.또한 쉽게 메뉴에서 생성할 수 있도록 CreateAssetMenu() 로 정의해준다.  Class 에 Data 구조를 작성하면, 객체마다 해당 Data 크기만큼 메모리에 할당하게 된다.한 두개의 객체를 생성한다면 문제될 게 없지만, 수많은 객체를 선언해야 할 때는 메모리를 낭비하게 된다.이 때 생성된 객체가 ScriptableObject의 Data 를 참조하게 만든다면 이러..

int 와 Int32

AliasC# 컴파일러는 int 를 System.Int32 로 자동 매핑한다.이것을 C# 의 기본 자료형에 대해 미리 정의된 '약칭 (alias)' 이라고 한다.즉, int 는 System.Int32 의 약칭이며, 이 둘은 동일한 메모리 크기와 동일한 표현 범위를 갖는다. 다른 예로는 아래와 같은 것들이 있다.float : System.Singledouble : System.Doublebool : System.Boolean Int32 구조체에는 다음과 같은 코드가 있다.public const Int32 MaxValue = 2147483647; public const Int32 MinValue = -2147483648; 이와 같은 이유로int.MaxValue 는 정수형의 최대값을, int.MinValue ..

프로그래밍/C# 2024.10.02

Binance - 자동 매매 프로그래밍

사용할 언어는 Python 이다.CCXT (Cryto Currency cXchange Trading ) 도 있지만, 해외 거래소를 Binance  만 쓴다면 굳이 이런 고급스런(?) 걸로 시작할 이유가 없다.참고로 CCXT 는 해외 여러 거래소의 API 를 통합한 라이브러리다.  순서는 다음과 같다.  1. 파이썬을 설치한다. 2. 바이낸스에 가서 API 키를 생성한다. 여기서 처음 보는 UI 때문에 잠깐 헤메게 된다. API Key 라벨을 붙여주는 대화창이 뜨는데 그냥 그럴 듯한 이름으로 정해주면 된다.이런거 은근히 어렵기 때문에 처음보면 어떤 이름으로 해야 하는지 감도 안온다;예) MyAutoTrading뭐... 대충 이런식으로 지어주면 된다.   그리고 API Key 와 Secret Key 를 어디..

MonoBehaviour 를 상속받은 Class 주의점

C# 에만 익숙해있다가 유니티를 접하게 되면class 를 인스턴스화 하는데 new 를 사용하지 않는다는 사실에 당황하게 된다. 유니티의 경우 생성한 모든 GameObject 들은 Component 기반이다.그래서 필요한 Component 를 해당 GameObject에 추가해서 사용하게 된다.스크립트도 예외는 아니어서 Component 로 추가하고 제어한다. 그리고 이러한 구조가 가능한 이유가 MonoBehaviour class 를 상속받았기 때문이다. MonoBehaviour 를 상속받은 class 는 유니티가 동작하는 방식에 따라 처리되기 때문에 외부에서 new 로 할당하게 되면 정상동작하지 않으니, 내부에서 어떤 순서로 유니티가 동작하는지 완벽하게 파악한 초절정 고수가 아니라면 사용하지 말자. 일반적..

Property (프로퍼티)

변수는 아니지만 변수처럼 다뤄지는 Property.그래서 처음 이 문법을 보면 무척 헤깔린다.그리고 변수를 public 으로 선언하면 무용지물이 되기 때문에 굳이 이걸 써야하나 라는 생각도 든다. 그래도 알고나면 코드의 양을 줄일 수 있고, class 의 기본 컨셉인 데이타의 은닉성을 지키고 있다는 스스로의 만족감같은 걸 느낄 수 있다. ㅎㅎ  외부에 노출시키고 싶지 않은 데이타가 있다고 가정해보자. 예) 여자 친구의 몸무게.   Property 를 사용하지 않았을 경우에는 public class GirlFriendA {     private int mWeight;     public int GetWeight ()     {         return m Weight ;     }     public v..

프로그래밍/C# 2024.09.18

자체 UI 크기 설정

요즘 대부분의 콘솔 게임들은 UI 나 대사 크기를 키울 수 있는 기능을 제공한다.개발자들도 점점 늙어가기 때문인거 아닌가 싶다. ㅎㅎ유니티에서도 이 기능을 지원한다. 메뉴 > Edit > Preferences 창을 열고,Use default desktop setting 을 해제한 후,scale 값을 원하는 크기로 조정한다. 바로는 적용이 안되고 유니티를 껏다가 다시 켜야 한다.  이렇게 하면 유니티 프로그램 자체가 확대되어 보여진다. 현재 유니티를 다루면서 안경을 쓰고 볼지 말지 애매한 상태라면, 일단 이 방법으로 버텨보자.

Gimbal Lock (짐벌락)

3D 회전에서 골치아픈 문제인 짐벌락.유튜브가 없던 시절 책이나 문서로만 설명되어 있다보니 이해하기가 어려워 대충 넘어갔던 기억이 난다.최근 프로그래밍 공부를 다시 시작하면서 등장한 짐벌락. ^^;; Gimbal : 보통 3개의 링 구조로 구성되어 있으며, 자유롭게 회전할 수 있는 장치를 짐벌이라고 한다. Gimbal Lock :2개의 링의 회전 축이 일치하게 되어, 한 축의 자유도를 잃게 되는 현상을 짐벌 락이라고 한다.쉽게 말해 2개의 링이 겹치게 되어 발생하는 현상이다. Euler 회전 : 오일러 회전은 x, y, z 축을 중심으로 한 회전이기 때문에 이해하기가 쉽다. 다만, 각 회전축이 부모 - 자식의 계층 구조로 되어 있어 한 축의 회전이 다른 한 축에 영향을 주게됨으로써 짐벌락이라는 문제를 일..

프로그래밍/3D 2024.08.04