Статьи

Подкаст SitePoint № 95: Необнаружимые с Полом Айришем

Эпизод 95 подкаста SitePoint теперь доступен!

Слушай в своем браузере

Сыграйте этот эпизод прямо в вашем браузере! Просто нажмите оранжевую кнопку «Play» ниже:

Скачать этот эпизод

Вы также можете скачать этот эпизод в виде отдельного файла MP3. Вот ссылка:

Стенограмма интервью

Кевин: 17 января 2011 года. На этой неделе состоялся мегатехнический разговор об обнаружении функций в мире, не отвечающем стандартам.

И я хотел бы поприветствовать Пола Айриша на подкасте сегодня. Привет, Пол.

Пол: Привет, Кевин, как дела?

Кевин: Спасибо за участие. Пол, ну, Пол занятый парень. На его веб-сайте написано, что он является передовым разработчиком, но он также работает в команде по связям с разработчиками Google Chrome, я полагаю, что за отношениями с разработчиками стоит целая команда, не только вы, не так ли?

Пол: Да, у нас есть около десяти человек по всему миру, которые разговаривают с разработчиками о том, как сделать действительно классные вещи в Интернете.

Кевин: Да, и когда вы не заняты тем, что взламываете jQuery, вы являетесь членом команды jQuery, и если этого недостаточно, вы также работаете над этой удивительной библиотекой, я думаю, вы могли бы назвать ее библиотека под названием Modernizr, которая и сегодня приводит нас к вам.

Пол: Да, Modernizr — это, по сути, библиотека для определения характеристик, и она в основном имеет лучшие, самые надежные средства обнаружения для многих общих вещей, если вы хотите знать, поддерживает ли текущий браузер, в котором вы находитесь, преобразования CSS или border-radius или WebGL и Modernizr собрали лучшие способы в основном обнаруживать эти вещи, а затем предоставляют вам несколько хороших хуков CSS и хуков JavaScript, так что вы можете адаптировать свою страницу так, чтобы она очень реагировала на уникальные среды, в которых она отображается.

Кевин: Итак, мы всегда говорили людям, что правильный способ справиться с ситуацией, если вам нужно постепенное ухудшение или даже прогрессивное улучшение, если вам нужно обнаруживать функции, прежде чем использовать их на своей веб-странице, правильный способ сделать это: чтобы использовать какую-то хитрость кода или, в идеале, в случае функций JavaScript, вы можете прямо спросить JavaScript, существует ли эта вещь, прежде чем ее использовать, и мы просим людей сделать это, а не говорить: «Определите конкретную версию браузера I» м, а затем сделать вывод о функциях, которые это имеет. Одно дело сказать людям, что, но я предполагаю, что мы обнаружили за эти годы то, что способ обнаружения этих функций варьируется от функции к функции, и почти вдвое больше времени уходит на то, чтобы научиться обнаруживать эти вещи, так как делает их использовать.

Пол: Верно. Это интересно, например, геолокация действительно хороша, когда все, что вам нужно сделать, это сказать, if (navigator.geolocation) Но затем вы смотрите на что-то вроде 3D CSS-преобразований. Интересно, что самый базовый метод обнаружения CSS-свойства — видеть, существует ли подобный element.style.webkitTransform В случае 3D-преобразований оно существует, но даже в Chrome, который уже некоторое время не поддерживает 3D-преобразования, и поэтому вам нужно сделать более надежную технику, где вы фактически проверяете, будет ли конкретный медиа-запрос успешным или нет и, таким образом, есть все эти маленькие ошибки, когда дело доходит до обнаружения функций, вещи могут действовать по-разному в приватном просмотре или в режиме инкогнито, и поэтому такие вещи попадают в исходный код Modernizr, который интересно читать, если вы в вещи.

Кевин: Что мне нравится в Modernizr, так это то, как все эти трюки сводятся к чему-то действительно полезному. Что вы получаете; Вы помещаете Modernizr на страницу, она запускается, на чем вы держите шляпу, что она производит для вас?

Пол: Это дает вам в основном два отдельных API. Самый полезный и первый, на который люди обычно берутся, это то, что он бросает кучу классов в элемент htmlhtmlborder-radiusno-webglno-flexbox И так с этим в ваших стилях вы можете, скажем, с box-shadowbox-shadowbox-shadow Также в то же время он предоставляет глобальный объект JavaScript, называемый modernizrmodernizr.videomodernizr.video.ogg

