Search
Write a publication
Pull to refresh
1
0
izenfire @iZENfire

User

Send message

Разоблачение алгоритмов растеризации шрифтов (2/2)

Reading time14 min
Views10K
(вторая часть перевода статьи Разоблачение алгоритмов растеризации шрифтов)

Linux


Наследуя худшее


Windows растеризует шрифты плохо, Linux ещё хуже. Во всех Linux-системах, которые я видел, используется FreeType [10] Дэвида Тёрнера, Роберта Вильгельма и Вернера Лемберга. Это отличная библиотека, но способ её использования, к сожалению, нельзя назвать удачным. Типичный скриншот Linux выглядит так:



Вот полный скриншот:
ссылка

Сразу заметна проблема — чёрные пятна в скругленных углах, образовавшиеся в результате сглаживания. Вцелом, можно сказать, что косые штрихи выглядят тяжелее чем вертикальные, что в регультате производит впечатление «грязи». Вы можете возразить, что FreeType и Linux могли бы использовать схожую с ClearType субпиксельную растеризацию, но по мне это не даёт заметных преимуществ.
Читать дальше →

Разоблачение алгоритмов растеризации шрифтов (1/2)

Reading time15 min
Views14K
Попытка улучшить алгоритмы растеризации шрифтов, пользуясь исключительно общедоступной информацией.

От переводчика


В первый раз я столкнулся с этой статьей в 2008 году. С тех пор я неоднократно задумывался о переводе (так как лучшего материала по теме не найти), и вдруг ссылка на оригинал всплыла на Хабре в обсуждении топика «Сглаживание шрифтов, анти-алиасинг, и субпиксельный рендеринг». Это стало решающим фактором (раз на материал ссылаются, значит, он кому-то нужен), и работа была, наконец, закончена.
Читать дальше →

Ещё раз о минусе и дефисоминусе

Reading time2 min
Views4.3K
С тех пор как я вернулся с вольных хлебов переводчика к работе программиста в офисе словно невидимая рука толкает меня без четверти семь, настойчиво побуждая подниматься. Даже в субботу. А чем заняться спросонок?

Сейчас я решил написать про дефисоминус (то, что присутствует на наших клавиатурах вместо настоящего минуса и настоящего дефиса, в Юникоде, тем не менее, существующих) и настоящий минус. На «Хабре» была уже по этому поводу прекрасная статья «Чёрточки: только ли тире, минус и дефис?» (да и не она одна), но когда начальник заметил, что с моим появлением в проекте минусы на его страницах визуально преобразились и якобы стали шире плюсов, я почувствовал, что мне могут потребоваться числовые доводы (вот оно, математическое образование), а не только ссылки на авторитеты.

И я провёл замеры дефисоминуса и минуса (а сравнения ради и плюса) в ряде гарнитур, популярных у общественности или среди меня лично: Times New Roman и Arial Unicode (все замеры дали одинаковые результаты), Linux Biolinum и Linux Libertine (то же самое), Georgia, Tahoma, Verdana, Calibri, Code2000, Либерастика, Arial, Courier, Courier New. И вот что я установил.

Конечно, начальнику показалось. По контрасту с обычной практикой использовать вместо минуса дефисоминус. На самом деле ширина настоящего минуса в части названных гарнитур (в том числе в используемой в проекте Tahoma) в точности соответствует ширине плюса, а в остальных ближе к ней, нежели у куцего дефисоминуса. Заметно шире плюса он только в Code2000 и Linux Biolinum/Linux Libertine, а в Courier New с шириной плюса неожиданно точно совпадает ширина именно дефисоминуса.

Однако, есть и ещё один довод: высота расположения в строке. Во всех названных гарнитурах, кроме Courier, минус находится на одной высоте с плюсом, а дефисоминус — только в некоторых, а в популярных Times New Roman и Arial заметно ниже (аж на два пикселя при размере шрифта 16px).

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

Чёрточки: только ли тире, минус и дефис?

Reading time4 min
Views182K
Однажды вечером я почувствовал, что пришло время расширить 97‐ й параграф «Ководства» Артемия Лебедева.

На клавиатуре одна чёрточка, она обычно правее нуля и повыше букв «З» и «Х». Неосведомлённые люди называют её попеременно то дефисом, то минусом, то тире. Лебедев объясняет нам, что это четыре (учитывая две разновидности тире) различных символа. На самом деле их как минимум девять, и об этом я и расскажу вам сейчас.

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

