@proGO

Страница 583 из 1674
Constantine
02.04.2017
20:20:38
нет слов )

не говорите про такое на собеседовании

LexsZero
02.04.2017
20:20:44
поэтому там теоретиически и смайлик

Constantine
02.04.2017
20:21:12
mysql 7 выйдет, для него теоретически тоже писать обертку для ошибок предсказывающих будущее?

Google
Mikhail
02.04.2017
20:22:29
дело не в авторе пакета, в том, что это ошибка на уровне индекса в БД. как пакет может предусмотреть это?)
ну хз. В ноде я делал так. И если у ошибки был err.statusCode == 13, например, то я знал, что в БД не получается записать из-за того, что пользователь с таким ником уже есть. А если statusCode == 15, то это ошибка соединения или чего-то другого. Это сильно упрощало работу

Constantine
02.04.2017
20:22:43
вопрос в сравнении ошибки )

err := DB.shit()

if err == DB.SHIT_ERROR { }

Constantine
02.04.2017
20:24:57
а что бы ты сделал в другом языке?

LexsZero
02.04.2017
20:25:09
ну хз. В ноде я делал так. И если у ошибки был err.statusCode == 13, например, то я знал, что в БД не получается записать из-за того, что пользователь с таким ником уже есть. А если statusCode == 15, то это ошибка соединения или чего-то другого. Это сильно упрощало работу
ну вот тут можно было бы в биндинге сделать кастомный тип MySQLError у которого помимо стандартного метода Error() возвращающего строчку, был бы еще какой-нибудь StatusCode() возвращающий инт с кодом ошибки

Constantine
02.04.2017
20:26:13
ссылку на пакет дайте

Mikhail
02.04.2017
20:26:37
ссылку на пакет дайте
github.com/go-sql-driver/mysql

LexsZero
02.04.2017
20:27:40
и дальше можно было бы делать что-то в духе err := db.DoSmth() if e, ok := err.(db.MySQLError); ok { if e.StatusCode() == 42 { } } else { log.Fatal(err) }

Constantine
02.04.2017
20:28:21
https://github.com/go-sql-driver/mysql/issues/277

вот вам объяснение

почему так сделано

Google
LexsZero
02.04.2017
20:29:21
о, лол, а там уже есть такое

Constantine
02.04.2017
20:29:26
как я и говорил, вопрос в покрытии версий и особенностей

LexsZero
02.04.2017
20:29:28
https://godoc.org/github.com/go-sql-driver/mysql#MySQLError

Constantine
02.04.2017
20:29:40
тем более

LexsZero
02.04.2017
20:30:12
я угадал вплоть до названия типа придуманного с потолка лол

Constantine
02.04.2017
20:55:36
как в коде выше делать обработку ошибки mysql и всё

LexsZero
02.04.2017
20:55:44
ну вот кастуешь как написано тут, а дальше смотришь в myerr, вроде очевидно

Constantine
02.04.2017
20:55:44
как бы ты сделал в ноде

Mikhail
02.04.2017
20:56:28
Constantine
02.04.2017
20:56:40
что именно ругается?

и как ругается

Mikhail
02.04.2017
20:59:06
что именно ругается?
mysql.MySQLError does not implement error (Error method has pointer receiver)

Serge
02.04.2017
21:00:46
mysql.MySQLError does not implement error (Error method has pointer receiver)
Сцуко! Как упоротый питонист, я ненавижу, когда оно так делает

И я каждый раз забываю как это лечится. Неделю назад же лечил

LexsZero
02.04.2017
21:01:44
Serge
02.04.2017
21:01:53
Можно без удаления

Щас нам @onokonem скажет;)

Daniel
02.04.2017
21:03:40
а?

Google
Daniel
02.04.2017
21:03:43
что сказать?

Serge
02.04.2017
21:03:58
mysql.MySQLError does not implement error (Error method has pointer receiver)

Daniel
02.04.2017
21:04:33
не помню :(

надо идти глядеть?

я посреди своего, довольно глубоко

у меня вот есть волшебная структура данных: map[string]map[int]map[string]map[int]int есть идеоматический способ проверить, существует ли путь?

Serge
02.04.2017
21:05:10
надо идти глядеть?
Ну, товарищь щас пришлет кусок, может я вспомню

Мерлин
02.04.2017
21:05:22
я посреди своего, довольно глубоко
Я там "придумал", если тебе не нужно обходить дерево, конечно

Serge
02.04.2017
21:05:50
не помню :(
Вот, в таких местах go говно

Mikhail
02.04.2017
21:05:55
Serge
02.04.2017
21:06:36
Дык, асертить на ссылочный тип

Serge
02.04.2017
21:06:49
Звёздочку перед ним в скобках

Типа метод определен только для ссылки на тип, а не для самого типа. Парампарампам

LexsZero
02.04.2017
21:08:37
Serge
02.04.2017
21:09:13
ну вот нахуя так делать, если метод ничего не мутирует
Так надёжнее же. Ну и копипасты в памяти меньше

Зато локов больше.

Тоже всегда так делаю;)

А то может там в этой ошибке собирается едрить данных в структуру. Мы же не знаем

А как на счёт какого-нибудь дискриптора для соответствующего соединения с базой? Мало ли

Google
Mikhail
02.04.2017
21:11:53
Звёздочку перед ним в скобках
спасибо, заработало!

Serge
02.04.2017
21:12:11
Daniel
02.04.2017
21:12:30
и не думал :)

