Follow along as I build a custom weather display using Cloudflare Workers and a popular e-paper display. While the embedded electronics I used have their limitations, Workers provided an elegant solution to overcome these challenges and bring the project to life.
W tamtejszych komentarzach są też komentarze autora.
Tyle, że autor wyraża jakieś zapotrzebowanie. Sądząc po projektach w których uczestniczyłem w Europie, to zapotrzebowanie jest szersze. Ludzie raczej nie chcą się dostosowywać do wymogów kontrolerów. Chcą by to one się dostosowały do nich. Sam JSON nie był dużym problemem. Bardziej dynamiczna manipulacja stringami w RAM. Tego się nie da osiągnąć bez MMU i defragmentacji pamięci. Może nie miałem wtedy tyle charyzmy. Ale wszelkie próby przekonywania i wymyślania jak to pogodzić na różne sposoby, kończyły się ignorowaniem.
Dla mnie walka z ograniczeniami to najlepsza część pracy w IT.
Gdyby ktoś mi powiedział, że każdy problem mam rozwiązać jakimś API Cloudflare’a czy Amazona, to pewnie szybko by mnie to znudziło.
Alokacji pamięci podczas parsowania można uniknąć używająć interfejsu SAX zamiast DOM.
Żeby uniknąć fragmentacji pamięci pewnie zrobiłbym alokator zwracający uchwyty zamiast wskaźników. Pozwoliłoby to przenosić swobodnie dane, które nie są w danej chwili używane. Prawdziwy adres dostawałoby się dopiero po zalockowaniu handle’a. Gdyby pamięci było relatywnie mało, próbowałbym to optymalizować interningiem.
Ja bym nie powiedział, że to walka z ograniczeniami. Nazwałbym to stworzeniem czegoś dobrego. Takie rzeczy wymagają włożenia więcej pracy, poświęcenia uwagi.
Są też ludzie, którzy wolą zrealizować zadanie. Móc je łatwo utrzymywać i rozwijać. Chcą żeby większość pracochłonności była już rozwiązana tak jak na platformie, którą znają i lubią.
Myślę, że dla takich są kontrolery z Linuksem. Z jakiegoś powodu ich nie wybierają. Podejrzewam, że wtedy ma się inne kłopoty.
Na szczęście jestem w innym świecie, gdzie rozumie się wymagania platformy.
Parsowanie to był najmniejszy problem. Oni chcieli cały czas dane trzymać w JSON. W wielkim dynamicznym stringu.