« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
    Популярное
Усовершенствование программы

Функция GetKBCodePage

Функции Windows API для работы с посторонними окнами

Теория плагинов. Я сделал так...

Разные вопрос и ответы по C++ Builder

Расчет координаты точки после уменьшения изображения

Использование клавиатуры средствами DirectInput

Функция GetViewportOrg

Настройка .htaccess

Введение в протокол OSPF




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 269
Пользователей: 0

Статьи:: WxWidgets :: Перевод книги Cross-Platform GUI Programming. Глава 1



отправить ссылку другу версия для печати  Обсудить на форуме

Перевод книги Cross-Platform GUI Programming. Глава 1

Автор: Aleksey2, http://forums.realcoding.net/index.php?showtopic=20505

Введение


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



Что такое wxWidgets?

wxWidgets -- это инструментарий для написания десктопных и мобильных приложений с графическим пользовательским интерфейсом (graphical user interface, GUI). Эта библиотека является фреймворком, т.е. она реализует большую часть работы и поведения окон. Библиотека wxWidgets содержит огромное число классов и методов, которые программист может использовать и настраивать. Приложение обычно использует окно, содержащее стандартные элементы управления, возможно показывающее специальные изображения или графику, а также реагирующее на ввод с клавиатуры, манипулятора мыши или из других источников. Приложение также может взаимодействовать с другими процессами или управлять другими программами. Таким образом, wxWidgets позволяет легко написать приложения, которые могут делать все то, что могут делать современные программы.

Несмотря на то, что wxWidgets часто называют <<инструментарием для разработки GUI>>, фактически библиотека позволяет сделать намного больше и может быть полезна в самых разных областях разработки. Это следствие того, что приложения wxWidgets должны иметь возможность портирования на различные платформы, а поэтому библиотека содержит классы для работы с файлами и потоками ввода/вывода, нитями, настройками приложения, межпроцессорной коммуникацией, файлами помощи, базами данных и многим другим.

Почему стоит использовать wxWidgets?

Одной из особенностей, выгодно отличающих wxWidgets от других фреймворков, таких как MFC или OWL, является ее поразительная переносимость. У wxWidgets есть программный интерфейс для приложений (Application Programming Interface, API), который одинаков (или почти одинаков) на всех поддерживаемых платформах. Это означает, к примеру, что вы можете написать свое приложение в системе Windows и, сделав небольшие изменения (или даже обойдясь без них), перекомпилировать вашу программу в Linux или Mac OS X. Это обстоятельство дает огромное преимущество по сравнению с полным переписыванием приложения под каждую платформу и в том числе означает, что вам не нужно изучать различные API для каждой платформы. Кроме того, библиотека позволяет идти в ногу с прогрессом. Когда меняется программная среда, wxWidgets меняется вместе с ней, позволяя вашим приложениям портироваться на самые последние версии систем, поддерживая большую часть их новых возможностей.

Другой приятной особенностью является то, что wxWidgets реализует родной вид и поведение программ. Некоторые фреймворки используют один и тот же код для элементов управления на различных платформах (возможно используя специальные темы, чтобы элементы управления были похожи на родные). В отличие от них, wxWidgets использует родные элементы везде, где это только возможно (и свой собственный набор элементов в противном случае), поэтому элементы не просто похожи на родные элементы платформы -- они ими и являются. Это очень важно для конечного пользователя, так как даже самая маленькая, почти незаметная разница в поведении программы, по сравнению со стандартом платформы, может создать ощущение некоторой искусственности программы. Для примера рассмотрим рис.1.1, показывающий wxWidgets-приложение StoryLines (это инструмент, помогающий писателям графически представить хронологию произведения), запущенное в системе Windows XP.

Этот вид полностью соответствует виду типичного Windows-приложения с вкладками, полосами прокрутки и выпадающим списком, соответствующими выбранной пользователем теме. Аналогично, рис.1.2 показывает приложение StoryLines, запущенное под Mac OS X с ожидаемым для Aqua поведением и видом. В приложении отсутствует строка меню, так как, следуя соглашениям, принятым в Mac OS, меню для текущего окна отображается в верхней строке экрана.

Наконец, рис.1.3 показывает StoryLines как приложение GTK+, запущенное в системе Red Hat Linux.

Почему бы не использовать для этого Java? Несмотря на то, что Java великолепно подходит для web-приложений, она не всегда является хорошим выбором для десктопа. В частности, приложения на C++, использующие wxWidgets, быстрее, имеют более естественный вид и предсказуемое поведение, а также проще в установке, так как не зависят от капризной виртуальной машины Java. Использование C++ также позволяет получить доступ к низкоуровневой функциональности и легче интегрировать свое приложение с существующим кодом на C и C++. Именно по этим причинам очень мало популярных прикладных программ базируется на Java. Таким образом, wxWidgets позволит вам писать быстрые приложения, которые будут понятны пользователю.

wxWidgets является проектом с открытым исходным кодом. Обычно это означает, что вам не нужно платить за его использование (пока вы не захотите сделать пожертвование проекту!), но также имеет очень большое философское и стратегическое значение. Продукты с открытым кодом всегда противопоставляют их проприетарным эквивалентам. Используя wxWidgets, вы всегда знаете, что код, на который вы полагаетесь, никогда не исчезнет. Вы всегда сможете самостоятельно исправить любую проблему, поправив исходный код. Можно получить большое удовольствие, принимая участие в обсуждении проекта, нежели общаясь с персоналом, осуществляющим корпоративную поддержку проприетарных продуктов. Участники открытого проекта находятся там, так как они любят то, что делают и с удовольствием делятся своими знаниями, тогда как члены корпоративной поддержки не всегда так идеалистически мотивированы. Когда вы используете wxWidgets, вы попадаете во впечатляющее сообщество талантов, обладающих большими знаниями. Многие аспекты разработки приложений, которые в ином случае пришлось бы придумывать самостоятельно, инкапсулированы этими разработчиками в легко используемые классы, которые вы можете подключить к своему коду. Активное пользовательское сообщество проконсультирует вас в случае необходимости в списках рассылки. В рассылке можно обсудить не только wxWidgets, но также и другие вещи, близкие сердцу любого разработчика. Возможно, в один прекрасный день вы сами присоединитесь к wxWidgets и станете ее активным разработчиком.

Библиотека wxWidgets широко поддерживается компьютерной индустрией. Список пользователей включает в себя такие известные компании как AOL, AMD, CALTECH, Lockheed Martin, NASA, Open Source Applications Foundation, Xerox и многие другие. wxWidgets объединяет огромное число пользователей: от программистов-одиночек до огромных корпораций, от отделений компьютерных наук до центров медицинских исследований и от экологических организаций до индустрии телекоммуникаций. Библиотека используется множеством открытых проектов, таких как редактор музыки Audacity и системой управления базами данных pgAdmin III.

Люди используют wxWidgets по различным причинам: для одних это простая и элегантная замена MFC, для других -- возможность легко менять платформу и перейти, например, с Microsoft Windows на Unix или Mac OS X. Проект wxWidgets также уделяет внимание поддержке мобильных платформ. Существуют порты для встраиваемых систем на базе Linux, Microsoft Pocket PC и (возможно порт скоро появится) Palm OS.

Краткая история wxWidgets
Проект wxWidgets берет свое начало в 1992, когда Джулиан Смарт (Julian Smart) начал работать в университете Эдинбурга над разработкой инструмента для создания диаграмм, который назывался Hardy. Ему не хотелось выбирать платформу для работы программы (рабочие станции SUN и PC), поэтому он решил использовать мультиплатформенный фреймворк. В связи с тем, что в то время число существующих фреймворков было невелико, да и покупка одного из них не входила в планы подразделения, было принято решение написать свой собственный. В сентябре 1992 года с разрешения университета на ftp-сервер факультета была помещена первая версия библиотеки, и другие разработчики получили возможность использовать этот проект. В самом начале wxWidgets был написан с использованием XView и MFC 1.0, но так как Borland C++ не поддерживал MFC, то в скором времени библиотека была переписана на чистом Win32. XView берет свое начало из Motif, так что очень скоро появился порт под Motif.

Спустя некоторое время сформировалось маленькое, но весьма активное сообщество пользователей, и был создан почтовый список рассылки. Стали приходить дополнения и исправления ошибок, включая порт на Xt от Маркуса Хользема (Markus Holzem). Проект постепенно привлекал все больше и больше пользователей по всему миру: отдельные пользователи, академики, правительственные подразделения и множество корпоративных пользователей, которые поняли, что wxWidgets предлагает более удачный продукт и поддержку, чем те коммерческие проекты, услугами которых они пользовались или собирались пользоваться.

