Как стать автором
Обновить
15
0

frontend

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

Стажёр Вася и его истории об идемпотентности API

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

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


Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси. Сегодня я поделюсь с читателями Хабра описанием проблем, которые могут возникнуть, если не учитывать идемпотентность распределенных систем в своем проекте. Для этого я выбрал формат вымышленных историй о стажёре Васе, который только-только учится работать с API. Так будет нагляднее и полезнее. Поехали.


image

Читать дальше →
Всего голосов 219: ↑216 и ↓3+213
Комментарии163

Заметка о void в JavaScript и TypeScript

Время на прочтение3 мин
Количество просмотров45K
Если вы, до того, как заинтересовались JavaScript, писали на традиционных языках с сильной типизацией, то вы, возможно, знакомы с концепцией void. Это — тип, использование которого сообщает программисту о том, что соответствующие функции и методы при их вызове ничего не возвращают.



Сущность void имеется также в JavaScript и TypeScript. В JS это — оператор. В TS это примитивный тип данных. И там и там void ведёт себя не так, как могли бы ожидать многие из тех, кто сталкивался с void в других языках.
Читать дальше →
Всего голосов 47: ↑41 и ↓6+35
Комментарии16

Простой подход к работе с отзывчивыми изображениями

Время на прочтение10 мин
Количество просмотров18K
Спецификация по отзывчивым изображениям — это фантастический документ, в котором описано множество вариантов использования таких изображений. Но опыт подсказывает мне, что чаще всего при работе с ними нужно знать лишь о том, как отдавать клиенту копии одного и того же изображения разного размера, выбирая их в зависимости от ширины области просмотра страницы. Мы называем это «переключением разрешения». Для решения этой задачи можно воспользоваться атрибутами srcset и sizes.

Вывод отзывчивых изображений предусматривает применение достаточно сложной логики. Сюда, кроме прочего, входит определение того, изображение какого размера будет выведено, а также выяснение того, работает ли пользователь с экраном высокого разрешения. К счастью, браузеры лучше, чем люди, умеют определять то, какие именно изображения лучше всего подходят каждому конкретному пользователю. Всё, что нам нужно — это дать им некоторые подсказки. Атрибут srcset даёт браузеру список графических ресурсов, из которых он может выбирать наиболее подходящее изображение. Атрибут sizes позволяет сообщить браузеру о том, изображение какого размера нужно показать в том или ином случае.



И, кстати, пользуясь отзывчивыми изображениями можно не беспокоиться о браузерной поддержке этой технологии. Интересующие нас атрибуты пользуются прекрасной поддержкой браузеров. И, кроме того, в нашем распоряжении имеется резервный механизм, предназначенный для старых браузеров вроде IE11.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии16

Moscow SPA №4: краткое содержание, видео, презентации, фотоотчёт

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

Недавно в офисе Авито прошёл четвёртый по счёту митап-сателлит Moscow.js — Moscow SPA, встреча для фронтенд-разработчиков, которым интересна тема веб-приложений (Single Page Application). Прозвучали доклады от представителей Mail.ru, Альфа-Банка и Авито, а в конце встречи прошла панельная дискуссия о том, каким должно быть SPA сегодня. Под катом — видеозаписи и презентации докладов и ссылка на фотоотчёт.


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

Секреты Progressive Web Apps: часть 2

Время на прочтение10 мин
Количество просмотров6.8K
Для тех, кто пропустил первую часть статьи: вам сюда. Ну а для всех остальных, как обычно, привет, Хабрахабр. Мы продолжаем тему PWA и изучение базового алгоритма синхронизации (не бросать же начатое?). В прошлой части мы закончили на том, что наше условное приложение умеет запрашивать статьи с сервера, получать только актуальные материалы, следить за изменениями и удалениями статей и грамотно всё это обрабатывать. Работало это всё через вычисление дельты: разницы между тем, что есть у приложения, и тем, что хранится на сервере.



В этой части мы изучим различные конкретные схемы по реализации описанных выше теорий, обсудим их сильные и слабые стороны. Ну а перед тем как мы начнём, давайте опишем требования к искомым алгоритмам.
Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Секреты Progressive Web Apps: часть 1

Время на прочтение14 мин
Количество просмотров26K
Привет, Хабр! Мы продолжаем цикл статей по Progressive Web Apps. В прошлый раз мы познакомили вас с опытом разработчиков из Airberlin, ну а сегодня у нас в виртуальных гостях Jan Lehnardt, человек, стоящий за такими штуками, как Hoodie, Apache CouchDB и Greenkeeper i/o.

И пусть вас не смущает аббревиатура PWA (Progressive Web Apps): несмотря на то, что в заголовке есть Apps, принципы и технологии, используемые в PWA, применимы в целом к вебу и к приложениям. Лучшим вступлением к статье будет просмотр видео с Google I/O 2016, в котором Джейк Арчибальд рассказывает о PWA.



Я очень рекомендую посмотреть его, прежде чем продолжать читать статью, особенно если эта тема для вас в новинку.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии3

Вы уволили самого талантливого сотрудника. Надеюсь, теперь вы довольны

