Записки разработчицы
1.89K subscribers
370 photos
22 videos
4 files
1.08K links
Разговоры об IT, о разработке. О мобилках нативных и кроссплатформенных.
Личный аккаунт @azharkova
Download Telegram
Все такие противоречивые Apple вроде как передумали на предмет PWA
Forwarded from Воробей
🚾 Apple вернёт PWA в ЕС. Официальное заявление
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤣1
Продолжение эпопеи с PWA:

1. Ранее Apple объяснила, что ей придется создать «совершенно новую интеграционную архитектуру, которой сейчас нет в iOS», чтобы решить «сложные проблемы безопасности и конфиденциальности, связанные с PWA-приложениями, использующими альтернативные браузерные движки».

2. Сегодняшним заявлением Apple изменила свой курс и сообщила, что веб-приложения продолжат существовать в Европейском союзе в том виде, в котором они существовали до версии iOS 17.4.

3. Независимо от того, добавлено ли веб-приложение с помощью Safari или нет, PWA будут работать только на WebKit.

https://apptractor.ru/develop/apple-podtverdila-prekraschenie-raboty-pwa-v-evrope.html

Нас, конечно, больше интересует история про альтернативный стор и коллаборация с нашим МЦ. Но прецедент с PWA в ЕС мог распространиться и на другие регионы
🤔1
Forwarded from In AsyncTask We Trust
Google удаляет тьюториалы по XML Views

#pull_request
😁7😱7😢6👍1
В прошлом октябре побывала на DevFest. Первый день - трек "Авроры", второй день - вела трек iOS, третий - выступала на треке андроид. Отличное мероприятие, атмосферный город (исторический центр Омска - must для посещения)
В этом году организаторы решили сменить формат и организовать общий трек. Пишите в комментариях направления, который вам интересны
🔥3👍1
Forwarded from ДевФест
Участники сами выбирают, какой трек пройдёт на DevFest Omsk 2024 🔥

В этом году мы решили собрать community track. Что это значит?

В комментариях вы можете написать те треки, которые вы бы точно посетили на конференции. Через какое-то время мы отберём популярные варианты и сделаем опрос — тема, которая наберёт больше всего голосов, будет представлена на DevFest Omsk 2024!

Вы можете распространять этот пост по вашим чатам и призывать указать интересный трек. Важно — лучше указывать конкретное направление разработки, например, вместо «мобильной разработки» нужно выбрать iOS, Android и так далее.

P. s. Мы обновили сайт! Переходите по ссылке :) Там уже можно увидеть список других утверждённых треков.
#swift Вышел Swift 5.10 https://www.swift.org/blog/swift-5.10-released/. Очень большое внимание уделено доработкам по многопоточности:
1. Поддержка полной диагностики корректности реализации работы с concurrency через сборку с флагом -strict-concurrency=complete

Например, этот фрагмент кода в Swift 5.9 будет считаться корректным, хотя и содержит нарушения доступа к ресурсу (data races)

@MainActor
class MyModel {
private init() {
MainActor.assertIsolated()
}

static let shared = MyModel()
}

func useShared() async {
let model = MyModel.shared
}

await useShared()


Для Swift 5.10 проблема будет обозначена:

warning: expression is 'async' but is not marked with 'await'
let model = MyModel.shared
^~~~~~~~~~~~~~
await



Конкретную ситуацию можно исправить разными способами:
- сделать обращение к MyModel.shared через await
- сделать MyModel.init и MyModel.shared неизолированными, весь код, которому нужен актор, перенести в изолированный метод
- изолировать useShared в @MainActor

2 Новая nonisolated(unsafe) команда для отключения проверки изоляции хранимых свойств и переменных акторов, включая статики
👍2
В целом, в Swift 5.10 были реализованы следующие фичи:
SE-0327: On Actors and Initialization
SE-0383: Deprecate @UIApplicationMain and @NSApplicationMain - меняем теперь на @main
SE-0404: Allow Protocols to be Nested in Non-Generic Contexts - поддержка вложенных протоколов в необобщенном контексте
SE-0411: Isolated default value expressions
SE-0412: Strict concurrency for global variables
15 марта анонсирована срезка версии 6.0. https://forums.swift.org/t/swift-6-0-release-process/70220
В Swift 6.0 уже реализованые следующие фичи:
1 SE-0422Expression macro as caller-side default argument

Использование макросов как аргументов по умолчанию в функциях

// in MyLibrary.swift =======
@freestanding(expression)
macro MyFileID<T: ExpressibleByStringLiteral>() -> T = ...

