ICQ-клиент
СОДЕРЖАНИЕ
Введение 5
1 Аналитический обзор литературы
1.1 Анализ предметной области
1.2 Сравнительная характеристика существующих аналогов 8
1.3 Постановка задачи 10
2 Модели, положенные в основу ПС
2.1 Функциональные модели
2.2 Разработка спецификации требований к программному средству 13
3 Разработка программного средства
3.1 Обоснование выбора среды разаработки
3.2 Особенности реализации
3.3 Разработка программной архитектуры
4 Тестирование программного средства
5 Методика работы с программным средством 20
Заключение
Список использованных источников
Приложение A. Листинг программного средства
Введение
Сегодня Интернет играет очень важную роль в жизни многих людей. Его используют для работы, развлечения, поиска информации, а также знакомства и общения.
В первые годы существования Всемирной паутины пользователи общались преимущественно через электронную почту, но отправлять письма было неудобно и даже нерационально, если оба собеседника одновременно находились в Интернете. Все изменилось, когда появились первые программы мгновенного общения или, менее официально, мессенджеры или интернет-пейджеры.
Эти программы используются для передачи сообщений через Интернет в реальном времени через специальные службы. Если раньше речь шла только о текстовых сообщениях, то теперь с помощью подобных программ можно отсылать и голосовые, и видеосообщения, и файлы, и фотографии.
Как правило, мессенджер скачивается на персональный компьютер и с этого момента начинает составлять достойную конкуренцию электронной почте и даже телефону. Каждый пользователь получает собственный идентификационный номер (или логин), который становится его уникальным именем в Сети.
Программа мгновенного обмена сообщениями (англ. Instant messenger, IM) — программа для обмена сообщениями через интернет в реальном времени через службы мгновенных сообщений (Instant Messaging Service, IMS). С помощью нее могут передаваться текстовые сообщения, звуковые сигналы, изображения, видео, а также производиться такие действия, как совместное рисование или игры. Многие из таких программ могут применяться для организации групповых текстовых чатов или видеоконфе
Для этого вида коммуникации необходима клиентская программа, так называемый мессенджер (от англ. messenger — курьер). Отличие от электронной почты здесь в том, что обмен сообщениями идёт в реальном времени (англ. instant — мгновенно). Большинство IM-клиентов позволяет видеть, подключены ли в данный момент абоненты, занесённые в список контактов. В ранних версиях программ всё, что печатал пользователь, тут же передавалось. Если он делал ошибку и исправлял её, это тоже было видно. В таком режиме общение напоминало телефонный разговор. В современных программах сообщения появляются на мониторе собеседника уже после окончания редактирования и отправки сообщения.
Как правило, мессенджеры не работают самостоятельно, а подключаются к центральному компьютеру сети обмена сообщениями, называемому сервером. Поэтому мессенджеры и называют клиентами (клиентскими программами). Термин является понятием из клиент-серверных технологий.
Широкому кругу пользователей известно некоторое количество популярных сетей обмена сообщениями, таких, как XMPP, ICQ, MSN, Yahoo!. Каждая из этих сетей разработана отдельной группой разработчиков, имеет отдельный сервер и протоколы, отличается своими правилами и особенностями. Между различными сетями обычно нет никакой взаимосвязи. Таким образом, пользователь сети ICQ не может связаться с пользователем сети MSN. Однако ничто не мешает быть одновременно пользователем нескольких сетей.
Почти для каждой из сетей есть свой мессенджер, разработанный той же командой разработчиков. Так, для пользования вышеуказанными сетями разработчиками предлагаются программы с одноимёнными названиями: ICQ, MSN Messenger, Yahoo! Messenger. Таким образом, если один из адресатов пользуется только сетью ICQ, а другой — только сетью MSN, то можно общаться с ними одновременно, установив на своем компьютере и ICQ, и MSN Messenger, и зарегистрировавшись в обеих сетях.
В качестве альтернативного мессенджера можно выбрать программу стороннего производителя: как коммерческую, так и бесплатную. Популярными альтернативными программами для общения в сети ICQ являются QIP, Trillian, Mirand
Большинство IM-сетей используют закрытые протоколы, поэтому альтернативные клиенты теоретически могут обладать меньшим количеством базовых функций, чем официальные, хотя на практике чаще бывает наоборот. Однако при изменениях протокола на стороне сервера сети альтернативные клиенты могут внезапно перестать работать (например, подобное явление наблюдалось для «нефирменных» клиентов популярного в России сервиса ICQ).
В качестве альтернативы проприетарным протоколам для IM был разработан открытый протокол XMPP (также известный, как Jabber), используемый в таких сервисах, как Google Talk, Я.Онлайн и др. Этот протокол часто используется для организации общения в корпоративных и других локальных сетях.
1 АНАЛИТИЧЕСКИЙ ОБЗОР ЛИТЕРАТУРЫ
1.1 Анализ предметной области
ICQ основан на протоколе OSCAR, который является протоколом прикладного уровня.
Прикладной уровень - седьмой уровень модели OSI, предназначенный для обеспечения взаимодействия пользователя (процесса-отправителя) с приложениями на удаленном компьютере (процессом-получателем).
Прикладной уровень обеспечивает:
- описание форм и методов взаимодействия прикладных процессов;
- управление заданиями, передачу файлов, управление системой и т.д.;
- идентификацию пользователей по их паролям, адресам и электронным подписям;
- определение функционирующих абонентов;
- объявление о возможности доступа к новым прикладным процессам;
- определение достаточности имеющихся ресурсов;
- посылку запросов на соединение с другими прикладными процессами;
- управление данными, которыми обмениваются прикладные процессы;
- синхронизацию взаимодействия прикладных процессов и др.
Обычно прикладной уровень подразделяется:
- на верхний подуровень, включающий сетевые службы; и
- на нижний подуровень, содержащий стандартные сервисные элементы, поддерживающие работу сетевых служб.
1.2 Сравнительная характеристика существующих аналогов
На данном этапе существует достаточно большое количество мессенджеров, большинство из которых бесплатны (некоторые в целом бесплатны, но имеют набор дополнительных платных услуг). Ниже приведено описание самых популярных, используемых миллионами пользователей по всему миру.
Skype - наиболее распространенный в мире мессенджер с закрытым протоколом. Предоставляет видеосвязь и видеоконференции до 10 человек. Позволяет звонить на обычные телефоны, принимать звонки. Есть версии для мобильных устройств.
MyChat - клиент-серверный мессенджер для локальной сети. Интегрируется с Active Directory, многоуровневый список контактов, доска объявлений, система массовых оповещений, конференции, SSL шифрование трафика, передача оффлайн сообщений и файлов, гибкая система управления правами пользователей, передача файлов и папок.
Google Talk используется как десктоп-клиент и как вэб-дополнение к GMail для текстового чата, аудио и видеосвязи. Совместим с Jabber, AIM и ICQ, а также используется как гаджет для общения с посетителями на сайте.
QIP Infium - быстрый и легкий клиент ICQ, Mail.ru Агент, Я.online, GTalk, SIPNET, LJ Talk с поддержкой различных скинов и плагинов. Поддеррживает видеосвязь и VoIP связь. Можно звонить на обычные и мобильные телефоны по низким тарифам.
Fring - мобильный мультипротокольный клиент для VoIP и видеосвязи, поддерживает Skype, ICQ, Google Talk, MSN Messenger, SIP, twitter, Yahoo! и AIM. Доступен на iPhone, Android, Blackberry, Symbian. Включает сервис IP-телефонии FringOut
AIM Pro - бизнес мессенджер, обеспечивающий высокое качество связи, высокий уровень безопасности и предоставляющий инструменты для совместной работы над приложениями. Интегрируется с Outlook и сервисами Webex для вэб-конференций. Основан на открытой платформе Open AIM и Open Voice. Позволяет звонить на обычные телефоны.
ICQ - очень распространенный на отечественном интернет-пространстве мессенджер с возможностью аудио и видео связи. Работает только под windows. Имеет большое количество плагинов.
Miranda IM - десктоп-клиент, совмещающий в себе несколько ваших аккаунтов в различных системах сообщений (ICQ, AIM, Jabber, MSN ...). Поддержка других мессенджеров обычно реализуется с помощью плагинов.
Zoho Chat - групповой вэб-чат для бизнеса + мультипротокольный web IM + мультиоператорский чат поддержки. Поддерживает Yahoo, AIM, MSN, ICQ, GTalk и Jabber. Умеет пересылать файлы, доставлять оффлайн сообщения, просматривать историю чатов (и искать в ней), чатиться с незарегистрированными в Zoho людьми через браузер, извещать о новых событиях в Zoho-офисе. Позволяет встраивать чат в сайт в виде виджета.
Trillian - мультипротокольный IM-клиент, поддерживает AIM, ICQ, Windows Live Messenger, Yahoo Messenger и IRC. Функции включают групповой чат, аудиочат, SMS, напоминания, шифрование сообщений, поддержка прокси.
1.3 Постановка задачи
Требуется реализовать ICQ-клиент. Выбранный язык программирования – C#, платформа .NET. Пользовательский интерфейс создать при помощи технологии Windows Presentation Foundation.
После успешной авторизации клиент ICQ загружает с сервера список контактов пользователя. Контакты в списке могут быть разделены на группы, имена и количество которых изменяются пользователем.
При добавлении контакта может потребоваться авторизация — разрешение видеть его статус присутствия и отправлять ему файлы. Для таких контактов формируется запрос на авторизацию, который доходит до пользователя добавляемой учётной записи в виде системного уведомления, на которое он может ответить либо согласием, либо отказом, по желанию снабдив решение текстовым комментарием.
С каждым из контактов можно вести личную переписку. Если отправитель не отключил эту возможность, то, в зависимости от клиента, получатель информируется о наборе сообщения, что создаёт эффект присутствия отправителя. Длина отправляемого сообщения ограничена.
В случае, если в момент отправки сообщений адресат не находился в сети, они будут сохранены службой и доставлены адресату, как только тот подключится к сети.
2 МОДЕЛИ, ПОЛОЖЕННЫЕ В ОСНОВУ ПС
2.1 Функциональные модели
Программное средство разрабатывалось в соответствии со следующими функциональными моделями представленными на рисунках 2.1, 2.2 и 2.3
Рисунок 2.1 Общение с помощью ICQ(IDEF0)
Рисунок 2.2 Посылка сообщения на сервер(IDEF3)
Рисунок 2.3 Посылка сообщения собеседнику(DFD)
2.2 Разработка спецификаций требований к программному средству
Разрабатываемое программное средство может быть использовано в соответствии со следующей диаграммой, представленной на рис. 2.1
К нему предъявляется следующая спецификация требований:
1) Программное средство должно быть разработано на платформе .NET с помощью языка программирования C# (Sharp);
2) Удобный и понятный интерфейс;
3) Минимизация используемых объемов памяти;
4) Реализовать хранение истории сообщений;
5)Реализовать возможность отправки и получения файлов;
6) Размер программного средства не должен превышать 1024 Кб.
Рисунок 2.3 Диаграмма вариантов использования UML
3 Разработка ПРОГРАММНОГО СРЕДСТВА
3.1 Обоснование выбора среды разработки
В качестве среды разработки была выбрана IDE Visual Studio 2010 и платформа .NET Framework, сочетающие в себе удобство переносимости и мощь объектно – ориентированного программирования.
Для разработки пользовательского интерфейса была использована платформа Windows Presentation Foundation (WPF).
Windows Presentation Foundation (WPF, кодовое название — Avalon) — система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), имеющая прямое отношение к XAML.
В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF предоставляет средства для создания визуального интерфейса, включая Язык XAML (Extensible Application Markup Language), элементы управления, привязку данных, макеты, двухмерную и трехмерную графику, анимацию, стили, шаблоны, документы, текст, мультимедиа и оформление [1].
Графической технологией, лежащей в основе WPF является DirectX, в отличие от Windows Forms, где используется GDI/GDI+[2]. Производительность WPF выше, чем у GDI+ за счёт использования аппаратного ускорения графики через DirectX.
XAML представляет собой XML, в котором фактически реализованы классы .NET Framework. Так же реализована модель разделения кода и дизайна, позволяющая кооперироваться программисту и дизайнеру. Кроме того, есть встроенная поддержка стилей элементов, а сами элементы легко разделить на элементы управления второго уровня, которые в свою очередь разлагаются до уровня векторных фигур и свойств/действий.
3.2 Особенности реализации
ICQ – клиент реализован на базе протокола OSCAR.
OSCAR — открытый (с 5 марта 2008 года), но не свободный сетевой протокол, обеспечивающий обмен мгновенными и оффлайновыми текстовыми сообщениями. В данный момент используется для двух систем: AIM (компания AOL, управляемая Time Warner) и ICQ (компания Mail.Ru).
OSCAR. "Open System for Communication in Realtime" (рус. "Открытая система для общения в реальном времени") - внутреннее название проекта (в отличие от внешнего маркетингового названия) используется для определения протокола обмена мгновенными сообщениями.
FLAP – это низкоуровневый протокол передачи данных, который облегчает разработку высокоуровневых, дейтаграмно-ориентированных слоев по передачи данных. Он использует TCP-соединения между клиентами и серверами.
Байт FLAP-идентификатора всегда 0х2А. FLAP datagram sequence number – используется для выявления ошибок.
FLAP channel – это идентификатор, используемый для определения различных типов данных во FLAP-пакете, для передачи данных через один и тот же TCP-сокет. В некотором роде это аналог TCP/UPD номеров портов. В OSCAR используются пять видов каналов:
0x01 – договор о новом соединении;
0х02 – SNAC-пакет;
0х03 – ошибка FLAP-уровня;
0х04 – договор о завершении соединения;
0х05 – оставаться в сети.
Наиболее часто используется канал 0х02, так как только по нему могут передаваться SNAC-пакеты.
SNAC – это базовый модуль передачи данных между клиентом и сервером. SNAC-слой находится выше FLAP-слоя, он является содержимым поля данных FLAP-а, передается только по каналу 0х02. Формат SNAC:
Нет никакой информации о длине данных в SNAC. Она должна быть определена из заголовка FLAP-а.Флаги являются одним из главных свойств пакета данных. Например, первый бит двухбайтового флага устанавлявается, если да данного id запроса было послано более одного SPAC.
TLV (type-length-value – тип-длина-значение) – очень удобный и эффективный метод для передачи данных в организованном формате, особенно строк переменной длины. 16 бит кода типа, 16 бит значения длины данных, сами данные:
TLV-блоки могут находиться внутри SNAC-блоков, но это не обязательно. Иногда их располагают непосредственно во FLAP-поле с данными, но чаще внутри SNAC. TLV-блоков в SNAC может быть несколько. Введение этих блоков было большим прорывом, ведь стало удобно посылать несколько строк или значений различной длины одним пакетом, например как {0x0011, 0x000c, "[email protected]"}.
3.3 Разработка программной архитектуры
Сам проект состоит из двух подпроектов: Core и ICQLite. Первый отвечает за базовые функции ICQ, авторизацию, передачу данных и прочую бизнес-логику. ICQLite – содержит классы и окна, используемые для построения пользовательского интерфейса.
3.3.1 Core
Основной класс – Session, представляет собой ICQ сессию. Он агрегирует в себе классы-менеджеры ConnectionManager, SSIManager, MessageManager, StatusManager, и т.д. Ниже будут рассмотрены некоторые из них. Класс содержит методы InitializeLogger, Logon, Logoff, AddBuddy, RemoveBuddy, ActivateBuddyList, SendAuthorizationRequest и многие другие (все они располагаются в папке ObjectManagers проекта), которые далее оперируют с методами менеджеров. Также в нем имеются множество событий, которые срабатывают при происхождении каких-либо действий, на которые можно назначить обработчики событий из пользовательского интерфейса для его обновления.
AuthorizationManager – отвечает за авторизацию, содержит методы LoginToService, ProcessIncomingPacket, SendAuthorizationRequest, ProcessLoginResponse и др.
ConnectionManager – класс, отвечающий за установку соединения с сервером. Содержит методы CreateNewConnection, DeregisterConnection, CreateNewChatConnection, CreateNewFileTransferConnectio
Если рассмотреть подробнее методы классов-менеджеров, то можно заметить, что во многих происходит построение TLV-блоков с данными, которые потом обворачиваются в SNAC-пакеты и отправляются на сервер.
Различные SNAC-и описаны как классы в папке SNACs, также там представлены методы работы с ними.
Класс Logging отвечает за логгирование поступивших и отправленных пакетов, что намного упрощает разработку и отладку проекта.
Также имеются классы с описанием делегатов для событий и аргументов различных событий.
3.3.2 ICQLite
В данном подпроекте реализован пользовательский интерфейс приложения. В нем используется концепция событийно-ориентированного программирования. Это значит, что в коде явным образом выделяется главный цикл программы, тело которого состоит из двух основных частей: выборки события и обработки события. Понятно, что недопустимы для приложения длительные выполнения обработчиков событий, поэтому многие операции выполняются в фоновом потоке. Но тут встает проблема обновления пользовательского интерфейса результатами обработки, ведь технология WPF не позволяет изменять UI из потоков, не являющихся основным. Решение – ставить обработчики событий в очередь на выполнение главному потоку методом Dispatcher.Invoke(…).
Первое окно, видимое пользователю при запуске приложения – класса LoginWindow, в нем имеются поля для ввода номера ICQ и пароля, в нем же происходит отправка на сервер этих данных. При успешно прошедшей авторизации это окно загружает окно с контактами класса ContactListWindow, а само закрывается.
ContactListWindow отображает контакты, расформированные по группам, в виде дерева элементов. В главном меню окна имеется возможность добавить контакт – за это отвечает окно AddContactWindow. Каждый контакт из списка контактов имеет контекстное меню, в нем присутствуют опции отображения информации о контакте (AboutWindow) и удаления контакта из серверного списка контактов.
При двойном щелчке на контакте открывается окно с чатом для данного контакта. При повторном двойном щелчке на нем же – то же самое окно повторно выходит на передний план.
ChatWindow. Имееет RichTextBox для ввода текста, а сама переписка отображается выше, с датой отправки сообщения. CheckBox внизу позволяет управлять отправкой сообщения по нажатию клавиши Enter, либо по нажатию кнопки “Send”.
Если окно ChatWindow c перепиской с определенным контактом не было открыто, либо было закрыто, а этот контакт отправил сообщение пользователю, то напротив него в списке контактов отображается значок в виде сообщения, по нажатию на который он пропадает, и открывается окно с чатом.
4 ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА
Для данного программного средства было использовано и функциональное тестирование:
Тестовые сценарии приведены в таблице 1.
№ | Название модуля | Последовательность действий | Ожидаемый результат |
1 | Авторизация | 1. Заполнить обязательные поля на форме авторизации 2. Нажать на кнопку авторизации | 1. Проверить наличие проверки на обязательные поля 2. Проверить факт авторизации
|
2 | Добавление контакта | 1. Заполнить поля на форме 2. Нажать на кнопку добавления | 1. Проверить удалось ли добавить новый контакт |
3 | Список контактов | 1. Удалить контакт
| 1. Проверить удален ли контакт.
|
4 | Список контактов | 1. Посмотреть информацию о контакте
| 1. Проверить достоверность информации о контакте |
5 | Чат | 1. Отправить сообщение для пользователя, находящегося онлайн | 1. Проверить дошло ли сообщение до собеседника 2. Проверить достоверность дошедшего сообщения |
6 | Чат | 1. Отправить сообщение для пользователя, находящегося оффлайн | 1 Проверить дошло ли сообщение до собеседника 2 Проверить достоверность дошедшего сообщения |
7 | Чат | 1. Отправить сообщение другим контактом для контакта, находящегося онлайн | 1 Проверить дошло ли сообщение до контакта 2 Проверить достоверность дошедшего сообщения |
7 | Чат | 1. Отправить сообщение другим контактом для контакта, находящегося оффлайн | 1 Проверить дошло ли сообщение до контакта 2 Проверить достоверность дошедшего сообщения |
Таблица 1 – Тестовые сценарии
5 МЕТОДИКА РАБОТЫ С ПРОГРАММНЫМ СРЕДСТВОМ
Login-форма cодержит поля для ввода логина (ICQ номера), пароля.
Рисунок 4.1Login – форма
По нажатию кнопки “Sign In” происходит отправка данных на сервер, выполняется авторизация пользователя в сети. При неудаче выводится сообщение о типе ошибки.
Также обновляется статус и проценты выполненной на сервере работы по авторизации:
Рисунок 4.2Статус авторизации
Рисунок 4.3 Общий вид программы
Контакты отображаются по названиям групп, внутри них – списки контактов, зеленый индификатор – контакт находится в сети, красный – оффлайн. Двойным щелчком по контакту открывается окно чата.
В окне чата реализована поддержка оффлайн сообщений (отображаются серым цветом). Есть форма для ввода текста, и форма для отображения переписки. Также можно включить отсылку сообщения по нажатию клавиши Enter.
Если окно чата закрыто, а сообщение от собеседника пришло, в списке контактов отображается значок письма. По двойному щелчку окно с чатом открывается, а он пропадает (заменяется на онлайн/оффлайн значок).
Рисунок 4.4Окно чата
Рисунок 4.5 Общий вид программы (Пришло сообщение)
Рисунок 4.5 Информация о пользователе
Добавление контакта идет в отдельном окне, после контакт лист заново перерисовывается. Удаление происходит при выборе данной опции из контекстного меню контакт-листа, после чего он также заново перерисовывается.
Рисунок 4.6 Добавление контакта
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы был получен программный продукт, названный "ICQLite". Было проведено исследование .NET Framework, которая использовалась при создании программного средства, а также протокола OSCAR.
В результате проделанной работы были усвоены основные приемы и навыки объектно-ориентированного программирования с использованием языка программирования высокого уровня C#. Применялись такие базовые концепции как: наследование, полиморфизм, инкапсуляция.
Программа реализует cредство мгновенного обмена сообщениями (англ. Instant messenger, способ обмена сообщениями через Интернет в реальном времени через службы мгновенных сообщений (Instant Messaging Service, IMS))
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
[1] Крупник А. Изучаем С#. Питер, 2001. – 480 c.
[2] Глинн Д. Платформа .NET 3.0 для профессионалов, 2008. – 1024c.
[3] Агуров П.В. C#. Сборник рецептов М.: ООО «Бином-Пресс», 2006. – 512 c.
[4] Шилдт Г. C#: учебный курс, 2007. – 768 c.
[5] Джейсон П. Visual C# 2.0. NET Полное руководство. СПб. : Питер Ком, 2004. – 288 с.
[6] Фролов А., Фролов Г. C#. Визуальное проектирование приложений. М.: ООО «Бином-Пресс», 2006. – 512 c.
[7] Кариев Ч.А. Разработка Windows-приложений на основе Visual C#, 2005. – 1000 c.
[8] Буч Г. Объектно-ориентированный анализ и проектирование. Диалог-МИФИ, 2006. – 800 c.
[9] Бадд Т. Объектно-ориентированное программирование в действии. Диалог-МИФИ, 2005. – 650 c.
[10] Виейра Р. Программирование баз данных. Диалог-МИФИ, 2005. – 1020 c.
ВЕДОМОСТЬ КУРСОВОГО ПРОЕКТА
Обозначение | Наименование | Дополнительные сведения | |||||||||
| Текстовые документы |
| |||||||||
|
|
| |||||||||
БГУИР КП 1–40 01 01 328 ПЗ | Пояснительная записка | 54 с. | |||||||||
|
|
| |||||||||
|
|
| |||||||||
| Графические документы |
| |||||||||
|
|
| |||||||||
ГУИР 751003 328 ПД | Схема работы системы | Формат А1 | |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
| |||||||||
|
|
|
|
|
БГУИР КР 1-40 01 01 328 Д1 | ||||||
|
|
|
|
| |||||||
|
|
|
|
| |||||||
Изм. | Л. | № докум. | Подп. | Дата |
ICQ-клиент Ведомость курсового |
| Лист | Листов | |||
Разраб. | Чеушев А.В. |
|
| Т |
|
| 54 | 54 | |||
Пров. | Макаренко А.В. |
|
| Кафедра ПОИТ гр. 751003 | |||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
|
|
|
| ||||||||

- II Ватиканский собор
- IMF and Its Role in the Global Financial Crisis
- Improving technology printed products LLC «FolioPlus»
- Individuālo fotogrāfu paņēmieni klientu piesaistīšanai
- Influence of the American English on the world of idioms
- Influenţa jocurilor teatrale asupra gustului estetic al preşcolarilor
- İnformasiya-ölçmə və idarəetmə sistemlərinin sadələşdirilmiş
- Homonymy in English
- How to present with passion and energy
- HTML
- Human vices in the literature (on the example of the A.Milne work “Winnie the Pooh”)
- Hасчет размерных цепей
- Hасчёт участка механического цеха в условиях серийного производства
- IAS 23 "Затраты по займам"