суббота, 10 мая 2014 г.

Заменить белый цвет на прозрачность в Photoshop

Понадобилось заменить белый цвет на прозрачность в фотошопе.

Сделать это встроенными средствами фотошопа нереально. Есть десятки способов, но ни один не даёт идеального результата.

Единственный рабочий способ - использование плагина Kill White. Увы, он работает только в старых версиях Photoshop, не в СС. Но хоть так.

воскресенье, 19 января 2014 г.

Книга Рихтера

Оставлю здесь, чтобы не потерять.

Великолепная книга Джеффри Рихтера рассказывает об использовании потоков, семафоров и прочих интересных для программиста вещей. Для программистов C++, разрабатывающих приложения под Windows.

Самое главное, подробно рассказывается, как всё устроено на уровне операционной системы. Что такое "процесс", как процессы взаимодействуют, как обрабатываются исключения, как организована память, и так далее.

Джеффри Рихтер
WINDOWS
ДЛЯ ПРОФЕССИОНАЛОВ
Создание эффективных Win32-приложений
с учетом специфики
64-разрядной версии Windows
(четвёртое издание)

richter-programming-windows.pdf

четверг, 19 декабря 2013 г.

Двойной символ в одинарный с помощью регэкспа

Как разэкранировать строку, которая была экранирована удвоением символа?

Например, в файлах CSV удваивается кавычка (" -> ""), а также само значение обрамляется в кавычки, таким образом строка

My "fat" string!

становится

"My ""fat"" string!"

Чтобы разэкранировать такую строку, требуется заменить удвоенные кавычки на одиночные, а также удалить одиночные.

" ->
"" -> "

Это можно сделать с помощью такого регэкспа:
/"("{0,1})/
заменить совпадение на содержимое круглых скобок.

Пример для PHP:

preg_replace('/"("{0,1})/', '$1', '"My ""fat"" string!"');

воскресенье, 30 октября 2011 г.

Обновление Windows для российской временной зоны

В 2011 президент отменил зимнее время. Тем пользователям Windows, у которых автоматически устанавливаются обновления, напрягаться не нужно: у них уже исправлена временная зона. Остальным придется скачать обновление.

Вот прямые ссылки на файлы:
Windows 7 x64 KB2570791
Windows 7 x86 KB2570791
Windows XP x86 KB2570791

суббота, 18 июня 2011 г.

PHP неправильно обрезает строку

Очень часто PHP-разработчики сталкиваются с такой проблемой:
обрезав строку по длине, в конце строки появляется символ "�".

Это происходит из-за того, что строка хранится в кодировке юникода(как правило - utf-8), а функция substr работает только с "однобайтными" кодировками.

Решение - вместо substr использовать функцию mb_substr.

substr($string, $length, $count)
заменяем на
mb_substr($string, $length, $count, 'utf-8')

среда, 18 мая 2011 г.

Перевести время из одной зоны в другую

В 15-00 по времени Екатеринбурга (UTC+6) произошло некоторое событие.
В Красноярске (UTC+8) в это время уже 17-00, на два часа "больше".
Жителю Красноярска мы должны показать его местное время для этого события.

Как сделать это в C++?

Заполним структуру tmDateExternal типа tm, запишем в нее исходное время. Запишем в int nSrcTZ "смещение" UTC для исходного времени, то есть 6.
__time64_t t64date = _mkgmtime64(&tmDateExternal) - nSrcTZ*60*60;
tm tmDateLocal;
_localtime64_s( &tmDateLocal, &t64date );

Теперь в структуре tmDateLocal находится локальное время для исходного события.

вторник, 7 декабря 2010 г.

Android: как поместить ListView в ScrollView

Сталкивались ли вы с проблемой, когда на экран нужно вывести, помимо списка ListView, другие элементы, и все не умещается на экран по вертикали? Очевидное решение - "обернуть" все в ScrollView. Но здесь неожиданно мы натыкаемся на проблему.

Разработчики Андроида "запрещают" помещать ListView в ScrollView, т.к. у ListView уже есть свой скроллер.

В результате, когда пытаемся поместить ListView в ScrollView, то ListView "сворачивается", в то время, как по задумке он должен быть полностью развернут.

Для того, чтобы "развернуть" ListView, я использую такой хак: