Search
Write a publication
Pull to refresh
27
0
Maksim @MuLLtiQ

Software engineer

Send message

Прецизионный поворот растрового изображения на произвольный угол

Reading time8 min
Views58K
Поворот растрового изображения на углы, кратные 90°, относительно геометрического центра изображения – задача тривиальная и решается без потери качества простым преобразованием координат каждого пикселя.

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

Ниже мы рассмотрим алгоритм прецизионного поворота растрового изображения на произвольный угол относительно произвольного центра с минимальными потерями.

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

Методы ввода иероглифов

Reading time5 min
Views188K
Ввиду роста популярности китайского языка в последнее время, решил поделиться своим опытом и небольшими наработками в принципах и методах ввода этих самых загадочных иероглифов. Для начала немного теории, что это и с чем это есть.


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

Код CSS «с душком»

Reading time8 min
Views107K
Недавно Крис Койер отвечал на вопросы читателей Smashing Magazine. Один из вопросов был о том, как распознать код CSS с «душком»:
Как можно определить, что ваш CSS пованивает? Какие признаки указывают на то, что код неоптимален или что разработчик писал его спустя рукава? На что вы смотрите в первую очередь, чтобы определить, плох или хорош код?

Я подумал, что могу расширить и дополнить ответ Криса исходя из собственного опыта.

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

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

Использование MongoDB в Django

Reading time3 min
Views46K
— документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Написана на языке C++ и распространяется в рамках лицензии Creative Commons.

В последнее время становится довольно популярной и восстребованой. И вот возникла идея использовать ее в связке с фреймворком Django. Собственно о чем далее и пойдет речь.

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

Онлайн-инструменты для кодеров

Reading time2 min
Views286K
Онлайн-сервисы становятся все популярнее, постепенно усложняя функционал и улучшая интерфейсы. В этой подборке представлены онлайн-инструменты для кодеров.

Cloud9


«Это Google Docs, только для кода» — так говорят о проекте. Облачный сервис вырос из Mozilla Bespin. Основные фишки: SSH, drag-and-drop и возможность разработки оффлайн.

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

Microsoft терпит неудачу?

Reading time12 min
Views330K
На SlashDot и других западных площадках активно обсуждается интересная статья Charlie Demerjian «Microsoft has failed». Она написана сложным английским, но поднимает актуальные вопросы, не ограничиваясь, к примеру, вопросами удобства или неудобства плиточного интерфейса. Хоть про автора говорят, что часто пишет слишком мрачно, но на мой взгляд, материал — в стиле доброго сарказма неравнодушного человека, и вполне достоин публикации и обсуждения на хабре. Переведена 1в1, без изменений.

Microsoft терпит неудачу?


Nov 14, 2012
Charlie Demerjian @ semiaccurate.com

У Microsoft большие проблемы: 2 основные продуктовые линейки терпят неудачу, и поиски виноватых ускоряются. В этот раз за провал Windows 8 винят Стива Синофского (Steve Sinofsky), но настоящая проблема заключается в модели поведения, которую иллюстрируют такие действия.
Microsoft сильно не соответствует реалиям сегодняшнего дня: те немногие рынки, на которых она играет, испаряются с поражающей воображение скоростью. Давно известная привычка компании отгораживаться от остального мира, игнорируя мнения окружающих, работает неплохо до тех пор, пока нет достойной альтернативы, и такая стратегия была для компании основополагающей настолько давно, что ничего другого не осталось. Модель работает, но с ростом стен безразличия растет раздражение клиентов, тем самым увеличивая ценность возможных альтернатив. Этот цикл повторяется до тех пор, пока альтернатив нет. Как только они появляются, то всё рушится с устрашающей быстротой.
Читать полностью

Dart: веб-компоненты в действии

Reading time3 min
Views12K

Веб-компоненты — новый веб стандарт, разрабатываемый Google. Некоторые считают, что он должен стать трендом в ближайшее время. И я, попробовав его в деле, пожалуй соглашусь с таким мнением.
Подробное описание стандарта: habrahabr.ru/post/152001

Разработчики дарта не стали ждать и начали реализовывать поддержку веб-компонентов уже сейчас. После того как я об этом узнал, мой интерес к дарту усилился в двойне. Изучив статью с примерами, мне показалось что с веб-компонентами можно творить чудеса:

  • количество кода уменьшается,
  • из кода убираются DOM-манипуляции,
  • в коде остается только логика.
