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

Шкаф с материалами
https://t.me/cat_with_mobile_cabinet
Download Telegram
🥳Документальный фильм о IT 🥳

😎Привет всем котам из Coffee&Code

🧑‍💻 Два наших замечательных коллеги, Сергей Гнатюк @gnatyuk_sergey один из сооснователей комьюнити и Василий Усов @dobbywankenoby автор канала Dev Channel, а также популярных книг по iOS разработке, стали героями независимого документального фильма о IT-индустрии!

🚀 Они рассказали о своем пути в IT, о том, какие технологии используют, какие проекты создают и какие проблемы решают. Они также поделились своим видением будущего IT и дали советы начинающим разработчикам

⚡️Фильм обещает быть очень интересным и познавательным, ведь в нем приняли участие не только наши коллеги, но и другие известные IT-специалисты из разных компаний, такие как Ровшан Насибов и Мехоношин Сергей

🎥 Фильм сейчас, еще в процессе монтажа и выйдет в следующем году. Но мы можем поделиться с вами видео со съемок, где вы увидите Сергея и Василия в действии

Смотрите видео, комментируйте в нашем чате, ставьте лайки и подписывайтесь на наш канал, чтобы не пропустить премьеру фильма! 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Поговорим про рынок мобильной разработки в 2024 году

Новый год наступил, а проблемы не изменились: Куда двигаться? Началось ли падение рынка? Что учить? Чего ждать? Где работать? Как работать? Стоит ли вообще работать?

Завтра (24 января в онлайне на площадке Coffee&Code вместе с CEO TeachMeSkills Ильей Рублевским постараемся ответить на эти и другие вопросы.

🤢 О чем поговорим:
- Стоит ли начинать учиться в 2024 году? Говорят курьеры делают столько же.
- Где сейчас находится рынок мобильной разработки?
- Уже пора увольнять всех нативных разработчиков и переходить на Flutter?
- Будет ли One more thing в этом году?
- Как искать работу?

Буду рады вашим вопросам и комментариям.

Послушать и поучаствовать можно 24 января в 18:00 по этой ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
📝Obsidian - для ведения собственной базы знаний

Вопрос ведения собственной базы знаний актуален как для начинающих, так и для опытных разработчиков. Лично у меня все еще какое-то мессиво из Markdown-файлов на гите, заметок в Notes, страничек в Xcode Playground и доковских файлов с главами новых книг.

Время от времени я пытаюсь их систематизировать и перенести в какой-то единый формат.

⭐️Несколько дней назад на канале у Льва увидел ссылку на статью на Хабре про нечто большее, чем просто менеджер заметок - Obsidian. Прочитал серию статей и понял, что хочу попробовать.

Obsidian основывается на формате Markdown, но при этом расширяет его возможности, строит связанные графы, использует теги, списки и тд. Очень важно то, что даже если когда-то разработчики откажутся от поддержки приложения, то сырые Markdown-файлы, которые лежат в папке с вашими проектами в Obsidian, смогут быть прочитаны любым другим редактором. То есть никаких проприетарных форматов.

#инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
А так ли нужна Swift Modern Concurrency

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

P.S. В мае-июне будет продолжение про историю акторов и их применение в языке.

https://youtu.be/DIDoHx6KP50?si=7H_IYQo8ewNMQ_tq
#подкаст

Выпуск «Ленты Мобиуса» с Василием Усовым про Swift Concurrency, геосервисы VK и книги по Swift — сегодня в 17:00 по Москве: https://youtu.be/mi8ows57gpw
Наконец подкатили фото с Мобиуса. Это как завершающий штрих, после которого осознаешь, что конференция завершилась. И значит пора искать тему к осени.

Спасибо всем, кто смотрел, оставлял фидбэк, пытался сделать доклад лучше.

И конечно отдельное спасибо моему эксперту и участнику программного комитета Мобиуса - Максиму Гришутину (https://t.me/prefire_ios) за вложенные в мой доклад силы, время и деньги😄
Полезное видео об использовании памяти, об @escaping и куче, о понятии владения и операторах consume и borrow, и о многом другом.
И конечно о том, как это все влияет на оптимизации компилятора.

Рекомендовано к просмотру
🔗 Ссылка

#wwdc24 #swift
В этом году просто парад видео о работе с памятью. А в этот раз целый воркшоп по поиску утечек с помощью различных приложений для анализа.

Рекомендовано к просмотру
🔗 Ссылка

#wwdc24 #swift
Что оказалось самым сложным в использовании NonCopyable?

Осознать и найти применение коцепции некопируемых типов? Нет. Написать тильду ~, так как клавиатура по умолчанию пишет надстрочную тильду ˜.
˜Copyable vs ~Copyable.🚬

Пока только Shift + ˜ + Пробел помогает.
Please open Telegram to view this post
VIEW IN TELEGRAM
😳Data Formatting

С удивлением обнаружил, что мимо меня прошли декларативные форматтеры строк, дат, чисел (целых и с плавающей точкой), урлов и даже списков.

Все одним выражением, возможностей достаточно. Прекрасная альтернатива стандартному DateFormatter и остальным.

Парсите строки, форматируйте строки, особенно удобно показалась работа с валютами (учитывает локаль) и списками.

iOS 15+ 😏

Formatters

#swift
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Сколько человеко-лет нужно, чтобы Apple смогла исправить этот баг и нормально подсвечивать ошибки в SwiftUI-коде?

Периодически эта штука тратит так много времени на поиск, где же я забыл указать параметр какого-то инцииализатора, что нет сил😠
Please open Telegram to view this post
VIEW IN TELEGRAM
Вышла Xcode 16 beta 2

🙋‍♀️На удивление первая бета была довольна стабильна и даже позволяла мне лишь с нечастыми лагами/багами пилить код. Надеюсь станет лучше. Обновляем.

Посмотреть Release notes и скачать

🙋‍♀️Напомню, что для работы с несколькими версиями Xcode я использую приложение Xcodes. И вам советую.

Xcodes
Please open Telegram to view this post
VIEW IN TELEGRAM
Актуальна ли разработка под macOS?

Проекты под macOS никогда не были для меня актуальными настолько, чтобы я уделял им значительное количество времени. Занимался я в основном небольшими приложеньками и исключительно для того, чтобы быть в курсе "что нового в ките и суи для макоси". Да и разработчики под настольную ось мне всегда казались отдельной кастой, ведь бизнесу сегодня в первую очередь нужны мобилки и вэб.

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

И мы с командой решили активно инвестировать в это решение, но даже не знали что нас ждет))

Три основных вывода:

1️⃣ SwiftUI для macOS - продакшн рэди .
2️⃣ То, что изначально воспринималось, как "однокнопочный UI для tuist generate и `pod install`", в результате стартануло большой рефакторинг всего проекта. Одно лишь внедрение системы кеширования модулей фича-команд привело к значительному снижению времени холодной сборки.
3️⃣ Многие крупные компании либо уже прошли активную фазу создания подобных инструментов, либо находятся в ней. Довольно активно своим опытом делится Сбер на крупных конференциях.

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

Если в вашем проекте наклевываются или уже используются отдельные модули, причем не важно, что вы используете: cocoapods, spm, чистый tuist или свое/другое решение, то начните с изучения официального руководства Apple по системе сборки.

Сегодня мы ведем работу над тем, чтобы заопенсорсить часть из своих разработок, так как очевидно, что они могут быть полезны и другим компаниях. Так же в будущих постах расскажу чуть подробнее о некоторых из них: какие вопросы пришлось решить, как мы отсеивали неподходящие опенсорсные решения и через какие иттерации проходили.

Вот краткий список основных функций, что уже внедрены:

🟢 GUI и CLI версии. CLI разрабатывается с прицелом для внедрения на CI-сервера, но активно используется и на локальных машинках.
🟢 Версионирование модулей. Имея сотни модулей от фича-команд нужно с удобством управлять их версиями.
🟢 Кеширование модулей и поддержкой ремот-кеша. Если среди сотен модулей вам нужно доработать 1-2-3, то зачем тратить время на постоянную пересборку остальных? А при условии, что они уже были собраны кем-то другим, то можно просто переиспользовать чужой кеш. На самом деле это одна из самых проблемных и неочевидных задач, особенно если говорить про инвалидацию кеша, когда при изменении одного модуля, зависящие от него не должны браться из кеша.
🟢 Вызов консольных команды из Swift. Причем с полной интеграцией со Swift Concurrency. И на самом деле сделать так, чтобы при отмене таски в Swift принудительно останавливалось выполнение запущенной консольной команды - это был взрыв мозга.
🟢 Контроль, установка и обновление окружения. С помощью единой тулзы мы обеспечиваем единое окружение: версии Xcode и необходимых зависимостей.
🟢 Автообновление. Нужно было сделать так, чтобы новые версии приложения оперативно становились доступны разработчикам и приложение обновлялось в автоматическом режиме по нажатию одной кнопки. Супер-популярный Sparkle не подошел из-за закрытой инфраструктуры и необходимости авторизации на внутренних сервисах. При этом нужно учесть, что иногда происходят ломающие изменения и новая версия нашей тулзы не сможет собрать какой-то старый коммит основного проекта. А собрать нужно.
🟢 Интеграция с git. Клонирование, чекаут, контроль текущей ветки.
🟢 Сборник часто используемых задач. Запуск очистки кешей и DerivedData. обновление паролей и токенов и многие другие задачи - нажатием одной кнопки.
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