Обновить
256K+

JavaScript *

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

278,27
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Мысли о верстке с JavaScript позиционированием

Время на прочтение10 мин
Охват и читатели27K
Добрый день, Хабр!

Рискну опубликовать недавно сформировавшуюся идею относительно верстки современных сайтов, в т.ч. в так называемом «плиточном» стиле. Но прежде чем излагать мысли хочу привести два «предупреждения»:
  1. я — дилетант. Хотя моя жизнь напрямую связана с программированием уже более 10 лет, я отношусь тем людям, которым интересно в IT очень многое от 3D моделирования до робототехники. А потому бывает, не знаю элементарных для специалиста вещей. Иногда это помогает, иногда мешает, но что есть, то есть.
  2. если вы хотите в результате «пощупать» технологию в деле, вынужден разочаровать. Все дальнейшее – только изложение мыслей и идей. Создать готовый движок на хорошем уровне у меня не хватит ни времени, ни умений. Впрочем, если кто-то заинтересуется изложенным – я готов всячески содействовать разработке.

Суть идеи.


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

При обычной верстке html – задает структуру контента, а css – управляет и позиционированием и визуальным представлением документа. Эта двойственность css приводит к раздутым файлам стилей, внутри которых бывает сложно ориентироваться. Одни и те же свойства управляют и положением и внешним видом элементов – это вносит путаницу и затрудняет отладку.

На мой взгляд, и думаю, эта мысль не нова, позиционированием блоков мог бы заняться JavaScript, это позволит создавать динамические структуры легко адаптирующиеся к разным разрешениям на разных устройствах, но описывать структуру документа на чистом JavaScript – мягко говоря, неудобно. В идеале хотелось бы создать некий «мини-язык» упрощающий возможности разметки документа для человека не являющегося специалистом в JavaScript. В таком «мини-языке» можно было бы максимально просто сформулировать правила адаптации макета к любому разрешению экрана. А JavaScript обеспечил бы выполнение этих правил. Дальнейший код и картинки как раз и показывают, как это могло бы выглядеть.
Читать дальше →

Создание спрайтового движка

Время на прочтение4 мин
Охват и читатели10K
Когда то давно, в своем дебютном посте, я обещал рассказать о создании спрайтовой анимации с сортировкой по глубине… Ну, обещания нужно сдерживать:)
Читать дальше →

Знакомимся с Fabric.js. Часть 2-я

Время на прочтение13 мин
Охват и читатели26K
Это вторая часть серии статей об открытой Javascript canvas библиотеке Fabric.js.

В первой части этой серии, мы ознакомились с самыми базовыми аспектами canvas библиотеки Fabric.js. Мы узнали чем может быть полезна Fabric, рассмотрели её объектную модель и иерархию объектов; увидели что существуют как простые фигуры (прямоугольник, треугольник, круг), так и сложные (SVG). Научились выполнять простые операции над этими объектами.

Ну вот, разобрались с азами, давайте приступать к более интересным вещам!

Читать дальше →

Cypher десктопное приложение, написанное на основе платформы node-webkit

Время на прочтение4 мин
Охват и читатели9.4K
В статье пойдет речь о десктопном приложении, написанном на основе платформы node-webkit. На Хабре были статьи которые описывают саму платформу: раз, два, три. Но реальных приложений которые используют эту платформу не так много. В начале я раскажу о приложении, о его задачах и функционале, дальше я перейду к техническим возможностям платформы node-webkit, которые были использованы в приложении. Статья не изобилует вставками кода, весь код выложен на github. В конце статьи будут ссылки на все использованные источники информации.

Моей целью было создание полноценного приложения с использованием платформы node-webkit. Задача приложения — защита онлайн переписки, осуществляемой через мессенджеры (Skype, Google Talk, еtc.) Посылая по открытым каналам уже зашифрованную информацию, вы усложняете процесс получения доступа к данным третьей стороной. Существует множество способов зашифровать сообщение, но проблема в том, что ключ для шифрования нужно сообщить вашему собеседнику. Допустим, ваш канал прослушивают, и имеют доступ ко всему, что вы отправляете и получаете. Для решения этой задачи приложение использует алгоритм Дэффи-Хеллмана. Про этот алгоритм уже расказывали на Хабре, вот ссылка. Но больше всего впечатляет видео, которое наглядно описывает, как работает алгоритм — YouTube. Более подробно об этом алгоритме можно почитать в Википедии.

И так приступим

Пользовательский JavaScript и CSS на мобильных устройствах

Время на прочтение4 мин
Охват и читатели17K


Хочется странного


Если вы регулярно посещаете с мобильного устройства (телефона, планшета) какие-нибудь сайты, и если у вас регулярно возникает желание изменить на них JS/CSS (но разработчикам сайтов вы по какой-то причине не сообщаете об этих желаниях), то статья вам может быть интересна.

