Pull to refresh
-2
Karma
0
Rating
Roman Goncharenko @coderun

User

  • Posts
  • Comments

Новый кодек AV1: ускоряем загрузку видео в браузере

FirefoxWebsite developmentWorking with videoGoogle ChromeHTML
Translation
Tutorial
В этом руководстве мы научимся использовать видео в Вебе, как это принято в 2019. Chrome и Firefox начали поддерживать новый кодек AV1 — для них видео можно сделать в два раза меньше.

Отдельно поговорим, как заменить GIF на видео в AV1 и H.264 — тогда его размер упадёт в 20-40 раз.

AV1 в браузере

YouTube уже использует его в TestTube. Netflix заявил, что AV1 будет «их основным кодеком следующего поколения».

Мы в Злых Марсианах уже используем его на нашем сайте и на Ампллифере. В этой статье я поделюсь опытом внедрения AV1 и шаг-за-шагом расскажу, как вставить видео, чтобы оно работало во всех браузерах.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Views50.4K
Comments 85

Курс лекций по JavaScript и Node.js в КПИ

Website developmentJavaScriptProgrammingNode.JS

100 лекций по программированию в Киевском политехническом институте


Товарищи инженеры, как и было обещано в анонсе, половина лекций (а это 51) уже доступны для просмотра на ютюбе и я продолжу их записывать в 2019 году. Часть из нужно будет перезаписать, потому, что в первых лекциях не самый лучший звук и потому, что очень простые темы у меня пока не очень хорошо получаются. Лучше вышли сложные и актуальные темы, которые мне и самому более интересно рассказывать. Я бы не сказал, что это курс для начинающих, скорее, это курс для тех, кто уже знает синтаксис. За это время поступило множество предложений, как улучшить способ подачи материала: делить на более короткие лекции, подготовить задачи для практического освоения, записывать семинары и ответы на вопросы студентов, добавить в программу разбор целого ряда спорных и холиварных тем. Но не все сразу, я и так посвящаю этому треть жизни.

Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Views109.9K
Comments 15

Что слушают разработчики: от классики до игровых саундтреков — обсуждаем все самое интересное

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

Вопрос только в том, какой музыкальный жанр выбрать.

На таких площадках, как Reddit, Hacker News и Хабр обсуждению этого вопроса посвящен не один тред. Мы решили проанализировать мнения разработчиков и отобрать наиболее интересные.

Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Views31.1K
Comments 81

Компьютерное зрение и машинное обучение в PHP используя библиотеку opencv

Open sourcePHPProgrammingImage processingMachine learning
Tutorial
Всем привет. Это моя юбилейная статья на Хабре. За почти 7 лет я написал 10 статей (включая эту), 8 из них — технические. Общее количество просмотров всех статей — около полумиллиона.
Основной вклад я внёс в два хаба: PHP и Серверное администрирование. Мне нравится работать на стыке этих двух областей, но сфера моих интересов гораздо шире.

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

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


Читать дальше →
Total votes 41: ↑41 and ↓0 +41
Views27.2K
Comments 19

Могут ли PWA (Progressive Web Apps) образца 2018 года составить достойную конкуренцию нативным приложениям?

Google Developers corporate blogWebsite developmentGoogle ChromeDevelopment of mobile applicationsWebAssembly


Когда изменения происходят постепенно, шаг за шагом, порой бывает трудно заметить насколько они драматичны и всеобъемлющи. Казалось бы всего несколько лет назад web платформа проигрывала нативным приложением практически по всем фронтам, и пропасть между тем, что можно было сделать в браузере, и тем, что было доступно приложениями, загружаемым из магазинов, таких как Apple App Store или Google Play Store, была ужасающе огромной. Одним из свидетельств этой пропасти является то, что в 2007 году web по факту был основной платформой разработки приложений для первого iPhone, но эта платформа явно не взлетела. App Store же появился только год спустя со второй версии операционной системы, и сразу же случился бум нативных приложений, который и сформировал рыночный ландшафт таким, каким мы его знаем теперь.


Многое изменилось с тех пор, и web технологии на месте не стояли. Они шли по пути снятия ограничений, и то, что раньше было принципиально невозможно — работа оффлайн, фоновая синхронизация данных, push-нотификации, поддержка входа в один клик и оплаты с помощью кредитных карт, Apple Pay, Google Pay и других методов, встроенная в браузер — теперь реальность. Эти функции органично дополняют основную часть платформы — HTML/CSS и JavaScript, которая в последние годы развивалась более чем активными темпами. Например новый проект Houdini, который ещё находится на достаточно ранней стадии, снимает почти все ограничения на то, что можно сделать с помощью CSS, давая возможность среди прочего создавать свои лэйауты и использовать их наравне с Grid и Flexbox, и открывая программный доступ к внутренностям CSS движка. Но даже и без Houdini уже сейчас можно создавать CSS анимации, работающие со скоростью 60 FPS (frames per second).

Читать дальше →
Total votes 53: ↑51 and ↓2 +49
Views59.3K
Comments 66

Редактор еженедельных расписаний

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

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

Напишу, обо что обычно спотыкаются и как это решить, решу задачку о закрашивании полоски, а затем приведу примеры простого бэкенда на node/sequelize и закончу несложным фронтендом на vue/vuex/vuetify/nuxt, где можно будет все это потаскать мышкой и посмотреть, как работает.

Коды выложены на github, развернуто здесь.


Читать дальше →
Total votes 10: ↑10 and ↓0 +10
Views6.8K
Comments 6

Классические алгоритмы и структуры данных на JavaScript

JavaScriptProgrammingAlgorithms
Привет Всем! Я недавно запустил на GitHub проект JavaScript Algorithms and Data Structures, который содержит примеры классических алгоритмов и структур данных написанных на JavaScript с объяснениями, примерами и ссылками для дальнейшего изучения (в частности на соответствующие YouTube видео).

Основная задача проекта — помочь программистам в изучении и применении алгоритмов и сделать это на JavaScript-е.
Читать дальше →
Total votes 76: ↑71 and ↓5 +66
Views73.5K
Comments 31

Как сделать сайт доступным для незрячих и слабовидящих?

Web designWebsite developmentInterfacesUsabilityAccessibility
Если проследить эволюцию создания сайтов и сервисов, то можно заметить, что сначала было важно, чтобы они хотя бы были и работали. Затем создатели стали задумываться о внешней красоте и привлекательности для клиентов, ну а потом постепенно стали ориентироваться и на удобство для пользователей.

Теперь же возник новый тренд — “доступность”. Ведь сейчас сайты просматривают не только с больших мониторов в спокойной обстановке, но и со смартфонов в трясущихся автобусах и ноутбуков в шумных кафе, а среди пользователей появляется все больше пенсионеров и даже людей с ограниченными возможностями.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views35.5K
Comments 14

[в закладки] Инструменты JS-разработчика, на которые стоит обратить внимание

RUVDS.com corporate blogWebsite developmentJavaScriptNode.JSWeb services testing
Translation
Программист Трэвис Фишер, перевод статьи которого мы публикуем сегодня, решил рассказать о самых полезных, с его точки зрения, модулях и вспомогательных инструментах для JS-разработки. Полезными он считает технологии, которыми пользуется постоянно и в ценности которых убедился на собственном опыте. В частности, речь пойдёт о библиотеках и утилитах, предназначенных для серверной и клиентской разработки на JavaScript. Трэвис говорит, что не стремился к тому, чтобы включить в свой материал нечто узкоспециализированное, или сделать что-то вроде очередного awesome-списка, которые сами по себе весьма полезны, но обычно оказываются несколько перегруженными. Здесь речь пойдёт лишь о том, самом лучшем, что он с полной уверенностью может порекомендовать другим.

