Pull to refresh
149
0
Игорь Миняйло @maghamed

Lead Architect, Magento an Adobe

Объясняем современный JavaScript динозавру

Reading time 15 min
Views 264K


Если вы не изучали JavaScript с самого начала, то осваивать его современную версию сложно. Экосистема быстро растёт и меняется, так что трудно разобраться с проблемами, для решения которых придуманы разные инструменты. Я начал программировать в 1998-м, но начал понимать JavaScript только в 2014-м. Помню, как просматривал Browserify и смотрел на его слоган:


Browserify позволяет делать require («модули») в браузере, объединяя все ваши зависимости


Я не понял ни слова из предложения и стал разбираться, как это может помочь мне как разработчику.


Цель статьи — рассказать о контексте, в котором инструменты в JavaScript развивались вплоть до 2017-го. Начнём с самого начала и будем делать сайт, как это делали бы динозавры — безо всяких инструментов, на чистом HTML и JavaScript. Постепенно станем вводить разные инструменты, поочерёдно рассматривая решаемые ими проблемы. Благодаря историческому контексту вы сможете адаптироваться к постоянно меняющемуся ландшафту JavaScript и понять его.

Total votes 174: ↑171 and ↓3 +168
Comments 505

Как я использую git

Reading time 6 min
Views 90K

Intro


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


  • git add <path>
  • git commit
  • git checkout <path/branch>
  • git checkout -b <new branch>

И дополнительно:


  • git push/pull
  • git merge <branch>
  • git rebase master (а что, можно еще и на другие ветки ребейзить? О_о)

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

Читать дальше →
Total votes 117: ↑106 and ↓11 +95
Comments 195

Создаем идеальную строку поиска

Reading time 5 min
Views 27K
Строка поиска состоит из совокупности текстового поля и кнопки ввода. Казалось бы, дизайна здесь даже и не нужно — в конце концов, речь идет всего лишь о двух простых элементах. Но на сайтах с большим количеством контента строка поиска зачастую оказывается тем элементом дизайна, которым посетители пользуются чаще всего. Открывая сайт с относительно сложной архитектурой, пользователи сразу же обращаются к строке поиска, чтобы попасть в пункт назначения быстро и безболезненно. И тут неожиданно оказывается, что дизайн строки имеет большое значение.



В этот статье мы посмотрим, как можно ее усовершенствовать, чтобы пользователь тратил минимум времени на то, чтобы добраться до искомого.
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Comments 7

Асинхронный JavaScript против отложенного

Reading time 3 min
Views 69K

В моей статье «Понимание критического пути рендеринга» (перевод статьи) я писала о том, какой эффект оказывают JavaScript-файлы на Критический Путь Рендеринга(CRP).


JavaScript является блокирующим ресурсом для парсера. Это означает, что JavaScript блокирует разбор самого HTML-документа. Когда парсер доходит до тега <script> (не важно внутренний он или внешний), он останавливается, забирает файл (если он внешний) и запускает его.

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


К счастью, элемент <script> имеет два атрибута async и defer, которые дают нам возможность контролировать то, как внешние файлы загружаются и выполняются.


Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Comments 42

PHP-Дайджест № 104 – интересные новости, материалы и инструменты (1 – 12 марта 2017)

Reading time 4 min
Views 19K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.
Приятного чтения!
Читать дальше →
Total votes 68: ↑64 and ↓4 +60
Comments 33

Обзор расширения OPCache для PHP

Reading time 33 min
Views 121K


PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.

Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать дальше →
Total votes 56: ↑55 and ↓1 +54
Comments 25

Конкурентность: Асинхронность

Reading time 6 min
Views 40K

Мы всё-таки смогли дойти до третьей части и добрались до самого интересного — организации асинхронных вычислений.


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


Теперь посмотрим, как можно управлять потоком исполнения (control flow) в случае обработки асинхронных задач.


Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Comments 13

Specification By Example – BDD для прагматиков

Reading time 11 min
Views 95K

