Главная

Wednesday, 19 April 2017

Problem Solving with Algorithms and Data Structures Using Python.

Всем привет.

Как говорится, без теории никуда.

Недавно мне посоветовали для изучения книгу Problem Solving with Algorithms and Data Structures Using Python авторов Брэда Миллера и Дэвида Рэнума, Luther College. Ее можно (и нужно) читать в оригинале всем кто действительно хочет стать толковым программистом. Ибо в книге хоть и используются примеры на языке Python, но даны и основы программирования:


• обзор понятий “информатика”, “программирование” и “решение задач”.
• понять, что значит “абстракция”, и какую роль она играет в процессе решения задач.
• понять и воплотить идею абстрактного типа данных.
• обзор языка программирования Python.

Там же  подробно описаны популярные нынче сортировки данных, рекурсия, построение графов и деревьев.

Если вашего уровня английского языка не хватает для вразумительного чтения то перевод учебника Problem Solving with Algorithms and Data Structures Using Python находится здесь.

Автор перевода предлагает для начала склонировать репозиторий:

Что бы все заработало, очень важно настроить виртуальное окружение. Чтобы не засорять собственную систему, вы можете в директории с репозиторием создать виртуальное окружение .env

Создать виртуальное окружение можно командой:
virtualenv .env

Предварительно установите пакет python-virtualenv (если вы работаете в Debian based дистрибутивах).

Сборка всех книг, включенных в проект осуществляется командой:
paver allbooks
в корне проекта.

Все сборочные образы книг в формате html включая изображения и необходимые для интерактивной работы скрипты появятся в директории static. Каждая из книг соответствует директории с названием книги.

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

Скачать архив учебника можно отсюда: https://github.com/aliev/runestone/archive/gh-pages.zip

Для чтения онлайн книга доступна по адресу: https://aliev.github.io/runestone/

Успехов.

Thursday, 13 April 2017

Sheldon Cooper's clock.

Всем привет.

Хорошие идеи имеют свойство приходить в несколько голов независимо.

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

И вот совершенно случайно нахожу в сети часы некоего Sheldon Cooper-a. Вот такая  у него математика.


Если поискать то можно найти такие часы и на другую тематику, геометрию или еще покруче. Да так чтобы ваши гости вообще не догадались что это у вас - часы или барометр.) Вот так вот нехитрую идею можно поставить на коммерцию. Я не знаю человек это или только киногерой.

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

Удачных вам идей.

Wednesday, 12 April 2017

Поиск по подсветке текста в документе.

Всем привет.

Какой формат круче - DOCX или PDF? А может так нельзя спрашивать?

Может и нельзя, но вот какая штука. Занялся я чтением технический литературы в электронном виде. Основной формат моих книжек это формат PDF. А я когда читаю люблю делать пометки на будущее. В обычных книгах это делаю карандашом, а здесь просто выделяю цветом. В Acrobat-e это инструмент Highligh Text Tool.

И тут  меня посещает мысль что эти пометки надо как то уметь искать  в будущем, не листать же всю книгу глазами. Целесообразнее между ними двигаться прыжками. А не тут то было. Оказывается ни Adobe Acrobat ни Adobe Reader этого не умеют делать. Ужас.

Вот полюбуйтесь сами - даже расширенный поиск не предоставляет такого критерия.



Может есть читалка формата PDF от третьих фирм которая это позволяет делать? Пока я такой не знаю. А вот в MS Word в документе формата DOCX такая подсветка  текста ищется на раз два.


Так что сегодня 1:0 в пользу DOCX.

Sunday, 9 April 2017

Files turnover in VirtualBox.

Hello everybody.

I'm testing some feautres with Python. And I have case for it  with Ubuntu or CentOS. And my Ubuntu is working with Oracle VirtualBox. It isn't complicated layout. It all is working well.

So I, maybe, have one task - how can I send or receive some files to/from Ubuntu as Python examples?

I found four decisions of this task.

At the first - I can use the "shared Clipboard" option in VirtualBox: Settings-General-Advanced. So you can see on the picture


 
 At the second - I can use the "shared folders" option in VirtualBox too: Settings-Shared folders.

Friday, 7 April 2017

Попытка подружить Windows7 с Ubuntu.

Всем привет.

Для полигона поставил месяц тому Ubuntu второй системой к Windows 7. Ubuntu себя повела хорошо, загрузчик GRUB четко прописал себя главным не забыв про Windows 7.

А вот на выходные случилась неприятность - полетела Windows 7. Скорее ее бутлоадер MBR или что-то похуже. Конечно рецепты по восстановлению загрузчика Windows 7 после установки Ubuntu  в сети есть. 

Мне понравился этот 

Но картинок больше здесь

Итак на первом шаге надо сделать резервную копию загрузчика самой Ubuntu:
dd if=/dev/sda3 of=/linux.boot bs=512 count=1

На этом шаге, как оказалось позже, я ошибся с разделом и файл linux.boot не создался. Но этом было не самое худшее.

На втором шаге который предполагает реанимацию бутлоадера Windows 7 ни один из нижеследующих вариантов не помог.

Wednesday, 5 April 2017

Руководство по оптимизации JPG.

Добрый день!



