Результати пошуку за запитом: видеокурс c*
Тестування очима розробників
Автор: Редакция ITVDN
Введение
В наше время мир полностью компьютеризирован, на каждом шагу мы сталкиваемся с программным обеспечением, которое играет огромную роль в нашем «сегодня», делая вещи простыми в использовании. Таким образом, это является обязанностью каждого разработчика - разработать надежное программное обеспечение с максимально возможным отсутствием дефектов. Безусловно, тестировщики играют немаловажную роль в тестировании, но разработчик также должен понимать и ориентироваться в процессах. Разработчику нужно учитывать при разработке программного обеспечения надежность, а также уменьшать риск возникновения багов.
Тестирование глазами разработчиков
Тестирование - процесс выполнения программы или системы с целью нахождения ошибок. Также будет систематически раскрывать различные их классы при минимальных затратах времени и усилий. Процесс тестирования показывает, что программное обеспечение работает согласно спецификациям и данным, собранным посредством тестов. Они могут обеспечить индикацию относительной надежности и качества ПО. Это действие, которое должно быть реализовано еще во время цикла разработки ПО, до выпуска в производство, как процесс, демонстрирующий правильную работу ПО и отсутствие багов.
Гарантия качества
Гарантия качества относится к набору запланированных систематических операций, которые гарантируют соответствие процессов определенным стандартам, таких как ISO 9000 или SEI CMM. Они и обеспечивают определенную степень уверенности в качестве выпускаемого ПО.
Действия, что обеспечивают качество продукта
Следование инструкциям в соответствии с международными стандартами, выполнение внутренних аудитов, которые гарантируют соблюдение процедур (в тестировании - пошаговых инструкций). Детальное изучение требований к программному обеспечению - спецификаций, разработка планов тестирования, тестовые сценарии, выполнение тестов, создание автоматизированных сценариев тестирования и составление отчетов о дефектах.
Валидация и верификация
Валидация относится к набору операций, которые гарантируют правильную реализацию программным обеспечением определенных функций, описанных в спецификации, на каждом этапе выполняется определение действий, такие как анализ требований, проектирование, написание кода и т.д.
Верификация относится к набору различных операций, они гарантируют соответствие ПО потребительским требованиям, и действиям, которые по окончанию написания кода проверяют ПО на соответствие всем функциональным требованиям.
Типы тестирования
Есть несколько типов тестирования:
Тестирование методом "белого ящика";
Тестирование методом "черного ящика";
Тестирование V-модели;
Юнит-тестирование;
Приемочные испытания;
Интеграционное тестирование;
Регрессионное тестирование.
Тестирование методом "белого ящика"
Тестирование методом "белого ящика" тестирует приложение сугубо на уровне кода. Это структурное или логически управляемое тестирование исходного кода приложения, которое гарантирует:
Отладку багов;
Занимаемую память;
Комплексность кода;
Анализ кода;
Покрытие кода.
Методы «белого ящика» или «стеклянного ящика» - испытания на прочность системы, данный метод основан на знании внутренней структуры и логики.
Тестирование методом "белого ящика" - метод разработки тестового сценария, который использует управляющие структуры процедурного проекта.
Созданные тестовые сценарии должны гарантировать:
Осуществление всех независимых путей в юните, по крайней мере, один раз;
Выполнение всех логических действий с наличием положительного или отрицательного результата;
Выполнение всех циклов в рамках их операционных границ;
Проверку внутренних структур данных на законность.
Тестирование методом "черного ящика"
Это тестирование управления данными в целях гарантии функциональности приложения при условии наличия спецификации требований и ожидаемого вывода, но содержание/код программы остаются неизвестными или неважными. Некоторые методы:
Эквивалентность классов;
Граничный анализ;
Анализ худшего случая.
Тестирование методом "черного ящика" - функциональное испытание на основе внешних спецификаций без ведома того, как система обычно реализует процесс и/или управляет данными. «Черный ящик» не является альтернативой тестированию методом «белого ящика».
Тестирование методом "черного ящика" пытается найти ошибки в следующих категориях:
Неправильные или недостающие функции
Интерфейсные ошибки
Ошибки в структурах данных или внешнем доступе к базе данных
Ошибки производительности
Инициализация и ошибки завершения
Причинно-следственные методы построения графика
Причинно-следственное построение графика - метод, который обеспечивает краткое представление логических условий и соответствующих действий. Он состоит в выполнении четырех шагов:
Причины (входные условия) и результаты (действия) перечислены для модуля, каждому присвоен идентификатор.
Разработан причинно-следственный график.
График преобразован в таблицу решений.
Правила таблицы решений преобразованы в тестовые сценарии.
Тестирование V-модели
Тестирование V-модели - наиболее широко признанная модель для проведения тестирования, отслеживание цикла разработки и связанные с ним задачи тестирования в каждой фазе. Оно состоит из юнит-тестирования, интеграционного тестирования, тестирования системы и приемочных испытаний, которые были созданы на основе тестируемого ПО.
Юнит-тестирование
Юнит-тестирование включает тестирование самого маленького модуля или блока кода - юнита. Юнит программного обеспечения определен как набор сегментов кода, которые составляют модуль или функцию. Модуль может быть экранами для приложения GUI или быть самым маленьким блоком кода.
Интеграционное тестирование
Интеграционное тестирование тестирует приложение в целом при идентификации проблем с коммуникацией программы. Оно выполняется, чтобы протестировать интерфейс среди модулей. Обновление базы данных, а также функциональные проблемы, которые не найдены юнит-тестированием, обычно идентифицируются в интеграционном тестировании.
Приемочные испытания
Приемочные испытания тестируют систему в целом, чтобы гарантировать ее соответствие установленным бизнес-требованиям. Очень часто проводится непосредственно клиентом. Этот тип тестирования проверяет, работает ли система в определенных ограничениях,и гарантирует удовлетворение потребностей организации и конечного пользователя/клиента.
Регрессивное тестирование
Регрессивное тестирование - тестирование ПО после того, как было проведено тестирование новых фич. Это процесс тестирования системы после того, как в новую версию программы были внесены определенные изменения, и он должен гарантировать отсутствие багов в тех частях системы, в которых изменения не коснулись. Чем больше различие между версиями, тем менее эффективный регрессивный тест.
Источник: http://www.c-sharpcorner.com/UploadFile/6f0898/importance-of-testing-in-developer-point-of-view/
Об'єкти ADO.NET (Частина I)
Автор: Редакция ITVDN
ADO.NET разработан, чтобы помочь разработчикам эффективно работать с многоуровневыми базами данных через интернет или Интернет сценарии.
Объектная модель ADO.NET состоит из двух основных компонентов:
Соединенная модель (.NET Data Provider - ряд компонентов, включая Connection, Command, DataReader, и объекты DataAdapter)
Отсоединенная модель (DataSet).
Connection
Объект Connection - первый компонент ADO.NET. Connection открывает соединение с Вашим источником данных.
Все конфигурируемые аспекты соединения с базой данных представлены в объекте Connection, который включает ConnectionString и ConnectionTimeout.
Объект Connection также помогает в доступе и управлении базой данных. Транзакции базы данных также зависят от объекта Connection.
В ADO.NET тип Connection зависит, на какой системе баз данных Вы работаете.
Часто используемые подключения в ADO.NET:
SqlConnection
OleDbConnection
OdbcConnection
Command
Объект Command используется, чтобы выполнить действие с источником данных. Объект Command может выполнить команды T-SQL и хранимые процедуры.
Вы можете выполнить SQL-запросы, чтобы возвратить данные в DataSet или объекты DataReader. Объект Command выполняет стандартные Select, Insert, Delete и Update T-SQL операции.
DataReader
DataReader построен как способ получить и изучить строки, возвращенные в ответ на ваш запрос как можно быстрее.
На самом деле, в DataSet не создается более, чем одна строка информации из источника данных в памяти одновременно. Это делает DataReader эффективным при возвращении больших объемов данных.
Данные, возвращаемые DataReader, всегда только для чтения. Этот класс был построен, чтобы он был однонаправленным, только для чтения способ быстрого запуска данных (это называлось «пожарный шланг» (firehose) в ADO).
Однако, если Вы должны управлять схемой или использовать некоторые функции усовершенствования дисплея, такие как автоматическая разбивка на страницы, Вы должны использовать DataAdapter и DataSet.
DataAdapter
DataAdapter принимает результаты запроса базы данных от объекта Command и продвигает их в DataSet, используя метод DataAdapter.Fill(). Кроме того, метод DataAdapter.Update() согласует любые изменения в DataSet и возвращает к первоначальному источнику данных.
DataAdapter объект работает в подсоединяемой модели. DataAdapter выполняет пять следующих шагов:
Создание/откройте соединений
Выбор данных в соответствии с указанной командой
Создание XML-файла данных
Заполнение данных в DataSet.
Тесное соединение.
Command Builder
Используется для того, чтобы сохранить изменения, внесенные в кэш-память данных по backend. Работа Command Builder должна генерировать Command согласно изменениям в DataRows.
Разработчик команды генерирует команду на основе состояния строки. Есть пять состояний строки:
Unchanged (Без изменений)
Added (Добавленный)
Deleted (Удаленный)
Modified (Измененный)
Detached (Отдельный)
Command Builder работает на добавление, удаление и изменение строки состояния.
Detached (Отдельный) используется, когда объект не создается из строки состояния.
Transaction
Объект Transaction используется, чтобы выполнить транзакцию backend.
У класса Connection есть метод BeginTransaction, который может использоваться, чтобы создать Transaction.
Определенная успешная практика должна гарантировать, что Transaction размещен в Using statements для быстрой очистки, если они не фиксируются. Иначе объекты (и любые внутренние блокировки, которые могут быть необходимы) останутся активными, пока GC не найдет время для его очистки.
Parameters
Объект Parameter используется, чтобы решить проблему SQL Injection attack при контакте с пользователем входных параметров.
Объект Parameter позволяет передачу параметров в объект Command, класс Parameter позволяет Вам быстро помещать параметры в запрос без конкатенации строк.
Источник: http://www.c-sharpcorner.com/UploadFile/puranindia/ado-net-objects-part-i/
Правила застосування основних тегів HTML5
Автор: Антон Гончаров
Введение
Все мы уже знаем (ну или что-то слышали об) основных правила применения элементов разметки HTML5. Появилось много "плюшек" и “вкусностей” в новой спецификации HTML. Вместе с тем, появились новые элементы разметки. Но не все помнят/знают, как их использовать правильно.
Коротко остановлюсь на главных нововведениях HTML5:
Новые элементы: header, footer, section, article, video, audio, progress, nav, meter, time, aside, canvas;
Новые значения для атрибута type тега ;
Новые атрибуты HTML5 для элементов, такие как: dragable, contenteditable, hidden, contextmenu, data-*, dropzone, role, spellcheck[8] и т.д.;
Атрибуты class, dir, id, lang, style, tabindex, title, существовавшие в HTML4, теперь можно применять ко всем елементам HTML разметки;
Устаревшие элементы HTML страницы, которые частично поддерживаются и не рекомендуются к ипользованию: acronym, applet, basefont, big, center, dir, font, frame, frameset, isindex, noframes, strike, tt, u.
Итак, более детально рассмотрим, как же правильно использовать основные новые теги.
Элемент
Элемент <main>содержит главную информацию вашего сайта. Такие повторяющиеся элементы как логотип, окно поиска, меню навигации не рекомендуется вкладывать в <main>. Также не стоит помещать сам элемент <main> внутрь элементов <article>, <aside>, <header>, <footer> или <nav>.
Элемент
В элемент <article> следует помещать тот контент, который может быть удален без ущерба для всего сайта. К примеру, краткое описание новостей, рекламный баннер, статья, комментарии. Можно вкладывать <article> в <article>, что будет связывать вложенные элементы <article> с родительским.
Элемент
Элемент <header>, как понятно из названия, используется для оглавления отдельного контента или всей страницы. Должен содержать заглавие, дату статьи и т.д.
Элемент
Элемент <footer> служит для предоставления информации об авторе статьи/страницы, ссылки на авторские права и т.д. Обычно является прямым потоком тега <body> (помещается сразу за элемент <body>).
Элемент
Этот элемент содержит информацию об окружающем контенте, дополнительную информацию пользователю. Может содержать такой элемент, как <nav>, сноски, ссылки и т.д.
Элемент
Предназначен для предоставления контактной информации о статье или всей странице. Стоит отметить, что этот элемент часто помещают в
, для размещения ссылок для связи с авторами страницы.
Элемент
Элемент <nsfw> (англ. - Not Safe For Work – небезопасно для отработки) используется для размещения на странице контента сомнительного характера. Часто этот тег используют для размещения порнографии. Чтобы браузер не отображал такой контент, используют CSS код
nsfw {display: none ;}
Элемент
Элемент предназначен для размещения видео контента на странице. Для корректного отображения контента стоит прописать дополнительно атрибуты width, height, src, controls. Ваш код будет выглядеть примерно так:
<video width="840" height="480" src="../video/myVideo.mp4" controls> video>
Если же Вы хотите разместить у себя на странице видео, которое расположено на сайте youtube.com.
Вам стоит зайти на страницу c видео, правой кнопкой мыши нажать на видео, и из выпадающего меню выбрать “Получить код для встраивания”.
Копировать код из “попап” окошка.
В разметке вашего сайта, в нужном вам месте, кликнуть правой кнопкой мыши и выбрать “Вставить”.
У вас получится примерно такой код:
<iframe width="854" height="510" src="https://www.youtube.com/embed/_giinWWrNlQ" frameborder="0" allowfullscreen>iframe>
В свою очередь, элемент > создает область, которая позволяет загружать любой документ в себя.
Элемент
Элемент <audio> позволяет добавить на страницу аудио дорожки.
Также в HTML5:
Реализована возможность добавления на станицу геолокационных карт, а также определения местоположения пользователя в данный момент.
Теперь мы можем рисовать с помощью технологии canvas. А также использовать 3D графику.
Стало возможным просто перетягивать документы и прикреплять к письму.
И еще много новых "плюшек", которые вы можете узнать и научиться их использовать, пройдя наши курсы в учебном центре CyberBionic Systematics.
Всем удачи и хорошего кода)
Забезпечення якості ПЗ та тестування: що в них загального та різного?
Автор: Редакция ITVDN
Введение
Статья приводит примеры и доводы, которые способны развеять некоторые распространенные заблуждения, касающиеся роли тестирования и обеспечения качества ПО (SQA), а также выработать рекомендации для успеха SQA-команд.
Условия тестирования и обеспечения качества ПО (QA) часто используются в IT-индустрии профессионалами тестирования (часто классифицируемыми как профессионалы по обеспечению качества).
Несмотря на то, что оба понятия видят общей целью качество продукта, принципиальное различие между ними состоит в том, что тестирование проводится после того, как продукт был создан или в случае статических испытаний после того, как документ был написан. В отличие от этого контроль качества подразумевает деятельность, которая обеспечивает качество продукта на всех этапах его создания.
Чтобы оценить различия между тестированием и QA, важно сначала понять тесно связанные с ними понятия - контроль качества (QС) и обеспечение качества (QA).
Контроль Качества (QС)
ISO9000 определяет Контроль Качества (QС) как часть менеджмента самого качества, сосредоточенную на выполнении требований по отношению к оценке количества багов (при их наличии) в продукте. Контроль качества представляет собой набор процессов/действий, направленных на оценку разработанного продукта (проекта документа, системы развития и т. д.) и показатель соответствия требованиям заказчика. Это гарантирует проверку поставляемой продукции на качество и определяет, насколько хорошо она продумана и создана. Его цель заключается в поисках дефектов и обеспечении их исправления. Таким образом, тестирование является неотъемлемой частью контроля качества.
FIGURE 1
Обеспечение качества (QA)
ISO9000 определяет обеспечение качества ПО как часть менеджмента качества, ориентированную на создание уверенности в том, что требования к устранению багов будут выполнены. Целью QA является обеспечение гарантии того, что продукт будет соответствовать ожиданиям качества заказчика. Она состоит из процессов/действий, направленных на обеспечение качества разработки продукта на каждом из его этапов. Эти действия, как правило, предшествуют развитию продукта и продолжаются, пока процесс пребывает в состоянии развития. На самом QA лежит ответственность за разработку и внедрение процессов и стандартов для улучшения жизненного цикла разработки, и обеспечение уверенности в том, что эти процессы выполняются. Фокусом QA является предотвращение дефектов на всех этапах его реализации и постоянное его совершенствование. В то время, как QA является активной деятельностью, QC – наоборот, пассивной. Примеры деятельности по обеспечению качества включают установление стандартов и процессов, проверки качества и выбор инструментов.
FIGURE 2
Отличия между обязанностями QA команд и тестировщиков:
Тестировщики выполняют планирование тестирования, анализ результатов испытаний, проверку тестов, проверки и тестирования отчетности через различные уровни испытаний.
В отличие от этого, QA-команды выполняют следующие функции:
Реализация организационной политики касаемо качества, стандартов и процессов;
Оказание помощи с подготовкой в области обеспечения качества и планов обеспечения качества проекта;
Проверка соответствия процессов проекта планам качества;
Проведение регулярных проверок проектных продуктов и процессов, а также представление регулярных оценок для высшего руководства;
Эскалация ситуации, когда есть отклонения от руководящих принципов или стандартов.
Ведут контроль за:
Выполнением независимых обзоров;
Наличием процедур управления изменениями проектов;
Наличием процедур управления конфигурациями проектов;
Наличием ретроспективы того, что процессы планируются и воплощаются;
Обеспечением уверенности в качестве путем развития системы жизненного цикла;
Проведением непрерывных улучшений в процессе контроля качества и воплощением рекомендаций, основанных на усвоенных ранее уроках.
Эти атрибуты определяются как QA-обязанности команды, но следует отметить, что это не означает их развитие командой QA, а, скорее, обеспечение их реализации в манере, которая является "пригодной для целей".
В рамках своей роли по контролю качества тестировщики могут выдвигать требования по проверке образцов документов проекта, деятельности по управлению конфигурациями программного обеспечения, дизайна, кода и т.д.
Отличия между планированием испытаний и документацией в тестировании и QA:
Тестировщики подготавливают тестовые стратегии и планы, основанные на базовых тест-документах, таких как бизнес-требования и проектные решения. Эти документы планирования тестирования являются основой испытания процессов на различных запланированных испытательных уровнях. Эти уровни и есть тест приемки, вход и критерии выходов между уровнями, подробные графики испытаний, экологические требования, управление дефектами, управление тестированием и ведение отчетности.
В отличии от этого, обеспечение качества программного продукта или планы качества включают более широкий набор действий на протяжении всех этапов разработки. Это играет свою роль в разработке методологий управления проектами, например Prince2, которая поощряет использование планов по качеству проекта и журналов качества, которые были разработаны в начале жизненного цикла, при инициировании проекта.
Типичный проект плана качества включает в себя ожидания клиентов, критерии приемки, плановый контроль качества и аудита процессов, планы управления конфигурациями и процедуры управления изменениями. Планы по качеству для проектов используют политику самой организации в этой сфере, стандарты или руководящие принципы, являющие собой основы обеспечения качества.
Мониторинг плана обеспечения качества проекта в ходе создания проекта осуществляется беспрерывно и обновляет результаты планируемого качества деятельности в журнале.
Существуют различные точки пересечения между управлением рисками и качеством, и поэтому реестр рисков может сделать весомый взнос в подготовку планов по качеству.
Кто выполняет функцию обеспечения качества в организации
Потребность в команде по обеспечению качества программного обеспечения растет с размером организации и уровнем ее политики в области качества. Там, где требуется такая команда, очень важно, чтобы функция QA оставалась независимой от проекта и оперативных групп. Их линия связи, однако, должна предоставлять им мощную поддержку именно в том виде, в каком это требуется.
Некоторые организации имеют функцию QA, встроенную в их предприятия отдельным звеном - Офисом управления проектами. Это отвечает критериям независимости, однако, организации, что следуют этой модели, необходимо убедиться, что эта команда состоит из обученных и/или специализированных аналитиков по обеспечению качества.
Наблюдения и рекомендации для успешных QA-команд
В то время как Вы берете на себя ответственность за обеспечение качества программного обеспечения, Вы можете испытать целый ряд проблем. Некоторые из этих проблем очерчены ниже.
Независимость
Чтобы быть успешными, QA-команды должны быть независимыми от проекта и оперативных групп. Это обеспечивает команде возможность проведения объективной оценки проектов.
Возникает вопрос: следует ли функциям тестирования и QA находиться в одной команде? Это может хорошо работать в небольших организациях, однако появляется недостаток в виде создания возможного конфликта интересов при мониторинге деятельности тестирования. Это и подчеркивает заблуждение в том, что тестирование и QA являются синонимическими понятиями.
Решение проблемы: в зависимости от политики самой организации в сфере качества, она может иметь отдельную команду отчетности для старшего менеджера, отвечающего за функции.
Отношения внутри команды
Если аналитики обеспечения качества слишком процессно-ориентированные и настаивают на процессах или документации, которые могут не иметь особого значения, это может ухудшать отношения с руководителями проекта.
QA-команде будет намного легче работать с проектными группами, если они держат в уме "пригодный для целей" принцип. Предоставление помощи и содействия проектных команд формирует основу для поддержания хороших отношений, что является важным аспектом успешного тестирования.
Завлечение нужных людей
Еще один ингредиент для успешной деятельности QA-команд – качественная кадровая политика. Люди с опытом в области разработки жизненного цикла системы или программного обеспечения, будут хорошими кандидатами для роли в QA. Некоторые знания в рамках ISO и принципов CMMI дополнили бы знания того, кто уже имеет опыт в развитии процесса и неподдельный интерес к качеству.
Контрольные списки
Стандартные контрольные списки являются полезным механизмом для проведения аудита проектов, особенно если они разработаны в соответствии с фазами жизненного цикла разработки. Например, на этапе проектирования в перечень вопросов может быть снесено: "Есть ли прослеживаемость между дизайном и требованиями элементов?"
Чтобы избежать разочарования менеджеров проекта, важно обеспечение участия в проекте заинтересованных сторон, чтобы получить от них обратную связь, когда будут предложения по внесению в перечни изменений.
Связь и отчетность
Хотя регулярная отчетность для высшего руководства очень важна, разработка правильных шаблонов и показателей, обеспечение топ-менеджеров требуемой информацией гарантирует, что этим отчетам уделяется должное внимание. Это лучше всего достигается путем проведения встреч с соответствующими представителями высшего руководства, предоставления им отчетов и получения от них отзывов и комментариев.
Командам QA необходимо постоянно получать одобрение внесения изменений в процессы контроля качества и стандартов и обеспечивать эффективное взаимодействие с заинтересованными сторонами.
Постоянное совершенствование
Уроки, извлеченные из проектов, обеспечивают QA-команду основой для оценки процессов и рекомендациями по обеспечению качества, включая постоянные улучшения. Это включает разработку перечней, гибкость, поддерживаемость хороших отношений с заинтересованными сторонами и внесения улучшений в управленческую отчетность.
Так, непрерывные усовершенствования могут также потребовать внесения изменений в методологии разработки системы, потому QA-командам рекомендуется сохранять методологию разработки ИТ-отдела.
Преимущества
Успешная QA-команда может добавить значительную ценность для организации. Некоторые из этих преимуществ включают в себя:
Повышение качества производимой продукции
Последовательность в процесах, используемых для доставки
Продолжение совершенствования организации процессов
Снижение общих расходов на доставку
Увеличение приложений для документаци по поддержке продукта
Недостатки
Первоначальные затраты в штатном расписании аналитиков обеспечения качества ПО
Усложнение процессов, которые могут генерировать разочарование в некоторых сотрудниках
Выводы
Сопоставление различий в деятельности и ответственности между контролем качества и обеспечением качества дает им хорошую оценку в различных условиях. QC подтверждает, что конкретные результат отвечают стандартам и спецификациям. В отличие от этого, QA является более широкой функцией, что охватывает планирование и контроль на протяжении всего жизненного цикла разработки. Тестирование, с другой стороны, является неотъемлемой частью контроля качества. Для того, чтобы организация эффективно осуществляла процессы управления качеством, эти потоки должны работать в тандеме.
Источник: http://www.planit.net.au/resource/software-quality-assurance-is-it-the-same-as-testing/
Асинхронне програмування JavaScript. Використання Deferred та Promise.
Автор: Дмитро Охріменко
Введение
В современном JavaScript приложении встречается много задач, которые выполняются асинхронно (обращение к серверу, анимация, работа с файловой системой, геолокация). В данной статье будут рассмотрены Promise объекты, как один из вариантов организации асинхронного кода.
Асинхронное программирование в JavaScript
Асинхронное программирование в JavaScript не связано с многопоточностью. JavaScript – однопоточный, это означает, что не существует стандартных языковых конструкций, которые позволят создать в приложении дополнительный поток для выполнения параллельных вычислений (единственная возможность организовать настоящую многопоточность – использовать Web Workers). Асинхронное программирование – стиль программирования, при котором результат работы функций доступен не сразу, а через некоторое время. Асинхронная функция – это функция, после вызова которой JavaScript приложение продолжает работать, потому что функция сразу выполняет возврат. Результат работы асинхронной функции становится известным позже, и для того, чтобы оповестить наше приложении о полученных значениях, асинхронная функция вызывает другую функцию (callback), которую мы передаем в аргументах при запуске.
Например, getDataFromServer(onSuccess); getDataFromServer – асинхронная функция, выполняющая запрос на сервер, onSuccess – callback функция или функция обратного вызова, которая запускается при успешном завершении операции обращения к серверу.
Использование callback функций может привести к появлению проблемы, которую называют Pyramid of Doom – callback функция, в которой вызывается асинхронная функция, которой передается callback функция, и в ней же вызывается асинхронная функция и т.д.
step1(function(result1) {
step2(function(result2) {
step3(function(result3) {
// и т.д.
});
});
});
Такой код тяжело читать и сопровождать. Для того, чтобы подобных проблем не было , мы можем использовать различные шаблоны для организации кода. Один из таких шаблонов - Promise. (Другие варианты организации асинхронного кода можно посмотреть в этой статье)
Что такое Promise (ECMAScript 6)
Promise – прокси объект, который представляет еще не известное значение (значение будет доступно после завершения асинхронной операции). С Promise можно ассоциировать две функции: первая - для выполнения операции, если асинхронная задача завершилась успешно. И вторая - для операции в случае ошибки.
Promise может находиться в одном из трех состояний:
pending;
fulfilled;
rejected.
Например, мы выполняем AJAX запрос с помощью асинхронной функции, которая возвращает Promise. Как только мы выполним запрос, функция создаст Promise, который будет в состоянии pending. Когда сервер вернет ответ, Promise перейдет в состояние fulfilled, если ответ был 200 OK, или в состояние rejected, если статус код был 500 Internal Server Error (или другой код ошибки). При переходе в fullfiled состояние Promise будет содержать ответ от сервера, при переходе в rejected – ошибку или текст ошибки (все зависит от реализации асинхронной функции).
Как только Promise меняет свое состояние, запускается функция, которая была зарегистрирована как реакция на соответствующее состояние.
Пример использования асинхронной функции download, которая возвращает Promise:
download("data.txt").then(function (data) {
console.log(data);
}, function (error) {
console.error(error);
});
или такая запись
var p = download("data.txt");
p.then(onFulfilled, onRejected);
function onFulfilled(data) {
console.log(data);
}
function onRejected(error) {
console.error(error);
}
Для того, чтобы установить, что произойдет после завершения асинхронной операции, на объекте Promise необходимо вызвать метод then. Этот метод принимает два аргумента:
обработчик для состояния fulfilled
обработчик для состояния rejected
Функцию then можно вызвать в любой момент, даже если асинхронная операция уже завершена и Promise перешел из состояния pending. Если вызвать then на Promise, который уже находится в конкретном состоянии, то будет вызвана соответствующая состоянию функция, переданная в метод then.
Ниже приведен код асинхронной функции download.
function download(url) {
// Создание нового объекта Promise
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function () {
if (req.status == 200) {
// перевод Promise в состояние fulfilled.
// req.response - данные доступные в функции-обработчике
// перехода состояния
resolve(req.response);
}
else {
// перевод Promise в состояние rejected
reject(Error(req.statusText));
}
};
// Обработка сетевых ошибок
req.onerror = function () {
// перевод Promise в состояние rejected
reject(Error("Network Error"));
};
// отправка запроса на сервер
req.send();
});
}
Поддержка Promise браузерами http://caniuse.com/#search=Promise
Библиотеки для работы с Promise
Есть много различных библиотек, которые реализуют спецификацию объекта Promise. Поэтому проблему слабой поддержки Promise ECMAScript 6 можно решить, применив одну из следующих библиотек:
jQuery http://jquery.com/
Q https://github.com/kriskowal/q
When https://github.com/cujojs/when
WinJs http://msdn.microsoft.com/en-us/library/windows/apps/br211867.aspx
RSVP.js https://github.com/tildeio/rsvp.js
Прості події
Автор: Костянтин Чорний
Введение
При разработке компьютерных систем и программ, в том числе таких, в которых функционирует множество оригинальных сущностей и их дублей – экземпляров, возникает проблема отслеживания связей взаимодействия между этими объектами. И чем больше появляется этих объектов , тем сложнее вписать их в структуру приложения. Да, можно сказать что здесь явные проблемы с архитектурой и так не должно быть, но все равно мы наталкиваемся на проблему создания крупной многообъектной системы с гибкими динамическими связями и адаптивным поведением. Лучшее решение – событийно-ориентированное программирование!
Итак, событие – это внезапное происшествие, появление которого нельзя предугадать, а можно только к нему готовиться. В подобном русле работает и человеческих мозг. Он ожидает появления события и, когда оно происходит, как-то на него реагирует.
Давайте рассмотрим небольшой мысленный эксперимент. Представьте дорогу, пешеходный переход и светофор, который регулирует переход в данном месте. Светофор – это объект, который порождает событие. Он по воле своего внутреннего устройства будет включать или отключать зеленый свет, который будет разрешать пешеходам переход через улицу.
В это время на тротуаре начинают собираться люди. Каждый человек – это объект, содержащий специфическое поведение, которое называется обработчиком события. В данном случае этот обработчик будет отвечать за пересечение улицы и будет вызываться во время возникновения события. У каждого человека обработчик разный, ведь все люди переходят через улицу по-разному. Один будет идти быстро, другой медленно, третий - смотреть на машины, которые стоят на перекрестке, а четвертый - следить за таймером, который будет отсчитывать секунды. Но каждый из них не предполагает, когда конкретно произойдет это событие, потому все они ждут на тротуаре.
Когда человек подходит к переходу, он подписывает свой обработчик события перехода дороги на конкретное событие этого светофора. Если человек передумает переходить или, например, отойдет поговорить по телефону, то он не будет выполнять свой обработчик, если событие возникнет.
И, наконец, когда светофор включается на зеленый, все люди начинают переходить дорогу. Возникло событие – выполнился обработчик.
Что-же нам позволяет сделать событийную модель? Она разрешает динамически изменять связи между объектами и не только расторгать или устанавливать их, но и менять характер самого действия.
Давайте рассмотрим пример создания события на языке C#.
namespace TrafficLight
{
// Светофор
public class Light
{
// Событие появления зеленого света
public event EventHandler Green;
// Метод который вызывает событие
public void SwichToGreen()
{
Green.Invoke(this, new EventArgs());
}
}
// Человек
public class Human
{
public string Name { get; private set; }
public Human(string name)
{
Name = name;
}
// Метод обработчик события перехода через дорогу
public void CrossingTheRoad(object sender, EventArgs e)
{
Console.WriteLine(this.Name + " crossing!");
}
}
class Program
{
static void Main(string[] args)
{
// Создание светофора
Light light = new Light();
// Создание людей
Human human1 = new Human("Alex");
Human human2 = new Human("Bob");
Human human3 = new Human("Alice");
// Подписка на событие
light.Green += human1.CrossingTheRoad;
light.Green += human2.CrossingTheRoad;
light.Green += human3.CrossingTheRoad;
// Вызов события
light.SwichToGreen();
Console.ReadKey();
}
}
}
Таким образом, язык C# позволяет быстро и легко создавать приложения, которые используют событийную модель. Более подробно узнать о событиях Вы можете в двенадцатом уроке курса C# Базовый.
Для практики можете создать небольшую игру с игровыми объектами, взаимодействующими посредством событий.
5 важливих речей, які Вам необхідно знати про веб-розробку
Автор: Редакция ITVDN
1. Используйте сброс CSS стилей в браузерах (Reset CSS)
Различные браузеры по-разному устанавливают шрифты, поля и другие свойства. Вместо того, чтобы устранять каждый элемент по одному, большинство разработчиков используют “Reset CSS” стиля для сброса таких параметров, как margin, border, font-size и других.
Примеры и библиотеки для сброса CSS:
Eric Meyer
Yahoo!
Crucial
2. Используйте средства разработки браузера и дополнительные плагины.
Очень полезно при разработке визуализировать «невидимые» части веб-страницы, например, свойства - margin, padding, parent positions и так далее. Вместо того, чтобы спрашивать себя, почему функция остановилась или неверно задан border style, рекомендуется использовать встроенные средства веб-разработки или использовать плагины для браузера.
Firebug – плагин для браузера Firefox. Фантастическая и бесценная вещь при разработке страницы.
Yahoo!'s YSlow – Плагин для Firebug для проверки скорости загрузки страницы.
3. Выучите JavaScript
JavaScript является языком высокого уровня, где автоматически выполняется установка и компилирование. Он подходит для людей даже без опыта программирования.
С появлением AJAX, JS становится очень важной частью современных веб приложений.
4. Выучите Photoshop
Photoshop - необходимая вещь для каждого разработчика. Используя различные инструменты программы, Вы можете создать как отдельную часть дизайна, например, кнопку, так и полноценный дизайн, который не только произведет впечатление на клиентов, но и позволит Вам проявить Ваше творчество.
5. Тестируйте Ваш продукт на IE
30% пользователей интернета до сих пор используют данный браузер для просмотра контента. К сожалению, Internet Explorer на данный момент не получил стандартов HTML, и веб разработчики должны учитывать это в своих продуктах.
Проверяйте Ваш продукт на всех браузерах. Например, Firefox имеет полную поддержку стандарта HTML, в то время как Internet Explorer только продолжает развиваться.
Источник: http://www.hackification.com/2008/11/06/ten-web-development-tips-i-wish-id-known-two-years-ago/
Основи ADO.NET
Автор: Редакция ITVDN
Введение
ADO.NET – это набор классов (фреймворк) для работы с базами данных, а также XML файлами. Аббревиатура ADO расшифровывается как ActiveX Data Objects. Данная технология имеет методы и классы для извлечения и обработки данных.
Список .NET приложений, которые используют возможности ADO.NET для различных действий с БД:
ASP.NET Web Applications
Console Applications
Windows Applications.
Структуры подсоединения к БД
Можно определить два типа архитектуры подключения:
Архитектура, подключенная к базе: подсоединена к БД на протяжении всего рабочего времени.
Архитектура, не подсоединённая к БД: приложение, автоматически подключается/отключается в процессе работы. Приложения на такой архитектуре используют временные данные, хранящиеся на стороне клиента (DataSet).
ADO.NET и его библиотеки классов
На данной диаграмме видны различные типы приложений (Веб приложения, консольные приложения, приложения для Windows и так далее), использующие ADO.NET для подсоединения к БД (SQL Server, Oracle, OleDb, ODBC, XML-файлы и так далее).
Классы в ADO.NET
Также на предыдущем рисунке мы видим различные классы, а именно:
Connection Class
Command Class
DataReader Class
DataAdaptor Class
DataSet.Class
1. Connection Class
Данные классы применяются в ADO.NET для подсоединения к БД.
2. Command Class
Данный класс обеспечивает хранение и выполнение SQL команд. Ниже приведены различные команды, выполняющиеся с помощью данного класса.
ExecuteReader: Возвращает данные к клиенту в виде строк.
ExecuteNonQuery: Выполняет команду, изменяющую данные в базе данных.
ExecuteScalar: Данный класс возвращает только одно значение.
ExecuteXMLReader: (Только для классов SqlClient) Получает данные из базы данных SQL Server 2000 с помощью XML-потока.
3. DataReader Class
DataReader используется для получения данных. Он используется в сочетании с Command Class для выполнения SQL-запроса.
5. DataSet Class
Класс DataSet – сердце ADO.NET, представляющее из себя набор объектов DataTable. Каждый такой объект содержит много объектов DataColumn и DataRow.
Подключение ADO.NET к базе данных
Для настройки подключения Вы должны быть знакомы со строками подключения (connection strings). ConnectionString – строка переменной (регистр не учитывается). Строки подключения нужны нам для параметра SQLConnection. Данные примеры содержат основные значения, а именно: provider, server, database, userid и password.
SQL Аутентификация
String constr="server=.;database=institute;user id=rakesh;password=abc@123";
Или:
String constr="data source=.;initial catalog=institute;uid=rakesh;pwd=abc@213";
Windows Аутентификация (Windows Authentication)
String constr="server=.;database=institute;trusted_connection=true"
Или:
String constr="server=.;initial catalog=institute;integrated security=true"
Получение и отображение данных из базы данных
Получить и отобразить данные можно по такой схеме:
Создайте объект SqlConnection, используя строку подключения.
Откройте соединение.
Создайте SQLCommand. Укажите тип SQLCommand.
Выполните команду (используйте executereader).
Получить результат (используйте SqlDataReader).
Закройте соединение.
Получите результат.
Ниже приведен код для подсоединения к SQL:
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.OracleClient;
using System.Data.OleDb;
using System.Data.Odbc;
namespace AdoDemo
{
public partial class WebForml : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("data source=.; database=Sample; integrated security=SSPI");
SqlCommand cmd = new SqlCommand("Select * from tblProduct", con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
GridView1.DataSource = rdr;
GridView1.DataBind();
con.Close();
}
}
}
Вы должны использовать System.Data.SqlClient для подключения к SQL. В предыдущем коде мы использовали классы SqlConnection, SqlCommand и SqlDataReader, потому что наше приложение обращалось к SQL Server, а он понимает только SQL.
Подключение к базе данных Oracle
При подключении к БД Oracle Вам нужно изменить имя некоторых классов, а именно SqlConnection на OracleConnection, SqlCommand на OracleCommand и SqlDataReader на OracleDataReader. Также вначале используйте System.Data.OracleClient.
Источник: http://www.c-sharpcorner.com/UploadFile/18fc30/understanding-the-basics-of-ado-net/
Швидко вчимося рахувати у двійковій та шістнадцятковій системі
Автор: Костянтин Чорний
Вступ
Іноді виникає потреба швидко прочитати чи записати числа у двійковій чи шістнадцятковій системі числення, наприклад, працюючи з різними байтовими редакторами, під час розрахунків формул з побітовими операціями чи роботі з кольором. Часто в таких ситуаціях немає можливості довго переводити числа за допомогою формул або калькулятора. Про швидкі способи переходу між системами числення йтиметься у цій статті.
Перехід від десяткової системи до двійкової
Перший випадок – рахуємо від десяткової системи до двійкової. Основне, що потрібно пам'ятати в даному випадку – це ряд ступенів двійки (1, 2, 4, 8, 16, 32, 64, 128 і т. д.). Навіть якщо його ви не знаєте, то можна просто кожне наступне число множити на двійку. Оскільки молодші розряди йдуть праворуч, а старші – ліворуч, то їх записуватимемо у зворотному порядку справа наліво.
Для прикладу будемо переводити число 115. Далі дивимося, якщо значення розряду вміщується в число, то віднімаємо від нього це значення і ставимо в цьому розряді 1, інакше ставимо 0.
Зворотний переклад ще простіше – треба підсумувати всі значення розрядів, які відзначені одиничками: 64+32+16+2+1=115.
Перехід до шістнадцяткової системи
Тепер давайте розберемося із шістнадцятковою системою. Маючи на увазі те, що кількість чисел, які кодуються тетрадою (4 біти) і одним шістнадцятковим символом співпадають, відповідно кожен символ кодує одну двійкову тетраду.
В результаті одержали число 0х73. Головне пам'ятати, що А=10, B=11, C=12, D=13, E=14, F=15.
Якщо є потреба перевести десяткове число в шістнадцяткове або навпаки, то тут найпростіше спочатку буде перевести число в двійкове уявлення, а потім тільки в шістнадцяткове або десяткове відповідно.
У результаті ми навчилися швидко переводити числа з однієї системи числення до іншої. Головне, що потрібно пам'ятати – ступені двійки і вміти гарно додавати та віднімати. Детальніше про машинну математику ви можете дізнатись у другому уроці курсу C# Стартовий.
Попрактикуйтеся самостійно і переведіть кілька чисел з однієї системи до іншої, звіряючись з калькулятором. Трохи практики – і ви всьому навчитеся.
Оновлення для ASP.NET vNext, .NET Native та RyuJIT
Автор: Редакция ITVDN
Введение
В августе 2014 года были обновлены продукты, работающие на .NET, а именно: ASP.NET vNext, .NET Native и RyuJIT.
ASP.NET vNext
ASP.NET vNext - обновленная версия ASP.NET, используемая для создания клиент-серверных приложений. Разработчики продолжают добавлять новые функции и улучшают разработку ASP.NET vNext приложений, написанных в Visual Studio 14.
Список преимуществ, почему ASP.NET vNext лучше выбирать в качестве веб-платформы:
Единое и улучшенное API для MVC и Web API.
Значительно улучшена производительность при запуске и пропускная способность.
Полная поддержка .NET Framework.
Компоненты ASP.NET vNext не надо регистрировать, потому что конфигурационные сведения уже встроены.
Поддерживает работу с Mono на Mac и Linux
Новые функции
Минимальный Формат Проекта «Minimal Project Format»
Формат проекта ASP.NET (kjproj) также был обновлен.
Новый функционал теперь будет влиять на работу внутри проекта Visual Studio:
Легкий контроль всех исходников, так как kproj не будет изменятся при добавлении, перемещении или переименовании файла.
Улучшенный опыт использования командной строки Visual Studio и ASP.NET, поскольку среда разработки не нуждается в списке файлов. Это хорошо работает, когда над проектом работают один-два человека.
Поддержка Модульного Тестирования «Unit Testing Support»
Была добавлена базовая поддержка для модульного тестирования, теперь можно использовать любой фреймворк для тестирования. Разработчиками создана первоначальная поддержка xUnit, работающая в рамках текущего Visual Studio Test Explorer.
Скаффолдинг «Scaffolding»
ASP.NET Scaffolding – это фреймворк для генерации кода, используемый в ASP.NET веб приложениях. Его использование позволяет сократить время разработки конфигурационных файлов для приложений.
Новая версия позволяет добавить первоначальную поддержку фреймворка в ASP.NET vNext, а также создавать собственный скаффолдинг для генерации контента.
Обновленный домашний репозиторий «Update Home Repo»
“Home Repo” – Ваш репозиторий на Github для командной строки ASP.NET vNext. В новой версии были добавлены: новая документация, примеры и скрипты. Теперь имеются простые ASP.NET vNext примеры “Home Repo” для проверки работоспособности вашей программной среды.
.NET Native
Обновление .NET Native включает в себя лимитированную поддержку “Windows Communication Foundation” (WCF). Так же были добавлены новые свойства для WCF:
CustomBinding
BasicHttpBinding
HttpTransportBindingElement
TextMessageEncodingBindingElement
ChannelFactory
ClientBase
DataContractSerializer
RyuJIT – Новое поколение JIT компиляторов
В JIT компиляторе RyuJIT обновилась исполняющая библиотека CoreCLR. Библиотека SIMD на данный момент не поддерживается, но разработчики обещают ее добавить в следующих релизах.
Подробнее про компилятор RyuJIT Вы можете узнать на ресурсе: blogs.msdn.com/b/dotnet/archive/2013/09/30/ryujit-the-next-generation-jit-compiler.aspx
Ознакомиться со всеми обновленными продуктами можно в Visual Studio 2014 или Visual Studio 2015 Preview.
Источник: blog.msdn.com