Z reguły zaczynając przygodę z Arduino pierwszą metodą debugowania jaką się wybiera jest wrzucanie do terminala stanów za pomocą funkcji „Serial.print”.
Bardziej efektywne jest użycie debugera.
Poniżej przykład jak to osiągnąć w systemie MacOS z wykorzystaniem PlatformIO oraz JetBrains CLion na urządzeniu STM32 F103C8T6 podłączonym za pośrednictwem ST-LINK V2.
Archiwum kategorii: notatka
Wykrywanie motywu ciemny / jasny w Swift
Odpowiednia kolorystyka zależna od motywu wybranym na urządzeniu. Wartość aktualnego motywu można pobrać za pomocą zmiennej środowiskowej „@Environment(\.colorScheme)”.
Czytaj dalej Wykrywanie motywu ciemny / jasny w SwiftTimer 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]);
Alternatywa dla STRING_SPLIT w MSSQL
Poniżej przykład podzielenia tekstu i wprowadzenie go do tabeli. Ciąg znaków odseparowany od siebie np. przecinkiem. Dane w tabeli można dalej przetwarzać w SQL.
Poniższy przykład również pomaga obejść błąd
’STRING_SPLIT’ is not a recognized built-in function name.
Przykładowo mamy ciąg znaków odseparowany przecinkiem:
declare @str2arr as varchar(200);
set @str2arr = '5, 10, 12';
Aby podzielić ciąg znaków (String) i wprowadzić dane do tymczasowej tabeli należy wykonać:
declare @Str2ArrTable as table(p int);
insert into @Str2ArrTable
select trim(split.a.value('.', 'VARCHAR(100)'))
from (select Cast ('
cross apply data.nodes ('/M') AS Split(a);
Dane znajdują się w tabeli. Aby je podejrzeć:
select * from @Str2ArrTable;
Dane z tabeli można wykorzystań np. w innym zapytaniu SQL jako warunek:
select * from Dokumenty where typDok in (
select p from @Str2ArrTable
);
Archiwum PKCS12 na potrzeby Let’s Encrypt SSL
Przechowywanie certyfikatu Let’s Encrypt w archiwum PKCS #12 na potrzeby np. Java Boot Spring HTTPS.
Generowanie pliku P12 za pomocą komendy „openssl”:
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name twoja-domena.pl -CAfile chain.pem -caname root
Konfiguracja Boot Spring w pliku „application.properties”:
server.port=443
server.ssl.key-store=/sciezka/do/pliku/keystore.p12
server.ssl.key-store-password=twoje_haslo_dp_pliku_p12
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=twoja-domena.pl
Docker Registry – własne repozytorium obrazów Dockera
Istnieje możliwość modyfikowania oraz zapisywania obrazów Dockera, a następnie wysyłanie ich np. do Docker Huba. Wersja darmowa tego serwisu jest dość mocno ograniczona. W sytuacji gdy w posiadaniu jest własny serwer można użyć alternatywy w postaci Docker Registry.
Czytaj dalej Docker Registry – własne repozytorium obrazów Dockera
Docker i iptables na Ubuntu
Po uruchomieniu dockera pojawia się pytanie jak ograniczyć dostęp do niektórych usług. O ile takie aplikacje jak np. WordPress powinny być widoczne dla wszystkich to np. MySQL już niekoniecznie. Poniżej pozwoliłem sobie skrótowo opisać jak ograniczyć dostęp do wybranego serwisu wyłącznie dla jednego hosta w sieci lokalnej.
Ubuntu – Skrót na pulpicie oraz w doku ulubione
Poradnik jak w szybki sposób w Ubuntu 20.04 dodać skrót do aplikacji na pulpit oraz dodać aplikację do doku z ulubionymi.
Czytaj dalej Ubuntu – Skrót na pulpicie oraz w doku ulubione
Logowanie SSH za pomocą klucza RSA
Autoryzacja za pomocą RSA zwalnia z potrzeby wprowadzania hasła podczas logowania się na serwer SSH. Jest to przydatne podczas korzystania np. z GIT, RSYNC itp.. Wymagane jest wykonanie prostych zabiegów po stronie klienta oraz serwera.
Czytaj dalej Logowanie SSH za pomocą klucza RSA
Gdzie się podziali Celebryci?
Świat Wielkiego Sportu zamilkł, schował się w swoich luksusowych willach. Co jakiś czas słychać tylko o „groszach” rzuconych na poczet własnego piaru. Gdy tak nasi celebryci liczą straty albo ściągają kasę z ubezpieczenia po tym jak dotknęła ich ta tragedia, na placu boju pozostali samotnie przedstawiciele służby medycznej oraz wolontariusze. Niedofinansowani, odizolowani od najbliższych, sypiający w szpitalnych zakamarkach, narażeni na utratę zdrowia ciągle trwają na pierwszej linii frontu. Na co nam teraz Lewy i jego talenty? Nie lepsza pielęgniarka, ratownik, lekarz, strażak, policjant? Nie można pominąć kasjerek, magazynierów i całej masy ludzi, którzy mimo strachu „podkręconego” przez media ciągle przychodzą do pracy.