@rudepython

Страница 1102 из 1719
Dmitry
01.08.2018
15:01:23
Так, стоп,чувак 10 лет программирует и сразу в тимлиды и сенйоры?)
так, стоп, а еще он ни разу в жизни не делал деплой. але. потому что знаешь почему? потому что 5 лет мы с ним работали вместе и все это время деплой делал я, а не он :) але

Dmitry
01.08.2018
15:01:56
Волшебство какое

Dmitry
01.08.2018
15:03:11
и кстати про 10 лет он спиздел :) так то тут в чате много людей помнит, что Жырный еще в 2005 году о программирование за деньги шкварился :) но есть достоверные слухи, что и раньше было дело :)

Google
Ляман
01.08.2018
15:43:18


vlade11115
01.08.2018
15:56:16
Г

Так ловить коннекшн эрроры глупо и бесполезно.

Вместо ловли атрибутеррора перепиши так, чтобы ловить его не приходилось.

Dmitry
01.08.2018
16:00:44
ну такое. давай начнем с легкого. в слове "валюта" на английском две буквы "r" :D

Boris
01.08.2018
16:01:06
но в 2006 я уже писал транспорт для атс на твистеде и ездил смотреть гопников в красноярском зоопарке = и все ето без единого юнит теста

кстати 12 лет уже работает

Ну але, ребят я не говорю о "100% покрытий тестами"
прямо сейчас это у меня в текущем проекте именно так и в опенсорсной развлекухе тоже

в языке где это сделать сложнее чем в пайтоне ровно в 3 раза (точность до 1 тысячной процента). Вообще тестирование это инструмент разработчика для разработки, а не для гарантии того что что-либо вообще работает.

Stanislav
01.08.2018
16:04:32
Я пишу код без тестов, держу в курсе

Boris
01.08.2018
16:04:46
для этого как димасик сказал выше - есть специально обученные люди QA - они работают на благо бизнеса и в его интересах и в них разбираются. но когда бизнесу похуй - совершенно не важно сколько у тебя тестов

Google
Denis
01.08.2018
16:04:48
Я пишу тесты без кода

Boris
01.08.2018
16:06:20
в этом коде плохо все. например сравнение на наличие в тектсте 404 page not found - а што если там вместо него появится картинка или не будет слова page?

Stanislav
01.08.2018
16:06:44
Да, это прямо пример плохого кода.

Boris
01.08.2018
16:06:44
а шо если не будет html? а што если? а нет способа достать статус пейдж?

Dmitry
01.08.2018
16:07:05
в этом коде плохо все. например сравнение на наличие в тектсте 404 page not found - а што если там вместо него появится картинка или не будет слова page?
ты прям с козырей. я хотел написать, что это плохо - в одном абзаце смешивать .format() и сложения строк :) уж или туды или сюды :)

Boris
01.08.2018
16:10:40
а еще скажите мне - какого хера мы в 2018 используем бьютифул соупс

последнее что я на эту тему видел было requests - и оно вроде ок было?

а бле - мы там html парсим. почему не посредством lxml? он вроде умеет.

json(requests.get().text) - это зачем когда есть .get().json()?

Stanislav
01.08.2018
16:12:07
а бле - мы там html парсим. почему не посредством lxml? он вроде умеет.
В бс4 как бекенд lxml тоже можно поставить. Ну и БСом удобнее парсить

Boris
01.08.2018
16:12:46
ну тут я обосрался да.

Zart
01.08.2018
16:18:57
чем удобнее суп я так и не понял, когда в лхмл есть полновесный хпатх

Boris
01.08.2018
16:20:13
да кстати - requests.get().status (вроде так) - даст информацию о 404

и не надо парсить хтмл страницу на поиск заветной страницы с говном в строке.

http://docs.python-requests.org/en/master/

вон на странице "хттп для людей" (не для кодеманки) даже проверяется статус код. но ничего не меняется - никто нихуя не читает.



Zart
01.08.2018
16:29:53
да кстати - requests.get().status (вроде так) - даст информацию о 404
если только макаки на серверной стороне не отрендерили ошибку с 200

Boris
01.08.2018
16:31:14
справедливо.

Google
Stanislav
01.08.2018
16:31:18
чем удобнее суп я так и не понял, когда в лхмл есть полновесный хпатх
Мешаниной символов хпазы не очень удобные, методы .find и аргументы которые в них передаются читаются как английский язык. Плюс БС4 хорошо работает со сломаными хтмлами и есть дополнение которе даже чинит хтмлки, насчет lxml не могу это утверждать. По скорости примерно то же самое, если юзать lxml как бэкенд, но там есть какие-то маленькие отличия.

Boris
01.08.2018
16:33:14
у lxml есть бекенд работающий с html называется html

html.parse() прекрасно парсит все что мне в жизни попадалось.

мешанина говна написанная в гисте это не английский язык - весь код с xpath схлопнется до пятка строчек, и при желании можно писать тот же find.

Stanislav
01.08.2018
16:37:04
Всё это вопрос привычки. Вот например у меня щас проектик свободный, надо парсить хмлки. Но поим рассчетам они малы и их парсить надо будет мало. Если бы задача была парсить гигабайты оных - я бы взял какой-то SAX парсер, а так я взял обычный бс и не парюсь. Привычно и достаточно быстро.

Boris
01.08.2018
16:38:11
намек на то, что каждому милее бутылка на которой он сидит - понятен. однако бсом даже царьт не пользуется, а он старее говна мамонта.

Stanislav
01.08.2018
16:39:10
Блядь, а в итоге мой контрибутор саксом валидирует хмл перед парсом бсом, я чисто сурс посмотрел))