Читать дальше →

Сам себе Дед Мороз

Reading time1 min
Views76K

Дариус Каземи (Darius Kazemi), программист из США решил разнообразить свою жизнь подарками… самому себе. Но поскольку в данном случае теряется изюминка в виде сюрприза от неизвестного подарка, он решил купить подарки при помощи самописного скрипта, назвав его Amazon Random Shopper.
Читать дальше →

Подводные камни JavaScript

Reading time6 min
Views152K
Мне очень нравится JavaScript и я считаю его мощным и удобным. Но для большинства начинающих JS-программистов, много проблем создаёт недопонимание аспектов языка. Часто конструкции языка ведут себя «нелогично». В данной статье я хочу привести примеры «граблей», на которые я наступил; объяснить поведение языка и дать пару советов.

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

Конкурс «Интернет-математика: Яндекс.Карты» — опыт нашего участия и описание победившего алгоритма

Reading time12 min
Views42K
Прошло уже больше года после завершения конкурса "Интернет-математика: Яндекс.Карты", но нас до сих пор спрашивают об алгоритме, который принёс нам победу в этом конкурсе. Узнав о том, что недавно Яндекс объявил о старте очередной "Интернет-математики", мы решили поделиться опытом нашего прошлогоднего участия и описать наш подход. Разработанный алгоритм смог с точностью 99.44% правильно определить лишние изображения в сериях панорамных снимков, например, как здесь:



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

Исходный код нашего решения доступен на github (C++ с использованием OpenCV).
Читать дальше →

Описание и валидация древовидных структур данных. JSON-Schema

Reading time6 min
Views82K

Многие сервисы и приложения (особенно веб-сервисы) принимают древовидные данные. Например, такую форму имеют данные, поступающие через JSON-PRC, JSON-REST, PHP-GET/POST. Естественно, появляется задача валидировать их структуру. Существует много вариантов решения этой задачи, начиная от нагромождения if-ов в контроллерах и заканчивая классами, реализующими валидацию по разнообразным конфигурациям. Чаще всего для решения этой задачи требуется рекурсивный валидатор, работающий со схемами данных, описанными по определённому стандарту. Одним из таких стандартов является JSON-Schema, рассмотрим его поближе.
Читать дальше →

Работа с PostgreSQL: настройка и масштабирование

Reading time1 min
Views18K
image

Добрый день, хаброжители. Прошло много времени с выпуска 2 версии книги по PostgreSQL — успела выйти версия 9.1 и 9.2 этой замечательной базы данных. Материалов по практическому использованию этой БД также накопилось немало, поэтому я решил выпустить обновление по книге. Итак, встречайте:«Работа с PostgreSQL: настройка и масштабирование», 3-е издание.

Как и раньше, в книге исследуются вопросы по настройке производительности PostgreSQL, репликации и кластеризации. Список изменений можно глянуть на странице книги. Любые пожелания или замечания можно высылать по почте (в моем блоге указано) или писать в github issues (или даже делать pull request на исправления). Приятного прочтения!

Страница книги: postgresql.leopard.in.ua
Исходники: github.com/le0pard/postgresql_book

Google запустила странный сайт Niantic Project

Reading time2 min
Views82K


В интернете появился сайт Niantic Project за авторством поискового гиганта — при этом никакой явной и прямо очерченной функциональности проект, по всей видимости, ещё не имеет.

Оформленный в мрачном стиле сайт стилизован под доску, которую обычно используют полицейские в голливудских фильмах, чтобы прикреплять на неё доказательства в виде фотографий или некоторых записок. Среди записей на «доске» можно обнаружить видео, имитирующее запись со спутника с обозначенными широтой и долготой и с неким QR-кодом, сканирование которого даёт plain-text с длинной последовательностью цифр, похожей на шифрованное сообщение.
Узнать подробности

Методы вычисления мультиномиальных коэффициентов

Reading time11 min
Views15K
Однажды, пролистывая популярный Q&A по математике (math.stackexchange.com), я обнаружил вопрос про расчет мультиномиальных коэффициентов и он меня заинтересовал. На заметку, для тех, кто не знает что это такое, существует статья в википедии. Итак, нужно вычислить следующее выражение:



Казалось, зачем на хабре выкладывать решение такой простой задачи? Ответ заключается в том, что самый простой наивный способ, заключающийся в перемножении факториала суммы с последующим делением его на произведение факториалов, не подойдет из-за того, что промежуточные вычисления выйдут за разрядную сетку типа uint и даже ulong, хотя результат может оказаться в пределах значений этих типов. Мне понравилась эта задача, и я сразу же сел за ее решение и придумал три способа. Остальные два способа я позаимствовал из других ответов. Итак, статья будет об описании и сравнении всех реализованных мною методов на C# под .NET.
Читать дальше →

Питон в коробке – venv в python 3.3

Reading time4 min
Views163K
Наверняка, большинство из тех, кто разрабатывает или деплоит Python приложения, использует виртуальные окружения. В частности через virtualenv, написанный Ian Bicking.

Идея оказалась так хороша и распространена, что нечто похожее теперь присутствует в Python 3.3 из коробки в виде модуля venv. Он почти такой же, как virtualenv, только немного лучше.
Читать дальше →

Рендер Diablo3. Как это работает

Reading time7 min
Views117K
Как устроены графические движки популярных игр с мировым именем? Какие технологии применяют разработчики в самых крупных игровых компаниях? Действительно ли, чтобы сделать красивую игровую графику необходимо применять самые передовые технологии современной 3D графики? На эти вопросы мы попробуем ответить на примере рендер части игры Diablo3, от компании Blizzard Entertainment.
Читать дальше →

Комбинированная балансировка нагрузки интернет-каналов

Reading time3 min
Views42K

Предистория



Рано или поздно системный администратор сталкивается с необходимостью распределить трафик по нескольким каналам, при этом естественно желание чтобы каждый канал использовался по максимуму. Столкнувшись с подобной необходимостью, и решив не изобретать велосипед, обратился к помощи поисковиков. Так как сервер у меня на Ubuntu, то обратил свое внимание на статью http://help.ubuntu.ru/wiki/ip_balancing. Реализовал «Способ 1», но при тесте были замечены следующие критичные проблемы: при использовании ссылок на некоторых сайтах они не открывались (например при попытке включить музыку на ресурсе «ВКонтакте»). Причина очевидна — запрос шел через другой канал. Обдумав ситуацию, решил скомбинировать подход к балансировке. Логика проста — больше всего съедает трафика торренты и им подобные программы, поэтому разделяем трафик. В итоге трафик с портами до 11000 распределяем приблизительно равномерно по количеству абонентов — подсетями, трафиком с портами 11000-60000 выравниваем загрузку каналов.
Читать дальше →

Машина времени в git

Reading time5 min
Views196K
В последнее время мои коллеги начинают знакомство с git'ом. И один из интересующих их вопросов — как откатиться до определённой ревизии. В интернете можно найти набор команд, но хочется, чтобы было понимание каждой из них. Баловство с комадами git'а без понимания может привести к потере истории разработки.

В этой статье я хочу рассказать о командах git checkout и git reset с ключами --soft и --hard.
Читать дальше →

Новое для веб-дизайнера за октябрь 2012

Reading time2 min
Views71K
Продолжаю сентябрьскую подборку новых полезных штук для веб-дизайнеров.

Сервисы и инструменты


Cut&Slice me — бесплатный плагин для фотошопа, который помогает быстро готовить элементы дизайна для различных типов устройств.

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

Вся правда о целочисленных типах в C

Reading time3 min
Views142K
Для начала несколько вопросов:

  1. Тип char по умолчанию знаковый или нет? А int?
  2. Законно ли неявное приведение (signed char *) к (char *)? А то же для int?
  3. Сколько бит в unsigned char?
  4. Какое максимальное число гарантированно можно поместить в int? А минимальное?
  5. Тип long определённо больше, чем char, не так ли?

Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере1) — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).

Если вы уверенно сможете правильно ответить на эти вопросы, тогда эта статья не для вас. В противном случае десять минут, потраченные на её чтение, будут весьма полезны.

Предположу, что вы ответили
  1. Знаковые оба.
  2. Законны оба.
  3. 8.
  4. 2147483647. -2147483648.
  5. Конечно, Кэп.


А правильные ответы такие
  1. char — не регламентируется, int — знаковый.
  2. Для int — законно, а для char — нет.
  3. Не менее 8.
  4. 32767. -32767
  5. Вообще говоря, нет.



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

Information

Rating
Does not participate
Date of birth
Registered
Activity