В 1997 году с помощью Маркуса Хользема был спроектирован новый API для wxWidgets версии~2. Вольфрам Глогер (Wolfram Gloger) решил, что wxWidgets должна быть портирована на GTK+ и адаптировал библиотеку под среду GNOME. Роберт Роублинг (Robert Roebling) стал главным разработчиком для порта wxGTK, который в данный момент является основным для систем Unix/Linux. В 1998 году версии под Windows и GTK+ были объединены и помещены в единое хранилище версий. Также в этом году к проекту присоединился Вадим Зейтлин (Vadim Zeitlin), который добавил большое количество кода и технических решений, а также Стефан Ксомор (Stefan Csomor), начавший портирование библиотеки на платформу Mac OS.

В 1999 увидел свет впечатляющий компонент Вацлава Славика (Vaclav Slavik) -- wxHTML и просмотрщик для файлов помощи на базе HTML.

В 2000 году компания SciTech Inc. спонсировала начальную разработку wxUniversal -- собственных элементов управления wxWidgets, которые можно использовать на платформах, где вообще отсутствуют элементы управления. wxUniversal был впервые использован в приложении SciTech на платформе MGL, которая является низкоуровневой графической прослойкой.

В 2002 году Джулиан Смарт (Julian Smart) и Роберт Роублинг добавили порт wxX11, используя наработки wxUniversal. Требующий только Unix и X11, порт wxX11 очень хорошо подходит для систем с низкой производительностью.

В июле 2003 wxWidgets смогли запустить на Windows CE, и Роберт Роублинг демонстрировал приложение wxGTK, запущенное на встроенной Linux-платформе GPE.

В 2004 году под давлением фирмы Microsoft название проекта было изменено с начального <<wxWindows>> на <<wxWidgets>>.

Также в 2004 Стефан Ксомор и еще часть разработчиков полностью переписали порт wxMac под систему OS X, существенно повысив качество и функциональность приложений в OS X. Под руководством Дэвида Эллиота (David Elliot) порт, использующий Cocoa, также был существенно улучшен. Вильям Осборн (William Osborne) выиграл соревнование по портированию wxWidgets на платформу Palm OS 6 для запуска простейшего примера <<minimal>> из поставки wxWidgets. Версия~2.6 была выпущена в апреле 2005 года, объединив все основные улучшения во все порты.

Планы проекта на будущее:
  • создание инструментов для управления пакетами, которые облегчат интеграцию со сторонними компонентами
  • расширение поддержки встраиваемых приложений
  • альтернативный механизм обработки сообщений
  • добавление сложных компонентов, таких как объединенное со списком дерево
  • вторая версия wxHTML с полной поддержкой web на всех платформах
  • дальнейшая интеграция со стандартными решениями, такими как STL
  • полностью рабочий порт для Palm OS


Сообщество wxWidgets
Сообщество wxWidgets поддерживает два списка рассылки: wx-users (для пользователей) и wx-dev (для разработчиков). Web-сайт проекта анонсирует новости, содержит документацию и ссылки на релизы, а также Wiki (систему, представляющую из себя множество страниц, которые каждый пользователь может редактировать и дополнять). Также для разработчиков и пользователей доступен форум. Ниже дан список адресов этих ресурсов:

