Архив за 07 июня 2013

Введение от автора поста

Имея опыт разработки ПО для ответственных систем более чем 8 лет, хочу познакомить сообщество с некоторыми материалами, связанными с разработкой и верификацией ПО для ответственных систем (аэрокосмическая область, медицина, транспорт и промышленность). Получив согласие на перевод и адаптирование ряда интересных статей у зарубежных коллег решил воспользоваться данным ресурсом. Буду рад, если статья заинтересует наше сообщество. В статье использованы материалы фирмы Vector Software, Inc.
На вопросы отвечу в комментариях или в личку

Какой Вы используете инструмент тестирования?

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

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

Вы не сможете оценить инструмент тестирования, прочитав его спецификацию

Все спецификации выглядят достаточно однотипно. Ключевые слова одни и те же: «лидер отрасли», «уникальная технология», «автоматизированное тестирование», «передовые методы». Скриншоты похожи друг на друга: гистограммы, структурные схемы, HTML-отчеты и процентные показатели. Все это навевает скуку.

Читать полностью »

Компания Intel представила самую быструю «Thunderbolt флешку» в мире

На выставке технологий Computex, проводимой в Тайпее, компания Intel представила весьма интересное устройство, накопитель, которое сама охарактеризовала, как «world’s fastest thumb drive». Это нечто вроде флешки, только устройство подключается к порту Thunderbolt, и работает быстрее, чем любой USB-флеш накопитель.

Читать полностью »

Компания Colorful привезла на выставку Computex 2013 3D-карту iGame 780 Kudan, показанную на снимках.

Colorful iGame GTX 780 Kudan

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

Colorful iGame GTX 780 Kudan

В конструкции охладителя насчитывается пять тепловых трубок и три вентилятора.

Игровая консоль NVIDIA Shield в работе (видео от Nvidia)

Уже около полугода прошло с тех самых пор, как компания Nvidia анонсировала свое новое и очень интересное устройство, NVIDIA Shield, позиционируемое, как портативная игровая консоль. Уже тогда было понятно, что девайс весьма мощный, производительный, и может «потянуть» таже очень требовательные к ресурсам приложения/игры. На днях компания выложила демо-видео, с демонстрацией использования консоли не как игрового гаджета, а, скажем так, необычного планшета на основе Android OS.

Читать полностью »

Ubuntu Phone уже поддерживает интернет подключение, социальные приложения, звонки и многое другое

На Хабре в свое время с радостью встретили новость о том, что Ubuntu теперь перебралась и на смартфоны. Конечно, то, что показали разработчики из Canonical в январе, еще слабо годилось для ежедневной работы, скорее, это были наметки основного проекта. С тех пор было выпущено уже много билдов, сейчас они обновляются каждые сутки, и с каждым обновлением Ubuntu Phone OS становится все более «умелой». Сейчас эта ОС уже подходит для ежедневного использования на смартфоне, благо, поддерживаются телефонные звонки (чего не было вначале), подключение к Сети через сотовую сеть, работа с социальными приложениями.

Читать полностью »

Оглавление

  1. Введение
  2. Инициализация приложений Prism
  3. Управление зависимостями между компонентами
  4. Разработка модульных приложений
  5. Реализация паттерна MVVM
  6. Продвинутые сценарии MVVM
  7. Создание пользовательского интерфейса
    1. Рекомендации по разработке пользовательского интерфейса
  8. Навигация
    1. Навигация на основе представлений (View-Based Navigation)
  9. Способы коммуникации между слабосвязанными компонентами

Навигация на основе представлений (View-Based Navigation)

Несмотря на то, что навигация на основе состояний может быть полезна в сценариях, описанных ранее, тем не менее, навигация в приложении часто требует замены одного представления на другое. В Prism, такой вид навигации называется «навигация на основе представлений (view-based navigation)».

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

  • Цель навигации — контейнер для добавляемых, или удаляемых представлений — может обрабатывать навигацию разными способами при добавлении и удалении представлений, или может визуализировать процесс навигации по-разному. Во многих случаях, целью навигации является обычный Frame, или ContentControl, и представления просто отображаются внутри этих элементов управления. Однако существует множество сценариев, когда целью навигации является другой вид элементов управления, таких как TabControl, или ListBox. В таких случаях, навигация может потребовать активации или выделения уже существующего представления, или добавление нового представления.
  • Приложению часто будет требоваться, каким-либо образом идентифицировать представление, к которому должна быть выполнена навигация. Для примера, в web-приложениях, страница, к которой выполняется навигация, напрямую идентифицируется по URI. В клиентских приложениях, представление может быть идентифицировано по имени его типа, по расположению файла ресурсов, или множеством других способов. В составных приложениях, состоящих из слабо связанных модулей, представления зачастую определены в раздельных модулях. Отдельные представления, в таких случаях, должны иметь возможность быть идентифицированы без создания дополнительных зависимостей между модулями.
  • После идентификации представления, процесс его создания и инициализации должен быть тщательно скоординирован. Это особенно важно при использовании паттерна MVVM. В таком случае, представления и соответствующая модель представления должны быть созданы и ассоциированы друг с другом во время совершения навигации. В случае использования контейнера внедрения зависимостей, такого как Unity, или MEF, при создании модели представления и/или представления может потребоваться использование особого механизма конструирования.
  • MVVM паттерн позволяет отделить UI приложения от его логики взаимодействия с пользователем и бизнес-логики. Однако процесс навигации может охватывать как UI, так и логику приложения. Пользователь может начать навигацию внутри представления, в результате чего представление будет обновлено. Но часто будет требоваться возможность инициировать и скоординировать навигацию из модели представления. Важным аспектом для рассмотрения, является способность чётко разделить навигационное поведение между представлением и моделью представления.
  • Приложению часто может потребоваться передавать параметры, или контекст, представлению для его корректной инициализации. Для примера, если пользователь производит навигацию к представлению для редактирования информации о выбранном клиенте, ID этого клиента, или его данные, должны быть переданы в представление, для отображения в нем корректной информации.
  • Многим приложениям необходимо тщательно координировать навигацию для уверенности, что будут выполнены определённые бизнес-требования. К примеру, пользователю может быть показано всплывающее сообщение о некорректности введённых им данных, во время попытки навигации к другому представлению. Этот процесс требует координации между предыдущим и новым представлениями.
  • Наконец, большинство современных приложений позволяют пользователю производить навигацию к предыдущему, или к следующему представлению. Аналогично, некоторые приложения реализуют свой рабочий процесс, используя последовательность представлений, или форм и позволяют пользователю производить по ним навигацию вперёд или назад, добавляя или редактируя данные, перед тем, как завершить задачу и отправить все сделанные изменения одним пакетом. Такие сценарии требуют некоторого механизма журналирования, для того, чтобы последовательность навигации могла быть сохранена, повторена, или предопределена.

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

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

image
Гиганты Texas Instruments (TI) упорно работают над этой проблемой, и в прошлый четверг анонсировали новые чипсеты, которые позволят улучшить существующие литий-ионные аккумуляторы. Решение, предлагаемое ими, не увеличит время работы вашего мобильного устройства от одного заряда, но поможет существенно уменьшить время заряда. «Умные» зарядные устройства, оснащенные технологией MaxLife, будут заряжать аккумуляторы до 30% быстре, и, также, увеличится срок службы аккумуляторов. Это означает, что при использовании мобильного устройства, использующего новую технологию от TI, в течение года, его аккумулятор практически не потеряет в емкости по сравнению с новым аккумулятором (li-ion аккумуляторы со временем безвозвратно теряют емкость).
Читать полностью »

Привет, сообщество!

В честь 1 миллиона своих пользователей сервис Bitbucket.org предлагает купить лимитированную серию футболок со своим брендом со скидкой 50% на дочернем сервисе компании AtlassianSwag. Стоимость такой футболки $20. Сервис (bitbucket) даёт купон на скидку $10 при приглашении в репозиторий новых пользователей.

Bitbucket выпустил лимитированную серию брендированных футболок
Читать полностью »

Позиция Яндекса о новом законопроекте о регулировании интернетаВчера в Госдуму был внесён очередной законопроект о регулировании интернета — «О внесении изменений в законодательные акты Российской Федерации по вопросам защиты интеллектуальных прав в информационно-телекоммуникационных сетях». Если вкратце, он предусматривает создание ещё одного чёрного списка — аналогичного реестру запрещённых сайтов, и блокировку сайтов, внесённых в этот список.

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

Законопроект открывает много возможностей для злоупотреблений. Вот пример одного из них. Злоумышленник, заинтересованный в закрытии сайта N, насвистывает на диктофон мелодию собственного сочинения, тем самым становясь её правообладателем. Затем он размещает фонограмму своего художественного свиста на сайте N. После этого — со скриншотом сайта N, на котором видно размещение фонограммы, — новоиспечённый правообладатель обращается в Московский городской суд. Суть обращения — на сайте N нелегально размещён объект, на который ему принадлежат права.
Читать полностью »

Если вдруг кто не в курсе, то спешу сообщить, что qmake этого не делает. Этот печальный факт может привести к крайне неприятным багам сборки, если забыть сделать полный ребилд после изменения макросов проекта.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js