Как стать автором
Обновить
13
0
Лёша Огоньков @leshaogonkov

Фронтенд разработчик

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

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

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

Да, могут.

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

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

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

Как Мегафон спалился на мобильных подписках

Время на прочтение5 мин
Количество просмотров253K
Обсуждение операторов сотовой связи в Телеграм t.me/opsosru

Уже давно как не смешные анекдоты ходят истории о платных мобильных подписках на IoT устройствах.


С Пикабу

Всем понятно, что без действий сотовых операторов эти подписки не обходятся.
Читать дальше →
Всего голосов 626: ↑624 и ↓2+622
Комментарии681

Джон Маэда: «На самом деле дизайн не так важен»

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

Глава отдела разработки и вычислительного дизайна в Automattic (материнской компании WordPress) считает, что дизайнерам следует быть кем-то вроде вспомогательных актёров в технологических компаниях, оставляя главную роль разработчикам и менеджерам по продукту.


image

Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии6

Big O

Время на прочтение5 мин
Количество просмотров221K
Примечание. Сокращенный перевод, скорее пересказ своими словами.
UPD: как отметили в комментариях, примеры не идеальны. Автор не ищет лучшее решение задачи, его цель объяснить сложность алгоритмов «на пальцах».


Big O нотация нужна для описания сложности алгоритмов. Для этого используется понятие времени. Тема для многих пугающая, программисты избегающие разговоров о «времени порядка N» обычное дело.

Если вы способны оценить код в терминах Big O, скорее всего вас считают «умным парнем». И скорее всего вы пройдете ваше следующее собеседование. Вас не остановит вопрос можно ли уменьшить сложность какого-нибудь куска кода до n log n против n^2.

Структуры данных


Выбор структуры данных зависит от конкретной задачи: от вида данных и алгоритма их обработки. Разнообразные структуры данных (в .NET или Java или Elixir) создавались под определенные типы алгоритмов.

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

Здесь мы будем использовать только массивы чисел (прямо как на собеседовании). Примеры на JavaScript.
Читать дальше →
Всего голосов 39: ↑30 и ↓9+21
Комментарии30

Как создать палитру, комфортную для всех

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


Вот палитра нашего сервиса Envoy. Как и многие цветовые схемы в вебе, она включает фирменный цвет (красный), информационный цвет (синий), цвет успешной операции (зелёный), цвет предупреждений (жёлтый) и разные оттенки серого.

Хотя эти цвета кажутся прекрасной палитрой, со временем мы поняли, что они недостаточно гибки для всех потребностей нашего пользовательского интерфейса. В отзывах постоянно всплывал один и тот же комментарий: «Текст недостаточного контрастный».
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии9

Вступление в архитектуру React Fiber

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

Привет, Хабр! Предлагаю вашему вниманию перевод статьи "React Fiber Architecture" автора Andrew Clark.


Вступление


React Fiber — прогрессивная реализация ключевого алгоритма React. Это кульминационное достижение двухгодичных исследований команды разработчиков React.


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


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

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

Насколько легко доставить заказ, зная адрес клиента (не очень)

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

Всем привет! Меня зовут Денис Гирько, я системный архитектор e-commerce платформы в Lamoda. В прошлом году я выступал на конференции DevConf с докладом, которым хочу поделиться с вами.


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


image


О чем пойдет речь? Расскажу:


  • о процессе доставки и обозначу проблемы;
  • как эффективно хранить территории доставки в базе;
  • как повысить качество тех данных, которые мы получаем от клиента;
  • как в адресной базе искать адресата, чтобы найти больше точных результатов.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии17

Разбираемся с асинхронностью в JavaScript [Перевод статьи Sukhjinder Arora]

Время на прочтение8 мин
Количество просмотров35K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Understanding Asynchronous JavaScript» автора Sukhjinder Arora.


Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии11

Как сэкономить ресурсы в браузере и не сломать веб. Доклад Яндекса

Время на прочтение9 мин
Количество просмотров13K
Несмотря на рост производительности устройств, веб становится всё более требовательным к памяти и процессору. Правильный рендеринг и умное распределение ресурсов по вкладкам — важная часть решения этой проблемы. Константин Крамлих PurplePowder посвятил своё выступление на конференции «Я Frontend» алгоритмам, которые улучшают производительность и экономят ресурсы как в проекте Chromium, так и в Яндекс.Браузере.

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

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


— Меня зовут Костя, я руководитель группы разработки внутренних компонентов в команде Яндекс.Браузера. В Браузере я чуть больше пяти лет, занимался разными вещами: от всего декодирования в браузере, всех HTML5-видео, до отрисовки, рендеринга и других подобных процессов.

Всего голосов 35: ↑34 и ↓1+33
Комментарии32

JSON API – работаем по спецификации

Время на прочтение23 мин
Количество просмотров163K
В последнее время веб-разработка разделилась. Теперь мы все не full-stack программисты — мы фронтендеры и бэкендеры. А самое сложное в этом, как и везде, это проблема взаимодействия и интеграции.

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

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


Всего голосов 71: ↑68 и ↓3+65
Комментарии110

Чтобы вести разработку быстрее, необходимо замедлиться

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


От переводчика:
Начало года — отличное время, чтобы вдумчиво оценить прошедший год. Окинуть широким взглядом происходящее и понять, как сделать 2019 год лучше, спокойнее и продуктивнее. В этом деле нам показалась полезной статья How To Slow Down to Go Faster Than Ever in Software Development, которую написал Lemi Orhan Ergin. А ее перевод мы публикуем ниже.
Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии35

Ужасный import кракен — как использовать ES6-модули и не сойти с ума

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

