Все выпуски  

Общие впечатления.


➲перейти к началу ➲перейти к концу
Практическая работа с Visual Studio.Net и Microsoft Office

Статистика
Номер выпуска рассылки 12
Дата выпуска рассылки 2006-08-19
Время выпуска рассылки 02:55:12
Возраст рассылки в днях 196
Количество подписчиков 1275
Динамика подписчиков за вчера +3
Динамика подписчиков за неделю +18

Оглавление

Практическая работа с Visual Studio.Net
Практическая работа с Microsoft Office
Web-технология
Создание реальных проектов
Вопросы и ответы

Строительные блоки. В программе важно не ошибаться. Один из вариантов решения данной задачи использовать строительные блоки.

Оффлайн форум
Поскольку рубрика "Вопросы и ответы" бездействует, я решил попытаться организовать в ней общение на вроде форума. Думаю, это может заинтересовать пользователей dial-up, и хотя в наше время безлимитного скоростного доступа таких остаётся всё меньше и меньше, тем не менее, попробовать стоит.

Практическая работа с Версия
Visual Studio.Net 2003

Общие впечатления.

Как я не раз уже говорил, в мире существует огромное количество информации по любой теме, какую бы ни пожелали. Та же Visual Studio.NET, будь то 2003 или 2005 версия не являются исключениями. Самый полный ресурс это конечно MSDN, хотя книги тоже могут использоваться с немалым эффектом. Главное преимущество последних, на мой взгляд, заключается в русификации. Естественно если вам по душе иностранный вариант издания, то с этим не будет больших проблем, но зачем создавать себе сложности?

Книги бывают в разных форматах - бумажном и электронном. Хотя с точки зрения пользователя разница лишь в том, что за бумажную, как правило, приходится платить, а электронную можно скачать с любого книжного сайта абсолютно бесплатно. К примеру, то же pc-book да и вообще сотни других. Плюс естественно для прочтения электронного издания нужен компьютер. Выходит, что в нашем современном обществе нет информационного голода, особенно если у вас есть Интернет. Казалось бы, что проще, набери побольше информации, и вот новый программист готов встать в строй. Но всё не так просто:

Во-первых, полученные данные необходимо изучить и обдумать. Это займёт какой-то срок, и за данное время вы не сделаете ничего полезного. А во-вторых, нет гарантии, что после постижения основ нужной вам системы удастся сделать что-нибудь путное. Как вариант допустимо сразу садится за изготовления проекта, даже более того, за кодирование. А если нужен будет проект программы, то его всегда можно составить использую технику обратного проектирования, то есть составление проекта программы по коду.

Но вот вопрос, а можно ли составить хорошую программу, изначально не зная всех возможностей Visual Studio.NET? С другой стороны с течением времени потребности в функциональности программного обеспечения сильно меняются. Даже то, что считалось приемлемым год назад, сегодня многие посчитают устаревшим и неэффективным. Как говорится, к хорошему быстро привыкаешь. Не даром же программные продукты постоянно обновляются. Не исключением стала и Visual Studio.NET. То, что произошло с языками программирования в 2005 версии, уже совсем не то, что было в 2003. Складывается ощущение, что всё идёт к сиплюсплюизации, хотя лично меня это радует. Тем более что тот же Visual Basic только в .NET версии обрёл достаточную объектно-ориентированную направленность, которая ранее была выражена крайне слабо.

От всего этого остаётся впечатление высокой изменчивости программных сред. Хотя те, кто делал ставку на C++, могут спать спокойно. Библиотеки меняются, стандарт остаётся, разве что со специфическими добавлениями для конкретной системы программирования. Как-то я уже говорил о программке, входящую в состав Visual Studio.NET - ildasm.exe. Этот дизассемблер будет работать только для файлов сделанных по технологии управляемого кода, что и не удивительно, учитывая приставку в названии - IL. Кстати, загляните в папку сборок введя в адресной строке проводника %systemroot%/assembly. Можете так же скопировать оттуда файлы библиотек, воспользовавшись Total Commander или другими подобными проводниками (см. папку GAC).

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

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

перейти к оглавлению

Практическая работа с Версия
Microsoft Office 2003

Строительные блоки.

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

Когда компьютерный пользователь работает с программой, ему не столь важно как она делает те или иные операции. Однако для программиста это наиболее значимый фактор. Естественно в процессе создания программы однотипные действия могут повторяться многократно. Существуют различные способы предотвращения этого. К примеру, сократить код путём реструктуризации или если вы достаточно опытны, то можно сразу составлять его оптимально.

А вот отсюда подробнее. Что же такое оптимальный код и почему его составляют, а не пишут? Помимо идеального (совершенного) кода, который в принципе возможен, но в целом я ещё с таким не встречался, существуют другой вид, прозванный оптимальным. Для лучшего понимания приведу два определения из "Современного толкового словаря".

ОПТИМАЛЬНЫЙ (от лат . optimus - наилучший), наилучший, наиболее соответствующий определенным условиям и задачам.

ОПТИМИЗАЦИЯ ,..1) процесс выбора наилучшего варианта из возможных...2) Процесс приведения системы в наилучшее (оптимальное) состояние.

Вот так всё просто объясняется. Оптимальный код, значит наилучший в данных обстоятельствах. С пониманием термина оптимизации программы, учитывая данную мною расшифровку, тоже не должно возникнуть проблем. Но кто определяет, является ли код наилучшим или нет? С одной стороны это делаете вы, а с другой всё зависит от системы. То есть вам придётся балансировать между вашими потребностями и тем инструментом программирования, которым вы пользуетесь.

