[Sublime Text] Отключение проверки обновления

На своем «Маке» в качестве постоянного текстового редактора использую Sublime Text 3. В последнее время он стал просить скачать новую версию, которую, по определенным причинам, мне устанавливать не хочется.

И так каждый раз при открытии Sublime Text отображается модальное окно «А не хотите ли загрузить новую версию?». Это немного напрягало, поэтому было решено найти способ отключить данное оповещение.

Все, что для этого нужно, это пойти в Preferences -> Settings — User и добавить туда следующую строчку: "update_check": false,

[DirectX SDK] Error Code: S1023

Попытка установки DirectX SDK (June 2010) завершается ошибкой «Error Code S1023«.

Причина в установленных в системе пакетах Visual C++ 2010 Redistributable Package. Поэтому для корректной установки DirectX SDK необходимо сперва удалить эти пакеты.

Сделать это можно стандартно через панель управления, а можно и с помощью следующих команд:

MsiExec.exe /passive /X{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
MsiExec.exe /passive /X{1D8E6291-B0D5-35EC-8441-6616F567A0F7}

[Web Inspector] Разница между Size и Content

В Chrome Web Inspector есть раздел Network, представленный в виде таблицы. В ней есть столбец «Size, Content».

Web Inspector - Разница между Size и Content

Различие между двумя этими величинами в следующем: «Size» — это размер данных, переданным по сети, в то время как «Content» представляет собой фактический размер этих данных.

Есть несколько причин, по которым цифры у «Size» и «Content» расходятся:

— данные взяты из браузерного кэша (тогда «Size» равен 0 либо имеет очень небольшое значение)
— применяется сжатие GZip (в этом случае «Size» всегда меньше, чем «Content»)
— имеются заголовки запросов / ответов, в том числе куки (тогда «Size» брльше, чем «Content»)
— редиректы или запросы на проверку подлинности

Немного слов об утилите Problem Steps Recorde

Давно веду общение с одним нашим японским пользователем, который весьма активно использует наши программные продукты. По сути, мы используем его в качестве бета-тестера. Т.к. я являюсь единственным сотрудником, кто отвечает за процессы тестирования в компании, то помощь в виде таких бета-тестеров никогда не бывает лишней. Японец, к слову, работает в службе технической поддержки и изучать проблемы ему не ново. Он весьма скрупулезно исследует наши программы и присылает подробные отчеты. В основном, они включают в себя проблемы юзабилити, хотя часть из них содержит и специфические ошибки, воспроизводимые только у него. В общем, я весьма доволен нашей с ним кооперацией.

На днях он прислал еще один отчет о найденной проблеме (позже выяснилось, что он не правильно растолковал функциональность, посчитав ее за ошибку). Отчет был в виде mht-файла (веб-архив), который содержал детализированный отчет с шагами воспроизведения, включая скриншоты и некоторую системную информацию. Вау! По правде говоря, такое я видел впервые. Что это такое? Это он сам все написал? Навряд ли… Начал гуглить. Нашел — называется «Problem Steps Recorder«, утилита, которая входит в состав Windows 7.

Основное назначение «Problem Steps Recorder», как следует из названия, это запись каких-либо шагов. Записанные действия сохраняются в отчет формата mht, а сам же файл автоматически добавляется в zip-архив. Т.е. для рядового пользователя достаточно просто запустить запись, пощелкать, затем нажать «Сохранить», и отправить уже сформированный архив, скажем, в службу тех.поддержки. То, что добавили в Windows 7 — это мечта любого специалиста, имеющего дела с пользователями, которые порой не могут толком объяснить, что же у них там за проблема такая. А тут взял, записал и отправил.

Найти утилиту «Problem Steps Recorder» можно в панели управления или вызвать через командную строку: psr.exe

Немного слов об утилите Problem Steps Recorde

[Chrome] Куда подевались настройки эмуляции?

Начиная с последних версий браузера Google Chrome из привычного места пропали опции настройки User-Agent’а, размером экрана и пр. Все это раньше можно было сделать через инструменты разработчика (F12 -> Settings -> Overrides). Я использую версию 32.0.1700.72 m и вот что сейчас есть в этом разделе:

chrome_settings

Пичаль, ведь там нет ничего нам нужного! Думаете, что из Chrome удалили так нужные тестировщикам и разработчикам инструменты? Нет, оказывается, их просто вынесли в другое место (F12 -> Drawer -> вкладка Emulation):

chrome_settings_2

 

[Chrome] Красный цвет окна браузера

Сегодня обнаружил, что после обновления Google Chrome до версии 32.0.1700.72 m, все окно браузера было в красном полупрозрачном цвете:

Красный цвет окна браузера Google Chrome

Проблема была явно локальной, а поиск в сети ответа не дал. Пошел в chrome://flags и начал экспериментировать в опциями.

Вторая же по счету, которая называется «Переопределение списка программного рендеринга Mac, Windows, Linux, Chrome OS, Android» и являлась причиной возникшей проблемы. По умолчанию опция выключена, а после включения и перезапуска браузера, красный цвет исчез.

Таким образом, красный цвет окна в Chrome свидетельствует о проблемах с программным рендерингом.

Cleanmymac

Вчера на рабочем ПК установил Хакинтош (OS X 10.9) в качестве виртуальной машины. В образе ОС уже были защиты несколько сторонних утилит, в том числе крякнутый CleanMyMac. Так вот, при попытке им воспользоваться появилось сообщение:

Ваша копия CleanMyMac 2 нелегальна и будет деактивирована.

Мы определили, что вы используете пиратскую копию. Пожалуйста, скачайте CleanMyMac 2 с нашего сайта и поддержите нас покупкой лицензии. В течении часа мы предлагаем вам скидку в размере 50% на CleanMyMac 2.

cleanmymac

Во-первых, фраза «в течении» написана с ошибка, правильно в данном случае — «в течение«. 🙂 Во-вторых, я все же нажал на кнопку «Купить со скидкой 50%» и да, мне открылась страница покупки, где значилась цена со скидной. Однако я сразу бросил взгляд на ссылку, по которой осуществляется переход на сайт:

http://macpaw.com/ru/store/cleanmymac?campaign=crk2cmm2&utm_source=cmm2_cracked
&utm_medium=app&utm_term=&utm_content=&utm_campaign=crk2cmm2_50
&clh=Mzg1MjU5fGUyMjQwZTNiOTEzNDg3NWVmYzViYTgyMzNmYTMwODE3

Как видно, ссылка содержит параметры, в которых фигурирует упоминание о том, что текущая версия является нелегальной. А если убрать подобные параметры, то такая измененная ссылка уже не даст нам возможность приобрести CleanMyMac с 50% скидкой :’-(

http://macpaw.com/ru/store/cleanmymac?campaign=utm_medium=app&utm_term=&utm_content=
&clh=Mzg1MjU5fGUyMjQwZTNiOTEzNDg3NWVmYzViYTgyMzNmYTMwODE3

В ссылке используется хэш, который определяет тайм-штапм, по этой причине она действительно работает только один час.

[Windows] Как сбросить пароль от учетной записи

Чтобы сбросить пароль от учетной записи в ОС Windows 7 (к примеру, если вы забыли его), то можно воспользоваться следующим методом:

1. Создать загрузочную флешку
2. Установить на нее утилиту Offline NT Password and Registry Editor
3. Загрузить компьютер с помощью флешки и сбросить пароль

Метод полностью работоспособен и благодаря нему мне удалось решить проблему, озвученную ранее.

Загрузочную флешку я создал с помощью программы XBoot, скормив ей ISO-образ  утилиты Offline NT Password (использовал загрузчик Grub4Dos, т.к. Syslinux не взлетел). Далее, следуя подробной инструкции, сбросил пароль от учетной записи администратора.

[IPB] Про то, как обходят проверку лицензии (нуленые версии)

Решил узнать, как ломают популярный форумный движок Invision Power Board. Для этого исключительно в ознакомительных целях я загрузил последнюю релизную версию 3.4.5 (Retail, ENG) и точно такую же версию, только нуленую и русифицированную от IPBMafia.ru.

Для того, чтобы найти изменения, сделанные при нулении, необходим инструмент для сравнения изменений файлов. То, что было у меня под рукой — это Git. Первым коммитом пошел IPB 3.4.5 (Retail, ENG), вторым — IPB 3.4.5 (Nulled, RUS).

И вот какие изменения предстали:

admin\applications\core\extensions\enhancements\ipscdn.php

-		$ping	= $file->getFileContents( "http://license.invisionpower.com/?a=cdn&key=" . ipsRegistry::$settings['ipb_reg_number'] );
+		$return = NULL;

admin\applications\core\extensions\enhancements\viglink.php

-		$return = $cfm->getFileContents( "http://license.invisionpower.com/viglink/?subId=" . urlencode( $subId ) );
+		$return = NULL;

\admin\applications\core\modules_admin\tools\licensekey.php

-	{
-		/* If we don't have a key, an empty array is fine */
-		if ( !$this->settings['ipb_reg_number'] )
-		{
-			$this->cache->setCache( 'licenseData', array(), array( 'array' => 1 ) );
-			return;
-		}
-	
-		/* Query the api */
-		$classToLoad = IPSLib::loadLibrary( IPS_KERNEL_PATH . 'classFileManagement.php', 'classFileManagement' );
-		$classFileManagement = new $classToLoad();
-		$response = $classFileManagement->getFileContents( "http://license.invisionpower.com/?a=info&key={$this->settings['ipb_reg_number']}&url={$this->settings['board_url']}" );
-
-		/* Is it valid? */
-		if ( $response == 'NO_KEY' )
-		{			
-			IPSLib::updateSettings( array( 'ipb_reg_number' => '' ) );
-			$this->cache->setCache( 'licenseData', array(), array( 'array' => 1 ) );
-			return;
-		}
-					
+	{	
 		/* Save */
-		$licenseData = json_decode( $response, true );
+		$licenseData = darkLAE::getLicenseData();
 		$licenseData['_cached_date']	= time();
 		$licenseData['key']['_expires']	= $licenseData['key']['_expires'] ? $licenseData['key']['_expires'] : 9999999999;
 		$licenseData['key']['expires']	= $licenseData['key']['expires'] ? $licenseData['key']['expires'] : 9999999999;
 		$this->cache->setCache( 'licenseData', $licenseData, array( 'array' => 1 ) );
-		
-		/* Copyright Removal? */
-		if ( $licenseData['cr'] )
-		{
-			IPSLib::updateSettings( array( 'ipb_copy_number' => $licenseData['cr'], 'ips_cp_purchase' => 1 ) );
-		}
-		elseif ( $this->settings['ips_cp_purchase'] )
-		{
-			IPSLib::updateSettings( array( 'ips_cp_purchase' => 0 ) );
-		}

\admin\index.php

+require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/

\admin\install\index.php

+require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/

\admin\upgrade\index.php

+require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/

\index.php

+require_once( IPS_ROOT_PATH . 'sources/base/darkLAE.php' );/*noLibHook*/

Файл darkLAE.php содержит класс-заглушку, которая как раз и отвечает за то, чтобы движок думал, что он активирован с помощью легального ключа. Содержимое этого файла, по понятным причинам, я выкладывать не буду, а кому надо, тот и так найдет.

Я в свою очередь в предвкушении линейки IPB 4.x. Говорят, там шаблоны будут переписаны с учетом HTML5 🙂