전체 글 76

[Arduino] ESP32 while문 watchdog 에러

ESP32 로 wifi 관련 개발중 Wifi 연결 대기용 while문에서 계속 5초마다 프로그램이 리부팅 되는 현상이 발생했다. 10:03:38.284 -> E (7103) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time: 10:03:38.315 -> E (7103) task_wdt: - IDLE (CPU 0) 10:03:38.315 -> E (7103) task_wdt: Tasks currently running: 10:03:38.315 -> E (7103) task_wdt: CPU 0: loopTask 10:03:38.315 -> E (7103) task_wdt: CPU 1: IDL..

아두이노 개발 2024.07.10

[PHP] 일정 시간 뒤 페이지 이동

개발 도중 우선 현재까지의 실행 결과를 출력하고 일정 시간뒤 다른 페이지로 이동해야 하는 활동이 필요해졌다. 기존 php 코드는 sleep과 location.href 를 이용한// 기존 출력내용echo json_encode($response);sleep(5);echo ""; 위와 같은 형태였으나, json 출력내용이 브라우저 JSON Viewer 에서 깨지게 되고 최종 echo 까지 기다리게 되어 다른 방법으로 변경하였다.// 기존 출력내용echo json_encode($response);echo ""; // content ='3 : 3초뒤 변경 결과 $response까지 출력 후 3초 뒤 목표 URL로 이동하는데 성공하였다.

[MYSQL, PHP] 대용량 데이터 페이징 - 1

기존 데이터 테이블이 약 500만건을 넘어가면서 점점 페이지 조회속도가 느려져 개선작업을 진행하였다. 먼저 기존 페이징 sql 구문은 다음과 같다. SELECT * FROM data_table WHERE type = 'abc' ORDER BY id DESC LIMIT 0, 30 위와 같이 Limit을 사용하여 한 페이지당 30개의 글을 조회하였으나 데이터가 많아지고 타입도 여러 종류가 추가되니 조회속도가 5초이상 걸리게 되었다. 이를 해결하기 위해 아래와 같이 2가지 방법을 적용하였다. 1) 커버링 인덱스 SELECT rd.* FROM ( SELECT id FROM table_data WHERE type = 'abc' ORDER BY id DESC LIMIT 1000, 30 ) AS sub INNER J..

[Arduino] Mac 에서 아두이노 코드가 자동으로 줄바꿈 되는 현상 (화면을 꽉 채우지 못할때)

Macbook에서 아두이노 작업중 어느순간부터 코드가 화면의 가로를 다 채우지 못하고 아래와 같이 중간 정도에서 줄바꿈 되는 현상이 나타났다. 가시성과 효율면에서 불편해 이를 해결하고자 찾아본 결과 https://forum.arduino.cc/t/arduino-ide-code-not-filling-width-of-window/1181637/4 Arduino IDE code not filling width of window +z toggles wordwrap. For some reason, on my PC, it seems you need to press it twice to take effect. Press +z (twice) and it should restore the wrapped lines. f..

아두이노 개발 2024.04.09

[Arduino] 아두이노에서 Hash Map 사용하기

NMEA GSV 메세지를 이용해서 위성신호 레벨을 판별하고 이를 정리해 서버에 업로드하는 기능 개발이 필요해졌다. 이를 위해 원래는 int gpLev[gpSize]; 형태의 배열을 사용했었으나 같은 GPS 위성에서도 L1 / L2등 같은 인덱스를 가지나 주파수가 다른 위성들이 있어 이를 따로 관리해줘야 됐다. 이를 위해 배열을 추가적으로 여러개 사용할수도 있으나, GPS 는 L1/L2, Galileo는 E1/E5등 주파수 이름이 일관성이 없어 이를 처리하기 위해 배열 대신 HashMap을 사용해 관리하도록 변경하였다. 1. 먼저 아래와 같이 HashMap들을 선언해준다. #include #include // 사용자 정의 해시 함수 struct StringHash { size_t operator()(con..

아두이노 개발 2024.04.09

[JS] DatePicker 위치 input 위치로 변경

JS에서 Datepicker를 사용도중, 다른 두곳에 datepicker를 적용할 일이 생겼다. 기존 datepicker는 위와같이 사용중이여서, 이를 복사해 그대로 적용하였더니, 2번째 datepicker input을 클릭해도 1번째 datepicker input 위치에 활성화 되는 문제가 발생했다. 이를 해결하기 위해 datepicker의 위치 기준이 되는 .field.date div를 ui 외부에 하나 생성해두고, input 클릭시마다 div를 이동시키도록 하였다. function initDatepicker(idx) { $(`#farm${idx}_datepicker`).datepicker({ autoClose: false, // onHide: function(event){ // console.log..

[HTML] Div Height 남은 화면크기로 맞추기

HTML을 통해서 웹페이지를 구현할때, Header를 쓰면 그만큼 이후 Content가 밑으로 밀려서 세로 스크롤이 생기게 된다. 아래 예시를 보자 위와 같이 html 작성시 아래와 같이 스크롤이 생기게 된다. 이때 스크롤을 제거하고 Body의 크기를 남은 세로높이로 재조정하기 위해 다음과 같이 Javascript를 적용하였다. function setContentsHeight() { const contentsDiv = document.querySelector('.contents'); const windowHeight = window.innerHeight ; console.log('Window height:', windowHeight); const headerElement = document.querySe..

[날씨앱] P11 Flutter 위젯에 Slide Action 추가

https://github.com/cjk09083/ftweather 이번 포스팅에서는 마커 ListView를 좌우로 슬라이딩해서 이름변경 /삭제 기능을 추가해보자. 1. Slidable 위젯 추가 Slide Action을 추가하기 위해 Dismissible 위젯을 사용하려고 했으나 해당 위젯은 슬라이드 이후 자동으로 위젯이 삭제되는 기능을 OFF할수가 없었다. 다른 위젯을 알아보던 도중 Slidable(https://pub.dev/packages/flutter_slidable) 위젯이 적합하다고 판단하여 해당 위젯을 사용하였다. 먼저 pubspec.yaml에 해당 플러그인을 추가하고 Pub get 해준다. # pubspec.yaml dependencies: flutter: sdk: flutter flut..

[날씨앱] P10 Flutter ListView 드래그로 순서 변경

https://github.com/cjk09083/ftweather 이번 포스팅에서는 MarkerList에 저장된 Marker들의 순서를 ListView 드래그로 변경해보자. - 이를 위해 Flutter에서 제공하는 ReorderableListView 위젯을 사용하였다. 1. ReorderableListView 위젯 추가 MarkerList의 Build부분을 아래와 같이 수정한다. 1) onReorder와 children 속성은 필수로 작성되어야 한다. 2) 각 리스트의 위치 구분을 위해 리스트 최상단 위젯인 GestureDetector 마다 key 를 부여해준다. # MarkerList.dart @override Widget build(BuildContext context) { final mapMode..