기본 콘텐츠로 건너뛰기

RxJS - ReactiveX 인터뷰

A: 왜 RxJS입니까
B: javascript는 참 쉽고 친숙한 언어죠.
A: 별로 그렇게 생각 안합니다만.
B: 그래서 좀 어렵고 있어보이는게 뭘까 싶어서...
A: 네?
B: 함수형이라는게 유행하기도 하고
f(x) 좋쟎습니까? 미스테리~ 미스테리~ 정수정짱짱 으아아

이런 수학선생님이라면 수포자 따윈
A: ...
B: 그리고 반응형이라는 말 뭔가
A: 뭔가?
B: 대충대충해도 막 알아서 할거 같고...
A: 그럴리가요?
B: 안그렇겠죠?
A: 네
B: 네

(잠시만 기다려주세요)

A: 그래도 뭔가 매력이 있으니 이렇게 시간을 내셔서 이것저것 Rx에 대해 글도 쓰고 이야기도 하고 그러시는거 아닌가요?
B: 매력이라.
으음.
제가 팔꿈치 터널 증후근이 좀 있어요.
오른손 세끼손가락, 약지손가락이 저립니다.
A: 무슨 상관이?
B: 그래서 각종 괄호를 쓰는게 너무 힘듭니다.
소중대괄호 만든 사람 죽었으면.
Hello world (ASCII):

A: 이미 옛날에 돌아가셨겠죠.
B: 그렇겠네요.
아무튼 그래서 소중대괄호 의존이 적은 커피스크립트를 쓰는데요.
A: 빨리 본론을 말씀해주시죠.
B: 커피스크립트에서 가로로 80자 이상쓰면 Line exceeds maximum allowed length 라고 경고해요.
A: 그래서요?
B: 근데 Rx를 쓰면 코드를 가늘게 쓸 수가 있더라구요.
A: 호오?
B: 그리고 = 쓰는 것도 너무 힘듭니다.
A: 네?
B: 오른손을 쓰쟎아요.
A: ...
그러니까 정리하면
1. 괄호가 힘들다
2. 커피를 쓴다
3. 커피는 길게 쓰면 경고
4. Rx를 쓰면 코드가 가늘다
5. 대입문을 줄이고 싶다.
B: 네
하지만 5번은 생각보다 별로...
A:
B:

B: 아!
A: ?
B: 코드가 가늘어서 좋은 점이.
A: 네.
B: 핸드폰에서 코드를 보기 좋습니다.
A: ... 왜 팔꿈치 터널 증후근이 안 낫는지 알겠습니다.
B: 도와주세요.
쇠고기 사묵으면 나을 것 같습니다.

고오오기. 고기하면 소오고오기이


A: (모르겠고) 사실 그런건
array function(map, filter, reduce, concat)만 써도 비슷하쟎습니까.
사실 비동기 처리가 중요한거 아닙니까?
B: 비동기 까짓거 promise도 있고 걍 callback해도 되고
A: 여기까지 와서 시비 거시는 겁니까?
B: 뭐 얼마나 대단한 코드를 짠다고 callback 지옥 걱정을 합니까.

하지만 방심하면 금방...

A: 대단한 거 안짜도 빡센데요.
B: object literal 잘 쓰세요.
A: 싫어요.
B: 저도 별로...

A: 아무튼 지적 허영심도 충족시키고 손목 터널도 덜고
폰에서도 보기도 짱짱맨 라이브러리란 거죠?
B: 그리고 한번 배워놓으면 Polyglot이라서 다른 언어에서도 쓸 수 있습니다.
A: 그렇죠? 그건 참 좋은 거 아닌가요. 기껏 배워놨는데 본전 생각도 나고
B: 사실 UniRx(Unity+Rx) 같은 걸 보면 꼭 그런 것만도...
A: 그래도 개념을 이해하면 두루 도움이 되겠죠?
B: Go같은 경우를 보면 Channel이 더 좋고 쉬운데 굳이...
A: ...하지말까요?
B: 도와주십쇼.
A: 네, 협조부탁드립니다.
B: 네. 근데 저도 별로 아는게 없어서.
A: 모르는 거 부탁 드린적 없습니다.
B: 미흡하나마 잘 부탁드리겠습니다.
A: 네, 전혀 겸손처럼 느껴지지 않는군요.
B: 저야 워낙 신실한 사람이라서요.

A: Rx는 어떤 경우에 쓰면 좋을까요?
B: 연속적인 데이터가 예상할 수 없는 지점에 발생할 때 사용하면 좋습니다.
A: 이제까지 중 제일 말같은 말씀이시네요.
B: 저야 워낙 신실한 사람이라서요.
A: 못들은 걸로 하겠습니다.
좀 더 구체적으로 어떤 상황이 있을까요?
B: 키보드 입력, 마우스 처리, AJAX 호출, 파일 읽고 쓰기, 배치작업 스케쥴링, 각종 네트웍 처리 등등이 있겠죠. 이 모든 것들을 다 스트림으로 볼 수 있습니다.

