Выразительный JavaScript: Рисование на холсте

Автор: admin от 29-11-2014, 23:49, посмотрело: 761

Содержание



  • Введение

  • Величины, типы и операторы

  • Структура программ

  • Функции

  • Структуры данных: объекты и массивы

  • Функции высшего порядка

  • Тайная жизнь объектов

  • Проект: электронная жизнь

  • Поиск и обработка ошибок

  • Регулярные выражения

  • Модули

  • Проект: язык программирования

  • javascript и браузер

  • Document Object Model

  • Обработка событий

  • Проект: игра-платформер

  • Рисование на холсте

  • HTTP

  • Формы и поля ввода

  • Проект: Paint

  • Node.js

  • Проект: веб-сайт по обмену умениями

  • Песочница для кода



Рисование — это обман.
М.К.Эшер


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

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

Есть две альтернативы. Первая – SVG, масштабируемая векторная графика, также основанная на DOM, но без участия HTML. SVG – диалект для описания документов, который концентрируется на формах, а не тексте. SVG можно встроить в HTML, или включить через тег .

Вторая альтернатива – холст (canvas). Холст – это один элемент DOM, в котором находится картинка. Он предоставляет API для рисования форм на том месте, которое занимает элемент. Разница между холстом и SVG в том, что в SVG хранится начальное описание форм – их можно в любой момент сдвигать или менять размер. Холст же преобразовывает формы в пиксели (цветные точки растра), как только нарисует их, и не запоминает, что эти пиксели из себя представляют. Единственным способом сдвинуть форма на холсте является очистить холст (или ту часть, которая окружает форму) и перерисовать её на другом месте.

Категория: Программирование

 

Был флагманом вчера - сегодня стал рабочей лошадкой

Автор: admin от 29-11-2014, 23:17, посмотрело: 3732

Samsung Galaxy S 2 I9100 еще недавно вкусил славы благодаря своим потрясающим возможностям и примененным в своей конструкции новаторским решениям. Однако и сегодня он, в отличие от многих других топовых смартфонов и коммуникаторов, не сошел со сцены и прочно занял место на рынке в качестве смартфона «второго эшелона». Впрочем, такое событие – не первое в ряду коммуникаторов компании Samsung, поскольку специалисты этой фирмы делают все возможное для того, чтобы обеспечить максимальное долгожительство детищам своих рук и интеллекта.

Категория: Железо » Старое железо

 

Многоликие функции Swift

Автор: admin от 29-11-2014, 22:20, посмотрело: 294

Русский перевод очень полезной статьи Natasha Murashev The Many Faces of Swift Functions.

Хотя у Objective-C синтаксис выглядит несколько странно, по сравнению с другими языками программирования, синтаксис метода — прост и понятен. Вот небольшой экскурс в прошлое:

+ (void)mySimpleMethod
{
    // метод "класса"
    // нет параметров
    // нет возвращаемых значений
}

- (NSString *)myMethodNameWithParameter1:(NSString *)param1 parameter2:(NSNumber *)param2
{
    // метод "экземпляра"
    // первый параметр - типа NSString указатель, 
    // второй параметр  - типа NSNumber указатель
    // должен вернуть значение типа NSString указатель
    return @"hello, world!";
}


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

Прежде чем я продолжу, я хочу прояснить разницу между «методами» и «функциями» в Swift, так как я повсеместно буду использовать оба этих термина в этой статье. Вот определение «методов», данное в книге Apple «Swift Programming Language»:

Категория: Программирование, Веб-разработка, Game Development, iOS

 

Что будет значить широкополосная спутниковая технология в 100Гбит/с?

Автор: admin от 29-11-2014, 18:10, посмотрело: 266

Если Вы любите путешествовать или ведёте динамичный образ жизни, но при этом испытываете необходимость в постоянном, стабильном и, главное, быстром доступе к интернету, значит, Вы именно тот, кому просто необходим HTS (High throughput satellite; спутник высокой пропускной способности).

Что будет значить широкополосная спутниковая технология в 100Гбит/с?

Категория: Админитстрирование » Сетевые технологии

 

Inversion of Control: Методы реализации с примерами на PHP

Автор: admin от 29-11-2014, 15:40, посмотрело: 278

О боже, ещё один пост о Inversion of Control


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

Категория: Программирование

 

Компания Global Web Index представила статистический отчет о интернет предпочтениях жителей Европы в 2014 году

Автор: admin от 29-11-2014, 15:31, посмотрело: 287

Компания Global Web Index представила статистический отчет о интернет предпочтениях жителей Европы в 2014 году

Как известно, мировым лидером среди стран по внедрению ИТ-инфраструктуры является США. Именно в Северной Америке сейчас находится наибольшее количество дата-центров, немало из которых являются настоящими гигантами. В тоже время Азия берет количеством, при этом показывая феноменальные темпы роста в регионе как вычислительных мощностей ИТ-инфраструктуры, так и числа пользователей сети. Что же в этом контексте происходит с Европой, скатывание на периферию? Несколько пролить свет на этот вопрос помог опубликованный исследовательской компанией Global Web Index статистический отчет «Европейский цифровой ландшафт 2014» (European Digital Landscape 2014). Исследование затронуло 40 стран Европы. Хотя данные исследования свежие, но даже во время их сбора уже отмечалось, что они претерпевают изменения в сторону количественного и качественного увеличения, и эту тенденцию стоит учитывать для максимально корректного восприятия приведенных результатов исследования в одном из наиболее развитых регионов мира.

Категория: Программирование » Веб-разработка

 

Дайджест интересных материалов о создании контента, маркетинге и Growth Hacking #3

Автор: admin от 29-11-2014, 13:15, посмотрело: 229

Привет, Хабр! Представляю вашему вниманию третью подборку ссылок на материалы о создании контента, маркетинге и Growth Hacks.

Дайджест интересных материалов о создании контента, маркетинге и Growth Hacking #3


Статьи на английском и видеоматериалы помечаются специальными иконками.

Категория: Программирование » Веб-разработка

 

Забавные баги

Автор: admin от 29-11-2014, 01:56, посмотрело: 262

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

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

Забавные баги

Категория: Программирование, Microsoft, Android

 

Фабричный метод без размещения в динамической памяти

Автор: admin от 29-11-2014, 00:35, посмотрело: 269

У классической реализации фабричного метода на C++ есть один существенный недостаток — используемый при реализации этого шаблона динамический полиморфизм предполагает размещение объектов в динамической памяти. Если при этом размеры создаваемых фабричным методом объектов не велики, а создаются они часто, то это может негативно сказаться на производительности. Это связанно с тем, что во первых оператор new не очень эффективен при выделении памяти малого размера, а во вторых с тем что частая деаллокация небольших блоков памяти сама по себе требует много ресурсов.
Для решения этой проблемы было бы хорошо сохранить динамический полиморфизм (без него реализовать шаблон не получится) и при этом выделять память на стеке.
Если вам интересно, как это у меня получилось, добро пожаловать под кат.

Категория: Программирование

 

Пара слов о работе на дому

Автор: admin от 29-11-2014, 00:04, посмотрело: 280

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

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

Категория: Программирование » Веб-разработка