
Maxim robox
10.10.2017
15:52:58
Где-то лишний или незакрытый див

Artem
10.10.2017
15:53:15
ну значит глянь в результат
в то, что получилось

Google

Artem
10.10.2017
15:53:44
просмотр кода страницы вот это все

Tigran
10.10.2017
15:54:20
А что с ним?
</p> можно опускать, браузеры его всё равно игнорируют

BekzoD
10.10.2017
15:54:20

Maxim robox
10.10.2017
15:56:06

BekzoD
10.10.2017
15:57:27
ниче не помогает (((((((((

Maxim robox
10.10.2017
15:57:32
Да я ебал такую оптимизацию. Ещё запоминать это.

Artem
10.10.2017
15:58:11

Tigran
10.10.2017
15:58:28
Это переводится примерно как "всегда". Трудно придумать случай, когда опускать нельзя.

Maxim robox
10.10.2017
15:59:58

BekzoD
10.10.2017
16:01:01

Google

BekzoD
10.10.2017
16:27:59
надо было empty убрать
и все работает

Artem
10.10.2017
16:28:48
молодец

Rocket
10.10.2017
16:30:08

Артем
10.10.2017
18:05:53
А что на питоне нельзя пилить веб?))))) Django тот же

Mike
10.10.2017
18:07:59
Джанго говно
Оверсайз
Норм пацаны на фласке/черри/торнадо пишут

Artem
10.10.2017
18:08:44
aiohttp — красота

Izy
10.10.2017
18:09:07
да пришел он и имея ему лигион да подорвал он пуканы

Mike
10.10.2017
18:09:07
А тож норм да

Senpai
10.10.2017
18:10:06
Человеки, кто за $2 запишет пару минут экран, как он пишет телеграмного бота с двумя кнопками?

Mike
10.10.2017
18:12:00
Главное не на джанге, стоковая орм дерьмо инвалидное, миддлварины бесполезны, подход к сайту как к многостраничнику и перезагрузке страниц по каждому чиху, базовый проект размером как жопа черной королевы тверка, концы не соберёшь от его пайпа, в общем, пытались решить все теоретически возможные проблемы, решили все, но хуево

Проксимов
10.10.2017
18:14:36

Aragaer
10.10.2017
18:14:41
боты с кнопками?

Проксимов
10.10.2017
18:14:48
Если и так есть куча док и видосов за бесплатно

Aragaer
10.10.2017
18:15:04
это такие, которым нельзя слова писать, а надо мышкой клацать?

Маришка
10.10.2017
18:16:00

Юра
10.10.2017
18:16:04

Mike
10.10.2017
18:16:07

Google

Mike
10.10.2017
18:16:27
Нигде не было сказано что его куда-то слать надо

Aragaer
10.10.2017
18:16:33
ну в смысле они слов не понимают

Маришка
10.10.2017
18:18:10

Aragaer
10.10.2017
18:18:19
это я недавно вспоминал анекдот из Городка
- Алло, это пицца по телефону?
- Да.
- Я бы хотел заказать пиццу.
- Я открываю коробку.. Пицца такая ароматная. Я беру кусочек и ем его, ням-ням, ном-ном. С вас двадцать долларов.
- Я открываю кошелек, достаю оттуда двадцатку. Она так приятно шуршит в руке, такой красивый зеленый цвет.. До свидания.

Маришка
10.10.2017
18:18:48

BlackAndOrange
10.10.2017
18:20:38
Господа.
Передо мной стоит задача динамически генерировать функции. У меня есть какой-то список вида ['few', 'required', 'args'] и такого же плана штука для kwargs.
Про решение с функторами я знаю, но при возможности не хочу множить сущности без надобности. Есть какой-либо другой способ сделать это? Или подменить сигнатуру уже существующей функции?

Aragaer
10.10.2017
18:22:20
что такое функтор?

BlackAndOrange
10.10.2017
18:22:36
Объект, который не функция, но ведёт себя похоже.

Mike
10.10.2017
18:22:45
В опусе опущено описание задачи, сразу переход к решению

Aragaer
10.10.2017
18:22:56
то есть любой callable

BlackAndOrange
10.10.2017
18:23:14
По сути, да. Желательно ещё определить name и прочую такую фигню.
__name__

Aragaer
10.10.2017
18:23:32
и вот да, эта задача она откуда-то взялась. Вопрос, откуда такая (нездоровая) задача взялась

BlackAndOrange
10.10.2017
18:23:45
Есть Telegram API.
Писать вручную тыщщу его методов мне влом

Aragaer
10.10.2017
18:23:55
у меня такой вопрос возникает всегда, когда задача сильно сложнее, чем hello world, так что не обращайте внимания

BlackAndOrange
10.10.2017
18:24:05
Да и тело у них будет довольно похожее

Aragaer
10.10.2017
18:24:19
ну посмотри, как это сделано у других
вон телепот например

BlackAndOrange
10.10.2017
18:24:33
Генератором кода

Google

BlackAndOrange
10.10.2017
18:25:06
Или через getattr
Но оба этих решения мне не очень нравятся
Первое тем, что в репозитории оказывается треш вместо кода

Admin
ERROR: S client not available

BlackAndOrange
10.10.2017
18:25:35
Второе тем, что это гарантированный способ выстрелить себе в ногу

Aragaer
10.10.2017
18:25:56
впрочем в телепоте есть некий внутренний метод _api, а все внешние методы они реальные и может быть даже написаны руками

BlackAndOrange
10.10.2017
18:26:18
У меня тоже есть внутренний метод send_request
Но я не хочу писать все остальные руками
Я хочу описать их декларативно
И получить готовые

Aragaer
10.10.2017
18:27:11
https://github.com/nickoala/telepot/blob/master/telepot/__init__.py#L444 - вот отсюда и ниже например

BlackAndOrange
10.10.2017
18:28:22
Ну в итоге там так себе читаемость кода

Aragaer
10.10.2017
18:28:24
каждый метод в 2 строки
def deleteWebhook(self):
""" See: https://core.telegram.org/bots/api#deletewebhook """
return self._api_request('deleteWebhook')
зато не возникает вопроса "это что ваще за хрень?"

BlackAndOrange
10.10.2017
18:29:50
Я бы сделал какое-нибудь декларативное описание типа
send_photo = ApiCall('sendPhoto', chat_id=REQUIRED, photo=REQUIRED, caption:str=None...)
И заодно сразу проверку типов можно
И понятно что происходит
Ладно, зафигачу функтор

13470
10.10.2017
18:31:23
Переопределить __call__?

Google

BlackAndOrange
10.10.2017
18:31:34
Ну да, ясно
Я просто сначала думал про ApiCallFactory, которая бы создавала настоящие функции
Но, кажется, их сложно нормально создавать

Aragaer
10.10.2017
18:32:18
мой совет
ты сначала напиши просто руками
парочку-троечку

BlackAndOrange
10.10.2017
18:32:29
Я уже

Aragaer
10.10.2017
18:32:44
вот когда оно будет работать и ты решишь, что не, надо сделать более экибанисто, тогда да
благо уже и тесты будут и сразу будет видно что где накрылось
я как-то писал что-то и меня понесло в степь метапрограммирования, я там что-то ух какое сваял. А потом наконец пошел пилить дальше функциональность, а она к моему мета-фреймворку чот не особо подходила
кончилось тем, что я это "мета" размотал обратно в "написанное руками"

Rocket
10.10.2017
18:37:29

Roman
10.10.2017
18:42:45

Mike
10.10.2017
18:43:08