Pull to refresh
12
0
Макс @lazyday

User

Send message

Создание нестандартного компонента с нуля. Часть 2

Reading time10 min
Views21K

Вступление



Вновь приветствую, коллеги.

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



В этой статье под катом мы продолжим накручивать свистелки и... дополнительные возможности нашей клавиатуре. На повестке дня:

  1. Сохранение состояния компонента при повороте экрана
  2. добавление подсветки при оверскролле
  3. передача параметров в XML
  4. Мультитач зуммирование
Читать дальше →

Создание нестандартного компонента с нуля. Часть 1

Reading time11 min
Views39K

Вступление


Приветствую, коллеги!

Достаточно часто при разработке мультимедийных Андроид-приложений (далее просто “приложений”) мы сталкиваемся с задачей создания собственных компонентов, не предусмотренных в системе. Это могут быть всяческие ручки-переключатели, визуализаторы спектра и т. п. Некоторые из них могут быть получены простой заменой графического ресурса, поворотом канвы на 90 градусов и т. п. Но, иногда, все же приходится делать что-то свое “с нуля”.
В этой статье я собираюсь рассказать о создании компонента — простой клавиатуры фортепиано, при помощи наследования от класса View и реализации всех внутренностей “самостоятельно”. Почему в кавычках — увидите дальше.

В серии статей я постараюсь осветить такие вопросы, как:

  1. отрисовка компонента
  2. добавление скроллинга с использованием стандартных скроллбаров
  3. взаимодействие, использование селекторов для клавиш
  4. Сохранение состояния компонента при повороте экрана
  5. добавление подсветки при оверскролле
  6. передача параметры в XML
  7. pinch zoom


Первая статья будет о первых трёх пунктах.

Если Вам интересны эти темы, добро пожаловать под кат.
Читать дальше →

Jam with Chrome

Reading time1 min
Views18K


Ресурс Jam With Chrome позволит вам устроить джейм-сейшн с вашими друзьями.

Позиционируется как один из хромовых Экспериментов (веб-аудио и веб-сокеты), поэтому запустить эту штуку в другом браузере не получится (Лиса предлагает сразу скачать Хром с этим приложением, но можно продолжить и в ней, просто стабильная работа не гарантируется).

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

Лучше сразу переключаться в PRO-режим.



via

Миллион одновременных соединений на Node.js

Reading time9 min
Views105K


TL;DR:


  • Node.js v0.8 позволяет обрабатывать 1 млн одновременных HTTP Comet соединений на Intel Core i7 Quad/16 Gb RAM практически без дополнительных настроек.
  • На 1 соединение тратится чуть больше 10 Kb памяти (4.1 Kb Javascript Heap + 2.2 Kb Node.js Native + 3.8 Kb Kernel)..
  • V8 Garbage Collector не рассчитан на управление > ~500Mb памяти. При превышении нужно переходить на альтернативный режим сборки мусора, иначе «отзывчивость» сервера сильно уменьшается.
  • Подобный опыт можно (и нужно!) без особых затрат повторить самому (см. под катом).

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

Графический фреймворк. Набор иконок социальных сервисов

Reading time1 min
Views61K


Привет уважаемое хабрасообщество, этот пост служит продолжением еще недавно активно обсуждаемой темы о социальных иконках [1] [2]. Мысль, которая пришла ко мне в голову после прочтения этих статей, привела к появлению нового вектора развития этой темы. Кстати о векторе, например бывает так, что дизайн разрабатываемого сайта или приложения имеет свою специфику и интегрировать стандартные иконки социальных сервисов без адаптации не представляется возможным. В таком случае мы берем в руки гугл и принимаемся за поиск нужных логотипов, для того чтобы создать подходящий набор иконок. Ах да я немного отвлекся, продолжим о векторе, чтобы не проделывать такие скучные действия, я собрал воедино несколько популярных иконок в векторе и теперь каждый желающий может сэкономить немного времени воспользовавшись им.
Читать дальше →

Визуальный редактор XUL Gear стал расширением Firefox

Reading time2 min
Views2.8K
В поиске инструментов, облегчающих жизнь начинающему разработчику расширений для Firefox, я наткнулся на XULPIX — простой, но достаточно мощный визуальный редактор для разработки графическиx пользовательских интерфейсов на основе XUL. С тех пор слежу за нелегкой судьбой проекта — автор не смог его развивать. После передачи другому разработчику проект был переименован в XUL Gear и, после долгого застоя, инструмент выпущен в виде расширения к Firefox.

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

