Windows для сохранения содержимого оперативной памяти при так называемой гибернации компьютера (hibernation) использует файл hiberfil.sys. Но если в Windows XP (в которой, кстати, этот режим в русской локализации назывался «спящим», да-да, тем самым «спящим», который теперь в Windows 7 делает то же, что и «ждущий» в Windows XP) при отключении возможности гибернации этот файл сразу же удалялся, то в Windows 7 из интерфейса панели управления удалить его не так и просто. При этом, естественно, что файл может занимать много места — пропорционально объему оперативной памяти. Быстрее всего удалить его можно с помощью консоли Windows с правами администратора. Для этого вводим открываем меню «Пуск» и вводим в командной строке cmd:
В контекстном меню по пункту cmd (правой кнопкой мыши) выбираем «Запуск от имени администратора». Теперь в консоли вводим простую команду отключения режима гибернации, которая удалит файл hiberfil.sys
powercfg –h off
После выполнения команды файл удаляется практически моментально без необходимости в перезагрузке.
В статье приводится описание эффекта Хааса, очень часто упоминаемого в литературе и в интернете, однако вразумительное описание в интернете, а тем более в российском сегменте отсутствует. По книге «Computer Speech: Recognition, Compression, Synthesis»
Одним из удивительных следствий бинаурального слуха является эффект предшествования или «закон первого волнового фронта». Был описан принстонским физиком Joseph Henry. Генри наблюдал, что когда два похожих звука достигают слушателя из разных направлений в быстрой последовательности, слушатель слышит только одиночный звук, пришедший с направления звука, который быстрее достиг уха.
Появилась гипотеза, что эффект предшествования развился у человека из-за того, что в реверберирующей среде (а это может быть плотным лесом или пещерой), направление первого волнового фронта указывало на хищника или на источник еды.
В 1950 году Helmut Haas (Гельмут Хаас) в своей диссертации показал, что более поздние звуки могут превосходить первый звук по интенсивности до 10 децибелл без ощутимой смены направления.
Так называемый эффект Хааса позволяет улучшить уровни звука в громковорительной системе посредством излучения усиленных, но задержанных сигналов, еще не слышимых ухом человека и не отвлекающих от основного, более слабого источника. Впервые такая система была установлена в 1953 году в соборе святого Павла в Лондоне. Дворец Конгрессов московского Кремля — пример помещения, где искусственная реверберация полностью доминирует над естественным звуком. Реверберация производится подземными камерами дворца и передается в главный зал по трубам.
Эффект предшествования можно хорошо продемонстрировать в забавном эксперименте, который впервые провел исследователь Phillips. Тоновый сигнал подается на два громкоговорителя, левый испускает только короткий переход и затем уровень звука уходить в ноль — в тишину, правый громкоговоритель излучает слегка задержанный и более стабильный тон. Из-за эффекта предшествования звук будет слышен из левого громкоговорителя.
В ревереберационной среде слушатели постоянно воспринимают тон как продолжающийся из более тихого громкоговорителя и удивляются, когда демонстратор эффекта отключает питание от левого громкоговорителя и отключенный громкоговоритель кажется источником звука. Интересно, что этот парадоксальный эффект восприятия работает только в среде с боковыми отражениями, где стереофонические маркеры стабильного тона (разницы в амплитуде и фазе) являются неоднозначными из-за многократных отражений. В этом случае ухо цепляется только за один неоднозначный признак звука — того, который пришел быстрее.
Точно так же может удивить и так называемый эффект «коктейльной вечеринки», который позволяет слушателю с бинауральным восприятием подавить нежелательные звуки, направления которых не совпадают с желаемым сигналом.
Похожий по смыслу с эффектом Хааса подход может быть полезен и для более прозаических задач сведения музыки и получения эффектного звучания. Creg Allen в своих размышлениях на тему звука в компьютерных играх ( книга Mixing, Recording, and Producing Techniques of the Pros: Insights on Recording Audio for Music, Video, Film, and Games) приводит пример получения эффектного «большого» и объемного звука — например, взрыва. Пропустив звук взрыва через компрессор (Alesis 3630 к примеру) и заставив его звучать на 50-100 мс после необработанного звука; ухо будет ощущать звук громче и больше, чем просто компрессированный звук. Это можно объяснить тем, что ухо и мозг фокусируется на опознании того, что заставило произвести такой звук. Необязательно должно быть громче, но уши погружены в прослушивание этого звука. Так как они заняты этим несильным звуком, разум не ожидает появления следующего — более сильного.
Еще одна полезная техника, которая понадобится, если из-за того что вся частотная полоса заполнена, но хочется, чтобы определенный звук пробился и прозвучал ярко в общем миксе. Подход часто используется при озвучивании автомобильных погонь — которые содержат звуки двигателя, выстрелы, пробуксовки колес. Если хочется услышать именно звук пробуксовки, то необходимо вырезать крошечные куски звука шина (всего лишь порядка пары миллисекунд). При прослушивании только звука пробуксовки это будет слышаться как заикание. Но если проиграть микс целиком, то внезапно мы услышим отчетливый звук визжания покрышек. Мозг знает о пробелах в звуке и пытается заполнить их. Ухо определяет пустоты, но пытается заполнить эти крошечные прерывания звука и наше сознание слышит скрип покрышек намного яснее. Это работает не всегда, но в некоторых это существенно помогает услышать определенный звук в общем миксе.
И напоследок видео о том, что такое эффект Хааса и как использовать его в миксе. Один из основных выводов — эффект Хааса — отличная замена обычному панорамированию, в частности искусственному — при получении стерео сигнала из моно.
Данная команда проходит по всем .cs файлам в текущем каталоге и его подкаталогах (опция —Recurse) исключая файлы AssemblyInfo.cs и файлы дизайнеров форм. select-string «^(s*)$» -notMatch исключает из подсчета пустые строки
Зачастую появляется необходимость отредактировать файл PDF — формат который сам по себе не предназначен для редактирования. Помимо того, жизнь осложняет то, что можно установить пароли на файл формата PDF. Первый тип пароля — пароль пользователя (user’s password — U-пароль), такой пароль надежно защищает документ от просмотра — при открытии будет выдан запрос на ввод пароля, без пароля. Пароль поддается расшифровке только перебором, можно сказать, что для современных форматов с ключом более 40 бит задача не решаема.
Более часто используется пароль владельца (Owner’s пароль, O-пароль), который ограничивает возможности печати или редактирования документа. Легко увидеть присутствие такого пароля по заголовку в Acrobat Reader — в заголовку будет слово «SECURED». Популярные программы импорта и редактирования PDF — например, Abby PDF Transformer или Abby Fine Reader такие документы открывать не захотят. И если проблему печати можно решить продвинутым средством получении скриншотов с экрана (с автоматической прокруткой экрана, например, Snag It), то для редактирования документа или экспорта в формат .DOC понадобится специальное средство.
Программа VeryPDF PDF Password Remover позволяет снять пароль владельца за доли секунды. В бесплатной версии можно сохранить только часть документа и будет вставлена метка о том, что документ был обработан программой Pdf Password Remover. Удобно наличие консольной версии для пакетной обработки файлов.
В механизме событий .NET отсутствует стандартная возможность избежать повторной подписки на сообщения. То есть, при повторной подписке на один и тот же обработчик будет вызываться столько раз, сколько раз была произведена подписка на событие. Но можно реализовать такую функциональность в программе самостоятельно одним из двух способов.Первый способ — удалять обработчик через оператор -= при добавлении нового подписчика и тут же его добавлять:
public class NonDuplicateEventArgs : EventArgs
{
public NonDuplicateEventArgs(string message)
{
Message = message;
}
public string Message { get; set; }
}
protected event EventHandler<nonDuplicateEventArgs> _nonDuplicateEvent;
/// <summary>
/// Событие с проверкой на добавление обработчиков-дубликатов путем удаления и добавления обработчика заново
/// </summary>
public event EventHandler<nonDuplicateEventArgs> NonDuplicateEvent
{
add
{
// пытаемся удалить обработчик, затем добавляем снова
_nonDuplicateEvent -= value;
_nonDuplicateEvent += value;
}
remove { _nonDuplicateEvent -= value; }
}
Второй способ заключается в том, чтобы в явном виде проверять, присутствует ли обработчик в списке вызовов:
using System.Linq;
private EventHandler<nonDuplicateEventArgs> _nonDuplicateEventInvocList;
/// <summary>
/// Событие с проверкой на добавление обработчиков-дубликатов через GetInvocationList
/// </summary>
public event EventHandler<nonDuplicateEventArgs> NonDuplicateEventInvocList
{
add
{
if (_nonDuplicateEventInvocList == null ||
!_nonDuplicateEventInvocList.GetInvocationList().Contains(value))
{
_nonDuplicateEventInvocList += value;
}
}
remove { _nonDuplicateEventInvocList -= value; }
}
Для того, чтобы решить, что же выбрать в своем приложении, я сделал небольшой тест. Как и ожидалось, метод с GetInvocationList для проверки одного и того же обработчика работает существенно медленнее, чем удаление и добавление — более чем в 5 раз медленнее (11.7 секунд против 2.2)
//замеряем скорость добавления одного и того же подписчика на событие
SmartEvents smartEvents = new SmartEvents();
measureTime(() =>
{
for (int i = 0; i < testCount; i++)
{
smartEvents.NonDuplicateEvent += OnNonDuplicateEvent;
}
}, "NonDuplicate");
measureTime(() =>
{
for (int i = 0; i < testCount; i++)
{
smartEvents.NonDuplicateEventInvocList += OnNonDuplicateEvent;
}
}, "NonDuplicateEvent with InvocationList");
[/sourcecode]
Однако если увеличивать количество обработчиков, то разница между двумя способами становится все менее заметной. Для 6 обработчиков разница будет несущественна, но первый метод все-таки быстрее, поэтому стоит использовать именно его.
//замеряем скорость добавления нескольких подписчиков в случайном порядке
var methods = new EventHandler[]
{
OnNonDuplicateEvent, OnNonDuplicateEvent2,
OnNonDuplicateEvent3, OnNonDuplicateEvent4,
OnNonDuplicateEvent5, OnNonDuplicateEvent6
};
testCount /= methods.Length;//чтобы долго не ждать
Random r = new Random(0);
var list = Enumerable.Range(0, testCount).Select(z => methods[r.Next(methods.Length)]).ToArray();
measureTime(() =>
{
for (int i = 0; i < testCount; i++)
{
smartEvents.NonDuplicateEvent += list[i];
}
}, "NonDuplicate for" + methods.Length + "subscribers");
measureTime(() =>
{
for (int i = 0; i < testCount; i++)
{
smartEvents.NonDuplicateEventInvocList += list[i];
}
}, "NonDuplicateEvent with InvocationList" + methods.Length + "subscribers");
}
[/sourcecode]
Полный код решения с тестами можно скачать по ссылке.
На сайте excel.acdc.com представлен клип группы AC/DC в очень необычном формате. По ссылке можно скачать Excel-файл, который может проигрывать «видео».
Интересно узнать, как реализован такой фокус. Если посмотреть на техническую сторону этой занимательной безделушки, то можно увидеть следующий код макроса (код даже не закрыт паролем) на VBA, проигрывающий псевдо-видео:
Sub PlayVideo()
Dim i As Long
Dim Start, Delay
i = 100
Do While Sheet1.Cells(i, 17).Value <> ""
Start = Timer 'Set start to internal timer
Delay = Start + 0.083 'Set delay so frames change 12 per sec.
'Display
Do While Timer < Delay
DoEvents
Loop
Sheet1.Range("B2").Value = Sheet1.Cells(i, 17).Value
DoEvents
If StopPlaying = True Then
Exit Do
End If
Start = Timer 'and reset the timer
Delay = Start + 0.083 'and the delay
i = i + 1
Loop
'Stop audio
Call PlayBackStop
'Clear video
Sheet1.Range("B2").Value = ""
'Show logo
Sheet1.Range("B2").Value = Sheet1.Range("Q99").Value
'Move cursor
'Sheet1.Range("A1").Select
End Sub
[/sourcecode]
</p>
<p>Каждые 0.083 секунды, то есть примерно с частотой 12 кадров в секунду происходит заполнение ячеек новыми данными.</p>
<p> Проигрывание звука осуществляется через импортированную функцию библиотеке winmm.dll :</p>
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Предварительно звук извлекается из xls-файла в файл ACDC.wav c помощью простого поиска заголовка внутри бинарного xls-файла. Файл ACDC.wav был предварительно внедрен в Excel-документ.
В очередном обновлении Android 4.1 Jelly Bean появилась функциональность оффлайн распознавания речи. Теперь использовать голосовой ввод можно даже тогда, когда отсутствует подключение к интернету. На конференции Google IO был продемонстрирован Galaxy Nexus, с помощью которого можно было произнести целую фразу и получить распознанный текст.
На данном этапе доступен только английский язык, но Google обещает добавить поддержку остальных языков в ближайшем будущем. О том, как интегрировать технологию Voice Typing в свое приложение можно прочитать здесь.
Team Foundation Server обладает одной довольно удобной функциональностью — возможностью сохранения изменений на сервере без коммитов. Это помогает при осуществлении больших правок, когда изменения еще не готовы полностью, но хочется иметь некую промежуточную точку для себя. Выбрав Shelve Pending Changes и указав имя «полки» для изменений можно сохранить изменения, а затем при необходимости вернуть их командой Unshelve Pending Changes.
SVN в чистом виде не имеет такой возможности, но подобное поведение можно сымитировать, если использовать патчи SVN. Сделав изменения, выберите нужные файлы, для которых необходимо сделать контрольную точку и вызовите команду Create Patch (клиент Tortoise SVN).
Tortoise SVN спросит для каких файлов следует сделать патч и покажет диалог для сохранения файла патча на диске. Полученным файлом, который представляет собой обычный текстовый файл, подобный результатам работы сравнения файлов в unified diff, можно легко поделиться с коллегами. Для того, чтобы вернуть изменения, сделанные на момент создания патча следует выбрать команду ApplyPatch и выбрать файл патча.
Представим себе ситуацию, в которой эквалайзер ничего не может предложить для добавления яркости в канале с бас-гитарой или синтезатором, где высокие частоты не выражены. Это может быть потому, что фильтр нижних частот срезал верхние частоты или просто, потому что использовался генератор колебаний с ограниченной полосой. В таком случае в верхней части спектра может не оказаться энергии и эквализация будет бессильна изменить субъективное звучание. Единственная альтернатива – создать новые высокочастотные компоненты, которых раньше не было.
В этом случае, когда инструмент не генерирует частотные компоненты в требуемой частотной области и эквалайзер не исправляет положения дел, частотные компоненты могут быть просто недостаточно плотными для ощущения полноты балансы, с помощью эквалайзера не удастся настроить удовлетворительное усиление. Звук ощущается либо слишком маленьким, слабым, так как область спектра недостаточно «плотная» либо ощущается слишком большим, так как некоторые частоты в этой области спектра слишком выделяются из баланса. Увеличение плотности гармоник позволяет спектральной области остаться плотной в миксе без отдельных торчащих частотных компонент.
Инструмент, который может помочь в таких сценариях – дисторсия (Distortion). Эффект дисторсии широко используется в профессиональных кругах при микшировании, но достаточно часто игнорируется в небольших студиях. Хотя обычно люди стремятся минимизировать дисторсию во время звукозаписи, не стоит недооценивать её творческие возможности в миксе. По своей сути устройства дисторсии добавляют новые гармоники к обработанному сигналу, так как частоты тем или иным способом связаны с исходным сигналом, в них остается музыкальность. Вкратце, дисторсия позволяет изменить тембр звуковой дорожки без существенного изменения музыкальной функции в аранжировке. Дисторсия сейчас почти так же широко распространена как и эквалайзеры. Rich Costey использует дисторсию на главных вокальных треках. «Сегодня общепринято, что дисторсия для вокала почти то же, что дисторсия для гитары или баса. И, как правило, когда я свожу записи для других людей, то использую дисторсию для вокала, независимо от того, знают об этом люди или нет!». Возможно наиболее известное устройство для дисторсии в миксе – Tech 21 SansAmp, которое может сделать многое в работе над современным миксом, особенно если вас зовут Tchad Blake: “Обычно я ставлю одно на бас, одно на ударные, одно на малые барбаны(snare). Удивительно, как маленькая дисторсия делает длинный путь». Большой проблемой при использовании дисторсии в миксе, тем не менее, остается сдерживание добавления гармоник только на желаемых частотах. Ниже немного советов о том, как держать все под контролем.
Во-первых, хорошо иметь различные устройства дисторсии, из которых можно выбрать нужное для микса. Существует множество электрических устройств, которые могут создавать музыкально полезную дисторсию и многие из них смоделированы в цифровом виде в различных плагинах: магнитофон, гитарные усилители, педали эффектов, мягкий клиппинг, электронные лампы, транзисторы и трансформаторы. Многие из плагинов имеют большой выбор пресетов, предлагая широкое изменение звуков и даже нет необходимости понимать что-нибудь о том, как они работают, достаточно просматривать списки пресетов и искать что-то, что добавляет полезный эффект для звуковой дорожки. Даже lo-fi цифровая дробилка битов(bit-chrusher) может случайно оказаться полезной. «Дисторсия создает контраст между дорожкой и остальной песней» — говорит Serban Ghenea. “Нет нужды в большом количестве дисторсии, но она может сделать грандиозную разницу». Помните, однако, что цифровая дисторсия с этих устройств имеет тенденцию быть гораздо менее связанной со входным сигналом в плане музыкальности, поэтому проверяйте на неприятные негармоничные добавленные гармоники, особенно для тоновых инструментов.
Во-вторых, некоторые процессоры дисторсии имеют изобилие органов управления, но если быть честным, то жизнь слишком коротка, чтобы тратить годы, разбираясь, что значат большинство из них, поэтому стоит просто залиться маниакальным смехом и начать вращать рукоятки. Что действительно важно, так это то, как сильно их повернуть. Если обращаться с процессом дисторсии умеренно, можно получить неуловимое уплотнение звука, тогда как если удариться в высокий уровень дисторсии, можно будет с трудом различить исходный звук среди добавленной каши в частотной области. Если в модуле дисторсии присутствует орган управления с название Drive или Gain, то это то, на что стоит уделить свою внимание в первую очередь. Если такого органа управления нет, то управлять уровнем дисторсии можно путем изменения уровня сигнала на входе устройства дисторсии.
Нашел хороший видео-урок по ретуши портрета. Так как текстового описания к видео на сайте автора нет, то сделаю небольшую выжимку как получить красивый цвет лица без потери текстуры кожи. Скорее всего прочитать пару строк будет быстрее, чем смотреть видео целиком, если что-то непонятно или не хватает скриншотов процесса, то всегда можно обратиться к видео.
[youtube=http://www.youtube.com/watch?v=WLu1pjhKHJo&feature=player_embedded]
Выделяем светлые области на лице и копируем в новый слой (сочетание клавиш Ctrl-J)
Размываем скопированную область медианным фильтром и гауссовым (мне хватило только гауссового). Степень размытия устанавливаем такой, чтобы кожа была практически идально сглаженной и ровной, ничего страшного, если выглядит довольно неестественно
На размытом слое вызываем операцию Image-Apply Image, указываем:
Layer (слой источник) — фоновый слой без размытия
включаем флажок Invert
устанавливаем режим смешивания Blending в значение Add
Scale — 2
Offset 1
Устанавливаем режим смешивания для обработанного слоя Linear Light — должно снова получиться размытое изображение
Конвертируем слой в смарт-объект для удобства дальнейшей настройки(правой кнопкой на слое — Convert to Smart Object)
Снова вызываем размытие по гауссу и настраиваем радиус размытия по вкусу