Binder가 안드로이드에서 사용되는 방법은 2가지

  • IPC
  • RPC

 

Binder를 사용하는 모든 서비스는 안드로이드 부팅시 혹은 클라이언트가 서비스를 요청하기 전에 반드시 Service Manager에 등록해야 한다. 

ServiceManager는 Binder 노드 0을 차지한는 context manager로 동작하며, 이는 Binder 드라이버에 등록된다. 

 

Binder Server 

  • Service Manager에 등록 
  • 통신용 Thread Pool 동작 
  • Binder Client 접속 대기 

 

Binder Client 

  • 서비스를 받는 Binder 서버 번호를 service manager에 물어본다. 
  • 해당 node 번호를 사용하여 서비스를 요청 (Binder 서버 접속)

 

실행 순서 

  1. Binder 드라이버 초기화, init 프로세스에 의해 service manager가 binder에 등록되어 실행됨 
  2. Server 프로세스(Service A)가 ServiceManager를 이용하여 Binder 드라이버에 전달됨  (addService("A"))
  3. A는 등록된 이후에 onTransact()를 이용하여 클라이언트의 요청 처리 준비, 이에 접근하는 application 프로세스가 Service Manager를 이용하여 위에서 등록된 A의 인터페이스 handle을 할당 받는다 (getService("A"))
  4. ServiceManager와 Binder 인터페이스를 이용하여 application이 service A에 접근 가능 → application은 A로 transaction을 이용하여 IPC 및 RPC 호출을 수행 

 

IServiceManager.h : Binder 등록과 서버 Binder로의 접속에 관련된 class 

 

출처 : 안드로이드의 모든 것 분석과 포팅

1. 소프트웨어 마에스트로 13기

올해 1월에 서류 접수를 하고 3월달에 코딩 테스트를 진행했다. 

결론부터 말하면 코테 2차까지 합격했지만 면접에서 떨어졌다... 

 

자소서 

[자기소개1] 소프트웨어분야 전문성을 키우기 위해 남들과 달리 특별한 노력을 한 경험을 서술하여 주시기 바랍니다.

-> 나는 3학년 여름방학 때 백엔드 스터디로 간단한 게시판을 만든 것이랑, 산학연계 프로젝트 진행중인 내용, 학교 수업 주에서 mp3 플레이어 만든 것을 적었다. 

어떤 경험이든 프그래밍을 어떻게 했는지 보여주면 될 것같다. 

 

[자기소개2] 귀하의 장래희망을 서술하여 주시기 바랍니다.

-> 나는 이걸 약간 윤리적인 내용으로 해석해서 적었다. 백엔드 개발자이더라도 어떠한 프로그램을 만들고 싶다, 어떤 자세로 개발하겠다 이런 내용..

 

[연수계획서 1] 귀하께서는 2022년도 「SW마에스트로」 과정에서 동료 연수생들과 협력하여 새로운 프로젝트를 완성하여야 합니다. 어떤 능력을 갖춘 연수생들과 어떠한 프로젝트를 어떻게 수행할 것인지 귀하의 구체적인 계획을 서술하여 주시기 바랍니다.

-> 예전에 학교 수업에서 추천 시스템 알고리즘 배운게 재밌었어서 그 내용을 바탕으로 추천 시스템을 만들고 싶다고 적었다.

 

[연수계획서 2] 2022년도 「SW마에스트로」 과정에서는 연수생에게 장학금, IT기기, 프로젝트 활동비 등을 지원할 예정이며, 본인이 희망하는 온라인 강의와 프로젝트 수행을 도와주는 멘토를 통해 귀하의 SW능력을 향상 및 발전시킬 수 있는 기회를 제공하고 있습니다. 앞으로 귀하께서 본 과정을 통해 이루고자하는 목표가 무엇인지 구체적으로 서술하여 주시기 바랍니다.

-> 실무에서 어떻게 프로젝트를 관리하는지 배우고 싶고, 다른 사람과 교류하고 싶다는 내용으로 적었다.

 

1차 코테

알고리즘 6문제, 웹 1문제 SQL 1문제를 2시간 동안 풀어야 했다. 

문제는 유출하면 안되기도 하고 정확히 잘 기억은 안난다.. 

SQL 문제 하나 푼걸 합쳐서 3솔인가 4솔인가 했던 걸로 기억한다. 

 

2차 코테 

알고리즘 3문제, 웹, SQL 각각 1문제가 출제되었다. 

SQL 문제는 간단하게 생각했다가 틀렸고, 알고리즘 2문제만 풀었던 걸로 기억한다(2솔)

근데 이번에 코딩 테스트가 어려워서 다행히도 2차 코테까지 합격했다.

 

