пятница, 31 июля 2015 г.
Первый день использования Windows 10
Вместо предисловия
Microsoft провела большую пиар акцию связанную с бесплатным обновлением Windows 7 и Windows 8/8.1, которая должна была начаться 29 числа. Владельцы лицензионных версий получили возможность зарезервировать лицензионную версию, чтобы начать обновление как можно быстрее.
Установка обновления
Накатить обновление на сотни миллионов компьютеров в один день задача непростая. Но я верил в Microsoft, и предполагал, что замечательная утилита начнет скачивание дистрибутива заранее, скажем 20 числа. Скачает 95%, а самые важные 5% докачает в день релиза. Организовать это совсем не сложно. А защищаться от людей, которые решат из превью версий выдрать 5% и заставить это работать, на мой взгляд совсем не стоит. Но Microsoft похоже думает иначе.
Долгожданное обновление игнорировало меня до самого вечера. Лишь ближе к 23:00 система решила попробовать установить обновление, долго пыталась скачать дистрибутив и вывалилась с ошибкой.
Как оказалось, Microsoft заявила, что обновление будет выходить волнами и может вам достаться чуть позже. Причем это чуть может занимать несколько месяцев. По словам пиарщиков, это сделано потому, что часть оборудования не поддерживается новой ОС и его необходимо допилить. На мой взгляд, такая пиар компания выглядит как минимум странно. Помахать конфетой перед лицом ребенка и сказать, что получит он ее через месяц.
Что еще более удивительно, так это масштабы тестирования новой версии. Чуть ли не год назад, я устанавливал первую Preview версию. И народу было вовлечено масса. Плюс ядро системы явно не претерпело глобальных изменений, а значит и драйвера вряд ли надо глобально исправлять. Да и масса бета-тестеров должна была быстро выявить список неработающих драйверов. В общем, это их внутренняя кухня, про которую мало что понятно. Создается впечатление, что пиарщики просто решили сгладить негативную реакцию у некоторых пользователей, которые столкнуться с проблемой.
Долгожданное обновление игнорировало меня до самого вечера. Лишь ближе к 23:00 система решила попробовать установить обновление, долго пыталась скачать дистрибутив и вывалилась с ошибкой.
Как оказалось, Microsoft заявила, что обновление будет выходить волнами и может вам достаться чуть позже. Причем это чуть может занимать несколько месяцев. По словам пиарщиков, это сделано потому, что часть оборудования не поддерживается новой ОС и его необходимо допилить. На мой взгляд, такая пиар компания выглядит как минимум странно. Помахать конфетой перед лицом ребенка и сказать, что получит он ее через месяц.
Что еще более удивительно, так это масштабы тестирования новой версии. Чуть ли не год назад, я устанавливал первую Preview версию. И народу было вовлечено масса. Плюс ядро системы явно не претерпело глобальных изменений, а значит и драйвера вряд ли надо глобально исправлять. Да и масса бета-тестеров должна была быстро выявить список неработающих драйверов. В общем, это их внутренняя кухня, про которую мало что понятно. Создается впечатление, что пиарщики просто решили сгладить негативную реакцию у некоторых пользователей, которые столкнуться с проблемой.
Обновление
Но вернемся к установке обновления. Утром оказалось, что Windows Update привел себя в некоторое странное состояние. Windows 10 больше не пытается скачиваться, а выдает ошибку установки обновления 0x8024002.
Поплясав пару часов с бубном, удаляя папки Windows.BT и C:\Windows\SoftwareDistribution\Download и презапуская службу обновления мне удалось исправить ошибку. Windows все-таки перекачала обновления и предложила мне начать. Я был весь в предвкушении.
При обновлении показывают симпатичный Progress Bar (без Technical Preview, конечно)
Замечу, что я ожидал от процесса обновления некоторой интерактивности, а именно – хотел сделать чистую установку новой Windows. За 2-3 года использования Windows 8 мой системный диск зарос хламом и ненужным ПО, и хотелось начать с чистого листа.
К моему сожалению, Windows не спросила у меня ничего, просто обновилась оставив все программы. Мелочь, а неприятно. Обновление процесс не быстрый. Даже с моим SSD оно заняло минут 40. Пришлось вызывать сброс системы. Все-таки хорошо, что такую штуку приделали к Windows и больше не надо создавать загрузочный диск, чтобы переустановить систему. Пришлось подождать еще минут 30-40.
К моему сожалению, Windows не спросила у меня ничего, просто обновилась оставив все программы. Мелочь, а неприятно. Обновление процесс не быстрый. Даже с моим SSD оно заняло минут 40. Пришлось вызывать сброс системы. Все-таки хорошо, что такую штуку приделали к Windows и больше не надо создавать загрузочный диск, чтобы переустановить систему. Пришлось подождать еще минут 30-40.
Впечатления. Негатив.
И вот перед нами новая Windows 10. Я начну с негативного опыта, чтобы под конец поста сгладить этот негатив.
Самое неприятное – большие проблемы с ClearType шрифтами. У Microsoft, есть ставшая уже традиционной проблема с четкостью шрифтов, на DPI отличном от стандартного. На FullHD элементы интерфейса и подписи для меня, как человека с близорукостью, выглядят мелковато. И я со времен Windows 7 выставлял настройку на 125%. В Windows 7 и затем Windows 8, эта проблема потихоньку исправлялась. Что ж буду и тут надеяться на обновления.
Самое неприятное – большие проблемы с ClearType шрифтами. У Microsoft, есть ставшая уже традиционной проблема с четкостью шрифтов, на DPI отличном от стандартного. На FullHD элементы интерфейса и подписи для меня, как человека с близорукостью, выглядят мелковато. И я со времен Windows 7 выставлял настройку на 125%. В Windows 7 и затем Windows 8, эта проблема потихоньку исправлялась. Что ж буду и тут надеяться на обновления.
Microsoft очень хочет внедрить свой единый интерфейс и внешний вид на
всех устройствах. Получается пока не очень. Первая проблема это
компонент настройки громкости. Смотрите скриншот.
ЭЭЭ. Неужели Microsoft считает, что это нормально\красиво? Я – нет. Вы
видите здесь где заголовок формы, а где управление громкостью? Я - нет.
Система в целом, производит впечатление бета-версии. Интерфейс в новом
стиле, это по факту не переписанные старые приложения, а просто Metro
приложения в окнах. Но проблема не в том, как это реализовано. А в том,
что большинство старых приложений никуда не делись и остались все в том
же старом стиле. Выглядит весьма так себе.
Microsoft пытается нам предложить свои новые приложения для базовых
функций. Таких как просмотр фото, видео и так далее. Да, эти приложения в
целом лучше, чем тот же стандартный просмотр фотографий. Кому-то их
вполне хватит. Мне лично – нет. Так какого ж я не могу их удалить из
системы? Раздражает.
Пуск вернулся, а вместе с ним была переработана панель задач. К
сожалению, не в лучшую сторону. Microsoft решила увеличить значки на
этой панели и саму панель расширить. Настроить это к сожалению нельзя.
Посмотрите на панель быстрого запуска на моем скриншоте.
Кажется, что тут вполне поместиться второй ряд иконок. Но нет. Не поместится.
А так выглядит новый System Tray.
Иконки стали больше. Или растягивайте сам трей в 5 раз, или прячьте сами иконки, но второго ряда вам не видать. Это конечно мелочь, и вряд ли этим активно пользуется большинство потребителей, но все равно неприятно.
Пока это всё, что мне удалось обнаружить за пару часов использования новой ОС. Попробую написать свои впечатления через два-три месяца использования системы. Возможно, что-то исправится патчами, а что-то сторонними утилитами.
Впечатления. Позитив.
Со времен Windows 7 Microsoft стала активно поглядывать в сторону
конкурентов и приделывать к своей ОС лучшие идеи. Идея с окном
поиска\запуска на мой взгляд, как раз из таких. В Windows 7 уже был
подобный вариант, в Windows 8 фактически пропал (переключение на другой
режим стола отвлекает и откровенно мешает). В Windows 10 идея
реализована по новому, с дополнением – поиском в интернете и поиском по
настройкам. В интернете этой штукой я в жизни не буду искать, а вот
быстрый поиск по настройкам штука очень полезная. В своем Linux Mint я
ей постоянно пользуюсь.
Пуск вернулся на свое законное место. В целом, хочу признаться, что я
уже отвык от него. Значки часто используемых программ давно переехали на
рабочий стол и запуск из меню Пуск вряд ли мне пригодится. Но для
многих людей, которые до сих пор успешно используют Windows 10 это
большой плюс. Это одна из причин, по которой я не стал ставить Windows 8
родителям.
Даже выключать компьютер из меню Пуск пока непривычно. Но я думаю, что через пару недель перестроюсь обратно и проблем не будет никаких.
Даже выключать компьютер из меню Пуск пока непривычно. Но я думаю, что через пару недель перестроюсь обратно и проблем не будет никаких.
Редизайн интерфейса мне в целом понравился. Обидно, что у Microsoft до
сих пор туго с хорошими темами для рабочего стола. В Linux с ними куда
веселее. Перерисованные иконки выглядят неплохо, все в одном стиле. Плюс
иконки выглядят очень четко, похоже их перерисовали в высоком
разрешении с перспективой на 4К мониторы. Логичный шаг.
Хоть с обновлением все прошло не идеально, но в целом весьма приемлемо. С
обновлением Ubuntu на моей машине всегда было на порядок больше
критичных проблем. Сама идея обновления ПО без заморочек с флешками и
DVD дисками меня очень радует.
К сожалению, остальные новые плюшки оценить не удалось. Но больше всего хочется попробовать разрекламированную Cortana. Посмотреть, был ли уже добавлен русский язык и как она отреагирует на мой английский с жутким акцентом =)
Итого
В целом, я считаю обновление успешным. Новый функционал очень приятный. Ставить или не ставить? Я считаю – надо ставить. Человек ко всему привыкает и чем быстрее привыкнешь, тем лучше. К счастью, весь софт который я использую полностью совместим с новой ОС и проблем никаких не возникло. Правда по форумам встречаются люди, у которых возникли аппаратные проблемы. Надеюсь, что это единичные случаи, которые Microsoft исправит в первую очередь.
Маленькие полезности для Git
Это вторая статья, источником которой служат мои презентации для отдела разработки ПО в нашей компании в конце 2014 года. В ней я расскажу о маленьких хитростях при работе с git, которые не очень хорошо известны.
Posh-git
Posh-git это набор фантастических скриптов для работы с git в PowerShell. Многие программисты в Windows используют графический интерфейс для Git, например, TortoiseGit. А с появлением поддержки Git в Visual Studio использовать Git стало еще проще.
Я же привык пользоваться консольным клиентом git. Наверняка сказываются многие часы работы с git в linux. Раз уж я заговорил о консоли, не могу не отметить отличную работу, которую проделала Microsoft при разработке своего Powershell. Совместимость с командами linux терминала - это просто гениальная идея. Надеюсь, что в будущих версиях прикрутят работу через pipe и grep.
Вернемся к posh-git. Если вы используете Chocolatey (см. прерыдущий пост), то для установки надо просто выполнить
cinst -y poshgit
После установки просто перезапустите PowerShell и заходите в папку с вашим репозиторием.
Posh-git показывает нам имя ветки, в которой мы находимся, а также количество новых файлов. Если мы решим добавить один файл в коммит, то увидим следующее:
А после того как сделаем сам коммит:
Как видите, цвет ветки изменился, так как мы удалились от состояния ветки на нашем remote.
И это только маленький кусочек того, что добавляет Posh-git. Все цвета настраиваются по вашему вкусу. Про их настройку можено почитать тут.
В общем, категорически рекомендую всем, кто работает с Git. Кстати, для linux тоже есть подобная штука.
Где поиграться с git
Когда в компанию приходят новые сотрудники незнакомые с git, то я всегда им предлагаю этот сайт. На мой взгляд у него есть ряд преимуществ, перед простым проделыванием тестовых заданий на знание git:
- Отличные лабораторные работы
- Можно сразу увидеть результат работы
- Для работы нужен только браузер
- На русском
Вы просто пишите нужные комманды в консоли и сразу видите ваш результат. Выглядит это так:
Alias
Alias - это просто сокращения для команд git. Штука в общем-то широко известная, оданко мало кто её настраивает. На мой взгляд создавать alias на команды типа commit это бессмысленно и беспощадно. Однако, добавить alias на git log просто необходимо.
Конечно, если вы используете различные GUI для git, то эти alias вам не нужны. Но если вы так же как и я предпочитаете работать в консоли, то они могут вам пригодиться.
Я советую вам настроить следующие:
ls = log -C --stat --decorate
Этот alias будет показывать имена веток, тагов и другую информацию рядом с хэшем коммита.
lsp = log -C --stat -p --decorate
Этот alias будет отображать нам изменения прямо в логе.
lg = log --graph --all
Этот alias будет отображать дерево коммитов с помощью псевдографики.
Приятные мелочи
Исправление опечаток. Тут даже пояснять ничего не надо. Просто выполните:
$ git config --global help.autocorrect 1
И тогда $ git statu будет воспринят как git status. Мелочь, а приятно.
https://github.com/github/gitignore
Содержит 116 шаблонов для .gitinore для различных сред программирования и языков программирования.
Содержит 116 шаблонов для .gitinore для различных сред программирования и языков программирования.
Вот и всё на сегодня. Надеюсь будет кому-нибудь полезно.
четверг, 30 июля 2015 г.
Chocolatey
Небольшое предисловие
В конце 2014 года я готовил что-то вроде конференции одного выступающего
для своих коллег в отделе разработки ПО. Для этой конференции я
подготовил ряд выступлений с презентациями о различных интересных вещах,
которые происходят в мире разработки ПО, о наших внутренних проблемах с
проектами, а так же о различных хитростях работы Git.
Сегодня я решил поделиться этой информацией (конечно, без наших
внутренних вещей) со всеми желающими. Поэтому следующие несколько постов
будут основаны на моих выступлениях. И первая штука, которой я хотел бы
поделиться это Chocolatey.
Что это вообще такое?
Все кто когда-либо использовали Linux-подобные системы, явно или не явно
работали с пакетным менеджером в своем дистрибутиве. Debian и Ubuntu
подобные дистрибутивы используют apt-get (лично я рекомендую aptitude), RHEL и OpenSuse используют
yum. Если вы вообще не имеете представления, что это такое, то
ознакомиться можно в wiki.
В двух словах это консольное приложение, которое позволяет автоматизировать процесс установки, обновления и удаления ПО.
В двух словах это консольное приложение, которое позволяет автоматизировать процесс установки, обновления и удаления ПО.
Кратко для программистов =)
- Как “apt-get”, только для Windows
- Открытый исходный код https://github.com/chocolatey/choco
- Абсолютно бесплатный
- Не только менеджер, но и framework
- NuGet для библиотек, Chocolatey для программ
- Microsoft использует Choclatey в своем OneGet
Куча софта
![]() |
| Пример доступных приложени |
Вам доступно куча разного ПО (2500+ пакетов). Причем радует то, что есть не только маленькие програмки, но и большие пакеты типа Visual Studio, а так же фреймворки для разработчиков, и даже сервера.
Не надо следить
Некоторые люди любят использовать последние версии своих программ (я как
раз из таких). Обычно для обновления ПО надо проделать ряд действий:
узнать установленную версию, проверить на официальном сайте какая версия
является последней, скачать обновленный инсталлятор и установить.
Преимущество пакетного менеджера здесь на лицо – он сам сообщит о новой
версии, сам скачает и сам установит.
Меньше проблем с установкой
Этот пункт почти ничего не значит для опытных пользователей ПК. Однако
будет очень полезен для тех, кто не чувствует себя на 100% уверенно при
работе с компьютером. Последнее время каждый второй инсталлятор, даже с
официального сайта, захочет установить вам Яндекс.Бар, Яндекс.Браузер,
Спутник от mail.ru, сменить домашнюю страницу и еще какую-нибудь
гадость.
![]() |
| И так каждый раз... |
Конечно, если вы внимательно смотрите, что вам предлагает инсталлятор
таких проблем не возникнет. Хотя порой очень хочется на автомате ткнуть
Next->Next->Next…. У самого так пару раз бывало, когда приходится
удалять всякий хлам и устанавливать ПО заново. И вряд ли в ближайшем
будущем что—то резко изменится в этом направлении.
Пакетный менеджер установит только ту программу, которую ты действительно хочешь установить.
Проще установить группу программ
Сценарий очень простой – вы настраивайте новый компьютер или
переустановили операционную систему и вам сразу необходимо установить с
десяток привычных программ. Некоторым системным администраторам
приходится выполнять эту операцию чуть ли не каждый день. Причем обычно у
вас в голове уже есть список из необходимых программ.
С пакетным менеджером все становится очень просто – просто вбиваем одну команду (или проставляем галочки в GUI) и идем пить кофе.
Сборка Windows vs Chocolatey
Некоторые используют сборки Windows включающие в себя ряд программ. На
мой взгляд это все-таки разные вещи. Приведу здесь простую табличку,
которая демонстрирует различия.
Думаю тут все просто и наглядно. Если вам надо установить любимый набор
ПО там, где с интернетом туго, то сборка вас выручит. Если с интернетом
проблем нету, то ваш выбор Chocolatey.
Ninite vs Chocolatey
Про Ninite можно почитать на их сайте (https://ninite.com).Если коротко, то Ninite упрощает установку некоторых программ на компьютер. Предназначена в первую очередь для установке привычного набора программ на свеже установленную операционную систему. Вы просто заходите, выбираете галочками, что хотите установить и получаете инсталлятор, который все сделает за вас. Просто. Удобно.
![]() |
| Список ПО доступного в Ninite |
Основная разница с Chocolatey в 2-х на мой взгляд критичных вещах – количество
программ доступных для установки и обновление. Набор софта в Ninite
крайне небольшой, да и обновлять программы таким образом нормально не
получится.
Неприятные мелочи
Есть у Chocolatey и ряд недостатков, про которые нельзя не упомянуть:
- Отсутствие простого инсталлятора. Да, установка происходит в 1 команду. Но своей маме, я не могу просто сказать – “Открой консоль от имени администратора…”. Первый раз придется устанавливать самому.
- GUI далек от совершенства. А большинство все-таки предпочтет графический интерфейс.
- Пакеты поддерживаются сообществом, как и весь проект. К сожалению, пару раз попадал на падение их сервера с пакетами. Надеюсь, что ребята разовьются и смогут создать полноценный аналог linux-репозиториев, которые всегда online.
Как поставить
Запустить cmd.exe от имени Администратора и выполнить:
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex
((new-object
net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"
&& SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin И в завершении
Буквально вчера вышла новая Windows 10, которая содержит в себе OneGet.
OneGet это пакетный менеджер от самого Microsoft, который использует
внутри себя Chocolatey. Надеюсь, что Microsoft со своими ресурсами
поможет решить те неприятные мелочи, про которые я написал выше. И будет
всем нам счастье =)
Наши вопросы по БД и Web-технологиям
Это последняя группа вопросов, которые мы задаем некоторым кандидатам на собеседовании. Не могу сказать, что мы используем БД и Web технологии в каждом проекте, но такие проекты есть и их не мало. Поэтому знания в этих областях являются дополнительной плюшкой для кандидата.
БД
- Типы БД. Иерархические, Объектно-реляционная, реляционная.
- Таблицы и View(Представление). Назначение.
- Хранимые процедуры, триггеры и курсоры. Назначение и примеры использования.
- Нормализация. Причины, 5 основных уровней нормализации, как нормализовать базу данных по третьей нормально форме.
- Первичный, внешний, составной и суррогатные ключи . Причины появления ключей, выбор полей для ключей, выбор типов данных для ключей (для каждого из типов ключей).
- Кластерные и не кластерные индексы и их назначение.
- Безопасность БД. Какие объекты и как необходимо защищать.
- SQL запросы к БД (INSERT, UPDATE, DELETE, SELECT). Использование JOIN, UNION, INTERSECT, CONCAT.
- noSQL БД. Особенности.
Web
- HTML. Назначение. Основы построение веб страниц.
- Как уменьшить время загрузки веб-страницы?
- Javascript. Назначение. Принцип работы.
- Классическая модель веб-страниц и AJAX. Преимущества и недостатки.
- CSS. Назначение. Селекторы. Наследование. Каскадирование. Приоритеты стилей CSS.
- jQuery. Назначение, возможности, простейший пример использования. JQuery UI.
На этом наши вопросы заканчиваются. Теперь главное не затягивать с публикацией ответов =)
Наши вопросы по криптографии
Так как наша компания (http://ancud.ru/) занимается защитой информации, то хорошее знание криптографии никому не помешает.
Криптография
- Что такое симметричная и асимметричная криптография?
- Что такое хеш-функция? Какие хэш-функции вы знаете? Почему CRC32 не подходит? HMAC? KDF?
- Какие симметричные алгоритмы вы знаете? AES, 3DES, ГОСТ 28147-89, RC5, Blowfish?
- В чем отличие блочных шифров от поточных шифров? Сеть Фейстеля?
- Что такое режимы шифрования? ECB (простая замена), CBC, гаммирование, CFB (гаммирование c обратной связью).
- Какие асимметричные алгоритмы вы знаете? RSA, DSA, ГОСТ 34.10-2012?
- Причем тут односторонние функции? Дискретный логарифм и эллиптические кривые.
- Цифровая подпись (ЭЦП) и асимметричное шифрование.
- Инфраструктура открытых ключей (PKI). Зачем? Что содержит сертификат?
- Алгоритмы аутентификации. Как работают симметричные и асимметричные?
- Выработка сессионных ключей. Почему Диффи-Хелман – это не аутентификация? Что такое Forward Secrecy (прямая секретность)? Защита от MITM атак.
- Как часто надо менять ключи? А пароли? От чего это зависит?
- Чему равна криптостойкость пароля? А если его выбирает пользователь?
- Почему для криптографии важны случайные числа? Приведите пример атаки на ДСЧ.
Наши вопросы по программированию на языках C/C++
Следующий блок вопросов это самые важные вопросы для кандидата на позицию C/C++ программиста. Вопросы поделены на две категории - знание совсем новых плюсов не обязательно, но крайне рекомендуется. На мой взгляд если человек работает в какой-то области и не интересуется, что в ней происходит последние лет 5, то ничего хорошего в этом нет.
C/C++
- Зачем нужен stdafx.h? Что в него включать? Как это работает?
- Зачем нужен препроцессор, компилятор, ассемблер, linker?
- Что такое исключения? Как они работают?
- Для чего используется вызов throw без аргументов?
- Конструктор копирования, оператор присваивания. Когда они вызываются?
- Операторы преобразования static_cast, const_cast, reinterpret_cast, dynamic_cast, С-cast. Назначение и примеры использования.
- Друзья класса. Назначение и примеры применения.
- Что такое множественное наследование? Как оно работает и какие может создать проблемы?
- Виртуальные функции. Что такое vftable, vbtable и как это работает?
- Зачем нужен виртуальный деструктор?
- Какие конструкции С++ разрешается использовать в списке инициализации качестве инициализирующих выражений?
- Как запретить неявное преобразование типа, выполняемое конструктором инициализации?
- Как защитить объект от копирования?
- Что предпочтительней, наследование или инкапсуляция? В каких случаях и почему?
- Можно ли объявлять массив объектов? А массив классов?
- Паттеры проектирования – Singleton, Factory, Observer, Visitor. Остальные по желанию.
- Контейнеры в STL. Преимущества и недостатки.
- Итераторы и алгоритмы в STL.
- Специализация шаблонных классов и функций. Назначение и примеры применения. Частичная специализация шаблонных классов.
- Функторы.
- Аллокаторы и их применение.
- Лямбда-выражения.
- Умные указатели. Зачем нужны? Что такое владение?
- Многопоточность и примитивы синхронизации. Типы и устройство.
- Многопоточность и передача сообщений.
- Что такое IPC?
C++14
- Явное замещение виртуальных функций и финальность.
- Шаблоны с переменным числом аргументов.
- Статическая диагностика.
- constexpr-выражения.
- copy- и move-семантика.
Подписаться на:
Сообщения (Atom)



























