👨🏻💻 Подключение 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 задачи с собеседований
👨🏻💻 Как удалить повторяющиеся элементы в структуре Go
Есть структура
В нее записаны элементы которые могут полностью повторяться и Name и Surname, то есть Иван Иванов и еще один Иван Иванов
Как удалить из структуры такие дубли?
Golang задачи с собеседований
Есть структура
type Users struct {
Name string `json:"name"`
Surname string `json:"surname"`
}
В нее записаны элементы которые могут полностью повторяться и Name и Surname, то есть Иван Иванов и еще один Иван Иванов
Как удалить из структуры такие дубли?
Golang задачи с собеседований
👨🏻💻 Как работает интерфейс http.Handler
Начал разбираться с middlewares и появился вопрос.
Вопрос в комментах к коду Спасибо за ваше время, внимание и, в идеале, ответ.
Golang задачи с собеседований
Начал разбираться с middlewares и появился вопрос.
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
mux := http.NewServeMux()//здесь у mux нет явного метода
//ServeHTTP(ResponseWriter, *Request)
mux.HandleFunc("/test", test)
mdlwr := MdlWr(mux) //однако здесь не ругается что объект mux не реализует интерфейс.
http.ListenAndServe(":8181", mdlwr)
}
//функция принимает объект интерфейсного типа Handler
//и чтобы удовлетворить интерфейсу Handler, объект должен
//обладать методом `ServeHTTP(ResponseWriter, *Request)`
//но в main объект mux, который помещаю в Mdlwr
//не имеет такого метода явно. А как Mdlwr тогда работает?
func MdlWr(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
log.Println(r.RequestURI)
h.ServeHTTP(w, r)
})
}
func test(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "ok")
}
Вопрос в комментах к коду Спасибо за ваше время, внимание и, в идеале, ответ.
Golang задачи с собеседований
👨🏻💻 Как долго будет расширяться буфер?
Это стандартный метод Write() в пакете bytes
Правильно ли я понимаю, что данный метод будет расширять буфер и сам го не будет оповещать о раздутии буфера пока система не прекратит давать ресурс? А когда система прекратит давать ресурс, то программа просто запаникует и упадет? И какие есть "правильные" способы ограничить раздутие буфера, чтобы паники точно не было?
Golang задачи с собеседований
Это стандартный метод Write() в пакете bytes
// Write appends the contents of p to the buffer, growing the buffer as
// needed. The return value n is the length of p; err is always nil. If the
// buffer becomes too large, Write will panic with ErrTooLarge.
func (b *Buffer) Write(p []byte) (n int, err error) {
b.lastRead = opInvalid
m, ok := b.tryGrowByReslice(len(p))
if !ok {
m = b.grow(len(p))
}
return copy(b.buf[m:], p), nil
}
Правильно ли я понимаю, что данный метод будет расширять буфер и сам го не будет оповещать о раздутии буфера пока система не прекратит давать ресурс? А когда система прекратит давать ресурс, то программа просто запаникует и упадет? И какие есть "правильные" способы ограничить раздутие буфера, чтобы паники точно не было?
Golang задачи с собеседований
👨🏻💻 Golang: google wire: Как упростить поддержку кода?
Помогите пожалуйста разобраться с di google wire
wire.go
Можно обойтись без struct Di?
Golang задачи с собеседований
Помогите пожалуйста разобраться с di google wire
wire.go
//go:build wireinject
// +build wireinject
package di
//go:generate wire ./...
import (
"github.com/3110Y/profile/internal/application/service"
"github.com/3110Y/profile/internal/application/validator"
"github.com/3110Y/profile/internal/infrastructure/database"
"github.com/3110Y/profile/internal/infrastructure/repository"
"github.com/3110Y/profile/internal/presentation/rpc"
"github.com/google/wire"
"github.com/jmoiron/sqlx"
)
type DI struct {
ProfileService *service.ProfileService
ProfileValidator *validator.ProfileValidator
ProfileRepository *repository.ProfileRepository
ProfileRPC *rpc.ProfileRPC
DB *sqlx.DB
}
func NewDI(
profileService *service.ProfileService,
profileValidator *validator.ProfileValidator,
profileRepository *repository.ProfileRepository,
profileRPC *rpc.ProfileRPC,
DB *sqlx.DB,
) *DI {
return &DI{
ProfileService: profileService,
ProfileValidator: profileValidator,
ProfileRepository: profileRepository,
ProfileRPC: profileRPC,
DB: DB,
}
}
func InitializeDI() (*DI, error) {
wire.Build(
NewDI,
wire.Bind(new(service.ProfileRepositoryInterface), new(*repository.ProfileRepository)),
wire.Bind(new(service.PasswordServiceInterface), new(*service.PasswordService)),
wire.Bind(new(rpc.ServiceProfileInterface), new(*service.ProfileService)),
service.NewPasswordService,
service.NewProfileService,
validator.NewProfileValidator,
repository.NewProfileRepository,
rpc.NewProfileRPC,
database.NewConnect,
)
return &DI{}, nil
}
Можно обойтись без struct Di?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
err_empty_response docker
Пишу веб-сервис на Golang. Хочу использовать Docker, но не получается.
app.go - главный файл
server.go - инициализация сервера
Dockerfile
Контейнер создался без ошибок, всё нормально. Когда в браузере ввожу "http://localhost:8080", то получаю ошибку.
Страница недоступна. Сайт localhost не отправил данных. ERR_EMPTY_RESPONSE
Как это решить?
Golang задачи с собеседований
err_empty_response docker
Пишу веб-сервис на Golang. Хочу использовать Docker, но не получается.
app.go - главный файл
package main
import (
scraper_app "github.com/fentezi/scraper"
"github.com/fentezi/scraper/internal/handler"
"github.com/fentezi/scraper/pkg/logging"
)
func main() {
logger := logging.GetLogger()
logger.Info("Start server")
srv := new(scraper_app.Server)
logger.Info("Init handler")
hand := handler.NewHandler(logger)
if err := srv.Run("8080", hand.InitRouters()); err != nil {
logger.Fatal(err)
}
}
server.go - инициализация сервера
package scraper_app
import (
"net/http"
"time"
)
type Server struct {
httpServer *http.Server
}
func (s *Server) Run(port string, handler http.Handler) error {
s.httpServer = &http.Server{
Addr: "127.0.0.1:" + port,
Handler: handler,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}
return s.httpServer.ListenAndServe()
}
Dockerfile
FROM golang:latest
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
EXPOSE 8080
CMD ["go", "run", "./cmd/app.go"]
Контейнер создался без ошибок, всё нормально. Когда в браузере ввожу "http://localhost:8080", то получаю ошибку.
Страница недоступна. Сайт localhost не отправил данных. ERR_EMPTY_RESPONSE
Как это решить?
Golang задачи с собеседований
Telegram
Golang задачи с собеседований
Задачи, тесты и теоретические вопросы по Go. Так же по gin, grpc, горутинах, архитектуре api и http стэку.
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
👨🏻💻 Вопрос от пользователя
Создание сегмента при его объявлении
Мне всегда казалось, что сегменты не создаются при их объявлении, наверное из-за книги по которой я начинал изучать гоу «Head First. Изучаем Go » 2020 ISBN 978-5-4461-1395-8(страница 210) вот строки оттуда (картинка)
Но наткнулся на то, что всё работает и так:
результат:
Получается, что у меня устаревшая информация и книга была старого издания, либо я в чём-то заблуждаюсь. Исходя из приведённою мною примера, при объявлении сегмента, он всё-таки создаётся автоматически, так ли это?
Golang задачи с собеседований
Создание сегмента при его объявлении
Мне всегда казалось, что сегменты не создаются при их объявлении, наверное из-за книги по которой я начинал изучать гоу «Head First. Изучаем Go » 2020 ISBN 978-5-4461-1395-8(страница 210) вот строки оттуда (картинка)
Но наткнулся на то, что всё работает и так:
package main
import "fmt"
func main() {
var strArr []string
fmt.Print(strArr)
strArr = append(strArr,"qwerty")
fmt.Print(strArr)
}
результат:
[][qwerty]
...Program finished with exit code 0
Press ENTER to exit console
Получается, что у меня устаревшая информация и книга была старого издания, либо я в чём-то заблуждаюсь. Исходя из приведённою мною примера, при объявлении сегмента, он всё-таки создаётся автоматически, так ли это?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
rune и byte в чём разница?
Зачем придумали 2 отдельных типа данных и в чём их отличие и назначение?
Golang задачи с собеседований
rune и byte в чём разница?
Зачем придумали 2 отдельных типа данных и в чём их отличие и назначение?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Ошибка подключения приложения к mysql / GO
Разрабатываю софт для парсинга баз данных mysql, столкнулся с ошибкой при использовании github.com/go-sql-driver/mysql. При запуске софта на Windows Server 2016 вылазит такая ошибка:
В чем может быть проблема?
Golang задачи с собеседований
Ошибка подключения приложения к mysql / GO
Разрабатываю софт для парсинга баз данных mysql, столкнулся с ошибкой при использовании github.com/go-sql-driver/mysql. При запуске софта на Windows Server 2016 вылазит такая ошибка:
[mysql] 2024/02/19 05:28:57 packets.go:36: read tcp 127.0.0.1:52891->127.0.0.1:1433: wsarecv: An existing connection was forcibly closed by the remote host.
[mysql] 2024/02/19 05:30:57 packets.go:36: read tcp 127.0.0.1:52923->127.0.0.1:1433: wsarecv: An existing connection was forcibly closed by the remote host.
Error pinging database: driver: bad connection
В чем может быть проблема?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Организация структуры проекта с несколькими модулями Golang
В 1 проекте будут содержаться 3 различные программы: Repeater, Controller и Executor, полагаю что необходимо под каждый выделить свой модуль. И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций. Пока что максиум что вышло в каждый модуль добавить копии файла с этими общими функциями, что выглядит не очень. Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль. Прошу помощи как можно подробнее обьясните как сделать то что я хочу если это вообще возможно.
Golang задачи с собеседований
Организация структуры проекта с несколькими модулями Golang
В 1 проекте будут содержаться 3 различные программы: Repeater, Controller и Executor, полагаю что необходимо под каждый выделить свой модуль. И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций. Пока что максиум что вышло в каждый модуль добавить копии файла с этими общими функциями, что выглядит не очень. Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль. Прошу помощи как можно подробнее обьясните как сделать то что я хочу если это вообще возможно.
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Как в go сделать переменную с двумя типами и функцию вовращающую два типа
Как сделать так чтобы в переменной left можно было хранить как NumberNode так и BinaryOperationNode, и чтобы функция могла вовращать оба эти типа?
Код:
Golang задачи с собеседований
Как в go сделать переменную с двумя типами и функцию вовращающую два типа
Как сделать так чтобы в переменной left можно было хранить как NumberNode так и BinaryOperationNode, и чтобы функция могла вовращать оба эти типа?
Код:
func (p *Parser) Term() BinaryOperationNode {
left := p.Factor() // Factor возвращает NumberNode
for p.CurrentToken.Type_ == token.Number {
operation := p.CurrentToken
right := p.Factor()
left := node.BinaryOperationNode{LeftOperand: left.Value, RightOperand: right.Value, Operation: operation.Value}
}
return left
}
Golang задачи с собеседований