Когда-то в молодости натренировался слетать вниз по эскалатору через ступеньку, получалось очень быстро если не было пробок из людей. Потом как-то увидел мужика с открытым переломом внизу — неудачно сбежал. После того случая перестал я бегать по эскалатору.
Так и я тоже считаю, что Python идёт куда-то не туда :)
Вся эта эмуляция типизации, особенно с генериками выглядит чужеродно в питонокоде. Одно дело — аннотировать сигнатуру функции и некоторые переменные для подсказок в IDE и самодокументации кода и совсем другое, когда из динамической типизации пытаются сделать статическую с помощью тайпхинтов и mypy.
Это сарказм что ли? move semantics, variadic templates, вычисления времени компиляции, ranges, ещё больше особо шаблонной магии и т.д. Где тут упрощение то? То, во что превращается C++, который никогда простым и не был, это не упрощение, это вырождение в некоторое новое подмножество языка. И если использовать только его, то в некоторых случаях код получится проще и лаконичнее, но далеко не всегда.
Интересно, они когда всё это затевали и зазывали инвесторов, не задумывались о том, что им просто не дадут всё это провернуть, что придет какой-нибудь регулятор из того же США и постарается наступить им на горло? Любая попытка создать независимые от государства финансовые системы и уйти в крипто-анархизм встретит мощное противостояние в любом государстве. Им передаёт привет Facebook со своей "белой и пушистой" Libra.
Остаётся два вопроса: у них есть план "Б"? и что они будут делать если плана нет?
Если рассматривать двумерный массив, то ось с индексом 0 — это как раз строки, 1 — столбцы. Такая индексация естественна для работы с матрицами и массивами, применяется в большинстве библиотек для работы с массивами/матрицами/линейной алгеброй, например, Boost.MultiArray или Eigen в C++. Поэтому не совсем понятно какую именно боль у вас это вызывает.
OpenCV вообще не нужно использовать для чтения изображений, чтобы потом работать с ними как numpy-массивами. Есть Pillow, прекрасная imageio или scikit-image. И никаких странных BGR. :)
Я не сомневаюсь, что вы знаете про интерполяцию, но претензия была к качеству отображения в mpl. Так они по умолчанию показывают в nearest, и картинка в зависимости от масштабирования и размера фигуры может выглядеть плохо.
Можно передать в imshow другой метод интерполяции, и картинка будет выглядеть лучше.
Вы вообще статью читали или сразу бросились писать этот гневный комментарий? В статье как раз речь о проблемах, а не о том, "как там всё классно".
На счёт вашей ситуации, в приложении отображалось, что аренда завершена, вы проверяли? Лучше 5 раз перепроверить чем попасть на "15 часов аренды", учитывая какой "клиенто-ориентированный" сервис у делимобиля (да и вообще почти у всех каршерингов).
Мне кажется, что это какие-то глюки "бортового компьютера". Часто отваливается сеть и перезагрузка этого планшета не помогает. Оно никак не влияет на основную функциональность, поэтому есть предположение, что это вообще отдельный блок, никак не связанный с основным управляющим ПО. Я даже писал им в поддержку по этому поводу, но в ответ тишина.
С этим связано явление chronostasis. Когда размытое изображение в настоящем замещается изображением из прошлого. Ещё в детстве неоднократно наблюдал stopped-clock illusion, всем рассказывал, а надо мной смеялись и не верили. :)
Когда-то отказался от использования "Делимобиля" во многом благодаря техническим проблемам с их сервисом (а так же из-за особенностей поведения их руководства и проблем с репутацией компании). Качество приложения (особенно первого, до последнего крупного обновления) просто не выдерживало никакой критики. Постоянные сбои: "не открывается/не закрывается", неактуальное состояние и геопозиция автомобилей в приложении и ещё ворох проблем с вылетами, ошибками и UI/UX-трешем. Дозвониться до техподдержки тоже было проблематично.
Они очень сильно нарастили автопарк, и похоже, что их серверная архитектура/инфраструктура не справляется с такой нагрузкой до сих пор, судя по отзывам на их приложение.
В общем, если свою репутацию они более-менее стараются отмыть, не знаю как они собираются дальше развивать свой бизнес без вложения в техническую надёжность сервиса.
В корпоративных блогах часто появляются посты, которые написаны только ради рекламы без всякой дополнительной смысловой нагрузки. Считаю, что такие посты скатывают ресурс к банальным информационным SEO-помойкам. Что характерно, авторы таких постов обычно молчат и никогда не принимают участия в дискуссиях, что понятно: автора и его мнения как такового просто нет.
Проверка на None и проверка на результат__bool__ — не одно и то же. Бывают ситуации, когда надо проверить именно на None, а бывает, когда сойдёт и bool. И у вас ошибка, тогда уж if not self._device:.
Минусы: Какие у «клика» минусы — это сложный вопрос. Может, он чего-то не умеет из того, на что способны следующие библиотеки?
Приходилось плотно работать с click, на память вот какие есть минусы:
нельзя задать аналог nargs='+' для опциональных аргументов. Только позиционные аргументы можно передавать в неопределённом количестве. В какой-то степени это исключает ambiguous поведение при смешивании команд и опций, но на самом деле всё решаемо и это недоработка, которую не будут исправлять. https://github.com/pallets/click/issues/484
проблема с chain, а именно: нельзя использовать одновременно позиционные и опциональные аргументы в chain-командах. Это неисправимая проблема из-за которой хотят вообще убрать поддержку chain (что сломает много программ, завязанных на эту функциональность) https://github.com/pallets/click/issues/1269
встроенный help криво отображает позиционные аргументы (об этом есть в документации)
встроенный help никак явно не отображает, что опциональный аргумент является multiple, если он таковой (multiple=True)
Это то, что вспомнил, есть ещё разные подводные камни, на которые натыкаешься если используешь click на полную мощность. В остальном это лучшая библиотека для создания cli на мой взгляд.
Boost.Python я вообще не рекомендую использовать ни для чего. Монстроузный и неудобный (удобнее, конечно, чем голый CPython API, но значительно менее удобный чем более современные штуки).
Всё это здорово, конечно, но на самом деле это уже давно не нужно, потому что есть pybind11 и CFFI. Эти инструменты разительно упрощают embedding/extending для Python без возни с медленным ctypes.
Когда-то в молодости натренировался слетать вниз по эскалатору через ступеньку, получалось очень быстро если не было пробок из людей. Потом как-то увидел мужика с открытым переломом внизу — неудачно сбежал. После того случая перестал я бегать по эскалатору.
https://youtu.be/wjFgOckkVYM
Так и я тоже считаю, что Python идёт куда-то не туда :)
Вся эта эмуляция типизации, особенно с генериками выглядит чужеродно в питонокоде. Одно дело — аннотировать сигнатуру функции и некоторые переменные для подсказок в IDE и самодокументации кода и совсем другое, когда из динамической типизации пытаются сделать статическую с помощью тайпхинтов и mypy.
Кстати, пока писал комментарий про C++, потерял одну ссылку, вот она:
https://habr.com/ru/company/jugru/blog/438260/
Это сарказм что ли? move semantics, variadic templates, вычисления времени компиляции, ranges, ещё больше особо шаблонной магии и т.д. Где тут упрощение то? То, во что превращается C++, который никогда простым и не был, это не упрощение, это вырождение в некоторое новое подмножество языка. И если использовать только его, то в некоторых случаях код получится проще и лаконичнее, но далеко не всегда.
И подобные статьи этому подтверждение:
https://habr.com/ru/company/jugru/blog/469465/
А вот, например, ликбез о том как же правильно передавать аргументы в конструктор в современном C++
https://habr.com/ru/post/460955/
А вот этот список так вообще доставляет.
https://en.cppreference.com/w/cpp/compiler_support
Ну и "спор" на лоре о размере стандарта C++
https://www.linux.org.ru/forum/development/14796243
Интересно, они когда всё это затевали и зазывали инвесторов, не задумывались о том, что им просто не дадут всё это провернуть, что придет какой-нибудь регулятор из того же США и постарается наступить им на горло? Любая попытка создать независимые от государства финансовые системы и уйти в крипто-анархизм встретит мощное противостояние в любом государстве. Им передаёт привет Facebook со своей "белой и пушистой" Libra.
Остаётся два вопроса: у них есть план "Б"? и что они будут делать если плана нет?
Если рассматривать двумерный массив, то ось с индексом 0 — это как раз строки, 1 — столбцы. Такая индексация естественна для работы с матрицами и массивами, применяется в большинстве библиотек для работы с массивами/матрицами/линейной алгеброй, например, Boost.MultiArray или Eigen в C++. Поэтому не совсем понятно какую именно боль у вас это вызывает.
numpy также поддерживает различный порядок размещения данных в памяти column-major и row-major По умолчанию используется column-major как в фортране.
OpenCV вообще не нужно использовать для чтения изображений, чтобы потом работать с ними как numpy-массивами. Есть Pillow, прекрасная imageio или scikit-image. И никаких странных BGR. :)
Я не сомневаюсь, что вы знаете про интерполяцию, но претензия была к качеству отображения в mpl. Так они по умолчанию показывают в nearest, и картинка в зависимости от масштабирования и размера фигуры может выглядеть плохо.
Можно передать в
imshow
другой метод интерполяции, и картинка будет выглядеть лучше.https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/interpolation_methods.html
Вы вообще статью читали или сразу бросились писать этот гневный комментарий? В статье как раз речь о проблемах, а не о том, "как там всё классно".
На счёт вашей ситуации, в приложении отображалось, что аренда завершена, вы проверяли? Лучше 5 раз перепроверить чем попасть на "15 часов аренды", учитывая какой "клиенто-ориентированный" сервис у делимобиля (да и вообще почти у всех каршерингов).
Мне кажется, что это какие-то глюки "бортового компьютера". Часто отваливается сеть и перезагрузка этого планшета не помогает. Оно никак не влияет на основную функциональность, поэтому есть предположение, что это вообще отдельный блок, никак не связанный с основным управляющим ПО. Я даже писал им в поддержку по этому поводу, но в ответ тишина.
С этим связано явление chronostasis. Когда размытое изображение в настоящем замещается изображением из прошлого. Ещё в детстве неоднократно наблюдал stopped-clock illusion, всем рассказывал, а надо мной смеялись и не верили. :)
Мозг — бесконечно удивительная штука.
Когда-то отказался от использования "Делимобиля" во многом благодаря техническим проблемам с их сервисом (а так же из-за особенностей поведения их руководства и проблем с репутацией компании). Качество приложения (особенно первого, до последнего крупного обновления) просто не выдерживало никакой критики. Постоянные сбои: "не открывается/не закрывается", неактуальное состояние и геопозиция автомобилей в приложении и ещё ворох проблем с вылетами, ошибками и UI/UX-трешем. Дозвониться до техподдержки тоже было проблематично.
Они очень сильно нарастили автопарк, и похоже, что их серверная архитектура/инфраструктура не справляется с такой нагрузкой до сих пор, судя по отзывам на их приложение.
В общем, если свою репутацию они более-менее стараются отмыть, не знаю как они собираются дальше развивать свой бизнес без вложения в техническую надёжность сервиса.
Если задать значение параметра
network.trr.mode
в 3, то проверку проходит. Cо значением 2 почему-то не проходит.В корпоративных блогах часто появляются посты, которые написаны только ради рекламы без всякой дополнительной смысловой нагрузки. Считаю, что такие посты скатывают ресурс к банальным информационным SEO-помойкам. Что характерно, авторы таких постов обычно молчат и никогда не принимают участия в дискуссиях, что понятно: автора и его мнения как такового просто нет.
Проверка на
None
и проверка на результат__bool__
— не одно и то же. Бывают ситуации, когда надо проверить именно на None, а бывает, когда сойдёт иbool
. И у вас ошибка, тогда ужif not self._device:
.Приходилось плотно работать с click, на память вот какие есть минусы:
nargs='+'
для опциональных аргументов. Только позиционные аргументы можно передавать в неопределённом количестве. В какой-то степени это исключает ambiguous поведение при смешивании команд и опций, но на самом деле всё решаемо и это недоработка, которую не будут исправлять. https://github.com/pallets/click/issues/484multiple=True
)Это то, что вспомнил, есть ещё разные подводные камни, на которые натыкаешься если используешь click на полную мощность. В остальном это лучшая библиотека для создания cli на мой взгляд.
Да, вот запись в их блоге.
https://www.qt.io/blog/2018/10/29/deprecation-of-qbs
До конца 2019. Причем:
Странно видеть, что вышло какое-то обновление.
Для обычных C функций лучше CFFI.
https://qr.ae/TWy0op
Boost.Python я вообще не рекомендую использовать ни для чего. Монстроузный и неудобный (удобнее, конечно, чем голый CPython API, но значительно менее удобный чем более современные штуки).
Всё это здорово, конечно, но на самом деле это уже давно не нужно, потому что есть pybind11 и CFFI. Эти инструменты разительно упрощают embedding/extending для Python без возни с медленным ctypes.