[iTunes] Если не синхронизируются плейлисты

Долго не мог понять, почему некоторые плейлисты, созданные в iTunes, никак не хотели синхронизироваться с остальными устройствами (для этого я использую iTunes Match).

Потом все же мне удалось найти причину этой проблемы — оказывается, плейлист не будет синхронизирован до тех пор, пока в нем присутствуют файлы, имеющие статус «дубликат» (т.е. композиция уже находится в другом плейлисте), либо же те файлы, которые вообще не могут быть синхронизированы с iTunes Match. Вот такие-то дела…

Про Image / Motion Deblur

На конференции Adobe Max 2011 было показало демонстрационное видео с одним из способов того, как можно убрать с фотографий эффект смазывания (очень актуальная тема для фотоаппаратов типа «мыльница»). Для этой цели в Photoshop’е был применен неизвестный до этого момента фильтр Adobe Image Deblur. Эффект от увиденного поразил всех участников, сидевших в зале. По сути полностью смазанное изображение восстановилось до чуть ли не до своего исходного состояния  не говоря уже о том, что сами объекты съемки стали, как и положено, четкими. Все ожидали, что новый фильтр появится в Photoshop CS5, однако этого не произошло. Потом  на официальном форуме Adobe был размещен ответ, что данный фильтр является экспериментальным и что в ближайшее время он не будет представлен в Photoshop’е. Затем, вроде бы как он стал доступен для подписчиков Creative Cloud, и вот буквально в этом месяце поступила информация о том, что фильтр все же будет доступен прямо из коробки в Photoshop CS7.

Тем не менее во многих источниках пишут, что фильтр от Adobe основывается на некоторых алгоритмах, примененных в программе «Robust Motion Deblur«, которая использует так называемый метод слепой деконволюции (обратная свертка), позволяющий вычислять направления смещения изображения (т.е. того самого смаза) и на основе этого выполнять свертку. Конечно, данный метод не во всех случаях позволяет избавится от смазывания  (волшебной таблетки, как бы нам хотелось, все еще не существует), но в некоторых случаях показывает весьма неплохие результаты. Другие же говорят, что Adobe использует свои собственные наработки и технологии в данном направлении. Официальная презентация Creative Suite 7 пройдет уже 6 мая, на которой, надеемся, будет более подробно рассказано о технической составляющей фильтра по избавлению смазывания.

Я нашел исходное изображение, которое применялось в демонстрационном видео у Adobe и прогнал его через программу Robust Motion Deblur и вот что из этого получилось:

Motion_Deblur_1Motion_Deblur_2

Также существует проект SmartDeblur, который в некоторых моментах дает даже лучший результат. И при этом программа абсолютно бесплатна!

[macOS] Twitter-клиент обновился до версии 2.2.0

Буквально несколько дней назад обновился официальный клиент Twitter для Mac’ов. Стоит отметить, что последняя версия вышла более года назад и вроде бы даже где-то проскакивала информация о том, что официальный клиент уже не будет иметь поддержки в развитии. Тем не менее, новая версия программы вышла и стала поддерживать графику высокого разрешения (актуально для Retina-экранов), а также обзавелась поддержкой дополнительных языков, в том числе и русским. Без ляпов в русификации, как обычно это бывает с проектами подобного рода, не обошлось. Так, к примеру, в разделе поиска кнопка «Сохранить» гордо именуется как «Сохранит«, а в меню «Окно» -> «Подробнее о пользователе» значится пункт «Profile«, вместо «Профиль».

Кстати, вчера, при попытке отредактировать профиль, выскочило окно об ошибке (правда сегодня такое уж не повторяется).

Twitter_error

Тем не менее, хочу отметить, что официальный Twitter-клиент, на мой взгляд, весьма удобен и полезен, хотя многие не перестают его с упорством критиковать.

[Windows] Про ошибку 0x0000007b в Parallels Desktop

Встала цель перенести образ системы (Windows 7) с рабочего компьютера на виртуальную машину Paralalles Desktop. Хорошим решением для решения задач подобного рода является Acronis True Image.

Acronis предоставляет на свои продукты пробный период, который к удивлению, не ограничивает никакие наиболее важные моменты в работе, за что искреннее спасибо компании-разработчику. Недавно пришлось пользоваться Stellar Phoenix Data Recovery, так ее ознакомительный смысл заключался в том, чтобы найти удаленные файлы, и предложить восстановить их уже в полной (купленной) версии. Не имея предстовления о том, как программа справится с восстановлением удаленных файлов, покупать кота в мешке совершенно нет никакого желания. Воспользовавшись продуктом Acronis True Image я смог решить поставленные задачи и, если они еще будут передо мной возникать, безсомнений, приобрету полную версию.

Перенос системы прошел успешно, хотя и занял довольно много времени, а вот запуск Windows 7 был обречен на провал: сразу же после экрана загрузки система крашилась с BSOD. Пришлось изрядно потрудится, чтобы сделать скриншот BSOD, т.к. он после своего появления система практически мгновенно уходила в ребут. Анализ BSOD показал, что код ошибки был 0x0000007b, который свидетельствует о том, что система была перенесена на другое оборудование (к примеру, новая материнская плата). В моем случае проблема возникала из-за неправильно выбранного контроллера жесткого диска. По умолчанию в настройках виртуальной мишине значился SATA 0:2. После того, как я изменил на IDE 0:0, система успешно стартовала. Мне весьма повезло, что все так легко обошлось и не пришлось шаманить с LiveCD, переносом файлов драйверов, правкой реестра и пр.

Windows7_BSOD

[AutoIt] Поиск и замена строк в бинарном файле

По работе есть необходимость изменять в бинарном файле последовательность байт. Не спрашивайте зачем, это все равно секрет =)

Т.к. руками это делать ну очень не хочется, то на помощь приходит… AutoIt. Именно он позволил без каких либо напрягов выполнить поставленную задачу. Да и вообще, AutoIt — это замечательное средство не только для тестировщика, но и для всех тех, кому не чужда тема автоматизации процессов.

$exe = "file_name.exe"
 
$file = FileOpen($exe)
$read = FileRead($file)
FileClose($file)
 
$find = BinaryToString("0x00000000000000000000000000000000000")
$replace = BinaryToString("0x00000000000000000000000000000000001")
 
$read = StringReplace($read, $find, $replace)
If @extended > 0 Then
   ;MsgBox(64, 'Патчер', 'Вхождение найдено, файл пропатчен')
Else
   Exit 1
   ;MsgBox(64, 'Патчер', 'Вхождений нет, файл не пропатчен')
EndIF
 
$file = FileOpen($exe, 2)
FileWrite($file, $read)
FileClose($file)

[iTunes] Про режим визуализации

Во многих музыкальных плеерах есть ресторанная поддержка визуализации музыки (будь то Windows Media Player или Winamp), которая под ритм музыки выводит красивые узоры, фигуры и много чего еще в зависимости от настроек.

iTunes также не обделен визуализатором, который включается по Ctrl+T или же путем выбора соответствующего пункта в меню «Вид». Настроить визуализатор можно с помощью клавиш:

M — изменяет алгоритм визуализации
P — изменяет цветовую палитру
I — отображает внизу слева информацию о текущей песне
F — замораживает текущее состояние эффекта
L — блокирует передвижение камеры
N — включает режим фоновой туманности
? — вызывает общую справку по командам

2013-01-25_165912

[Inno Setup] Автоматическое удаление предыдущей версии

Задача: при установки новой версии программы автоматически деинсталлировать старую.

Решение: в секцию [Code] добавить:

function GetUninstallString(): String;
var
  sUnInstPath: String;
  sUnInstallString: String;
begin
  sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
  sUnInstallString := '';
  if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
    RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
  Result := sUnInstallString;
end;
 
function IsUpgrade(): Boolean;
begin
  Result := (GetUninstallString() <> '');
end;
 
function UnInstallOldVersion(): Integer;
var
  sUnInstallString: String;
  iResultCode: Integer;
begin
// Return Values:
// 1 - uninstall string is empty
// 2 - error executing the UnInstallString
// 3 - successfully executed the UnInstallString
 
  // default return value
  Result := 0;
 
  // get the uninstall string of the old app
  sUnInstallString := GetUninstallString();
  if sUnInstallString <> '' then begin
    sUnInstallString := RemoveQuotes(sUnInstallString);
    if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
      Result := 3
    else
      Result := 2;
  end else
    Result := 1;
end;
 
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if (CurStep=ssInstall) then
  begin
    if (IsUpgrade()) then
    begin
      UnInstallOldVersion();
    end;
  end;
end;

Источник: ссылка

[Inno Setup] Добавление пункта в меню «Пуск»

Задача: добавить в меню «Пуск» произвольный пункт, к примеру, URL-ярлык на страницу покупки программы.

Решение: в секцию [Icon] добавить:

Name: "{group}\Upgrade to PRO version"; Filename: "{#BuyURL}"