image
Читать дальше →
Total votes 32: ↑28 and ↓4 +24
Views21K
Comments 12

Простой статический сайт на Webpack 4

Website developmentCSSJavaScriptHTMLNode.JS
Tutorial


После прочтения ряда статей (например, этой) решил перейти на современный подход с использованием Node.js при написании простых сайтов с подхода «динозавров». Ниже представлен разбор примера сборки простого статического сайта с помощью Webpack 4. Статья написана, так как инструкции с решением моей задачи не нашел: пришлось собирать всё по кусочкам.

Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Views119.6K
Comments 88

У нас проблемы с промисами

Mail.ru Group corporate blogWebsite developmentJavaScriptNode.JS
Translation
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи
Total votes 139: ↑136 and ↓3 +133
Views176.4K
Comments 121

Анализ публикаций на Хабрахабре за 2017 год. Статистика, полезные находки и рейтинги

Cloud4Y corporate blogOpen dataResearch and forecasts in ITWeb analyticsReading room


Подходит к концу 2017 год. Пришло время подвести некоторые итоги. Каким был этот год на Хабрахабре? Чтобы ответить на этот вопрос мы, в Cloud4Y, решили собрать статистику по всем публикациям за прошедший с начала года период. В этой статье мы расскажем о том, что показалось нам наиболее интересным.

С 1 января по 18:00 22 декабря 2017 года на Хабрахабре было опубликовано 10684 поста, которые посмотрели около 123 миллионов раз! Мы не включили в счёт 46 мегапостов и публикации, которые были скрыты или перенесены на Geektimes. В среднем в месяц публиковалось около 900 постов, а рекордным стал март.


Читать дальше →
Total votes 92: ↑90 and ↓2 +88
Views28K
Comments 34

GrabDuck: Как мы делаем статьи из закладок

GrabDuck.com corporate blogWebsite developmentSearch engines
Приветствуем тебя читатель. Не так давно на нашем сервисе GrabDuck появился новый парсер/экстрактор статей. Между собой мы называем его GrabDuck Article Extractor 2.0 или сокращенно GAE 2.0. Почему так громко? Дело в том, изменений и усовершенствований накопилось столько, что нам пришлось полностью выкинуть старый, с которым мы жили последние полтора года и создать новый парсер статей “с нуля”. И да, для нас это большое и важное изменение. Что нам не нравилось и что мы сделали в результате описано под катом.


Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Views2.5K
Comments 0

PYCONRU-2016: видео всех докладов и презентации

IT-People corporate blogWebsite developmentPythonProgrammingDjango
Tutorial

3-4 июля недалеко от Москвы прошла четвертая международная конференция python-разработчиков PyCon Russia. Под катом — много видео, презентации и фотографии. А еще посмотрите отчетный ролик — в нем коротко о том, что было на PyCon-2016 плюс немного из истории конференции.



Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Views11K
Comments 3

Идеальный Мини-Хакинтош

LUNA Design corporate blogComputer hardwareDesktop PC's
Tutorial
image

Когда в 2005 году Apple перешла на платформу Intel, энтузиасты со всего мира задались целью установить MAC OS X на обычные PC (Хакинтош). На пути реализации этой затеи стояли четыре причины. 2 физические и 2 юридические. Дело в том, что для запуска компьютера MAC используется не привычный BIOS, а собственный EFI загрузчик. Вторая причина, это чип SMC который установлен в каждом компьютере Mac. Он генерирует ключи для запуска всех системных приложений MAC OS X. Благодаря нашему соотечественнику под ником Netkas, удалось обойти эти два ограничения созданием эмулятора загрузчика EFI (Chameleon, Chemera, Clover) и эмулятора чипа SMC (FakeSMC.kext). Этих двух программных решений достаточно, что бы установить MAC OS на PC.
Читать дальше →
Total votes 63: ↑48 and ↓15 +33
Views126K
Comments 125

