Pull to refresh
41
Karma
0
Rating
Андрей Бибичев @bibigone

User

  • Followers 7
  • Following 6

Ускорение загрузки Windows for fun and profit

Development for Windows *
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста
Total votes 532: ↑516 and ↓16 +500
Views 448K
Comments 363

Почему бAARDак не убрали в релизе?

Development for Windows *
В бета-версиях Windows 3.1 был скрытый и зашифрованный код, который при запуске на DR-DOS выдавал непонятное сообщение о вымышленной ошибке.

В релизе решили подобными фокусами не заниматься, но код проверок и само сообщение не убрали: они так и остались внутри WIN.COM, и достаточно изменить один байт, чтобы AARD-код снова выполнялся при каждом запуске.

Зачем его оставили? Неужели Microsoft рассчитывала однажды в будущем разблокировать эти сомнительные проверки?
Конечно же, нет. Даже сообщение в релизе осталось неизменённое: «Please contact Windows 3.1 beta support.» Если бы сообщение действительно предназначалось для показа, после окончания бета-тестирования его бы обновили.

Так зачем оставлять в релизе бессмысленный код, который никогда не выполняется?
Читать дальше →
Total votes 131: ↑122 and ↓9 +113
Views 530
Comments 61

бAARDак в Windows

Development for Windows *
Неоднозначную реакцию вызвал рассказ Рэймонда Чена о том, сколько усилий прикладывает Microsoft, чтобы обеспечить совместимость новых версий Windows с чужими программами.

Известен и обратный случай: когда Microsoft намеренно добивалась несовместимости Windows с «неблагонадёжными» клонами MS-DOS. Из выпуска Dr. Dobb's Journal за сентябрь 1993 г.:

Код обнаружения AARD в Windows


Если вы участвовали в бета-тестировании Windows 3.1, и на вашем компьютере стояла DR-DOS, то наверняка вы сталкивались с этим необычным сообщением об ошибке:
Non-Fatal error detected: error #2726
Please contact Windows 3.1 beta support
Press ENTER to exit or C to continue

Хотя это «нефатальная ошибка», и нажатие C продолжает запуск Windows, действие «по умолчанию» — отмена запуска.
Уже подозрительно: если ошибка нефатальная, и Windows способна работать, несмотря на неё, — зачем вообще докладывать о ней пользователю?

Такое сообщение выдавалось программами WIN.COM, SETUP.EXE, HIMEM.SYS, SMARTDRV.EXE и MSD.EXE в нескольких предрелизных выпусках Windows 3.1.
Окончательная версия Windows 3.1 по-прежнему содержит код, выводящий это сообщение. Этот код «выключен», но достаточно изменить один байт в WIN.COM, чтобы его «включить».

Самое интересное в этом сообщении — что оно выводится на всех версиях DR-DOS, включая бета-версию Novell DOS 7, но не выводится ни на MS-DOS, ни на PC-DOS. О чём же это сообщение сообщает?
Читать дальше →
Total votes 180: ↑167 and ↓13 +154
Views 917
Comments 66

Быть Чубаккой, или невербальная коммуникация. Немножко практики

IT career
Лавра Федотовича это затруднение наконец утомило, и, прервавши оратора, он произнес только одно слово:
— Неубедительно.
Раздался тяжелый удар. Большая Круглая Печать впилась в мою заявку.
А. и Б. Стругацкие. «Сказка о Тройке»



Доброе утро, Хабр.

Давайте еще немножко пообсуждаем, как в домашних условиях (читай: без специальных педагогов и тренеров) поучиться правильной коммуникации. В программе практически сплошная невербальная составляющая общения, а также – парочка упражнений на ее отработку.

Вопрос, зачем коммуницировать, вроде бы уже отпал, но две строчки напишу о том, зачем нужна невербальная составляющая, и что это за зверь. Причем заранее прошу прощения у тех, кто и так прекрасно этот термин понимает.
В каждом сообщении есть две части: собственно текст и… все остальное. Имеющее свойство, в отличие от текста, воздействовать прямиком на подсознание слушателя, оставляя в нем надежные следы. Все, что кладется в подсознание, будучи правильно положенным, твердо поддерживает сообщение, передаваемое сознанию. Неправильное сообщение, передаваемое на подсознательном (читай: невербальном) уровне, может войти в жестокое противоречие с произносимым текстом и тем самым нанести ему, тексту, тяжелый урон в головах аудитории. Для иллюстрации, — ну не знаю, — вообразите, что робот Марвин из HHTTG сказал вам, как он искренне счастлив вас видеть.

