Konstantin
Всем привет. подскажите какой нибудь минималистичный фреймворк для тестирования rest?
restit попадался
Fastumkruk
Fastumkruk
Daniel
а?!
Daniel
это как это она будет снижена?
Maxim
Chebyrash
Kirill
Daniel
Бенчмарки же ж
и что бенчмарки? как это влияет на интегральную производительность
Maxim
Kirill
Тем более в РФ дороже сидеть
Fastumkruk
Kirill
????
Сколько стоит твой сервер для бота?
Kirill
(Если не гуглить самые дешёвые виртуалки РФ)
Kirill
Вот - рили
Alexander
но есть хак, купить маломощный сервак в РФ, поднять там прокси и бегать через него
Maxim
Причём тут Россия?
При том что в россии обычно наблюдаются некоторые проблемы с соединением к API
Kirill
Chebyrash
Alexander
А мы выше о телеге
ну ты написал что "Тем более в РФ дороже сидеть" - это в принципе так, безотносительно бот для телеги или любой другой сервис. но иногда надо сидеть в россии.
Maxim
Есть какие-то прям обязательства хостить бота только на российских адресах?
Maxim
Если подразумевается работа бота для всех, то логично подыскать площадку, в которой для подъёма бота не требуется танцев с бубном
Maxim
Для локального тестирования - поднимай прокси у себя. В проде логика проксирования, наиболее вероятно, не потребуется
Alexander
а есть прокси, который можно цеплять к процессу. ща найду
Alexander
я так лечил приклад, который не умел в прокси.
Alexander
proxychains - вот эта штука.
Maxim
Кстати да, помню какую-то тулзовину, через которую пропускаются команды для запуска чего-нибудь сквозь прокси
Kirill
Kirill
Kirill
Я как раз говорил о телеге, где невыгодно сидеть в РФ
Kirill
У нас тоже сайты должны в РБ хоститься, если хостинг не бесплатный, ну вы понимаете)
Fastumkruk
Anonymous
Blockchain Weekly
Meetup #5!
1 июня , начало в 18:00 , Казань , ул. Подлужная 17
Еще немного и криптовалюты выйдут из серой зоны - на рассмотрение в нижнюю палату парламента поступил законопроект "О цифровых финансовых активах".🔥
Будут ли токены и криптовалюты считаться имуществом, а майнинг предпринимательской деятельностью? Где и как можно будет обменять рубли на криптомонеты в законной форме? Как легально провести ICO в России?
На все эти вопросы ответит гость нашего следующего митапа, юрист в составе рабочей группы Российской Ассоциации Криптовалют и Блокчейна (РАКИБ) — Галиуллин Рустем!
https://blockchainclub.timepad.ru/event/735160/
Kirill
Aleksey
Daniel
а?!
Мерль
Aleksey
А что вы прокси и прокси для телеги? Есть же vpn, там можно пустить трафик на телеграм сервера только через него
Kirill
Fastumkruk
if update.CallbackQuery != nil {
fmt.Println(update.CallbackQuery.Data)//Выполняет и потом крашиться на сравнении
}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x58 pc=0x6198c2]
Вопрос, что ему не нравиться?
Fastumkruk
if update.Message != nil {
fmt.Println("message", update.Message.Text)
}
Аналогичный код, но не крашиться
Fastumkruk
Ilya
Ilya
то есть, сначала выполняется код внутри ифа, а потом код самого ифа?
Fastumkruk
Ilya
это значит "да" или значит "нет"? :)
Cat
😐
.Data ссылается на невалидную память?
Cat
что печатается в println(.Data)?
Cat
адрес?
Fastumkruk
Разобрался в чем дело. Сообщения и инлайн сообщения нужно обрабатывать в разных ифах, тогда краша нету.
Aleksandr
update.CallbackQuery - Пусто тут)
Aleksandr
switch {
case update.Message != nil:
msg := update.Message
// в этом кейсе работаете только с msg
case update.CallbackQuery != nil:
call := update.CallbackQuery
// в этом кейсе работаете только с call
}
Aleksandr
вчера тебе на это указывали
heavycharged
нужен совет:
1. читаю файл, и пишу в канал задания для воркеров
2. crawler ходят по REST API и тело HTTP ответа записывают в канал, где работают парсеры.
3. парсеры парсят тело ответа, и пишут во writer, который записывает в файл.
вопрос вот в чем: после того как я прочел файл, я закрываю канал с заданиями, crawler завершают свою работу, делаю wg.Wait() и закрываю канал в который писали кравлеры, и из которого читали парсеры (т.е. они тоже завершат свою работу).
И вот тут затык, как мне закрыть канал, в который эти парсеры пишут? Потому что если его не закрыть, то врайтер будет ждать результаты для записи в файл. Вешать ещё один WaitGroup?
heavycharged
сорян за сумбур
heavycharged
можно рулить через context.Context и for { select {
heavycharged
а ещё варианты какие-то есть? может есть вариант проще?
Daniel
нету
Daniel
и не надо
Altay unstppbl
Объединить crawler с парсером
Andrey
нужен совет:
1. читаю файл, и пишу в канал задания для воркеров
2. crawler ходят по REST API и тело HTTP ответа записывают в канал, где работают парсеры.
3. парсеры парсят тело ответа, и пишут во writer, который записывает в файл.
вопрос вот в чем: после того как я прочел файл, я закрываю канал с заданиями, crawler завершают свою работу, делаю wg.Wait() и закрываю канал в который писали кравлеры, и из которого читали парсеры (т.е. они тоже завершат свою работу).
И вот тут затык, как мне закрыть канал, в который эти парсеры пишут? Потому что если его не закрыть, то врайтер будет ждать результаты для записи в файл. Вешать ещё один WaitGroup?
1) канал нужно закрывать на стороне писателя
2) если писателей много, то нужно ждать их и закрывать после них.
Andrey
У вас несколько груп писателей, поэтому на каждую группу нужен свой waitgroup. Облегчает задачу то, что у вас определён порядок работы, то есть первыми завершаются краулеры, значит сначала надо ждать их, потом закрывать канал куда они пишут, потом ждать парсеры, и закрывать их канал
Andrey
Если бы порядок не был определён, то пришлось бы порождать отдельные горутины с waitgroup
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
Завести калал done := chan struct {}
Pawel
Использует кто нибудь graph-gophers/graphql-go вместо graphql-go/graphql ?
Pawel
@Aleksandr Zelenin, ты вроде в теме, какую либу юзаешь для графкуэль?
heavycharged
всем спасибо
Aleksandr