Мобильный кот
2.72K subscribers
88 photos
3 videos
2 files
87 links
Все, что считаю важным про жизнь мобильного разработчика

Шкаф с материалами
https://t.me/cat_with_mobile_cabinet
Download Telegram
Forwarded from Prefire iOS
🎯 Какой iOS-фреймворк станет номером один?

Примите участие в голосовании, чтобы вместе создать ТОП iOS-фреймворков 2024 по версии разработчиков!

📋 Что в опросе?
- Выберите фреймворки, которые вы используете каждый день.
- Добавьте свои любимые инструменты и предложите те, которые хотели бы попробовать.

Займет всего 2 минуты!

🎁 Почему стоит участвовать?
- Итоговые результаты с полезной аналитикой будут опубликованы в Telegram-канале Prefire iOS.
- Помогите собрать реальную статистику по инструментам, которые действительно используют iOS-разработчики.

🗳 Присоединяйтесь к голосованию и делитесь опросом с коллегами!

Ваш голос важен 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
С Наступающим и Наступившим Новым годом!

Этот год продолжил череду невероятных, но был совершенно иным. Не хуже, не лучше, просто иным.

Я впервые ни прочитал ни одной книги по профессиональному росту, но прочитал целую пачку художественных книг. Особенно запомнились Дорога, Бойцовский клуб, Песнь Ахилла, 1984, Призрак Оперы и Маус. Наконец прочитал Евгения Онегина и продолжаю радоваться книгам Роберта Гелбрейта. И ни одной технической книги.

Очень гуманитарный год. Хотя был отличный Мобиус, и уже готовлюсь к новому.

Смена работы, спасибо VK за бесценный опыт, спасибо Райффайзену за новый бесценный опыт🫡

Кто бы мог подумать, что под macOS я буду писать больше, чем под iOS 😄

😍 И конечно рождение дочки, невероятно долгожданной.

Этот год был по-настоящему другим. И он позволил разгрузить голову, проанализировать и накопить темы и идеи, которыми бы хотелось поделиться и очень надеюсь уже наконец дописать всю пачку книг: и по Swift 6, и по SwiftUI и по Concurrency. Все начато и не завершено.

Желаю вам невероятного роста, мирного неба, счастья, радости и профессиональных успехов!
👑 SwiftGPT: Библиотека для работы с ChatGPT

Выложил на GitHub первую версию библиотеки SwiftGPT. Она предназначена для интеграции возможностей ChatGPT в iOS/macOS/Linux проекты.

⭐️ Особенности

- Совместимость с официальным OpenAI API: интерфейс основан на стилях OpenAI.
- Поддержка Swift 6 и Swift Concurrency.
- Мультиплатформенность: работает на всех платформах Apple (iOS, macOS, watchOS, tvOS) и даже на Linux.

⬆️ Основные функции

- Поддержка Chat Completions (генерация текста)
- В планах: Assistants API, Text-to-Speech, Text Transcriptions, Image generation и др.
- Возможность указать URL для запросов (актуально для РФ, когда делаешь свой прокси)

Почему я занялся SwiftGPT

Я давно интересуюсь искусственным интеллектом и активно применяю его решения в своих проектах. Для одной из задач мне потребовался API ChatGPT, но я обнаружил, что официального SDK для iOS не существует. Сначала я задумался о создании собственной библиотеки, но обратил внимание на пакет ChatGPTSwift.

У данной библиотеки есть сильная сторона — использование OpenAPI 3.0 спецификации для сетевого слоя. То есть разработчик взял официальную спецификацию, написанную по стандарту OpenAPI 3.0, и использую
пакет от Apple - Swift OpenAPI Generator, автогенерировал сетевой слой.

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

Однако, реализация ChatGPTSwift имела ряд проблем, которые требовали исправлений.

🤕 Проблемы ChatGPTSwift и их решения

