Search
Write a publication
Pull to refresh
2
0
Send message

Масштабирование видео в WebRTC

Reading time5 min
Views2.8K

Технология WebRTC, предоставленная Google для всеобщего использования в 2011 году, нашла широкое применение в системах видео коммуникации, трансляции видео, для создания групповых чатов, видеоконференций, роботов телеприсутствия и роботов-промоутеров. Ее главным достоинством является реализация базовых методов и классов непосредственно в браузере, что обеспечивает широчайшую совместимость с различными ОС и аппаратными платформами. В предлагаемой статье описывается реализованный нами метод масштабирования видео для передачи средствами WebRTC, с использованием Javascript и HTML5.

Читать далее

Почему инженеры презирают Agile

Reading time5 min
Views27K

Мы продолжаем цикл публикаций о недостатках Аgile методологии. Сегодня перевод статьи о том, почему инженеры презирают Agile (много новых удивительных наблюдений!)

Читать далее

DOM, который построил Chrome. Или не построил? Или не Chrome? Или не DOM?

Reading time15 min
Views25K

Обычный, теневой, виртуальный, инкрементальный… Как получилось, что простой программный интерфейс доступа к элементам веб-страниц обзавелся таким количеством «родственников»? Чем современные фреймворки не устраивает стандартная объектная модель документа или просто DOM? Что и как на самом деле отрисовывает браузер в процессе рендера веб-страницы?

Всем привет, это Макс Кравец из Holyweb. Помните сцену из Матрицы, в которой один из юных кандидатов в Избранные наставляет Нео: «Не пытайся согнуть ложку. Первое, что ты должен понять — ложки не существует!»? Давайте переформулирую: «Не пытайся изменить DOM...». А вот о том, что прячется под многоточием, мы сегодня и поговорим.

Читать далее

SQLite-песочница в браузере

Reading time4 min
Views31K

Чего мне всегда не хватало, так это аналога JSFiddle для SQLite. Онлайн-песочницы, в которой можно быстро проверить SQL-запрос и поделиться с другими.

Вот чего хотелось:

— Возможность загрузить готовую базу, а не писать SQL для создания таблиц.
— Подключать как локальные базы, так и удаленные (по url).
— Сохранять базу и запросы в облаке.
— Бесплатно и без регистрации.
— Свежайшая версия SQLite.
— Минимализм.

В итоге сделал сам

История о CSS-сбросах и все, что о них нужно знать. Еще раз об этом

Reading time40 min
Views30K

Небольшое вступление: меня заинтересовали CSS-сбросы по вполне практичной причине. Я инженер-консультант по программному обеспечению, поэтому работаю с разными клиентами и время от времени начинаю новые проекты.

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

Читать далее

Еще один конкурент TCP? Что умеет протокол Homa

Reading time3 min
Views9.9K

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

Читать далее

Что происходит, когда вводишь url, или как работает интернет

Reading time7 min
Views98K

Об этом спрашивают на собеседованиях. Структурированное понимание этого может помочь вам, даже если вы давно строите сложные архитектурные процессы или кодите 20-ый год подряд. Я — программист уже много лет, последние пару из которых пишу на Go в Каруне. Работа работой, а внутренний исследователь не дремлет. И вот я наконец-то решил привести в порядок информацию, разбросанную по разным закоулкам чертогов разума, по добротным книгам и статьям на тему сетевых технологий.

Хочу представить краткую выжимку о работе протоколов. А если тема окажется интересной, могу продолжить работать с ней более детально. Рассмотрим простейший пример: вы ввели некоторый url в адресную строку. Поехали.

Читать далее

Термо принтер и JavaScript

Reading time6 min
Views20K

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

Читать далее

Разделение, объединение и поворот PDF-документов на Python с помощью borb

Reading time5 min
Views11K

Формат переносимых документов (PDF) не является форматом WYSIWYG (What You See is What You Get (То, Что Вы Видите, это То, Что Вы Получаете)). Он был разработан, чтобы быть независимым от платформы, независимым от базовой операционной системы и механизмов рендеринга.

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

В этом руководстве мы будем использовать borb - библиотеку Python, предназначенную для чтения, манипулирования и генерации PDF-документов. Он предлагает как низкоуровневую модель (что позволяет получить доступ к точным координатам и макету), так и высокоуровневую модель (где вы можете делегировать точные расчеты полей, позиций и т. д.).

Читать далее

Структуры данных LinkedList и TreeMap для JavaScript

Reading time3 min
Views5.7K

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

Для удобного и быстрого кодирования можно применять структуры данных. Именно так и поступают при разработке на Java:

https://habr.com/ru/post/237043/

А вот для аналогичной работы с JavaScript оптимизированных инструментов по умолчанию не предоставляется. Реализация Array(), Set() и Map() перекладывается на сторонних разработчиков браузерных движков, а их разработки на сегодняшний день далеки от оптимальности:

https://habr.com/ru/company/ruvds/blog/518032/

Зададимся вопросом — а что если требуются прямо сейчас оптимальные по производительности и памяти структуры данных. Какой минимальный набор достаточно оптимальных структур реализовать и поддерживать? Один из вариантов ответа — это сделать двунаправленный связный список и сбалансированное дерево поиска.

Что это нам даст?

Реализуя связный список LinkedList мы получаем сразу список, двунаправленную очередь и стек. И если это сделать без JavaScript Array(), а лишь используя простые ссылки на объекты, то получаем стандартную и достаточно оптимальную структуру данных.

Если же сделать бинарное сбалансированное дерево поиска TreeMap, например AVL-дерево:

https://habr.com/ru/post/150732/

тогда используя эту реализацию можно получить следующие структуры данных:

Читать далее

Будь строже к себе: как ограничения помогают сделать код лучше

Reading time7 min
Views9.3K

Если вам приходилось задумываться о построении эффективной экосистемы проекта и определении ролей тимлида и разработчика — статья Артема Прозорова из ZeBrains для вас.

Предлагаю вам задуматься над одним вопросом. Но не спешите с ответом, потому что он не так очевиден, как может показаться:

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

Команда №1: Проектный менеджер, аналитик, тестировщик и несколько разработчиков, у каждого из которых за плечами минимум три года опыта. Все работают в одном офисе, посвящая свое время одному проекту в режиме fulltime.

Команда №2: Один сильный разработчик. Ему помогают множество не знакомых между собой людей из разных часовых поясов. У каждого — свой набор компетенций и уровень опыта. Работой над проектом участники занимаются в свободном режиме, по несколько часов в неделю.

* * *

Ответ на этот вопрос получим к концу статьи.

Читать далее

Руководство по модулю клавиатуры Python

Reading time5 min
Views199K

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

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

Читать далее

Нюансы установки сторонних прошивок на Android-смартфоны. Первые шаги. Установка стороннего Recovery

Reading time6 min
Views69K

Здравствуй, уважаемый читатель! Этот пост является первым в цикле статей про нюансы установки сторонних (далее — кастомных, от слова custom) прошивок на свои устройства под управлением ОС Andoid, а также о критически важных нюансах этого процесса. Цикл статей ориентирован на тех, кто либо только думает над тем, чтобы «накатить» на свой аппарат неофициальную прошивку, либо не знает некоторых моментов (например, как подружить GPay с новой ОС).

Читать далее

35 инструментов для веб-разработчика на каждый день

Reading time4 min
Views46K

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

Краткое содержание: проверка кода по стандартам, проверка вёрстки и стилей, работа с кодом, работа с графикой (SVG, фавиконки, конвертеры и сжималки), работа с текстом (типографы и конвертеры всего во всё).

Дисклеймер: подборка не претендует на полноту, но в комментариях собираем другие полезные инструменты.

Читать далее

CSS-переменные в медиазапросах

Reading time3 min
Views9.5K

К большой радости узнал о существовании PostCSS-плагина "PostCSS Custom Media", который уже сейчас позволяет использовать синтаксис кастомных медиазапросов из черновика спецификации "Media Queries Level 5", преобразуя их в синтаксис с числовыми значением, который поддерживается браузерами.

Читать далее

Топ-20 самых упоминаемых книг на HackerNews

Reading time4 min
Views15K
image

На HackerNews пользователь tracyhenry проанализировал 40 000 комментариев и составил рейтинг самых упоминаемых в комментариях книг.

Автор рейтинга преисполнен благодарности тем книгам, про которые он узнал благодаря HackerNews и решил отдать долг и написать приложение, которое бы проанализировало все рекомендации на Hackerews. Такие попытки были неоднократно (раз, два, три), но в предыдущих попытках были ограничения по размеру выборки, либо были недостаточно четкие правила поиска и поэтому картина была не полна. Еще сложность представляли случаи, когда названия книги пересекалось с названием фильма («Первому игроку приготовиться») или название — это общеупотребительное слово/словосочетание: «Стив Джобс» или «Медитация».

Автор рейтинга использовал NLP-модель BERT для повышения точности распознавания (и 4000 вручную размеченных комментариев). Новая версия извлекает в 9-50 раз больше упоминаний, чем предыдущие решения.

Ограничения текущей модели: 1) не различает две разные книги с одинаковым названием («Гарри Поттер» и «Гарри Поттер и методы рационального мышления»). 2) не понимает, что это гневный комментарий.

Книги из топ-20 очень известные, и нет смысла давать их краткое описание, это уже делали много раз. Привожу здесь список из топ-20 (более полный см тут), чтобы вы могли свериться, насколько вы «соответствуете повестке мировой ИТ элиты» и отзывы/конспекты/упоминания про эти книги на Хабре.

Что вы уже давно прочитали, а что упустили из вида и почему?
Читать дальше →

Какую СУБД выбрать и почему? (Статья 1)

Reading time6 min
Views85K

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

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

Читать далее

Подборка полезных библиотек для Python с примерами #1

Reading time9 min
Views20K

У Python одно из самых больших комьюнити. Этот язык любят за его простоту, лояльность и за его универсальность, которая была достигнута созданием огромного числа библиотек и фреймворков, таких как numpy, django, flask, pygame, tornado, tensorflow и других. На сайте pypi содержится более 320 тысяч проектов от малоизвестных и заброшенных до огромных, которыми пользуются миллионы людей в различных сферах. 

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

Ознакомиться

Многоконсольный вывод для Python

Reading time2 min
Views7.9K

Существует много проекты в которых нужно сразу видеть результат переменных в момент выполнения программы. Например обработка нажатий клавиш от пользователя, навигация между страницами в GUI приложениях, обработка данных из форм на веб проектах.

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

Для этого используют обычный print() но по стандарту ограничен одной консолью, или loggin() но его нужно относительно дольше настраивать, чем проект console-debugger, по причине того что нужно указывать файл, стиль вывода даны в файл, рейтинг обработки, в ручную запускать слежение за файлом, в ручную закрывать слежение за файлом, когда вам больше не нужен обработчик.

Я понимаю плюсы лорнирования но они не подходят для дебаггинга ...

Вариант программы для отладки Python

Топ-5 частых штрих-кодов в нашей жизни

Reading time4 min
Views9.6K

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

Читать далее

Information

Rating
6,232-nd
Registered
Activity