public func callSiteFile(_ file: String = #MyFileID) { file }

public func declarationSiteFile(_ file: String = (#MyFileID)) { file }

public func alsoDeclarationSiteFile(
file: String = callSiteFile(#MyFileID)
) { file }

// in main.swift ============
print(callSiteFile()) // print main.swift, the current file
print(declarationSiteFile()) // always prints MyLibrary.swift
print(alsoDeclarationSiteFile()) // always prints MyLibrary.swift

2 SE-0421Generalize effect polymorphism for AsyncSequence and AsyncIteratorProtocol

Обобщение полиморфизма AsyncSequence и AsyncIteratorProtocol. Добавляется новый ассоциированный тип Failure, поддержка параметров Element и Failure добавляется к методам, например, next()


@available(SwiftStdlib 5.1, *)
protocol AsyncIteratorProtocol<Element, Failure> {
associatedtype Element

mutating func next() async throws -> Element?

@available(SwiftStdlib 6.0, *)
associatedtype Failure: Error = any Error

@available(SwiftStdlib 6.0, *)
mutating func next(isolation actor: isolated (any Actor)?) async throws(Failure) -> Element?
}

@available(SwiftStdlib 5.1, *)
public protocol AsyncSequence<Element, Failure> {
associatedtype AsyncIterator: AsyncIteratorProtocol
associatedtype Element where AsyncIterator.Element == Element

@available(SwiftStdlib 6.0, *)
associatedtype Failure = AsyncIterator.Failure where AsyncIterator.Failure == Failure

func makeAsyncIterator() -> AsyncIterator
}


3. SE-0420Inheritance of actor isolation

Наследование изоляции акторов

#isolated аргументы могут поддерживать опциональный тип

Аргумент по умолчанию #isolated:

extension AsyncIteratorProtocol {
func next(isolation: isolated (any Actor)? = #isolation) async -> Element {
...
}
}


4. SE-0418Inferring Sendable for methods and key path literals
Применение Sendable к методам (включая частичные и неимплементированные) и key-path литералам

5. SE-0416Subtyping for keypath literals as functions
Преобразование key-path литералов как функций

Например


// You write this:
let f: (User) -> String? = \User.email

// The compiler generates something like this:
let f: (User) -> String? = { kp in { root in root[keyPath: kp] } }(\User.email)
6 SE-0410Low-Level Atomic Operations
Низкоуровневые атомарные операции

7 SE-0408Pack Iteration

Пакетные итерации.

func iterate<each Element>(over element: repeat each Element) {
for element in repeat each element {

}
}


8 SE-0405String Initializers with Encoding Validation

Инициализация строк с проверкой кодировки.

extension String {
public init?<Encoding: Unicode.Encoding>(
validating codeUnits: some Sequence<Encoding.CodeUnit>,
as: Encoding.Type
)
}


9 SE-0270Add Collection Operations on Noncontiguous Elements

Добавление операций коллекций для несмежных элементов.


var numbers = Array(1...15)

// Find the indices of all the even numbers
let indicesOfEvens = numbers.indices(where: { $0.isMultiple(of: 2) })

// Perform an operation with just the even numbers
let sumOfEvens = numbers[indicesOfEvens].reduce(0, +)
// sumOfEvens == 56

// You can gather the even numbers at the beginning
let rangeOfEvens = numbers.moveSubranges(indicesOfEvens, to: numbers.startIndex)
// numbers == [2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15]
// numbers[rangeOfEvens] == [2, 4, 6, 8, 10, 12, 14]
Forwarded from iOS Такой 🍏
🍏Вышла iOS 17.4 с поддержкой сторонних магазинов приложений для ЕС.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ходят слухи, что все-таки ViewModel из Jetpack будет поддерживать KMP:
https://android-review.googlesource.com/c/platform/frameworks/support/+/2965063
🔥18👀2
Forwarded from Воробей
Apple удалила учётку разработчика Epic Games

🍎 Официальную причину не говорят. Эпики предполагают что из-за твита, где критиковали Apple
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код Воробья для iOS разработчиков
👨‍💻 Послабление условий для разработчиков из EC

1. Разработчики могут вернутся на оригинальные условия один раз

2. Больше не обязательно иметь миллион долларов на счету. Хватит приложения с 1 млн установок в 🇪🇺 за прошлый год
Please open Telegram to view this post
VIEW IN TELEGRAM
#анонсы

🟢 Даты конференции Mobius изменились! 🟢

Конференция пройдет немного позже. И онлайн, и офлайн.

Новые даты:
Онлайн: 23 мая
Офлайн: 31 мая — 1 июня

Офлайн-часть — пройдет так же в Москве, но переедет на площадку побольше. Про новое место расскажем отдельно, когда все окончательно утрясем.

В остальном ничего не меняется!
Ничего не отменилось. Формат не изменился. Все билеты актуальны. Спикеры те же, программа та же. (Разве что, еще лучше подготовиться успеем).

_____________
Мы переносим конференцию, потому что прежняя площадка не вмещает столько участников в офлайне. Так что вторая мини-новость: в офлайне и на вечеринке будет оживленно.
2
Сегодня пятница и Международный день сна — самое время отложить все рабочие задачи и хорошенько отдохнуть... самое главное не проспать IT-конференцию «Стачка» в Ульяновске.

Встречаемся 12-13 апреля в УлГПУ, чтобы послушать более 200 докладов по шести основным направлениям — разработка, управление, digital-маркетинг, дизайн и контент, IT в индустриях и стартапы.

Также готовим мастер-классы, мастермайнды, выставку инди-игр и громкое афтепати. Программа почти готова — на сайте анонсировано более 140 спикеров из крупных IT-компаний.

Посмотреть, кто выступит можно по ссылке

Билеты: https://nastachku.ru/buynow

Stop working — все на «Стачку»!
1
Forwarded from Android Broadcast (Кирилл Розов)
Вышел Retrofit 2.10.0 (предыдущий релиз был практически 4 года назад ).

Что нового:
👉 Поддержка Unit в качестве типа ответа
👉 Официальный kotlinx.serialization конвертре (фактичес перенесли сущестующее решение от Jake Wharton). Новый артефакт - com.squareup.retrofit2:converter-kotlinx-serialization
👉 JAXB 3 конвертер - com.squareup.retrofit2:converter-jaxb3
👉 @Header@Headers и @HeaderMap стали поддерживать не ASCII значения, но надо указать в true параметр allowUnsafeNonAsciiValues
👉 Появился BOM - com.squareup.retrofit2:retrofit-bom
👉 Response Type Keeper - генератор keep правил ProGuard чтобы у вас все хорошо работало и не пришлось добавлять все подряд
👉 Поддержка Java 14 b Java 16 специфичных методов рефлексии для выполнения методов по умолчанию

Помимо этого произошли другие доработки и улучшения (список большой)

#network
11🤯1
Давайте поможем Омскому Девфесту выбрать трек и накидаем на мобилку)