Wspomnienie zeszłorocznych wakacji 🙂
Start w Sromowcach Wyżnych. Przejazd przez Czerwony Klasztor (Červený Kláštor). Meta w Szczawnicy.
Gravelkiem wzdłuż Wisły na wysokości Czerniewic
Ostaszewo
Ostaszewo Toruńskie • Gmina Łysomice • Powiat Toruński
Województwo Kujawsko-Pomorskie
Film zarejestrowany dronem Dji Mini 4 Pro. Miejscami po bokach nieostry, nie wiem skąd się bierze ten problem?! Budynki jakby „świecą” ale to chyba wina nisko położonego słońca.
Epicki zachód słońca nad Wisłą w Toruniu
Porównanie DJI DLOG z i bez LUT-a
Nagranie z wykorzystaniem DJI MINI 4 Pro w trybie DLOG. Obróbka wideo w programie DaVinci Resolve.
Stary Cmentarz na Podgórzu oraz Dwie Wieże Ciśnień
Kilka ciekawych obiektów zlokalizowanych na Podgórzu – osiedlu Torunia.
Stary Cmentarz Parafialny, Golgota z 1911 roku. Kolejowa wieża ciśnień przekształcona na budynek mieszkalny. Wieża ciśnień przy stacji Kluczyki.
Filmiki z wczorajszego biegania
Toruński most im. Józefa Piłsudskiego nocą z lotu drona
Kolejne próby nagrywania dronem DJI MINI 4 PRO. Zdjęcia zarejestrowane chwilę po WOŚP – Światełku do nieba. Przedstawiają pięknie oświetlony most.
Wczorajszy WOŚP
Wielka Orkiestra Świątecznej Pomocy w Toruniu. W dniu 28 stycznia 2024 roku punktualnie o 20:00 przy kapitalnym nagłośnieniu odbył się niesamowity pokaz laserów.
Timer w React Component
Wywoływanie rekurencyjne funkcji w React-cie z wykorzystaniem „setTimeout” i odwoływanie się w nich do stanów jest dość problematyczne. Taka funkcja „widzi zamrożony stan” pomimo tego, że może go zmieniać.
Poniżej sposób na timer (wykonywanie akcji z opóźnieniem) z możliwością dostępu do stanów w komponencie Reacta.
const [timerCounter, setTimerCounter] = useState(0);
useEffect(() => {
const id = setTimeout(
() => setTimerCounter(timerCounter + 1),
1000
);
console.log("TIK", timerCounter);
return () => clearTimeout(id);
}, [timerCounter]);
Przykład heartbeat-a odpytującego API
const [doReloadTime, setDoReloadTime] = useState(1000);
const [fetchState, setFetchState] =
useState<string>("waiting");
// aktualizacja danych
const onData = useCallback((data: any) => {
// ...
}, []);
// pobieranie danych z API
const reloadData = useCallback(() => {
setFetchState("waiting");
fetch(...)
.then(res => {
onData(res);
setFetchState("done");
setDoReloadTime(1000);
})
.catch(err => {
onData(null);
setFetchState("error");
setDoReloadTime(5000);
});
}, [onData]);
// heartbeat
useEffect(() => {
if (!reloadData || doReloadTime <= 0)
return;
setTimeout(() => {
reloadData();
}, doReloadTime);
setDoReloadTime(0);
}, [doReloadTime, reloadData]);