wtorek, 26 marca 2019

Jak nie tworzyć parsera Markdown w Node.js

Jak nie tworzyć parsera Markdown w Node.js

Wymyśliłem sobie ostatnio nowy projekt - parser markdown w node.
Założenia były proste - parser miał wczytywać plik tekstowy (proste) i zwracać wynikowy HTML (trudne).
Tekstu nie można parsować po prostu linia po linii, bo (przykładowo), w bloku blockquote może znaleźć się dowolny inny znacznik i on też musi być poprawnie sparsowany.
W projekcie wyodrębniłem kilka warstw:
  • Tokenizer, dzielący tekst na zagnieżdżone podbloki tekstu o takim samym formatowaniu. Jest potrzebny, ponieważ Markdown może zawierać zagnieżdżone cytaty czy bloki list. 
  • TemplateChooser, który przyporządkowuje parser do bloku, na podstawie analizy tekstu przez regexy. 
  • Kilka parserów, do parsowania różnych typów tekstu objętego znacznikami. Przykładowe nazwy, to HeaderParser czy BlockquoteParser. Każdy parser, wykorzystuje odpowiedni regex pobierany z utils. 
  • Format danych, w którym słownie opisuje, jaki typ danych zawiera dany block i linia. 
  • Obsługę wejścia.

sobota, 23 marca 2019

Front end improvement #1 – wyrażenia regularne



Wyrażenia regularne (często nazywane regexami), ułatwiają nam pracę z łańcuchami znaków. Warto poznać ich najważniejsze zastosowania oraz podstawy składni, ponieważ wyrażenia regularne przydadzą się w większości projektów.
W dużym uproszczeniu, wyrażenia regularne pozwalają na wyszukiwanie bardzo szczegółowo zdefiniowanych wzorów (patternów) w ciągach znaków.

Wyrażenia regularne, mają zastosowanie między innymi przy:
  • Walidacji formularzy
  • Pracy z adresami url
  • Przekształeniach stringów
  • Wyszukiwaniu różnego typu informacji w tekście
  • Wyszukiwanie danych w edytorze kodu źródłowego
  • Przekształcanie danych w dokumentach tekstowych, na przykład usuwanie zdublowanych spacji.
  • Rozwiązywaniu zadań code golf, ze względu na bardzo zwięzłą składnię i duże możliwości

sobota, 16 marca 2019

Dlaczego wideotutoriale nie zrobią z Ciebie programisty


Wchodząc ostatnio na YouTube, zauważyłem że od dawna nie oglądam tutoriali. Ostatnie nagrania techniczne, jakie widziałem, to kurs Angulara od Kudvenkat i Acemind. Regularnie oglądam wszystko co wrzuca Gynvael Coldwind. Tymczasem, takie znakomite kanały, jak:
  • NetNinja
  • Codevolution
  • Traversy Media
  • Learn Code Academy
  • Coding train
  • Mariusz Jurczenko
  • Rem Zolotykh
  • itd.
leżą odłogiem. Skąd ta niechęć do oglądania tutoriali? Moim zdaniem, ta metoda nauki programowania, jest kiepska!

Programming exercise #3 - display elements from array with delay

In this exercise, I strong recommend using rxjs.
Input
Array of values (number of strings)
const arr = [1, 2, 3, 4, 5, 6];
Expected result
Display values from array with delay. For example
output 1 => one second later
output 2 => one second later
output 3 etc