목록전체 글 (50)
코딩 일기장
랩탑 백엔드는 실제 ID 카드 기반 근태처리라는 핵심 비즈니스 로직을 비롯한 모든 비즈니스 로직이 실행되는 주체이다.메인 기능인 근태 처리 로직만 놓고 보자면1. PN532+아두이노로부터 카드 처리결과를 전달받고,2. 프론트엔드 근태 화면을 갱신한 다음,3. 처리 결과 로그(타임스탬프+이벤트 타입)를 스마트카드에 안전하게 기록하는 것의 3가지 기능이 시스템의 핵심 비즈니스 로직이다.근태 처리의 흐름을 도식화하면 아래와 같다.초기 버전에는 2번 과정에서 eID 카드의 AID(0x5544332211CCBB)가 선택 가능한지만 확인하고 그렇지 않으면 에러를 일으키도록 구현했지만, 나중에는 eID와 티머니 애플릿을 모두 선택 시도해본 다음 지금 인식된 카드가 어떤 카드인지 판단하는 기능을 구현하였다.티머니 카드..
LabTop 프로젝트는 비접촉 스마트카드 기반 근태 관리 및 출입 통제 디바이스로,소속 학부 연구실에서 구성원의 재부재 상태표시를 위해 출입문 옆에 걸어놨던 클립보드를 대체해보고자 개발했던 디바이스이다.24년도에 만들었던 물건인지라 코딩에서 LLM의 입지가 지금보다는 작았던 만큼 손코딩의 비중이 절대적인 편이었는데,그래서인지 더 기억에 남는 프로젝트였던것 같다.기획 단계에서부터 최종 구현까지 살아남은 기능들을 정리해보면 아래와 같다.1. 카드 태그 기반 재실/부재 처리2. 재실/퇴실 처리시 도어락 열림 또는 잠금(마지막 퇴실시에만)3. 관리 페이지를 통한 구성원 프로필 등록/변경/제거와 카드 등록기능4. 출입내역 상세 조회5. 관리자 페이지에서 출퇴근 이벤트 훅을 직접 구현하는 기능을 제공하여 이벤트 발..
오렌지파이 제로에 OpenWrt 이미지를 설치해 보자.그동안 리눅스 기반 장치를 만드는 프로젝트에서는 모두 범용 이미지(라즈비안, 우분투, armbian 등)을 사용했었는데,범용 이미지는 당장 빠르게 시작하기에는 좋지만, OS 레벨의 수정이 잦아질수록 알지 못하는 사전 설치 서비스들 때문에 세팅이 쉽게 꼬이는 어려움이 있었다.그래서 이번에는 다소 험난하겠지만 밑바닥부터 세팅해 보는 경험을 위해 OpenWrt를 사용해 보고자 하였다. 먼저 제조사 제공 OpenWrt 이미지가 있어 설치해 보았다.https://drive.google.com/drive/folders/1LfgBqpa0kbxj1NGg1t4iselso_V5ImWd OpenWRT - Google Drive이 브라우저 버전은 더 이상 지원되지 않습니다..
LTE를 통해 수신되는 셀 브로드캐스트 메시지(재난문자)를 UART LTE 모뎀으로 수신할 수 있도록 준비해 보자.필자는 SIMCom SIM7600G 모델을 사용하였다. 1. 모뎀 연결 및 시리얼 인터페이스 인식모뎀을 보면 PCB에 노출된 UART핀과 USB 인터페이스가 보인다.어느 것을 사용하든 AT 명령으로 모뎀과 통신할 수 있다는 사실은 다르지 않기 때문에 필자는 USB를 통해 연결했다.그렇지만 인터페이스의 단순성이나 편의성 때문에 최종 빌드에는 UART를 사용할 예정이다.$ lsusb...Bus 001 Device 016: ID 1e0e:9001 Qualcomm / Option SimTech, Incorporated...USB로 인식된 것을 확인했다.$ ls /dev/ttyUSB*/dev/ttyU..
leaflet.js로 구축한 오프라인 지도에서 대피소 위치를 표시하기 위해 대피소 위치 데이터셋을 찾아야 했다.대피소 이름과 종류, 그리고 위경도가 명시된 전국 대피소 데이터베이스는 쉽게 찾았는데, 문제는 csv로 배포되는 것이 아니라 API를 통해 제공하고 있었다.그래서 스크립트를 사용해 1회 최대요청건수인 1000건 단위로 전국 대피소 정보를 수집하였다.전체 수량은 약 7만 건 정도이고, SHLT_SE_CD 속성으로 대피소 종류(한파쉼터:1,무더위쉼터:2,지진옥외대피장소:3,지진해일긴급대피장소:4)를 구분하고 있다. 수집 기준일: 2026-07-03
며칠간 DMB 재난메시지 수신 시험을 진행해 본 결과 한 가지 알게 된 것이 있다.바로 단방향 방송망의 특성상 수신기가 메시지를 놓치는 경우를 줄이기 위해 같은 메시지를 적어도 100회 이상 반복 전송한다는 것이다.실제로 측정해서 평균을 내본건 아니지만 대략 메시지당 150회 정도로 반복 전송하고 있는 것 같았고, 그 시간이 2분 정도 걸리도록 설계해 둔 것 같은 느낌이었다.실제로 표준 규격서에서도 동일 메시지가 2분 이상 반복 수신되고 있는 게 아니면 해당 메시지를 표시하지 말라고 언급하고 있다.따라서 코드에서도 하나의 재난메시지 조립이 완료되면 메시지 ID와 chrono::steady_clock::now()의 값을 static으로 남겨서 이미 수신 완료처리한 메시지가 무시되도록 처리했었다.그런데 테스..