Как и большинство проектов с открытыми исходниками, wxWidgets разрабатывается с помощью репозитория CVS -- системы управления версиями, которая отслеживает изменения в коде. В целях избежания хаоса в разработке, только небольшое число разработчиков могут помещать код непосредственно в CVS. Остальные могут дополнять или исправлять ошибки в коде, публикуя информацию для изменения в специальной системе (в данный момент для этого используется система для обратной связи SourceForge'а). Разработка осуществляется в рамках двух веток: <<стабильной>> ветки, где правятся только бинарно-совместимые ошибки, и <<разрабатываемой>> ветки (текущее состояние CVS). В соответствии со статусом версии, стабильные релизы нумеруются четными числами (например, 2.4.x), а разрабатываемые -- нечетными (к примеру, 2.5.x). Пользователи могут ждать новые релизы или скачать исходники из соответствующей ветки CVS.

Решения об изменении в API и другие технические детали принимаются в ходе обсуждения в списке рассылки wx-dev. У некоторых проектов на базе wxWidgets существуют и развиваются свои собственные сообщества пользователей, как, например, у wxPython и wxPerl (смотрите Приложение 5 <<Сторонние инструменты для wxWidgets>>).

wxWidgets и объектно-ориентированное программирование

Как и большинство современных фреймворков, wxWidgets активно использует концепции объектно-ориентированного программирования. Каждое окно представляется в виде объекта C++. Эти объекты имеют определенное поведение, могут получать различные сообщения и реагировать на них. То, что в результате видит пользователь, является визуальным отображением взаимодействия системы объектов. Вы, как программист, должны управлять коллективным поведением объектов. Эту задачу выполнить достаточно легко, так как некоторое стандартное поведение элементов библиотека wxWidgets уже реализовала за вас.

Конечно, связав вместе объектно-ориентированный подход и GUI, можно достичь неплохих результатов. Объектно-ориентированный язык Smalltalk, разработанный в 1970-м году Аланом Каем (Alan Kay), стал важной вехой в развитии GUI, принес инновации в технологию пользовательских интерфейсов и структуры языка, и хотя wxWidgets использует другой язык и API, но основные принципы построения по большей части остались теми же.

Лицензионное соглашение

Лицензия wxWidgets (официально, по историческим и юридическим причинам называемая <<лицензией wxWindows>>) является лицензией LGPL с некоторыми изменениями. Вы можете подробно ознакомиться с текстом лицензии, который доступен на сайте проекта или в каталоге docs дистрибутива, однако вкратце его суть такова: вы можете использовать wxWidgets в коммерческих или открытых проектах абсолютно бесплатно. Вы можете линковать библиотеку как статически, так и динамически. В любом из случаев, вы не обязаны делать доступными ваш собственный исходный код или объектные файлы, однако если вы делаете изменения в коде самой библиотеки, то вы обязаны предоставить всем доступ к этим изменениям бесплатно. Также желательно ознакомиться с лицензией отдельных компонентов, являющихся частью wxWidgets, таких как библиотеки по работе с PNG и JPEG.

Исходный код, который поставляется с данной книгой, публикуется под лицензией wxWindows.

Архитектура wxWidgets

Таблица ref{wxapi} показывает четыре концептуальных уровня: внешний API wxWidgets, основной порт, API платформы, используемый этим портом и, наконец, название операционной системы.

Далее мы перечислим основные порты wxWidgets, которые существовали на время написания книги.

wxMSW
Этот порт компилируется и запускается на всех 32-х и 64-х битных версиях Microsoft Windows, включая Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP и Windows 2003. Он также может быть скомпилирован при использовании библиотеки Winelib под Linux. Также существует рабочая конфигурация под Windows CE (см. <<wxWinCE>>). Порт wxMSW может быть сконфигурирован для использования wxUniversal, вместо стандартных Win32 элементов.

wxGTK
wxWidgets для GTK+ может использовать элементы GTK+ версии 1.x или 2.x на любой из разновидностей Unix, поддерживающих X11 и GTK+ (например, Linux, Solaris, HP-UX, IRIX, FreeBSD, OpenBSD, AIX и других). Библиотека также может работать на встраиваемых платформах с достаточными для этого ресурсами, например, в среде GPE Palmtop (смотрите рис.~ref{pic1_4}). wxGTK является рекомендуемым портом для всех Unix-систем.

wxX11
wxWidgets для X11 использует набор элементов из wxUniversal и запускается непосредственно в Xlib, которая не имеет собственных элементов управления. Это обстоятельство делает порт подходящим для встраиваемых систем, но при его можно использовать и для построения приложений, которым не хотелось бы иметь зависимости от GTK+. Библиотека позволяет запускать приложение на любой Unix-системе, где может быть запущен X11. Порт wxX11 не является таким же развитым, как и wxGTK. На рис.~ref{pic1_5} показана игра <<Life!>>, скомпилированная вместе с портом wxX11 и запущенная в системе Familiar Linux/TinyX на iPAQ PDA.

wxMotif
Этот порт может использовать Motif, OpenMotif или Lesstif на большинстве Unix-систем. Sun Microsystems оценивает функциональность своей библиотеки между GTK+ и GNOME, поэтому использование Motif не является желательной опцией для большинства разработчиков и пользователей.

wxMac
wxMac нацелен на запуск приложений в среде Mac OS 9 (требуется версия не меньшая 9.1) и Mac OS X (требуется версия не меньшая 10.2.8). Чтобы компилировать приложения для Mac OS 9 вам потребуются утилиты из Metrowerks CodeWarrior. Для Mac OS X вы можете использовать как Metrowerks CodeWarrior, так и Apple tools. В последнем случае вам необходимо использовать Xcode версии 1.5 или выше. Если вы любите пользоваться командной строкой, то можно обойтись компилятором GCC версии 3.3 или выше.

wxCocoa
Этот порт еще находится в процессе разработки и предназначен для использования Cocoa API, впервые появившейся в Mac OS X. Хотя функциональность Carbon и Cocoa очень похожа, но этот порт имеет потенциальную возможность поддержки среды GNUStep на платформах, отличных от Mac.

wxWinCE
Порт Windows CE является оболочкой над различными SDK для систем на базе Windows CE, включая Pocket PC and Smartphone. Основной частью данного порта является порт для Win32 wxMSW с ограничениями и добавлениями для работы на малых платформах. Рис.~ref{pic1_6} показывает игру <<Life!>>, запущенную в эмуляторе Pocket PC 2003. На рис.~ref{pic1_7} показаны четыре экрана примера <<dialog>> из поставки wxWidgets, запущенного на Smartphone 2003 с экраном 176x220 пикселей. Как вы видите wxWidgets сделал адаптацию приложения для этих платформ, включающую создание специального меню, вместо обычного, так как Smartphon поддерживает только две кнопки в меню. Требуются дополнительные подсказки от приложения, такие как вызов SetLeftMenu и SetRightMenu вместо добавления кнопок OK и Cancel в диалог.

wxPalmOS
Этот порт предназначен для Palm OS 6 (Cobalt). В данный момент (на момент написания книги) он практически нефункционален, однако может быть использован для компиляции и запуска примера <<simple>> в эмуляторе Palm OS 6 (смотрите рис.~ref{pic1_8}).

wxOS2
Порт wxOS2 является менеджером отображения для OS/2 или eComStation.

wxMGL
Этот порт направлен на использование низкоуровневого графического слоя MGL от SciTech Software, Inc. и использует элементы wxUniversal.

Внутренняя организация

Внутри код wxWidgets разделен на шесть слоев:
  • Общий код используется всеми портами. Он включает в себя классы структур данных, информацию о типах времени выполнения и описание базовых классов, таких как wxWindowBase, которые используются для сокращения кода во всех реализациях классов.
  • Производный код реализует расширенные элементы управления независимо от платформы, позволяя эмулировать эти элементы и их функциональность, если они не присутствуют на данной платформе. wxWizard и wxCalendarCtrl являются примером таких элементов.
  • wxUniversal -- это множество базовых элементов для платформ, у которых эти элементы отсутствуют, таких как X11 и MGL.
  • Код, зависимый от платформы, реализует классы, используя существующую функциональность. Например, wxMSW реализует wxTextCtrl как оболочку над обычным элементом редактирования для Win32.
  • Дополнительный код находится в отдельном каталоге с именем contrib и включает в себя не обязательные, но полезные классы, такие как wxStyledTextCtrl.
  • Сторонний код состоит из библиотек, разрабатываемых независимо от библиотеки wxWidgets, но которые используются ею для реализации важных возможностей. Сторонний код включает в себя библиотеки JPEG, Zlib, PNG и Expat, а также некоторые другие.


Каждый порт берет все, что ему необходимо из этих уровней и реализует API библиотеки wxWidgets.

Как wxWidgets узнает какие классы необходимо использовать во время компиляции? Когда вы включаете в программу заголовочные файлы wxWidgets, такие как wx/textctrl.h, в программу включается определяемый целевой платформой файл (в случае с Windows это файл wx/msw/textctrl.h) в соответствии с директивами в файле wx/textctrl.h. Далее ваша программа линкуется вместе с библиотекой, которая была скомпилирована с подходящими настройками. Одновременно может существовать несколько конфигураций библиотеки, в частности, версии Debug и Release, а также динамическая и статическая версии библиотеки. У вас есть возможность выключить некоторые компоненты при сборке wxWidgets, или сделать выбор между сборками с поддержкой Unicode или ANSI, редактируя для этого файл setup.h или используя опции для конфигурации, вид которых зависит от используемого вами компилятора. Дополнительная информация доступна в Приложении 1 <<Установка wxWidgets>>.

Обращаем ваше внимание на то, что хотя wxWidgets и является оболочкой над каждым родным API, но она не запрещает писать специфический для платформы код, если это необходимо. Однако такая необходимость возникает очень редко.

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

Прикрепленные файлы
Прикрепленный файл  part1.pdf ( 513.78 Кб )



Рубрика: WxWidgets




Подгрузка через AJAX HTML-кода, содержащег....

AJAX

При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Обзор нового релиза самой мощной Ajax библ....

AJAX

Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Firebug 1.3 и 1.4 alpha — что нового и инт....

Вебмастеру

Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 19.11.2008

Остальные статьи:

Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для о...
Пишем правильный online WYSIWYG-редактор


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия