Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Оптимизируем процесс программирования.


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

Статистика
Номер выпуска рассылки 11
Дата выпуска рассылки 2006-07-12
Время выпуска рассылки 02:35:16
Возраст рассылки в днях 158
Количество подписчиков 1231
Динамика подписчиков за вчера 0
Динамика подписчиков за неделю +2

Оглавление

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

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

Форум програмистов Vingrad
В Интернете огромное количество форумов для программистов. Сегодня я представлю на суд творение под названием Vingrad. Помимо самого форума вы можете просмотреть его FAQ или подписаться на рассылку почтой.

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

Общая теория баз данных.

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

Базы данных

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

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

В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.

Классификация баз данных

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

Локальная база данных

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

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

Paradox, dBase, FoxPro и Access - это локальные базы данных.

Удаленная база данных

Данные (файлы) удаленной базы данных находятся на удаленном компьютере. (Следует обратить внимание, что каталоги удаленного компьютера не могут рассматриваться как сетевые диски.)

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

Серверная часть программы, работающая на удаленном компьютере, принимает запросы, выполняет их и пересылает данные клиентской программе. Запросы представляют собой команды, представленные на языке SQL (Structured Query Language) - языке структурированных запросов.

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

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

Разработка программы работы с удаленной базы данных - сложная и трудоемкая задача. Ее решение предполагает наличие у разработчика глубоких знаний и большого опыта разработки программного обеспечения.

Структура базы данных

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

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

Компьютерная база данных представляет собой файл (или набор связанных файлов), содержащий информацию.

База данных состоит из записей. Каждая запись содержит информацию об одном экземпляре. Записи состоят из полей. Каждое поле содержит информацию об одной характеристике экземпляра.

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

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

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

Модель базы данных

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

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

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

Практика.

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

Visual Basic.NET
' Делаем доступными имена из областей видмости
Imports System.Data
Imports System.Data.OleDb

' Класс главной формы. Нужен для конструирования, работы и уничтожения объекта главной формы.
Public Class Form1
     Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

     Public Sub New()
           MyBase.New()

           'This call is required by the Windows Form Designer.
           InitializeComponent()

           'Add any initialization after the InitializeComponent() call

     End Sub

     'Form overrides dispose to clean up the component list.
     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
           If disposing Then
                 If Not (components Is Nothing) Then
                       components.Dispose()
                 End If
           End If
           MyBase.Dispose(disposing)
     End Sub

     'Required by the Windows Form Designer
     Private components As System.ComponentModel.IContainer

     'NOTE: The following procedure is required by the Windows Form Designer
     'It can be modified using the Windows Form Designer.   
     'Do not modify it using the code editor.
     Friend WithEvents ListView1 As System.Windows.Forms.ListView
     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
           Me.ListView1 = New System.Windows.Forms.ListView
           Me.SuspendLayout()
           '
           'ListView1
           '
           Me.ListView1.Dock = System.Windows.Forms.DockStyle.Fill
           Me.ListView1.Location = New System.Drawing.Point(0, 0)
           Me.ListView1.Name = "ListView1"
           Me.ListView1.Size = New System.Drawing.Size(416, 342)
           Me.ListView1.TabIndex = 0
           '
           'Form1
           '
           Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
           Me.ClientSize = New System.Drawing.Size(416, 342)
           Me.Controls.Add(Me.ListView1)
           Me.Name = "Form1"
           Me.Text = "База данных"
           Me.ResumeLayout(False)

     End Sub

#End Region

     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
           FillListView()
     End Sub

     ' Используем OleDB для заполнения списка
     Private Sub FillListView()
           Dim con As OleDbConnection = New OleDbConnection
           con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=database.mdb"
           con.Open()
           Dim cmd As OleDbCommand = New OleDbCommand
           cmd = con.CreateCommand()
           cmd.CommandText = "SELECT * FROM Клиенты"
           Dim reader As OleDbDataReader
           reader = cmd.ExecuteReader
           Dim objarray() As Object
           Dim n As Integer = reader.FieldCount
           ReDim objarray(n - 1)
           ListView1.View = View.Details
           Dim i As Integer
           For i = 0 To n - 1
                 ListView1.Columns.Add(reader.GetName(i), 100, HorizontalAlignment.Left)
           Next
           Dim lvitem As ListViewItem
           Do While reader.Read
                 reader.GetValues(objarray)
                 lvitem = ListView1.Items.Add(objarray.GetValue(0).ToString())
                 For i = 1 To n - 1
                       lvitem.SubItems.Add(reader.GetValue(i).ToString())
                 Next
           Loop
           con.Close()
     End Sub
End Class

Сформируйте проект Windows Application для языка Visual Basic.NET. Перейдите в окно кода формы и замените весь текст, который там существует выше написанным. Предлагаю его просто тупо скопировать из данной рассылки Ctrl+C и вставить в нужное место Ctrl+A, Shift+Insert. Создайте в папке bin базу данных Access c именем database.mdb. Воспользуйтесь программой Microsoft Access 2003 для добавления внутрь таблицы с именем Клиенты. Рекомендую применить следующий путь: Вставка⇒Таблица⇒Мастер таблиц. Теперь установите флажок радио кнопки Деловые в положение включить, и выберите элемент Клиенты из списка Образцы таблиц. Жмите на кнопки >>, Готово. Всё, таблица готова к использованию. Заполните её любыми данными на ваше усмотрение и закройте базу данных. Запустите проект и наслаждайтесь результатом.

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

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

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

Организация процесса программирования.

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

С одной стороны ответ очевиден. Тип объекта известен, значит можно ввести префикс. Остальная часть имени составляется по смыслу. Оптимально использовать два или три слова, если они небольшие можно и четыре. Хотя тут всё зависит от обстоятельств. Ещё один важный фактор заключается в самом языке именования. Самое универсальное решение - английский. В этом случае ваш код станет интернациональным и будет понятен большинству программистов в мире. К примеру, функция может называться GetFilePath - Получить Файловый Путь, объект strTempName - строка Временное Имя, класс BitArray - Битовый Массив. Не "изобретайте велосипед", внимательно просмотрите существующие имена и действуйте по аналогии (подобию).

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

Третий и самый плохой, на мой взгляд, подход попытаться применить латиницу, то есть писать по-русски английскими буквами. Мало того, что ваше творение будет понятно только русскоязычным программистам, так ещё многим из них придётся привыкать к подобному виду записи. Ведь в наше время распространения юникода далеко не каждый захочет быть зависим от подобной необходимости. Вы можете сказать, - "А зачем кому-то понимать мой код, он создан мной и только для меня?". На это я могу ответить следующим, если вы будете использовать латиницу, то натренируетесь на латиницу (а нужна она вам?). Если английские слова, то будете лучше ориентироваться в стандартных библиотеках от той же корпорации Microsoft. А если в именовании вы предпочитаете русский язык, то ничего нового вы из этого не вынесете. К тому же из-за отсутствия подходящих образцов, будет трудно сразу определить, какое имя станет понятно всем, а какое нет.

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

У любого программиста должны быть какие-либо наработки. Главное научиться правильно их хранить и использовать. Наработки могут оставаться в проектах, и прочих файлах программы, но тогда их применение может стать затруднительным из-за неорганизованного доступа к этим данным. К тому же чаще всего программистам необходим не полный код программы, а лишь полуфабрикат, путём добавления и изменения которого легко добиться желаемых результатов. Для наглядности я воспользуюсь программой WinPIM 7.51.1312 Personal Edition.

К примеру, вы что-нибудь изучаете. Одновременно с этим вам необходимо не просто проделать данную в упражнении работу, но и получить некую гарантию успешного выполнения подобных заданий в будущем. Вот код, написанный мною для приложения Access, он просто получает ссылки References: и печатает их в Immediate Window:

Visual Basic 6.3
Public Sub Свойства()
On Error GoTo Err_Свойства

     Debug.Print "Кол-во ссылок: " & Application.VBE.VBProjects(1).References.Count
     For Each tmp In Application.VBE.VBProjects(1).References
        Debug.Print tmp.Name
        If tmp.BuiltIn Then Debug.Print "   Встроенная" _
        Else Debug.Print "   Добавленная"
        Debug.Print "   " & tmp.Description
     Next tmp
     
