Pull to refresh
1
0
izenfire @iZENfire

User

Send message

Тесты для тестов

Reading time5 min
Views20K
Один из самых частых ответов на вопрос «Почему я не пишу юнит-тесты» — это вопрос «А кто напишет тесты для моих тестов? Где гарантия, что в моих тестах тоже не будет ошибки?», что свидетельствует о серьёзном недопонимании сути юнит-тестов.

Цель этой заметки — коротко и чётко зафиксировать этот момент, чтобы больше не возникало разногласий.

Итак, юнит-тест — это
Читать дальше →
Total votes 79: ↑72 and ↓7+65
Comments111

Garbage Collection наглядно

Reading time10 min
Views285K
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Читать дальше →
Total votes 70: ↑68 and ↓2+66
Comments49

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

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

Linux


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


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



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

Сразу заметна проблема — чёрные пятна в скругленных углах, образовавшиеся в результате сглаживания. Вцелом, можно сказать, что косые штрихи выглядят тяжелее чем вертикальные, что в регультате производит впечатление «грязи». Вы можете возразить, что FreeType и Linux могли бы использовать схожую с ClearType субпиксельную растеризацию, но по мне это не даёт заметных преимуществ.
Читать дальше →
Total votes 124: ↑121 and ↓3+118
Comments49

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

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

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


В первый раз я столкнулся с этой статьей в 2008 году. С тех пор я неоднократно задумывался о переводе (так как лучшего материала по теме не найти), и вдруг ссылка на оригинал всплыла на Хабре в обсуждении топика «Сглаживание шрифтов, анти-алиасинг, и субпиксельный рендеринг». Это стало решающим фактором (раз на материал ссылаются, значит, он кому-то нужен), и работа была, наконец, закончена.
Читать дальше →
Total votes 132: ↑130 and ↓2+128
Comments60

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

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

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

И я провёл замеры дефисоминуса и минуса (а сравнения ради и плюса) в ряде гарнитур, популярных у общественности или среди меня лично: 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).

В целом, с минусом, по-моему, всё ясно. Его применение диктуют не только семантические, но и визуальные соображения.
Total votes 70: ↑39 and ↓31+8
Comments17

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

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

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

Читать дальше →
Total votes 311: ↑288 and ↓23+265
Comments208

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

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

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

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

Читать дальше →
Total votes 61: ↑33 and ↓28+5
Comments56

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

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

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

5) PROFIT??

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

Читать дальше: скрипты и руководство по настройке
Total votes 109: ↑95 and ↓14+81
Comments47

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

Reading time3 min
Views3K
Этот топик — продолжение моего предыдущего, где я описывал проблему с переключениями раскладок, если их три и больше. В этом топике я расскажу о решении этой проблемы через ComposeKey. Помимо того, ComposeKey отлично подойдет и для других целей.
Читать дальше →
Total votes 43: ↑35 and ↓8+27
Comments12

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

Reading time4 min
Views17K

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


Я думаю ни для кого не секрет, что память для человека это все. Все что мы делали, делаем, и хотим сделать – все хранится в памяти и без нее это все стало бы невозможным. И если память у нас плохая, то и делаем мы все из рук вон плохо. А у меня память не из лучших, и это постоянно сказывается на моей жизни.
Читать дальше →
Total votes 142: ↑127 and ↓15+112
Comments88

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

Reading time8 min
Views19K
Во многих проектах требуется посчитать время, которое затратил тот или иной метод. Для этого можно вручную сохранять значение System.currentTimeMillis() и после метода вычислять затраченное время. Когда методов много это становится не очень удобным.
Поэтому я решил написать простенькую аннотацию, которая бы считала время выполнения метода. Попытавшись найти информацию в интернете, понял, что её по данной теме очень мало. Придётся как-то выкручиваться, собирая информацию по крупицам.
Читать дальше →
Total votes 51: ↑49 and ↓2+47
Comments30

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

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

image
Читать дальше →
Total votes 132: ↑126 and ↓6+120
Comments137

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

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

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

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

Читать дальше →
Total votes 76: ↑70 and ↓6+64
Comments20

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

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

Это первая статья цикла, в котором будут рассмотрены наиболее распространенные проблемы, касающиеся использования RMS в приложениях, например, взаимодействие с внешними источниками данных, такими как реляционные БД. Для начала мы узнаем, что может нам предложить RMS, и напишем несколько простых отладчиков.
Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments3

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

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

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

Читать дальше →
Total votes 42: ↑37 and ↓5+32
Comments56

Maven — зачем?

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

Я полагаю, что все эти вопросы происходят из незнания что на свете есть гугл недостаточного понимания что такое Maven и какой подход к решению задач build management он предлагает. Что в свою очередь растёт из недостаточного внимания, которое авторы статей уделяют идеям стоящим за xml-файлами и завораживающими консольными командами.
Под кактом нет xml, примеров команд и многих килобайт вывода...
Total votes 5: ↑3 and ↓2+1
Comments3

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

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

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

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

Так что милости просим :)
Читать дальше →
Total votes 56: ↑43 and ↓13+30
Comments81

VirtualBox на FreeBSD без X11

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

Читать дальше
Total votes 22: ↑14 and ↓8+6
Comments20

Apache Maven — основы

Reading time6 min
Views541K
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Поехали!
Total votes 45: ↑41 and ↓4+37
Comments29

Information

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