Настало время подумать над тем, чем же является код. Без сомнения это строка - набор символов в определённом формате (размер, кодировка и так далее). Однако для исполнителя коим является компьютер, это не столько строка, сколько рекомендации к действию. Выходит, что любой код - лишь способ передать вычислительной машине в удобном для людей виде некий набор операций. Отсюда вывод: вы можете воспринимать код как строку и думать строками, а можете вообще не зацикливаться на данном формате представления программы. Дело в том, что у меня возникает сильное подозрение, что отображение программы в виде строк является пережитком прошлого, когда компьютеры были настолько маломощными, что современные калькуляторы могли бы сойти по сравнению с ними за суперкомпьютеры. Но поскольку с тех времён изменилось многое, но не главный принцип программирования - набор строк, то давайте рассмотрим оба варианта мышления.

I. Оперирование строками.

Первое - это оперирования строками. В данном случае программист знает, что хочет получить, но когда доходит до дела, начинает усиленно стучать пальцами по клавиатуре. Значит, знания им берутся сразу из долговременной памяти. Следовательно, ему необходимо помнить синтаксические конструкции. Чтобы у вас не возникло недопонимание по поводу некоторых понятий, сразу приведу их расшифровку.

СИНТАКСИС (от греч . syntaxis - построение, порядок),1) способы соединения слов (и их форм) в словосочетания и предложения, соединение предложений в сложные предложения; типы, значения и т. п. словосочетаний и предложений.2) Раздел грамматики, изучающий эту часть языковой системы.

УНИВЕРСАЛЬНАЯ ГРАММАТИКА , подход к изучению языка, основанный на предположении, что структура языков мира опирается на общие принципы (см. Универсалии языковые, Пор-Рояля грамматика).

УНИВЕРСАЛЬНЫЙ (от лат . universalis - общий, всеобщий),..1) разносторонний; всеобъемлющий (напр., универсальная энциклопедия)...2) Пригодный для многих целей, выполняющий разнообразные функции (напр., универсальный станок).

УНИВЕРСАЛИИ (от лат . universalis - общий), общие понятия. Онтологический статус универсалии - одна из центральных проблем средневековой философии (спор об универсалии 10-14 вв.): существуют ли универсалии "до вещей", как их вечные идеальные прообразы (платонизм, крайний реализм), "в вещах" (аристотелизм, умеренный реализм), "после вещей" в человеческом мышлении (номинализм, концептуализм).

УНИВЕРСАЛИИ ЯЗЫКОВЫЕ , явления и свойства, характерные для всех или большинства языков мира (напр., каждый язык имеет личные местоимения 1-3-го лица).

ГРАММАТИКА (греч . grammatike, от gramma - буква, написание), 1) строй языка, т. е. система языковых форм, способов словопроизводства, синтаксических конструкций, образующих основу для языкового общения. 2) Раздел языкознания, изучающий строй языка, его законы. Грамматика объединяет словообразование, морфологию и синтаксис.

ГРАММАТИЧЕСКАЯ КАТЕГОРИЯ , система противопоставленных друг другу рядов грамматических форм с однородными значениями. Напр., грамматическая категория числа в русском языке представлена системой двух рядов форм, выражающих грамматические значения единственного и множественного числа. Грамматические категории подразделяются на морфологические (вид, залог, время, число и др.) и синтаксические.

ГРАММАТИЧЕСКАЯ ФОРМА , языковые средства, служащие для выражения грамматического значения. Грамматическая форма представляет собой единство данного грамматического содержания с данным грамматическим выражением (напр., форма 1-го лица единственного числа настоящего времени глагола).

ГРАММАТОЛОГИЯ (от греч . gramma, род. п. grammatos - буква, написание и ...логия), наука о письменностях.

МОРФОЛОГИЧЕСКАЯ КЛАССИФИКАЦИЯ ЯЗЫКОВ , классификация языков по особенностям их морфологии (главным образом структуры морфемы и слова). Первоначально морфологическая классификация языков лежала в основе типологической классификации языков (с использованием данных и др. уровней языка).

МОРФОЛОГИЯ (от греч . morphe - форма и ...логия), в биологии - наука о форме и строении организмов. Выделяют морфологию животных и человека, к которой относят анатомию, эмбриологию, гистологию и цитологию, и морфологию растений, которая изучает строение и формообразование, главным образом на организменном уровне, а также на эволюционно-видовом (в связи с эволюцией формы). Морфология человека - раздел антропологии, изучающий закономерности изменчивости организма человека (возрастные, половые, территориальные, профессиональные), а также вариации отдельных его частей. Данные морфологии человека используются в учении об антропогенезе, расоведении и прикладной антропологии.

МОРФОЛОГИЯ , в языкознании - 1) часть языковой системы, объединяющая слова как носители грамматических значений, их грамматические классы, законы их существования и формообразования. 2) Раздел грамматики, изучающий эту часть языковой системы.

От себя замечу, что логия лучше всего воспринимать как осмысление (понимание), то есть морфология будет переводиться на русский язык как осмысление форм и так далее. Мною дано немного больше понятий, чем будет использовано, но так легче понять смысл моих рассуждений. Начнём разбор с синтаксиса. Синтаксис - порядок построения. В современных языках программирования, да и не только в них, но и в очень старых, широкое применение получили синтаксические конструкции. А если говорить проще - конструкции строящиеся в определённом порядке. Строительными кирпичиками в данном случае выступают строки (наборы символов) и в итоге из них получаются другие, более объёмные строки. С точки зрения синтаксиса (порядка построения) не важно, что вы написали в коде, если были соблюдены правила, то формально программа может считаться правильной. Она может и не работать, но по другим причинам.

Следующим пунктом идёт грамматика. Как видно из определений, синтаксис является её частью. Значит, если вы хотите просмотреть правила составления программы, то в первую очередь заглянете в грамматические правила языка. То есть в правила написания языка, а уж там увидите синтаксические конструкции - конструкции порядка построения. Если говорить о Visual Studio.NET, то в ней при компиляции происходит преобразование из выбранного языка в Microsoft intermediate language (MSIL) и только потом в машинный код (имеется ввиду управляемый код). Что подводит нас к понятию языковые универсалии. В Microsoft Office они несколько иного порядка, однако следует отметить, что универсалии на то и универсалии, чтобы быть универсальными (всеобщими).