Глобальная область видимости (aka namespace в TypeScript) — уже давно не круто. Можно долго перечислять преимущества модулей (ES6 модулей, в частности), но лично для меня решающим стала возможность использовать SystemJS для динамической загрузки исходников и Rollup, для сборки бандла.


Однако, первое, с чем пришлось столкнуться при внедрении ES6-модулей- безумное количество import выражений, с безумным количеством точек внутри:


import { FieldGroup } from "../../../Common/Components/FieldGroup/FieldGroup";

Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии108

Создавайте хорошие таблицы

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

Таблица


Бедные таблицы. Ну что с ними не так?


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

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

Цены на мобильный интернет, небольшое исследование

Время на прочтение10 мин
Количество просмотров116K
Сколько стоит мобильный интернет? Первый, универсальный и самый короткий ответ: много он стоит, а у сотовых операторов нет ни стыда, ни совести! Впрочем, ожидать наличия совести у крупных компаний вообще глупо, так что я решил выяснить, как максимально сэкономить на мобильном интернете, не слишком себя ограничивая. Внутри – не совсем универсальное исследование тарифов московских операторов для ежемесячного употребления 100, 300 и неограниченного количества мегабайт.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+44
Комментарии162

Билайн планирует передавать ваши персональные данные компаниям-коллекторам, если Вы задолжали

Время на прочтение2 мин
Количество просмотров1.3K
Как уже писали на Хабре, Билайн успешно поедает остатки Корбины-телеком.
Уже закрыли старый личный кабинет, халявное телевидение и некоторые другие гайки подзакрутили.

На этой волне Билайн перевёл всех корбиновцев с 1 декабря 2009 года на новый договор-офёрту пользования услуг Интернета.

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

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

Читаем п. 3.12. — в нем Компания разрешает себе распространять ваши личные и персональные данные, назвав это их «обработкой». По телефону операторы коллцентра оправдывались, что «имели ввиду распространения только в пределах себя».

Дальше — круче.
Читать дальше →
Всего голосов 84: ↑80 и ↓4+76
Комментарии47

Значение CSS-свойства «content» в UNICODE

Время на прочтение1 мин
Количество просмотров1.2K
CSS-свойство content крайне полезно. С помощью него, например, можно поставить запятую после каждого элемента списка: li:after { content: ','; }

Иногда необходимо задать значение этого свойства в виде набора символов UNICODE (чтобы не заботиться о совместимости кодировок, или в случае, если значение содержит перенос строки). Возникает вопрос, как получить набор символов UNICODE из строки?

Я предлагаю воспользоваться возможностями Javascript.

Читать дальше →
Всего голосов 7: ↑4 и ↓3+1
Комментарии8

Обработка горячих клавиш при помощи javascript

Время на прочтение2 мин
Количество просмотров2.8K
Захотелось мне в своем проекте использовать горячие клавиши для управления содержимым. Нажал esc — закрылось диалоговое окно, ctrl+left — открылся следующий раздел… Порылся в гуглях-яндексах и, не найдя идеала, решил написать свое решение.
Теперь оно у меня есть — маленькое, легкое, независимое от от других библиотек.
Мне достаточно подключить javascript-файл и написать
$e('ctrl esc').bind("alert('Ыыы');");

Готовый javascript можно взять здесь.
UPD Улучшен код. Спасибо, Yeah, aubt.
Подробнее о возможностях
Всего голосов 18: ↑16 и ↓2+14
Комментарии12

Регистрируем электронное СМИ

Время на прочтение3 мин
Количество просмотров41K
imageРано или поздно, владельцы сайтов начинают задумываться о защите своих прав на контент. Кроме того, сайты создающие собственный контент заинтересованы в облегчении получения авторских материалов. Всему этому может способствовать регистрация СМИ, в нашем случае – электронного.
Читать дальше →
Всего голосов 68: ↑62 и ↓6+56
Комментарии77

Индексация AJAX-сайтов поисковым роботом Яндекса

Время на прочтение2 мин
Количество просмотров2K
Рады сообщить, что улучшения индексации AJAX-сайтов Яндекс поддержал изменения в поисковом роботе и правилах обработки им URL таких сайтов.

Технология AJAX пользуется большой популярностью. Однако то, как содержимое страницы «видит» браузер и пользователь, отличается от того, как страницу «видит» робот поисковой системы. Например, пользователь видит удобный интерфейс с динамически подгружаемыми страницами, в то время как содержимое той же страницы для поискового робота может быть пустым или представленным в виде остального статического HTML-контента страницы, для генерации которого не используются скрипты.

При создании AJAX-сайтов могут использоваться URL с #, но такой URL не используется поисковым роботом. Как правило, часть URL после # отсекается. Поэтому вместо URL вида site.ru/#example он обращается к главной странице сайта, расположенной по адресу site.ru. Это значит, что контент страницы может не проиндексироваться и, как следствие, не попасть в результаты поиска.

Теперь вебмастер AJAX-сайта может указать поисковому роботу Яндекса на необходимость индексации, поддержав соответствующую схему в структуре сайта. Для этого нужно:

Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии9

Несколько советов по оптимизации Wordpress

Время на прочтение2 мин
Количество просмотров1.1K
Несколько мелочей, которые помогут вашему блогу работать быстрее, если хостинг на вас ругается. Может именно Вы их уже знаете, но как оказывается не все знают и пользуются.

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

* Оптимизация начинается с базы данных. Нужно оптимизировать таблицы. Заходим в phpMyAdmin, выбираем нашу БД и далее:
Оптимизация таблиц

Это поможет серверу БД более быстро работать с таблицами, что немного снизит нагрузку. В более ранних версиях phpMyAdmin может не быть пункта «Отметить требующие оптимизации». Тогда просто выбираете все таблицы и делаете с отмеченными «Оптимизировать».
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии10

Информация

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