Pull to refresh
-4
0
Склюев Никита @trilodi

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

Send message

Оптимизация хранимых данных на 93% (Redis)

Reading time3 min
Views5.7K

Хотелось бы поделиться опытом оптимизации данных с целью уменьшения расходов на ресурсы.

В системе рано или поздно встает вопрос об оптимизации хранимых данных, особенно если данные хранятся в оперативной памяти, как это БД Redis.

Как временное решение, можно увеличить RAM тем самым можно выиграть время.

Redis это no-sql база данных, профилировать ее можно с помощью встроенной команды redis-cli --bigkeys, которая покажет кол-во ключей и сколько в среднем занимает каждый ключ.

Объемными данными оказались исторические данные типо sorted sets. У них была ротация 10 дней из приложения.

Проект в продакшене, поэтому оптимизация никак не должна была сказаться на пользователях.

Данные из себя представляли события измененияцены / даты доставки у оффера. Офферов было очень много – порядка 15000 в каждом фиде (прайслисте).

Рассмотрим следующий пример данных события по офферу:

Читать далее
Total votes 16: ↑8 and ↓80
Comments4

Отладка приложений в экосистеме Huawei: облачная платформа для дебаггинга, сервисы A/B- и открытого тестирования

Reading time6 min
Views3.2K

Привет, Хабр! В мобильной экосистеме Huawei есть несколько инструментов для отладки и проверки приложений: можно запускать автоматические тесты в облаке или дистанционно на устройствах Huawei, а также работать с группами пользователей. На облачной платформе DigiX Lab разработчики могут проверять стабильность работы, производительность, уровень энергопотребления и совместимость своих приложений с устройствами нашего бренда в режиме эмулятора. Сервисы A/B- и открытых тестов помогают понять реакцию аудитории и получить обратную связь. Под катом я расскажу о возможностях этих сервисов и о том, как начать в них работать. 

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

Common Data Service и Power Apps. Создание мобильного приложения

Reading time4 min
Views7K
Всем привет! Сегодня попробуем автоматизировать процесс создания поручений с использованием платформы данных Microsoft Common Data Service и сервисов Power Apps и Power Automate. На базе Common Data Service построим сущности и атрибуты, при помощи Power Apps сделаем несложное мобильное приложение, ну а Power Automate поможет связать все компоненты единой логикой. Не будем терять времени!



Но для начала немного терминологии. Что из себя представляет Power Apps и Power Automate мы уже знаем, но, если вдруг кто не в курсе, рекомендую ознакомиться с моими предыдущими статьями, например, вот тут или тут. Однако, что из себя представляет Common Data Service мы еще не разбирали, поэтому самое время добавить немного теории.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments0

Как изучать Machine Learning 5 дней в неделю 9 месяцев подряд

Reading time7 min
Views22K
image

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

Я уволился из Apple. Запустил веб-стартап, но из этого ничего не вышло. Душа к этому не лежала.

Я хотел изучать машинное обучение. Это то, что меня воодушевляло. Я собирался изучить все до малейшей детали. Мне не нужно было программировать все эти правила, все сделают за меня. Но у меня не было работы.

А воодушевление не оплачивает мои счета.

По выходным я начал подрабатывать в Uber, чтобы платить за учебу.

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

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

Uber по выходным. Машинное обучение по будням. Такой была моя повседневная жизнь. Я должен был учиться. Я был обязан научиться, я просто не мог водить. На тот момент у меня не было жизненной цели, но я точно знал, что это не вождение. Одним субботним вечером я заработал $280 и получил штраф в размере $290. Минус $10 за одну ночь.

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

Как у меня получалось заниматься каждый день?
А вот как.
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments11

Релиз мобильных приложений одной кнопкой

Reading time11 min
Views12K


Всем привет! Меня зовут Михаил Булгаков (нет, не родственник), я работаю релиз-инженером в Badoo. Пять лет назад я занялся автоматизацией релизов iOS-приложений, о чём подробно рассказывал в этой статье. А после взялся и за Android-приложения.

Сегодня я подведу некоторые итоги: расскажу, к чему мы пришли за это время. Long story short: любой причастный к процессу сотрудник может зарелизить хоть все наши приложения на обеих платформах в несколько кликов — без головной боли, больших затрат времени, регистрации и СМС. Так, наш отдел релиз-инженеров за 2019 год сэкономил около 830 часов.

За подробностями — добро пожаловать под кат!
Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments11

Тестирование StoreKit в Xcode 12 и iOS 14

Reading time2 min
Views9.5K

Привет, Хабр!


Меня зовут Сэм, я разработчик в сервисе Qonversion. В этой статье описаны новые возможности для тестирования подписок, представленные Apple во время сессии Introducing StoreKit Testing in Xcode на WWDC 2020.


Рынок подписок в мобильных приложениях быстро растет, но набор инструментов тестирования до iOS 14 был скудным. Вдобавок всё усложнялось нестабильностью песочницы Apple.
Нововведения в Xcode 12 и iOS 14 сильно меняют ситуацию.


image

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

SwiftUI 2020. Что изменилось?

Reading time5 min
Views11K
Приветствую вас, жители Хабра и все интересующиеся разработкой под IOS. На связи Анна Жаркова, Senior iOS/Android разработчик компании Usetech
Сегодня мы поговорим о тех изменениях и новшествах, которые нам представляет Apple на WWDC 2020. А именно про доработанную и даже переработанную версию фреймворка SwiftUI.

Эта технология для декларативной разработки приложений была представлен в прошлом году на WWDC 2019. Если вы с ней еще не работали, то рекомендую заглянуть сюда

Итак. Apple и их инженеры внимательно весь этот год следили за обзорами, статьями, решениями и комментариями от разработчиков-энтузиастов. В конце видео «What's new in SwiftUI» они выражают благодарность всем неравнодушным за помощь.

Теперь SwiftUI позиционируется как полноценный инструмент для разработки под разные платформы (от watchOS до macOS):


Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments11

iOS in-app purchases часть 1: конфигурация и добавление в проект

Reading time6 min
Views21K

Всем привет, меня зовут Виталий, я основатель Adapty. Подписки — один из способов монетизировать приложение. С их помощью вы можете дать пользователю возможность получить постоянный доступ к обновляемому контенту в приложении или же к предоставляемому сервису. В отличие от обычных покупок, где Apple берет себе 30% комиссию, на подписках эта комиссия сокращена до 15% в случае, если пользователь подписан в течение 1 года и более. Важный момент: если пользователь отменит подписку, то данный счетчик сбросится через 60 дней.


Мы выпускаем цикл статей, закрывающих все вопросы добавления встроенных покупок в iOS:


  1. iOS in-app purchases, часть 1: конфигурация и добавление в проект. — Вы тут.
  2. iOS in-app purchases, часть 2: Инициализация и обработка покупок.
  3. iOS in-app purchases, часть 3: Серверная валидация покупки.
  4. iOS in-app purchases, часть 4: Локальное тестирование покупок в XCode.
  5. iOS in-app purchases, часть 5: Обработка ошибок SKErrors.

​​В этой части мы научимся:


  • cоздавать покупки в App Store Connect;
  • конфигурировать подписки — указывать длительность, стоимость, пробные периоды;
  • получать список покупок в приложении

когда подключаешь покупки в приложении

Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments1

Как я делал себе АВР для генератора

Reading time18 min
Views68K


Несколько лет назад делал себе АВР (автоматический ввод резерва) для работы на даче от генератора. Сейчас многие ИТ-шники переходят на удалёнку, работают с дач, где качество электропитания может оставлять лучшего. Поэтому решил написать о своем опыте самодельного АВР на микроконтроллере ATmega8A. Если тема интересна, добро пожаловать под кат, будет много букв и кода.
Жми сюда
Total votes 36: ↑35 and ↓1+34
Comments154

Подготовка данных для настройки и обучения нейросети по детекции объектов

Reading time5 min
Views11K
Подготовка данных для настройки и обучения нейросети по детекции объектов.

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

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

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

Линтер на все случаи жизни — GitHub Super Linter

Reading time4 min
Views23K


Команда DevOps инженеров из GitHub поделились своим универсальным решением для проверки качества кода. С ним можно настроить линтер для 17 языков всего в 11 строк:


name: Lint Code Base
on:
  push:
    branches-ignore:
      - 'master'
jobs:
  linter:
    runs-on: ubuntu-latest
    steps:
        - uses: actions/checkout@v2
        - uses: docker://github/super-linter:v2.1.0

Код выше является YAML конфигурацией для GitHub Actions (бесплатный CI/CD от GitHub) и далее мы разберемся с его содержимым и принципом работы.

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments22

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

Reading time6 min
Views5K
Карты — один из ключевых элементов многих мобильных приложений. И наш сервис не исключение. С помощью карт пользователь указывает, куда подать автомобиль, а водитель строит маршрут поездки. Кроме того, на карте в реальном времени отображается движение водителя к пассажиру и многое другое.


Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments1

Bhunter — взламываем узлы бот-сетей

Reading time4 min
Views6.9K
Вирусные аналитики и исследователи компьютерной безопасности стремятся собрать как можно больше образцов новых ботнетов. В своих целях они используют honeypot'ы.… Но что если хочется понаблюдать за зловредом в реальных условиях? Подставить под удар свой сервер, маршрутизатор? А что если подходящего устройства нет? Именно эти вопросы натолкнули меня на создание bhunter — инструмента для получения доступа к узлам бот-сетей.

image
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments5

Data Science для гуманитариев: что такое «data»

Reading time7 min
Views10K

Размышления об информации, памяти, аналитике и распределениях


Все, что воспринимают наши чувства, — это данные, хотя их хранение в наших черепушках оставляет желать лучшего. Записать это немного надежнее, особенно когда мы записываем это на компьютере. Когда эти записи хорошо организованы, мы называем их данными… хотя я видел, как некоторые ужасно организованные электронные каракули получают то же имя. Я не уверен, почему некоторые люди произносят слово data так, как будто оно имеет заглавную букву D.

Почему мы произносим data с большой буквы?

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

Смысл и смыслы


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

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

image

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

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

image

Если вы закрываете глаза, вы помните каждую деталь того, что вы только что видели? Нет? И я нет. Вот почему мы собираем данные. Если бы мы могли помнить и обрабатывать это безупречно в наших головах, в этом не было бы необходимости. Интернет мог быть одним отшельником в пещере, рассказывая обо всех твитах человечества и прекрасно передавая каждую из наших миллиардов фотографий кошек.
Читать дальше →
Total votes 12: ↑9 and ↓3+6
Comments0

Выбираем канал для точки доступа Wi-Fi. Исчерпывающее руководство

Reading time9 min
Views289K
2,4 ГГц — это плохо. 5 ГГц — это хорошо. 6 ГГц — это ещё лучше, но послезавтра. Все это знают, кого я тут учу, в самом деле. Всё это хорошо, только делать-то что, когда ты такой, как умный, открываешь какой-нибудь Wi-Fi Explorer, а там сатанизм и этажерки, как на скриншоте?



Шаг первый — поплакать. Шаг второй — нырнуть под кат. Вопрос простой, а ответ — нет.
Когда это нас останавливало?
Total votes 111: ↑110 and ↓1+109
Comments234

Device Manager. Обновление и мониторинг

Reading time6 min
Views2.8K

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

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

SwiftUI по полочкам: Анимация, часть 2 — тайминги

Reading time32 min
Views5.4K
image

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

image

Под катом вас ждет разбор таймингов анимации, создание собственного механизма тайминговой кривой для работы в зацикленной линейной анимации, примеры реализации разных градиентов и несколько интересных приемов, которые помогут понять работу анимации под капотом.
Warning: много гифок
Total votes 4: ↑2 and ↓20
Comments2

FabEx — block explorer для Hyperledger Fabric

Reading time6 min
Views1.9K
Привет, я хочу рассказать про проект FabEx — block explorer для Hyperledger Fabric, недавно принятый в Hyperledger Labs и имеющий некоторые преимущества относительно официального эксплорера. Проект написан полностью на Golang (а не на Nodejs, как официальный), хранит данные о блокчейне в MongoDB или Cassandra по выбору (а не в PostgreSQL, как официальный), имеет как GRPC, так и REST API. Eго легко расширять, например, можно легко добавить больше реализаций хранилища. Детали под катом.



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

Кроссплатформенный многопоточный TCP/IP сервер на C++

Reading time16 min
Views85K

Решил задаться целью написать простой в использовании и при этом быстрый многопоточного TCP/IP сервера на C++ и при этом кроссплатформенный — как минимум чтобы работал на платформах Windows и Linux без требования как-либо изменять код за пределами самописной библиотеки. Ранее, на чистом C++ без библиотек вроде Qt, сетевым программировнием не занимался, и предвещал себе долгое время мучений с платформо-зависимостью. Но как оказалось всё гораздо проще чем казалось на первый взгляд, ведь в основном интерфейсы сокетов обоих систем похожи как две капли воды и различаются лишь в мелких деталях.

Читать дальше →
Total votes 31: ↑18 and ↓13+5
Comments40

Как просканировать весь интернет

Reading time5 min
Views34K


Весь диапазон IPv4 адресов — это 4-миллиарда IP-адресов. Это кажется огромной цифрой, но весь IPv4 интернет можно полностью просканировать на предмет одного TCP-порта за 40 минут, например найти все веб-серверы в мире или все открытые SSH-порты. При этом достаточно одного сервера и гигабитного канала. Это полезно для исследований, например если вы собираете статистику по используемым технологиям в мире, или оцениваете процент уязвимых сервисов, открытых наружу.

Программа zmap (не путать с nmap) позволяет сканировать огромные диапазоны сетей намного быстрее любого сканера из-за особой архитектуры. В статье мы рассмотрим пример как собрать список всех веб-серверов в мире с помощью zmap. Имея список хостов с открытым HTTP портом, уже можно использовать более интеллектуальный сканер, передавая ему точный список целей.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments29
1
23 ...

Information

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