Search
Write a publication
Pull to refresh
0
Roman Akopov @adontzread⁠-⁠only

User

Send message

Восстановление расфокусированных и смазанных изображений. Практика

Reading time10 min
Views358K
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.

В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Софтверные лицензии в двух словах

Reading time1 min
Views2.9K
Если нужно быстро посмотреть, что разрешает/запрещает та или иная лицензия, то никто не объяснит это быстрее, чем новый поисковик-справочник по лицензиям tl;drLegal. Особенно ценным этот ресурс будет для тех, кто не привык разбираться в длинных юридических текстах.

Если кто не знает, tl;dr означает “Too Long; Didn't Read”.

Для каждой лицензии указаны основные тезисы: что лицензия разрешает, что запрещает и какие обязанности накладывает на пользователя. Плюс краткое резюме и ссылка на полный текст. Сейчас в списке на сайте 24 лицензии, но список пополняется буквально с каждым часов: ещё шесть часов назад было 22.

Поисковик пока официально не запущен, дата запуска — 9 июля, так что просьба относиться со снисхождением к возможным неточностям. В любом случае, идея отличная, в стиле упрощённой версии ToS на сайте 500px.com.

Опыт привлечения клиентов на высококонкурентном рынке: история небольшой компании

Reading time4 min
Views2.9K
Речь пойдет о компании, которая занимается обслуживанием компьютеров в Петербурге. Поскольку целевая аудитория этой услуги весьма далека от Хабрамира, я считаю, что хаб «Я пиарюсь» здесь не подойдет: основной смысл этого поста не в рекламе наших услуг, а в обсуждении стратегий продвижения новых компаний на старых рынках.

Статья не предназначена для профессионалов SEO, это – описания опыта с точки зрения руководства компании, а не SEO-специалиста.

Область работы нашей компании — обслуживание компьютеров и — с недавних пор — облачные решения (проще говоря, настройка private cloud — инфраструктуры быстрого развертывания виртуальных машин у заказчика). Несмотря на то, что еще три года назад на Хабре была дискуссия о сомнительной новизне первой из этих услуг, приглашение внешней компании для обслуживания ИТ-инфраструктуры практикуется в Санкт-Петербурге уже почти двадцать лет: я лично знаю людей, поднимавших такой бизнес с нуля в 90-е.

В уже упомянутой дискуссии справедливо отмечено, что ИТ-аутсорсинг охватывает несколько смежных областей, где обслуживание компьютеров и сети — лишь один скромный элемент. Остальные — это ведение отдельных бизнес-процессов или специализированных IT-подсистем или бизнес-приложений. Например, биллинга, процессинга, телефонии. Но сейчас я говорю только об обслуживании компьютеров и сетей.

Наша компания занялась этим бизнесом в 2007. То, что срабатывало в привлечении клиентов в реальной жизни, а не в теории, нас поначалу удивляло. Сегодня мы выносим наш опыт и наши выводы на ваш суд — может, эта статья кому-то сэкономит время на поиск эффективной тактики.
Подробности

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Reading time14 min
Views347K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →

Как убрать КАПС из меню Visual Studio 2012 RC

Reading time1 min
Views12K
Недавно была выпущена Visual Studio 2012 RC, в которой, наравне с многочисленными изменениями интерфейса, было представлено главное меню с элементами набранными капсом. Не всем это пришлось по душе (хотя, лично мне нравится, тут можно почитать где и когда применим капс). Ниже представлен способ приведения меню в старое состояние



Для возврата старого меню внесите следующие изменения в реестр Windows:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General\SuppressUppercaseConversion
REG_DWORD value: 1


Скачать новую версию Visual Studio 2012 RC можно по специальному короткому адресу vs11.ru. Приятной разработки!

10 миллионов хитов в день с WordPress на сервере за $15

Reading time1 min
Views17K
Английский разработчик Эван Лейт (Ewan Leith) опубликовал пошаговую инструкцию, как поднять виртуальный микросервер на Amazon, Linode или другом облачном хостинге, который сможет крутить блог WordPress и выдерживать 10 миллионов хитов в сутки (отчёт составлен с помощью Blitz.io), при этом будет стоить всего пятнадцать долларов в месяц.

Инструкция описывает, как последовательно установить Ubuntu 11.10 (Oneiric), MySQL, PHP с PHP FPM, APC и модулем MySQL, Nginx с конфигурацией для WordPress, ну и сам WordPress. После этого сервер работает ещё довольно медленно, но всё меняет установка W3 Total Cache и Varnish, которые вместе с Nginx способны сотворить настоящее чудо.

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

Context Free: язык для генерации изображений

Reading time6 min
Views3.8K


Эта картина сгенерирована программой Context Free по следующему описанию:

startshape T
// FLIGIZ
background{b -1}
tile {s 2.5}
rule T {3*{r 120 hue 30}S{x .3}}
rule S 3{CIRCLE{hue 30}4*{r 20 b.007 sat .1}S[s.3.7y.9]}
rule S {CIRCLE{hue 15}9*{r 20 b.05 hue -3}S[s.3.7y.9]}
rule S {S{flip 90}}
Читать дальше →

Help, my database is corrupt. Now what?

Reading time12 min
Views40K
Поврежденная база данных — это, наверное, один из худших ночных кошмаров большинства администраторов баз данных. Результатом повреждения являются простои, вопли менеджеров и всякие другие неприятные штуки.
В этой статье я объясню что нельзя делать с поврежденной базой данных и опишу кое-что из того, что должно быть сделано, некоторые виды повреждений и как их можно исправить.

Как обнаружить, что база данных повреждена


Обычно повреждения превосходно обнаруживаются при попытке доступа к поврежденной странице. Запросы, бэкапы или процедуры реиндексации завершаются ошибками с высокими уровнями серьезности.
Вот пара примеров системных сообщений при обнаружении повреждения БД:
SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xfdff74c9; actual: 0xfdff74cb). It occurred during a read of page (1:69965) in database ID 13 at offset 0x0000002229a000 in file 'D:\Develop\Databases\Broken1.mdf'.
Attempt to fetch logical page 1:69965 in database 13 failed. It belongs to allocation unit 72057594049069056 not to 281474980642816.
Основная проблема заключается в том, что если проверки целостности базы данных не производятся на постоянной основе, то повреждение может быть обнаружено спустя часы, дни и даже месяцы, после того, как оно образовалось, в тот момент, когда уже сложно будет что-то исправить.
Читать дальше →

WPF layout: Measure и Arrange

Reading time9 min
Views22K


Общее представление о том, что такое WPF Layout System, можно получить из msdn (1, 2). Там написано, что элементы управления образуют Visual-дерево, что каждый из элементов управления имеет свой определенный прямоугольник, в рамках которого он отрисовывается, что определение этих прямоугольников возлагается на Layout System и выполняется в 2 этапа (measure и arrange) и что WPF — это retained mode graphic system, в отличие от обычных Immediate и в чем преимущества такого подхода.

Однако при чтении msdn возникает ряд вопросов, на которые в документации ответов нет, и можно только догадываться о том, что происходит. Например — что произойдет, если какой-либо дочерний контрол в measure-стадии запросит для себя размер, превышающий переданный ему availableSize? Или — как при необходимости реализовать методы MeasureOverride и ArrangeOverride правильно, чтобы написанный код не противоречил принятым соглашениям о том, как должны выполняться этапы Measure и Arrange ? Влияет ли результат, полученный на этапе Measure, на этап Arrange и отрисовку, или же на отрисовку влияет только вызов Arrange, а Measure — чисто информационный этап?

Попробуем разобраться более детально в том, что происходит за кулисами.
Читать дальше →

