poniedziałek, 17 Grudzień 2018

Rust / Web Assembly

Dlaczego pisząc aplikacje webowe w najpopularniejszych obecnie językach takich jak JavaScript, Python czy PHP warto zwrócić uwagę na nowy język programowania Rust?

Przy nieustannie rozwijającej się potrzebie tworzenia nowych, z większą ilością funkcji, skomplikowanych aplikacji w przeglądarce możemy natrafić na problem z wydajnością. Generowanie dużej ilości modeli 3d, tworzenie wymagających gier , to wszystko obecnie jest możliwe ale często wiąże się z dużym spadkiem szybkości działania, któremu nie zawsze możemy w łatwy sposób zaradzić.

Tym co może w przyszłości pomóc jest wydany w 2017 roku niskopoziomowy język Web Assembly (w skrócie WASM). Program, który
obecnie napiszemy w językach takich jak C / C++ / Rust będziemy mogli przy pomocy Web Assembly skompilować do binarnego formatu, który najnowsze przeglądarki będą mogły przetworzyć i uruchomić przy zachowaniu natywnej szybkości, dzięki czemu nasz program będzie działał wydajniej. WebAssembly posiada dwa formaty, pliki z rozszerzeniem „.wat” oraz „.wasm”.

Web Assembly jest jeszcze nowością, dopiero zaczynającą zdobywać popularność. Prawdopodobnie nie zastąpi to sposobu w jaki piszemy obecnie aplikacje po stronie klienta przy pomocy języka JavaScript z wykorzystaniem frameworków do tego przeznaczonych ale będzie współgrał w wykonywaniu najbardziej obciążającyh przeglądarkę działań.

Nie musimy zmieniać obecnie istniejącej struktury naszego kodu. Przykładem takiej współpracy może być skorzystanie z WebAssembly przy generowaniu obiektów 3d w przeglądarce czy zintegrowanie go z jednym najnowszych frameworków jak React / Angular / Vue do określonych zadań.

Gdzie jeszcze obecnie możemy skorzystać z języka Rust podczas tworzenia aplikacji webowych. Rust jest językiem ogólnego przeznaczenia ale to nie znaczy, że nie ma posiada narzędzi dla projektów skierowanych w strone przeglądarki.

Przy tworzeniu nowego projektu w języku Rust nie musimy spędzić długich godzin na jego konfigurowaniu, tego wszystkiego unikniemy dzięki narzędziu Cargo, wystarczy jedynie uruchomić komendę „cargo create nazwa_projektu ” kiedy chcemy stworzyć nowy projekt lub dodając argument bin „cargo create nazwa_projektu  –bin” kiedy naszym zamiarem jest utworzenie biblioteki. Cargo pozwala na pobieranie w łatwy sposób nowych modułów ze strony https://crates.io/, podobnie jak w przypadku gdy pobieramy zależności z repozytorium NPM zapisane w pliku „package.json”. Do testów jednostkowych i integracyjnych mamy już do tego odpowiednie wbudowane funkcje, nie ma konieczności dodawania nowych bibliotek, wystarczy jedynie uruchomić komendę „cargo test” a w oknie naszej konsoli zobaczymy wynik testów.

Podczas pisania kodu, warto mieć ustawione także narzędzie, które pozwoli na obserwowania zachodzących zmian w naszym kodzie by podczas zapisu automatycznie zostało wykonane przeładowanie aplikacji, przykładami takich narzędzi są np. gulp, nodemon, guard.
Cargo nie posiada domyślnie wbudowanej takiej funkcjonalności ale możemy ją dodać poprzez instalację „cargo watch” „https://github.com/passcod/cargo-watch”. Pobrana biblioteka jest widoczna gobalnie, wystarczy raz zainstalować a będziemy mogli z niej skorzystać podczas następnych projektów. Podstawową komendą jest „cargo watch -x run”, w tym przypadku słowo „run” odnosi się do komendy „cargo run” czyli teraz przy każdym zapisie zobaczymy zmiany bez konieczności ręcznego przeładowania.

Kilka ciekawszych frameworków, biblitotek:

Jeśli szukamy frameworku podobnego w swoim działaniu np. do fraworku Express (Node.js) dobrym wyborem będzie jeden z dwóch poniższych:

Rocket ~ 5944 stars (Github)
Iron ~ 5161 stars (Github)

Warto jeszcze wspomnieć o bibliotece ggez, która jest implementacją API jednego z najpopularniejszych silników 2d do gier LÖVE.

Back to home
Flutter – Nawigacja pomiędzy widokami

Nawigacja pomiędzy widokami we frameworku Flutter.

Read more...
Alternatywne JavaScriptowe Frameworki

W JavaScriptowym świecie poza frameworkami React, Angular które podzieliły po między siebie popularność, a goniącym je Vue.js jest jeszcze miejsce na inne, mniej skompilowane frameworki, które nie zostały jeszcze dostrzeżone przez szersze grono ludzi.

Read more...
Flutter – pobieranie danych w formacie JSON

W tym wpisie zapoznamy się jak w prosty sposób pobrać dane w formacie JSON.

Read more...