#mercdev
11 subscribers
2 photos
12 links
Коменты на воде про: #ios #macos #swift #ui #unity #python #django #ansible #go #dart #flutter #js #linux #docker

Контакты: @merc_dev

Приложения: https://bit.ly/merc-dev
Download Telegram
to view and join the conversation
Вперде выходные и, надеюсь, время на освоение тестирования в Swift найдётся. А то как-то пришлось поработать на неделе, неожиданно. Даже на следующую осталось...

#blog
Просмотрел 3 доклада WWDC по тестированию – запись UI действий это прям огонь! Осталось написать тестов к своему приложению… Тяну резину 🙂 Они же навернякак вскроют косяки которые придётся править, а это опять топтание на месете. Собственно единственный минус тестов – заставляют топтаться на месте, когда хочется нестись вперёд и волосы назад… Но сколько багов они вскрывают и не позволяют им повториться – это, конечно, дорогого стоит!

#blog #swift
Немного уткнулся в тестирование при использовании Core Data. Там же всё автоматом… На столько, что даже не знал где вообще у меня лежат данные. Так что когда решил сменить Build ID приложения пришлось покопаться с миграцией (приложение в sandbox'e, это такой "chroot искаропке" если вы понимаете о чём я) ибо с новым ID стары данные успешно испарились...

Разрулил предусмотренным средством миграции в сэндбокс версию. Она работает и для миграции между сэндбоксами, как оказалось. Возможно ей можно спереть данные другого приложения (с другой девелоперской подписью) - надо проверить...

Гуглить: "container-migration.plist".

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Move</key>
<array>
<array>
<string>${Library}/Containers/<otherAppBuildID>/Data/Library/Application Support/<appName></string>
<string>${ApplicationSupport}/<appName></string>
</array>
</array>
</dict>
</plist>


#swift #macos #sandbox #coredata
Ах, да, отвлёкся на интересную мысль, начал же предыдущий пост про тестирование – так вот, кажется решение примерно такое: юзать во время тестирование БД в памяти… В общем попробуем этим путём – там посмотрим…

https://robkerr.com/flexible-and-easy-unit-testing-of-coredata-persistence-code-2b2cf456cfae

ЗЫЖ с моей колокольни выглядит сложновато, мы же можем менять опции инициализации контейнера данных в зависимости от тех же переменных окружения… Определить что мы в режиме тестирования и юзать память вместо диска… Или это не Apple-way?

Но в любом случае надо ставить на setUp чистку хранилища.

#swift #macos #coredarta #test
В общем итоге забороть UI тестирование поповер-приложения пока не удалось. Решил глянуть что такое GameKit, SpriteKit и SceneKit. В кратце это очень круто. В особенности потому что библиотеки предоставляемые с платформой. А, при этом, возможностей у них как у хорошего стороннего игрового движка! Был приятно удивлён как возможностями самих библиотек так и IDE (XCode) которая, как оказалось, умеет в работу с 3D сценами и обладает прочими не специфичными для обычно программисткой IDE свойствами!

Ну и всё это богатство достаётся абсолютно бесплатно… Не считая ежегодной подписки, которая для разработки под десктоп не нужна, и процентов с продаж через официальный магазин 😄

Но у всей этой кучи профитов есть большой минус – ваша работа будет абсолютно ни как не конвертируема под другие платформы. А в случае малейшего успеха вас задолбят вопросами в духе "планируется ли порт на Линукс?"

В общем детская мечта создать игру двинула меня дальше, и я пошёл глянуть что там в Unity…

Но это уже совсем другая история…

#apple #gamekit #scenekit #spritekit
Всем единственному подписчику (каждый который из них — это я) сообщаю. Докатился я до приобретения членства Apple Developer… Деньги списались, подтверждение будет в течение двух суток. После чего смогу протестировать на устрйостве и зарелизить первое приложение.

#apple #swift #ios
Штош. Этот момент наступил – первый самостоятельный релиз "коммерческого продукта" в официальном магазине приложений! В жизни! ☝️🏻👴🏻

Учитывая что "в индустрии" я, грубо говоря, с 92 года, а в коммерческой разработке с 2007 — то как-то долго тянулась резина… На самом деле, многие знают это чуство, идей было много, но они никогда не доводятся до конца. В этот раз я решил всё сделать по-другому.

Банально, но я решил сделать MVP. Не продумывать "покорителя рынка" и пилить до второго пришествия. Не победить всех и во всём. Не делать супериуниверсальный комбайн под любое стечение обстоятельств. А сделать максимально порезаный и ограниченный продукт.

Если честно, то получилось немного больше чем "максимально порезаный и ограниченный продукт". Например опции редактирования в начальной версии не планировалиь (дыа, у меня даже есть багтрекер с задачами). Но в основном это заслуга фреймворков и Swift… Это было слишком просто, чтобы не сделать это сейчас 😁 В итоге за несколько недель эпопея с разработкой была звершена и доведена до публикации в магазине. Были некоторые шероховатости, про которые, возможно, будет отдельный пост, но потом.

Спасибо брату за дизайн иконки и советы. Спасибо Артёму Новичкову за консультации по разработке. Как напродаётся на пиво — обязательно проставлюсь 🙃

Итак, без дальнейших разглагольствований представляю вам:

Stream Note

Приложение для стримеров. А точнее для быстрого сохранения меток к стриму. Добавляете нужные кнопки (можно использовать эмоджи) и жмёте их в нужный момент. Типа поржал — нажал смеющийся смайлик, задумался — нажал задумчивый смайлик.

Слайдером можно выбрать как давно момент наступил. Типа кто-то анектот травил минуту — сдвинул на 60 секунд и нажал ржущий смайлик. На 60 секунд назад будет сохранено начало метки с этим смайликом. Продолжительность метки будет эти самые 60 секунд. Т.е. от минуты назад по настоящий момент у вас будет метка что тут было что-то смешное.

Потом эти метки можно выгрузить как субтитры в формате SRT и загрузить/импортировать в видеоредактор (даже YouTube принимает этот формат сабов!). Смысл в том, что видеоредакторы показывают субтитры отдельной дорожкой. И по блокам начала-конца метки в субтитрах легко найти место в видео где у вас был тот или иной момент!

#apple #swift #ios #streamnote

https://apps.apple.com/ru/app/stream-note/id1466957432
Описание основной проблемы, с которой столкнулся в ходе разработки вышеупомянутого приложения. Даже не разработки, а публикации. В разработке особых проблем не возникало, кокрастыке 🙂

#ios #appstore #apple #copyright

https://habr.com/ru/post/456542/
Итак. Спустя месяц в приложение добавлена существенная пачка фич и оно переведено на "фримиум" модель.

Из усвоенного — юзеры вообще не покупают приложение, даже за минимальную цену, если не знают о нём достаточно. Соответственно, стартовать с новой утилитой сразу с платной модели означает не продать ничего. За месяц приложение за $1 не купили ни разу! После снижения стоимости до нуля появились установки.

По этой причине в приложение на один из экранов добавлен рекламный банер и платная возможность его отключить. Смотрим что плучиться. Пока 2 десятка установок. Почему-то почти половина из Японии…

Из новых фич:

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

#ios #appstore #apple #sale

https://apps.apple.com/ru/app/stream-note/id1466957432
На ревью отправлена версия с поддержкой ночного режима и комманды (пока одна, больше адекватных не придумал) Siri 😄

Ещё раз перелопатил название, описание и ключевые слова. Будем бороться за ASO.

#ios #appstore #streamnote
Снова везёт, меньше суток ожидания и 4 минуты на проверку. Обновление в сторе. Индексация может занять около суток (как и всё в Apple) но у меня в сторе уже новая версия!

Между тем в погоне за ASO забыл сменить категорию… Придётся со следующей обновой.

#ios #appstore #streamnote
Буду корпорацией, чо мелочицца…
Поиграл со шрифтами согласно рекомендациям ASO. Прирост есть, впрочем, как и грустный тренд на снижение…

#aso #appstore
Ну, всё. Кажется всё что я хотел сделать для автоматизации процесса пометки стримов/подкастов я сделал. Сегодня отправиль на рассмотрение версию с экспортом шоунот, собственно.

#appstore #streamnote
На всякий случай запустил страницу на Product Hunt. Хотя не знаю что это и с чем едят, но вот: https://www.producthunt.com/posts/stream-note-shownotes-and-subtitles

Ставьте лайки, предлагайте улучшения и всё такое 😄

#streamnote #producthunt #marketing
Обнаружил что IFTTT не поддерживает работу с VK. Что довольно грустно. Существующие решения зачастую платные и нацелены на SMM. Обычные "наколеночные" решения из гитхаба почему-то все про репостинг с VK в телегу а не наоборот… Что странно, потому что VK как источник не самое лучшее решение. Как минимум потому что не поддерживается IFTTT. Т.е. если сначала постить в VK то потом автоматические репосты нудно ВСЕГДА делать через костыли. Я же взял за основу телегу, канал в которой выступает как центральный из которого всё репостится в разные сетки.

Потому для репостинга пришлось накропать бота. Погряз. в нюансах API VK… Очень старнное дерьмо. Оно конечно работает, но видно что методы добавлялись спонтанно. Где-то ID группы надо передавать с "-" впереди, где-то без. В разных вызовах некоторые поля называются по-разному. Вроде как "album_id" в одном и "aid" в другом. Местами это перепутано в документации…

В общем спустя 4 выходных бот допилен и готов к работе. Разбираем, лицензия MIT: https://github.com/mercdev-corp/repsoter
Channel name was changed to «#mercdev»
Добавил возможность сдвига отметок во времени на случай если вдруг запарился и начал ставить метки позже. В этом случае при экспорте просто добавляаешь сдвиг времени на сколько опоздал. Можно добавлять сдвиг в интерфейсе экспорта сразу - он сохраняется для каждого стрима.

https://apps.apple.com/ru/app/id1466957432