Как стать автором
Обновить
1
0
falc @falc

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

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

VAX — инструмент для визуального программирования, или как написать SQL мышкой

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


Я хочу рассказать про созданный мною web редактор для «визуального программирования» и его историю создания.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии88

Звонки между браузерами: подводные камни WebRTC

Время на прочтение3 мин
Количество просмотров15K
WebRTC, доступное в современных браузерах через JavaScript API, захватывает голос и видео, передает их по сети и воспроизводит в другом браузере. Еще оно умеет Peer-to-Peer между браузерами, Screen Sharing, передачу данных UDP-пакетами и подстройку битрейта под ширину канала. Очень хорошая технология. И Skype for Web на ней можно собрать, и превратить джойстик в световой меч для игры на ноутбуке, и позвонить с сотового на веб-страницу. Очень хорошая технология. Но сырая.

В Voximplant мы уже много лет развиваем множество SDK для звонков в наше облако: Android, iOS, Unity, React Native. Почетное место занимает Web SDK, использующий как раз WebRTC. С помощью него CRM принимают звонки «на веб страницу», работают кнопки «позвоните нам с веб сайта» и видео консультации с врачами. За годы мы набили множество шишек в использовании WebRTC, и под катом я кратко пройдусь по основным моментам, которые вас не обрадуют, если вы захотите использовать эту замечательную технологию.
Всего голосов 39: ↑38 и ↓1+37
Комментарии14

Yet another tutorial: запускаем dotnet core приложение в docker на Linux

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


В один пасмурный летний день, после посещения секции от авито на РИТ2017, до меня вдруг дошло, что хайп по поводу докера не смолкает уже пару лет и пора, наконец, уже его освоить. В качестве подопытного для упаковки был выбран dotnet core+C#, т. к. давно интересно было посмотреть, каково это — разрабатывать на C# под Linux.

Предупреждение читателю: статья ориентирована на совсем новичков в docker/dotnet core и писалась большей частью, как напоминалка для себя. Вдохновлялся я первыми 3 частями Docker Get Started Guide и неким блог-постом на english. У кого хорошо с английским, можно читать сразу их и в общем-то будет сильно похоже. Если же после всего вышенаписанного вы еще не передумали продолжить чтение, то добро пожаловать под кат.
Итак, погнали!
Всего голосов 19: ↑18 и ↓1+17
Комментарии10

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

Время на прочтение5 мин
Количество просмотров27K
Фото очереди в мавзолей Мао Цзэдуна —  BrokenSphere / Wikimedia Commons

В проекте, над которым я сейчас работаю, применяется распределённая система обработки данных: сначала несколько десятков машин одновременно производят некоторые сообщения, затем эти сообщения отправляются в очередь, из очереди три потока извлекают сообщения и после финальной обработки выкладывают данные в базу Redis. При этом имеется требование: от «зарождения» события в машине, производящей сообщение, до выкладывания обработанных данных в базу должно проходить не более четырёх секунд в 90% случаев.

В какой-то момент стало очевидно, что мы это требование не выполняем, несмотря на затрачиваемые усилия. Несколько произведённых измерений и маленький экскурс в теорию очередей привели меня к выводам, которые я бы хотел донести до себя самого несколько месяцев назад, когда проект только начинался. Отправить письмо в прошлое я не могу, но могу написать заметку, которая, возможно, избавит от неприятностей тех, кто только задумывается над тем, чтобы применять очереди в собственной системе.
Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии36

Лог файлы Linux по порядку

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

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




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

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

Книга «Машинное обучение»

Время на прочтение3 мин
Количество просмотров28K
image Привет, Хаброжители к нам из типография наконец-то пришла новинка от Хенрика Бринка, Джозефа Ричардса и Марка Февероволофа.

Эта книга позволит программистам, аналитикам данных, статистикам, специалистам по обработке данных и всем остальным применить машинное обучение к решению реальных задач или хотя бы просто понять, что оно собой представляет. Читатели, не прибегая к глубокому теоретическому изучению конкретных алгоритмов, получат практический опыт обработки реальных данных, моделирования, оптимизации и развертки систем машинного обучения. Для тех, кому интересна теория, мы обсуждаем математическую основу машинного обучения, объясняем некоторые алгоритмы и даем ссылки на материалы для дополнительного чтения. Основной акцент делается на практических результатах при решении поставленных задач.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии27

Создание chatbot-a с помощью sockeye (MXNet) на базе AWS EC2 и AWS DeepLearning AMI

Время на прочтение6 мин
Количество просмотров5.6K
AWS AI Недавно, команда AWSDeepLearning выпустила новый фреймворк — “sockeye”, цель которого является упрощение обучения seq2seq сетей. Забегая вперед — я даже не ожидал такой простоты. Так что решил написать простое, быстрое и самодостаточное руководство, которое не требует от читателя глубоких знаний в области нейронных сетей. Единственное, что все же требуется для успешного выполнения всех шагов, это иметь некоторый опыт работы с:

  • AWS EC2;
  • SSH;
  • python;

