Comics: It is not a bug, it is a feature!

Opublikowano: 21.03.2022 - tagi: Komiks Rysowanie


RxJS: Operator from

Opublikowano: 19.03.2022 - tagi: JavaScript RxJS Operator Observable

Operator from

Operator from zamienia podaną, w parametrze wartość w obiekt typu Observable.

Za pomocą tego operatora możesz stworzyć Observable z tablicy, Promise lub iterowalnego obiektu.

Przykłady

Przykład 1

import { from } from 'rxjs';

const observable = from([1, 2, 3]);
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: 1
// value: 2
// value: 3

Przykład 2

W przypadku gdy jako parametr przekażemy ciąg znaków operator from potraktuje to jako tablicę znaków. Oznacza to, że każdy znak zostanie wysłany jako pojedyncza wartość.

import { from } from 'rxjs';

const observable = from('Hello');
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: H
// value: e
// value: l
// value: l
// value: o

Jeśli przekażemy łańcuch znaków za pomocą tablicy, ten tekst zostanie przesłany jako jedna wartość:

import { from } from 'rxjs';

const observable = from(['Hello']);
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: Hello

Przykład 3

Za pomocą tego operator możemy zmienić Promise w Observable:

import { from } from 'rxjs';

const promise = new Promise(resolve => resolve('Some value'));

const observable = from(promise);
observable.subscribe(value => console.log('value: ', value));

// Wynik:
// value: Some value

Przykład 4

Załóżmy, że mamy dokument HTML, który zawiera taką strukturę:

<h2>Some header 1<h2>

...

<h2>Some header 2<h2>

...

<h2>Some header 3<h2>

I chcemy pobrać treść z nagłówków h2. Przykład:

import { from } from 'rxjs';

const allH2 = document.querySelectorAll('h2');

const observable = from(allH2);
observable.subscribe(value => console.log('value: ', value.innerText));

// Wynik:
// value: Some header 1
// value: Some header 2
// value: Some header 3

Angular: Jak zintegrować frontend i backend za pomocą proxy?

Opublikowano: 15.03.2022 - tagi: JavaScript Angular Konfiguracja Proxy Backend Integracja

Angular udostępnia prosty mechanizm integracji Frontend'u z Backendem. Nazywa się proxy.

Załóżmy, że nasza aplikacja (frontend) działa na porcie: 4200. Mamy także backend, który działa na porcie: 3000. W tym przypadku mamy dwa różne porty, a to jest problem, ponieważ nie jesteśmy w stanie się odwołać do skryptu backendowego.

Ten problem możemy łatwo rozwiązać, konfigurując proxy.

Konfiguracja proxy

Zanim opiszę jak to zrobić, najpierw kilka słów jak to działa. Proxy sprawia, że frontend, który działa na przykład na porcie 4200 będzie mógł się odwołać do backendu, który działa pod innym portem.

Czyli na przykład mamy backend takim API:

Za pomocą proxy będziemy mogli odwołać się do tego API na przykład tak: http://localhost:4200/api/getUsers.

Proxy możemy skonfigurować, w dwóch krokach:

Stwórz plik proxy.conf.json

Zwartość pliku: proxy.conf.json:

{
  "/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": "true",
    "pathRewrite": {"^/api": ""}
  }
}

W polu target podajemy adres, pod którym działa nasz backend.

Dzięki takiej konfiguracji będziemy mogli we frontendzie wywoływać API, w taki sposób: http://localhost:4200/api/someEndpoint.

Dodanie pliku proxy.conf.json

Teraz zedytujmy plik: package.json i w scripts dodajmy taką linijkę:

{
  "scripts": {
    "start": "ng serve --proxy-config proxy.conf.json"
  },
}

To wszystko. Uruchamiamy backend i frontend:

npm run start

Mamy dostęp do backendu we frontendzie.

Uwaga: Tego sposobu używa się zwykle, w trybie development. Jeśli chodzi o wersję produkcyjną, to można stworzyć virtual host.


NodeJS: Mongoose walidacja danych modelu

Opublikowano: 08.03.2022 - tagi: NodeJS MongoDB Mongoose Walidacja Dane Model JavaScript

Model danych

Biblioteka Mongoose dysponuje kilkoma walidatorami, które określamy w modelu dokumentu:

const PersonSchema = new Schema({
name: { type: String, required: true },
age: { type: Number, min: 18 }
});
const PersonModel = mongoose.model('person', PersonSchema);

Spróbujmy zapisać model danych, który jest niepoprawny:

const noNamePerson = new PersonModel({ age: 16 });
try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

W tym przypadku zwróci błąd walidacji.

Walidacja danych

A co w przypadku, gdybyśmy chcieli sprawdzić poprawność danych przed ich zapisem?

Istnieje metoda validateSync, która poinformuje nas o ewentualnych błędach:

const noNamePerson = new PersonModel({ age: 16 });

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors);

try {
await PersonModel.create(noNamePerson);
} catch(error) {
console.log('error: ', error);
}

Jeśli nie ma błędów zmienna validateErrors będzie pusta. W przypadku błędów walidacji zwróci obiekt, do którego można się dostać w taki sposób:

const validateErrors = noNamePerson.validateSync();
console.log(validateErrors.errors.title);
console.log(validateErrors.errors.age);

Jak zbudować dyscyplinę?

Opublikowano: 03.03.2022 - tagi: Produktywność Dyscyplina

Po co budować dyscyplinę?

Ile razy zaczynałeś prace nad własnym projektem, ale po jakimś czasie go porzucałeś? Ile razy byłeś zmotywowany do działania, a po upływie kilku dni odpuszczałeś? Dlaczego znowu się nie udało?

Jedną z odpowiedzi jest: bo brakowało Ci dyscypliny.

Jeśli zbudujesz dyscyplinę, nie będziesz musiał przejmować się tym, że masz zły dzień lub Ci się nie chce. Po prostu działasz.

Dyscyplina to plan działania. Jeśli go masz, wiesz czym się zająć i nie tracisz czasu na zastanawianie się.

Dyscyplina to rygor. Jeśli wiesz, co jest do zrobienia, to się tym zajmujesz. Sam narzucasz sobie ile czasu, zamierzasz poświęcić na zadanie.

Dyscyplina to nawyk. Kiedy wiemy, że zbudowaliśmy dyscyplinę? Jeśli zauważysz, że przystępujesz do pracy automatycznie, tak że weszło Ci to w krew.

Korzyści z dyscypliny

Zbudowanie dyscypliny zajmuje czas. Trzeba to sobie uświadomić. Na początku jest najtrudniej. Jeśli wytrwamy, to zobaczymy tego wyniki.

Budowanie dyscypliny można porównać do efektu kuli śnieżnej. Na początku kula jest mała, ale z czasem nabiera rozpędu i się rozrasta.

Dlaczego warto budować dyscyplinę?

Działanie

Przede wszystkim będąc zdyscyplinowanym, skupiasz się na tym, co jest do zrobienia. Masz jasno określone cele. Masz plan. Po prostu pracujesz.

Nie polegasz na motywacji

Dyscyplina sprawdza się szczególnie przy celach długoterminowych. Pracujesz nad nowym projektem? Odchudzasz się? Nie polegaj na motywacji, ale zbuduj plan i go konsekwentnie realizuj. Motywacja przyda się na początku, ale szybko ucieknie. Wtedy do akcji powinna wkroczyć dyscyplina.

Nie mów: "Nie mam motywacji do tego", a skup się na: "Jeśli to jest dla mnie ważne, to powinienem pod to działanie zbudować dyscyplinę".

Odrzucasz wymówki

Masz gorszy dzień? Albo nie jesteś w nastroju? Co się stanie, jeśli sobie dzisiaj odpuścisz? Pewnie nic. Problem jest, wtedy gdy wybierając wymówki, tworzysz zły nawyk, który oddala Cię od wyznaczonego celu.

Polegając na dyscyplinie, podpisujesz kontrakt z samym sobą. W tym kontrakcie napisane jest: "Nie dla wymówek".

Efekty

To, co chcemy osiągnąć. Pracujemy, żeby coś sensownego zrobić. Czasami zajmuję to trochę czasu. Jeśli skupimy się na pracy, efekty przyjdą szybciej, niż myśleliśmy.

Zbuduj dyscyplinę

Więc jak zbudować dyscyplinę?

Wyznacz cel

Określ, co chcesz osiągnąć. Pod wyznaczony przez Ciebie cel będziesz budować dyscyplinę.

Określ plan

W tym kroku musimy odpowiedzieć sobie na pytania:

  1. Jaki będzie mój pierwszy krok?
  2. Jakie będą moje następne zadania?
  3. W jakie dni tygodniu zamierzam pracować nad swoim celem? Codziennie? Poniedziałek, środa, piątek?

Czasami jest tak, że możemy określić z góry wszystkie zadania, które należy robić po kolei. Ale nie zawsze. Jeśli nie jesteś w stanie określić wszystkiego naraz, skup się na najbliższym zadaniu. Kiedy je skończysz, możesz zaplanować kolejne działania.

Jeśli zadanie jest zbyt ogólne, rozbij je na mniejsze — bardziej precyzyjnie określone.

Blokowanie czasu i skupienie

Skoro wiesz, co jest do zrobienia i kiedy się tym zajmiesz, to sprecyzuj jeszcze, o której godzinie i ile czasu zamierzasz poświęcić na zadanie danego dnia. To jest bardzo ważne!

Na przykład:

Zamierzam pracować nad własnym projektem: w poniedziałek, środę i piątek o 17:00 przez 1 godzinę.

Uwaga: Pracując, w taki sposób nie mów sobie: "Dzisiaj zrobię to i to" - taki sposób myślenia jest błędny, ponieważ często jest tak, że nie przewidzisz przeszkód, na które napotkasz podczas pracy. Skup się na samym działaniu, a nie na rezultatach. Efekty przyjdą, ale potrzeba do tego cierpliwości. Dyscyplina polega właśnie na działaniu, a nie przewidywaniu.

Zmień to w nawyk

To jest najważniejszy punkt. Dyscyplinę zbudujesz, jeśli podpiszesz się pod swoim planem i będziesz go realizować w wyznaczone dni o określonej godzinie i poświęcał na to daną ilość czasu.