Sobes.tech

სად ინახება Redis-ის კონფიგურაცია, თუ ის ცალკე მანქანაზეა?

Senior
Uzum
41

რა კრიტერიუმები მნიშვნელოვანია შენთვის სამუშაოს არჩევისას? ანაზღაურების მოლოდინები?

Senior
X5
41

როგორ შევქმნათ უკეთესი slice წინასწარ გამოყოფილი მეხსიერებით make-ის გამოყენებით? რატომ უნდა დავაზუსტოთ შესაძლებლობა წინასწარ?

Senior
ClearWay
41

რატომ წამოვედი?

Middle
МВидео/эльдорадо
41

არსებობს თუ არა რაიმე ვადა?

Senior
Яндекс
41

რამდენიმე ნაკლებად გამოცდილი კოლეგის დახმარება გითქვამთ? როგორ ხდებოდა ეს ჩვეულებრივ?

Senior
АЭРО
41

გთხოვთ, მოგვიყევით თქვენი პროფესიული გამოცდილების შესახებ და რატომ გადაწყვიტეთ სამუშაოს ძიება.

Middle+
Защита Инфо Транс z-it
41

// კოდს სწორად დაარეგულირეთ ისე, რომ მოთხოვნები კონკურენტული იყოს და გამოჩნდეს პასუხის კოდი // და შეცდომის შემთხვევაში, ჩაწერეთ ის ლოგში და გააგრძელეთ დამუშავება package main import "net/http" var addrs = []string{"[link]"} func main() { for _, url := range addrs { resp, err := http.Get(url) if err != nil { log.Error(err) continue } // თუ საჭიროა, process resp } }

Senior
ИП Ганус Александр Андреевич
41

აჩვენეთ ელემენტის ძებნის ალგორითმი ბინარული ძებნის ხეებში მაგალითით (შედარება კვანძის გასაღთან, მარცხნივ/მარჯვნივ მოძრაობა).

Senior
МВидеоМВидео
41

HeadHunter ვებჰუკის საშუალებით პასუხს აგზავნის, ხოლო Avito — არა, უნდა იაროთ თვითონ. როგორ უნდა მოიქცეთ?

Senior
OZONOZON
41

პრაქტიკაში გამოიყენეთ ტრიგერები?

Middle+
МВидео/эльдорадо
41

რა გელით თქვენი ახალი სამუშაო ადგილისგან?

Senior
BetBoom
41

რომელი ალტერნატივა გაქვთ VACUUM FULL-ის, რომელიც ასევე გაათავისუფლებს ადგილს, მაგრამ მკაცრი ბლოკირების გარეშე?

Middle+
plata
41

რატომ შეირჩა ამ კონკრეტულ შემთხვევაში gRPC სერვისისთვის?

Middle+
А7
41

თქვენი რეზიუმეში წერია, რომ გოლანგში 3 მიკროწესვარი გქონდათ. რა კიდევ გააკეთეთ მონაცემების ნორმალიზებისა და ვალიდაციის გარდა? ეს იყო მხარდაჭერა თუ განვითარება?

Senior
wilix
41

როგორ მიიღებ ერთ შეკითხვაში ყველა გამყიდველის სიის, თუ გაქვს ყველა გამყიდველის და მხოლოდ დაბლოკილი გამყიდველების ცხრილი?

Middle
Aliexpress
41

რა არის ოპტიმისტური ბლოკირება?

Senior
Lenta Tech
41

როგორ პოულობს ClickHouse სვეტებს შორის კავშირს?

Middle+
Магнум
41

რას ეფუძნებოდა Amazon Athena-ში პარტიციონირება?

Middle
СБЕРСБЕР
41

պակեթ պահեստավորում միավորել ( "database/sql" "errors" "fmt" "time" "github.com/company/my-service/internal/event" "github.com/company/my-service/internal/metric" ) type Partner struct { ID string `db:"id" json:"id"` Balance float32 `db:"balance" json:"balance"` Hold float32 `db:"hold" json:"hold"` } type PayoutRepository struct { db sql.DB eventPublisher event.Publisher metricCollector metric.Collector totalPayouts int } func NewPayoutRepository() *PayoutRepository { db, err := sql.Open("postgres", "host=localhost user=postgres password=postgres dbname=affiliate") if err != nil { panic(err) } r := PayoutRepository{ db: db, eventPublisher: event.NewKafkaPublisher("localhost:9092"), metricCollector: metric.NewPrometheusCollector("localhost:9090"), } go func() { for range time.Tick(time.Minute) { _ = r.metricCollector.Send("TotalPayouts", r.totalPayouts) } }() return r } func (r *PayoutRepository) Payout(advertiserID, partnerID string, amount float32) error { advertiser, err := r.find(advertiserID) if err != nil { return err } partner, err := r.find(partnerID) if err != nil { return err } advertiser.Balance -= amount partner.Hold -= amount partner.Balance += amount if err := r.save(advertiser); err != nil { return err } if err := r.save(partner); err != nil { return err } r.totalPayouts++ return nil } func (r *PayoutRepository) find(id string) (Partner, error) { p := Partner{} err := r.db.QueryRow("SELECT * FROM partners WHERE id = " + id).Scan(&p) if err != nil { if err == sql.ErrNoRows { return p, errors.New("partner not found") } return p, err } return p, nil } func (r *PayoutRepository) save(p Partner) error { _, err := r.db.Exec( fmt.Sprintf("UPDATE partners SET balance = %s, hold = %s WHERE id = %s", p.Balance, p.Hold, p.ID), ) if err != nil { return err } if err := r.eventPublisher.Publish("BalanceChanged", p); err != nil { return err } return nil }

Senior
Pasul LTD
41
/412