Кевин: Вау. Таким образом, в основном вы получаете эти две вещи, вы получаете атрибут classhtml в идеале вы должны использовать медиа-запрос CSS, который говорит, что если браузер поддерживает эту функцию, используйте всю эту кучу правил CSS на странице, но, поскольку мы не можем сделать это с медиа-запросами, следующая лучшая вещь — это вы можно просто сделать в начале всех этих правил html. функция, которую вы ищете, или функция, которой нет, и вы можете условно повесить целую кучу правил. Таким образом, вы можете отключить CSS от этих обнаружений функций, а затем другой API, который, как мне кажется, предназначен для зависания поведения JavaScript от этих обнаружений функций.

Пол: Верно. Таким образом, способ, которым я использовал это некоторое время, заключается в том, чтобы в основном использовать поддержку «polyfill» в старых браузерах, если их нет. Итак, «polyfill» — это слово, которое на самом деле придумал Реми Шарп.

Кевин: Да, я не слышал этого слова.

Пол: Это по сути подкладка.

Кевин: Ну, полифилл — это продукт, который я помню, когда мой папа рос в своей мастерской; ты втиснул его в трещины в стене, насколько я помню.

Пол: Да, именно! И как в IE 6, 7 и 8 много трещин, так что мы будем заполнять эти трещины этими полифиллами. Так, например, мне действительно нравится input type=range Я просто набираю input type=range И поэтому на самом деле я могу использовать библиотеку JavaScript для создания слайдера на основе JavaScript, который действует так же, как слайдер, который я получаю в новых браузерах. Но в действительности я предпочел бы не загружать этот JavaScript и эти стили для всех браузеров, я не хочу загружать их для браузеров, которые их уже поддерживают. Итак, что я могу сделать, это просто сказать, что если поддержки нет, я загружу эти файлы, и они активируются, и они позаботятся о том, чтобы у меня теперь были ползунки и чтобы у этих ползунков был тот же API, что и у нативных. ползунки, которые у меня есть. И самое интересное в том, что все эти полифиллы, они как код со смертным приговором, потому что они умрут, в том-то и дело, что они просто ждут, пока все браузеры не получат эти функции.

Кевин: Да.

Пол: Но дело в том, что мы должны загружать их, только если они нам нужны, и поэтому с Modernizr у нас есть этот контроль.

Кевин: Точно. Итак, у всех нас есть эти веб-сайты, которые мы создали пять лет назад, и если вы посмотрите на код, который вы можете использовать, то весь этот подход заключается в том, что тогда мне нужно было поддерживать Internet Explorer 5, и в результате этот веб-сайт стал совершенно неэффективным и трудно поддерживать сегодня из-за браузера, который никто больше не использует. Приятно иметь возможность связывать те куски кода, которые, как вы знаете, скоро уйдут, а не позже, так что их действительно легко извлечь.

Пол: Да, именно.

Кевин: Я полагаю, что самое большое преимущество такой библиотеки, как Modernizr, заключается в том, что она делает его более удобным, чем когда-либо, чтобы начать с самого начала, начать с лучших браузеров сегодня, создать сайт, который работает в них, а затем постепенно просматривать список. все больше и больше ненавистных браузеров и добавления поддержки для них, как вы идете.

Пол: Да, я полностью согласен. Энди Кларк, который пишет @malarkey в Твиттере, он очень хорошо проповедовал такую ​​философию дизайна и разработки, она как бы объединила все это в хороший пакет в своей недавней книге Hardboiled Web Design , но это очень подход будут выглядеть по-разному в разных браузерах, и это нормально, но мы хотим разрабатывать для наилучшего возможного опыта, потому что все браузеры догоняют, где находится топ-браузер, и мы хотим, чтобы впечатления действительно блестели и действительно привлекали к этому уровень. И мы можем сделать наши проекты адаптивными к окружающей среде, и он действительно заинтересован в таком подходе к обнаружению функций и умелому использованию функций, когда они есть, и к рассмотрению случаев, когда они не ответственны.

