※ 우리 부부가 열심히 일하고 야근해서 받은 머니로 구입한 후기입니다

 

붱이 Story

 

안드로이드 다시 시작한지 2년차...

약 7~8년전 깔짝 배운걸로만 하려니

발전이 없어 신문물을 공부하기로 하고 

Kotlin을 공부 하였다.


우선 가장 추천이 많은 

Kotlin in Action을 샀다...


커니의 코틀린은 빌렸는데 이 두책이 가장 볼만한듯 하다



책에서 소개하는 아래 링크를 가보자


http://try.kotl.in


아래와 같이 빠르게 웹에서 테스트가 가능하다.

처음 문법익히고 요것저것 간단히 테스트해볼때 유용할듯하다.



기초적인 문법들은 블로깅 된게 많으니 Pass


내 기준 오! 이거 좋네?

이런게 되?

신기하다~

이건 알아두면 나중에 쓰겠지?


하는 항목을 나열해보았다.


Smart Cast

Null safety call “?.”

 Elvis operator “?:”

let operator

Triple quote “”” 

Default arguments and named arguments

Extension functions | infix

Singleton “object”

Local functions

“apply”

“with”

“run”


Smart Cast


위 링크에 Examples 중에 책의 예제코드들이 있는곳으로 가서

코드를 돌려보자


"is"

 java에서 instanceof와 같다.

해당 오브젝트의 타입을 확인할때 쓰곤했었다.

뭐 여기는 문법의 차이라고 보면되지만

그다음이 중요하다 

as를 통해 Num Class를 casting을 명시적으로 해주었지만

아래 message창을 보면 warning이 뜬것을 볼수있다

"No cast needed"


kotlin에서는 is로 이미 체크하고 다음 블록에선

따로 casting 없이 바로 쓰면된다.

 Num으로 캐스팅이 된 상태라고 보면된다.

(사실 컴파일타임에 알아서 캐스팅해준거다)


두번째 Sum 체크에서 보듯이 블록안에서는 casting 없이 사용한 것을 볼수있다.


요 기능이 "Smart Cast"라고 부른다




Null Safety Call "?."

Null Safety call "?."

아래 자바 스타일 함수에서 보듯이

자주 쓰는 null 체크가 


위에 ?. 하나로 간결하게 줄어든것을 볼수있다.

아주 심플하다. 

말그대로 ?. 왼쪽이 null이 아니면 오른쪽을 수행하고 아니면 null을 돌려준다.

아주 코드가 심플하다



아래는 chain으로 사용하는것을 보여준다.




Elvis Operator "?:"


아래 코드보면 이해가리라 생각이 든다.

null일경우 기본 값을 지정해주는 용도?



기본값이 아닌 원하는 Exception을 발생시킬수도있다.

아래 코드를 보고 이해하자~




"let" operator

let은 "?."와 같이 자주 쓰인다.

객체가 null이 아니라면 뭔가 수행한다로 보면 된다

아래코드보면 이해가 쉬울것이다~

앞서 두개의 sendEmailTo만 수행되고

마지막은 email이 null이여서 수행이 안된것을 확인할수 있다.