Если все эти три вещи не вызывают проблем — прошу под кат.
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии3

Flux для глупых людей

Время на прочтение6 мин
Количество просмотров255K
Пытаясь разобраться с библиотекой от Facebook ReactJS и продвигаемой той же компанией архитектурой «Flux», наткнулся на просторах интернета на две занимательные статьи: «ReactJS For Stupid People» и «Flux For Stupid People». Чуть раньше я поделился с хабравчанами переводом первой статьи, настала очередь второй. Итак, поехали.

Flux для глупых людей


TL;DR Мне, как глупому человеку, как раз не хватало этой статьи, когда я пытался разобраться с Flux. Это было не просто: хорошей документации нет и многие ее части перемещаются.

Это продолжение статьи «ReactJS For Stupid People».
Читать дальше →
Всего голосов 38: ↑35 и ↓3+32
Комментарии35

Redis — главное хранилище? Что за хрень?!

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

Сеть полна предупреждений и предостерегающих повествований об использовании подобного подхода. Есть ужасающие истории о потере данных, исчерпании памяти или людях неспособных эффективно управлять данными в Redis, вы, возможно, интересуетесь «О чём вы вообще думаете?». Так вот, наш рассказ, почему мы всё же решили использовать Redis и как мы преодолели все эти проблемы.
Читать дальше →
Всего голосов 64: ↑59 и ↓5+54
Комментарии31

Основы Kubernetes

Время на прочтение13 мин
Количество просмотров858K
В этой публикации я хотел рассказать об интересной, но незаслуженно мало описанной на Хабре, системе управления контейнерами Kubernetes.

image

Что такое Kubernetes?


Kubernetes является проектом с открытым исходным кодом, предназначенным для управления кластером контейнеров Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а так же обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат Google и теперь поддерживается многими компаниями, среди которых Microsoft, RedHat, IBM и Docker.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии86

Простейший способ добавить WebSocket в Django

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

TL;DR — Я пришел к очень простому решению для работы с вебсокетами в Django. Все что вам нужно — это установить django-websocket-request, запустить скрипт, и теперь ваше приложение поддерживает вебсокеты! Это решение заставляет Django думать, будто он получает нормальный (в какой-то мере) HTTP-запрос, поэтому оно будет совместимо почти со всем вашим существующим кодом. Решение работает нормально как с Django Rest Framework, так и с обычными функциями-представлениями и представлениями, основанными на классах (Class Based Views).
Читать дальше →
Всего голосов 33: ↑26 и ↓7+19
Комментарии13

SigPloit: опубликован фреймворк для тестирования телеком-уязвимостей в протоколах SS7, GTP, Diameter и SIP

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

На GitHub опубликован код фреймворка SigPloit. Код выложил в открытый доступ исследователь информационной безопасности Лоай Абдельразек (Loay Abdelrazek). С помощью SigPloit можно проводить тестирования уязвимостей в телекоммуникационных протоколах. Появление проекта может серьезно изменить ситуацию в сфере информационной безопасности телеком-операторов.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии8

Нечеткий поиск по названиям

Время на прочтение21 мин
Количество просмотров36K
Добрый день. Проблема с поиска, услуг или продукта, возникает на подавляющем большинстве сайтов. И в основной свой массе реализация подобной возможности ограничиваются поиском по точному слову, которое ввели в поисковой строке.

Если есть время, и заказчик хочет чуть большего, то гуглят реализацию наиболее популярного алгоритма (коим является «расстояние Левенштейна») и вписывают его.

В данной статье, я опишу сильно доработанный алгоритм, основанный, правда, на расстояния Левенштейна, и приведу примеры кода на C# нечеткого поиска по названиям, например: кафе, ресторанов или неких сервисов… В общем всё, что можно перечислить и имеет от одного до нескольких слов в своем составе:

«Яндекс», «Mail», «ProjectArmata», «world of tanks», «world of warships», «world of warplanes» и т.д.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии21

Pygest #11. Релизы, статьи, интересные проекты из мира Python [6 июня 2017 — 19 июня 2017]

Время на прочтение2 мин
Количество просмотров10K
image Всем привет! Это уже одиннадцатый выпуск дайджеста на Хабрахабр о новостях из мира Python.

В сегодняшнем выпуске вы найдёте интересные материалы, касающиеся устройства Python, машинного обучения, перехода на Python 3, Django и многого другого. Присылайте свои актуальные материалы, а также любые замечания и предложения, которые будут добавлены в ближайший дайджест.

А теперь к делу!
Перейти к дайджесту
Всего голосов 17: ↑17 и ↓0+17
Комментарии3

Пишем на Kotlin под Android

Время на прочтение7 мин
Количество просмотров98K
Года два назад я обнаружил, что в Android Market нет удобных мне приложений для учета времени, затраченного на разные проекты. Как настоящий лентяй, я решил не искать требуемое, а написать его сам. Это оказалось несколько сложнее, чем казалось вначале, и я все забросил в режиме вялотекущего хобби воплощение моего желания прожило больше года, медленно продвигаясь от идеи к альфа-версии.

И тут вдруг добрые люди предложили мне рассказать, как писать под Android на Kotlin'e. Мне показалось, что это добрый знак, и я быстро переписал приложение на Kotlin, закончил его и выложил в Google Play.

Важное уточнение: эта статья — только про то, как писать под Android на Kotlin'e. Интересно будет только тем, кто хочет попробовать Kotlin, и тем, кто хочет понять, зачем его пробовать. Приложение, которое я написал — очень-очень простое (и само по себе никак не относится к JetBrains). В его коде гарантированно можно что-то улучшить, оно выложено на Github только для примера, а не в качестве образца восхитительного кода. Оно работает, и если вам хочется его попробовать, то поставить можно отсюда. Но еще раз: это — демо, его цель — быть не совершенным приложением, а введением в Kotlin под Андроид.

Опять что-то новое. И зачем мне это знать?



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

Решаем задачу Hackerrank — «Encryption» (используя Go)

Время на прочтение4 мин
Количество просмотров17K
Предлагаю вашему вниманию перевод статьи Cracking Hackerrank — Encryption с сайта sobit.me.

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

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

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

Наша сегодняшняя задача — "Encryption" (ссылка).
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии6

Доллар

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


Последние два года вся страна пристально следит за курсом доллара. Новостные выпуски пестрят громкими репортажами о долларе. Все говорят о долларе. А что, если мы на фоне горячего интереса, разберемся с тем, как формируется цена доллара, посмотрим кто и как торгует валютой?! Все результаты, представленные в данной статье, получены на основе официальных торговых данных full orders log (полный журнал заявок), купленные на Московской Бирже. Мы покажем реальные торги изнутри. Параллельно, познакомимся со стандартными методами анализа рынка. Такая аналитика стоит не малых денег и её могут позволить ограниченное число «компаний».

Инструментом для анализа данных будет Java. Анализируемый биржевой инструмент — USDRUB_TOM. Наша задача вытащить любопытные детали из имеющихся данных и попробовать сделать определенные выводы.
Читать дальше →
Всего голосов 88: ↑71 и ↓17+54
Комментарии64

Трагедия стопроцентного покрытия кода

Время на прочтение3 мин
Количество просмотров34K
Забавно, как всё меняется. Пятнадцать лет я свято придерживался принципов TDD (разработка через тестирование, или, как её раньше называли, подход test-first) или уж по крайней мере того взгляда, что разработчикам следует писать юнит-тесты. Но в последнее время я всё чаще говорю не «Это нужно затестить», а «Зачем вы писали этот тест?».

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

Используем Cake для сборки C# кода

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

Всем привет! Я хочу рассказать о таком инструменте как Cake (C# Make).


Cake build


Итак, что такое Cake?


Cake — это кроссплатформенная система сборки, использующая DSL с синтаксисом C# для того, что осуществлять в процессе сборки такие вещи, как сборка бинарников из исходных кодов, копирование файлов, создание/очищение/удаление папок, архивация артефактов, упаковка nuget-пакетов, прогоны юнит-тестов и многое другое. Так же Cake имеет развитую систему аддонов (просто C# классы, зачастую упакованные в nuget). Стоит отметить, что большое количество полезных функций уже встроены в Cake, а еще больше, практически на все случаи жизни, написаны сообществом и довольно успешно распространяются.

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

Что если в играх использовать видеокарточку для физики, а не для графики

Время на прочтение5 мин
Количество просмотров79K
Хочу рассказать сообществу о проведённом мной эксперименте.

Мне всегда нравились игры, в которых есть физика. То есть, некоторые процессы не управляются скриптами, а эволюционируют во времени, следуя физическим законам. Из этого проистекают сложность и непредсказуемость игрового процесса.

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

Или те же гоночки: до чего приятней на полной скорости сшибать людей, рекламные щиты и помойки, чтобы разлетались во все стороны, вместо того, чтобы мгновенно останавливаться, врезаясь в мёртво врощенный в землю столб.

Или ещё замечательный пример — Kerbal Space Program. Там физика уже является непосредственым источником геймплея.

Или, например, жанр 2д артиллерии. Часть его очарования базируется на уничтожаемой, динамичной земле. Но до чего он был бы лучше, если б земля не просто линейно осыпалась, а вела себя реалистично, разлетаясь от взрывов кусками.

Я давно мечтал сделать именно такой, до предела физически реалистичный римейк Scorched Earth. Но все мои эксперименты с моделированием физических систем упирались в неумолимо медленные процессоры. Тысяча-две частиц были пределом для real-time симуляции.

Но недавнее моё «открытие» изменило ситуацию.
Всего голосов 157: ↑146 и ↓11+135
Комментарии217

Информация

В рейтинге
4 731-й
Зарегистрирован
Активность