@spbpython

Страница 399 из 785
Aleksandr
28.04.2017
11:14:23
Но в общем-то метакласс с суперами штука довольно хрупкая

Aleksey
28.04.2017
11:22:18
Введу вторую ветку обсуждения. Пытаюсь понять на каком уровне лучше вводить моки. Давайте представим, у меня есть сторонний сервис, который что-то там отдает по http. У меня есть обертка над ним, в виде отдельной библиотеки, которая моему клиентскому коду отдает данные уже в виде не json, а объектиками там, и прочим. Теперь представим, есть первый класс, который в своем методе принимает выход из обертки, преобразует, и отдает дальше. Тут, видимо, mock нужен на вывод обертки. Есть второй класс (ок, десяток разных мест), где используется результат преобразований в первом классе.. Какой тут нужен mock? Если я буду опять делать mock для обертки, то, имхо, неправильно это, у меня ж тут абстракция. Если я буду делать mock для результатов первого класса, то при изменении поведения первого класса, юнит-тесты не будут падать, если я забуду учесть нововведения везде..

Aleksey
28.04.2017
11:23:49
Хмм.. Пока писал - понял, что наверняка эта задача как раз для fixture/mark замечательного pytest

Google
Sergey
28.04.2017
11:26:56
Можно ещё взять requests и в валидатор прям засылать :D https://github.com/validator/validator/wiki/Service-%C2%BB-Input-%C2%BB-POST-body

Eugene
28.04.2017
11:27:39
Класс создаётся одним метаклассом всегда с возможным пробросом через суперы
utils.metas делает вот это: name = '_'.join([m.__name__ for m in metaclasses]) return type(name, metaclasses, {})

GNU/Docker
28.04.2017
11:28:25
Ооо

у нас есть похожая штука

только для того чтобы подмешать ещё один класс в иерархию где уже есть метакласс.

Eugene
28.04.2017
11:28:55
Жесть, конечно... Но работает! :)

Aleksander
28.04.2017
11:29:09
Aleksandr
28.04.2017
11:30:09
utils.metas делает вот это: name = '_'.join([m.__name__ for m in metaclasses]) return type(name, metaclasses, {})
говорю же, хрупко. Например итоговое поведение в общем случае зависит от порядка метаклассов

Eugene
28.04.2017
11:30:41
только для того чтобы подмешать ещё один класс в иерархию где уже есть метакласс.
Да, вот это основная проблема с метаклассами. Подсовывание чего-то туда где уже используются метаклассы.

GNU/Docker
28.04.2017
11:31:15
Лично я так и не вкатился в них

Eugene
28.04.2017
11:31:15
GNU/Docker
28.04.2017
11:31:27
использовал только для синглтона и регистри.

Google
Aleksandr
28.04.2017
11:32:21
если разные метаклассы не ломают друг друга, то это и не метаклассы вовсе, скорее всего достаточно было бы декарировать

Eugene
28.04.2017
11:33:51
декоратор пришлось бы нахлабучивать на все классы. А их может дофига. Тоже не очень красиво, когда все классы задекорированы.

Aleksandr
28.04.2017
11:34:14
интроспекция на импорт тайме?

Eugene
28.04.2017
11:36:05
Что ты имеешь в виду?

Aleksandr
28.04.2017
11:36:57
ну заимпортил модуль с классами, прощелся по нему инспектом, и по условию навесил на них декораторы

Eugene
28.04.2017
11:37:43
Ну, я так и подумал. Это уж совсем неявно получается. Кто будет читать код, будет сильно ругаться.

Aleksandr
28.04.2017
11:38:19
в общем случае метаклассы у тебя будуи либо конфликтовать, либо вообще не соберется итоговый метакласс, так же как не собрался бы class A(int, str): pass

ну, это можно продать как АОП

и пуканы на ревью (возможно) не разорвет

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

решать метакласс конфликты тем более в рантайме это как то совсем дико, имхо

Alexander
29.04.2017
07:46:50
Кто нить юзал? https://github.com/channelcat/sanic

Mehti
29.04.2017
10:24:59
Всегда скептически отношусь к таким сравнениям: https://github.com/channelcat/sanic#benchmarks Что самое смешное, так это то что люди больше обращают внимание на статистику, не вникая в подробности тестирования.

Mehti
29.04.2017
10:41:08
Sanic Python 3.5 + uvloop 33,342 2.96ms Flask gunicorn + meinheld 4,988 20.08ms почему такое сравнение? где указана версия языка с flask? какие проекты еще запускали?

это еще ничего, вот когда сравнивают фреймворки на golang - тут то и начинается веселье

Roman
29.04.2017
10:46:49
это еще ничего, вот когда сравнивают фреймворки на golang - тут то и начинается веселье
А что не так? Выполняется некоторый одинаковый объём работы

GNU/Docker
29.04.2017
10:47:16
ГОЛАААНГ

Denis
29.04.2017
10:47:33
КТО СКАЗАЛ ГОЛАННГ

Google
Mehti
29.04.2017
10:48:51
А что не так? Выполняется некоторый одинаковый объём работы
Не лучше ли проводить сравнение на большем количестве проектов и с разными объемами? Так, по-моему, нагляднее будет видно насколько та или иная технология быстрее

На западе все говорят golang. Что вам не нравится?) Go (often referred to as golang).. https://en.wikipedia.org/wiki/Go_(programming_language)

Ну хорошо, почти все)

Это связано с путаницей со словом go

Denis
29.04.2017
10:51:03
это еще ничего, вот когда сравнивают фреймворки на golang - тут то и начинается веселье
Там вообще пц, тот же мартини считается медленным, а он просто без конца юзает интерфейсы, в результате без причин какает в кучу

Это связано с путаницей со словом go
Есть другой язык программирования и называется гоу, вроде как, типа споры были

Denis
29.04.2017
10:52:30
Denis
29.04.2017
10:53:26
gin
Он отстал от жизни, у него глупыф контекст, свой.

Mehti
29.04.2017
10:54:05
Он отстал от жизни, у него глупыф контекст, свой.
а какой фрейворк тогда брать на вооружение?

Denis
29.04.2017
10:54:23
А ещё много глупых предположений в коде, вроде того что если ты делаешь abort, то нужно вообще менять контент тайп на текст

а какой фрейворк тогда брать на вооружение?
Вообще там все есть из коробки уже, net/http )) нужен только роутер хороший, вот мне понравился chi

Mehti
29.04.2017
10:55:01
Всмысле берем 1млн файлов и раздаем его?
Не обязательно. Дело не ограничивается запросами. Нужно еще время на логику и каждый фрейморк по-своему работает на этом уровне

Denis
29.04.2017
10:55:16
Есть ещё beego, но это скорее эдакая джанга на гоу

Mehti
29.04.2017
10:56:27
Вообще там все есть из коробки уже, net/http )) нужен только роутер хороший, вот мне понравился chi
Я слышал что большинство разрабов это и рекомендуют. Некоторые даже ручками ставят все от gorilla и юзают. Муторно, мне кажется

Denis
29.04.2017
10:57:43
Я слышал что большинство разрабов это и рекомендуют. Некоторые даже ручками ставят все от gorilla и юзают. Муторно, мне кажется
Да в гориле всё тоже сомнительное, я не люблю, не понравилось. Просто ставишь чи и там всё есть если ты делаешь сервис. ОРМ так то не нужна. Темплейты уже есть. Валидация уже есть.

Если реально хочется не просто сервис, а целый сайтик, то в beego всё есть и очень хорошо сделано

Я слышал что большинство разрабов это и рекомендуют. Некоторые даже ручками ставят все от gorilla и юзают. Муторно, мне кажется
Я не сторонник такой схемы, небльшие коммьюнити не умеют делать качественно декомпозированные проекты. Пример - фласка и почти дохлый албембик с костылями flask-migrate

