<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1560720494131975411</id><updated>2024-11-08T18:41:04.271+03:00</updated><category term="Sencha Touch"/><category term="News"/><category term="ExtJS"/><category term="Offtop"/><category term="Release notes"/><category term="Screencasts"/><category term="Tips"/><category term="Bugs"/><category term="Components"/><category term="PhoneGap"/><category term="Sencha Touch Tutorial"/><category term="CSS3"/><category term="Freelance"/><category term="Google"/><category term="HTML5"/><category term="Habrahabr"/><category term="iPhone"/><category term="oDesk"/><category term="Вакансии"/><category term="Ссылки"/><category term="Ajax"/><category term="Android"/><category term="Blackberry"/><category term="Canvas"/><category term="Plugins"/><category term="Project management"/><category term="Refactoring"/><category term="XCode"/><category term="Библиотеки"/><category term="Социальные сети"/><title type='text'>Mobile Web Applications</title><subtitle type='html'>Разработка web-приложений под мобильные устройства.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-5638655982696350445</id><published>2011-07-02T10:55:00.001+04:00</published><updated>2011-07-21T15:06:13.077+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Offtop"/><category scheme="http://www.blogger.com/atom/ns#" term="Социальные сети"/><title type='text'>Google+</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Вчера решил-таки получить &lt;b&gt;инвайт&lt;/b&gt; в новую &lt;a href=&quot;http://plus.google.com/&quot;&gt;социальную сеть&lt;/a&gt; корпорации добра.&amp;nbsp;Сделать мне это удалось быстро и без особого труда, хотя изначально, даже при наличии инвайта, меня не пускали - гугл говорил, мол, и так уже слишком много народа и необходимо подождать.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVxR0xouAqrfV3OzGJ3iCUgL4O6wD9-ryCc9H-yxftFKHZONpe45y9KNwkqsO9A0OCbbRjggZM2obX98dwq0_hBF9nGi91pD3hd13Iy6MEayru7pSALzaWKvUr_wrmXlC4k0pbYdCWNdw/s1600/s1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVxR0xouAqrfV3OzGJ3iCUgL4O6wD9-ryCc9H-yxftFKHZONpe45y9KNwkqsO9A0OCbbRjggZM2obX98dwq0_hBF9nGi91pD3hd13Iy6MEayru7pSALzaWKvUr_wrmXlC4k0pbYdCWNdw/s1600/s1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Не буду детально описывать, что там есть, поскольку всё уже описано самим гуглом, скажу только пару слов о кругах. &lt;b&gt;Google+ Круги&lt;/b&gt;&amp;nbsp;- это, по сути дела, те же группы &lt;b&gt;в контакте&lt;/b&gt;, но от которых последний, судя по апдейтам, пытается отказаться (и зря, должен сказать). Я возлагаю огромные надежды, что &lt;b&gt;Google+&lt;/b&gt;&amp;nbsp;всё-таки позволит своим пользователям оставаться приватным!&lt;br /&gt;
&lt;br /&gt;
И на последок: &lt;b&gt;раздаю инвайты&lt;/b&gt;!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPD:&lt;/b&gt;&amp;nbsp;буду премного благодарен, если кликните &quot;&lt;b&gt;+1&lt;/b&gt;&quot; у статей, которые вам понравились и оказались полезными :-)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/5638655982696350445/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/07/google.html#comment-form' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/5638655982696350445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/5638655982696350445'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/07/google.html' title='Google+'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVxR0xouAqrfV3OzGJ3iCUgL4O6wD9-ryCc9H-yxftFKHZONpe45y9KNwkqsO9A0OCbbRjggZM2obX98dwq0_hBF9nGi91pD3hd13Iy6MEayru7pSALzaWKvUr_wrmXlC4k0pbYdCWNdw/s72-c/s1.jpg" height="72" width="72"/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-7402069715152845042</id><published>2011-05-20T10:38:00.009+04:00</published><updated>2011-07-21T16:17:05.653+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Offtop"/><category scheme="http://www.blogger.com/atom/ns#" term="Вакансии"/><title type='text'>Вакансия программиста/верстальщика</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Вот уже месяц, как я отошёл от фриланса и работаю в компании, занимающейся &lt;b&gt;веб-разработкой&lt;/b&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSaGRpJDb84b9-XckHLIsCp8z9cs3AVew_eMUxA0YLIBZP-RhrTbZVauv8iDWoK3_fQpitUYQut5yn41N7fx9hzx1qLnTLzk-xGG-1HLv9JS34tuUzQqgDkaapeqmIeyhE2CpCVlGKLRw/s1600/hts_logo_3color.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSaGRpJDb84b9-XckHLIsCp8z9cs3AVew_eMUxA0YLIBZP-RhrTbZVauv8iDWoK3_fQpitUYQut5yn41N7fx9hzx1qLnTLzk-xGG-1HLv9JS34tuUzQqgDkaapeqmIeyhE2CpCVlGKLRw/s1600/hts_logo_3color.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
На данный момент нам &lt;b&gt;требуется&lt;/b&gt; веб-программист/верстальщик на полный рабочий день с гибким графиком (возможно &lt;b&gt;студент&lt;/b&gt;) в &lt;b&gt;Санкт-Петербурге&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;Требования&lt;/b&gt;:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;навыки качественной кроссбраузерной верстки&lt;/li&gt;
&lt;li&gt;понимание общих принципов ООП&lt;/li&gt;
&lt;li&gt;знание PHP и JS&lt;/li&gt;
&lt;li&gt;желателен опыт работы с системами управления контентом (Bitrix, Joomla, WordPress, пр.)&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Условия&lt;/b&gt;:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;работа в молодой, амбициозной веб-студии&amp;nbsp;&lt;/li&gt;
&lt;li&gt;работа в офисе у м. Старая деревня (5 минут пешком)&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Обязанности&lt;/b&gt;:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;верстка макетов сайтов под CMS&lt;/li&gt;
&lt;li&gt;разработка и адаптация функционала&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Откликнуться на вакансию можно в комментариях или написать на почту:&amp;nbsp;&lt;a href=&quot;mailto:mailto:nikitin@htsupport.ru&quot;&gt;nikitin@htsupport.ru&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/7402069715152845042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7402069715152845042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7402069715152845042'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/blog-post.html' title='Вакансия программиста/верстальщика'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSaGRpJDb84b9-XckHLIsCp8z9cs3AVew_eMUxA0YLIBZP-RhrTbZVauv8iDWoK3_fQpitUYQut5yn41N7fx9hzx1qLnTLzk-xGG-1HLv9JS34tuUzQqgDkaapeqmIeyhE2CpCVlGKLRw/s72-c/hts_logo_3color.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-6332934430866827146</id><published>2011-05-19T16:19:00.003+04:00</published><updated>2011-08-17T10:58:37.359+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJS"/><category scheme="http://www.blogger.com/atom/ns#" term="Habrahabr"/><category scheme="http://www.blogger.com/atom/ns#" term="Plugins"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Плагин Illuminations для FireBug</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Сегодня на хабре появилась&amp;nbsp;&lt;a href=&quot;http://habrahabr.ru/blogs/extjs/119574/&quot;&gt;статья&lt;/a&gt;&amp;nbsp;об интересном &lt;b&gt;плагине&lt;/b&gt; для &lt;a href=&quot;http://getfirebug.com/&quot;&gt;FireBug&lt;/a&gt;, который называется&amp;nbsp;&lt;a href=&quot;http://www.illuminations-for-developers.com/&quot;&gt;Illuminations&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Не буду дублировать информацию и подробно расписывать, что делает этот плагин, поскольку об этом уже сказано на хабре. Скажу только то, что он позволяет удобнее &lt;b&gt;разрабатывать&lt;/b&gt; и &lt;b&gt;отлаживать&lt;/b&gt; приложения, написанные на &lt;a href=&quot;http://www.sencha.com/products/extjs/&quot;&gt;ExtJS&lt;/a&gt; и некоторых других JS-фреймворках (&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Dojo Toolkit, SproutCore, qooxdoo, YUI, Google Closure Library, jQuery UI&lt;/span&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.illuminations-for-developers.com/&quot;&gt;Illuminations&lt;/a&gt;,&amp;nbsp;помимо того, что &lt;b&gt;подсвечивает код&lt;/b&gt; в консоли и выводит информацию об объектах &lt;b&gt;ExtJS&lt;/b&gt; в более удобном виде, позволяет просматривать&amp;nbsp;&lt;b&gt;документацию&lt;/b&gt; с официального сайта &lt;a href=&quot;http://www.sencha.com/&quot;&gt;Sencha&lt;/a&gt; и отображает информацию о данных, хранимых в &lt;b&gt;store&lt;/b&gt;, что я нахожу очень удобным.&lt;br /&gt;
&lt;br /&gt;
Плагин&amp;nbsp;&lt;a href=&quot;http://www.illuminations-for-developers.com/&quot;&gt;Illuminations&lt;/a&gt;&amp;nbsp;&lt;b&gt;платный&lt;/b&gt; и стоит $25 за первый год для индивидуального испльзования и $50 для организаций, но есть и бесплатная &lt;b&gt;триальная версия.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
К сожалению, этот плагин бесполезен при работе с &lt;a href=&quot;http://mobile-webapps.blogspot.com/search/label/Sencha%20Touch&quot;&gt;Sencha Touch&lt;/a&gt;, поскольку web-приложения, написанные на &lt;b&gt;Sencha Touch&lt;/b&gt;, работают только в &lt;b&gt;WebKit&lt;/b&gt; браузерах (Safari, Google Chrome).&lt;br /&gt;
&lt;br /&gt;
Думаю, разработчикам &lt;b&gt;Sencha&lt;/b&gt; можно было бы взять на карандаш этот плагин и, быть может, включить нечто подобное в &lt;b&gt;Sencha SDK&lt;/b&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/6332934430866827146/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/illuminations-firebug.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6332934430866827146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6332934430866827146'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/illuminations-firebug.html' title='Плагин Illuminations для FireBug'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-5265900663194719229</id><published>2011-05-06T11:40:00.003+04:00</published><updated>2011-08-16T16:15:18.116+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJS"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Анонс Sencha.io</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-3KipNhOUE373XMV5OM_MHiAjKMBlp57KpWGRGBkw2y76hOmDcsdA1lPS7_Ghv7z6FmPFGz1PjllqiTIR9NS1hFsab0vftI22Y1USC83WlJshuOCjzreBJF3vKW7xsV4RxIfRjPSVZo/s1600/20110504-sencha-io-badge-alt.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-3KipNhOUE373XMV5OM_MHiAjKMBlp57KpWGRGBkw2y76hOmDcsdA1lPS7_Ghv7z6FmPFGz1PjllqiTIR9NS1hFsab0vftI22Y1USC83WlJshuOCjzreBJF3vKW7xsV4RxIfRjPSVZo/s1600/20110504-sencha-io-badge-alt.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Вчера компания &lt;b&gt;Sencha&lt;/b&gt; анонсировали &lt;b&gt;облачный сервис&lt;/b&gt; &lt;a href=&quot;http://www.sencha.com/products/io/&quot;&gt;Sencha.io&lt;/a&gt;.&lt;br /&gt;
На данный момент &lt;b&gt;Sencha.io&lt;/b&gt; находится в активной разработке, и для &lt;b&gt;бета&lt;/b&gt;-тестирования доступны два сервиса:&amp;nbsp;&lt;b&gt;Sencha.io Src&lt;/b&gt; и &lt;b&gt;Sencha.io Sync&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;br /&gt;
&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;
&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;
&lt;/h3&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3&gt;Sencha.io Src&lt;/h3&gt;&lt;br /&gt;
Этот сервис, предназначен для автоматической оптимизации &lt;b&gt;размера изображений&lt;/b&gt; под устройства с различным размером экрана (преимущественно, для мобильных платформ).&lt;br /&gt;
Чтобы использовать &lt;b&gt;Sencha.io Src&lt;/b&gt;, достаточно вставить&amp;nbsp;в начало тега&amp;nbsp;IMG&amp;nbsp;&lt;a href=&quot;http://src.sencha.io/&quot; style=&quot;color: #336633;&quot; target=&quot;_blank&quot;&gt;http://src.sencha.io&lt;/a&gt;, и изображения будут автоматически масштабироваться.&lt;br /&gt;
&lt;b&gt;Sencha.io Src&lt;/b&gt; имеет API и будет разрастаться новым платным премиум-функционалом, но функцию масштабирования изображений компания &lt;b&gt;Sencha&lt;/b&gt; обещает оставить бесплатной.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Sencha.io Sync&lt;/h3&gt;&lt;br /&gt;
Если с &lt;b&gt;Sencha.io Src&lt;/b&gt; всё предельно понятно, то &lt;b&gt;Sencha.io Sync&lt;/b&gt; - куда более сложный сервис.&lt;br /&gt;
&lt;b&gt;Sencha.io Sync&lt;/b&gt; предоставляет возможность синхронизации данных, введённых с различных устройств и браузеров.&lt;br /&gt;
На данный момент&amp;nbsp;тестирование&amp;nbsp;&lt;b&gt;Sencha.io Sync&lt;/b&gt;&amp;nbsp;открыто только по инвайтам, которые бесплатно раздаются на официальном сайте, но в ограниченном количестве. Компания &lt;b&gt;Sencha&lt;/b&gt; планирует выпустить расширенную бета-версию к концу лета.&lt;br /&gt;
&lt;b&gt;Sencha.io Sync&lt;/b&gt;, как и &lt;b&gt;Sencha.io Src,&lt;/b&gt; будет иметь платный премиум-функционал.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Послесловие&lt;/h3&gt;&lt;br /&gt;
Как мы видим, компания &lt;a href=&quot;http://sencha.com/&quot;&gt;Sencha&lt;/a&gt; продолжает не только улучшать свои существующие продукты, но и разрабатывать новые, в частности, скоро должны выйти финальные версии &lt;b&gt;Sencha SDK&lt;/b&gt; и &lt;b&gt;Sencha.io&lt;/b&gt;. Остаётся только пожелать удачи разработчикам и ждать более-менее стабильных версий.&lt;br /&gt;
&lt;br /&gt;
Подробнее о &lt;b&gt;Sencha.io&lt;/b&gt;&amp;nbsp;вы можете прочитать в &lt;a href=&quot;http://www.sencha.com/blog/previewing-sencha-io/&quot;&gt;официальном блоге&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/5265900663194719229/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/senchaio.html#comment-form' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/5265900663194719229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/5265900663194719229'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/05/senchaio.html' title='Анонс Sencha.io'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8-3KipNhOUE373XMV5OM_MHiAjKMBlp57KpWGRGBkw2y76hOmDcsdA1lPS7_Ghv7z6FmPFGz1PjllqiTIR9NS1hFsab0vftI22Y1USC83WlJshuOCjzreBJF3vKW7xsV4RxIfRjPSVZo/s72-c/20110504-sencha-io-badge-alt.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-7910428625379368164</id><published>2011-04-29T10:32:00.002+04:00</published><updated>2011-08-16T16:12:29.849+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Screencasts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch Tutorial"/><title type='text'>Sencha Touch Tutorial 3: События</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Наконец-то я закончил монтировать новый &lt;strong&gt;видеоурок&lt;/strong&gt; по &lt;strong&gt;Sencha Touch&lt;/strong&gt;, который я посвятил работе с &lt;b&gt;событиями&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/HbQctjFCwNQ?hl=ru&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/HbQctjFCwNQ?hl=ru&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;В уроке разобраны следующие вещи:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;работа с &lt;b&gt;событиями&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;ещё раз о &lt;b&gt;this&lt;/b&gt; и &lt;b&gt;scope&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ext.Carousel&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;свойство контейнеров &lt;b&gt;defaults&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;Пример &lt;a href=&quot;https://www.sugarsync.com/pf/D440748_7510472_86559&quot;&gt;прилагается&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
На этот раз я весь урок озвучил за один день и отрегулировал громкость различных отрывков, поэтому всё получилось достаточно удачно и гладко. Кроме того, я изменил переходы между окном кода и окном демонстрации и постарался всё записать в несколько более быстром и оживлённом темпе, так что готовьтесь использовать паузу.&lt;br /&gt;
Следующий урок, я так думаю, выйдет недели через две, поскольку на данный момент я сильно загружен работой. В общем, за май я планирую записать ещё два урока - больше вряд ли получится.&lt;br /&gt;
&lt;br /&gt;
Жду комментариев :-)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/7910428625379368164/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch-tutorial-3.html#comment-form' title='Комментарии: 20'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7910428625379368164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7910428625379368164'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch-tutorial-3.html' title='Sencha Touch Tutorial 3: События'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-7429475697924640528</id><published>2011-04-26T17:26:00.001+04:00</published><updated>2011-04-26T17:27:54.558+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJS"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><title type='text'>Релиз ExtJS 4.0</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6znN-xDPBmKy5a3v_7hMzvyyelkv5aRDsk1V8KbYdqP_OjgSAO52z8YV0zdX3LOR9vzqvmHJ1gwXwgQ52Oqjk_DCKNasS7S83BNTaTM6g9oM8fn42t8zvso2_wqFkD1jrTpSaLS4Oehw/s1600/20110426-ext-js-4-hero.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6znN-xDPBmKy5a3v_7hMzvyyelkv5aRDsk1V8KbYdqP_OjgSAO52z8YV0zdX3LOR9vzqvmHJ1gwXwgQ52Oqjk_DCKNasS7S83BNTaTM6g9oM8fn42t8zvso2_wqFkD1jrTpSaLS4Oehw/s1600/20110426-ext-js-4-hero.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Сегодня команда&amp;nbsp;&lt;a href=&quot;http://sencha.com/&quot;&gt;Sencha&lt;/a&gt;&amp;nbsp;зарелизила&amp;nbsp;&lt;a href=&quot;http://www.sencha.com/products/extjs/&quot;&gt;ExtJS 4.0&lt;/a&gt;.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Я начал использовать &lt;b&gt;ExtJS&lt;/b&gt;, когда она была ещё в версии 2.2 и должен сказать, что в этой библиотеке многое изменилось, причём в лучшую сторону.&lt;br /&gt;
Итак, вот&lt;b&gt;&amp;nbsp;базовые улучшения&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Тестирование&lt;/h3&gt;&lt;br /&gt;
Для ExtJS было написано множество новых юнит-тестов и корректность работы проверена в различных браузерах.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Система классов&lt;/h3&gt;&lt;br /&gt;
ExtJS и до этого предоставлял удобную систему классов для объектно-ориентированного программирования, но теперь добавлены такие вещи, как динамическая подгрузка, вычисление зависимостей и прочее.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Песочница&lt;/h3&gt;&lt;br /&gt;
Песочница предназначена для более гибкого и быстрого перехода со старых версий библиотеки и интеграции с другими JavaScript-фреймворками.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Архитектура приложения&lt;/h3&gt;&lt;br /&gt;
Разработчики сделали шаг навстречу паттерну &lt;b&gt;MVC&lt;/b&gt; и даже написали подробное &lt;a href=&quot;http://dev.sencha.com/deploy/ext-4.0.0/docs/guide/application_architecture.html&quot;&gt;руководство&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;SDK Tools&lt;/h3&gt;&lt;br /&gt;
Вмесле с релизом ExtJS 4.0 будет опубликована бета-версия &lt;b&gt;Sencha SDK Tools&lt;/b&gt; - это набор инструментов, позволяющих оптимизировать производительность, затачивать под различные браузеры, собирать код приложения воедино и прочие полезные вещи.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Помимо базовых изменений, было произведено множество других улучшений в компонентах пользовательского интерфейса и прочих вещах, но цель моей статьи - это анонс, поэтому я не буду вдаваться в детали. Всё это вы можете прочитать на&amp;nbsp;&lt;a href=&quot;http://www.sencha.com/blog/ext-js-4-final/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+extblog+%28Ext+JS+Blog%29#date:11:00&quot;&gt;официальном блоге&lt;/a&gt; Sencha.&lt;br /&gt;
Полный список изменений релиза можно посмотреть &lt;a href=&quot;http://dev.sencha.com/deploy/ext-4.0.0/release-notes.html&quot;&gt;здесь&lt;/a&gt;&amp;nbsp;- он действительно впечатляет.&lt;br /&gt;
&lt;br /&gt;
Уверен, что-то из этих улучшений перекочует в &lt;b&gt;Sencha Touch 2.0&lt;/b&gt;, первые беты которой должны появиться уже летом. Будем ждать!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/7429475697924640528/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/extjs-40.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7429475697924640528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7429475697924640528'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/extjs-40.html' title='Релиз ExtJS 4.0'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6znN-xDPBmKy5a3v_7hMzvyyelkv5aRDsk1V8KbYdqP_OjgSAO52z8YV0zdX3LOR9vzqvmHJ1gwXwgQ52Oqjk_DCKNasS7S83BNTaTM6g9oM8fn42t8zvso2_wqFkD1jrTpSaLS4Oehw/s72-c/20110426-ext-js-4-hero.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-4511417816347742711</id><published>2011-04-21T17:17:00.009+04:00</published><updated>2011-08-23T10:55:37.176+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJS"/><category scheme="http://www.blogger.com/atom/ns#" term="PhoneGap"/><category scheme="http://www.blogger.com/atom/ns#" term="Screencasts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Ссылки"/><title type='text'>Полезные ссылки по Sencha Touch</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
h3 {
color: #999;
}
&lt;/style&gt;&lt;br /&gt;
Решил собрать в один пост &lt;b&gt;полезные ссылки&lt;/b&gt; по &lt;a href=&quot;http://mobile-webapps.blogspot.com/search/label/Sencha%20Touch&quot;&gt;Sencha Touch&lt;/a&gt;.&amp;nbsp;К сожалению, на русском языке материала мало, поэтому большинство ссылок - англоязычные.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggnFDxgWf-iI6R7s1CeuOAf224icrV4uHHVK6HMEs1qkj2smo9yokLVih2GjMUlGaUB-IrzusnXkUC-2vOGlT7o4RUPJptEMSrZmJzKLtm-P69463GmLIP03knpfCH9OgjXN0aU9Nv6Ns/s1600/hero-support1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggnFDxgWf-iI6R7s1CeuOAf224icrV4uHHVK6HMEs1qkj2smo9yokLVih2GjMUlGaUB-IrzusnXkUC-2vOGlT7o4RUPJptEMSrZmJzKLtm-P69463GmLIP03knpfCH9OgjXN0aU9Nv6Ns/s320/hero-support1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;Общая информация&lt;/h3&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.sencha.com/learn/Ext_Manual_ru&quot;&gt;Ext Manual ru&lt;/a&gt;&amp;nbsp;(ru) - качественный русскоязычный официальный мануал по&amp;nbsp;&lt;b&gt;ExtJS&lt;/b&gt;. Сам им не пользовался, но судя по оглавлению, очень полезная вещь. Там, помимо ExtJS, изложены основы объектно-ориентированного программирования на&amp;nbsp;&lt;b&gt;JavaScript&lt;/b&gt;. Конечно, мануал не про Sencha Touch, но, зная ExtJS, перейти на сенчу не сложно.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://habrahabr.ru/blogs/extjs/111193/&quot;&gt;Введение в Sencha Touch 1.0&lt;/a&gt;&amp;nbsp;(ru) - обзорная статья на хабре про&amp;nbsp;&lt;b&gt;Sencha Touch&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.sencha.com/deploy/touch/docs/&quot;&gt;Официальная документация&lt;/a&gt;&amp;nbsp;(en) &lt;b&gt;Sencha Touch&lt;/b&gt;. Здесь кроются ответы на большинство вопросов.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sencha.com/learn/Tutorial:Sencha_Touch_Hello_World&quot;&gt;Tutorial:Sencha Touch Hello World&lt;/a&gt; (en) - учебник по созданию первого Hello World приложения на сече.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.sencha.com/deploy/touch/getting-started.html&quot;&gt;Getting Started with Sencha Touch&lt;/a&gt; (en) - руководство о том, как начать работать с &lt;strong&gt;Sencha Touch&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;Официальный блог Sencha Touch&lt;/h3&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.sencha.com/blog/an-introduction-to-theming-sencha-touch/&quot;&gt;An Introduction to Theming Sencha Touch&lt;/a&gt;&amp;nbsp;(en) - о том, как создавать пользовательские &lt;b&gt;темы&lt;/b&gt; для приложений на базе &lt;b&gt;Sencha Touch&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.sencha.com/deploy/touch/docs/theme/&quot;&gt;Sencha Touch SASS Variables and Mixins&lt;/a&gt;&amp;nbsp;(en) - а вот и ссылочка на &lt;b&gt;документацию&lt;/b&gt; по CSS-переменным, с помощью которых создаются пользовательские &lt;b&gt;темы&lt;/b&gt; (чудом удалось найти, т. к. она хорошенько запрятана).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sencha.com/learn/Tutorial:A_Sencha_Touch_MVC_application_with_PhoneGap&quot;&gt;Tutorial:A Sencha Touch MVC application with PhoneGap&lt;/a&gt; (en) - отличная обучающая статья о том, как с помощью &lt;a href=&quot;http://www.phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt;&amp;nbsp;и &lt;b&gt;Sencha Touch&lt;/b&gt; делать приложения для App Store, Android Market и т. п..&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/&quot;&gt;Sencha Touch: Optimizing Memory Usage&lt;/a&gt; (en) - статья об &lt;b&gt;оптимизации&lt;/b&gt; потребления памяти &lt;b&gt;Sencha Touch&lt;/b&gt; приложениями. К сожалению, пример в статье не рабочий, о чём неоднократно, но безрезультатно писали в комментариях все, кому не лень, однако, в целом идея понятна.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Видео&lt;/h3&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=Ergqt-8BMOM&quot;&gt;Sencha Touch Tutorial: Первые шаги&lt;/a&gt;&amp;nbsp;(ru) - мой первый видеоурок, посвящённый азам Sencha Touch.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ZwZZSlzZR3c&quot;&gt;Sencha Touch Tutorial: Ext.Panel - Layouting&lt;/a&gt;&amp;nbsp;(ru)&amp;nbsp;- мой второй видеоурок о вёрстке с помощью Ext.Panel.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=HbQctjFCwNQ&quot;&gt;Sencha Touch Tutorial 3: События&lt;/a&gt; (ru) - мой третий видеоурок о работе с событиями.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=DWa4OJ4WMmU&quot;&gt;Sencha Touch: Introduction&lt;/a&gt; (en) - введение в Sencha Touch.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=YdRHPSbsIhc&quot;&gt;Sencha Touch: Creating a mobile Twitter app with Geo-location&lt;/a&gt;&amp;nbsp;(en) - создание Twitter приложения.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=6DXdsnpGs3A&quot;&gt;Sencha Touch: Introduction to Layers&lt;/a&gt;&amp;nbsp;(en) - о&amp;nbsp;вёрстке.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=yz9TPTWfRUk&quot;&gt;Sencha Touch: Introduction to Layouts&lt;/a&gt;&amp;nbsp;(en) - о лайаутинге.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://vimeo.com/sencha&quot;&gt;Sencha на Vimeo&lt;/a&gt; (en) - подборка видео.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;P.S.:&lt;/b&gt; набор ссылок я буду постоянно &lt;b&gt;обновлять&lt;/b&gt;, так что можете заглядывать время от времени.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/4511417816347742711/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch_21.html#comment-form' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4511417816347742711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4511417816347742711'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch_21.html' title='Полезные ссылки по Sencha Touch'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggnFDxgWf-iI6R7s1CeuOAf224icrV4uHHVK6HMEs1qkj2smo9yokLVih2GjMUlGaUB-IrzusnXkUC-2vOGlT7o4RUPJptEMSrZmJzKLtm-P69463GmLIP03knpfCH9OgjXN0aU9Nv6Ns/s72-c/hero-support1.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-112165196187192756</id><published>2011-04-13T14:08:00.000+04:00</published><updated>2011-04-13T14:08:39.830+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Freelance"/><category scheme="http://www.blogger.com/atom/ns#" term="oDesk"/><category scheme="http://www.blogger.com/atom/ns#" term="Offtop"/><category scheme="http://www.blogger.com/atom/ns#" term="Project management"/><title type='text'>Фиксированная или почасовая оплата? Взгляд фрилансера.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
h3 {
color: #999;
}
&lt;/style&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Существует два основных способа оплаты работы фрилансеров: фиксированная ставка (&lt;b&gt;fixed price&lt;/b&gt;) и почасовая оплата (&lt;b&gt;hourly rate&lt;/b&gt;).&lt;br /&gt;
В этой статье я хочу рассказать, почему&amp;nbsp;&lt;b&gt;почасовая оплата&lt;/b&gt;&amp;nbsp;может быть &lt;b&gt;выгодна&lt;/b&gt; не только для исполнителя, но и&amp;nbsp;&lt;b&gt;для заказчика&lt;/b&gt;.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq5L4nbtY10b7IB4v1o4E8c3YpuuaU5btVn7EgtIAE-fJGqhpJh6XazJKQ8DFqrcw17qLoGWcA5iJHSxL3HBEO6xuJTArtpoKgcgOkYgKQWVzrThD0yHhKuq9c2vEoy5t7tS6v6LsvuTg/s1600/fixed.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq5L4nbtY10b7IB4v1o4E8c3YpuuaU5btVn7EgtIAE-fJGqhpJh6XazJKQ8DFqrcw17qLoGWcA5iJHSxL3HBEO6xuJTArtpoKgcgOkYgKQWVzrThD0yHhKuq9c2vEoy5t7tS6v6LsvuTg/s320/fixed.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;h3&gt;Качество кода&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;br /&gt;
На проектах &lt;b&gt;с почасовой ставкой&lt;/b&gt;, как правило, &lt;b&gt;качество кода выше&lt;/b&gt;, и это происходит по той причине, что такие проекты, в своём большинстве, более длинные, и программист не торопится быстрее закончить - его поджимают только оговоренные сроки выполнения проекта (&lt;b&gt;due date&lt;/b&gt;), а не жажда быстрее получить деньги, поэтому всё делается более основательно, без спешки. Кроме того, на проектах с почасовой оплатой разработчик надеется, что проект будет продолжаться, поэтому он пишет код так, чтобы потом с ним было приятно самому работать.&lt;br /&gt;
На проектах с почасовой оплатой у разработчика есть &lt;b&gt;заинтересованность&lt;/b&gt; в проявлении &lt;b&gt;инициативы&lt;/b&gt; и предложении новых интересных решений. Интерес в продолжении проекта выше, поэтому и больше &lt;b&gt;вовлечённость&lt;/b&gt; и степень вникания в проект, что положительно сказывается на конечном результате.&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;Но с этим можно и поспорить, поскольку на проектах с фиксированной платой заказчик в праве потребовать высокое качество кода. Это верно, но и у разработчика нет никакой заинтересованности делать больше и качественнее, чем было оговорено в техническом задании, поэтому малейшее недопонимание может привести к конфликту, оставить обоюдное негативное впечатление и, как следствие для фриланс-бирж, плохой фидбек.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;b&gt;Пример&lt;/b&gt;: заказчик говорит, что конечный продукт работает слишком медленно. Разработчик отвечает, что это особенность выбранной технологии и для улучшения производительности необходимо сделать ещё определённый объём работы, который не был оговорен при старте проекта.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;b&gt;Вывод&lt;/b&gt;: в проектах с фиксированной платой надо заранее обсуждать каждую деталь и быть уверенным, что достигнуто обоюдное взаимопонимание, причём это важно как для заказчика, так и для разработчика.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Переговоры&lt;/h3&gt;&lt;br /&gt;
В проектах &lt;b&gt;с фиксированной оплатой&lt;/b&gt;&amp;nbsp;на предварительные &lt;b&gt;переговоры&lt;/b&gt; и обсуждение деталей проекта уходит значительно &lt;b&gt;больше времени&lt;/b&gt;.&amp;nbsp;Частично этот тезис я уже защитил в предыдущем пункте, но хочу добавить ещё пару слов.&lt;br /&gt;
Как правило, во всяких умных книжках о менеджменте проектов пишут о важности и необходимости детального планирования процесса. С этим трудно поспорить, но на деле часто оказывается так, что, пощупав промежуточные результаты, у заказчика возникает желание что-то поменять (пусть, даже незначительное, но разработчику не особо-то хочется делать что-то сверх оговоренного, из-за чего, опять же, страдает качество кода и появляются различные &quot;костыли&quot;). Особо часто это возникает, когда заказчик не является технически подкованным.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Вывод&lt;/b&gt;: если даже вы работаете с фиксированной оплатой, то разбивайте проект на итерации, каждая из которых после старта не подлежит обсуждению и дополнению.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Мотивация&lt;/h3&gt;&lt;br /&gt;
Казалось бы, проекты &lt;b&gt;с фиксированной ставкой&lt;/b&gt; должны подстёгивать фрилансера закончить работу как можно быстрее, но на деле всё далеко не так.&lt;br /&gt;
В успешном развитии проекта после того, как он завершён, разработчик мало заинтересован - проекты с фиксированной ставкой редко бывают длинными, иначе они либо почасовые, либо заказчик платит разработчику оклад, поэтому единственная мотивация - это деньги (или полученный опыт и фитбек, если фрилансер начинающий). Согласитесь, куда &lt;b&gt;приятнее&lt;/b&gt;, когда за каждый отработанный час ты в&lt;b&gt;идишь конкретную сумму&lt;/b&gt;, которую уже через неделю-две (я имею ввиду систему &lt;b&gt;oDesk&lt;/b&gt;) сможешь &lt;b&gt;обналичить&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Вывод&lt;/b&gt;: если используется фиксированная оплата, лучше всего производить её по частям.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Безопасность&lt;/h3&gt;&lt;br /&gt;
Основной мотив использования &lt;b&gt;фиксированной цены&lt;/b&gt; за проект для заказчика - это жёсткая &lt;b&gt;ограниченность бюджета&lt;/b&gt; и боязнь &quot;&lt;b&gt;кидалова&lt;/b&gt;&quot;. Но обезопаситься можно и с почасовой системой оплаты.&lt;br /&gt;
Проверить способности разработчика можно, выделив ему небольшое количество часов для &lt;b&gt;создания первого демо&lt;/b&gt; - это не та сумма, за которую можно и &quot;кинуть&quot;, забыв про отрицательный фидбек.&lt;br /&gt;
Обезопасить себя от перерасхода бюджета можно отслеживанием хода работ и, в случае чего, своевременной беседой с разработчиком о том, что что-то идёт не так. Разработчик должен знать и соглашаться с итоговой суммой, на которую рассчитывает заказчик.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Итоги&lt;/h3&gt;&lt;br /&gt;
Итак, я привёл &lt;b&gt;три довода&lt;/b&gt; для заказчика, которые&amp;nbsp;&lt;b&gt;должны&lt;/b&gt; его &lt;b&gt;мотивировать&lt;/b&gt; на работу &lt;b&gt;с почасовой ставкой&lt;/b&gt;. Это мой личный опыт, который я получил в ходе работы на различных проектах. Был бы рад, если кто-нибудь со стороны заказчиков как-то прокомментировал мои доводы. Заранее благодарю!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/112165196187192756/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/blog-post_13.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/112165196187192756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/112165196187192756'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/blog-post_13.html' title='Фиксированная или почасовая оплата? Взгляд фрилансера.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq5L4nbtY10b7IB4v1o4E8c3YpuuaU5btVn7EgtIAE-fJGqhpJh6XazJKQ8DFqrcw17qLoGWcA5iJHSxL3HBEO6xuJTArtpoKgcgOkYgKQWVzrThD0yHhKuq9c2vEoy5t7tS6v6LsvuTg/s72-c/fixed.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-477739074891286608</id><published>2011-04-12T00:34:00.001+04:00</published><updated>2011-08-17T11:01:12.501+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Планы развития Sencha Touch</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhokILp4jI7VqXz5pBrvi9N7iMyxw5wYal193lJejAMqE03Xt31vsafdRALLXo9ezlEg8Ni0HpcAkCu8Grzv4VWXIFAN9ZFiFlTO5Qq9ZkQuZm_0V0kbKGix4N1KziXAzhiUcIvSqOU-FE/s1600/roadmap.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhokILp4jI7VqXz5pBrvi9N7iMyxw5wYal193lJejAMqE03Xt31vsafdRALLXo9ezlEg8Ni0HpcAkCu8Grzv4VWXIFAN9ZFiFlTO5Qq9ZkQuZm_0V0kbKGix4N1KziXAzhiUcIvSqOU-FE/s1600/roadmap.png&quot; /&gt;&lt;/a&gt;Только что появились &lt;a href=&quot;http://www.sencha.com/blog/2011-product-roadmap-update/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+extblog+%28Ext+JS+Blog%29&amp;amp;utm_content=Google+Reader#date:18:45&quot;&gt;новости&lt;/a&gt; в официальном блоге &lt;a href=&quot;http://www.sencha.com/&quot;&gt;Sencha&lt;/a&gt; о планах развития их продуктов, в том числе и библиотеки &lt;a href=&quot;http://mobile-webapps.blogspot.com/search/label/Sencha%20Touch&quot;&gt;Sencha Touch&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Информации мало, но сказано, что летом этого года мы увидим превью &lt;b&gt;Sencha Touch 2.0&lt;/b&gt; (думаю, релиз будет где-то к ноябрю, как было и с первой версией). Кроме того, разработчики обещают уже этой весной предоставить нам в &lt;b&gt;Sencha Touch&lt;/b&gt; инструменты для рисования диаграмм и графиков.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Что ж, новостей хоть и не много, но и они радуют. Остаётся только ждать и надеяться, что новая &lt;b&gt;Sencha Touch 2.0&lt;/b&gt; помимо &lt;b&gt;iPhone&lt;/b&gt;, &lt;b&gt;Android&lt;/b&gt; и &lt;b&gt;Blackberry&lt;/b&gt; будет поддерживать &lt;b&gt;Windows Phone 7&lt;/b&gt; устройства, поскольку потребность в разработке приложений под WP7 на рынке есть, а вот инструментов ещё не достаточно.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/477739074891286608/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/477739074891286608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/477739074891286608'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch.html' title='Планы развития Sencha Touch'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhokILp4jI7VqXz5pBrvi9N7iMyxw5wYal193lJejAMqE03Xt31vsafdRALLXo9ezlEg8Ni0HpcAkCu8Grzv4VWXIFAN9ZFiFlTO5Qq9ZkQuZm_0V0kbKGix4N1KziXAzhiUcIvSqOU-FE/s72-c/roadmap.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-7521656253018081941</id><published>2011-04-11T21:28:00.000+04:00</published><updated>2011-04-11T21:33:12.482+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Ссылки"/><title type='text'>Демонстрация возможностей HTML5 и CSS3 от Google</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Хочу поделиться ссылкой на сайт с примерами и советами по &lt;b&gt;HTML5&lt;/b&gt; и &lt;b&gt;CSS3&lt;/b&gt;: &lt;a href=&quot;http://www.html5rocks.com/&quot;&gt;HTML5 Rocks&lt;/a&gt;.&amp;nbsp;Особо хочу порекомендовать слайдер&amp;nbsp;&lt;a href=&quot;http://slides.html5rocks.com/&quot;&gt;HTML5 Presentation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Кроме того, если кто ещё не видел, хочу дать ссылку на &lt;b&gt;HTML5&lt;/b&gt;-книгу от &lt;b&gt;Google&lt;/b&gt;: &lt;a href=&quot;http://www.20thingsilearned.com/&quot;&gt;20 Things I Learned About Browsers and the Web&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1Rbn50g9X0l4yp-fAqK69zx3y2SvxCHr11ig8Sq2_LBTuxwzGkH_3dXFyi8cU470VcpFbEH2zE6wUKzAYtW-_tnxf5tPICa3n4zOkninK9VeSFSgnYooKNFu-aiLfslxown063X7l174/s1600/html5_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1Rbn50g9X0l4yp-fAqK69zx3y2SvxCHr11ig8Sq2_LBTuxwzGkH_3dXFyi8cU470VcpFbEH2zE6wUKzAYtW-_tnxf5tPICa3n4zOkninK9VeSFSgnYooKNFu-aiLfslxown063X7l174/s320/html5_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/7521656253018081941/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/html5-css3-google.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7521656253018081941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7521656253018081941'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/html5-css3-google.html' title='Демонстрация возможностей HTML5 и CSS3 от Google'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1Rbn50g9X0l4yp-fAqK69zx3y2SvxCHr11ig8Sq2_LBTuxwzGkH_3dXFyi8cU470VcpFbEH2zE6wUKzAYtW-_tnxf5tPICa3n4zOkninK9VeSFSgnYooKNFu-aiLfslxown063X7l174/s72-c/html5_logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-4982821294083642892</id><published>2011-04-11T01:28:00.002+04:00</published><updated>2011-09-07T10:49:11.648+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS3"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>CSS3 свойства, наиболее часто используемые в Sencha Touch</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
h3 {
color: #999;
}
&lt;/style&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;При создании интерфейсов своих &lt;a href=&quot;http://sencha.com/&quot;&gt;Sencha Touch&lt;/a&gt; приложений я работаю с&amp;nbsp;&lt;strong&gt;CSS3&lt;/strong&gt;, причём, как правило, я использую одни и те же свойства, поэтому я хочу описать наиболее часто употребляемые из них.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomT1N7NaGodlgfoZtpwrin0Btu3k6LNsxKjiouGDcoPb15AyHFRG9BtqMI4DJBgsOy9RnnTh4laqPa9xhtuE2VZprzz8XCngMdSowKGeAD78ESowdzqZ17vO7PiL0_fV-z_BqT_UD73s/s1600/class-header-css3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;239&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomT1N7NaGodlgfoZtpwrin0Btu3k6LNsxKjiouGDcoPb15AyHFRG9BtqMI4DJBgsOy9RnnTh4laqPa9xhtuE2VZprzz8XCngMdSowKGeAD78ESowdzqZ17vO7PiL0_fV-z_BqT_UD73s/s320/class-header-css3.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;border-radius&lt;/h3&gt;&lt;br /&gt;
Тут всё просто: устанавливаем значения, подобно тому, как устанавливаем, например, &lt;code&gt;padding&lt;/code&gt;, и у нас углы элемента закругляются. Для браузеров на базе &lt;a href=&quot;http://ru.wikipedia.org/wiki/WebKit&quot;&gt;WebKit&lt;/a&gt; также можно использовать свойство &lt;code&gt;-webkit-border-radius&lt;/code&gt;.&lt;/div&gt;&lt;br /&gt;
&lt;h5&gt;Пример:&lt;/h5&gt;&lt;pre class=&quot;brush:css&quot;&gt;border-radius: 30px;
&lt;/pre&gt;&lt;h5&gt;Результат:&lt;/h5&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVPQfOw33CBtGkqS3h5fti9Bfl1Cvi6RXB511S72vYLJlrOZ6V2z9V4QyFXE3S7VBAb8uUqJt0FUtZCKKaJdJB2-FVJcjV9jDMbxbuQk1ygNr18ulx6r07K8u6zAVHmgqYXABShQrBvE/s1600/border-radius.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVPQfOw33CBtGkqS3h5fti9Bfl1Cvi6RXB511S72vYLJlrOZ6V2z9V4QyFXE3S7VBAb8uUqJt0FUtZCKKaJdJB2-FVJcjV9jDMbxbuQk1ygNr18ulx6r07K8u6zAVHmgqYXABShQrBvE/s1600/border-radius.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Прочитать подробнее можно &lt;a href=&quot;http://htmlbook.ru/css/border-radius&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;gradient&lt;/h3&gt;&lt;br /&gt;
&lt;code&gt;-webkit-gradient&lt;/code&gt; - это не свойство, а значение, которое применяется свойству &lt;code&gt;background-image&lt;/code&gt; для создания &lt;strong&gt;градиента&lt;/strong&gt;. Для браузеров Firefox используется &lt;code&gt;-moz-linear-gradient&lt;/code&gt;, но при создании мобильных веб-приложений нам это не важно.&lt;br /&gt;
В WebKit браузерах доступно два типа градиентов:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;линейный (&lt;b&gt;linear&lt;/b&gt;)&lt;/li&gt;
&lt;li&gt;круговой (&lt;b&gt;radial&lt;/b&gt;)&lt;/li&gt;
&lt;/ul&gt;Синтаксис создания градиента:&lt;br /&gt;
&lt;code&gt;-webkit-gradient(&lt;b&gt;type&lt;/b&gt;, &lt;b&gt;start&lt;/b&gt;, &lt;b&gt;end&lt;/b&gt;, from(&lt;b&gt;color&lt;/b&gt;), to(&lt;b&gt;color&lt;/b&gt;))&lt;/code&gt;&lt;br /&gt;
&lt;h5&gt;Пример:&lt;/h5&gt;&lt;pre class=&quot;brush:css&quot;&gt;background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bbb), to(#000));
&lt;/pre&gt;&lt;h5&gt;Результат:&lt;/h5&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZkjY6pFWXedzWXe-trATqthVavAM9YUCgZ8-supw4pNew9kL-avkSrovLbB_SwRWPDhf749ts1vYGiVqCFUq0cD_3UuqRcOfoXw8gSRRtI1cKOqYIiKFBYePe23Ebv1iQnKIJ8BcJgJQ/s1600/gradient-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZkjY6pFWXedzWXe-trATqthVavAM9YUCgZ8-supw4pNew9kL-avkSrovLbB_SwRWPDhf749ts1vYGiVqCFUq0cD_3UuqRcOfoXw8gSRRtI1cKOqYIiKFBYePe23Ebv1iQnKIJ8BcJgJQ/s1600/gradient-1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Кроме того, можно делать &quot;остановки&quot; в градиенте:&lt;br /&gt;
&lt;h5&gt;Пример:&lt;/h5&gt;&lt;pre class=&quot;brush:css&quot;&gt;background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#bbb), color-stop(50%, #000), to(#bbb));&lt;/pre&gt;&lt;h5&gt;Результат:&lt;/h5&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvAiRhUfC8fDMpf1dF7fjHS-a8dE77nkLmJ9_D3FKDwfwhdsGVOObzUEd171jdd40a252f8SeLz9GqcCDuunlZ8Owj_CJ2ZqOmIqDJfdfHpM7V7LOzZs2kRaajAxDLjqHZ6aAiuoSjlHk/s1600/gradient-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvAiRhUfC8fDMpf1dF7fjHS-a8dE77nkLmJ9_D3FKDwfwhdsGVOObzUEd171jdd40a252f8SeLz9GqcCDuunlZ8Owj_CJ2ZqOmIqDJfdfHpM7V7LOzZs2kRaajAxDLjqHZ6aAiuoSjlHk/s1600/gradient-2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Подобных остановок может быть несколько.&lt;br /&gt;
Подробнее о градиентах можно почитать&amp;nbsp;&lt;a href=&quot;http://developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Gradients/Gradients.html#//apple_ref/doc/uid/TP40008032-CH7-SW11&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;-webkit-mask&lt;/h3&gt;&lt;br /&gt;
В &lt;b&gt;CSS3&lt;/b&gt; стало возможным накладывать на элементы маску. Делать это можно с помощью свойства &lt;code&gt;-webkit-mask&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
Синтаксис:&lt;br /&gt;
&lt;code&gt;-webkit-mask: &lt;b&gt;attachment&lt;/b&gt;, &lt;b&gt;clip&lt;/b&gt;, &lt;b&gt;origin&lt;/b&gt;, &lt;b&gt;image&lt;/b&gt;, &lt;b&gt;repeat&lt;/b&gt;, &lt;b&gt;composite&lt;/b&gt;, &lt;b&gt;box-image&lt;/b&gt;;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Для примера я буду использовать следующую маску (это просто png-изображение):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGs7KQVmHBWFUcRQDxuMWTR1Son6umF6T7ECfzvVFjC26pF_WLpCAvn5szy62ko_V-zTfQhKCJYNgpjjW3AdmhpmZuGhghA-eMG84NvwOEhcQe8ascjuDlQGaiFdsoX6_THK7HOKSVwXc/s1600/mask.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;108&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGs7KQVmHBWFUcRQDxuMWTR1Son6umF6T7ECfzvVFjC26pF_WLpCAvn5szy62ko_V-zTfQhKCJYNgpjjW3AdmhpmZuGhghA-eMG84NvwOEhcQe8ascjuDlQGaiFdsoX6_THK7HOKSVwXc/s320/mask.png&quot; width=&quot;122&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h5&gt;Пример:&lt;/h5&gt;&lt;pre class=&quot;brush:css&quot;&gt;width: 122px;
height: 108px;
background-color: #bebebe;
-webkit-mask-image: url(mask.png);&lt;/pre&gt;&lt;h5&gt;Результат:&lt;/h5&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWDUeF4J33GouKGgheMfMWounbQ2yjkWy9YtkwGfhgkkGYhYK8mfQtknfrfYs5AqBgNnIvLbPQm7KZPOKg2Q-5n62688aW3MTG412WUofBfgry0GvhJVr-H6Am_C0EKC1JTqN3wWmefzs/s1600/mask-sample.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;120&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWDUeF4J33GouKGgheMfMWounbQ2yjkWy9YtkwGfhgkkGYhYK8mfQtknfrfYs5AqBgNnIvLbPQm7KZPOKg2Q-5n62688aW3MTG412WUofBfgry0GvhJVr-H6Am_C0EKC1JTqN3wWmefzs/s320/mask-sample.png&quot; width=&quot;144&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
В качестве маски можно использовать не только картинку, но и &lt;b&gt;CSS3&lt;/b&gt;-градиент или&amp;nbsp;&lt;b&gt;SVG&lt;/b&gt;-графику. Подробнее об этом можно узнать&amp;nbsp;&lt;a href=&quot;http://developer.apple.com/library/safari/#documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html#//apple_ref/doc/uid/TP40008032-CH8-SW8&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Заключение&lt;/h3&gt;&lt;br /&gt;
Я показал всего 3 свойства, появившихся в &lt;b&gt;CSS3&lt;/b&gt;, но они являются наиболее часто используемыми мною при вёрстке интерфейсов &lt;a href=&quot;http://mobile-webapps.blogspot.com/search/label/Sencha%20Touch&quot;&gt;Sencha Touch&lt;/a&gt; приложений. С остальными возможностями WebKit браузеров вы сможете познакомиться на &lt;a href=&quot;http://developer.apple.com/devcenter/safari/index.action&quot;&gt;сайте Apple&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/4982821294083642892/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/css3-sencha-touch.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4982821294083642892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4982821294083642892'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/css3-sencha-touch.html' title='CSS3 свойства, наиболее часто используемые в Sencha Touch'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgomT1N7NaGodlgfoZtpwrin0Btu3k6LNsxKjiouGDcoPb15AyHFRG9BtqMI4DJBgsOy9RnnTh4laqPa9xhtuE2VZprzz8XCngMdSowKGeAD78ESowdzqZ17vO7PiL0_fV-z_BqT_UD73s/s72-c/class-header-css3.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-3060625812208722679</id><published>2011-04-07T13:25:00.001+04:00</published><updated>2011-08-16T16:16:28.265+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="PhoneGap"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><category scheme="http://www.blogger.com/atom/ns#" term="XCode"/><title type='text'>XCode + PhoneGap</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Вчера пол-дня промучился, ставя шаблон &lt;a href=&quot;http://www.phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt;-приложения под&amp;nbsp;&lt;a href=&quot;http://developer.apple.com/xcode/index.php&quot;&gt;XCode 4&lt;/a&gt;. Делал это через установщик &lt;strong&gt;PhoneGap&lt;/strong&gt;, вручную и даже пробовал ставить другие шаблоны для &lt;b&gt;XCode&lt;/b&gt;, но всё без толку.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidkPYrllA2QvtkXyhs78TXa9LMInWhs5FjUbGDymQM0HVZ0bCQbh8atCIx92tOCrsHlyKs6IFx7ytU514lwVFr622rUXgcp4_Y7f0omDTv-UtaPAtkJtdBH1WZnrXHGwWPWJWkyS4SfHA/s1600/phonegap_symbian.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidkPYrllA2QvtkXyhs78TXa9LMInWhs5FjUbGDymQM0HVZ0bCQbh8atCIx92tOCrsHlyKs6IFx7ytU514lwVFr622rUXgcp4_Y7f0omDTv-UtaPAtkJtdBH1WZnrXHGwWPWJWkyS4SfHA/s1600/phonegap_symbian.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Решение, как всегда, оказалось куда более простым: я решил скачать и установить &lt;b&gt;XCode 3.2.6 + iOS SDK 4.3&lt;/b&gt; и, о чудо, всё заработало! Видимо, шаблон был просто не совместим с четвёртой версией &lt;b&gt;XCode&lt;/b&gt;.&lt;br /&gt;
В итоге, я написал сообщение с баг-репортом команде &lt;a href=&quot;http://www.phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt; и теперь работаю с&amp;nbsp;&lt;b&gt;XCode 3.2.6&lt;/b&gt; и радуюсь жизни, хотя неприятный осадок, безусловно, на душе остался - разработчики могли бы&amp;nbsp;предупредить, что с &lt;a href=&quot;http://developer.apple.com/xcode/index.php&quot;&gt;XCode 4&lt;/a&gt; их детище не работает, сэкономив, тем самым, моё рабочее время.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;UPD:&lt;/b&gt; как оказалось, подобный вопрос уже поднимался, но почему-то раньше я не натолкнулся, копаясь в гугле, на эту &lt;a href=&quot;http://stackoverflow.com/questions/3518291/phonegap-templates-installed-in-xcode-4&quot;&gt;статью&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/3060625812208722679/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/xcode-phonegap.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3060625812208722679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3060625812208722679'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/xcode-phonegap.html' title='XCode + PhoneGap'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidkPYrllA2QvtkXyhs78TXa9LMInWhs5FjUbGDymQM0HVZ0bCQbh8atCIx92tOCrsHlyKs6IFx7ytU514lwVFr622rUXgcp4_Y7f0omDTv-UtaPAtkJtdBH1WZnrXHGwWPWJWkyS4SfHA/s72-c/phonegap_symbian.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-3454710031454407701</id><published>2011-04-06T01:35:00.001+04:00</published><updated>2011-05-20T11:00:30.490+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Freelance"/><category scheme="http://www.blogger.com/atom/ns#" term="oDesk"/><category scheme="http://www.blogger.com/atom/ns#" term="Offtop"/><category scheme="http://www.blogger.com/atom/ns#" term="Вакансии"/><title type='text'>Ищу веб-разработчиков!</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Я уже около года, как зарабатываю исключительно &lt;b&gt;фрилансом&lt;/b&gt;, причём в моей карьере были как взлёты, где я в неделю нарабатывал бешеное количество часов, получая сумму, сравнимую с тем, что мне мог предложить отечественный работодатель в месяц, но были и моменты, когда я мог обеспечить только половинную недельную занятость, а иногда даже и на таковую не хватало. Однако, в целом, мои дела, как фрилансера, идут хорошо.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizyAusSM5Q4ojoPfKlZrWmCjgcerykeJ17mMWURGF7CXpsZBZozP8xSR9IMcoFM7D-4OoBAUOE3xXGKYtLE99iOeTqcDsyPKWNw-VHAL55QhVYyXzmphtkVfTTW3NFqz_dEDZxvyZOXmQ/s1600/1300106364_freelance2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizyAusSM5Q4ojoPfKlZrWmCjgcerykeJ17mMWURGF7CXpsZBZozP8xSR9IMcoFM7D-4OoBAUOE3xXGKYtLE99iOeTqcDsyPKWNw-VHAL55QhVYyXzmphtkVfTTW3NFqz_dEDZxvyZOXmQ/s320/1300106364_freelance2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Через какое-то время работы фрилансером я понял, что всегда надо на виду держать несколько потенциальных проектов, а ещё лучше наработать постоянных заказчиков, с которыми можно стартануть в один день новый проект, не теряя время на долгие переговоры.&lt;br /&gt;
Достаточно быстро я понял, что было бы весьма полезно улучшить качество, предоставляемых мною, услуг, причём не только в профессиональном плане, но и в плане сокращения сроков выполнения проектов. Ещё летом прошлого года я ощутил необходимость в &lt;b&gt;команде&lt;/b&gt;, но на тот момент &lt;b&gt;программистов&lt;/b&gt;, занимающихся веб-разработкой под мобильные платформы, не то, чтобы в России было мало, их и по миру-то можно было на пальцах пересчитать (я беру в расчёт фриланс-биржи типа &lt;a href=&quot;http://odesk.com/&quot;&gt;oDesk&lt;/a&gt;), поскольку &lt;b&gt;iPad&lt;/b&gt; только-только вышел и началось активное бурление &quot;мнений&quot; вокруг новоявленных &lt;b&gt;HTML5&lt;/b&gt; и &lt;b&gt;CSS3&lt;/b&gt;. Одним словом, мне в любом случае пришлось бы заняться обучением программистов для своей команды. Вот тогда-то у меня и родилась мысль о создании блога и обучающих скринкастов по &lt;a href=&quot;http://www.sencha.com/&quot;&gt;Sencha Touch&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;
На данный момент я как никогда &lt;b&gt;нуждаюсь в команде&lt;/b&gt; веб-разработчиков, поскольку веду одновременную работу сразу на нескольких проектах и ещё несколько готовы вот-вот стартануть. Времени свободного всё меньше и меньше, а отказываться жадность не позволяет, хоть и в последнее время я перестал отвечать на новые предложения и веду переговоры только с проверенными заказчиками. Не уверен, что такой наплыв проектов будет всегда, поскольку сейчас весна, а весной, как правило, проектов больше, но упускать возможность наработать клиентскую базу, чтобы потом не мучаться в поисках новых проектов, очень бы не хотелось.&lt;br /&gt;
&lt;br /&gt;
Перехожу ближе к делу. Я приглашаю к себе в команду толковых &lt;b&gt;веб-разработчиков&lt;/b&gt; и талантливых &lt;b&gt;студентов&lt;/b&gt;! Основной профиль проектов - это разработка под мобильные платформы, поэтому &lt;b&gt;партнёр&lt;/b&gt; (предпочитаю называть именно так) должен быть готов в короткие сроки изучать новые технологии. Со своей стороны я предоставляю &lt;b&gt;помощь&lt;/b&gt; в обучении и плавное введение в рабочие &lt;b&gt;проекты&lt;/b&gt;&amp;nbsp;с достойной оплатой труда. Если вы из &lt;b&gt;Санкт-Петербурга&lt;/b&gt;, то преподам&amp;nbsp;&lt;b&gt;мастер-классы&lt;/b&gt; и на первых этапах&amp;nbsp;попрактикую &lt;b&gt;парное программирование&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Одним словом, &lt;b&gt;вакансия&lt;/b&gt; разработчика веб-приложений под мобильные платформы &lt;b&gt;открыта&lt;/b&gt;!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/3454710031454407701/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/blog-post.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3454710031454407701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3454710031454407701'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/blog-post.html' title='Ищу веб-разработчиков!'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizyAusSM5Q4ojoPfKlZrWmCjgcerykeJ17mMWURGF7CXpsZBZozP8xSR9IMcoFM7D-4OoBAUOE3xXGKYtLE99iOeTqcDsyPKWNw-VHAL55QhVYyXzmphtkVfTTW3NFqz_dEDZxvyZOXmQ/s72-c/1300106364_freelance2.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-7203380986229258583</id><published>2011-04-05T15:28:00.000+04:00</published><updated>2011-04-10T15:19:08.245+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Screencasts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch Tutorial"/><title type='text'>Sencha Touch Tutorial: Ext.Panel - Layouting</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Второй видеоурок &lt;b&gt;Sencha Touch Tutorial&lt;/b&gt; наконец-то готов!&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/ZwZZSlzZR3c?hl=ru&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/ZwZZSlzZR3c?hl=ru&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
На этот раз я рассказал о следующих вещах:&lt;br /&gt;
&lt;br /&gt;
- размещение компонентов внутри панели (&lt;b&gt;layout&lt;/b&gt;ing);&lt;br /&gt;
- обработка нажатия кнопки и параметр &lt;b&gt;scope&lt;/b&gt;;&lt;br /&gt;
- debugging;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;К сожалению, видеоматериала было отснято гораздо больше, чем вошло в урок, поэтому исходные коды не соответствуют тому, на чём закончилось видео, поэтому выкладывать ничего не буду.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;От автора:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Скажу честно, этот урок мне тяжело дался. Сначала были проблемы с видеорядом, из-за чего я всё видео полностью перезаписывал заново, хотя к тому моменту уже озвучил минуты четыре. Потом были проблемы со звуком, поскольку этот урок, в отличие от первого, я озвучивал не за один раз, а в свободное время, что негативно сказалось на качестве звука: как оказалось, в разные дни у меня разный голос и изменить его, практически, не получается, а обработка голоса в аудиоредакторе ещё сильнее затянула бы процесс создания видеоурока.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;В связи с проблемами, описанными выше, следующие уроки буду делать короче и стараться озвучивать в один день.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/7203380986229258583/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch-tutorial-extpanel.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7203380986229258583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/7203380986229258583'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/04/sencha-touch-tutorial-extpanel.html' title='Sencha Touch Tutorial: Ext.Panel - Layouting'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-2180108559600981876</id><published>2011-03-30T00:58:00.000+04:00</published><updated>2011-04-03T11:14:50.043+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Canvas"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="Библиотеки"/><title type='text'>RGraph: HTML5 библиотека для построения графиков и диаграмм</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Теперь, с появлением &lt;b&gt;HTML5&lt;/b&gt; и &lt;b&gt;canvas&lt;/b&gt;, &lt;b&gt;Flash&lt;/b&gt; становится всё менее и менее жизненно необходим.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3npx090QhFcIuVCUdASuT_qGkto5nRXQghi6PKB9Cim7eT997_DyaWLVR8JRkbFBXuOJHC9ryEWrVKrEURVnA6dsrqKOjltmCnEc8MeESa4Q5HYv5yaxCWgJnppgz1kG_Dii2B2S-t4/s1600/RGraph_sample_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;141&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3npx090QhFcIuVCUdASuT_qGkto5nRXQghi6PKB9Cim7eT997_DyaWLVR8JRkbFBXuOJHC9ryEWrVKrEURVnA6dsrqKOjltmCnEc8MeESa4Q5HYv5yaxCWgJnppgz1kG_Dii2B2S-t4/s320/RGraph_sample_1.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Хочу познакомить вас с &lt;b&gt;canvas&lt;/b&gt;-библиотекой для создания графиков и диаграмм, которые будут работать как в десктопных браузерах с поддержкой &lt;b&gt;HTML5&lt;/b&gt;, так и на мобильных платформах. Библиотека называется &lt;a href=&quot;http://www.rgraph.net/&quot;&gt;RGraph&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;a href=&quot;http://www.rgraph.net/&quot;&gt;RGraph&lt;/a&gt;&amp;nbsp;-&amp;nbsp;очень гибкая библиотека, и если нет надобности в использовании всех её функций одновременно, то вовсе не обязательно подключать все файлы. Например, для построения простого линейного графика достаточно подключить ядро библиотеки&amp;nbsp;&lt;b&gt;RGraph.common.core.js&lt;/b&gt;&amp;nbsp;и&amp;nbsp;&lt;b&gt;RGraph.line.js&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы добавить график или диаграмму на страничку требуется:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Подключить ядро библиотеки и файлы, необходимые для реализации заданного функционала.&lt;/li&gt;
&lt;li&gt;Добавить в DOM документа элемент &lt;b&gt;&amp;lt;canvas&amp;gt;&lt;/b&gt;&amp;nbsp;с атрибутом &lt;b&gt;id&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;После того, как&amp;nbsp;&lt;b&gt;&amp;lt;canvas&amp;gt;&lt;/b&gt;&amp;nbsp;будет прорендерен, создать объект&amp;nbsp;&lt;b&gt;RGraph.&amp;lt;name_of_chart&amp;gt;&lt;/b&gt; и сконфигурировать его свойства.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Для примера будем считать, что у нас в DOM уже есть элемент&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;brush:html&quot;&gt;&amp;lt;canvas id=&quot;chart_id&quot; width=&quot;310&quot; height=&quot;140&quot;&amp;gt;
    [No canvas support]
&amp;lt;/canvas&amp;gt;
&lt;/pre&gt;&lt;/div&gt;и подключен&amp;nbsp;&lt;b&gt;RGraph.line.js&lt;/b&gt;.&lt;br /&gt;
Теперь создадим объект &lt;b&gt;line&lt;/b&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;var data = [10,4,17,50,25,19,20,25,30,29,30,29];
var line = new RGraph.Line(&quot;chart_id&quot;, data);&lt;/pre&gt;Первый параметр при объявлении &lt;b&gt;RGraph.Line&lt;/b&gt; - это идентификатор нашего &lt;b&gt;canvas&lt;/b&gt;-элемента, а второй - это данные, по которым будет построен график.&lt;br /&gt;
Теперь надо прописать конфигурационные свойства объекта &lt;b&gt;line&lt;/b&gt;:&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;RGraph.SetConfig(line, {
     &#39;chart.colors&#39;          : [&#39;#57a4ff&#39;],
     &#39;chart.filled&#39;          : true,
     &#39;chart.fillstyle&#39;       : [&#39;#57a4ff&#39;],
     &#39;chart.labels&#39;          : [&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;]
});&lt;/pre&gt;Я не буду объяснять, что каждое из свойств означает - всё это вы сможете прочитать в &lt;a href=&quot;http://www.rgraph.net/docs/index.html&quot;&gt;документации&lt;/a&gt; на &lt;a href=&quot;http://www.rgraph.net/&quot;&gt;официальном сайте&lt;/a&gt;.&lt;br /&gt;
Осталось только прорисовать график:&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;line.Draw();
&lt;/pre&gt;Всё, теперь на странице появится симпатичный &lt;b&gt;HTML5&lt;/b&gt;-график!&amp;nbsp;Очистить его можно следующим образом:&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;RGraph.Clear(document.getElementById(&#39;line_chart_id&#39;));
&lt;/pre&gt;После очистки можно рисовать новый график в этом же &lt;b&gt;canvas&lt;/b&gt;. Если не произвести очистку, то один график будет рисоваться поверх другого.&lt;br /&gt;
&lt;br /&gt;
В заключении хочу сказать, что библиотека&amp;nbsp;&lt;a href=&quot;http://www.rgraph.net/&quot;&gt;RGraph&lt;/a&gt;&amp;nbsp;проста в освоении и достаточно функциональна, причём есть возможность строить красивые интерактивные графики. Недостатком, пожалуй, могу назвать только то, что бесплатно использовать&amp;nbsp;&lt;a href=&quot;http://www.rgraph.net/&quot;&gt;RGraph&lt;/a&gt;&amp;nbsp;можно только в некоммерческих проектах, в коммерческих же придётся заплатить&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, sans-serif; font-size: 13px; white-space: nowrap;&quot;&gt;£ 49,00&lt;/span&gt;, что не совсем дёшево.&lt;br /&gt;
&lt;br /&gt;
Примеры различных диаграмм и графиков вы можете найти на&amp;nbsp;&lt;a href=&quot;http://www.rgraph.net/&quot;&gt;официальном сайте&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
P.S.:&amp;nbsp;&lt;i&gt;исходные коды примера, приведённого в статье, выкладывать не буду, поскольку он исключительно демонстрационный.&amp;nbsp;&lt;/i&gt;&lt;i&gt;Я просто покажу картинку того, что получилось бы.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguHxN-xM9UYbGXjmhiYTXjxkvqu0fLLN9_IDAyWa06CGAZt9duajWeKYykMLCKzTc0Br7A0r1OlHY58ddtmpYq1YREUbEhzxwFQW5m-0RTVjrvqHfcMm8TY_6NtF9kHQdPVGIRsE29Mx0/s1600/rgraph_sample_2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguHxN-xM9UYbGXjmhiYTXjxkvqu0fLLN9_IDAyWa06CGAZt9duajWeKYykMLCKzTc0Br7A0r1OlHY58ddtmpYq1YREUbEhzxwFQW5m-0RTVjrvqHfcMm8TY_6NtF9kHQdPVGIRsE29Mx0/s1600/rgraph_sample_2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span id=&quot;goog_1031424956&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1031424957&quot;&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/2180108559600981876/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/rgraph-html5.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/2180108559600981876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/2180108559600981876'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/rgraph-html5.html' title='RGraph: HTML5 библиотека для построения графиков и диаграмм'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ3npx090QhFcIuVCUdASuT_qGkto5nRXQghi6PKB9Cim7eT997_DyaWLVR8JRkbFBXuOJHC9ryEWrVKrEURVnA6dsrqKOjltmCnEc8MeESa4Q5HYv5yaxCWgJnppgz1kG_Dii2B2S-t4/s72-c/RGraph_sample_1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-3994036198643166573</id><published>2011-03-24T22:54:00.002+03:00</published><updated>2011-08-17T11:02:23.523+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Blackberry"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="PhoneGap"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch 1.1 Release</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;style type=&quot;text/css&quot;&gt;
h3 {
color: #999;
}
&lt;/style&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Сегодня вышло первое в этому году обновление библиотеки &lt;a href=&quot;http://mobile-webapps.blogspot.com/search/label/Sencha%20Touch&quot;&gt;Sencha Touch&lt;/a&gt;.&lt;br /&gt;
Должен сказать, что эта новость меня очень обрадовала, поэтому спешу поделиться, что же нового появилось в версии 1.1.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.sencha.com/files/misc/sencha-touch-1-1-hero2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;228&quot; src=&quot;http://www.sencha.com/files/misc/sencha-touch-1-1-hero2.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Поддержка Blackberry&lt;/h3&gt;&lt;br /&gt;
Теперь приложения, созданные с помощью &lt;b&gt;Sencha Touch&lt;/b&gt;, корректно отображаются на устройствах компании &lt;b&gt;RIM&lt;/b&gt; с операционной системой &lt;b&gt;Blackberry 6&lt;/b&gt; и выше, включая &lt;b&gt;Blackberry TabletOS&lt;/b&gt;, что, надеюсь, положительно скажется на увеличении количества проектов на &lt;b&gt;Sencha Touch&lt;/b&gt; на фриланс-биржах, типа oDesk, поскольку в штатах устройства с &lt;b&gt;Blackberry&lt;/b&gt; широко распространены, причём в очень &quot;вкусном&quot; корпоративном секторе.&lt;br /&gt;
&lt;br /&gt;
Подробнее &amp;nbsp;об этом можно прочитать &lt;a href=&quot;http://devblog.blackberry.com/2011/03/sencha-touch/&quot;&gt;в официальном блоге&lt;/a&gt;&amp;nbsp;&lt;b&gt;Blackberry&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Первые официальные плагины&lt;/h3&gt;&lt;br /&gt;
Теперь библиотека &lt;b&gt;Sencha Touch&lt;/b&gt; обзавелась своими первыми официальными плагинами - это плагин &quot;&lt;a href=&quot;http://dev.sencha.com/deploy/touch/examples/pullrefresh/&quot;&gt;Pull to Refresh&lt;/a&gt;&quot;&amp;nbsp;и плагин &quot;&lt;b&gt;Pagination&lt;/b&gt;&quot;, добавляющий в конец списка кнопку для подгрузки новой порции контента, причём, включив опцию &#39;autoPaging&#39;, это будет делаться автоматически при достижении конца списка&amp;nbsp;(подобную функцию я реализовывал самостоятельно ещё в ранних бета-версиях библиотеки, что описано в статье &quot;&lt;a href=&quot;http://mobile-webapps.blogspot.com/2010/07/blog-post_18.html&quot;&gt;Автоподгрузка списка по скроллингу&lt;/a&gt;&quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Новые примеры&lt;/h3&gt;&lt;br /&gt;
&lt;b&gt;Sencha Touch&lt;/b&gt; обзавелось новыми примерами, один из которых - &lt;a href=&quot;http://dev.sencha.com/deploy/touch/examples/oreilly/&quot;&gt;O&#39;Reilly&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Улучшена производительность и обновлены стили&lt;/h3&gt;&lt;br /&gt;
Разработчики заявляют, что они кое-где существенно улучшили производительность, но, я думаю, они до сих пор так и не смогли пофиксить те два бага (причём, существенных бага), что я &lt;a href=&quot;http://www.sencha.com/forum/showthread.php?121098-OPEN-725-Keyboard-has-not-appeared-on-focus-a-TextArea.&amp;amp;p=577877#post577877&quot;&gt;зарепортил&lt;/a&gt; ещё осенью прошлого года, поскольку мне на почту не приходило уведомлений о изменении статусов тикетов с этими багами (в ближайшее время проверю это и напишу о результатах).&lt;br /&gt;
&lt;br /&gt;
Кроме того, намечен курс на сближение с платформой &lt;a href=&quot;http://www.phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt;, что не может не радовать!&lt;br /&gt;
&lt;br /&gt;
В заключении даю ссылку на &lt;a href=&quot;http://www.sencha.com/blog/sencha-touch-1-1-release-with-blackberry-support/&quot;&gt;официальную статью&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/3994036198643166573/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch-11-release.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3994036198643166573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3994036198643166573'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch-11-release.html' title='Sencha Touch 1.1 Release'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-6892191356725866610</id><published>2011-03-24T04:25:00.000+03:00</published><updated>2011-03-24T15:49:44.441+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Habrahabr"/><category scheme="http://www.blogger.com/atom/ns#" term="Offtop"/><title type='text'>Habrahabr</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Пару дней назад заработал инвайт на &lt;a href=&quot;http://habrahabr.ru/&quot;&gt;хабр&lt;/a&gt; за статью &lt;a href=&quot;http://habrahabr.ru/blogs/extjs/116007/&quot;&gt;о создании собственного слайдера&lt;/a&gt;. Это, конечно, здорово, но, должен сказать, я не был знаком с правилами публикации хабратопиков, и теперь не могу опубликовать статьи со своими видеоуроками - надо набрать карму.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.oophone.ru/wp-content/uploads/2010/11/habrahabr.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.oophone.ru/wp-content/uploads/2010/11/habrahabr.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Вот уже второй видеоурок, практически, готов, а карму, чувствую, я ещё не скоро заработаю, в связи с чем, хочу обратиться к хабражителям, которые заходят сюда по ссылке из моего профиля: &quot;Если Вам понравились мои скринкасты &lt;a href=&quot;http://mobile-webapps.blogspot.com/2011/03/sencha-touch.html&quot;&gt;Sencha Touch Tutorial&lt;/a&gt; (он пока что один), и Вы считаете, что они могут помочь людям, решившим освоить эту библиотеку, проплюсуйте мне, пожалуйста, карму. Я, в свою очередь, обязуюсь не затягивать с продолжением! Заранее благодарю&quot;.&lt;br /&gt;
&lt;br /&gt;
P.S.: Даже если кто-то сам сделает топик-ссылку на мой первый скринкаст &lt;a href=&quot;http://mobile-webapps.blogspot.com/2011/03/sencha-touch.html&quot;&gt;Sencha Touch Tutorial&lt;/a&gt;, буду благодарен.&lt;br /&gt;
&lt;br /&gt;
Спасибо за внимание!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/6892191356725866610/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/habrahabr.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6892191356725866610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6892191356725866610'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/habrahabr.html' title='Habrahabr'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-3683629271642006887</id><published>2011-03-23T05:06:00.001+03:00</published><updated>2011-04-29T15:02:56.542+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Screencasts"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch Tutorial"/><title type='text'>Обучающий видеокурс Sencha Touch Tutorial</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Я давно уже собирался записать&amp;nbsp;&lt;b&gt;обучающий видеокурс Sencha Touch Tutorial&lt;/b&gt;&amp;nbsp;на русском языке, но только сейчас дошли руки. Запись скринкаста, монтаж и озвучка заняли у меня два дня и, надеюсь, это время не окажется потраченным напрасно.&lt;br /&gt;
Теперь вы можете просмотреть первый урок, ориентированный на полных новичков в &lt;b&gt;Sencha Touch&lt;/b&gt;, но знакомых с JavaScript:&lt;br /&gt;
&lt;br /&gt;
&lt;object height=&quot;344&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Ergqt-8BMOM?hl=ru&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/Ergqt-8BMOM?hl=ru&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;В этом уроке я пролил свет на следующие темы:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;азы создания веб-приложений на базе библиотеки &lt;b&gt;Sencha Touch&lt;/b&gt;;&lt;/li&gt;
&lt;li&gt;компоненты &lt;b&gt;Ext.Panel&lt;/b&gt;, &lt;b&gt;Ext.Toolbar&lt;/b&gt;, &lt;b&gt;Ext.Button&lt;/b&gt; и некоторые из их конфигурационных свойств;&lt;/li&gt;
&lt;li&gt;порядок применения значений свойствам компонента&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Исходники проекта можно стянуть&amp;nbsp;&lt;a href=&quot;https://www.sugarsync.com/pf/D440748_7510472_76568&quot;&gt;отсюда&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
В ближайшее время постараюсь записать &lt;a href=&quot;http://mobile-webapps.blogspot.com/2011/04/sencha-touch-tutorial-extpanel.html&quot;&gt;продолжение&lt;/a&gt;!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/3683629271642006887/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch.html#comment-form' title='Комментарии: 12'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3683629271642006887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3683629271642006887'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch.html' title='Обучающий видеокурс Sencha Touch Tutorial'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-1901288099731221837</id><published>2011-03-20T21:04:00.000+03:00</published><updated>2011-03-30T14:59:00.218+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Components"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch: Ext.form.Slider с полем для ручного ввода значения</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;В одном из моих проектов я столкнулся с задачей создания компонента слайдера с возможностью ручного ввода значения поля, т. е. выглядеть он должен был так:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii7FcLAH1fYLAXS1VU8qs6RfpgFBNsqEYzOrYmHCH8OYCCZuMot_pZJTtxpCoOMPbWBSSetVnSG8kcxNvP0ZEZBOv46ve6LT4_KQ-z0De6smJGp_BZDbMG0iY-LO3MuDlqFwE7MH3fsc8/s1600/CustomSlider.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii7FcLAH1fYLAXS1VU8qs6RfpgFBNsqEYzOrYmHCH8OYCCZuMot_pZJTtxpCoOMPbWBSSetVnSG8kcxNvP0ZEZBOv46ve6LT4_KQ-z0De6smJGp_BZDbMG0iY-LO3MuDlqFwE7MH3fsc8/s1600/CustomSlider.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Причём, при нажатии на значение поля (где написано &quot;8.50 %&quot;) должна выдвигаться клавиатура для ввода значения поля вручную, а при перетаскивании ползунка значение поля должно обновляться.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Итак, первым делом я изучил внутренности компонента &lt;b&gt;Ext.form.Slider&lt;/b&gt; и выяснил, что внешний вид задаётся свойством&amp;nbsp;&lt;b&gt;renderTpl&lt;/b&gt;.&lt;br /&gt;
Вот так выглядит &lt;b&gt;renderTpl&lt;/b&gt; в оригинале:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;renderTpl: [
    &#39;&amp;lt;tpl if=&quot;label&quot;&amp;gt;&#39;,
        &#39;&amp;lt;div class=&quot;x-form-label&quot;&amp;gt;&amp;lt;span&amp;gt;{label}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#39;,
    &#39;&amp;lt;/tpl&amp;gt;&#39;,
    &#39;&amp;lt;tpl if=&quot;fieldEl&quot;&amp;gt;&#39;,
        &#39;&amp;lt;div id=&quot;{inputId}&quot; name=&quot;{name}&quot; class=&quot;{fieldCls}&quot;&#39;,
        &#39;&amp;lt;tpl if=&quot;tabIndex&quot;&amp;gt;tabIndex=&quot;{tabIndex}&quot;&amp;lt;/tpl&amp;gt;&#39;,
        &#39;&amp;lt;tpl if=&quot;style&quot;&amp;gt;style=&quot;{style}&quot; &amp;lt;/tpl&amp;gt;&#39;,
    &#39;/&amp;gt;&amp;lt;/tpl&amp;gt;&#39;
]
&lt;/pre&gt;&lt;br /&gt;
В моём компоненте, помимо дополнительного поля для ручного ввода, будет присутствовать&amp;nbsp;&lt;b&gt;постфикс&lt;/b&gt;, т. е. один символ или набор символов, которые будут добавляться после поля со значением (на скриншоте - это &quot;%&quot;), поэтому я изменил шаблон компонента следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;renderTpl: [
    &#39;&amp;lt;tpl if=&quot;label&quot;&amp;gt;&#39;,
        &#39;&amp;lt;div class=&quot;x-form-label&quot;&amp;gt;&amp;lt;span&amp;gt;{label}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#39;,
        &#39;&amp;lt;div class=&quot;dnt_form_slider_value&quot;&amp;gt;&#39; +
          &#39;&amp;lt;input type=&quot;text&quot; id=&quot;dnt-form-slider-valuefield-{name}&quot;
              class=&quot;dnt_form_slider_value_input&quot; value=&quot;{value}&quot; /&amp;gt;&#39; +
          &#39;{postfix}&#39; +
        &#39;&amp;lt;/div&amp;gt;&#39;,
    &#39;&amp;lt;/tpl&amp;gt;&#39;,
    &#39;&amp;lt;tpl if=&quot;fieldEl&quot;&amp;gt;&#39;,
        &#39;&amp;lt;div id=&quot;{inputId}&quot; name=&quot;{name}&quot; class=&quot;{fieldCls}&quot;&#39;,
        &#39;&amp;lt;tpl if=&quot;tabIndex&quot;&amp;gt;tabIndex=&quot;{tabIndex}&quot;&amp;lt;/tpl&amp;gt;&#39;,
        &#39;&amp;lt;tpl if=&quot;style&quot;&amp;gt;style=&quot;{style}&quot; &amp;lt;/tpl&amp;gt;&#39;,
    &#39;/&amp;gt;&amp;lt;/tpl&amp;gt;&#39;
]
&lt;/pre&gt;&lt;br /&gt;
CSS-классы, прописанные в этом шаблоне, заданы следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:css&quot;&gt;.dnt_form_slider_title {
    background-color: transparent;
    display: inline;
}
.dnt_form_slider_value {
    position: absolute;
    right: 26px;
    display: inline;
}
.dnt_form_slider_value_input {
    display: inline !important;
    min-height: 20px !important;
    padding: 0px !important;
    text-align: right;
    width: 60px !important;
}
&lt;/pre&gt;&lt;br /&gt;
Теперь компонент будет выглядеть должным образом, но значения &lt;b&gt;value&lt;/b&gt; и &lt;b&gt;postfix&lt;/b&gt; не будут применяться нашему полю, поэтому переходим к функциональной части.&lt;br /&gt;
&lt;br /&gt;
Итак,&amp;nbsp;&lt;b&gt;value&lt;/b&gt;&amp;nbsp;и&amp;nbsp;&lt;b&gt;postfix&lt;/b&gt;&amp;nbsp;изначально не будут подставляться в шаблон, даже если мы передадим их в конфигурационные свойства при объявлении нашего кастомизированного слайдера. Изучив исходный код&amp;nbsp;&lt;b&gt;Ext.form.Field&lt;/b&gt;, от которого унаследован &lt;b&gt;Ext.form.Slider&lt;/b&gt;, я выяснил, что список полей, которые будут заполнять шаблон, определяется функцией&amp;nbsp;&lt;b&gt;initRenderData&lt;/b&gt;, поэтому для нашего слайдера я перегрузил эту функцию следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;initRenderData: function() {
    //вызываю код, который был прописан в оригинальном Ext.form.Field
    var renderData = Dnt.form.Slider.superclass.initRenderData.call(this);
    //добавляю новые поля, которые будут подставляться в шаблон
    Ext.applyIf(renderData, {
        value       : this.getValue(),
        postfix     : this.postfix
    });
    return renderData;
}
&lt;/pre&gt;&lt;br /&gt;
Теперь в шаблон будут вписаны значения, указанные в конфигурационных свойствах компонента. Осталось сделать так, чтобы эти значения менялись при перемещении ползунка слайдера.&lt;br /&gt;
Чтобы при перемещении ползунка новое значение применялась только к одному компоненту, а не ко всем слайдерам, добавленным на страницу, в шаблоне я задал полю &lt;b&gt;input&lt;/b&gt; атрибут &lt;b&gt;id&lt;/b&gt;, формирующийся из префикса &lt;b&gt;dnt-form-slider-valuefield-&lt;/b&gt;&amp;nbsp;и значения конфигурационного свойства &lt;b&gt;name&lt;/b&gt;, которое должно быть объявлено.&lt;br /&gt;
Для динамического изменения значения поля необходимо подписаться к событию &lt;b&gt;&#39;change&#39;&lt;/b&gt; нашего слайдера и в качестве обработчика назначить следующую функцию:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;onChangeValue: function(slider, thumb, newValue, oldValue) {
    //получаю ссылку на input-элемент компонента
    var valueField = Ext.get(&#39;dnt-form-slider-valuefield-&#39; + this.name);
    /*
      устанавливаю новое значение, обрезав количество 
      символов после запятой до значения конфигурационного
      свойства digitalAfterPoint (у меня по умолчанию 2)
    */
    valueField.dom.value = newValue.toFixed(this.digitalsAfterPoint);
}
&lt;/pre&gt;&lt;br /&gt;
Итак, теперь значение поля меняется, но меняется оно только тогда, когда мы отпускаем ползунок. Для того, чтобы значение поля менялось постоянно при перетаскивании слайдера, нам необходимо функцию &lt;b&gt;onChangeValue&lt;/b&gt; подписать и на событие &lt;b&gt;&#39;drag&#39;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Осталось совсем немного: надо сделать так, чтобы при ручном изменении значения поля слайдер передвигался на нужную позицию.&lt;br /&gt;
Для этого подписываемся на событие &lt;b&gt;&#39;render&#39;&lt;/b&gt; нашего компонента и ставим обработчиком функцию&amp;nbsp;&lt;b&gt;onRenderSlider&lt;/b&gt; - в этот момент наш компонент прорендерен, поэтому мы можем подписаться на события, выбрасываемые нашим input-элементом, отображающим текущее значение поля.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;onRenderSlider: function() {
    //получаю ссылку на input-элемент компонента
    var valueField = Ext.get(&#39;dnt-form-slider-valuefield-&#39; + this.name);
    //подписываюсь на изменения значения input-элемента
    valueField.on(&#39;change&#39;, function(event, el) {
        //формирую из введённых данных новое значение поля
        var newValue = parseFloat(el.value) || 0;
        //форматирую значение и передвигаю слайдер
        this.setValue(newValue.toFixed(this.digitalsAfterPoint));
    }, this);
}
&lt;/pre&gt;&lt;br /&gt;
Всё, наш новый слайдер с полем для ручного ввода значения полностью готов, причём никаких дополнительных защит &quot;от дурака&quot; писать не надо!&lt;br /&gt;
&lt;br /&gt;
Добавить компонент можно следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;new Dnt.form.Slider({
    name              : &#39;interestRate&#39;,
    postfix           : &#39;%&#39;,
    digitalsAfterPoint: 2,
    minValue          : 1,
    maxValue          : 15,
    increment         : 0.05,
    label             : &#39;Interest Rate&#39;
})
&lt;/pre&gt;&lt;br /&gt;
В дополнение прилагаю &lt;a href=&quot;https://www.sugarsync.com/pf/D440748_7510472_62553&quot;&gt;исходный код&lt;/a&gt; компонента и &lt;a href=&quot;https://www.sugarsync.com/pf/D440748_7510472_62569&quot;&gt;файл со стилями&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Тестовый проект с подключенным и работающим слайдером можно скачать &lt;a href=&quot;https://www.sugarsync.com/pf/D440748_7510472_76551&quot;&gt;отсюда&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/1901288099731221837/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch-extformslider.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/1901288099731221837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/1901288099731221837'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/sencha-touch-extformslider.html' title='Sencha Touch: Ext.form.Slider с полем для ручного ввода значения'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii7FcLAH1fYLAXS1VU8qs6RfpgFBNsqEYzOrYmHCH8OYCCZuMot_pZJTtxpCoOMPbWBSSetVnSG8kcxNvP0ZEZBOv46ve6LT4_KQ-z0De6smJGp_BZDbMG0iY-LO3MuDlqFwE7MH3fsc8/s72-c/CustomSlider.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-9075196793338875262</id><published>2011-03-15T00:04:00.000+03:00</published><updated>2011-03-30T15:12:15.314+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Components"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Особенности компонента Ext.form.Select</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Только что обнаружил интересное и не совсем логическое поведение компонента &lt;b&gt;Ext.form.Select&lt;/b&gt;. Дело в том, что если просто написать код, типа этого:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;new Ext.form.Select({
  label: &#39;Select field&#39;,
  options: [
    {text: &#39;option 1&#39;},
    {text: &#39;option 2&#39;}
  ]
})
&lt;/pre&gt;&lt;br /&gt;
то на айфоне (я тестировал на iPhone 3gs) не будет вызываться меню выбора опции (Picker), хотя в настольном Safari всё работает. &lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Поведение, на мой взгляд, несколько непредсказуемое, но методом тыка удалось выяснить, что не хватает объявления параметра&amp;nbsp;&lt;b&gt;name&lt;/b&gt;, т. е. если написать вот так, то всё заработает:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;new Ext.form.Select({
  name: &#39;selectField&#39;,
  label: &#39;Select field&#39;,
  options: [
    {text: &#39;option 1&#39;},
    {text: &#39;option 2&#39;}
  ]
})
&lt;/pre&gt;&lt;br /&gt;
Но и это ещё не всё! Теперь меню вызывается, но после нажатия на кнопку &lt;b&gt;Done&lt;/b&gt;&amp;nbsp;компоненту не применяется новое значение. В принципе, это поведение я уже могу назвать предсказуемым, поскольку в списке опций мы задали только свойство&amp;nbsp;&lt;b&gt;text&amp;nbsp;&lt;/b&gt;, а свойство&amp;nbsp;&lt;b&gt;value&amp;nbsp;&lt;/b&gt;не задано.&lt;br /&gt;
Вот, как должен выглядеть, работающий без проблем, компонент &lt;b&gt;Ext.form.Select&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;new Ext.form.Select({
  name: &#39;selectField&#39;,
  label: &#39;Select field&#39;,
  options: [
    {text: &#39;option 1&#39;, value: &#39;option1&#39;},
    {text: &#39;option 2&#39;, value: &#39;option2&#39;}
  ]
})
&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/9075196793338875262/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/extformselect.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/9075196793338875262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/9075196793338875262'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2011/03/extformselect.html' title='Особенности компонента Ext.form.Select'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-8633516599273790651</id><published>2010-09-15T14:31:00.000+04:00</published><updated>2011-03-24T23:04:19.266+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch 0.95 beta</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Прошлый апдейт JavaScript фреймворка &lt;b&gt;Sencha Touch&lt;/b&gt; оказался просто неработоспособным, поскольку после рефакторинга был сломан основной функционал. И вот, спустя 7 дней, разработчики &lt;b&gt;Sencha&lt;/b&gt; исправили свои ошибки и выпустили новую версию!&lt;br /&gt;
Но, судя по статусам баг-репортов на &lt;a href=&quot;http://www.sencha.com/forum/forumdisplay.php?57-Sencha-Touch-Bugs/&quot;&gt;официальном форуме&lt;/a&gt;, ошибки, привнесённые новым апдейтом, пофикшены не все. Что ж, это всего лишь бета, и каждый, кто берётся писать рабочие проекты на бета-версии, должен понимать и соглашаться с риском и возможными проблемами. Надеюсь, апдейт &lt;a href=&quot;http://downloads.sencha.com/touch/sencha-touch-beta-0.95.zip&quot;&gt;Sencha Touch 0.95 beta&lt;/a&gt; окажется пригодным для работы, а пока остаётся только пожелать удачи разработчикам и ждать финального релиза, который, судя по всему, будет где-то в ноябре.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/8633516599273790651/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-095-beta.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/8633516599273790651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/8633516599273790651'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-095-beta.html' title='Sencha Touch 0.95 beta'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-3286834140165084571</id><published>2010-09-14T17:56:00.000+04:00</published><updated>2010-09-15T14:28:13.907+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bugs"/><category scheme="http://www.blogger.com/atom/ns#" term="Refactoring"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch 0.94 beta: Bugs</title><content type='html'>К сожалению, &lt;b&gt;Sencha Touch 0.94 beta&lt;/b&gt;, принеся кучу новых фич, стала, на мой взгляд, неработоспособной из-за обилия багов. Какое-то время я пытался самостоятельно делать заплатки, но новые дыры вскрывались одна за другой, поэтому я плюнул и откатился до 0.93 версии.&lt;br /&gt;
Причём, судя по активности на форуме &lt;a href=&quot;http://www.sencha.com/forum/forumdisplay.php?57-Sencha-Touch-Bugs&quot;&gt;Sencha Touch: Bugs&lt;/a&gt; перестали работать веб-приложения после обновления не только у меня.&lt;br /&gt;
Произошло сиё безобразие, скорее всего, из-за глобального рефакторинга, о котором разработчики так хвалились в Release Notes. К сожалению, web-интерфейсы и JavaScript тяжело покрываются автоматизированными тестами (помнится, как-то раз навешевали мы на &lt;b&gt;ExtJS&lt;/b&gt;-портал &lt;a href=&quot;http://www.google.ru/url?sa=t&amp;source=web&amp;cd=1&amp;sqi=2&amp;ved=0CBgQFjAA&amp;url=http%3A%2F%2Fseleniumhq.org%2F&amp;ei=_3yPTJzMEtOnOMuTybkN&amp;usg=AFQjCNHCelhj_BWssRX2H0HZCcPqhgBrRg&amp;sig2=pLO39-elqLUYMKeu2caivw&quot;&gt;Selenium&lt;/a&gt;-тесты через css-селекторы, но ничего хорошего не вышло).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sencha Touch 0.94 beta&lt;/b&gt; сильно обрадовала меня своим выходом, но и не менее огорчила, когда я потратил кучу времени, пытаясь пофиксить то, что раньше работало отлично. В общем, это обновление явилось хорошим примером, что рефакторинг должен быть хорошо протестирован и надеюсь, новая версия не заставит себя долго ждать.</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/3286834140165084571/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-0.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3286834140165084571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/3286834140165084571'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-0.html' title='Sencha Touch 0.94 beta: Bugs'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-6678486714254228148</id><published>2010-09-08T22:16:00.000+04:00</published><updated>2011-03-24T23:05:37.924+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="News"/><category scheme="http://www.blogger.com/atom/ns#" term="Release notes"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Sencha Touch 0.94 beta</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Сегодня наконец-то обновилась бета-версия, уже полюбившегося мной, JavaScript Framework&#39;а для мобильных платформ &lt;b&gt;Sencha Touch&lt;/b&gt;. Должен сказать, этот апдейт я ждал долго и вот, после месячной доработки, он доступен для свободного &lt;a href=&quot;http://downloads.sencha.com/touch/sencha-touch-beta-0.94.zip&quot;&gt;скачивания&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
В этой версии были исправлены многие баги, проведён рефакторинг, улучшена производительность, произведена оптимизация под &lt;b&gt;Android&lt;/b&gt; и &lt;b&gt;iPhone 4&lt;/b&gt;.&lt;br /&gt;
Полный список изменений вы можете найти в файле release-notes.html, прилагаемому к архиву &lt;b&gt;Sencha Touch&lt;/b&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/6678486714254228148/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-094-beta.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6678486714254228148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6678486714254228148'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2010/09/sencha-touch-094-beta.html' title='Sencha Touch 0.94 beta'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-6941065941794100671</id><published>2010-07-18T15:51:00.000+04:00</published><updated>2011-03-30T15:22:12.682+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="Components"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><category scheme="http://www.blogger.com/atom/ns#" term="Tips"/><title type='text'>Автоподгрузка списка по скроллингу</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Итак, я решил первый технический пост не посвящать азам Sencha Touch и не стал излагать тот минимум, который необходим для создания мобильного web приложения (об этом я расскажу в следующих записях), я хочу рассказать вам о компонентах &lt;b&gt;Ext.List&lt;/b&gt;, &lt;b&gt;Ext.util.Scroller&lt;/b&gt;, о &lt;b&gt;AJAX&lt;/b&gt;-запросах и как с помощью этого всего сделать так, чтобы по достижению дна списка подгружалась следующая порция контента.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;i&gt;(на момент написания использовалась &lt;b&gt;Sencha Touch 0.91 beta&lt;/b&gt;)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Когда передо мной возникла эта задача, я первым делом полез в документацию Sencha Touch (&lt;/span&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;http://www.sencha.com/deploy/touch/docs/&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;) и обнаружил, что никаких событий, связанных со скроллингом, у компонента &lt;b&gt;Ext.List&lt;/b&gt; нет. Сразу после этого, я открыл исходники компонента List в поисках недокументированных возможностей (в ExtJS к этим махинация приходилось обращаться часто, поскольку стандартным набором API сделать можно далеко не всё, а вот если сделать Ext&#39;овскому компоненту какой-нибудь адаптер, то функционал библиотеки можно существенно расширить). Покопавшись в коде, я обнаружил такой компонент, как scoller, оказавшийся на деле&amp;nbsp;&lt;b&gt;Ext.util.Scroller&lt;/b&gt;, у которого в документации уже присутствовали, необходимые мне, события:&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-scrollend&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;scrollend&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;- скроллирование окончено (то, что нам надо)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-scrollstart&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;scrollstart&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;- скроллирование началось&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-touchend&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;touchend&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;- окончание прикосновения к экрану&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-touchstart&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;touchstart&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt; &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;- начало прикосновения к экрану&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Далее оставалось дело за малым: получить компонент scroller нашего списка, подписаться к нему на событие &lt;/span&gt;&lt;b&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-scrollend&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;scrollend&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt; проверять, доскроллировали ли мы до конца, и если да, то вызывать, нужный нам, Ajax-метод.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Трудности возникли с самого первого пункта: в документации Sencha Touch отсутствовали методы или переменные для получения компонента Scroller. Пришлось открыть исходники &lt;b&gt;Ext.List&lt;/b&gt; и, прибегнув к хаку, вручную извлечь, необходимый нам, скроллер:&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;this.scroller.on(&#39;scrollend&#39;, this.onScrollEnd, this);&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small;&quot;&gt;(this - это сам наш List, а this.onScrollEnd - функция обработчика события)&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;Итак, мы подписались на события окончания скроллинга, и теперь необходимо извлечь данные о позиции скролла и данные о общей длинне скроллируемого листа, чтобы сравнить их. В событие&amp;nbsp;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;a href=&quot;http://www.sencha.com/deploy/touch/docs/source/Scroller.html#event-Ext.util.Scroller-scrollend&quot; style=&quot;color: #083772; text-decoration: none;&quot;&gt;scrollend&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;передаётся экземпляр скроллера, из которого мы все эти данные и выпытаем:&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;onScrollEnd: function(scroller) {
 if(scroller.offset.y == scroller.bounds.y &amp;amp;&amp;amp; !this.isLoading) {
  this.isLoading = true;
  this.loadContent(++this.page);
 }
}
&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;
&lt;b&gt; scroller.offset.y&lt;/b&gt; - текущее положение скроллинга&lt;br /&gt;
&lt;b&gt; scroller.bounds.y&lt;/b&gt; - общий размер скроллируемого списка&lt;br /&gt;
&lt;b&gt; this.loadContent()&lt;/b&gt; - функция подгрузки нового контента&lt;br /&gt;
&lt;b&gt; this.page&lt;/b&gt; - номер страницы&lt;br /&gt;
&lt;b&gt; this.isLoading&lt;/b&gt; - флаг загрузки (необходим, чтобы нельзя было сто раз вызвать подгрузку новго контента, пока старый не загрузился)&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Осталось вызвать Ajax-метод и добавить, подгруженный контент, к существующему:&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:js&quot;&gt;loadContent: function(page) {
 Ext.Ajax.request({
  /* адрес php-функции, подгружающей контент */
  url  : &#39;action.php&#39;, 
  method : &#39;POST&#39;,
  /* список параметров, передаваемых в запрос */
  params : {
   /* номер страницы (если не определён, то берём страницу №1) */
   page  : page || 1
  },
  scope : this,
  /* запрос прошёл успешно */
  success : function(response, opts) { 
   /* декодируем строку в JSON-объект */
   response = Ext.util.JSON.decode(response.responseText); 
   if(response.content != null) {
    /* если не обнулить это свойство, то все новые записи будут  дублироваться */
    this.getStore().snapshot = null; 
    /* пробегаем по всем записям */
    Ext.each(response.content, function(entry) {
     /* добавляем запись в Store */
     this.getStore().add(entry); 
    }, this);
   }
   /* разрешаем подгрузку следующей порции контента */
   this.isLoading= false; 
  },
  /* запрос не прошёл */
  failure : function(response, opts) { 
   this.isLoading= false;
  }
 });
}
&lt;/pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;Вот, в принципе, и всё. Теперь, когда вы прокрутите список в самый низ, будет подгружаться новая порция контента. Не забудьте правильно сконфигурировать  сам &lt;b&gt;Ext.List&lt;/b&gt; и его &lt;b&gt;Ext.data.Store&lt;/b&gt; (об этом я расскажу в следующих записях).&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/6941065941794100671/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2010/07/blog-post_18.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6941065941794100671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/6941065941794100671'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2010/07/blog-post_18.html' title='Автоподгрузка списка по скроллингу'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1560720494131975411.post-4470753028391671997</id><published>2010-07-15T14:43:00.000+04:00</published><updated>2011-03-30T15:19:50.614+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ExtJS"/><category scheme="http://www.blogger.com/atom/ns#" term="Sencha Touch"/><title type='text'>Вступление</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkOe8StLM6nqnRbaxbfJ-stskw2UCkZFn-5ZGJVscOXoen83c4SjRzwUK7ifjgClnsO8WZ99swUIaZLvzlhnV2rPy22hJSoSm9ho2o9ZHsQ5k5suFnwY3pDCx5IAw1xy_Rw6XAqtJ-ceg/s1600/senchalogo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkOe8StLM6nqnRbaxbfJ-stskw2UCkZFn-5ZGJVscOXoen83c4SjRzwUK7ifjgClnsO8WZ99swUIaZLvzlhnV2rPy22hJSoSm9ho2o9ZHsQ5k5suFnwY3pDCx5IAw1xy_Rw6XAqtJ-ceg/s1600/senchalogo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Я уже около двух лет, как активно использую в своей работе библиотеку &lt;b&gt;ExtJS&lt;/b&gt; и месяц назад (как раз 15 июня) зашёл на &lt;a href=&quot;http://sencha.com/&quot;&gt;extjs.com&lt;/a&gt;, чтобы скачать свежую версию, и бнаружил... Собственно говоря, я обнаружил новый продукт - &lt;b&gt;Sencha&lt;/b&gt;, объединивший в себе &lt;b&gt;ExtJS&lt;/b&gt;, &lt;b&gt;jQTouch&lt;/b&gt; и &lt;b&gt;Raphaël&lt;/b&gt;.&lt;br /&gt;
И вот, спустя почти месяц, мне-таки подвернулся проект, который заключается в разработке web приложения под iPhone, и я, конечно же, сразу же взялся изучать &lt;b&gt;Sencha Touch&lt;/b&gt; (заказчику же сообщил, что имею опыт разработки на этой библиотеке). Как оказалось, после &lt;b&gt;ExtJS&lt;/b&gt; новенький &lt;b&gt;Sencha Touch&lt;/b&gt; учится за полдня, и никаких проблем не составило выдавать желаемое (наличие опыта разработки &lt;b&gt;Sencha Touch&lt;/b&gt;) за действительное. Через 4 дня работы над этим проектом я приобрёл себе &lt;b&gt;iPhone&lt;/b&gt; (да, я начал с эмулятора) и понеслось...&lt;br /&gt;
&lt;br /&gt;
В общем, как вы, наверное, догадались из вступления, речь в блоге пойдёт о моём опыте разработки мобильных приложений (&lt;b&gt;web apps&lt;/b&gt;) с использованием библиотеки &lt;b&gt;Sencha Touch&lt;/b&gt; и вкусностей свежеиспечённых &lt;b&gt;HTML5&lt;/b&gt; и &lt;b&gt;CSS3&lt;/b&gt;. Надеюсь, информация окажется полезной!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mobile-webapps.blogspot.com/feeds/4470753028391671997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://mobile-webapps.blogspot.com/2010/07/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4470753028391671997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1560720494131975411/posts/default/4470753028391671997'/><link rel='alternate' type='text/html' href='http://mobile-webapps.blogspot.com/2010/07/blog-post.html' title='Вступление'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/07465866216376125749</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkOe8StLM6nqnRbaxbfJ-stskw2UCkZFn-5ZGJVscOXoen83c4SjRzwUK7ifjgClnsO8WZ99swUIaZLvzlhnV2rPy22hJSoSm9ho2o9ZHsQ5k5suFnwY3pDCx5IAw1xy_Rw6XAqtJ-ceg/s72-c/senchalogo.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>