Pull to refresh
1
0

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

Send message

5 ошибок при разработке WebRTC звонков из браузера

Reading time5 min
Views17K
precut

WebRTC — не самая простая штука. Только недавно API стали поддерживать все основные браузеры, но с оговорками и «нюансами». Добавим к этому темное наследие VoIP телефонии в виде торчащего наружу SIP, борьбу между Ёжиком и SIP с применением oRTC, падающие при неудачном сочетании звезд браузеры — и получаем штуку, которую не в любом коворкинге за вечер запилишь. Цахи, бессменный автор bloggeek.me и старый телеком-разработчик, продолжает писать как все это правильно готовить. А мы в Voximplant адаптируем перевод для Хабра, основываясь на собственном многолетнем опыте голосовых и видеозвонков с участием браузеров.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments26

15 фразовых глаголов, которые пригодятся вам на работе

Reading time5 min
Views39K
Фразовые глаголы – одна из самых коварных и загадочных тем в английском языке. Коварная она потому, что глаголов много, они легко входят и выходят из обихода, а загадочная – потому что к большинству глаголов можно подобрать не фразовый, а обычный синоним, но в то же время вероятность его употребления крайне низкая. Фразовые глаголы незаменимы в ежедневном общении на любую тему, и в офисе вы тоже не раз их услышите. А еще вы часто писали о них в комментариях, поэтому мы решили, что будет актуально собрать несколько подборок фразовых глаголов на самые насущные темы, сегодня — первая из них.
Читать дальше →
Total votes 36: ↑31 and ↓5+26
Comments63

Абсолютно бесшумный, компактный безвентиляторный компьютер на полноценном десктопном процессоре. DIY реализация

Reading time4 min
Views57K


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

Основные задачи, выполняемые мною на ПК, это разработка несложных вещей в САПР, редактирование документов в Ворде/Экселе а также просмотр котиков разной полезной информации в интернете. А ещё, наверное, стоит сказать что я работаю в фирме, имеющей станок для лазерной резки металла, гильотину, листогиб, и-вот-это-всё.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments160

Какие необычные музыкальные инструменты используют в озвучке фильмов ужасов

Reading time4 min
Views17K
Ранее мы уже писали о музыкальных инструментах, которые необычно звучат и интересно выглядят, но не становятся популярными. Они, что называется, «известны в определенных кругах» — например, среди поклонников этнической музыки или в субкультуре.

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

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


Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments9

Правила английского, которые нарушают ваши иностранные коллеги

Reading time4 min
Views62K


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

Двойное отрицание


Вы же помните, что в предложении на английском достаточно одного отрицания? А потом вдруг слушаем песню Rolling Stones и слышим “I can’t get no satisfaction”. Все дело в том, что это песня, тут можно, скажите вы. И это верно. Но еще стоит упомянуть, что двойное отрицание делает фразу эмоциональнее. Поэтому такие фразы и стали популярны. Но это неформальный способ, так что не увлекайтесь с двойными отрицаниями.
Читать дальше →
Total votes 77: ↑72 and ↓5+67
Comments191

Вертикальный ритм

Reading time4 min
Views45K
image

Сетка 8pt — это мощная система для создания последовательных и визуально привлекательных пользовательских интерфейсов. Этот пост о том, как установить вертикальный ритм и типографию в сетке 8pt. Чтобы лучше понимать материал, зацените статью "Введение в систему 8pt сеток" и "Сетка на основе 8pt: обводка и разметка".

Что же такое вертикальный ритм и почему он так важен


Ритм достигается тогда, когда элементы вашего дизайна состоят из повторяющихся шаблонов. Это позволяет вашему окончательному дизайну выглядеть преднамеренно, профессионально и последовательно.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments4

Взлом визуальной системы: 11 оптических иллюзий в графическом дизайне

Reading time7 min
Views68K
Глубока ли кроличья нора?

image

Сколько минут вам потребуется, чтобы понять в чем фишка?

Фрэнсис Бэкон в 1620 году разделил источники человеческих ошибок, стоящих на пути познания, на четыре группы, которые он назвал «призраками» или «идолами» (лат. idola).

  • «Призраки рода» проистекают из самой человеческой природы, они не зависят ни от культуры, ни от индивидуальности человека. «Ум человека уподобляется неровному зеркалу, которое, примешивая к природе вещей свою природу, отражает вещи в искривлённом и обезображенном виде».
  • «Призраки пещеры» — это индивидуальные ошибки восприятия, как врождённые, так и приобретённые. «Ведь у каждого, помимо ошибок, свойственных роду человеческому, есть своя особая пещера, которая ослабляет и искажает свет природы».
  • «Призраки площади (рынка)» — следствие общественной природы человека, — общения и использования в общении языка. «Люди объединяются речью. Слова же устанавливаются сообразно разумению толпы. Поэтому плохое и нелепое установление слов удивительным образом осаждает разум».
  • «Призраки театра» — это усваиваемые человеком от других людей ложные представления об устройстве действительности. «При этом мы разумеем здесь не только общие философские учения, но и многочисленные начала и аксиомы наук, которые получили силу вследствие предания, веры и беззаботности». [Wikipedia]

Под катом — наглядная демонстрация уязвимости нашего мозга к атакам через визуальный ввод. Представляю вам перевод статьи продуктового дизайнера и фронтэнд-разработчика Balraj Chana, про то как можно использовать/нейтрализовать эффект оптических иллюзий.
Читать дальше →
Total votes 86: ↑78 and ↓8+70
Comments28

Root хуже Михалкова

Reading time2 min
Views42K

Рут – это мифическое существо в экосистеме Linux. Он может всё: зайти в любой каталог, удалить любой файл, завершить любой процесс, открыть любой порт. В общем это суперчеловек, чрезвычайно могущественный и очень полезный. Но задумывались ли вы когда-нибудь, какую цену мы платим руту? Не думали же вы, что он работает за просто так.


Вы знаете команду df? Она показывает все подключенные сейчас диски и статистику по ним: сколько место занято, сколько свободно. Например:


$ df -m
Filesystem     1M-blocks   Used Available Use% Mounted on
udev                 224      1       224   1% /dev
tmpfs                 48      1        47   2% /run
/dev/dm-0           9204   7421      1294  86% /

Вы когда-нибудь замечали, что для локальных дисков сумма Used и Available чаще всего меньше общего размера диска? Ненамного, но меньше.

Читать дальше →
Total votes 103: ↑80 and ↓23+57
Comments140

Cила PostgreSQL

Reading time22 min
Views20K

Встречаясь со сложной нетривиальной задачей по поиску и обработке данных, порой хочется решить ее в лоб. И хотя ты понимаешь, что решение возможно будет медленным или вообще нежизнеспособным, а знаний и опыта не хватает, чтобы решить ее по-настоящему, не нужно спешить. Важно понять, что СУБД были специально созданы для этого, и решать задачи, предназначенные для них, другими способами не стоит.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments51

Погружение в CSS: метрики шрифтов, line-height и vertical-align

Reading time11 min
Views42K
image

line-height и vertical-align — это простые свойства CSS. Настолько простые, что большинство из нас уверены, что понимают, как они работают и как их использовать. К сожалению, это не так — на самом деле они, пожалуй, являются самыми сложными свойствами, поскольку играют важную роль в создании малоизвестной особенности CSS под названием «строчный контекст форматирования» (inline formatting context).

Например, line-height можно задать в виде длины или безразмерного значения, но его значение по умолчанию — normal (стандартное). Хорошо, но что значит «стандартное»? Зачастую пишут, что это (как правило) 1, или, может быть, 1,2. Даже в спецификации CSS нет четкого ответа на данный вопрос.

Нам известно, что безразмерное значение line-height зависит от значения font-size, но проблема в том, что font-size: 100px выглядит по-разному для разных гарнитур. В связи с этим возникает вопрос: всегда ли line-height будет одинаковым или может различаться? Действительно ли это значение находится в промежутке от 1 до 1,2? А как vertical-align влияет на line-height?

Давайте углубимся в не самый простой механизм CSS…
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments9

Выходим в интернет за пределами РФ: (MikroTik<->Ubuntu) * GRE / IPsec

Reading time8 min
Views71K
Позволю себе опубликовать свой опыт применения сетевых технологий в меру моей испорченности для выхода в интернет из-за пределов РФ. Не будем рассуждать о том, зачем это нужно. Надеюсь, что все всем и так понятно.