Boris
01.08.2018
16:39:58
трагедия.

на говнохабре писали в 16м - шо для любителей супа в lxml добавили модуль соответствующий.

Zart
01.08.2018
16:42:36
Boris
01.08.2018
16:43:30
вполне себе задача - напизить картинок у магазина конкурента - а потом поверх их ватермарка ебануть свой!

Boris
01.08.2018
16:45:03
задача насрать тебе на лицо за говнокод. что изменилось за 5 лет моего отсутствия?

Stanislav
01.08.2018
16:45:11
Мне это и надо. Вы даже задачи не знаете
А) Ты тупой долбоеб и не описал максимально точно задачу. Б) Почитай про хттп.

Zart
01.08.2018
16:47:56
а мы правда хотим максимально точно узнать его задачу?

vlade11115
01.08.2018
16:52:04
Ну, у меня складывается ощущение, что Asyncio имеет тот же функционал, что и Django, только еще и асинхрон впридачу. Поэтому были мысли с ним ознакомиться

Stanislav
01.08.2018
16:54:54
а мы правда хотим максимально точно узнать его задачу?
Ага, щаз мы кинемся помогать воровать информацию про кроссы от дасиков

Vladimir
01.08.2018
20:18:23
Кстати, чем грозит кишение кода трайэксептами? Я на работе говорю, что это побуждает делать хуевый нечитабельный дизайн приложения

Мне говорят что предметная область сложная по другому не сделаешь и вообще иди нахуй

Google
Vladimir
01.08.2018
20:19:46
Где то читал что на производительности пагубно сказывается

vlade11115
01.08.2018
20:20:32
Чем грозят символы в коде? Один символ может сломать весь код, но это не значит что символы это плохо, это значит что нужно думать.

Где то читал что на производительности пагубно сказывается
Если чаще сыпет исключение чем нормальное выполнение то да.

D:\>type r.py import timeit def with_try(): try: a = 1 except Exception: print(42) def without_try(): a = 1 print(timeit.timeit(with_try)) print(timeit.timeit(without_try)) D:\>py r.py 0.2150243880056534 0.1781516795695588

D:\>type r.py import timeit def with_try_bad(): try: a = 1/0 except Exception: pass def without_try(): a = 1 print(timeit.timeit(with_try_bad)) print(timeit.timeit(without_try)) D:\>py r.py 0.8713011222889889 0.1832707759907798

Zart
01.08.2018
20:22:58
если нужно просто игнорировать исключение, то есть contextlib.suppress

Vladimir
01.08.2018
20:24:36
Там просто развесистая иерархия кастомных исключений на все случаи жизни

Zart
01.08.2018
20:25:46
так речь про try-except?

Vladimir
01.08.2018
20:25:53
Да

Zart
01.08.2018
20:25:55
или таки raise

Admin
ERROR: S client not available

Vladimir
01.08.2018
20:26:25
Они райзятся рандомно

И не менее рандомно ловятся

vlade11115
01.08.2018
20:26:34
если нужно просто игнорировать исключение, то есть contextlib.suppress
Это был синтетический тест синтетической синтетики.

AkS
01.08.2018
20:27:08
Сферическая синтетика )

Vladimir
01.08.2018
20:27:36
Мне подсознательно кажется что вместо исключений правильнее возвращать из метода специфическое значение

AkS
01.08.2018
20:27:43
Чем дольше цикл отладки ) тем больше в коде трайэксептов (народная мудрость)

Eugine
01.08.2018
20:30:34
Это в С++, там исключения неприятные
положа руку на сердцо, тут тоже не бесплатные эксепшны, но дешевле

Google
Vladimir
01.08.2018
20:32:06
А там как

Boris
01.08.2018
20:32:21
а там ты всегда закатываешь солнце вручную

Vladimir
01.08.2018
20:32:40
Там исключений вообще по моему нет

Boris
01.08.2018
20:32:44
вместо исключений возвращаешь error - его проверяешь - вместо try/catch у тебя весь код в if err != nil {return err}

весь код собственно бьется так: err = kudkuah() if err !=nil { return err }

зачем это говно если вместо 4 строк кода можно писать 1?

сказки про "зато мы все обработаем" не работают = почти нигде их не матчат кроме корня логики - там же и классический try/catch нужно помещать

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

те исключение - потеря коннекта к базе, провал транзакций

отсутствие объекта в хранилище, для прочего нужно использовать контекст объект.

Vladimir
01.08.2018
20:37:42
Про контекст объект непонел

Boris
01.08.2018
20:38:15
тебе нужно понять чем закончился вызов вверху - ты это можешь сделать или вернув от туда значение или поместив его куда-то в что-то что ты передашь внутрь

Vladimir
01.08.2018
20:38:57
Результат вызова хранить в состоянии контекста?

Boris
01.08.2018
20:39:14
в си у тебя сигнатуры выглядели бы int funcname(object *result)

вместо result был бы контекст в который можно пихать какие-то значения - включая статус код - а возвращать из функции то что она должна вернуть

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

Vladimir
01.08.2018
20:41:22
Интересные вещи говоришь

А для чего лучше исключения, а для чего контекст?

Boris
01.08.2018
20:43:00
ну вот например ты заполняешь параметры функции

по результатам параметров ожидаешь получить объект какой-то

валидация параметров если производится - должна выкидывать исключение.

контекст используешься в аспекте map/reduce например

если же у тебя return из функции делается экспешеном - то статус код и заполнение контекса значением в случае успешной отработки - лучше эксепшена

Страница 1102 из 1719