Как стать автором
Обновить
-29
SomeName @RomanBamburaread⁠-⁠only

User

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

AudioKit и синтезирование звука в iOS/OSX

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


AudioKit — это аудиофреймворк, разработанный аудиоинженерами, программистами и музыкантами специально для iOS и OSX. Он предоставляет инструменты для обработки и синтезирования звука. Под капотом — это смесь из Swift, Objective-C, C++ и С, и Audio Unit API от Apple. Потрясающие (и довольно сложные) технологии завёрнуты в очень дружелюбное Swift API, к которому можно обращаться прямо из Xcode Playgrounds!

В этом туториале мы отправимся в путешествие по AudioKit, а заодно и истории синтезирования звука. Вы узнаете об основах физики звука и том, как работали первые синтезаторы, такие как Hammond Organ. Также будут рассмотрены и современные техники, например, семплинг.

Приготовьте ваш любимый напиток, устраивайтесь поудобнее и вперёд!
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии3

Устройство компилятора Swift. Часть 4

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

Это последняя часть моего обзора компилятора Swift. Я покажу, как можно осуществить генерацию LLVM IR из AST и что выдаёт настоящий фронтенд. Если вы не читали предыдущие части, то переходите по ссылкам:


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

А ваша служба является RESTful? Все что необходимо/обязательно знать про веб службы и REST

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

Введение


Вот не люблю я изобретать велосипед и статью я бы эту не написал, но пришлось. Про REST сказано уже довольно много. Многие поставщики веб служб готовы клясться, что их службы являются RESTful. Во время собеседования вы точно услышите хотя бы несколько вопросов про REST, независимо от того это собеседования для бэкенд, мобайл или фронтенд разработчика. Я вот помню как-то во время одного собеседования меня задали такой вопрос: «Вот вы написали в своем резюме, что знайте REST․ Ответьте пожалуйста, какой HTTP код вы получите, если при запросе к RESTful сервису ресурс не найден?». Ответ 404 был принят единогласно. Если честно, я так и не понял, как этот вопрос помог понять знаю ли я REST или нет, но одно могу уверенно сказать: REST понимают далеко не все. Вот некоторые вопросы, которые мучали меня долгое время:

  1. Зачем REST стал таким трендовым? Это архитектура была же предложена еще в 2000 году?
  2. Что я получу если моя служба будет RESTful?
  3. Как определить является ли служба RESTful или нет?
  4. Как правильно должны создаваться URL REST служб?
  5. Какие http методы и коды должны быть использованы в RESTful службе?

Если вы не можете дать исчерпывающего ответа хотя бы на один из этих вопросов, то продолжайте чтение. Если вы можете однозначно ответить на все эти вопросы, можете привести формат правильного URL, считайте, что GET, POST, PUT, DELETE обязательно должны соответствовать CRUD операциям с ресурсами, то вам обязательно надо продолжать чтение.
Читать дальше →
Всего голосов 43: ↑37 и ↓6+31
Комментарии125

Написание Unit тестов на Swift для проверки асинхронных задач

Время на прочтение2 мин
Количество просмотров4.3K
Сегодня хочу вам быстренько рассказать как тестировать асинхронный код.

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

    func testAscynFunction() {
        someAsyncFunction()
    }

    func someAsyncFunction() {
        let bg = DispatchQueue.global(qos: .background)
        bg.asyncAfter(deadline: .now() + 5) {
            XCTAssert(false, "Something went wrong")
        }
    }

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

Для решения такой проблемы в тестах есть одна замечательная вещь:
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии0

Server-provided animations in iOS apps

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


Hi everyone! About six months ago we launched one of Badoo’s most exciting features: Live Streaming. One of its main functionalities is that viewers can send gifts to their favourite streamers to express their appreciation. We wanted to make the gifts as fancy and as engaging as possible, so it was decided to make some of them really lively, and by this I mean animated. And to engage people even more, we, the Badoo team, planned to update those gifts and animations every few weeks.

As an iOS engineer, you might have already guessed the challenge we faced here: the need to add new animations and remove the old ones was going to require a fair amount of work from the client side. We’d need both the Android and the iOS development teams for every release — which, when combined with the amount of time App Store reviews and approval often take, would mean it might be days before each update could go live. But we solved the problem, and I’m going to explain to you how.

Solution overview


By this stage, we already knew how to export Adobe After Effects (AAE) animations into the format readable by our iOS app using the Lottie library. This time though, we went a bit further: we decided to create a kind of animation storage service, available via the internet. In other words, we would store all the actual animations on the server and deliver them to the client apps on demand:
Read more →
Всего голосов 33: ↑32 и ↓1+31
Комментарии1

Анимации в iOS-приложениях, рождённые на сервере

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


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

iOS-инженеры наверняка догадались, о каких объёмах работы идёт речь: чтобы удалять старые и добавлять новые анимации, необходимо совершить множество действий с клиентской стороны. Для этого в каждом релизе должны быть задействованы Android- и iOS-команды, а вкупе со временем, необходимым на одобрение обновления в App Store, это означает, что запуск каждого релиза с обновлёнными анимациями может занять несколько дней. Однако нам удалось решить эту проблему, и сейчас я расскажу как.

Архитектура решения


К тому времени мы уже умели экспортировать анимации Adobe After Effects (далее — AAE) в понятный нашему iOS-приложению формат при помощи библиотеки Lottie. В этот раз мы пошли чуть дальше: решили хранить все актуальные анимации на сервере и скачивать их по мере необходимости.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии2

42 оператора расширенного поиска Google (полный список)

Время на прочтение15 мин
Количество просмотров289K
Те, кто давно занимается поисковой оптимизацией, хорошо знают об операторах расширенного поиска Google. Например, почти все знают об операторе site:, который ограничивает поисковую выдачу одним сайтом.

Большинство операторов легко запомнить, это короткие команды. Но уметь эффективно их использовать — совсем другая история. Многие специалисты знают основы, но немногие по-настоящему овладели этими командами.

В этой статье я поделюсь советами, которые помогут освоить поисковые операторы для 15 конкретных задач.
Читать дальше →
Всего голосов 127: ↑124 и ↓3+121
Комментарии40

Два процента «кота» или кто сфотографировал Мастера Йоду?

Время на прочтение3 мин
Количество просмотров2.9K
В 2016 из-за давней мечты о видео-играх и «хайпа» вокруг AI я начал изучать Python.
Computer Science is Fun потому только неделю назад я обучил первую recognition модель, но без использования Python (в computer science много соблазнов). Как и предсказывал Андрей Себрант (Yandex), новая технологическая революция свершилась. Почему? Сделать приложение по распознаванию изображений проще, чем компьютерную игру. Хватит часа или двух.



Я пошел «сложным» путем – не выбирал из четырех уже обученных моделей, а натренировал свою. Библиотека Core ML от Apple позволяет сделать это 6 строчками кода или через графический интерфейс в playgrounds.

import CreateMLUI
let builder = MLImageClassifierBuilder()
builder.showInLiveView()

Большая часть времени ушла на сбор и фильтрацию данных для обучения, по 70 фотографий собак, котов и людей, но быстро написанный скрипт, сделал этот процесс полуавтоматическим.

Раньше я только читал про machine learning. Когда сам попробовал – столкнулся с тремя ожидаемыми проблемами/выводами:

  1. Данные – самая важная часть.
  2. Удобный интерфейс(CoreML). Все просто работает и не очень хочется лезть в исходный код, чтобы разобраться в деталях. Машинное обучение доступно любому пользователю, но сложные подробности инженеры Apple постарались спрятать.
  3. Модель это «черный ящик». Я не знаю правил по которым модель считает, что на фотографии два процента «кота».

Эксперимент с распознаванием «котов-людей» натолкнул на мысль, что алгоритм классификации справится со «стилем».
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Как я улучшил свои навыки работы с алгоритмами, структурами данных и научился использовать все это на практике

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


От переводчика: сегодня публикуем для вас статью Фабиана Терха. Статья в первую очередь будет полезна для начинающих программистов.

Я программист-самоучка, этот пост отражает мой личный опыт и навыки в такой сфере, как алгоритмы и структуры данных; кроме того, я рассказываю и о способах решения задач (к слову, второе мне дается несколько хуже, чем первое).
Читать дальше →
Всего голосов 37: ↑23 и ↓14+9
Комментарии6

Рисуем кодом в Swift, PaintCode

Время на прочтение3 мин
Количество просмотров8.7K
Пока в соседней комнате готовят оливье, я пишу небольшой туториал как рисовать кодом. Сразу представляются строчки кода с дробными числами, где ведём линию по точкам. А для вычисления радиуса окружности берём яд змеи, надежность хранения фото в iCloud и шепчем заклинание. Пугает, понимаю. Даже в ролике на YouTube вставил шутку:

— “Ааастановите, пожалуйста, вот у магазина” — прокричал герой российского сериала.

В целом, дорогой друг, ты прав. Будут и дробные числа, и куча строчек кода. Но будет намного проще. Интересно? Давай к делу.
Читать дальше →
Всего голосов 6: ↑4 и ↓2+2
Комментарии8

Заметки фитохимика. Зеленый банан, или Не забудь покормить микробиоту

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

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


В общем, для "разогрева" предлагаю экспресс-тест. Как вы думаете, какой из бананов на картинке обладает максимальными лечебным эффектом по версии китайских исследователей? Для начала просто выберите и запомните число под понравившейся картинкой.



Ну а за ответом — традиционно, под кат.

Читать дальше →
Всего голосов 118: ↑117 и ↓1+116
Комментарии102

Хурма 2.0 Инструкция по употреблению

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

«Всё — яд, всё — лекарство; то и другое определяет доза»
Парацельс


Удивительно, но после публикации статьи Заметки фитохимика. Хурма мой facebook ЛС-ящик просто взорвался от десятков сообщений. Для меня это стало настоящим открытием, то что так велик и многонационален "клуб почитателей хурмы". Одними из самых часто встречающихся вопросов были "Кому нельзя есть хурму? Сколько можно есть хурмы детям? Что за закупорка может быть от хурмы ?" и т.п. Собравшись силами я написал очередную статью, в которой постарался развернуто ответить на эти вопросы. Кроме того, если интересно как "вяжущий вкус" хурмы связан с рыбой, что лечат дубильными веществами и почему можно не бояться "желудочного камня" — традиционно прошу под кат.


Читать дальше →
Всего голосов 137: ↑127 и ↓10+117
Комментарии67

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность