
Janserik
17.07.2018
13:07:28
ну это естественно!

/dev/null
17.07.2018
13:07:32
Потом написать несколько своих роутеров... и ты готов)

Janserik
17.07.2018
13:09:53

Google

/dev/null
17.07.2018
13:12:12

Aleksandr
17.07.2018
13:44:31
можно

Kirill
17.07.2018
13:47:52
Разрешаем, конечно
?

Aleksandr
17.07.2018
14:00:10
https://goo.gl/9W16QB

GoodMoodDealler
17.07.2018
14:30:31
Срочно нужна помощь
Как удалить историю комитов с гитхаба

Jentry
17.07.2018
14:31:32

Tigran
17.07.2018
14:31:56
да не, скорее всего креденшиалы запалил

Aleksandr
17.07.2018
14:32:00

GoodMoodDealler
17.07.2018
14:32:34

Tigran
17.07.2018
14:33:15
?

Vladimir ?
17.07.2018
14:35:50
git commit --amend
git push -f

Google

Aleksandr
17.07.2018
14:38:32
это ты искал ответ на вопрос

Dmitriy
17.07.2018
15:22:51
go func(prefix string) {
defer wg.Done()
q := &storage.Query{Versions:false, Delimiter:"/", Prefix: prefix}
it = scl.Bucket(bucketName).Objects(ctx, q)
for {
attrs, err := it.Next()
if err == iterator.Done {
break
}
fmt.Println(attrs.Prefix)
}
}(prefix)
не могу понять почему мне возвращает
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x58 pc=0x142e6a5]
(((

Slava
17.07.2018
15:23:41
это на какой строчке?
подозревая что в fmt.Println(attrs.Prefix)

Dmitriy
17.07.2018
15:24:05
это если внутри рутини у меня for отрабатывает
for {
attrs, err := it.Next()
if err == iterator.Done {
break
}

Slava
17.07.2018
15:24:48
ошибка на какой строчке возникает?

Dmitriy
17.07.2018
15:26:24
стектрейс говорит что в it.Next
возможно гугловский иттератор не умеет работать с рутинами (

Aid
17.07.2018
15:27:07
Может проверку done выше двинуть?

Slava
17.07.2018
15:27:38
горутины тут вообще не причём
ошибка у вас возникает потому что вы пытаетесь разыменовывать nil
если на строке it.Next(), значит it у вас nil
проверьте что у вас в it

Dmitriy
17.07.2018
15:31:42
добро. спасибо.
идея просто каждый элемент слайса в рутину запустить. может коряво написал
for _, prefix := range prefixes {
wg.Add(1)
go func(prefix string) {
defer wg.Done()
q := &storage.Query{Versions:false, Delimiter:"/", Prefix: prefix}
it = scl.Bucket(bucketName).Objects(ctx, q)
fmt.Println(prefix)
fmt.Println(it)
for {
attrs, err := it.Next()
if err == iterator.Done {
break
}
fmt.Println(attrs.Prefix)
}
}(prefix)
}
идея так была сделать

Hokusai
17.07.2018
15:35:06
Кстати кто еще сталкивался с причудами итерации над массивом и передачи поинтера на элемент в горутину?

Google

Anton
17.07.2018
15:48:14
всем ?? может кто сталкивался: указываю тэг json:"name,omitempty" для вложенного struct'а (важная часть — omitempty), этому вложенному стракту переопределяю метод MarshalJSON и этот метод иногда возвращает пустую строку. и в результате omitempty игнорируется, как-то так:
type Something struct {
Name TranslatedString `json:"name,omitempty"`
}
type TranslatedString struct {
lang string
Ru string `json:"ru,omitempty"`
En string `json:"en,omitempty"`
Cn string `json:"cn,omitempty"`
}
func (s *TranslatedString) MarshalJSON() ([]byte, error) {
var str string
switch s.lang {
case "ru":
str = s.Ru
case "cn":
str = s.Cn
}
if str == "" {
str = s.En
}
return json.Marshal(str)
}
в результате в json'е пустая строка (вместо отсутствия поля вообще):
{
"name": ""
}

Aleksandr
17.07.2018
16:12:24
type Something struct {
Name *TranslatedString `json:"name,omitempty"`
}
если так переделать, то Name будет nil, и name опустится из json

Anton
17.07.2018
16:13:57
@zelenin я правда переделал уже, потому что понял, что будет сложно при работе с API (клиентам надо показать просто строку, а админам json со всеми полями). вот такой нормальный подход к "переопределению" полей для разных вариантов представления одних и тех же структур? https://gist.github.com/egorovli/41c1e94c370667f96321f12c65424783

Aleksandr
17.07.2018
16:31:32
вроде норм

Anton
17.07.2018
16:33:27
ок, спс ?

Человек
17.07.2018
17:25:16
Здравствуйте, кто может подсказать где и какими способами можно хранить большие объемы данных кроме БД. Есть боты примерно несколько тысяч/десятков тысяч, нужно хранить данные, комманды и т.д причем данные обновляются каждый день по несколько раз, а БД на более чем 200 ГБ ооочень дорогие.

Kirill
17.07.2018
17:25:56

many-faced
17.07.2018
17:25:58

Человек
17.07.2018
17:26:38

many-faced
17.07.2018
17:26:54

Kirill
17.07.2018
17:27:06

Человек
17.07.2018
17:27:38

Aleksandr
17.07.2018
17:27:40
ботовод-любитель
готовит апокалипсис, а пока собирает данные с компов из сетки

Kirill
17.07.2018
17:28:23
орно звучит
не хочешь БД - храни на диске

Google

Kirill
17.07.2018
17:29:15
но потом всё равно родишь БД
когда соберешь все грабли в округе

Aleksandr
17.07.2018
17:30:47
мне представляется, что человек с тысячами ботов на руках, может найти пару тысяч в месяц на сервак с парой ТБ на борту
иначе зачем оно все нужно?

Admin
ERROR: S client not available

Kirill
17.07.2018
17:31:20
дык я и говорю
берешь диски
хранишь на них данные
профит

Aleksandr
17.07.2018
17:31:42
угу
а он говорит 200 гб дорого
ну я тоггда не знаю

Kirill
17.07.2018
17:32:07

Aleksandr
17.07.2018
17:32:15
я нет)

Человек
17.07.2018
17:32:53

Kirill
17.07.2018
17:33:30
я нет)
Дуров сто лет назад после доклада отвечает на вопрос:
— Как вы храните фотографии?
— На дисках
а потом появилась kdb, стало ясно, что вообще никто не шутил тогда

Daniel
17.07.2018
17:36:33
они не парятся продалбывать данные
сдох диск - да и хер с ним

Den
17.07.2018
17:36:57
есть структура, к которой обращаются из разных горутин. есть сеттер, который принимает данные для добавления в эту стрктуру. в аргументах сеттера НУЖНО принимать значения, а не указатели?
иначе если я буду принимать указатели, то за этой функцией кто то может изменить значение по адресу и тогда все поедет
логика правильная или я что то не догоняю?

Aleksandr
17.07.2018
17:37:17

Google

Den
17.07.2018
17:37:30
внутри стркутруы они юзаются

Daniel
17.07.2018
17:37:32
не, дело не в мьютексах
да, в структуру надо складывать копии
а принимать можно что понравится

Человек
17.07.2018
17:38:13
По емейлу буду данные скидывать

Den
17.07.2018
17:38:56
т.е. если после того как сеттер отработает, из вне сеттера кто то поменяет значение по адресу то мьютекс внутри структуры не спасет. и тогда я хз че будет. че будет?

Kirill
17.07.2018
17:39:23

Человек
17.07.2018
17:39:35

Aleksandr
17.07.2018
17:40:10

Kirill
17.07.2018
17:40:31
слов у меня нет

Den
17.07.2018
17:40:51

Drul_cyka
17.07.2018
17:44:32
Как установить MaxRequestBodySize в gramework? В чистом fasthttp, я ставил это в fasthttp.Server, а тут как-то непонятно.

Kirill
17.07.2018
17:46:17
ща запушу, крч

Aleksandr
17.07.2018
17:48:26
привет
второй раз спрашивает. никакого саппорта не оказываешь