Обновить
-3
0

Software Engineer

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

Борьба с утечками памяти в веб-приложениях

Время на прочтение13 мин
Охват и читатели16K
Когда мы перешли от разработки веб-сайтов, страницы которых формируются на сервере, к созданию одностраничных веб-приложений, которые рендерятся на клиенте, мы приняли определённые правила игры. Одно из них — аккуратное обращение с ресурсами на устройстве пользователя. Это значит — не блокировать главный поток, не «раскручивать» вентилятор ноутбука, не сажать батарею телефона. Мы обменяли улучшение интерактивности веб-проектов, и то, что их поведение стало больше похоже на поведение обычных приложений, на новый класс проблем, которых не существовало в мире серверного рендеринга.


Читать дальше →

Понимание CSS Grid (1 часть): Grid-контейнер

Время на прочтение10 мин
Охват и читатели49K

Приветствую! Представляю вашему вниманию перевод статьи «Understanding CSS Grid: Creating A Grid Container» автора Rachel Andrew


Понимание CSS Grid: Создание Grid-контейнера


Хотя технология CSS Grid стала поддерживаться некоторыми браузерами еще в 2017 году, у многих разработчиков пока не было возможности использовать её в своих проектах. Технология CSS Grid привносит множество новых свойств и значений. Из-за этого может казаться сложной. Однако, многие используемые в ней инструменты являются взаимозаменяемыми, а это значит, что вам не нужно изучать всю спецификацию, чтобы начать. Цель серии статей "Понимание CSS Grid" – провести читателей по пути от новичка до эксперта.


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


В этой статье мы рассмотрим:


  • Создание grid-контейнера с помощью display: grid или display: inline-grid
  • Создание колонок и строк с помощью grid-template-columns и grid-template-rows
  • Управление размерами неявных треков (полос / дорожек) с помощью grid-auto-columns и grid-auto-rows

15 лучших и крупнейших библиотек иконок

Время на прочтение3 мин
Охват и читатели46K


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

Сразу уточняем: это не 15 самых лучших библиотек, а 15 из лучших. Разумеется, есть и другие, не менее замечательные, о которых я не упомянул или не знаю.
И, нет, это не рейтинг — список маркированный, а не нумерованный.
Читать дальше →

Метод BFGS или один из самых эффективных методов оптимизации. Пример реализации на Python

Время на прочтение4 мин
Охват и читатели62K


Метод BFGS, итерационный метод численной оптимизации, назван в честь его исследователей: Broyden, Fletcher, Goldfarb, Shanno. Относится к классу так называемых квазиньютоновских методов. В отличие от ньютоновских методов в квазиньютоновских не вычисляется напрямую гессиан функции, т.е. нет необходимости находить частные производные второго порядка. Вместо этого гессиан вычисляется приближенно, исходя из сделанных до этого шагов.

Существует несколько модификаций метода:
L-BFGS (ограниченное использование памяти) — используется в случае большого количества неизвестных.
L-BFGS-B — модификация с ограниченным использованием памяти в многомерном кубе.

Метод эффективен и устойчив, поэтому зачастую применяется в функциях оптимизации. Например в SciPy, популярной библиотеки для языка python, в функции optimize по умолчанию применяется BFGS, L-BFGS-B.

Читать дальше →

Как работает метод главных компонент (PCA) на простом примере

Время на прочтение10 мин
Охват и читатели333K


В этой статье я бы хотел рассказать о том, как именно работает метод анализа главных компонент (PCA – principal component analysis) с точки зрения интуиции, стоящей за ее математическим аппаратом. Максимально просто, но подробно.
Читать дальше →

ИИ, пытающийся избежать проблем, научился сложному поведению

Время на прочтение6 мин
Охват и читатели34K


В обучении с подкреплением (Reinforcement Learning) часто используется любопытство в качестве мотивации для ИИ. Заставляющее его искать новые ощущения и исследовать окружающий мир. Но жизнь полна неприятных сюрпризов. Можно упасть с обрыва и с точки зрения любопытства это всегда будут очень новые и интересные ощущения. Но явно не то, к чему надо стремиться.


Разработчики из Berkeley перевернули задачу для виртуального агента с ног на голову: главной мотивирующей силой сделали не любопытство, а наоборот — стремление всеми силами избегать любой новизны. Но "ничего не делать" оказалось сложнее, чем кажется. Будучи помещенным в постоянно меняющийся окружающий мир, ИИ пришлось обучиться сложному поведению, чтобы избегать новых ощущений.

Читать дальше →

Проблема первого зрителя, или непростая конвертация WebRTC видеопотоков в HLS

Время на прочтение7 мин
Охват и читатели6.5K


Егор закрыл крышку ноутбука и потер красные от недосыпа глаза. "Клиенты продолжают жаловаться на зависания стрима, новый пакет исправлений совсем не помог! Что же делать с этим (censored) HLS?" — произнес он в пустоту кабинета.

Читать дальше →

4 крутых функции Numpy, которые я использую постоянно

Время на прочтение2 мин
Охват и читатели25K

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


Читать дальше →

52 датасета для тренировочных проектов

Время на прочтение5 мин
Охват и читатели199K
  1. Mall Customers Dataset — данные посетителей магазина: id, пол, возраст, доход, рейтинг трат. (Вариант применения: Customer Segmentation Project with Machine Learning)
  2. Iris Dataset — датасет для новичков, содержащий размеры чашелистиков и лепестков для различных цветков.
  3. MNIST Dataset — датасет рукописных цифр. 60 000 тренировочных изображений и 10 000 тестовых изображений.
  4. The Boston Housing Dataset — популярный датасет для распознавания паттернов. Содержит информацию о домах в Бостоне: количество квартир, стоимость аренды, индекс преступлений.
  5. Fake News Detection Dataset — содержит 7796 записей с разметкой новостей: правда или ложь. (Вариант применения с исходником на Python: Fake News Detection Python Project )
  6. Wine quality dataset — содержит информацию о вине: 4898 записей с 14 параметрами.

Читать дальше →

14 open-source проектов для прокачки Data Science мастерства (easy, normal, hard)

Время на прочтение7 мин
Охват и читатели41K
Data Science для начинающих

1. Sentiment Analysis (Анализ настроений через текст)


image

Посмотрите полную реализацию проекта Data Science с использованием исходного кода — Sentiment Analysis Project в R.

Sentiment Analysis — это анализ слов для определения настроений и мнений, которые могут быть положительными или отрицательными. Это тип классификации, при котором классы могут быть двоичными (положительными и отрицательными) или множественными (счастливыми, злыми, грустными, противными ...). Мы реализуем этот Data Science проект на языке R и будем использовать набор данных в пакете «janeaustenR». Мы будем использовать словари общего назначения, такие как AFINN, bing и loughran, выполнять внутреннее соединение, и в конце мы создадим облако слов, чтобы отобразить результат.

Язык: R
Набор данных/Пакет: janeaustenR
Читать дальше →

Quiet.js: библиотека для приёма и передачи данных ультразвуком

Время на прочтение3 мин
Охват и читатели5.9K


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

Судя по всему, Эллиот использовал программу DeepSound для сокрытия информации в звуковых дорожках. Это немного странно, потому что программа выпускается только под Windows, а хакер по определению не мог работать в этой операционной системе. Кроме DeepSound, существуют аналогичные инструменты для звуковой стеганографии. Например, QuickStego, AudioStegano, BitCrypt, MP3Stego, Steghide, AudioStego.

Однако в наше время компакт-диски уже не так актуальны. Гораздо удобнее прятать информацию в звуковых трансляциях, которые передаются и принимаются на любом аудиоустройстве. Например, если кто-то хочет втайне передать файлы с локального компьютера, он может незаметно для наблюдателя передать документ ультразвуком через колонки — и записать на телефон.
Читать дальше →

56 проектов на Python с открытым исходным кодом

Время на прочтение13 мин
Охват и читатели109K
image

1. Flask


Это микро-фреймворк, написанный на Python. Он не имеет валидаций для форм и уровня абстракции базы данных, но позволяет вам использовать сторонние библиотеки для общих функций. И именно поэтому это микро-фреймворк. Flask предназначен для простого и быстрого создания приложений, а также является масштабируемым и легким. Он основан на проектах Werkzeug и Jinja2. Вы можете узнать больше о нем в последней статье DataFlair о Python Flask.

2. Keras


Keras — нейросетевая библиотека с открытым исходным кодом, написанная на Python. Она удобна для пользователя, модульная и расширяемая, а так же может работать поверх TensorFlow, Theano, PlaidML или Microsoft Cognitive Toolkit (CNTK). В Keras есть все: шаблоны, целевые и передаточные функции, оптимизаторы и многое другое. Он также поддерживает сверточные и рекуррентные нейронные сети.

Работа над последним проектом с открытым исходным кодом на основе Keras — Классификация рака молочной железы.
Читать дальше →

Нейросеть, которая поможет выбрать фильм – «твои вкусы специфичны»

Время на прочтение4 мин
Охват и читатели12K
Привет!

Бывает смотришь фильм, и в голове только один вопрос – «я что опять попался на кликбейт?». Решим эту проблему и будем смотреть только годное кино. Предлагаю немного поэкспериментировать с данными и написать простую нейросеть для оценки фильма.

В основе нашего эксперимента лежит технология сентимент-анализа для определения настроения аудитории к какому-либо продукту. В качестве данных берем датасет обзоров пользователей на фильмы IMDb. Среда разработки Google Colab позволит быстро обучать нейросеть благодаря бесплатному доступу к GPU (NVidia Tesla K80).

Я использую библиотеку Keras, с помощью которой построю универсальную модель для решения подобных задач машинного обучения. Мне понадобится backend TensorFlow, дефолтная версия в Colab 1.15.0, поэтому просто обновим до 2.0.0.

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
!tf_upgrade_v2 -h

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

Я больше не хочу работать, никогда и ни над чем. Но из меня научились выжимать результаты

Время на прочтение7 мин
Охват и читатели278K


Дерьмовое утро удалёнщика всегда начинается одинаково. Если детский плач не смог вытащить меня из кровати, то нытье жены сделает это с гарантией. Сумасшедшие девять утра, через час дейли-синк-ап, а за вчера, как всегда, сделано нихрена. Быстро варю кофе и за комп. За пять минут до созвона пулл реквест с кодом энтерпрайзного качества увесисто встал в очередь на билд. Иду курить, но по дороге телефон заорал — я зачем-то установил на него скайп, и теперь работа может добраться до меня где угодно. Курение откладывается, я готовлюсь возмущаться, что мне позвонили раньше положенного. Напялил наушники, принял вызов. Вместо привычной девушки менеджера созвон начал какой-то незнакомый мне чел. «Всем привет, Аня заболела, я буду её замещать». Окей, кому какое дело, с таким же успехом они могли бы прислать нам в качестве менеджера собаку — ничего бы не изменилось.
Читать дальше →

Математика для искусственных нейронных сетей для новичков, часть 2 — градиентный спуск

Время на прочтение8 мин
Охват и читатели138K
Часть 1 — линейная регрессия

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

Градиентный спуск


В прошлой части был показан пример вычисления параметров линейной регрессии с помощью метода наименьших квадратов. Параметры были найдены аналитически — , где — псевдообратная матрица. Это решение наглядное, точное и короткое. Но есть проблема, которую можно решить численно. Градиентный спуск — метод численной оптимизации, который может быть использован во многих алгоритмах, где требуется найти экстремум функции — нейронные сети, SVM, k-средних, регрессии. Однако проще его воспринять в чистом виде (и проще модифицировать).
Читать дальше →

Огромный открытый датасет русской речи версия 1.0