Exit_Свойства:
     Exit Sub

Err_Свойства:
     MsgBox Err.Description
     Resume Exit_Свойства
End Sub

А вот листинг того, что в итоге получилось:

Листинг:
Кол-во ссылок: 9
VBA
  Встроенная
  Visual Basic For Applications
Access
  Встроенная
  Microsoft Access 11.0 Object Library
VBIDE
  Добавленная
  Microsoft Visual Basic for Applications Extensibility 5.3
stdole
  Добавленная
  OLE Automation
DAO
  Добавленная
  Microsoft DAO 3.6 Object Library
ADODB
  Добавленная
  Microsoft ActiveX Data Objects 2.5 Library
DHTMLEDLib
  Добавленная
  DHTML Edit Control for IE5
RichTextLib
  Добавленная
  Microsoft Rich Textbox Control 6.0 (SP4)
MSHTML
  Добавленная
  Microsoft HTML Object Library

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

Шаблон обработки исключений в функции для Visual Basic 6.3
Public Sub ИмяПроцедуры()
On Error GoTo Err_ИмяПроцедуры

     ' ВАШ КОД
     
Exit_ИмяПроцедуры:
     Exit Sub

Err_ИмяПроцедуры:
     ' ОБРАБОТКА ОШИБКИ
     Resume Exit_ИмяПроцедуры
End Sub

И занести в WinPIM:

Я многое упростил, но для меня было главным передать принцип. То есть существуют три раздела окна. Одно с древовидным списком для доступа к данным. Именно оно позволит вам быстро находить искомые данные, которые вы когда-то занесли в хранилище. Второе это список записок, а третье - их область чтения. Отмечу, что Microsoft Outlook 2003 полностью соответствует этому представлению и если у вас мощный компьютер, то предпочтительней использовать её, но об этом позже.

Из приведённого рисунка видно, что имя процедуры повторяется пять раз. Пока я не буду вдаваться в подробности относительно её аргументов и прочих особенностей, на вроде доступа и так далее. Сейчас меня интересует только шаблон обработки исключений. Найдя исходный код в хранилище, мы просто копируем его в нужное место программы, выделяем строчку ИмяПроцедуры, вызываем команду Replace, вводим новое имя процедуры и нажимаем на кнопку Replace All. Автоматом будут произведены пять замен. Теперь осталось ввести код процедуры и способ, по которому будут обрабатываться ошибки. Как видите всё очень просто.

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

  • Справка не всегда удобно структурирована. Хочется чего-то иного, более подходящего для вашего типа мышления. Древовидный список доступа отчасти решит эту проблему.
  • В стандартной справке нет ваших наработок, похожих или не похожих на приведённый мною выше шаблон обработки ошибок на языке Visual Basic 6.3.
  • Благодаря программе-хранилищу существует возможность лёгкой переносимости накопленных вами знаний на другие компьютеры. Подчёркиваю именно вами, так как хранилище создаётся, используется и может быть полезно только для вас.

Пару слов о Microsoft Outlook 2003. Откровенно говоря, WinPIM очень неудачная система хранения данных, гораздо лучше для этих целей подходит Microsoft Outlook 2003. Добавьте папку с нужным вам именем в Личные папки. Она окажется на том же уровне в древовидном списке, что и папки Входящие, Исходящие и так далее. Теперь остаётся лишь вводить новые подпапки, для упорядочивания данных. Свои локальные данные лучше всего задавать при помощи формы Записка в папке Ctr+Shift+S. Помимо этого Microsoft Outlook 2003 имеет множество других особенностей, помогающих организовать вашу компьютерную деятельность. Читайте стандартную справку, учитесь пользоваться дополнительными возможностями.

