지우의 성취, 다르게 자라는 아이들

지우 학교에서 9학년이 되면 오케스트라를 하던 아이들은 상급 오케스트라에 들어가기 위한 시험을 본다. 딱히 차별을 두는건 아니지만 오케스트라는 아무나 갈 수 없기 때문에(악기를 다루어야 하므로), 입학 때 오케스트라에 들어가지 않으면 나중에 들어가는것은 아주 어렵다.

5,6,7,8 학년 동안 오케스트라 생활을 하면서 9-12학년동안 상급 오케스트라를 하게 되는데, 이 또한 시험을 봐야 하고 여기서 떨어지면 합창단이나 실용음악을 하는 곳으로 가야 한다.

오늘 있었던 그 시험에 지우는 당당히 합격하고 왔다. 그것도 1st 바이올린으로!

처음 이 학교에 올 때만 해도 바이올린 초보 티를 벗지 못해서 2nd 바이올린으로 시작했는데 상급 오케스트라 합격 뿐 아니라 1st바이올린, 그리고 전에 악장하던 아이와 단 1점 차이로.. 9학년 이후로 열심히 하면 악장도 노려 볼 수 있게 되었다. 실력이 비슷했던 한 친구는 상급오케스트라에 들어가지 못하게 되었다고 한다.

여기서 내가 너무너무 자랑스러운 것은, 나와 정은이는 단 한 번도 지우한테 바이올린 연습을 하라는 말을 해 본적이 없다는 것이다. 오로지 스스로 연습하고 노력해서 얻은 결과이다. 물론 공부도 마찬가지다. 반에서 아마도 1,2등을 다투는 듯 한데, 우리는 지우가 언제 시험을 보는지 뭘 하는지도 잘 모른다. 혼자 공부하고 결과만 듣는 경우가 많다. 어느 순간 부터 너무 바빠져 버린 지우.. 무엇을 하나 보면 독서, 뜨개질, 공부, 운동, 바이올린, 핸드폰 영화 감상 등 정말 단 한 순간도 낭비하지 않고 꽉 채워 보내고 있다.

어릴 때 부터도 에너지가 넘쳐서 감당이 안되었는데 그 에너지를 이렇게 올바른 방향으로 쓰고 있다는 사실과 그로 인해 본인 스스로 많은 것들을 성취하고 있으니, 바로 이 부분이 너무 너무 자랑스러운 것이다.

지우 뿐 아니라 호야와 시우도 학교에 다녀오면 자기 자랑 하기 바쁘다. 세 아이들이 이루는 작고 큰 성취들에 정신이 없을 지경이다.

우리가 한국에 있었다면 아이들을 이렇게 키우고 있었을까? 지금 처럼 혼자 스스로 할 수 있도록 기다려 주고 옆에서 지켜봐 줄 수 있었을까? 아이들이 잘 하고 있다는 한 가지 사실만으로 너무너무 다행이라는 생각이 든다.

[GameShell] 1차 구현

오잉.. 언제 시간이 이렇게 지난건지… 지난 번 목표 중 구현 된 부분들

  • Authentication
  • Local action process
  • Dynamic data
  • Static data
  • Local data
  • Shortened key
  • External asset

에셋관리는 실제 게임이 아니니 흥이 나지 않는다. 그래서 일단 보류. 한다면 Addressable + CCD 를 써야겠지? 근데 Addressable은 데이터가 캐시에 있어도 불러오는 딜레이가 조금 있던데 그 이유를 당췌 모르겠다.

1차 목표에는 없었지만 그 외 구현 사항으로

  • 전체 로직 개선, 개선, 개선
  • IPA 수동빌드 및 TestFlight upload

로직 개선이 조금 보람있었던 부분인데, 노출된 함수를 최소화 하고, 사용자 입장에서 디테일한 처리를 신경쓰지 않도록 구현했다. 사용자 정보를 건드리는 모든 콜은 히스토리를 남겨 서버와 자동으로 연동 되도록 하였다. 이 부분은 계속 개선이 필요한데 프로젝트 시작 전에 개선을 하면 할 수록 실제 프로젝트 구현과 유지보수에서 아낄 수 있는 시간은 어마어마 할 것이다.

다음 목표

  • 디버그 메뉴 만들기
  • 시간 디버그 가능하도록
  • 기본 설정 UI로 설정 Flag 테스트
  • 푸시/토큰 테스트
  • 게임센터 로그인(타 계정 로그인 연동)

그 다음에 실제 UI구현으로…?

목표는 6월 말까지!

호야도 핸델 김나지움으로..

지우에 이어 호야도 핸델 김나지움에 합격했다.