Время на прочтение2 мин
Охват и читатели22K

image


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


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

Читать дальше →

React, JSX, импорт ES модулей (в том числе динамический) в браузере без Webpack

Время на прочтение9 мин
Охват и читатели17K

Эта статья — попытка свести воедино имеющиеся на текущий момент средства и выяснить, возможно ли создавать production ready приложения на React без предварительной компиляции сборщиками типа Webpack, или по крайней мере свести такую компиляцию к минимуму.


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


Возможность использовать ECMAScript modules (<script type="module"/> с импортами вида import Foo from './foo'; и import('./Foo')) прямо в браузере давно не новость, это хорошо поддерживаемы функционал: https://caniuse.com/#feat=es6-module.


Но в реальности мы импортируем не только свои модули, но и библиотеки. Есть отличная статья на эту тему: https://salomvary.com/es6-modules-in-browsers.html. И другая не менее хорошая статья достойная упоминания https://github.com/stken2050/esm-bundlerless.


Среди прочих важных вещей из этих статей, эти пункты наиболее важны для создания React приложения:


  • Поддержка package specifier imports (или import maps): когда мы пишем import React from 'react' на самом деле мы должны импортировать что-то подобное https://cdn.com/react/react.production.js
  • Поддержка UMD: React до сих пор распространяется как UMD и на данный момент авторы все еще не пришли к согласию как распространять библиотеку в виде модуля
  • JSX
  • Импорт CSS

Давайте пройдем по всем пунктам по очереди.

Читать дальше →

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 3 — Конвертация avi в mp4

Время на прочтение5 мин
Охват и читатели5.2K



Список переведённых частей серии:


  1. Приготовления
  2. Компиляция с Emscripten
  3. Конвертация avi в mp4 (вы тут)



В этой части ма разберём:



  1. Компиляцию библиотеки FFmpeg с оптимизированными аргументами.
  2. Управление файловой системой Emscripten.
  3. Разработку ffmpeg.js v0.1.0 и конвертацию видео.

Читать дальше →

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 2 — Компиляция с Emscripten

Время на прочтение6 мин
Охват и читатели5.6K



Список переведённых частей серии:


  1. Приготовления
  2. Компиляция с Emscripten (вы тут)
  3. Конвертация avi в mp4


Начиная с этой части, материал будет посложнее, так что не стесняйтесь гуглить по ходу чтения, если не понимаете, что происходит.


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


В этой части мы разберём:


  1. Как настроить окружение для Emscripten в Docker
  2. Использование emconfigure и emmake 
  3. Как решать проблемы, возникающие при компиляции FFmpeg с Emscripten

Читать дальше →

Компилируем FFmpeg в WebAssembly (=ffmpeg.js): Часть 1 — Приготовления

Время на прочтение3 мин
Охват и читатели9.9K



Список переведённых частей серии:


  1. Приготовления (вы тут)
  2. Компиляция с Emscripten
  3. Конвертация avi в mp4




Из этой части вы узнаете:


  1. Зачем это всё нужно
  2. Как скомпилировать FFmpeg в Docker



Зачем это всё нужно


Главные задачи у серии публикаций такие:


  1. Создать туториал по использованию Emscripten для компиляции C/C++ библиотек в JavaScript (более детальный и полезный, чем написанные ранее)
  2. Персональная памятка

Почему FFmpeg?


FFmpeg — это свободный проект с открытым исходным кодом, состоящий из обширного набора библиотек и программ для обработки видео, аудио и других мультимедийных файлов/трансляций. (из Википедии)


Библиотеки JavaScript, которая предоставляла бы подобные возможности, попросту не существует. Если вы погуглите «ffmpeg.js», то найдёте несколько решений, подобных тому что мы собираемся сделать:



Эти библиотеки, конечно, можно использовать, но у них есть свои недостатки:


  1. Используемые версии как FFmpeg, так и Emscripten устарели
  2. Проекты не поддерживаются уже долгое время

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

Читать дальше →

Информация

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