Стендап Сьогодні

Що я зробив, що я хочу зробити, і що це все значить.
Повсякденні здобутки в форматі стендапу.
Детальніше в статті

Підписатись на RSS
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

31.10.2022

Перші враження від Obsidian. Тести з Redshift.

🪨📓💫 Що ж, переніс нотатки в Obsidian. Перші враження дуже приємні, як вже писав, працює швидко, інтеграція з Git вбудована. Знайшов ще важливу властивість — при перейменуванні чи пересуванні нотатки всі посилання на неї будуть виправлені автоматично. Що стане до нагоди, коли я буду впорядковувати базу, для чого і шукав більш зручну програму.

Дуже зручно мати глобальну комбінацію клавіш для пошуку та додавання нотаток. Таку комбінацію можна створити програмою BetterTouchTool - для цього дія на комбінацію має бути “відправити ⌘+O програмі Obsidian, перед чим вивести її на передній план”.

По роботі писав та тестував SQL-скрипти, що мають працювати на AWS Redshift. Великий недолік Redshift - у неї немає локального емулятора. При цьому мова помітно відрізняється від Postgres - настільки, що тести для Postgres недостатні. Багато разів було таке, що навіть після ретельного тестування код не працював, і дізнавались про це тільки на стейджингу. Тому у нас на CI тести (RSpec) запускаються також і з Redshift. Це надзвичайно повільно — ця база не розрахована на транзакційні операції. Маю ідеї переробити тести на щось більш сумісне — наприклад, замість створення тестових даних на кожний тест окремо, підготувати базу для всіх тестів один раз.


30.10.2022

Перенос нотатків з Bear до Obsidian, перші враження

📓🐻🪨 Подивився більш уважно на Obsidian - додаток для збереження нотаток. Почав переїжджати (до того в мене все було в Bear і трошки невпорядкованого в Drafts.)

Чому саме Obsidian:

Експортувати нотатки з Bear просто та очевидно, але ж мені ще хочеться побудувати з них Git-репозиторій, та при цьому зберегти дати останнього редагування. (До речі, при експорті Bear сам виставляє правильну дату зміни файлів. Це половина успіху!)


29.10.2022

Багажник на дах

🚗🧳🎿 Сьогодні про автомобільні багажники на дах. Мав нещодавно купувати, виявилось не так просто. Може, і вам стане до нагоди.

Можу ще порадити офіційний магазин THULE в Україні - bagazhnik.ua. (Вони мені не платять.)


28.10.2022

Чому робочі питання треба обговорювати в спільному чаті.

💬👥📖 Всі робочі питання в команді краще обговорювати в спільному чаті. Приватний чат залишається для особистих питань - “коли зустрічаємось”, “як справи”, “ходімо на обід” та інше.

Але все, що стосується розробки проєкту — в спільному. На мою думку, саме такої політики треба дотримуватись, та регулярно нагадувати собі та іншим. Чому саме так?

Не обовʼязково обмежуватись одним чатом, можна створити хоч скільки за різними призначеннями — головне, це щоб всі зацікавлені особи мали можливість долучитись.


27.10.2022

Зручніше відображення даних з бази HealthKit

⚖️📉💚 Нарешті, можу проілюструвати, що я мав на увазі, коли казав, що вигляд даних у вбудованому додатку Health залишає бажати кращого.

Зліва та справа — одні й ті самі дані, а саме, вага протягом місяця. Залишаючи питання масштабу (над яким я ще планую працювати), основне покращення ось в чому: на моєму графіку лінія — то середнє значення, а саме, рухоме середнє. А крапки — то індивідуальні вимірювання. Кожне вимірювання зсуває середнє вгору чи вниз, це закодоване кольором та відмічено лінією. Так з першого погляду можна зрозуміти, що робиться. А якщо можна дати стислу оцінку, якщо підрахувати крапки за кольором.

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

Взагалі це тільки початок того що я хочу зробити, але навіть в такому вигляді вже можна отримати користь, тому що додавати та редагувати дані можна через Health.app, як я писав раніше.

Систему з середнім я придумав не сам, а прочитав багато років тому у книзі Hacker’s Diet. То є легендарна книга, яку варто прочитати кожному інженеру, що хоче схуднути. Написав її засновник компанії Autodesk.

До речі, нічний режим у SwiftUI надається автоматично, якщо вживати палітру системних кольорів. Дуже зручно.


26.10.2022

SwiftUI після React - враження

📱📐🎨 Потрохи просуваюсь зі своїм проєктом на HealthKit та тепер на SwiftUI. Скористуюсь нагодою розповісти трохи про SwiftUI і як на ньому писати після React.

Всім відомо, що SwiftUI був створений, щоб йти в ногу з часом саме з React та іншими схожими фреймворками. Це добре.

