Andrey
ну гугл какие-то варианты выдает я думаю что-то можно придумать )
Akim
Это что за тесты такие, они во время запуска изменяют схему бд?
Yegor
Иван
kostyaBro
Илья
не fmt.Scan, а fmt.Scanln
Илья
fmt.Scan просто читает первое слово, а тебе нужно всю строку
Null
🖥 Реализация HTTP файлового сервера с нуля с использованием Golang
Протокол HTTP - это протокол прикладного уровня, который обычно реализовывался на основе протокола TCP до HTTP/3. Поскольку протокол TCP является надежным протоколом потоковой связи, после установления соединения как отправители, так и получатели могут отправлять данные любой длины, и стек TCP также может выполнять нарезку данных. Таким образом, протоколы прикладного уровня на основе TCP должны согласовывать формат передачи сообщений, чтобы как отправители, так и получатели могли извлечь полное сообщение из принятого потока данных. Протокол HTTP - это одно из многих соглашений. Короче говоря, TCP - это протокол транспортного уровня, который обеспечивает потоковую связь, а HTTP определяет формат сообщения.
➡️ Читать дальше
🔩 Код
@Golang_google
Кіт ✙
🖥 Реализация HTTP файлового сервера с нуля с использованием Golang
Протокол HTTP - это протокол прикладного уровня, который обычно реализовывался на основе протокола TCP до HTTP/3. Поскольку протокол TCP является надежным протоколом потоковой связи, после установления соединения как отправители, так и получатели могут отправлять данные любой длины, и стек TCP также может выполнять нарезку данных. Таким образом, протоколы прикладного уровня на основе TCP должны согласовывать формат передачи сообщений, чтобы как отправители, так и получатели могли извлечь полное сообщение из принятого потока данных. Протокол HTTP - это одно из многих соглашений. Короче говоря, TCP - это протокол транспортного уровня, который обеспечивает потоковую связь, а HTTP определяет формат сообщения.
➡️ Читать дальше
🔩 Код
@Golang_google
ОПА, С НУЛЯ ЭТО МЫ УМЕЕМ, ЭТО МЫ МОГЕМ
Кіт ✙
🖥 Реализация HTTP файлового сервера с нуля с использованием Golang
Протокол HTTP - это протокол прикладного уровня, который обычно реализовывался на основе протокола TCP до HTTP/3. Поскольку протокол TCP является надежным протоколом потоковой связи, после установления соединения как отправители, так и получатели могут отправлять данные любой длины, и стек TCP также может выполнять нарезку данных. Таким образом, протоколы прикладного уровня на основе TCP должны согласовывать формат передачи сообщений, чтобы как отправители, так и получатели могли извлечь полное сообщение из принятого потока данных. Протокол HTTP - это одно из многих соглашений. Короче говоря, TCP - это протокол транспортного уровня, который обеспечивает потоковую связь, а HTTP определяет формат сообщения.
➡️ Читать дальше
🔩 Код
@Golang_google
В статье баг, кстати. Тот break под default выйдет из цикла, а из свитча
Кіт ✙
В следствии чего, нам придётся дождаться, когда входные данные закончатся, и только потом вернём данные. Хотя их вернуть можно сразу в дефолте
Кіт ✙
Вызывающий абонент? Странная формулировка
Иван
гугл переводчик?
Не ну это
Davron
Chebyrash
Илья
Feofan
Не ну это
Khalid
if innerOfInput != <-outputStream
так можно?
Khalid
с учетом, что в оутпут ничего не вставляли
Khalid
то есть я вытаскиваю пустоту
Khalid
он же может вытаскивать пустоту, да? он какое-то пустое значение выведет а не крашнется?
kostyaBro
xdd
Всем привет, можете подсказать литературу/статьи/видео, чтобы начать микросервисы писать, понять как они общаются между собой?
Aleksandr
grpc.io
Илья
xdd
@alekstet @illiadimura thx
Null
🖥 Devzat
Devzat – реализация чата по SSH
Поскольку приложения SSH есть буквально на всех платформах, даже на вашем телефоне, вы можете подключиться к Devzat на любом устройстве.
Интересные особенности:
• Различные комнаты!
• Поддержка markdown! Таблицы, заголовки, курсив и все такое
• Подсветка синтаксиса кода
#Go #SSH #Interesting #Useful
🖥 Github
@Golang_google
A
Подскажите плз, как в Goland настроить, чтобы можно было запускать через Shift + F10 текущий открытый файл?
A
У настройках вижу только 3 типа запуска. По директории, файла, и пакету..
( ͡❛ ෴ ͡❛)
Ребят не знаете почему в рекурсии не работает нормальный аппенд и надо копию мэйкать у массива?
( ͡❛ ෴ ͡❛)
if target == 0 {
cpyTmp := make([]int, len(arr))
copy(cpyTmp, arr)
*res = append(*res, cpyTmp)
return
}
( ͡❛ ෴ ͡❛)
if target == 0 {
*res = append(*res, arr)
return
}
( ͡❛ ෴ ͡❛)
Первое работает второе - криво
Andrey
Первое работает второе - криво
для начала я тебе посоветовал бы разобраться что такой массив и что такое слайс (и да, у тебя слайс), в чем его особенности и принцип работы
kostyaBro
Илья
Илья
если через Shift+10, то нужно настраивать отдельно запуск для каждого файла
Aleksandr
есть еще https://github.com/cosmtrek/air
A
Michael
Привет. Я ищу инструмент для создания графа пакетов в моем коде. Что бы вы посоветовали
Илья
Michael
да
Илья
https://github.com/Helcaraxan/gomod#gomod-graph
Илья
можно взять визуализатор для go mod graph, но по факту он здесь под капотом
Michael
что то не пашет с workspace. попробую починить
( ͡❛ ෴ ͡❛)
Илья
A
Вопрос по конструкторам))
часто встречал примеры, когда есть не экспортируемая структура, и для нее написан экспортируемый конструктор.
И таким образом, инкапсулируется сложность и детали инициализации.
Я попробовал сделать так же, но у меня ide подсвечивает ошибку, что я не могу создать не экспортируемую структуру.
A
Подскажите плз, в чем проблема?
Илья
A
я понимаю, но в чем проблема? Так нельзя делать? или так не принято?
Почему ide считает что это плохо?
A
Илья
Плохо, потому что возвращется неэкспортируемая структура
Илья
которая не должна быть вне пакета
A
но это нормальный подход? так принято делать?
Илья
Не принято
Илья
но такое используют в очень специфичных кейсах
Sergey
но это нормальный подход? так принято делать?
Если хотите так извращаться, то опишите интерфейс с нужными методами, которые реализует ваша структура и возвращайте её как интерфейсный тип. Но вообще, многие не рекомендуют в простых случаях добавлять ненужные абстракции
Oleg
2 строчка какая-то странная
Khalid
Khalid
криво вызвал мейк
Khalid
пасиб
Florian Geyer von Giebelstadt
Привет. У меня есть задача по организации пинга серваков и докер-контейнеров. Пинг серверов выглядит примерно так: Нужно разобраться в TCP руками собирать пакеты, сделать так, чтобы мы слали SYN, принимали SYN, ACK, а затем просто не отвечали ответным SYN. Подскажите что можно почитать/посмотреть по этой теме. С сокетами и пакетами в го не доводилась работать ещё.
Tonny 🐍
https://www.udemy.com/course/go-programming-language-crash-course/ нормальный курс?
Khalid
package main
import "fmt"
func calculator(arguments <-chan int, done <-chan struct{}) <-chan int {
outputChan := make(chan int)
go func(op chan int) {
sum := 0
defer close(outputChan)
for {
select {
case <- arguments:
sum += <- arguments
case <- done:
outputChan <- sum
return
}
}
}(outputChan)
return outputChan
}
func main(){
arguments := make(chan int)
done := make(chan struct{})
result := calculator(arguments, done)
for i := 0; i < 10; i++ {
arguments <- 1
}
close(done)
fmt.Println(<-result)
}
Посмотрите в дебаг, пожалуйста, почему i проскакивает и в sum в итоге не 10, а 5 получается
Khalid
на 10 i, sum равно 5
Khalid
а должно 10 вроде как
Илья
anhckie
Khalid
Khalid
func merge2Channels(fn func(int) int, in1 <-chan int, in2 <-chan int, out chan<- int, n int) {
}
можете объяснить синтаксис первого параметра, второго, третьего и четвертого
Khalid
первое это функция фн которая принимает и возвращает инт да?
Oleg
Про каналы , там просто фиксируется , что каналы только для чтения или записи(стрелочками)
Khalid