На самом деле OSS приложения для OBD вполне себе существуют, например AndrOBD. Но на F-Droid оно такое пока одно, надеюсь, что скоро их станет как минимум 2 ))
Самый простой ответ - так вышло, случайный побочный эффект. Эволюция штука странная, например, возвратный гортанный нерв расположен так не с какой-то целью, а только потому, что “так вышло” (да простят меня биологии, если я что-то напутал)
Есть ещё OpenKeyChain (есть так же и в стандартных магазинах приложений), если я правильно понял идею автора - очень похожая штука в части шифрования текста. Можно выделить текст в поле ввода и зашифровать (не работает, если приложение как-то по своему обрабатывает контекстное меню).
Увы, что есть. В Python стандартная перегрузка (как в языках с ad-hoc полиморфизмом) принципиально невозможна. А вообще, мне кажется, на любом языке можно писать плохо, хоть на Python, хоть на Java, хоть на C. Просто похой код на Java быстрее даст о себе знать, чем плохой код на Python. С этой точки зрения, к сожалению, простота Python играет с ним злую шутку. Многие просто забивают на то, чтобы разобраться, как сделать лучше исходя из принципа - "работает и ладно, что ещё от этого простого языка ждать"?
https://ru.wikipedia.org/wiki/Объект_первого_класса Вспомните набившую оскомину фразу "В Python все есть объект". Функция - тоже объект. Он создаётся один раз, при этом один раз задаются дефолтные значения.
Потому что функция в Python - объект первого класса. Объявление функции с помощью оператора def создаёт этот объект и он начинает существовать в своей области видимости с проинициализированными значениями по-умолчанию. При дальнейших вызовах этой функции используется этот самый ранее созданный объект функции. Так что тут как раз все очень даже логично.
Если continuous представить, не как действие, а как состояние, то становится понятным зачем там нужны эти is, was и прочие. I am working - Я есть работающий I was working - Я был работающим
@DRoman0v, в обзорах на эти наушники часто утверждается, что шумодав работает на столько эффективно, что внешние звуки просто исчезают. В вашей статье заявление не столь категоричное, но и про шумодав написано не очень много. Как он вам вообще?
Долго не отвечал - был в шоке. Получается, что я был не прав, однако не могу одобрить такого решения. От себя я бы всё-таки рекомендовал использовать OrderedDict там, где важен порядок ключей, этим вы как бы говорите коллегам - "тут нам очень важен порядок ключей, и это не просто так". Речь, конечно же, про код, который нужно сопровождать, в одноразовых скриптах это не важно.
Благодаря динамической природе Python, в нём не видна суть кортежа - благодаря этому он воспринимается как "просто неизменяемый список". Однако суть его совсем в другом, и это видно только в статических языках, например в Rust. Я воспринимаю эту разницу так: список - это изменяемая последовательность однородных данных, кортеж - это неизменяемый набор разнородных данных. Он потому неизменяемый, так как данные разнородны и в статических языках мы не можем заменить тип элемента кортежа. В Python эта разница размывается, так как в списке могут быть ссылки на объекты разных типов. В этой статье этот момент упоминался:
Используйте кортеж, когда данные — это структура
На мой взгляд, это основное предназначение кортежа, как типа данных. Но в Python его, конечно же, можно использовать и в качестве неизменяемого списка.
На самом деле OSS приложения для OBD вполне себе существуют, например AndrOBD.
Но на F-Droid оно такое пока одно, надеюсь, что скоро их станет как минимум 2 ))
Планируется ли релизиться на F-Droid? Кстати, там есть ELM327 Emulator, вдруг будет полезно?
Ещё злые языки поговаривают, что первый запуск этого носителя должен был состояться ещё 4 года назад, но постоянно откладывался. Врут конечно!
https://f-droid.org/packages/io.nekohasekai.sfa
Самый простой ответ - так вышло, случайный побочный эффект. Эволюция штука странная, например, возвратный гортанный нерв расположен так не с какой-то целью, а только потому, что “так вышло” (да простят меня биологии, если я что-то напутал)
Есть ещё OpenKeyChain (есть так же и в стандартных магазинах приложений), если я правильно понял идею автора - очень похожая штука в части шифрования текста. Можно выделить текст в поле ввода и зашифровать (не работает, если приложение как-то по своему обрабатывает контекстное меню).
Shattered Pixel Dungeon
Бесплатная, без рекламы, рогалик. Можно зависнуть очень на долго
Если нормально писать, то можно и большие проекты с долгим сроком сопровождения.
Увы, что есть. В Python стандартная перегрузка (как в языках с ad-hoc полиморфизмом) принципиально невозможна.
А вообще, мне кажется, на любом языке можно писать плохо, хоть на Python, хоть на Java, хоть на C. Просто похой код на Java быстрее даст о себе знать, чем плохой код на Python. С этой точки зрения, к сожалению, простота Python играет с ним злую шутку. Многие просто забивают на то, чтобы разобраться, как сделать лучше исходя из принципа - "работает и ладно, что ещё от этого простого языка ждать"?
Есть singledispatch, но это не полноценная замена перегрузке:
Некорректно писать, что компилятор Rust "ничего не гарантирует" в блоке
unsafe. Внутри него он позволяет ровно 5 действий:Dereference a raw pointer.
Call an unsafe function or method.
Access or modify a mutable static variable.
Implement an unsafe trait.
Access fields of unions.
Все остальные проверки работают точно так же.
https://ru.wikipedia.org/wiki/Объект_первого_класса
Вспомните набившую оскомину фразу "В Python все есть объект". Функция - тоже объект. Он создаётся один раз, при этом один раз задаются дефолтные значения.
Потому что функция в Python - объект первого класса. Объявление функции с помощью оператора
defсоздаёт этот объект и он начинает существовать в своей области видимости с проинициализированными значениями по-умолчанию.При дальнейших вызовах этой функции используется этот самый ранее созданный объект функции. Так что тут как раз все очень даже логично.
Если continuous представить, не как действие, а как состояние, то становится понятным зачем там нужны эти is, was и прочие.
I am working - Я есть работающий
I was working - Я был работающим
Я не лингвист, если что
Авария Союз МС-10 2018 года
Если коротко - нештатное отделение бокового блока, потеря стабилизации, экипаж не пострадал
Как-то очень давно пробовал подобный чай. У него был особый (слабительный) эффект после употребления. Может именно в этом смысл подобных чаёв?
@DRoman0v, в обзорах на эти наушники часто утверждается, что шумодав работает на столько эффективно, что внешние звуки просто исчезают. В вашей статье заявление не столь категоричное, но и про шумодав написано не очень много. Как он вам вообще?
Вы, случайно, не к iPhone подключаете? Как я понимаю, Apple не поддерживает LDAC
Долго не отвечал - был в шоке. Получается, что я был не прав, однако не могу одобрить такого решения.
От себя я бы всё-таки рекомендовал использовать OrderedDict там, где важен порядок ключей, этим вы как бы говорите коллегам - "тут нам очень важен порядок ключей, и это не просто так". Речь, конечно же, про код, который нужно сопровождать, в одноразовых скриптах это не важно.
Благодаря динамической природе Python, в нём не видна суть кортежа - благодаря этому он воспринимается как "просто неизменяемый список". Однако суть его совсем в другом, и это видно только в статических языках, например в Rust.
Я воспринимаю эту разницу так: список - это изменяемая последовательность однородных данных, кортеж - это неизменяемый набор разнородных данных. Он потому неизменяемый, так как данные разнородны и в статических языках мы не можем заменить тип элемента кортежа. В Python эта разница размывается, так как в списке могут быть ссылки на объекты разных типов.
В этой статье этот момент упоминался:
На мой взгляд, это основное предназначение кортежа, как типа данных. Но в Python его, конечно же, можно использовать и в качестве неизменяемого списка.
ИМХО. Критика приветствуется.