Forwarded from Coffee&Code | Community | IT | Android | iOS | Design | Frontend | Backend | DevOps | QA
🎥 Фильм сейчас, еще в процессе монтажа и выйдет в следующем году. Но мы можем поделиться с вами видео со съемок, где вы увидите Сергея и Василия в действии
Смотрите видео, комментируйте в нашем чате, ставьте лайки и подписывайтесь на наш канал, чтобы не пропустить премьеру фильма!
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 по этой ссылке
Новый год наступил, а проблемы не изменились: Куда двигаться? Началось ли падение рынка? Что учить? Чего ждать? Где работать? Как работать? Стоит ли вообще работать?
Завтра (24 января в онлайне на площадке Coffee&Code вместе с CEO TeachMeSkills Ильей Рублевским постараемся ответить на эти и другие вопросы.
- Стоит ли начинать учиться в 2024 году? Говорят курьеры делают столько же.
- Где сейчас находится рынок мобильной разработки?
- Уже пора увольнять всех нативных разработчиков и переходить на Flutter?
- Будет ли One more thing в этом году?
- Как искать работу?
Буду рады вашим вопросам и комментариям.
Послушать и поучаствовать можно 24 января в 18:00 по этой ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос ведения собственной базы знаний актуален как для начинающих, так и для опытных разработчиков. Лично у меня все еще какое-то мессиво из Markdown-файлов на гите, заметок в Notes, страничек в Xcode Playground и доковских файлов с главами новых книг.
Время от времени я пытаюсь их систематизировать и перенести в какой-то единый формат.
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
Наконец на канале Мобиуса вышел мой осенний доклад про Modern Concurrency. Кажется получилось довольно не расслабляюще и, надеюсь, полезно.
P.S. В мае-июне будет продолжение про историю акторов и их применение в языке.
https://youtu.be/DIDoHx6KP50?si=7H_IYQo8ewNMQ_tq
YouTube
Василий Усов — А так ли нужна Swift Modern Concurrency?
Ближайшая конференция: Mobius 2025 Spring, 9–10 апреля, Москва + онлайн. Подробности и билеты: https://jrg.su/ojGU3B
— —
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному программированию – механизмы Task, async/await и акторы. Но…
— —
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному программированию – механизмы Task, async/await и акторы. Но…
Forwarded from Mobius — канал конференции
#подкаст
Выпуск «Ленты Мобиуса» с Василием Усовым про Swift Concurrency, геосервисы VK и книги по Swift — сегодня в 17:00 по Москве: https://youtu.be/mi8ows57gpw
Выпуск «Ленты Мобиуса» с Василием Усовым про Swift Concurrency, геосервисы VK и книги по Swift — сегодня в 17:00 по Москве: https://youtu.be/mi8ows57gpw
Наконец подкатили фото с Мобиуса. Это как завершающий штрих, после которого осознаешь, что конференция завершилась. И значит пора искать тему к осени.
Спасибо всем, кто смотрел, оставлял фидбэк, пытался сделать доклад лучше.
И конечно отдельное спасибо моему эксперту и участнику программного комитета Мобиуса - Максиму Гришутину (https://t.me/prefire_ios) за вложенные в мой доклад силы, время и деньги😄
Спасибо всем, кто смотрел, оставлял фидбэк, пытался сделать доклад лучше.
И конечно отдельное спасибо моему эксперту и участнику программного комитета Мобиуса - Максиму Гришутину (https://t.me/prefire_ios) за вложенные в мой доклад силы, время и деньги😄
Что оказалось самым сложным в использовании NonCopyable?
Осознать и найти применение коцепции некопируемых типов? Нет. Написать тильду
🚬
Пока только
Осознать и найти применение коцепции некопируемых типов? Нет. Написать тильду
~
, так как клавиатура по умолчанию пишет надстрочную тильду ˜
.˜Copyable
vs ~Copyable
.Пока только
Shift
+ ˜
+ Пробел
помогает.Please open Telegram to view this post
VIEW IN TELEGRAM
С удивлением обнаружил, что мимо меня прошли декларативные форматтеры строк, дат, чисел (целых и с плавающей точкой), урлов и даже списков.
Все одним выражением, возможностей достаточно. Прекрасная альтернатива стандартному
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
Мобильный кот
А так ли нужна Swift Modern Concurrency Наконец на канале Мобиуса вышел мой осенний доклад про Modern Concurrency. Кажется получилось довольно не расслабляюще и, надеюсь, полезно. P.S. В мае-июне будет продолжение про историю акторов и их применение в языке.…
А так ли нужны акторы в Swift Concurrency?
Очень неожиданно Мобиус выложили мой второй доклад про Swift Concurrency с Мобиус Spring 2024. Всего месяц назад выступал с ним.
https://www.youtube.com/watch?v=kBv0r1HUCFM
Очень неожиданно Мобиус выложили мой второй доклад про Swift Concurrency с Мобиус Spring 2024. Всего месяц назад выступал с ним.
https://www.youtube.com/watch?v=kBv0r1HUCFM
YouTube
Василий Усов — А так ли нужны акторы в Swift Concurrency?
Ближайшая конференция: Mobius 2025 Spring, 9–10 апреля, Москва + онлайн. Подробности и билеты: https://jrg.su/ojGU3B
— —
Скачать презентацию с сайта Mobius — https://jrg.su/CK7Wk9
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному…
— —
Скачать презентацию с сайта Mobius — https://jrg.su/CK7Wk9
В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному…
Вышла Xcode 16 beta 2
🙋♀️ На удивление первая бета была довольна стабильна и даже позволяла мне лишь с нечастыми лагами/багами пилить код. Надеюсь станет лучше. Обновляем.
Посмотреть Release notes и скачать
🙋♀️ Напомню, что для работы с несколькими версиями Xcode я использую приложение Xcodes. И вам советую.
Xcodes
Посмотреть Release notes и скачать
Xcodes
Please open Telegram to view this post
VIEW IN TELEGRAM
xcodereleases.com
Xcode Releases
More than you ever wanted to know™
Актуальна ли разработка под 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. обновление паролей и токенов и многие другие задачи - нажатием одной кнопки.
Проекты под 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. обновление паролей и токенов и многие другие задачи - нажатием одной кнопки.
И да, бесконечное уважение Сергею Гнатюку, основателю сообщества Coffee&Code, за созданную иконку. Она получилась невероятной. Смотреть в заголовке.
Telegram
Coffee&Code | Community | IT | Android | iOS | Design | Frontend | Backend | DevOps | QA
По вопросам рекламы и PR @coffeecode_admin (а так же другим вопросам)
Стать организатором в своем или новом городе @coffeeandcode_bot
Чат @ChatCoffeeCode
Международное офлайн и онлайн сообщество разработчиков и всех айтишников
Стать организатором в своем или новом городе @coffeeandcode_bot
Чат @ChatCoffeeCode
Международное офлайн и онлайн сообщество разработчиков и всех айтишников
Forwarded from Prefire iOS
🎯 Какой iOS-фреймворк станет номером один?
Примите участие в голосовании, чтобы вместе создать ТОП iOS-фреймворков 2024 по версии разработчиков!
📋 Что в опросе?
- Выберите фреймворки, которые вы используете каждый день.
- Добавьте свои любимые инструменты и предложите те, которые хотели бы попробовать.
⏱ Займет всего 2 минуты!
🎁 Почему стоит участвовать?
- Итоговые результаты с полезной аналитикой будут опубликованы в Telegram-канале Prefire iOS.
- Помогите собрать реальную статистику по инструментам, которые действительно используют iOS-разработчики.
🗳 Присоединяйтесь к голосованию и делитесь опросом с коллегами!
Ваш голос важен🚀
Примите участие в голосовании, чтобы вместе создать ТОП iOS-фреймворков 2024 по версии разработчиков!
📋 Что в опросе?
- Выберите фреймворки, которые вы используете каждый день.
- Добавьте свои любимые инструменты и предложите те, которые хотели бы попробовать.
- Итоговые результаты с полезной аналитикой будут опубликованы в Telegram-канале Prefire iOS.
- Помогите собрать реальную статистику по инструментам, которые действительно используют iOS-разработчики.
🗳 Присоединяйтесь к голосованию и делитесь опросом с коллегами!
Ваш голос важен
Please open Telegram to view this post
VIEW IN TELEGRAM
С Наступающим и Наступившим Новым годом!
Этот год продолжил череду невероятных, но был совершенно иным. Не хуже, не лучше, просто иным.
Я впервые ни прочитал ни одной книги по профессиональному росту, но прочитал целую пачку художественных книг. Особенно запомнились Дорога, Бойцовский клуб, Песнь Ахилла, 1984, Призрак Оперы и Маус. Наконец прочитал Евгения Онегина и продолжаю радоваться книгам Роберта Гелбрейта. И ни одной технической книги.
Очень гуманитарный год. Хотя был отличный Мобиус, и уже готовлюсь к новому.
Смена работы, спасибо VK за бесценный опыт, спасибо Райффайзену за новый бесценный опыт🫡
Кто бы мог подумать, что под macOS я буду писать больше, чем под iOS 😄
😍 И конечно рождение дочки, невероятно долгожданной.
Этот год был по-настоящему другим. И он позволил разгрузить голову, проанализировать и накопить темы и идеи, которыми бы хотелось поделиться и очень надеюсь уже наконец дописать всю пачку книг: и по Swift 6, и по SwiftUI и по Concurrency. Все начато и не завершено.
Желаю вам невероятного роста, мирного неба, счастья, радости и профессиональных успехов!
Этот год продолжил череду невероятных, но был совершенно иным. Не хуже, не лучше, просто иным.
Я впервые ни прочитал ни одной книги по профессиональному росту, но прочитал целую пачку художественных книг. Особенно запомнились Дорога, Бойцовский клуб, Песнь Ахилла, 1984, Призрак Оперы и Маус. Наконец прочитал Евгения Онегина и продолжаю радоваться книгам Роберта Гелбрейта. И ни одной технической книги.
Очень гуманитарный год. Хотя был отличный Мобиус, и уже готовлюсь к новому.
Смена работы, спасибо VK за бесценный опыт, спасибо Райффайзену за новый бесценный опыт🫡
Кто бы мог подумать, что под macOS я буду писать больше, чем под iOS 😄
😍 И конечно рождение дочки, невероятно долгожданной.
Этот год был по-настоящему другим. И он позволил разгрузить голову, проанализировать и накопить темы и идеи, которыми бы хотелось поделиться и очень надеюсь уже наконец дописать всю пачку книг: и по Swift 6, и по SwiftUI и по Concurrency. Все начато и не завершено.
Желаю вам невероятного роста, мирного неба, счастья, радости и профессиональных успехов!
Выложил на 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 для запросов (актуально для РФ, когда делаешь свой прокси)
Я давно интересуюсь искусственным интеллектом и активно применяю его решения в своих проектах. Для одной из задач мне потребовался API ChatGPT, но я обнаружил, что официального SDK для iOS не существует. Сначала я задумался о создании собственной библиотеки, но обратил внимание на пакет ChatGPTSwift.
У данной библиотеки есть сильная сторона — использование OpenAPI 3.0 спецификации для сетевого слоя. То есть разработчик взял официальную спецификацию, написанную по стандарту OpenAPI 3.0, и использую
пакет от Apple - Swift OpenAPI Generator, автогенерировал сетевой слой.
На мой взгляд, это супер эффективное решение, которое позволяет упростить интеграцию с любым бекендом.
Однако, реализация 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
GitHub
GitHub - DobbyWanKenoby/SwiftGPT: Access ChatGPT API using Swift
Access ChatGPT API using Swift. Contribute to DobbyWanKenoby/SwiftGPT development by creating an account on GitHub.