Как стать автором
Обновить
2
0
Чиченин Александр @sovnarkom

Пользователь

Отправить сообщение

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

Время на прочтение6 мин
Количество просмотров66K

Введение



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



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

Мне не страшно.
Всего голосов 132: ↑127 и ↓5+122
Комментарии48

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

Время на прочтение6 мин
Количество просмотров71K

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



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

как разобрать ноутбук
(осторожно, более 30 фото)
Приступим...
Всего голосов 62: ↑54 и ↓8+46
Комментарии71

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

Время на прочтение8 мин
Количество просмотров28K
Очень приятно, что тема искусственного интеллекта не заглохла, а продолжает развиваться. Здесь уже набралось множество статей с прекрасными идеями и интересными комментариями. Глядя на все это многообразие, захотелось вернуться к начатой полгода назад серии публикаций и поделиться некоторыми возникшими с тех пор мыслями и рассуждениями. Все это я попытался скомпоновать в одну большую статью, которая описывает все аспекты того, как будет работать конечный продукт, и содержит соображения по его реализации.
Читать дальше →
Всего голосов 80: ↑69 и ↓11+58
Комментарии176

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

Время на прочтение4 мин
Количество просмотров109K

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


Литий-ионные аккумуляторы больше страдают от процесса «старения» (ухудшение характеристик на протяжении времени), чем от циклирования. Это означает, что большинство аккумуляторов не может служить свыше 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 месяца

Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии79

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

Время на прочтение4 мин
Количество просмотров10K
Сегодня, в эпоху Web 2.0, когда контента на сайтах становится все больше и больше, перед разработчиками встает задача реализации полнотекстового поиска.

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

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

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

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

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

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

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

Время на прочтение1 мин
Количество просмотров60K

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;
}

Читать дальше →
Всего голосов 163: ↑146 и ↓17+129
Комментарии109

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

Время на прочтение5 мин
Количество просмотров8.8K
После того, как Youtube и Vimeo представили свои тестовые страницы в HTML5, вновь пошла волна разговоров, о том, что же лучше: H.264 или Ogg Theora.

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

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

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

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

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

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

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

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

Подробнее
Всего голосов 136: ↑133 и ↓3+130
Комментарии23

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

Время на прочтение3 мин
Количество просмотров1.9K
Это как вообще, нормальная, общемировая практика или что?!

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

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

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

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

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

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

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

Что думаете?
Читать дальше →
Всего голосов 81: ↑60 и ↓21+39
Комментарии234

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

Время на прочтение2 мин
Количество просмотров839
Что было нового в версии 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
Всего голосов 26: ↑20 и ↓6+14
Комментарии8

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

Время на прочтение2 мин
Количество просмотров3K
Здравствуй, хабранарод!

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

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

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии13

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

Время на прочтение2 мин
Количество просмотров2.5K

Введение


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

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

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

Что же делать?
Читать дальше →
Всего голосов 34: ↑18 и ↓16+2
Комментарии9

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

Время на прочтение2 мин
Количество просмотров54K
Тот факт, что 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:


Читать дальше →
Всего голосов 95: ↑85 и ↓10+75
Комментарии38

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

Время на прочтение8 мин
Количество просмотров5.5K

Введение



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

Начнём



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

Tornado Web Server

Время на прочтение1 мин
Количество просмотров15K


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

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


Документация (на англ.) — www.tornadoweb.org/documentation
Всего голосов 62: ↑59 и ↓3+56
Комментарии38

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

Время на прочтение4 мин
Количество просмотров5K
Протестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии11

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

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

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

Время на прочтение1 мин
Количество просмотров3.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

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

Замечание

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

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

Время на прочтение15 мин
Количество просмотров172K
В этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии12
1

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность