Sobes.tech

бастаи бастаи асосӣ func main() { c := make(chan int, 1) барои доираи 3 { интихоб { пештар: println(1) ҳолати <-c: println(2) ҳолати c <- 1: println(3) } } }

267

```go func fail() { panic("Беих!") } func main() { fmt.Println("Башланғич!") var wg sync.WaitGroup wg.Add(1) go func() { defer func() { if e := recover(); e != nil { fmt.Println(e) } }() fail() wg.Done() }() wg.Wait() fmt.Println("Аяқталды!") } ```

225

Чаро Elasticsearch-ро интихоб кардед? Ҳар кадом вариантҳо буд? Оё чизе интихоб кардед ё ELK аллакай буд?

211

Оё саволҳои дар бораи лоиҳаҳо ё шартҳои корӣ доред?

206

Мегӯйӣ, ки бо Elasticsearch чизе барои ҷустуҷӯи зудтари транзаксияҳо сохтӣ. Ин чист, чанд транзаксия аст ва чӣ фоида дорад?

184

Дар ниҳоят, аз кадом қарорҳо интихоб кардед? ClickHouse, ELK ва чӣ дигар?

184

func fetch(ctx context.Context, u User) (string, error) { // κάτι κάνουμε στο δίκτυο time.Sleep(time.Millisecond * 10) // προσομοίωση καθυστέρησης return u.Name, nil //return "", errors.New("κάποιο σφάλμα") } func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() }

182

Оё пас аз ворид кардани Elasticsearch фикру мулоҳизаи корбарон ё хадамоти техникӣ вуҷуд дошт?

171

Чӣ тавр системаи баландборишро месозад? Бар асоси таҷрибаи худ.

168

асосий пакет импорт ( "fmt" ) функция main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Salom Dunyo!" fmt.Println("Chiqish!") } фаталь хатолик: барча горутинлар уйда - deadlock! goroutine 1 [канал қабул қилиш]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Дастур чиқди: ҳолат 2.

158

баст paket func main() { c := make(chan int) барои доираи 3 { select { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }

157

бастаи асосӣ импорт ( "fmt" ) функсияи асосӣ() { c := make(chan string) гӯ fmt.Println(<-c) c <- "Hello World!" fmt.Println("Баромад!") }

156

Хизмати чӣ гуна аст, агар мо дар бораи тобоварии хатогӣ гап занем ва онро ба репликҳо кам кунем?

149

var defaultTxOptions = &sql.TxOptions{} const defaultCurrency = "RUB" func CreateUserWithDefaultCurrency(ctx context.Context, db *sql.DB, email, passwordHash string) error { tx, err := db.BeginTx(ctx, defaultTxOptions) if err != nil { return err } defer func() { if err != nil{ tx.Rollback() } }() _, err = tx.Exec("INSERT INTO users (email, password) VALUES (?, ?)", email, passwordHash) if err != nil { return err } rows, err := tx.Query("SELECT id FROM users WHERE email = ?", email) if err != nil { return err } defer rows.Close() id := 0 for rows.Next() { err = rows.Scan(&id) if err != nil { return err } } _, err = tx.Exec("INSERT INTO balances (user_id, currency, current_balance) VALUES (?, ?, 0)", id, defaultCurrency) if err != nil { return err } return tx.Commit() }

147

асосий пакет импорт ( "fmt" ) функция main() { c := make(chan string) go fmt.Println(<-c) c <- "Salom dunyo!" fmt.Println("Chiqish!") } фатал хато: барча горутинлар уйда - deadlock! goroutine 1 [канал қабул қилиш]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Программа чиқди: статус 2.

147

func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() } return names, nil }

137
/2