Вот скажите, не посещала ли вас когда-нибудь мысль, о том, что если объёдинить русский язык и язык программирования, то можно легко добиться потрясающих результатов? Вообще то мысль не нова, а в пример приведена мною только потому, что получила самое широкое распространение в массах. В ней используется принцип языковых универсалий, а как приманка слово легко. Однако, по моему мнению, данный путь программирования является тупиковым. Не буду объяснять почему. Если вам интересно, попробуйте реализовать идею на практике и сами убедитесь, что это лишняя трата времени. Лучше я расскажу об оперировании понятиями.

II. Оперирование понятиями.

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

АБСТРАКЦИЯ (от лат . abstractio - отвлечение) (абстрактное), форма познания, основанная на мысленном выделении существенных свойств и связей предмета и отвлечении от других, частных его свойств и связей; общее понятие - как результат процесса абстрагирования; синоним "мысленного", "понятийного". Основные типы абстракции: изолирующая абстракция (вычленяющая исследуемое явление из некоторой целостности), обобщающая абстракция (дающая обобщенную картину явления), идеализация (замещение реального эмпирического явления идеализированной схемой). Понятие "абстрактное" противопоставляется конкретному.

Как видно из данного определения, отвлечение от конкретного объекта является вспомогательным способом мышления. Вот ещё два определения, которые, безусловно, пригодятся нам в дальнейшем при рассмотрении сути сегодняшней темы.

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

ВОСХОЖДЕНИЕ ОТ АБСТРАКТНОГО К КОНКРЕТНОМУ , метод исследования объекта, состоящий в переходе от абстрактного и одностороннего знания о нем, к все более конкретному его воспроизведению в теоретическом мышлении - как системы научных определений (см. Абстракция, Конкретное); один из основных принципов диалектики.

Вообще всё программирование сплошная абстракция. Некоторые наивно думают, что если пишут на ассемблере, то не используют отвлечённых понятий, однако на самом деле это далеко не так. Просто уровень абстракций в данном случае меньше, хотя не стоит полагать, что полученная в данном случае система машинного кода будет являться оптимальной. В любом случае, к чему бы вы не обращались, к конкретному или абстрактному, всё это является понятиями. Потому и рекомендуют перед началом кодирования программы написать дизайн-документ концепции (понятия), а затем и функциональное описание, то есть алгоритм работы с точки зрения пользователя без опоры на конкретную систему программирования. Эта тема достаточно обширна и о ней я расскажу в следующий раз, а пока в рубрике Создание реальных проектов вы можете ознакомиться с шаблоном дизайн-документа сформированным для создания игры.

перейти к оглавлению

HTML, ASP, VBScript Версия
Web-технология 5.0


Урок 3. Создание гостевой книги с использованием базы данных

Для выполнения этого урока необходимо установить Microsoft Access. Также следует иметь в виду, что этот урок можно будет выполнить в 64-разрядной среде только после того, как будет разработан Microsoft Access для 64-разрядной архитектуры.

На третьем уроке разрабатывается гостевая книга. Гостевая книга позволяет посетителям веб-узла оставлять сведения о себе, например имена, адреса электронной почты и комментарии. На этом уроке после создания базы данных Access выполняются следующие примеры.

  • Пример 1 Создание ASP-страницы для подключения к базе данных с использованием объекта ADO Connection.
  • Пример 2 Создание ASP-страницы для подключения к базе данных с совместным использованием объектов Connection и Command.
  • Пример 3 Создание ASP-страницы для вывода в окне обозревателя сведений из гостевой книги, находящихся в базе данных.

Создание базы данных Access

Создайте базу данных Access с именем GuestBook.mdb и сохраните ее в каталоге x:\Inetpub\Wwwroot\Tutorial. Создайте в этой базе данных таблицу с именем GuestBook. Воспользуйтесь режимом Access Создание таблицы в режиме конструктора, чтобы добавить следующие поля и свойства.

Имя поля Тип данных Общие свойства поля
FID Счетчик Размер поля=Длинное целое,
Новые значения=Последовательные,
Индекс=Да(Совпадения не допускаются)
FTB1 Текст Размер поля=255,
Обязательное поле=Нет,
Пустые строки=Да,
Индекс=Нет
FTB2 Текст Размер поля=255,
Обязательное поле=Нет,
Пустые строки=Да,
Индекс=Нет
FTB3 Текст Размер поля=255,
Обязательное поле=Нет,
Пустые строки=Да,
Индекс=Нет
FTB4 Текст Размер поля=255,
Обязательное поле=Нет,
Пустые строки=Да,
Индекс=Нет
FMB1 Memo Обязательное поле=Нет,
Пустые строки=Да

Создание ASP-страницы для добавления данных в базу данных Access

Получив базу данных Access, можно создать ASP-страницу для подключения к этой базе данных и чтения входящих данных с использованием объектов Microsoft ActiveXR Data Objects (ADO). ADO представляет собой семейство объектов с методами и свойствами, позволяющими работать с данными, содержащимися в базах данных практически любого типа. (Если планируется частое использование баз данных, рекомендуется приобрести руководство программиста по ADO. В следующих примерах демонстрируются только наиболее общие возможности ADO, которых достаточно для открытия, чтения и записи базы данных.)

Два следующих примера дают одинаковые результаты, но в первом из них используется только объект Connection, тогда как во втором часть работы выполняется намного более мощным объектом Command. Сравните эти два примера, чтобы понять, как эти объекты связываются между собой. После ознакомления с этими объектами воспользуйтесь руководством программиста по ADO и поэкспериментируйте с другими методами и свойствами.

Чтобы получить пример сообщения об ошибке ADO на ASP-странице, попробуйте просмотреть эту страницу после переименования базы данных, после ошибочного ввода адреса строку подключения или после ограничения доступа к базе данных только на чтение.


Пример 1. Использование только ADO-объекта Connection

