Wpis z mikrobloga

#programowanie #javascript #golang #iot

Mam pomysł na aplikację/system z dziedziny IoT, którą jak mi się uda napisać (do czego długa droga, bo nie jestem zawodowym developerem ( ͡° ͜ʖ ͡°) ), to by miała być sprzedawana w dwóch wersjach:
- zainstalowana na urządzeniu embedded,
- jako apka desktopowa.

Z racji tego powyższego stwierdziłem, że jak wszyscy polecają to pójdę na backendzie w Go, bo wydajny (idealne na embedded) i kompilowany (czyli można dystrybuować binarki na desktopy i serwery). Z tego powodu zrezygnowałem z node.js i Javascript bo zdążyłem wybadać że skompilować JS w łatwy i sensowny sposób się nie da tak jak to da się zrobić np. w Pythonie, przez co sprzedając komuś apkę uruchamianą w node.js oddajesz mu kody źródłowe (poprawcie mnie jeśli się mylę, nie znalazłem sensownego i polecanego sposobu żeby robić binarki z JS, tylko jakieś eksperymenty na githubie).

I tutaj rodzi się problem bo zakładam że GUI będzie dostępne przez przeglądarkę WWW, nawet by mi pasowało żeby to było zrobione w React.js bo biblioteki mi pasują których potrzebuję. Tylko jak zrozumiałem to oznacza że przekazując taką aplikację na desktop cały kod frontendu bym przekazywał (bo Reactowa apka odpalana w node.js), a chroniony byłby tylko backend bo to byłyby binarki z Go.

Widzicie jak to można wszystko pogodzić? Pierwotnie chciałem wszystko w JS i node.js bo lubię, ale zorientowałem się że na desktopy to by oznaczało dzielenie się darmowym kodem ( ͡° ͜ʖ ͡°)
  • 12
  • Odpowiedz
@Wegrzynski: a co planujesz na tym froncie robić, że tak się obawiasz dzielenia się kodem? Jakby nie patrzeć to na rynku multum programów które tak robią (pierwszy z brzegu Discord). Front ma tylko być interfejsem jakby nie patrzeć, czy nie?
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@Wegrzynski: przecież JS i Python to oba tak samo języki skryptowe.

Czyli jak komuś dajesz apkę, to dajesz kody źródłowe. Możesz co najwyżej obfuskiwać (minifikować, chociaż to nie to samo), że będzie trudno taki kod wykorzystać (nie da się go czytać).

A robienie binarek z języków skryptowych to tylko dorzucanie interpretera i kodu źródłowego. Niewielki problem, żeby go wyłuskać.

Jak chcesz kompilować z tego powodu, no to tylko języki kompilowane.

Jak
  • Odpowiedz
via Wykop Mobilny (Android)
  • 3
@Wegrzynski: a to chcesz backend dawać, żeby każdy go sobie stawiał? xD
Bo to napisz już aplikację standalone (wszystko w jednym), a nie bawić się we front i backend, bo to zbędny narzut.

Jak backend będzie stał u ciebie, no to może być w czymkolwiek napisany i tylko API udostępniasz. A kod frontu możesz udostępnić, bo bez backendu nikt nic nie zrobi.
  • Odpowiedz
wszyscy polecają to pójdę na backendzie w Go, bo wydajny


@Wegrzynski: Golang można polecać bo np. szybko kompiluje oraz bardzo łatwo można się go nauczyć, ale raczej nie bo wydajny. Wydajność to on ma taką średnią, gdzieś w okolicach Javy i C#. Do tego używa GC, które pauzuje aplikację na czas sprzątania, więc o ile średnia wydajność może być przyzwoita, to już P99 czasu odpowiedzi może być beznadziejne. Do tego co
  • Odpowiedz
@Wegrzynski: ale urządzenie embedded to dla Ciebie mikrokontroler czy bardziej obudowane Raspberry Pi xD Jak to pierwsze no to raczej się nie obejdzie bez C/Rusta. Jak to drugie to backend może stać na czymkolwiek - nawet Node czy Python. Tylko sobie szyfrujesz partycje i powinieneś mieć spokój.
  • Odpowiedz
a co planujesz na tym froncie robić, że tak się obawiasz dzielenia się kodem? Jakby nie patrzeć to na rynku multum programów które tak robią (pierwszy z brzegu Discord). Front ma tylko być interfejsem jakby nie patrzeć, czy nie?


@marahin: Jako system do wizualizacji danych front to będzie spory kawałek kodu ( ͡° ͜ʖ ͡°)

przecież JS i Python to oba tak samo języki skryptowe.

Czyli jak
  • Odpowiedz
@marahin: @mk321: @F0rT3hW1n: @Krolik: Dzięki wszystkim za komentarze, problem sam się rozwiązał dzięki Waszym naprowadzającym komentarzom( ͡° ͜ʖ ͡°) Zorientowałem się że aplikacja oparta na mikroserwisach na desktopie nie ma racji bytu ( ͡° ͜ʖ ͡°) Chyba jednak zostanę przy MERN + mikroserwisach tylko na embedded jak pierwotnie założyłem, żadne Go niepotrzebne jak widać ( ͡° ͜ʖ ͡
  • Odpowiedz
@mk321:

I added this to a comment of a comment, but thought I would add here. The Fibonacci implementations are not the same for your Go code and your Rust code. Your rust code does extra checking to avoid extra recursion calls. In my local testing, I can speed up Go's fibonacci implementation by like 50% just by using the same algorithm that you use in the Rust code.


Also, I
  • Odpowiedz