Category: it

питер, Леша

Функциональный стиль

Программирование в функциональном стиле разрывает мне мозг.

Но я справился! Даже горжусь собой, потому что сосчитал монетки без явного использования циклов. И даже без использования вспомогательной функции, которая рекурсией реализовывала цикл. :)
питер, Леша

Windows 10 сборка 10162

Дата релиза Windows 10, , приближается с каждым днем.

Еще в , как только было объявлено о программе Windows Insider, я установил самую первую сборку Windows 10 build 9841. С того времени в системе многое изменилось…

Но я так и не определился, хочу ли я менять Windows 7 на новую Windows 10. Кстати, Microsoft предлагает бесплатное обновление c Windows 7 SP1 и Windows 8.1 до Windows 10.

Чтобы собрать еще больше статистики, я решил установить Windows 10 на десктоп, более мощный по сравнению с ноутбуком, на котором стояла Windows 7 с момента релиза

Установка Windows 10 build 10162 на большой компьютер заняла около 20 минут, еще около 10 минут потребовалось на первоначальную настройку и подготовку системы к запуску.

После завершения установки появляется привычный рабочий стол с кнопкой Пуск на панели задач и с меню Пуск:

Windows 10 build 10162: Start menu

Collapse )
питер, Леша

Неудачное обновление Windows

Логотип Windows В этот вторник Microsoft выпустила очередную порцию обновлений для Windows. Одно из них оказалось не совсем удачным.

Речь об обновлении KB3004394: December 2014 update for Windows Root Certificate Program in Windows.

После установки обновления Windows перестает доверять собственным компонентам, как будто у них нет цифровой подписи. Особенно это заметно в подтверждениях UAC: при запуске консоли Управление компьютером повышение привилегий обычно происходит без подтверждения. После установки этого обновления выводится диалоговое окно с желтым заголовком как будто цифровая подпись отсутствует.

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

Collapse )

Обновлено: Кажется, Microsoft удалила это обновление из Windows Update. Но все равно сто́ит проверить, чтобы случайно не установилось.

питер, Леша

Замена для OneNote

Я очень привык к OneNote, в нем писались практически все большие посты, и вообще в нем храниться много черновиков. Кроме того, я его использую просто для разных заметок, и даже храню в нем логины/пароли в секции, защищенной паролем. Записная книжка OneNote лежит на флэшке, и все изменения автоматически синхронизируются; причем пользоваться этой записной книжкой можно и без подключения флэшки.

OneNote 2007

Но на новой работе больше нет Microsoft Office, и хотелось бы найти нечто подобное, чтобы всякие заметки и черновики незаметно мигрировали с компьютера на компьютера.

Я знаю, что есть веб-приложение OneNote, но онлайн версия, на мой взгляд, не так удобна. Она не запоминает выбранный раздел и страницу. Версии Microsoft Office 2010 и 2013 интегрируются с онлайн версией: в них можно редактировать записную книжку, хранящуюся в облаке, но у меня дома Office 2007, и он так не умеет, к сожалению.

Расскажите, чем вы пользуетесь для хранения заметок и черновиков?
питер, Леша

Ежедневные задания в игрушках из Windows 8

Мы основательно подсели на ежедневные задания (Daily Challenges) в играх Microsoft для Windows 8. Наташа уже писала, что эти задания — единственное, что ей нравится в Windows 8.

Играем мы, в основном, в три игрушки:
Microsoft Solitaire Collection Microsoft Taptiles Microsoft Mahjong

Иногда еще в Сапера:
Microsoft Minesweeper

Началось всё, конечно, же с пасьянсов. В декабре по вечерам я планомерно собирал по пять пасьянсов: Косынка (Klondike), Паук (Spider), Свободная ячейка (Freecell), Пирамида (Pyramid), Три пика (TriPeaks). Потом ко мне присоединилась Наташа и забрала два последних пасьянса (Пирамиду и Три пика) себе.

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

В январе мы продолжили собирать пасьянсы. И пока мы еще были на каникулах, я не устоял перед рекламой Taptiles в ежедневных заданиях в пасьянсах. Так я установил Taptiles и Mahjong, и Сапера (Minesweeper) до кучи. В каждой из них есть ежедневные задания, но их там по три. Таким образом, в январе мы регулярно играли уже в три игрушки; Сапер все же не пошел, и был заброшен.

Collapse )

Collapse )

Collapse )

питер, Леша

Проблема с установкой merge-модуля VC2005 x64

Read it in English

В очередной раз пришлось разбираться с ошибками установки библиотек Visual C++ 2005 x64. (В прошлый раз пришлось бороться с тем, что компоненты приложения ссылались на разные версии C++ runtime. Именно тогда в инсталляторе стали использоваться merge-модули.)

В этот раз на системах Windows 7 и Windows Server 2008 R2. Во время установки возникает следующая ошибка:
Ошибка при установке Visual C++ 2005 x64 runtime из merge-модуля

Текст сообщения:

An error occured during the installation of assembly component {844EFBA7-1C24-9382-A01F-C8B3B9A1E18E}.
HRESULT: 0x80073715.

В подробном логе, полученном с помощью (msiexec /i prod.msi /l*v msi.log), нашлись следующие записи:

MSI (s) (E0:E0) [15:43:58:875]: Assembly Error:The identities of the manifests are identical but their contents are different.
MSI (s) (E0:E0) [15:43:58:875]: Note: 1: 1935 2:
{844EFBA7-1C24-93B2-A01F-C8B3B9A1E18E} 3: 0x80073715 4: IAssemblyCacheItem 5:
Commit 6:
Microsoft.VC80.CRT,type="win32",version="8.0.50727.4053",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64"
MSI (s) (E0:E0) [15:43:58:875]: Assembly Error (sxs): Please look into
Component Based Servicing Log located at -121510792ndir\logs\cbs\cbs.log to get
more diagnostic information.
Error 1935. An error occured during the installation of assembly component
{844EFBA7-1C24-93B2-A01F-C8B3B9A1E18E}. HRESULT: 0x80073715. assembly
interface: IAssemblyCacheItem, function: Commit, assembly name:
Microsoft.VC80.CRT,type="win32",version="8.0.50727.4053",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64"

Лог файл %winndir%\logs\cbs\cbs.log не предоставил много больше информации, хотя в нем содержался мнемонический код ошибки: STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT. Этот код ошибки означает, что в системе уже есть сборка с таким же identity, что и устанавливаемая, и их версии тоже совпадают, но при этом устанавливаемые файлы отличаются.

На доступных мне машинах я не смог воспроизвести проблему: успешно устанавливается и работает. В процессе исследований выяснилось, что на проблемных машинка уже установлена сборка (assembly) Microsoft Visual C++ 2005 x64 Runtime.

Установил у себя из vcredist_x64.exe. После этого установка продукта стала завершаться с ошибкой.

Провел я и обратный эксперимент: на чистую машинку сначала установил наш продукт, а затем VC++ 2005 runtime. В результате установка vcredist_x64.exe завершилась с такой же ошибкой:
Ошибка при установке Visual C++ 2005 x64 runtime из vcredist_x64.exe

Текст сообщения:

Product: Microsoft Visual C++ 2005 Redistributable (x64) -- Error 1935.An error occurred during the installation of assembly 'Microsoft.VC80.CRT,type="win32",version="8.0.50727.4053",publicKeyToken="1fc8b3b9a1e18e3b",processorArchitecture="amd64"'. Please refer to Help and Support for more information. HRESULT: 0x80073715. assembly interface: IAssemblyCacheItem, function: Commit, component: {844EFBA7-1C24-93B2-A01F-C8B3B9A1E18E}

