Pull to refresh
2
0
Чиченин Александр @sovnarkom

User

Send message

Распознавание изображений. Алгоритм Eigenface

Reading time6 min
Views66K

Введение



Я продолжаю серию статей посвящённую тематике pattern recognition, computer vision и machine learning. Сегодня я вам представляю обзор алгоритма, который носит название eigenface.



В основе алгоритма лежит использование фундаментальных статистических характеристик: средних (мат. ожидание) и ковариационной матрицы; использование метода главных компонент. Мы также коснёмся таких понятий линейной алгебры, как собственные значения (eigenvalues) и собственные вектора (eigenvectors) (wiki: ru, eng). И вдобавок, поработаем в многомерном пространстве.
Как бы страшно всё это не звучало, данный алгоритм, пожалуй, является одним из самых простых рассмотренных мною, его реализация не превышает нескольких десятков строк, в тоже время он показывает неплохие результаты в ряде задач.

Мне не страшно.
Total votes 132: ↑127 and ↓5+122
Comments48

Как разобрать Dell Inspiron 1525 и ничего не сломать ;)

Reading time6 min
Views71K

Конец уже содержится в начале. Джордж Оруэлл, 1948 год



Это не обычный обзор ноутбука, а скорее обзор некоторых технических возможностей и, главное, некая инструкция по полной безболезненной разборке/сборке.
Во время обзора будем стараться рассматривать его преимущества и недостатки.
Подопытный ноутбук Dell Inspiron 1525

как разобрать ноутбук
(осторожно, более 30 фото)
Приступим...
Total votes 62: ↑54 and ↓8+46
Comments71

ИИ — Сделай сам

Reading time8 min
Views28K
Очень приятно, что тема искусственного интеллекта не заглохла, а продолжает развиваться. Здесь уже набралось множество статей с прекрасными идеями и интересными комментариями. Глядя на все это многообразие, захотелось вернуться к начатой полгода назад серии публикаций и поделиться некоторыми возникшими с тех пор мыслями и рассуждениями. Все это я попытался скомпоновать в одну большую статью, которая описывает все аспекты того, как будет работать конечный продукт, и содержит соображения по его реализации.
Читать дальше →
Total votes 80: ↑69 and ↓11+58
Comments176

Как продлить жизнь (ресурс) литий-ионной аккумуляторной батареи

Reading time4 min
Views109K

Долго думал, как преподнести материал, и, в конце концов, решил, что его нужно подавать в виде отдельных фактов, касающихся жизни реальных литий-ионных батарей. Так что начнем…


Литий-ионные аккумуляторы больше страдают от процесса «старения» (ухудшение характеристик на протяжении времени), чем от циклирования. Это означает, что большинство аккумуляторов не может служить свыше 5 лет при обычных условиях эксплуатации (оптимистичный прогноз). Мораль такова — если покупаете литий-ионный аккумулятор, внимательно относитесь к дате изготовления — при полугодовой давности вы потеряете 10% от заявленого ресурса.


Старение батарей ускоряется при работе или хранении в жарких условиях – смотри таблицу для литий-кобальтовых аккумуляторов (для литий-марганцевых и литий-железных батарей результаты немного лучше)



Деградация характеристик литий-кобальтовых аккумуляторов всвязи с температурой хранения
Температура, °C 40% уровень заряда (рекомендуемый уровень заряда) 100% уровень заряда (поддерживается пользователями при работе)
0°C
98% через 1 год
94% через 1 год
25°C
96% через 1 год
80% через 1 год
40°C
85% через 1 год
65% через 1 год
60°C
75% через 1 год
60% через 3 месяца

Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments79

Использование библиотеки для полнотекстового поиска Xapian в Python

Reading time4 min
Views10K
Сегодня, в эпоху Web 2.0, когда контента на сайтах становится все больше и больше, перед разработчиками встает задача реализации полнотекстового поиска.

Вариантов немного:
  • использовать виджеты от разработчиков поисковых систем (Google, Яндекс, etc): легко внедрить, привычный для пользователя интерфейс, поддержка морфологии, исправление слов по словарю, возможно более быстрая индексация сайта поисковыми системами, но, как правило ограниченные возможности по настройке и неизбежное запаздывание индексации;
  • использовать встроенные в СУБД средства (например FULLTEXT-индекс для MySQL): достаточно легко внедрить, актуальный поисковый индекс, полный контроль над настройкой и внешним видом, но, чаще всего очень низкая производительность на больших объемах данных, отсутствие учета морфологии, либо, в худшем случае, полное отсутствие подобных средств в СУБД;
  • использовать отдельную библиотеку/систему полнотекствого поиска.

Третий вариант кажется самым лучшим, ведь он сочетает достоинства двух других вариантов. Правда и здесь не обошлось без недостатков — библиотека требует установки, иногда даже запуска демона (например Sphinx), что может быть неприемлемо.

Решений существует масса, у каждого есть свои достоинства и недостатки. Я бы хотел подробнее остановиться на относительно малоизвестной библиотеке Xapian.
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments19

Не используй человека-клавиатуру

Reading time3 min
Views2.3K
image
Есть несколько вещей, которые раздражают меня больше, чем когда мне не по своей воле приходится принимать участие в создании привычки (или культуры), которая заставляет относиться к людям как к компьютерным клавиатурам. Люди не должны восприниматься как кнопки, на которые можно нажать, чтобы вызвать определенные функции.

Что я подразумеваю под термином «человек-клавиатура»? Представьте себе на минуту, что вместо набора на клавиатуре или использования мыши, вам приходилось бы просить человека выполнить какую-нибудь задачу.
«Зайди в мою электронную почту».
«Покажи первое сообщение».
«Прокрути немного вниз».
«Прокрути чуть больше вниз».
«Я хочу ответить на это письмо».
Представляете себе, насколько страшное воздействие на производительность и удобство использования компьютером окажет такой интерфейс! Для такой простой задачи как «проверка e-mail» требуется 2 человека – вы и «человек-клавиатура», что повлечет за собой двойные затраты, двойные ошибки, проблемы в коммуникации между ними. Тем не менее, несмотря на глупость этого примера, похожие ситуации возникают довольно часто в бизнесе, при взаимодействии между сотрудниками, которые решают и ставят задачи друг друга.
Читать дальше →
Total votes 86: ↑67 and ↓19+48
Comments38

Уязвимость связки PHP+nginx с кривым конфигом

Reading time1 min
Views60K

Summary


Announced: 2010-05-20
Credits: 80sec
Affects: сайты на ngnix+php с возможностью загрузки файлов в директории с fastcgi_pass




Background


Зачастую How-To по настройке связки nginx с php-fpm / php-cgi есть подобные строчки:

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}

Читать дальше →
Total votes 163: ↑146 and ↓17+129
Comments109

Сравнение кодеков libtheora и x264

Reading time5 min
Views8.9K
После того, как Youtube и Vimeo представили свои тестовые страницы в HTML5, вновь пошла волна разговоров, о том, что же лучше: H.264 или Ogg Theora.

Я, конечно, за свободный веб. Но выводы о том, что Theora превосходит H.264 по качеству, сделанные многими людьми по результатам двух сомнительных сравнений (раз и два) весьма поспешны.
Медведю плохо

В первом сравнении вообще не представлено ни тестового видео, ни каких-либо настроек кодеков. Во втором сказано, что для H.264-кодека взят заведомо отстойный пресет с Youtube, а настройки Теоры умалчиваются.

Так я решил сам проверить, что есть Ogg Theora и на что этот кодек способен.
Графики, скриншоты, трафик
Total votes 280: ↑272 and ↓8+264
Comments247

Материалы продвинутого уровня по Питону

Reading time5 min
Views44K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее
Total votes 136: ↑133 and ↓3+130
Comments23

Переезд в Агаве

Reading time3 min
Views1.9K
Это как вообще, нормальная, общемировая практика или что?!

«
Уважаемые пользователи!

В связи с изменением стоимости размещения серверов в Агава-2 мы вынуждены перевезти большую часть оборудования в наш дата-центр «Агава-Север» в городе Долгопрудном: www.renter.ru/dc.shtml

В данный момент составляется график транспортировки серверов. Переезд будет осуществляться 14го, 18го и 21 января.

Просим вас оперативно (до 13го января) прислать на col@agava.com информацию, необходимую для транспортировки:
— удобную для вас дату переезда (14го, 18го и 21 января);
— номер сервера;
— авторизационные данные.

Если информация с пожеланиями по переезду не будет предоставлена вовремя, мы будем вынуждены назначить дату по своему усмотрению. Во время переезда сервера не будут доступны ориентировочно с 7 до 19 часов.

Для успешной работы сервера в новом дата-центре потребуется смена сетевых настроек для сервера. Необходимые настройки для серверов, находящихся на нашем администрировании, будут произведены силами наших специалистов. Для серверов, находящихся на собственном администрировании, необходимые настройки будут высланы индивидуально на контактный e-mail.
»