Кевин: Что вы думаете? Я предполагаю, что общий аргумент заключается в том, что это просто приводит к гораздо большей работе, а не к созданию одного веб-сайта, в итоге вы создаете два или три.

Пол: Это не для меня. (смех) Это делает намного больше работы, когда — это намного больше работы, когда все ожидают, что все будет выглядеть одинаково, как будто я потратил много времени, пытаясь добиться того, чтобы выравнивание label

Кевин: Ах да.

Пол: Это такая боль, и, таким образом, мы фактически закончили тем, что добавили некоторый код в проект HTML5 Boilerplate, над которым я активно работаю, чтобы решить эту проблему, и поэтому эту проблему можно было бы уложить в постель, но я думаю, пытаясь получить закругленные углы и функционирование теней в IE 6, 7 и 8 — это боль, и это похоже на продажу кому-то идеи о том, что все может выглядеть по-разному, но приемлемо везде, что в итоге экономит вам гораздо больше времени как разработчику, чем фактически пытается это сделать выглядят точно так же.

Кевин: Да, я согласен с тобой. Мы говорили о HTML5 Boilerplate на самом деле в этом подкасте в эпизоде ​​№ 75, но да, я думаю, я согласен с вами, что, как только вы — это на бумаге аргумент, но на самом деле я думаю, что взломать убийцу здесь, чтобы позволить несколько эти вещи идут. Если 20% вашей аудитории используют IE 6, и это было бы довольно экстремально в наши дни, я полагаю, вы, надеюсь, ниже, чем сейчас. Но если 20% вашей аудитории — IE 6, вы действительно хотите потратить основную часть времени на сборку кода для этого браузера или вы хотите, чтобы он выглядел великолепно в хороших браузерах и приемлемо для старых браузеров? Я думаю, что вы можете сэкономить время таким образом.

Итак, со всеми нами на одной странице есть еще одна страница, о которой я хотел поговорить, это «Необнаружимые» , и это то, что поставило ваше имя на моем радаре на этой неделе. Это страница, которую вы начали и написали большую часть на Modernizr Wiki. Это на Modernizr, размещенном на сервисе обмена кодами GitHub, и к нему прикреплена вики, и одна из трех страниц в этой вики — «Необнаружимые». Итак, я полагаю, что когда вы начинаете писать библиотеку для обнаружения функций, вы становитесь более осведомленными о функциях, которые вы не можете обнаружить.

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

Кевин: Да, как мы часто это делаем, мы скрываем все поля select

Пол: Или что да.

Кевин: Это супер некрасиво.

Пол: Это ужасно. И так, как будто я думал об этом, и я как бы изучал сам элемент, и я пытался увидеть, раскрывает ли он какой-либо API, который указывает, что он был оконным, и на самом деле ничего нет, и нет никакого способа …

Кевин: Вы ищете как hasLayout

Пол: Нет никакого способа обнаружить, что этот элемент будет иметь такое поведение в этом браузере, и поэтому вы в основном останетесь с этим, если IE 6 сделает это, и поэтому вы используете как условные комментарии, так и условные комментарии — меньше форма браузера нюхает и так в меру нормально

Кевин: Да, было бы здорово, если бы вы могли просто выполнить вызов API, получить список всех «оконных элементов» на странице и что-то с ними сделать, чтобы убрать их с пути.

Пол: Верно. И поэтому я хотел начать с selectregisterProtocolHandler Это раскрыто в некоторых старых версиях WebKit, но на самом деле ничего не делает, но вы не знаете, что оно ничего не делает, потому что нет способа узнать. Да, так, на странице «Необнаружимые» у нас в основном есть список многих из этих вещей, вещей из HTML5, вещей, связанных с сетью (количество одновременных соединений, которые возможны, нет способа обнаружить это гладко или легко), и другие вещи, потому что, вы знаете, я огромный сторонник обнаружения функций. Но я не хочу, чтобы люди думали, что мы можем растворить строку пользовательского агента или полностью удалить анализатор браузера из основы, из любой библиотеки, потому что я просто хотел показать, что есть вещи, с которыми мы не могли бы работать вокруг с обнаружением особенностей, и поэтому об этих вещах нужно помнить.

