суббота, 19 июля 2008 г.

Увеличиваем скорость написания кода

Продолжу описание новых возможностей среды и языка Delphi, начатое мной пару дней назад. Сегодня речь пойдет о Live Templates. В русскоязычной литературе их называют «шаблоны кода», что несколько неточно (на мой взгляд) отражает их сущность, более к ним подошел бы дословный перевод – «живые шаблоны». Но оно несколько режет слух, поэтому я всегда буду упоминать их англоязычное название. В этой заметке я расскажу о существующих шаблонах и как ими пользоваться, а темой одной из следующих заметок будет создание собственных шаблонов.

Итак, Live Templates – это своего рода макросы, позволяющие при вводе ключевой комбинации символов подставлять шаблоны кода. Причем эти шаблоны параметризованы, т.е. вы можете перемещаться по частям шаблона при помощи клавиш Tab и Shift+Tab. Например, вводим в редакторе кода слово for нажимаем клавишу Tab в редакторе кода появляется следующий текст:

Причем, после того как будут заполнены все параметры в раздел описания локальных переменных автоматически добавится переменная счетчик цикла:

Для цикла FOR есть и другое ключевое слово – forb, его действие аналогично, но результат несколько другой – в шаблоне присутствует еще и блок begin … end;

Кстати, раз уж речь зашла о блоках кода следует упомянуть об еще одном улучшении – это автозавершение блоков кода (Block Completion). Если буквально в двух словах – это подстановка логически необходимого ключевого слова в блоке кода, т.е. когда вы набираете в редакторе begin нажимаете Enter, то редактор сам подставляет блок end; и устанавливает курсор между этими словами со сдвигом на 2 позиции курсора. Это же касается и других блоков кода, таких как case, type, try и многих других

Но вернемся к Live Templates. В контекстном меню редактора кода появился новый пункт меню – Surround, с помощью которого можно обернуть шаблоном любой выделенный фрагмент кода. Очень удобно когда необходимо некоторую часть кода поместить в блок try … finally;. В том же пункте можно посмотреть весь список встроенных в среду шаблонов кода.

Ну и напоследок расскажу о самом моем любимом шаблоне. Это шаблон var. Достаточно написать в любом месте тела процедуры слово var и нажать Tab, сработает шаблон, с помощью которого можно добавить любую новую переменную в раздел описания локальных переменных. Очень удобно в случае с большими процедурами.

пятница, 18 июля 2008 г.

Extended FAT

Сегодня речь пойдет о новой файловой системе появившейся в Windows Vista Service Pack 1. Также в конце статьи будет немного интересной (на мой взгляд) информации, о том, как подружить Windows XP SP2 с новой файловой системой.

Итак, вчера совершенно случайно, как это обычно бывает, обнаружил у себя возможность форматирования в новую файловую систему – exFAT.

Стало жутко интересно – что же это за зверь такой – полез в Википедию:

Материал из Википедии — свободной энциклопедии

exFAT (от англ. Extended FAT — «расширенная FAT») — файловая система для флеш-дисков впервые представленная в Windows Embedded CE 6.0. Используется в качестве замены FAT в тех случаях, когда использование файловой системы NTFS нецелесообразно.

Основными преимуществами перед всеми текущими версиями FAT является:

  • Убран лимит на размер файла в 232 байт (4 Гигабайта), теоретический лимит на размер файла 264 байт (16 Эксабайт).
  • Максимальный размер кластера увеличен до 225 байт (32 Мегабайта).
  • Улучшено распределение свободного места за счёт введения битовой карты свободного места, что уменьшает фрагментацию диска.
  • Убран лимит на количество файлов в одной директории.
  • Введена поддержка списка прав доступа.
  • Введена поддержка транзакций (опциональная возможность, должна поддерживаться устройством).

Windows Vista Service Pack 1 имеет поддержку exFAT.

Интересно, наконец-то появилась более-менее нормальная файловая система для сменных носителей, а то как-то несолидно смотрелись ограничения на файлы в 2 ГБ на «флешках» размером 16 ГБ или внешних жестких в 320 ГБ. Попробовал отформатировать – как ни странно, работает :)

Ну а теперь переходим к самому интересному. Затем я попробовал перенести «флешку» на второй компьютер с Windows XP и естественно получил сообщение, что диск не отформатирован. Обидно. Стал экспериментировать. В итоге ночных экспериментов выяснилось, что драйверы от висты отлично работают и под ХР!

Чтобы заставить ХР понимать новую файловую систему необходимо:

  1. найти два файла из дистрибутива Windows Vista SP 1 - uexfat.dll и exfat.sys;
  2. скопировать файл exfat.sys в папку windows\system32\drivers и uexfat.dll в windows\system32 на машине с Windows XP;
  3. В блокноте создать файл (например install.reg) и наисать в нем следующее:

--------------Начало файла instal.reg ---------------------

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\exfat]

"Description"="exFAT File System Driver"

"DisplayName"="exFAT File System Driver"

"ErrorControl"=dword:00000001

"Group"="Boot File System"

"Start"=dword:00000002

"Type"=dword:00000002


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\System\exfat]

"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\

00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\

5c,00,49,00,6f,00,4c,00,6f,00,67,00,4d,00,73,00,67,00,2e,00,64,00,6c,00,6c,\

00,00,00

"TypesSupported"=dword:00000007

--------------конец файла instal.reg ---------------------

  1. Естественно создать точку восстановления системы
  2. Теперь запустить созданный файл install.reg и перезагрузиться

Теперь компьютер с XP не отказывался прочитать «флешку» :) Однако форматировать в эту файловую систему под ХР не получится.

P.S. Ну и т.к. Windows XP официально не поддерживает эту файловую систему, если вы решите повторять то что написано выше, то вы все делаете на свой страх и риск, я не виноват если после указанных действий ваш компьютер вылетит в форточку.

Футболка программиста

На днях ездил в Хабаровск, чтобы забрать в Хабаровском филиале Академии IT честно заработанную во Всероссийском конкурсе IT-специалистов ITQuiz футболку. Как оказалось я еще не опоздал и призы все еще выдавались, хотя прошел уже месяц со дня опубликования результатов. К тому же, что-то народ не чешется забирать призы - призы забрали наверное всего человек 15-20.

Так что теперь я обладатель уникальной футболки, по крайней мере для моего города :) Все бы хорошо, если бы не одно НО. Почему то организаторы не учли одного факта - что ИТ-специалисты все разных размеров, а все футболки одного размера (причем не самого большого), по крайней мере для программистов. Короче говоря я кое как в нее влез :) Такая же история была во Владивостоке на чемпионате мира про программированию ACM.

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

четверг, 17 июля 2008 г.

Отличия новых версий Delphi от Delphi 7

Уже не однократно говорилось о возможностях новых версий IDE Delphi и их отличиях от более ранних версий. Однако мне до сих пор продолжают задавать подобные вопросы. Поэтому я решил один раз ответить и потом всем желающим давать ссылку на этот пост.

Многие блоггеры приводили списки отличий, но делали это как-то сухо – просто списком, и ничего не объясняя, как например, сделано тут. Я, по возможности, постараюсь дать более подробное описание отличий.

Все нововведения в среде Delphi условно делятся на несколько категорий:

  • Общие;
  • Компилятора/языка Delphi;
  • IDE;
  • VCL.
В категорию общих отличий обычно относят следующие нововведения – это Delphi for NET и ECO. Но я считаю это несколько некорректным, т.к. Delphi 7 это компилятор для Win32, то и сравнивать его надо с таким же компилятором – Delphi for Win32, а там, к сожалению, никаких ECO нет. Так что пока не буду подробно останавливаться на этом.

Те кто задает вопросы об отличиях наверное придут в ужас от следующей записи (кстати абсолютно работающий в Delphi 2007 код):

type
TAbstract = class abstract (TObject)
public
type
TTestArray = array of integer;
ТЗакрытыйКласс = class sealed
procedure Процедура(var Параметр: Integer);
end;
const
Max = 13;
Min: Integer = 2;
var
S: Integer;
end;

попробуйте-ка его запустить в Delphi 7 :)

Поскольку я являюсь сторонником следующей мысли - что знать некоторые вещи начинающим программистам попросту вредно, поэтому начну свое повествование с того, что наиболее легко увидеть невооруженным взглядом и знание чего не принесет вреда – а именно с изменений в IDE и VCL.

Здесь я ограничусь просто списком, поскольку не хочу раздувать пост. По мере написания этот список будет превращаться в список ссылок на посты, в которых более подробно описывается то или иное нововведение.

Итак, новыми функциями в IDE являются:

  • Live Templates (шаблоны кода)
  • Block Completion (автозавершение блоков кода)
  • History Tab(история редактирования кода)
  • Better debugging (улучшенная отладка)
  • VCL Guidelines
  • Code Folding (сворачивание частей кода)
  • SyncEdit (синхронное редактирование)
  • Searchable Tool Palette (новая палитра инструментов)
  • Line Change indicators (индикаторы редактирования строк кода)
  • Refactoring
  • Integrated Unit Testing (модульное тестирование)
  • Class and UML Modeling (встроенные средства моделирования)
Каждое из этих нововведений является предметом отдельного разговора. Первой темой будут шаблоны кода - одна из интереснейших функций которая при правильном подходе поможет значительно упростить жизнь программисту. Пост о них, надеюсь, будет совсем скоро.