https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators

 

패턴 일치와 is 및 as 연산자를 사용하여 안전하게 캐스트하는 방법 - C#

패턴 일치 기법을 사용하여 변수를 다른 형식으로 안전하게 캐스팅하는 방법을 알아봅니다. 패턴 일치뿐만 아니라 is 및 as 연산자를 사용하여 형식을 안전하게 변환할 수 있습니다.

learn.microsoft.com

 

즉, 강제 캐스팅은 https://learn.microsoft.com/ko-kr/dotnet/api/system.invalidcastexception?view=net-8.0 될 위험성이 있으나, as 키워드를 사용한 캐스팅은 내부에서 이를 검사하여 에러를 발생시키지 않고 null을 반환하도록 되어 있음.

 

'C#' 카테고리의 다른 글

string으로 특정 변수의 데이터를 가져올때.  (0) 2016.12.01

WRITTEN BY
빨강꼬마

,

iOS14 그리고 IPV6..

Unity 2020. 10. 22. 16:13

이번 iOS 심사를 넣고 2번 리젝이 되었다.

 

이유는 네트워크 통신이 불가능한 상태..

 

리뷰어가 심사시 테스트한 환경과 맞추기 위해 IPV6를 로컬로 테스트할수 있는 환경을 만든후

iOS14.0.1 OS가 설치된 디바이스를 해당 WIFI에 물려본 결과..

전혀 네트워크 통신이 안되는 상황 발생 (앱뿐만이 아니라 SAFARI에서도 웹페이지 접근 불가)

 

iOS13까지는 무리 없이 테스트가능한 방법이었으나, 14로 올라오면서 네트워크와 관련된 변경점때문인지 위와 같은 방법으로는 테스트가 불가능했다.

 

최초 리젝된 이유는 앱이 크래시가 발생한다는 것이었는데, 이 문제는 네트워크 라인은 물린 상태에서 송신후 수신을

무한히 대기할 경우 프로젝트에서 쓰고있는 보안솔루션과 문제가 발생되어 크래시가 나는 것을 확인하여 이부분은 수정을 했다.

 

두번째 리젝은 말 그대로 크래시는 아니나 네트워크 통신이 불가능한 현상이었는데,

이때 게임 서버와의 프로토콜 통신이 일반 HTTP 였다.. SSL이 적용된 주소로 변경 후 재심사를 넣었고,

통과되었다..

 

의문점은 물리적으로 동일한 라이브러리를 쓰고 있는 다른 앱의 경우 SSL이 적용되지 않았음에도

무리없이 한방에 통과됬다는거다...

 

간혹 우리가 볼때는 문제가 없으나, 애플이 볼때, 그것도 원인을 찾기 매우 어려운 이슈일 경우

스트레스가 어마어마하다...

 

해결되었으니 일단 한숨돌리고..

'Unity' 카테고리의 다른 글

Unity Debug.Log 시 사용가능한 컬러  (0) 2019.12.11
Application.persistentDataPath  (0) 2019.07.31
Android Native 에러로깅 추적할때.  (0) 2018.05.17
작업시 정리했던 메모들  (0) 2018.04.26
Vector3.Lerp 함수에 대해.  (0) 2017.04.29

WRITTEN BY
빨강꼬마

,

https://stackoverflow.com/questions/50689859/download-large-file

 

Download large file

By downloading a file with UnityEngine.WWW, I get the error OverflowException: Number overflow. I found out the error is caused form the structure itself, because the byte-array has more bytes ...

stackoverflow.com

https://forum.unity.com/threads/uwp-memory-leak-when-downloading-large-files.765122/#post-5103632

 

UWP: Memory leak when downloading large files

The following code run on UWP will raise the memory by 100MB every iteration until the application crashes. What am I missing here? We're seeing...

forum.unity.com

 

위 두 링크의 내용을 축약하면..

UnityWebRequest를 사용하여 텍스쳐를 다운로드를 한 후, 다운로드된 리소스를 처리하기 위해 직접 www.downloadHandler.data에 Access 하게 되면, 리턴을 위해 내부에서 새로운 바이트 배열이 생성되므로 메모리 관리에 매우 취약하다는 내용.

 

첫 번째 링크처럼 만약 다운로드한 리소스를 파일로 저장하거나 특정 목적으로 사용할 경우 그에 맞는 downloadHandler를 전송 전에 할당하여 처리할 수 있도록 해야 함.


WRITTEN BY
빨강꼬마

,

 

aqua (same as cyan) #00ffffff
black #000000ff
blue #0000ffff
brown #a52a2aff
cyan (same as aqua) #00ffffff
darkblue #0000a0ff
fuchsia (same as magenta) #ff00ffff
green #008000ff
grey #808080ff
lightblue #add8e6ff
lime #00ff00ff
magenta (same as fuchsia) #ff00ffff
maroon #800000ff
navy #000080ff
olive #808000ff
orange #ffa500ff
purple #800080ff
red #ff0000ff
silver #c0c0c0ff
teal #008080ff
white #ffffffff
yellow #ffff00ff

 

