
Roman
01.10.2018
01:28:09
simple & consistent IMHO
хотя, наверное надо таки эти 4 пункта в introduction более emphasize’нуть

Max
01.10.2018
01:39:42
как правильно называть тест на func (obj *MyStruct) DoSomething() {} ?
что бы go test -cover распознал его как покрытый тестом?
TestDoSomething не работает

Google

Max
01.10.2018
01:40:05
TestMyStruct_DoSomething тоже не работает

Roman
01.10.2018
01:46:45

Max
01.10.2018
01:47:02
понял(

Roman
01.10.2018
01:48:35
TestDoSomething не работает
даже если тест называется TestDoSomething но сама DoSomething нигде при выполнении теста не вызывается - онa, естественно, не будет покрыта, в этом и весь смысл test coverage’а, показать вам что вы тестируете, а что нет.

Max
01.10.2018
01:49:14
понял. думал оно просто сотрит на то какие ф-ции покрыты

Roman
01.10.2018
03:35:15
Опа! Походу я нашёл серьёзную проблему в proposal’е, implicit конвертация mutable в immutable оказывается обязательно нужна:
func append(slice []Type, elems ...Type) []Type
при данном пропосале должна быть переписана в:
func append(slicе [] const Type, elems ...const Type) []Type
append не должна изменять ничего кроме переданного слайса, на всё остальное она должна гарантировать иммутабельность
однако, сломает весь существующий Go 1.x код, поскольку любой вызов append будет требовать explicit конвертацию в иммутабельные типы:
v := []int {1, 2, 3}
v = append(v, 4, 5) // Compile-time error
// Must be:
v = append(const(v), const(4), const(5)) // Compile-time error
поэтому без implicit cast - обратная совместимость с Go 1.x не может быть гарантирована

?
01.10.2018
03:42:43
это печально, надо гарантировать обратную совместимость, а иначе язык превратится в python2
?
@Romshark

Roman
01.10.2018
03:45:21

Alexey
01.10.2018
05:59:05

Google

Vladimir
01.10.2018
06:01:20

Alexey
01.10.2018
06:01:32

Vladimir
01.10.2018
06:01:52

Alexey
01.10.2018
06:01:52
Про готовое тоже напишу. Если краткого — нет живого

Vladimir
01.10.2018
06:01:55
Не?
12 дней назад коммит
Вполне живое

Alexey
01.10.2018
06:02:31
Их много разных. Но живых, больше чем с одним активным контрибьютором, особо нет

Vladimir
01.10.2018
06:02:52

Alexey
01.10.2018
06:02:54
Ну skylark не про то почти полностью

Vladimir
01.10.2018
06:02:59
Он живой, более 1 контрибьютера

Alexey
01.10.2018
06:03:12
Это не язык программирования :)

Vladimir
01.10.2018
06:03:15
Skylark is a dialect of Python intended for use as a configuration language. Like Python, it is an untyped dynamic language with high-level data types, first-class functions with lexical scope, and garbage collection

Alexey
01.10.2018
06:04:13
Я не хочу делать язык для описания конфигураций

Vladimir
01.10.2018
06:04:46
Он не только под конфигурации катит

Alexey
01.10.2018
06:05:11
Первое предложение в твоей собственной цитате
Они не хотят его развивать в язык более общего назначения

Vladimir
01.10.2018
06:06:44

Google

Alexey
01.10.2018
06:06:49
Ну и более одного контрибьютора — это очень условно: https://github.com/google/skylark/graphs/contributors
Хорошо, я не буду больше спорить :)
Добавлю только, что я его видел, трогал и общался с Аланом

Vladimir
01.10.2018
06:08:08
Ок)

Alexey
01.10.2018
06:10:22
Сразу тогда напишу, что то же относится к Anko, Neugram, Goby, Agora и к разным вариантам Lisp, Lua и JS

V
01.10.2018
06:52:20
Ого сколько gosh'ей на гитхабе