Serge
02.04.2017
21:12:34
?

Denis
02.04.2017
21:21:09
Все остальное выйдет через интерфейсы

Admin
ERROR: S client not available

Denis
02.04.2017
21:21:38
https://github.com/stretchr/stew Как пример

Daniel
02.04.2017
21:22:11
Мерль, [02 Apr 2017 23:49 (02/04/17 23:50)]: Можно ли эти мапы заменить на это? https://play.golang.org/p/25ThcWy-ld Daniel Podolsky, [03 Apr 2017 00:06]: кстати, да! ща, я подумаю немного Daniel Podolsky, [03 Apr 2017 00:07]: но, похоже, все получится

Denis
02.04.2017
21:23:33
Интересное решение )

Но кардинально другой же подход

Daniel
02.04.2017
21:24:18
да

LexsZero
02.04.2017
21:24:24
А то может там в этой ошибке собирается едрить данных в структуру. Мы же не знаем
но это же еррор, он чистый. я тоже всегда ставлю поинтер ресивер по максимуму, где это имеет смысл.

Denis
02.04.2017
21:24:30
все равно что map[string]int

Daniel
02.04.2017
21:24:31
я мог бы и сообразить, но затупил

Daniel
02.04.2017
21:24:57
другая

но - эквивалентная

LexsZero
02.04.2017
21:25:18
не совсем

Мерлин
02.04.2017
21:25:31
Но кардинально другой же подход
Если не нужно обходить кусок дерева, то по условиям задачи (быстро проверить наличие пути) вполне подходит

Google
Serge
03.04.2017
05:39:38
andlabs/ui: Platform-native GUI library for Go. https://github.com/andlabs/ui

LexsZero
03.04.2017
06:26:56
а что там за блобы в репе?

other Unixes: cgo, GTK+ 3.10 and newer

ну блядь

выкидывайте.

Никита
03.04.2017
07:04:52
Доброе утро Ребят, у меня вопрос касательно тестов Мокаете ли вы бд, если таковая в проекте используется, или при запуске тестов поднимаете тестовую базу в той же субд что и боевая, и после каждого теста очищаете таблицы? Вариант с тестовой базой кажется довольно топорным и простым решением, но как то получается излишне много...эм..инфраструктурного кода. вроде б в гоферской среде принято делать "тесты на месте". ну, скажем, условно feed_controllers.go - test_feed_controllers.go. но столкнулся с тем, что при каждом тесте прописывать все моки..не то чтобы трудно, но это сказывается на читаемости теста

Никита
03.04.2017
07:19:47
А нельзя импортнуть пакет с моками, который их в init() поднимет?
не совсем тебя понял. для каждого теста ж мок может быть свой? ну то есть, глобально получить sql.Db и отправить его в контроллер не проблема я сейчас присматриваюсь к этой либе https://github.com/DATA-DOG/go-sqlmock и вроде все канонично - описываешь ожидания от моков. но как то хардкорно получается слишком

*глобально просто фигура речи, я не имел в виду какой то глобальный контекст

на проекте еще Gorm используется. Возможно стоит пойти с другой стороны и мокапить сам горм.. очень хотелось узнать, кто как такие проблемы решает

Alexey
03.04.2017
07:32:49
Я тестовую базу создаю прост))0)

Либо мокаю свой враппер к gorm/sql/..., который принимает обычные параметры к методам и отдаёт структуры, но всё равно там уж очень много кода получается :-/ Вангую срачик про unit-тесты vs функциональные.

Vadim
03.04.2017
07:35:18
не надо срачик, надо их вместе, а не vs :)

Никита
03.04.2017
07:37:32
Я тестовую базу создаю прост))0)
а потом транкейтишь все таблицы? или как то заморачиваешься с транзакциями?

Alexey
03.04.2017
07:38:48
а потом транкейтишь все таблицы? или как то заморачиваешься с транзакциями?
Дропаю всё. В Постгресе есть что-то типа Drop schema public, меня устраивает

Никита
03.04.2017
07:40:06
Дропаю всё. В Постгресе есть что-то типа Drop schema public, меня устраивает
т.е. дропаешь все таблицы после теста? а перед перед каждым тестом накатываешь миграции?

Alexey
03.04.2017
07:40:37
По хорошему, конечно, надо мокать, но когда у тебя приложение просто прослойка между HTTP и базой - то больше особо ничего не надо, чем проверять, что в базе поменялось то, что надо, и что вернулось всё то, что надо.

Страница 583 из 1674