Обновить
4
0.2

Разработчик(в основном на С#)

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

Лучшее в мире видео-объяснение нейронных сетей, глубокого обучения, градиентного спуска и обратного распространения

Время на прочтение1 мин
Охват и читатели60K
image

Видео от 3Blue1Brown отличаются поразительной понятностью и лаконичностью. Делать конспект видеоуроков по нейронным сетям у меня не получилось, ибо это была бы просто раскадровка, да и особая магия динамики именно видео непросто передать.

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

Запись разговоров на астериск и их распознавание на Yandex.Speech

Время на прочтение3 мин
Охват и читатели17K

Небольшой проект. Простая реализация. Заметка по диалплану астериск, командам консоли и АПИ распознавания Яндекса. Вы прочитаете и не наступите на мои грабли, я прочитаю через полгода-год и вспомню, что делал.

Задача: получать текстовое представление разговоров, записанных на астериске.

Читать далее

Мониторинг Kubernetes с помощью Prometheus и Thanos

Время на прочтение7 мин
Охват и читатели14K

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

Вы очень довольны и все идет по плану. Вы создаете свой первый кластер Kubernetes (у всех основных облачных провайдеров: Azure, AWS и GCP, — есть простые решения для провиженинга управляемого или неуправляемого Kubernetes), разрабатываете первое контейнерное приложение и развертываете его в кластере. Это было легко, не так ли?

Через некоторое время вы понимаете, что все становится немного сложнее: вам нужно развернуть в кластере несколько приложений, поэтому вам нужен Ingress Controller. Далее вы хотите мониторить нагрузку, поэтому вы начинаете искать решения для этого и, к счастью, находите Prometheus. Разворачиваете его, добавляете Grafana и все!

Позже вы начинаете задаваться вопросом: "Почему Prometheus работает только с одной репликой"? Что произойдет в случае рестарта контейнера? Что будет при простом обновлении версии? Как долго Prometheus может хранить метрики? Что если кластер развалится? Нужен ли еще один кластер для HA и DR? Как мне получить единое представление метрик со всех серверов Prometheus

Что ж, продолжайте читать, умные люди уже разобрались с этими вопросами.

Читать далее

Встраиваем карты от Huawei в Android приложение

Время на прочтение19 мин
Охват и читатели4.3K

image


В предыдущих статьях мы создавали аккаунт разработчика для использования Huawei Mobile Services и подготавливали проект к их использованию. Потом использовали аналитику от Huawei вместо аналога от Google. Также поступили и с определением геолокации. В этой же статье мы будем использовать карты от Huawei вместо карт от Google.


Вот полный список статей из цикла:


  1. Создаём аккаунт разработчика, подключаем зависимости, подготавливаем код к внедрению. тык
  2. Встраиваем Huawei Analytics. тык
  3. Используем геолокацию от Huawei. тык
  4. Huawei maps. Используем вместо Google maps для AppGallery. ← вы тут

В чём сложность


К сожалению, с картами не получится так просто, как было с аналитикой и геолокацией. Что и неудивительно, т.к. это гораздо более сложная система сама по себе. И очень часто в приложениях карты и взаимодействие с ними кастомизируется. Например, отображают маркеры, кластеризуют их. Поэтому кода будет много, т.к. надо всё это заабстрагировать, имея в виду некоторые отличия в API карт разных реализаций.

Читать дальше →

Как делать гипер-казуальные игры, популярные во всём мире

Время на прочтение9 мин
Охват и читатели20K

Гипер-казуальные игры стали трендом на рынке мобильных игр. В 2019 году число активных пользователей в день в топовых гипер-казуалках составило 94 тысяч игроков. И  это самый высокий показатель среди других мобильных игр. В 2020 году гипер-казуальные игры, судя по всему, не теряют популярность: только в первом квартале число установок по всему миру выросло на 103%. Более того, игроки стали проводить в игре на 72% больше времени, чем раньше. 

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

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

Читать далее

Представлен конкурент Raspberry Pi 4 — одноплатный ПК с x86, работающий под Windows 10

Время на прочтение2 мин
Охват и читатели70K

Китайская компания Radxa на днях выпустила одноплатный ПК Rock Pi X. Это событие могло бы пройти никем не замеченным, если бы не особенности новинки. Дело в том, что она базируется на процессоре x86 и работает с Windows 10 без «костылей», нативно. Естественно, плата совместима с Linux.

Кроме Rock Pi X, есть и другие одноплатники, заявляющие о поддержке Windows, но они совместимы лишь со специализированной версией этой ОС, которая называется Windows 10 IoT Core. А вот Rock Pi — это ПК, совместимый с полноценной ОС.
Читать дальше →

За двумя мобильными сервисами: HMS и GMS в одном приложении

Время на прочтение10 мин
Охват и читатели9K


Привет, Хабр! Меня зовут Андрей, я делаю приложение «Кошелёк» для Android. Уже больше полугода мы помогаем пользователям смартфонов Huawei оплачивать покупки банковскими картами бесконтактно — через NFC. Для этого нам потребовалось добавить поддержку HMS: Push Kit, Map Kit и Safety Detect. Под катом я расскажу, какие проблемы нам пришлось решать при разработке, почему именно так и что из этого вышло, а также поделюсь тестовым проектом для более быстрого погружения в тему.
Читать дальше →

Тонкости авторизации: обзор технологии OAuth 2.0

Время на прочтение14 мин
Охват и читатели107K
Информационная система Dodo IS состоит из 44 различных сервисов, таких как Трекер, Кассы ресторана или Базы знаний и многих других. Чтобы не отвлекаться на несколько аккаунтов, 3 года назад мы написали сервис Auth для реализации сквозной аутентификации, а сейчас пишем уже вторую версию, в основе которого лежит стандарт авторизации OAuth 2.0. Этот стандарт довольно сложный, но если у вас сложная архитектура с множеством сервисов, то OAuth 2.0 вам пригодится при разработке своего сервиса аутентификации. В этой статье я постарался рассказать о стандарте максимально просто и понятно, чтобы вы сэкономили время на его изучение.


Читать дальше →

Программисту. 10 ценных GitHub-репозиториев

Время на прочтение3 мин
Охват и читатели48K
GitHub — это платформа, дающая программистам отличные инструменты для организации работы над кодом. Но в GitHub-репозиториях, помимо кода, можно найти массу ценных учебных материалов. Я, например, занимаюсь разработкой ПО и постоянно ищу репозитории, которые могут чем-то мне пригодиться. Вот 10 моих любимых GitHub-проектов.


Читать дальше →

10 типичных ошибок при использовании Kubernetes

Время на прочтение11 мин
Охват и читатели34K
Прим. перев.: авторы этой статьи — инженеры из небольшой чешской компании pipetail. Им удалось собрать замечательный список из [местами банальных, но всё ещё] столь актуальных проблем и заблуждений, связанных с эксплуатацией кластеров Kubernetes.



За годы использования Kubernetes нам довелось поработать с большим числом кластеров (как управляемых, так и неуправляемых — на GCP, AWS и Azure). Со временем мы стали замечать, что некоторые ошибки постоянно повторяются. Однако в этом нет ничего постыдного: мы сами совершили большинство из них!

В статье собраны наиболее распространенные ошибки, а также упомянуто о том, как их исправлять.
Читать дальше →

Эффект реалистичного перелистывания страниц на JS

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



Демо и документация
Github
Плагин для React

Подобный эффект я реализовывал данным давно, еще в университете и на Delphi. Получилось вполне достойно, правда времени я потратил тогда очень много. Сейчас, во время самоизоляции, стало интересно реализовать что-то подобное на JS, для PC и мобильных устройств.

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

Написано все на Typescript. Не использовались ни какие сторонние библиотеки. Зависимостей нет.

Ключевые особенности библиотеки


  • Работает как с простыми изображениями, с отрисовкой на canvas, так и с html блоками — используя css трансформации
  • Довольно гибкая система конфигурации и простое API
  • Поддерживает мобильные устройства
  • Автоматическая смена ориентации между портретным и ландшафтным режимом
Читать дальше →

ConfigMaps в Kubernetes: нюансы, о которых стоит знать

Время на прочтение9 мин
Охват и читатели75K
Примечание: это не полноценная статья-руководство, а скорее напоминание/подсказка для тех, кто уже пользуется ConfigMap в Kubernetes или только готовит своё приложение для работы в нём.



Предыстория: от rsync к… Kubernetes


Что было раньше? В эпоху «классического администрирования» в простейшем варианте файл конфига размещали прямо рядом с приложениями (или в репозитории, если угодно). Всё просто: делаем элементарную доставку (CD) для нашего кода вместе с конфигом. Даже реализацию на условном rsync можно назвать зачатками CD.
Читать дальше →

Телепортируем процесс на другой компьютер! 

Время на прочтение12 мин
Охват и читатели15K
Однажды коллега поделился размышлениями об API для распределённых вычислительных кластеров, а я в шутку ответил: «Очевидно, что идеальным API был бы простой вызов telefork(), чтобы твой процесс очнулся на каждой машине кластера, возвращая значение ID инстанса». Но в итоге эта идея овладела мной. Я не мог понять, почему она такая глупая и простая, намного проще, чем любой API для удалённой работы, и почему компьютерные системы, кажется, не способны на такое. Я также вроде бы понимал, как это можно реализовать, и у меня уже было хорошее название, что является самой трудной частью любого проекта. Поэтому я приступил к работе.

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

На видео показано, что рендеринг на 64-ядерной VM в облаке завершается за 8 секунд (плюс 6 секунд на телефорк туда и обратно). Тот же рендеринг локально в контейнере на моём ноутбуке занимает 40 секунд:

Сервер Игры на MS Orleans — часть 1: Что такое Акторы

Время на прочтение5 мин
Охват и читатели7.6K


Привет Хабр! И так, на четырнадцатый день копья решил я значит начать делать простенький игровой сервер для простой онлайн стрелялки. За одно тему распределенных вычислений затронуть. В этой вводной статье цикла хочу рассказать что такое акторы (в Орлеанс их зернами называют) и принцип их работы. Для этого я пока пример простенького приложения с самодельными акторами без Orleans. Как говориться прежде чем строить корабль посмотрим как плавает и почему плавает обычный бумажный кораблик. За подробностями добро пожаловать под кат.
Читать дальше →

Бесконечный скролл с баннерами, или Как обойтись тремя вьюхами

Время на прочтение10 мин
Охват и читатели13K

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

Бесконечный/цикличный скролл в iOS стандартными средствами не реализовать, нужно идти на разные ухищрения. В этой статье я расскажу, какие варианты решения задачи лежат на поверхности и какой вариант мы в итоге реализовали.
Читать дальше →

Валидация полей iOS — быстро и просто

Время на прочтение7 мин
Охват и читатели8.6K
imageВалидация полей ввода — едва ли не самая распространенная задача в мобильных приложениях. Каждое приложение которое имеет форму авторизации и регистрации, также имеет некоторое количество средств ввода информации со стороны пользователя, которые порождают вполне ожидаемый садистско — изощренный ажиотаж тестировщиков. Продвинутая, технически-грамотная общность разработчиков научилась эффективно с ними с ним бороться путем встраивания регулярных выражений в исходный код.
Читать дальше →

GlusterFS как внешнее хранилище для Kubernetes

Время на прочтение8 мин
Охват и читатели36K
image
Поиск оптимального хранилища — это довольно сложный процесс, у всего есть плюсы и минусы. Разумеется, лидером в данной категории является CEPH, но это довольно сложная система, хотя и с очень богатым функционалом. Для нас такая система избыточна, учитывая то, что нам нужно было простое реплицируемое хранилище в режиме master-master на пару терабайт. Изучив много материала, было принято решение протестировать наиболее модный на рынке продукт для интересующей нас схемы. В связи с тем, что готового решения подобного плана найдено не было, хочется поделиться своими наработками по данной теме и описать проблемы, с которыми мы столкнулись в процессе развертывания.
Читать дальше →

Руководство по FFmpeg libav

Время на прочтение24 мин
Охват и читатели117K

Долго искал книгу, в которой было бы разжёвано, как использовать FFmpeg-подобную библиотеку, известную как libav (название расшифровывается как library audio video). Обнаружил учебник «Как написать видеоплеер и уложиться в менее чем тысячу строк». К сожалению, информация там устаревшая, так что пришлось создавать мануал своими силами.

Большая часть кода будет на C, однако не волнуйтесь: Вы легко всё поймёте и сможете применить на любимом языке. У FFmpeg libav уйма привязок ко многим языкам (в том числе и к Python и к Go). Но даже если Ваш язык прямой совместимости не имеет, всё равно можно привязаться через ffi (вот пример с Lua).

Начнём с краткого экскурса о том, что такое видео, аудио, кодеки и контейнеры. Затем перейдем к ускоренному курсу, посвященному использованию командной строки FFmpeg, и, наконец, напишем код. Не стесняйтесь переходить сразу в раздел «Тернистый путь изучения FFmpeg libav».

Есть мнение (и не только моё), что потоковое интернет-видео уже приняло эстафету от традиционного телевидения. Как бы то ни было, FFmpeg libav точно достоин изучения.

Оглавление


Читать дальше →

10 интересных репозиториев на GitHub, полезных любому разработчику

Время на прочтение4 мин
Охват и читатели86K
Представляем вам перевод статьи Simon Holdorf, опубликованной на сайте medium.com. В ней вы найдете ссылки на полезные репозитории, с помощью которых можно прокачать навык разработки ПО.


Фото с ресурса Unsplash. Автор: Vishnu R Nair

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

Каждый из них имеет множество звезд на GitHub, что только подтверждает их популярность, актуальность и полезность. Одни репозитории научат вас чему-то новому, благодаря другим вы сможете создать какие-то классные штуки. В целом, используя их, можно основательно прокачать навык разработки программного обеспечения.
Читать дальше →

Плохой сетевой код убивает ваши любимые файтинги

Время на прочтение9 мин
Охват и читатели14K
image

Было мучительно наблюдать за выпуском DLC второго сезона Samurai Shodown. Игра продолжает расти и развиваться, не стремясь решить свою самую большую проблему: ужасный онлайн-режим. Есть ли вообще смысл развивать соревновательную игру, как бы ни была она красиво и хорошо сделана, если большинство игроков едва может играть друг против друга?

Сама игра потрясающа. Когда мы собираемся с друзьями, я часто запускаю Samurai Shodown; она великолепна и дружелюбна к новым игрокам, а мощные удары заставляют затаить дыхание всех в комнате. Всем очень нравится в неё играть, вне зависимости от уровня навыков.


Я бы хотел иметь возможность играть в Samurai Shodown против сильных противников онлайн так же, как против своих друзей дома, но сетевой код игры ужасен — хуже, чем у любой другой известной мне игры — поэтому я быстро бросаю попытки. Непредсказуемые пики жёстких задержек превращают отточенный игровой процесс в скучный, медленный и неинтересный. Сложно мотивировать себя совершенствоваться, если я даже не могу быть уверенным, что мои собственные движения будут точно отображаться на экране.

Онлайн-файтинги заслуживают много большего. NetherRealm Studios (Mortal Kombat) и Capcom (Street Fighter) со временем создали превосходный сетевой код, и даже мелкие инди-игры, в том числе такие шуточные, как файтинг мемов Fight of Animals, благодаря улучшенным технологиям добились отличных результатов.

Но лидеры жанра, такие как SNK и Arc System Works, вместе с другими разработчиками, в основном из Японии, на протяжении долгих лет не меняли своего подхода к онлайн-боям, даже выпуская новые восхитительные игры. Хотя Granblue Fantasy Versus находится на острие прогресса 3D-анимации, уровень её сетевого кода остался в далёком прошлом.

Информация

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