Acronis Disk Director Suite BSOD

Удалось победить крайне неприятные переодические синие экраны смерти, возникавшие в случае интенсивной работы с жестким диском, а также при установке программ (в особенности через установщик MSI) и 100% гарантированный BSOD при установке одного из обновлений безопасности Windows 7. Если у Вас случаются синие экраны с кодами ошибок (скриншот внизу) KMODE_EXCEPTION_NOT_HANDLED (код 1E) и/или ATTEMPTED_SWITCH_FROM_DPC(код B8) и установлен один из продуктов работы с разделами жесткого диска Acronis, то возможно, проблема в драйверах Acronis.

Перед всеми действиями по удалению Acronis рекомендую сделать точку восстановления системы, так как после того, как я удалил Acronis Disk Director Suite штатным деинсталлятором, перезагрузил компьютер и установил обновления Windows, систему нельзя было загрузить даже в безопасном режиме (возникал синий экран). Горе-программисты Acronis, не написавшие нормальные драйвера и даже нормальное удаление своего продукта из системы, выпустили такое же горе-обновление, требующее ручных манипуляций с реестром. Рекомендую сразу удалять Acronis именно этим средством Acronis Disk Director 11 Home Cleanup Utility, важно после удаления не перезагружать компьютер и проделать следующие действия:

1.Запустить редактор реестра (Пуск-выполнить-regedit.exe)
2.В следующих ключах реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F} и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E967-E325-11CE-BFC1-08002BE10318} отредактировать ключи UpperFilters и LowerFilters удалением из них строк snapman*, tdrpman*, timounter (сами ключи с остальным содержимым должны остаться!!! например, вместо «snapman fvevol rdyboost», должно стать «fvevol rdyboost»)

После такого удаления Acronis Disk Director Suite наконец-то удалось заставить компьютер функционировать должным образом и устанавливать новые программы и обновления.

Рубрика: Технологии | Метки: , | Добавить комментарий

Декомпиляция Android приложений

Хочу поделиться наиболее удобным и быстрым способом получения исходного кода Android приложения.

1. Для получения apk-файла прямо из телефона можно воспользоваться бесплатным файловым менеджером Astro. В приложении ASTRO необходимо зайти в менеджер приложений, и выбрав нужное приложение нажать кнопку резервная копия, apk-файл сохранится на карту памяти в папку backups и папку, соответствующую имени пакета приложения.
AirDroid.

2. Получение dex-файла из файла приложения apk. Открыть apk-файл как zip-архив и скопировать оттуда файл classes.dex.

3. Получить jar-файл из dex-файла. Для этого можно воспользоваться проектом dex2jar. В консоли следует запустить dex2jar.bat с параметром имени dex-файла.

4. Собственно этап декомпиляции. Проект jd-gui позволяет декомпилировать jar файла даже с использованием интерфейса. После открытия файла командой File-Save All Sources указываем для архива с исходным кодом. Следует отметить, что на некоторых приложениях (например, Instagram) jd-gui вываливается с ошибкой и не сохраняет архив, хотя по отдельности файлы можно просматривать. Если это станет проблемой, то придется искать альтернативные декомпиляторы java.

Рубрика: Android, Программирование | Добавить комментарий

Как узнать физический путь расшаренной папки

Иногда ворох папок, расшаренных по сети достигает неимоверного количества и вспомнить о том, где какая папка лежит на самом деле не так просто. Для того, чтобы узнать где физически лежит папка проще всего воспользоваться простой командой net share.

На скриншоте видно, что папка с сетевым именем Temp находится на компьютере по физическому пути C:\Temp

Рубрика: Windows, Свистелки | Добавить комментарий

Instagram для Android

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

Forbes сделали интервью с создателем приложения, хотя кроме восхищения от идеи квадратного формата для фотографии, полезной информации почерпнуть сильно не удастся.

Рубрика: Свистелки | Добавить комментарий

Under the Hood of .NET Memory Management

Компания Redgate представила первую часть книги, посвященной проблемам менеджемента памяти. Первая часть книги «Under the Hood of .NET Memory Management» доступна для скачивания.

Рубрика: .Net Framework, C#, Программирование | Добавить комментарий

Автообновление приложений .NET

В этой статье рассматривается два наиболее простых способа реализации автообновления приложения .Net. Первый способ – с помощью стандартной технологии Microsoft – Click Once, второй – с помощью опенсорного компонента NET Application Updater Component.

Обновление с помощью ClickOnce

Процесс использования ClickOnce описан в этой статье. Однако, установка с помощью этой технология делает неправильный мед» не позволяет установить программу для всех пользователей, поэтому переходим к следующему пункту.

Сразу оговорюсь, что в итоге в Windows 7 хранение в папке ProgramData требует администраторских прав и в итоге, описанное здесь решение можно рассматривать только в качестве собственной реализации автообновления, исходный код которого всегда можно изменить для своих нужд.

Обновление с помощью NET Application Updater Component

Компонент явно сырой, но с определенными улучшениями и исправлениями, его можно использовать.

1. Создаем новый проект Windows Forms, например с именем MySimpleSample

2. Добавляем проекты AppStart и AppUpdater. Добавляем Reference на на проект AppUpdater. В AppUpdater есть ссылка на класс AppStartConfig, лежащий в проекте AppStart, поэтому проекты AppStart и AppUpdater лучше положить на одном уровне файловой структуры.

3. Добавляем на форму компонент AppUpdater ( Со окна Toolbox-AppUpdater Components). Тут были некоторые проблемы, скорее всего это связано с обновлением проекта до Visual Studio 2010 . UpdateLog хочет писать в файл AppUpdate.log, но текущим каталогом, возвращаемым функцией GetLogFilePath является путь к Visual Studio, куда, естественно запись запрещена. Можно поправить выбор каталога на что-нибудь такое :

DirectoryInfo DI = new DirectoryInfo(Assembly.GetCallingAssembly().Location);

В классе AppDownloader нас будет ожидать еще один сюрприз – захардкоженное имя конфига «AppStart.config». Явная недоделка – исправляем хотя бы на константу для централизации.

Читать далее

Рубрика: .Net Framework, C#, Программирование | Добавить комментарий

Переменные persistent в Matlab

В Matlab есть одна довольно редко используемая и не очевидная функциональность, заключающаяся в использовании переменных с модификатором persistent. Фактически такие переменные аналогичны статическим переменным в теле метода, например у С++. Одним из наиболее типичных сценариев использования таких переменных является написание функций загрузки большого объема данных либо длительной предварительной обработки. При первом запуске метода, содержащего переменную с модификатором persistent, эта переменная будет пустой. При последующих запусках, если функция не изменялась, значение переменной persistent сохранится. Таким образом можно выполнить длительные вычисления или загрузку данных с диска (десериализация mat-файлов в Matlab работает довольно медленно) только при первом вызове функции.

function DB = LoadDB(DBPath, Reload)
%function DB = LoadDB(DBPath, Reload)
% функция чтения данных по пути DBPath
% Reload - принудительная перезагрузка (по умолчанию - false)

if nargin<2 %если переменная Reload не задана, задаем значение по умолчанию
    Reload = false;
end

persistent db;

if isempty(db) || Reload %если еще не разу ни запускали чтение или необходимо принудительно повторить загрузку данных
% читаем базу в переменную db
end

Db = db; %копируем в выходную переменную
Рубрика: MatLab, Программирование | Добавить комментарий

Visual Studio Achievements Beta – или как стать программистом 80 уровня

Появилось шуточное расширение Visual Studio Achievements для Visual Studio, позволяющее прокачивать свои программистские навыки и позволяющее делиться «достижениями». Как только получен соответствующий значок им можно похвастаться в FaceBook и Twitter.

Помимо применения расширения «just for fun» и наличия довольно бессмысленных достижений(«Написать иерархию классов с наследованием в 10 уровней») или даже грустных («Программировать ночью в пятницу или субботу»), расширение может быть вполне полезным при начальном освоении Visual Studio, например, позволяет узнать о функции «Organize Usings». Но пока все-таки список не очень большой, надеюсь, авторы не остановятся на достигнутом.

Рубрика: Visual Studio | Добавить комментарий

Когда использовать Parallel.ForEach, а когда PLINQ

Мой перевод статьи «When Should I Use Parallel.ForEach? When Should I Use PLINQ?», опубликованный ранее на Хабрахабре.

Введение

Обычно, при оптимизации программы для многоядерных компьютеров первым шагом является выяснение возможности разделения алгоритма на части, выполняющиеся параллельно. Если для решения задачи необходимо параллельно обрабатывать отдельные элементы из большого набора данных, то первыми кандидатами станут новые возможности параллельности в .NET Framework 4: Parallel.ForEach и Parallel LINQ (PLINQ)

Parallel.ForEach

Класс Parallel содержит метод ForEach, представляющий собой многопоточную версию обычного цикла foreach в C#. Подобно обычному foreach, Parallel.ForEach выполняет итерации над перечислимыми данными (enumerable), но с использованием множества потоков. Одна из более часто используемых перегрузок Parallel.ForEach выглядит следующим образом:

public static ParallelLoopResult ForEach<tsource>(
			 IEnumerable</tsource><tsource> source,
			 Action</tsource><tsource> body)

Ienumerable указывает на последовательность, по которой нужно выполнить итерации, а Action body задает делегат, вызываемый для каждого элемента. Полный список перегрузок Parallel.ForEach можно найти здесь.

PLINQ

Родственный с Parallel.ForEach PLINQ представляет собой модель программирования для паралелльных операций над данными. Пользователь определяет операцию из стандартного набора операторов, включающих в себя проекции, фильтры, агрегирование и т.д. Подобно Parallel.ForEach PLINQ достигает параллельности, разбивая входную последовательность на части и обрабатывая элементы в разных потоках.

В статье выделяются различия между этими двумя подходами к параллельности. Разбираются сценарии использования, в которых лучше всего использовать Parallel.ForEach вместо PLINQ и наоборот.

Выполнение независимых операций

Читать далее

Рубрика: .Net Framework, C#, Алгоритмы, Программирование | Добавить комментарий

Вырезаем снежинки он-лайн

В GisMeteo.ru сделали новогодний подарок своим пользователям. Прямо на сайте можно виртуально вырезать старые добрые бумажные снежинки. Созданной снежинкой можно легко поделиться, как прямой ссылкой, так и через социальные сети, а также посмотреть и оценить результаты других людей. Вот, например, что может получиться :)

Рубрика: Вкусняшки | Добавить комментарий