Мерль
Не про Go, но какая прелесть всё же https://github.com/jachris/cook
andrei
writing build definitions should be as powerful and easy as possible, which is why everything in Python.
andrei
Dmitrii
Говорят что прелесть го в одном бинарнике, но как туда вшивают например templates если это Web server? Либо какие то другие вспомогательные файлы? На ум приходит несколько вариантов: 1. прекомпайлер которые зашивает темплейты в код а потом уже компилирует(добавляет дополнительный стэп сборки) 2. Писать темелейты сразу в .go файлах в переменных (агли код) 3. Передавать путь к темплейтам как переменную env (деплой одним бинаркником больше не пройдёт, т.к надо тянуть темплейты)
andrei
че в го еще jsx не завезли
andrei
лол
Dmitrii
Толсто
Dmitriy / დიმიტრი
что за безумие тут вообще. зачем темплейты куда-то вшивать?
Мерль
Говорят что прелесть го в одном бинарнике, но как туда вшивают например templates если это Web server? Либо какие то другие вспомогательные файлы? На ум приходит несколько вариантов: 1. прекомпайлер которые зашивает темплейты в код а потом уже компилирует(добавляет дополнительный стэп сборки) 2. Писать темелейты сразу в .go файлах в переменных (агли код) 3. Передавать путь к темплейтам как переменную env (деплой одним бинаркником больше не пройдёт, т.к надо тянуть темплейты)
Есть два основных подхода: - утилиты, которые генерируют go-файлы с "вшитыми" данными, попутно их сжимая, например, и генерируя API, эмулирущий файловую систему. Это go-rice и другие. На выходе ты получаешь один бинарник. Минус такого подхода - данные после сборки изменить очень сложно - прокидывать путь к ресурсам через флаги или переменные окружения
Dmitry
че в го еще jsx не завезли
Есть вот такое https://github.com/mamaar/risotto
Anonymous
че в го еще jsx не завезли
как они его там завезут
Anonymous
если даже генерики не могут
andrei
ооо
не совсем то
andrei
там js в js компилятор
Мерль
если даже генерики не могут
завязывай >_> троллинг ради троллинга уныл чуть более чем полностью
Dmitrii
что за безумие тут вообще. зачем темплейты куда-то вшивать?
Чтобы деплоить одним бинарником, в этом и вопрос
Dmitrii
Я так понимаю для большинства кейсов лучше прокидывать пути через env и деплоить вместе с зависимостями, докером например А "зашивать" только в особых случаях
Мерль
Я так понимаю для большинства кейсов лучше прокидывать пути через env и деплоить вместе с зависимостями, докером например А "зашивать" только в особых случаях
Ну собственно да Зашивать имеет смысл имхо либо в случае, если у тебя какая-то пользовательсая тулза с web gui Например, жостко прожечь админку внутрь бинарника. Либо для какого-нибудь iot, где удобно закинуть один файл на устройство и не париться
Pavel
Не так прочитал ник
Pavel
Привет, Diablo
Diablo
Привет, Diablo
привет Павел!
Irina
Привет. Посоветуете что-нибудь для новичка по грамотному написанию тестов, особенно для бд?
Oleg
Что в ней тестировать?)
Irina
Ну работу с бд
Oleg
Sql или орм?)
Irina
Я думаю использовать sqlx, так понимаю что это промежуточный вариант. Уже какая-то абстракция над голым SQL, ещё не полноценный orm
Irina
Но вообще беру что угодно, хоть для SQL хоть для orm, почитаю оба
Oleg
Хз тогда что вы там тестировать собрались:) Правильную работу можете проверить простой имитацией действия:)
Anonymous
Я думаю использовать sqlx, так понимаю что это промежуточный вариант. Уже какая-то абстракция над голым SQL, ещё не полноценный orm
Если берете готовый пакет типа того же sqlx - там уже есть все тесты, тут разве что если вы напишете свою обертку поверх него и уже ее понадобится покрыть тестами
Irina
Хорошо, спасибо
Konstantin
Когда какой-то тип расширяют функциями, то вижу, что используют то ссылку, то сам объект, но не особо понимаю как и когда лучше (сам тупо ссылку использую), может кто объяснить? func (o *Object) lala() {} vs func (o Object) lala() {}
Michael
легковесный объект/структура - передавай по значению, в противном случае - ссылка
Konstantin
А почему бы и при легковестном не передавать ссылкку?
Michael
не так быстро будет работать
Michael
мелкие объекты проще/лучше, целесообразнее копировать
Daniel
дело не в легковесности
Мерль
Когда какой-то тип расширяют функциями, то вижу, что используют то ссылку, то сам объект, но не особо понимаю как и когда лучше (сам тупо ссылку использую), может кто объяснить? func (o *Object) lala() {} vs func (o Object) lala() {}
Зависит от нескольких условий В большинстве случаев принято передавать указатель, кроме двух исключений: - тип ссылочный, например map или slice. В таком случае передавать указатель нет никакого смысла - нужна иммутабельность
Daniel
при ресивере по значению метод не имеет возможности изменить иресивер (то, что он сможет изменить - будет копия)
Daniel
при ресивере по указателю ресивер можно менять
Konstantin
Но я вот везде ссылку пхаю (при работе со структурами), не имеет смысла бегать и менять на объекты?
Daniel
нет
Daniel
скорее всего - нет
Konstantin
Оке. А то вижу часто, что делают то так, то сяк.
Konstantin
Думал как-то важно очень)
Michael
от задачи пляшут
Dmitriy / დიმიტრი
Хм, кто-то на ludum dare на голанге пилит игру. Как-то не представлял себе голанг для такого
Konstantin
А чего же. На прожорливых и так же не особо подходящих языках пишут, так и тут можно:)
andrei
лол
Kirill
Kirill
Kirill
Golang News Кот
Kirill
😑 ты что, бот?
Anonymous
подскажите чего не так он пишет undefined: ReturnInt
Anonymous
func TestReturnInt(t *testing.T) { if ReturnInt() != 1 { t.Error("expected 1") } }
Anonymous
import ( "reflect" "testing" )
Kirill
Ты в каком пакете это пишешь?
Kirill
Строку package покажи
Anonymous
package main import ( "reflect" "testing" ) func TestReturnInt(t *testing.T) { if ReturnInt() != 1 { t.Error("expected 1") } }
Anonymous
раньше работала на другом компе а сейчас на мак пересел и не хочет
Mike
package main import ( "reflect" "testing" ) func TestReturnInt(t *testing.T) { if ReturnInt() != 1 { t.Error("expected 1") } }
ну ты вызвал функцию КОТОРОЙ НЕТ НИЧЕГО СЕБЕ ПОЧЕМУ ЖЕ ОНА АНДЕФАЙНД
Kirill
goimports, а не gofmt
Mike
goimports, а не gofmt
goimports может и не стоять, а gofmt спилит неиспользованный импорт
Kirill
goimports может и не стоять, а gofmt спилит неиспользованный импорт
Когда это gofmt стал уметь в то, что должен делать goimports?
Anonymous
не понял чего случилось раньше работал это просто тесты для курса по го от mail.ru https://gitlab.com/rvasily/msu-go-11/blob/master/1/99_homework/main_test.go
Kirill
Бляу, а ты функцию написал? Нет.
Anonymous
да на винде работает а на маке нет
Michael
го сломал маки
Michael
breaking news
Anonymous
да это скорей я криворукий
Anonymous
Куку