Открыть список
Как стать автором
Обновить
9
Карма
0
Рейтинг
Михаил Черноруцкий @r47717

Пользователь

Что такое CDN и как это работает?

Блог компании Selectel


Цифры и факты (вместо введения)


  • В 2010 году средний размер веб-страницы составлял 481 кБ. В 2019 — уже 1936.7 кБ (подробная статистика). За последние три года значение этого показателя выросло на 314.7%. Как показывают исследования, тенденция к увеличению размера веб-страниц сохраняется.
  • В настоящее время набирают популярность стриминговые аудио- и видеосервисы. По состоянию на апрель 2019 года число подписчиков популярного сервиса Spotify составило 217 миллионов.
  • По данным опросов 25% пользователей уходят с веб-страницы, если она загружается дольше 4 секунд. 74% пользователей, загружающих сайт с мобильного устройства, предпочитают не ждать, если загрузка длится более 5 секунд. 46% пользователей отказываются иметь дело с веб-сервисом, если он медленно работает.

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры55K
Комментарии 10

Ключевое слово this в JavaScript. Полное* руководство

JavaScript
* скорее всего, я что-нибудь да упустил, но уверен, в комментариях мне это подскажут

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

image

Содержание.

  1. Введение
  2. Заблуждения о this
  3. Как определить значение this
Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры19.3K
Комментарии 30

Первые шаги в машинном обучении

PythonМашинное обучение
Из песочницы
Привет, дорогой друг, ты всегда хотел попробовать машинное обучение, но область выглядела загадочно и сложно? Я хотел бы поделиться с тобой моей историей как я сделал первые шаги в машинном обучении, при нулевом знании Python и высшей математики на небольшом примере.
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Просмотры47.9K
Комментарии 15

Машинное обучение — это легко

PythonBig DataМашинное обучение
Из песочницы
В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.
Читать дальше →
Всего голосов 51: ↑44 и ↓7 +37
Просмотры293.5K
Комментарии 20

WebComponents как фреймворки, взаимодействие компонентов

JavaScript
Tutorial
Когда разговор заходит о веб-компонентах, часто говорят: «Ты что хочешь без фреймворков? Там же все готовое». На самом деле есть фреймворки созданные на основе реализаций стандартов входящих в группу веб-компонентов. Есть даже относительно неплохие, такие как X-Tag. Но сегодня мы все равно будем разбираться насколько простым, элегантным и мощным стало браузерное API для решения повседневных задач разработки в том числе организации взаимодействия компонентов между собой и с другими объектами из контекста выполнения браузера, а использовать фреймворки вместе с веб-компонентами всегда можно, даже те, которые разрабатывались поперек стандартов в том числе через механизмы, которые мы сегодня разберем, по крайней мере так утверждается на сайте.
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Просмотры3.8K
Комментарии 34

Стартуем библиотеку компонентов на React и TypeScript

JavaScriptReactJS
Из песочницы
Tutorial

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

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

12 советов по улучшению производительности JavaScript-приложений

Блог компании RUVDS.comРазработка веб-сайтовJavaScript
Перевод
Производительность — это один из важнейших вопросов, встающих перед разработчиками веб-страниц или веб-приложений. Никто не будет рад «падающему» от чрезмерной нагрузки приложению, или странице, которая загружается целую вечность. Пользователи веб-сайтов не готовы слишком долго ждать их загрузки или приведения их страниц в рабочее состояние. Согласно данным Kissmetrics, 47% посетителей ожидают, что веб-сайт загрузится менее чем за 2 секунды. 40% посетителей покинут сайт в том случае, если его загрузка займёт более 3 секунд.



Автор материала, перевод которого мы сегодня публикуем, говорит, что, если учитывать вышеприведённые цифры, становится ясно, что производительность — это то, о чём всегда стоит помнить веб-разработчикам. Здесь будут приведены 12 рекомендаций по улучшению производительности JS-проектов.
Читать дальше →
Всего голосов 37: ↑29 и ↓8 +21
Просмотры15K
Комментарии 13

WAL в PostgreSQL: 4. Настройка журнала

Блог компании Postgres ProfessionalPostgreSQLSQL
Итак, мы познакомились с устройством буферного кеша и на его примере поняли, что когда при сбое пропадает содержимое оперативной памяти, для восстановления необходим журнал предзаписи. Размер необходимых файлов журнала и время восстановления ограничены благодаря периодически выполняемой контрольной точке.

В предыдущих статьях мы уже посмотрели на довольно большое число важных настроек, так или иначе относящихся к журналу. В этой статье (последней в этом цикле) мы рассмотрим те вопросы настройки, которые еще не обсуждались: уровни журнала и их назначение, а также надежность и производительность журналирования.

