Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Program za objavljivanje poruka na EMZ

[es] :: Art of Programming :: Program za objavljivanje poruka na EMZ

Strane: < .. 1 2 3

[ Pregleda: 5893 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ14.03.2026. u 10:16 - pre 4 meseca
Ako ti JavaScript odgovara, koristi JS. Svaki programski jezik predstavlja skup nekih kompromisa. Primena jezika Go i JS se preklapa u nekim delovima, iako se radi o veoma različitim jezicima razvijenim za rešavanje različitih problema. Besmisleno je porediti JS i Go. Možda ako napišeš program za objavljivanje poruka na EMZ u JavaScriptu, pa da onda analiziramo koji je jezik bolji za razvoj konkretnog programa.

Pointeri u Golangu postoje sa razlogom. S obzirom da koristiš JS, ti si naučio da prosleđuješ objekte po referenci, jer je to jedini način. U suštini u JS imaš samo pokazivače. Golang ti nudi dva načina prosleđivanja struktura, po referenci i po vrednosti. Danas je memorija jeftina (bar je bila do pojave AI balona), ali su promašaji keša skupi. Zato moderni jezici preferiraju korišćenje steka i prosleđivanje struktura po vrednosti, a ne po referenci. Go je osmišljen kao jezik koji podržava konkuretno programiranje. Ključna reč za pokretanje gorutine je samo ime jezika, što dovoljno govori koliko je konkurentnost bitna za Go. Konkurentnost nameće problem sinhronizacije. Kada gorutina dobije kopiju strukture, onda se ne moraju koristiti mehanizmi za zaključavanje. Naravno, ne možeš uvek da prosleđuješ kopije, pa zato kada treba da proslediš original, ti proslediš pointer i obezbediš pristup resursu muteksom. Ovo što sam napisao do sada odnosi se na semantiku, ako ti smeta korišćenje zvezdice i za to postoji dobar razlog. C je najpopopularnji programski jezik svih vremena, tako da je upotrebljeno nešto što je većini programera poznato.

Citat:
Par znakova := se koristi za deklaraciju i inicijalizaciju Go lang promenljivih.
U navedenom primery y se i puta deklariše!


Što se tiče := ne vidim u čemu je problem. Ko voli da kuca može da koristi dužu varijantu, var promenljiva tip. Tvoje y je se deklariše i puta, tako i treba jer si tako napisao. Nebitno je koliko se puta deklariše, bitan je opseg važenja. Ako si želeo da y postoji i nakon izlaska iz petlje, onda je trebalo da deklarišeš promenljivu iznad petlje.

Citat:
Sada kad je JSON najprihvatljiviji standard za razmenu podataka Go se zagrcne na parsiranju elementarnih JSON struktura koje JavaScript obradi dok kazeš 'SAD!'.


Hoćeš da kažeš da je u JavaSkriptu jednostavnije parsirati JSON (Java Skript Object Notation). Zvuči mi logično, ipak prva dva slova u akronimu JSON stoje za JavaScript. Pa, ako je već tako, evo programa koji umesto da parsira samo JSON, parsira i izvršava kompletan JavaScript :) Ako Go može da parsira kompletan JavaScript, to možda znači da si ti imao problem sa konkretnom JSON bibliotekom za go, a ne da se go "zagrcne" i ne može to da uradi.

Code:

package main

import (
    "fmt"
    "strconv"

    "github.com/dop251/goja"
)

func main() {
    str := `{"A":"b","C":[{"D":"e","false":1,"g":[{"1":2,"3":"H","4":true},{"I":"j","k":"L","M":"n"}]}],"D":1769508300000}`

    vm := goja.New()
    vm.RunString(`
        var o;

        function setObj(str) {
            o = JSON.parse(str);
        }

        function formatirajJson() {
            return JSON.stringify(o, null, 2);
        }    

        function upit(q) {
            return eval(q)
        }

        function t() {
            var t={
                159:"FF1",
                170:"DC"
            };
            return t
        }
    `)

    var setObj func(string)
    vm.ExportTo(vm.Get("setObj"), &setObj)
    setObj(str)

    var formatirajJson func(string) string
    vm.ExportTo(vm.Get("formatirajJson"), &formatirajJson)
    fmt.Println(formatirajJson(str))

    var upit func(string) any
    vm.ExportTo(vm.Get("upit"), &upit)
    fmt.Println(upit(`o.C[0].g[1]["k"]`))

    var t func() any
    vm.ExportTo(vm.Get("t"), &t)
    tobj := t()
    x := 170
    fmt.Println(getJsObj(tobj).at(x))
}

type jsobjekat map[string]any

func (o jsobjekat) at(x any) any {
    var kljuc string
    switch x := x.(type) {
    case int:
        kljuc = strconv.Itoa(x)
    case string:
        kljuc = x
    default:
        panic("nepoznat tip ključa")
    }
    return o[kljuc]
}

func getJsObj(obj any) jsobjekat {
    return obj.(map[string]any)
}