И, пожалуй, последнее, что мне хотелось отметить, это возможность Импорта и Экспорта данных, как всех вместе, так и по отдельности. Для этих целей лучше всего подходит коренной формат *.pst, проведите с ним самостоятельные опыты. Для удобства сразу даю путь: Файл⇒Импорт и экспорт:⇒Экспорт в файл⇒Файл личных папок (*.pst). Далее действуйте по обстоятельствам. И кончено же огромную помощь вам окажет : Файл⇒Управление файлами данных.... Как известно изначальный или лучше выразится коренной файл Microsoft Outlook 2003 называется Outlook.pst. А чтобы у вас существовало точное разграничение между данными относящимися к разной области деятельности, да и просто ради мобильности присоединённых архивов, вы можете разграничить свои собственные записки и всё остальное. Нажмите на кнопку Добавить... и выберите нужный экспортированный файл. В древовидном списке области переходов архив появится на уровне Личные папки. Существует возможность задать пароль, чтобы до ваших записей никто не мог добраться. Его нужно вводить во время запуска программы. Подобное имеет смысл, если на компьютере несколько пользователей, и вы не хотите, чтобы ваше содержимое было прочитано или испорчено.

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

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

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

Урок 2. Отправка данных с использованием форм

Обычным способом получения данных от пользователей в серверных приложениях в интрасетях и Интернете является создание формы на веб-странице. ASP включает следующие два семейства в объект Request для обработки данных, полученных из форм: QueryString и Form.

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

  • Пример 1Вывод выбранных элементов формы.
  • Пример 2Вывод текстовых полейв форме, прием вводимых в форму пользовательских данных и вывод этих данных на веб-страницу.

Пример 1. Кнопки и связанные с ними элементы управления

Формы могут содержать много разных элементов управления, позволяющих пользователям вводить данные. В данном примере рассматриваются пять типов элементов управления формы. Этими элементами являются переключатели (RADIO), кнопки отправки (SUBMIT), кнопки сброса (RESET), флажки (CHECKBOX) и текстовые поля (TEXT).

После того, как пользователь ввел данные в форму, эти данные должны быть переданы веб-приложению. Когда пользователь нажимает на веб-странице кнопку с надписью <Отправить>, данные из формы передаются от клиента на веб-страницу, которая указана в элементе ACTION тега формы. Эта веб-страница не обязательно должна совпадать с вызывающей страницей. В этом примере веб-страница, указанная в элементе ACTION, совпадает с вызывающей страницей, поэтому нет необходимости вызова другой страницы.

В этом примере для отправки данных из обозревателя клиента на веб-сервер используется элемент METHOD="POST". При использовании в форме элемента METHOD="POST" пользовательские данные размещаются в семействе Form объекта Request.

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

<%@ Language=VBScript %>

<html>
<head>
<title>Форма с кнопками</title>
</head>
<body>
<font face="MS Gothic">

<FORM NAME="Пример формы с кнопками" METHOD="POST" ACTION="button.asp">
<H3>Опыт в программировании:</H3>
<p>
<INPUT TYPE="RADIO" NAME= "choice" VALUE="Менее 1 года"> Менее 1 года.<BR>
<INPUT TYPE="RADIO" NAME= "choice" VALUE="От 1 года до 5 лет"> От 1 года до 5 лет.<BR>
<INPUT TYPE="RADIO" NAME= "choice" VALUE="Более 5 лет"> Более 5 лет.<BR>
</p>
<p>
<INPUT TYPE="SUBMIT" VALUE="Отправить">
<INPUT TYPE="RESET" VALUE="Очистить форму">
</p>
</form>

<%
'Проверить, что данные были введены.
dim strChoice
strChoice = Request.Form("choice")

If "" = strChoice Then
Response.Write "<P>(Выбор не был сделан.)</P>"
Else
Response.Write "<P>Был сделан выбор: <B>" & strChoice & "</B></P>"
End If
%>

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

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

Опыт в программировании:

Менее 1 года.
От 1 года до 5 лет.
Более 5 лет.

(Выбор не был сделан.)


Пример 2. Элементы формы ввода

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

В этом примере для отправки данных из обозревателя клиента на веб-сервер используется элемент METHOD=GET. При использовании в форме элемента METHOD=GET пользовательские данные размещаются в семействе QueryString объекта Request.