XMPP-SMS шлюз на Android

Reading time11 min
Views20K


Введение

Причиной написания данной статьи послужила необходимость создания программы для системы Android, с помощью которой можно отправлять данные заказа в виде SMS сообщений владельцам интернет магазинов о том, что был совершен заказ товаров или услуг. Ранее мною использовалась система включающая GSM-модем и программу написанную на языке С++, использовавшая AT-команды для общения с модемом и библиотеку gloox для получения сообщений по протоколу XMPP, на стороне web-сайта использовалась библиотека xmpphp, для отправки данных заказа. При такой схеме приходилось держать включенным компьютер постоянно, так как система приема заказов работала круглосуточно, соответственно отсюда дополнительный расход электроэнергии, шум от вентиляторов ночью и постоянный контроль интернет соединения.
Читать дальше →

Можно ли верить своим глазам? (Unicode в именах файлов)

Reading time2 min
Views32K
Несколько дней назад один из наших пользователей прислал образец (SHA1: fbe71968d4c5399c2906b56d9feadf19a35beb97, определяется как TrojanDropper:Win32/Vundo.L). Это троян для фишинга с сайтов vk.com и vkontakte.ru, запросы на которые перенаправляются на 92.38.209.252 необычным способом.

Обычный метод перенаправления трафика — добавить запись в файл hosts, который находится в папке %SystemRoot%\system32\drivers\etc. Однако, когда мы открываем этот файл на заражённом компьютере, то там нет никаких записей для vk.com и vkontakte.ru:


Читать дальше →

Skype to SIP Gateway своими руками

Reading time4 min
Views14K

Шлюз на базе Asterisk — Skype for Asterisk и alix.



Сделать такой шлюз я решил когда понял что SFA можно будет купить только до 26 июля и зарегистрировать его нужно тоже до 26 июля, Лицензия SFA привязывается как минимум к мак адресу железа на котором он установлен и для этого я взял ALIX и Voyage Linux.

Задачи:
1) Обеспечить входящий вызов из сети Skype в SIP.
2) Обеспечить исходящие вызовы из SIP сеть в Skype.

Для начала купил тут собранную коробку на базе плат ALIX с предустановленной Askozia. Поскольку Askozia никак не дружит с SFA снес ее сразу :). Выбор пал на дистрибутив Voyage который прекрасно работает на ALIX-ах и устанавливается за 5 минут на любую CF карту.
Читать дальше →

Создание частной ленты пакетов NuGet с помощью онлайн-сервиса

Reading time3 min
Views2K
NuGet привнес в мир .NET-разработки поддержку установки компонентов разработки с помощью пакетов. С момента запуска NuGet в начале года в его репозитории создано уже свыше 4000 пакетов, а количество загрузок пакетов приближается к миллиону.

Возможности NuGet не ограничиваются официальным хранилищем пакетов. Любая компания или индивидуальный разработчик могу создать свой собственную ленту пакетов, с ограниченным в рамках организации доступом. Благодаря тому, что средства интеграции NuGet со средой разработки Visual Studio поддерживает частные ленты пакетов, любой желающий может использовать свои ленты точно так же как и официальную. Таким образом, пользу и удобство NuGet можно использовать и тогда, когда вы не можете или не хотите распространять компоненты публично.

Вместе с возможность самостоятельного создания ленты пакетов на собственной инфраструктуре существует еще одна возможность. Недавно был запущен сервис MyGet, который предлагает быстрое создание частных лент пакетов NuGet как сервис. Как шутят на сайте MyGet – это NuGet as a Service (NaaS).

image

В этой статье дается описание сервиса и рассматривается порядок его использования.

Читать дальше →

Опубликован код алгоритма Predator