audio.js — слушаем музыку в любом браузере

Reading time1 min
Views70K
audio.js — это javascript библиотека, позволяющая использовать HTML5 тэг повсюду. Что скрывается за словом «повсюду». Если есть возможность использовать тэг , то будет использоваться он, иначе будет подключен плеер на flash. В библиотеку так же входит и UI отображение для этого плеера, которое может быть видоизменено с помощью css.
Читать дальше →

Угон почты mail.ru, привязанной к сотовому? Думаете, вы защищены? [UPD4]

Reading time2 min
Views102K
Как-то год назад у меня угоняли почту на mail.ru. (я так и не понял, каким образом — вирусов нет, левыми компами не пользуюсь).

Тогда я разбил все копья об их техподдержку пытаясь восстановить доступ. Раза 4 заполнял их форму. Но каждый раз получал отбой. Это при том, что до угона были введены мои реальные ФИО/дата рождения и я предоставлял им скан паспорта. Кроме того, 95% почты были со статичного айпи, который я так же указывал и мог подтвердить владение им. Но — нет! «Указанной вами информации недостаточно для восстановления доступа к почте».

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

После восстановления я сразу же привязал почту к сотовому. Теперь-то я в безопасности, думал я!

А вот — хрен!!! Только что на телефон пришла СМС:



Это вообще как так???
Читать дальше →

Node-mysql-libmysqlclient v1.0.0

Reading time2 min
Views1.6K
Надеюсь я не надоел вам своими анонсами, но этот того стоит, так как с настоящего момента можно считать node-mysql-libmysqlclient стабильным модулем. Node-mysql-libmysqlclient добавляет поддержку работы с MySQL для Node.js, обеспечивает синхронное и асинхронное выполнение запросов к БД и имеющий API, близкое к API аналогичных коннекторов для PHP/Perl/Ruby и т.д. Все функции протестированы на ошибки и утечки памяти, если их использовать в соответствии с примерами. Имевший место крах в функции fetchAll() исправлен. По сравнению с ранее анонсированной версией стоит отдельно отметить появление примеров и документации по API.

Версия 1.0.0 и несколько комментариев по поводу Nodelint, Nodeunit и Dox.

Поддержка MySQL в Node.js: node-mysql-libmysqlclient

Reading time4 min
Views16K
Я довольно долго откладывал этот анонс, однако сейчас настало его время.

Встречайте: node-mysql-libmysqlclient v0.0.7, коннектор к MySQL для Node.js, поддерживающий синхронное и асинхронное выполнение запросов к БД и имеющий API, близкое к API аналогичных коннекторов для PHP/Perl/Ruby etc.

Читать об истории создания и возможностях последней версии коннектора.

node.js сокращатель ссылок

Reading time6 min
Views8.2K

Привет, Хабр! В этой статье я пошагово рассмотрю создание простого веб-приложения — сокращателя ссылок на node.js, используя mysql-libmysqlclient, MooTools на сервере и jQuery на клиенте. Статья предполагает, что читатель уже прошёл упражнение «Hello world» и разобрался в самых основах node.js.
Читать дальше →

JavaScript F.A.Q: Часть 1

Reading time15 min
Views74K
image

Несколько дней назад мы с TheShock создали топик в котором собирали ваши вопросы, касательно JavaScript (архитектура, фрэймворки, проблемы). Настало время ответить на них. Мы получили очень много вопросов, как в комментариях так и по email. Эта первая часть ответов — те вопросы, которые достались мне.
Читать дальше →

Асинхронное программирование, коллбеки и использование process.nextTick()

Reading time7 min
Views20K
Несмотря на то, что большинство из изучающих Node.js в какой-то мере знают JavaScript и имеют опыт использования его в контексте браузеров, при обсуждении практических моментов многие встречаются с трудностями в понимании работы стандартной библиотеки и механизмов обеспечения асинхронного выполнения кода, содержащего множество вложенных коллбеков. Также часто возникает недопонимание, Я постараюсь вкратце описать порядок работы event loop в Node.js и рассказать, на какие моменты стоит обратить внимание при написании качественного асинхронного кода. Думаю, что статья будет полезна и тем, кто занимается написанием производительных фреймворков для браузеров.

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

Наглядно о потоке выполнения в Node.js