Скопируйте следующий текст в текстовый редактор и сохраните его в файле GuestBook1.asp в каталоге x:\Inetpub\Wwwroot\Tutorial. Для просмотра примера введите адрес http://localhost/Tutorial/GuestBook1.asp в адресную строку обозревателя.

<%@ Language=VBScript %>

<html>
<head>
<title>Гостевая книга с использованием только объекта Connection</title>
</head>
<body>
<font face="MS Gothic">
<h2>Гостевая книга с использованием только объекта Connection</h2>

<%
If Not Request.QueryString("Message") = "True" Then
'Данные еще не введены, следует вывести форму.
%>
<p>
<FORM NAME="GuestBook1" METHOD="GET" ACTION="guestbook1.asp">
<table>
<tr>
<td><font face="MS Gothic">От:</td><td><INPUT TYPE="TEXT" NAME="From"></td>
</tr><tr>
<td><font face="MS Gothic">Адрес электронной почты:</td><td><INPUT TYPE="TEXT" NAME="EmailAdd"></td>
</tr><tr>
<td><font face="MS Gothic">Копия:</td><td><INPUT TYPE="TEXT" NAME="CC"></td>
</tr><tr>
<td><font face="MS Gothic">Тема:</td><td><INPUT TYPE="TEXT" NAME="Subject"></td>
</tr>
</table>
Сообщение:<br><TEXTAREA NAME="Memo" ROWS=6 COLS=70></TEXTAREA>
</p>

<p>
<INPUT TYPE="HIDDEN" NAME="Message" VALUE="True">
<INPUT TYPE="SUBMIT" VALUE="Отправить данные">
</FORM>
</p>
<%
Else
'Выше кнопка HIDDEN устанавливает значение переменной Message в True.
'Данные введены в форму.

'Получение данных из формы. Они будут помещены в базу данных.
'Access не принимает некоторые знаки (например апострофы) поэтому закодируем
' данные с помощью метода HTMLEncode ASP-объекта Server.
dim strTB1, strTB2, strTB3, strTB4, strMB1, strCommand
strTB1 = Server.HTMLEncode(Request.QueryString("From"))
strTB2 = Server.HTMLEncode(Request.QueryString("EMailAdd"))
strTB3 = Server.HTMLEncode(Request.QueryString("CC"))
strTB4 = Server.HTMLEncode(Request.QueryString("Subject"))
strMB1 = Server.HTMLEncode(Request.QueryString("Memo"))

'Строка подключения. ADO использует ее для подключения к базе данных через драйвер Access.
'В строке указывается имя поставщика драйвера Access и имя базы данных Access.
'Строки подключения могут немного отличаться в зависимости от поставщика,
' но все они используют точку с запятой для разделения переменных.
'Если эта строка вызывает ошибку, выполните в реестре поиск по образцу
' Microsoft.JET и убедитесь, что используется версия 4.0.
strProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\InetPub\Wwwroot\Tutorial\guestbook.mdb;"

'Создание экземпляра ADO-объекта Connection.
'ADO предоставляет также 4 других объекта с разными методами и
'свойствами, позволяющими выполнять разнообразные действия с базами данных.
Set objConn = server.createobject("ADODB.Connection")

'Метод Open объекта Connection использует строку подключения для
' подключения к базе данных.
objConn.Open strProvider

'Определение запроса.
'Существуют различные типы запросов, позволяющих добавлять, удалять и получать данные.
'Этот запрос будет добавлять данные в базу данных с использованием ключевых слов INSERT INTO.
'Здесь GuestBook- это имя таблицы.
'Здесь для ограничения строк нужно использовать апострофы.
strCommand = "INSERT INTO GuestBook (FTB1,FTB2,FTB3,FTB4,FMB1) VALUES ('"
strCommand = strCommand & strTB1 & "','" & strTB2 & "','" & strTB3 & "','" & strTB4 & "','" & strMB1
strCommand = strCommand & "')"

'Выполнить запрос для добавления данных в базу данных.
objConn.Execute strCommand

Response.Write("Спасибо! Ваши данные добавлены.")

End If
%>

</font>
</body>
</html>

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

Гостевая книга с использованием только объекта Connection

От:
Адрес электронной почты:
Копия:
Тема:
Сообщение:


Пример 2: Совместное использование объектов Connection и Command

Скопируйте следующий текст в текстовый редактор и сохраните его в файле GuestBook2.asp в каталоге x:\Inetpub\Wwwroot\Tutorial. Для просмотра примера введите адрес http://localhost/Tutorial/GuestBook2.asp в адресную строку обозревателя.

<%@ Language=VBScript %>

<html>
<head>
<title>Гостевая книга с использованием объектов Connection и Command</title>
</head>
<body>
<font face="MS Gothic">
<h2>Гостевая книга с использованием объектов Connection и Command</h2>

<%
If Not Request.QueryString("Message") = "True" Then
'Данные еще не введены, следует вывести форму.
%>
<p>
<FORM NAME="GuestBook2" METHOD="GET" ACTION="guestbook2.asp">
<table>
<tr>
<td><font face="MS Gothic">От:</td><td><INPUT TYPE="TEXT" NAME="From"></td>
</tr><tr>
<td><font face="MS Gothic">Адрес электронной почты:</td><td><INPUT TYPE="TEXT" NAME="EmailAdd"></td>
</tr><tr>
<td><font face="MS Gothic">Копия:</td><td><INPUT TYPE="TEXT" NAME="CC"></td>
</tr><tr>
<td><font face="MS Gothic">Тема:</td><td><INPUT TYPE="TEXT" NAME="Subject"></td>
</tr>
</table>
Сообщение:<br><TEXTAREA NAME="Memo" ROWS=6 COLS=70></TEXTAREA>
</p>

<p>
<INPUT TYPE="HIDDEN" NAME="Message" VALUE="True">
<INPUT TYPE="SUBMIT" VALUE="Отправить данные">
</FORM>
</p>
<%
Else
'Выше кнопка HIDDEN устанавливает значение переменной Message в True.
'Данные введены в форму.

'Получение данных из формы. Они будут помещены в базу данных.
'Access не принимает некоторые знаки (например апострофы) поэтому закодируем
' данные с помощью метода HTMLEncode ASP-объекта Server.
dim strTB1, strTB2, strTB3, strTB4, strMB1
strTB1 = Server.HTMLEncode(Request.QueryString("From"))
strTB2 = Server.HTMLEncode(Request.QueryString("EMailAdd"))
strTB3 = Server.HTMLEncode(Request.QueryString("CC"))
strTB4 = Server.HTMLEncode(Request.QueryString("Subject"))
strMB1 = Server.HTMLEncode(Request.QueryString("Memo"))

'Тип данных Memo в базе данных Access позволяет установить размер поля.
If strMB1 = "" Then
iLenMB1 = 255
Else
iLenMB1 = Len(strMB1)
End If

'Строка подключения. ADO использует ее для подключения к базе данных через драйвер Access.
'В строке указывается имя поставщика драйвера Access и имя базы данных Access.
'Строки подключения могут немного отличаться в зависимости от поставщика,
' но все они используют точку с запятой для разделения переменных.
'Если эта строка вызывает ошибку, выполните в реестре поиск по образцу
' Microsoft.JET и убедитесь, что используется версия 4.0.
strProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\InetPub\Wwwroot\Tutorial\guestbook.mdb;"

'Создание экземпляра ADO-объекта Connection.
'ADO предоставляет также 4 других объекта с разными методами и
'свойствами, позволяющими выполнять разнообразные действия с базами данных.
Set objConn = server.createobject("ADODB.Connection")

'Метод Open объекта Connection использует строку подключения для
' подключения к базе данных.
objConn.Open strProvider

'Создание экземпляра ADO-объекта Command.
'Хотя большую часть работы можно выполнить с помощью объекта Connection,
' объект Command предоставляет дополнительные возможности.
Set cm = Server.CreateObject("ADODB.Command")

'Свойство ActiveConnection позволяет использовать существующее подключение.
'Связывание объекта Connection с объектом Command.
cm.ActiveConnection = objConn

'Определение запроса.
'Существуют различные типы запросов, позволяющих добавлять, удалять и получать данные.
'Этот запрос будет добавлять данные в базу данных с использованием ключевых слов INSERT INTO.
'При использовании объекта Command необходимо поместить запрос в
' свойство CommandText.
'Здесь GuestBook- это имя таблицы.
cm.CommandText = "INSERT INTO GuestBook (FTB1,FTB2,FTB3,FTB4,FMB1) VALUES (?,?,?,?,?)"

'Здесь видны преимущества объекта Command.
'Помещая в предыдущую строку знаки вопроса, можно использовать семейство Parameters,
' чтобы впоследствии эти знаки были заменены средствами ADO на конкретные параметры, определенные ниже.
'cm.CreateParameter выполняет форматирование параметра.
'cm.Parameters.Append добавляет параметр к семейству.
'Параметры должны следовать в таком порядке: (TB1,TB2,TB3,TB4,MB1).

Set objparam = cm.CreateParameter(, 200, , 255, strTB1)
cm.Parameters.Append objparam

Set objparam = cm.CreateParameter(, 200, , 255, strTB2)
cm.Parameters.Append objparam

Set objparam = cm.CreateParameter(, 200, , 255, strTB3)
cm.Parameters.Append objparam

Set objparam = cm.CreateParameter(, 200, , 255, strTB4)
cm.Parameters.Append objparam

Set objparam = cm.CreateParameter(, 201, , iLenMB1, strMB1)
cm.Parameters.Append objparam

'Выполнить запрос для добавления данных в базу данных
'Здесь вызывается метод Execute объекта Command, а не
' метод Execute объекта Connection.
cm.Execute

Response.Write("Спасибо! Ваши данные добавлены.")

End If
%>

</font>
</body>
</html>

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

Гостевая книга с использованием только объекта Connection

От:
Адрес электронной почты:
Копия:
Тема:
Сообщение:


Пример 3. Отображение базы данных в обозревателе

После занесения сведений в базу данных можно использовать веб-страницу, содержащую другой сценарий, для просмотра и изменения данных. За исключением способа определения запроса, изменений в ADO-программе немного.
В последних двух примерах был использован запрос INSERT INTO для добавления записей в базу данных. В этом примере используется запрос SELECT для выбора записей из базы данных и их вывода в обозревателе. Также используется запрос DELETE для удаления записей из базы данных. Единственным запросом, который не используется в этих примерах, является запрос UPDATE, чей синтаксис похож на синтаксис запроса INSERT INTO. Запрос UPDATE позволяет изменять поля в базе данных.

Скопируйте следующий текст в текстовый редактор и сохраните его в файле ViewGB.asp в каталоге x:\Inetpub\Wwwroot\Tutorial. Для просмотра примера введите адрес http://localhost/Tutorial/ViewGB.asp в адресную строку обозревателя.

<%@ Language=VBScript %>

<html>
<head>
<title>Просмотр гостевой книги</title>
</head>
<body>
<font face="MS Gothic">
<h2>Просмотр гостевой книги</h2>

<%
'Анализ наличия введенных пользователем данных. Любое поле может быть пустым.
'Сохранение введенных данных в форме.
dim strTB1, strTB2, strTB3, strTB4, strMB1, strSort, iDelete
strTB1 = Server.HTMLEncode(Request.QueryString("From"))
strTB2 = Server.HTMLEncode(Request.QueryString("EMailAdd"))
strTB3 = Server.HTMLEncode(Request.QueryString("CC"))
strTB4 = Server.HTMLEncode(Request.QueryString("Subject"))
strMB1 = Server.HTMLEncode(Request.QueryString("Memo"))
strSort = Server.HTMLEncode(Request.QueryString("sort"))
iDelete = CInt(Request.QueryString("Delete"))

'Эта переменная используется, но может быть не установлена...
If "" = strSort Then
strSort = "FID"
End If
%>

