Панель управления Яндексом

Вас удивляет странное поведение яндекса? Вы не знаете почему Ваш сайт забанили или пессимизировали? Вы не получаете ответов от Платона Щукина?

Зайдите сюда: http://yandex.ssve.ru/ и сможете сами поуправлять работой "народного" поисковика. :)


Залепа №11. Зазеркалье отдыхает.

В .NET активно применяется механизм отражений. Он позволяет с помощью метаданных получать подробное описание типов, хранящихся в сборках.

Цитата:

Джеф Просиз "Programming Microsoft .NET"

Термин "отражение" (reflection) означает просмотр метаданных для получения информации о сборке, модуле или типе. .NET Framework использует отражение во время выполнения, чтобы получить важные сведения о загружаемых сборках. Именно применяя отражение Visual Studio NET получает данные IntelliSense.

Говоря по-русски, отражение - механизм, позволяющий программам (включая и разработанные Вами модули) получать во время своей работы данные о типах (классах, их методах, свойствах и т.д.) из любых доступных сборок. Т.е. когда IntelliSense показывает список свойств, событий и методов объекта или класса, то он (IntelliSense) получает эти данные через отражение именно из той сборки, которая содержит требуемый класс. Аналогично работает и окно свойств (Properties) - оно так же считывает через отражение данные о свойствах и событиях и отображает эти данные в виде таблицы.

Что ж, здорово, когда можно получать данные непосредственно из скомпилированного модуля - информация окажется всегда актуальной, вне зависимости от версии этого самого модуля. Это было бы очень ценной возможностью, если бы... если бы оно работало!

Сразу скажу, из собственных программ механизм отражений я не тестировал. Мне хватило поведения Visual Studio. Итак...

Контрол TreeView (ох и глюкавый же он!), судя по описанию в MSDN имеет свойство Sorted. И он таки действительно его имеет. Более того, свойство это работает и даже полезным бывает. Для проверки существования можно создать простенькое приложение из одной формы с контролом TreeView на ней. В обработчик Load формы впишем что-нить типа MyTreeView.Sorted = true; и попробуем откомпилировать - все пройдет на ура.

Получается, что свойство все таки существует, хотя IntelliSense и окно Properties пытаются убедить нас в обратном. Кстати, как и просмотрщик объектов Object Browser (встроенный в Visual Studio 2005 вместо программы Class View, которая поставлялась с Visual Studio 2003), а уж он-то точно инфу тянет через отражение.

Выходит, что механизм отражений сбоит даже в среде разработки. А что же он будет творить в вашей реальной программе и к чему это может привести, думайте сами.

PS.

Это не единственное свойство, на котором спотыкается IntelliSense. Ранее я уже писал о свойстве AutoGenerateColumns контрола DataGridView, которое тоже является призраком, невидимым для IntelliSense. Теперь, видимо, настала пора собирать коллекцию таких невидимок. Если найду еще (а я уверен, что найду и не мало!), то буду дополнять список прямо в этой статье.

Дополнение (20:04)

По поводу свойства Sorted и метода Sort в контроле TreeView. В MSDN ни слова не сказано, что они как-то взаимосвязаны. Однако, как я только что убедился на практике, связь эта существует и она достаточно жесткая.

Итак, если свойство Sorted установлено в true, то метод Sort вызывается автоматически после каждого изменения в контроле.

Метод Sort в свою очередь автоматически устанавливает свойство Sorted в true, хотя об этом в MSDN не упоминается.

Вот такая вот загадочная контора microsoft....


MySQL: MyISAM хотят заменить на новый движок Maria

Инициативная группа MySQL AB Maria, состоящая из шести человек и возглавляемая Michael "Monty" Widenius (создатель MySQL и MyISAM), выпустила тестовую версию нового движка хранения данных Maria.

Движок Maria - это расширенная версия MyISAM, которая поддерживает весь основной функционал MyISAM и в дополнение к этому предлагает: поддержку восстановления данных после сбоев (data auto-recovery, crash safe), полное логирование (включая операции CREATE, DROP, RENAME и TRUNCATE) и новый формат строк PAGE.

Планируется, что движок Maria будет входить в стандартный пакет в версиях MySQL 6.X

Основные замечания касательно сравнения Maria и MyISAM

Преимущества перед MyISAM

  • Восстановление данных и индексов после сбоев
  • Откат, после сбоя, в предыдущее состояние или к состоянию после последней команды LOCK TABLES
  • Полное логирование операций, включая: CREATE/DROP/RENAME/TRUNCATE TABLES, LOAD DATA INFILE, SELECT ... INSERT и INSERT (множество строк), ALTER TABLE
  • LOAD INDEX может пропускать неиспользуемые индексные блоки
  • Новый блочный формат строк, в котором данные хранятся ввиде страниц
  • При использовании блочного формата строк (выбираемого теперь по умолчанию) строковые данные могут кешироваться
  • Блочные тесты большинства элементов
  • Поддержка как отказоустойчивых (crash safe, транзакциональных) так и нетранзакциональных таблиц. (Нетранзакцональные таблицы не логируются и для строк используется меньше места): CREATE TABLE foo (...) TRANSACTIONAL=0|1
  • PAGE используется только для тказоустойчивого/транзакционального строкового формата
  • PAGE формат должен дать заметное увеличение скорости на системах с плохим кешированием данных. (К примеру Windows)

Отличия от MyISAM

  • Использование больших (1GB по умолчанию) лог файлов
  • Использование контроля за логами (maria_log_control) и файлов логов (maria_log.???????). Файлы логов могут быть очищены автоматически, когда они уже больше не нужны, или по требованию (после бэкапирования).
  • По умолчанию используются 8К страницы (MyISAM использует 1К). Maria будет работать быстрее на индексах с фиксированным размером, но медленнее на ключах с переменной длиной.

Устранение недостатков на ближайшее время

  • В Maria 1.0 может быть один пишущий и много читающих (MyISAM может иметь одного добавляющего и много читающих, когда используются конкурирующие добавления записей).
  • Не поддерживается INSERT DELAYED
  • Не поддерживается кеширование составных ключей

Устранение недостатков до следующих релизов

  • Хранение очень малых строк
  • Не поддерживаются MERGE таблицы

Различия, которые вероятно не будут устранены

  • Страницы данных в блоковом формате увеличивают размеры: 10 байт на страницу и 5 байт на строки. Транзакции и поддержка конкурирующих записей приведут к увеличению: 7 байт на новые строки, 14 байт для удаленных строк
  • Отсутствие внешнего блокирования (MyISAM имеет внешнее блокирование, но оно редко используется)
  • Использование одинакового размера страниц для индекса и данных. MyISAM поддерживает различные размеры страниц для индексов
  • Индексный номер требует один экстра байт на индексную страницу
  • Не поддерживается внутренний MySQL RAID (выключен и в MyISAM)
  • Минимальный размер файла данных формата PAGE 16К (со страницей на 8K)

Обзор Maria: http://forge.mysql.com/wiki/Maria_Preview
Документация Maria: http://forge.mysql.com/wiki/Maria_Docs


Fast: [10] [20]

Этот сайт полностью окупает себя, хотя его ТИЦ=10, а PR=2. Хотите знать, как он это делает? Хотите чтобы Ваш сайт чарез пол-часа тоже начал на полном автопилоте приносить деньги?
Регистрируйся здесь и здесь и начинай получать деньги со своего сайта!