Может я не понимаю чего, но мне кажется это просто жесть. Переезжать с 7 до 19 часов, то есть весь день. Там есть сервера на которых минимум по 50 клиентов.

Что думаете?
Читать дальше →
Total votes 81: ↑60 and ↓21+39
Comments234

mod_wsgi 3.1 вышел 25 ноября

Reading time2 min
Views840
Что было нового в версии 3.0:
  1. Поддержка питона 3.1 и выше.
  2. Опции «process-group», «application-group», «callable-object» и «pass-authorization» могут быть размещены в директивах WSGIScriptAlias и WSGIScriptAliasMatch
  3. Если клиент обрывает соединение в процессе обработки итератора вместо «бросания исключения» теперь записывается отладочное сообщение в лог
  4. В директиву WSGIDaemonProcess добавлена опция «chroot», позволяющая запускать приложения более изолированно
  5. Добавлена глобальная директива WSGIPy3kWarningFlag, при использовании python2.6 будут выдаваться предупреждения
  6. Исправлена «assertion error» если питон был скомпилирован с директивой Py_DEBUG
  7. Добавлена поддержка «Content-Type: chunked» в запросе (директива «WSGIChunkedRequest»). Данные склеиваются и передаются приложению на обработку.
  8. Значения HTTP заголовков теперь передаются в справочнике окружения, для хуков доступа, авторизации и аутентификации
  9. Флаг «flag wsgi.run_once» не выставляется в True, при работе в режиме демона, когда «maximum-requests» установлен в 1. В случае использования множества потоков, параметр «maximum-requests» проверяется только после завершения обработки запроса, поэтому нет гарантии, был ли выполнен только один запрос
  10. Теперь интерпретаор инициализируется не в родительском процессе, а только после того, как будет создан дочерний
  11. Сообщения из модулей-расширений на C попадают в логи виртуальных хостов, как и положено, а не в общий лог, как было ранее
  12. Теперь невозможно писать сообщения в логи «чужих» виртуальных хостов
  13. В режиме демона может производиться внутренняя переадресация с использоваением заголовка «Location» в ответе
  14. В режиме демона может использоваться директива «WSGIErrorOverride», для того, чтобы возвращать стандартные страница ошибок Apache
  15. Добавлена директива «WSGIPythonWarnings» работающая по аналогии с директивой «-W» интерпретатора
  16. В директиву «WSGIDaemonProcess» добавлена опция «cpu-time-limit» определяющая количество процессорного времени, после которого процесс будет перезапущен
  17. В директиву «WSGIDaemonProcess» добавлена опция «cpu-priority» говорящая за себя
  18. Добавлена директива «WSGIHandlerScript» позволяющая определить скрипт, обрабатывающий определённый тип файлов


И ещё множество исправлений и улучшений, о которых можно почитать в оригинале тут: code.google.com/p/modwsgi/wiki/ChangesInVersion0301

Скачать, как обычно можно тут:
code.google.com/p/modwsgi/downloads/list

UPD:
Да, всё работает
./configure --with-python=python3.1 --disable-framework
make && sudo make install
Total votes 26: ↑20 and ↓6+14
Comments8

Растеризация в Inkscape

Reading time2 min
Views3K
Здравствуй, хабранарод!

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

Поводом к написанию данной статьи послужили несколько событий: Внезапное с моей стороны приобщение к этому графическому редактору, и прочтение этой статьи про сам редактор и этого крика бедной верстальщицы

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments13

Mercurial для параллельной работы с несколькими похожими проектами, часть 1

Reading time2 min
Views2.5K

Введение


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

Несколько проектов на одном фреймворке

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

Что же делать?
Читать дальше →
Total votes 34: ↑18 and ↓16+2
Comments9

Как сделать сайт более iPhone-совместимым за 5 шагов

Reading time2 min
Views54K
Тот факт, что iPhone предлагает наиболее развитый мобильный браузер среди мобильных платформ, пожалуй, ни у кого не вызовет сомнений. Однако не все знают, что довольно небольшими усилиями можно сайт сделать еще более дружественным к тем, кто смотрят его на iPhone или iPod Touch.

Ниже предлагаются простые 5 шагов, с которых можно начать, на примере сайта WHOIS Digger.

Шаг 1. Аналог favicon.ico