На Хабре довольно много упоминаний о BDD. К сожалению, статьи, которые я читал, так и не дали мне ответа на вопрос «а зачем мне все это нужно?» Ответ пришел с неожиданной стороны. Когда я всерьез занялся вопросом автоматизации приемочного тестирования, мне под руку попалась книга Gojko Adzic (не уверен в транскрипции, поэтому не стал переводить имя автора) Specification By Example.
Читая ее, я не уставал удивляться: каждая новая глава описывала шишки, которые я набивал на своем личном опыте, и предлагала решения аналогичные или лучшие, чем те, к которым я приходил сам методом проб и ошибок.

Эта статья – первая в цикле «BDD для прагматиков». В ней описаны ключевые элементы наиболее эффективного, на мой взгляд, процесса разработки коммерческого ПО в современных условиях. Два продолжения будут посвящены работе со SpecFlow и автоматизации приемочного тестирования.
Часть первая - живая документация
Total votes 34: ↑31 and ↓3 +28
Comments 32

Drupal: ajax_facets и history API

Reading time 5 min
Views 5.5K
Наверное, каждый веб разработчик сталкивался с необходимостью в реализации поиска на сайте. Довольно распространенное решение — Apache Solr. В мире Drupal разработки это не исключение. Для интеграции Solr с Drupal и реализации фасетного поиска существуют модули search_api, search_api_solr и facetapi. Но в большинстве случаев нам бы хотелось, чтобы результаты поиска и фасетные фильтры обновлялись без перезагрузки страницы, то есть ajax'ом. И, как обычно в мире Drupal, на d.org найдется какой-нибудь проверенный временем и пользователями модуль (а может и не проверенный, как повезет), который делает то, что нам нужно. В данном случае это ajax_facets.
Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 1

Фильтрация данных в Symfony

Reading time 2 min
Views 12K

Всем любителям Symfony известно что в ней нету компонента фильтр.
Есть замечательные и удобные Constraints и даже была попытка создать на подобии их фильтры issue на Github, но никто так и не взялся это сделать.


Когда я в очередной раз столкнулся с задачей фильтрации большого количества данных, полученных от пользователя, я понял что пора решить задачу фильтрации как то более глобально/красиво/удобно.

Читать дальше →
Total votes 15: ↑12 and ↓3 +9
Comments 25

Мультиварка — умная кастрюля или «не доведенный до ума» гаджет

Reading time 12 min
Views 635K

Этот пост будет полезен всем, кто хотя бы иногда что-то готовит сам, а также помогает или мешает это делать другим.
Из него можно узнать, что это за гаджет — мультиварка, какие у нее технические возможности и невозможности, внутренность, наружность, достоинства (много) и недостатки (тоже много). Расскажу кое-что и о маленьких мультиварочных хитростях, а также позволю себе общее лирическое отступление о программировании на кухне.
Цель поста — рассказать про мультиварки, как класс объектов, не выделяя особо его представителей, но, чтобы не вести разговор о сферической мультиварке в вакууме, сделаю основным примером разбора мою модель — Panasonic SR-TMJ181.
Те, у кого нет мультиварки узнают, нужна ли она им, но и те, у кого она есть, надеюсь, без новых знаний не останутся.
Читать дальше →
Total votes 295: ↑259 and ↓36 +223
Comments 337

Субъективное мнение о Mac OS в сравнении

Reading time 8 min
Views 114K
Если коротко, то это сравнительный список того что в OS X хорошо и что плохо в сравнении с Windows и Ubuntu. Сравнение опирается на 4-х летнем опыте работы в Windows, 3-х летнем ковырянии в Ubuntu и 4-х месячной дружбе с Mac OS X. Уже понятно на чьей я стороне. Запись родилась в первую очередь потому, что когда я спрашивал у Google или владельцев техники Apple, лучше ли она и чем, мне никто ничего ответить не смог. Кроме пресловутых козырей безопасности, красивых шрифтов и эфемерного удобства я ничего не слышал и не читал. По этому, как только я стал владельцем «мака», стал записывать то, что удалось подметить.
Читать дальше →
Total votes 169: ↑107 and ↓62 +45
Comments 332