Время на прочтение7 мин
Количество просмотров168K
Недавно довелось прочитать статью под названием «Мы уволили самого талантливого сотрудника. Это лучшее решение, которое мы когда-либо делали». [Очень популярная статья, которая получила массу положительных оценок на Medium — прим. пер.]

Давайте присядем, вы и я. Нужно поговорить. Если вы не читали статью по ссылке, то уделите 10–15 минут и прочитайте, впитайте её целиком.

Готовы? Отлично. Теперь разберём этот текст, потому что он значит гораздо больше, чем там написано. Если вы прочитали статью, то понимаете, что автор описывает проблемного сотрудника под вымышленным именем «Рик». Рик — это местный гений с огромным количеством знаний в предметной области, он входит в состав ключевых разработчиков продукта.

На первый взгляд, это история о технаре, который возомнил себя божьим даром для компании. Он решил, что руководители должны поклоняться земле, по которой он ходит и быть благодарны за одно его присутствие, а руководство вышвырнуло его пинком за дверь, потому что его репутация обналичивала чеки, за которые талант не мог заплатить.
Читать дальше →
Всего голосов 310: ↑300 и ↓10+290
Комментарии439

Укрощение Змейки с помощью реактивных потоков

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

Веб в наши дни двигается очень быстро и мы все это знаем. Сегодня Реактивное Программирование является одной из самых горячих тем в веб-разработке и с такими фреймворками, как Angular или React, она стала гораздо более популярной, особенно в современном мире JavaScript. В сообществе произошел массовый переход от императивных парадигм программирования к функциональным реактивным парадигмам. Тем не менее, многие разработчики пытаются с этим бороться и часто перегружены его сложностью (большой API), фундаментальным сдвигом в мышлении (от императивного к декларативному) и множеством понятий.

Хотя это не самая простая тема, но как только мы сумеем ее понять, мы спросим себя, как мы могли без нее жить?
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии14

Препараты для улучшения памяти и работы мозга

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

Продление жизни — одно из направлений исследований и пристального интереса нашего пространственно временного континуума. Мы уже стали жить дольше.
Если убрать из расчета случайности, то нормальный человек доживает примерно до 80 или более лет. И есть шанс, что скоро начнут делать искусственные органы, кровь, что-то еще и что мы будем жить еще дольше.


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


И вот как раз с этим часто возникают проблемы.


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


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


Дополнение через 2 недели — эта статья оказалась второй, прежде чем покупать или использовать добавки рекомендую прочитать приквел https://geektimes.ru/post/292609/



Картина "Рождение дракона в небе во сне", масло, холст.

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

Десять лучших 3D-сканеров от 100 до 100 000 долларов

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

Вам нужна 3Д-модель для 3D-печати? Для вас есть несколько путей: вы конечно можете создать свою 3Д-модель с нуля в программе 3Д-моделирования или найти подходящую в интернете, но вы также можете отсканировать существующий объект! Цель этого обзора — помочь вам разобраться в разнообразии существующих 3D-сканеров и предложить лучшие в каждом ценовом сегменте от фотограмметрического приложения для смартфона, до профессиональных 3D-сканеров.

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

Четыре типажа программистов

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

Привет.


Я впервые пишу в поток об управлении и найме персонала. Речь пойдет об одном из способов классифицировать ваших будущих или действующих программистов. Мой основной тезис: все разработчики, грубо говоря, делятся на 4 больших типажа и каждому из этих типажей есть своя область применения. Попытка направить неправильный типаж на решение неподходящих для него задач ведет к провалу (неэффективная работа, или сотрудник покидает команду). Хотите знать почему так — добро пожаловать под кат. Приготовьтесь, текста много.

Читать дальше →
Всего голосов 258: ↑237 и ↓21+216
Комментарии548

Нотация О-большое и сложность социальных взаимодействий

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

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

О(n2): Совещание равноправных участников. n человек обсуждают вопрос, причем для достижения взаимопонимания, каждому участнику нужно пообщаться с каждым. Всего будет осуществлено n*(n-1)/2 социальных взаимодействий (эквивалентно задаче подсчета числа рукопожатий в группе из n человек), т.е сложность алгоритма О(n2). Казалось бы, за счет того, что общение одновременно могут осуществлять n/2 пар людей, оценка по времени – О(n), однако на реальных совещаниях в один момент времени говорит только один человек, поэтому оценка для худшего случая — О(n2). Если время взаимодействия – 5 минут и для достижения полного взаимопонимания в группе требуется две итерации, то совещание трех человек продлиться 30 минут, четырех – час, пятерым потребуется 1 час 40 минут для нахождения общего решения (что подозрительно похоже на правду). Если же число итераций зависит от числа участников, мы получаем еще более печальные оценки.

Но не все так плохо!
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии9

Планетарный ландшафт

Время на прочтение51 мин
Количество просмотров21K
Трудно поспорить, что ландшафт — неотъемлемая часть большинства компьютерных игр на открытых пространствах. Традиционный метод реализации изменения рельефа окружающей игрока поверхности следующий — берем сетку (Mesh), представляющую из себя плоскость и для каждого примитива в этой сетке производим смещение по нормали к этой плоскости на значение, конкретное для данного примитива. Говоря простыми словами, у нас есть одноканальная текстура размером 256 на 256 пикселей и сетка плоскости. Для каждого примитива по его координатам на плоскости берем значение из текстуры. Теперь просто смещаем по нормали к плоскости координаты примитива на полученное значение(рис.1)


Рис.1 карта высот + плоскость = ландшафт

Почему это работает? Если представить, что игрок находится на поверхности сферы, и радиус этой сферы чрезвычайно велик по отношению к размеру игрока, то искривлением поверхности можно пренебречь и использовать плоскость. Но что если не пренебрегать тем фактом, что мы находимся на сфере? Своим опытом построения такого рода ландшафтов я хочу поделиться с читателем в данной статье.
Читать дальше →
Всего голосов 82: ↑82 и ↓0+82
Комментарии16

Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология

Время на прочтение9 мин
Количество просмотров206K
Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»

Неоднократно слышал мнение о том, что блокчейн — это очень круто, это прорыв, за ним будущее. Спешу вас разочаровать, если вы вдруг поверили в это.

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


Читать дальше →
Всего голосов 217: ↑190 и ↓27+163
Комментарии435

Как мы боремся c динамическими библиотеками в Swift. Опыт Яндекса

Время на прочтение12 мин
Количество просмотров21K
Честно говоря, когда мы приступили к работе над перезапуском Яндекс.Карт, я и представить себе не мог, сколько проблем нам в итоге доставит Swift. Если вы начали писать на Swift совсем недавно, то, поверьте, вы пропустили все самое интересное. Каких-то два года назад не было инкрементной компиляции в принципе (даже пробел в любом файле приводил к полной пересборке), сам компилятор постоянно вылетал с Segmentation Fault на вполне безобидных вещах вроде тройной вложенности типов или наследования от Generic, индексация проекта длилась невообразимо долго, автодополнение работало через раз и так далее и тому подобное, всех бед не счесть. Подобные моменты несомненно усложняют жизнь программистам, но постепенно решаются с каждым обновлением Xcode. Однако есть более существенные проблемы, влияющие не только на разработку, но и на качество приложения: запрет компиляции статических библиотек из свифтового кода, а также отсутствие поддержки Swift на уровне iOS.


Изначально не было очевидно, что использование Swift и динамических библиотек приводит к росту времени запуска. Мы не сравнивали время запуска с предыдущей версией и воспринимали долгую загрузку как данность. Да и средств диагностики того, что же на самом деле происходит на этапе загрузки приложения, в общем-то не было. Но в один прекрасный день разработчики Apple добавили возможность профилирования работы системного загрузчика. Оказалось, что загрузка динамических библиотек занимает очень много времени по сравнению с другими этапами. Конечно, с нашим кодом тоже не все было идеально, но, пожалуй, это частные особенности отдельного приложения и не всем будет интересно о них читать. А вот борьба с динамическими библиотеками — общая тема для всех разработчиков, использующих Swift. Именно об этой проблеме и пойдет речь.

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

Современные методы исследования безопасности веб-приложений

Время на прочтение3 мин
Количество просмотров27K
image
 
В данной статье я расскажу о современных методах и подходах к тестированию безопасности веб-приложений.
Читать дальше →
Всего голосов 38: ↑30 и ↓8+22
Комментарии10

Описание алгоритмов сортировки и сравнение их производительности

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

Вступление


На эту тему написано уже немало статей. Однако я еще не видел статьи, в которой сравниваются все основные сортировки на большом числе тестов разного типа и размера. Кроме того, далеко не везде выложены реализации и описание набора тестов. Это приводит к тому, что могут возникнуть сомнения в правильности исследования. Однако цель моей работы состоит не только в том, чтобы определить, какие сортировки работают быстрее всего (в целом это и так известно). В первую очередь мне было интересно исследовать алгоритмы, оптимизировать их, чтобы они работали как можно быстрее. Работая над этим, мне удалось придумать эффективную формулу для сортировки Шелла.

Во многом статья посвящена тому, как написать все алгоритмы и протестировать их. Если говорить о самом программировании, то иногда могут возникнуть совершенно неожиданные трудности (во многом благодаря оптимизатору C++). Однако не менее трудно решить, какие именно тесты и в каких количествах нужно сделать. Коды всех алгоритмов, которые выложены в данной статье, написаны мной. Доступны и результаты запусков на всех тестах. Единственное, что я не могу показать — это сами тесты, поскольку они весят почти 140 ГБ. При малейшем подозрении я проверял и код, соответствующий тесту, и сам тест. Надеюсь, что статья Вам понравится.
Читать дальше →
Всего голосов 80: ↑76 и ↓4+72
Комментарии55

Цифровая экономика должна быть цифровой

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

Источник
«Экономика должна быть экономной – таково требование времени»
Л.И.Брежнев (из отчетного доклада на XXVI съезде КПСС, 1981 г.)


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

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

Информация

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