Google
Roman
29.04.2017
11:44:01
Он отстал от жизни, у него глупыф контекст, свой.
А что вместо него? По большому счету, мне только быстрый роутинг нужен.

Denis
29.04.2017
11:46:26
А что вместо него? По большому счету, мне только быстрый роутинг нужен.
Возьми тогда сразу mux на котором все либы написаны - https://github.com/julienschmidt/httprouter и посмотри chi. Я са все на джине писал, сейчас проект будет - буду chi, так что пока подводных камней не знаю, но выглядит хорошо

А что вместо него? По большому счету, мне только быстрый роутинг нужен.
В любом случае все фреймворки и либы на гоу делают роутинг быстрый - через дерево маршрутов(radix tree), а не как многие питонячие фреймворки, через матчинг строк

GNU/Docker
29.04.2017
11:51:41
Я сказал голанг

Потому что это чат не про голанг

Admin
ERROR: S client not available

Denis
29.04.2017
11:52:22
Сорри, меня легко засуммонить так :(

Aleksander
29.04.2017
17:08:51
привет, а есть среди нас спец по PyQt ?

почему в QWebView self.page().mainFrame().contentSize() может возвращать разные размера причем с одинаковым содержимым ?

Dmitry
29.04.2017
17:13:20
Vitali K.
29.04.2017
17:20:03
Aleksander
29.04.2017
18:54:48
https://gist.github.com/alifanov/e4ec7f66ea4ff13050c69c0e282140fd вот код, дабы не быть голословным))

Vitali K.
29.04.2017
18:57:35
А какие значения?

Я могу предположить что при первом вызове HTML не отрендерился например)

Aleksander
29.04.2017
19:00:08
https://gist.github.com/alifanov/35ad46503f62d408c078a2bbbfca6e14

в том то и дело что не при первом падает

а рандомно после нескольких успешных

Dmitry
29.04.2017
19:17:19
а если небольшую задержку добавить? после setHtml()

Google
Aleksander
29.04.2017
19:36:53
все равно падает

разобрался у page() нужно stViewportSize делать до основного цикла и не менять динамически

тогда норм работает

Dmitry
29.04.2017
19:45:15
??

Dmitrii
30.04.2017
05:56:21
Объясните мне, почему не смотря на то, что python и java+js занимают лидирующее положение в вебдеве, шарп каким-то образом пользуется спросом (пусть и не таким большим)?

Julia
30.04.2017
07:41:32
@julia_vikulina
Еще больший спец @iroln

Aleksander
30.04.2017
07:57:21
@nonamenix feature-request для бота - вводишь keywords он выдает протегированных юзеров чата))

Eugene
30.04.2017
08:22:34
Еще больший спец @iroln
Надо сказать, что с Qt WebKit мне не приходилось ничего делать. :) Всегда хватало QTextBrowser/QTextEdit.

Serge
30.04.2017
08:59:46
Надо сказать, что с Qt WebKit мне не приходилось ничего делать. :) Всегда хватало QTextBrowser/QTextEdit.
О, а вебкит я трогал из питона. Только через gtk. Но, там все равно всё сводится к копанию в сюшных доках его апи.

Aleksander
30.04.2017
09:36:19
Благо они одинаковые по названиям )

Dmitry
30.04.2017
10:10:00
http://aroberge.blogspot.ru/2017/04/nonstandard-module-and-pep-542.html

Serge
30.04.2017
10:50:07
http://aroberge.blogspot.ru/2017/04/nonstandard-module-and-pep-542.html
Хорошо, конечно, но с инстансами, имхо, перебор. Хотя и к классу добавление - это уже жабаскрипт же. Выпиливали, выпиливали, теперь будем запиливать.

Aleksander
30.04.2017
11:23:59
кстати а почему itgm в вск ?

потом же понедельник

Sergey
30.04.2017
11:25:19


Страница 399 из 785