Пришедшая в негодность патентная система: как мы до такого дошли, и как ее починить

Reading time 15 min
Views 5K


В системе патентов в США существует фундаментальная проблема.

Эта проблема — мы.

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

За последние несколько месяцев эти мнения выросли до яростного вопля, так как патентная система начала негативно влиять на все больше и больше игроков в индустрии: небольшие разработчики стали целью судебных исков от компаний, которые ничего не делают и не производят; Apple, HTC и Samsung не могут сдвинуться места в судебных процессах, связанных с патентами; пара многомиллиардных аукционов по патентам вызвала к жизни неслыханную до селе словесную баталию между Microsoft'ом и Google'ом. Самые пламенные критики открыто заявляют, что любая польза, которую патентная система могла бы принести, сейчас полностью перекрывается издержками, что ресурсы, которые при прочих равных условиях были бы направлены на развитие новых идей теперь тратятся на чрезмерно усердную защиту старого.

Эти аргументы повторяются так часто и с такой уверенностью, что они стали практически аксиомой, риторическим и интеллектуальным обманом, который редко (если вообще) подвергается сомнению. Но это плохо и неверно — настолько, что ставит под удар любые реальные попытки реформирования системы. Шуметь и злиться — хороший способ привлечь к себе внимание, но ужасный способ чего-либо добиться, особенно если принять во внимание, что большинство бьющих себя в пяткой в грудь лишь повторяют упрощенную версию аргументов, которые повторялись в нашей стране еще со времен, когда Томаса Джефферсона назначили главой Управления патентов.

Так что давайте начнем с начала. Давайте посмотрим, как работает патентная система, где она особенно дает сбои, и как можно привести ее в порядок. Готовы? Поехали.
Читать дальше →
Total votes 155: ↑139 and ↓16 +123
Comments 246

Делаем веб-клиент GMail удобным

Reading time 3 min
Views 52K
Если очень постараться, веб-клиент GMail-а можно довести до состояния, когда им более-менее приятно пользоваться. Вот как он выглядит у меня сейчас:



Под катом рассказ о том, какие особенности и как я использую.
Читать дальше →
Total votes 102: ↑86 and ↓16 +70
Comments 110

Homebrew: Менеджер пакетов для OS X

Reading time 3 min
Views 118K
Все менеджеры пакетов в Unix имеют определенные недостатки и большинство Linux-дистрибутивов пытаются по-разному эти недостатки обойти. В этом посте я расскажу про Homebrew — новый менеджер пакетов, нацеленный на простоту использования.

До Homebrew было несколько различных попыток создать эффективные пакетные менеджеры для OS X. Две наиболее популярные вылились в итоге в Fink и Macports, но у каждой из них все равно есть свои острые углы. В частности, в обоих создание своих пакетов или портов является черезчур сложным.

В Homebrew создавать новые пакеты и работать с ними проще пареной репы. Давайте посмотрим.
Читать дальше →
Total votes 38: ↑30 and ↓8 +22
Comments 51

Кастомная прошивка с Android 4.0.4 для Desire HD, умельцы делают работу за HTC

Reading time 1 min
Views 124K
image

Несколько недель назад компания HTC объявила о том, что среди многочисленного списка устройств, для которых планировался выход Ice Cream Sandwich, не будет Desire HD. Чуть позже, отвечая на критику негодующей толпы обманутых владельцев злосчастной модели, компания объяснила свое решение тем, что размер новой системы не позволяет установить ее на хитрым образом размеченые разделы встроенной памяти телефона без удаления пользовательских данных, что по мнению HTC, может показаться нормальным далеко не всем пользователям. Разумеется, это вызвало лишь еще большую волну критики и обещаний пользователей никогда не покупать телефоны HTC. Не помогла даже петиция, собравшая 16000 подписей.
Читать дальше →
Total votes 54: ↑36 and ↓18 +18
Comments 100