Обратите внимание на адресную строку после нажатия кнопки Отправить- в конце URL-адреса будут добавлены элементы объекта QueryString.

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

<%@ Language=VBScript %>

<html>
<head>
<title>Форма с текстовыми полями и флажками </title>
</head>
<body>
<font face="MS Gothic">

<FORM NAME="Пример с текстом и флажками" METHOD="GET" ACTION="text.asp">
<H3>Заполните эту форму для получения сведений о наших продуктах:</H3>
<p>
<table>
<tr>
<td><font face="MS Gothic">Имя (обязательно)</td>
<td><INPUT TYPE="TEXT" NAME="name" VALUE="" SIZE="20" MAXLENGTH="150"></td>
</tr><tr>
<td><font face="MS Gothic">Организация</td>
<td><INPUT TYPE="TEXT" NAME="company" VALUE="" SIZE="25" MAXLENGTH="150"></td>
</tr><tr>
<td><font face="MS Gothic">Адрес электронной почты (обязательно)</td>
<td><INPUT TYPE="TEXT" NAME="email" VALUE="" SIZE="25" MAXLENGTH="150"></td>
</tr>
</table>
</p>
<p>
Область запроса:<BR>
<INPUT TYPE="CHECKBOX" NAME= "info" VALUE="software">Программы<BR>
<INPUT TYPE="CHECKBOX" NAME= "info" VALUE="hardware">Оборудование <BR>
</p>
<p>
<INPUT TYPE="SUBMIT" VALUE="Отправить">
<INPUT TYPE="RESET" VALUE="Очистить форму">
</p>
</form>

<%
'Проверить, что данные были введены.
dim strName, strEmail, strCompany, strInfo
strName = Request.QueryString("name")
strEmail = Request.QueryString("email")
strCompany = Request.QueryString("company")
strInfo = Request.QueryString("info")

'Вывести введенные данные.
If ("" = strName) OR ("" = strEmail) Then
Response.Write "<P>(Обязательные данные еще не введены.)</P>"
Else
Response.Write "<P>Вы " & strName
If Not ("" = strCompany) Then
Response.Write " из организации " & strCompany
End If
Response.Write ". <BR>Адрес электронной почты: " & strEmail
If Not ("" = strInfo) Then
Response.Write " Область запроса: " & strInfo & ".</P>"
End If
End If
%>

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

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

Заполните эту форму для получения сведений о наших продуктах:

Имя (обязательно)
Организация
Адрес электронной почты (обязательно)

Область запроса:
Программы
Оборудование

(Обязательные данные еще не введены.)

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

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


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

>

>"The Psychology of Computer Programming",

>

>Джеральд Вейнберг, (VAN NOSTRAND REINOLD CO., 1971).

>Некоторое время назад, когда КОБОЛ был светлой
надеждой программистов, часто можно было слышать о возможности
того, что администраторы смогут читать программы... Никто не
принимал этого всерьез... Даже программисты не читают
программ.

>( р.5 )

>Eсть... программы, которые следует выбросить еще до
использования.

>( р.20 )

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

>( р.22 )

>Eсли программист работает с языком, в котором разрешены
только три индекса, то вряд ли мы обнаружим больше трех.

>( р.31 )

>Собрать кучку людей для работы над одной проблемой -
не значит сделать их коллективом.

>( р.35 )

>Конструктор системы страдает от того, что чем лучше
его система делает свое дело, тем меньше пользователи
знают о ее существовании.

>( р.124 )

>... Каждая программа   имеет соответствующий уровень
продуманности и запутанности в зависимости от цели, для
которой она применяется.

>( р.127 )

>Чтобы обнаруживать ошибки, программист должен иметь
ум, которому доставляет удовольствие находить изъяны там,
где, казалось, царят красота и совершенство.

>( р.136 )

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

>( р.136 )

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

>( р.203 )

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

>( р.204 )

>Другой эффект (отсутствия устной формы) - это затруд-
нения, которые мы испытываем, говоря о языке программирования
без доски и мела либо карандаша и бумаги.   В каждой програм-
мистской лаборатории должны быть доска, мел и достаточное ко-
личество тряпок.

>( р.207 )

>"Программирование" - как и "любовь" - одно слово,
за которым скрывается бесконечное множество занятий.

>( р.121 )

>Очень важно не прерывать вопросов. Любопытство имеет
свое право на существование.

>(Альберт Эйнштейн)

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

>( В. р.209 )

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

>( аноним )

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

>( В. р.247 )

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

>( В. р.251 )

>Документация - касторовое масло в программировании...
Руководители полагают, что это хорошее средство, ибо програм-
мисты так ее ненавидят.

>( р.262 )

>Мозг человека обычно загружен лишь на 10% своей
мощности; остальное резерв для опереционной системы.

>( аноним )

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

>( В. р.279 )

>Проект (OS/360) был закончен с опозданием, система
потребовала большего объема памяти, чем планировалось, затраты
значительно превысили предварительные оценки, вся система начала
работать как следует только после создания нескольких
вариантов, последовавших за первым.

>"Мифический человеко-месяц", Фредерик

>Брукс-мл.,р.8 (М., "Наука", 1979).

>Корабль на мели - моряку маяк.

>голландская пословица.

>Неподатливость проблемы (срыва планов разработки систем)
вызывает всеобщее изумление, и разобраться в ее природе
непросто.

>( Брукс, р.10 )

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

>( Б. , р.13 )

>Программист, как поэт, работает почти исключительно
головой.

>( Б., р.13 )

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

>( Б., р.14 )

>... Во всех областях творческой деятельности формальный
объем прав никогда не согласуется с ответственностью.

>( Б., р.14 )

>Выдавать глобальные идеи - это удовольствие; искать
сволочные маленькие ошибки - вот настоящая работа.

>( Брукс )

>Как только проект окончательно принят, он становится
устаревшим в смысле своих концепций.

>( Б., р.15 )

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

>( меню ресторана "Антуан",

>

>Новый Орлеан )

>Все программисты - оптимисты.

>( Б., р.17 )

>На этот раз программа обязательно пройдет.

>( аноним )

>Я только что нашел последнюю ошибку.

>( аноним )

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

>( Б., р.19 )

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

>( Б., р.19 )

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

>( Б., р.20 )

>Когда кажется, что все уже работает, все объединено в
систему - вам еще осталось работы на четыре месяца.

>( Чарльз Портман , ICL )

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

>( Б., р.23 )

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

>( Б., р.23 )

>Закон Брукса: если программистский проект не уклады-
вается в сроки, то добавление рабочей силы только задержит его
окончание.

>( Б., р.26 )

>... Концептуальное единство является самым важным
соображением при проектировании системы.

>( Б., р.36 )

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

>( Б., р.36 )

>Ни функциональность, ни простота сами по себе не гаран-
тируют... высокого качества (проекта).

>( Б., р.37 )

>Добавляя малое к малому, получишь большую кучу.

>( Овидий )

>Он сядет здесь и будет распоряжаться: сделайте то!,
сделайте это! - но абсолютно ничто не сдвинется с места.

>( Г.Трумэн, "О презедентской власти " )

>Никогда не выходи в море с двумя хронометрами:
бери один или три.

>( пословица )

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

>( Роберт Хайнлайн,

>

>"THE MAN WHO SOLD THE MOON" )

>Проблема - в том, что все, кто здесь работал, и я в
том числе, хотели сделать действительно чистую работу, только
они не хотели чистой работы, они хотели много - и быстро.

>( Рик Бэйкер, гример в фильмах:

>"Кинг-Конг", "Звездные войны" и т.д.)

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

>( Роберт Ковзю, Окриджская

>

>лаборатория. )

>Я не знаю причины, по которой нам не следует этого де-
лать, но, возможно, позже мы придумаем какую-нибудь.

>( Марк Дэвисон )

>- Ошибка? Это не ошибка, это системная функция.

>( Т. Джон Уэнделл )

>Комьютер "делает из всех нас дураков".

>( В. р.152 )

>Глупец, лишенный способности посмеяться над собой вместе
с другими, не сможет долго выносить программирование.

>( В. р.152 )