Перше слабке місце SwiftUI - відсутність JSX. JSX це чудова технологія, бо з одного боку надає можливість описувати структуру елементів та атрибутів наочним чином, а з іншого боку, еквівалентна JavaScript/TypeScript коду та піддається всім технологіям роботи з кодом — рефакторингу на функції та модулі, формальній перевірці та інше.

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

Друге слабке місце - Swift це суворо типізована мова, але при цьому з тенденцією автоматичного виведення типів. Тож весь той синтаксис має створювати коректну структуру типів. Я не маю компетенції повністю зрозуміти, як воно працює, але факт, що у великій компоненті можна прийти до неможливості виведення типів. Ще скоріше цю помилку побачиш, якщо вживати блоки if, які, на відміну від JSX, інколи працюють добре, а інколи ламають компілятор. Відповідь — рефакторити на менші компоненти.

Щоб почати, варто відразу зрозуміти, що аналог Redux будується на основі ObservableObject. Тобто в простих випадках можна зберігати стан в компоненті, як і в React, але при подальшому розвитку краще винести логіку в клас з ObservableObject.

З приємного — гнучка система лейаутів — особливо для того, щоб покрити різні розміри екранів, та навіть різні пристрої. Бо у SwiftUI одна і та сама компонента може працювати й на айфоні, і на маці, і на годиннику. Тут все супер.

Ще раджу продивитись офіційний курс по SwiftUI, він багато чого прояснює.


25.10.2022

Ми є то, що ми робимо щодня

☀️🌚🫂 Ми є то, що ми робимо щодня. Це дуже потужна думка.

Майбутнє є неосяжним. Спланувати його, а потім слідувати плану, мало кому вдається.

Натомість можна подивитись на свій типовий день, і що в нього входить. Наше майбутнє складається з нашої рутини, день за днем. Це водночас очевидно та розриває мозок. Бо змінюючи свою повсякденну рутину, ми й можемо поступово впливати на майбутній результат. І для цього не потрібно робити великий план: просто щось додати, щось відняти.

Тому, мені здається, на роботі легко досягати успіхів, а на власних проєктах — ні; бо робота це явище обовʼязково щоденне, тож мало-помалу результату не уникнути. Тоді, включив у свій день хоч трошки роботи над власним проєктом — може, пʼятнадцять хвилин вранці, а може, раз на тиждень чотири години — він теж може стати таким неминучим, як робота.

Так само і з іншими змінами, яких ми прагнемо: не обовʼязково уявляти їх як грандіозний стрибок; треба думати, як включити їх, хоч саму малість, в повсякденне життя.


24.10.2022

Як Сloudflare бореться з атакою DDoS

💩🚚😬 Сьогодні весь вечір боролись з виснажливою DDoS атакою. Довелось випробувати, на що здатний Cloudflare. Отже, декілька спостережень:

А тепер, буду встановлювати macOS Ventura. 🌻


23.10.2022

HealthKit - все ж таки краще на SwiftUI, ніж на React Native

🍏🪶❣️ Сьогодні пробую свій проєкт з HealthKit почати писати на Swift. Головною причиною є бажання поекспериментувати: я давно хочу зробити на SwiftUI щось реальне, і, може, на цей раз вдасться.

З роками Swift та SwiftUI помітно дорослішають, та писати на них все менш і менш боляче (сказати “приємніше” ще не виходить.) Все тут чуже: мова та її парадигми, стандартна бібліотека, модель додатка, навіть редактор (програє VSCode за можливостями розширення та за зручністю) та документація (не дуже зручна і не дуже гарно написана.) Ніяк не можу заохочувати писати на Swift, якщо воно вам не треба.

Тому, до речі, я великий прихильник React Native: вийде не набагато гірше, але на знайомих технологіях. Цим не варто нехтувати.

Але все ж таки, що у Swift є такого, що у RN немає, або є, але гірше? Головне, що я знаю — це база Core Data, а особливо CloudKit, тобто синхронізація через iCloud. Зараз в RN немає гарного рішення — тож якщо вам потрібна якась синхронізація, треба мати бекенд, авторизацію і таке інше. Натомість у Swift дані синхронізуватимуться між пристроями без зайвих дій та акаунтів. Але, якщо ви робите додаток для вже наявного сервісу, то це не має значення.

Також будь-яка системна інтеграція — а їх чимало — завжди ускладнюється у RN. Наприклад, як в моєму випадку HealthKit: бібліотека у Swift достатньо обʼємна, тому повної обгортки для RN немає.

Можна зробити й гібридне рішення: модуль на Swift, який буде передавати до React Native необхідні значення — тобто замість API загального призначення, зробити вузький API для вашої бізнес-логіки. Це в мене зараз план C.


22.10.2022

Пост посилань. Copilot, Obsidian, Twitter, DuckDuckGo, macOS

🔗🔎📢 Сьогодні буде пост посилань. Давно вже хотів це спробувати, оскільки щосуботи читаю новини.