@gogolang

Страница 997 из 1630
Denis
12.04.2018
11:26:01
в конструктор я имел в виду. DI как тебе выше говорили

а зачем везде ? сделай пакет который работает с бд и коннект будет нужен только в этом пакете. и дергай функции из этого пакета.
имхо коннект лучше отдельно делать. иначе тесты неудобно будет писать: все кто дергает функции из этого пакета, автоматически будут дергать реальную базу

хотя забей, наверное и так можно

Vladislav
12.04.2018
11:29:50
type Some struct { data map[string]string } func (s *Some) handler(http.Reqquest ...) { // мапа доступна через s.data }
Спасибо, огромное. Только сегодня начал вникать в методы структур.

Google
Marlik
12.04.2018
11:31:23
делаешь структуру handler в ней свойство db
То есть по факту у нас будет глобальная структура, внутри неё коннект лежит, и у структуры методы? Я хоть правильно понимаю?

Александр
12.04.2018
11:31:41
type handler { connect *db.Connect } func (h *handler) Any(w http.ResponseWriter, r *http.Request) { } ------- handler := &handler{ connect: db } http.Handle("/anyAction/", handler.Any) err = http.ListenAndServe(":8080", nil)

@MarlikAlmighty

Marlik
12.04.2018
11:36:45
Я понял, спасибо, но не пойму что это даёт, какой профит?

Александр
12.04.2018
11:36:59
ну никаких глобальных коннектов

вам скорее всего потребуется скинуть еще что-то

тут легко можно нагружать зависимости далее

только надо помнить что это многопоточное программирование

если вы скормите туда скажем type handler { connect *db.Connect myCount int }

и в handler.Any будете делать h.myCount++ то это будет гонка

стандартный коннект имеет пул для этой цели

вам же надо будет юзать мьютексы или sync/atomic

Google
Marlik
12.04.2018
11:48:36
Чот как-то сложновато...

Mykyta
12.04.2018
11:49:05
Я понял, спасибо, но не пойму что это даёт, какой профит?
Если в жизни написать хоть один юнит-тест, то становится просто исчерпывающе понятно зачем и почему нельзя хранить состояние в глобальных переменных

Marlik
12.04.2018
11:49:05
Не глобальный коннект и без этого можно соорудить...

Если в жизни написать хоть один юнит-тест, то становится просто исчерпывающе понятно зачем и почему нельзя хранить состояние в глобальных переменных
Не понимаю, один хер. Я ведь не про многопоточное программирование, а типа... for { anyfunc1() anyfunc2() } То есть я заранее знаю, как будет работать коннект и все функции, и в какой последовательности... что даст юнит тест не понимаю... хотя надо почитать что это ))

Mykyta
12.04.2018
11:52:47
Как вы вообще работу находите не умея писать юнит-тесты?

Marlik
12.04.2018
11:53:12
А я безработный и мне ндра))

Aleksandr
12.04.2018
11:54:26
Как вы вообще работу находите не умея писать юнит-тесты?
в очень редких кейсах нахождение работы связано с написанием юнит-тестов. в 80% контор тебя даже не спросят об этом, в 15 спросят и обучат если надо

Denys
12.04.2018
11:54:33
лучше все работать на полный день, пол дня

и с дома

считай безработный

но еще и платят

Vyacheslav
12.04.2018
11:57:04
небольшой опрос, статистики и великой справедливости ради есть проект у проекта есть конфиги, база там, бакет, редиса адрес, рэббита там, вот этого всего есть окружения - тест там, прод, препрод, локал разрабов, и тд на какое окружение всё должно быть настроено "по умолчанию", конфиги какого окружения должны лежать в репах?

Denis
12.04.2018
11:58:15
https://12factor.net/ru/config

Vyacheslav
12.04.2018
12:00:25
отлично

Pawel
12.04.2018
12:02:50
Лок записи и две операции — это будет самый переносимый вариант
Ограничение работает, Это я по тупости запускал скрипт в sqlite, не включив PRAGMA foreign_keys = ON;

The
12.04.2018
12:28:00
господа, а atomic работает с кастомными типами? например, LoadUint32? type MyType uint32

или надо как-то через unsafe мутить?

Daniel
12.04.2018
12:29:47
через atomic.Value

The
12.04.2018
12:40:57
через atomic.Value
спс, но я так понимаю тип должен быть не мой кастомный, а именно atomic.Value?

ну точнее, базовый тип не может быть, с обычным присваиванием, как-то так: state = idle

Google
Daniel
12.04.2018
12:42:03
коллега, ну почитайте документацию, а?

The
12.04.2018
12:46:47
ок, я понял)

Vladislav
12.04.2018
13:13:14
type Some struct { data map[string]string } func (s *Some) handler(http.Reqquest ...) { // мапа доступна через s.data }
А после написания подобного метода структуры вызывать её следует так http.HandleFunc("/", s.handler) ?

Denis
12.04.2018
14:08:35
да

Igor
12.04.2018
14:28:18
Привет! Первый день на голанге :) подскажите ,как на локали такие вещи разрабатывать? e := echo.New() e.GET("ws://localhost/ws", hello) по такому урлу e.GET("ws://localhost/ws", hello) сервер не работает а по такому e.GET("/ws", hello) работает

Алексей
12.04.2018
14:31:39
Из этих 3х книг: 1. Батчер, Фарина - Go на практике 2. Керниган, Донован - Язык программирования Go 3. Марк Саммерфильд - Программирование на языке Go. Разработка приложений XXI что посоветуете почитать новичку в Го, но не новичку в программировании?