В число всего, что воспринимается в основном на подсознательном уровне, входит: интонация, темп речи, дикция, эмоциональное наполнение, жесты, поза, выражение лица и бла-бла-бла из Дейла нашего Карнеги о том, что соответствие внешнего вида ожиданиям аудитории решает. Честное слово, про внешний вид я сегодня не буду, по-моему, эта тема уже всем набила оскомину. Про что буду, – так это про интонацию, эмоциональное наполнение, темп речи, обращение с аудиторией.

Микро-тренинг #1
Total votes 88: ↑68 and ↓20 +48
Views 1.3K
Comments 45

Программируем графику на Direct3D 11 в среде .NET (часть 1)

.NET *Game development *C# *
  1. Основы программирования 3D графики и отличия фиксированного и программируемого конвейеров
  2. Game loop, различные подходы к организации цикла рендера и обработки логики в играх
  3. Трансформации, проекции и передача параметров в шейдеры
  4. ???


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

Процесс отрисовки



Чтобы видеокарта что-то могла показать, сначала в нее надо загрузить 3D-сцену. В простейшем случае, сцена представлена набором треугольников, каждый из которых имеет, соответственно, три вершины. Вершина может быть и общей для нескольких треугольников. Данные вершин и треугольников загружаются в видеокарту в виде массивов (буферов), минимально необходимая информация для буфера вершин — это координаты вершины в пространстве (X,Y,Z). И если мы хотим рисовать треугольники, нужен еще буфер индексов — перечисление номеров в загруженном нами буфере вершин, описывающих треугольники.

Рассмотрим простейший пример: мы хотим нарисовать один треугольник. Для упрощения, я изобразил его на плоскости, не используя Z координату.
Читать дальше →
Total votes 57: ↑47 and ↓10 +37
Views 38K
Comments 18

LINQ to Objects на языке C++

Programming *.NET *C++ *
Всё началось с того, что я в институте и после его окончания писал код на C++ и не знал бед. Но тут в один прекрасный день пришлось писать код под .NET на C#. Сперва немного поплевался, но потом ничего — втянулся. Увидел выгодные отличия от C++: безопасность, строгость и т.д. Также не смог обойти стороной LINQ при работе с коллекциями…



Читать дальше →
Total votes 88: ↑81 and ↓7 +74
Views 13K
Comments 101

Характерные особенности языка Dart

Website development *Dart *
Translation
Tutorial
Dart был разработан так, чтобы выглядеть знакомо для программистов на таких языках, как Java и JavaScript. Если постараться, можно писать на Dart практически так же, как на одном из них. Если очень постараться — можно даже превратить его в Фортран, но при этом вы упустите множество неповторимых и классных особенностей Dart.

Эта статья поможет вам научиться писать код в стиле Dart. Так как язык всё ещё активно развивается, многие идиомы тоже могут измениться в будущем. В некоторых местах мы пока сами не определились, что является наилучшей практикой (может быть вы нам поможете?) Тем не менее, вот несколько моментов, на которые стоит обратить внимание, чтобы переключить свои мозги из режима Java или JavaScript в режим Dart.
Читать дальше →
Total votes 79: ↑70 and ↓9 +61
Views 15K
Comments 99

Рендеринг искусственных объектов на фотографии

Image processing *
Translation


Мы предоставляем метод для реалистичного добавления искусственных объектов в существующие фотографии, не требуя необходимости доступа к сцене или других дополнительных измерений. С помощью одного изображения и небольшого количества аннотаций, наш метод позволяет создать физическую модель сцены, которая подходит для рендеринга на ней искусственных объектов с рассевающими, зеркальными или даже светящимися поверхностями, с учетом взаимодействия освещения между объектами и сценой.
Читать дальше →
Total votes 104: ↑86 and ↓18 +68
Views 3.5K
Comments 32

Qt и SQLite и вообще, программирование БД в Qt

Qt *SQLite *
Tutorial
Добрый день.

Ниже пойдет речь о том, как использовать SQLite в Qt. Автор постарался как можно подробнее рассматривать программирование баз данных в Qt.

Об этих двух замечательных продуктах можно прочитать следуя приведенным выше ссылкам, а мы будем конкретно рассматривать программирование БД в Qt, в частности, на примере SQLite. Скажу только, что SQLite несколько отличается от «обычных» баз данных, таких как MySQL тем, что «не обладает» клиент-серверной архитектурой. То есть движок БД не является отдельно работающим процессом, с которым взаимодействует программа. SQLite представляет собой библиотеку, с которой компонуется ваша программа и, таким образом, движок становится составной частью программы. То есть представьте вы решили сохранять все данные, с которыми «сталкивается» ваша программа в обычный файл. В один прекрасный день вы решаете сохранять данные в файле, но организовав это с «реляционной» точки зрения. После этого вы поняли, что новая структура файла должна «распознаваться особым образом». С этого, как минимум, следует, что вам нужно предоставить некоторый API, обеспечивающий связь между этим файлом данных с приложением. В общем, следуя логической постановке приведенного сценария у вас рождается система БД, не требующая сервера БД и собственно, клиента. Получается достаточно быстрая по сравнению с «клиент-серверной» БД система, и сама программа упрощается.
Почему я рассматриваю именно SQLite?
Total votes 48: ↑43 and ↓5 +38
Views 133K
Comments 57

Сжатие изображений с использованием вейвлет

Algorithms *
Вейвлетное сжатие — общее название класса методов кодирования изображений, использующих двумерное вейвлет-разложение кодируемого изображения. Обычно подразумевается сжатие с потерей качества. В статье не будет приведено сложных математических формул, всю теорию можно почитать по ссылкам внизу статьи. Здесь только практика!

Отличие от JPEG


Алгоритм JPEG, в отличие от вейвлетного, сжимает по отдельности каждый блок исходного изображения размером 8 на 8 пикселов. В результате при высоких степенях сжатия на восстановленном изображении может быть заметна блочная структура. При вейвлетном сжатии такой проблемы не возникает, но могут появляться искажения другого типа, имеющие вид «призрачной» ряби вблизи резких границ.
Считается, что такие артефакты в среднем меньше бросаются в глаза наблюдателю, чем «квадратики», создаваемые JPEG.

Пример


Для примера сильно сожмем одно и тоже изображение приблизительно до одного размера:

В начале с использованием JPEG:
7959 байт
(7959 байт)

затем алгоритмом вейвлетного сжатия JPEG 2000:
7813 байт
(7813 байт)

Читать дальше →
Total votes 155: ↑133 and ↓22 +111
Views 24K
Comments 77

Стереоизображение — это просто

Algorithms *
Sandbox
Привет, %username%.

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

Введение


Для начала рассмотрим, как устроено стереоизображение и как на него смотреть.
Читать дальше →
Total votes 198: ↑189 and ↓9 +180
Views 44K
Comments 132

Faviconist: Создайте красивый favicon с HTML5

Website development *

Каждый сайт должен иметь favicon. Если вы до сих пор не сделали значок для вашего сайта — сделайте, теперь это еще проще!
Faviconist — новый favicon генератор от Michael Mahemoff.

Вам больше не нужен Photoshop для создания простого значка. Как Mahemoff пишет в своем блоге: Faviconist для 95% людей, которых устроит микро-дизайн их иконки, остальным все равно придется прибегнуть к Photoshop.
Читать дальше →
Total votes 53: ↑45 and ↓8 +37
Views 7.7K
Comments 17

20 бесплатных дополнений для Visual Studio

Microsoft corporate blog Visual Studio *
Для Visual Studio 2010 создано уже около 900 дополнений. Многие из них позволяют облегчить решение рутинных задач, добавить удобства. Ниже представлено двадцать популярных дополнений, которые вы возможно найдете полезными для вашей работы.
Читать дальше →
Total votes 146: ↑135 and ↓11 +124
Views 38K
Comments 55

Почему вы должны использовать XMLHttpRequest асинхронно

Microsoft corporate blog Ajax *Website development *
Translation
*Пер.: Мысль этого топика тривиальная и должна быть известна каждому: используйте асинхронные запросы. Но статистика — штука суровая, и, видимо, это знают не все. А последствия, на самом деле, имеют место во всех браузерах.*

8.4% всех зависаний страниц в IE9 за прошедший месяц являются следствием того, что XMLHttpRequest объекты блокируют поток UI синхронным запросом. Это огромное число! С помощью нескольких доступных изменений в коде эти зависания можно легко избежать — и разработчики могут обеспечить своим пользователям намного лучшие впечатления от работы с их сайтами. Мы рассмотрим, что происходит при зависании, что вы можете с этим сделать, и мы также попробуем сделать небольшую демонстрацию, чтобы воочую посмотреть, что происходит, когда синхронный запрос подвешивает браузер.
Читать дальше →
Total votes 51: ↑32 and ↓19 +13
Views 17K
Comments 86

