번개애비의 라이프스톼일
회사 부설연구소에 도어락이 설치되어 있는데 매번 비밀번호를 입력하기 너무 귀찮아서 평소에는 도어락 배터리를 분리시켜 놓음. 근데... 시간이 흘러 흘러 출근후 배터리를 분리하는것 조차도 귀찮아지기 시작함. 해야지 해야지 하고 있다가 결국 2개월이 지나서야 건드리게 됨. (사실, 오늘 너무 일하기 싫어서 건든거임. ㅋㅋ) 출입구 문에 도어락을 분리한다. 다행히 피스 4개만 분리하면 손쉽게 탈착이 가능한 모델이라 손쉽게 작업이 가능했음. (바깥쪽 비밀번호 입력하는 쪽이 아니라 실내쪽 도어락만 분리하면 됨.) 배터리 홀더쪽 배터리스프링을 잘라서 납땜해서 와이어링한다. (납땜이 잘되어야함. 문 열고 닫다가 저 전선이 끊어지는 날엔 문을 부수는 경우가 생길 수 있음.) 배터리쪽에서 기판쪽으로 선을 빼준뒤, 도어락..
블루투스 관련 HW개발을 하다가 nRF52810 칩을 알게되었다. 이 칩은 Arduino nano 33 Ble or Sense에 탑재되기도 한 칩이다. 신속하게 개발하기 위한 Nordic SDK를 지원하고 정말 간단한 프로젝트라면 아두이노 Bootloader만 올리면 그만이니 라이트한 환경에서는 나름 괜춘한 칩인것 같다. 프로차일드의 PLE-52 국내 업체에서 공급하고 디바이스마트등 국내재고로써 유통되기 때문에 지금처럼 망할 코로나로 인한 반도체 수급에서 비교적(?) 자유롭다. 그리고 국내유통마진을 생각해도 상식선의 가격대를 형성하고 있는것이 장점이다. https://www.devicemart.co.kr/goods/search?search_text=ple-52 대한민국 전자부품 1등 쇼핑몰 디바이스마트 ..
2021100118171685 와 같이 16자리 현재시간을 출력하는 공통소스이다. yyyymmddhhiissmm 의 형태를 지니고 있음으로 초단위 이하의 MicroSecond까지 출력된다. Go Lang package main import ( "log" "time" "strconv" ) func main(){ log.Println(millisecond()) } func millisecond()(string) { ymdhis := time.Now().Format("20060102150405") microtimeInt64 := time.Now().UnixNano() / int64(time.Millisecond) microtimeUnix := strconv.FormatInt(microtimeInt64, 10)..
프로젝트에서 HTML을 PDF로 변환하여 고객에게 제공하는 기능구현을 하기 위해 서칭을 했고, 여러가지 솔루션을 찾게 되었다. 수 많은 시행착오들... 커멘트에서 동작하는 wkhtmltopdf 는 커멘트라인에서 실행됨으로 웹서비스에서는 보안상이유로 사용하지 않았다. (exec등) Javascript에서 Canvas를 이용하여 PDF를 생성해주는 html2pdf 는 속도문제와 아이폰에서 Canvas 생성사이즈의 제한 (4K이하)의 문제가 있었다. PHP에서는 TCPPDF라는것이 존재하지면 HTML문서를 정확하게 파싱이 불가능했다. 결국 구글신이 해결해주심 결국 chromedp 를 사용하기에 이르렀고 그나마 안정적이면서 정확하게 PDF생성이 가능해서 서비스에 적용했다. PDF를 출력하는 기능자체가 메인서비스..
보통 MySQL 트리거의 경우, SQL문으로 어떤 쿼리를 실행할 수 있지만, 실제 애플리케이션단에서 최신화 데이터를 감지하여 따로 조치하는 경우에서는 MySQL에서 제공하는 트리거를 활용하기 난감하다. 결국 Javascript Websocket을 통해 Go 프로그램과 통신을 하고, Go 가 실시간으로 데이터베이스의 변화를 감지하여 반환하는 형태로 구현하였다. (참고로 가이드코드임으로 실서비스 적용시 코드튜닝이 필요함.) 간혹, SetTimeOut을 이용하여 Ajax로 구현된 경우가 있는데 서버 부하나 속도측면에서 상당히 불리함으로 이러한 실시간 대응에서는 가급적 WebSocket을 사용하는것을 권장한다. 아래는 실행화면 := 통신은 다음과 같이 이뤄진다. 1. 클라이언트가 소켓을 연결함과 동시에 테이블명..