Reading time1 min
Views11K
Хотя сам Зденек Катал был против, но исходные коды его алгоритма отслеживания объектов в видеопотоке Tracking-Learning-Detection (aka Predator) всё-таки попали в открытый доступ. Судя по всему, они были какое-то время выложены на сайте автора и кто-то успел сделать копию. А поскольку код публиковался под лицензией GPL 2.0, то не осталось никаких препятствий для его дальнейшего распространения.

Проект TLD на github: 1, 2, 3, 4, 5

Основная часть сделана на Matlab и его относительно легко можно транслировать в C за пару дней.

Сам трекинг осуществляется методом Лукаса-Канаде и с помощью OpenCV.

Отслеживание объектов на видео

Reading time1 min
Views51K
Чешский студент из британского университета Суррея Зденек Катал (Zdenek Kalal) в рамках практической части кандидатской диссертации разработал алгоритм Tracking-Learning-Detection (aka Predator) для отслеживания объектов в видеопотоке с самообучением (точность распознавания улучшается с каждым фреймом).

Демо проекта

Исходные коды на github: 1, 2, 3, 4, 5


Читать дальше →

Визуализация графов. Метод связывания ребер

Reading time7 min
Views58K
Иногда полезно представить граф в графической форме, так чтобы была видна структура. Можно привести десятки примеров, где это может пригодиться: визуализация иерархии классов и пакетов исходного кода какой-нибудь программы, визуализация социального графа (тот же Twitter или Facebook) или графа цитирования (какие публикации на кого ссылаются) и т.д. Но вот незадача: количество ребер в графе зачастую настолько велико, что нарисованный граф просто невозможно разобрать. Взгляните на эту картинку:



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

Установка и настройка Debian Linux под Hyper-V

Reading time3 min
Views59K
Давайте продолжим наши упражнения в виртуализации Linux систем под Hyper-V. Сегодня мы займемся установкой и настройкой Debian 6 под Hyper-V. Все что я буду писать ниже можно применять не только к Debian 6, но и к Debian 5 и к остальным дистрибутивам основанным на Debian таким как Ubuntu, Kubuntu, Xubuntu, Ebuntu.
Читать дальше →

Использование OpenStreetMap совместно с SQL Server

Reading time2 min
Views4.6K
Ни для кого не секрет, что OpenStreetMap — это молодой, динамически развивающийся проект, в котором, уже сейчас можно найти уйму полезной информации. Эта информация уже структурирована, поэтому приложив небольшие усилия, возможно извлекать и отфильтровывать абсолютно все, чего может только пожелать душа
Цель данного поста — показать, как эту информацию возможно хранить и извлекать с помощью сервера базы данных SQL Server. SQL Server начиная с 2008 версии позволяет хранить и обрабатывать геометрические и географические типы данных. Поэтому он подходит для этой цели, как нельзя лучше.
Читать дальше →

Выходцы из Google и Facebook показали «идеальный» таск-трекер

Reading time1 min
Views10K
Дастин Московиц (технический основатель Facebook) и Джастин Розенштайн (в прошлом продакт-менеджер в Google и Facebook) подняли порядка $10 млн финансирования и готовят смерть Basecamp, Trac, Bugzilla и всем остальным популярным решениям в этом сегменте.

image

www.asana.com

Основные возможности


(Сорри за качество скринов.)


image
Приятный, неброский интерфейс :-)

image
Риалтаймовые обновления с точностью до буквы (хорошо видно на видео ниже)

Читать дальше →

Рейтрейсер на JavaScript

Reading time8 min
Views21K
TitleImage

Знаете ли вы что такое рейтрейсер? Это программа которая рисует трёхмерную сцену на экране так, как её бы увидели вы. Конечно, не совсем так, но некоторые рейтрейсеры умеют рисовать очень правдоподобные картинки, например как в "Аватаре".

Идея рейтрейсера очень простая и в этой статье я раcскажу как устроен этот алгоритм и даже напишу его на JavaScript. Картинки и пример прилагаются.

Читать дальше →

Information

Rating
Does not participate
Registered
Activity