오늘의 삽질!

이라기보다 지난 한달간의 기록에 가까운 것 같다.

정말 삽질에 삽질에 삽질을 거듭해서 겨우 MQTT Packet에 Command Type을 하나 추가했다.

휴.. 라이브러리를 어찌나 뜯어고쳤던지




#MQTT란?


MQTT 란 텔레메트리 장치, 모바일 기기에 최적화된 라이트 메시징 프로토콜로서
더 다양한 앱과 서비스의 등장으로 HTTP등의 기존 프로토콜만으로는 커뮤니케이션의 다양한 요구사항을 수용할 수 없게되었고,
제한된 통신 환경을 고려하여 디자인된 MQTT 프로토콜은 모바일 영역의 진화에 따라 최적의 프로토콜로 주목받고 있습니다.


뭐.. 그렇다고 한다.

사실 나한테는 내가 써야하는 프로토콜! 외의 큰 의미는 없었다.

내가 그 프로토콜 타입까지 샅샅이 뒤져봐야 할 줄 몰랐을 때까진.. 그랬다.


"제한된 통신 환경을 고려하여 디자인된" 이라서 그런가. 

iOT Device 와 양방향 통신을 하기에 꽤나 적합한 것 같다.

그래서 많이들 추천했겠지.


사실 나는 쓰기 간단하길래 택했다.

이렇게 될줄 몰랐지 나는..




#MQTT에서의 Authentication, Authorization (with Mosca)


MQTT는 꽤나 간단한 구조로 고려된 프로토콜이라, 따로 Authentication이나 Authorization을 위한 기능이 없다.

connect시 username / password 는 포함할 수 있던데.. 뭔지 모르겠다.


여튼 그래서 Mosca를 썼다. authenticate랑 authorization을 제공한다지 뭐야!


근데 Mosca 에서 제공하는 authentication은 username/password 방식으로 구현되어 있다.

이게 우리가 보통 생각하는 서비스 계정 로그인 같은 경우에야 적합하겠지만,

iOT device를 managing 하기에는 적합하지 않다.


사람이야 자기 password를 숨길 수도 있고, 어쩌다 유출당하면 바꿔버리면 그만이지만,

device는 공장에서 찍혀나간 후에는 password 역할을 할 코드를 유출당해버리면 아주,, 어마어마한 보안상의 문제가 되어버리기 때문에!

저 password 자체를 connect 시에 그냥 보내버리면 문제가 될 수 있다.

추가적인 인증 로직이 필요하단 거..


내가 지금 있는 곳에서는 보안을 중요시한 iOT Device Management System 을 만들어라! 하는 플젝을 하고 있기 때문에

Security... 특히 Device Authentication / Authorization 은 매우 중요하다.

그게 내가 Mosca 에서 제공하는 username / password 기반의 Authentication 기능을 그대로 가져다 쓸 수 없었던 이유고,

이 삽질을 시작한 이유.




#How to authenticate a iOS device


그럼 어떻게 인증하지?


기본적으로 두가지 가정을 한다.


1. 각 Device는 본인의 식별번호와, 비밀번호 역할을 할 Secret Number 를 가지고 있다.

2. 모든 Device 정보는 출고시에 Management System DB에 식별번호, Secret Number 를 포함하여 registration 된다.


위의 두가지가 전제될 때,

각 Device 는 Server 에 mqtt connection 을 요청하면서 

자신의 식별번호와 Secret Number 를 username / password 처럼 담아 보낼거다.


근데 그냥 보내면 안 되니까!

내가 의도했던 인증 로직은 아래와 같다.


1. Device 에서 server 에 connect 요청을 한다. 요청시에는 Secret Number를 제외한 식별번호만 username 에 담아 보낸다.


2. Server 에서 connect 요청을 받으면, 일단 username 에 담겨 온 식별번호가 유효한 식별번호인지 DB를 통해 확인한다.


3. 유효한 식별번호라 판단되면 Secret key 역할을 할 임의의 String을 Device 로 보낸다.


4. Device 는 Server 로부터 받은 String을 통해 자신의 Secret Number를 암호화하고, 

    username (식별번호) 와 함께 단방향 암호화된 Secret Number를 password 에 담아 다시 Server 로 보낸다.


5. Server 는 해당 식별번호의 Device 로 보냈던 Secret Key 를 통해 전달받은 password 를 복호화하여, 

    DB에 있는 해당 Device 의 Secret Number 와 일치하는지 확인한다.

    -> 큰일날 소리였다. 비번을 복호화해서 확인하는 인간이 어딨대. 다 생각해놓고 흥분해서 막판에 멍청한 짓을 했다.

         Server 에서도 Secret Key 와 password 를 단방향 암호화하여 Device 가 보낸 암호화 스트링과 일치하는지 확인!