문제는 면접에서 떨어졌었다... 

불합격하고 나니 마음이 너무 힘들었는데, 더 좋은 기회가 있겠지 하면서 스스로를 다독이려고 했다. 

(그런데 지금 와서 생각해보니 진짜 너무 아까워서 더 열심히 준비할 걸 후회가 되기도 한다..)

 

2. 카카오 Tech 인턴 

자소서 

프로젝트 수행 이력과 자기소개서를 작성한다. (4/11~5/2)

프로젝트 수행 이력은 이전과 마찬가지로 게시판 만들었던 것과 졸업작품에 대해서 작성했다. 

자기소개서에는 학습한 전공과목과 주요 활동을 적는다. 

 

학습한 전공과목은 서버, 백엔드쪽 지원해서 이와 그나마 관련성 있는 컴퓨터 네트워크, 데이터베이스, 빅데이터 처리 및 응용에 대해서 적고 어떤 과제를 했는지도 간단하게 적었다.

 

주요 활동은 교내 스터디부터 크고 작은 확동을 거의 다 적었다. 

 

아무래도 중간고사 끝나고 부랴부랴 작성하느라 자소서를 잘 못 적은 것같아서 여러모로 아쉬움이 남았다..

 

1차 코딩 테스트

5월 7일 오후 2시부터 7시까지 진행했다.

솔직히 1, 2번 문제는 코딩 테스트를 조금이라도 준비한 사람이라면 풀 수 있을 정도로 난이도가 어렵지 않았다. 

나도 1, 2번 문제를 합쳐서 거의 1시간 ~ 1시간 30분 만에 풀었다. 

 

그래서 남은 문제 중에 하나는 3시간 반동안 풀 수 있을 줄 알았다... 

그런데 3번 문제가 너무너무 어려웠다.. 

카카오는 테스트 케이스를 몇 개나 맞췄는지 보여주는 데,

아무리 예외처리를 해도 테스트 케이스 3~4개 정도만 통과하고 다 실패했다... 

솔직히 중간고사 기간 동안 코테 준비를 쉬기도 했고,

이 시기가 졸업 작품 마무리하는 시기여서 정말 정말 바뻐서 코테 준비할 시간이 너무 없었다. 

그래서 그런지 몰라도 3번 문제를 못풀고 코딩 테스트를 마무리하게 되었다..

지금 생각해보면 차라리 3번 문제를 넘기고 다음 문제를 먼저 풀걸 하는 후회도 남는다..

괜히 카카오 코테 문제는 난이도 순이라는 말을 들어서 붙잡고 있다가 손해를 봤던 것같다. 

괜히 카카오 문제가 제일 어렵다는 말이 나온게 아니라고 느꼈다.. 

 

여러가지로 아쉬움이 남지만 결국 코테 준비를 열심히 할 수 밖에.. 

 

 

3. 우아한 테크 캠프 

서류접수는 먼저 하지 않고, 코딩 테스트를 먼저 진행한다.

코딩 테스트와 과제 테스트를 모두 통과해야 서류를 접수할 수 있다..

 

솔직히 말하면 우테캠과 우테코를 헷갈려서 지원하게 되었다..

그래도 서류에 대한 부담이 없고 코테 연습도 할겸 코테를 보게 되었다. 

 

1차 코딩 테스트

1차 코딩 테스트는 5월 8일 오후 1시부터 3시 30분까지 진행했고, 외부 검색 비허용으로 기억한다.

우테캠은 웹 풀스택은 js, 안드로이드는 java 또는 코틀린으로만 코테를 볼 수 있다. 

 

원래는 풀스택을 지원하려다가 js로 코테문제를 풀 자신이 없어서 안드로이드로 지원했다. 

java로 코딩 테스트 문제를 풀었고, 문제는 4문제가 출제되었다. 

1,2,3 번 문제는 매우 평이한 수준(백준 실버 수준)으로 출제되어 3번까지는 풀었다. 

문제는 4번 문제가 좀 어려웠던 것같다 (솔직히 좀 오래되어서 기억이 안된다.)

4번 문제를 풀기에는 시간이 많이 안 남았어서 그냥 1~3번 문제만 검토하고 끝냈다. 

 

그리고 1차 코딩 테스트에서 합격했다. 

 

과제 테스트 

과제 테스트는 코틀린으로 모바일 앱 화면을 3개 정도를 4시간동안 구현하는 것이었다. 

그런데 나는 코틀린은 기초적인 수준으로만 다룰 줄 알아서 시간 내에 구현하는 것이 어려웠다. 

그리고 노트북이 안드로이드 스튜디오를 돌리기에 매우 사양이 나빠서... 

초기 설정을 하는데만 1시간이 넘게 걸렸다.... 

 

그래서 과제 테스트는 미제출로 마무리하게 되었다. 

 

사실 처음 우테캠에 지원했을 때도 과제 테스트에서 통과 못할 것을 예상하고 있어서, 

딱히 미련은 없었다. 

 

 

상반기에는 이렇게 3군데를 지원했다. 

이번에 네이버 인턴도 지원을 받고 있어서(6/15일까지) 인턴를 넣을까 고민하다가,

좀 더 지원서를 잘 준비해서 지원하고 싶어서 공채에 도전해보기로 했다... (네이버는 인턴과 공채 둘 중 하나만 지원 가능)

 

사실 이 시기에는 어디든 인턴을 준비하고 있을 줄 알았는데,

아직도 인턴도 못 구하고 방학 일정이 정해지지 않아서 좀 마음이 답답하다.. 

 

그래도 남은 시간동안 열심히 해봐야지..  

 

지난 5월 26일 전시회, 6월 10일 최종 보고서 제출을 마지막으로 산학 연계 프로젝트를 완료하였다. 

프로젝트를 완료하고도 기말고사 때문에 정신이 없어서 이제야 후기를 작성한다.. 

 

5월 26일 전시회 사진 

오전 10시 30분부터 오후 3시까지 진행했다. 

오전 11시 30분에 개회식을 시작하고 오후 1시부터 심사위원분들이 부스를 돌아다니면서 설명을 듣고, 프로젝트를 평가받았다. 상위 7팀에게는 상장과 상금을 부여한다. (총장상, 최우수상, 우수상, 장려상 순)

남은 시간동안은 부스에 방문하는 분들에게 프로젝트를 소개하는 시간을 가졌다. 

또는 전시회 다른 한 편에서 진행하고 있는 Job Fair에 참여하기도 했다.

 

사실 우리 팀은 플랫폼으로 프로젝트를 진행했고, 플랫폼은 평가를 잘받는 편이 아니여서 (보통 신기술인 인공지능, VR, 딥러닝쪽에서 평가를 더 잘 받는다) 상에 대한 기대는 내려놓고 있었다. 

 

게다가 바로 옆 부스가 VR로 신생아 키우기 시뮬레이션을 주제로 프로젝트를 진행했는데, 너무 잘했고 그 부스에 시선이 많이 쏠렸었다. (학교 방송팀에서도 그쪽 사진을 많이 찍어서 사진기를 피해다니라 바빴었다..ㅎㅎ) 

 

 

 

 

그런데!!!

너무 영광스럽게도 우수상을 받게 되었다. 

전시회 이전에 지도 교수님과 면담을 할때도 

'바로 출시해도 될 것같다. 너무 과하게 잘해서 오히려 팀원들이 너무 힘들었던 것은 아닌지 걱정된다.'

라는 평을 받았었는데, 심사 위원분들도 프로젝트의 규모와 완성도를 좋게 봐주신것 같다. 

 

개인적으로는 조금 아쉬운 부분이 있기도 하고, 너무 힘들기도 했지만 약 1년동안의 노력이 보답받은 것같아서 기뻤다. 

같이 고생해준 팀원들에게도 다시 한번 감사하다. 

 

프로젝트를 진행하는 데 집중하느라 블로그 글을 많이 못 썼는데, 

이제부터라도 조금씩 회고하며 정리해보려고 한다. 

 

여담으로 프로젝트 서버를 업체측에서 감사하게도

특별한 일이 없으면 닫지 않겠다고 해주셔서 사이트에 아직도 접속 가능하다. 

(다만, 이걸 그냥 공개하기에는 악의적인 공격을 받을 수 있지 않을까하는 우려가 있어서 

신뢰할 수 있는 사람에게만 공개하려고 한다)

 

 

음... 후기를 적기 전까지만 해도 할 말이 많이 남아 있었던 것같은데,

막상 쓰려고 하니 무슨 말을 쓰려고 했는지 기억이 잘 안난다.ㅎㅎ 

 

그러므로 전시회에 대한 후기는 여기서 끝

아래 사이트 접속

https://mvnrepository.com/

검색창에 추가할 라이브러리 검색 (예시로 lombok 검색)

찾는 라이브러리 선택

버전을 클릭

gradle, maven 등 본인의 프로젝트에서 사용하는 방법으로 라이브러리를 추가할 수 있다. 

나는 주로 gradle을 이용하는 데, 구글링을 하다보면 maven을 사용하는 사람들이 많다. 

그럴때 이 사이트에서 라이브러리를 검색해보고 추가하면된다.  

+ Recent posts