@gogolang

Страница 1118 из 1630
Slava
02.06.2018
09:26:16
извини, я тупой и не пойму зачем этот пакет нужен. для поддержки структур как определения аргументов для любой библиотеки что не поддерживает структуры ? а зачем если можно взять библиотеку что поддерживает структуры ?
Например у нас уже используется flags стандартный для разных библиотек внутренних. А для своего бинарника я хочу через структуры описать флаги и мне нельзя брать левый парсер

Dmitry
02.06.2018
09:28:06
Например у нас уже используется flags стандартный для разных библиотек внутренних. А для своего бинарника я хочу через структуры описать флаги и мне нельзя брать левый парсер
окей я понял. только еще два вопроса : доступ к флагам из внутренних библиотек - звучит как убогая архитектура, не ? и второй, а sflags не левый парсер ?

Slava
02.06.2018
09:29:54
Почему убогая?

Fastumkruk ✅
02.06.2018
09:30:31
InlineQuery это результаты ленты поиска, CallbackQuery это события кнопок
Отвечаю по update.CallBackQuery.id , все равно ответ кнопки не приходит.

Google
Dmitry
02.06.2018
09:31:44
как результат этой связаности ты не можешь свободно заменить парсер аргументов, не ?

Slava
02.06.2018
09:33:51
а зачем мне менять парсер аргументов, если я пользуюсь всей инфраструктурой внутренней и библиотеками?

Dmitry
02.06.2018
09:36:12
а зачем мне менять парсер аргументов, если я пользуюсь всей инфраструктурой внутренней и библиотеками?
ну вижу что мне не убедить вас что сильная связанность это плохо. окей, каждый имеет право на свое мнение

ну и sflags не парсит command line, а только генерирует набор флагов по структуре, парсит уже сам flag
но он левый пакет точно также как и другой левый пакет. кто гарантирует что он генерит правильный набор флагов ?

Slava
02.06.2018
09:38:03
сам пакет и гарантирует, но клиент тоже может проверять, конечно

Dmitry
02.06.2018
09:39:35
сам пакет и гарантирует, но клиент тоже может проверять, конечно
я просто пытаюсь понять чем этот пакет sflags лучше любого другого левого пакета , который также предоставляет гарантии посредством тестов ?

Slava
02.06.2018
09:39:57
ну вижу что мне не убедить вас что сильная связанность это плохо. окей, каждый имеет право на свое мнение
есть теория, а есть практика. К примеру, в теории важно нормализировать базу, а на практике для оптимизации её денормализируют

Daniel
02.06.2018
09:39:57
коллега

Dmitry
02.06.2018
09:40:06
почему другой пакет это левый, а вот sflags - родной и правильный?

Daniel
02.06.2018
09:40:30
мы все ответы, какие были у нас, вам выдали

Google
Roman
02.06.2018
09:40:46
https://flaviocopes.com/golang-does-not-support-indexing/ может кому будте полезно, угробил минут 15 на разбор почему после переписания на указателях перестало работать

Dmitry
02.06.2018
09:40:46
Daniel
02.06.2018
09:41:00
теперь вы можете сами решить, лучше ли он

Stanislav
02.06.2018
09:41:33
ну вижу что мне не убедить вас что сильная связанность это плохо. окей, каждый имеет право на свое мнение
а как вы в Go хотите добиться слабой связности? парсер флагов в микросервис? :D

Dmitry
02.06.2018
09:41:35
теперь вы можете сами решить, лучше ли он
у меня еще осталось пара вопросов

Slava
02.06.2018
09:41:35
да, я в курсе что идеал не достижим. но стремиться то надо, а не написали как смогли
надо код писать и продукты делать, а не стремиться куда-то =)

Slava
02.06.2018
09:43:55
только так можно заработать миллиарды ^_^

Dmitry
02.06.2018
09:45:30
а как вы в Go хотите добиться слабой связности? парсер флагов в микросервис? :D
я вас не пойму. причем тут микросервис. я говорю о связи между сущностями в одном выполняемом файле.

Stanislav
02.06.2018
09:46:51
я вас не пойму. причем тут микросервис. я говорю о связи между сущностями в одном выполняемом файле.
ну вот у вас есть пакет config, который хочет путь до конфига из CLI. Есть пакет http, который хочет адрес и порт для прослушки из CLI. Ваши действия?

Daniel
02.06.2018
09:56:22
передать, конечно

не надо общий конфиг втаскивать в кишки

но!

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

Dmitry
02.06.2018
10:04:09
правильно организованный конфиг будет состоять из структур, которые как раз и можно будет отправить в сервис
и структуры не привязаны к конкретному парсеру. заполнять их через sflags или любой другой парсер, не имеет значения

Daniel
02.06.2018
10:04:42
Возможно

А, возможно, удобно указать инфу для парсера тегами

