Jump to content

Search the Community

Showing results for tags 'golang'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • OS
    • Linux
    • Windows
    • Virtualization
  • Coding
    • Php
    • Golang
    • JavaScript
    • Python|Ruby|Perl
    • C|C++|C#
    • DataBases
    • Lans
    • Other
  • Underground
    • Security and its research
    • Hack Tools
    • Social engineering
    • Radio electronics / Phreaking
    • TV
    • Spam
    • For beginners
    • Cryptocurrency
  • Games
    • Strategy
    • Hacker Games
    • Books
  • Other
    • News
    • Creative and Design
    • The Internet
    • SEO
    • Freebie
    • Training courses
    • Video Tutorials
    • Trading floor
    • Verstka
    • Talker
  • k0d.biz
    • Contests
    • Questions, comments and more
    • Site and forum news
    • Violations, complaints

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me

Found 14 results

  1. Error in logs: http2: stream closed [golang] Есть софт, написан на golang. Валится при непонятных обстоятельствах, всё как обычно и бах, и крах. В логах был обнаружен странный строк: http2: stream closed Исходные: Ось: Debian Linux Golang: go version go1.16.6 linux/amd64 Есть идеи?
  2. Go на практике. Go - превосходный системный язык. Созданный для удобной разработки совре­ менных приложений с параллельной обработкой, Go предоставляет встроенный на­ бор инструментов для быстрого создания облачных, системных и веб приложений. Знакомые с такими языками, как Java или С#, быстро освоят Go - достаточно лишь немного попрактиковаться, чтобы научиться писать профессиональный код. Книга содержит решения десятков типовых задач в ключевых областях. Следуя стилю сборника рецептов - проблема/решение/обсуждение, - это практическое руководство опирается на основополагающие концепции языка Go и знакомит с конкретными приемами использования Go в облаке, тестирования и отладки, маршрутизации, а также создания веб-служб, сетевых и многих других приложений. Издание адресовано опытным разработчикам, уже начавшим изучать язык Go и желаюшим научиться эффективно использовать его в своей профессиональной деятельности. Скачать: 59a6f241
  3. Golang загрузка нескольких файлов из формы Есть некая форма: <form enctype="multipart/form-data" method="post"> <input type="file" name="file" multiple> <input type="submit" value="Отправить" > </form> В которой мы выбрали к примеру 2 файла. Вопрос состоит в следующем: как принять оба файла? Если собирать так: file, fileHeader, err = r.FormFile(name) где - r *http.Request То выбрать вы сможете только один файл, а надо все. Для этого есть минимум 2 варианта: m, err := r.MultipartReader() if err != nil { fmt.Println(err) } for { part, err := m.NextPart() if err == io.EOF { break } if part.FileName() == "" { continue } dst, err := os.Create("./test/" + part.FileName()) if err != nil { fmt.Println(err) } io.Copy(dst, part) } Этот пример от сюда. И второй: func addFiles(r *http.Request) ([]int32, error) { var err error var ids []int32 for _, values := range r.MultipartForm.File { for _, fileHeadetr := range values { var newFile files.File newFile.TmpFile.FileHeader = fileHeadetr newFile.TmpFile.File, err = fileHeadetr.Open() if err != nil { log.Println(err) } var id int32 id, err = newFile.Add() \\ниже показан пример if err != nil { log.Println(err) } else { ids = append(ids, id) } } } return ids, err } где newFile.Add() к примеру такой:
  4. Вся работа с letsencrypt укладывается в пару строчек: import "golang.org/x/crypto/acme/autocert" m := &autocert.Manager{ Cache: autocert.DirCache("golang-autocert"), Prompt: autocert.AcceptTOS, HostPolicy: autocert.HostWhitelist("NameProject", "www."+NameProject), } server := &http.Server{ Addr: ":443", TLSConfig: m.TLSConfig(), Handler: router, } server.ListenAndServeTLS("", "") Где router - router *mux.Router Полный пример: import ( "fmt" "github.com/gorilla/mux" _ "github.com/gorilla/mux" log "github.com/sirupsen/logrus" "golang.org/x/crypto/acme/autocert" "net/http" "os" ) func main(){ router := mux.NewRouter() router.HandleFunc("/robots.txt", func(w http.ResponseWriter, r *http.Request) { err := r.ParseForm() if err != nil { log.Println(err) } http.ServeFile(w, r, "robots.txt") }).Methods("GET") m := &autocert.Manager{ Cache: autocert.DirCache("golang-autocert"), Prompt: autocert.AcceptTOS, HostPolicy: autocert.HostWhitelist("k0d.cc", "www.k0d.cc"), } server := &http.Server{ Addr: ":443", TLSConfig: m.TLSConfig(), Handler: router, } server.ListenAndServeTLS("", "") }
  5. Есть такой товарищ на github: dgryski/go-perfbook он как раз их и описывает: Table of Contents Writing and Optimizing Go code How to Optimize Optimization Workflow Concrete Optimization Tips Data Changes Algorithmic Changes Benchmark Inputs Program Tuning Optimization Workflow Summary Garbage Collection Runtime and Compiler Unsafe Common gotchas with the standard library Alternate Implementations CGO Advanced Techniques Assembly Optimizing an Entire Service Tooling Profiling Tracer Appendix Implementing Research Papers
  6. В повседневной работе требуется получать и отправлять различные данные на различных языках и платформах. В данный момент пойдет речь о Golang и отправке html form на js с использование axios, но суть будет ясна и применима с простым <form> html. Разберем все по порядку: axios даёт прекрасную возможность легко и непринужденно отправлять данные различными методами. замечу: здесь отправлять данные можно двумя вариантами наименования обьектов: params - - параметры URL, которые будут отправлены с запросом. Должен быть простым объектом или объектом URLSearchParams data - данные, которые будут отправлены как тело запроса. Применяется только для методов запроса «PUT», «POST» и «PATCH» GET, DELETE: let payload = {'category': ""} axios.get('/api/good/getGood',{ params: payload }).then((response) => { console.log(response); }); POST, PUT, PATCH: getGoods({dispatch, state, commit, getters}, payload){ return axios.post('/api/good/getGoods',{ //.put(...,{}); //.delete(...,{}); data: payload }).then((response) => { console.log(response); }); }, На golang получаем данные из форм, в частности нашу переменную category : func GetGoods(w http.ResponseWriter, r *http.Request) { // они все тут err := r.ParseForm() category := r.Form["category"] if err != nil { log.Println(err) } log.Println(category) } r.ParseForm() - распарсит и даст возоможность получить данные через r.Form Если же Вы отправляете файлы, то парсите так: r.ParseMultipartForm(0) vars := mux.Vars(r) log.Println("id: ", vars["id"])
  7. Как преобразовать []byte в string? Варианты решения: string([]byte{23, 45, 34}) func BytesToString(data []byte) string { return string(data[:]) }
  8. Ошибка вида: import cycle not allowed Означает - произошла ошибка циклической зависимости. Если пакет а подключается пакет б, то пакет б не должен включать пакет а.
  9. Иногда требуется сделать программу, которая будет в роли слушателя порта и выполнения какой - либо операции. Все бы ничего, но частенько порт уже занят(Пример :8080). Чтобы оставить свои порты в покое: Создадим папку Go и файл docker-compose.yaml: mkdir Go touch docker-compose.yaml Создаем внутри папки Go папку с доменным именем: mkdir Go/mydomain.lo Внутри нее создаем подпапку data и файл для создания образа. mkdir Go/mydomain.lo/data touch Go/mydomain.lo/Dockerfile Внутри dada как раз и кладем наш скомпилированый заранее бинарник(и). Открываем созданный Dockerfile cd /Go/mydomain.lo vim Dockerfile Прописываем в него: FROM archlinux mkdir /go FROM - Указывает откуда взять образ. Я выбрал archlinux образ, вы можете выбрать любой другой ОС тут. ENTRYPOINT /go/вашБин, он стартанет при поднятии контейнера. Переходим обратно к docker-compose.yaml cd ../../.. vim docker-compose.yaml Прописываем в нем версию и наш сервис: Сохраняем и выходим. docker-compose up Теперь при создании контейнера - поднимется и программа, но внутри уже контейнера.
  10. func format_time(t time.Time) string { return t.Format("2006.01.02-15.04.05") // Аналогично: YYYY.MM.DD-hh.mm.ss } Форматы: тут
  11. Целочисленные типы int8: целое число от -128 до 127 занимает 1 байт (8 бит) int16: целое число от -32 768 до 32 767 занимает 2 байта (16 бит) int32: целое число от -2 147 483 648 до 2 147 483 647 занимает 4 байта (32 бита) int64: целое число от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 занимает 8 байт(64 бита) uint8: целое число от 0 до 255 занимает 1 байт uint16: целое число от 0 до 65 535 занимает 2 байта uint32: целое число от 0 до 4 294 967 295 занимает 4 байта uint64: целое число от 0 до 18 446 744 073 709 551 615 занимает 8 байт byte: синоним типа uint8, целое число от 0 до 255 занимает 1 байт rune: синоним int32, целое число от -2 147 483 648 до 2 147 483 647 занимает 4 байта int: целое число со знаком, зависимый тип от платформы, 4 или 8 байт, синоним int32, либо int64. uint: целое беззнаковое число, зависимый тип от платформы, 4 или 8 байт, синоним uint32, либо uint64. Дробные(числа с плавающей точкой) float32: от 1.4*10-45 до 3.4*10-38 занимает 4 байта(32 бита) float64: от 4.9*10-324 до 1.8*10-308 занимает 8 байта Комплексные числа complex64: вещественная и мнимая части представляют числа float32 complex128: вещественная и мнимая части представляют числа float64 Bool bool: имеет один из 2-ух значений: true или false Строки string: представляет строковый литерал - последовательность символов, заключенная в двойные кавычки. Кроме обычных символов могут использоваться спец символы: \n: переход на новую строку \r: возврат каретки \t: табуляция \": двойная кавычка внутри строк \\: обратный слеш
  12. Дописать в файл можно двумя способами: 1) Открыть файл с флагом: os.O_APPEND var fileLog *os.File fileLog, err := os.OpenFile(pathFileLog, os.O_APPEND|os.O_WRONLY, 0600) if err != nil{ return err } defer func() { err = fileLog.Close() if err != nil{ log.Fatalln(err) } }() countN, err := fileLog.Write(insertData) if err != nil{ log.Fatalln(err) } log.Println("log countN:", countN) 2)Передвигая указатель seek файла.
  13. Преобразование interface{} в []byte package main import ( "encoding/gob" "bytes" ) func GetBytes(key interface{}) ([]byte, error) { var buf bytes.Buffer enc := gob.NewEncoder(&buf) err := enc.Encode(key) if err != nil { return nil, err } return buf.Bytes(), nil }
  14. Периодически при простое MySql и последующим подключении к базе на языке Go при использовании либы: github.com/jmoiron/sqlx Вываливается ошибка коннекта и все на этом, данные не отдаются, однако при следующем запросе данные успешно получите. Решение: Необходимо выполнить метод к бд: db.SetMaxIdleConns(0) Keeping a connection idle for a long time can cause problems (like in this issue with MySQL on Microsoft Azure). Try db.SetMaxIdleConns(0) if you get connection timeouts because a connection is idle for too long. Ссылка на источник.
×
×
  • Create New...