Mercenary Developer
2 members
1 photo
9 links
Коменты на воде про: #ios #macos #swift #ui #unity #python #django #ansible #go #js #linux #docker

Контакты (вопросы сотрудничества в данный момент не рассматриваются): https://mercdev.pro

Приложения: http://bit.ly/merc-dev
Download Telegram
to view and join the conversation
О Swift – не покидает ощущение искуственности языка. Т.е. как бы Apple не выставляла его опенсорсным и универсальным – сам по себе язык и то что из него компилируется мало пригоден к современным реалиям без сторонних библиотек. А точнее без библиотек написанных Apple для своих систем. Потому что та же многопоточность делается на уровне этих библиотек, которые не попадают в опенсорс поставку. В отличие от того же Go или Rust.

Такие вещи как аттрибуты, такой синтаксический сахар начинающиеся с @. Очень напоминают по функционалу декораторы Python, но их нельзя создавать самому! Т.е. они типа есть в языке как зарезервированные слова, но – зачем в опенсорс версии @available("macOS") при отсутствующем @available("linux") например? 🙂

В разработке же под экосистему Apple язык кажется просто осовремененным интерфейсом в Objective-C, а никак не самодостаточным языком разработки. Всё-таки интересно будет посмотреть когда все SDK будут переписаны на Swift, появится возможность создавать свои аттрибуты и в стандартную библиотеку войдёт многопоточность (в последнем очень сомневаюсь).

Впрочем отсутствие встроенной многопоточности не мешает не таким избалованным разрабам как я вполне успешно использовать сторонные решения: kitura.io web фреймворк на swift… Судя по бейджикам в репозитории он должен работать под linux.

#blog #swift
За несколько часов добил оставшийся функционал. Удивительно ускорился процесс, учитывая как мало ещё опыта в разработке под macOS! Всё-таки возможности структурирования кода в Swift существенно облегчают рефакторинг и расширение функционала.

#blog #swift
21 день для Swift - вполне реально ☺️
Надо ещё чё-нить накорябать... Или усложнять это приложение, или писать ещё чё-нить. Интересных, а главное полезных идей как всегда нет 😒

Потыкаюсь пока в гайды по iOS

#blog
Придумал, можно сделать мультиязычность и упаковать в .dmg 😄

#blog
И есть идея ещё одного приложения – по ходу пьесы попробуем осилить разработку без стоирборда и вывод текста в менюбар.

#blog #swift #macos
Создание .dmg оказалось задачей тривиальной, хотя, почему-то, не встроенной в XCode – делается сторонними утилитами.

А вот автозапуск приложения при входе в систему сопротивляется. Удивительная муть с приложением-хелпером которое находится в правильной папке, регается основным приложением как запускаемое при входе и оно уже запускает основное приложение… Руками проверяю – всё ок, а когда захожу в систему – ничего не происходит… Может что-то в сендбоксе, как это было с сетью.

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLoginItems.html

#blog #swift #macos
Автозапуск вроде заработал, хотя не до конца уверен в некоторых косяках. То ли надо чистить папку сборки постоянно, то-ли я ещё что-то не учёл…

#macos #swift
Накопилось писем рассыки Ray Wenderlich с email курсом по разработке iOS приложения. Довольно забавная идея не курс на сайте на который ты забиваешь, а слать письма с ежедневныйми заданиями… Как в идите на них тоже можно забивать, но если их не удалять – они копятся, как напоминание. И вот я наконец решил за них засесть. Т.к. приложения для macos – это хорошо, но ios продаётся веселее 🙂 и уметь в него тоже надо.

Кстати ещё на рассылку Bart Jacobs'а подписался – просто всякие умные мысли (или типа умные, я пока не могу адекватно их оценить) по разработке – пространства имён, паттерны и т.п. Забавно что по другим языкам я на такие рассылки не натыкался, а как только взялся за swift аж сразу две…

#blog #macos #ios
Штош, разработка есть, упаковки для дистрибуции есть, локализация есть… Остаётся тестирование и можно идти в коммерческую разработку.

Не смотря на мелкие косяки, разработка на Swift, оставляет очень позитивное впечатление. Косяки действительное мелкие, если бы на всех платформах были только такие проблемы - мир ПО был бы совершенно другим. По той же причине понятно, почему под macOS софт для пользователя пишется, а под Linux - когда есть коммерческая целесообразность или мотивированность. Всё-таки проблем, которые нужно будет решить для предоставления пользователю возможности юзать твой софт под линуксом несравненно больше. И главная проблема в том что вместо разработки собственно продукта придётся тратить время именно на войну с проблемами окружения…

В экосистеме Apple в 99% ты просто берёшь и делаешь продукт. Можно сказать рай для разработчика. Наверняка это просто эйфория после вакханалии опенсорса и я ещё хлебану проблем с запрещёнными API и прочими обновлениями требований. Но пока что это выглядит так, что если вы готовы играть по правилам и не хотите тратить время на построение сопутствующей экосистемы - Swift под Apple это то что нужно.

Ну и всё это сопровождение разработки и обеспечение базовыми фреймворками - это очень хороший пример для подражания.

#blog #macos #swift
Вперде выходные и, надеюсь, время на освоение тестирования в 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