Pull to refresh
  • by relevance
  • by date
  • by rating

спецификация != стандарт

Lumber room
Ну сколько можно говорить о том, что IE, Opera, Wget или еще что нибудь не поддерживает «стандарты»(с иронией) W3C?

спецификация != стандарт



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

Стандарт(от англ. standard — норма, образец) в широком смысле слова — образец, эталон, модель, принимаемые за исходные для сопоставления с ними др. подобных объектов.


Неужели не видите разницы?

А если видите, то почему постоянно жалуетесь о том, что кто то чьи то спецификации не выполняет?
Total votes 24: ↑8 and ↓16 -8
Views966
Comments 27

Пример практики BDD при работе со Specter Framework

.NET
specter-log Specter – инфраструктура для составления объектно-поведенческих спецификаций для .NET. Он предоставляет возможности для обеспечения разработки, руководствуясь поведением системы (BDD), требуя от разработчиков написания исполняемой спецификации для объектов перед написанием самих объектов. Технически это ни чем не отличается от разработки по средствам тестирования (TDD), хотя различия в форме написания снимают психологический барьер для написания “тестов” для кода, которого ещё не существует. Есть множество проектов для различных платформ, реализующих данную идею (К примеру RSpec для Ruby, NSpec для .NET. Подробнее о средах здесь).
Specter использует возможности мета-программирования языка Boo (CLR .NET) для написания неплохо читаемых спецификаций.
Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Views2.2K
Comments 6

Вышел черновик спецификации Ruby

Ruby
Translation
Дорогие друзья

Язык Ruby своими превосходными качествами привлекает огромное количество программистов, особенно web-разработчиков. Однако спецификация Ruby до сих пор не стандартизирована. Information-technology Promotion Agency, Япония (IPA) собрало рабочую группу стандартизации языка «Ruby Standardization Working Group» в октябре 2008 года, для разработки спецификации. С тех пор рабочая группа выработала черновик спецификации.

Так как первый черновик закончен, мы обращаемся к пользователям и разработчикам Ruby-сообществ за дополнениями и комментариями.

Собирая и просматривая комментарии от Вас, мы хотим доработать черновик спецификации. Дополненный документ мы направим в японский комитет отраслевых стандартов Japanese Industrial Standards Committee (JISC) для того чтобы он приобрел статус японского стандарта (JIS).
После публикации его как JIS, мы предложим его на рассмотрение в Международную организацию стандартизации (ISO/IEC JTC1) для создания международного стандарта.

Мы с нетерпением ждем большого количества комментариев и активных дискуссий вокруг документа

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

Ikuo NAKATA
Глава рабочей группы стандартизации Ruby
IPA

Здесь можно прочесть спецификацию и оставить свои комментарии
Total votes 34: ↑28 and ↓6 +22
Views618
Comments 9

Предложены новые приложения по умолчанию в Ubuntu 11.10 Oneiric Ocelot

Configuring Linux
Translation

Хоть Ubuntu 11.04 выпущена всего несколько дней тому назад, но работы над новой версией Ubuntu 11.10 уже начаты (и, кстати, уже доступны репозитории 11.10) и некоторые очень интересные проекты по планированию разработки Убунту можно увидеть на Launchpad.

Важно: это только проекты, которые еще должны пройти этап утверждения, поэтому очень необязательно, чтобы они стали реальностью. Пока что это просто дискуссия!
Читать дальше →
Total votes 63: ↑54 and ↓9 +45
Views1.5K
Comments 108

Universal Binary JSON — ещё один бинарный JSON

Open source
Sandbox
Статья является вольным переводом информации предоставленной на официальном сайте.

Введение


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

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

Для достижения лучших результатов в таких случаях становится полезным использование двоичного формата JSON.
Читать дальше →
Total votes 36: ↑32 and ↓4 +28
Views20.5K
Comments 48

ObjectScript, разработаем спецификацию совместно: операторы сравнения

Open sourceProgrammingAPI
ObjectScript — новый встраиваемый и очень легкий объектно-ориентированный язык программирования с открытым исходным кодом. ObjectScript расширяет возможности таких языков, как JavaScript, Lua и PHP. Синтаксис в основном взят из JavaScript, множественное присваивание — из Lua, работа со свойствами — из PHP.

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

Вопрос довольно щекотливый, т.к. от результата булевского выражения зависит, не много не мало, выполнится кусок кода или нет. Русская пословица «одна голова хорошо, а много лучше» подсказывает мне, что лучше обратится к программерскому сообществу и разобраться наверняка в том, какое поведения при сравнении (это операторы >=, >, <=, <, ==, !=) разных типов данных в скриптовом языке является наиболее уместным. Выработать коллегиональное решение и закрепить результат в спецификации ObjectScript.
Читать дальше →
Total votes 19: ↑8 and ↓11 -3
Views2.2K
Comments 22

Рентабельный код 2: крадущийся DDD, затаившийся CQRS

Website development.NETDesigning and refactoring
Tutorial

Трем программистам предложили пересечь поле, и дойти до дома на другой стороне. Программист-новичок посмотрел на короткую дистанцию и сказал, «Это не далеко! Это займет у меня десять минут». Опытный программист посмотрел на поле, немного подумал, и сказал: «Я мог бы добраться туда за день». Новичок посмотрел на него с удивлением. Гуру-программист посмотрел на поле и сказал. «Кажется минут десять, но я думаю пятнадцати будет достаточно». Опытный программист рассмеялся.

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

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

Гуру программист пустился в путь, и пошел прямо через поле. Целеустремленно и прямо. Он достиг цели всего за десять минут.
«Как тебе это удалось?» — спросили двое других — «Как ты умудрился не зацепить ни одной мины?»
«Легко» — ответил он. «Я не закладывал мины на своем пути».

Как ни прискорбно, придется признать – мы сами закладываем себе мины. В первой части я подробно разобрал основные риски в разработке ПО и описал технологические и методологические способы ослабления этих рисков. За прошедший год я получил множество комментариев, основной смысл которых сводился к следующему: «все круто, но с чего начать и как все это будет выглядеть в реальном мире». Действительно, первый текст носит скорее теоретический характер и представляет собой каталог ссылок. В этой статье я постараюсь привести как можно больше примеров.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Views46.9K
Comments 19

Прогноз на Specification pattern в Domain layer — ожидаются проблемы

ProgrammingPerfect codeDesigning and refactoring
Data Access Layer – одна из наиболее больных тем.
Написание хорошего слоя доступа к данным – это не тривиальная задача. Примеров реализации невероятно много, но адекватных среди них единицы.
Можно ли считать реализацию шаблона Repository — DAL?
Вот что предлагают MS msdn.microsoft.com/en-us/library/ff649690.aspx
image
А вот и местные работы habrahabr.ru/post/52173
Варианты довольно нормальные.
Но когда я вижу
«Репозиторий – это фасад для доступа к базе данных.»
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Views17.9K
Comments 187

Шаблон проектирования «Спецификация» в C#

Website development.NETDesigning and refactoringC#
«Спецификация» в программировании — это шаблон проектирования, посредством которого представление правил бизнес логики может быть преобразовано в виде цепочки объектов, связанных операциями булевой логики.

Я познакомился с этим термином в процессе чтения DDD Эванса. На Хабре есть статьи с описанием практического применения паттерна и проблем, возникающих в процессе реализации.

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

Классическая реализация шаблона проектирования выглядит так:

public interface ISpecification
{
    bool IsSatisfiedBy(object candidate);
}

Что с ним не так применительно к C#?


  1. Есть Expression<Func<T, bool>> и Func<T, bool>>, сигнатура которых совпадает с IsSatisfiedBy
  2. Есть Extension-методы. alexanderzaytsev с помощью них делает вот так:

    public class UserQueryExtensions 
    {
      public static IQueryable<User> WhereGroupNameIs(this IQueryable<User> users,
    string name)
      {
          return users.Where(u => u.GroupName == name);
      }
    }
    

  3. А еще можно реализовать вот такую надстройку над LINQ:

    public abstract class Specification<T>
    {
      public bool IsSatisfiedBy(T item)
      {
        return SatisfyingElementsFrom(new[] { item }.AsQueryable()).Any();
      }
    
       public abstract IQueryable<T> SatisfyingElementsFrom(IQueryable<T> candidates);
    }
    

В конечном итоге возникает вопрос: стоит ли в C# пользоваться шаблоном десятилетней давности из мира Java и как его реализовать?

Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views24.8K
Comments 14

11 вещей которые я узнал, читая спецификацию flexbox

Website developmentCSSHTMLBrowsers
Translation

Я всегда считал, что с flexbox довольно легко работать — глоток свежего воздуха после стольких лет float'ов и clearfix'ов.


Правда недавно я обнаружил что борюсь с ним; что-то растягивалось, когда я не думал, что оно должно тянуться. Я поправил здесь, другой элемент сжался. Я починил это, что-то другое ушло за экран. Какого Джорджа Буша тут происходит?


В конце концов, все заработало, но солнце село, а мой процесс был привычной игрой с CSS. Или… как называется та игра, где надо ударить крота, а затем другой крот выпрыгивает и надо ударить и его тоже?


Как бы там ни было, я решил что пора вести себя как взрослый разработчик и выучить flexbox должным образом. Но вместо того, чтобы прочитать 10 очередных блог-постов, я решил отправиться прямиком к исходнику и прочитать The CSS Flexible Box Layout Module Level 1 Spec


Вот хорошие отрывки.


Читать дальше →
Total votes 66: ↑62 and ↓4 +58
Views80.9K
Comments 33

EntityFramework: (анти)паттерн Repository

Perfect code.NETDesigning and refactoringC#
Sandbox
Repository Pattern
Репозиторий является посредником между слоем доступа к данным и доменным слоем,
работая как in-memory коллекция доменных обектов. Клиенты создают декларативные
описания запросов и передают их в репозиторий для выполнения.
  — свободный перевод Мартина Фаулера

EntityFraemwork предоставляет нам готовую реализацию паттернов Repository: DbSet<T> и UnitOfWork: DbContext. Но мне часто приходится видеть, как коллеги используют в своих проектах собственную реализацию репозиториев поверх существующих в EntityFraemwork.


Чаще всего используется один из двух подходов:


  1. Generic Repository как попытка абстрагироваться от конкретного ORM.
  2. Repository как набор запросов к выбранной таблице БД (паттерн DAO).

И каждый из этих подходов содержит недостатки.

Читать дальше →
Total votes 47: ↑45 and ↓2 +43
Views81.1K
Comments 159

Понимание спецификации ECMAScript, часть 1

Website developmentJavaScriptProgramming
Translation


Доброго времени суток, друзья!

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

Предисловие


Даже если вы хорошо знаете JavaScript, чтение спецификации может быть затруднительным. Следующий код демонстрирует использование Object.prototype.hasOwnProperty:

const o = {
    foo: 1
}
o.hasOwnProperty('foo') // true
o.hasOwnProperty('bar') // false

В примере объект «o» не имеет метода «hasOwnProperty», поэтому мы обращаемся к его прототипу — «Object.prototype» (цепочка прототипов).

Для описания того, как работает Object.hasOwnProperty, в спецификации используется следующий псевдокод:
Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views7.5K
Comments 2

Понимание спецификации ECMAScript, часть 2

Website developmentJavaScriptProgramming
Sandbox

Привет, Хабр! Представляю вашему вниманию перевод статьи под редакцией xfides


Автор оригинала: Marja Hölttä
Перевод первой части.



Давайте еще попрактикуемся в чтении спецификации. Если вы не видели предыдущую статью, самое время сходить ее посмотреть. В первой части мы познакомились с простым методом Object.prototype.hasOwnProperty. Также, посмотрели список абстрактных операций, которые вызываются при выполнении этого метода. Еще мы узнали о специфических сокращениях «?» и «!», которые связаны с обработкой ошибок. И наконец, мы получили информацию о типах языка, типах спецификации, внутренних слотах и внутренних методах.


Готовы для второй части?

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views3.5K
Comments 0

Пара слов о спецификациях

PHPSymfonyDoctrine ORMUsability

Всем доброго времени суток! Удивительно, но упоминание о шаблоне "Спецификация" в контексте php встречается крайне редко. А ведь с его помощью можно не только избежать комбинаторного взрыва методов репозитория, но и улучшить переиспользование кода. Я же в свою очередь хотел бы остановиться на еще одной возможности, предоставляемой данным паттерном. С ее помощью можно решить проблему, которая возникает почти в каждом веб-приложении. И лично мне очень не хватало этого знания еще пару лет назад.

Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Views3.1K
Comments 14

Язык моделирования Alloy и приключения с параллельными запросами к базе данных

TypeableIT systems testingSystem Analysis and DesignDebugging
Translation

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



О качестве программного обеспечения и инструментарии


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


  1. Анализ и создание спецификаций
  2. Устранение простых ошибок с использованием системы типов Haskell
  3. Стандартные юнит-тесты и интеграционные тесты
  4. Непрерывная интеграция
  5. Обязательные ревью кода
  6. Тестирование на стендах, проводимое QA инженерами
    (мы используем Octopod для оптимизации процесса разработки и QA)
  7. Тестирование в pre-production среде
  8. Ведение логов и контроль ошибок на этапе эксплуатации

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

Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views1.4K
Comments 0