Зачем дьявол придумал javadoc

Reading time3 min
Views60K
Есть мнение, что хорошая программа должна быть хорошо задокументирована.

Компания SUN даже придумала специальный формат javadoc — «стандарт для документирования классов Java». В моей практике было совершенно обычным явлением, когда какой-то код не проходил Code Review, потому что в нём у некоторых методов отсутствовали комментарии.

Я утверждаю, что этот подход устарел, и сегодня я расскажу, почему комментарии — это зло.

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

Выключаем монитор с клавиатуры

Reading time3 min
Views26K
Предыдущий топик про ddccontrol, открыл для меня, что по DDC можно мониторы выключать. Не вгонять в сон, не включать энергосберегающий режим, а реально выключать. Так, чтобы гасла (и совсем не мигала!) лампочка питания на морде. Как от нажатия выкл на той же самой морде. Разумеется, можно не только выключать, но и включать. Программно!

1) Это можно сделать программно (ddccontrol)
2) Это можно прописать в скрипт
3) Скрипт можно повесить на хоткей

5) PROFIT??

В список профитов можно записать возможность включения/выключения ОДНОЙ кнопкой на клавиатуре ВСЕХ мониторов (у меня их сейчас два, и я планирую больше в будущем). Кнопка на клавиатуре куда приятнее для нажатия, чем кнопка монитора (по которой её целиться надо, да и монитор от нажатия может слегка поворачиваться, что раздражает).

Читать дальше: скрипты и руководство по настройке

Умная раскладка через ComposeKey

Reading time3 min
Views3.1K
Этот топик — продолжение моего предыдущего, где я описывал проблему с переключениями раскладок, если их три и больше. В этом топике я расскажу о решении этой проблемы через ComposeKey. Помимо того, ComposeKey отлично подойдет и для других целей.
Читать дальше →

Память наше все!

Reading time4 min
Views17K

Память наше всё!


Я думаю ни для кого не секрет, что память для человека это все. Все что мы делали, делаем, и хотим сделать – все хранится в памяти и без нее это все стало бы невозможным. И если память у нас плохая, то и делаем мы все из рук вон плохо. А у меня память не из лучших, и это постоянно сказывается на моей жизни.
Читать дальше →

Подсчёт времени выполнения метода через аннотацию

Reading time8 min
Views20K
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →

Ремонт блоков питания от роутеров и другой техники Asus и D-Link за 10 минут

Reading time2 min
Views172K
Написать этот пост я решил, после прочтения многочисленных комментариев о том, что многим пришлось поменять роутер, так как он стал мигать всеми лампочками подряд, перестал загружаться и прошиваться! Упорно используя «Поиск», описания этой проблемы, к моему великому удивлению, я не нашел на Хабре. Хотя проблема известна давно и описана в Рунете. Бывает такое, по закону подлости, на следующий день как закончится гарантия. А обычно через 1.5-2.5 года эксплуатации. Всему виной, в 90% случаев, лишь блок питания (далее по тексту — БП). В сервисных центрах в ремонте отказывают, т.к. гарантия закончилась или впаривают новый БП по цене от 700 до 1200 рублей. Данная проблема случается в 3 роутерах из 10, оборудованных этими источниками питания. Обычно БП производят сторонние фирмы, а все «восторженные» отзывы пользователей о надежности оборудования, достаются именно D-Link и Asus! Стоимость деталей для ремонта — 10 рублей!
Итак, начнем!

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

FreeBSD Netgraph на примере Ethernet тоннеля

Reading time7 min
Views18K
Всем привет.

Думаю многим системным администраторам, работающим с FreeBSD, известно о существовании ядерной подсистемы Netgraph. Но не многие знают/понимают как это работает, и что из этого можно построить.

Расскажу что это такое, а также разберу на простом примере сборку Ethernet моста через интернет.

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

Базы данных в MIDP, часть 1: понятие Record Management System

Reading time10 min
Views4.7K
Одним из ключевых компонентов MIDP является Record Management System (RMS). Это API, предоставляющий возможность хранить данные локально, в памяти устройства. Для большинства MIDP-совместимых телефонов это единственный способ хранения данных — лишь небольшое число устройств поддерживают доступ к обычной файловой системе. Легко догадаться, что полное понимание механизма RMS необходимо для написания любого приложения, требующего хранения локальных данных.

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

Maven — автоматизация сборки проекта

Reading time4 min
Views126K
Уже давно я слышал об инструменте для автоматизации сборки проекта — Ant, но как-то не мог найти ему реального применения в проектах на PHP. Компилить вроде ничего не надо, внешние библиотеки вполне можно подключить через svn:externals, оставались только тесты, которые свободно выполнялись через $ phpunit AllTests.php, да перенос изменений на рабочий сервер (svn export + небольшой самописный скрипт). Даже достаточно хорошая статья об использовании ant в eclipse не подвигла меня на использование сего инструмента, да еще и build файлы писать не хотелось…

Вобщем все как всегда. Какая-то подобная штука вроде бы и не помешала бы, но все и так хорошо работало и лень было изучать псевдопомогающую технологию. Так было до тех пор, пока я не познакомился с Java…

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

Maven — зачем?

Reading time7 min
Views85K
На просторах сети вообще и хабра в частности мне доселось видеть не один топик посвящённый Maven. И везде, где было обсуждение, возникали вопросы вида:
  • Что даёт его использование в проекте типа X?
  • Чем он лучше Ant/Make/sh?
  • А что делать если я хочу использовать в проекте antlr/JAX-WS/XDoclet?

Я полагаю, что все эти вопросы происходят из незнания что на свете есть гугл недостаточного понимания что такое Maven и какой подход к решению задач build management он предлагает. Что в свою очередь растёт из недостаточного внимания, которое авторы статей уделяют идеям стоящим за xml-файлами и завораживающими консольными командами.
Под кактом нет xml, примеров команд и многих килобайт вывода...

Делаем простое веб приложение на Spring Framework MVC

Reading time13 min
Views253K
image
В данной статье я хочу рассказать начинающим Java разработчикам, как написать простое веб приложение, используя популярный фреймворк Spring Framework.

При разрабокте приложения мы будем использовать утилиту Ant для автоматизации действий и изучим, как писать простой тест с помощью библиотеки JUnit. Весь код будем писать в Eclipse IDE.

Статья написана на основе первой части руководства «Introduction to Spring MVC». Вам достаточно иметь лишь общее представление о Spring, чтобы прочитать статью с пользой.

Так что милости просим :)
Читать дальше →

VirtualBox на FreeBSD без X11

Reading time3 min
Views35K
imageНа данный момент, порт VirtualBox на FreeBSD уже достаточно стабилен и вполне пригоден для постоянного использования. Но при установке на gui-less машинах возникает несколько проблем. Дальше речь пойдет об установке и использовании VirtualBox на FreeBSD машине без X11.

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

Apache Maven — основы

Reading time6 min
Views557K
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Поехали!

Избирательное юнит-тестирование или ещё раз о тонких контроллерах

Reading time6 min
Views3.4K
В дополнение к недавно упомянутой на Хабре статье о том, что полное 100%-е покрытие кода юнит-тестами почти всегда не является экономически выгодным, поскольку просто лень писать всю эту.… это требует неоправданных затрат рабочего времени и увеличивает расходы на поддержку кода, сегодня хотелось бы представить на суд общественности размышления по этому поводу Стива Сандерсона (Steve Sanderson), автора книг Pro ASP.NET MVC и Pro ASP.NET MVC V2.
Читать дальше →

Книга Application Architecture Guide, Second Edition

Reading time1 min
Views9K
Доступен для бесплатного скачивания финальный вариант книги Application Architecture Guide во второй редакции. Книга содержит 560 страниц разбитых на 28 больших глав. Application Architecture Guide посвящена архитектуре и дизайну ПО, как то: дизайну и разработке различных типов ПО (мобильные, web, клиентские, RIA, сервисы и облачные сервисы), организации и разработке уровней ПО (представления, бизнеслогики, данных, сервисов), созданию компонентов.

Получить книгу можно несколькими путями:
* скачать pdf (7.5 Mb);
* читать online;
* купить на Amazon;
* скачать дополнительную информацию на App Arch Guide 2.0 Knowledge Base.

Официальный анонс одного из авторов в его блоге J.D. Meier's Blog.

Information

Rating
Does not participate
Location
Антарктика
Date of birth
Registered
Activity