6. 일치하면 Authentication 완료! 불일치하면 Connection Failed!


후,, 완벽해..


일단 이걸 하려면 Server 에서 Connection 요청을 받지 않은 상태에서 Server - Device 간 통신 (패킷 교환) 이 이루어져야 한다.

근데 세상에,, Mosca 에서 제공하는 authentication 방식으로 그걸 어찌 하지???


Big-삽질의 시작이었다.

아!!!!!!!!!!!!!

넘 화난당!!!!!!!!!!!!!!!!!!!


TestFlight 연동을 해야하는데,

App store 에 build 올리는 거에 대해 정리된 문서를 보다가 

영어 문장을 너무 대충 읽어서


"니 앱이 적절한 Bundle ID를 가지고 있고, Team ID가 잘 셋팅되었는지, 그리고 Code Signing Identity 란에 automatic distribution certificates 를 설정해뒀는지 확인해라"

라고 적혀있는데

적절하게 섞어보는 바람에


"블라블라~ Code Signing Identity 란에 Team ID가 잘 셋팅되었는지 봐라" 로 보는 바람에,,


이 부분을,, 수정해버렸었다


원래는 

Debug / Any iOS SDK 는 둘 다 iOS Developer

Release / Any iOS SDK 는 둘 다 iOS Distribution 이어야 한다고 되어있다.



그래서 저 부분을 잘못해서 Team ID로 셋팅해주고 돌렷더니

conflicting provisioning settings 어쩌구~~

니 Code Signing은 Automatic 하게 잡는 게 어떠하니 어쩌구~~ 거려가지고


헉 하고 다시 문서 확인해보니 iOS Distribution 으로 셋팅된 게 맞는지 확인해보라고.. 여서...

다시 셋팅 바꾸고 Archive 를 돌렷는데!!!!!!!!!!


나는 분명 셋팅을 바꿨는데 이자식이 자꾸 똑같은 에러를 뱉음 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

Clean 도 해봤는데..........




넘 빡쳐서 또 구글링을 해보았더니

갓-택오버플로우에서 그거 엑코 버그라고.. 해결법을 알려줬다.



저기 보이는 Automatically manage signing 을 체크 해제했다가 다시 체크하고, Team 선택도 다시 해주면 된다!!



근데 웃긴게 저러고 나면 Archive도 잘 되고 다 좋은데


Release 하위의 Any iOS SDK 가 iOS Developer 로 바뀐다?!


아직 왜인지 모르겠다.

어쨌든 잘 되니 된 거 아님...........? ㅎㅎ


다음에는 TestFlight 연동하는 걸 정리해서 올려봐야겠다.

한글로 된 글들은 전부다 예에에엣날 글들이라 ㅠㅠ 흑흑잉

'Programming > iOS / Swift' 카테고리의 다른 글

[Bug/Issue] UITableView Select 먹히는 문제  (0) 2018.11.21
Swift 컨벤션 검사 - Swiftlint  (0) 2017.09.18

후배가 도와달라고.. colorpicker 라이브러리 추가하다가 에러가 떴는데 왜인지 모르겠다고 해서 봤다.


아 Failed to resolve 어쩌구~ 뜨면 젤 머리아프다.


이번엔 또 어떤 땡깡을 부리나 싶어서 봤는데

내 최근 플젝 SDK version이 25.~ 였어서 아마 접할 일 없었던 에러인 것 같다.


Setting up Gradle for api 26 (Android)


요기서 도움을 많이 받았는데

요약하면 (영어 못함 해석 틀렸을 가능성 ++++++++)


26.0.0 버전부터는 support libarary 에 google 의 maven storage가 적용되어서,

일일이 support tool? 들을 설치해주지 않아도 가져다 쓸 수 있다고 한다.


그 google maven storage 를 어찌 적용하나 하면


project build.gradle (top level build.gradle file) 에서 


allprojects {

repositories {

jcenter()

}

}

라는 부분이 있는데!!


이 부분을 고쳐주면 된다. 고친다기보다 코드 추가!


gradle version 3부터는 google() 이란 게 추가되어서


#1. gradle version >= 3

allprojects {

repositories {

jcenter()

google()

}

}

이렇게만 해주면 되고



gradle version 3 미만인 경우


#2. gradle version < 3

allprojects {

repositories {

jcenter()

maven { url "https://maven.google.com" }

}

}

이렇게 해주면 됨!!





주의할 점은..


절대,, jcenter() 위에 maven 블럭을 쓰지 말라는 거..


쓴다고 바로 빨간줄이 뜬다거나 하면 차라리 나을텐데

그냥 효력이 없는 것 같다.


나랑 내 후배는 저 maven 태그도 잘 써져있고 google maven repository 주소도 잘 적어뒀는데 왜 계속 같은 에러가 나지?! 했었는데

jcenter() 가 맨 밑에 있었다..

올려주니 넘나 잘 됨 흑흑




역시 삽질하며 배우는 거죠


근데 왜 colorpicker 라이브러리를 추가하기 전에는 잘 됏던 걸까?

maven block 이 효과없었던 건 라이브러리 추가 전이나 추가 후나 매한가지일텐데 왜지..


미스테리다. 알아봐야 알 수 있겠지만 이거 검색하고 있기엔 할 일이 넘나 많은 것~

회사에서는 매일 출퇴근 시간에 셔틀버스를 운영하는데,
직접 운영하는 게 아니다보니 매번 오는 버스 회사가 다르다.

그제 퇴근 버스는 시내버스 회사의 버스였다.
2층버스에다, 1층 뒷좌석에는 거꾸로 좌석이 있는.

어쩌다보니 거꾸로 좌석에 앉게 되었는데
신기한 느낌이었다.

언제나 창가에 기대 멍하니 지나가는 풍경을 봤다고 생각했는데,
돌이켜보니 나는 그 풍경들이, 진짜로 지나가는 모습은 본 적 없었던 것 같다.

똑바로 앉았을 때엔 나를 향해 다가오기만 했던 풍경들인데,
거꾸로 앉아서 바라보니 쉼없이 멀어져가는 풍경들만 있었다.

끊임없이 사라지기를 반복하는 창 밖 풍경을 보면서,
쏟아지는 자극에 정신이 팔려
멀어지는 것들을 챙기지 못하진 않았나 하는 생각이 들었다.

멀어지고 나서 후회하면 이미 늦은 거니까.

가끔은 뒤도 돌아보면서,
내 주변을 더 챙겨야겠다.

내 실수로, 내 잘못으로 멀어져버린 것이
더 생기지 않도록.

'Egg > Chockchock' 카테고리의 다른 글

벌레  (0) 2017.09.27
시차  (0) 2017.09.23
무제  (0) 2017.09.23

이 노래도 엄청 좋아했었는데

잠깐 또 현생에 밀려 잊고 지내다가

파티피플 이란 방송에서 헨리 바이올린이랑 콜라보 했다기에 오랜만에 들었다.



언젠가 마주칠 거란 생각은 했어
한눈에 그냥 알아보았어
변한 것 같아도 변한 게 없는 너
가끔 서운하니
예전 그 마음 사라졌단 게
예전 뜨겁던 약속 버린게
무색해 진대도
자연스런 일이야
그만 미안해 하자

다 지난 일인데
누가 누굴 아프게 했건
가끔 속절없이 날 울린
그 노래로 남은 너
잠신걸 믿었어
잠 못 이뤄 뒤척일 때도
어느덧 내 손을 잡아준
좋은 사람 생기더라 음 오오

사랑이 다른 사랑으로 잊혀지네
이대로 우리는 좋아보여
후회는 없는걸
그 웃음을 믿어봐
믿으며 흘러가

다 지난 일인데
누가 누굴 아프게 했건
가끔 속절없이 날 울린
그 노래로 남은 너
잠신걸 믿었어
잠 못 이뤄 뒤척일 때도
어느덧 내 손을 잡아준
좋은 사람 생기더라 우워어~
사랑이 다른 사랑으로 잊혀지네
이대로 우리는 좋아보여
후회는 없는걸
그 웃음을 믿어봐
먼 훗날 또다시
이렇게 마주칠 수 있을까
그때도 알아볼 수 있을까
라라라 라라라
이대로 좋아보여
이대로 흘러가
니가 알던 나는
이젠 나도 몰라
라라라 라라라~


목소리도 너무 담백해서 좋고

가사도 좋고 멜로디도 좋고


사랑이 다른 사랑으로 잊혀지네

이대로 우리는 좋아보여


'Motivation > Music' 카테고리의 다른 글

짙어져 _ 멜로망스  (0) 2017.10.29
연애소설 _ 에픽하이 (Epik high)  (0) 2017.10.29
서울 이곳은 _ 로이킴  (0) 2017.09.27
달리기 _ 옥상달빛  (0) 2017.09.25
보호해줘 _ 옥상달빛  (0) 2017.09.25
연구소에 있다 답답해서
바람쐬러 나와, 구석에 쪼그려 앉았다.

바닥에 벌레가 한마리 있었다.
비가 와 날개가 젖었는지,
이미 비에 젖은 바닥에서 바둥대고 있었다.

처음에는 뒤집어져 다리만 허우적대고 있기에
곧 죽겠거니, 하고 바라보고 있었는데
한동안을 그렇게 버둥대다, 어느새 바로 서서 기어다니기 시작했다.

멍하니 바라보면서, 참 악착같은 삶이라 생각했다.
이미 날개가 다 젖어, 날 수도 없을텐데.
저건 본능이겠지. 살 수도 없을텐데.

그러고 일어섰다. 더 지켜볼 필요 없을 것 같아서.

그리고 한참이 지나 다시 온 자리에는
어느새 제대로 일어서서 날갯짓을 시도하는
그 벌레가 있다.

이제쯤 죽었을 거라 생각했는데.

결국 날개를 펼치기까지 한 벌레를 보고있자니
기분이 이상해진다.

금방이라도 날아오를 것 같은 날갯짓을 보고있자니
저렇게 산다는 건 어떤 걸까, 하는 생각이 든다.

휘청이며 펄럭대는 날개를 보며 다시 일어섰다.

이따가 다시 왔을 때는
날아간 후였으면 좋겠다는 생각을 하면서.

'Egg > Chockchock' 카테고리의 다른 글

버스  (0) 2017.09.29
시차  (0) 2017.09.23
무제  (0) 2017.09.23

사실 옛날 노래지만

나는 로이킴 버전이 좋으니 로이킴 버전으루



아무래도 난 돌아가야겠어.
이곳은 나에게 어울리지 않아
화려한 유혹 속에서 웃고 있지만
모든 것이 낯설기만 해

외로움에 길들여진 후로
차라리 혼자가 마음편한 것을
어쩌면 너는 아직도 이해 못하지
내가 너를 모르는 것처럼

언제나 선택이란 둘 중에 하나
연인 또는 타인뿐인걸 
그 무엇도 될 수 없는 나의 슬픔을
무심하게 바라만 보는 너

처음으로 난 돌아가야겠어
힘든 건 모두가 다를 게 없지만
나에게 필요한 것은 휴식뿐이야
약한 모습 보여서 미안해

하지만 언젠가는 돌아올 거야
휴식이란 그런 거니까
내 마음이 넓어지고 자유로워져
너를 다시 만나면 좋을 거야
처음으로 난 돌아가야겠어
힘든 건 모두가 다를 게 없지만
나에게 필요한 것은 휴식뿐이야
약한 모습 보여서 미안해

약한 모습 보여서 미안해


2013년에 이 노래를 참 많이도 들었다.

가사가 너무 좋고, 로이킴의 목소리가 너무 잘 어울렸고

또 공감되는 상황이었기 때문에.


참 별것도 아닌 걸로 참 자주도 힘들었다.

그럴 때마다 그냥 경북대나 갈 걸- 뭔 부귀영화를 누리겠다고 내가 서울에 올라와서-.

등의 부질없는 생각을 하면서, 

이어폰을 꽂고 이 노래를 재생했었다.



아직도 종종 찾곤 했고, 자주 들을 때도 종종 있었지만

그때만큼 가사에 공감하며 듣지는 못했던 것 같다.


근데 내가 여기까지 와서 이 노래를 다시 떠올리게 될 줄이야


돌아가고 싶다.

이곳은 나에게 어울리지 않아 ㅠㅠㅠㅠㅠㅠ



오늘은 제일 좋아하는 가사라기보단,

제일 공감되는 가사..


아무래도 난 돌아가야겠어.

이곳은 나에게 어울리지 않아


'Motivation > Music' 카테고리의 다른 글

연애소설 _ 에픽하이 (Epik high)  (0) 2017.10.29
사랑이 다른 사랑으로 잊혀지네 _ 하림  (0) 2017.09.28
달리기 _ 옥상달빛  (0) 2017.09.25
보호해줘 _ 옥상달빛  (0) 2017.09.25
유서 _ 옥상달빛  (0) 2017.09.25

원곡이 따로 있는 노래지만

나는 옥상달빛 버전이 가장 좋다



지겨운가요 힘든가요

숨이 턱까지 찼나요
할 수 없죠
어차피 시작해 버린 것을


쏟아지는 햇살 속에
입이 바싹 말라와도
할 수 없죠
창피하게 멈춰설 순 없으니