Reading time3 min
Views12K
В комментариях к моему предыдущему топику об асинхронном программировании, коллбеках и использовании process.NextTick() в Node.js было задано немало вопросов о том, за счёт чего получается или может быть получена большая производительность при использовании неблокирующего кода. Постараюсь это наглядно показать :) Статья призвана в основном прояснить некоторые моменты работы Node.js (и libeio в его составе), которые на словах бывает трудно описать.

Пример обработки запросов сервером с блокирующим чтением:


В первую очередь прокомментирую полезность использования неблокирующего ввода/вывода. Как правило, использовать блокирующие операции в Node.js стоит лишь на этапе инициализации приложения, и то не всегда. Правильная обработка ошибок в любом случае потребует использования try/catch, так что код при использовании неблокирующих операций не будет сложнее, чем при использовании блокирующих операций.
Нужно лишь помнить, что случае, когда запросов неблокирующих операций может оказаться больше, чем потоков libeio. В этом случае новые запросы будут становиться в очередь и блокировать выполнение, однако для программиста это будет происходить прозрачно.
Преимущества неблокирующих операций и некоторые недостатки в картинках

Написание сложных интерфейсов с Backbone.js

Reading time13 min
Views100K
image

Backbone.js это каркас для создания RIA JavaScript приложений, его автором является Jeremy Ashkenas, создатель CoffeeScript, Backbone является частью компании Document Cloud ей же «принадлежит» Underscrore.js. Backbone — очень легкая библиотека, помогающая вам создавать интерфейсы. Она может работать с любыми библиотеками, к которым вы привыкли.
Backbone это набор классов, размером менее 4Кб, которые формируют структуру вашего кода и помогают создавать качественные MVC веб-приложения.
Backbone формирует структуру тяжелых JavaScript приложений, внесением моделей с key-value подобным хранилищем и своими событиями, коллекций с богатыми API, видов (ориг. views) с декларативной обработкой событий и соединяет все это в в одно приложение, поддерживающее RESTful JSON интерфейс.

Backbone не может работать без Underscore.js. Для поддержки REST API и работы с DOM элементами в Backbone.View настоятельно рекомендуется подключить json2.js и jQuery-подобную библиотеку: jQuery или Zepto

В статье будет рассмотрена структура Backbone.js, будет поэтапно создано простое Todo приложение.
Читать дальше →

Установка node.js на Linux, FreeBSD, Windows

Reading time6 min
Views85K
node.js — серверный асинхронный Javascript, превосходный инструмент для создания серверной части COMET приложений, в частности, для игрушек, чатов, и других высоконагруженных проектов, использующий синтаксис Javascript, прекомпилируемый в машинный код, работающий на скорости, сравнимой с кодом на C++, очень быстрый, способный держать 10 — 12 тысяч подключений, и не создающий отдельного процесса/не интерпретирующий себя заново/не запускающий процесс при каждом новом клиенте. Использует в качестве основы V8 — движок Javascript от Google. Удобные возможности, можно установить значение переменной при одном посетителе, и считать это значение при ответе другому.
Обращаю внимание на то, что если вы не программировали, например, на Python или Ruby, только на PHP, не обходите его стороной, это не ещё один незнакомый язык. И в этом его преимущество — Javascript — знакомый язык, особенно для тех, кто программировал на PHP+Javascript, но PHP не позволял очень многих вещей, особенно в связке с Apache, например, аплоад файлов с полосой загрузки (без Flash), возможность низкоуровневого управления сетью (возможность написать, например, клиента или сервер Mysql или прокси-сервер вроде nginx).
О гибкости языка говорит тот факт, что расширения для работы с MySQL, например, написаны на самом Javascript.
Я планировал написать статью с описанием этой замечательной системы, с примерами, но на момент чтения читателю хорошо бы иметь под рукой установленную версию node.js. Поэтому этот пост о том, как установить node.js, в том числе и на Windows, что актуально в связи с недавним появлением порта под cygwin. (Да, есть информация о том, где скачать node.exe)
Читать дальше →

За пределами HTML5: API к базам данных и путь к IndexedDB