Triple Quote """


3중 따옴표 안에 글씨를 쓰면 개행까지도 표현가능하다

개행뿐만 아니라 back slash를 써서 특수 문자를 표시하던것들을

없이 바로 출력해준다.

booungEx 문장을 보면 이해가 갈 듯


trimMargin()으로 |(파이프) 까지는 잘라준다.(default)

17번 18번 line 수행결과는 같다



Default arguments and named arguments


C++에선 있지만...Java에 없어서 살짝 불편했었던 Default argument


Kotlin에선 좀더 진화된 Default arguments와

named arguments를 제공함으로써

Java에서 수많은 overloading이 필요했던것을 대폭 간소화 시켜준다.

아래 .. 내가 예제로 짠거지만 요걸 찬찬히보면

java때와 비교해서 볼수있을것이다.


Kotlin에서의 Default arg, Named arg는 다 이해했다고 봐도 될듯하다.(붱피셜)


main에서의 음영부분이 Named arg를 사용한것이다.

결과는 위아래 동일하지만 코드는 엄청 심플해진것을 알 수 있다.



Extension functions | infix


확장함수 요것도 물건이다..


예전 Java에서는 상속을통해 함수를 추가하곤했다


코틀린은 상속없이 마치 원래 멤버함수인것처럼 함수를 확장할수 있다.


String에 lastChar라는 함수를 확장했고

Int에 max 함수를 확장한 코드이다.


추가적으로 fun 앞에 중위함수표시인 infix를 적어넣으면

13 14 line 형태로 코드를 작성할수도 있다.

infix는 굳이 꼭 이래써야하나 싶긴하다...

그래도 신박한 기능이라 생각해서 언급해보았다.



Singleton "object"


Kotlin에서 싱글톤.... 너무 심플하다 그냥 class대신 object로 쓰면된다.





Local function

로컬함수가 된다... 우선 알고만 있으라는 뜻으로 언급해봤다

함수 안에 중복되는 코드가 있을경우...


아래와 같이 함수 안에 또 다른 함수로 중복 코드를 줄일수 있다.

모르면 있는지도 모르지만

알고나 있으면 ... 써먹을때가 올지도...





여기서 부터는 커니의 안드로이드를 참고하였음

자세한건 링크서 확인하고

https://www.androidhuman.com/lecture/kotlin/2016/07/06/kotlin_let_apply_run_with/



저는 이해한바만 ...


apply operator

apply는 어떠한 객체를 생성할때 property에 원하는값을 넣어서 생성할때...

아래 코드를 보면 위아 래 같은 코드이다.


사실 장점은? 모르겟지만 코드가 분산되지 않는다는거??

모르겠다 사실 뭐가 장점인지...





with operator

apply()와 유사하지만 내가 이해한건...

이미 생성된것에 대한 property를 변경시?

아래코드 처럼 이미 다른데서 생성된 messageView를

this로 접근하여 property값을 바꿀때 쓴다?

this생략도 가능


장점 이것도 잘모르겠다 


우선 존재를 알고 어느정도 알아야.. 

코드 해석을 할테니




run operator

run()은 두가지 형태가 있다.


먼저 객체없는 run()은 아래 코드와 같이

어떤 계산이라던지 작업을 한 결과를 리턴한다.

아래에서 블록의 마지막줄의 결과가 리턴이된다.



객체를 통한 run()은 생성된 객체의 연속된 동작이 필요할때

사용되는데 with()와 비슷하다


다른게 있다면 non-null상태여야한다.

 let과 with로 표현이 가능하다.

아래 코드를 보자~




더 재미난 기능들이 있지만

첫 코틀린은 여기까지...



제가 잘못 이해하고 있거나

잘못 기술 한점은 댓글로 알려주시면 감사하겠습니다.

단 !

비아냥은 노노



※ 공감 및 댓글 한마디는 포스팅하는데 큰 힘이 됩니다.





※ 우리 부부가 열심히 일하고 야근해서 받은 머니로 구입한 후기입니다

 

붱이 Story

 

[사용기/IT기기] - 아이패드 프로/ 애플 팬슬 / 스마트 키보드 구입기

애플 팬슬을 사서 .... 분실하기 쉽게 되어있는

캡과 젠더 .. 그래서 홀더가 필요했었다.


한님이 마침 핫딜을 알려주셔서 구입하게된

Apple pencil Accessories 


애플 팬슬의 촉 커버, 캡 홀더, 젠더 홀더 구성




한님이 알려주실땐 무려.. 0.06 달러... 100원도 안됨...

2018.06.27 환율 기준

근데 Amazon prime인경우 배송도 무료...(미국내 배대지까지만)


지금 들어가보니 이제 핫딜은 없다... 

그래도 사고싶으신분들을 위해 링크

아마존 링크



드디어 100원짜리가 왔다.


사이트 이미지 보단 쬐끔 질이 떨어져보이지만 만족




안그래도 펜촉 떨어뜨리면 찍힐까 걱정

펜슬 캡 잃어버릴까 조심

충전 젠더는 관리 안될것 같아서 박스에서 꺼내지도 않았는데

이번에 꺼냈다


아래는 모두 장착후 홀더들 제거된 상태


촉 커버, 캡 홀더, 젠더 홀더 장착 상태 모습


100원의 만족ㅎ



※ 공감 및 댓글 한마디는 포스팅하는데 큰 힘이 됩니다.




※ 우리 부부가 열심히 일하고 야근해서 받은 머니로 구입한 후기입니다

 

붱이 Story

 

화장실엔 아직 딱히 IoT 관련 작업을 안했지만


화장실 재실에 맞는 등 On/Off 정도는 꼭 하고싶었다


메이크리즘님 블로그(링크)를 보고 이런게 있구나는 알았지만


카운터 센서 송수신부가 너무 크고 안이뻐서 하고싶은 맘은 없었다.



그러나....


얼마전 카페 스텝이신 플루님 집에서 신세계를 경험하고는


바로 주문을 하였다.


거실 화장실 + 안방 화장실


그리고 안방 화장실은 4구 스위치라 아크릴 커버도 같이 구입하였다.

가정용을 구입하였으며 3인까지 카운팅된다

모델명은 HST300CAW




역시 다시봐도 너무 크고 안이쁘다..


저 검은선 아래부분이 다 AA 베터리인데

이부분은 좀 소형 베터리로 개선이 시급하다

너무 커...




안방 화장실 설치


먼저 안방 화장실부터

먼저 누전차단기를 내리고 작업을 하였기때문에 

많이 어둡다


그래서 필립스 Hue go를 가져왔다 포터블로 이동이 가능하기에...



보다 시피 안방은 4구다 보템 스위치보다 커서 

제거시에 남는 공간이 많다





선연결은 좀 헤맸는데 빨간선이 전원이고 

녹색? 검은색? 두개선이 전등 1 2

노란색 파란색은 환풍기다


사진은 못찍었지만 보템엔선이 총 3개이다


"R상", "Fan", "Light"


R상에 전원 빨간선을 연결하고


Fan에 파란색을 넣던 노란색을 넣던 동일하게 동작해서 하나만 엮고

나머지 한선은 절연 테이프로 막았다.

그리고 Fan에는 케이블이 두개를 연결할수있는데

전등이 두개인경우 한개를 넣으면된다.

안방에는 전등이 두개임으로 환풍기에 가까운 남는 전등2를 연결하였다 


그리고 Light에 전등1을 연결



(사진 위) 원래 스위치를 제거 후 남는 공간을 가릴 

아크릴 커버와 보템 스위치가 설치된 모습이다.


그리고 문틀에 설치된 카운터 센서 바닥으로부터 60cm에 설치하였다.




동작 영상은 아래에서 확인 아주 빨리 동작하는걸 볼수있다.





거실 화장실


거실 화장실은 바로 교체가 가능한 3구이다.



거실 화장실은 간단하다

전원 빨간색

전등 검은색

환풍기 노랑 파랑


남는선 없이 연결해서 설치된 모습(아래)


허나 우리집은 환풍기는 매번 사용하지않고


필요시에만 on을 하였다.


근데 보탬 기본설정은 전등과 환풍기가 동시에 켜지고 동시에 꺼진다


그래서 문의를 남김


전등만 자동으로 on/off되고 


환풍기는 기존처럼 수동으로 하고싶었다.


그래서 보템 고객문의에 문의 결과 답변은 아래와 같다


가능하다는 답변이고 아래와 같이 따라하니 

원하는데로 환풍기는 수동으로 변경되었다.




여기서부턴 보탬 답변 내용~~~


안녕하세요!

환풍기 수동설정 방법에 대해 설명드리겠습니다.

1. 아래 설명서를 보시면서 세팅모드에 진입 합니다.

2. 세팀매뉴얼의 2단계로 진입해서 부저음1회 : 시간없음 으로 설정변경한 후 환풍기 버튼과 전등버튼을 동시에 2초간 누르고

   있으면 삐삐 부저음 후 저장되며 변경 완료 됩니다.

*변경 후 동작은 환풍기 버튼으로 눌러 켜고 다시 버튼으로 끌수 있구요 혹시 끄지 않았다면 5단계 설정대로 1시간 후 자동으 로 꺼집니다.

1시간이 짧다면 5단계 시간설정을 원하시는 시간으로 변경 하시면 됩니다.





은쟈도 역시 카운터센서의 크기와 설치된모습에 경악을 했지만...


자동으로 되는거에는 만족하였다



나 또한 매우 만족...

좀더 스마트한 홈이 되었다.


※ 공감 및 댓글 한마디는 포스팅하는데 큰 힘이 됩니다.



  1. BlogIcon 은쟈은쟈 2018.06.25 10:42 신고

    내 화장대 지못미.... 근데 저 문짝에 는 반드시 2개를 붙여야하나? 생긴것도 부담스러움 ㅜㅜ

  2. BlogIcon Makelism 2018.07.09 15:07 신고

    반응 속도나 신뢰도는 괜찮은데 센서 크기가 많이 아쉬운 제품이죠.

    • BlogIcon 붱이붱이 2018.07.09 15:08 신고

      네 너무큰거같아요.개조해서 줄여볼려고 했는데 6V에 원래 용량을 맞추기가 힘들더라구요 ㅠㅠ

+ Recent posts

티스토리 툴바