단 한 가지 약속은
틀림없이 끝이 있다는 것
끝난 뒤엔 지겨울 만큼
오랫동안 쉴 수 있다는 것


쏟아지는 햇살 속에
입이 바싹 말라와도
할 수 없죠
창피하게 멈춰설 순 없으니


이유도 없이 가끔은
눈물나게 억울하겠죠
1등 아닌 보통들에겐
박수조차 남의 일인 걸


단 한 가지 약속은
틀림없이 끝이 있다는 것
끝난 뒤엔 지겨울 만큼
오랫동안 쉴 수 있다는 것


근데 가사가 묘하다.

멜로디만 들으면 위로의 곡이려나 싶을 수 있는데


대체 저 지겨울만큼 쉴 수 있다는 끝은 뭘 의미하는 걸까.


단 한 가지 약속은

틀림없이 끝이 있다는 것
끝난 뒤엔 지겨울 만큼
오랫동안 쉴 수 있다는 것


'Motivation > Music' 카테고리의 다른 글

사랑이 다른 사랑으로 잊혀지네 _ 하림  (0) 2017.09.28
서울 이곳은 _ 로이킴  (0) 2017.09.27
보호해줘 _ 옥상달빛  (0) 2017.09.25
유서 _ 옥상달빛  (0) 2017.09.25
내가 사라졌으면 좋겠어 _ 옥상달빛  (0) 2017.09.24


당장이라도 내가 죽는다면 
그렇게 슬퍼하지는 마
기절한 듯이 꼭 눈을 감고
장난 친 거라 생각해

지금이라도 기회가 있다면 
사랑한다 또 말할거야
넌 귀엽단 듯이 씩 한번 웃고
지나쳐버리겠지만


항상 얘기해줘 나에게
진심 어린 눈으로
사랑이 죽지 않게

항상 보호해줘 날 영원히
감싸 안아줘 네 두 손 모두
나를 붙잡아 주겠니
언제나, 영원히


노래는 좋은데

왜 제목이 보호해줘 인지는 아직 잘 모르겠다.


그냥.. 그냥 이 노래 들으면

기분이 이상해진다.


당장이라도 내가 죽는다면 

그렇게 슬퍼하지는 마


지금이라도 기회가 있다면 
사랑한다 또 말할거야


'Motivation > Music' 카테고리의 다른 글

서울 이곳은 _ 로이킴  (0) 2017.09.27
달리기 _ 옥상달빛  (0) 2017.09.25
유서 _ 옥상달빛  (0) 2017.09.25
내가 사라졌으면 좋겠어 _ 옥상달빛  (0) 2017.09.24
Levels With 슬옹 From 2AM _ Avicii  (0) 2017.09.22


내가 참 재미는 있지 
내가 참 운동을 잘하지 
내가 참 집안일은 잘하지 
가끔은 요리도 괜찮았지 

내가 참 속이 좁았지 
내가 참 무심 했었지 
내가 참 잔소리가 많았지 
가끔은 네 엄마 같았지 

이렇게 멋없는 내 곁에 늘 있어준 
고맙고 고마운 사람들아 

언젠가 날 위해 이 노랠 불러줘 
멀고 먼 그곳에서 
잊지 않을게 안녕 안녕 

다시 만날 때까지 안녕 안녕 

언젠가 세월이 지나서 
나를 기억해봤는데 
흐릿해졌다고 미안해 하지는 마 
난 정말 괜찮아 

이렇게 멋없는 내 곁에 늘 있어준 
고맙고 고마운 사람들아 

언젠가 날 위해 이 노랠 불러줘 
멀고 먼 그곳에서 
잊지 않을게 안녕 안녕 
다시 만날 때까지 안녕
언젠가 날 위해 이 노랠 불러줘 
멀고 먼 그곳에서 
잊지 않을게 안녕 안녕 
다시 만날 때까지 안녕 
안녕 안녕
안녕 안녕


유서라는 제목이 무색할 정도로

산뜻한 보컬과 발랄한 멜로디..


옥상달빛은 참 다채롭다.


우울한 가사를 우울하게 부르거나,

발랄한 가사를 발랄하게 부르는 것 말고


우울한 가사를 발랄하게 부르는 곡도 많다.


그리고 묘하게 그런 곡들은,

가사를 곱씹다 보면 

슬픈 가사를 슬프게 부를 때보다 더 와닿는 순간이 있다.


이렇게 멋없는 내 곁에 늘 있어준 

고맙고 고마운 사람들아 


멀고 먼 그곳에서 
잊지 않을게 안녕 안녕 


+ Recent posts