Как стать автором
Обновить
7
0

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

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

Трансляция h264 видео без перекодирования и задержки

Время на прочтение10 мин
Количество просмотров47K
Не секрет, что при управлении летательными аппаратами часто используется передача видео с самого аппарата на землю. Обычно такую возможность предоставляют производители самих БПЛА. Однако что же делать, если дрон собран своими руками?

Перед нами и нашими швейцарскими партнёрами из компании Helvetis встала задача транслировать видео в режиме реального времени с web-камеры с маломощного embedded-устройства на дроне по WiFi на Windows-планшет. В идеале бы нам хотелось:

  • задержку < 0.3с;
  • низкую загрузку CPU на embedded-системе (меньше 10% на одно ядро);
  • разрешение хотя бы 480p (лучше 720p).

Казалось бы, что может пойти не так?


Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии37

Как ты реализуешь аутентификацию, приятель?

Время на прочтение10 мин
Количество просмотров120K


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


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


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

Читать дальше →
Всего голосов 89: ↑82 и ↓7+75
Комментарии94

Образовательная система будущего не за горами?

Время на прочтение3 мин
Количество просмотров2.8K
Ознакомившись со статьей “Будущее высшего образования” и изучая проблемы и их решения, предложенные автором и комментирующими, я вдохновился написать свое рассуждение на данную тему, а также привести несколько уже существующих и разрабатываемых примеров.

image
Читать дальше →
Всего голосов 21: ↑10 и ↓11-1
Комментарии12

Как Discord каждый день изменяет размер 150 млн картинок с помощью Go и C++

Время на прочтение7 мин
Количество просмотров20K


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

Встречайте Image Proxy


Для выполнения этой работы мы создали сервис Python и креативно назвали его Image Proxy. Он загружает картинки с удалённых URL, а затем выполняет ресурсоёмкую задачу по ресайзингу с помощью пакета pillow-simd. Этот пакет работает удивительно быстро, используя где только возможно для ускорения ресайзинга инструкции x86 SSE. Image Proxy будет получать HTTP-запрос, содержащий URL, чтобы загрузить, изменить размер и, наконец, выдать окончательное изображение.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии12

Conan: менеджер зависимостей для C/C++

Время на прочтение7 мин
Количество просмотров63K
image

Здравствуйте. Сегодня речь пойдёт про Conan — современный менеджер зависимостей для C/C++. Если Вы уже активно работаете с ним, то навряд ли найдёте что-нибудь новое для себя. Иначе — прошу под кат.
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии72

Небольшое расхождение

Время на прочтение9 мин
Количество просмотров23K


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

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

positions of 394 raindrops on a tabletop


Повторю вопрос: выглядит ли этот паттерн как результат случайного процесса?
Читать дальше →
Всего голосов 72: ↑71 и ↓1+70
Комментарии27

// бухой, пофиксю позже

Время на прочтение5 мин
Количество просмотров103K
long long ago; /* in a galaxy far far away */

 //
    //                       _oo0oo_
    //                      o8888888o
    //                      88" . "88
    //                      (| -_- |)
    //                      0\  =  /0
    //                    ___/`---'\___
    //                  .' \\|     |// '.
    //                 / \\|||  :  |||// \
    //                / _||||| -:- |||||- \
    //               |   | \\\  -  /// |   |
    //               | \_|  ''\---/''  |_/ |
    //               \  .-\__  '-'  ___/-. /
    //             ___'. .'  /--.--\  `. .'___
    //          ."" '<  `.___\_<|>_/___.' >' "".
    //         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
    //         \  \ `_.   \_ __\ /__ _/   .-` /  /
    //     =====`-.____`.___ \_____/___.-`___.-'=====
    //                       `=---='
    //
    //
    //     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //
    //               佛祖保佑         永无BUG
    //

«Слава богу, багов нет»
Читать дальше →
Всего голосов 261: ↑235 и ↓26+209
Комментарии143

Моя компания не взлетела, 6 уроков ценою в 4 года жизни и $150 000

Время на прочтение5 мин
Количество просмотров65K
Симпатичная девушка попросилась на фейсбуке в друзья и спросила, почему мы приостановили развитие нашего проекта. А мы не приостанавливали, даже наоборот, дела пошли в гору — нащупали работающие пути получения трафика, выручка наконец начала расти. Но через несколько месяцев я понял, что она была права.

О том, как мы работали по 10 часов в сутки без выходных, получили инвестиции, прошли во ФРИИ, набрали более ста тысяч пользователей в США, нас хотел купить Sports Illustrated, но в итоге мы закрыли компанию.

Читать дальше →
Всего голосов 107: ↑96 и ↓11+85
Комментарии62

Паттерны проектирования без ООП

Время на прочтение4 мин
Количество просмотров41K
Во времена, когда я писал на Лиспе и совсем не был знаком с ООП, я пытался найти паттерны проектирования, которые мог бы применить у себя в коде. И всё время натыкался на какие-то жуткие схемы классов. В итоге сделал вывод, что эти паттерны в функциональном программировании не применимы.

