Обновить
256K+

JavaScript *

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

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

Изоморфный JavaScript — будущее веб-приложений

Время на прочтение9 мин
Охват и читатели80K
В компании Airbnb мы многому научились за последние несколько лет, создавая мощные веб-приложния. Мы погрузились в мир одностраничных приложений в 2011 г., делая мобильную версию нашего сайта, с тех пор, кроме прочего, мы запустили Wish Lists и новый поиск. Все это — большие JavaScript приложения, что означает то, что тонны кода запускаются в браузере, чтобы обеспечить современный интерактивный пользовательский опыт.

Это обычный подход сегодня, когда такие библиотеки, как backbone.js, ember.js и angular.js помогают разработчикам создавать мощные JavaScript приложения. Мы поняли, однако, что такие приложения имеют несколько критических ограничений. Чтобы стало понятно, давайте предпримем небольшой тур по истории веб-приложений.

Картинка из статьи для привлечения внимания

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

А что Вы думаете о StarlingJS?

Время на прочтение2 мин
Охват и читатели12K
Наш друг Алекс Винкс распетрушил демку StarlingJS, поправил баги, допилил, портировал свою флеш-демку и выложил исходники:


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

Как мы делали сервис на WebRTC

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


Статей про WebRTC уже достаточно много и в интернетах, и на Хабре (здесь и здесь), повторять их ещё раз не имеет особого смысла, поэтому тут приведем наш личный опыт и впечатления, полученные при разработке live.pics.io.

Идея



Live.pics.io позволяет создавать приватные сессии для совместного просмотра и обсуждения изображений голосом. Это могут быть любые изображения: от фотографий, до макетов дизайна и презентаций. Pазрабатывая pics.io, мы достаточно хорошо научились работать с разными raw форматами в браузере, поэтому можно не заморачиваться с конвертацией и закидывать фотографии сразу после съемки (будут рады владельцы Canon’ов и Nikon’ов, остальные камеры пока требуют конвертации в DNG).

Очень коротко о webRTC


На самом деле, использовать WebRTC — это практически то же самое, что использовать сокеты. Но немного по-другому (совсем чуть-чуть). Нам нужно передавать изображение и звук. Берем RTCPeerConnection для соединения между пирами, MediaStream для трансляции аудио и RTCDataChannel для передачи изображений. Еще, для того, чтобы все это заработало, понадобится небольшой серверсайд для соединения пиров и передачи управляющих инструкций. Но об этом чуть позже.

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

Генератор визуальных интерфейсов с генетическим алгоритмом в помощь дизайнерам

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

Результат генерации первого поколения

Я не дизайнер. Но иногда приходится для каких-то своих проектов придумывать какой-то дизайн, чего я очень не люблю делать. Колдуя несколько часов в фотошопе в голову ничего интересного так и не приходит. Вроде сделаю какой-никакой макет, но чего-то не хватает. Что-то не то. Нужно вдохновение. Именно так и родилась идея сделать генератор визуальных интерфейсов, который служил бы источником вдохновения, подсказывал какие-нибудь формы и их положение. А потом в мою неспокойную голову пришла идея сделать генетический алгоритм, где в роли фитнесс-функции буду выступать я со своей субъективной оценкой. Забегая вперед скажу, что ничего особенного из этой идеи не вышло.
Ссылка на демо и подробности под катом

В Google показали сложный WebGL-мир для мобильного Chrome

Время на прочтение1 мин
Охват и читатели27K
Последнее обновление Google Chrome для Android привело к тому, что экран при скроллинге сильно дёргается и использовать браузер стало крайне некомфортно — реакцию пользователей на эту проблему, которую исправлять в ближайшем времени, кажется, не собираются, можно увидеть в комментариях в Play Market.

Команда инженеров в рамках уже известного ранее экспериментального проекта Chrome Experiment показала новый проект "Хоббит: Пустошь Смауга" (по мотивам «Хоббита» Толкиена, укороченная ссылка сразу для неиспорченного обновлением браузера: goo.gl/EOdnHI), созданный специально для мобильного Chrome.
QR
QR Code generator

Узнать подробности

Игра в 0 строк кода на чистом JS

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

Я не хотел принимать участие в недельном тренде хабра — «Все пишем в 30 строк кода!», нет времени лишнего. Но пост theaqua про Hello world в 1 строчку на чистом JavaScript вдохновил меня побить этот рекорд. Я написал игру, используя JavaScript, HTML и CSS, при этом использовал всего 0 строк кода. После этого поста я не мог спать. Я мучался бессоницей и, взяв себя в руки, сел писать игру. Понимая что мне придется использовать 0 строк кода на Javascript — я сильно боялся. Написать программу в 1000 строк кода и больше — не составляет проблем. Но вот написать 0 строк кода… Это безумие. Это переворачивает мозг. Меняет отношение к вебу. Понимаешь, что раньше ты писал как-то не так…

Для тех, кто не привык ждать — ДЕМКА.

Это не фейк, а полноценная игра. Подробности под катом.

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

Крошечный контейнер для мини-приложений в 30 строк на чистом JS

