Почему данная функция в GO при вводе в "1 1 1" не выдает ничего?
Почему данная функция в GO при вводе в "1 1 1" не выдает ничего?
Почему данная функция в GO при вводе в "1 1 1" не выдает ничего?
package main
import (
"fmt"
"math"
)
func SqRoots() {
var a, b, c float64
fmt.Scan(&a, &b, &c)
D := math.Sqrt(b*b - 4*a*c)
if D < 0 {
fmt.Println("0 0")
}
if D == 0 {
fmt.Println((-b + D) / 2 * a)
}
if D > 0 {
fmt.Println((-b-D)/2*a, (-b+D)/2*a)
}
}
func main() {
SqRoots()
}
Golang задачи с собеседованийОшибка "multiple-value in single-value context"
В коде:
Получаю ошибку
Golang задачи с собеседований
В коде:
fmt.Printf("Число фиббоначи для %v: %v", userNum, Fibbonachi(userNum, true))Функция Fibbonachi получает 2 значения (1-е значение - число, второе способ расчета), и возвращает 2 значения (1-е значение - ответ, 2-е значение - ошибка или nil).
Получаю ошибку
multiple-value Fibbonachi(userNum, true) (value of type (int, error)) in single-value contextчто логично, но как мне вывести через Printf только первое возвращаемое значение без ошибки?
Golang задачи с собеседований
Странная ошибка в GO
Golang задачи с собеседований
package mainПо какой-то причине последний if не работает, и на запрос -17 программа ничего не выводит.
import (
"fmt"
)
func main() {
var a int
fmt.Scanln(&a)
if a%2 == 0 && a < 0 {
fmt.Println("Число отрицательное и четное")
} else if a%2 == 1 && a < 0 {
fmt.Println("Число отрицательное и нечетное")
} else if a%2 == 0 && a >= 0 {
fmt.Println("Число положительное и четное")
} else if a%2 == 1 && a >= 0 {
fmt.Println("Число положительное и нечетное")
}
}
Golang задачи с собеседований
Не работает url.Parse
Простой код:
Может я не правильно понимаю работу url.Parse - я думал что если передаваемое значение не url - то в err - должна быть какая-то ошибка...
Golang задачи с собеседований
Простой код:
_, err := url.Parse("555")Но не уходит на ошибку, почему?
if err != nil {
panic(err)
}
Может я не правильно понимаю работу url.Parse - я думал что если передаваемое значение не url - то в err - должна быть какая-то ошибка...
Golang задачи с собеседований
👨🏻💻 Не получается спарсить роли из токена
При регистрации пользователя ему дается роль и в последующем их может становиться больше, то есть логика такая, что у одного пользователя может быть несколько ролей. При входе на сайт бэк делает запрос к бд, где вытаскивает все роли, а также id пользователя, после генерит токен и отсылает на клиента. В дальнейшем этот токен используется для получения доступа к эндпоинтам REST API. Была написана функция, в которой десириализую токен и забираю роли, в ручках потом просто проверяется, есть у этих ролей доступ к ручкам. Ниже приведен код того как генерится токен:
Golang задачи с собеседований
При регистрации пользователя ему дается роль и в последующем их может становиться больше, то есть логика такая, что у одного пользователя может быть несколько ролей. При входе на сайт бэк делает запрос к бд, где вытаскивает все роли, а также id пользователя, после генерит токен и отсылает на клиента. В дальнейшем этот токен используется для получения доступа к эндпоинтам REST API. Была написана функция, в которой десириализую токен и забираю роли, в ручках потом просто проверяется, есть у этих ролей доступ к ручкам. Ниже приведен код того как генерится токен:
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{Далее код, того как десиаризую токен и пытаюсь вытащить роли из него:
"user_id": existingUserID, // получаем запросом к бд
"roles": roles, // получаем запросом к бд
})
log.Printf("user_id: %v\n", existingUserID)
log.Printf("roles: %v\n", roles)
tokenString, err := token.SignedString([]byte(os.Getenv("SECRET_KEY")))
if err != nil {
c.JSON(500, gin.H{"message": "Failed to generate token", "error": err})
return
}
package authВ общем проблема заключается в том, что не находит роли в токене: Roles not found in token. Почему не знаю, уже миллион отладочных выводов сделал, все роли правильно определяются. Вот вывод клэймов: Claims: map[roles:[22 18] user_id:9] скорее всего как-то неправильно пытаюсь их занести в roles, но вроде все правильно.
import (
"errors"
"log"
"os"
"github.com/dgrijalva/jwt-go"
)
func CheckUserRole(tokenString string) ([]string, error) {
log.Printf("Received token: %s", tokenString)
token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {
return []byte(os.Getenv("SECRET_KEY")), nil
})
if err != nil || !token.Valid {
log.Printf("Error parsing token: %v", err)
return nil, errors.New("Invalid token")
}
claims, ok := token.Claims.(jwt.MapClaims)
if !ok {
log.Printf("Error getting claims from token")
return nil, errors.New("Invalid token claims")
}
roles, ok := claims["roles"].([]string)
if !ok {
log.Printf("Roles not found in token")
return nil, errors.New("Roles not found in token")
}
log.Printf("User roles: %v", roles)
return roles, nil
}
Golang задачи с собеседований
👨🏻💻 Реальный вопрос от реального человека
Как импортировать модуль в Go
Только начинаю изучать Go и столкнулся с такой проблемой: есть проект, который выглядит так
Подскажите пожалуйста, как можно починить импорты.
Golang задачи с собеседований
Как импортировать модуль в Go
Только начинаю изучать Go и столкнулся с такой проблемой: есть проект, который выглядит так
GoVersionВ server/main.go и client/main.go пытаюсь импортировать Network, но все попытки выдают ошибки. Из того, что пробовал:
-go.mod
-client
--main.go
-network
--Network.go
--mod.go
-server
--main.go
import (package GoVersion/network is not in std
"GoVersion/network"
"fmt"
"net"
)
import (и несколько других вариантов с относительными путями
"fmt"
"net"
"network"
)
package network is not in std
Подскажите пожалуйста, как можно починить импорты.
Golang задачи с собеседований
Пытаюсь сделать ручку на обновление таблицы. Как я могу сделать это эффективнее при помощи sqlx и gin?
type News struct {
ID string `json:"id"`
Title string `json:"title"`
Content string `json:"content"`
Categories string `json:"categories"`
}
var list = []News{}
func getNews(c *gin.Context) {
c.IndentedJSON(http.StatusOK, list)
}
func updateNews(c *gin.Context) {
dbType := os.Getenv("DB_TYPE")
dbName := os.Getenv("DB_NAME")
dbUser := os.Getenv("DB_USER")
dbPasswd := os.Getenv("DB_PASSWD")
dbHost := os.Getenv("DB_HOST")
dbPort := os.Getenv("DB_PORT")
db, err := sqlx.Open(dbType, dbUser+":"+dbPasswd+"@tcp("+dbHost+":"+dbPort+")/"+dbName)
if err != nil {
log.Fatal(err, "Ошибка открытия подключения.")
}
defer db.Close()
// Установка максимального количества открытых соединений в пуле
db.SetMaxOpenConns(10)
// Установка максимального количества соединений, которые могут быть одновременно использованы
db.SetMaxIdleConns(5)
// Проверка подключения к базе данных
err = db.Ping()
if err != nil {
log.Fatal(err, " Не удалось подключиться к базе.")
}
// Выполнение запросов к базе данных
rows, err := db.Query("SELECT news.Id, news.Title, news.Content, group_concat(newscategories.CategoryId separator ', ') as categories FROM news left join newscategories on news.Id=newscategories.NewsId group by news.Id;")
if err != nil {
log.Fatal(err)
//success := false
}
defer rows.Close()
// Обработка результатов запроса
for rows.Next() {
var id string
var title string
var content string
var categories string
err := rows.Scan(&id, &title, &content, &categories)
if err != nil {
log.Fatal(err)
}
nnews := News{ID: id, Title: title, Content: content, Categories: categories}
list = append(list, nnews)
fmt.Println(list)
}
if err = rows.Err(); err != nil {
log.Fatal(err)
}*/
id := c.Param("id")
for i, a := range list {
if a.ID == id {
c.BindJSON(&a)
list[i] = a
nid := c.Query(a.ID)
ntitle := c.Query(a.Title)
ncont := c.Query(a.Content)
ncatg := c.Query(a.Categories)
db, err := sqlx.Open(dbType, dbUser+":"+dbPasswd+"@tcp("+dbHost+":"+dbPort+")/"+dbName)
_, err = db.Exec("update news SET news.Id = ?, news.Title = ? , news.Content = ?, news.Categories = ? WHERE news.Id = ?;", nid, ntitle, ncont, ncatg, nid)
if err != nil {
log.Fatal(err)
}
c.IndentedJSON(http.StatusOK, a)
return
}
}
c.IndentedJSON(http.StatusNotFound, gin.H{"message": "news not found"})
}
Golang задачи с собеседованийСервер gin возвращает 404 ошибку в браузере
Данный код не работает в браузере, но работает через curl.
Данный код не работает в браузере, но работает через curl.
package mainGolang задачи с собеседований
import (
"net/http"
"github.com/gin-gonic/gin"
)
type News struct {
ID string `json:"id"`
Title string `json:"title"`
}
var result = []News{{ID: "0", Title: "sdfsdfsdf"}}
func getAlbums(c *gin.Context) {
c.IndentedJSON(http.StatusOK, result)
}
func main() {
router := gin.Default()
router.GET("/result", getAlbums)
router.Run("localhost:8080")
}
Forwarded from BZD • Книги для программистов
Архитектура_встраиваемых_систем_VpKcKX.pdf
16.1 MB
📔 Title: Архитектура встраиваемых систем
#book #arch #RU
🌐 Lang.: Russian
🧔 Author: Лакамера Д.
🕘 Year: 2023
📑 Pages: 332
#️⃣ ISBN: 978-5-93700-206-8
📝 Description: В книге описываются принципы работы и взаимодействия различных компонентов в реальных системах. Представлен общий обзор процесса разработки встраиваемых систем; показано, как настроить среду разработки, рассматриваются
структура, механизмы загрузки и управление памятью встраиваемой системы. Вы изучите программный интерфейс и драйверы устройств, узнаете, как устанавливать связь через TCP/IP, как повысить безопасность устройств интернета вещей.
Наконец, вы на практике познакомитесь с многопоточными операционными системами, самостоятельно разработав планировщик, и научитесь использовать механизмы доверенного выполнения с аппаратной поддержкой.
@bzd_channel
#book #arch #RU
🌐 Lang.: Russian
🧔 Author: Лакамера Д.
🕘 Year: 2023
📑 Pages: 332
#️⃣ ISBN: 978-5-93700-206-8
📝 Description: В книге описываются принципы работы и взаимодействия различных компонентов в реальных системах. Представлен общий обзор процесса разработки встраиваемых систем; показано, как настроить среду разработки, рассматриваются
структура, механизмы загрузки и управление памятью встраиваемой системы. Вы изучите программный интерфейс и драйверы устройств, узнаете, как устанавливать связь через TCP/IP, как повысить безопасность устройств интернета вещей.
Наконец, вы на практике познакомитесь с многопоточными операционными системами, самостоятельно разработав планировщик, и научитесь использовать механизмы доверенного выполнения с аппаратной поддержкой.
@bzd_channel
Forwarded from Книжный клад | IT
📕Название: Security for Containers and Kubernetes: Learn how to implement robust security measures in containerized environments (2023)
Автор: Luigi Aversa
Описание: В книге собраны различные решения, позволяющие командам agile проактивно отслеживать, защищать и противодействовать атакам, уязвимостям и неправильным конфигурациям на всех этапах процесса DevOps. Эти решения охватывают такие важные задачи, как проверка и защита капсул, контейнерных кластеров, времени выполнения контейнеров, политик авторизации, решение проблем безопасности контейнеров, обеспечение безопасного развертывания и миграции, а также укрепление рабочих процессов непрерывной интеграции и непрерывной доставки. Кроме того, книга поможет вам разработать надежную стратегию обеспечения безопасности контейнеров и даст рекомендации по проведению тестирования среды Kubernetes.
• Скачать книгу из архива
📚 Книжный клад | #RUS
Автор: Luigi Aversa
Описание: В книге собраны различные решения, позволяющие командам agile проактивно отслеживать, защищать и противодействовать атакам, уязвимостям и неправильным конфигурациям на всех этапах процесса DevOps. Эти решения охватывают такие важные задачи, как проверка и защита капсул, контейнерных кластеров, времени выполнения контейнеров, политик авторизации, решение проблем безопасности контейнеров, обеспечение безопасного развертывания и миграции, а также укрепление рабочих процессов непрерывной интеграции и непрерывной доставки. Кроме того, книга поможет вам разработать надежную стратегию обеспечения безопасности контейнеров и даст рекомендации по проведению тестирования среды Kubernetes.
• Скачать книгу из архива
📚 Книжный клад | #RUS
👨🏻💻 Вывод присылаемых сообщений клиенту на консоли.
Сайт использует matrix и на вход нужно использовать логин, пароль и url сайта. Возникает ошибка client.Events и mautrix.EventTypeRoomMessage undefined. Вопрос можно ли как то сделать вывод сообщений в консоли go. Код ниже.
Golang задачи с собеседований
Сайт использует matrix и на вход нужно использовать логин, пароль и url сайта. Возникает ошибка client.Events и mautrix.EventTypeRoomMessage undefined. Вопрос можно ли как то сделать вывод сообщений в консоли go. Код ниже.
import (
"bufio"
"fmt"
"log"
"os"
"strings"
//"time"
mautrix "maunium net/go/mautrix"
//maevent "maunium net/go/mautrix/event"
//"github com/google/uuid"
)
func main() {
reader := bufio.NewReader(os.Stdin)
// Read the username
fmt.Print("Enter username: ")
username, _ := reader.ReadString('\n')
username = strings.TrimSpace(username)
// Read the password
fmt.Print("Enter password: ")
password, _ := reader.ReadString('\n')
password = strings.TrimSpace(password)
// Read the homeserver URL
fmt.Print("Enter homeserver URL: ")
homeserverURL, _ := reader.ReadString('\n')
homeserverURL = strings.TrimSpace(homeserverURL)
// Create a new client
client, err := mautrix.NewClient(homeserverURL, "", "")
if err != nil {
log.Fatal(err)
}
// Login
_, err = client.Login(&mautrix.ReqLogin{
Type: "m.login.password",
Identifier: mautrix.UserIdentifier{Type: "m.id.user", User: username},
Password: password,
Token: "",
DeviceID: "",
InitialDeviceDisplayName: "",
StoreCredentials: false,
StoreHomeserverURL: false,
})
if err != nil {
log.Fatal(err)
}
fmt.Println("Successful login!")
// Start message synchronization
err = client.Sync()
if err != nil {
log.Fatal(err)
}
// Handle incoming events
for event := range client.Events {
if event.Type() == mautrix.EventTypeRoomMessage {
// Process the incoming message
messageEvent := event.RoomMessage()
// Extract message details
sender := messageEvent.Sender
content := messageEvent.Content.Body
// Print the message to the console
fmt.Printf("New message from %s: %s\n", sender, content)
}
}
}
Golang задачи с собеседований
👨🏻💻 Как получить температуру CPU, GPU и т.д. на golang?
Были уже похожие вопросы, но конкретно про windows и к тому же без ответов или с неработающими ответами.
Я пробовал такой код:
Но пакету gosensors нужен lm-sensors который очевидно на windows не поставить, а мне нужна кросс-платформенная программа.
Так как всё-таки получить температуру CPU и GPU на GoLang?
Golang задачи с собеседований
Были уже похожие вопросы, но конкретно про windows и к тому же без ответов или с неработающими ответами.
Я пробовал такой код:
package main
import (
"fmt"
"github.com/ssimunic/gosensors"
)
func main() {
sensors, err := gosensors.NewFromSystem()
// sensors, err := gosensors.NewFromFile("/path/to/log.txt")
if err != nil {
panic(err)
}
// Sensors implements Stringer interface,
// so code below will print out JSON
fmt.Println(sensors)
// Also valid
// fmt.Println("JSON:", sensors.JSON())
// Iterate over chips
for chip := range sensors.Chips {
// Iterate over entries
for key, value := range sensors.Chips[chip] {
// If CPU or GPU, print out
if key == "CPU" || key == "GPU" {
fmt.Println(key, value)
}
}
}
}
Но пакету gosensors нужен lm-sensors который очевидно на windows не поставить, а мне нужна кросс-платформенная программа.
Так как всё-таки получить температуру CPU и GPU на GoLang?
Golang задачи с собеседований
👨🏻💻 Проблемы с подключение статических файлов к HTML с gorilla/mix Go
В HTML я подключил css:
Вот код в main.go:
Сервер не видит css
Golang задачи с собеседований
В HTML я подключил css:
<link rel="stylesheet" href="../static/css/reset.css">
<link rel="stylesheet" href="../static/css/style.css">
Вот код в main.go:
import (
"html/template"
"log"
"net/http"
"github.com/gorilla/mux"
)
var templates *template.Template
func main() {
templates = template.Must(template.ParseGlob("ui/html/*.html"))
log.Println("Server will start at http://localhost:8080/")
r := mux.NewRouter()
r.HandleFunc("/", home).Methods("GET")
r.HandleFunc("/forum", forum).Methods("GET")
r.HandleFunc("/adviсe", adviсe).Methods("GET")
http.ListenAndServe(":8080", r)
fs := http.FileServer(http.Dir("./ui/static/"))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", fs))
log.Fatal(http.ListenAndServe(":8080", r))
}
И код в handlers.go:
func home(w http.ResponseWriter, r *http.Request) {
templates.ExecuteTemplate(w, "home_page.html", r)
}
func forum(w http.ResponseWriter, r *http.Request) {
templates.ExecuteTemplate(w, "forum.html", r)
}
func adviсe(w http.ResponseWriter, r *http.Request) {
templates.ExecuteTemplate(w, "adviсe.html", r)
}
Сервер не видит css
Golang задачи с собеседований
👨🏻💻 golang: sqlx: в одном случае нужен db:"user_id" в другом db:"userId"
Есть такой код:
Если я пишу
в строке _, err := connect.NamedExecContext(ctx, dsn, &e)
Если я пишу
в строке
Как правильно настроить нейминг стратегию sqlx?
Golang задачи с собеседований
Есть такой код:
type UserToRoleToCRM struct {
Id string
UserId string `db:"user_id"`
CRMId string `db:"crm_id"`
RoleId string `db:"role_id"`
}
func TestField(t *testing.T) {
ctx := context.Background()
con := fmt.Sprintf(
"host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Europe/Moscow",
os.Getenv("POSTGRES_HOST"),
os.Getenv("POSTGRES_USER"),
os.Getenv("POSTGRES_PASSWORD"),
os.Getenv("POSTGRES_DB"),
os.Getenv("POSTGRES_PORT_EXTERNAL"))
connect, _ := sqlx.Connect("pgx", con)
defer database.Clean(t, "user_to_role_to_crm", connect)
e := entity.UserToRoleToCRM{
Id: uuid.New().String(),
UserId: uuid.New().String(),
CRMId: uuid.New().String(),
RoleId: uuid.New().String(),
}
dsn := "INSERT INTO user_to_role_to_crm (id, user_id, crm_id, role_id) VALUES (:id, :userId, :crmId, :roleId)"
_, err := connect.NamedExecContext(ctx, dsn, &e)
assert.Nil(t, err)
eT := entity.UserToRoleToCRM{}
err = connect.GetContext(ctx, &eT, "SELECT * FROM user_to_role_to_crm WHERE id = $1", e.Id)
assert.Nil(t, err)
}
Если я пишу
db:"user_id"
выдает ошибкуError: Expected nil, but got: &errors.errorString{s:"could not find name userId in &entity.UserToRoleToCRM{Id:\"a0caf511-193a-4b51-8b12-4b63ba64aaa7\", UserId:\"645fb689-1994-4387-a04c-605bdc69d01d\", CRMId:\"f32f27af-ed96-4ade-950a-cfa49ce84701\", RoleId:\"7929bad0-1aaa-42f1-88fe-dabfc55792b4\", CreateAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC), UpdateAt:time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)}"}
в строке _, err := connect.NamedExecContext(ctx, dsn, &e)
Если я пишу
db:"userId"
выдает ошибкуError: Expected nil, but got: &errors.errorString{s:"missing destination name user_id in *entity.UserToRoleToCRM"}
в строке
err = connect.GetContext(ctx, &eT, "SELECT * FROM user_to_role_to_crm WHERE id = $1", e.Id)
Как правильно настроить нейминг стратегию sqlx?
Golang задачи с собеседований