Итак, у нас есть статический публичный IP адрес, который приходит Ethernet шнуром в MikroTik RouterBOARD 750G r3 (hEX). Пробуем собрать вот такую конструкцию.


Настройку L2tp линка в рамках этой статьи я не описываю, а на схеме он нарисован только потому, что в ней упоминается.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments50

Учим webworkers хорошим манерам

Reading time4 min
Views9K
Рано или поздно у каждого кто работал с webworkers возникает ситуация когда код превращается в кашу вроде этого:

main.js
const worker = new Worker('test.worker.js');
worker.onmessage = (data) => {
  if(data.eventName === 'someFuncResult')
    someFunc();
  else if(data.eventName === 'someFunc2Result')
    someFunc2();
};

worker.postMessage({eventName: 'someFunc'});

test.worker.js
self.addEventListener('message', (data) => {
  if(data.eventName === 'someFunc') {
    doSomeFunc();
    self.postMessage('someFuncResult');
  }
  
 if(data.eventName === 'someFunc2') {
    doSomeFunc();
    self.postMessage('someFunc2Result');
  }
})


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

Цели:

— Читаемость кода
— Конкурентные запросы
— Ассинхронные функции
— Прозрачная обработка ошибок
— Возможность отправки промежуточных результатов выполнения процедуры
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments1

Транслируем WebRTC, RTSP и RTMP потоки на Media Source Extensions по протоколу Websocket

Reading time4 min
Views21K

Media Source Extensions


Media Source Extensions (далее MSE) — это API браузера, позволяющее играть аудио и видео через соответствующие HTML5 тэги <audio/> и <video/>.

Чтобы проиграть кусок аудио или видео, нужно скормить этот chunk в данный элемент через MSE API. На основе MSE построены HLS-плееры. HLS фрагменты передаются в MSE и отображаются в плеере.

Давайте посмотрим на его Can I Use подробнее.
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments1

10 приёмов работы в терминале Linux, о которых мало кто знает

Reading time3 min
Views168K
Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.

Читать дальше →
Total votes 120: ↑95 and ↓25+70
Comments108

Comedy. Акторы в Node.JS для гибкого масштабирования

Reading time14 min
Views16K

Привет, хабравчане! В этой статье я познакомлю вас с фреймворком Comedy — реализацией акторов в Node.JS. Акторы позволяют масштабировать отдельные модули вашего Node.JS приложения без изменения кода.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments36

Запросы GraphQL без подключения к сети с помощью Redux Offline и Apollo

Reading time6 min
Views8.3K

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


А это… не просто.


Посмотрим, как создать эффективное решение, работающее без подключения к сети, на React и слое данных GraphQL с применением Apollo Client. Статья разбита на две части. На этой неделе разберем оффлайновые запросы. На следующей неделе примемся за мутации.

Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments1

Тонкости Javascript/Node.js. Увеличиваем производительность в десятки раз

Reading time3 min
Views43K

Вступление


Появилась необходимость обмениваться сообщениями между сервером и клиентом в бинарном виде, но в формате JSON в конечном итоге. Начал я гуглить, какие существуют библиотеки упаковки в бинарный вид. Пересмотрел немало: MesssagePack, Bson, protobuf, capnproto.org и другие. Но эти все библиотеки позволяют паковать и распаковывать готовые бинарные пакеты. Не очень копался, возможно ли делать парсер входящего трафика по кускам. Но суть не в этом. С такой задачей никогда не сталкивался и решил поиграться с нодой и сделать свой. Куда же без костылей и велосипедов? И вот с какими особенностями Node.js я столкнулся…
Читать дальше →
Total votes 47: ↑35 and ↓12+23
Comments38

Прокачка TinyMCE 4

Reading time11 min
Views59K
Здравствуйте, меня зовут Константин, я работаю front-end-разработчиком на информационно-развлекательном портале, основную долю контента которого составляют новости и статьи. И, конечно же, нам было крайне важно организовать удобную работу с порталом для наших редакторов. О том, каких успехов мы добились на данном поприще, и будет эта статья.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments5

Information

Rating
Does not participate
Location
Россия
Registered
Activity