728x90

정리가 필요한 카테고리(추후 정리) 58

안드로이드 예제 - 코틀린으로 로그인-메뉴 화면 만들기

코틀린으로 처음 모바일 프로그래밍을 입문하는 사람들은 관련 책을 참고하는 것을 추천한다.필자가 참고하는 책은 Do It! 안드로이드 앱 프로그래밍으로, 꽤 오래 전에 산 책이라서 코틀린이 아닌 자바로 써진 책이다. 코틀린으로 써진 책은 아니지만 이렇게 간단한 어플 만들기 예제들이 많이 있어서 예제 아이디어를 얻는 용도로 사용하고 있다. 책으로 코틀린 관련 지식들을 습득할 수 없으니, 부족한 부분들은 자바의 소스들을 가져다 넣고 코틀린으로 바꿔서 해당 기능이 어떻게 사용되는지 확인하거나, 구글링으로 해결하고 있다. 이번 예제는 '로그인 화면과 메뉴 화면 간단 만들기'라고 되어 있다. 서버/클라이언트 통신을 통해서 로그인 확인을 하지는 않고, 앱에 미리 저장해둔 아이디와 비밀번호를 비교하는 작업으로 간단하게..

Unity 주요 함수 정리

Awake스크립트 실행 시 한 번만 호출게임 상태 값, 변수 초기화에 사용함Start 함수 호출 이전에 맨 먼저 호출됨비활성화 상태여도 실행됨코루틴으로 실행 불가능 StartUpdate 함수가 호출되기 전 한 번만 호출스크립트가 활성화되어 있어야 실행다른 스크립트의 모든 Awake가 모두 다 실행된 이후 실행코루틴으로 실행 가능 Update프레임마다 호출되는 함수, 게임의 핵심 로직 작성스크립트 활성화되어 있어야 실행 LateUpdate모든 Update 호출 후 한 번씩 호출순차적으로 실행할 로직에 사용카메라 이동 로직에 주로 사용스크립트가 활성화되어 있어야 실행 FixedUpdate물리 엔진을 사용할 경우, 일정 시간 힘을 가할 때 사용발생 주기 일정 OnEnable게임오브젝트 혹은 스크립트 활성화됐을..

C#] Thread.Sleep 대신 사용할 Delay 함수

System.Threading.Thread.Sleep을 이용해 간단하게 지연이 가능하나, 프로그램 자체를 완전 멈춰버린다.원하던 작업이 이게 아니라면 다른 함수를 사용해야 하는데, 아래 Delay 함수가 꽤 쓸만했다. private static DateTime Delay(int MS) { DateTime ThisMoment = DateTime.Now; TimeSpan duration = new TimeSpan(0, 0, 0, 0, MS); DateTime AfterWards = ThisMoment.Add(duration); while (AfterWards >= ThisMoment) { System.Windows.Forms.Application.DoEvents(); ThisMoment = DateTime...

C#] Parallel 클래스를 이용한 병렬 프로그래밍

2010년 이후로 줄곧 멀티 코어 보급률이 빠르게 늘어, 현 시점에서는 보급형 라인업에도 기본적으로 듀얼 코어가 탑재되는 시점에서, 다수의 코어를 활용하기 위해 .NET Framework 4.0에 추가된 개념. 병렬 루프에 관련한 메서드들을 제공한다. 이것을 이용해서 다수의 데이터를 병렬 처리하거나, 방대한 작업을 병렬 처리하는 것이 가능하다. Parallel.For(), Parallel.Foreach()를 이용해서 병렬로 분할 처리하는 기능을 사용할 수 있으며 병렬 처리를 하는 경우 두 가지 특징이 있다. 단일 스레드로 처리하는 경우보다 더 빠른 처리가 가능함.방대한 양의 데이터를 처리하는 경우, 다른 스레드에서 변경되는 값에 영향을 받지 않는다면 이 방법을 쓰는게 순차 처리하는 경우보다 빠른 시간 내..

C#] 파일의 MD5 해쉬값 얻어내기

파일의 MD5 해쉬를 얻어내는 코드는 간단하다. private FileInfo item; private byte[] hashcode; item = new FileInfo(filePath); hashcode = MD5.Create().ComputeHash(item.OpenRead()); using System.Security.Cryptography;를 별도로 추가해주면 정상적으로 작동한다. 다만, 해당 코드는 파일의 용량에 따라 해쉬값 연산 속도가 천차 만별이다. 용량이 작은 텍스트 파일 같은 경우는 ms 단위로 처리하고, 용량이 큰 영상 파일 같은 이진 파일은 10초(약 1.5~2GB)가 넘게 걸린다.

[WPF] Keyboard 클래스

Keyboard 클래스에서 키보드 관련 이벤트와 메서드, 키보드에 관련된 속성을 제공. 아래 이벤트를 적절히 이용해서 키보드 관련 처리를 하는 것이 좋음. 컨트롤이 포커스를 받았을 때PreviewGotKeyboardFocusGotKeyboardFocus 컨트롤이 포커스를 잃었을 때PreviewLostKeyboardFocus,LostKeyboardFocus 컨트롤이 논리적 포커스를 받았을 때GotFocus 컨트롤이 논리적 포커스를 잃었을 때LostFocus 키가 눌렸을 때PreviewKeyDownKeyDown 키가 눌렸다 떼어졌을 때PreviewKeyUpKeyUp 컨트롤이 텍스트 입력을 받았을 때PreviewTextInputTextInput

Kotlin] lateinit과 lazy

lateinit과 lazy는 지연 초기화를 위해 사용함.클래스 생성 동시에 사용하지 않는 변수에 대해서는 늦게 초기화할 때 사용하며, null은 필요한 경우에 한해서 명시. lateinitvar에 사용하고, var이기 때문에 초기화 값을 변경할 수 있음.null을 통해서 초기화하지 않고, 초기화 전까지 해당 var 변수에는 접근하지 못함.변수에 대해서 getter, setter를 정의할 수 없음.모든 변수에서 가능한 것은 아니며, primitive type에 대해서는 사용 불가능. lazyval에 사용하고, 호출 시점에 by lazy 정의로 초기화.val에서만 사용하기 때문에 불변이며, 초기화를 위해서 함수명을 한 번이라도 적어줘야 함.lazy을 사용하는 경우 기본 Synchronized로 동작. 값의 ..

WPF] 어플리케이션 종료 방법

Application.Current.Shutdown() 일반적인 종료 방법. Shutdown을 호출하면 어플리케이션이 종료되며, Shutdown은 WPF에서 암시적으로 호출됨. Shutdown 되는 시기는 정확히 알 수 없지만 Exit 이벤트를 이용해서 실행이 중지되는 시점을 확인하고 필요한 작업을 처리할 수 있음. System.Environment.Exit() 현재 어플리케이션의 모든 쓰레드를 중단시켜 애플리케이션을 종료시키는 방법. 어플리케이션을 즉시 죽일 수 있음. Process.GetCurrentProcess().Kill() 강제로 프로세스를 종료시키는 방법. 강력하지만, 메인 윈도우에 종료 요청을 내리는 방식으로, 즉각적으로 앱에 종료를 요청하지 않아 시간 지연이 발생할 수도 있음.

[WPF] 다른 스레드에서 UI 스레드 쪽에 접근하기

1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다. 2. "다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"(The calling thread cannot access this object because a different thread owns it.) 최근 윈폼 프로그램을 WPF로 바꾸는 과정에서 주기적으로 창을 호출하는 과정에서 위 오류가 발생했다.윈폼에서는 이런 일이 없었지만 WPF에서는 UI 스레드와 그렇지 않은 스레드로 나누고 있어 이런 오류가 발생한다.이럴 때는 Dispatcher.Invoke를 이용하여 해결해야 한다. Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate..

코틀린(Kotlin) 함수, 변수 정의

코틀린을 입문하는 사람들이 기존 Java로 안드로이드 개발을 하던 사람이거나, C#을 이용해 자마린을 쓰는 사람 등 다양한 사람이 있을 것 같다. 앞서 말한 두 언어와 코틀린의 가장 큰 차이점이라면 아무래도 세미콜론(;)을 사용하지 않는다는 것이다. 함수 정의 방법함수는 fun 키워드로 정의하며 함수 몸체 자체가 식(Expression)일 때는 return을 생략할 수 있음. fun sum(a: Int, b: Int) Int {return a + b}fun sum(a: Int, b: Int) = a + b 리턴 타입을 지정하는 방식이나, 기존의 인자 선언 방식이 C++, Java 같은 언어와는 방식이 약간 다르지만 형식 지정이 없는 것은 아니다. 경우에 따라서 함수의 리턴 값이 없는 경우에는 Unit(O..

728x90