Oleg
01.10.2018
07:17:16
Всем привет!
Расскажите, зачем вообще го нужна?

Alexander
01.10.2018
07:17:54
? Олег в разнос пошел

Denys
01.10.2018
07:18:50
Олег, где макет?

Ivan
01.10.2018
07:23:01

Никита
01.10.2018
07:27:29
@madgopher так в чем плоха модель памяти в Го? Расскажи пожалуйста

Sergey
01.10.2018
08:30:28

Denys
01.10.2018
08:37:13
как назвать функцию
которая результат записывает в мап
ну обычно getSomeShit
если возвращает
а как обозвать assignSomeStat ?
или как

Artem
01.10.2018
08:38:13
add, write, create, update, Append, post

Google

Denys
01.10.2018
08:39:00
writeStatsFromQuery ?
там sql
writeStatsByQuery?
вообще по солид функция которая возвращает записи и которая записывает должны быть разными
но пересоздавать мапу это как то рассточительно

Admin
ERROR: S client not available

Denys
01.10.2018
08:40:33
особенно для статы

Daniel
01.10.2018
08:41:32

Denys
01.10.2018
08:41:55
но хороший нейминг и слабая связность лучше, чем плохой нейминг и слабая связность
put
? как не пришло такое в глову
runQueryAndPutStats хорошо говорит что функция делает
но and свидетельствует о слабой связности

Vadim
01.10.2018
08:43:17

Denys
01.10.2018
08:43:24
ты как будто говоришь о том что херого код пишешь)
set мне кажется меньше подоходит, там словарь, а сет скорей для сколярных переменных

Marperia
01.10.2018
09:14:44
Ещё раз здравствуйте! Не подскажете, как можно реализовать это самое переиспользование *sql.DB? Конкретно сейчас юзкейс довольно простой:
1. Подключаюсь к БД в main()
2. В том же main() стоят http.Handler() на контроллеры, например Registration(w http.ResponseWriter, r *http.Request)
3. В нём проверяются введённые данные и вызывается func (u User) Create()
Собственно, как передать *sql.DB в эту функцию? Или где почитать о контекстах?
Мне уже предложили реализовать такой middleware:
func RegistrationHandler(db *sql.DB) http.HandlerFunc {
return Registration(w http.ResponseWriter, r *http.Request) {
//use db
db.Query(...)
}
}
Но мне это не особо нравится, хочется либо контекста, либо элегантности.

Andrei
01.10.2018
09:16:43

Илья
01.10.2018
09:16:51
а чем это неэлегантно?

Andrei
01.10.2018
09:17:22
самый простой и элегантный путь

Google

Marperia
01.10.2018
09:18:11

Andrei
01.10.2018
09:19:43

Илья
01.10.2018
09:23:16

Marperia
01.10.2018
09:23:23

Илья
01.10.2018
09:24:45
причем тут ОРМ, и фреймворк я не понял, но вроде бы вы начали думать в правильном направлении

Marperia
01.10.2018
09:25:31

Marlik
01.10.2018
09:26:40
@marperia вот так попробуйте https://habr.com/post/329582/ мне понравилось, осталось только привести к божескому виду.

Marperia
01.10.2018
09:27:02
А кто-нибудь знает, как (можно ли) реализовать нечто вроде глобального контекста, чтобы не лезть во все методы и не переписывать нахрен бизнес-логику?
Спойлер: в текущей Б-Л используется db.Close() в каждой сраной функции.

Andrei
01.10.2018
09:27:54

Maksim
01.10.2018
09:28:10
казалось бы, где связь между бизнесс логикой и db.close)

Andrei
01.10.2018
09:28:35
на самом деле, только таким образом на го и можно построить поддерживаемую кодовую базу

Marperia
01.10.2018
09:28:39

Andrei
01.10.2018
09:29:37

Marperia
01.10.2018
09:29:54