This media is not supported in your browser
VIEW IN TELEGRAM
Діалог на відео:
- call me an ambulance
- okay, I will call you an “Ambulance”
Переклад:
- виклич мені швидку
- добре, я буду називати вас «швидка»
💡Поділіться історіями як ви використовуєте Siri 👇
Я почну:
- В машині: коли за кермом прошу когось набрати, увімкнути музику та побудувати маршрут по заданій адресі чи додому. Використовую на регулярній основі, у всіх випадках гарно працює і майже не помиляється.
- Дома: активно використовую, щоб поставити будильник на потрібний час, та додати нагадування. Коли зайняті руки іноді питаю погоду та є окремий шорткат “next” який імітує свайп вгору, ти кажеш “Siri next” і воно просто свайпає по екрану, користуюсь тільки під час миття посуду чи готування їжі, щоб гортати лєнту поки руки зайняті.
ℹ️А як ви як використовуєте Siri?
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👀5😁3❤1👍1
Основні можливості
- Рідний інтерфейс macOS, створений за допомогою SwiftUI/AppKit
- Швидкий, адаптивний перегляд на базі WebKit
- Інкогніто мод з вбудованим блокувальником вмісту для запобігання відстеженню та блокування реклами
- Підтримка декількох пошукових систем
- Автозаповнення URL-адреси та пропозиції щодо пошуку
- Швидкий лаунчер для миттєвої навігації та пошуку
- Режим розробника
⚠️Ora в даний час знаходиться на ранніх стадіях розробки і ще не готовий до щоденного використання. Незабаром буде випущена бета-версія з основними функціями
Репозиторій:
https://github.com/the-ora/browser/
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤡1
Курси Стендфорд по Swift та SwiftUI давно вже стали еталоном в світі iOS розробки, прошу до перегляду.
Посилання на першу лекцію:
https://youtu.be/kCjDulwChRQ?si=rVYKr0RZMlhAC7vc
Матеріали до курсу:
https://cs193p.stanford.edu/
🗣️ Я завжди передивляюсь кожен новий випуск курсу і всім рекомендую. Це буде корисно як новачкам так і досвідченим розробникам!
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤37🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
І це напряму інтегровано вже в SwiftUI!
Тема шейдерів раніше вважалась доволі низькорівневою і вузько направленою але в сучасному світі Apple дуже сильно спростила їх використання, а ШІ дозволяє генерувати прості та середньою складності шейдери з першої промпти.
Тому до вас питання, що ви знаєте про шейдери та їх використання:
👍 - пару раз писав
🔥- активно використовую
🗿- що це таке
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
3🗿88👍24❤3
💡Лайфхаки по створенню пароля від - VySecurity
Більшість паролів у відкритих зламаних базах зберігаються на окремому рядку через двокрапку «логін:пароль»
Якщо ви додасте «:» у ваш пароль, то примітивні парсери не зможуть його розпарсити і пропустять цей рядок.
Можна піти далі і зробити пароль в такому форматі
Є ще кращий варіант ось в такому формат, щоб збити з пантелику ще більшу кількість парсерів:
🗣️ Хоч це і допоможе в деяких загальних кейсах, але якщо таргетована атака буде саме на вас, то вам це не допоможе :)
Більшість паролів у відкритих зламаних базах зберігаються на окремому рядку через двокрапку «логін:пароль»
Якщо ви додасте «:» у ваш пароль, то примітивні парсери не зможуть його розпарсити і пропустять цей рядок.
Можна піти далі і зробити пароль в такому форматі
Password,[email protected]:anotherPassword
Є ще кращий варіант ось в такому формат, щоб збити з пантелику ще більшу кількість парсерів:
Zc:[email protected]@'6"peoUoR39I#Yw]/0StOXf
🗣️ Хоч це і допоможе в деяких загальних кейсах, але якщо таргетована атака буде саме на вас, то вам це не допоможе :)
❤8
Імплементація ScrollViewDelegate Proxy для SwiftUI.
На основі рішення з попереднього мого посту (яке доречі сильно поліпшив та оптимізував, але про це окремо) зробив прототип ScrollViewDelegate view.
Це обгортка над ScrollView (яка також спрацює з List). Ця обгортка надає API, що має проксі функції делегату UIScrollViewDelegate.
1. ScrollView у якості контенту потрапляє в ScrollViewDelegate
2. Всередині ScrollViewDelegate відбувається пошук UIKit UIScrollView в контенті. І коли його знайдено - налаштовую ScrollViewDelegateProxy з ним.
3. ScrollViewDelegateProxy тримає в собі UIScrollViewDelegateProxy - по суті, той самий UIKit делегат для скролл вʼю.
4. UIScrollViewDelegateProxy імплементує необхідні методі, і що ВАЖЛИВО - треба зберегти оригінальний делегат, який використовував SwiftUI, щоб не поламати нативні реалізації.
Таким чином, викликаємо метод у ScrollViewDelegate, він передає кложур у ScrollViewDelegateProxy, який передає його у UIScrollViewDelegateProxy, де цей кложур викликається у відповідному методі делегату.
А оскільки оригінальний UIScrollView повертати назовні - небезпечно та недоцільно, я створив ScrollContext - структура, яка тримає тільки необхідні параметри UIScrollView, накшталт contentOffset.
ВАЖЛИВО: це не prod-ready код і не заклик до дії =) Це - прототип з playground-ідеями. Тому запрошую до обговорення, ідей та пропозицій =)
------------------------------
Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)
На основі рішення з попереднього мого посту (яке доречі сильно поліпшив та оптимізував, але про це окремо) зробив прототип ScrollViewDelegate view.
Це обгортка над ScrollView (яка також спрацює з List). Ця обгортка надає API, що має проксі функції делегату UIScrollViewDelegate.
1. ScrollView у якості контенту потрапляє в ScrollViewDelegate
2. Всередині ScrollViewDelegate відбувається пошук UIKit UIScrollView в контенті. І коли його знайдено - налаштовую ScrollViewDelegateProxy з ним.
3. ScrollViewDelegateProxy тримає в собі UIScrollViewDelegateProxy - по суті, той самий UIKit делегат для скролл вʼю.
4. UIScrollViewDelegateProxy імплементує необхідні методі, і що ВАЖЛИВО - треба зберегти оригінальний делегат, який використовував SwiftUI, щоб не поламати нативні реалізації.
Таким чином, викликаємо метод у ScrollViewDelegate, він передає кложур у ScrollViewDelegateProxy, який передає його у UIScrollViewDelegateProxy, де цей кложур викликається у відповідному методі делегату.
А оскільки оригінальний UIScrollView повертати назовні - небезпечно та недоцільно, я створив ScrollContext - структура, яка тримає тільки необхідні параметри UIScrollView, накшталт contentOffset.
ВАЖЛИВО: це не prod-ready код і не заклик до дії =) Це - прототип з playground-ідеями. Тому запрошую до обговорення, ідей та пропозицій =)
------------------------------
Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)
❤11👍9🔥4
Цей крок Apple спрямований на диверсифікацію свого ланцюга поставок за межами TSMC. В даний час Apple покладається на TSMC для виробництва всіх своїх чіпів. Однак TSMC базується на Тайвані, що підвищує геополітичні ризики. Щоб пом’якшити ці ризики, Apple демонструє підтримку вітчизняного виробництва в США.
Після звіту акції Intel зазнали значного сплеску більш ніж на 10%. Цей сплеск може стати поворотним моментом для бізнесу Intel, якому складно. Мати Apple як клієнта потенційно може залучити інших клієнтів такого ж рівня. Однак важливо зазначити, що TSMC продовжить виробляти високопродуктивні чіпи Apple Pro, Max та Ultra.
🗣️Готуються до війни на Тайвані?
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3💯2👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡7🗿3👍1
Це Capability додається в налаштування проекту в Xcode і дозволяє запустити голосового помічника у вашому застосунку з бокової кнопки на iPhone.
https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.side-button-access.allow
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
🤨13👍3
Ihor Malovanyi
Простий спосіб витягти UIView, що обслуговує SwiftUI компоненти. Іноді (часто) SUI не здатен надати такої гнучкості, яку надає UIKit. І тоді найпоширішеним рішенням стає створити свій UIKit компонент, та прокинути його через UIViewRepresentable. Але зазвичай…
Продовжую гратися з нутрощами SwiftUI.
Оновив підхід, про який писав раніше. Тепер пошук UIKit компонента відбувається не від Window через всю ієрархію (це і справді було тупо, хоча і не навантажувало), а від компоненту, через локальне розширення пошуку. Таким чином, тепер пошук UIKit-компонента починається зсередини, та рухається по принципу зацикленого перебору superview-subviews. Перевірку геометрії залишив.
Кода хоч і не багато, але я його опенсорснув, бо на його основі планую будувати декільки опенсорс-проєктів далі.
Також суттєво оновив-спростив код ще одного мого опенсорсу: SUI-InputModifier - модифікатор, який дозволяє бахнути кастомний InputView для будь-яких SUI-View.
Але SwiftUI може робити викрутаси накшталт підміни цілого компоненту без зміни його контейнеру (як це відбуваєтсья при заміні TextField axis).
Чому це проблема? Бо finder не викликає оновлення в updateView, тому що для нього айдентика не поміняється, бо finder є частиною контейнеру, а не його контенту, хоча по факту ми втратили цілий компонент.
Обійти це просто: прописати руками id для компоненту, який так себе поводить. У якості ідентифікатора ВАРТО використати причину втрати айдентики. Для TextField це Axis.
Але кейс мінімально розповсюджений =)
------------------------------
Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)
------------------------------
І годі запитувати "Чому б не використати SwiftUI Introspect" - я знаю про його існування 😂 Але вважаю недалекоглядним прийняти це за даність та почати робити ніфіга 🗿Памʼятайте, догматизм шкодить розвитку!
Оновив підхід, про який писав раніше. Тепер пошук UIKit компонента відбувається не від Window через всю ієрархію (це і справді було тупо, хоча і не навантажувало), а від компоненту, через локальне розширення пошуку. Таким чином, тепер пошук UIKit-компонента починається зсередини, та рухається по принципу зацикленого перебору superview-subviews. Перевірку геометрії залишив.
Кода хоч і не багато, але я його опенсорснув, бо на його основі планую будувати декільки опенсорс-проєктів далі.
Також суттєво оновив-спростив код ще одного мого опенсорсу: SUI-InputModifier - модифікатор, який дозволяє бахнути кастомний InputView для будь-яких SUI-View.
Але SwiftUI може робити викрутаси накшталт підміни цілого компоненту без зміни його контейнеру (як це відбуваєтсья при заміні TextField axis).
Чому це проблема? Бо finder не викликає оновлення в updateView, тому що для нього айдентика не поміняється, бо finder є частиною контейнеру, а не його контенту, хоча по факту ми втратили цілий компонент.
Обійти це просто: прописати руками id для компоненту, який так себе поводить. У якості ідентифікатора ВАРТО використати причину втрати айдентики. Для TextField це Axis.
Але кейс мінімально розповсюджений =)
------------------------------
Я часто пишу і писав різні здебільшого технічні цікавинки на моєму Linkedin. Можеш підписатися, якщо було цікаво =)
------------------------------
І годі запитувати "Чому б не використати SwiftUI Introspect" - я знаю про його існування 😂 Але вважаю недалекоглядним прийняти це за даність та почати робити ніфіга 🗿Памʼятайте, догматизм шкодить розвитку!
👍10❤5🔥2
💡Зацініть мапу 10000 українських YouTube каналів
https://daodemo.tech/y-map
Антон Демченко створив власну онлайн-мапу, що складається з 10 000 українських каналів на різні теми — від оглядів ігор, музики чи книг до освітнього контенту, медичних проєктів та каналів на мілітарну тему.
BWSwift📱 YouTube 📱 Patreon
https://daodemo.tech/y-map
Антон Демченко створив власну онлайн-мапу, що складається з 10 000 українських каналів на різні теми — від оглядів ігор, музики чи книг до освітнього контенту, медичних проєктів та каналів на мілітарну тему.
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2
https://www.swift.org/blog/welcome/
З того часу Swift дуже змінився.
Які фічі Swift вам подобаються найбільше?
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Apple опублікувала усіх переможців в різних категоріях.
Гра року на iPhone:
Pokemon TCG Pocket
Застосунок року на iPad:
Detail: AI Video Editor
Гра року на айпад:
Симулятор рибалки DREDGE
Застосунок року для Mac:
Essayist: Academy writing app
Гра року на Mac:
Cyberpank 2077: Ultimate
Strava забрала нагороду на Apple Watch.
Детальніше тут:
https://apps.apple.com/ca/story/id1849728503
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
⚡Протягом останніх 72 годин:
- Керівник Apple зі штучного інтелекту йде у відставку
- Head of UI Design at Apple йде до Meta
- Policy Chief йде у відставку
- Head of General Counsel йде у відставу
🗣️Щось дуже потужне відбувається. Доречі, голова дизайну, це та сама людина яка керувала переходом на iOS 7, та Liquid Glass.
BWSwift📱 YouTube 📱 Patreon
- Керівник Apple зі штучного інтелекту йде у відставку
- Head of UI Design at Apple йде до Meta
- Policy Chief йде у відставку
- Head of General Counsel йде у відставу
🗣️Щось дуже потужне відбувається. Доречі, голова дизайну, це та сама людина яка керувала переходом на iOS 7, та Liquid Glass.
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔13😁2❤1
Найскладніше було пройти фільтр по резюме і попасти на саму співбесіду. Мене зареферили люди яких я сам знайшов і попросив зареферити.
Виявилося, що найм іде в три команди, дві команди зареджектили по резюме (в цих командах працювали етнічні індуси і історично вони наймали собі лише індусів 🚩), а ось третя команда сказала, що такі хлопці потрібні і стартанули усі раунди:
- скрінінг
- лайв кодінг
- інтервью по платформі iOS + Swift
- софт скіл інтервью
- систем дизайн
- знайомство з командою
Протягом півтора місяці та 8 годин інтервью я отримав оффер, всі наступні деталі вони не розголошували і прямо відповідали «дізнаєшся в офері».
👇Прислали:
- 3 дні на тиждень треба бути в офісі
- базова зарплатня на 48% нижче ринковою, якщо з усіма бонусами, яких може не бути, то на 28% нижче ринкової
- працювати в таймзоні британії
🗣️Було дивно, що всі ці пункти вони не розголошували до останнього. На мої питання, чому зп нижче ринку і навіщо я вам в офісі, якщо майже вся команда буде в Британії, відповіли, що вони лідери ринку
Також потім зʼясувалося, що вакансії на Senior iOS та Staff висіли відкритими протягом 4-х останніх років. Причини я не зрозумів.
Проект був дійсно цікавий і команда класна, але…
І судячи з останніми новинами, ця команда перестане існувати в найближчому майбутньому.
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😱10😁7❤3🤡3🤩1
💡Питання: Чи знаєте ви, чому метод tick() повинен викликатися з await, навіть якщо його оголошення не є асинхронним?
Пояснення автора:
TimerManager is protected by MainActor (using Approchable Configuration), and timer's closure runs in a different executor, which force tick to await the call to protect its isolation to Main Thread.
BWSwift📱 YouTube 📱 Patreon
Пояснення автора:
BWSwift
Please open Telegram to view this post
VIEW IN TELEGRAM
💩17❤1