N 24
03.02.2000
Проблемы Y2K еще не закончились. Впереди 29
февраля 2000 года. Причем здесь февраль, спросите
вы? Дело в том, что раньше в RunTime-библиотеках при вычислении
високосного года проверяли год только на (Y mod 4 = 0) and
(Y mod 100 <> 0). Но для 2000 года это выражение даст
False. Поэтому полная конструкция для проверки должна выглядеть
так:
(взято из модуля sysutils.pas Delpi 5, содержимое
функции IsLeapYear).
Result := (Year mod 4 = 0) and ((Year mod
100 <> 0) or (Year mod 400 = 0));
Самый дебильный способ вычисления високосного
года я обнаружил в FreeUDFLib (модуль TimeFncs.pas). UDF
IsLeapYear берет (EncodeDate) числовую дату 1 января года
X, берет 31 декабря года X, и если путем вычитания одной
из другой, и прибавления 1, получится 366, то значит год
високосный.
Не бойтесь, здесь проблем не будет, поскольку EncodeDate
использует ту самую функцию IsLeapYear, текст которой я
привел выше. А если бы там не было проверки Year mod 400?
Greg Deatz, мягко говоря, сел бы в лужу.
Вывод - не надо мудрить.
Незначительная ошибка, связанная с Y2K, все
таки вкралась в дистрибутив IB 5.6 - если вы запустите IB
Guardian как application, и сделаете на иконке в TaskBar
двойной клик, то окажется, что Guardian стартовал в сотом
(100) году. Эта ошибка была обнаружена после изготовления
дистрибутива, но поскольку она ни на что не влияет, было
решено код не исправлять.
Напоминание. IB 5.6
for Windows NT является бесплатным обновлением для легальных
пользователей IB 5.0, 5.1, 5.5. 28 мегабайт. Дистрибутив
можно взять напрямую с
http://www.interbase.com/downloads/interbase_wi-v56.zip
http://www.mers.com/download/interbase_wi-v56.zip
ftp://ftp.inprise.co.za/priv/interbase/ib_nt_v56.zip
Коробочка
ничего не напоминает? Похоже, не правда ли? Но все таки
это ...
- 5 книг документации, переведенных на русский язык
- дистрибутивы IB 5.6 для платформ
- RedHat Linux 6.0/SuSE 6.2 (Intel)
- Windows 95/98/NT
- Novell Netware 4.2/5.0
- дистрибутивы IB 5.5 для платформ
- Solaris 2.5.1/2.6/7 (SPARC)
- HP-UX 10.20
Причем все это удовольствие на одном компакт-диске. Цена
- в районе $99.
CD я пока в руках не держал, но на 99% уверен, что русской
документации в PDF на нем нет. Поэтому ожидать ее появления
на пиратских CD не стоит.
С 5.6 закончили. Теперь про 6.0.
3 января 2000 года компания Inprise опубликовала пресс-релиз.
Если коротко, то IB переводится в OpenSource,
и исходные тексты 6.0 для Windows, Linux и Solaris будут
опубликованы в течение первого полугодия. Для сопровождения
IB будет создана компания, 20% акций которой будут принадлежать
Inprise.
Немного прояснило ситуацию интервью
Дейла Фуллера журналу LinuxJournal. Но все равно остается
много неясных моментов.
Пресса достаточно оперативно отреагировала на это событие,
и уже 4 января появились объявления в
PCWeek,
LinuxJournal,
InfoWorld,
Information
Week, PRNewswire
и Ottawa
Citizen.
Наиболее информативными оказались заметки в PCWeek и Ottawa
Citizen. Остальные просто констатировали факт, цитируя и
без того короткий пресс-релиз Inprise.
Диапазон откликов на это заявление был от криков "ура!"
до насвистывания похоронного марша. Пессимистический настрой
в основом был у тех, кто в бизнес-плане привязывал выпуск
своего продукта к предполагавшемуся выходу IB 6 в феврале-марте.
Действительно, предварительный срок в полгода оптимизма
не вызывает. Надо сказать, что 23 ноября бета-тестеры получили
пре-релиз IB6, в котором срок лицензий ограничен как раз
28 февраля.
Вообще событие с 6.0 вызвало настолько бурные отклики в
листсервере interbase@mers.com, что mers.com решил продолжать
поддерживать этот список рассылки, хотя и собирался прикрыть
его в декабре 1999 года (по техническим причинам).
Сообщество пользователей IB начало не только обсуждать
плюсы и минусы перехода IB в OpenSource, но и организовало
IBDI - InterBase Developers Initiative, координатором которой
является Jason Wharton, автор известной библиотеки InterBase
Objects. Вступить в IBDI, или почитать об истории IB, мыслях
по поводу будущего развития и т.п., можно на сайте www.interbase2000.org.
Правда, анкета (survey) там такая огромная, что я просто
поленился заполнить ее. Да и в самом деле, язык C я не люблю,
и вряд ли смогу поучаствовать в "формировании"
кода последующих версий IB.
Вообще весь поднятый программистской общественностью ажиотаж
мне не нравится. Какой смысл обсуждать выбор системы Version
Control для модификации кода IB, организовывать инициативные
группы, набирать участников для работы с исходниками, если
собственно исходников пока никаких нет? Да и более того,
если исходными текстами будет заниматься специально создаваемая
отдельная компания, то "иницативные группы" имеют
мало шансов на "руление" в изготовлении основного
кода. Компиляция кода под экзотические версии Linux? Это
интересно только весьма ограниченному количеству людей.
В общем, владельцем кода пока является Inprise, и дальнейшая
судьба IB пока зависит только от Inprise.
Кстати, сайт www.interbase.org
уже зарегистрирован. Именно поэтому IBDI пришлось добавить
к названию "2000". Факт регистрации был обнаружен,
когда пользователи после пресс-релиза стали предлагать зарегистрировать
jrd.org, isc.org, FreeInterbase.org и т.п. Были и совсем
оригинальные предложения - masterkey.org, db_key.org и даже
snapshot.org! Разумеется, зарегистрировать можно, только
вот кто этими сайтами будет заниматься? Интересно, но факт,
что по количеству полезных для разработчиков документов
и файлов, сайта, похожего на www.ibase.ru, нет. Посмотрите
на www.interbase.com.
Ценность представляет только Knowledgebase и несколько статей
(около 8-10). Сайт Dunstan
Thomas? Он фактически уже давно заброшен. Если найдете
хоть один полезный сайт по IB (на русском или английском)
- я с удовольствием помещу его адрес на страницу "ссылки".
А знаете, кто зарегистрировал www.interbase.org?
David Intersimone, president of Developer Relations, Inprise.
20 декабря 1999 года. Правда, по сей день там на многих
языках (кроме русского) всего одна надпись - Under Construction.
Еще немного о сайтах и IB 6:
- www.opensource.org
- концепция, типы лицензий, софт, FAQ и т.п. Взгляды на
OpenSource с позиций клиента, продавца, хакера и др.
- Gartner
Interactive - статья по поводу мифов вокруг OpenSource.
- acs.lavsa.com/labs/
- частное мнение по поводу OpenSource IB, драйвер для
AOLServer и другое OpenSource ПО.
- www.harbor.com
- немного биографии James Starkey, создателя Interbase.
IBX. Появление IBX
в Delphi 5 позволило оценить прямую работу с IB тем программистам,
кто не слышал о FIBC или IBObjects.
Однако, общие оценки скорее печальные. Оказывается, много
программистов при работе через BDE не имели понятия о транзакциях,
и испытывают большие проблемы в выборе техники "ручного"
управления ими. Основной проблемой явилось то, что умолчательный
режим изоляции транзакций в BDE - ReadCommitted, а в IB
API - RepeatableRead (snapshot). В итоге - частые письма
в fido7.ru.delphi.db о том, что "не видны чужие изменения",
и т.п. Рецепт прост - либо почитать документацию (в плане
транзакций), либо в IBTransaction.Params вставлять константы
read_committed
rec_version
nowait
Заметьте, что эквивалентом RepeatableRead является параметр
concurrency, а параметр consistency похож
на RepeatableRead, только пытается блокировать таблицы целиком.
В общем RTFM - IB API Guide.
Наверное, на этом сегодня стоит закруглиться.
До следующего выпуска!
HitBox
с 18 июня 1999 года |
Rambler
с 27 декабря 1998 года
|
|