5 наиболее перспективных JavaScript фреймворков в 2016-м году

JavaScript
Sandbox
В этой публикации сделаем обзор пяти наиболее интересных и перспективных JavaScript фреймворков первой половины 2016 года. В обзоре собраны вместе различные типы библиотек, которые предоставляют различный функционал — от создания UI компонентов к изоморфному JavaScript. Это не будет глубокий и детальный технический анализ, скорее это краткое введение в ключевые особенности.

Ниже список наших фреймворков:

Теперь, пришло время взглянуть на них поближе.
Читать дальше →
Total votes 51: ↑26 and ↓25 +1
Views24.5K
Comments 43

Анонс публичной бета-версии NGINX Amplify

NginxDevOps
Translation


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

Узнать больше и увидеть NGINX Amplify в действии можно записавшись на онлайн вебинар, который пройдет 13 июля в 20:00 по московскому времени.

Также, вы можете начать бесплатно использовать NGINX Amplify прямо сейчас, пройдя регистрацию.
Подробности
Total votes 26: ↑23 and ↓3 +20
Views18.1K
Comments 64

Workflow просмотра сериалов для Alfred

PythonProgrammingDevelopment for MacOS

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


Для тех кто не знает что такое Alfred

Alfred — это Spotlight на стероидах. Умеет чуть более чем всё что умеет Spotlight, плюс, начиная со второй версии, поддерживает написание, а так же использование написанных другими людьми, так называемых, workflows. То бишь, расширений функциональности самописными скриптами. Для их написания поддерживается несколько скриптовых языков:


  • bash
  • zsh
  • php
  • ruby
  • python
  • perl
  • osascript
  • javascript

Речь в этой статье пойдет об одном из таких расширений.


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


Красота, не правда ли?

Под катом пара бонусов для любителей сериалов
Total votes 18: ↑16 and ↓2 +14
Views17.5K
Comments 13

Cериалокачалка на python3 с поддержкой расширений

PythonProgrammingDevelopment for MacOS

В качестве вступления стоит сказать что я пользуюсь macOS и потому некоторые части:


  • Автозапуск (launchd)
  • Формат конфигурационных файлов (plist)
  • Программа, используемая для уведомлений (terminal-notifier)

будут специфичны для этой ОС. Однако, если Вас заинтересует проект, думаю, поменять пару путей и слегка поправить несколько функций, чтобы заставить этот код работать с Вашей системой уведомлений, yaml'ом и, допустим, кроном, не составит труда.


Итак, к делу.


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

Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views24K
Comments 44

Исключения в Java, Часть I (try-catch-finally)

GolovachCourses corporate blogJava
Tutorial
Это первая часть статьи, посвященной такому языковому механизму Java как исключения (вторая (checked/unchecked) вот). Она имеет вводный характер и рассчитана на начинающих разработчиков или тех, кто только приступает к изучению языка.

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

1. Ключевые слова: try, catch, finally, throw, throws
2. Почему используем System.err, а не System.out
3. Компилятор требует вернуть результат (или требует молчать)
4. Нелокальная передача управления (nonlocal control transfer)
5. try + catch (catch — полиморфен)
6. try + catch + catch + ...
7. try + finally
8. try + catch + finally
9. Вложенные try + catch + finally


1. Ключевые слова: try, catch, finally, throw, throws


Механизм исключительных ситуаций в Java поддерживается пятью ключевыми словами
  • try
  • catch
  • finally
  • throw
  • throws


«Магия» (т.е. некоторое поведение никак не отраженное в исходном коде и потому неповторяемое пользователем) исключений #1 заключается в том, что catch, throw, throws можно использовать исключительно с java.lang.Throwable или его потомками.
Читать дальше →
Total votes 67: ↑47 and ↓20 +27
Views360.1K
Comments 24

Information

Rating
5,771-st
Location
Россия
Date of birth
Registered
Activity