Несколько лет назад книгу по Delphi 2 или 3 надо было начинать с азов объектно-ориентированного программирования (ООП). Многие только переходили к Delphi из DOS, многие использовали Borland Pascal for Windows и работали с Windows API напрямую. Объекты еще были в диковинку, и полное разъяснение новых принципов было просто обязательно.
Но и сейчас писать об этом вполне актуально. Конечно, выросло поколение программистов, которые "с молоком матери" впитали новые понятия. Но от понимания объектов до их грамотного использования — дистанция огромного размера. Для создания более или менее сложных приложений нужны навыки объектно-ориентированного дизайна, а для приложений в свою очередь — четкое знание возможностей вашей среды программирования. Поэтому в данной главе мы постараемся акцентировать внимание читателя на применение ООП в среде Delphi 7.
По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.
В этом томе мы продолжим изучение библиотеки классов MFC и ее возможностей. Теперь мы расскажем о использовании Microsoft Visual C++ и библиотеки MFC для разработки приложений Internet и Intranet. Мы также затронем технологию ActiveX и расскажем о том как использовать в своих приложениях готовые органы управления OLE и ActiveX. В приложениях, представленных в данной книге, мы будем активно работать с диалоговыми панелями. На примере списка с пиктограммами и линейного индикатора вы научитесь использовать стандартные органы управления Windows 95 и Windows NT. Мы также приведем начальные сведения о использовании мультизадачности в приложениях MFC. Одно из наших приложений будет создавать дополнительную задачу, выполняющую загрузку файлов с сервера FTP в фоновом режиме.
До недавнего времени создание приложений, которые могут работать с ресурсами сети Internet или Intranet, являлось достаточно сложной задачей. Программист должен был использовать интерфейс сокетов Windows или программировать на более низком уровне протокола TCP\IP.
Чтобы облегчить тяжелый труд программиста, Microsoft разработала новый программный интерфейс Win32 Internet, получивший красивое название WinInet. С использованием WinInet значительно облегчается создание приложений, работающих с протоколами HTTP, FTP и системой Gopher. При этом программист избавляется не только от необходимости программирования на уровне сокетов Windows или протокола TCP\IP, но и от самостоятельной реализации протоколов HTTP и FTP.
Модуляция Pulse-distance. Сначала идут младшие биты, потом старшие.При нажатии кнопки на дистанционке выдается одна полная посылка, а затем через промежутки идут одиночные импульсы, говорящие о том, что кнопка еще нажата. Перед посылкой (первой полной и одиночными импульсами) идет один длинный импульс синхронизации.
В посылке адрес и команда идут два раза - сначала просто, затем с инверсией (что-то не совпало - команда не принята). Кроме того, основная посылка идет только один раз при нажатии на кнопку. Вероятность того, что она пройдет правильно с первого раза, не очень высока.
Как перестать беспокоиться и начать программировать
Хочу обратить внимание читателей, что никаких откровений или мыслей, блистающих особой глубиной/новизной, вы здесь не найдёте. Просто прикладной программист среднего (или чуть выше) уровня излагает свои соображения, рождённые опытом работы, и иллюстрирует их конкретными примерами работающего инструментария.
Ещё раз подчёркиваю, что по всем вопросам изложена моя личная точка зрения. Я открыт для конструктивной дискуссии и с радостью восприму все замечания, исправления и дополнения к исходным текстам.
Предполагается, что читатель знаком с основными принципами объектно-ориентированного программирования и разработки приложений.
Последовательность изложения: вначале будет описана совокупность инструментов. Это займёт несколько статей (глав) – вместе с исходными текстами и примерами использования.
DVD постепенно завоевывает рынок и вопросы применения программ и аппаратных решений для работы с DVD становятся все более и более интересными для многих и многих людей. С аппаратной составляющей все более-менее ясно – есть пишущие DVD приводы двух конкурирующих стандартов, есть аппаратные кодеры MPEG для тех, кто не может ждать часами результатов работы программных кодировщиков. Осталось только понять, какие программы можно и/или нужно использовать для создания DVD-Video дисков.
Типичное изучение математики (как и любой формальной теории) в школе, в вузе сопровождается ощущением растерянности, недоумения. Определения и доказательства преподносят как настоящую реальность, но причины явлений никогда не объясняются. Казалось, что большую часть доказательств преподаватели получают с помощью магических манипуляций с кусочком мела у доски. Как можно было связать воедино все эти линии и не выпустить из поля зрения ни одну из них от самого начала доказательства до его чудесного конца? И над всем этим: "А для чего все это надо?".
Ответ приходит через несколько лет активной жизни. На самом деле все это ни для чего не надо, потому что предметы, которые вы изучаете, вносятся в школьные и вузовские программы достаточно произвольно. По правде говоря, эти знания служат лишь поводом для перехода к более серьезным вещам, таким как учиться понимать, учиться решать задачи, учиться познавать. Но любопытно, что эти "вещи" не признаются и не преподаются. Можно сказать, что существует определенный вид интеллектуального терроризма, когда некоторых учеников называют "нуль в математике", хотя их единственная вина состоит в том, что они не понимают то, о чем … никогда не говорится. Некоторым удается это избежать, потому что они раньше сумели познакомиться с неявными правилами этой игры. Есть и такие, кто учит все наизусть…
Прежде чем перейти к основному содержанию, оговорим несколько базовых понятий, с которыми нам потом придется часто сталкиваться. В первой части этой главы вы познакомитесь с нашим вариантом классификации игровых жанров. Это необходимо, чтобы говорить с вами на одном языке. Кроме того, прежде чем сесть за компьютер и начать писать собственную игру, имеет смысл определить, в каком жанре (или их комбинации) вы намереваетесь творить.
К тому же нам понадобятся термины, описывающие перспективу игры - точку, с которой игрок наблюдает за происходящим. В разделе «Типы игровой перспективы» мы объясним и снабдим примерами такие понятия, как «вид с высоты птичьего полета», «игра от первого (третьего) лица», «изометрическая проекция» и т.п.
тратить кучу времени на то, чтобы закодировать неверный алгоритм?
использовать слишком сложную структуру данных?
при тестировании программы пропустить очевидную проблему?
тратить день на то, чтобы обнаружить ошибку, которую можно было бы найти за пять минут?
сталкиваться с тем, что программа должна работать в
три раза быстрее и использовать меньше памяти?
затрачивать титанические усилия на то, чтобы перевести
программу с рабочей станции на PC или наоборот?
пытаться внести изменения в чужую программу?
переписывать программу целиком, потому что разобраться
в ней не удалось?
Ну и как — понравилось?
С программистами такое происходит все время. Однако справиться с подобными проблемами часто гораздо труднее, чем хотелось бы, поскольку такие темы, как тестирование, отладка, переносимость, производительность, альтернативы проектирования и стиль, темы, относящиеся к практике программирования, как правило, оказываются вне сферы внимания информатики и учебных курсов по программированию. Большинство программистов изучают их сами по себе, — в основном, на собственном опыте, а некоторые не изучают вообще.
В мире разнообразных интерфейсов, постоянно меняющихся языков, систем и утилит, под постоянным давлением обстоятельств мы зачастую теряем из вида главные принципы, которые должны быть основанием любой хорошей программы, — простоту, четкость и универсальность.
Не уделяется должного внимания инструментам и нотациям, способам записи, которые механизируют некоторые аспекты создания программ, то есть привлекают к процессу программирования сам компьютер.
Программа Maple корпорации Waterloo Maple Inc. — патриарх в мире систем компьютерной математики. Эта система, снискавшая себе мировую известность и огромную популярность, является одной из лучших среди систем символьной математики, позволяющих решать математические задачи в аналитическом виде. Эта книга познакомила читателей с новейшей версией Maple — Maple 7. Она вобрала в себя не только обширные и мощные возможности- предшествующих реализаций системы, но и предоставила в распоряжение пользователя ряд новых возможностей. Прежде всего это целый букет пакетов: CurveFitting, PolynomialTools, OrthogonalSeries и др.
Maple как система компьютерной математики развивается по ряду характерных направлений. Одно из них — повышение мощности и достоверности аналитических (символьных) вычислений. Это направление представлено в Maple наиболее сильно. Maple 7 уже сегодня способна выполнять сложнейшие аналитические вычисления, которые нередко не под силу даже опытным математикам. Конечно, Maple не способна на «гениальные догадки», но зато рутинные и массовые расчеты система выполняет с блеском. В новой версии ее возможности существенно расширены, особенно в области решений дифференциальных уравнений. : Другое важное направление — повышение эффективности численных расчетов. И тут успехи налицо — начиная с версии Maple 6 в систему включены эффективные алгоритмы группы NAG, лидирующей в области численных расчетов. Повышена эффективность и алгоритмов самой системы Maple 7. В результате этого заметно возросла перспектива использования Maple в численном моделировании и выполнении сложных численных расчетов — в том числе с произвольной точностью.
Интеграция Maple с другими программными средствами — еще одно важное направление развития этой системы. Ядро символьных вычислений Maple уже включено в состав целого ряда систем компьютерной математики — от систем «для всех» класса Mathcad до одной из лучших систем для численных расчетов и моделирования — MATLAB. Имеется целый ряд автоматизированных рабочих мест для математиков на основе ядра системы Maple: Math Office, Scientific Word, Scientific Workplace и др.
Система ориентирована на работу в локальных вычислительных сетях любого типа без ограничения количества пользователей при условии, что клиентской платформой является Windows 95/98/2000/NT и обеспечивается доступ к файл-серверу.
Система полностью совместима с международными форматами UNIMARC и USMARC на основе средств двухсторонней конверсии данных. Система также поддерживает Российский коммуникативный формат RUSMARC.
Система позволяет создавать и поддерживать любое количество баз данных, составляющих Электронный каталог (ЭК) или представляющих собой проблемно-ориентированные библиографические базы данных (БД).
Система предлагает технологию автоматического формирования словарей, на основе которых реализуется быстрый поиск по любым элементам описания и их сочетаниям.
Средства каталогизации позволяют обрабатывать и описывать любые виды изданий, включая нетрадиционные, такие как аудио- и видеоматериалы, компьютерные файлы и программы, картографические материалы, ноты и т.д.
Активная ячейка выделяется рамкой. Чтобы сделать ячейку активной, необходимо клавишами управления курсором подвести рамку к этой ячейке или щелкнуть в ней мышью.
Для выделения нескольких смежных ячеек необходимо установить указатель мыши в одну из ячеек, нажать левую кнопку мыши и, не отпуская ее, растянуть выделение на всю область. Для выделения нескольких несмежных групп ячеек следует выделить одну группу, нажать клавишу Ctrl
В некотором царстве, некотором государстве (а конкретно - в солнечной Невадщине) жил да был парень один. Звали его Дэниел Роббинс. Учился он в местном университете, а на досуге занимался всякими Unix'ами: поучаствовал в разработке FreeBSD, был одним из разработчиков проекта Stampede Linux... А потом взял и изобрел свой дистрибутив, который назвал Gentoo, быстро ставший очень популярным.
Впрочем, о Gentoo знают все, имевшие дело с Linux (а кто не знает - может узнать о нем на официальном сайте, , там и по русски немало написано). А вот о том, что Дэниел был еще и талантливым техническим писателем, нынешнее поколение линуксоидов начинает забывать. И писал он о массе вещей, интересных как IT-специалисту, так и конечному пользователю: о командной оболочке bash и о программных RAID-массивах, о программе awk и об управлении логическими томами (LVM), о редакторе sed и политике управления дисковыми разделами (полный список его статей можно найти на , поиском по ключевому слову Robbins).
В данной главе мы будем ссылаться на примеры, которые можно найти на Chapter 2 для того, чтобы попробовать изменить или улучшить их так, чтобы они помогли вам, когда вы прочтЈте эту главу. Некоторые примеры из данной главы можно также найти в advanced.sql в каталоге tutorial. Этот файл также содержит некоторые данные для загрузки, которые не будут повторяться здесь.