Как стать автором
Обновить
5
0
Стас Курилов @qtuz

Веб-разработчик

Отправить сообщение

Трансформируем рабочее место в лежачее за 200$

Время на прочтение3 мин
Количество просмотров98K
По мнению австралийского нейрофизиолога Дарена Липники, люди лучше решают творческие задачи в лежачем положении. Это связано с норадреналином, не дающем нам расслабиться пока тело находится в вертикальном положении.



Мысль о работе с компьютером лёжа впервые пришла ко мне ещё во времена студенчества, когда после сидения на дешёвом офисном стульчике очень затекала поясница. Беглый поиск в интернете показал, что офисная мода об этом молчит, а недорогие самодельные решения существуют, но выглядело это всё так сомнительно и неэстетично, что отбивало всякую охоту повторять подвиги умельцев.
Всего голосов 134: ↑130 и ↓4+126
Комментарии169

Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы

Время на прочтение9 мин
Количество просмотров211K
Недавно мне довелось побывать на встрече участников проекта FreeCodeCamp в Сан-Франциско. Если кто не знает, Free Code Camp — это сообщество, нацеленное на изучение JavaScript и веб-программирования. Там один человек, который готовился к собеседованиям на позицию фронтенд-разработчика, попросил меня подсказать, какие вопросы по JavaScript стоит проработать. Я немного погуглил, но не смог найти подходящего списка вопросов, на который я бы мог дать ссылку и сказать: «Разбери эти вопросы и работа твоя». Некоторые списки были близки к тому, что мне хотелось найти, некоторые выглядели очень уж простыми, но все они были либо неполными, либо содержали вопросы, которые вряд ли кто станет задавать на реальном собеседовании.

image
Читать дальше →
Всего голосов 58: ↑41 и ↓17+24
Комментарии118

Всё, что вы должны знать о прототипах, замыканиях и производительности

Время на прочтение9 мин
Количество просмотров50K

Не всё так просто


На первый взгляд, JavaScript может показаться достаточно простым языком. Возможно, это из-за достаточно гибкого синтаксиса. Или из-за схожести с другими известными языками, например, с Java. Ну или из-за достаточно малого количества типов данных, по сравнению с Java, Ruby, или .NET.

Но в действительности, синтаксис JavaScript гораздо менее прост и очевиден чем может поначалу показаться. Некоторые наиболее характерные черты JavaScript до сих пор неправильно воспринимаются и до конца не поняты, особенно среди опытных разработчиков. Одна из таких черт — производительность при получении данных (свойств и переменных) и возникающие при этом проблемы с производительностью.

В JavaScript поиск данных зависит от двух вещей: прототипного наследования и цепочек областей видимости. Для разработчика понимание этих двух механизмов совершенно необходимо, ибо ведет к улучшению структуры, а, зачастую, ещё и производительности кода.
Читать дальше →
Всего голосов 72: ↑69 и ↓3+66
Комментарии36

Пишем плагин под webpack

Время на прочтение8 мин
Количество просмотров20K
О webpack уже писали на хабре, рассказывали на moscowjs и есть несколько статей на других ресурсах, которые описывают общие возможности webpack’a, его достоинства и недостатки.

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

image
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии3

Размышления о стандартной библиотеке JavaScript. Core.js

Время на прочтение64 мин
Количество просмотров103K
Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
— С просторов интернета

К чему это я? Занятная штука — JavaScript. Основа современного web и на фронтэнде альтернатив как таковых не имеет.

JavaScript это, в том числе, и стандартная библиотека, о которой здесь и пойдёт речь. Под стандартной библиотекой я подразумеваю модули, конструкторы, методы, что должны присутствовать на любой платформе, будь то браузер или сервер, без лишних действий со стороны программиста, не включая API, специфичный для платформы. Даже если вы пишите не на JavaScript, а на языке в него компилируемом, скорее всего, вам придется иметь дело с его стандартной библиотекой.