Но мне также нравится это, потому что это хороший список, потому что некоторые из этих вещей могут быть обнаружены; Хорошим примером было то, что когда у нас было много людей, которые вносили свой вклад в этот документ, когда мы его выпускали, генерировали контент с использованием :before:after

Кевин: Ты помнишь в верхней части головы, что за хитрость была?

Пол: Я думаю, по сути, что это такое, поэтому, используя псевдо-селектор :beforecontent

Кевин: Точно. Поэтому, если вы сделаете стиль элемента :before

Пол: Да, это изменение.

Кевин: Вау! Да, мне это нравится (смех). Я не знаю, единственный ли я, но я разбираюсь в этом. Итак, вопрос, который у меня возникает, это список вещей, которые Modernizr просто не обнаруживает, или это список вещей, где вам приходилось обманывать в Modernizr и вставлять определение строки агента пользователя?

Пол: Modernizr не имеет никакого синтаксического анализа строки пользовательского агента, на самом деле ранее у него было несколько флагов условной компиляции, чтобы поймать движок JScript в IE, но теперь их нет. Таким образом, Modernizr — это простое обнаружение функций, здесь нет трюков с пользовательским агентом.

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

Пол: (смеется) Да, наверное.

Кевин: (смеется) Итак, в чем логическое обоснование, хотите ли вы сохранить эту штуку усердно, чтобы, надеюсь, производители браузеров заметили это — и игнорируют ради этого разговора тот факт, что вы работаете на поставщика браузеров.

Пол: (смеется) Да, давайте проигнорируем это! Я приведу вам хороший пример, который очень близок моему сердцу: перетаскивание файлов — это очень мило. Как и в Gmail, вы можете перетащить файл со своего рабочего стола в Gmail, и вдруг он обнаруживает, что фактически перетаскивает его, вы можете просто перетащить его прямо в свое сообщение и добавить его в качестве вложения, чтобы вам не нужно проходить через этот большой, долгий поиск в диалоге Finder, чтобы найти этот файл, вы просто перетаскиваете его, это здорово. Функция огромна, и я думаю, что люди будут адаптировать свои приложения, чтобы в основном признать, о, этот браузер может поддерживать это. Проблема заключается в том, что для его обнаружения вам в основном нужно исследовать объект dataTransferdataTransfer

Кевин: Вау, хорошо.

Пол: Но Gecko предоставляет глобальный конструктор dataTransferdataTransfer Но поскольку этот объект не доступен глобально в WebKit, как в Safari и Chrome, вы не можете.

Кевин: Сначала нужно перетащить событие.

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

Кевин: Да, вы не можете проверить это, когда Modernizr запускается в начале страницы.

Пол: Точно, да, именно. Так что это хороший случай, когда я думаю, что производители браузеров могут на самом деле ответить на этот список и сказать: «Поскольку все поставщики браузеров абсолютно поддерживают обнаружение функций, теоретически они согласны, что все должны делать это вместо анализа UA, и поэтому я думаю, Здесь есть несколько случаев, когда мы можем заставить производителей браузеров делать правильные вещи. Я упоминал ранее о registerProtocolHandler Так что они реагируют, и я думаю, что есть несколько случаев, когда они могли бы быть лучше.

Кевин: Итак, давайте поговорим о том, что делать правильные вещи означает, потому что я думаю, что это изменилось за эти годы, и особенно за последние несколько лет мы вроде как … Мы перешли к тому, что я бы назвал своего рода Эпоха пост-веб-стандартов, когда мы когда-то думали о веб-платформах и функциях этих веб-платформ в терминах спецификаций W3C. Этот браузер поддерживает CSS1; этот браузер поддерживает CSS2; поддерживает HTML4; он поддерживает XHTML1. Вы объединили все эти функции вместе, и вы сказали, что браузер поддерживает все эти или ни одну из них, и я собираюсь строить свои веб-страницы в том же духе. И темпы разработки браузеров, конкуренция между различными поставщиками браузеров в последние несколько лет нарастала до темпов, которых мы не видели со времен веб-пузыря в 2000 году, когда на него шли браузеры версии 4. И в этой среде просто не представляется практичным объединять эти функции вместе, каждое отдельное свойство CSS и в некоторых случаях каждое отдельное значение, которое вы можете назначить этому свойству CSS, может иметь полную поддержку, не иметь поддержки или поддержки в стадии разработки. в любом браузере. И я думаю, что веб-разработчикам нужно мириться с этим, но это означает, что я считаю, что поставщики веб-браузеров должны нести ответственность за то, как они внедряют новые функции в свои платформы. И многие из предметов в этом списке необнаруживаемых вещей показались мне примерами, когда они потерпели неудачу на этом фронте.

Пол: Это хороший способ посмотреть на это. Я согласен, хотя я думаю, что мы не можем, вы знаете, многие люди когда-то говорили: «Ну, какой браузер поддерживает HTML5? Мы должны подождать, пока браузеры не поддержат HTML5 ».

Кевин: Да.

Пол: Мы не говорим об одном, мы говорим о том, какие функции в HTML5 мы хотим использовать и когда они доступны, поэтому вам определенно придется разбить их. Даже с помощью CSS box-shadowbox-shadow

Кевин: Да, особенности, подфункции и аспекты функций.

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

Кевин: Точно. Таким образом, кажется, что производители браузеров по обоюдному согласию согласились с тем, что правильный способ поддержки нового свойства CSS — это поставить точку в начале имени временного свойства, и это как разрабатываемые функции, свойства предварительного просмотра, и каждый раз, когда Internet Explorer делает своеобразную хитрую реализацию чего-либо и забывает реализовать это как временное свойство, я думаю, что люди справедливо расстраиваются, и все больше и больше я думаю, что поставщики браузеров должны делать правильные вещи здесь. С помощью функций JavaScript в большинстве случаев довольно просто обнаружить наличие свойства или метода в API, но некоторые элементы в этом списке необнаружимых объектов — это то, что, как вы знаете, браузер скажет вам, что они существуют, но если вы попытаетесь используйте их, они еще ничего не делают.

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

Кевин: Да, вам придется подписаться на список рассылки, если вы используете эту функцию (смех).

Пол: В общем, мы не слишком много видели такого, где поведение довольно сильно изменилось, но я могу вам сказать, просто думаю, что на прошлой неделе WebKit изменил то, как работают градиенты.

Кевин: Да, это было главное, CSS-градиенты.

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

Кевин: Да, другой, который приходит на ум, я думаю, что это были закругленные углы, какое-то время у каждого браузера было свое свойство border-radius

Пол: Да, да.

Кевин: Итак, почему мы не видели подобных вещей с JavaScript API? Почему мы не видим методы с префиксами поставщиков?

Пол: Хм, это хороший вопрос.

Кевин: Потому что похоже на API веб-сокетов HTML5, на который я не пристально посмотрел, но я видел, как многие люди говорили о том, что он просто не готов к прайм-тайм, и браузеры, которые его реализуют, не реализованы. недостаточно хорош или окончательно или достаточно стабилен для регулярного использования.

Пол: Это для веб-сокетов в частности?

Кевин: Да, да, да.

Пол: Да, веб-сокеты интересны, когда Firefox и Opera удалили их поддержку, а Chrome не удалил их поддержку, но у нас есть написанный код, и мы готовы выпустить патч, если есть эксплойт, но у нас нет «т. Но дело в том, что сам API того, как работают веб-сокеты, API JavaScript полностью реализован, он полностью стабилен, это нормально, на самом деле проблема, которая вынудила Firefox и Opera удалить его, находится на уровне протокола и сети и так далее. это своего рода отдельный. Но есть случаи, когда JavaScript API сохраняются с префиксом, и хорошим примером является Indexed Database, поэтому асинхронная реализация Indexed Database уже находится в Firefox и Chrome, а синхронная реализация в Firefox в бета-версии 9, которая должна быть выпущена, предполагается сегодня, так что кто знает, но если вы хотите получить доступ к Index DB, вы не можете просто сказать window.indexedDBwindow.webkitIndexedDBwindow.mozIndexedDB И это похоже на то время, когда вещи остаются с префиксами, это время для всех, чтобы что-то исследовать, посмотреть, нравится ли вам это, и предложить обратную связь со списком стандартов, чтобы увидеть, может быть, мы должны изменить это, потому что на самом деле это не так. удовлетворить мои потребности как пользователь. И поэтому, пока все не будут чувствовать себя комфортно, что то, что поставляется в этих экспериментальных реализациях, будет оставаться за флагами этих поставщиков.

Кевин: Итак, есть правильный способ поддержки — для поставщиков браузеров — обнаружения функций в CSS, для них есть правильный способ сделать это в JavaScript, но в этом списке Undetectables есть несколько пунктов, на которые я смотрел и я пошел вау Это поразило меня как нечто, чего я никогда не ожидал бы обнаружить, например, поддержку мягкого дефиса; Я как бы посмотрел на это и пошел вау!

Пол: Я действительно думаю, что вы можете обнаружить поддержку мягкого дефиса.

Кевин: Да, вы думаете, есть тестовый пример, который вы могли бы создать аналогично измерению размеров коробки?

Пол: Похоже на последний. Да, точно.

Кевин: Но в целом, если вы, как поставщик браузера, внедряете эту функцию с нуля, есть ли место для стандартного API для поддержки рекламы для таких функций, как эта? Как будто это HTML-сущность, это действительно невидимый символ, который влияет на поток текста.

Пол: Верно. Я думаю, вы знаете, за исключением IE 6, хотя 8, глобальный конструктор создается так, как будто он будет называться HTMLElement, а затем есть HTMLPElement и HTMLBrElement, и они представляются как глобальный объект JavaScript, и поэтому вы знаете, что на самом деле быть одним для sh- хорошо,

&застенчивый;

это сущность.

Кевин: Да, на самом деле это персонаж Юникода; это конкретный код, который обрабатывается по-разному.

Пол: Да, нет API. Но интересно то, что на самом деле браузеры давно думали об этом, и они были бы не очень хороши, если бы мы создали стандартизированный способ запроса вашего браузера, если есть какая-то поддержка, и поэтому они представили метод hasFeature И поэтому я думаю, что это navigatorwindow.navigator.hasFeaturehasFeature('SVG')

Кевин: (смеется)

Пол: Но то, что мы узнали, я говорил с Дмитрием Барановским из Raphaël, потому что чаще всего вы видите, что hasFeaturehasFeature они могли бы сказать, что они поддерживают border-radius

Кевин: Таким образом, Modernizr, даже если он может спросить браузер, не собирается. Было бы лучше сказать «Докажи это. Представь это.

Пол: Да, именно. Да, мы хотим увидеть доказательства. (Смеется)

Кевин: (смеется) Круто. Ну, это довольно прачечная; Я надеюсь, что он начинает становиться короче быстрее, чем продолжает расти в самом ближайшем будущем.

Пол: Я тоже, я тоже.

Кевин: Спасибо, что соединил это. Вы такой же подкастер; Я хотел бы дать вам шанс подключить ваш подкаст.

Пол: Конечно, я собираюсь вместе с некоторыми друзьями, такими как Алек Секстон, Ребекка Мерфи и Адам Сонтаг, и мы делаем подкаст под названием YayQuery . Он начался как разговор о jQuery, он распространяется на все внешние разработки, JavaScript, архитектуру приложений, лучшие практики JavaScript. Мы не выпустили эпизод немного, но мы надеемся вернуться к этому, но это видео-подкаст, и у нас есть хорошее время для его просмотра, так что вы обязательно должны проверить его, проверить архивы, там много действительно качественной информации для разработчиков JavaScript.

Кевин: Отлично! Вы можете найти Пола Айриша на paulirish.com или подписаться на него в Twitter @paul_irish . Спасибо, что сегодня с нами, Пол.

Пол: Большое спасибо, Кевин, это было весело.

Кевин: И спасибо за прослушивание подкаста SitePoint. Если у вас есть какие-либо мысли или вопросы по поводу сегодняшнего интервью, пожалуйста, свяжитесь с нами. Вы можете найти SitePoint в Твиттере @sitepointdotcom , и вы можете найти меня в Твиттере @sentience . Посетите sitepoint.com/podcast, чтобы оставить комментарий к этому шоу и подписаться на получение каждого шоу автоматически.

Этот эпизод подкаста SitePoint создан Карном Броудом, а я — Кевином Янком. А сейчас до свидания!

Тема музыки Майка Меллы .

Спасибо за прослушивание! Не стесняйтесь сообщить нам, как у нас дела, или продолжить обсуждение, используя поле комментариев ниже.