Время на прочтение5 мин
Охват и читатели3.4K
Увидев на хабрахабре крутые реализации программ в 30, 24, 19 и даже 1 строчку, тоже решил поморать чистые страницы хабра чем-нибудь этаким. Тем более, что давно хочется инвайт выпала возможность поработать в новом для себя качестве.

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

Вообще в самом начале я честно погуглил на предмет наличия разных фреймворков для расширений. Нашел, например, Kango. Но мне не нужна была кроссбраузерность (расширение писалось только для Chrome), и не было желания заморачиваться изучением сторонних библиотек ради небольшого приложения, поэтому было решено написать свой велосипед.

Задачи, которые ставились перед контейнером:
  • Удобная работа с localStorage. Получаем и сохраняем любые данные, в том числе объекты и массивы.
  • Какая-нибудь валидация параметров (хотя бы в случае, если такого параметра в localStorage просто нет).
  • Возможность фасовать параметры по группам — плохо когда все свалено в одну кучу.
  • Подключение функциональности с разносом по отдельным компонентам, при этом вероятно будет необходима преинициализация некоторых параметров.

В принципе все удалось реализовать в небольшом контейнере, и для небольших приложений он меня устраивает на 100%.
Читать дальше →

Миникрафт в 252 символа

Время на прочтение5 мин
Охват и читатели41K
В продолжении популярного цикла статей о том, что 30 строк джаваскрипта достаточно каждому, предлагаю Вашему вниманию перевод статьи Мэтью P01 Генри о его последней работе:


Итак, Мэтью пишет:

Маленькие программы на Javascript: куда податься

Время на прочтение4 мин
Охват и читатели44K
Да, я про лавинообразный поток статей про программы на javascript в 30 строк, охвативший Хабр. Честно сказать, я и сам ярый любитель (специальной?) дисциплины код-гольфа на js, и провел не один выходной, пытаясь втиснуть функцию в твит. И хотя мне нравится дух тридцатистрочников, мне не по духу этот формат.

Почему? Ограничение в 30 sloc весьма и весьма размыто: a.pop();s+='foo' — скорее две строки, а a.pop(s+='foo') — скорее одна, хотя эти два куска кода делают абсолютно одно и то же. Да и практика показала, что даже 30 слоков не обязательное ограничение, а HTML и CSS вовсе не считаются. Иными словами, слоками померить крошечность невозможно, да и это никому не нужно.

Господа, это не серьёзно.

Но это не значит, что нужно прямо сейчас бросить недописанный к пятнице тридцатистрочник. Но когда наиграетесь, добро пожаловать в высшую лигу!
Читать дальше →

Еще один Tetris на JS (~30 «условных» строк)

Время на прочтение3 мин
Охват и читатели10K
Воодушевленный последними постами на Хабре по теме написания минималистичных игр в 30 строк, решил и я попробовать «вставить свои 5 копеек», точнее, 30 строк js-кода. Наиболее подходящей кандидатом мне показался тетрис, к тому же, всегда было интерестно понять и реализовать его алгоритм, да всё руки не доходили.



Итак, к концу бессонной ночи, в мире появился еще один очередной клон тетриса. С небольшой натяжкой он втискивается в заданные рамки (30 строк), но строки эти, всё же длиннее, чем мне бы лично хотелось. Желающие опробовать в действии и посмотреть код, могут сделать это здесь.

Особенности реализации:
  • Управление стрелками на клавиатуре
  • Повышение уровня сложности каждые 5 строк
  • Прогрессивный подсчет очков в зависимости от количества заполенных строк за раз и уровня сложности
  • «Честный» поворот блоков по часовой стрелке
  • «Отскок» блока при повороте от препятствий
  • Разноцветные блоки
  • Генерация разметки игрового поля js-кодом

Детали

Блэкджек на LiveScript

Время на прочтение6 мин
Охват и читатели9.7K
Вероятно, многим уже надоели заголовки типа «ХХХ в 30 строк», но я рискну написать ещё один пост. Дабы хоть как-то сгладить злость отдельных хабралюдей, я расскажу что в этом скрипте делает каждая строка.
image
Читать дальше →

Крошечный Tron на JS (30 строк кода)

Время на прочтение7 мин
Охват и читатели7.9K
image

Собственно, продолжая тренд недели.

Ещё первый раз прочитав крошечный excel захотелось написать что либо подобное — маленькое и прикольное. Увидев змейку — понял, что стоит написать игру. Прочитав коммент — «хочу пакмана с фирменными звуками» решил что буду писать «сайтмана», на canvas, с web audio api (и вака-вака-вака) и пожиранием страниц.

Но этому было не суждено сбыться, подробнее — под катом.
Читать дальше →

Реализация Asteroids на javascript

Время на прочтение3 мин
Охват и читатели12K
Чтобы хоть как-то разбавить тенденцию к 30строчникам решил написать достаточно завершенную и, в сравнении с 30lines, объемную реализацию классической игры Asteroids.
screenshot
Я не буду меряться числом строк или символов кода, т.к. в нем есть и достаточно нормальное оформление и даже комментарии.
Мир игры отрисовывается на canvas, все объекты мира унифицированы, а детектор коллизий использует попиксельный тест. Есть простая озвучка, жизни, godmod на первые секунды после появления, очки, растущая вместе с очками сложность и, конечно, разваливающиеся на куски астероиды.
Попробовать можно тут. Очень советую Chrome или хотя бы FF.
Читать дальше →

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

Создаем галактику в 30 строк

Время на прочтение3 мин
Охват и читатели6.8K
Х*ли там игры, подумал я, и давай строчить в рекавери мод. Писать будем на jQuery, да, смысл 30 строк нивелируется, зато я офигенненько так примажусь к общей феерии и срублю халявной кармы (как бы ни так, подумал читатель и смачно щелкнув мышей минусанул, да и п**уй подумал я и продолжил бредить).

Людям не шибко понравилось мое вступление, так что перефразирую: «Начнем».

Статья рассчитана на новичканов, поэтому уважаемые знатоки могут сразу скроллить.

image

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

Цветовая пипетка на JS, 399 символов (не строк)

Время на прочтение2 мин
Охват и читатели7.2K
(Если уж делать в 5 строк JS+HTML+CSS, то что-то полезное.)

Так называемый Color Picker предназначен для копирования в буфер обмена HEX-кода одного из 216 цветов «безопасной» веб-палитры одним кликом и Ctrl-C.

Пикер умеет много гитик:
1) показывает код цвета по наведению мыши;
2) предоставляет код для копирования по клику;
3) переформатируется в другое количество цветов и ячеек без изменения объёма кода.

<body onload="var H=512,D=51,s='',h=function(a){return a.toString(16).substr(1)},r=256,g,b,v;for(;r<H;r+=D){for(g=256;g<H;g+=D)for(b=256;b<H;b+=D)s+='&lt;b style=&quot;background-color:'+(v=h(r)+h(g)+h(b))+';display:inline-block;width:8px;height:8px;border:1px solid;margin:-1px&quot;onmouseover=this.title=\''+v+'\' onclick=prompt(\'\',\''+v+'\') >&lt;/b>';s+='&lt;br>'}document.body.innerHTML+=s">

Гитхаб-демо (фиддл поддерживать это не умеет)
подробнее

Программа конференции FOSS Sea

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

30 ноября в Одессе состоится VI специализированная техническая конференция FOSS Sea: back-end на базе свободных и открытых технологий. Она будет проходить в два параллельных потока:
  • «Облака» – на этом потоке участники обсудят технические вопросы настройки, администрирования и поддержки облачных инфраструктур;
  • «JavaScript на бекенде» — здесь речь пойдет об использовании различных решений, таких как: node.js, express.js, jscala и других.

Конференция будет интересна системным администраторам, JavaScript разработчикам, руководителям IT отделов и компаний, а также всем, кто интересуется современными облачными технологиями и использованием JavaScript на бекенде.

С докладами на конференции выступят сотрудники таких компаний как: Mirantis, DataArt, Infobox Cloud, ЛанТек, Lohika, GradSoft, RootUA Media, Европейское Агентство Высоких Технологий, GlobalLogic и других.
Читать дальше →

Есть вероятность глюков в Chrome/Chromium 31, Opera 18: селекторы вроде nth-last-child могут отрабатывать некорректно

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

В issues хрома за последние несколько дней появилось несколько issue, в которых описывается примерно следующий сценарий: используется тяжелый css3 селектор, в результате чего идет некорректное обращение. В том числе может некорректно работать селектор к нескольким объектам через запятую (#a, #b, #c etc.), однозначно некорректно работает nth-last-child. Гарантированно выявлен баг с ним.
Проблема, судя по всему, находится в механизме css-запросов, так как document.querySelector также некорректно адресуется. Что самое неприятное — jQuery так же опирается на нативные функции (если они существуют). Таким образом, сложные jQuery-запросы также перестали отрабатывать корректно.
Если в ваших проектах используется nth-last-child, подробности бага под катом
Читать дальше →

Игра Жизнь на LiveScript в 30 строк

Время на прочтение3 мин
Охват и читатели9K
В продолжение 30-ти строчного мема, выкладываю реализацию известной игры Жизнь на LiveScript (язык, транслируемый в Javascript).
Читать дальше →

Сокобан на Javascript в 30 строк

Время на прочтение1 мин
Охват и читатели18K
Всем привет, решил приобщиться к общему безумию. В 30 строк уже написали почти все, что могли, но старого доброго сокобана я не нашел (возможно, плохо искал), так что хочу восполнить этот пробел.



Ссылка на fiddle
Читать дальше →

WidLib – декларативный js-фреймворк для построения виджетов

Время на прочтение7 мин
Охват и читатели17K
Сегодня я хотел бы анонсировать js-фреймворк, позволяющий создавать диалоговые микро-приложения в несколько строк js-кода, разделяемого между клиентом и сервером.

К сожалению, у автора проекта не хватило мужества довести его до ума. Простите.



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

В отличие от большинства фреймворков, WidLib не претендует на универсальность: он предназначен для быстрого создания многостраничных диалоговых приложений.
Читать дальше →