Как стать автором
Обновить
100
3.2
Максим @botyaslonim

Тимлид

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

React Native — одного JS мало

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

Итак, пришла пора быстро погрузиться в тему. Для усиления эффекта, использую разные техники преобразования информации в знания. В частности, представляю конспект доклада Алексея Андросова (старшего разработчика интерфейсов, Yandex).

Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии84

Что добавят в JavaScript уже в 2020 году

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

Недавно опциональный доступ к аттрибутам (Optional Chaining) и значение по умолчанию для атрибутов (Nullish Coalescing) перешли на последний, четвёртый этап процесса TC39.


На практике это означает, что эти и другие нововведения станут частью стандарта JavaScript уже в этом, 2020 году. Их мы и рассмотрим в этой статье.


Отслеживать поддержку браузерами можно здесь («2020 features») — прим. перев.


Читать дальше →
Всего голосов 33: ↑31 и ↓2+42
Комментарии24

23 минуты. Оправдание тугодумов

Время на прочтение3 мин
Количество просмотров192K
Я всегда думал, что я – тупой. Точнее, что я — тугодум.

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

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

А я, выйдя с совещания, продолжал думать над задачей. И, как говорит устойчивое идиоматическое выражение, хорошая мысля приходит опосля. Находил нормальное, иногда интересное, а бывало – что и офигенное решение. Но оно уже никому не было нужно. Типа после драки кулаками не машут.

Просто культура в тех компаниях, где я начинал работать, была модерновая. Ну, как там это бывает – «совещание должно закончиться принятием решения». Вот чего придумали на совещании, то и принимается. Даже если решение — полная фигня.
Читать дальше →
Всего голосов 321: ↑305 и ↓16+365
Комментарии334

Функциональное программирование — это не то, что нам рассказывают

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

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Всего голосов 208: ↑200 и ↓8+251
Комментарии795

Производительность фронтенда: разбираем важные метрики

Время на прочтение12 мин
Количество просмотров31K
Обычно под производительностью понимают количество операций за определенный интервал времени и чем их больше, тем лучше. Но такое определение, да и подход в целом, мало применим к фронтенду, потому что у каждого пользователя будет свой «фронтенд». Именно об этом я и хочу поговорить, что же происходит «там», у пользователя, на другой стороне, в реальности, а не на вашем топовом MacBook.

Кроме это, я постараюсь вскользь рассмотреть общие правила оптимизации кода и некоторые ошибки на которые стоит обратить внимание. Ещё расскажу про инструмент, который помогает не только в профилировании, но и «из коробки» собирает кучу базовых метрик о производительности вашего приложения (и надеюсь, вы дочитаете этот пост до конца).
Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии22

JSON-RPC? Возьмите хитрый REST

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


Уверен, что заголовок вызвал здоровую реакцию — “ну опять началось…” Но позвольте завладеть вашим вниманием на 5-10 минут, и я постараюсь не обмануть ожидания.


Структура статьи будет такова: берется стереотипное утверждение и раскрывается “природа” возникновения этого стереотипа. Надеюсь, это позволит взглянуть на выбор парадигмы обмена данными в ваших проектах под новым углом.


Для того, чтобы была ясность в том, что такое RPC, предлагаю рассматривать стандарт JSON-RPC 2.0. C REST ясности нет. И не должно быть. Все, что нужно знать о REST — он неотличим от HTTP.

Читать дальше →
Всего голосов 52: ↑41 и ↓11+30
Комментарии118

Возможности современного JavaScript, о которых вы могли не знать

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


Несмотря на то, что в последние семь лет я пишу на JavaScript почти каждый рабочий день, должен признаться, что уделяю мало внимания сообщениям о нововведениях от ES. Главные возможности вроде async/await и прокси — это одно, но ещё каждый год идёт поток мелких поэтапных изменений, которые не попадают в моё поле зрения, поскольку всегда находится что-то более важное для изучения.

В этой статье я собрал возможности современного JS, о которых мало говорили, когда они появились. Некоторые из них всего лишь повышают удобство, а некоторые невероятно практичны и могут сэкономить написание кучи кода.
Читать дальше →
Всего голосов 93: ↑85 и ↓8+77
Комментарии53

Как CSS Grid меняет представление о структурировании контента

Время на прочтение8 мин
Количество просмотров18K
Каждый, кто хотя бы немного занимался созданием веб-сайтов, знает, что теги <div> — являются важным строительным блоком для контроля над макетом.

HTML5 представил новые семантические элементы, чтобы помочь в этом. И хотя они являются фантастическим дополнением к языку, они немного похожи на украшение к нашему супу из <div> элементов.