Kirill
02.06.2018
10:34:47
А, возможно, удобно указать инфу для парсера тегами
А какой инфы недостаточно при известном имени поля и типе?

Daniel
02.06.2018
10:35:15
имя параметра, описание параметра

Google
Kirill
02.06.2018
10:35:19
Шорткат? Так если их на самом нижнем уровне задавать, могут со временем появиться конфликты

Я, конечно, не настоящий сварщик, а маску я на стройке нашёл, и сверхкрупные cli, возможно, и не делал, но всё же - смотря какую инфу там писать

Описание-то можно из коммента вычитать при желании

Maxim
02.06.2018
11:00:14
Отвечаю по update.CallBackQuery.id , все равно ответ кнопки не приходит.
Дайте мне пару часов проснуться, поесть и повторить то что вы делаете для отладки

Maxim
02.06.2018
12:50:07
хорошо
Не знаю в чём у вас проблема. У меня кнопка спокойно тречится после клика

func main() { bot, err := tg.New(accessToken) errCheck(err) for update := range bot.NewLongPollingChannel(nil) { switch update.Type() { case tg.UpdateMessage: upd := update.Message dlog.D(upd) if !bot.IsCommandToMe(upd) { continue } msg := tg.NewMessage(upd.Chat.ID, "hello world") msg.ReplyMarkup = tg.NewInlineKeyboardMarkup( tg.NewInlineKeyboardRow( tg.NewInlineKeyboardButton("click me!", "super secret"), ), ) bot.SendMessage(msg) case tg.UpdateCallbackQuery: upd := update.CallbackQuery dlog.D(upd) default: dlog.D(update) } } }

func main() { bot, err := tg.New(accessToken) errCheck(err) for update := range bot.NewLongPollingChannel(nil) { switch update.Type() { case tg.UpdateMessage: upd := update.Message dlog.D(upd) if !bot.IsCommandToMe(upd) { continue } msg := tg.NewMessage(upd.Chat.ID, "hello world") msg.ReplyMarkup = tg.NewInlineKeyboardMarkup( tg.NewInlineKeyboardRow( tg.NewInlineKeyboardButton("click me!", "super secret"), ), ) bot.SendMessage(msg) case tg.UpdateCallbackQuery: upd := update.CallbackQuery dlog.D(upd) default: dlog.D(update) } } }
ID: (string) (len=18) "1234567890", InlineMessageID: (string) "", ChatInstance: (string) (len=20) "-1234567890", Data: (string) (len=12) "super secret", GameShortName: (string) "", From: (*telegram.User)(0xc4201a13b0)({ ID: (int) 1234567890, IsBot: (bool) false, FirstName: (string) (len=5) "Maxim", LastName: (string) (len=7) "Lebedev", Username: (string) (len=6) "toby3d", LanguageCode: (string) (len=2) "ru" }), Message: (*telegram.Message)(0xc4203e0380)({ ID: (int) 1488, ForwardFromMessageID: (int) 0, From: (*telegram.User)(0xc4201a1400)({ ID: (int) 1234567890, IsBot: (bool) true, FirstName: (string) (len=32) "Давай до свидания", LastName: (string) "", Username: (string) (len=12) "toby3d_robot", LanguageCode: (string) "" }), ForwardFrom: (*telegram.User)(<nil>), LeftChatMember: (*telegram.User)(<nil>), Date: (int64) 1527943720, ForwardDate: (int64) 0, EditDate: (int64) 0, MigrateToChatID: (int64) 0, MigrateFromChatID: (int64) 0, Chat: (*telegram.Chat)(0xc42029c960)({ ID: (int64) 1234567890, Type: (string) (len=7) "private", Title: (string) "", Username: (string) (len=6) "toby3d", FirstName: (string) (len=5) "Maxim", LastName: (string) (len=7) "Lebedev", Description: (string) "", InviteLink: (string) "", StickerSetName: (string) "", AllMembersAreAdministrators: (bool) false, CanSetStickerSet: (bool) false, Photo: (*telegram.ChatPhoto)(<nil>), PinnedMessage: (*telegram.Message)(<nil>) }), ...

И даже что-то делать могу на её основе: ... case tg.UpdateCallbackQuery: upd := update.CallbackQuery dlog.D(upd) ans := tg.NewAnswerCallbackQuery(upd.ID) ans.Text = "sosi pisos" bot.AnswerCallbackQuery(ans)

Более того, режим inline mode в папаботе не влияет на работу кнопок. Только на режим поиска в поле ввода

The
02.06.2018
17:52:28
Друзья, кто юзал либу tealeg/xlsx, можете подкинуть идей? Пишу в файл хидер (заголовок таблицы) - все ок. Начинаю писать ниже - и ничего не пишеться. Что за хрень может быть? Кто-то может сталкивался?

The
02.06.2018
17:54:40
Причем есть метод WriteHeader(), в нем пишется хидер, есть метод Save() который сохраняет таблицу, если в нем вызвать x.sheet.Cell(10, 2).Value = "TEST", то в таблицу запишет тест. а вот метод AddPosition у моей структуры вообще ничего не хочет писать. Дебагером ловлю брейкпойнты, все вызывается, значения все ок, но в тупую ничего не пишет.

The
02.06.2018
18:03:08
не, AddPosition это метод моей структурки, внутри которой есть *xlsx.File и *xlsx.Sheet

Я уже даже написал метод FillDemoData, и оттуда тоже ничего не пишет.

Dmitry
02.06.2018
18:05:13
1 вариант : ты пишешь не туда . 2 вариант: ты пишешь рано или поздно

3 вариант - это баг, но он маловероятен в репе с 2к звездочками

The
02.06.2018
18:08:36
да это мой ебак скорее всего, потому что: у меня есть 4 метода: 1. RegisterSuppliers([]string) - регистрирует поставщиков (шапка файла), тут все ок, они записываются 2. AddPosition(Sku) - записывает артикул в ячейку (отсюда ни одна запись не происходит) 3. AddDemoData() - написал для дебага, отсюда тоже ни одна запись не попадает 4. Save() - сохраняет файл, отсюда вся запись происходит нормально. Все методы определены через pointer reciever.

2 метод пробывал в тупую писать "TEST", ни в одну ячейку ничего не попало

Google
The
02.06.2018
18:09:15
асинхронщины тут нет

т.е., вариант 1: я пишу не туда. но как это может быть - ума не приложу.

func (x *XlsxWriter) AddPosition(sku Sku) error { for row := 0; row < 10; row++ { for col := 0; col < 100; col++ { x.sheet.Cell(row, col).Value = "test value" } } return nil }

вот в тупую итерируюсь по ячейкам и пишу везде один и тот же текст: "test value"

а вот файл: https://i.imgur.com/qKFsWhQ.png

а сейчас, ради прикола скопирую цикл в RegisterSuppliers

https://i.imgur.com/DRcrLqy.png

ну что за дичь то, а?

Admin
ERROR: S client not available

The
02.06.2018
18:15:38
func (x *XlsxWriter) RegisterSuppliers(suppliers []string) error { for row := 0; row < 10; row++ { for col := 0; col < 100; col++ { x.sheet.Cell(row, col).Value = "test value" } } return nil }

перенес цикл в метод Save(), видно даже что стили сохранились от RegisterSupplier(): https://i.imgur.com/cDDvZjw.png

Dmitry
02.06.2018
18:17:48
ну значит ищи между вызовами этих двух функций

Register и AddPosition

такое чувство что у тебя задвоился xlsxwriter где то

The
02.06.2018
18:20:54
вот смотри, три вызова, одинаковые до безобразия: 1. RegisterSupplier() - пишет в первый столбец 2. AddPosition() - во второй столбец 3. Save() - в третий столбец https://i.imgur.com/jDAGkdm.png

вот тестовый метод: https://pastebin.com/raw/wadr59se

Dmitry
02.06.2018
18:22:09
ну значит не в методах проблема а в данных что в них передаются

The
02.06.2018
18:22:33
ну как в данных-то? методы тупо одинаковые.

сам интерфейс, хз чем он может помочь правда: type ParsingResultWriter interface { RegisterSuppliers(suppliers []string) error AddPosition(sku Sku) error Save(name string) error }

я уже вышвырнул из методов всю логику, оставил тупо запись в разные столбцы, для дебага

Google
The
02.06.2018
18:23:45
блядь, я дебил

я же дергаю в тесте сохранение раньше

всем спасибо за помощь

Slava
02.06.2018
21:46:14
никто не хочет в посёлок программистов на поучиться программированию на свежем воздухе? http://hutorium.ru/

Alan
02.06.2018
21:48:38
Там написано, что для детей)

Slava
02.06.2018
21:48:47
а так же их родителей =)

Александр
02.06.2018
21:49:48
а можно я поеду и буду умничать с задней парты?

ну позязя

/me готовит плакаты "ООП для лохов" "вы не знаете на что подписались"

еще пару истории для "у костра" в стиле "1 ночь для выкладки и допила в прод" ?

Slava
02.06.2018
21:58:11
ну если не боишься опростоволоситься перед школьниками

а то дети умные нынче пошли

Александр
02.06.2018
22:11:59
стандартное заблуждение

Антон
02.06.2018
22:51:05
стандартное заблуждение
^прямое этому доказательство

Dmitry
02.06.2018
23:35:47
еще пару истории для "у костра" в стиле "1 ночь для выкладки и допила в прод" ?
мне вот интересно всегда. откуда такие дедлайны возникают ?

неужто менеджеры слова continous integration не знают ?

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