Посмотрим, что можно сделать.

Тонкости Rails 4 — Turbolinks

Время на прочтение5 мин
Охват и читатели40K


Гем под названием Turbolinks способен неплохо ускорить ваше приложение, используя JavaScript для обновления контента на странице. Он включен по умолчанию в Rails 4, но я покажу, как можно использовать его уже сейчас в программах, написанных на Rails 3. Также вы узнаете о некоторых подводных камнях.
Читать дальше →

Общение между окнами одного браузера средствами cookie

Время на прочтение2 мин
Охват и читатели28K
Статья будет очень короткой, но описывает неплохой способ обмена данными между окнами в одном браузере.

Способ поможет нам среагировать на событие, которое произошло в другом окне. Например, как это делает VK — когда в одной вкладке у нас играет музыка, а в другой мы открываем видео или включаем другой трек.

Читать дальше →

Введение в Jasmine

Время на прочтение3 мин
Охват и читатели121K

Программирование на стороне клиента давно стало нормой, а объем JavaScript кода и его сложность постоянно растут. Часто тестирование применяется только на серверной стороне, но при этом не стоит забывать о тестировании клиентского кода. Для тестирования JavaScript как на стороне клиента, так и для Node.js можно с успехом применять Jasmine.

Jasmine это BDD фреймворк (Behavior-Driven Development — Разработка на Основе Поведений) для тестирования JavaScript кода, позаимствовавший многие черты из RSpec.

Читать дальше →

Переполнение стека вызовов JavaScript, SetTimeout и снижение производительности AJAX

Время на прочтение3 мин
Охват и читатели124K

Проблема


Некоторое время назад в работе над клиентской (javascript) частью движка josi возникла, кстати, достаточно часто встречающаяся проблема переполнения стека:
Uncaught RangeError: Maximum call stack size exceeded (google chrome)
В статье рассматривается решение без использования setTimout или setInterval.
Читать дальше →

Разминаем мозг регулярными выражениями — Regex Tuesday Challenge

Время на прочтение4 мин
Охват и читатели72K
Я хочу предложить вам поломать голову вечерок-другой над интересными задачками, на регулярные выражения, которые Callum Macrae выкладывает на своем сайте на GitHub каждый Вторник.

Каждый вопрос представлен в виде набора тестов. Задача — написать такой регулярное выражение, чтобы все тесты стали зелеными.
Некоторые из задач сами по себе довольно простые, а самая интересная часть — в том, чтобы написать наиболее короткое возможное регулярное выражение.

Тесты используют JavaScript Regex движок вашего браузера, который обладает всеми основными возможностями PCRE.  Подробнее можно посмотреть тут (англ.) , в колонке ECMA в таблице.

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

UPD: В регулярных выражениях ECMAScript нету ретроспективных проверок.

Читать дальше →

Physics Snake. С нуля. Часть первая

Время на прочтение12 мин
Охват и читатели20K
Статья с тэгом «обучающий материал». С нуля, поэтому будем писать свой не сложный (для начала) физический движок и сразу же не сложную игру (я выбрал змейку) на нем. Но статья скорее будет не об этом, так как это не такое уж и сложное задание, а о том, как это все будет на JavaScript, причем с максимально красивым (правильным) кодом (жду, что все что можно сделать еще лучше вы опишите в комментариях). «А в ответ полетели спелые помидоры..». Начнем.
(кто дочитал аж до сюда, держите печеньки, управления стрелками влево-вправо):
вот что будет: в части один
и это же (dev-mode)
Читать дальше →

Yeoman Express Stack

Время на прочтение2 мин
Охват и читатели7.4K
image
Прим. перев.: вместо короткой новости https://plus.google.com/115133653231679625609/posts/YDNbxVxi4er решил перевести доку по этому форку.

Yeoman Express Stack — это форк Yeoman (прим. перев.: статья на хабре).
Форк создан в доказательство возможности вести разработку полного стека (клиент-сервер) при помощи Yeoman 0.9.6, Express и AngularJS. Примечание: это экспериментальная ветка и (пока) пригодна только для тестирования и обкатки концепции.
Включает:
  • Специализированную версию Yeoman server.js с поддержкой Express-миддлваре
  • Из коробки поддерживается LiveReload
  • Генератор для Express и CRUD—генератор для AngularJS

Читать дальше →

Используем method decorator в CoffeeScript(Javascript) для удобного и читаемого DRY-кода

Время на прочтение2 мин
Охват и читатели4.4K
Статья о простом, но не очевидном способе как сделать код чище и избавиться от копипасты.