Очередное детальное руководство от команды Айри.рф  про то как правильно оптимизировать JPEG изображения на сайте без видимых потерь качества, чтобы сократить их размер до 50%. Замечу что первые 5 методов доступны даже новичку, с остальными следует быть особо осторожными.
Формат JPEG в силу DCT-кодирования и таблиц Хаффмана изначально подразумевает потерю качества. И даже сохранение в режиме "100%" не устранит потерь. Но эти потери можно сделать незаметными для глаза или допустимыми в конкретном случае использования. Или использовать некоторые особенности формата, чтобы кодировать JPEG совсем без потерь.

1. Оптимизация для Web
Оптимизация для Web
Базовый совет: при сохранении в любом редакторе (Photoshop, Gimp и др.) используйте отдельную опцию «Сохранить для Web». Это сделает изображение совместимым по цветовой палитре со всеми браузерами. А также удалит из него некоторую дополнительную информацию (например, превью-изображения), которая необходима обычным редакторам для быстрого просмотра множества изображений, но совершенно не подходит браузерам (которые не используют превью в JPEG-изображениях ни в каком виде).

Естественно, что фактические размеры изображения должны соответствовать максимальным размерам, используемым на сайте. Наиболее частая ошибка в работе с картинками на сайте: взять их в исходном виде, без приведения к нужным размерам. Это многократно увеличивает размер сайта и существенно замедляет его загрузку.

Monday, 3 April 2017

Руководство по оптимизации PNG.


Всем привет.

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

Примерно четверть изображений на сайтах — это именно PNG. Понимание формата и средств его оптимизации позволит сделать сайты быстрее за счет меньшего размера PNG-изображений.

PNG-формат предполагает отсутствие потерь в качестве при сохранении изображений (да, он позволяет иметь полноцветное изображение с полупрозрачностью БЕЗ потерь качества). Но для сохранения этого преимущества не обязательно проигрывать в размере. В некоторых случаях — например, градиентные или малоцветные изображения — PNG является наиболее выгодным форматом с точки зрения размера.
1. Выбор правильного формата
Далеко не всегда PNG является оптимальным форматом для представления изображения. Если количество цветов в PNG очень большое, то оптимальнее использовать JPEG формат. Но не всегда это получается сделать из-за поставленной технической задачи: например, требуется обеспечить прозрачность или полупрозрачность для совместимости с фоном.
В этом случае стоит рассмотреть вариант либо совмещения PNG-изображения с фоном для сохранения в формате JPEG, либо генерации набора изображений (с различными фонами) — опять-таки для финального сохранения в формате JPEG. В большинстве случаев полноцветное изображение в JPEG будет в 2-3 раза меньше по размеру PNG-эквивалента.
2. Удаление чанков
Удаление чанков
Существует огромное количество программ для оптимизации PNG, и большинство из них делает примерно одно и то же: подбирают различные наборы фильтров для уменьшения размера основной, цветовой информации. Но есть еще несколько подходов для уменьшения размера PNG-изображений, которые также нужно иметь в виду.
Первый из них: это удаление мусора в мета-информации (неиспользуемых чанков) и в используемой палитре (неиспользуемых цветов). Важными являются IHDR, IDAT и IEND-чанки. Все остальные содержат вспомогательную информацию (но, например, удаление чанка gAMA приводило к «порче» изображений в браузере Safari старых версий). Чанки с комментариями, датой изменения и цветовыми профилями (для полиграфии) можно смело вычищать: для браузера это бесполезный набор символов. Удалить чанки можно при помощи утилиты ExifTool.

Saturday, 1 April 2017

Сжатие данных для страниц вашего web-сайта.


Добрый день!

Сегодня команда Айри подготовила детальный обзор и руководство по внедрению всех доступных на сегодняшний день методов сжатия данных. Это позволяет сократить размер текстовой части страниц вашего web-сайта до 90%.
 
Gzip-сжатие
 
Размер передаваемых данных является основным фактором, влияющим на «тяжесть» сайта, на его время загрузки. Все меры, обеспечивающее меньший объем передаваемых данных при сохранении объема информации или качества сайта, являются наиболее приоритетными при ускорении сайта. А методики, которые могут позволить такие меры применять, ценятся на вес золота. Сегодня мы разберемся, зачем нужно сжатие (или архивирование) данных на сайтах и как его правильно настроить.
 
На текущий момент существует большое количество алгоритмов сжатия (архивирования) данных, которые можно разделить на три основные группы:
 
1. Поточные алгоритмы. К этой группе относятся алгоритмы семейств RLE (run-length encoding), LZ* и др. При кодировании данных используется не информация о частотах символов в сообщении, а информация о последовательностях, встречавшихся ранее. Так работает, например, gzip (LZ77), bzip и compress.
 
2. Алгоритмы статистического (энтропийного) сжатия. Эта группа алгоритмов сжимает информацию, используя частоты, с которыми различные символы встречаются в сообщении. К алгоритмам этой группы относятся алгоритмы арифметического и префиксного кодирования (с использованием деревьев Шеннона-Фанно, Хаффмана, секущих). Алгоритм сжатия данных brotli использует, в том числе, кодирование Хаффмана совместно с LZ-алгоритмами.
 
3. Разностные алгоритмы. В отдельную группу можно выделить алгоритмы преобразования информации (включая использование словарей). Алгоритмы этой группы часто не производят непосредственного сжатия информации, но их применение значительно упрощает дальнейшее сжатие с использованием поточных и энтропийных алгоритмов. Алгоритм SDCH (VCDIFF) использует именно словари и разностное кодирование информации.
 
Поточные алгоритмы