Уровни журнала


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

C++20 укомплектован, C++23 начат. Итоги встречи в Кёльне

Блог компании ЯндексПрограммированиеC++КомпиляторыIT-стандарты
На днях прошла встреча международного комитета по стандартизации C++ в Кёльне. В прошлый раз был принят feature freeze на C++20, так что комитет должен был обсуждать только исправления уже принятых вещей, а добавлять новинки уже в C++23…

… но всё было не так!



Что сделали с std::flat_map; останутся ли страшные ключевые слова co_return, co_await и co_yield; успели ли доделать std::format; в каком виде будут контракты в C++20? Всё это вас ждёт под катом.
Читать дальше →
Всего голосов 70: ↑67 и ↓3 +64
Просмотры31.9K
Комментарии 348

Синхронизация клиентских запросов в Spring

Блог компании MaximaTelecomJava
Tutorial
Сегодня предлагаю Вам разобрать одну практическую задачу о гонке клиентских запросов, с которой я столкнулся в МаксимаТелеком при разработке back-end для нашего мобильного приложения MT_FREE.

При старте клиентское приложение асинхронно отправляет «пачку» запросов к API. Приложение имеет идентификатор clientId, на основании которого можно различить запросы одного клиента от другого. На каждый запрос на сервере выполняется код вида:

  // получаем из репозитория данные клиента
  Client client = clientRepository.findByClientId(clientId);
  // если клиент не создан ранее
  if(client == null){
      client = clientRepository.save(new Client(clientId));
  }
  // далее обрабатываем запрос  

где сущность Client имеет поле clientId, которое должно являться уникальным и имеет для этого в базе unique constraint. Так как в Spring каждый запрос будет выполнять данный код в отдельном потоке, даже если это запросы от одного и того же клиентского приложения, будет возникать ошибка вида:
integrity constraint violation: unique constraint or index violation; UK_BFJDOY2DPUSSYLQ7G1S3S1TN8 table: CLIENT

Ошибка возникает по очевидной причине: 2 или более потоков с одним clientId получают сущность client == null и начинают ее создавать, после чего при коммите получают ошибку.

Задача:


Необходимо синхронизировать запросы от одного clientId так, чтобы только первый запрос выполнил создание сущности Client, а остальные блокировались бы на момент создания и получали бы уже созданный им объект.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры4.3K
Комментарии 26

Вулканический поросенок, или SQL своими руками

Блог компании BadooПрограммированиеSQLКомпиляторыC


Сбор, хранение, преобразование и презентация данных — основные задачи, стоящие перед инженерами данных (англ. data engineer). Отдел Business Intelligence Badoo в сутки принимает и обрабатывает больше 20 млрд событий, отправляемых с пользовательских устройств, или 2 Тб входящих данных.


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


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

Читать дальше →
Всего голосов 47: ↑45 и ↓2 +43
Просмотры13.1K
Комментарии 10

Как мы внедрили ML в приложение с почти 50 миллионами пользователей. Опыт Сбера

Блог компании СберData MiningАлгоритмыМашинное обучениеДизайн мобильных приложений
Recovery mode
Привет, Хабр! Меня зовут Николай, и я занимаюсь построением и внедрением моделей машинного обучения в Сбербанке. Сегодня расскажу о разработке рекомендательной системы для платежей и переводов в приложении на ваших смартфонах.


Дизайн главного экрана мобильного приложения с рекомендациями

У нас было 2 сотни тысяч возможных вариантов платежей, 55 миллионов клиентов, 5 различных банковских источников, полсолонки разработчиков и гора банковской активности, алгоритмов и всего такого, всех цветов, а ещё литр рандомных сидов, ящик гиперпараметров, пол-литра поправочных коэффициентов и две дюжины библиотек. Не то чтобы это всё было нужно в работе, но раз начал улучшать жизнь клиентов, то иди в своём увлечении до конца. Под катом история о сражении за UX, о правильной постановке задачи, о борьбе с размерностью данных, о вкладе в open-source и наших результатах.

Читать дальше →
Всего голосов 50: ↑38 и ↓12 +26
Просмотры14.9K
Комментарии 57

Не читайте, перечитывайте

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

«Удивительно, но человек не может читать книгу: он может только перечитывать ее», утверждает Владимир Набоков, творчество которого я изучал в своей дипломной работе несколько лет назад. Он продолжает, «Хороший читатель, крупный читатель, активный и творческий читатель, это перечитыватель», и далее отстаивает свое мнение с позиций искусства: чтобы насладиться книгой и оценить ее по достоинству, читатель должен быть способен почувствовать ее так, как общаются с произведением живописи: вне линейного отрезка времени, а разом, что возможно только тогда, когда читатель знает все части книги достаточно хорошо, чтобы осмыслить ее как совместное целое*.