Решил сравнить содержимое папок C:\Windows\winsxs\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053 после установки из merge-модуля и после vcredist_x64.exe. Сборка содержит три файла: msvcm80.dll, msvcp80.dll, msvcr80.dll. Версии и размеры этих файлов совпадают в обоих вариантах установки. Но все равно два файла из набора отличаются друг от друга. Я выяснил, что отличаются они временем цифровой подписи: В merge-модулях библиотеки подписаны 12 июля 2009 г. в 11 часов, а в vcredist_x64.exe 12 июля 2009 г. в 6 часов:

Цифровая подпись msvcr80.dll из merge-модуля Цифровая подпись msvcr80.dll из vcredist_x64.exe

На системах с Windows XP и Windows Server 2003 подобная разница не приводила к ошибке. А на более новых Windows 7 и Windows Server 2008 R2 приводит к ошибке.

В Microsoft Connect эта проблема описана: 8.0.50727.4053 x64 CRT merge modules fails to install on x64 but ok on x86. Это же сообщение можно найти на форуме MSDN. Вопрос помечен как решенный, но ответ какой-то бессодержательный и невразумительный. В сообщении есть ссылка на другое описание такой же проблемы в Microsoft Connect.

И у меня тоже никакого решения для преодоления данной трудности.
Ясно одно, что Visual C++ 2005 x64 runtime нельзя установить одновременно и из merge-модулей, и из vcredist_x64.exe, чего быть не должно.

С 32 битной (x86) версией таких проблем нет: всё прекрасно работает.

питер, Леша

Телефон Sony Ericsson W995 и Windows 7 Starter

Захотел я подружить свой телефон Sony Ericsson W995 и нетбук с Windows 7 Начальная. Но это оказалось не так просто.

Вначале всё шло, как обычно. Подключил телефон, он определился как CD-ROM с программным обеспечением и драйверами. Пошел по самому простому и рекомендуемому пути: установить приложение PC Companion. Программа успешно установилась. Но вот на шаге подключения телефона и установки драйверов к нему процесс забуксовал. Что-то шло явно не так, и телефон никак не определялся как телефон. Пробовал отсоединять и снова подключать, пробовал подключать к другому USB-порту. Ничего не помогало.

На CD-ROM'е, который появляется при подключении телефона, есть папка Drivers. В ней лежит два файла: DPinst.zip и Drivers.zip. Залез во вторую: там лежит несколько .inf файлов для установки драйверов. Распаковал ее и попробовал добавить устройства вручную. Выбор команды Установить из контекстного меню ни к чему хорошему не привел: в результате появилось сообщение, что этот файл не поддерживает такой способ установки. С помощью диспетчера устройств тоже не удалось ничего установить.

Залез и во второй zip-файл. Там находится две программы: DPInst.exe и DPInst64.exe. Описание обоих программ: Установщик пакетов драйверов. И оба файла имеют цифровую подпись Microsoft. Вторая из них является 64-битной, и поэтому не запустилась на 32-битной системе. Первая же программа выдавала сообщение об ошибке: Невозможно выполнить DPInst.exe на имеющейся операционной системе. Но нигде не было сказано, что программное обеспечение телефона не совместимо с Windows 7 Начальная. И судя по всему, автоматическая установка завершалась неудачно именно по этой причине.

Быстрый поиск в интернете привел на страницу с похожей проблемой. Контроль учетных записей не отключал, так как при запуске DPInst.exe запрашивалось повышение привилегий. А вот третий совет помог: запустил DPInst.exe в режиме совместимости с Windows Vista, и Мастер установки драйверов устройств запустился. Этот мастер скопировал все драйвера. (Содержимое обоих zip-архивов я распаковывал в одну папку.) Windows мгновенно нашла кучу новых устройств и начала устанавливать для них драйвера. Когда этот процесс завершился, телефон отобразился в окне Устройства и принтеры, а также в Проводнике. С экрана телефона исчез запрос о типе подключения.

До этого момента я уже дважды настраивал подключение телефона к компьютерам с Windows 7, и ни разу не возникло никаких проблем с установкой драйверов. Но в обоих случаях системы были 64-битными. И мне почему-то кажется, что в моем случае было важно то, что система была 32-битной, а не ее редакция: Начальная (или Starter).