Wails nisam koristio, mislio sam da ćeš ti, pa da ćeš mi reći. Mene je na prvi pogled privuklo što liči na Elektron, ali nije toliko glomazan i spor i što bih mogao da koristim Go umesto JS.
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ18.03.2026. u 22:24 - pre 4 meseca
Šta da se zaludjujem sa Wails da bih utvrdio da ima osiromašenu emulaciju JavaScript funkcionalnosti?
U životu mi samo nedostaje maltretiranje sa organizacijom i strukturom nakaradno sročenih Wails protokola.
Rekao bih da tu iza otmenih fraza stoji gola propaganda sa nekoliko JavaScript funkcija da izgleda uverljivo a da ništa ne možeš da uradiš.

Nego, ovaj tvoj Go ima uvrnut smisao za crni humor.

Teroriše me porukama o grešci u liniji 296 a program ima 280 linija!
Žali se da sam napravio IO/Error u funkciji u kojoj ne koristim IO!

Na kraju se ispostavi da sam umesto string(x) napisao strings(x).
Crni humor, ništa drugo.

Vidim da imaju i neke Go verzije za Android.
Ako se to pokaže upotrebljivo možda nešto adaptiram za Android.
 
Odgovor na temu

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ19.03.2026. u 10:07 - pre 4 meseca
Wails nema emulaciju JavaScript funkcionalnosti, već korististi WebView operativnog sistema. Na Windowsu je to Edge, na Linux-u WebKitGTK. U prethodnoj poruci napisao sam ti isečak koda u kojem koristim JS endžin (goja). To nema nikakve veze sa Wails-om. Bio je to moj odgovor na tvoju tvrdnju da se Go zagrcne kada mu daš da parsira konkretan JSON string. Moj odgovor jeste jednim delom bio šala, ali i demonstracija prednosti statički tipiziranih jezika koji se prevode na mašinski kod. Pokušaj da napraviš interpreter sa JavaSkriptom, pa ćeš videti koliko će biti upotrebljiv. Ne kažem da je nemoguće, naročito zato što sam to već radio, ali krajnji domet takvog projekta bi bio potvrda koncepta ili razonoda.

Iskreno, malo si me razočarao svojim odgovorom. Očekivao sam da ćeš mi reći da se JSON ne parsira na način koji sam ja prezentovao u prethodnoj poruci, jer se stvarno ne radi na taj način. Go ima odličnu stabilnu ("future proof") standardnu biblioteku. Osim standardne biblioteke postoji ogroman broj nezavisnih biblioteka koje određene stvari rade na bolji ili drugačiji način. Tako i za JSON postoji veliki broj nezavisnih biblioteka. Na primer https://github.com/tidwall/gjson, gde bi tvoj primer bi izgledao ovako:

Code:

    str := `{"A":"b","C":[{"D":"e","false":1,"g":[{"1":2,"3":"H","4":true},{"I":"j","k":"L","M":"n"}]}],"D":1769508300000}`
    v := gjson.Get(str, "C.0.g.1.k")
    fmt.Println(v)


Ako ti je prioritet brzina parsiranja, onda možeš da isprobaš: https://github.com/bytedance/sonic. U krajnjem slučaju ako ti ne odgovara nijedna od postojećih biblioteka možeš da napišeš svoju biblioteku koja bi teoretski mogla da bude i brža i fleksibilinija od postojećih. Sa JavaScriptom si ograničen na JSON.parse.

Što se tiče crnog humora, ne mogu da komentarišem dok ne vidim kod. S obzirom na ono što si pisao o CORS, bez nekih dokaza, više verujem Go kompajleru :)
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ19.03.2026. u 15:44 - pre 4 meseca
Ja ne proveravama ni za koga.
Ako si nešto napisao netačno moraćeš sam da ispraviš :)

Širenje konteksta neme smisla. U ovoj temi je Go lang u fokusu.
Korišćenje biblioteka, goja, WebView, Electron-a, Tauri-ja, Wails-a ili sličnih frameworkova, github.com, gorilla, websocket, Go WASM, Node.js i alternative, ili šta god, za problem koji obradjujem ne dolazi u obzir.

Go ima prednost u brzini rada i jednostavnosti instalacije ali je komplikovan u obradi JSON podataka.

Ako imaš pure Go lang ideju slobodno napiši, ne za mene nego za tvoju aplikaciju :)
 
Odgovor na temu

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ19.03.2026. u 22:49 - pre 4 meseca
Ne znam koji problem obrađuješ. Ukoliko želiš možeš nešto detaljnije da napišeš.

Moja aplikacija koristi standardnu JSON biblioteku, Za ovako jednostavan slučaj korišćenja sasvim je zadovoljavajuća. Biblioteke goja, gjson i sonic, koje sam ja pomenuo, su pure Go. Ne razumem o kakvoj pure Go ideji za moju aplikaciju pričaš.
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 08:12 - pre 4 meseca
Već sam napisao da korišćenje biblioteka ne dolazi u obzir.
Šta ima da me github špijunira?

Ono što si ti koristio JSON Go lang je sasvim dovoljan.

Nego, da li si u Go lang http konekcijama imao problema sa verifikacijom TLS sertifikata?
 
Odgovor na temu

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 09:25 - pre 4 meseca
Ako nećeš da koristiš biblioteke jer te Github špijunira (nije mi baš jasno na koji način), onda možeš da razmotriš TempleOS i HollyC.

Program sam prilikom razvoja testirao kroz javne proxy servere. Neki od tih servera prave problem pri verifikaciji sertifikata. Moguće je da je cilj nekih od tih proksija MITM napad na korisnike. S obzirom da sam koristio privremene naloge nije mi bilo bitno i jednostavno sam isključio TLS verfikaciju.

Code:

transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}


Objavljena verzija programa ne koristi proksi servere, bar ne bez modifikacije izvornog koda.

Podsetio si me na zanimljivu temu gde smo Branimir Maksimović i ja uživo demonstrirali MITM napad. Učestvovao si i ti, samo tada još uvek nisi bio svoj na svom. Stvarno mi je žao što Branimir nije sada ovde sa nama.

 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 10:05 - pre 3 meseca
Nikad se nisam bavio bilo kakvim napadima.
Outsorsovao si me s nekim :)

Za eskiviranje TLS sam koristio:
Code:
client := &http.Client{
    Transport: &http.Transport{
        TLSClientConfig: &tls.Config{
            InsecureSkipVerify: true,
        },
    },
}

A to bi trebalo da bude isto rešenje kao što si naveo.
Time se ukloni x509 error.

Medjutim, glupavi server mi pošalje 0 bajtova.
 
Odgovor na temu

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 10:37 - pre 3 meseca
Tvoj stil pisanja odgovara starom članu aliimamnekolikokuća, poznatijem kao Ali Imam. Možda je to samo slučajnost. U svakom slučaju nije bitno.

Kod koji si postavio je ekvivalentan mom kodu i u mom slučaju funkcioniše. Ne znam šta pokušavaš da uradiš, tako da ne mogu da pogodim zašto server vraća 0 bajtova. Ali Imam bi pokušao da se nakači na server kladionice i koristio bi JavaScript, ali izgleda da ti nisi taj korisnik...
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 11:06 - pre 3 meseca
Ne znam zašto pitanje identiteta sa jedne teme postavljaš na ovoj temi?
Ako te zanima identitet sa druge teme onda treba da to diskutuješ na forumu gde mogu da ti odgovorim u punom kapacitetu.

Trenutno pišem u forumu "Art of Programming" da bih se proslavio kao programer a ne da bih hakovao identitete.

Ipak, ako hoćeš da pišeš u forumu "Art of Programming" i da problem osvetliš iz ugla Go lang programiranja onda se možda pridružim.

Ili te zanima nešto u vezi kladionica? Tražiš algoritam za gold jack pot?

Trenutno me zanima problem servera koji neće da mi pošalje poruku ili se poruka negde zagubi tako da do mene dodje prazna koverta.
 
Odgovor na temu

pover

Član broj: 351816
Poruke: 28



+1 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 11:15 - pre 3 meseca
U pravu si, izvini. Napiši mi molim te adresu servera da vidimo da li ću imati više sreće od tebe, odnosno da li će meni hteti da vrati poruku.
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ20.03.2026. u 15:51 - pre 3 meseca
Server je proradio i sad dobijam podatke.
Izgleda da je Cloudflare tu nešto "čačkao".
 
Odgovor na temu

svojnasvome

Član broj: 351841
Poruke: 39



+10 Profil

icon Re: Program za objavljivanje poruka na EMZ23.03.2026. u 00:23 - pre 3 meseca
Ovo je zanimljivo:

B je jedinstven ključ.
B=0 je dozvoljeno i označava da B ne postoji.
Ali

B = IObj.I[m].O.B
Za sve m, IObj.I[m].O.B != IObj.I[m+1].O.B

Ako je stvarni B jednak nil (ključ ne postoji što je dozvoljeno), taj ključ B primi vrednost od nekog prethodnog (što nije dozvoljeno).

Liči na "pointer reuse" problem u petlji!
Kada bi bio "pointer reuse" problem onda ne može biti

IObj.I[m].O.B != IObj.I[m+1].O.B (za sve m)

nego za neko m mora biti

IObj.I[m].O.B == IObj.I[m+1].O.B

Zato kreiram ListaB u koju dodajem svako novo B.
Ako u ListaB postoji B onda je ponovljen.
Takva provera funkcioniše i tada znam da imam problem jer mi article sa B[m] nije isto što i B[m+1] a B je (prividno) isto za oba.
Go lang ne dozvoljava "pointer reuse" error a ne znam ni kako se to može dogoditi jer u funkciji UpdateArticle( m int ) se kreira nova promeljiva I := IObj.I[m].
U stvari vrednosti za svaki element IObj.I su morale biti dodeljeno još sa json.Unmarshal() i ne bi smelo da se desi "pointer reuse".
 
Odgovor na temu

[es] :: Art of Programming :: Program za objavljivanje poruka na EMZ

Strane: < .. 1 2 3

[ Pregleda: 5893 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.