핸델 김나지움의 특징은 학교 이름에서도 알 수 있지만 음악에 특성화 된 학교이다. 모든 학생들이 오케스트라나 합창단 혹은 실용음악과 같은 음악활동을 의무적으로 해야 하고 때때로 이 음악활동이 학업보다 우선할 때도 있다. 그렇다고 학업 성적이 뒤쳐지는건 아니다. 늘 베를린 아비투어 성적에서 최상위권에 들어있는 학교 중 하나이다.

그럼 학교에서 ‘특별히’ 뭔가를 더 가르치느냐 하면 그것도 아니다. 학교 분위기 자체가 그냥 그런 분위기 일 수 밖에 없는게 어려서부터 이런 저런 악기를 시키는/좋아하는 집에서 자란 학생들이 모였으니 그 분위기가 다른것 같다. 아이들 교육에 극성인 가정도 많지만 여유있게 삶을 즐기고자 하는 가정도 많다. 여느 10대 아이들 처럼 일탈도 하고 방황도 하지만 그 정도가 심하지 않는것 같다.

나와 정은이한테 중요한 것은 바로 이 부분이다. 음악도, 공부도 중요하지만 아이들이 세상의 전부 혹은 대부분으로 느끼는 가정과 학교가 어떻게 보이는지에 따라 자신의 기준을 결정할 수 있기 때문이다. 이곳에서도 같이 시작했지만 1-2년이 지나 굉장히 다른 방향으로 가는 친구들이 보인다. 처음의 그 작은 차이는 아마도 가족과의 관계나 관심의 차이에서 시작되었을 것이다.

지우는 이 학교에서 더 얻을게 있을까 싶을 정도로 열심히 그리고 잘 하고 있다. 호야 또한 그렇게 되리라 믿어 의심치 않는다. 엄마아빠한테 먹이만 받아먹던 아기새에서 이제 자신이 날 수 있을지 시험해 보는 작은새로 성장한 호야. 무엇이든 다 경험해 보고 즐기고 도전하고 또 실패해 보는 시간을 가졌으면 좋겠다.

[GameShell] 설계

지난 개발일지 이후 가족들의 코로나 감염, 그리고 간만의 몸살(코로나는 걸리지도 않고..), 그 직후 10여일간의 부활절 가족 여행, 부모님 방문까지 연이은 이벤트로 모든 개인프로젝트가 중단되었었다.

nocnoc 서비스 아이디어를 조금 더 구체적으로 정리하는 동안 유니티로 게임 프레임워크를 만들기로 했다. 사실 지금 하는 프로젝트의 프레임워크를 조금 더 모듈화 되고 범용적으로 만드는게 목표인데, 연초에 이미 2주정도 시간을 들여 정리한 바 있다. 그 프로젝트를 이어서 진행할까 생각했는데 당시 UI 와 테스트 모듈까지 다루려던 욕심에 코드가 명확히 분리 되지 못했던 기존의 문제를 그대로 가지고 있었기에 다시 처음부터 만들기로 했다.

먼저 모든것을 잊고 모바일 게임의 기본 로직을 구성하는 프레임워크와 지원 라이브러리를 구성하는 것을 목표로 했다. 범용성 있게 설계하지만 너무 이 주제에 집착해서 개발 속도가 느려지는 일이 없도록 주의했다. 기본 구성은 현재 진행하는 프로젝트와 마찬가지로 JSON 기반의 자료 정적/동적 자료 저장과 로컬 액션 기반의 사용자 액션 히스토리 구성을 통해 클라이언트에서의 독립성과 서버 검증을 함께 처리하려고 한다.

사용되는 SDK들은 동적으로 이용할 수 있도록 인터페이스를 설계하고 최대한 실 사용자가 자동화된 방식으로 사용할 수 있도록 했다. 결과적으로 사용자는 자신이 사용하고자 하는 자료구조와 로컬 액션을 처리하는 클라이언트/백엔드 페어 로직을 작성하면 나머지 부분은 프레임워크가 알아서 처리해 주는 식이다.

이번 프로젝트에서 가장 의미없이 많은 시간을 투자해야 했던 백엔드 부분의 버그처리나 테스트가 모듈화 되어 이루어질 수 있는 기반이 만들어 지는 것이다. 클라이언트에서도 훨씬 간결해진 프로세스를 통해 실제 유저가 Crash 나 ANR을 경험할 경우 쉽게 재현이나 문제가 되는 포인트를 리포트하고 디버깅 할 수 있을 것이다.

1차적으로 구현할 기능은 다음과 같다. 샘플 사용 백엔드는 Firebase 로..

  • Authentication
  • Local action process
  • Dynamic data
  • Static data
  • Local data
  • Shortened key
  • External asset

1차 기능 구현이 완료되면 기본 UI Framework 을 만들어 볼 생각이다. 이 역시 코드와 UI 가 분리되고 모듈로 동작할 수 있도록 구현 예정.

그 외 기본 구현 예정 기능들

  • Force update
  • Force kick-out
  • Dynamic data sync
  • Push notification
  • IAP
  • Subscription
  • Reward Video
  • Google/Apple/Facebook login
  • Switch account
  • Sound/Haptic control
  • Localisation

이미 구현해 본 기능들이고 개선 방향을 알고 있으므로 구현에 문제는 없어보이지만 어떤 방식으로 모듈화 할 지가 고민이다. 물론 고민에 시간이 너무 걸린다면 일단 구현해 놓고 볼 문제… 1차 구현 목표는 이번 주말 전 까지.

[nocnoc] Edit post

간단한 포스트 수정 기능 추가.

39도까지 열이나서 병가를 냈다. 이 회사로 옮겨 2년만의 첫 병가… 독일 회사에서 기본 10일은 병가로 쓰는데 나는 뭐 이리 열심히 일하는지 모르겠네. 아스피린 먹고 파라세타몰 먹고 땀 뺀다음 열이 좀 내려서 얼른 기능 추가.

이 다음은 무엇을 해야 할까?

  • 화면 전환 효과
  • 카테고리(룸) 만들기
  • 이미지 에디터
  • 사진 선택
  • 잠금
  • 백업
  • 공유
  • 사용자 기본 관리 메뉴

[nocnoc] 썸네일

원본 사진으로 그리드 뷰에서 너무 느리기 때문에 포스트 저장 시 썸네일 생성. 원본사진 보기에서도 쓸 때없이 큰 사진을 볼 이유가 없으므로 상세보기용 중간크기 리사이즈 이미지도 생성. 그럼 원본 파일은 언제 사용? 그냥 백업용으로 일단 저장.

추후 이미지 에디터가 들어가면 이것들을 어떻게 처리할 지 고민해 보도록 하자. 썸네일 만드는데 의외로 시간이 걸려서 오버레이 로딩 스피너도 집어 넣음.

오늘 몸 컨디션이 최악인데… 그래도 무조건 1일 1기능 추가..아무리 작은 기능이라도 꼭 추가하는 것을 목표로 한다..

[nocnoc] delete post

delete post

image 파일도 함께 지워야 한다.

TODO

  • 처음 포스팅 할 때 이미지는 임시저장소에 저장 후 포스트 저장 시 최종 저장소로 이동해야 함.
  • 삭제 확인 팝업
  • 다음 작업은 수정. 이미지 수정이나 교체 없이 텍스트만

[nocnoc] 이미지 저장

오늘은 여러 일이 많아 간단하게 imagePicker 에서 불러온 이미지 localStorage 에 저장만…

썸네일 만들고 이런것 보다 상세보기/수정/삭제 부터 만들어야 겠다.

[nocnoc] 기본 포스팅 저장/불러오기

출장 전 1주일 업무처리와 출장 1주일 때문에 2 주간 공백이 있었다. 빨리 배우는 대신 빨리 잊기 때문에 2주는 참 긴 공백… 다행히 가장 복잡한 부분의 구조를 계속 머릿속에서 생각하며 개선할 수 있는 시간이 있었다.

오늘은 실제 포스팅 저장 시 클래스 -> Json -> File system 으로 저장 한 후, 다시 불러오는 서비스 매니저를 작성했다. 실제 UI 컨트롤러에서는 저장/불러오기만 신경쓰고 인터페이스가 완성 되었으니 나중에 암호화를 하든 로컬 DB에 넣든 클라우드에 보내든 하면 된다.

유니티에 비해 Json 입출력이 조금 번거로웠지만 일단 JsonSerializer 로 사용. Json은 파일로 일단 저장했는데 realm local db에 통으로 넣는것도 좋을것 같다. 완벽을 생각하면 완성을 할 수 없으니 대략 큰 틀만 붙여나가는 형식으로 완성했다.

주로 프로그램 설계를 A4 에 낙서 하듯이 하거나 머릿속에 담아두는데 딜레이가 생기면 바로 잊혀지는 관계로 요즘은 원노트에 간단히 메모하거나 코드 속에 TODO로 할 일을 관리하고 있다. 실제 메타 정보 저장/불러오는 틀이 완성되었으니 앨범에서 가져온 이미지를 복사해서 로컬 저장소에 넣거나 공용저장소에 넣기, 압축, 썸네일 생성 등 이미지처리에 관한 기본 기능을 구현해야 한다.