<p>
<FORM NAME="ViewGuestBook" METHOD="GET" ACTION="viewgb.asp">
<table>
<tr>
<td><font face="MS Gothic">Сортировать по столбцу:</td>
<td><SELECT NAME="sort" SIZE="1">
<OPTION VALUE="FID">Кодовый номер</OPTION>
<OPTION VALUE="FTB1">Имя</OPTION>
<OPTION VALUE="FTB2">Адрес электронной почты</OPTION>
<OPTION VALUE="FTB3">Копия</OPTION>
<OPTION VALUE="FTB4">Тема</OPTION>
<OPTION VALUE="FMB1">Сообщение</OPTION>
</SELECT></td>
</tr><tr>
<td><font face="MS Gothic">Имя содержит:</td>
<td><INPUT TYPE="TEXT" NAME="From" VALUE="<%=strTB1%>"></td>
</tr><tr>
<td><font face="MS Gothic">Адрес эл. почты содержит:</td>
<td><INPUT TYPE="TEXT" NAME="EmailAdd" VALUE="<%=strTB2%>"></td>
</tr><tr>
<td><font face="MS Gothic">Копия содержит:</td>
<td><INPUT TYPE="TEXT" NAME="CC" VALUE="<%=strTB3%>"></td>
</tr><tr>
<td><font face="MS Gothic">Тема содержит:</td>
<td><INPUT TYPE="TEXT" NAME="Subject" VALUE="<%=strTB4%>"></td>
</tr><tr>
<td><font face="MS Gothic">Сообщение содержит:</td>
<td><INPUT TYPE="TEXT" NAME="Memo" VALUE="<%=strMB1%>"></td>
</tr>
</table>
<INPUT TYPE="SUBMIT" VALUE="Отправить параметры поиска">
</p>

<%
'Создание строки подключения, создание экземпляра объекта Connection
' и подключение к базе данных.
strProvider = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\InetPub\Wwwroot\Tutorial\guestbook.mdb;"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strProvider

'Определение запроса.
If iDelete = 0 Then
'Если переменная Delete не установлена, используется запрос SELECT.
'* обозначает все поля. ASC обозначает ASCII-текст. %- подстановочный знак.
strQuery = "SELECT * FROM GuestBook"
strQuery = strQuery & " WHERE FTB1 LIKE '%" & strTB1 & "%'"
strQuery = strQuery & " AND FTB2 LIKE '%" & strTB2 & "%'"
strQuery = strQuery & " AND FTB3 LIKE '%" & strTB3 & "%'"
strQuery = strQuery & " AND FTB4 LIKE '%" & strTB4 & "%'"
strQuery = strQuery & " AND FMB1 LIKE '%" & strMB1 & "%'"
strQuery = strQuery & " ORDER BY " & StrSort & " ASC"
Else
'Требуется удалить запись.
strQuery = "DELETE FROM GuestBook WHERE FID=" & iDelete
End If

'При выполнении запроса SELECT создается ADO-объект Recordset.
'Он содержит данные, полученные из базы данных.
Set objRS = objConn.Execute(strQuery)

'Сейчас данные находятся в объекте Recordset,
' надо вывести их в таблице.
%>

<p>
<FORM NAME="EditGuestBook" METHOD="GET" ACTION="viewgb.asp">
<table border=1 cellpadding=4 >
<%
On Error Resume Next

If objRS.EOF Then
If iDelete = 0 Then
Response.Write "<tr><td><font face=&quot;MS Gothic&quot;>В базе данных нет записей.</font></td></tr>"
Else
Response.Write "<tr><td><font face=&quot;MS Gothic&quot;>Запись " & iDelete & " удалена.</font></td></tr>"
End If
Else

'Вывод имен полей с использованием некоторых методов и свойств
' объекта Recordset.
Response.Write "<tr>"

'Для каждого столбца в текущей строке...
For i = 1 to (objRS.Fields.Count - 1)
'вывод имени поля.
Response.Write "<td><font face=&quot;MS Gothic&quot;><B>" & objRS(i).Name & "</B></font></td>"
Next

Response.Write "<td><font face=&quot;MS Gothic&quot;><B>Удаление</B></font></td>"
Response.Write "</tr>"

'Вывод данных из полей с использованием некоторых других методов и свойств
' объекта Recordset. Имея пример их использования,
' вы можете поэкспериментировать с другими методами и свойствами.

'Пока в наборе присутствуют записи...
While Not objRS.EOF

Response.Write "<tr>"

'Для каждого столбца в текущей строке...
For i = 1 to (objRS.Fields.Count - 1)
'вывод данных из поля.
Response.Write "<td><font face=&quot;MS Gothic&quot;>" & objRS(i) & "</font></td>"
Next

'Добавление кнопки, которая будет передавать кодовый номер для удаления записи.
%><td><INPUT TYPE="SUBMIT" NAME="Delete" VALUE="<%=objRS(0)%>"></td><%

Response.Write "</tr>"

'Переход к следующей строке.
objRS.MoveNext

Wend

End If 'objRS.EOF
%>
</table>
</FORM>

<%
'Закрытие подключения.
objConn.Close
%>

</font>
</body>
</html>

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

Просмотр гостевой книги

Сортировать по столбцу:
Имя содержит:
Адрес эл. почты содержит:
Копия содержит:
Тема содержит:
Сообщение содержит:

В базе данных нет записей.

перейти к оглавлению

От начала и до конца Ставим
Создание реальных проектов опыты
Логотип компании разработчика
Логотип игры

Рабочее название

Дизайн-документ


 

Содержание:

1.         Введение. 4

2.         Концепция. 5

2.1.      Введение. 5

2.2.      Жанр и аудитория. 5

2.3.      Основные особенности игры. 5

2.4.      Описание игры. 5

2.5.      Предпосылки создания. 5

2.6.      Платформа. 5

3.         Функциональная спецификация. 7

3.1.      Принципы игры. 7