mstrVLT
12.04.2018
14:33:02
Начни уже с написания чего то реального - бота для телеги например

mstrVLT
12.04.2018
14:33:47
не успеет ?
успеет - до 00 часов еще есть время

Igor
12.04.2018
14:38:04
А зачем вам e.GET("ws://localhost/ws", hello)
js требует var socket = new WebSocket("ws://localhost/ws"); Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. 'localhost' is not allowed.

Alexander
12.04.2018
14:39:37
Из этих 3х книг: 1. Батчер, Фарина - Go на практике 2. Керниган, Донован - Язык программирования Go 3. Марк Саммерфильд - Программирование на языке Go. Разработка приложений XXI что посоветуете почитать новичку в Го, но не новичку в программировании?
если есть опыт, имхо, пройти тур и начинать писать что-то. обычно все вопросы решаются запросом в гугл "how to <do something> in golang". основная проблема новичков именно в программировании - не могут правильно вопрос задать и в поисковик ключевые слова вбить

Igor
12.04.2018
14:45:23
А при чем тогда echo?
ххххмммм. это я из примера скачал. теперь вот понимаю что echo лишний :)

Andrey
12.04.2018
15:22:07
Ребят, а возможно ли встроить защиту от отладчика в go приложение? И, если да, скиньте, плиз, линк почитать.

Google
Andrew
12.04.2018
15:29:01
upx -d
-d - это же взлом защиты

Илья
12.04.2018
15:32:47
Ребят, а возможно ли встроить защиту от отладчика в go приложение? И, если да, скиньте, плиз, линк почитать.
не знаю, что вы подразумеваете под защитой, но можно убрать debug символы и пережать бинарь

https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/

Zver
12.04.2018
15:42:33
Кому очень надо все равно взломают.

Aleksandr
12.04.2018
15:45:34
Zver
12.04.2018
15:46:38
Не разберутся в той каше, что генерит гоу компилер. ?

Zver
12.04.2018
15:48:05
Вообще взломать все можно.

Andrew
12.04.2018
15:48:35
Вообще взломать все можно.
Истина. Поэтому нужно писать свой код так мерзко, чтобы прочесть его смог только ты сам.

Aleksandr
12.04.2018
15:49:08
Вообще взломать все можно.
но не всем нужно. речь о стоимости взлома, а не о возможности

Zver
12.04.2018
15:54:26
но не всем нужно. речь о стоимости взлома, а не о возможности
Ну так это зависит и от кого защищаться будет. Если просто от заказчика, то там может достаточно и отладочную информацию удалить.

Илья
12.04.2018
15:56:37
gdb вроде и так может голову сломать, когда под рукой рантайм сменит тред

Zver
12.04.2018
15:59:11
Построить всю логику на рефлексии с интерфейсами, а все результаты передавать через каналы и пусть разбираются. ?

Andrey
12.04.2018
16:11:58
А под линем или виндой?
Линь, конкретнее под линь под арм

Димка
12.04.2018
16:12:48
Zver
12.04.2018
16:18:25
-d - это же взлом защиты
Когда-то под виндой можно было какой-то байт или группу поменять, если память не изменяет, и обратно не распаковывал, хотя программа запускалась.

Google
Makkusu
12.04.2018
17:20:40
Добрый вечер. Подскажите в чем проблема при работе с либой xlsx от tealeg. Данные на вход подаю нормальные без дубликатов. Открываю файл и в цикле перебираю sheet. Перебираю массив с данными во вложенном цикле и создаю каждый раз новую строку и ячейки. В итоге он мне id пишет неверный. Попробовал записать в новый файл. Всё повторяется. Пишет все данные верно кроме первой ячейки id. Код примерно такой file = xlsx.NewFile() sheet, err = file.AddSheet("Table") functions.Check(err) for _, dataElem := range data { row = sheet.AddRow() cell = row.AddCell() cell.Value = dataElem.Id . . . // Добавляю другие ячейки }

id дублируются из неизвестных мест

Andrey
12.04.2018
17:24:39
пишите dataElem.Id в лог рядом с присваиванием. Это я к тому, что dataElem в цикле переиспользуется, и если там ссылки в структуре, то данные ячейки могут затираться. Как вариант, можно итерировать по индексу for i, _ := range data { ... cell.Value = data[i].Id

Makkusu
12.04.2018
17:43:42
При сортировке в LibreOffice сортировал только одну колонку x)

а дубляж из за категорий

Makkusu
12.04.2018
18:56:51
for _, x := range data{ for i, y := range data{ if x.Id == y.Id { data = data(data[:i], data[i+1:]...) } } } Как подобное удаление дубликатов можно организовать?

Vladislav
12.04.2018
19:07:46
for _, x := range data{ for i, y := range data{ if x.Id == y.Id { data = data(data[:i], data[i+1:]...) } } } Как подобное удаление дубликатов можно организовать?
не допускать их появления, возможно. Сделать map[Id]type, заполнить, собрать массив.

Vladislav
12.04.2018
19:09:38
Makkusu
12.04.2018
19:28:43
И что?
Спасибо за мысль под другим углом) У меня в слайсы структур собираются данные из парсера (goquery). В одном из циклов EachWithBreak я делаю цикл по уже записанным продуктам и выхожу из цикла, если id совпадают. Надеюсь это не скажется на производительности в 10000 элементов.

Множество циклов меня пугает

Страница 997 из 1630