- Единый монолитный класс: библиотека объединяла все функции в одном классе, что снижало читаемость и масштабируемость. Я переработал архитектуру, распределив функции в соответствии с официальным ChatGPT API.
- Неудобное API: оригинальное API библиотеки отличалось от OpenAI API. Теперь интерфейс полностью соответствует официальной документации, что минимизирует порог вхождения.
- Ошибки Swift Concurrency: вместо необоснованных решений вроде @unchecked Sendable, я внедрил корректную поддержку Swift Concurrency.
- Сложные названия типов и свойств: автогенерированные имена вроде text_event_hyphen_stream заменены на более понятные и привычные — например, textEventStream.
- Баги и устаревший API: обновил сетевой слой до актуальной версии API и устранил ошибки в логике.
- Архаичная обработка контекста токенов: библиотека обрезала контекст до 4000 токенов, хотя ChatGPT последней версии поддерживает 128 000. Это ограничение устранено.

💊 Что дальше

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

# Пример использования

Все максимально просто

import SwiftGPT

// Установка API key
OpenAI.Configuration.apiKey = .apiKey("your-api-key")

Task {
// создание сессии
let chat = OpenAI.Chat(model: .gpt4o)
// запрос
let response = try await chat.completions(prompt: "Как погода сегодня?")
print("Ответ: \(response)")
}

Если вам нужно интегрировать ChatGPT в iOS/macOS/Linux приложение, уже сейчас вы можете использовать SwiftGPT.

Забрать/посмотреть можно тут.

Теперь эта библиотека открыта для обратной связи и предложений сообщества!

#инструменты #ai #chatgpt
Please open Telegram to view this post
VIEW IN TELEGRAM
✍️ Об усилиях Apple и настоящем Swift

Apple открыла исходный код Swift Build - новость, которую вы точно видели. Возможно уже склонировали репозиторий swift-build, чтобы «полежало». Или может вы любите копать в суть и решили погрузиться в системы сборки и компиляторы. Кстати ранее рассказывал об интересной книге по LLVM.

Первое, что удивило меня - статистика языков в репозитории на GitHub (смотреть прикрепленное изображение). Да, Swift Build полностью написана на Swift. И даже зависимости, вроде swift-driver и swift-system, имеют практически 100%-ю реализацию на Swift.

И на самом деле это очень круто, здорово! Приятно видеть, что язык, на котором мы пишем свои убер-приложения может не только на словах использоваться для других целей, но и сама Apple развивает его, предпочитая его вместо традиционных ObjC, C/C++.

В середине 2024 года, на GitHub был создан новый аккаунт SwiftLang, куда незаметно переехал репо с самим свифтом (старый адрес https://github.com/apple/swift редеректит на этот репо). И видимо произошло это вместе с другим крупным опенсорс-анонсом - Swift Foundation.

Создается впечатление, что яблочная компания активировала усилия по расширению зоны применения Swift, создавая небольшую визуальную дистанцию между собой и языком, чтобы у разработчиков пропала стойкая ассоциация "Swift = Apple". Получается, что Apple продолжает создавать новые области его применения, и возможно "будущий вы", как Swift-разработчик, сможете найти работу не только кнопки красить.

И мне стало интересно, а что там с самим Swift'ом. Как менялся процент использования языков в самом главном репозитории. Об этом в следующем посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
В продолжении предыдущего поста...

🖥 Логарифмический график изменения процентного соотношения основных языков программирования в репозитории Swift. От версии 2.2 до 6.1.

Повторю, график логарифмический, иначе низы слились бы в одну линию. Смотрите значения оси Y и подписанные циферки.

🧍‍♂ Что я сделал

Конечно же начал с клонирования репозитория Swift. Дальше нужны было найти инструмент для подсчета процентов на каждом из нужных мне коммитов. Сам GitHub для этой цели использует Ruby-приложение Linguist, которое хрен поставишь на macOS. Я начал с cloc, но цифры, которые он выдавал были странные. Оказалось, что он подсчитывает код построчно, то есть
if { 
// ...
}

дает +3 в копилку свифта, а
if { // ... }

дает +1.

И это явно не то, что нужно, так как Linguist подсчитывает код побайтово.

Оказалось, что у Linguist есть порт на языке Go - Enry. А скомпилировать go-приложение на макоси можно без вопросов, что я и сделал. Дальше муторное переключение между коммитами, заваривание чая, сбор статистики, заваривание кофе, сведение все в табличку, поиск художника для отрисовки графика.

Из графика видно, что разрыв между C++ и Swift в 2016 года был практически в 2 раза, а в последнем релизе Swift 6.1 - практически отсутствует. Objective-C++ все еще есть, хотя в Swift 5.9 появился интероп между плюсами и свифтом.

🧍‍♂ Верим в светлые времена, когда часть исходного кода плюсов будет написана на Swift, а не наоборот)
Please open Telegram to view this post
VIEW IN TELEGRAM
Что значит Swift Build для экосистемы Swift

Разработчики Tuist об аспектах выпуска Swift Build. Очень интересно почитать мысли тех, кто годами занимается низкоуровневой работой с проектами. О перспективах туиста и формата проектов.

Авторитетное мнение.
👍 Выступлению на Мобиусе 2025 быть)

Чуть позже дам подробностей, о чем будем рассказывать.
Please open Telegram to view this post
VIEW IN TELEGRAM
#доклады

Молот и наковальня iOS-разработчика

ℹ️ О чем доклад: Узнаем о macOS-приложении RaifMagic — внутреннем инструменте Райффайзен Банка. Приложение помогает автоматизировать ежедневные рабочие задачи и стандартизировать контроль качества программного кода. 

RaifMagic имеет интегрированный с Swift Concurrency механизм запуска консольных команд, самописную систему автообновления и контроля требуемой для генерации проекта версии, систему контроля и развертывания окружения, систему проверки качества кода, систему интеграции с GitLab для назначения ревьюеров на merge requests и многие другие функции. Выясним историю создания и развития инструмента.

🗣 Спикеры:

Василий Усов — автор бестселлера «Swift. Основы разработки приложений под iOS, iPadOS и MacOS». Работает в платформенной команде Райффайзен Банка, ведет блог Мобильный кот и развивает сообщество JustSwift.

Кирилл Шумаков работает в Райффайзен Банке. Любит делать красивые анимации и классные инструменты для разработчиков.

Подробности и билеты
Mobius 2025. Итоги

Было круто, если еще не бывали там - атакуйте мозг своего работодателю, чтобы отправил. Нетворкинг прекрасный. В этот раз OZON устроил чрезвычайно крутую вечеринку после первого дня, удалось и на сцене Кирпичей навалить попеть, и с Яндексом погудеть (я в Райфе, для информации).

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

🦄 RaifMagic
Панель управления iOS проектом. Место моего творчества последний год.

⚠️ CodeOwners
Система, управляющая отношением «файл-владелец» в проекте, и контролирующее влитие МРов в мастер. Суть в том, что разраб может влить МР только когда все заинтересованные лица поставят аппрувы. Данная система есть в составе Мейджика (см. выше), но так же может использоваться независимо. Скоро будет релиз более автоматизированной версии и, возможно, GUI на KMP под все операционки. Как сайд-эффект - вы всегда знаете, какая команда отвечает за тот или иной модуль.

💇♀️ CodeStyler
Система, контролирующая качество кода. Такой linter + danger на максималках, расширяемый, написан на Swift, с локальным GUI и интеграцией на CI. Суть в том, что пока пользователь не выполнит все правила оформления кода и ресурсов, то он не сможет влить их в репозиторий (или даже просто пушнуть). А вишенка в том, что можете писать свои правила на что угодно. Мы, к примеру, проверяем правила оформления в соответствии со swiftformat, архитектурные вопросы, форматы загружаемых изображений, а на CI еще наличие русских символов в названии ветки (оказалось капец как актуально😁)

📟 CommandExecutor
Либа для вызова shell-команд из Swift. Полная интеграция со Swift Concurrency и Swift 6.

Следующим постом приложу презентацию с доклада, но лучше смотреть доклад на сайте конференции. Надеюсь его скоро выложат на ютубчик
🫠 Прощай, Swift

Сегодня второй рабочий день в роли Техлида. Два дня уже не программировал, ломает.

А если серьезно, то теперь буду лидить разработку Райффайзен Онлайн - iOS приложения для физических лиц. Невероятно крутая возможность сделать значительный ап своих навыков. Тут и стратегия, и архитектура, и инициатива.

На фоне этого я хочу переформатировать канал. И если раньше я старался держать его только в рамках iOS-разработки, то теперь попробую рассказывать чуть шире. Будет больше постов о том, что не менее важно для мобильного разработчика, чем его код: физическое здоровье, усталость, быт, организация рабочего процесса.

Про разработку конечно не буду забывать, RaifMagic, о котором говорил выше все еще остается в моем ведении. Время от времени буду наливать смузи и кодить на SwiftUI.