С приходом CSS Grid, нам больше не нужно полагаться на элементы <div> для создания структуры страницы или даже более сложного компонента. Структура буквально определяется родительским элементом, а не тем, как расположено содержимое внутри него.

Это значит, что мы можем получить хороший простой макет, который структурирует содержимое, не обращая внимание на то, как оно изначально организовано с помощью элементов <div>.

Всего голосов 22: ↑21 и ↓1+20
Комментарии19

Верификация пользователей в Китае и социальный кредит

Время на прочтение6 мин
Количество просмотров58K
Согласно законодательству КНР, регистрация на любом интернет-портале или сервисе требует идентифицировать пользователя как реальное лицо. О том, как это сделать, что для этого требуется и какие последствия несет мы и поговорим в этой статье.
Читать дальше →
Всего голосов 141: ↑136 и ↓5+131
Комментарии334

Новшества JavaScript: итоги Google I/O 2019. Часть 2

Время на прочтение11 мин
Количество просмотров19K
Сегодня мы публикуем вторую часть перевода материала о новшествах JavaScript. Здесь мы поговорим о разделителях разрядов чисел, о BigInt-числах, о работе с массивами и объектами, о globalThis, о сортировке, об API интернационализации и о промисах.



Первая часть
Читать дальше →
Всего голосов 61: ↑61 и ↓0+61
Комментарии21

Теперь хороших разрабов меряют по просмотрам и подписчикам — и это плохо

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


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

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

Вот только почти все статьи не про разработку — в них нытье про мою депрессию. Я-то рад, что мне больше не надо никому ничего доказывать. Но вы что, с ума сошли котировать разрабов за такую чушь? Я думаю, сошли, и вижу тревожные симптомы этого везде.
Читать дальше →
Всего голосов 350: ↑324 и ↓26+298
Комментарии487

Рисуем карту изображения мышкой

Время на прочтение4 мин
Количество просмотров40K
Привет. Давеча мне довелось иметь дело с такой специфической фичей html как карта изображения. Скажу честно, что мне не часто доводилось использовать её, и то, обычно, всё обходилось зонами в форме прямоугольника. Но это был не тот самый случай. Задачей было повесить ссылки на отдельные регионы изображения, которым выступала карта страны, и, к сожалению, ни о каких канвасах или svg не могло быть и речи. Только html только хардкор! Итак, задача поставлена, гугл активизирован, можно и начинать.
Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии29

The state of CSS

Время на прочтение15 мин
Количество просмотров23K
В ежегодном опросе «The state of JavaScript» разработчики рассказывают о том, что они используют здесь и сейчас. Вопросы там знакомы и привычны фронтенд-сообществу. В 2019 году появился опрос «The state of CSS», который ввёл разработчиков в ступор. Оказывается, многие технологии разработчикам не знакомы, хотя большинство из них уже активно используются. Возможно, разработчики используют привычные инструменты и технологии, и не стремятся применять что-то новое? Возможно, просто нет задач под новые технологии? Зачем использовать CSS Grid, CSS Multi columns, там, где проще построить все на Flexbox? Возможно, это все касается старичков, а джуны уже и не знают про Flexbox и Float и в опросах не участвуют?



Сергей Попов (popovsergey), руководитель Лиги А, спикер и организатор конференций задался этими вопросами, провел свой мини-опрос и даже получил результаты от организаторов «The state of CSS». Всю информацию Сергей обработал, структурировал и получил срез фронтенд-сообщества: кто что знает и использует, где учатся верстальщики и сколько зарабатывают, какие технологии актуальны, а какие пора сдавать в переработку, и что изучать, чтобы применять всю мощь CSS. Расшифровка доклада — один из вариантов отчета по актуальному состоянию CSS, вместе с оригинальным отчетом «The state of CSS» подскажет, куда двигаться и какие технологии применять.

Осторожно, под катом много диаграмм и картинок, действительно много, но они все по делу. В хорошем качестве они тут.
Всего голосов 50: ↑50 и ↓0+50
Комментарии9

Разбор: как и зачем применять PureComponent в React

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

29 Июля вышел React 15.3, и первым пунктом в release-notes значилось добавление поддержки React.PureComponent, который заменяет своего предшественника pure-render-mixin. В этой статье обсудим, почему же этот компонент так важен и где его использовать.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии11

Знакомство с Python для камрадов, переросших «язык A vs. язык B» и другие предрассудки

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

Для всех хабравчан, у которых возникло ощущение дежавю: Написать этот пост меня побудили статья "Введение в Python" и комментарии к ней. К сожалению, качество этого "введения" кхм… не будем о грустном. Но ещё грустнее было наблюдать склоки в комментариях, из разряда "C++ быстрее Python", "Rust ещё быстрее C++", "Python не нужен" и т.д. Удивительно, что не вспомнили Ruby!


Как сказал Бьярн Страуструп,


«Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует».

Добро пожаловать под кат всем, кто хотел бы познакомиться с Python, не опускаясь при этом до грязных ругательств!

Читать дальше →
Всего голосов 88: ↑83 и ↓5+78
Комментарии146

HTTP-заголовки для ответственного разработчика

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

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

Разработчики соединяют людей.
Разработчики помогают людям.
Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
Читать дальше →
Всего голосов 92: ↑90 и ↓2+88
Комментарии64

Тонкости модульной системы ECMAScript 2015 (ES6)

Время на прочтение5 мин
Количество просмотров116K
Уже около полугода я пишу на ES6 (который в итоге назвали ES-2015) и ES7, с использованием бабеля в качестве транслятора. Писать мне приходилось в основном серверную часть, соответственно, использование модулей было само собой разумеющимся: до ES6 — с помощью модульной системы самой ноды, а теперь — с помощью стандартизированной семантики самого языка. И мне захотелось написать статью, в которой расписать тонкости, плюсы, подводные камни и необычности новообретенной модульной системы языка: отчасти — чтобы другим было проще, отчасти — чтобы разобраться во всём окончательно самому.

Я разберу, что такое модуль, как происходит экспорт сущностей, как происходит импорт сущностей, чем система модулей ES6 отличается от системы модулей в NodeJS.
Итак, начнем.
Всего голосов 39: ↑39 и ↓0+39
Комментарии38

Нужно ли чистить строки в JavaScript?

Время на прочтение6 мин
Количество просмотров79K
Что? Строки могут быть «грязными»?

Да, могут.

//.....Какой-то код
console.log(typeof str); // string
console.log(str.length); // 15
console.log(str); // "ччччччччччччччч"

Вы думаете, в этом примере строка занимает 30 байт?

А вот и нет! Она занимает 30 мегабайт!
Читать дальше →
Всего голосов 220: ↑219 и ↓1+218
Комментарии224

Лень и переработки — про ИТ и промышленность Китая изнутри

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

Фотографии: Антон Арешин

Несколько дней назад на GitHub стал популярен китайский репозиторий 996.ICU. Вместо кода в нем — жалобы на условия труда и незаконные переработки. Само название отсылает к мему китайских разработчиков о своей работе: «С девяти до девяти шесть дней в неделю, а потом в реанимацию» (Work by '996', sick in ICU). Коммитить в репозиторий может кто угодно, если подтверждает свой рассказ скриншотами внутренних документов и переписок.

На случай обратил внимание The Verge и нашел внутри рассказы об условиях труда в крупнейших ИТ компаниях страны — Alibaba, Huawei, Tencent, Xiaomi и других. Почти сразу эти компании начали блокировать у себя доступ к 996.ICU, не отвечая на комментарии иностранных СМИ.

Я не знаю, что может быть обыденнее этой новости — как и нашей реакции на нее: «Китайцы жалуются на Гитхабе? Ок, скоро им его заблокируют и сделают свой». Мы привыкли, что о Китае только такое и пишут — блокировки, цензура, камеры, социальный рейтинг а-ля «Черное зеркало», гонения на уйгуров, адская эксплуатация, абсурдные скандалы с мемами про Винни-Пуха и так по кругу.

Одновременно Китай обеспечивает весь мир товарами. Гигантские компании, которые осуждают несвободу, готовы забывать свои принципы, лишь бы попасть на китайский рынок. В Китае мощнейшая промышленность и ИТ-индустрия, там развивается космонавтика. Богатые китайцы рушат рынки недвижимости в Канаде и Новой Зеландии, скупая все за любые деньги. Китайские фильмы и книги, которые попадают к нам — просто прекрасны.

Это интересные противоречия (сочетания?). В мире, где правда окончательно умерла под ножами точек зрения, понять весь контекст, что такое на самом деле Китай — кажется, уже невозможным. Даже и не надеясь разобраться, я поговорил с несколькими людьми, которые там давно живут и работают — просто чтобы добавить еще пару мнений в копилку.
Читать дальше →
Всего голосов 67: ↑62 и ↓5+57
Комментарии64

Redux против React Context API

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


В React 16.3 был добавлен новый Context API. Новый в том смысле, что старый Context API был за кадром, большинство людей либо не знали о его существовании, либо не использовали, потому что документация советовала избегать его использования.

Однако теперь Context API является полноценной частью React, открытой для использования (не так, как раньше, официально).
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии24

Информация

В рейтинге
940-й
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность