앱 업데이트를 테스트 하기 위해서 내부 테스트 버전을 계속 올려가면서 테스트를 했었습니다. ㅠ_ㅠ
그러나, 이렇게 하면 매번 버전을 올리고 테스트하고 올리고 테스트 하고 하는 것을 반복 해야 하는데, 시간이 번거롭고, 고통 스러운 작업입니다.
그래서 알아보니, 내부 앱 공유를 통한 업데이트 테스트를 할 수 있는 방법이 있더군요.
이걸 해보려고 시도하다 몇시간 동안 끙끙 앓고 있었는데, 드디어 방법을 확실히 알게 되었네요.
1. 내부 앱 공유를 들어가면 이런 화면을 보실수 있습니다.
2. 여기에 링크 보이죠.. app bundle 업로드 할 수 있다고 되어있는 곳 링크를 선택합니다.
3. 높은 버전의 aab 파일과 낮은 버전의 aab 파일을 다 올려놓습니다.
- 테스트를 위한거니까. 버전 정보만 낮춰서 올리면 됨.
4. 낮은 버전의 링크를 카톡이나, 메일로 공유해서 설치 합니다.
- 이렇게 하면 공유에 높은 버전이 있어서 업데이트가 있다고 되어야 정상인데, 사실 그렇지 않습니다.
내부 앱 공유(Internal App Sharing)의 '버전 격리' 특성 때문
내부 앱 공유는 일반적인 Play 스토어 트랙(프로덕션, 베타, 내부 테스트)과버전 관리 체계가 완전히 분리되어 작동합니다.
현재 기기에 설치된 v1이 "내부 앱 공유 링크"를 통해 설치되었다면, 이 앱은 오직"내부 앱 공유에 올라온 더 높은 버전"만 업데이트 대상으로 인식합니다. Play 스토어 내부 테스트나 프로덕션에 아무리 높은 버전이 올라와 있어도 그것을 인앱 업데이트 대상으로 바라보지 않습니다.
문제는 내부 앱 공유로 올린 높은 버전의 패키지가 자동으로 인식 하는 것도 아니라는 것입니다.
이것 때문에 많은 시간을 허비했습니다.
내부 테스트로 버전을 올려보기도 하고, 프로덕트로 올려보기도 했고, 말이죠.
방법은 간단한데, 내부 앱 공유에 올라와 있는 높은 버전의 앱 링크를 , 카톡이나, 메일로 공유 한다음, 테스트하고자 하는 기기에서 해당 링크를 엽니다. (설치 아닙니다.)
그러면 구글 플레이스토어(기기에 설치된) 가 실행되어 해당 페이지를 열게 되고 높은 버전의 앱 정보를 캐싱하게 됩니다.
이렇게 해서 우리가 이미 설치한 낮은 버전의 앱에서 플레이 스토어 (서비스)가 새로운 버전이 있다고 앱에 알려줄 수 있게 됩니다.
요약하자면: 낮은 버전을 내부 앱 공유로 받으셨다면, 기기의 Play 스토어에 높은 버전 역시 내부 앱 공유 링크를 통해 한 번 '인식(링크 클릭)'시켜 주어야 인앱 업데이트가 작동합니다!
최근 아주 고도화 되어 휴머노이드가 사회의 구성원이 되었을 경우에 대한 글들을 읽다가 생각하게 된 내용이 있어서 적어봅니다.
AI와 로봇의 시대
우리는 종종 AI가 세상을 지배할것이다, 또는 AI와 함께 하는 삶이 될것이다. 라는 이야기를 듣게 될때가 있습니다. 그런 삶을 지금의 AI 발전 속도를 보면 충분히 가능할 것 같기도 합니다.
AI 와 인간의 역량을 보면, 극단적으로 차이나는 부분이 다음과 같습니다. - AI의 학습 능력은 인간은 비교 불가하다. - AI, 로봇은 쉬지 않고 일할 수 있다. - AI는 불만이 없다. - AI는 생명이 아니다. (인간보다 오래 살 수 있다.)
AI와 비교되는 인간 이라는 게 상당히 불편합니다.
그런데 더 고도화 된 미래를 그려보자면,
AI는 로봇과 결합 되고, 지능 뿐만아니라 감정도 가지고 있고, 인간과 교류한다. 로봇은 온갓 현장에 맞는 형태를 가지고 있다. 인간과 매우 유사한 휴머노이드가 인간과 함께 생활한다.
이런 생각을 해볼 수 있습니다. 저는 이렇게 AI의 이상적인 부분들과 부분적인 면만 놓고 보면, 월등한 능력을 가진 휴머노이드가 있는데, 인간과 휴머노이드는 공존할 수 있을까? 라는 의문이 듭니다.
먼저,
로봇과 휴머노이드를 분리해서 생각하겠습니다.
휴머노이드는 인간과 유사하게 지능과 감정, 스스로의 판단이 가능한 개체라고 정의하고, 로봇은 도구로서 인간이나 휴머노이드가 사용할 수 있는 기기, 장비 (스스로 의사결정을 할 수 없는) 라고 정의 하겠습니다.
미래 세상 깊게 보기
휴머노이드
미래를 더 깊게 상상을 더해보자면,
사회 시스템은 초지능 (초 거대) AI들이 운영하게 됩니다. (지구나 국가 차원의 정보의 양은 지금보다 수십 수백배 늘어나, 인간이 분석하고 효율적인 판단하는 영역을 벗어납니다.) - 지배 아닙니다 운영 입니다... 인간 사회 속의 휴머노이드 들은 특정 회사가 아닌 인간의 소유물이 되어 인간의 일을 대신하는 역할을 합니다. - 누군가가 구매해서 유지 관리하게 됩니다. 인간이 죽고 나면, 휴머노이드들은 폐기 됩니다. (순장? 같은 느낌) 더 이상 해당 휴머노이드의 관리를 위해서 비용을 지불할 존재가 없어졌기에 유지 할수가 없기 때문이겠죠.
그러나 이미 휴머노이드들은 사회,산업 현장 등에서 에서 맡은 일이 있기 때문에 이로인해서 사회적 공백이 발생합니다.
때문에 사회적 정치적으로도 인간이 죽고나서 해당 휴머노이드들의 사회 활동은 필요하게 된다.
- 주인이 죽었다고 갑자기 회사에 나가던 휴머노이드가 회사를 안나오면 사회적인 문제가 될 수 있음. - 교통 관제를 담당하던 휴머노이드가 어느날 부터 안나오기 시작, 해당 구역 일대의 교통상황이 마비됨. 휴머노이드에 대한 국가와 사회는 인간의 부속이 아닌 개별적인 존재(구성원, 국민) 으로 인정하게 된다. - 일을 하던 휴머노이드들이 계속 일을 해주길 기대 - 이로 인해서 휴머노이드들에게도 생존 전선에 뛰어들 수 밖에 없는 상황이 만들어진다. 이제는 휴머노이드들은 주인이 없기 때문에, 생존(?)을 위하여 재화가 필요하게 됩니다.
- 집, 에너지 충전, 수리, 이동 수단 등이 필요 결국 휴머노이드들도 돈을 벌어야 하는 사회가 됩니다.
휴머노이드와 공존 한다는 의미는 사회의 무게를 같이 짊어진다는 의미이다
미래 사회가 휴머노이드들을 사회 구성원으로 받아들이기 시작하면서, 그동안 휴머노이드들에게 없던 의무가 생기게 됩니다. 생활을 할수 있는 환경을 마련해야 되고, 에너지를 구매할 수 있어야 하고, 고장이 났을때 수리를 받기 위해 돈을 지불 할 수 있어야 합니다. 결국 직업이 필요하고 일을 해야합니다.
결국 휴머노이드 들 사이에서도 생산자와 소비자, 고객과 서비스 제공자가 생기게 됩니다. 초 거대 기업을 운영하는 휴머노이드가 생길 수 있고, 매장에서 상품을 판매하는 직원도 생길 겁니다.
또는 계급이 나뉘어 질수도 있습니다. 초 거대 시스템 운영자, 사화 인프라 관리자, 현장 업무 수행자 이런 형태로 말이죠.
그렇다면, 낮은 계급이거나 또는 좋지 못한 직업을 가진 휴머노이드의 삶은 어떨까요? 좋은 곳에서 수리를 받지 못해, 몸의 일부가 고장난 채로 일터에 나가게 되겠죠. 또는 값싼 수리점을 찾고 저렴한 부품으로 수리를 하겠죠. - 휴머노이드 수리점, 부품점들이 다양해질것입니다. (뭐 부품을 못구해서 범죄를 저지르는 그런 스토리도 있지만 일단은 빼고)
휴머노이드 서비스 직영점 값비싼 수리 로봇과 수리 장비들로 정품 부품을 이용해서 수리를 해줄것이지만 비쌉니다. - 수리 로봇은 그래도 휴머노이드 보다는 싸야겠죠. 값 싼 사설 수리점은 값 비싼 수리 로봇을 쓸수 없을것 입니다. 진단 장비와 사람 또는 휴머노이드가 직접 수리하겠죠. - 그런데 휴머노이드가 수리점에서 수리하는 것으로 자신의 생활을 감당할 수 있을까요?
인간을 지배하는 세상이 와도 인간은 필요하다.
인간은 환경에 지대한 영향을 받는 것 같지만 사실 로봇보다 훨씬 유리한 위치입니다. - 우리 세포는 제료(음식, 영양분)만 있으면 대부분 재생이 됩니다. - 로봇은 그렇지 못하죠. 부품이 마모 되면 그것으로 끝입니다. 물론 생체 로봇 같은게 나올 수도 있지만, 생체와 기계의 결합이라니 ,그런 로봇은 더 엄청나게 비쌀 겁니다.
말이 나왔으니 이야기 해보죠. 휴머노이드의 값은 얼마일까요? 생산 비용이 인간의 수십배일것입니다. (인간은 엄마랑 아빠만 있으면 ^^ 되죠. 엄마 아빠 감사합니다.) 부품만 해도 수천에서 수만개가 될 수도 있죠. - 얼마나 정밀한 로봇이냐에 따라 달라지겠지만, 아무튼 엄청 많은 수의 부품들이 있어야 되죠. 생산 비용이 엄청 비쌉니다. 따라서 가격을 낮출 수 있는 한계가 분명 존제 합니다.
인간의 필요성은 여기에서 나옵니다. 휴머노이드들 보다 저렴하게 사회를 지탱 할 수 있다는 것인데요. 고도의 지능과 정보를 다루는 것은 대규모 AI 센터와 휴머노이드 이지만, 이런 휴머노이드의 유지 보수를 위해서 사회적 비용이 저렴한 인간이 필요하게 됩니다.
왜 휴머노이드보다 인간의 인건비가 더 저렴할까요? 인간은 아팠다가도 쉬거나, 다른 일을 하거나 하면서 다시 자연스럽게 회복 될 수 있지만, 휴머노이드가 마모되어 고장이 발생하면 회복할 수 없습니다. 그렇기 때문에, 저렴한 일자리, 위험한 일자리는 휴머노이드에게는 기피 대상이 될 수 밖에 없습니다. - 식당 주방일 (마모, 녹), 지붕 수리 (추락 위험), 인형 눈알 붙이기( 너무 저렴) ....
휴머노이드 수리만 생각해봐도, 인간은 돈을 벌기 위해서 휴머노이드의 고장 부위나 마모된 부품 교체 같은 일을 할 수 있습니다. 하지만 휴머노이드가 다른 휴머노이드를 수리한다? 수리를 위해서 드라이버를 돌리는 것을 한다고 하면, 팔 하나에 들어있는 약 32개 정도의 관절과 이를 받쳐주는 구동계 등이 움직일 것이고, 이는 자신의 부품이 마모되거나 소모 되는 상황이 됩니다. 때문에 휴머노이드는 그 수리를 위해서 사용된 자신의 부품 마모도와 에너지를 더해서 수리비를 청구해야할것입니다. 만약 그렇지 못하면, 수리업으로는 생계를 유지 못합니다. 그래서 당연히 비싸게 받아야 겠죠.. 원가 경쟁령이 낮아질 것 같네요.
그럼 다시 한번 정리하자면, 지능, 정보, 기술 능력을 보자면, "휴머노이드 > 인간" 가격, 위험도, 유지보수 측면에서 보자면, "인간 > 휴머노이드"
이런 구도가 보입니다. 물론 위험하고 보수가 비싸다면, 휴머노이드가 더 잘 할 수 있을 겁니다.
마무리
저는 지금까지 "진짜 AI 시대가 되면 인간은 어떻게 살지?" 와 같은 질문에 저는 다음과 같은 생각을 가지고 있었습니다.
AI 시대에서 인간의 필요성 낮아질 것이다.
때문에 AI를 기업이 소유하지 못하게 해야한다. 초 거대 AI는 만들지 말아야 한다.
로봇 까지 나오면 일자리는 없는것이나 다름 없다.
기업은 로봇을 소유할 수 없고,인간이 로봇을 소유하고 해당 소유자와 기업이 계약을 맺고 보수를 인간에게 지불 해야한다.
이런 인간 중심의 정치적인 방향이 없이는 인간은 로못을 이길수 없고, 사회에서 필요성이 없어질 것이라는 생각을 했었습니다.
그런데 휴머노이드 사회에 대해서 고민하고 상상해봤을때는 공존이 가능 할 것도 같다는 생각이 많이 들게 되더군요.
휴머노이드 사회의 일부만을 조명해서 상상해본 것이라 많은 부분들이 고려되지 못했지만 말이죠.
물론 지구상에서, 국가에서 사회적 역할은 인간 중심에서 시스템 (AI, 휴머노이드) 중심으로 변화 하겠지만, 그래도 여전히 인간은 할일은 있고, 행복한 일을 찾아서 할 수 도 있을것 같습니다.
더 여러가지를 생각하다 보면, 인간이 휴머노이드와 경쟁하지 않는 분야도 있을 수 있고, 노동에서 벗어나 다른 꿈을 펼칠 수도 있을 것 같고, 인간으로서 만족하고 살 수도 있을 것입니다.
음식은 휴머노이드들은 욕심 내지 않을 것이니, 음식은 저렴해질 수 도 있겠죠. ^^ (그냥 생각해본것)
생각보다 휴머노이드 생산 대 수가 많지 않을 수도 있습니다. 너무 비싼 비용 때문에 말이죠.
여기까지, 휴머노이드가 세상에 등장하게 되었을떄 그나마 인간 세상에서 공존할 수 있을까 를 상상해 봤습니다.
(supabse 의 textSearch는 postgres의 ts_query 를 기반으로 만들어져 있다.)
그러나 문제는 client api로 단어 검색을 하려다 보면, 완성된 단어는 잘 검색이 되는데, 중간 단어는 검색이 잘 안됩니다.
완성되지 않은 단어의 경우에는 (Partial search 참조) 따로 RPC 함수를 만들어 사용하라고 가이드 되어있습니다.
Partial search# Partial search is particularly useful when you want to find matches on substrings within your data. Implementing partial search# You can use the :* syntax with to_tsquery(). Here's an example that searches for any book titles beginning with "Lit":
DB함수를 만들고 RPC로 호출 하는 것도 나쁘진 않습니다.
db 함수를 만들고.
select title from books where to_tsvector(title) @@ to_tsquery('Lit:*');
물론 공식 API에는 제공되는것이 아니라서 typscript lint에서는 에러로 보입니다. ㅠ_ㅠ
공식 문서에서는 plain, phrase, websearch 3가지만 제공 됩니다. 그리고 이것은 완성된 단어들의 조합만 검색 가능합니다.
때로는 위와 같이 완성되지 않은 단어 검색도 필요하게 됩니다.
이때는 위와 같이 raw + keyword:* 가 되도록 해서 사용해보는 것도 좋을것 같네요.
이 방식의 단점 여전히 완벽하지 않다.
이렇게 구현해서 서비스에 적용하였으나, 검색이 완벽하지 않았습니다. 예를 들어, "펨브록웰시코기" 라는 개의 종류 이름 있다고 합시다. 이 경우 "펨브록:*" 이렇게 하면 검색이 되지만, "웰시코기:*" 이렇게는 검색이 안됩니다. 즉, 단어의 맨 앞 글자부터 나오는 것만 검색이 된다는 것이죠.