Co sądzicie o Golangu?


@Nofenak: języko się nazywa Go a nie Golang a z pracą jest tak jak wszędzie, c-----o, mnóstwo kandydatów, mało ofert. Chyba że chcesz uczyć się dla rozwoju czyli po nic to ok.
  • Odpowiedz
@biaukowe: jeżeli w zamian nie będzie ostrzeżenia to bez sensu to.

Sensowne rozwiązanie to mają Rust i C++: ostrzeżenia na wszystkie nieużywane rzeczy - również na nieużywane funkcje i struktury oraz opcja kompilatora pozwalająca zrobić z ostrzeżeń twardy błąd kompilacji (do wykorzystania na CI).
  • Odpowiedz
Próbował ktoś może się przebranżowić na pełnoprawnego #golang Developera? Przeglądałem ostatnio oferty na popularniejszych serwisach i w sumie każda wymagała lat doświadczenia w #golang podejrzewam, że komercyjnego, a nie takiego z pet projectów, więc czy istnieje w ogóle jakaś możliwość wejścia w tę technologię? Oczywiście pomijając sytuacje, gdy aktualny pracodawca zmienia/wprowadza nową technologię.

#programowanie
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@right_hook: ja się wkręciłem w pracę, gdzie nie trzeba było mieć doświaczenia. Zgaduję, że teraz jest gorzej, bo ssanie na programistów mniejsze jak i programistów go jest po prostu więcej

Pewnie na twoim miejscu szukałbym takich ofert albo firmy, która niekoniecznie wymaga znajomości danej technologii tylko znajomości innych technologii backendowych.
  • Odpowiedz
Jak Ci się podoba pisanie w GO?

@NikolajTesla1991: bardzo mi sie podoba, to moj glowny jezyk i nie zamierzam sie przesiadac poki co. Bardzo fajna biblioteka standardowa, mega szybki kompilator i prosta cross-kompilacja, masz jedna binarke ktora deployujesz gdzie trzeba i spokoj. Lubie syntax, latwo sie pisze i czyta, i jest duzo utartych standardow/patternow co tez ulatwia prace w zespole. Bardzo szybko sie pisze tez np. narzedzia CLI, albo jakies
  • Odpowiedz
@Nofenak: Z tych dwóch wybrałbym Rust. Programistów jest relatywnie mało. Praca często w specyficznych branżach i technologiach. To razem sprawia, że stawki są lepsze. Poza tym to jest naprawdę narzędzie ogólnego przeznaczenia. Możesz w tym pisać naprawdę low-levelowy kod pod specyficzne wymagania. Kod jest natywny, nie masz garbage collectora, więc wydajność i latency są bardzo dobre, a nie musisz się męczyć jak w C.
  • Odpowiedz
Czy #golang ma jakąś wydajnościową przewagę nad #rustlang czy #php NIE stosując żadnych dodatkowych sztuczek?

Nie chce być profesorem golang a chce mieć korzyści w aplikacji docelowo na kubernetes
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam aplikację opartą na zasadzie mikroserwisów: Go-lang (gin) i aplikację Vue, oraz serwer WebDAV w Rust (hyper + jakaś biblioteka do WebDAV). Obie aplikacje to zupełnie osobne projekty. Chciałbym, aby można było wrzucić coś na serwer za pomocą formularza, a potem, aby użytkownik po zalogowaniu na GNOME Account miał dostęp tylko do swoich plików.
Jak się integruje takie mikroaplikacje? Napisać jakiś konfig i jego obsługę w obu aplikacjach, czy może zakodować coś
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

więc chyba to zły pomysł, aby taki tandem dla każdego użytkownika osobno zestawiać, prawda?


@pyroxar: to zły pomysł jak i te pliki najlepiej abyś trzymał poza podami które niech będą bezstanowe. Prawidłowo masz dwa podejścia:
1. Aplikacja jej silnik jak już musisz ją trzymać na tych dockerach niech będzie to bezstanowe a pliki danego użytkownika aplikacja niech przechowuje tak jak to powinno być i tak robią aplikacje pod Linux -
  • Odpowiedz
Czy tworząc teraz aplikację golang/rust/vue to chcąc ją mieć na kubernetes, muszą pisać jakoś specjalnie?

Jakieś biblioteki pod kubernetes? Jakieś cuda z przetwarzania rozproszonego?

Aplikacja będzie na zasadzie mikroserwisow.

#docker #kubernetes #linux #rust #golang
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@pyroxar: nie musisz. Jak chcesz to możesz założyć że będzie sama bezpośrednio gadała do swoich zasobów i nimi zarządzała (konfigurowała sobie obiekty w k8s) ale to jest Twój wybór. Gratis dostaniesz np. service discovery - wbudowane nazwy w wewnętrznym DNS które pod nazwą serwisu mają konkretny komponent.
  • Odpowiedz
@pyroxar: jak robisz zwykłą bezstanową appke to generalnie deploy i tyle - jedyne co możesz zrobić (co wpływa na Twój serwis w sensie dodania kodu) to dodać readiness i liveness endpointa - https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ - dzięki temu k8s moze np wykryć że Twoja appka się wykraszyła i ją zrestartuję automatycznie (w tagach masz golang i rust, ale np w javie jak poleci OOM error to proces wisi ale nie przyjmuję więcej
  • Odpowiedz
#programowanie chcę się pobawić jakimś nowym językiem i frameworkiem. Co polecacie do postawienia sobie proxy z zapisywaniem danych z serwisu zewnętrznego i serwującego te dane lokalnie aż do inwalidacji.
Zapisywałbym dokumenty do jakiegoś #elasticsearch i serwował. High usage (100M requestów miesięcznie),

Standardowo bym użył jakiegoś #symfony #php, ale chcę się pobawić i poczuć jak student ponownie.
#nodejs? #expressjs
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

A może #golang? Bo chyba #rustlang #rust się do tego nie nadaje?


@kamillus: Nadaje się i to bardzo, ale tak jak napisał @Saly jest trochę więcej nauki, bo Rust jest bardziej rozbudowany i bardziej pryncypialny niż Go. Za to potem idzie szybciej bo kompilator więcej kontroluje za programistę i mniej bugów do naprawiania jest ;) W przypadku bardzo krótkiego projektu, jak nie
  • Odpowiedz
@kamillus: Do Elastica pasuje Java i Spring (masz tam rozbudowane liby pod tę bazę/silnik). Sam Elasticsearch jest napisany w Javie.
A teraz czekam aż się zlecą sekciarze spod znaku "Java zua!" xD
  • Odpowiedz
Ależ to jest durne:

a := []int{1, 2, 3, 4, 5}
lo, hi := a[:2], a[2:]
lo = append(lo, 6, 7, 8) // Ojoj, zamazuje `lo[2:5]`!
fmt.Printf("%v %v\n", lo, hi) // Wypisuje `[1 2 6 7 8] [6 7 8]`
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 2
Dla odmiany Rust zachowuje się przyzwoicie:

let a = [1, 2, 3, 4, 5];
let (lo, hi) = a.split_at(2);
let lo = lo.iter().chain(&[6, 7, 8]).collect::<Vec<_>>();
println!("{:?} {:?}", lo, hi);
  • Odpowiedz