Когда пользователь создает ссылку на ваш сайт в виде иконки в SpringBoard, iPhone автоматически формирует картинку из скриншота страницы. В результате почти всегда получается неразборчивая каша, которая на гордое звание «иконки для iPhone» никак не тянет. Пропишите этот тег в заголовке страницы:

<link rel="apple-touch-icon" href="res/iphone_icon.png" />

и добавьте соответствующую картинку res/iphone_icon.png размером 57х57 пикселов. iPhone сам добавит скругленные углы и полукруглый блик, сделав вашу иконку похожей на остальные.

Вот так выглядит исходная картинка и иконка на рабочем столе iPhone:


Читать дальше →
Total votes 95: ↑85 and ↓10+75
Comments38

Анализ рынка ноутбуков с помощью Python

Reading time8 min
Views5.5K

Введение



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

Начнём



diy-03-425[1] Для анализа нам необходим набор данных, к сожалению я не смог обнаружить веб-сервисы у российских он-лайн магазинов ноутбуков, поэтому мне пришлось скачать прайс-лист одного из них (я не стану называть его) и вытащить из него цены и основные параметры (по-моему мнению таковыми являются: частота процессора, диагональ монитора, объем оперативной памяти, размер жесткого диска и объем памяти на видео-карточке). Далее я провёл некоторый анализ по следующим вопросам:
Читать дальше →
Total votes 87: ↑79 and ↓8+71
Comments26

Tornado Web Server

Reading time1 min
Views15K


Команда friendfeed.com, недавно присоединившаяся к Facebook, выложила в открытый доступ собственный неблокирующий веб-сервер на Python. Из-за своей неблокирующей природы (используется epoll) сервер легко выдерживает тысячи одновременных подключений. У Tornado есть все шансы стать лучшим выбором для реализации технологии Comet средствами языка Python.

Производительность впечатляет:


Документация (на англ.) — www.tornadoweb.org/documentation
Total votes 62: ↑59 and ↓3+56
Comments38

Хабраподсветка или эксперименты в изолированном окружении Python

Reading time4 min
Views5K
Протестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments11

Ubuntu, KVM и proxy_arp — как обмануть злого провайдера

Reading time3 min
Views8.2K
Одна фирма расположила на колокейшне серверочек для внутренних нужд и сразу купила /30 адреса для соих потребностей. Сконфигурено это было как алиасы (eth0:0, eth0:1 и т.п.). Все работало великолепно, пока по прошествии некоторого времени появилась здравая идея разнести разные сервисы на разные виртуальные машины. Поскольку в качестве хоста использовался Ubuntu Server, то выбор KVM в качестве виртуализатора произошел сам собой. И здесь, и в остальном нете уже немало умных слов было написано по установку и настройку KVM и сетевого окружения, не буду на этом останавливаться, расскажу лишь про маленькие детские грабельки, удобно подложенные со стороны провайдера.
Продолжение повествования
Total votes 54: ↑48 and ↓6+42
Comments33

Чиним раскладку Ильи Бирмана для MacOS

Reading time1 min
Views3.7K
Когда я скачал около полугода назад типографскую раскладку Ильи Бирмана — я столкнулся со следующей проблемой: у меня не было «ё» в русской раскладке и, о ужас, «~» и «`» в английской.

В те времена я был ещё под сильным впечатлением от Убунту и первым делом полез править keylayout файлы. Не знаю как точно, но через некоторое время я получил методом проб и ошибок рабочий вариант.

Вчера мне потребовалось повторить все эти процедуры, но вместо ковыряния в конфигах я нашёл утилиту, которая позволяет в оконном интерфейсе создавать и редактировать раскладки (многие, конечно о ней уже знают):
Скачать утилиту можно с её официального сайта: scripts.sil.org/ukelele

Исправленная версия раскладки


Подправленную мною версию можно скачать (11 Кб).

Установка аналогична оригинальной версии:
Скачайте архив и распакуйте его содержимое в каталог /Library/Keyboard Layouts/
После этого включите раскладки в System Preferences → International → Input Menu
  • Russian — Ilya Birman Typography PS/2
  • English — Ilya Birman Typography PS/2

После этого советую перезагрузиться.

Замечание

Если возникнут проблемы — оригинальную раскладку Бирмана, наверное, лучше удалить.
Total votes 10: ↑8 and ↓2+6
Comments9

Порядок разрешения методов в Python

Reading time15 min
Views173K
В этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments12
1

Information

Rating
Does not participate
Location
Воронеж, Воронежская обл., Россия
Date of birth
Registered
Activity