Теперь я пишу на Питоне и с ООП знаком. И паттерны мне теперь намного понятней. Но меня по-прежнему воротит от развесистых схем классов. Многие паттерны прекрасно работают в функциональной парадигме. Опишу несколько примеров.
Читать примеры
Всего голосов 69: ↑49 и ↓20+29
Комментарии36

Данные из Google Таблиц на вашем сайте

Время на прочтение2 мин
Количество просмотров60K


Привет!

Для тех, кто пользуется Google Таблицами, есть хорошая новость — ниже описано решение, которое позволит импортировать данные из таблицы на ваш сайт.

Поехали.

1. Открываем Таблицу Google


Для примера, я возьму таблицу, в которую падают результаты из Google Формы.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии15

Работа мечты и поступление в вуз без экзаменов. Олимпиада «Я — профессионал» трек «Компьютерные науки»

Время на прочтение7 мин
Количество просмотров6.5K
Сегодня мы открываем серию материалов, посвященных олимпиаде «Я — профессионал», одним из организаторов которой является Университет ИТМО.

Периодически (в том числе и на Хабре) молодые люди высказывают опасение по поводу своего будущего в выбранной профессии: обладают ли они нужными навыками? «Правильно» ли их обучают? Смогут ли они получить работу или столкнутся с классической отговоркой «нам нужны специалисты с опытом»?



Задача олимпиады «Я — профессионал» — помочь молодым людям из регионов поступить в магистратуру и аспирантуру ведущих вузов страны, пройти стажировку в лучших компаниях в отрасли, получить денежное вознаграждение и попасть в национальную базу «Молодые профессионалы», к которой обращаются HR-специалисты крупных компаний.

Университет ИТМО курирует три направления олимпиады, одно из них — «Компьютерные науки». Победители олимпиады по этому направлению получат высший балл по профильному экзамену при поступлении в магистратуру или аспирантуру в ведущие вузы страны, в том числе в Университет ИТМО.

В этом материале расскажем, чем поступление в «Первый неклассический» поможет будущему профессионалу: поговорим о том, какие исследования и разработки ведутся в Университете ИТМО в сфере ИТ и как студенты Университета еще в процессе обучения в магистратуре становятся признанными учеными и настоящими профессионалами своего дела.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии1

Russian AI Cup: инструментарий участника

Время на прочтение14 мин
Количество просмотров11K

image


Уже 6 лет проводится ежегодное соревнование Russian AI Cup. За это время чемпионат оброс постоянной аудиторией и у многих заядлых участников появился небольшой набор инструментов и хитростей, которые помогают им в разработке. Я участвовал в этом соревновании 3 раза и также обзавелся рядом заготовок и скриптов, о которых и хочу рассказать в данной статье.

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии4

Как я получил 365K загрузок в App Store за две недели (и почему после этого ушёл из геймдева)

Время на прочтение6 мин
Количество просмотров37K


Я не стал успешным разработчиком игр. Моя самая популярная игра Frantic Architect достигла всего 410 678 бесплатных установок, прежде чем была удалена из App Store; она ни в какое сравнение не идёт с Flappy Bird или 2048.

Но мне шёл 21-й год, за спиной был необычный, но вполне солидный опыт в играх, и я создал игру самостоятельно, затратив довольно мало усилий. Это походило на отличное начало карьеры инди-разработчика игр.

Вместо этого я бросил её.

Прошло уже полтора года после выхода Frantic Architect. Технологии развиваются быстро и я не тратил много времени на переосмысление заброшенных проектов. Но изучая сегодня App Store, я вижу там разработчиков казуальных мобильных игр, достигших успеха с той же стратегией, которую использовал я тогда. Сомневаюсь, что она ещё долго будет работать, но пока это так, и при этом она очень проста (если не примитивна).

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

Мне не интересно повторять этот эксперимент, потому что я считаю эту бизнес-модель фиговой. Возможно, вам удастся меня переубедить.
Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии63

Визуализация процесса обучения нейронной сети средствами TensorFlowKit

Время на прочтение5 мин
Количество просмотров23K
Hint
Перед прочтением этой статьи советую ознакомиться с предыдущей статьей о TensorFlowKit и поставить star репозиторию.

Я не люблю читать статьи, сразу иду на GitHub
GitHub: TensorFlowKit
GitHub: Example
GitHub: Другое
TensorFlowKit API
Посeтив репозиторий, добавьте его в «Stars» это поможет мне написать больше статей на эту тему.

image

Начиная работать в сфере машинного обучения, мне было тяжело переходить от объектов и их поведений к векторам и пространствам. Сперва все это достаточно тяжело укладывалось в голове и далеко не все процессы казались прозрачными и понятными с первого взгляда. По этой причине все, что происходило внутри моих наработок, я пробовал визуализировать: строил 3D модели, графики, диаграммы, изображения и тд.

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

