<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр:  Метки / prototype</title>
	<link>http://habrahabr.ru/rss/tag/prototype/</link>
	<description><![CDATA[]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 08:11:46 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	
			
		<item>		
			<title><![CDATA[JavaScript / Chosen: сделай выпадающие списки более дружественными]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/124899/</guid>
			<link>http://habrahabr.ru/blogs/javascript/124899/</link>			
			<description><![CDATA[Плагин Chosen создан для оформления красивых и удобных выпадающих списков с помощью jQuery и Prototype. Для установки плагина достаточно просто скачать <a href="https://github.com/harvesthq/chosen">файлы</a> и прописать одну строчку:<br/>
<br/>
<pre><code class="javascript">$(&quot;.chzn-select&quot;).chosen()</code></pre> (версия для jQuery)<br/>
<br/>
По умолчанию в Chosen вместо длинного текстового списка предлагается поле, по нажатию на которое появляется список. Поддерживается автодополнение ввода, выбор нескольких пунктов меню, элемент <i>optgroup</i> и др. Выглядит вполне нативно. В общем, <a href="http://harvesthq.github.com/chosen/">лучше один раз увидеть</a>.<br/>
<br/>
Поскольку Chosen заменяет стандартный элемент HTML, то не нужно беспокоиться, как он работает с браузерами без поддержки JavaScript. Также не нужно ничего менять в бэкенде: формы сабмиттятся как обычно, изменения только в пользовательском интерфейсе. <br/>
<br/>
<b>Некоторые форки:</b><br/>
<a href="https://github.com/julesjanssen/chosen">Chosen для MooTools</a><br/>
<a href="https://github.com/Polzme/chosen">Модуль Chosen для Drupal 7</a>]]></description>
			
			<pubDate>Mon, 25 Jul 2011 15:36:06 GMT</pubDate>
			<author>alizar</author>
			<category>Chosen</category><category>выпадающее меню</category><category>jQuery</category><category>Prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Блог компании ALEE Software / Интерактивное прототипирование с GUI Machine]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/company/alee/blog/123745/</guid>
			<link>http://habrahabr.ru/company/alee/blog/123745/</link>			
			<description><![CDATA[<h4>В предыдущих сериях...</h4><br/>
<img align="right" src="http://hostingkartinok.com/image/01201107/1ceb1bd94039f21870b192810da4cf9a.png" alt="image"/>В предыдущих статьях цикла мы в деталях описали <a href="http://habrahabr.ru/company/alee/blog/116440/">процесс поиска подходящего нам инструмента прототипирования</a> и <a href="http://habrahabr.ru/company/alee/blog/117400/">историю создания собственного инструмента</a> – GUI Machine.<br/>
<br/>
Теперь пришло время рассказать более подробно о том, что у нас получилось. Дабы не тратить драгоценное время читателя, приступлю к описанию инструмента прототипирования GUI Machine, его функциональности и возможностей без замедления и лирических отступлений.<br/>
<br/>
Статья будет интересна не только тем, кто уже знаком с инструментом и хочет узнать о нём больше, но и тем, кто находится в активном поиске инструмента прототипирования и проводит их сравнительный анализ.<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/company/alee/blog/123745/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Fri, 08 Jul 2011 16:42:49 GMT</pubDate>
			<author>RGaifutdinov</author>
			<category>gui machine</category><category>прототипирование</category><category>интерфейс</category><category>gui</category><category>прототип</category><category>UI</category><category>java</category><category>prototype</category><category>interface</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Введение в prototype.js]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/122270/</guid>
			<link>http://habrahabr.ru/blogs/javascript/122270/</link>			
			<description><![CDATA[Подключаюсь к разработке проекта, в котором используется этот замечательный js-фреймворк. До этого использовал только jQuery, поэтому пришлось изучать эту новую для меня библиотеку.<br/>
<br/>
Второе место, куда я пошел за информацией, после Википедии, был Хабр. С удивлением <s>обнаружил</s> не обнаружил здесь блога, посвященного Prototype и более того, никакой информации «для новичков». Решил исправить этот недостаток.<br/>
<br/>
Все заинтересованных — прошу под кат<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/122270/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 20 Jun 2011 13:26:11 GMT</pubDate>
			<author>Anexroid</author>
			<category>javascript</category><category>prototype</category><category>для начинающих</category><category>фреймворки</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Основы и заблуждения насчет JavaScript]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/120193/</guid>
			<link>http://habrahabr.ru/blogs/javascript/120193/</link>			
			<description><![CDATA[<h4>Объекты, классы, конструкторы</h4><blockquote>ECMAScript, будучи высоко-абстрактным объектно-ориентированным языком программирования, оперирует объектами. Существуют также и примитивы, но и они, когда требуется, также преобразуются в объекты. Объект — это коллекция свойств, имеющая также связанный с ней объект-прототип. Прототипом является либо также объект, или же значение null.</blockquote>В JavaScript нет привычных классов, но есть функции-конструкторы, порождающие объекты по определенным алгоритмам (см. Оператор new).<br/>
<br/>
<h4>Прототипное делегирующее наследование</h4><br/>
Классическое наследование очень похоже на то, как люди наследуют гены своих предков. Есть какие-то базовые особенности: люди могут ходить, говорить… И есть характерные черты для для каждого человека. Люди не в состоянии изменить себя — свой класс (но могут поменять собственные свойства) и бабушки, дедушки, мамы и папы не могут динамически повлиять на гены детей и внуков. Все очень по земному. <br/>
<br/>
Теперь представим другую планету, на которой не такое как на Земле генное наследование. Там обитают мутанты с «телепатическим наследованием», которые способны изменять гены своих потомков. <br/>
Разберем пример. Отец наследует гены от Дедушки, а Сын наследует гены от Отца, который наследует от Дедушки. Каждый мутант может свободно мутировать, и может менять гены своих потомков. Например у Дедушки был зеленый цвет кожи, Отец цвет унаследовал, Сын тоже унаследовал цвет. И вдруг Дед решил: «надоело мне ходить зеленым — хочу стать сними», смутировал (изменил прототип своего класса) и «телепатически» распространил эту мутацию Отцу и Сыну, вобщем посинели все. Тут Отец подумал: «Дед на старости лет совсем двинулся» и поменял свой цвет в генах обратно на зеленый(изменил прототип своего класса), и распространил «телепатически» свой цвет сыну. Отец и Сын зеленые, Дед синий. Теперь как бы дед ни старался Отец и сын цвет не поменяют, т.к сейчас Отец в своем прототипе прописал цвет, а Сын в первую очередь унаследует от Прототипа Отца. Теперь Сын решает: «Поменяю ка я свой цвет на черный, а моё потомство пусть наследует цвет от Отца» и прописал собственное свойство, которое не влияет на потомство. И так далее.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/120193/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Sun, 29 May 2011 13:31:50 GMT</pubDate>
			<author>azproduction</author>
			<category>javascript</category><category>this</category><category>new</category><category>instanceof</category><category>null</category><category>undefined</category><category>void</category><category>prototype</category><category>__proto__</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Nokia / Прототипы Nokia на Windows Phone 7 — первые впечатления и вся линейка на начало 2012 года]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nokia/117455/</guid>
			<link>http://habrahabr.ru/blogs/nokia/117455/</link>			
			<description><![CDATA[Не имей сто рублей, а имей сто друзей. Именно эта поговорка ведет меня по жизни и позволяет знакомиться с теми или иными продуктами еще на стадии их начальной разработки. В Москве появился мой старый знакомый, который привез множество новостей относительно Nokia и Windows Phone 7, а также у него на руках был один из прототипов такого устройства. Специально для юристов Nokia добавлю, что это устройство не принадлежит мне. Рискну поделиться с вами рядом впечатлений, а также дополнительной информацией, которую я вынес из нашего общения. <br/>
<br/>
<b>Планы Nokia относительно WP7 — 4 устройства в разработке</b><br/>
Внутри MS есть спецификации на WP7 устройства, так называемые шасси (chassis — не уверен, что именно так пишу, но слово именно это — шасси). В данный момент все многообразие устройств, доступных на WP7 очень похоже друг на друга — у них одинаковая функциональность, спасибо WP7 и отсутствию кастомизации, одинаковые процессоры, платформа от Qualcomm, как результат, очень схожие впечатления и производительность. Сегодня нет никакой разницы аппарат какого производителя купить, они все похожи до одури, отличия минимальны (тип экрана, батарейка, материалы корпуса и так далее). <br/>
<br/>
В конце года выходит вторая волна устройств, так называемое шасси2, в нем сделаны определенные послабления по отношению к производительности устройств (процессор может быть не таким быстрым). Но при этом шасси2 позволяет добавлять новые форм-факторы — например, QWERTY-моноблоки с сенсорными экранами, то чем был известен Windows Mobile в свое время. Все производители создают такие модели уже сегодня, это HTC, Samsung, LG и ряд других компаний, даже SE ведет подобные разработки и изучает вопрос. <br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/nokia/117455/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 14 Apr 2011 06:28:21 GMT</pubDate>
			<author>EldarMurtazin</author>
			<category>nokia</category><category>wp7</category><category>prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
		
			
		<item>		
			<title><![CDATA[*nix / [Из песочницы] Собираем пакет для Solaris из сорцов]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/nix/116087/</guid>
			<link>http://habrahabr.ru/blogs/nix/116087/</link>			
			<description><![CDATA[<h4>Предисловие</h4><br/>
Итак, у вас есть исходный код очень нужной вам программы и некоторые количество серверов под Solaris, на которые необходимо его развернуть. Более того, для успешной компиляции нужна куча модулей Perl.<br/>
<br/>
Не так давно я столкнулся с такой задачей, и, после продолжительных попыток, не могу не поделиться найденным решением.<br/>
<br/>
Задача: Собрать исходный код клиента munin-node под SPARC Solaris и распространить по нескольким серверам.<br/>
<br/>
Весь процесс будет описан на примере операционной системы Solaris 10 SPARC (update, мне кажется особой роли не играет, у меня был и U6, и U9) и свободного распространяего приложения munin (http://munin-monitoring.org/).<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/nix/116087/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 24 Mar 2011 03:09:41 GMT</pubDate>
			<author>magzimko</author>
			<category>cpan</category><category>munin</category><category>perl</category><category>pkgadd</category><category>pkgmk</category><category>prototype</category><category>solaris</category><category>source</category><category>sparc</category><category>unix</category>
		</item>
		
		
		
		
		
		
		
	
		
		
		
			
		<item>		
			<title><![CDATA[JavaScript / [Перевод] Написание документации]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/111861/</guid>
			<link>http://habrahabr.ru/blogs/javascript/111861/</link>
			<description><![CDATA[Если вы пишете документацию открытого исходного кода, то это не просто вежливые дополнение к проектам, она в определенной степени помогает вашему проекту взлететь. Хорошонаписаный README помогает, но полная документация по API делает проект более профессиональным. Даже если ваш проект с закрытым исходным кодом, документация поможет новым коллегам более быстро адаптироваться или поможет вам вспомнить как все работает в длительных проектах.<br/>
<br/>
Давайте посмотрим как устроена документация в популярных JavaScript фрэймворках.<br/>
<br/>
<h4>jQuery</h4><br/>
<img src="http://habrastorage.org/storage/habraeffect/b6/44/b644a6f0e94bd8df0f375d5b8ebeb5ff.png" alt="jQuery"/><br/>
<br/>
Документация jQuery располагается по адресу <a href="http://docs.jquery.com">docs.jquery.com</a> и представляет из себя wiki в которой описана вся документация по API. Любая крупная область API включена в навигацию, каждая страница имеет список методов для этой области. Страница содержит примеры кода и комментарии на Disqus.<br/>
Комментарии исходного кода в основном связаны с багами или с необычным фрагментом кода, который требует пояснений.<br/>
<br/>
Далее: Prototype, JSDoc и несколько специфических подходов к JavaScript документации <br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/111861/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Fri, 14 Jan 2011 10:42:26 GMT</pubDate>
			<author>azproduction</author>
			<category>javascript</category><category>docs</category><category>jsdoc</category><category>jquery</category><category>prototype</category><category>dox</category><category>docco</category><category>pycco</category><category>ronn</category><category>github</category>
		</item>
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Разбираемся с prototype, __proto__, constructor и их цепочками в картинках]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/108915/</guid>
			<link>http://habrahabr.ru/blogs/javascript/108915/</link>			
			<description><![CDATA[Есть javascript код:<br/>
<blockquote><code><font color="black"><ol>
<li><font color="#003366"><b>var</b></font> A <font color="#339933">=</font> <font color="#003366"><b>function</b></font> <font color="#009900">(</font><font color="#009900">)</font> <font color="#009900">{</font><font color="#009900">}</font><font color="#339933">;</font></li>
<li>A.<font color="#660066">prototype</font>.<font color="#660066">b</font> <font color="#339933">=</font> <font color="#CC0000">100</font><font color="#339933">;</font></li>
<li><font color="#003366"><b>var</b></font> a <font color="#339933">=</font> <font color="#003366"><b>new</b></font> A<font color="#009900">(</font><font color="#009900">)</font><font color="#339933">;</font></li>
<li>A.<font color="#660066">prototype</font>.<font color="#660066">c</font> <font color="#339933">=</font> <font color="#CC0000">101</font><font color="#339933">;</font></li>
<li>a.<font color="#660066">c</font> <font color="#339933">=</font> <font color="#339933">-</font><font color="#CC0000">100</font><font color="#339933">;</font></li>
<li>A.<font color="#660066">prototype</font> <font color="#339933">=</font> <font color="#009900">{</font><font color="#009900">}</font><font color="#339933">;</font></li>
<li>A.<font color="#660066">prototype</font>.<font color="#660066">b</font> <font color="#339933">=</font> <font color="#CC0000">536</font><font color="#339933">;</font></li>
<li><font color="#009966"><i>/* 1 */</i></font> console.<font color="#660066">log</font><font color="#009900">(</font>a.__proto__.<font color="#660066">constructor</font>.<font color="#660066">prototype</font>.<font color="#660066">b</font> <font color="#339933">===</font> <font color="#CC0000">536</font><font color="#009900">)</font><font color="#339933">;</font></li>
<li><font color="#003366"><b>var</b></font> b <font color="#339933">=</font> <font color="#003366"><b>new</b></font> A<font color="#009900">(</font><font color="#009900">)</font><font color="#339933">;</font></li>
<li><font color="#009966"><i>/* 2 */</i></font> console.<font color="#660066">log</font><font color="#009900">(</font>a.__proto__.__proto__.<font color="#660066">constructor</font> <font color="#339933">===</font> a.__proto__.<font color="#660066">constructor</font>.<font color="#660066">prototype</font>.<font color="#660066">constructor</font><font color="#009900">)</font><font color="#339933">;</font></li>
<li><font color="#009966"><i>/* 3 */</i></font> console.<font color="#660066">log</font><font color="#009900">(</font>b <font color="#000066"><b>instanceof</b></font> A<font color="#009900">)</font><font color="#339933">;</font></li>
<li><font color="#009966"><i>/* 4 */</i></font> console.<font color="#660066">log</font><font color="#009900">(</font><font color="#339933">!</font><font color="#009900">(</font>a <font color="#000066"><b>instanceof</b></font> Object<font color="#009900">)</font><font color="#009900">)</font><font color="#339933">;</font></li>
</ol></font></code></blockquote>Вопрос. Что возвратят выражения 1-4 и почему?<br/>
<br/>
Затрудняетесь ответить? <br/>
Тогда вам стоит пройти под кат ;-) (Далее 600 Кб <strong>больших</strong> изображений)<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/108915/#habracut">Читать дальше</a> </div>]]></description>
			
			<pubDate>Fri, 26 Nov 2010 21:52:22 GMT</pubDate>
			<author>azproduction</author>
			<category>javascript</category><category>prototype</category><category>__proto__</category><category>constructor</category><category>tutorial</category><category>ликбез</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / После всех асинхронных вызовов]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/108298/</guid>
			<link>http://habrahabr.ru/blogs/javascript/108298/</link>			
			<description><![CDATA[Итак, мы пишем приложение с кучей асинхронных запросов. Нам надо отправить два асинхронных запроса и обработать их результат только после того, как будет получен результат обоих. Например, это могут быть ассинхронные обращение к файлу и запрос к базе, результат которых надо сложить вместе и обработать. Или два аджакс запроса.<br/>
Но особенность асинхронных запросов в том, что мы не знаем, какой из них придёт первым, а какой — последним. Решают это разными способами, но я не видел еще красивого и изящного. В топике я расскажу, как я это вижу.<br/>
<blockquote><pre><code>var process = processFsAndDb.after('fs', 'db');

asyncFsAccess( file, process.fs);
asyncDbAccess(query, process.db);
</code></pre></blockquote><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/108298/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 17 Nov 2010 04:18:52 GMT</pubDate>
			<author>TheShock</author>
			<category>javascript</category><category>ajax</category><category>асинхронное программирование</category><category>расширение прототипов</category><category>prototype</category><category>function</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Клиентская оптимизация / Увеличиваем скорость загрузки сайта используя lazy-load изображений]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/client_side_optimization/87083/</guid>
			<link>http://habrahabr.ru/blogs/client_side_optimization/87083/</link>			
			<description><![CDATA[Сейчас многие сайты насыщены графикой в разных видах: аватары, иллюстрации к постам, галереи и тп. <br/>
<br/>
Читатели блога «Клиентская оптимизация» как никто другой знают цену лишних запросов к серверу. <br/>
<br/>
Количество обращений к серверу можно легко уменьшить с помощью техники пост загрузки изображений, которые не попадают в область видимости(первый экран). Т.е изначально будут загружаться только те изображения которые пользователь способен увидеть, остальные будут загружаться по мере скролинга страницы. <br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/client_side_optimization/87083/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 10 Mar 2010 20:47:01 GMT</pubDate>
			<author>ivv</author>
			<category>YUI</category><category>jquery</category><category>prototype</category><category>performance</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Веб-разработка / Download Master Plugin ломает Prototype-сайты]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/webdev/80384/</guid>
			<link>http://habrahabr.ru/blogs/webdev/80384/</link>			
			<description><![CDATA[С недавнего времени у меня на Клавогонках у некоторых пользователей начались проблемы совершенно мистического плана — не работали функции, которые ну никак не могли не работать, всплывали абсолютно дикого вида ошибки и гейзенбаги. Долго и мучительно пытаясь выяснить в чем проблема, и не без помощи сообразительных юзеров я обнаружил, что последняя версия Download Master (довольно популярная программа), выпущенная вроде бы где-то в ноябре, содержит удивительнейший Firefox-плагин, который ставится в браузер автоматически. Плагин этот зовется Download Master Plugin 1.2 и его удивительность заключается в том, что он <i>подгружает в глобальное javascript-пространство страницы библиотеку jQuery целиком как она есть</i>. По-настоящему подгружает, со всеми функциями, и (внимание!) с функцией $(). Тем самым, разумеется, ломая аналогичную функцию из Прототайпа.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/webdev/80384/#habracut">Tест кейс</a> </div>]]></description>
			
			<pubDate>Sun, 10 Jan 2010 10:43:23 GMT</pubDate>
			<author>artch</author>
			<category>Download Master</category><category>jQuery</category><category>Prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Виджет выбора OpenID провайдера на Prototype]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/77539/</guid>
			<link>http://habrahabr.ru/blogs/javascript/77539/</link>			
			<description><![CDATA[Когда-то я уже писал, <a href="http://habrahabr.ru/blogs/zend_framework/54734/">как интегрировать OpenID авторизацию</a> в ваш сайт. Речь шла о серверной части. <br/>
Сейчас же я говорю о UI части — виджет для выбора провайдера. <br/>
<br/>
В качестве клиентской библиотеки для своего <a href="http://www.askdev.ru/">проекта</a> я выбрал <a href="http://prototypejs.org/">prototype</a> и первым делом я полез в гугл поискать готовое решение. Удалось найти такое, но только для JQuery — <a href="http://code.google.com/p/openid-selector/">code.google.com/p/openid-selector/</a><br/>
<br/>
И так мне ничего не оставалось как написать OpenID selector самому. Вот что получилось <br/>
<br/>
<img src="http://openid-for-prototype.googlecode.com/files/openidPrototype.png" alt="image"/><br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/77539/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Mon, 07 Dec 2009 13:48:52 GMT</pubDate>
			<author>ivv</author>
			<category>OpenID</category><category>виджет</category><category>javascript</category><category>prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Персональные блоги / Как «честно» симулировать события]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/personal/77267/</guid>
			<link>http://habrahabr.ru/blogs/personal/77267/</link>			
			<description><![CDATA[Здравствуй уважаемое хабрасообщество. <br/>
Не так давно я начал заморачиваться не только тестированием кода на ruby, но и js, которого становиться слишком много в проектах. Со<br/>
временем добрался и до IU на js, а для его тестирования понадобилось симулировать всяко-разные события. Поискав, нашёл в одной из библиотек на jquery решение. В расширениях для тестирования была <a href="http://github.com/eduardolundgren/jquery-simulate">искомая библиотечка</a> для симуляции событий. Но вот незадача, мы используем prototype (я закоренелый рубист и оно мне нравиться), а не jquery. <br/>
<br/>
Немного поразмыслив я решил подправить сие, для использования, как plugin к prototype. Что из этого получилось? Что ж, мне очень помогло в тестах. Если Вы тоже сторонник тестируемого кода — Вам тоже будет полезно. <br/>
<br/>
В использовании выглядит это примерно вот так:<br/>
<br/>
<code>$('foo').simulate('keypress', Event.KEY_RETURN);<br/>
<br/>
$('foo').simulate(&quot;drag&quot;, {<br/>
 dx: 10,<br/>
 dy: 0,<br/>
 onComplete: function(element){<br/>
 alert('drag simulation $(' + element.id + ')');<br/>
 }<br/>
});</code><br/>
<br/>
Я намеренно расширял Element, а не Event — мне так кажется логичнее, хотя это можно и обсудить. <a href="http://cloud.github.com/downloads/saks/Prototype-simulate/prototype.simulate.min-0.0.1.js">Сжатая версия</a> весит 3K, <a href="http://cloud.github.com/downloads/saks/Prototype-simulate/prototype.simulate-0.0.1.js">с документацией</a> 7K. <a href="http://github.com/saks/Prototype-simulate">Git</a><br/>
<br/>
Для почитателей jquery — выше ссылка.]]></description>
			
			<pubDate>Fri, 04 Dec 2009 10:59:19 GMT</pubDate>
			<author>saks</author>
			<category>javascript</category><category>prototype</category><category>testing</category><category>jquery plugins</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Персональные блоги / Проектирование информационных систем в Visual Paradigm]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/personal/77211/</guid>
			<link>http://habrahabr.ru/blogs/personal/77211/</link>			
			<description><![CDATA[Данная статья подготовлена в качестве доклада небольшой группой студентов <a href="http://kpi.ua">НТУУ «КПИ»</a>. Являясь её соавтором я решил выложить текстовую копию на хабр, может кому пригодиться. В ней рассказано о проектировке крупных информационных систем при помощи Visual Paradigm. Букв много и написано на ооочень начальном уровне, потому имевшим с этим дело можно не читать.<br/>
<div class="habracut"> <a class="habracut" href="http://AndryX.habrahabr.ru/blog/77211/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Thu, 03 Dec 2009 20:51:59 GMT</pubDate>
			<author>AndryX</author>
			<category>visual paradigm</category><category>uml</category><category>rup</category><category>architecture</category><category>prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Сравнение скорости популярных JS библиотек]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/75622/</guid>
			<link>http://habrahabr.ru/blogs/javascript/75622/</link>			
			<description><![CDATA[Встал задача, выбрать JS библиотеку для нового проекта. Я уже работал с <a href="http://www.prototypejs.org">Prototype</a> и <a href="http://jquery.com">JQuery</a>, в разных проектах и выбирал в основном из них. Обе библиотеки имеют свои слабые и сильные стороны. Холивар на данную тему можно развивать до бесконечности, но меня в первую очередь интересует скорость. <br/>
<br/>
Благодаря <a href="http://lusever.ru/css-selectors/">приложению</a> пользователя <a href="http://lusever.habrahabr.ru/" class="user_link">lusever</a>, я провел тест производительности. В тесте так же участвовала не без известная библиотека <a href="http://www.extjs.com">Ext JS</a>. Тестируется скорость выборки DOM элементов по селекторам, можно зайти на сайт и попробовать пройти тест самостоятельно, кстати, там есть очень интересные примеры селекторов, о которых я ранее не знал.<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/75622/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 18 Nov 2009 10:37:08 GMT</pubDate>
			<author>Arion</author>
			<category>javascript</category><category>prototype</category><category>jquery</category><category>extjs</category><category>скорость</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Персональные блоги / HDRA. Interactive Mixer Prototype — Next Gen Game Audio Tool]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/personal/70583/</guid>
			<link>http://habrahabr.ru/blogs/personal/70583/</link>			
			<description><![CDATA[<a href="http://www.aquinn.co.uk/">Andrew Quinn</a> в среде max/msp создал прототип интерактивного микшера. Дакинг, снэпшоты микшера, импорт VST-эффектов, для них же insert и return, изменение параметров эффектов в зависимости от игрового параметра (контроллера) и даже зарождается управление по миди. Работает это всё вот как: задаются настройки микшера для игровых ситуаций. Например, в зависимости от насыщенности происходящего:<br/>
<br/>
1. Сто игроков на самолётах под грайндкор бомбят городишко с миллионом мобов.<br/>
2. Один немой сферический моб в позе лотоса думает о вечном в вакууме.<br/>
3. Промежуточные варианты.<br/>
<br/>
Можно использовать не только в зависимости от насыщенности происходящего. Например, удобно переключать режимы камеры в симуляторе и применять различные параметры дакинга, громкости групп звуков, добавлять эффекты и изменять их параметры относительно вида на машину или из кабины/кокпита. Индур/аутдур и т.д.<br/>
<br/>
Для перехода из одного состояния микшера (снэпшота) в другое реализована интерполяция с настройками кривой и задержки.<br/>
Так же реализована система выбора текущего снэпшота микшера по приоритету, на случай, если вызывается больше одного снэпшота.<br/>
<br/>
И всё это с удобным и понятным саунд-дизайнеру интерфейсом.<br/>
<br/>
<img src="http://www.aquinn.co.uk/InteractiveMixer1sm.jpg"/><br/>
<br/>
<a href="http://interactivemixing.ning.com">сайт проекта</a><br/>
<a href="http://www.aquinn.co.uk/InteractiveMixer.zip">скачать InteractiveMixer</a><br/>
<a href="http://www.aquinn.co.uk/InteractiveMixerDocumentation.pdf">документация</a>]]></description>
			
			<pubDate>Thu, 24 Sep 2009 22:04:31 GMT</pubDate>
			<author>phomin</author>
			<category>gamedev</category><category>game audio</category><category>тулзы</category><category>tools</category><category>audio</category><category>sound desing</category><category>саунд-дизайн</category><category>r</category><category>amp;d</category><category>prototype</category><category>sound</category>
		</item>
		
		
		
		
		
		
		
		
	
		
		
		
			
		<item>		
			<title><![CDATA[JavaScript / [Перевод] Prototype 1.6.1: быстрее, чище, команднее]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/69069/</guid>
			<link>http://habrahabr.ru/blogs/javascript/69069/</link>
			<description><![CDATA[Поздравляем <a href="http://prototypejs.org/2009/9/1/core-team-update-andrew-and-tobie-take-the-reins">Эндрю Дюпона <i>(Andrew Dupont)</i> и Тоби Ланжеля <i>(Tobie Langel)</i></a> (нового официального соведущего ядра Prototype) с <a href="http://prototypejs.org/2009/9/1/prototype-1-6-1-released">выходом нового 1.6.1</a>:<br/>
<ul>
<li><b>Полная совместимость с новыми браузерами.</b> Эта версия Prototype полностью поддерживает 1.0 и более крупные версии Google Chrome, и Internet Explorer 8 как в режиме совместимости, так и в суперстандартном.</li>
<li><b>Сохранение метаданных в элементах.</b> С лёгкостью объединяйте джаваскриптовые пары ключей и значений с элементами DOM. <a href="http://prototypejs.org/2009/2/16/pimp-my-code-1-element-storage">Поглядите блогозапись, с которой это началось</a>.</li>
<li><b>Новые события мыши.</b> Собственнические события Internet Explorer — «mouseenter» и «mouseleave» — теперь доступны для всех браузеров.</li>
<li><b>Улучшенное быстродействие и домовитость.</b> Часто использовавшиеся методы Function#bind, String#escapeHTML и Element#down стали быстрее, и Prototype лучше прибирает за собою.</li>
<li><b>Собрано со Sprockets.</b> Теперь вы можете включать репозиторий исходного кода Prototype в своё приложение и использовать <a href="http://getsprockets.org/">Sprockets</a> для управления зависимостями и для распространения.</li>
<li><b>Внутреннее документирование посредством PDoc.</b> Наша <a href="http://api.prototypejs.org/">документация по API</a> теперь хранится внутри исходного кода посредством PDoc, так что проще посылать патчи или лицезреть документацию по конкретной версии.</li>
</ul>Подробности глядите во <a href="http://prototypejs.org/2009/3/27/prototype-1-6-1-rc2-ie8-compatibility-element-storage-and-bug-fixes">блогозаписи о RC2</a>, во <a href="http://prototypejs.org/2009/6/16/prototype-1-6-1-rc3-chrome-support-and-pdoc">блогозаписи о RC3</a>, и в <a href="http://github.com/sstephenson/prototype/blob/f405b2c510e09b55d08c926a9e1a5c2e2d0a1834/CHANGELOG">CHANGELOG</a>.<br/>
<br/>
Вот несколько симпатичных изменений. Хотя с неподдельным волнением ожидаю увидеть работу нового Prototype 2.0 и как команда перезагрузит Prototype.]]></description>
			
			<pubDate>Tue, 08 Sep 2009 17:46:52 GMT</pubDate>
			<author>Mithgol</author>
			<category>Prototype</category><category>Prototype.js</category><category>обновление библиотеки</category>
		</item>
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[JavaScript / Полноценные классы в Javascript]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/javascript/68004/</guid>
			<link>http://habrahabr.ru/blogs/javascript/68004/</link>			
			<description><![CDATA[К сожалению, в своей практике освоения Javascript мне не приходилось встречать толковой реализации классов и механизмов наследования. Хотя сам язык достаточно гибок и имеет огромный потенциал. Не доводилось видеть и удобной организации приватных методов. Обычно для этого использую следующий трюк. В качестве приватного метода создают функцию прямо в конструкторе, где должны быть описаны и все методы использующие её:<br/>
<blockquote><code><font color="black"><font color="#0000ff">function</font> MyClass() {<br/>
&nbsp;&nbsp;<font color="#0000ff">function</font> privateMethod() {<br/>
&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;<font color="#0000ff">this</font>.publicMethod = <font color="#0000ff">function</font>() {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008000">// используем privateMethod();</font><br/>
&nbsp;&nbsp;}<br/>
}</font></code></blockquote>Данный подход имеет недостатки, поскольку privateMethod в указанном примере грубо назвать «методом класса». Все публичные методы приходиться описывать прямо в конструкторе, а значит, они будут создаваться каждый раз при создании нового объекта. <br/>
Также невозможно вне конструктора дополнить класс новыми методами.<br/>
<br/>
Хочу предложить собственный механизм реализации классов в Javascript и поделиться с хабро-сообществом одной своей библиотекой &mdash; <a href="http://begom.com/js/jsOOP.js">jsOOP</a>.<br/>
Библиотека позволяет создавать неймспейсы и классы, наследовать их, добавлять методы и события с определенным уровнем доступа (public, private, protected) и дарит прочие вкусности объектно-ориентированного программирования.<br/>
<br/>
<div class="habracut"> <a class="habracut" href="http://habrahabr.ru/blogs/javascript/68004/#habracut">Читать дальше &rarr;</a> </div>]]></description>
			
			<pubDate>Wed, 26 Aug 2009 09:08:34 GMT</pubDate>
			<author>denisskin</author>
			<category>javascript</category><category>ооп</category><category>классы</category><category>наследование</category><category>prototype</category>
		</item>
		
		
		
		
		
		
		
		
	
			
		<item>		
			<title><![CDATA[Персональные блоги / Кризис добрался до разработчиков]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/personal/64731/</guid>
			<link>http://habrahabr.ru/blogs/personal/64731/</link>			
			<description><![CDATA[В кризис людям не до игрушек.<br/>
<br/>
Предположения, что рецессия только положительно отразится на индустрии развлечений (уволенные люди будут больше сидеть дома, играть в игры и смотреть фильмы), не оправдались. Совсем наоборот. Сложно найти отрасль, пострадавшую от кризиса так сильно, как компьютерные игры.<br/>
<br/>
<a href="http://www.gamedaily.com/articles/news/npd-game-industry-sees-biggest-decline-since-2000-as-june-sales-plummet-31/">Cтатистика NPD Group</a> показывает крупнейший спад за последние девять лет: в июне продажи упали на 31% (!) по сравнению с прошлым годом. Продажи игрового железа упали на 38%, программ — на 29%, аксессуаров — на 22%. Отрицательные цифры мы видим четвёртый месяц подряд, а в июне они достигли критического уровня. Нечто подобное на рынке игр было только в сентябре 2000 года (минус 41%).<br/>
<br/>
Аналитики всё ещё надеются, что такой провал не обязательно связан с кризисом. Возможно, прошлый год был экстраординарно удачным. Ведь прошлой весной вышла Grand Theft Auto IV с рекордными цифрами продаж, а также ставший популярным комплект для фитнеса Wii Fit. Нынче таких хитов на рынке нет, даже самая популярная в июне игра Prototype и близко не может приблизиться к прошлогоднему GTA IV.<br/>
<br/>
Производители уже меняют планы в связи с кризисом. Они считают, что нет смысла выпускать новые игры в такое трудное время. Например, компания Take-Two объявила о <a href="http://technologizer.com/2009/07/13/bioshock-2-delayed-one-less-holiday-game-please/">переносе релиза Bioshock 2</a> на следующий год. Так же могут сделать разработчики других потенциальных хитов.]]></description>
			
			<pubDate>Fri, 17 Jul 2009 09:36:23 GMT</pubDate>
			<author>alizar</author>
			<category>компьютерные игры</category><category>видеоигры</category><category>кризис</category><category>Prototype</category><category>Bioshock 2</category>
		</item>
		
		
		
		
		
		
		
		
	
		
		
			
		<item>		
			<title><![CDATA[Подкасты / [PODCAST] Podgames Weekly #32]]></title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/hpodcasts/63898/</guid>
			<link>http://habrahabr.ru/blogs/hpodcasts/63898/</link>
			<description><![CDATA[<img src="http://podgames.ru/wp-content/uploads/pw-32.jpg" alt="image"/><br/>
<i>Присутствует ненормативная лексика</i><br/>
<ul>
<li>[00:55] Call of Juarez: Bound in Blood. Стреляем в северян, южан, ковбоев, американцев, мексиканцев, индейцев… Кроваво, но справедливо</li>
<li>[14:30] Prototype. Нам не дали поиграться гравицапой.</li>
<li>[25:00] Street Fighter 4. Убийца пальцев и джойстиков.</li>
<li>[36:15] Подкасты от <a href="http://gametech.ru">Gametech.ru</a> и открытие <a href="http://gamer.ru">Gamer.ru</a>.</li>
<li>[39:05] Комментарии слушателей.</li>
<li>[43:32] Ретро:<a href="http://www.old-games.ru/game/78.html">Master of Orion 2</a>.</li>
</ul><br/>
Сайт подкаста — <a href="http://podgames.ru">Podgames.ru</a>, <a href="http://feeds.feedburner.com/podgames">RSS</a><br/>
Данные записи: 43 Мб, 62:15, 96 kbps]]></description>
			
			<pubDate>Wed, 08 Jul 2009 13:37:01 GMT</pubDate>
			<author>Barmunk</author>
			<enclosure url="http://podgames.ru/wp-content/uploads/podgames-32.mp3" type="audio/mpeg" />
			<category>подкаст</category><category>игры</category><category>street fighter 4</category><category>master of orion 2</category><category>podgames</category><category>call of juarez: bound in blood</category><category>gamer.ru</category><category>prototype</category>
		</item>
		
		
		
		
		
		
	
	
	
	
	
	
	
	

	
</channel>
</rss>