Наглядная инструкция по использованию мобильного телефона

Reading time 1 min
Views 49K
Сразу оговорюсь, что это не реклама известной фирмы, а просто любопытный способ создания действительно наглядной и понятной инструкции для пользователей мобильных телефонов. Также, по-моему, поскольку речь идёт именно о дизайнерском и одновременно наглядном решении, то этот блог показался мне подходящим.

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

На мой взгляд удачное решение показано на видео:

Total votes 176: ↑154 and ↓22 +132
Comments 112

Восход и закат Symbian

Reading time 4 min
Views 11K
Вступление

Не хочу чтобы статья выглядела как ковыряние трупа ежа вилкой, поэтому сразу скажу — это прощальное слово хорошей системе, которая уходит в прошлое, уходит потому что её разработчики или владельцы были недостаточно дальновидны или еще почему-то, теперь это неважно. В расцвете сил Symbian занимал более 70 процентов рынка смартфонов и до сих пор занимает существенную долю рынка, но это уже, скорее всего инерционная составляющая и дело времени. Относительно будущего системы я полностью согласен с прогнозом компании Gartner:

image
Читать дальше →
Total votes 66: ↑59 and ↓7 +52
Comments 70

Стэнфорд организует бесплатный онлайн-курс по ИИ

Reading time 1 min
Views 7.4K
Стэнфордский университет организует бесплатный онлайн-курс CS221 по искусственному интеллекту осенью этого года. Курс будет проходить с 2 октября по 16 декабря.

CS221 является вводным курсом в основы искусственного интеллекта. В нём описываются основные элементы искусственного интеллекта, такие как представление знаний, вывод, машинное обучение, планирование и игры, поиск информации, машинное зрение и робототехника.

В десятинедельный курс входит примерно двадцать лекций, около восьми домашних заданий, один промежуточный и один итоговый экзамен.
Читать дальше →
Total votes 80: ↑76 and ↓4 +72
Comments 25

Groupon'овые извращения

Reading time 7 min
Views 1.2K
imageКак вам известно, в прошлый четверг Groupon заполнила формуляр формата S-1, на первичный листинг ценных бумаг на американской фондовой бирже NASDAQ. Это событие было более чем ожидаемым, ведь компания, о которой пойдет речь, напоминает печь для наличности, у трубы которой несколько отдельных лиц и инвестиционных фондов греют руки. Информация, которой компании пришлось раскрыть SEC (комиссии по ценным бумагам), освещает интересные показатели того, как устроена кухня этой крайне агрессивной компании. Здесь есть на что посмотреть, с интересом, граничащим с недоумением.

И дело здесь даже не в том, что Groupon, по ее же заявлениям, растет на биологически-модифицированных дрожжах. Весь бизнес по продаже купонов сегодня начинает источать стойкий запах безвыходности, даже несмотря на очень крутые показатели роста: 13575% в приросте выручки по-сравнению с предыдущим годом, несмотря на то, что в текущем закрыт только первый квартал отчетности — компания уже успела «заработать» $644 миллиона. В прошлом году выручка компании росла темпом 22000%, сделав «прибыль» на уровне $713 миллионов.

И все бы ничего, если не принимать во внимание тот факт, что Groupon… до сих пор остается убыточной, в первую очередь из-за своей стратегии межконтинентального роста. В прошлом году в купонной печи было сожжено $456 миллионов, в первом квартале этого года — уже $147 миллионов. Не стоит даже ожидать, что минус в ближайшее время сменится плюсом. Как говорит CEO компании Эндрю Мейсон (Andrew Mason): «Мы агрессивно инвестируем в рост и тратим много денег на приобретение новых подписчиков». Около 54% операционных расходов связано с маркетинговыми действиями, остальные 46% приходятся на отделы продаж, где сегодня работает почти 3500 человек, по всему миру.
Читать дальше →
Total votes 209: ↑200 and ↓9 +191
Comments 87

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity