@dlangru

Страница 536 из 719
Denis
23.04.2018
09:51:06
т.е. ничего не теряем

Pavel
23.04.2018
09:54:19
@chebotarevp и уперся в такую проблему: call требует структуру которая невозможна - опциональные поля в ней нужны для конструирования запроса. Т.е. как сериализатор asdf ещё ничего, но как конструктор произвольных JSON - нет.
Вот с последним абзацем я на 146% согласен, сам натолкнулся на кучи проблем когда пытался сделать что-то кастомное, поэтому и пришлось приплести vibe json в проект параллельно.

Denis
23.04.2018
09:54:56
ну потому что он не конструктор таких объектов :)

Google
Denis
23.04.2018
09:55:38
Ок понял. Кажется что-то там было про optional поля
Допустим было. Кто даст гарантию что они поддерживают ровно так как оно надо будет телеграму в плане формата результирующего JSON?

сериализация != конструирование сообщения

Pavel
23.04.2018
09:56:28
ну поле в сериализованном json либо есть либо нет. Какой тут еще формат.

Dark
23.04.2018
09:57:09
ты о чём?
Дубликация

Denis
23.04.2018
09:57:28
Дубликация
хуекация ну ты понел

ну поле в сериализованном json либо есть либо нет. Какой тут еще формат.
а если надо "иногда есть а иногда нет"? (см. certificate)

Pavel
23.04.2018
09:59:04
Если ты в структуру записал сертификат - значит он есть и поле надо сериализовать. А если ты поле не трогал значит оно пустое и его сериализовать не надо.

Denis
23.04.2018
09:59:08
сериализации дишных структур такая функциональность не нужна

Pavel
23.04.2018
09:59:52
Не, это все одна структура обслуживает + либо nullable либо @optional

Denis
23.04.2018
10:00:40
стикеры забанены)

Pavel
23.04.2018
10:00:44
Короче все optional поля из спецификации API не должны сериализоваться если к ним не было обращения либо там лежит default значение

Google
Denis
23.04.2018
10:01:48
щитаю что Asdf не предназначен для конструирования JSON, а значит надо будет его выпилить со временем

Stanislav
23.04.2018
10:03:23
Pavel
23.04.2018
10:03:33
Думаю что надо просто null поля не сериализовать вот и все. В апи вроде нет таких случаев когда явно null посылается

Stanislav
23.04.2018
10:03:43
я когда свою либу для бота телеги писал все опциональные поля делал nullable

в обе стороны нормально работает

Pavel
23.04.2018
10:05:03
щитаю что Asdf не предназначен для конструирования JSON, а значит надо будет его выпилить со временем
Asdf это деталь имплементации и тебя не должно волновать как там внутри устроено. Должна быть возможность в любой момент поменять asdf на что то другое и пользователи библиотеки не должны ничего заметить

Такая вот инкапсуляция

Denis
23.04.2018
10:05:30
короч, многообразие документов JSON и D не пересекаются полностью

Pavel
23.04.2018
10:06:11
я когда свою либу для бота телеги писал все опциональные поля делал nullable
Просто в vibed nullable как раз дает обратный эффект - такие поля всегда сериализуются со значением null

Denis
23.04.2018
10:06:32
поэтому всегда есть шанс что что-то будет реализовано костылём

Pavel
23.04.2018
10:07:05
а если появятся?
Надо просто изучить какие возможности предлагают библиотеки, если не будет вариантов ну тогда выкидывать наверно.

Stanislav
23.04.2018
10:07:10
Просто в vibed nullable как раз дает обратный эффект - такие поля всегда сериализуются со значением null
ну я то как раз чисто для себя делал, а так понятно что какие то либы вообще могут не уметь работать с Nullable

Pavel
23.04.2018
10:08:20
поэтому всегда есть шанс что что-то будет реализовано костылём
Но я подчеркиваю что это просто не до конца имплементировано, никаких проблем с сериализацией в D я не вижу

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

Denis
23.04.2018
10:09:43
есть ещё одна засада. т.к. нам нужна не сериализация а конструирование то мы привязываемся к не всегда оптимальной структуре сериализируемого запроса. в телеге могут быть даже устаревшие поля и нам придётся с ними жить, если Update например будет по проекту таскаться

или даже не Update а структура запроса, там вероятнее появление таких полей

Stanislav
23.04.2018
10:10:55
было бы неплохо если бы телега как-нить версию api вела или по урлу можно было бы на разные стучаться типа /api/v1, /api/v200

и фиксировала бы изменения

Google
Stanislav
23.04.2018
10:12:32
где-то вроде так сделано было, но чет уже не припомню где )

а потом старые апи просто со временем помечаются как устаревшие и закрываются

Pavel
23.04.2018
10:13:48
было бы неплохо если бы телега как-нить версию api вела или по урлу можно было бы на разные стучаться типа /api/v1, /api/v200
Да в ней все сделано вот так квадратно-гнездовым способом, есть уже огромные мануалы с описанием как проектировать апи чтобы учесть все проблемы, но они решили пойти своим велосипедопутем и все шишки набивать с нуля самостоятельно.

Denis
23.04.2018
10:14:19
начать с того что вообще использован текстовый протокол

Stanislav
23.04.2018
10:15:49
ну http это в принципе текстовый протокол, даже если bson передавать по нему )

Denis
23.04.2018
10:17:23
нет, там же тело можно бинарное слать

Denis
23.04.2018
10:18:19
даже в первой версии можно

файлы аплоадятся бинарно

Stanislav
23.04.2018
10:19:26
хедеры все равно текстовые )

https://ru.wikipedia.org/wiki/HTTP/2
знаю, я про http/1.1 :) а так конеш ждем когда все переползут на http/2.0

Denis
23.04.2018
10:23:19
Pavel
23.04.2018
10:38:32
Посмотри вот эту ветку https://github.com/nexor/telega/pull/2/files#diff-e40a697166c006a3b50996397422bf86R1050

Я думал что уже смержил замену asdf на vibe json а оказывается нет. В этой ветке я переделал сериализацию в методе callMethod. Как раз из-за тех проблем что ты описываешь.

Из-за того что asdf мне не позволял нормально алгебраики сериализовать

Denis
23.04.2018
10:46:50
мляя а я уже тоже переделал

кек

@chebotarevp мёрджи тогда это

Google
Denis
23.04.2018
10:47:47
@chebotarevp ты asdf не убрал. почему?

Pavel
23.04.2018
10:53:53
Да не убрал, потому что десериализовывает то он лучше

Denis
23.04.2018
10:54:01
аа

я думаю добавить hooks и потом поверх этого навернуть асинхронный класс который можно было бы использовать с любым способом подключения

а ещё заметил что getUpdates при нулевом таймауте почему-то виснет

вроде должен происходить shortpool

Pavel
23.04.2018
10:59:24
Каким образом виснет? Вешает тред? А то с нулевым таймаутом он и должен виснуть бесконечно пока не придет апдейт.

Я с 26го ухожу в отпуск, подмержу все ветки, методов закомичу, исправлю баги и сделаю рефакторинг с учетом пожеланий :)

Admin
ERROR: S client not available

Pavel
23.04.2018
11:00:57
Что это такое?

Denis
23.04.2018
11:01:13
а хз, они не поясняют. как я понял простая проверка "нету ли там чего"?

и сразу выход

не рекомендуют юзать это сами авторы АПИ

Pavel
23.04.2018
11:01:55
Timeout in seconds for long polling. Defaults to 0, i.e. usual short polling. Should be positive, short polling should be used for testing purposes only.

Хм надо проверить, но я до этого момента был уверен что он бесконечно висит и ждет апдейта, такое поведение и есть.

Denis
23.04.2018
11:02:47
и нигде не поясняется что такое short pooling

@chebotarevp https://gist.github.com/denizzzka/b02b5c0650980fbfe9ebb819c3094cdf может это будет полезно) правильный способ конвертации json vibe и asdf

Eto
23.04.2018
11:05:56
и нигде не поясняется что такое short pooling
Какое-то магическое выражение. Когда я подобное описание в STD добавлял, никто такого не говорил.

Denis
23.04.2018
11:06:21
да, видимо какой-то оборот речи

Google
Pavel
23.04.2018
11:07:19
Вообще это слово гуглится, вроде означает что мы ждем пару секунд и отключаем соединение

Denis
23.04.2018
11:16:21
значит ни сколько не ждём имеется ввиду

короч, работает оно сейчас явно не так

Pavel
23.04.2018
11:17:45
@chebotarevp https://gist.github.com/denizzzka/b02b5c0650980fbfe9ebb819c3094cdf может это будет полезно) правильный способ конвертации json vibe и asdf
Ок, но вообще для пользователя asdf никак не должна быть видна вообще извне, это чисто приватная инкапсулированная деталь. Для того чтобы из json получить структуру.

Dark
23.04.2018
11:23:43
Простите, что не в тему, но насколько глубоко обрабатываются рекурсивные шаблоны?

Denis
23.04.2018
11:23:50
чтобы без кастов странных

хотя хз, касты там встроены

автор asdf неправильно суть кастов понимает, кмк

Pavel
23.04.2018
13:59:32
Нашел сильный аргумент за то чтобы распилить один файл на несколько маленьких - если какие-то функции из модуля не используются и этот модуль не импортируется то он и не будет вкомпилирован, таким образом размер бинарника уменьшится

Pavel
23.04.2018
14:02:47
Ну так код как по мне тоже будет более читаемый

а разве неиспользуемые функции не вырезаются линковщиком?
Я щас взял весь модуль telega.botapi, скопировал его в telega.test и сделал import telega.test без всякого использования. Размер бинарника распух на 500кб !

Конечно весь бинарник весит 9мб так что может разница и не так заметна, но полмегабайта мусора это жесть

Причем ldc2 намного эффективнее все это анализирует, там разница реально получилась в 15 байт )

Pavel
23.04.2018
14:07:49
dub -b release

Страница 536 из 719