Стендап Сьогодні
Що я зробив, що я хочу зробити, і що це все значить.
Повсякденні здобутки в форматі стендапу.
Детальніше в статті
Підписатись на RSS
📢
Канал в Telegram @stendap_sogodni
🦣
@stendap_sogodni@shevtsov.me в Федиверсі
02.09.2022
Роблю термінал VS Code більш зручним
🪓📺🌈 Сьогодні трошки точив сокиру. А саме: вийшла нова версія Visual Studio Code. У ній з’явилася офіційна інтеграція с термінальною оболонкою Fish. (Цією оболонкою я вже багато років користуюсь, а терміналом виключно через VSCode - може з рік.)
Інтеграція, наприклад, відмічає в терміналі початок та результат кожної команди та дозволяє легко скопіювати її вихід. Все б добре, але чомусь вона зламала підказку (prompt) - а саме, після підказки підставляє перенос рядка.
~/w/proj master ❱
echo “пише тут"
Поки розбирався, що з цим робити, та випробував різні популярні підказки, зрозумів щось інше:
Ніякої складної підказки в VSCode не потрібно, бо вся необхідна інформація вже доступна в різних місцях інтерфейсу, починаючи зі статусного рядка. Більш не треба набивати підказку терміналу всілякими кричащими символами.
Але підказка за замовчуванням зовсім довга та незручна:
user@Laptop.local /Users/user/work/proj > echo “пише тут"
Тож задизайнив свою, просту та коротку. Все, що дійсно треба знати в терміналі VSCode - це поточний шлях. Та й його можна спростити, оскільки зазвичай ми знаходимось в корені робочого простору, або в його під-папці. Вийшло так:
🏠 ❯ echo "у корені робочого простору"
🏠 /src ❯ echo "якщо перейти в під-папку"
🌍 ~/Downloads ❯ echo "якщо вийти за межі простору"
Дрібниці, але цю підказку бачиш сто разів на день.
(До речі, проблема з переносом була через наявний, але порожній файл fish_right_prompt.fish
. Але моя підказка працює і так.)
01.09.2022
Щоб уникнути зомбування, треба навчитись думати за себе
📺🧙🧠 Сьогодні подивися відео про технології "зомбування" людей, тобто введення в оману. Головна думка: більшість людей схильні до прийняття правильно нав'язаної їм точки зору, аж до відкидання здорового глузду. Про це свідчить відомий і багато повторюваний експеримент Аша. Цим користується пропаганда на телебаченні та інше. На всяку людину можна знайти прийом, але краще всіх супротивляються ті, хто толерантні до своїх або чужих помилок.
На мою думку, зомбування - це небезпечна концепція, бо вона розділяє два стани мислення: або ви поводитесь раціонально, або вас зомбували. Така концепція заспокоює - бо якщо ми знаємо злочинні трюки зомбувальників, то зможемо їх уникнути і залишатись мислячим тверезо.
Все гірше. Ми невпинно вбираємо з оточення думки, погляди, сигнали, і вони несвідомо впливають на наше мислення та систему переконань.
Свідомість - як ліхтарик, а наше мислення - як пляж вночі. Ми ходимо по пляжу з ліхтариком і будуємо замки з піску. Тим часом, океан нашого оточення нескінченно змінює нас, і ми не можемо бачити, де і як саме.
Що робити, якщо ми хочемо уникути злоякісного впливу оточення? Ну по-перше, ми можемо свідомо обирати, з якими людьми спілкуватись, що дивитись, читати та слухати.
Далі, розвивати навичку думати за себе: обмірковувати твердження, думати, звідки вони взялись, чи є в них логіка, що вони кажуть про їхнього промовника. З особливою підозрою треба відноситись до авторитетних джерел - телебачення, заяв офіційних осіб.
І, нарешті - розвивати гнучкість мислення. Тобто, прийняти той факт, що ми постійно помиляємось, і коли бачиш що помиляєшся - краще якнайшвидше відкинути хибну думку, ніж її захищати. Як то кажуть, майте сильні переконання, але тримайте їх слабко.
З мого досвіду, найбільш далеко від здорового глузду відходять саме люди, що хапаються за свої переконання до останнього.
Про розходження точки зору раджу подивитись стрічку "Рашьомон" Акіри Куросави.
31.08.2022
Відлагодження проблем з навантаження за допомогою AWS CloudWatch
📃🔍🐞 Сьогодні довелося шукати причину перенавантаження бази по логах в AWS Cloudwatch (це амазонівський сервіс логування та спостереження).
- З'ясували, що база почала перенавантажуватись раптово, з деякого часу. (Це просто по метриках.)
- Визначаємо - чи це база досягнула технічної межі, або чи маємо аномальне навантаження. Пишемо простий запит в Log Insights, та по гістограмі бачимо, що кількість запитів дійсно зросла стрибком. (Це можна теж подивитись по метриках.)
- Ставимо гіпотезу - додаткові запити походять з конкретного акаунту користувача (це найпростіше пояснення.) Як визначити, з якого?
- В Cloudwatch можна тегувати записи, просто передаючи в тілі записа JSON об'єкт. Але на жаль, ми ще тегували акаунтом. (Тепер будемо)
- Якщо тегів немає, Cloudwatch також вміє парсити записи регулярками, на льоту, командою parse
. Це спрацювало.
- Потім за допомогою статистичного запиту stats()
та сортування знаходимо акаунт з найбільшою кількістю запитів.
- Акаунт знайшли, далі вже інша історія.
PS
- Треба знати, що в Cloudwatch потік - належить конкретному процесу, а група - збирає потоки однакової форми. Наприклад, по групі на сервіс. Групувати потоки різної форми - це ускладнювати собі життя.
- До речі, навіть API Cloudwatch так побудований, що в потік можна писати тільки знаючи токен з попереднього запису, тобто виключно послідовно.
30.08.2022
AWS Parameter Store - сервіс для зберігання налаштувань і секретів
🛠️📦☁️ Сьогодні повідаю про мало відомий, але дуже корисний сервіс
AWS Parameter Store. Якщо ви мешкаєте у AWS-і, то це найзручніший спосіб зберігати налаштування та секрети до вашого
коду. Ось кілька фактів про нього:
- У технічному сенсі Parameter Store це key-value база даних, у якій дані - це рядки, а ключі
організовані у ієрархію на кшталт файлової системи (або кращий приклад - S3).
- Для рядків до 4 КБ він абсолютно безкоштовний. Рядки від 4 КБ до 8 КБ трошки коштують (у нас з
таких тільки TLS-сертифікати.) 8 КБ - це максімум.
- Керування доступом здійснюється засобами IAM та спирається на ієрархію. Тобто, можна надати доступ
до якогось під-дерева. Саме так ми й робимо - у кожного сервісу свій префікс до свого дерева
конфігурації.
- Окрім обмеження доступу, дані також можна шифрувати ключами KMS, що ми робимо для всіляких
секретів.
- Само собою, параметри можна створювати за допомогою Terraform, як ми й робимо для параметрів, що
походять з інфраструктури та "склеюють" сервіси, наприклад, їхніх адрес.
- Звісно, параметри можна отримати через API, але ще AWS ECS може передавати їх у змінні оточення
(зручно це чи ні - залежить від обставин проєкту.).
- AWS веде облік версій параметрів, з датою та автором зміни. Інколи це дуже корисно.
Ми Parameter Strore широко використовуємо, тому наші
rubygem та
go package
вміють завантажувати параметри у вкладену структуру JSON. Тож і вам раджу.
29.08.2022
Двотижневий демо-мітінг
📽🎑📈 Сьогодні у нас що-двотижневий демо-мітінг. На мою думку, як не найважливіший регулярний мітинг. Ідея дуже проста - кожний член команди по черзі показує що-небудь новеньке. Це може бути і фіча з продакшену, і щось свіже, запущене локально. Не обов'язково це має бути "візуальна" фіча - дехто показує внутрішні частини або просто відрізки коду. Цікаві метрики. Звісно, нові дизайни та дослідження теж потрапляють до демо.
Чому важливо мати такі демо:
- Головне, що демо - це зіткнення з реальністю. Плани планами, а демо примушує підрахувати, що ти дійсно встиг зробити.
- Демо спонукає дивитись на свою роботу як на продукт та думати про те, що вона значить у загальній системі.
- Демо розвиває навички презентації: треба стисло та зрозуміло показати свою роботу людям.
- Демо завжди викликає купу питань від колег, що допомагає побачити недоліки або прояснити розуміння.
- Демо створює маленькі дедлайни навіть при затяжної розробці великого проєкту.
28.08.2022
Як я читаю новини раз на тиждень за допомогою RSS
🗞📥⏰ Сьогодні взагалі вихідний. Що я роблю в вихідні - це читаю новини. Для цього в мене є ціла система, розкажу трохи про неї.
Почати треба з того, навіщо потрібна якась система, якщо весь світ тільки і намагається наповнити нас інформацією з усіх боків. А саме тому і потрібна. Сучасна реальність така, що будь-який контент бореться за вашу увагу. Головний метод - постійне нагадування про себе і формування залежності. При чому якість контенту має вторинне значення. Так роблять не тільки всілякі шахраї, але й будь хто, хто створює контент в інтернеті. До того ж, всі джерела змагаються за нашу увагу, і у цьому конкурентному середовищі методи привертання та утримання уваги стають більш і більш ефективними.
Раджу почитати книжку Hooked від Nir Eyal, щоб зрозуміти базові принципи (та, будемо відвертими, застосувати у своїй роботі.)
Чим це погано? Тим, що, споживаючи контент як цього від нас хочуть автори, ми втрачаємо контроль над фокусом своєї уваги. Навіть якщо вимкнути нагадування, залишається невпинне відчуття, що може хтось виклав щось новеньке.
Зовім не читати новин і не споживати інформацію безглуздо або просто неможливо. Мій компроміс - збирати всі цікаві мені джерела в одну стрічку, та прочитувати цю стрічку по вихідним.
Домомагає мені в цьому RSS, Miniflux та програма Reeder. На сьогодні все.
27.08.2022
WordPress - кращий конструктор сайтів
📰🕸🔨 Сьогодні шукав конструктор сайту для дружини. Вимога проста: щоб вона могла без моєї участі працювати над контентом - а саме, для початку, наповнювати фотогалереї. (В мене є стаття про сходи веб технологій, так от в термінології тієї статті потрібно піднятись на другу сходинку.)
Подивився, що пропонують сучасні конструктори. Для мене є два значущих: це Squarespace та Wix. Але хоч я їх поважаю, але жодним не користувався. Ось і тут, Squarespace не підходить за браком української локализації, а Wix мені якось дуже складний та заплутаний. Отже, шукав альтернативи. Знайшов ще Sitepro, який я помітив у партнерці деяких доменних реєстраторів. Але ж не можу знайти в собі довіри до такої платформи.
Нарешті повернувся до того, що знаю, а саме до керованої інсталяції Wordpress. Чому Wordpress:
- хостингів до нього багато, не подобається один - завжди можна переїхати на інший.
- як наслідок, вистачає дешевих хостингів, та є з чого вибрати навіть в межах України.
- сучасний Wordpress доволі якісно зроблений і має всі уявні можливості, у тому числі й фотогалереї.
- керована (managed) версія значить, що безпекою займається хостер (безпека - це головний ризик з Wordpress, бо це найпопулярніша платформа в інтернеті, а тому найбільш вразлива)
- тем та розширень безліч на всякий смак
Для початкового налаштування Wordpress потрібно, на мою думку, трошки знатись з технологіями, але якщо перетнути цей бар'єр, то це найкраща платформа для інформаційних сайтів.
26.08.2022
Видалення акаунту для Сінтри
⚛️📲🪄 Пам'ятаєте як вчора Apple попросили зробити видалення акаунту? Так от, сьогодні ввечорі зробив може години за дві.
Головним помічником і заставою продуктивності є React Native. Бачите, видалення акаунту у веб-версії вже зроблено, доволі давно. Чи можу я скопіювати цю фічу з React до мобільного додатку? Звісно ж, ні. Компоненти, вигляд, поведінка фундаментально відрізняються.
Але: бізнес-логіка для фічі вже зроблена. Так само й локалізації. Це реально більша частина роботи, бо саме шар бізнес-логіки (Redux) висловлює складні рішення про реалізацію фічі. Все, що залишилось - це задизайнити пару екранів за існуючим шаблоном, та фіча готова.
Зазвичай при оцінці React Native недоглядають цю дуже важливу перевагу - наявність спільного шару бізнес логіки.
25.08.2022
Різниця в DNS Route53 та Cloudflare та проблеми, які це викликало
🔥🔥🔥 Сьогодні замість написання гарного посту займався гасінням пожежі (на щастя,
метафоричної.)
Все почалося непогано: Cloudflare вже у продакшені, захищає від атак та кешує статичний контент.
Здавалося, що все перебачено і нічого страшного не трапиться. При переході на Cloudflare спочатку
переносяться всі DNS-записи, а потім, коли все готово і перевірено, перемикається DNS-провайдер для
домену. Для користувача у той момент нібито нічого не змінюється. І це добре, бо насправді зміни у
DNS тривають не "момент", а невизначену кількість часу, можливо аж до доби.
Що ж трапилось? Трапилось те, що між Route53 та Cloudflare є одна маленіка різниця у роботі з TXT
записами для CNAME доменов. А цей нюанс ламає перевірку DNS записів. А від перевірки записів
залежить дієздатність хелс-чеку. А від роботи хелс-чеку залежить, чи буде супервайзер рестартувати
сервіси. А коли сервіси свавільно рестартують, ось це ми називаємо метафоричною пожежею. 🔥
Щоб відновити, довелось перенести хелс-чек на інший домен, що не був схильний до цього багу. Буде
про що завтра дописати документацію.
А ще сьогодні App Store відмовив у публікації додатка, бо в ньому немає функції видалення акаунта. В
цьому вся природа эпловського процесу перевірки. Правило існує вже півроку, ми вже за цей час
публікували декілька оновлень, а тепер раптом більш не можна. При тому що в поточному оновленні
нічого про акаунти не сказано. І тепер все - поки не зробимо, на реліз можна не розраховувати.
24.08.2022
Українізована версія Сінтри. Cloudflare Access.
🇺🇦🍾🔑 Сьогодні день приємно продуктивний.
По-перше, з нагоди 🔱 Дня Незалежності, ми випустили в світ повністю українізовану версію ✨Сінтри. Останнє, що довелось зробити - це локалізувати параметри App Store та підписок. Бо і там є рядки, що потребують перекладу - назва та опис додатка, та інше. Локалізація продукта - це набагато ширший процес, ніж просто переклад коду додатка.
Друге - налаштував для стейджингу Cloudflare Access. Це сервіс, яким можна обмежити або захистити доступ до деякого веб-ресурсу. Я вкрай задоволений його гнучкістю.
Раніше ми прикривали стейджинг нашим VPN за допомогою груп безпеки AWS. Це надійно, але незручно. Наприклад, нелегко дати доступ сервісним та тестовим скриптам, або пустити консультантів з-поза меж компанії.
Так от, Cloudflare Access вміє все, що можуть групи безпеки (обмежити доступ по IP), тобто рішення з VPN продовжує працювати. Але до того ж можна: поставити перед сайтом вхід через акаунт Google з певними імейлами чи цілим доменом; дозволити доступ з сервісним токеном; під’єднати тунель від Cloudflare; та багато іншого. Я за один день вирішив всі питання захисту стейджингів, що стояли перед нами роками (бо саморобні рішення вимагали купу часу).