3.1.1.        Суть игрового процесса. 7

3.1.2.        Ход игры и сюжет 7

3.2.      Физическая модель 7

3.3.      Персонаж игрока. 7

3.4.      Элементы игры. 7

3.5.      <Искусственный интеллект>. 8

3.6.      Многопользовательский режим. 8

3.7.      Интерфейс пользователя. 8

3.7.1.        Блок-схема. 8

3.7.2.        Функциональное описание и управление. 8

3.7.3.        Объекты интерфейса пользователя. 8

3.8.      Графика и видео. 8

3.8.1.        Общее описание. 9

3.8.2.        Двумерная графика и анимация. 9

3.8.3.        Трехмерная графика и анимация. 9

3.8.4.        Анимационные вставки. 9

3.9.      Звуки и музыка. 9

3.9.1.        Общее описание. 9

3.9.2.        Звук и звуковые эффекты. 9

3.9.3.        Музыка. 10

3.10.        Описание уровней. 10

3.10.1.      Общее описание дизайна уровней. 10

3.10.2.      Диаграмма взаимного расположения уровней. 10

3.10.3.      График введения новых объектов. 10

4.         Контакты. 11

 

 

1.   Введение

Приведите в этом разделе информацию, необходимую перед прочтением данного документа:

         Комментарии по организации содержимого документа

         Ссылки на и используемые материалы, копирайты и прочее

         История изменений документа

         Список авторов

         Условные обозначения, сокращения и другие соглашения

         Любые сведения, которые необходимы для прочтения документа

2.   Концепция

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

2.1.           &n bsp;      Введение

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

2.2.           &n bsp;      Жанр и аудитория

Сведения о жанре и целевой аудитории:

         Жанр

         Возрастная группа

         Другие сведения о позиционировании игры

2.3.           &n bsp;      Основные особенности игры

Ключевые особенности (USP - unique selling points), отличающие игру от других игр в этом жанре и ориентированных на ту же целевую группу.

Укажите также примерный объем игры (в часах прохождения или других единицах).

2.4.           &n bsp;      Описание игры

Основной раздел концепции игры. Здесь необходимо донести саму суть игры с точки зрения игрока. У читателя должно сложиться представление о том, какого рода эта игра и как будут выглядеть действия игрока.

2.5.           &n bsp;      Предпосылки создания

Обоснование того, что эта игра имеет <право на жизнь>. Укажите кратко:

         общие тенденции рынка в этом направлении

         вопросы, связанные с лицензированием (если используется)

2.6.           &n bsp;      Платформа

Перечислите платформы, на которых планируется создание игры. Для РС-платформы укажите минимальные и рекомендуемые системные требования. Если игра требует дополнительного оборудования (например, модем), укажите это. 

Требования

Минимальные

Рекомендуемые

Операционная система

 

 

Процессор

 

 

ОЗУ

 

 

CD-ROM привод

 

 

Свободное место на HDD

 

 

Видео карта

 

 

Звуковая карта

 

 

Управление

 

 

3.   Функциональная спецификация

Функциональная спецификация - основное описание игры с точки зрения игрока. Именно здесь раскрываются все возможности игры. Избегайте технических деталей или выкладок с точки зрения разработчика. Содержание данного раздела рассматривается как предстоящий объем разработки - по умолчанию принимается, что все возможности, изложенные здесь, будут реализованы, а то, что не упоминается - нет.

Объем может очень существенно отличаться по жанрам, качеству проработке и т.д., но вместить изложение всех игровых вопросов в 20 страниц вряд ли реально.

3.1.           &n bsp;      Принципы игры

3.1.1.   Суть игрового процесса

Данный и следующий разделы, фактически, раскрывают <Описание игры> из Концепции. Перечислите здесь, в чем заключается игровой процесс - gameplay. Постарайтесь раскрыть то удовольствие (развлечение), которое обещает это игроку.

3.1.2.   Ход игры и сюжет

В этом разделе раскройте, как приведенные в предыдущем разделе игровые действия будут использоваться игроком. Опишите типичный <сеанс> игры.

Или здесь или в отдельном разделе приведите сюжет игры и (или) историю игровой вселенной.

3.2.           &n bsp;      Физическая модель

Описание физической модели игрового мира, ее законов и их отображения в игру. Наиболее важные моменты, которые должны быть

         Перемещения

         Боевые действия

         Общие, наиболее важные формулы

Если проект пропагандирует <продвинутую> физическую модель, укажите, какие явления будут смоделированы в игре (повреждения, столкновения и т.д.).

3.3.           &n bsp;      Персонаж игрока

Описание <аватара> игрока (или характерных персонажей) в игровом мире, если это уместно. Этот раздел должен быть наиболее развернут для RPG

3.4.           &n bsp;      Элементы игры

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

         Юниты и строения - RTS, TBS

         Предметы (items) - RTS, RPG

         Оружие - FPS, RPG

         NPC и персонажи

         Транспортные средства - simulators

         Карты

         другое

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

3.5.           &n bsp;      <Искусственный интеллект>

Опишите общие принципы, характеризующие AI в игре - какое поведение он затрагивает, каких персонажей.

С одной стороны, данный раздел не должен иметь технических деталей, а с другой - не выродиться в нечто подобное <наш AI - самый умный AI в мире>.

3.6.           &n bsp;      Многопользовательский режим

Описание многопользовательского режима:

         <Жанр> - deathmatch, ctf или другое

         Количество игроков

         Характеристика действий игрока и доступных игровых элементов, в отличие от описанных выше

         Общие сведения об организации многопользовательского режима (способ соединения, организация сеансов)

Если многопользовательский режим является основным для игры - четко объявите об этом в концепции и излагайте весь материал в предыдущих разделах с оглядкой на это. В этом случае данный раздел содержит несколько технический смысл, но с точки зрения игрока.

3.7.           &n bsp;      Интерфейс пользователя

3.7.1.   Блок-схема

Приведите схему навигации по меню игрового интерфейса и  оболочки игры. Здесь же можно привести и эскизы экранных форм.

3.7.2.   Функциональное описание и управление

Здесь, фактически, раскрывается функциональность интерфейса, каждого его экрана, а также воздействия на игру вызываемых действий.

3.7.3.   Объекты интерфейса пользователя

Данный раздел должен классифицировать <кирпичики>, из которых строится интерфейс пользователя. Если интерфейсные элементы стандартны (кнопка, check box) их достаточно просто перечислить. Если же элементы нестандартны, их поведение следует подробно описать.

3.8.           &n bsp;      Графика и видео

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

Целью данного раздела является не столько детально описать графические элементы, сколько сложить общее представление о характере и объеме графики.

3.8.1.   Общее описание

Здесь приведите общую информацию о графике игры:

         Техническое исполнение (3D, 2D, текстовая J)

         Стилистика, атмосфера и палитра

         Другие общие сведения

3.8.2.   Двумерная графика и анимация

В этом разделе приведите всю необходимую базовую информацию о 2D графике, которая должна быть разработана:

         Интерфейс

         Эффекты

Если игра не 3D, то здесь же описывается и основная игровая графика:

         Персонажи, строения и юниты.

         Игровой мир (ландшафты и статические объекты)

3.8.3.   Трехмерная графика и анимация

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

         3D модели

         текстуры

         анимации

3.8.4.   Анимационные вставки

Данный раздел должен дать информацию о составе и характере роликов игры, а именно:

         Перечень и их расположение в игре (начальный ролик, финальный ролик, ролики миссий и т.д.)

         Характер исполнения (на <движке> игры или отдельная анимация)

         Содержание - без детального сценария, только общий смысл, а также примерную продолжительность.

Если планируется использование видеосъемок, обязательно это укажите.

3.9.           &n bsp;      Звуки и музыка

3.9.1.   Общее описание

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

3.9.2.   Звук и звуковые эффекты

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

         Интерфейса

         Спецэффектов

         Игровых объектов

         Диалогов и анимационных вставок

3.9.3.   Музыка

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

         Главный интерфейс новой игры

         Состав музыкального сопровождения роликов

         Состав тем по уровням игры или их связь

         Особенные фрагменты - action, отрицательный финал или другое

3.10.           &n bsp; Описание уровней

3.10.1.           &n bsp;         Общее описание дизайна уровней

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

3.10.2.           &n bsp;         Диаграмма взаимного расположения уровней

В данном разделе имеет смысл описать примерное соотношение локаций игры. Для линейно-последовательной схемы уровней данный раздел превращается в простой их перечень. Если в игре имеются <особые места>, важные для сюжета или игрового процесса - здесь их необходимо упомянуть.

3.10.3.           &n bsp;         График введения новых объектов

Содержание этого раздела относится к балансу игры и здесь нужно раскрыть общее построение усложнения игры или ее развития и поддержания интереса.

 

 

 

4.   Контакты

Перечислите имена и фамилии лиц, с которыми можно связаться для ведения переговоров или уточнения отдельных вопросов. Не забудьте указать как телефоны, так и e-mail.

Контактные лица:

 

 

 

Телефоны:

 

 

 

E-mail:

 

 

 

Адрес:

 

 

 

Сайт:

 

перейти к оглавлению

comp.soft.prog.vsnetmsoffice-owner@subscribe.ru Форум
Вопросы и ответы

Я только что подписался!!! как мне получить предыдущие выпуски вашей рассылки, заказав их по почте?

Ó Для начала пошлите текстовое письмо по адресу subscribe@subscribe.ru. Ни в коем случае не пытайтесь отправить письмо в формате HTML, робот subscribe просто не станет его рассматривать. Заполните содержание следующей строкой ARCHIVE comp.soft.prog.vsnetmsoffice 2006. Тему можно игнорировать.

Ò Если вы всё сделали правильно, то через некоторое время вам придёт список предыдущих выпусков рассылки. Теперь повторите операцию с письмом, но используйте элементы из списка выпусков. Например, для получения первых трёх выпусков, можно применить следующее содержание текстового письма:
ARCHIVE comp.soft.prog.vsnetmsoffice 2006/02/10-00:11:08.html
ARCHIVE comp.soft.prog.vsnetmsoffice 2006/02/15-01:06:13.html
ARCHIVE comp.soft.prog.vsnetmsoffice 2006/02/21-23:15:18.html
QUIT

Отправьте письмо и ждите ваш заказ. Не пытайтесь получить почту, пока не пройдёт хотя бы несколько минут. Это наименьшее время, которое уйдёт на обработку заказа. А, заказав выпуски в 12 ночи по Московскому времени, придётся ждать их очень долго.

Подобным методом вы можете получать не только мою рассылку, но и любую другую, подставив её код в письмо вместо моей.


Создаём тему:


Visual Basic для новичков и профессионалов.
Рассылка имеет тип <Вопрос-ответ> и будет полезна тем, кто программирует на Basic'е в любых его проявлениях. К примеру, можно получить помощь от других читателей в решении проблемы на языках Visual Basic.NET, Visual Basic 6.3, VBScript и так далее. Издание обладает золотым статусом и более чем семью тысячами подписчиков.
3DS Max 7 - изучаем вместе!
Название говорит само за себя. Вместе с автором этой рассылки вы окунётесь в компьютерный мир иллюзий. Пройдите путь от новичка до мастера виртуальной реальности. Если по ходу обучения у вас возникнут какие-либо вопросы, вы всегда сможете обратиться за квалифицированной помощью.

перейти к оглавлению

Подписка
Практическая работа с Visual Studio.Net и Microsoft Office Подписаться web'ом Подписаться почтой
3DS Max 7 - изучаем вместе! Подписаться web'ом Подписаться почтой
Visual Basic для новичков и профессионалов Подписаться web'ом Подписаться почтой

Практическая работа с Visual Studio.Net и Microsoft Office
➲перейти к началу ➲перейти к концу

В избранное