Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 3 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago
Не работает консольная GO игра на другой OS windows
Сделал небольшое консольное приложение на go, собрал его под свою ОС (linux mint) оно запускается и работет нормально, Но стоит мне собрать его под виндовс 10 оно не работает
package main
import (
"fmt"
"bufio"
"log"
"math/rand"
"os"
"strconv"
"time"
"strings"
)
func main() {
i := 10
fmt.Println("Game Guess Number! (1 - 15)")
fmt.Println("You have", i, "Attempts", "\n")
for i = i; i > 0; i-- {
seconds := time.Now().UnixNano()
rand.Seed(seconds)
target := float64(rand.Intn(15) + 1)
fmt.Println("Attempt: " ,i)
fmt.Print("Your guess: ", "\n")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
input = strings.TrimSpace(input)
guess, err := strconv.ParseFloat(input, 64)
if err != nil {
fmt.Println("error type is not a number")
log.Fatal(err)
}
if guess == target {
fmt.Println("You Won!!!", "\n")
break
} else if guess > target {
fmt.Println("Too High", "\n")
} else if guess < target {
fmt.Println("Too Low", "\n")
}
}
if i == 0 {
fmt.Println("You lose :(", "\n")
}
fmt.Println("Game End")
}
wine GuessNumberGame.exe
0074:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Game Guess Number! (1 - 100)
You have 10 Attempts
Attempt: 10
Your guess:
2024/08/28 01:58:12 read /dev/stdin: input/output error
~/Документы/temps main !1 ?1 01:58:12 ─╮
❯ 0034:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Как использовать gemini api в приложении?
Я чайник и пытаюсь потрогать gemini api. Делаю по инструкции.
Зашел в ai studio получил новый
Сохранил этот ключ в константу key
Далее функция
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(key))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel(modelName)
chat := model.StartChat()
test := "hello. Are you working now?"
resp, err := chat.SendMessage(ctx, genai.Text(test))
if err != nil {
log.Fatal(err)
}
log.Println(resp.PromptFeedback)
}
Получаю nil в ответ nil. А как добиться от этого кода ответа на поставленный вопрос?
Как выбрать файл через системный проводник?
В программе понадобилось открыть проводник и выбрать в нем файл. Как я вижу использование: при работе в терминальной программе я могу ввести опрелеленную комманду и откроется системный проводник в котором можно выбрать файл. После выбора файла в проводнике, в терминальную программу копируется путь к выбранному файлу, а проводник молча закрывается. Далее над файлом по пути осуществляются какие то действия в коде. Как это(открытие прводника и выбор в нем файла) реализовать средствами go? Пишу код и тестирую в debian, соответственно решение необходимо под unix в первую очередь
Стриминг tty docker-контейнера
Мне нужно реализовать функционал стриминга терминала docker контейнера, для этого я использовал ContainerLogs и построчно собирал логи из контейнера. Однако в случае использования контейнером tty у меня возникают проблемы. В таком случае, я получаю строки логов с escape кодами (отчистка терминала, строки и тд). У меня нет проблемы отобразить это в нормальном виде, однако это сложно назвать стримингом терминала контейнера с tty. К терминалу контейнера, не используя docker-api, можно подключится с помощью docker attach, но как потом стримить это, мне тоже не ясно
Хотелось бы как-то стримить своеобразный "экран терминала" контейнера, матрицу символов, однако нигде не могу найти информации по этому поводу.
Как эффективно объединять строки в Go? [дубликат]
В Go строка является примитивным типом. Это означает, что она доступна только для чтения, и любая манипуляция с ней создаст новую строку.
Мне нужно много раз объединять строки, не зная длины результирующей строки, какой самый лучший способ сделать это?
Наивный способ был бы таким:
var s string
for i := 0; i < 1000; i++ {
s += getShortStringFromSomewhere()
}
Организация сервера на Go с использованием context
Есть такой простой сервер:
import (
"context"
"fmt"
"math/rand"
"net/http"
"time"
)
func middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r http.Request) {
ctx, cancel := context.WithTimeout(context.Background(), 5time.Second) //Таймаут на 5 секунд
defer cancel()
r = r.WithContext(ctx)
next.ServeHTTP(w, r)
})
}
func handler(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
ch := make(chan string) //Для приёма ответа
go doSomeLong(ch)
select {
case <-ctx.Done(): //Если таймаут превышен
err := ctx.Err()
fmt.Println(err)
fmt.Fprint(w, "Превышен таймаут")
case str := <-ch: //Если всё нормально, то отправка клиенту сообщения из канала
fmt.Fprint(w, str)
}
}
/Функция для симуляции долгого процесса/
func doSomeLong(a chan string) {
sl := rand.Intn(10)
time.Sleep(time.Duration(sl) * time.Second)
a <- "Привет!"
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("SERVER START AT :8080")
http.ListenAndServe(":8080", middleware(http.DefaultServeMux))
}
Нормальна такая конструкция в каждом обработчике? Как рендерить готовые файлы?
select {
case <-ctx.Done(): //Если таймаут превышен
err := ctx.Err()
fmt.Println(err)
fmt.Fprint(w, "Превышен таймаут")
case str := <-ch: //Если всё нормально, то отправка клиенту сообщения из канала
fmt.Fprint(w, str)
}
Go. No packages found for open file C:\Users\user\Documents\go-discord-rpc\main.go. This file is ignored by your gopls build
Проект требует использование python2.7, с его поддержкой нет нужной библиотеки. Было принято решение использовать CGO. При добавлении пакета C для компиляции модуля в .so файл, возникает ошибка, перестает видеть пакет main. Если переставлять место импорта пакета C, то никакого результата это не дает.
package main
import "C"
import (
"time"
)
func main() {}
// export discord_rpc
func discord_rpc(details, state, largeImage, smallImage, LargeText, smallText string) {
client, err := New("938480952844386364")
if err != nil {
panic(err)
}
err = client.SetActivity(Activity{
Details: details,
State: state,
Timestamps: &Timestamps{
Start: time.Now().Add(-time.Minute * 5),
// End: time.Now().Add(time.Minute * 5),
},
Assets: &Assets{
LargeImage: largeImage,
LargeText: LargeText,
SmallText: smallText,
SmallImage: smallImage,
},
// Buttons: []dButton{
// {
// Label: "Google",
// URL: "https://youtube.com",
// },
// {
// Label: "Discord",
// URL: "https://discord.com",
// },
// },
})
if err != nil {
panic(err)
}
time.Sleep(time.Second * 30)
}
Воспроизводится ошибка 404 при нескольких автомиграциях, где ошибка? gin
package db
import (
"awesomeGin/models"
"log"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func Init(url string) *gorm.DB {
db, err := gorm.Open(postgres.Open(url), &gorm.Config{})
DisableForeignKeyConstraintWhenMigrating: true ,
if err != nil {
log.Fatalln(err)
}
db.AutoMigrate(&models.Book{})
db.AutoMigrate(&models.Game{})
return db
}
Architec.Ton is a ecosystem on the TON chain with non-custodial wallet, swap, apps catalog and launchpad.
Main app: @architec_ton_bot
Our Chat: @architec_ton
EU Channel: @architecton_eu
Twitter: x.com/architec_ton
Support: @architecton_support
Last updated 2 weeks, 3 days ago
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month ago