Затишна Галера


Kanal geosi va tili: Ukraina, Ukraincha
Toifa: Telegram


Голова Одеського центру розробки DataArt та Delivery Director, капітан Затишної Галери, ділитимуся: завданнями із співбесід (QA/Delivery/Management), статтями, вакансіями, новинами зі світу IT. Контакт: sylchuk@gmail.com ; Patreon: patreon.com/CozyGalley

Связанные каналы  |  Похожие каналы

Kanal geosi va tili
Ukraina, Ukraincha
Statistika
Postlar filtri


Ось ми з Xiaomi електромобіля посміялися, подивилися скільки у нього проблем, а тим часом знаходяться люди, які всього цього не помічають.

Xiaomi підвищує план виробництва свого SU7. Компанія планує вийти на рівень 130 тисяч машин за 2024 рік. А наступного року є план про випуск ще однієї моделі. Топ за свої гроші?

@Zatishna_Galera


Tesla показали нові зарядні станції - Supercharger V4 Cabinet.

Головна особливість - вони видають до 500 кВт для звичайних електромобілів і 1.2 МВт для електровантажівок. До відкриття плануються у 2025 році. Крім цього, V4 має 8 зарядних блоків, що в 2 рази більше, ніж V3.

@Zatishna_Galera


Закінчуємо мобільну середу новиною від Apple, якій загрожує штраф у $3.8 млрд.

На ринку UK її хочуть оштрафувати за «монополію iCloud». Це колективний позов від 40 млн користувачів. У ньому йдеться про порушення правил конкуренції, про додавання iCloud вигідніших умов і так далі. Усе як ми любимо при позовах про використання домінуючого становища. Особливо наголошується, що Apple спонукає користувачів використовувати саме iCloud і платити непомірно високу ціну. При цьому середній чек, так би мовити, на людину виходить близько $70 виходячи з того, що позов колективний.

@Zatishna_Galera


#iOSКомпас 🧭
7️⃣7️⃣ Завдання 77

Чому погано завантажувати головний потік і як цього уникнути?


З вами знову той самий автор каналу @badlinkschannel. Не забувайте підписатися. А ми продовжуємо наші яблучні історіі.

🤔 Головний потік відповідає за оновлення користувацького інтерфейсу (UI) і обробку взаємодії з користувачем. Якщо цей потік блокується, програма може стати нечутливою, що спричиняє затримки або навіть повну заморозку інтерфейсу.

🔣 Проблеми завантаження головного потоку
➖ Замороження інтерфейсу: Якщо головний потік зайнятий тривалими операціями, UI не буде оновлюватися, що викличе затримки або зависання.
➖ Негативний досвід користувача: Затримки та лаги знижують задоволення від взаємодії з додатком.
➖ Можливі аварійні завершення: Тривале блокування головного потоку може призвести до завершення програми, оскільки iOS розцінює її як не реагуючу.

🔣 Як уникнути завантаження головного потоку
➖ Використання Grand Central Dispatch (GCD): GCD дозволяє виконувати асинхронні задачі у фоновому режимі.

DispatchQueue.global(qos: .background).async {
// Тривала операція
let result = performHeavyComputation()

DispatchQueue.main.async {
// Оновлення UI з результатом
updateUI(with: result)
}
}


OperationQueue: Цей інструмент забезпечує високорівневий інтерфейс для асинхронних завдань, дозволяючи встановлювати пріоритети й залежності.

let backgroundQueue = OperationQueue()
backgroundQueue.addOperation {
// Тривала операція
let result = performHeavyComputation()

OperationQueue.main.addOperation {
// Оновлення UI з результатом
updateUI(with: result)
}
}


URLSession для мережевих запитів: URLSession автоматично виконує мережеві запити у фоновому режимі.

let url = URL(string: "https://example.com/data")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data else { return }
// Обробка даних

DispatchQueue.main.async {
// Оновлення UI
updateUI(with: data)
}
}
task.resume()


Core Data: Для роботи з базою даних варто використовувати фонові контексти (background contexts).

let backgroundContext = persistentContainer.newBackgroundContext()
backgroundContext.perform {
let fetchRequest: NSFetchRequest = Entity.fetchRequest()
let results = try? backgroundContext.fetch(fetchRequest)

DispatchQueue.main.async {
// Оновлення UI з результатами
updateUI(with: results)
}
}


@Zatishna_Galera


Ілон Маск додав до позову проти OpenAI ще й Microsoft. Він заявляє, що все це змова, мета якої порушення антимонопольних законів. Там же він вилив інформацію, що компанію залишають у зв'язку з некомпетентним ставленням до ШІ та ризиків, пов'язаних із ним (а ось вчити ШІ на токсичній інформації з Х - це, звісно, відповідальне ставлення).

