Архив автора: admin

Автоматическая загрузка демонов при старте Ubuntu

Ubuntu настолько дружелюбная система, что при установке какого либо сервиса она уже сама добавляем его в автозагрузку. Но иногда приходится самостоятельно редактировать и поправлять как нам надо. Я всегда пользовался и пользуюсь rcconf, но сегодня решил промониторить интернет на предмет чего нового. Ниже опишу установку, настройку и основные команды всего того, что было найдено в сети Читать

Красивый браслет из материи

Красивый браслет из материи

Сегодня в статье мы с вами будем делать браслет из ленты, а вот украшение к нему вы сможете подобрать на свой вкус – это могут быть кружева, цветочки, бусины, декоративные пуговицы, кнопки… Главное — что вы можете сделать несколько таких браслетов и носить их под свои любимые наряды.

Красивый браслет из материи

Читать

Велосипеды на Javascript и jQuery

Интересная статья с habra. Полезно знать каждому.

«В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
Безусловно количество таких вещей очень и очень велико, поэтому в статье ограничусь лишь некоторыми.»

http://habrahabr.ru/post/149237/

Автор: Sergiy Kamolov
Дата публикации: 2012-08-09T11:02:00.000+03:00

Hardinfo — аналог Everest в Ubuntu (linux)

Hardinfo — это приложение, которое может вывести полную статистику по вашему компьютеру. Hardinfo обладает простым графическим интерфейсом, в котором разберется, наверное, каждый. Помимо того, что Hardinfo выводит список устройств, он еще позволяет тестировать их производительность. Если Вы ищите способ узнать состав компьютера, то Hardinfo — это то, что Вам нужно.

Читать

Числа в Python 3

Что приходит в голову при словах «числа в Питоне?»

int и float. Если речь идет о Python 2 — еще и упразднённый long. Наверное, вспомнится очень мало где используемый complex.

Я же хочу рассказать о Decimal и Fraction.

Decimal

Просто незаменим, если нужно считать деньги. Представим, что нам нужно работать с гривной (это такая украинская валюта, с точки зрения рассматриваемого вопроса ничем не отличающаяся от рубля, евро или доллара). Сотая часть гривны называется копейкой. Естественно думать, что гривны будут представлены целой частью числа, а копейки — дробной.

Что произойдёт, если для денег мы станем использовать float?

Как я писал в статье: 4 грн 31 коп будут на самом деле иметь внутреннюю запись 4.3099999999999996. Да, при печати всё показывается нормально если у вас Python 2.7+ — но внутри это всё же чуть-чуть иное число!

И если работать с такими числами (складывать, вычитать, делить и умножать) — ошибка будет нарастать и рано или поздно превысит копейку, а потом счет пойдет и на гривны. Чем больше операций — тем выше ошибка.

В результате дебет перестаёт сходиться с кредитом, бухгалтерия встаёт на уши и разработчик получает большую проблему на свою голову (случай из жизни моего друга).

Чтобы этого избежать, нужно использовать decimal — который никогда ничего не теряет.

Внутри decimal представлен как знак, набор цифр и положение десятичной точки — т.е. нет никакого округления.

Использование очень простое:

>>> from decimal import Decimal
>>> Decimal("4.31")
Decimal('4.31')
>>> Decimal("4.31") + Decimal("1.10")
Decimal('5.41')

Все стандартные операции над decimal работают так же хорошо, как и с просто числами.

К слову, базы данных как правило имеют встроенную поддержку этого типа, а драйвера DBAPI и ORM вроде Django и SQLAlchemy тоже умеют работать с decimal.

К сожалению, этого базиса недостаточно, а документация, исчерпывающе полная, — не содержит простых ясных инструкций для ленивого программиста.

Пример:

>>> Decimal("1.10") / 3
Decimal('0.3666666666666666666666666667')

Ой! Зачем так много цифр, ведь у нас гривна с копейками?!!

Дело в том, что помимо Decimal есть еще и Context. По умолчанию у него точность в 28 чисел в дробной части, что явно многовато для валюты. Настроим на 2 знака:

>>> from decimal import getcontext
>>> getcontext().prec = 2
>>> Decimal('1.10') / 3
Decimal('0.37')

Уже лучше.

Правила округления тоже задаются контекстом. По умолчанию это ROUND_HALF_UP — округлять вверх, если цифра пять и больше. Как в школе учили. Можно настроить и другой способ — читайте документацию. Еще можно указать, чтобы при разных ситуациях (потеря точности или бесконечность в результате, например) генерировалось исключение а не происходило округление. Кому надо — пусть изучает эту самую документацию, ключевое слово trap.

Вернемся к наиболее распространенным задачам.

Что делать, если часть вычислений нужно проводить с точностью «до копеек», а некоторые (например, то же сведение баланса и подсчет налогов) — до сотых долей копеек?

Наиболее практичный способ — создание своего контекста и применение его в with statement:

>>> from decimal import Context, localcontext
>>> with localcontext(Context(4)):
... print(repr(Decimal("1.10") / 3))
Decimal('0.3667')

Округление:

>>> Decimal('1.12').quantize(Decimal('0.1'))
Decimal('1.1')
>>> Decimal('1.16').quantize(Decimal('0.1'))
Decimal('1.2')

Внимание! Округлять можно только до той максимальной точности, которая позволена текущим контекстом. Сейчас у нас глобальный контекст имеет точность 2.

>>> getcontext().prec = 2
>>> Decimal('1.10').quantize(Decimal('0.000001'))
Traceback (most recent call last):
...
decimal.InvalidOperation: quantize result has too many digits for current context

Вот и всё.

За рамками статьи осталось многое. Моя цель — дать необходимый минимум знаний, требуемый для работы с денежными единицами. Остальное, повторюсь ещё раз, найдете в документации — она большая и исчерпывающая, содержит описание многих дюжин доступных функций.

И, тем не менее, изложенного достаточно для практически любой повседневной работы.

Важное дополнение. Изначально decimal был написан на чистом питоне. Т.е. корректно считал, но делал это довольно медленно. Не

GTK+ UVC Viewer — запись с web-камеры в Ubuntu

GUVCViewer (GTK+ UVC Viewer) — простое графическое приложение для аудио/видео захвата, работающее с драйвером UVC (UVC драйвер (Universal Video Class) — драйвер, позволяющий USB-устройствам, например веб-камерам, взаимодействовать с операционной системой компьютера). Приложение основано на luvcview (USB Video Class grabber) с использованием guvcview / GTK2 графического интерфейса. GUVCViewer имеет интуитивно понятный и удобный графический интерфейс (GUI) для просмотра и сохранения видео с устройств, поддерживаемых Linux драйвером UVC, хотя поддерживается работа с большинством Video4Linux2 совместимых устройств. Разрабатывается в рамках проекта BerliOS. Читать