>У компьютера всегда есть оправдание; у программиста -
никогда.

>( Марк Дэвисон )

>Пользователь не знает, чего он хочет, пока не увидит то,
что он получил.

>( Э. Йодан )

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

>( аноним )

>Работа не может быть выполнена должным образом, если нет
необходимых инструментов.

>( PROCEEDINGS OF THE IEEE, 2/78, р.174 )

>

>Я слышу и забываю.

>

>Я вижу и запоминаю.

>

>Я делаю и понимаю.

>( Конфуций )

>На пустом диске можно искать вечно.

>( COMPUTERWORLD BUTTON )

>Я пишу все свои критические программы на ассемблере, а
комедийные - на фортране.

>( аноним )

>Бесполезно придумывать защиту от дурака - ведь дураки
так гениальны.

>( Э.Мэрфи, DEC )

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

>( Дж.Хуанг, "PROGRAM INSTRUMENTATION

>SOFTWARE TESTING", COMPUTER, volume 11,

>number 4 )

>Если отладка - процесс удаления ошибок, то программиро-
вание должно быть процессом их внесения.

>( Э.Дейкстра )

>Вы уже дошли до состояния, когда у вас нет времени,
чтобы разрешить те проблемы, которые отнимают у вас все время???

>( Марк Дэвидсон )

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

comp.soft.prog.vsnetmsoffice-owner@subscribe.ru Отвечает
Вопросы и ответы автор

k

Как со мной связаться?

  • Прежде всего можно послать письмо на адрес рассылки, он дан в заголовке. Пишите свои замечания и предложения, но постарайтесь сделать письмо как можно меньше, то есть, 5Kb или 10Kb в текстовом варианте будет более чем достаточно. К тому же сервис 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 ночи по Московскому времени, придётся ждать их очень долго.

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


RЮмор

"Святой Отец Вындоуз-- я продал твои иконы!!!"


Звонит один мужик своему интернет-провайдеру и говорит оператору:
- Алло, здраствуйте, у меня проблема! Я не могу зайти в интернет!
- А в чем, собственно говоря, дело?
- А у меня нет компьютера...........


После игры в покер виндозе выдает сообщение:
- Вы проиграли 273 доллара. Вставьте их, пожалуйста, в дисковод А: и
нажмите ANY KEY (если найдете).
Что в ентом случае делают...

Ламер: С остервенелым видом начинает засовывать 273 доллара в флоповод А: и
искать ANY KEY.

Юзер: С жутко довольным видом давит ресет и бежит рассказывать друзьям о
том, как он "взломал" покер.

Хакер: За соседним компутером быстренько пишет прогу, эмулирующую
засовывание 273 баксов в дисковод А:. Потом, в течение 3-4 недель пишет
фиксы и апдэйты для эмуляции запихивания 274, 293 и 765 баксов в дисководы
А:, В:, е.тм.

Новый русский: Со всей дури бьет кулаком по флоповоду А: и начинает усердно
искать в флоповоде В: сдачу...


Смотрит "специалист" на autoexec.bat, в котором:
(...)
cd uts
(...)
cd ..
(...)
К нему ламер подходит:
- И как ты там че-то понимаешь?!...
- Все я тут понимаю, кроме одного
(задумчиво смотрит на центральный блок),
куда они тут сидюк засунуть умудрились?....


Из серии реальных историй про Stylus 3.0:
Только что переводил кусок текста, так ентот Stylus
перевел мне VIDEO POKER как ВИДЕО ВИБРОБУЛАВА! Во блин!


Приходит мужик в компьютерный салон:
- Я у вас вчера компьютер прикупил...
- У вас проблемы?
- Сгорел он...
- Нет проблем - он на гарантии. А что у вас сгорело?
- Все!
- Ну, так не бывает. Процесор цел?
- Сгорел.
- А винчестер?
- Сгорел.
- А память?
- Сгорела.
- А монитор?
- Сгорел.
- Господи!
Что же вы с ним делали?
- Да у меня пожар вчера был....

Желаю удачи, автор.


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
➲перейти к началу ➲перейти к концу

В избранное