Reading time4 min
Views6.6K
IndexedDB – развивающийся веб-стандарт для хранения значительных объемов структурированных данных в браузере и осуществления высокопроизводительного поиска по данным с помощью индексирования. Mozilla внесла значительный технический вклад в эту спецификацию, и мы планируем реализовать её в Firefox 4 (поддерживается в FF RC4 — прим. пер.). Мы общались с известными веб-разработчиками на предмет внедрения элегантного API для хранения структурированных данных в веб. Safari, Chrome и Opera поддерживают технологию Web SQL Database, использующую SQL-запросы, которые передаются строковыми аргументами в JavaScript API; нам же кажется, что эстетическая составляющая разработки тоже заслуживает внимания, а подобное решение является не очень элегантным для клиентских веб-приложений. Мы донесли мнение разработчиков до редактора спецификации IndexedDB, и пообщались с Microsoft, которая отметила, что IndexedDB была бы не плохим решением для веба. С маячащими на горизонте реализациями от команды Chrome, нам кажется необходимым объяснить наш выбор архитектуры и то, почему нам кажется, что IndexedDB является лучшим решением для веб нежели Web SQL Database.

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

Запускаем сторонний код в песочнице

Reading time8 min
Views5.9K
Как гласит статья из Википедии, Песочница — механизм для безопасного исполнения программ. Песочницы часто используют для запуска непротестированного кода, непроверенного кода из неизвестных источников, а также для запуска и обнаружения вирусов.

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

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

Edge: Онлайн MIDI-секвенсор

Reading time2 min
Views3.1K
Прежде чем я начну, позвольте привести ряд предположений касательно Вашей заинтересованности темой.

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

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

Предлагаю Вашему вниманию легкое и элегантное решение.

Это веб-сервис или попросту сайт, где любой желающий может написать музыкальное произведение от примитивного рингтона до симфонической формы.
Оно называется "Edge: Онлайн MIDI-секвенсор".

Краткая справка:
MIDI — формат данных, цифровой аналог нотной записи.

Секвенсор — программа (бывает и в аппаратном исполнении), позволяющая этими данными оперировать.

Работа в секвенсоре требует вменяемого браузера из семейств Gecko, WebKit. Opera 9+ поддерживается, но создаст значительно больше неудобств, чем Chrome или Firefox.

Открываем Edge и смело наносим правой кнопкой мыши ноты в Окно аранжировки и жмем Render. Но все-таки рекомендую прочесть небольшое руководство или user guide

Скриншот рабочего состояния:
Edge Online MIDI Sequencer screenshot

Ну и пара звуковых примеров, полученных в результате работы с Edge:


Вы можете знать нотную грамоту и пользоваться соглашением:
до: «c», ре: «d», ми: «e», фа: «f», соль: «g», ля: «a», си: «b», диез: "+".
Хотя можете и не знать и просто расставлять кирпичики нот по сетке окна аранжировки на глаз.

Кое-что еще о MIDI-формате


На первый «взгляд ухом» MIDI-файл звучит неказисто, но не стоит забывать, что качество его звучания целиком на совести используемого MIDI-синтезатора, воспроизводящего MIDI-файл. В нашем случае этим синтезатором является quicktime.

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

Ну, а теперь взорвите этот танцпол! =)

В движке Gecko 2 (во браузере Firefox 4) переменится способ регистрации кросс-платформенных компонентов (XPCOM)

Reading time2 min
Views1.4K
[mozilla.org]В прежней версии движка (существовавшей до июля 2010 года) все XPCOM-компоненты (будь они джаваскриптовыми или же скомпилированными двоичными) сперва подгружались браузером, а затем регистрировали сами себя. Теперь вместо этого все сведения, необходимые для их регистрации, авторам расширений придётся складывать в текстовый файл «chrome.manifest» (где всякий хром описывается), и регистрацией будет заниматься сам браузер.

Те файлы с путями вида «platform/WINNT_x86-msvc/chrome.manifest» (это пример пути для Windows), в которых прежде хранились отдельные хромовые манифесты для каждой платформы, отменяются. Вместо этого в манифестах можно использовать особые пометки о том, что та или иная строка манифеста должна применяться только на некоторой платформе.

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

Ценою этих перемен станет необходимость переписать абсолютно все те расширения, которые содержали и использовали собственные компоненты XPCOM (на MDC есть инструкции о том, как это сделать). Кроме того, уведомления (notifications) с именами «xpcom-startup» и «app-startup» больше не поступают в компоненты, так как во время событий, соответствующих этим уведомлениям, никаких компонентов ещё нет.

Многие расширения, заброшенные их авторами, придётся переписывать для переноса на Firefox 4: прежние полушаманские трюки, направленные на простую отмену проверки версий (совершаемую либо вручную, либо расширениями наподобие «Nightly Tester Tools», «MR Tech Toolkit», «Add-on Compatibility Reporter»), не заставят их заработать корректно.

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

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity