Pull to refresh
56
0

Наёмный разработчик

Send message

Create ML в iOS

Reading time 8 min
Views 7.7K


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

Но прежде чем начать, немного истории и пояснений. На ежегодной конференции для разработчиков WWDC2018 компания Apple представила инструменты для работы с машинным обучением Create ML. Обученная в Create ML модель является результатом применения алгоритма машинного обучения для набора обучающих данных. Модели не занимают много места (около 3Мб), поэтому их можно хранить в проекте. Изначально модели предлагалось обучать с помощью Playgrounds в XCode 10 и поддерживалась работа с изображениями, текстом и таблицами. При запуске playgrounds проекта необходимо было импортировать библиотеку CreateML и запустить MLImageClassifierBuilder (в случае если бы мы обучали модель для классификации изображений).

import CreateMLUI

let builder = MLImageClassifierBuilder()
builder.showInLineView()

В 2019 году Apple представила совершенно новый инструмент для работы с моделями машинного обучения, отделив его от Playgrounds. Стало возможным обучать модели без единой строчки кода. Список типов данных пополнился звуками и активностью. Всего представлено 5 типов данных и 9 шаблонов моделей. Давайте рассмотрим каждый тип данных и какие модели мы можем получить в результате.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 4

Чеклист по UX из 30 пунктов для мобильных приложений

Reading time 7 min
Views 30K
image

Эта статья — напминалка о том, что нужно перепроверить в дизайне вашего приложения, прежде чем отсылать его на AppStore/GooglePlay. Список поделен на тематические блоки:

  1. Вход / Регистрация
  2. Первый опыт
  3. Ежедневные взаимодействия
  4. Уведомления
  5. Параметры аккаунта
  6. Лента
  7. Поиск
  8. AppStore/GooglePlay
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 9

Как получить D-U-N-S number бесплатно

Reading time 2 min
Views 123K


D-U-N-S number — международный идентификатор юридических лиц. В России добровольно его добывают в одном случае: когда в AppStore нужно зарегистрировать компанию-разработчика.

Расскажем, как добыть этот номер бесплатно и сэкономить 12 240.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Comments 11

Сократить бэкапы на 99.5% с hashget

Reading time 8 min
Views 11K

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


Это обзорная статья для описания возможностей. Само использование hashget (довольно простое) описано в README проекта и wiki-документации.


Сравнение


По закону жанра, начну сразу с интриги — сравнения результатов:


Data sample unpacked size .tar.gz hashget .tar.gz
Wordpress-5.1.1 43 Mb 11 Mb ( 26% ) 155 Kb ( 0.3% )
Linux kernel 5.0.4 934 Mb 161 Mb ( 20% ) 4.7 Mb ( 0.5% )
Debian 9 (LAMP) LXC VM 724 Mb 165 Mb ( 23% ) 4.1 Mb ( 0.5% )

Предыстория, каким должен быть идеальный и эффективный бэкап


Каждый раз, когда я делал бэкап свежесозданной виртуалки, мне не давало покоя чувство, что я что-то делаю не так. Почему у меня получается увесистый бэкап от системы, где моего бесценного нетленного творчества — однострочный index.html с текстом "Hello world"?

Читать дальше →
Total votes 29: ↑26 and ↓3 +23
Comments 40

Технологии микроэлектроники на пальцах: «закона Мура», маркетинговые ходы и почему нанометры нынче не те. Часть 1

Reading time 23 min
Views 59K
image
Возможное фото 10 нм IceLake. Источник

Странные вещи творятся на процессорном рынке. Мировой лидер в лице фирмы Intel пятый год бьется в попытках перейти на 10 нм техпроцесс. Изначально заявляли о переходе на 10 нм в 2015-м году, потом в 2016-м, 2017-м… На дворе 2019-й, а 10-нм от Intel в серии так и нет. Ну как нет, есть отдельные опытные/инженерные образцы, но высокий выход годных — проблема. Реальный переход ожидается не раньше 2022 года уже.

Собственно, это и стало причиной дефицита процессоров Intel на рынке. Для его преодоления компания расширяет производство модифицированных 14 нм процессоров (те же Lake только в профиль) и даже возвращается к 22 нм. Казалось бы, регресс налицо. А в это время корейский Samsung, тайваньский TSMC и примкнувший к ним AMD с платформой ZEN 2 рапортуют о вводе в серию аж 7 нм и вот-вот перейдут на 5 нм. Достали из пыльного шкафа «закон Мура» и объявили его живее всех живых. Скоро будет и 3 нм, и 2 нм, и даже 1 нм (sic!) — pourquoi pas?!

Что же произошло? Неужто ушлые азиаты обошли клятых пендосов в ключевой отрасли? Можно открывать шампанское?

Disclaimer: Данную статью я нашёл совершенно случайно и был крайне поражён, насколько грамотно и подробно в ней раскрываются проблемы современной микроэлектроники, в частности, смерть закона Мура и маркетинг. Когда-то давно и сам баловался написанием статей про изготовление чипов, а в серии статей «Взгляд Изнутри» даже заглядывал внутрь оных, т.е. тема мне крайне интересна. Естественно, я бы хотел, чтобы сам автор оригинальной статьи опубликовал её на Хабре, но в связи с занятостью он разрешил мне перенести её сюда. К сожалению, правила Хабра не разрешают прямую копи-пасту, поэтому я добавил ссылки на источники, картинки и немножко отсебятины и постарался чуть-чуть выправить текст. Да, и статьи (1 и 2) по данной теме от amartology знаю и уважаю.
Скандалы, интриги и закон Мура
Total votes 96: ↑94 and ↓2 +92
Comments 74

Легальный вывод средств с Upwork в РФ

Reading time 8 min
Views 66K
На Хабре уже написано достаточно много статьей по теме, в частности:


В ответ на повторяющиеся просьбы написать статью, в которой:

  • разбросанные по разным статьям крупицы будут собранны в единое целое
  • всевозможные противоречия будут устранены
  • все сведения будут иметь актуальный характер
  • будут учтены пожелания такие как «а можно с картинками? :)»

родилось следующее руководство.
Total votes 78: ↑70 and ↓8 +62
Comments 383

Как Discord индексирует миллиарды сообщений

Reading time 13 min
Views 11K


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

Требования


  • Экономически эффективный: Основное взаимодействие пользователя с Discord — это наш текстовый и голосовой чат. Поиск — вспомогательная функция, и стоимость инфраструктуры должна отражать это. В идеале это значит, что поиск не должен стоить дороже, чем фактическое хранение сообщений.
  • Быстрый и интуитивно понятный: Все создаваемые нами функции должны быть быстрыми и интуитивными, в том числе поиск. Он должен выглядеть и ощущаться по высшему стандарту.
  • Самовосстановление: У нас нет отдела DevOps (пока), так что поиск должен выдерживать сбои с минимальным человеческим вмешательством или вообще без него.
  • Линейно масштабируемый: Как и с хранением сообщений, увеличение ёмкости поисковой инфраструктуры должно предусматривать добавление нодов.
  • Ленивая индексация: Не все пользуются поиском — мы не должны индексировать сообщения, пока кто-то не попытается хотя бы раз их найти. Вдобавок, после сбоя индекса должна быть возможность переиндексации серверов на лету.
Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 2

Краткая шпаргалка по tmux (менеджеру терминалов)

Reading time 1 min
Views 413K
tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

image

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

Читать дальше →
Total votes 59: ↑53 and ↓6 +47
Comments 50

Почему мы уверены в том, что развернули

Reading time 6 min
Views 13K
image
Часто бывает, когда что-то не работает. И никто не хочет, чтобы что-то не работало по его вине. В контексте больших инфраструктур и распределенных приложений ошибка конфигурации может быть фатальной.

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

Статья будет интересна командам, которые практикуют DevOps или SRE, ответственным Dev, и прочим хорошим людям.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 9

Принципы реактивного программирования на примере простого RSS-агрегатора с использованием ReactiveX для Python

Reading time 7 min
Views 24K

В последние годы реактивное программирование в целом, а технология ReactiveX в частности, обретает всё большую популярность среди разработчиков. Одни уже активно используют все преимущества этого подхода, а другие только “что-то слышали”. Со своей стороны я постараюсь помочь вам представить, насколько некоторые концепции реактивного программирования способны изменить взгляд на привычные, казалось бы, вещи.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 1

Несколько вещей, о которых стоит помнить программисту в возрасте

Reading time 11 min
Views 128K
Если вы из тех, кто «работал ещё Там-То!» и «делал ещё То-То!», а сейчас счастливо отдыхаете на пенсии — эта статья не для вас. Просто спасибо за труд и примите мои поздравления. Но если же вы, как и я, даже став немного старше всё ещё ощущаете страсть к программированию, радуетесь виду кода и не можете устоять перед желанием написать ещё что-нибудь, тогда продолжайте читать.

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

Я смирился с мыслью, что мой лучший код уже написан — в прошлом. Мне было уже 54 года (немало!) и я, вероятно, уже не мог писать код так же хорошо, как и раньше. Кто знает — может быть у меня уже начала отказывать память, ну или я просто выучил всё, что был способен в жизни выучить. Мой настрой подкреплялся наблюдениями окружающей меня реальности. Все новые технологии выглядели для меня чудаковато. Я ненавидел Node.js. Я считал все фреймворки для веб-разработки ужасными. И я сетовал на то, что классические способы разработки ПО разрушились и превратились в набор клише, которые нынче впариваются под умными названиями типа Agile или «экстремальное программирование». Я скучал за днями, когда люди писали спецификацию на будущее ПО, программировали, а затем тщательно тестировали его. И когда в каждой статье не было тысячи жаргонных словечек.
Читать дальше →
Total votes 121: ↑117 and ↓4 +113
Comments 134

Работа с текстовыми данными в scikit-learn (перевод документации) — часть 2

Reading time 6 min
Views 43K
Данная статья представляет собой перевод главы, обучающей работе с текстовыми данными, из официальной документации scikit-learn. Начало статьи вы можете прочесть в части 1.

Обучение классификатора


Теперь, когда мы выделили признаки, можно обучать классификатор предсказывать категорию текста. Давайте начнем с Наивного Байесовского классификатора, который станет прекрасной отправной точкой для нашей задачи. scikit-learn включает в себя несколько вариантов этого классификатора. Самый подходящий для подсчета слов — это его поли номинальный вариант:

>>> from sklearn.naive_bayes import MultinomialNB
>>> clf = MultinomialNB().fit(X_train_tfidf, twenty_train.target)

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Comments 3

Работа с текстовыми данными в scikit-learn (перевод документации) — часть 1

Reading time 6 min
Views 55K
Данная статья представляет перевод главы, обучающей работе с текстовыми данными, из официальной документации scikit-learn.

Цель этой главы — это исследование некоторых из самых важных инструментов в scikit-learn на одной частной задаче: анализ коллекции текстовых документов (новостные статьи) на 20 различных тематик.
В этой главе мы рассмотрим как:
  • загрузить содержимое файла и категории
  • выделить вектора признаков, подходящих для машинного обучения
  • обучить одномерную модель выполнять категоризацию
  • использовать стратегию grid search, чтобы найти наилучшую конфигурацию для извлечения признаков и для классификатора

Читать дальше
Total votes 12: ↑11 and ↓1 +10
Comments 0

Введение в машинное обучение с помощью scikit-learn (перевод документации)

Reading time 6 min
Views 86K
Данная статья представляет собой перевод введения в машинное обучение, представленное на официальном сайте scikit-learn.

В этой части мы поговорим о терминах машинного обучения, которые мы используем для работы с scikit-learn, и приведем простой пример обучения.

Машинное обучение: постановка вопроса


В общем, задача машинного обучения сводится к получению набора выборок данных и, в последствии, к попыткам предсказать свойства неизвестных данных. Если каждый набор данных — это не одиночное число, а например, многомерная сущность (multi-dimensional entry или multivariate data), то он должен иметь несколько признаков или фич.

Машинное обчение можно разделить на несколько больших категорий:
  • обучение с учителем (или управляемое обучение). Здесь данные представлены вместе с дополнительными признаками, которые мы хотим предсказать. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение с учителем). Это может быть любая из следующих задач:

  1. классификация: выборки данных принадлежат к двум или более классам и мы хотим научиться на уже размеченных данных предсказывать класс неразмеченной выборки. Примером задачи классификации может стать распознавание рукописных чисел, цель которого — присвоить каждому входному набору данных одну из конечного числа дискретных категорий. Другой способ понимания классификации — это понимание ее в качестве дискретной (как противоположность непрерывной) формы управляемого обучения, где у нас есть ограниченное количество категорий, предоставленных для N выборок; и мы пытаемся их пометить правильной категорией или классом.
  2. регрессионный анализ: если желаемый выходной результат состоит из одного или более непрерывных переменных, тогда мы сталкиваемся с регрессионным анализом. Примером решения такой задачи может служить предсказание длинны лосося как результата функции от его возраста и веса.


  • обучение без учителя (или самообучение). В данном случае обучающая выборка состоит из набора входных данных Х без каких-либо соответствующих им значений. Целью подобных задач может быть определение групп схожих элементов внутри данных. Это называется кластеризацией или кластерным анализом. Также задачей может быть установление распределения данных внутри пространства входов, называемое густотой ожидания (density estimation). Или это может быть выделение данных из высоко размерного пространства в двумерное или трехмерное с целью визуализации данных. (Нажмите сюда, чтобы перейти к странице Scikit-Learn обучение без учителя).

Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Comments 0

Написание framework на asyncio, aiohttp и мысли про Python3 часть первая

Reading time 18 min
Views 54K

Года полтора назад встал вопрос совместимости написанного кода с Python3. Поскольку уже стало более менее очевидно, что развивается только Python3 и, рано или поздно, все библиотеки будут портированы под него. И во всех дистрибутивах по умолчанию будет тройка. Но постепенно, по мере изучения, что нового появилось в последних версиях Python мне все больше стал нравится Asyncio и, скорее, даже не Acyncio а написанный для работы с ним aiohttp. И, спустя какое то время, появилась небольшая обертка вокруг aiohttp в стиле like django. Кому интересно что из этого получилось прошу под кат.


Вторая часть


Введение
Краткий обзор других фреймворков на базе aiohttp
1. Структура
2. aiohttp и jinja2
3. aiohttp и роуты
4. Статика и GET, POST параметры, редиректы
5. Websocket
6. asyncio и mongodb, aiohttp, session, middleware
7. aiohttp, supervisor, nginx, gunicorn
8. После установки, о примерах.
9.RoadMap

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

Оптимизация OS X для продления жизни SSD

Reading time 5 min
Views 53K
Привет, Geektimes! Если вы купили SSD и заинтересованы в том, чтобы твердотельный накопитель прослужил как можно дольше, то добро пожаловать под кат.


Хоть компания OCZ и предоставляет пятилетнюю гарантию на SSD серии Vector и Vertex, вы в состоянии увеличить срок службы самостоятельно. И без сторонних утилит – только с помощью «Терминала» и других стандартных инструментов OS X.
Читать дальше →
Total votes 56: ↑29 and ↓27 +2
Comments 15

Как я делал веб-версию KeePass

Reading time 6 min
Views 80K
Как-то мне надо было добавить в админку просмотр списка паролей. База хранилась на сервере в формате KeePass (kdbx v2), сервер был на ноде — недолго думая, я взял первый попавшийся пакет и сделал. А потом понадобилось то же самое, но прямо у пользователя в браузере, без сервера. Ничего не нашлось. Первым желанием было форкнуть либу и заменить использование node api, но от первого просмотра кода желание пропало, решил сделать сам.



Под катом расскажу о проблемах, с которыми я столкнулся, и способах их решения
Читать дальше →
Total votes 134: ↑133 and ↓1 +132
Comments 162

Мой опыт фриланса на Upwork

Reading time 5 min
Views 67K
Впервые я столкнулся с Upwork (тогда еще oDesk) в 2011м году, когда брат прислал на них ссылку в скайпе. Я только начинал работать на русских биржах, и подумал — почему бы не попробовать еще и на зарубежной. Но тогда все закончилось ничем. Результаты были слабыми, и, разочаровавшись во фрилансе как таковом, я бросил это дело.

Вернулся на Upwork только спустя два года, когда узнал, что есть те, кто серьезно занимаются фрилансом, и отлично живут на этом. Решил в этот раз ориентироваться только на зарубежных заказчиков, т. к. по первому опыту у них бюджеты были больше, а также они выше ценили свое и мое время. Так я снова оказался на Upwork.
Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Comments 23

Ускоряем приложение Android с помощью Golang

Reading time 4 min
Views 45K
image

Разработка мобильных приложений — это всегда компромисс между тем, что хочется сделать и тем, что позволяет сделать платформа устройства. В этой статье рассказывается о том, как увеличить возможности приложения Android с помощью Golang.
Читать дальше →
Total votes 43: ↑39 and ↓4 +35
Comments 29

Как я нашел лучший в мире язык программирования. Часть Йо (2.72)

Reading time 21 min
Views 115K
Поскольку после второй части у меня случился перерыв на работу, я поимел возможность получить некоторый фидбек, который я хоть и еще не обработал, все же заставляет меня написать внеплановую часть Йо, которая мне кажется важной для дальнейшего разговора. С тем же перерывом на работу связана задержка третьей части, прошу меня извинить тех, кто действительно ждал и пока не дождался.
Читать дальше →
Total votes 127: ↑88 and ↓39 +49
Comments 236

Information

Rating
Does not participate
Location
Тбилиси, Грузия, Грузия
Registered
Activity

Specialization

Backend Developer, Mobile Application Developer
Lead
From 6,000 $
Python
Django
English
PostgreSQL
Redis
Docker
SWIFT
Development management
Agile
Designing application architecture