NuGet — качаем пакеты из интернета в процессе сборки

.NET *
UPD: Метод, аналогичный использованному здесь включен в поставку NuGet 1.6. Соответственно статья устарела.

Вот что мне всегда нравилось в джаве, так это Maven. Один файл со списком всего нужного, и никаких бинарников в репозитории. Когда появился NuPack, я решил — ура, вот оно, счастье пришло на нашу улицу. Но не тут то было. NuPack представлял удобный интерфейс для работы с пакетами… но без возможности нормально вкрутится в процесс сборки.

Поковырял я его тогда, посмотрел, но так реальной пользы и не увидел. Не больно большая помощь — качать ручными powershell-командами пакеты поименно. Ну да, удобнее, чем скачивать фиг знает откуда, да еще руками references добавлять, но ведь мне это далеко не каждый день нужно. В общем, игра не стоит свеч.

Но в один прекрасный день я понял, что с папкой Shared\Bin в моем сорц-контроле нужно что-то делать, ибо распухла она уже неимоверно. Решил глянуть я, не изменилось ли что-нибудь с NuPack-ом, который уже NuGet-ом стал именоваться? Нет, воз и дальше там.

Но у nuget.exe появилась интересная фича…
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 16K
Comments 14

Изображения без width/height

CSS *
Хорошим тоном считается всегда указывать для изображений, которые мы используем на странице, их длину и ширину. Часто такие картинки, если мы не укажем их размеры, могут во время загрузки раскачивать нашу верстку.
Чтобы во время разработки было более наглядно, где мы пропустили картинки без указания размеров, ребята из 37Signals предложили небольшой, но чрезвычайно полезный сниппет:

img:not([width]):not([height]) {
  border: 2px solid red !important;
}

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

Оригинал статьи
Total votes 122: ↑101 and ↓21 +80
Views 7.9K
Comments 44

The Noun Project: свободная иконка для каждого объекта в мире

Working with icons *


Создатели проекта The Noun Project поставили целью собрать пиктограммы для всех объектов в мире. Коллекцию по мере сил пополняют десятки дизайнеров из разных стран. Все иконки публикуются в формате SVG, под лицензией Creative Commons Attribution 3.0 (CC BY) или Public Domain, разбиты на тематические категории, есть поиск на русском языке.
Total votes 110: ↑107 and ↓3 +104
Views 12K
Comments 57

KnockoutJS: Ajax grid view с нуля в 40 строк

JavaScript *
В последнее время на Хабре все больше упоминаний о KnockoutJS, и я не останусь в стороне от этого тренда.
Сегодня я расскажу о том как сделать своими руками Ajax Grid View с фильтрацией и переходом по страницам написав, при этом, совсем немного кода.
Начиная писать эту статью я чувствовал себя несколько неловко, да и сейчас ощущение не ушло. Все дело в том, что сама библиотека простая, паттерн MVVM простой, и рассказывать я буду простые вещи. Я уверен, что в ближайшее время Knockout получит достаточно большое распространение. А неловко мне от того, что уже через год-дугой кто-то наткнувшись на эту статью будет обескуражен простотой изложенного материала. Примерно так, как любой из вас сейчас, открывший статью о jQuery от 2007 года.

Кто не испугался предполагаемого баяна, милости прошу под хабракат.

Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Views 14K
Comments 22

Дерево ван Эмде Боаса

Algorithms *
Всем доброго времени суток!

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

Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?

Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.

Что же там еще есть такого вкусного?
Total votes 192: ↑190 and ↓2 +188
Views 16K
Comments 39

Просто о Хиндли-Милнере

Algorithms *
Translation

Введение


Robert MilnerЕсли вы когда-нибудь интересовались не слишком популярными языками, то должно быть слышали о «Хиндли-Милнере». Этот алгоритм вывода типов используются в F# и Haskell и OCaml, как и в их предшественнике ML. Некоторые исследователи даже пытаются использовать ХМ для оптимизации динамических языков вроде Ruby, JavaScript и Clojure.

И не смотря на его распространенность, до сих пор не было простого и понятного объяснения, что же это такое. Как же эта магия работает? Всегда ли выводимые типы будут верными? Или чем Хиндли-Милнер лучше, скажем, Java? И пока те, кто действительно знает что такое ХМ будут восстанавливаться от очередного умственного перенапряжения, мы попробуем разобраться в этом сами.
Читать дальше →
Total votes 65: ↑62 and ↓3 +59
Views 16K
Comments 12

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity