Сервер 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 задачи с собеседований
👨🏻💻 Golang. Получить температуры видеокарты, процессора и HDD в windows
Можно ли получить температуру цпу, видеокарты и дисков используя golang в винде? Если да, то подскажите что использовать для этого.
Golang задачи с собеседований
Можно ли получить температуру цпу, видеокарты и дисков используя golang в винде? Если да, то подскажите что использовать для этого.
Golang задачи с собеседований
👨🏻💻Вопрос от пользователя
Помогите написать регулярное выражение (golang)
надо на go найти, получить и потом заменить в тексте слова, заключенные в определенные символы (заменить вместе с этими символами). Пример строки: str := "text some text ${example_text}"
Найти надо подстроку, заключенную в ${ }. И потом эту подстроку вместе с окружающими символами заменить.
Пока мне удалось только определить, что строка содержит комбинацию
m, _ := regexp.MatchString(^\$\{.*\}$, valueField.(string)).
Дальше пока ступор, подскажите, пожалуйста, как действовать.
Golang задачи с собеседований
Помогите написать регулярное выражение (golang)
надо на go найти, получить и потом заменить в тексте слова, заключенные в определенные символы (заменить вместе с этими символами). Пример строки: str := "text some text ${example_text}"
Найти надо подстроку, заключенную в ${ }. И потом эту подстроку вместе с окружающими символами заменить.
Пока мне удалось только определить, что строка содержит комбинацию
m, _ := regexp.MatchString(^\$\{.*\}$, valueField.(string)).
Дальше пока ступор, подскажите, пожалуйста, как действовать.
Golang задачи с собеседований
👨🏻💻 Добавление одного массива в конец другого
Задача: Добавть один массив в другой
Как я хотел бы: Без использования циклов и рекурсии. Типы именно такие какие указаны в коде(a :=[10]int{}, b:= []int{})
Как я могу: К сожалению тольк так и то же самое но циклом:
Но мне бы хотелось сделать через дополнительный срез указывающий на a и без использования циклов и рекурсий.
по логике:
За основу желаемого решения взял механизм:
Golang задачи с собеседований
Задача: Добавть один массив в другой
Как я хотел бы: Без использования циклов и рекурсии. Типы именно такие какие указаны в коде(a :=[10]int{}, b:= []int{})
Как я могу: К сожалению тольк так и то же самое но циклом:
package main
import "fmt"
func main() {
a := [10]int{}
b := []int{4, 5, 1, 8}
i := len(a)
j := len(b)
fmt.Println(appendBtoA(a, b, i, j))
//out: [0 0 0 0 0 0 4 5 1 8]
}
func appendBtoA(a [10]int, b []int, i, j int) [10]int {
i -= 1
j -= 1
if j >= 0 {
a[i] = b[j]
return appendBtoA(a, b, i, j)
}
return a
}
Но мне бы хотелось сделать через дополнительный срез указывающий на a и без использования циклов и рекурсий.
по логике:
// естественно не рабочий вариант. но нужно приблизительно так.
func appendBtoA2(a, b []int) []int {
c := a[len(a)-len(b):] //здесь `c` если правильно понимаю, указывает на `a`
c = b //здесь `c`, вроде как указывает на `b`.
//потому начальный массив не меняется.
//но это все не точно а лишь мое дилетантское предположение
return a
}
За основу желаемого решения взял механизм:
package main
import "fmt"
func main(){
a := [10]int{5, 4, 6, 7, 8, 2, 4, 5, 8, 5}
b := a[4:6]
b[0] = 0
b[1] = 0
fmt.Println(a) //out: [5 4 6 7 0 0 4 5 8 5]
}
Golang задачи с собеседований
👨🏻💻 Подключение CSS к HTML с Go linux
Проблемы с подключением css к проекту. В HTML у меня:
А CSS:
Код на Go:
Не меняется ни текст ни фон.
Golang задачи с собеседований
Проблемы с подключением css к проекту. В HTML у меня:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- Стили сайта -->
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div class="container">
<img class="imgstars" src="https://thumb.tildacdn.com/tild3531-3462-4931-b561-653663313033/-/format/webp/image.png">
<h1 class="h1">Hello</h1>
<h1 class="h1">Hi</h1>
</div>
</body>
</html>
А CSS:
body {
background-color: blue;
}
.container {
width: 100%;
}
h1 {
color: green;
}
Код на Go:
import (
"html/template"
"net/http"
)
var tpl *template.Template
func home_page(w http.ResponseWriter, r *http.Request) {
tpl.Execute(w, nil)
}
func handleRequest() {
http.HandleFunc("/", home_page)
http.ListenAndServe(":8080", nil)
}
func main() {
tpl, _ = tpl.ParseFiles("index.html")
handleRequest()
}
Не меняется ни текст ни фон.
Golang задачи с собеседований
Вопрос от пользователя
👨🏻💻 Страница веб-приложения на Go: заменить Javascript на Go во фронтенде
Интересует один вопрос (возможно глупый).
Можно ли при создании фронта веб-приложения заменить JS в графических элементах(всплывающие окна, вложенные списки, и т.д.) на методы из Go?
P.S.: прошу палками не бить и помидорами не закидывать))
Golang задачи с собеседований
👨🏻💻 Страница веб-приложения на Go: заменить Javascript на Go во фронтенде
Интересует один вопрос (возможно глупый).
Можно ли при создании фронта веб-приложения заменить JS в графических элементах(всплывающие окна, вложенные списки, и т.д.) на методы из Go?
P.S.: прошу палками не бить и помидорами не закидывать))
Golang задачи с собеседований
Как вычислить сложность моего алгоритма?
Продолжаю разбираться с рекурсией
Задача: определить является ли N простым числом.
Условие: использовать только рекурсию.
Мое решение(в комментах пояснение моей логики):
Вопрос1: Можно ли обойтись без такого количества if(насколько сильно намудрил)?
Вопрос2: Как рассчитать сложность этого алгоритма? Как сделать его не линейным
Вопрос3: На слишком больших числах, например 1284762193641112317 получаю stack overflow. в чем проблема? Мое предположение - слишком много рекурсивных вызовов. Но как это исправить?
UPD:
Добавил в код фрагмент
n = int(math.Sqrt(float64(n)))
И код продолжает работать. Придумал такое, в поисках способа сократить количество рекурсивных вызовов, а с таким фрагментом, в каждом вызове n уменьшается до своего корня.
Golang задачи с собеседований
Продолжаю разбираться с рекурсией
Задача: определить является ли N простым числом.
Условие: использовать только рекурсию.
Мое решение(в комментах пояснение моей логики):
package main
func main() {
rec(890, 1, 0) //Output: NO
println()
}
// функция имеет допущение, что n>1(т.е рассчитывает на здравый смысл вызывающего)
// для n<=1 результат будет неправильным(YES).
func rec(n, d, c int) {
// если делитель дошел до делимого,
//то очевидно, что если они равны то делятся без остатка и
//делимость проверять не нужно. Просто выходим из функции.
//этот случай означает, что от d>1 до n делителей не найдено.
//значит n делится только на себя и на 1
if d > n {
print("YES")
return
}
//поиск делителя для n в диапазоне от 2 до n
if n%d == 0 && d > 1 {
//увеличиваем счетчик делителей
c++
//если d еще не дошел до n, а уже нашел делитель(c>0),
//то число точно составное, дальнейшие проверки не имеют смысла
//говорим что число составное и выходим из функции.
if c > 1 || (n%2 == 0 && n > 2) {
print("NO")
return
}
n=int(math.Sqrt(float64(n))) //так код продолжает работать, но делает это быстрее,
//хоть и нет гарантии что правильно рассчитывает. Но пока что ни разу не ошибся
}
//рекурсивно проверяем является ли d+1 делителем n
//рекурсивный вызов будет происходит до тех пор,
//пока c<1 || (d<n && n%d!=0 && (n>2 && n%2!=0))
rec(n, d+1, c)
}
Вопрос1: Можно ли обойтись без такого количества if(насколько сильно намудрил)?
Вопрос2: Как рассчитать сложность этого алгоритма? Как сделать его не линейным
Вопрос3: На слишком больших числах, например 1284762193641112317 получаю stack overflow. в чем проблема? Мое предположение - слишком много рекурсивных вызовов. Но как это исправить?
UPD:
Добавил в код фрагмент
n = int(math.Sqrt(float64(n)))
И код продолжает работать. Придумал такое, в поисках способа сократить количество рекурсивных вызовов, а с таким фрагментом, в каждом вызове n уменьшается до своего корня.
Golang задачи с собеседований