Существуют целые сообщества, решающие такого рода задачи, например Distill, Welch Labs, 3Blue1Brown.

Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии14

Статический анализатор ShellCheck и улучшение качества скриптов в Linux и Unix

Время на прочтение5 мин
Количество просмотров14K


Написание shell-скриптов — занятие увлекательное. Скрипты командной строки помогают автоматизировать повседневные дела. Можно создать нечто прекрасное (или какую-нибудь гадость), однако, если уж что-то писать, хорошо бы точно знать, что код получается именно таким, каким он нужен программисту. Скрипт, написанный некачественно, может представлять опасность. Большинство новичков пишут скрипты, копируя фрагменты кода со StackOverflow, находя то, что им нужно, в Google, или пользуясь сайтами с вопросами и ответами по Linux. Такой подход к программированию выливается в некачественный код и в появление ошибок. Вот, например, команда rm, выполнение которой приведёт к катастрофе, так как переменная VAR не определена:

rm -rf "/$VAR/*"

Многие из проблем скриптов можно решить с помощью линтера, такого, как статический анализатор кода ShellCheck, который написан на Haskell. Он помогает искать ошибки в текстах скриптов и выводить отчёты о проведённых проверках. Это позволяет повысить производительность работы и качество кода. Сегодня мы расскажем о том, как установить и использовать ShellCheck в Linux и Unix-подобных операционных системах.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии8

Типичные взаимные блокировки в MS SQL и способы борьбы с ними

Время на прочтение11 мин
Количество просмотров106K
Чаще всего deadlock описывают примерно следующим образом:
Процесс 1 блокирует ресурс А.
Процесс 2 блокирует ресурс Б.
Процесс 1 пытается получить доступ к ресурсу Б.
Процесс 2 пытается получить доступ к ресурсу А.
В итоге один из процессов должен быть прерван, чтобы другой мог продолжить выполнение.
Но это простейший вариант взаимной блокировки, в реальности приходится сталкиваться с более сложными случаями. В этой статье мы расскажем с какими взаимными блокировками в MS SQL нам приходилось встречаться и как мы с ними боремся.


Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии18

Оптимизация скорости визуализации веб-страниц

Время на прочтение11 мин
Количество просмотров21K
Нередко рассказы о том, как веб-разработчики заботятся о своих приложениях, начинаются с процесса визуализации сайта, опускаются на уровень DOM и останавливаются на утверждениях типа: «И это быстро потому, что используется ускорение». Мартин Сплитт рассказывает о производительности снизу вверх: он начинает с пикселя и поднимается уровень за уровнем, заканчивая компоновкой страницы.


В основе статьи – выступление Мартина на JavaScript-конференции HolyJS 2017 в Питере, где он рассказывает о том, как происходит визуализация в браузерах и что нужно делать для того, чтобы ваши сайты «летали».
Всего голосов 32: ↑27 и ↓5+22
Комментарии9

Трёхмерная графика с нуля. Часть 1: трассировка лучей

Время на прочтение42 мин
Количество просмотров132K
image


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

В этой работе мы сосредоточимся не на скорости, а на чётком объяснении концепций. Код примеров написан наиболее понятным образом, который не обязательно является самым эффективным для реализации алгоритмов. Есть множество способов реализации, я выбрал тот, который проще всего понять.

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


Читать дальше →
Всего голосов 90: ↑90 и ↓0+90
Комментарии53

Время Bitcoin банков?

Время на прочтение6 мин
Количество просмотров25K
Недавно в мире Bitcoin произошло довольно примечательное событие. Был добыт блок, в котором премиальные 12.5 BTC за блок оказались меньше, чем премиальные за транзакции 13.4 BTC. Конечно, такие ситуации случались и раньше в результате ошибок, щедрости или разных экспериментов на Blockchain, но впервые такая ситуация стала результатом тренда на стоимость транзакций.



Возможно Bitcoin требуются банки или их аналоги?
Читать дальше →
Всего голосов 26: ↑20 и ↓6+14
Комментарии84

Чатбот, который «как Siri, только круче» на наивном Байесовском классификаторе

Время на прочтение4 мин
Количество просмотров17K
Всем, привет! Не секрет, что в последнее время в мире происходит резкий всплеск активности, по поводу исследования такой темы, как искусственный интеллект. Вот и меня это явление не обошло стороной.

Предыстория


Всё началось, когда в самолёте я посмотрел типичную, на первый взгляд американскую комедию – «Почему, он?» (англ. Why him? 2016). Там, у одного из ключевых персонажей в доме был установлен голосовой помощник, который нескромно позиционировал себя «как Siri, только круче». К слову бот из фильма умел не только вызывающе разговаривать с гостями, иногда ругаясь матом, но также контролировать весь дом и прилегающую территорию – от центрального отопления до смыва унитаза. После просмотра фильма, мне пришла идея реализовать что-то подобное и я начал писать код.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии13

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность