Категория: Компьютеры

Заметки о программировании и на околокомпьютерные темы

Вложенные категории: Delphi, Игры

Инвентарный пост

К моему системному блоку подключены:
– MIDI-клавиатура
– Планшет
– Джойстик
– Наушники
– Выносной микрофон
– Колонки 5.1
– Мышь и клавиатура
– Зарядка для КПК
– рутер/адсл-модем

Всё это как-то умудряется умещаться вокруг стола. Ещё хватает usb-слотов на пару флешек.

Чтобы не было так скучно, разбавляю чтение конспектов тренировкой в Melty Blood Act Cadenza. Научился бить бедную White Ren злым шики на perfect. Слишком любит прыгать невовремя, слишком.

Экзамен по MBAA я бы сдал, пожалуй.
(Хотя survival так и не могу пройти! Обязательно заявится какая-нибудь сацуки или кохаку с метлой, и меня закаблучит)

Об анимации лиц

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

Вообще-то говоря, это делают, но только в видеороликах, да и там – лишь в специальные моменты. А надо – всегда.

Фигня про винду

Меню по правой кнопке с элементами разных размеров – вот это было бы удобно.

Семёрка

Майкрософт поработали над ошибками, это да. Семёрка настолько хороша, что я подумываю купить её, когда она выйдет.

Причём я не могу ткнуть пальцем и сказать: “вот, это решающее нововведение”. Нет такого. Просто в ней приятно работать. Та магия, которую мс совершенно упустила в висте (и которая в XP достигалась грамотной настройкой системы) – здесь есть по умолчанию.

Про семёрку

Вещи, которые неприятны в Windows 7:
1. Раз в 5-6 минут паркует неактивные диски. Потом, когда обращаешься к диску, он долго раскручивается.
2. В проводнике нет кнопки “Вверх” (ещё с висты). Да, я понимаю, что теперь можно щёлкнуть по адресной строке, но “Вверх” гораздо удобнее!
3. Если оставить компьютер без присмотра, семёрка вскоре начинает грызть диски, что-то там индексируя. Приходится шевелить мышью, чтоб заткнулась.

Тем не менее, семёрка нравится. Я сам с удивлением заметил: когда у меня стояла Виста, я рассчитывал перейти работать на неё, но через пару недель, попадая в меню выбора операционки, уже всегда думал: “Только не сейчас, как-нибудь в другой раз, лучше я пока в XP загружусь”. Так и забросил.
А с семёркой наоборот: хотел только потестировать, но в который раз ловлю себя на мысли “Загружусь-ка я в семёрку, порадую себя”. Тут ещё куча необжитых мелочей, но работать просто приятно.

Не совсем, Windows, не совсем ;)

Windows 7

Поставил семёрку. Любопытно. Местами побыстрее, чем Виста, хотя грузится почти столько же. Новая панель задач удобна, уже успел оценить. Во всяком случае, система заслуживает внимания. Поработаю пока в ней, посмотрю ещё.

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

Таким образом, активные приложения всегда наверху, и между ними легко переключаться. Каждое открывается, как таб, на весь экран. Если же его свернуть, оно попадает в неактивный список внизу экрана: лишние приложения не будут загромождать место на “активном” таскбаре, но будут всегда доступны при необходимости.

Об анинсталлерах

Одно из самых жутких, заброшенных и тоскливых мест Windows – это управление приложениями. Целиком мне сейчас о нём говорить не хочется, скажу только об одном аспекте: об анинсталле. Как он устроен – это дичайший бред. Попробуйте удалить несколько случайных продуктов на системе, которая проработала пару лет!

Не найден msi-файл установки, удаление невозможно.
Пропал компонент приложения, удаление невозможно.
Кто-то перезаписал мою регистрацию, удаление невозможно.
Кто-то вручную удалил с диска файлы, удаление невозможно.

(далее)

Это бред сумасшедшего. Как это удаление может быть невозможно?! Мне нужно не установить, а удалить! Слышите – удалить! Программу. Просто взять и удалить. Неужели это так сложно? Неужели для удаления файлов действительно требуется, чтобы они все до единого были на месте, чтобы сохранился пакет установки программы?
Да нет конечно же! Это лентяи-программисты заставляют пользователей плясать под свою дудку. Вместо того, чтобы подумать головой и написать нормальный деинсталлятор, они предпочитают переваливать все проблемы на плечи пользователя. Нет уверенности, что мы удалим всё? Ну так не будем удалять ничего! Пусть пользователь сам разбирается.

Удаление, уничтожение, очистка – это операции, которые должны выполняться “наилучшим возможным образом”. Т.е. в каждой ситуации должен удаляться абсолютный максимум того, что можно удалить. Если каких-то файлов уже нет – удаляем те, что остались. Если установочного пакета нет – ладно, удаляем хотя бы то, о чём сохранились записи. Не сохранилось записей – удаляем хотя бы то, о чём можно догадаться без них.

Ошибок в этих операциях не должно существовать в принципе. Они должны выполняться всегда.

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

Это не значит, что надо ловить в деструкторе все ошибки и затыкать им рты. Если ошибка уже случилась, её, как обычно, нужно вывести пользователю. Просто деструктор должен быть написан так, чтобы выполнять максимум без ошибок даже в неизвестных обстоятельствах. Например, даже если деструктор у вас вызывается единожды, и lpMyObject всегда существует, нужно писать:
if (lpMyObject != NULL) {
FreeMyObject(lpMyObject);
lpMyObject = NULL;
}

Хорошая практика – это чтобы ваш деструктор можно было вызвать на любом этапе жизни объекта, и он успешно выполнился бы. Даже в середине конструктора. Даже в процессе выполнения какой-то критической функции. Потому, что деструктор не может позволить себе вызывать исключения: его самого, вероятно, вам придётся вызывать, если вы надеетесь программно обработать какие-то исключения. Следовательно, деструктор уже должен быть готов обрабатывать исключительные ситуации.