Ну і навздогін, просто скріншот листування Маска під час його виходу з компанії, мені здається цим все сказано.

@Zatishna_Galera


Мін'юст США все ж таки наполягає на пропозиції відокремити Chrome від Google, а точніше продати його. Крім цього там ще ціла низка цікавих побажань щодо Android, Google Play і ШI функціоналу.

Цікаво стежити, чим же це все закінчиться. Поки виглядає, що Google буде вкрай складно вийти без втрат із цієї ситуації.

@Zatishna_Galera


#ЧарівнийКомпас 🧭
1️⃣6️⃣5️⃣ Завдання 165

Як би ви підходили до тестуванні REST API на проєкті?


Тестування API дуже часте завдання, з яким так чи інакше доведеться зіткнутися QA інженеру. І, на жаль, не кожен із цим може впоратися. Нижче буде корисний матеріал на цю тему:

🔣 До того, як приступати до тестування, необхідно ознайомитися з API документацією на проєкті, щоб відповідно підготувати всі тести. Вам знадобитися:
➖ зрозуміти базовий URL, від якого будуть відштовхуватися всі API запити.
➖ які endpoints існують на проєкті, щоб усі їх покрити тестами.
➖ які методи можливо використовувати з вашими API.
➖ як і де використовувати аутентифікацію.
➖ які відповіді очікуються.

🔣 Визначаємося з тим, який інструмент використовувати. Наприклад, postman.

🔣 Після приступаємо до основних перевірок:
➖ Почнемо з базових перевірок. Смикаємо GET з основних endpoints. Перевіряємо відповіді. Очікуємо отримати статус "200 OK" і body, що містить очікувану інформацію (наприклад, інформацію про товар або якусь загальнодоступну інформацію, яка не потребує логіна).
➖ Перевіряємо POST. Наприклад, можна заслати інформацію на реєстрацію нового користувача з усіма обов'язковими полями. Повинні отримати "201 Created" і деталі створеної, нової сутності. Після можна мануально перевірити й можливість логіна за цього користувача.
➖ Перевіряємо PUT. Відправляємо інформацію для апдейту вже створеної сутності. Наприклад, міняємо ім'я користувача або іншу інформацію, яка мається на увазі до зміни виходячи з наших вимог. Отримуємо "200 OK". Перевіряємо, чи оновилася інформація вручну.
➖ Перевіряємо DELETE. Видаляємо якусь інформацію або сутність. Отримуємо "200 OK". Не забуваємо перевірити результат вручну.

🔣 Деякі запити можуть вимагати аутентифікації та авторизації:
➖ Для виконання деяких запитів необхідно передати із запитом інформацію про логін і пароль. Якщо цього не зробити, то відповідь має бути "401 Unauthorized" і тіло "Authentication required". Можливий варіант "403 Forbidden" з повідомленням "Access denied", якщо інформація введена неправильно.

🔣 Перевіряємо негативні сценарії:
➖ Надсилаємо запити з не усіма заповненими полями. Наприклад, POST на створення нового користувача з відсутнім обов'язковим полем email. Очікуємо отримати "400 Bad Request" з описом, якої саме інформації не вистачає.
➖ Надсилаємо GET на неіснуючу сутність. Очікуємо "404 Not Found"
➖ Відправляємо не підтримуваний HTTP метод і формат. Наприклад, видалення користувача без зазначення ID. Очікуємо "405 Method Not Allowed".

🔣 Тестуємо методом граничних значень:
➖ Надсилаємо якісь сутності, що не підходять під наші умови. Наприклад, занадто довгий коментар, або ім'я, або будь-яке інше значення, яке повинно мати обмеження згідно з нашими вимогами. Очікуємо відповідь "400 Bad Request" або "404 Not Found".

🔣 Важливо не забувати:
➖ Перевіряємо всі коди помилок
➖ Перевіряємо формат відповіді
➖ Перевіряємо повідомлення про помилки, супутні кодам.
➖ Перевіряємо, що дії, які вимагають авторизації та аутентифікації, без неї спрацювати не можуть.
➖ Якщо є можливість, перевіряємо і продуктивність системи, з великою одночасною кількістю запитів.

#️⃣ Загалом, тестування API не являє собою якихось надскладних речей. Головне мати на руках API-документацію і відштовхуватися від того, що ви робите ті самі дії, що і через UI, але минаючи його. Тут діють усі ті самі закони побудови тестування, що й у звичайному UI мануальному тестуванні, з тією лише різницею, що ви тестуєте ці ж речі «під капотом», якщо так можна висловитися.

@Zatishna_Galera

666 0 14 1 19

У Meta може з'явитися досить велика фінансова втрата. Досить велика - це майже €800 млн.

Євросоюз оштрафував компанію за нерівні умови в розрізі просування маркетплейсів. Meta може просувати свій Facebook Marketplace через свою ж соціальну мережу, що є, на думку єврокомісара, нерівними умовами.

Meta планує оскаржити рішення, а поки що Капітан відмовляється розуміти всі ці штрафи Євросоюзу.

@Zatishna_Galera


А сьогодні у кожного поважаючого себе геймера свято - 20 років культовій грі Half-Life 2.

На честь цієї події Valve роздає її абсолютно безкоштовно, забрати можна тут.

Але, крім цього, вийшов ще й документальний ролик про гру, який я рекомендую всім фанатам до перегляду.

Risen and shine, пасажири. Rise and shine.

@Zatishna_Galera

875 0 13 2 12

Якщо ви раптом забули, що сьогодні п'ятниця, то Капітан вам поспішає про це нагадати. Час привести моральку і фізичний стан у норму 🍻.

З цієї нагоди рекомендую всім ознайомитися з новим альбомом Linkin Park, який сьогодні вийшов у реліз. «From Zero» доступний на всіх популярних платформах. Слухаємо, кайфуємо!

@Zatishna_Galera


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Для любителів ChatGPT є 2 новини.

1️⃣ Тепер він доступний, як окремий додаток під Windows.
2️⃣ Якщо у вас платна підписка, то тепер ви можете забрати вміст текстових вікон деяких додатків і відразу передати його в ChatGPT. Функція називається «Work with Apps» і поки що працює на MacOS з VS Code, Xcode, TextEdit, Terminal і iTerm2. Чекаємо на підтримку й інших додатків із текстом.

@Zatishna_Galera


#ЗатишнийDigest

👍 П'ятничний digest новин зі світу IT:

1️⃣ CLOUDFLARE НЕ ВИПРАВДАВ ОЧІКУВАННЯ АНАЛІТИКІВ

Виторг компанії за останній квартал вже точно буде нижчим за очікування через високу конкуренцію. Компанія намагається скоротити витрати та відіграти частину прибутку. При цьому виторг за третій квартал все одно зрос на 28%, до $455 млн. Завдяки цьому річний виторг компанії теж злегка випереджає загальний прогноз.

2️⃣ SPOTIFY Б'Є РЕКОРДИ

Виторг компанії зрос на 19%, до $3.5 млрд, при цьому чистий прибуток був рекордним. За рік очікується виторг понад $4 млрд.

3️⃣ PERPLEXITY ЗАПУСКАЄ РЕКЛАМУ

Зараз поступово викочується в режимі тестування на ринку США. Вона буде позначена спеціальним тегом «sponsored follow-up questions».

4️⃣ ВИТОРГ CISCO ВПАВ

І це все четвертий квартал поспіль. За останній квартал падіння відбулося на 6%.

5️⃣ ВИТОРГ BOLT ПЕРЕВИЩИВ $2 МЛРД

Оцінка компанії становить понад $8 млрд і останній раунд залучив їй $650 млн. Капітану, до речі, подобається куди більше, ніж Uber.

@Zatishna_Galera


AMD скоротить 4% співробітників. Ще одна сумна новина на нашому ринку, але такі сьогоднішні реалії. Упевнений, це не остання хвиля скорочень, про яку ми почуємо найближчі пів року або рік, залежно від стану IT сфери.

Загалом очікується, що під скорочення потраплять приблизно 1 тисяча співробітників. Американські гірки тривають і краще пристебнутися міцніше.

@Zatishna_Galera


Пасажири, дякуємо за довіру! Нас 2400! Куди Капітану відправити Донат#8 (2400 пасажирів)? (за кожну 100 підписників, та за кожні 10 патронів, Капітан робить додатковий донат)
So‘rovnoma
  •   Корпорація Монстрів
  •   United24
  •   Фонд Сергія Притули
  •   Повернись Живим
  •   Азов
  •   Госпітальєри
187 ta ovoz


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Тут Microsoft Teams вийшов із шикарним апдейтом.

➖ Тепер секцію «Команд» і «Чатів» можна об'єднати.
➖ Поліпшили роботу з «Обраним»
➖ Додали сумаризацію всіх згадок вас із різних чатів.

Особисто Капітану цього всього дуже не вистачало. Я в захваті.

@Zatishna_Galera


Мені дедалі більше здається, що в найближчому майбутньому на нас чекає вибір «оператора» AI систем, схожий з вибором ОС зараз.

OpenAI планує запуск у 2025 році свого AI агента, який виконуватиме якісь дії на комп'ютері за вас. Поки деталей дуже мало, але скидається на Computer use від Anthropic.

Цікаво все ж таки стежити, куди нас усе це заведе найближчими роками.

@Zatishna_Galera


Apple дасть можливість ділитися місцем розташування AirTag з іншими. Навіщо запитаєте ви? Ну уявіть, що ви загубили щось, але перебуваєте далеко від предмета, а хтось за вас його шукає. Це різко спростить цій людині життя. Після знаходження предмета його подальші переміщення знову буде видно, тільки вам. Це ж можна зробити й вручну. Крім того, автоматично припинення шарингу позиції відбуватиметься через 7 днів.

@Zatishna_Galera


Усім новим пасажирам, нагадую, що щосереди у нас - мобільна середа, а тому новини по мобілочках.

Apple додали фічу автоматичного перезавантаження телефону, якщо він не використовується довгий час. Спрямовано це на підвищення безпеки.

@Zatishna_Galera


#iOSКомпас 🧭
7️⃣6️⃣ Завдання 76

У чому різниця між асинхронністю та багатопоточністю?


Давно не бачились мої маленькі матроси. З вами на зв'язку помічник капітана Сергій з @badlinkschannel

🤔 Асинхронність і багатопоточність — це два різні підходи до паралельного виконання задач, які використовуються з різними цілями і мають різні механізми.

🔣 Асинхронність
Асинхронність (asynchronous) дозволяє програмі виконувати інші операції, не чекаючи завершення тривалої задачі. Асинхронні операції не блокують основний потік виконання програми.

🔣 Основні характеристики асинхронності:
Не блокує основний потік: коли ви викликаєте асинхронну функцію, основний потік продовжує виконувати інші завдання.
Використання замикань або зворотних викликів: асинхронні функції зазвичай приймають замикання (closures) або використовують зворотні виклики (callbacks) для виконання коду після завершення асинхронної задачі.
Проміси та Future: в асинхронному програмуванні часто використовуються такі конструкції, як Promises або Future, для обробки результатів асинхронних операцій.

🤓 Приклад на Swift із використанням async/await:

func fetchData() async -> String {
// Long operation
return "Data retrieved"
}

func processData() {
Task {
let data = await fetchData()
print(data)
}
}

processData()


Тут fetchData виконується асинхронно, і основний потік не блокується.

🔣 Багатопоточність
Багатопоточність (multithreading) дозволяє програмі виконувати кілька потоків (threads) одночасно. Кожен потік може виконувати свою задачу паралельно з іншими потоками.

🔣 Основні характеристики багатопоточності:
Паралельне виконання: потоки можуть виконувати завдання одночасно, що дозволяє повністю використовувати багатопроцесорні системи.
Складність управління: багатопоточність складніша в управлінні через необхідність синхронізації даних між потоками, щоб уникнути гонок даних (race conditions) та інших проблем.
Пул потоків: у iOS можна використовувати такі засоби, як Grand Central Dispatch (GCD) і Operation Queues для управління потоками.

🤓 Приклад на Swift із використанням GCD:

DispatchQueue.global(qos: .background).async {
// Long operation
let data = "Data retrieved"

DispatchQueue.main.async {
// Update UI on the main thread
print(data)
}
}


Тут тривала операція виконується у фоновому потоці, а результат оновлює UI в основному потоці.

#️⃣ Асинхронність і багатопоточність служать для виконання задач паралельно, але асинхронність не блокує основний потік, тоді як багатопоточність дозволяє виконувати кілька потоків одночасно. Асинхронність простіша в управлінні і часто використовується для операцій вводу-виводу, тоді як багатопоточність застосовується для інтенсивних обчислювальних завдань.

У двох словах: асинхронність дозволяє виконувати задачі без блокування основного потоку і проста в управлінні. Багатопоточність дозволяє паралельно виконувати кілька потоків, але вимагає складної синхронізації.

@Zatishna_Galera


Signal з новим оновленням додали низку фіч для відеодзвінків. Усе в найкращих традиціях уже відомих практик Zoom або Teams. Можна зробити дзвінок за посиланням, ставити реакції тощо.

Не те щоб суперпотрібний функціонал у подібному месенджері, але чому б і ні.

@Zatishna_Galera

20 ta oxirgi post ko‘rsatilgan.