*Владимир Набоков Лекции по зарубежной литературе
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Просмотры11.2K
Комментарии 12

19 полезных возможностей файла .htaccess

Блог компании Click.ruПоисковая оптимизация
19 полезных возможностей файла .htaccess


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

Читать дальше
Всего голосов 28: ↑17 и ↓11 +6
Просмотры49K
Комментарии 16

Часто задаваемые вопросы о системах типов

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



Давайте раз и навсегда разберёмся во всём том, что вызывает неразбериху при разговорах о системах типов.
Читать дальше →
Всего голосов 49: ↑41 и ↓8 +33
Просмотры9.7K
Комментарии 111

Книга «Предиктивное моделирование на практике»

Блог компании Издательский дом «Питер»Data MiningАлгоритмыRПрофессиональная литература
imageПривет, Хаброжители! «Предиктивное моделирование на практике» охватывает все аспекты прогнозирования, начиная с ключевых этапов предварительной обработки данных, разбиения данных и основных принципов настройки модели. Все этапы моделирования рассматриваются на практических примерах из реальной жизни, в каждой главе дается подробный код на языке R.

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

Авторы постарались избежать сложных формул, для усвоения основного материала достаточно понимания основных статистических концепций, таких как корреляция и линейный регрессионный анализ, но для изучения углубленных тем понадобится математическая подготовка.
Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Просмотры5.2K
Комментарии 0

Использование Context API в React для создания глобальной темы приложения

ReactJS
Из песочницы
Привет, это мой первый пост на Хабр. Надеюсь, Вам будет интересно.

Итак, я хочу начать серию постов, напрямую или косвенно касающихся создания ui-kit.

image

Задача данного поста: Найти решение контроля темы приложения, компоненты которого выполнены в React.js. Будем использовать две глобальные темы — dark и light.

В данном примере я буду использовать модуль create-react-context, для создания контекста.
Читать дальше →
Всего голосов 11: ↑11 и ↓0 +11
Просмотры4.1K
Комментарии 8

Использование let объявлений переменных и особенности образуемых связываний в замыканиях в JavaScript

JavaScriptПрограммированиеАлгоритмыООП
Из песочницы
Написать данную заметку меня сподвигло прочтение статьи на Хабре «Var, let или const? Проблемы областей видимости переменных и ES6» и комментариев к ней, а также соответствующей части книги Закаса Н. «Understanding of ECMAScript 6». Исходя из прочитанного я вынес, что не всё так однозначно в оценке использования var или let. Авторы и комментаторы склоняются к тому, что при отсутствии необходимости поддержки старых версий браузеров имеет смысл полностью отказаться от использования var, а также использовать некоторые упрощенные конструкции, заместо старых, по умолчанию.

Про области видимости этих объявлений уже сказано достаточно, в том числе и в указанных выше материалах, поэтому я хотел бы заострить внимание только на некоторых неочевидных моментах.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры10K
Комментарии 1

Блокировки в PostgreSQL: 1. Блокировки отношений

Блог компании Postgres ProfessionalPostgreSQLSQL
Два предыдущих цикла статей были посвящены изоляции и многоверсионности и журналированию.

В этом цикле мы поговорим о блокировках (locks). Я буду придерживаться этого термина, но в литературе может встретиться и другой: замóк.

Цикл будет состоять из четырех частей:

  1. Блокировки отношений (эта статья);
  2. Блокировки строк;
  3. Блокировки других объектов и предикатные блокировки;
  4. Блокировки в оперативной памяти.

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



Общая информация о блокировках


В PostgreSQL используется множество самых разных механизмов, которые служат для блокировки чего-либо (или по крайней мере так называются). Я поэтому начну с самых общих слов о том, зачем вообще нужны блокировки, какие они бывают и чем отличаются друг от друга. Затем мы посмотрим, что из этого разнообразия встречается в PostgreSQL и только после этого начнем разбираться с разными видами блокировок подробно.
Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Просмотры23.5K
Комментарии 11

Defined or Undefined? Нюансы создания массивов в JavaScript

JavaScriptПрограммированиеАлгоритмыООП
image

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

Правда, задавший вопрос, так же как и те кто ему отвечал, не обратили внимания, на то, что фактически матрицу не получилось создать, а приведенный результат вычислений некорректен. Всё это меня заинтересовало, и, я решил копнуть чуть глубже, чтобы затем прийти к интересным умозаключениям, с которыми сейчас с вами и поделюсь.
Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Просмотры11.3K
Комментарии 29

Информация

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