Если бы всё было так просто… В Swift есть ТРИ (четыре?) разных вида рефлексии:
— Нативная для ObjC runtime
— Нативная для Swift (`Mirror(for: <..>)`)
— Стороняя реализация: github.com/Zewo/Reflection
— KeyPath? (который как бы и не совсем рефлексия, так как его нельзя полноценно создавать в рантайме)
Но ни одна из реализаций не является полноценной (и даже в сумме они не покрывают всех вариантов):
ObjC runtime работает только с ObjC типами (не обязательно с NSObject, но с теми, у которых есть указатель isa)
Mirror может только читать почти всё (за редкими, но важными, исключениями, вроде Enum)
Библиотека Reflection может читать и писать, но только структуры
KeyPath — такая странная хрень, которая таки дёргает внутреннее апи, никак не доступное рядовому разработчику, но делает это бесполезно: его можно создать либо из ObjC селектора, либо синтаксическим сахаром, который надо явно написать.
И ничего из этого не может писать любые поля класса, не транслируемого так или иначе в ObjC runtime и любые поля Swift типа в любом классе. В общем не быть типу int? использованным в динамическом json маппинге.
> Но с другой стороны, какой ещё язык программирования позволяет запретить передавать пустые указатели в compile time?
Вроде бы как в Kotlin есть такое (впрочем, я никогда не писал на этом языке).
По поводу enum с ассоциированными значениями… Во первых, это наверняка можно реализовать без Enum (не пробовал, в голову приходят абстрактный тип с наследниками), во вторых лично мне не нравится такой подход из-за того, что он провоцирует божественный метод-свалку c switch..case, в который запихнуто всё.
Ваш конкретный пример — я бы посоветовал посмотреть на RxSwift или ReactiveX (реализации Reactive паттерна для Swift). К тому же иногда таки нужно передать и данные, и ошибку: «запрос к серверу не выполнен и вот актуальное состояние», например. В прочем, создать кастомный Error с полем данных.
Я когда-то искал альтернативную версию софта (или альтернативный софт) для моей китаемыши, встретил Open Source драйвер для Razer мышей с поддержкой их фич. Возможно многих факт его существования тут заинтересует.
Копипастить читая. Надо признать, что кроме вдумчивого чтения исходного кода, в моём арсенале нет практик или инструментов, способных выловить подобный баг до его воспроизведения.
Не нравится мне, куда Swift идёт в своём развитии. (впрочем, как язык он не нравился мне никогда): Вместо добавления новых фич добавляется дублирующий функционал. лучше бы допилили рефлексию до рабочего состояния: всё рабочее, что есть в языке — унаследовано от ObjC и реализовано в ObjC Runtime.
Спасибо, я уже нашёл форму (поиском Гугла...) — Ticket#20020514491335423
Какие-то странные проблемы были, такое ощущение, что персональные настройки темы (вместе с половиной темы) не подтягивались. Уже «отпустило».
Вы так старательно прятали и перепрятывали форму обратной связи Яндекс.Почты, что таки успешно спрятали (от гугла не спрятали, нашёл).
Как мне отправить вопрос по *очередному* редизайну, в котором нет буквально ничего? (ни настроек, ни даже рабочего меню управления аккаунтом, как на всех остальных сервисах)
Англоязычная часть интернета подозревает в том, что официальная статистика не соответствует реальности. Пару дней назад гуляли упоминания оценки в 90к-100к заразившихся, якобы выдвинутой разными китайскими медработниками. Но это настолько слухи, что просто ой.
Насколько я видел такие устройства, адрес зачастую настраивается DIP-переключателями (в пульте и устройстве). Заставила экономия на DIP-переключателях.
Я предлагаю решить искусственно созданную проблему с гибкостью. А переписывать для этого библиотеку или нет — это уже проблемы веб-разработчиков. (вообще, заметил за многими авторами библиотек манию запрещать модификацию поведения, вплоть до превращения хорошей библиотеки в бесполезную)
Я не web-разработчик и вёрстку знаю постольку поскольку, но…
Секция «Important во благо» выглядит как искусственное решение искусственно созданной проблемы
Это явно не было первопричиной, но Os X не дружит с гибридными дисками. Ей начинает сносить крышу самыми причудливыми образами. В моём случае macos загружалась с 10-20 раза (у меня создалось впечатление, что она не грузилась, пока нужные сектора не переносились диском на SSD часть), а так же растущий со скоростью света UDMA_CRC_ERROR_COUNT в смарте диска.
В итоге поставил этот гибрид родителям в ноут, себе поставил SSD. Вдали друг от друга железки работают нормально.
Авторы тех каналов, что я смотрю жалуются в основном на одно и то же:
— Резкое прекращение притока пользователей на цифре в 100к подписчиков
— Демонетизация и исключение из результатов поиска по каждому неугодному рекламодателям поводу
— «new speak»: blacklist слов вне зависимости от их контекста (rape, gun, nazi — те, о которых знаю я. Да, исторические каналы и каналы специализирующиеся о новостях идут нафиг)
— активное продвижение своих политических взглядов Google манипуляцией выдачи
— Серьёзные проблемы с content id и нежелание Google из решать
— Фактическое отсутствие технической поддержки: единственный способ чего-то добиться — поднять бучу в социальных медиа
Из последних событий — будущая необходимость указывать о том, является ли видео «подходящим для детей». Причём просто так сказать «нет» нельзя, если модератор решит, что контент для детей таки подходит и при этом в нём есть, что то такое, что показать детям нельзя — вы можете лишиться аккаунта. Критерии же не специфицированы.
Ну, учитывая количество людей, который гугл прокатил каждой очередной ересью на Youtube — это комната отнюдь не пуста. Кто-то даже запускает свои сервисы. Последний, что я слышал — watchnebula.com
Причём я так смотрю на список авторов — там есть вполне себе известные на Youtube имена.
— Нативная для ObjC runtime
— Нативная для Swift (`Mirror(for: <..>)`)
— Стороняя реализация: github.com/Zewo/Reflection
— KeyPath? (который как бы и не совсем рефлексия, так как его нельзя полноценно создавать в рантайме)
Но ни одна из реализаций не является полноценной (и даже в сумме они не покрывают всех вариантов):
ObjC runtime работает только с ObjC типами (не обязательно с NSObject, но с теми, у которых есть указатель isa)
Mirror может только читать почти всё (за редкими, но важными, исключениями, вроде Enum)
Библиотека Reflection может читать и писать, но только структуры
KeyPath — такая странная хрень, которая таки дёргает внутреннее апи, никак не доступное рядовому разработчику, но делает это бесполезно: его можно создать либо из ObjC селектора, либо синтаксическим сахаром, который надо явно написать.
И ничего из этого не может писать любые поля класса, не транслируемого так или иначе в ObjC runtime и любые поля Swift типа в любом классе. В общем не быть типу int? использованным в динамическом json маппинге.
> Но с другой стороны, какой ещё язык программирования позволяет запретить передавать пустые указатели в compile time?
Вроде бы как в Kotlin есть такое (впрочем, я никогда не писал на этом языке).
По поводу enum с ассоциированными значениями… Во первых, это наверняка можно реализовать без Enum (не пробовал, в голову приходят абстрактный тип с наследниками), во вторых лично мне не нравится такой подход из-за того, что он провоцирует божественный метод-свалку c switch..case, в который запихнуто всё.
Ваш конкретный пример — я бы посоветовал посмотреть на RxSwift или ReactiveX (реализации Reactive паттерна для Swift). К тому же иногда таки нужно передать и данные, и ошибку: «запрос к серверу не выполнен и вот актуальное состояние», например. В прочем, создать кастомный Error с полем данных.
Интересно, какой % из них — пользователи VPN ;)
Какие-то странные проблемы были, такое ощущение, что персональные настройки темы (вместе с половиной темы) не подтягивались. Уже «отпустило».
Вы так старательно прятали и перепрятывали форму обратной связи Яндекс.Почты, что таки успешно спрятали (от гугла не спрятали, нашёл).
Как мне отправить вопрос по *очередному* редизайну, в котором нет буквально ничего? (ни настроек, ни даже рабочего меню управления аккаунтом, как на всех остальных сервисах)
P.S.: «Backend timeout»
Имо, правильное решение выкинуть его из библиотеки
Секция «Important во благо» выглядит как искусственное решение искусственно созданной проблемы
В итоге поставил этот гибрид родителям в ноут, себе поставил SSD. Вдали друг от друга железки работают нормально.
— Резкое прекращение притока пользователей на цифре в 100к подписчиков
— Демонетизация и исключение из результатов поиска по каждому неугодному рекламодателям поводу
— «new speak»: blacklist слов вне зависимости от их контекста (rape, gun, nazi — те, о которых знаю я. Да, исторические каналы и каналы специализирующиеся о новостях идут нафиг)
— активное продвижение своих политических взглядов Google манипуляцией выдачи
— Серьёзные проблемы с content id и нежелание Google из решать
— Фактическое отсутствие технической поддержки: единственный способ чего-то добиться — поднять бучу в социальных медиа
Из последних событий — будущая необходимость указывать о том, является ли видео «подходящим для детей». Причём просто так сказать «нет» нельзя, если модератор решит, что контент для детей таки подходит и при этом в нём есть, что то такое, что показать детям нельзя — вы можете лишиться аккаунта. Критерии же не специфицированы.
Причём я так смотрю на список авторов — там есть вполне себе известные на Youtube имена.