그러하다.

B: 덤으로 전역변수의 사용을 지양하는 효과도 있어서 실수로 인한 외부 변수 오염으로부터 안전한 프로그래밍을 하는데 도움이 됩니다.
A: 튜토리얼은 앞으로 어떤 식으로 진행할 건가요?
B: 개론은 어짜피 reactivex.io 에 한글 문서도 있고 예제나 트레이닝 같이 따라해볼 수 있는 쪽으로 번역해볼까 합니다.
보신 분들은 알겠지만 발번역 오역이 난무하니 상처받지 않게 지도편달(?) 부탁드립니다.
A: 좋은 말씀 감사합니다. 뭔가 주객이 전도된 듯한 느낌이 드는군요.
B: 별말씀을요.

이 블로그의 인기 게시물

React-Native App 개발 시 Expo 선택 전에 고려해야할 것.

Expo는 지옥같은 React-Native 개발 환경 아래 섬광처럼 빛나는 훌륭한 도구지만 빛이 있으면 어둠이 있는 법.
https://docs.expo.io/versions/latest/introduction/why-not-expo.html 에선 이런 경우에 Expo를 사용을 고려하라고 전하고 있다.


독립형 앱에 이미지 같은 정적 자원(Assets)들을 함께 묶어 배포할 수 없다.background 혹은 장치가 잠자기 모드일때 코드 실행을 지원하지 않는다.일부 API를 미지원. Bluetooth, WebRTC 같은 건 아직.오버헤드가 꽤 크다. iOS 25MB, Android 20MBPush Notification의 경우 OneSignal 같은 외부서비스를 활용하려면 ExpoKit을 사용하거나 Expo가 아닌 React-Native를 사용해야한다.Staging/Production같은 다양한 디플로이 환경. 하지만 이 경우 https://github.com/oliverbenns/expo-deploy 같은 선택지도 있으니 참조할 것

MQTT Broker Mosquitto 설치 후 설정

우분투 기준
$ sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
$ sudo apt-get update
하고

$ sudo apt-get install mosquitto
으로 설치하면 서비스까지 착실하게 올라간다.

설치는 간단한데 사용자를 만들어야한다.

/etc/mosquitto/mosquitto.conf 파일에서 권한 설정을 변경하자.
allow_anonymous false
를 추가해서 아무나 못들어오게 하자.
$ service mosquitto restart
서비스를 재시작.
이제 사용자를 추가하자. mosquitto_passwd <암호파일 경로명> <사용자명> 하면 쉽게 만들 수 있다.
# mosquitto_passwd /etc/mosquitto/passwd admin Password:  Reenter password: 
암호 넣어준다. 두번 넣어준다.
이제 MQTT 약을 열심히 팔아서 Broker 사글세방 임대업을 하자.

ESP32 DevBoard 개봉기

오늘 드디어 손에 넣었다. ESP32 DevBoard!
Adafruit 에서 15개 한정 재입고 트윗을 보고 광속 결제.
그리고 1주일의 기다림. 사랑해요 USPS <3
알리를 이용하다보니 1주일 정도는 광속 배송임.
물론 배송비도 무자비함 -_ㅜ
15개 한정판 adafruit 발 dev board
그놈이 틀림없으렸다.
오오 강려크한 포스
ESP32_Core_board_V2라고 적혀있군요.
ESP32 맞구요. 네네. ESP32-D0WDQ6 라고 써있는데 D → Dual-core 0 → No internal flash W → Wi-Fi D → Dual-mode Bluetooth Q → Quad Flat No-leads (QFN) package 6 → 6 mm × 6 mm package body size 라고 함.
길이는 이정도
모듈크기는 이정도
코어는 6mm밖에 안해! 여기에 전기만 넣으면 BLE+WIFI!
밑에 크고 발 8개 달린 놈은 FM25Q32라고 32Mbit 플래시메모리
ESP8266 DevBoard 동생이랑 비교 크고 아름다운 레귤레이터랑 CP2102 USB Driver가 붙어있음.
ESP8266 DevBoard엔 CH340G 인데 확 작아졌네.
머리를 맞대어 보았음.
모듈크기는 아주 약간 ESP32가 더 큰데 워낙에 핀이 많고 촘촘함. ESP8266인 ESP12는 핀 간격이 2.00mm인데 비해
ESP32는 1.27mm 밖에 안함.
딱봐도 비교가 될 정도.
https://www.sparkfun.com/news/2017 크고 아름다운 Pinouts

ESP8266 보드랑 별로 안달라보인다.
http://www.silabs.com/products/mcu/pages/usbtouartbridgevcpdrivers.aspx#mac
에서 CP2102 드라이버를 설치하고
screen 으로 연결해보자.
내 경우엔 tty.SLAB_USBtoUART 로 잡혔다.
어디서 기본 속도가 115200bps 라고 들은 적이 있어서
screen /dev/tty.SLAB_USBtoUART …