'Unity' 카테고리의 다른 글

iOS14 그리고 IPV6..  (0) 2020.10.22
Application.persistentDataPath  (0) 2019.07.31
Android Native 에러로깅 추적할때.  (0) 2018.05.17
작업시 정리했던 메모들  (0) 2018.04.26
Vector3.Lerp 함수에 대해.  (0) 2017.04.29

WRITTEN BY
빨강꼬마

,

안드로이드에서는 WRITE_EXTERNAL_STORAGE 권한이 있느냐 없느냐에 따라, Application.persistentDataPath의 경로가 달라진다.

 

오늘 해당 권한이 없는 상태에서 앱 진입후 런타임 퍼미션을 통해 해당 권한을 얻었음에도 Application.persistentDataPath의 경로가 올바르게 리턴되지 않는 현상, 즉 권한을 획득하기 이전의 경로로 리턴되는 현상이 발생되었다.

 

이럴 경우 처음 앱을 실행한 상태에서 Application.persistentDataPath을 사용하여 파일을 쓰거나 리소스를 저장하게 되는데, 두번째로 앱을 실행하면 권한을 이미 획득한 상태에서 올바른 Path를 획득하게 되므로 첫번째 실행시 저장된 파일을 찾지 못하는 현상이 발생하게 된다.

 

테스트 조건은 갤럭시S10.

 

클라이언트단에서는 처리가 어려운 문제라 골치 아팠는데 마침 알림으로 소프트웨어 업데이트가 떠있길래 업데이트 후 재테스트한 결과 위와 같은 현상이 사라짐...

 

망할 커펌.....

'Unity' 카테고리의 다른 글

iOS14 그리고 IPV6..  (0) 2020.10.22
Unity Debug.Log 시 사용가능한 컬러  (0) 2019.12.11
Android Native 에러로깅 추적할때.  (0) 2018.05.17
작업시 정리했던 메모들  (0) 2018.04.26
Vector3.Lerp 함수에 대해.  (0) 2017.04.29

WRITTEN BY
빨강꼬마

,

기수 정렬

C#/Tip 2019. 4. 5. 11:56

 

'C# > Tip' 카테고리의 다른 글

로그에 뜨는 경고 해제하기  (0) 2017.04.03
Image를 Base64 String으로 변환  (0) 2016.08.24
메소드 확장  (0) 2016.08.24

WRITTEN BY
빨강꼬마

,

코루틴을 이해하고 있는지 알아보는 문제.

만들었던 나조차 한번 틀렸다-_-...


아래와 같은 코드가 있다고 가정하고

콘솔에 찍히는 숫자를 순서대로 나열하면? (당연히 머리로만 계산해서+_+)


using System.Collections;

using UnityEngine;



public class Test: MonoBehaviour

{

    private void Start()

    {

        StartCoroutine(Test1());

    }


    IEnumerator Test1()

    {

        Debug.Log("1");

        IEnumerator enumerator = A();


        Debug.Log("2");

        while (enumerator.MoveNext())

        {

            Debug.Log("3");

            yield return null;

            Debug.Log("4");

        }

        Debug.Log("5");

    }


    IEnumerator A()

    {

        Debug.Log("6");


        yield return false;


        Debug.Log("7");


        yield break;


        Debug.Log("8");

    }

}




WRITTEN BY
빨강꼬마

,

NDK의 addr2line.exe 파일을 사용해서 에러난 스택의 메모리값을 통해 소스코드의 어느 부분에서 에러가 나는지 추적할수 있음.

'Unity' 카테고리의 다른 글

Unity Debug.Log 시 사용가능한 컬러  (0) 2019.12.11
Application.persistentDataPath  (0) 2019.07.31
작업시 정리했던 메모들  (0) 2018.04.26
Vector3.Lerp 함수에 대해.  (0) 2017.04.29
NGUI와 유니티 파티클 시스템.  (0) 2017.04.21

WRITTEN BY
빨강꼬마

,

역시 NDC가 꿀이네 ㄷㄷㄷ


http://www.inven.co.kr/webzine/news/?news=198239&sclass=0&page=2


WRITTEN BY
빨강꼬마

,

R, G, B의 평균값(float)를 Albedo(또는 Emission)에 할당하면 됨.


RGB to YIQ 변환방식

GrayScale = 0.2989 * R + 0.5870 * G + 0.1140 * B



void surf (Input IN, inout SurfaceOutputStandard o) {

fixed4 c = tex2D (_MainTex, IN.uv_MainTex);

fixed4 d = tex2D (_MainTex2, IN.uv_MainTex2);

// float temp = (c.r + c.g + c.b)/3;

// float3 grey = float3 (temp, temp, temp);

// float3 grey = 0.2989 * c.r + 0.5870 * c.g + 0.1140 * c.b;

// float3 grey = (c.r + c.g + c.b)/3;


o.Albedo = grey;

o.Alpha = c.a;

}


WRITTEN BY
빨강꼬마

,