Ванильная стандартная библиотека JavaScript, в целом, неплоха. Это не только стандартная библиотека по спецификации языка ECMA-262 актуальных версий — от 3 до черновика 6. Часть API вынесена в отдельные спецификации, например, API интернационализации ECMA-402. Многие возможности, без которых сложно представить JavaScript, например, setTimeout, относятся к web-стандартам. Консоль не стандартизована вовсе — приходится полагаться на стандарт де-факто.

Вот только не такая уж она и стандартная — везде разная. Есть старые IE, в которых из коробки мы получаем стандартную библиотеку ES3 90-бородатого года даже без Array#forEach, Function#bind, Object.create и консоли, и есть, например, Node.js, на которой многие уже вовсю используют возможности грядущего ES6.

Хочется иметь универсальную, действительно стандартную библиотеку, как на сервере, так и в любом браузере, максимально соответствующую современным стандартам, а также реализующую необходимый функционал, что (пока?) не стандартизован. Статья посвящена библиотеке core.js — реализация моих соображений по поводу стандартной библиотеки JavaScript. Кроме того, эта статья еще и шпаргалка по современной стандартизованной стандартной библиотеке JavaScript и заметки о её перспективах.

Содержание, или что получим на выходе:


Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии40

Искусство командной строки

Время на прочтение15 мин
Количество просмотров249K


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!
Всего голосов 127: ↑122 и ↓5+117
Комментарии143

Реактивный манифест

Время на прочтение12 мин
Количество просмотров55K
В последние годы требования к приложениям значительно изменились. Десятки серверов, время отклика в несколько секунд, оффлайновое обслуживание, которое могло длиться часами, гигабайты данных — такими были большие приложения буквально несколько лет назад. Сегодня же приложения работают абсолютно на всём, начиная с простых мобильников и заканчивая кластерами из тысячи процессоров. Пользователи ожидают миллисекундного времени отклика и стопроцентного аптайма, в то время как данные выросли до петабайтов.

Первоначально эту нишу занимали крупные инновационные интернет-компании типа Google или Twitter, однако такие требования к приложениям начали всплывать во многих областях индустрии. Финансовые и телекоммуникационные компании первыми начали внедрять новые практики, чтобы удовлетворить новым требованиям, а теперь подтягиваются и остальные.

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

Однако прогресс не стоит на месте. Архитектура приложений эволюционировала в соответствии с изменившимися требованиями. Приложения, разработанные на основе этой архитектуры, мы называем Реактивными Приложениями. Такая архитектура позволяет программистам создавать событийно-ориентированные, масштабируемые, отказоустойчивые и отзывчивые приложения — приложения, работающие в реальном времени и обеспечивающие хорошее время реакции, основанные на масштабируемом и отказоустойчивом стеке и которые легко развернуть на многоядерных и облачных архитектурах. Эти особенности критически важны для реактивности.

Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии15

Функциональное программирование для всех

Время на прочтение33 мин
Количество просмотров351K

Доброго времени суток. Это статья — перевод заинтересовавшего меня поста в блоге аспиранта Университета штата Нью-Йорк в Стоуни-Брук. Статья в доступной форме описывает основные концепции функционального программирования, их преимущества и недостатки. Думаю она будет полезна широкому кругу читателей, которые сомневаются, нужно ли им углубляться в мир функционального программирования или нет. Пожелания, предложения и замечания по переводу и терминологии принимаются по личной почте.

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

UPD: альтернативный вариант перевода вы можете найти на rsdn (спасибо flamingo за ссылку).
Читать дальше →
Всего голосов 188: ↑181 и ↓7+174
Комментарии151

Джон Резиг об интернационализации JavaScript-приложений

Время на прочтение6 мин
Количество просмотров13K
Недавно мне пришлось заниматься интернационализацией веб-приложения на Node.js+Express, над которым я сейчас работаю, и, как мне кажется, получилось довольно неплохо (иностранные пользователи очень довольны, и я вижу заметный приток трафика из неанглоязычных стран). Стратегия интернационализации, которую я опишу, не слишком сильно завязана на Node и может подойти любому веб-приложению.

Мне часто приходилось пользоваться многоязычными сайтами или заходить на англоязычные сайты из разных стран мира, так что я хорошо представлял, каким требованиям должна удовлетворять интернационализация:
Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии19

Введение в всплывающие события

Время на прочтение7 мин
Количество просмотров17K
Несмотря на то, что в конце концов я полностью использовал CSS для этого проекта, начиналось все с использования JavaScript и классов.

Однако у меня возникла проблема. Я хотел использовать так называемые Всплывающие События, но также я хотел минимизировать зависимости, которые мне пришлось бы внедрять. Я не хотел подключать библиотеки jQuery для «этого маленького теста», толькло для того, чтобы использовать всплывающие события.

Давайте посмотрим поближе, что такое всплывающие события, как они работают, и рассмотрим несколько путей для их реализации.
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии5

Список YouTube-каналов для обучения веб-разработке

Время на прочтение2 мин
Количество просмотров217K
image


Привет, хабражители!

Представляю вам список YouTube-каналов для обучения веб-разработке. Список доступен на гитхабе, там он будет пополняться и редактироваться. В планах — создание отдельной странички для фильтрации каналов по тегам и рубрикам.

Также хочу попросить вас о небольшой услуге: если вы знаете канал, не вошедший в список — опубликуйте ссылку на него в комментариях или отправьте pull request. Сообщество будет благодарно вам.

Под катом — текущая версия списка.
Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии16

Построение надежных веб-приложений на React: Часть 1, браузерные прототипы

Время на прочтение8 мин
Количество просмотров44K
Перевод статьи «Building robust web apps with React: Part 1, in-browser prototypes», Matt Hinchliffe

От переводчика: это первая статья из цикла «Building robust web apps with React».
Переводы:


Когда я смотрю на то, как устроены браузеры и протоколы, на которых работает веб, мне становится как-то тревожно. Есть столько всего, что может и, обычно, идет не так, что становится удивительно, как хоть что-то из того, что мы пишем, вообще работает. Надежность «вопреки всему» происходит от отказоустойчивости и обратной совместимости, которые укоренились в ключевые части веб-стека. Браузер всегда сделает все возможное, чтобы отобразить, что-то полезное, будь-то парсинг плохо написанного документа, в котором невозможно получить зависимости, или, который на 10 лет устарел.

image
404PageFound содержит до сих пор работающие сайты, созданные еще в 1993 году.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии8

Выразительный JavaScript: Проект: Веб-сайт по обмену опытом

Время на прочтение22 мин
Количество просмотров37K

Содержание




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

Такие встречи – отличный способ расширить свой кругозор, узнать о новинках области, или просто пообщаться с людьми со схожими интересами. Во многих городах есть встречи любителей JavaScript. Обычно их посещение бесплатное, и я нашёл те, которые посещал, дружелюбными и гостеприимными.


Встречи моноциклистов

В последней главе-проекте мы устроим веб-сайт по обслуживанию выступлений, которые делаются на таких встречах. Представьте себе группу людей, которые регулярно встречаются в офисе одного из участников, чтобы поговорить о моноциклах. Проблема в том, что когда предыдущий организатор встреч переехал в другой город, никто не занял его место. Нам нужна система, которая позволит участникам предлагать и обсуждать темы друг с другом, без участия организатора.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии9

Разбираемся с Flux, реактивной архитектурой от facebook

Время на прочтение7 мин
Количество просмотров115K


Введение


Добро пожаловать в третью часть серии статей «Изучаем React». Сегодня мы будем изучать, как устроена архитектура Facebook Flux, и как использовать ее в своих проектах.
Ррреактивно!
Всего голосов 25: ↑25 и ↓0+25
Комментарии16

Повышение производительности работы в Mac OS X, в том числе путем уменьшения использования мыши

Время на прочтение9 мин
Количество просмотров83K
Мне кажется целесообразным поделиться личным опытом роста производительности работы в Mac OS Х (на примере 10.7), в частности, путем максимального отказа от использования мыши (через что придем и к многим другим способам).

С чем связана актуальность проблемы?
1. Эргономически прицелиться и попасть мышью в мелкий объект всегда хуже для времени, мелкой моторики и зрения, чем использовать операции, не требующие идентификации мелких объектов и «прицеливания» в них. Для наиболее массового примера достаточно сравнить количество людей в Windows, которые переключают клавиатуры комбинацией клавиш или мышкой в соответствующем меню на рабочем столе (которое вроде тоже бы в пределах доступности).

2. Для мобильной работы большая разница – брать с собой мышь или нет. Если в Windows многим недостаточно внутренних тачпадов для полноценной работы, то при взгляде на макбук с подключенной мышью возникает когнитивный диссонанс – т.к. часть вещей, ради которых человек взял ее с собой в дорогу, объективно имеет более эффективное альтернативное решение, если избавится от определенной парадигмы сознания.

3. Меньшее использование мыши в OS X для переходящих с Windows позволяет предотвратить ряд неудобств и ошибок – в частности, «эффект красного крестика» и «синдром единственного рабочего стола», а также лучше понять отличия между окнами и процессами.

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

Итак.
Читать дальше →
Всего голосов 44: ↑34 и ↓10+24
Комментарии61

Модульный подход в JavaScript

Время на прочтение8 мин
Количество просмотров49K
Модульный подход довольно распространённая техника программирования в JavaScript. Обычно его понимают довольно хорошо, но продвинутые техники описаны недостаточно. В этой статье я рассмотрю основы и затрону некоторые сложные приёмы, включая один, по моему мнению, оригинальный.

Основы



Мы начнём с несложного обзора модульного подхода, хорошо известного с тех пор, как Эрик Миралья (Eric Miraglia) из YUI впервые об этом написал. Если вам уже знаком модульный подход, переходите сразу к «Продвинутым техникам».

Анонимные замыкания


Читать дальше →
Всего голосов 133: ↑121 и ↓12+109
Комментарии32

Нужны ли в JavaScript классы?

Время на прочтение6 мин
Количество просмотров104K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →
Всего голосов 164: ↑140 и ↓24+116
Комментарии60

Юнит-тестирование и CodeCoverage для Javascript-кода

Время на прочтение4 мин
Количество просмотров8K
В этой заметке расскажу о своем опыте юнит-тестирования JS-кода, опыте использования среды выполнения тестов js-test-driver, ее возможности code coverage и скручивании ежа с ужом, а именно данных о code coverage от js-test-driver и генератора отчетов о покрытии PHP_CodeCоverage. Расскажу и покажу как получить вот такие отчеты о покрытии кода...
Читаем дальше...
Всего голосов 63: ↑62 и ↓1+61
Комментарии29

Git и публикация сайта

Время на прочтение4 мин
Количество просмотров114K
При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.

Я потратил несколько месяцев на борьбу с глюками Git-svn и обдумывание разных вариантов, прежде чем пришёл к этому методу организации рабочего процесса с сайтом — простому, гибкому и удобному в работе.

Основные преимущества:
  • Делая push из удалённой копии мы автоматически обновляем live-копию сайта
  • Правки файлов на сервере не будут разрушать историю коммитов
  • Простота, не нужны особые правила выполнения коммитов
  • Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
посмотреть, что там такое
Всего голосов 99: ↑88 и ↓11+77
Комментарии49

Квартальный отчет исследовательской лаборатории JetBrains

Время на прочтение2 мин
Количество просмотров19K

Позади четыре месяца зимы. Все это время мы серьезно работали, чтобы наши продукты становились совершенными (вы уже можете попробовать их в последних версиях), а сегодня настал день подведения квартальных итогов деятельности нашей исследовательской лаборатории.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии11
1

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность