고양국제고/셰어텍

[셰어텍] 13. 개발자는 야근이 운명

카루-R 2021. 12. 12. 20:51
반응형

환영합니다, Rolling Ress의 카루입니다.

시험 끝나고 밤을 더 새는 카루.

아직 Conet 개발이 한참 남아서 그래요.

오늘은 제가 개발하면서 했던 것들을 정리해보겠습니다.

1. SQL 서버 테이블 변경 및 UserInfo 변경

제가 사용하던 데이터베이스를 아예 갈아엎었습니다. Posts와 UserInfo 테이블을 따로 만들었어요.

Region(지역) 데이터는 날려버렸습니다. 닉네임, 아이디, 패스워드는 동일하게 동작합니다.

[SyncWithSQL]
public string NickName { get; set; } = string.Empty;
[SyncWithSQL]
public string ID { get; } = string.Empty; // ID is read-only
[SyncWithSQL]
public string? Password { get; set; } // Once logged-in, don't need to hold password
public bool IsLoggedIn { get; set; } = false;
[LocalSyncWithFile]
public uint Point { get; set; } = 0;

SQL에 저장되는 데이터와 로컬에 저장되는 데이터는 달라야겠죠. Attribute를 통해 해당 특성들을 부여해줬습니다. 뭐, 아무 의미는 없고 그냥 제가 보기 편한 정도겠지만요.

2. 프로그램 엔트리 변경

 
InitializeComponent();
Routing.RegisterRoute(nameof(ItemDetailPage), typeof(ItemDetailPage));
Routing.RegisterRoute(nameof(NewItemPage), typeof(NewItemPage));

mainTabBar.CurrentItem = mainTabBar_home;

맨 아랫줄을 추가했습니다. 저 코드를 통해서 지도 대신 메인페이지가 제일 먼저 뜨게 바꾸었고요.

3. Google Maps API 키 적용

// MainActivity.cs
Xamarin.FormsMaps.Init(this, savedInstanceState);
<!-- Properties > AndroidManifest.xml -->
<application android:label="Conet.Android" android:theme="@style/MainTheme">
	<meta-data android:name="com.google.android.geo.API_KEY" android:value="" />
</application>

지도 기능을 사용하기 위해 상당한 노가다를 저질렀습니다. 기존 안드로이드, iOS 프로젝트에서 Xamarin.Maps를 활성화해주는 코드를 넣어야 합니다. 추가로 안드로이드에서는 구글맵을 사용하기에, 구글 API까지 발급받아서 넣어줘야 합니다. 이건 제가 학교에 있는 동안 발급 신청을 따로 했고, 바로 사용중입니다.

4. 구글 맵과 핀 연동

지도의 목적은 시각화. 지리정보는 시각정보입니다. 고양국제고에 핀을 꽂아 "이곳에서 도움이 필요해요!" 라고 아주 강력하게 알릴 수 있도록 했습니다. 한 가지 아쉬운 건, 이게 System.Decimal 타입이 아니라 System.Double 타입을 파라미터로 받기에 정밀도가 약간 떨어진다는 점. 그래서 특정한 반의 좌표를 찍으면 약간 치우쳐 나타납니다. 어쩔 수 없어요.

5. 마이페이지 추가

굉장히 간단한 마이페이지입니다. 심지어 이름도 없네요.

오른쪽 위의 '수정'을 누르면 수정 페이지로 이동합니다.

뒤는 이 페이지를 만드는 데 사용한 코드이고, 앞은 결과물입니다. 위와 같이 만들어질 예정입니다. 저장하기 버튼을 누르면 저장 후 나갈 수 있고, 그냥 왼쪽 위 화살표를 누르면 저장하지 않고 나갈 수 있습니다.

6. 뷰모델 만들기

Xamarin.Forms 기반 앱들은 대부분 MVVM 패턴으로 구현되어 있습니다. Model - View Model - View의 순서로 구축되는 것이죠. 모델은 데이터, 뷰는 사용자 화면, 뷰모델은 그 중간입니다. 디자이너께서 뷰와 모델을 만들어주셨으니, 저는 그걸 가지고 뷰모델을 만드려고 합니다.

근데 사실 이게 제가 이해하려다 포기한 개념이긴 한데... 한 마디로 굉장히 어렵습니다. GGHS Time Table에도 적용하지 못한 게 바로 이 뷰모델 시스템이거든요..

뭐, 모델은 어렵지 않습니다. 그냥 데이터 몇 개만 집어넣으면 끝이니까요.

 
 

문제는 파일들도 엄청나게 많아지고 코드들도 상당히 길어졌다는 거. 이거 저 혼자서 관리할 수 있을까요...?

킹받는 거 또 하나. 이거 Route를 개발자가 직접 등록해줘야 합니다. 안 그러면 찾을 수 없다면서 런타임 오류 터져요. 이것 때문에 정말 몇 시간을 삽질을 했는지...하...

 
 
 
 

그래서 지금까지 만든 결과물. 맨 오른쪽은 아이폰 (iPhone 13 Pro, iOS 15.0)에서 구동한 모습입니다. 실기를 사용할 수도 있었는데.. 고개 돌리기 귀찮아서 그냥 에뮬레이터를 사용했어요. 램 32기가 설치하고 어따 씁니까? 이런 데에 써야죠

문제는 아직도 갈 길이 멀다는 거. 최대한 목업부터 빨리 완성하고 찾아뵙겠습니다.

반응형