Условно проблема выглядит вот так:
###
My awesome class
###
class Awesome
  doFoo : (arg, cb) ->
    unless arg is 42
      return cb Error """
                      only The Answer may be an argument, but got:
                      |arg| = |#{arg}|
                      """
    cb null, "#{arg} is The Answer"

  doBar : (arg, cb) ->
    # hm... arg must be The Answer too

У нас есть кусок кода (тот, что с проверкой), который во-первых похоже потребуется повторить в новом методе, да и вообще отвлекает от основного действа в методе.

Совсем немного текста о том, как method decorator делает мою жизнь лучше

Ближайшие события

Ведро и не ядро

Время на прочтение6 мин
Охват и читатели4.2K
Что плохо на примере jq.

Рассмотрим на задаче и её реализации: Есть x элементов, по клику на элемент он должен поменять состояние. Кликов на элементе может быть, и чаще всего будет, не одни.
Читать дальше →

Кнопки социальных сетей, HTML 5, атрибут data и асинхронная загрузка javascript

Время на прочтение6 мин
Охват и читатели103K
Давно уже планировал установить на свой сайт кнопки социальных сетей. Наконец нашел время для этого, проблема усугублялась тем, что я сам не являюсь пользователем социальных сетей, хотя против ничего не имею.

Первым делом начал собирать информацию, ее довольно много, есть правда и устаревшая. Например, Twitter поменял уже ссылку, старая twitter.com/share, а новая twitter.com/intent/tweet, у Google ссылка «www.google.com/buzz/post», уже давно не работает, вместо нее plus.google.com/share. Конечно, это общеизвестные факты, но, похоже, все-таки не все об этом знают и предлагают «шарить» на старые ссылки.

В общем, ознакомившись с темой, решил взять кнопки в первоисточнике:
Читать дальше →

Yota-script или экономим c Yota кроссплатформенно

Время на прочтение2 мин
Охват и читатели19K
Доброго времени суток, уважаемые хабражители.
Пару месяцев назад и до нашего города добралась цивилизация в виде Yota. После беглого осмотра личного кабинета и выяснения что тарификация работает с точностью до минуты появился автоматизационный зуд :) Тут еще подвернулся топик Экономим затраты на интернет от Yota и понеслась. Главная проблема которую я хотел решить — позволить управлять своим тарифом из командной строки (к примеру с помощью crontab) кроссплатформенно т.к. сам давно живу под Arch Linux в качестве основной операционной системы.
Читать дальше →

Показ масштабируемых изображений

Время на прочтение10 мин
Охват и читатели56K
Традиционная работа HTML-страниц с картинками заключается в раскрывании картинок вместо этих страниц. Пришла пора прекращать это неудобство на отдельно взятом сайте. Ссылки — хорошо, но удобный просмотр — лучше.

Что такое удобный просмотр? Пример "лайтбоксов" разных показал, что лучше открыть псевдоокно просмотра внутри документа, не удаляя документ. Но при чтении статей этот подход не очень удобен. Мы не видим контекст документа. Получается, что видна или картинка, или документ. Лучше, если картинка не закрывает текст, как организовано, например, в скрипте Dollchan Extension Tools (подсказали здесь), где просмотр картинок занимает малую часть общей функциональности просмотра «имаджбордов» — примерно таких же текстово-картиночных потоков статей. Сделаем и мы контролы управления картинками, добавив кое-что своё.
Читать дальше →

Lifehack для Same-Origin-Policy; Google Chrome и другие

Время на прочтение5 мин
Охват и читатели24K
debuger

Задача:
— есть REST-сервер
— есть одностраничное приложение (HTML/CSS/Javascript) которое берет данные с сервера через XMLHttpRequest
— нужно разработать новую фичу

Решение

Тренды фронтэнда. Javascript APIs для мобильных устройств

Время на прочтение8 мин
Охват и читатели19K
Презентация: http://sergey.makoveev.info/2013/01/frontend.js-apis-mobile.presentation/.
Примеры: http://goo.gl/5jv4i.
Исходники: http://goo.gl/YYj0R.

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

Не надо давать обещания, или Promises наоборот

Время на прочтение4 мин
Охват и читатели9.6K
Каждый программист, начинающий разрабатывать под Node.js, встаёт перед выбором стратегии организации асинхронного кода в проекте. В то время, как в небольших системных утилитах поддерживать гигиену асинхронного кода достаточно просто, при росте массы кода в проекте решение этой задачи начинает требовать введения дополнительного, так называемого control flow средства.

В этой статье будет рассмотрена небольшая control flow библиотека «Flowy», являющаяся развитием идей проекта Step Тима Касвелла, и ядро которой базируется на концепциях CommonJS Promises, а также приведены аргументы, почему же Promises — это так неудобно.


Читать дальше →