• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    BLAMIThe Go Programming Language - moderni programovaci jazyk

    Go is an open source programming environment that makes it easy to build simple, reliable, and efficient software.

    Pro vyhledavani clanku/blogu/informaci o Go v Google je potreba misto vyrazu "Go" pouzivat "Golang".

    Web:
    golang.org - ofic. www stranky projektu Go
    Go Playground - piskoviste na vyzkouseni Go
    blog.golang.org - ofic. blog projektu Go
    pkg.go.dev - vyhledavac knihoven a dokumentace
    Awesome Go - seznam oblibenych projektu, knihoven a blogu

    Literatura:
    The Way To Go: A Thorough Introduction To The Go Programming Language (Ivo Balbaert)
    Programming in Go: Creating Applications for the 21st Century (Developer's Library) (Mark Summerfield)

    Komunita:
    Slack Gophers - server pro uzivatele a skupiny okolo projektu v Go
    rozbalit záhlaví
    DANIELSOFT
    DANIELSOFT --- ---
    Tak jsem ondyno dneska přidával testy do projektu a "go test" řvalo, že je špatná cmdline volba "-t". Seniorní kolega si všiml, že mám na flagy balík "kingpin", který je přesložitělý (a já ho tam měl z lenosti, protože jsem to copypastnul z projektu, který jsem kanibalizoval), tak mi poradil změnit "kingpin" na "flag" - a místo "kingpinu" si na to samé stěžoval "flag"

    tak jsme s druhým seniorním kolegou přišli na to, že chyba byla volat kingpin.Parse() respektive flag.Parse() v init() místo main(), protože pak dostane cmdline volby z testovacího enginu a je z toho zmatený, přesun do main() (který vyžadoval předělání nějakého kódu) pomohl
    CUCHULAIN
    CUCHULAIN --- ---
    DANIELSOFT: no bodejť. problém je v tom, že se kód pokouší přes := znovu deklarovat s.SampleField.
    DANIELSOFT
    DANIELSOFT --- ---
    ahoj, připadá mě, že jsem asi narazil na chybu v Golangu, nebo možná jsem jen příliš "rozežranej" co se týče toho, co po něm chci


    package main

    type SampleStruct struct {
    SampleField int
    }

    var s SampleStruct

    func returnIntErr() (int, error) {
    return 42, nil
    }

    func main() {

    // $ go run gostructerr.go
    // # command-line-arguments
    // gostructerr.go:15:5: non-name s.SampleField on left side of :=

    //!
    //s.SampleField, err := returnIntErr()

    var err error
    s.SampleField, err = returnIntErr()

    println(err)

    }



    ten řádek za tím //! se nezkompiluje (když ho odkomentujete), imho by měl přiřadit do s.SampleField a zároveň vytvořit/deklarovat proměnnou err. takhle to vypadá, že ":=" umí, kromě vytváření nových proměnných, přiřazovat jen do proměnných a ne do položek struktur, což mi přijde neortogonální, workaround, který se přeloží, následuje

    je to očesaný reproducer z reálného projektu, kde jsem si rval vlasy, proč to nefunguje: ještě jsem to postnul do interních pracovních fór a na okouna a zítra uvidím, kdo mi co kde řekne
    BLAMI
    BLAMI --- ---
    DRUDRIGER2: Ja moc web appky nedelam, pracuju jako SRE ve fintechu a vetsina mojich vytvoru jsou ruzny CLI tools pro developery a demoni na telemetrii.

    Co se bundlovani tyce, ja nejsem moc zastancem, protoze to neskaluje treba s pouzitim CDN kdy mas ty assety servirovany uplne odjinud nez tu logiku co obstarava binarka.
    DRUDRIGER2
    DRUDRIGER2 --- ---
    BLAMI: Jo dik. ja sem nad tim premyslel a jo to dava smysl. ze namisto toho priklad git reseni se pouziva reseni na zklade deb balicku. clovek to muze lechce vratit zpatky , distribuovat a podobne srandicky ktere je potreba.
    Jo dik za jini pohled .
    se mozna jeste zeptam jen teoreticky mozna s tim mas taky zkusenost. kdyz se dela apka v go a je to nejakej ewb, co je vyhodnejsi nechat ty css a html sablony v binarce a nebo je mit venku zvlast jako soubory.
    Jasne je ze kdyz je to v binarce lepe se to distribuuje. a zase naopak kdyz je to ven z binarky tak se to lechce vyviji a nemusis kvuli kazde uprave v html ci v css delat compliaci binarky.
    Oba pristupy maji svoje plus i svoje minus. co se v praxi vice pouziva.?
    A mozna to si jen fabuluji se pouziva nejake postup, kdy pri vyvoji jedes ty soubory venku a kdyz se to dodela tak se stanou soucasti binarky....
    BLAMI
    BLAMI --- ---
    DRUDRIGER2: jo, to jsem presne myslel. Deb balik jako takovej ti pochopitelne systemd nevyresi, to musis udelat sam, ale vyresi veci jako upgrady/rollbacky. Na systemd jsou tam helpery co pomuzou tu servicu restartovat treba pri tech upgradech. Viz. https://wiki.debian.org/Teams/pkg-systemd/Packaging
    VELDRANE
    VELDRANE --- ---
    DRUDRIGER2: vzhledem k tomu ze to sou vsechno microservisy v kubernetes tak to resim helmem
    DRUDRIGER2
    DRUDRIGER2 --- ---
    dekji za odpoved.
    Co tim myslis distribucni balicek svoji distribuce.?
    Myslis jako udelat si priklad v debianu vlastnej .deb balicek tej mojej aplikace.? a to mi pohlida vsehcno ohledne systemd atd.
    myslel si to tak.?
    BLAMI
    BLAMI --- ---
    DRUDRIGER2: systemd neni na deployment ale na lifecycle management. Ono zalezi jak (co je unit of deployment) a kam to deplojujes
    - jestli na nejakou VM s Linuxem co mas cely pod kontrolou - v takovym pripade bych volil distribucni balik distribuce, kterou pouzivas
    - do cloudu - tam zalezi na providerovi a runtimu ale typicky chces nejakej nemennej setup (docker kontejner, vm image, k8s deployment unit + kontejner)

    Co se tyce toho jak tu unit of deployment vytvorit, tak zase zalezi kde mas kod a jaky jsou tam procesy. Je tuna moznosti od selfhostovanyho Jenkinse, Drone CI nebo jinyho z milionu CICD reseni, pres Github Actions a Gitlab CI/CD az po nejaky udelatka co ma treba Amazon nebo GCP.
    DRUDRIGER2
    DRUDRIGER2 --- ---
    jak resite deployment.?
    delam si v GO male projekty, kdy se snazim rozbit jeden php monilt na mensi microservices v go. na ten monolit je udelanej celej deploy proces, postaveny na gitu.
    Mne zatim napadlo nebo co sem koukal, pouzivat na to systemd. jak to resite vy, pripadne co by jste poradili.?
    DRUDRIGER2
    DRUDRIGER2 --- ---
    Vypadá to dobře
    BULHI
    BULHI --- ---
    BULHI: tak Gorilla ma evidentne novej tym https://github.com/gorilla#announcement
    LARS_GUNNER
    LARS_GUNNER --- ---
    BULHI:
    VELDRANE:
    Supr, projdem si to.
    S partakama potrebujeme umet vytvorit web, ktery by nam slouzil interne, popr. jej pak nabidnout jako option pro zakazniky. Zaroven vidime v Go zajimavou budoucnost, protoze uz bylo par poptavek na mensi projekty a vypada to, ze by Go mohlo jit dopredu a bude soucasti poptavek.
    Ono totiz hlavni hybnou silou byl impulz od jednoho korporatniho udrzovace monolitu, ktery to zhejtil, tak se si rek, ze to bude asi zajimavy. :)
    VELDRANE
    VELDRANE --- ---
    LARS_GUNNER: Jak uz tu zaznelo, sel bych cestou nejakyho frameworku. Za sebe muzu doporucit treba Goa framework, v tom se to pise zkoro samo:

    GitHub - goadesign/goa: Design-based APIs and microservices in Go
    https://github.com/goadesign/goa
    BULHI
    BULHI --- ---
    LARS_GUNNER: me tyhle kurzy vzdycky prijdou hrozne zdlouhavy a plny informaci, ktery jsi ani nepotreboval, nebo uz jsou zastaraly.. zacal bych urcite s ofiko tutorialem: https://go.dev/tour/welcome/1

    Dokumentace standardni knihovny mi casto prijde docela hutna, aby ses do ni jen tak ponoril, pouzivam ji spis jen jako referenci. Takze jako dalsi krok bych urcite spis doporucil treba https://gobyexample.com/

    No a dal zalezi, co presne chcete udelat. Standard lib ma http server, templates atd., ale asi bych se podival spis na nejakej framework, jako treba Gin, Beego. Pripadne v praci pouzivame https://github.com/gorilla/mux coz neni uplne framework, spis jen balik nastroju pro http, nicmene autori to prestali udrzovat. Nam to ale zatim staci a driv to bylo hodne popularni.
    WILD_A
    WILD_A --- ---
    gRPC na Go Meetupu v Praze
    Go Meetup #12, Wed, Jun 14, 2023, 6:00 PM | Meetup
    https://www.meetup.com/prague-golang-meetup/events/293834888/
    LARS_GUNNER
    LARS_GUNNER --- ---
    Ahoj vsem, pro letosni R&D batch jsme si vybrali Go. Cilem je se naucit zaklady a nasadit s tim web/blog s moznosti rozsireni o jednoduchy e-shop a tim si vyzkouset "extensioning".
    Mame pristup do Udemy, kde je pomerne dost kurzu, ale nedokazu posoudit kvalitu. Otazkou je, je to vubec potreba? Neni referencni dokumentace dost dobra a obsahla? Investice je to financne velmi mala(Udemy), ale chceme si vybrat casove efektivni zpusob uceni/cas. Muj background je plain C/(C++ uz nastesti jen nekdy) a C#. Vsichni jsme zamereni hodne prakticky, ale ja konkretne nedelame sitove a webove aplikace, takze uplne ciste surovy kod asi nebudu schopen vzdy jednoduse pochopit.
    MYSUNK
    MYSUNK --- ---
    ahoj, kdyby mel nekdo zajem, shanim medior/senior Gockare na praci na Fintech platforme (mikrosluzby, Kubernetes) - jedna se o maly tym lidi co to bavi:
    Go Developer - Medior/Senior - Full Remote | zebrabased s.r.o.
    https://www.startupjobs.cz/nabidka/36366/go-developer-medior-senior-full-remote

    Mejte pekne svatky!
    WILD_A
    WILD_A --- ---
    Go meetup ve stredu 30/11/2022 v SentinelOne:
    Go Meetup #9, Wed, 30 Nov 2022, 6:00 pm | Meetup
    https://www.meetup.com/en-AU/prague-golang-meetup/events/289247920/
    Kliknutím sem můžete změnit nastavení reklam