md

주말 서버 테스트를 위해서 API 구현 & iOS 빌드 테스트

서버에 업로드할 유저 데이터를 가다듬고 있던 중 @_@

57% 했는데. ( 정확히 그만큼 .. 어림이 아니라 변수 개수를 셌음)

  1. 오늘 안에 어짜피 못할 것이고
  2. 주말에 보통 서버개발자 (외주인력) 님이 작업을 폭풍으로 해놓으시기 때문에

오늘은 모든 API 구현을 가다듬고 테스트 하기로 했다!

유저 데이터 업로드 기능이 얼기설기 구현되어있어서 잘 정리하고

구조나 설계, OOP 적으로 개선했다.

유저 단일 데이터

public class UserDatum
{

    string Key;
    string TypeString;
    string Value;

    public UserDatum(string key, string type, string value);
    public string GetKey();
    public string GetServerSupportedValueString();  
}

( 구체적인 구현내용은 회사 기밀 이라 생략합니다. )

목표는 다음과 같았다.

  • 일단 만들면 변조 가능성이 없어야한다.
  • 쉽게 wwwForm에 싣을 수 있도록 string 함수를 빼놓는다.
  • 업로드는 UserDatum[] 을 인자로 던져서 , 업로드 할 데이터만 골라 올리도록 했다. ( 서버단에서 구현된 내용 )

팝업 매니저 인터페이스

public interface IPopUpMessenger
{
    void PopError(string content);
    void PopText(string content);
}

목표는 다음과 같았다.

  • 통신의 결과와 에러 등을 유저와 테스터에게 알려 줄수 있어야 하는데, 일일히 파편적으로 구현할 수 없다.
  • 어짜피 스트링 값을 띄우는 정도의 기능에 집중한다.
  • 통신부 함수에 그때 그때 상황에 맞는 인자로 이 인터페이스를 가진 객체를 던지도록 해서, 활용성과 재사용성을 증대시킨다. 사실 이게 제일 맘에 든다. 원래는 추상 클래스로 구현하려다가, 인터페이스가 좀 더 명확하다는 걸 알게 되었다. 테스트 빌드 용 팝업 매니저에서는 텍스트에 입력 string 계속해서 더해서 지난 로그도 볼 수 있게 한다.

로딩 서클 인터페이스

public interface ILoadingCircle
{
    void Show();

    void Hide();
}

통신 중일 떄 (남은 시간을 알 수 없는 로딩), 뱅글 뱅글 돌아가거나 지금 로딩중이고 ANR이 아니라는 것을 알려주기 위한 객체가 가져야할 인터페이스.
코드가 단순하지만, 대칭성을 갖추어 굉장히 우아하게 나왔다. (자화자찬ㅎㅎ)

무한으로 크기가 변하는 스크롤 텍스트 구현

UGUI.TEXT 컴포넌트를 가진 오브젝트에 ,

[ UGUI ] -> [ Content Size Fitter ]를 컴포넌트로 달고 , -> [ (enum) Vertical Fit ] 항목을 [ Preferred Size ]로 설정해준다.

지난번에도 혼자 구현해보려고 하다가 기능을 잘 몰라서 실패했는데, 이번에 알아냈다.

유니티 API에서

[ Preferred Size ] 가 의미하는 건 뭘까 @_@.. 혹시 전통적인 이름일까?

당연히 공부목록에 넣었다.

유저 데이터 업로드 함수 개선


void Upload(UserDatum[] userData,
    IPopUpMessenger popUp, Action<UnityWebRequest, IPopUpMessenger> onSendEvent)
    { }

목적 :

  • 최대한 코루틴이 쓰기 싫었다.
  • 함수 하나를 호출해서 깔끔하게 끝나고 싶었다. ( 위랑 비슷한데, 코루틴 기다렸다가 일드로 넘기는 등의 호출을 고수준에서 사용하기 싫었다)

업로드 테스트 드디어 성공 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

신난다.. ㅎㅎㅎㅎ 오늘 일을 좀 열심히 한듯.. 재밌기도 했고 나름의 챌린지도 있었고 발전도 있었다. 콜백 스킬이 ++ 된 것 같음. 콜백 넘나 조음

운동

push up 13 !

이젠 아침에 하기로 했다.