feb15
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.html
|
||||
@@ -1,216 +0,0 @@
|
||||
19.01: 40
|
||||
|
||||
* создать заготовку компонента budget в iOS
|
||||
* реализовать budgetReportedDate()
|
||||
* реализовать budgetReportedWeekday()
|
||||
|
||||
18.01: 30
|
||||
|
||||
* собрать проект с подключенной либой gb
|
||||
* вызвать simplyPrint в iOS
|
||||
* перенести функции в gb
|
||||
|
||||
18.01: 50
|
||||
|
||||
* досоздать заготовку build.gradle.kts
|
||||
* создать заготовку ver-sdkios
|
||||
* переименовать ver-sdkios -> sdk-ios
|
||||
* сделать скрипт util/gen-ios
|
||||
√ сборка
|
||||
√ архивирование
|
||||
|
||||
17.01: 40
|
||||
|
||||
* доверстать заготовку интерфейса
|
||||
два поля ввода
|
||||
текстовый результат
|
||||
кнопки для буфера
|
||||
|
||||
17.01: 35
|
||||
|
||||
* сверстать поле ввода spent с кнопкой
|
||||
|
||||
16.01: 40
|
||||
|
||||
* долг:
|
||||
entities.yml: удалить copyResult
|
||||
это didClickCopy ведь уже
|
||||
* создать заготовку приложения на iOS по примеру песочницы
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/7
|
||||
* влить ЗС
|
||||
|
||||
16.01: 35
|
||||
|
||||
* создать ЗС
|
||||
[GigaIDE AI version]
|
||||
до изменений paste
|
||||
* повторить копирование в буфер через Giga IDE
|
||||
не удалось
|
||||
ибо не работает агент
|
||||
|
||||
15.01: 45
|
||||
|
||||
* уведомить о факте копирования
|
||||
на моём Samsung это и так происходит
|
||||
ГигаЧат сказал, что и многие другие производители отображают уведомление на копирование в буфер
|
||||
итог: не надо ничего показывать дополнительно
|
||||
* создать новую ветку для ЗС с помощью Cursor
|
||||
* продублировать копирование в буфер с помощью Cursor
|
||||
* оформить ЗС cursor
|
||||
* оформить ЗС ручной
|
||||
* влить ЗС ручной
|
||||
* скачать Giga IDE
|
||||
|
||||
15.01: 35
|
||||
|
||||
* оформить ЗС ручной
|
||||
* влить ЗС ручной
|
||||
* включить запись
|
||||
* добавить кнопку копирования в буфер
|
||||
* сделать копирование результата в буфер руками
|
||||
https://stackoverflow.com/questions/19253786/how-to-copy-text-to-clipboard-in-android
|
||||
|
||||
14.01: 40
|
||||
|
||||
* оформить ветку, но не сливать её
|
||||
https://github.com/kornerr/git-budget/pull/2
|
||||
* сделать руками вставку в буфер
|
||||
тоже под запись
|
||||
замерить время
|
||||
вышло 40 минут
|
||||
а с cursor AI было 40 минут второй части + сколько в первой
|
||||
т.е. никак не быстрее
|
||||
как минимум то же время
|
||||
но в голове меньше мыслей было
|
||||
а по факту было больше review
|
||||
и меньше внимательности
|
||||
ибо я пропустил в review, что нужно было didClickPaste вместо pasteSpent
|
||||
|
||||
14.01: 40
|
||||
|
||||
* исправить работу с inputSpent, pastedSpent
|
||||
надо ввести shouldResetSpent
|
||||
spent на основе inputSpent и pastedSpent
|
||||
после чего убрать из shouldResetResult весь блок if с вызовом budgetCtrl()
|
||||
ибо внутри should нельзя вызывать эффекты вроде budgetCtrl()
|
||||
* исправить задание значения для vm.inputSpent из spent при отличии
|
||||
cursor неверно выбрал поле и не так написал эффект
|
||||
* проверить отображение pasted spent в поле ввода
|
||||
и что нет цикла после задания inputSpent руками
|
||||
цикла нет
|
||||
отображение есть
|
||||
вставка из буфера произошла успешно
|
||||
|
||||
13.01: 40
|
||||
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/1
|
||||
* влить ЗС
|
||||
перед Cursor AI
|
||||
обязательно
|
||||
иначе потом ничего не видно будет по комитам
|
||||
* сделать вставку из буфера
|
||||
|
||||
13.01: 45
|
||||
|
||||
* сделать budgetReportedWeekday()
|
||||
использовать LocalDate
|
||||
оно больше подходит, чем Calendar
|
||||
https://stackoverflow.com/questions/38739983/calendar-set-day-of-week-not-correct
|
||||
* передавать значения по умолчанию
|
||||
* сделать подсчёт строки результата
|
||||
* (практически) сравнять функциональность W и A
|
||||
|
||||
12.01: 45
|
||||
|
||||
* добавить Scaffold
|
||||
как-будто из-за его отсутствия может быть чёрная штука вверху при выборе поля
|
||||
не использовать modifier из Scaffold
|
||||
использовал - помогло
|
||||
* сделать два поля ввода
|
||||
* сделать budgetReportedDate()
|
||||
|
||||
12.01: 40
|
||||
|
||||
* переименовать Playground -> Budget
|
||||
* сверстать интерфейс с двумя полями ввода и одним выводом
|
||||
|
||||
11.01: 35
|
||||
|
||||
* влить ветку budget на сайте
|
||||
чтобы можно было добавить cv/ files
|
||||
* запустить заготовку в Android Studio
|
||||
запустилось
|
||||
* создать util/do-tmux
|
||||
* вернуть и перегенерить cld/*
|
||||
|
||||
11.01: 40
|
||||
|
||||
* обработать файлы первого уровня
|
||||
* обработать уровень app
|
||||
* обработать уровень app/src/main
|
||||
* обработать уровень app/src/main/res
|
||||
* обработать уровень app/src/main/kotlin
|
||||
|
||||
10.01: 25
|
||||
|
||||
* найти репозиторий старого git budget
|
||||
https://github.com/kornerr/git-budget
|
||||
его и возьму
|
||||
* найти эталон по UI для бюджета
|
||||
вот этот сайт плюс-минус на мой уровень
|
||||
https://costtrack.app/
|
||||
общий список прилложений по бюджетированию
|
||||
https://t-j.ru/short/all-budget-apps
|
||||
итог
|
||||
эталона нет
|
||||
почти все приложения уродливые
|
||||
так что я могу делать свою уродливую версию
|
||||
а там уже посмотрим
|
||||
|
||||
09.01: 35
|
||||
|
||||
* определять weekday / weekend
|
||||
* считать перерасход
|
||||
* считать 'осталось Р/д' для будней
|
||||
|
||||
09.01: 30
|
||||
|
||||
* обдумать создание отдельного приложения
|
||||
уже без JS
|
||||
либо забить на буфер пока что
|
||||
но потом всё равно хочется его иметь
|
||||
либо всё-таки приложение
|
||||
тогда и гит чисто для бюджета будет смотреться логичнее
|
||||
да и просто как пример приложения-доказательства выглядит лучше
|
||||
создать надо, но в следующей итерации
|
||||
прямо сейчас мне полезнее подсчёт, а не форма
|
||||
итог:
|
||||
потом -да, сейчас - нет
|
||||
* убрать pre
|
||||
кнопки буфера можно оставить, они ведь в браузере работают
|
||||
* считать целевой утренний баланс
|
||||
|
||||
08.01: 45
|
||||
|
||||
* изучить отсутствие вставки из буфера в WebView
|
||||
Uncaught (in promise) NotAllowedError: Failed to execute 'readText' on 'Clipboard': Read permission denied.
|
||||
после ввода WebCC ничего не изменилось
|
||||
onPermissionRequest не вызывается
|
||||
короче, это прям проблема на WebView
|
||||
так что аналог электрона - это прям сильно упорото будет
|
||||
в JS стопицот вещей иначе работают
|
||||
их тупо невозможно поддержать
|
||||
гораздо проще КМП
|
||||
|
||||
08.01: 45
|
||||
|
||||
* добавить кнопку быстрой вставки из буфера в поле ввода
|
||||
* добавить кнопку быстрого копирования результата
|
||||
* сделать вставку из буфера
|
||||
|
||||
07.01: 15
|
||||
|
||||
* исправить форматирование даты 3.1 -> 03.01
|
||||
* учитывать отрицательный баланс
|
||||
93
budget/2026-01_article.md
Normal file
93
budget/2026-01_article.md
Normal file
@@ -0,0 +1,93 @@
|
||||
Title: Что нам стоит на КМП построить?
|
||||
URL: https://habr.com/ru/articles/989286/
|
||||
|
||||
Может ли Kotlin Multiplatform сократить трудозатраты при разработке одного продукта под несколько платформ? Мои вычисления говорят, что да, на 21%. Покажу это на примере своего хобби-проекта GitBudget для Android + iOS.
|
||||
|
||||
# Текущее положение дел
|
||||
|
||||
Одним из популярных способов разработки под несколько платформ является схема «одна платформа - одна команда разработки». Например, взглянем на известный мессенджер, заточенный под парковки. Некоторое время назад я словил следующую багу исчезновения сообщений:
|
||||
<cut/>
|
||||
<iframe src="https://kornerr.ru/vid/max-msg-disappear_2026-01-28.mp4"></iframe>
|
||||
|
||||
Как следует из видео, в ходе переписки с GigaChat у меня пропадали сообщения: на Android бага проявилась лишь раз (4-я секунда видеозаписи), на Web бага повторялась стабильно. Разное поведение на разных платформах свидетельствует о том, что продукт под разные платформы делают разные команды разработки. У каждой команды свой язык программирования, своя архитектура, свой процесс code review, свой уникальный набор порождаемых багов, своя команда тестирования, свой ФОТ и т.д..
|
||||
|
||||
Таким образом, чем больше мы дублируем в коде, тем больше мы вынуждены дублировать организационно. КМП может помочь сократить дублирование части кода, но, конечно, не полностью, а лишь на определённый процент. Каков этот процент? Посчитаем на примере моего хобби-проекта GitBudget.
|
||||
|
||||
# Обзор GitBudget
|
||||
|
||||
GitBudget - это крошечный хобби-проект для упрощения ведения собственных трат. На текущий момент нет истории трат, поддержки Git и прочего запланированного. Тем не менее, я пользуюсь этим приложением не первый месяц для упрощения ежедневного подсчёта двух важных для меня цифр:
|
||||
|
||||
1. Перерасход: Насколько на текущий день траты превышают план (бюджет)
|
||||
2. Осталось ₽/д: Сколько можно потратить сегодня и в последующие дни текущей недели средств, чтобы не превысить недельный план (бюджет)
|
||||
|
||||
Углубляться в формулу и в архитектуру сейчас не буду, т.к. они не предмет данной статьи. Пытливый читатель всё это найдёт сам [на GitHub](https://github.com/kornerr/git-budget).
|
||||
|
||||
Ознакомимся с внешним видом приложения на Android и iOS:
|
||||
|
||||

|
||||
|
||||
Никакой фантастики в UI/UX нет, все элементы интерфейса стандартные (и даже не везде выровненные). Использование приложения на текущий момент сводится к трём действиям пользователя:
|
||||
|
||||
1. Вставить из буфера обмена траты за вчера (Spent)
|
||||
2. Вставить из буфера обмена остаток баланса на вчерашний день (Morning balance)
|
||||
3. Скопировать итоговый расчёт в буфер обмена (Result)
|
||||
|
||||
# Трудозатраты на разработку
|
||||
|
||||
Для удобства подсчёта условимся о разделении всего кода приложения на три группы:
|
||||
|
||||
| № | Группа | Пример | Файлы Android | Файлы iOS |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | UI | Jetpack Compose, SwiftUI | MainActivity.kt, VM.kt | AppView.swift, VM.swift |
|
||||
| 2 | Платформа | ClipboardManager, UIPasteboard | budget.kt, main.kt, other-android.kt, registerOneliners.kt | budget.swift, cld-ios.swift, other-ios.swift |
|
||||
| 3 | Логика | budgetShouldResetMorningBalance | budgetFun.kt, entities.yml | budgetFun.kt, entities.yml |
|
||||
|
||||
КМП в GitBudget я использую лишь для логики, а UI и платформенный код нативные. Почему так? Потому что логика полностью под моим контролем, она обновляется по моему усмотрению. С UI и платформенным кодом ситуация иная - это собственность корпораций Apple и Google, они задают правила игры и обновляют UI с платформой по своему усмотрению (например, придумывают [Liquid Glass](https://habr.com/ru/articles/956116/), от которого не увернуться).
|
||||
|
||||
Считать будем два объективных показателя - количество строк кода и время, затраченное на реализацию какой-либо функциональности. На каждый из этих показателей посмотрим в разрезе вышеобозначенных трёх групп - UI, платформа, логика - и двух платформ - Android, iOS.
|
||||
|
||||
## Первый показатель: Количество строк кода
|
||||
|
||||
| № | Платформа | Всего | UI | Платформа | Логика |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | Android | 692 | 160 (23%) | 221 (32%) | 311 (45%) |
|
||||
| 2 | iOS | 540 | 90 (16%) | 139 (26%) | 311 (58%) |
|
||||
|
||||
**Вывод-1**: 311 строк логики для iOS я **не писал повторно** благодаря КМП, это **58%** всего кода iOS.
|
||||
|
||||
**Вывод-2**: 311 ненаписанных повторно строк кода для iOS с точки зрения обеих платформ (692 + 540 = 1232) означают, что **25%** кода всего проекта я не писал повторно.
|
||||
|
||||
## Второй показатель: Время реализации функциональности
|
||||
|
||||
Под запись я добавил кнопку `Paste` для поля ввода `Morning balance` как для Android:
|
||||
<iframe src="https://kornerr.ru/vid/git-budget-balance-android_800_2026-01-28.mp4"></iframe>
|
||||
|
||||
Так и для iOS:
|
||||
<iframe src="https://kornerr.ru/vid/git-budget-balance-ios_800_2026-01-28.mp4"></iframe>
|
||||
|
||||
В итоге получились такие цифры:
|
||||
|
||||
| № | Платформа | Тип реализация | Особенности реализации | Время |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | Android | Первичная | Создаём новую функциональность, которой не было, собираем почти все грабли | 17:34 |
|
||||
| 2 | iOS | Вторичная | Подключаем готовую логику, дописываем лишь UI, граблей практически нет | 07:33 (43%) |
|
||||
|
||||
**Вывод-3**: Повторение функциональности на iOS с готовой логикой заняло на **57% меньше времени**, т.е. произошло **в 2 раза быстрее**
|
||||
|
||||
**Вывод-4**: Если принять, что без КМП функциональность на каждой из двух платформ делали бы в сумме 17:34 * 2 = 35:08 минут, то сэкономленные 10 минут при повторении функциональности для iOS означают, что для всего проекта я **сэкономил 21% времени**.
|
||||
|
||||
# Выводы
|
||||
|
||||
Итак, экономия с КМП в цифрах выглядит так:
|
||||
|
||||
1. Количество строк для iOS снизилось на **58%**
|
||||
2. Суммарно количество строк кода по всему проекту снизилось на **25%**
|
||||
3. Время, необходимое на повторение функциональности для iOS, снизилось на **57%**
|
||||
4. Суммарно затраченное время по всему проекту на реализацию функциональности снизилось на **21%** (эту цифру я использовал в самом начале статьи)
|
||||
|
||||
# Вопросы читателю
|
||||
|
||||
1. Суммарная экономия в 21% по времени проекта - это много или мало?
|
||||
2. Окупает ли экономия в 21% явно не однодневный переход команд на новый процесс разработки?
|
||||
3. Насколько важен синхронный выпуск функциональности на обе платформы, причём работающей одинаково на каждой платформе?
|
||||
|
||||
22
budget/2026-01_email.md
Normal file
22
budget/2026-01_email.md
Normal file
@@ -0,0 +1,22 @@
|
||||
Title: КМП как альтернатива сокращению
|
||||
|
||||
Кому: Зуев Игорь, Корнюшин Пётр, Сухов Сергей, Терентьев Евгений, Петров Виктор
|
||||
|
||||
|
||||
Привет, коллеги,
|
||||
|
||||
завтра состоится серия созвонов по поводу сокращения троих человек из
|
||||
команды iOS Connect.
|
||||
|
||||
У меня есть встречное предложение по повышению эффективности
|
||||
команд разработки с помощью Kotlin Multiplatform. Предлагаю перевести
|
||||
сокращаемых троих человек в новую команду КМП, которую я готов возглавить
|
||||
без отрыва от руководства командой iOS Connect.
|
||||
|
||||
КМП может сэкономить около 21% времени разработки, подробно я это расписал
|
||||
в статье на Хабре: https://habr.com/ru/articles/989286/
|
||||
|
||||
Если предложение заинтересовало, буду рад обсудить детали данной спецоперации.
|
||||
|
||||
С уважением,
|
||||
Михаил.
|
||||
539
budget/2026-Q1.md
Normal file
539
budget/2026-Q1.md
Normal file
@@ -0,0 +1,539 @@
|
||||
14.02: 35
|
||||
|
||||
* продумать структуру проекта KD
|
||||
не является ли он корнем всего проекта?
|
||||
т.е. не должно ли в корне репы быть директории ver-nodejs?
|
||||
а в отдалённом будущем, может, даже и ver-macos?
|
||||
т.е. являются ли KDController+KDContext самостоятельными продуктами без транслятора?
|
||||
как-будто нет
|
||||
ведь транслятор может поставлять и эти файлы тоже
|
||||
типа зачем в принципе руками делать скрипты под каждый проект
|
||||
пусть транслятор это и делает?
|
||||
транслятор ли это тогда? или уже нечто большее?
|
||||
а файл YML - это файл проекта, выходит
|
||||
с другой стороны, есть же тесты как раз контроллера и контекста
|
||||
да и registerOneliners тоже как-будто являются продуктом
|
||||
хотя для работы в C++ нужно будет сделать ведь какой-то аналог как Ctrl, так и registerOneliners
|
||||
и для Swift тоже
|
||||
т.е. всё-таки биндинги на разные языки тоже часть продукта
|
||||
хотя эти биндинги как-будто тоже могут и должны поставляться вот эти инструментом kd
|
||||
выходит, это всё-таки комплексное решение
|
||||
для каждого языка - свой набор файлов
|
||||
может, не только файлов, но и примеров аля Hello World
|
||||
выходит, есть три продукта:
|
||||
1. KD Generator
|
||||
по файлу yml генерит в нужные места нужные файлы
|
||||
если это утилитарная функция то вроде как нет смысла делать что-либо отличное от Node.js
|
||||
оно просто удобнее всего
|
||||
а поддерживать разные варианты - это как-будто уже излишнее
|
||||
2. KD Controller, Context, registerOneliners, тесты контроллера и контекста
|
||||
тесты нужны чисто для меня самого
|
||||
но теоретически их может запускать и генератор
|
||||
хотя зачем? они нужны чисто для разработки
|
||||
кстати, тестов registerOneliners как-будто нет
|
||||
хотя это как раз HW могут осуществлять по факту
|
||||
3. Обёртки для Swift, C++, JS?
|
||||
есть ли смысл класть их куда-либо по раздельным папкам?
|
||||
как-будто можно сделать корневую директорию src
|
||||
а оттуда линковать уже как в HW, так и в другие места
|
||||
хотя их по сути надо встраивать в KD Generator
|
||||
ибо Node.js будет отдельно поставляться без репы исходников
|
||||
* создать src/ с KDController/Context
|
||||
* создать test/
|
||||
для начала с проверкой Controller/Context
|
||||
|
||||
14.02: 40
|
||||
|
||||
* обдумать будущее своего проекта + котлин
|
||||
нужно делать Kotlin Dialect / Диалект Котлина
|
||||
ПСКОВ будет продуктом KD
|
||||
Git Budget будет продуктом KD
|
||||
* переименовать репу cross-language-dialect в kotlin-dialect
|
||||
* сделать ревизию текущего состояния проекта CLD
|
||||
* переместить swift/js глубже в history-2025
|
||||
* Канал Диалект Котлина:
|
||||
написать хвалу C++ за его строгость и некоторую аутсайдерность
|
||||
Несмотря на то, что данный канал посвящён Котлину и тому, как правильно на нём писать код под несколько платформ, помощь языка C++ в определении правил написания этого самого кода трудно переоценить. Именно благодаря C++, в котором практически невозможно написать то, что без проблем пишется на Kotlin и Swift, приходится выкручиваться и находить третий путь. Спасибо C++ за несгибаемость.
|
||||
|
||||
13.02: 50
|
||||
|
||||
* вызвать заготовку oneliners напрямую
|
||||
без связи с CLDController
|
||||
* (последнее) поддержать синтаксис oneliners для эффектов
|
||||
удалось!
|
||||
|
||||
12.02: 50
|
||||
|
||||
* сделать привычную обёртку над CLDController
|
||||
хотя по факту нас интересует ровно один вызов: budgetCtrl().set(...)
|
||||
возможно, это должен быть класс, да
|
||||
просто для удобство ссылки на этот класс и хранения его экземпляра
|
||||
это просто привычно? хотя хранить его смысла нет, он как бы отсутствует
|
||||
ведь теперь это всё будет синглтоном внутри KT
|
||||
пример шаблонной функции:
|
||||
https://stackoverflow.com/a/44469314/3404710
|
||||
итог: ввести функцию шаблонную, чтобы она вызывала разные typeToAny() из KT
|
||||
ввести функцию в KT?
|
||||
ввёл шаблонную функцию budgetCtrlSet(k, v)
|
||||
работает
|
||||
* сделать пример обёртки над didLaunch для BudgetContext
|
||||
удалось с помощью функций const
|
||||
|
||||
11.02: 50
|
||||
|
||||
* зарегистрировать шуд?
|
||||
на самом деле, это не нужно
|
||||
эти шуды должны остаться внутри fun.kt
|
||||
тогда этот код регистрации тоже не будет иметь смысл дублировать
|
||||
шуды же всё равно крутятся сами по себе без эффектов внешних
|
||||
т.е. их безопасно регать сразу в fun.kt
|
||||
итог: ввести константу со списоком функций для регистрации и отдельно функцию регистрации стандартного списка
|
||||
|
||||
10.02: 45
|
||||
|
||||
* проверить вызов KT.budgetControllerContext для получения текущего значения Context
|
||||
это работает
|
||||
* прибраться в коде
|
||||
* выводить все ключи
|
||||
|
||||
09.02: 50
|
||||
|
||||
* проверить передачу контекст через шуд
|
||||
* проверить получение значения поля из шуда
|
||||
всё вспотыкается об крайне неудобно сделанные типы
|
||||
|
||||
08.02: 100
|
||||
|
||||
* изучить NodeGui?
|
||||
как-будто это подрывает смысл весь нативности
|
||||
ведь пусть хоть Qt и нативный, но приложение-то уже ненативное
|
||||
поэтому пока нет смысла изучать, я этим не продвину нативность
|
||||
а мне как раз надо доказать нативность
|
||||
* спросить у команды Kotlin показать, как callback передать
|
||||
https://youtrack.jetbrains.com/issue/KT-84169/How-to-register-a-C-C-callback-into-Kotlin-dynamic-library
|
||||
* изучить использование С в KMP
|
||||
https://kotlinlang.org/docs/mapping-primitive-data-types-from-c.html
|
||||
возможно, тут будет ответ на callback
|
||||
https://youtrack.jetbrains.com/issue/KT-43978/koltin-native-Dynamic-Library-how-to-override-a-fun
|
||||
нашёл тут наводку
|
||||
удалось вызвать простой callback
|
||||
* вернуть void()
|
||||
* добавить registerFieldCallbackC без параметров
|
||||
* ввести CLDController.currentContext и достать значение Context
|
||||
не удалось: segfault
|
||||
|
||||
07.02: 100
|
||||
|
||||
* создать заготовку BudgetComponent
|
||||
* ввести data class Item и попробовать достучаться до него
|
||||
или функцию вызвать свободную вызвать для начала
|
||||
вроде createBudgetContext()
|
||||
удалось получить доступ к Item.x (как get_x)
|
||||
* достучаться до CLDController
|
||||
* бегло ознакомиться с NodeGui
|
||||
|
||||
06.02: 55
|
||||
|
||||
* не удаётся создать экземпляр CLDController
|
||||
|
||||
05.02: 60
|
||||
|
||||
* установить доппакеты
|
||||
bzip2 tar gcc make perl git
|
||||
* установить guest additions
|
||||
не получилось с первого раза
|
||||
может, и нафиг?
|
||||
но тогда я ключи не передам без SharedFolders
|
||||
итог: установил после установки доппакетов
|
||||
* скопировать ключи проекта
|
||||
доступа до git.hi-tech.org нет
|
||||
так что ключи не помогли
|
||||
* установить java
|
||||
sudo apt install default-jdk
|
||||
* склонировать проект
|
||||
Android Studio не нужно
|
||||
скопировал архив tar руками через Shared folders
|
||||
* изучить ошибку запуска kom/util/gen-entities
|
||||
исправил двумя правками
|
||||
|
||||
04.02: 35
|
||||
|
||||
* сделать sdk-mac-x64
|
||||
|
||||
03.02: 50
|
||||
|
||||
* сделать ver-mac-x64 hw gbmac
|
||||
|
||||
02.02: 40
|
||||
|
||||
не сделал для статьи:
|
||||
* ответить на критику из статьи Flutter vs KMP
|
||||
https://habr.com/ru/companies/friflex/articles/839646/
|
||||
* ответить на страхи
|
||||
я останусь без работы, если кто-то сможет делать мою работу
|
||||
* пример статьи со схлопыванием куска кода
|
||||
* страхи
|
||||
надо ж переходить
|
||||
а это тоже не просто
|
||||
да, надо, это не палочка выручалочка
|
||||
* узнать версию Qt свою
|
||||
6.9.1
|
||||
* установить Qt 6.10.1
|
||||
brew install qt
|
||||
* исправить ошибку AGL not found на Xcode 26
|
||||
установка Qt 6.10.1 помогла
|
||||
* запустить qt-kt
|
||||
|
||||
28.01: 230
|
||||
|
||||
* написать статью
|
||||
для тех кто в танке
|
||||
КМП?
|
||||
архитектура
|
||||
шаблон проектирования CSE
|
||||
как выглядит процесс
|
||||
расчёты
|
||||
ускорение вторичного написания кода
|
||||
единые баги логики на разные платформы
|
||||
единое поведение на все платформы
|
||||
* посчитать объём общего кода и разного
|
||||
* посчитать скорость дублирования функциональности из Android в iOS
|
||||
первичный код - запись: 17 мин
|
||||
дублированный код - запись: 7 мин
|
||||
это около 41% от времени
|
||||
т.е. экономия времени - 59%, т.е. в два раза тупо эффективнее
|
||||
для того человека, который уже писал этот код и знает его досконально
|
||||
для новичка, думаю, результат будет иной
|
||||
* посчитать разницу в объёмах кода первоначального и дублированного
|
||||
* подготовить статью на основе видеозаписей по git-budget
|
||||
|
||||
* добавить спойлер в вводную
|
||||
можно сэкономить X времени
|
||||
* описать GitBudget
|
||||
√ описать кратко проект
|
||||
√ сделать фотку внешнего вида на Android + iOS
|
||||
√ описать UX
|
||||
показать картинку со структурой мобильного приложения из презентации
|
||||
перейти на GitBudget
|
||||
* занести в таблицу объём кода по группам
|
||||
* показать реализацию фичи кнопки вставки на Android и iOS
|
||||
* аналитику расписать
|
||||
время
|
||||
строк кода
|
||||
и т.п.
|
||||
* выводы написать
|
||||
* завести репозиторий для видео сайта
|
||||
чтобы не потерять их через несколько лет
|
||||
ведь я их просто кладу на хостинг
|
||||
а в какой-нибудь год просто забуду заплатить
|
||||
* убрать ссылку в GitHub на kornerr.ru/git-budget
|
||||
* обновить README GB
|
||||
надо убрать старое описание
|
||||
и вставить новую фотку Android + iOS
|
||||
* повторно прочитать статью
|
||||
* опубликовать на хабре
|
||||
https://habr.com/ru/articles/989286/
|
||||
* подготовить письмо
|
||||
* отправить письмо
|
||||
* уведомить всех получателей о письме
|
||||
|
||||
28.01: 90
|
||||
|
||||
* создать проект с видеофайлами
|
||||
https://github.com/kornerr/ruvid
|
||||
* обрезать видео инцидента с MAX
|
||||
00:53
|
||||
|
||||
28.01: 30
|
||||
|
||||
* переписать вводную
|
||||
|
||||
27.01: 55
|
||||
|
||||
* переименовать статью
|
||||
Что нам стоит на КМП построить?
|
||||
* описать текущее положение дел
|
||||
|
||||
26.01: 60
|
||||
|
||||
* найти статьи про КМП на хабре
|
||||
понять наполнение
|
||||
* создать первую версию вводной
|
||||
https://habr.com/ru/articles/989286/
|
||||
|
||||
25.01: 55
|
||||
|
||||
* повторить вставку morning balance с Cursor для Android
|
||||
вставляет в поле
|
||||
но логика не пересчитывается
|
||||
* повторить вставку morning balance с Cursor для iOS (без кода до)
|
||||
вставляет в поле
|
||||
но логика не пересчитывается
|
||||
* повторить morning balance c Cursor для iOS именно с промптом продубировать функциональность, которую добавил для Android с пояснением про вставку
|
||||
это получилось как-будто 1-в-1
|
||||
типа Cursor чего-то может понять про копии
|
||||
это даёт какую-то надежду
|
||||
* конвертнуть записанные видео с ИИ в MP4
|
||||
|
||||
24.01: 30
|
||||
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/9
|
||||
* влить ЗС
|
||||
* продублировать копирование из буфера в morning balance для iOS под запись
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/10
|
||||
* влить ЗС
|
||||
* видео ios: ~/gbart
|
||||
|
||||
23.01: 30
|
||||
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/8
|
||||
* влить ЗС
|
||||
* сделать копирование из буфера в morning balance для Android под запись
|
||||
видео: ~/gbart
|
||||
|
||||
22.01: 40
|
||||
|
||||
* README: Long, Double
|
||||
* обновить версию до 1.3.0
|
||||
* обновить changelog
|
||||
* оформить ЗС
|
||||
https://github.com/OGStudio/cross-language-dialect/pull/12
|
||||
* влить ЗС
|
||||
* сделать копирование из буфера в spent
|
||||
* сделать копирование из result в буфер
|
||||
* подключить функциональность из gb в iOS
|
||||
|
||||
21.01: 30
|
||||
|
||||
* сделать Swift extension для возможности вызвать budgetCtrl().set(x, y) без label
|
||||
работает
|
||||
* заполнить setupShoulds
|
||||
* передать inputSpent
|
||||
* передать inputMorningBalance
|
||||
* передавать result
|
||||
* заполнить setupEffects заготовкой
|
||||
|
||||
20.01: 30
|
||||
|
||||
* исправить weekday, чтобы reportedWeekday был 7, а не 1
|
||||
* добавить registerCallback для отладки
|
||||
|
||||
19.01: 40
|
||||
|
||||
* создать заготовку компонента budget в iOS
|
||||
* реализовать budgetReportedDate()
|
||||
* реализовать budgetReportedWeekday()
|
||||
|
||||
18.01: 30
|
||||
|
||||
* собрать проект с подключенной либой gb
|
||||
* вызвать simplyPrint в iOS
|
||||
* перенести функции в gb
|
||||
|
||||
18.01: 50
|
||||
|
||||
* досоздать заготовку build.gradle.kts
|
||||
* создать заготовку ver-sdkios
|
||||
* переименовать ver-sdkios -> sdk-ios
|
||||
* сделать скрипт util/gen-ios
|
||||
√ сборка
|
||||
√ архивирование
|
||||
|
||||
17.01: 40
|
||||
|
||||
* доверстать заготовку интерфейса
|
||||
два поля ввода
|
||||
текстовый результат
|
||||
кнопки для буфера
|
||||
|
||||
17.01: 35
|
||||
|
||||
* сверстать поле ввода spent с кнопкой
|
||||
|
||||
16.01: 40
|
||||
|
||||
* долг:
|
||||
entities.yml: удалить copyResult
|
||||
это didClickCopy ведь уже
|
||||
* создать заготовку приложения на iOS по примеру песочницы
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/7
|
||||
* влить ЗС
|
||||
|
||||
16.01: 35
|
||||
|
||||
* создать ЗС
|
||||
[GigaIDE AI version]
|
||||
до изменений paste
|
||||
* повторить копирование в буфер через Giga IDE
|
||||
не удалось
|
||||
ибо не работает агент
|
||||
|
||||
15.01: 45
|
||||
|
||||
* уведомить о факте копирования
|
||||
на моём Samsung это и так происходит
|
||||
ГигаЧат сказал, что и многие другие производители отображают уведомление на копирование в буфер
|
||||
итог: не надо ничего показывать дополнительно
|
||||
* создать новую ветку для ЗС с помощью Cursor
|
||||
* продублировать копирование в буфер с помощью Cursor
|
||||
* оформить ЗС cursor
|
||||
* оформить ЗС ручной
|
||||
* влить ЗС ручной
|
||||
* скачать Giga IDE
|
||||
|
||||
15.01: 35
|
||||
|
||||
* оформить ЗС ручной
|
||||
* влить ЗС ручной
|
||||
* включить запись
|
||||
* добавить кнопку копирования в буфер
|
||||
* сделать копирование результата в буфер руками
|
||||
https://stackoverflow.com/questions/19253786/how-to-copy-text-to-clipboard-in-android
|
||||
|
||||
14.01: 40
|
||||
|
||||
* оформить ветку, но не сливать её
|
||||
https://github.com/kornerr/git-budget/pull/2
|
||||
* сделать руками вставку в буфер
|
||||
тоже под запись
|
||||
замерить время
|
||||
вышло 40 минут
|
||||
а с cursor AI было 40 минут второй части + сколько в первой
|
||||
т.е. никак не быстрее
|
||||
как минимум то же время
|
||||
но в голове меньше мыслей было
|
||||
а по факту было больше review
|
||||
и меньше внимательности
|
||||
ибо я пропустил в review, что нужно было didClickPaste вместо pasteSpent
|
||||
|
||||
14.01: 40
|
||||
|
||||
* исправить работу с inputSpent, pastedSpent
|
||||
надо ввести shouldResetSpent
|
||||
spent на основе inputSpent и pastedSpent
|
||||
после чего убрать из shouldResetResult весь блок if с вызовом budgetCtrl()
|
||||
ибо внутри should нельзя вызывать эффекты вроде budgetCtrl()
|
||||
* исправить задание значения для vm.inputSpent из spent при отличии
|
||||
cursor неверно выбрал поле и не так написал эффект
|
||||
* проверить отображение pasted spent в поле ввода
|
||||
и что нет цикла после задания inputSpent руками
|
||||
цикла нет
|
||||
отображение есть
|
||||
вставка из буфера произошла успешно
|
||||
|
||||
13.01: 40
|
||||
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/1
|
||||
* влить ЗС
|
||||
перед Cursor AI
|
||||
обязательно
|
||||
иначе потом ничего не видно будет по комитам
|
||||
* сделать вставку из буфера
|
||||
|
||||
13.01: 45
|
||||
|
||||
* сделать budgetReportedWeekday()
|
||||
использовать LocalDate
|
||||
оно больше подходит, чем Calendar
|
||||
https://stackoverflow.com/questions/38739983/calendar-set-day-of-week-not-correct
|
||||
* передавать значения по умолчанию
|
||||
* сделать подсчёт строки результата
|
||||
* (практически) сравнять функциональность W и A
|
||||
|
||||
12.01: 45
|
||||
|
||||
* добавить Scaffold
|
||||
как-будто из-за его отсутствия может быть чёрная штука вверху при выборе поля
|
||||
не использовать modifier из Scaffold
|
||||
использовал - помогло
|
||||
* сделать два поля ввода
|
||||
* сделать budgetReportedDate()
|
||||
|
||||
12.01: 40
|
||||
|
||||
* переименовать Playground -> Budget
|
||||
* сверстать интерфейс с двумя полями ввода и одним выводом
|
||||
|
||||
11.01: 35
|
||||
|
||||
* влить ветку budget на сайте
|
||||
чтобы можно было добавить cv/ files
|
||||
* запустить заготовку в Android Studio
|
||||
запустилось
|
||||
* создать util/do-tmux
|
||||
* вернуть и перегенерить cld/*
|
||||
|
||||
11.01: 40
|
||||
|
||||
* обработать файлы первого уровня
|
||||
* обработать уровень app
|
||||
* обработать уровень app/src/main
|
||||
* обработать уровень app/src/main/res
|
||||
* обработать уровень app/src/main/kotlin
|
||||
|
||||
10.01: 25
|
||||
|
||||
* найти репозиторий старого git budget
|
||||
https://github.com/kornerr/git-budget
|
||||
его и возьму
|
||||
* найти эталон по UI для бюджета
|
||||
вот этот сайт плюс-минус на мой уровень
|
||||
https://costtrack.app/
|
||||
общий список прилложений по бюджетированию
|
||||
https://t-j.ru/short/all-budget-apps
|
||||
итог
|
||||
эталона нет
|
||||
почти все приложения уродливые
|
||||
так что я могу делать свою уродливую версию
|
||||
а там уже посмотрим
|
||||
|
||||
09.01: 35
|
||||
|
||||
* определять weekday / weekend
|
||||
* считать перерасход
|
||||
* считать 'осталось Р/д' для будней
|
||||
|
||||
09.01: 30
|
||||
|
||||
* обдумать создание отдельного приложения
|
||||
уже без JS
|
||||
либо забить на буфер пока что
|
||||
но потом всё равно хочется его иметь
|
||||
либо всё-таки приложение
|
||||
тогда и гит чисто для бюджета будет смотреться логичнее
|
||||
да и просто как пример приложения-доказательства выглядит лучше
|
||||
создать надо, но в следующей итерации
|
||||
прямо сейчас мне полезнее подсчёт, а не форма
|
||||
итог:
|
||||
потом -да, сейчас - нет
|
||||
* убрать pre
|
||||
кнопки буфера можно оставить, они ведь в браузере работают
|
||||
* считать целевой утренний баланс
|
||||
|
||||
08.01: 45
|
||||
|
||||
* изучить отсутствие вставки из буфера в WebView
|
||||
Uncaught (in promise) NotAllowedError: Failed to execute 'readText' on 'Clipboard': Read permission denied.
|
||||
после ввода WebCC ничего не изменилось
|
||||
onPermissionRequest не вызывается
|
||||
короче, это прям проблема на WebView
|
||||
так что аналог электрона - это прям сильно упорото будет
|
||||
в JS стопицот вещей иначе работают
|
||||
их тупо невозможно поддержать
|
||||
гораздо проще КМП
|
||||
|
||||
08.01: 45
|
||||
|
||||
* добавить кнопку быстрой вставки из буфера в поле ввода
|
||||
* добавить кнопку быстрого копирования результата
|
||||
* сделать вставку из буфера
|
||||
|
||||
07.01: 15
|
||||
|
||||
* исправить форматирование даты 3.1 -> 03.01
|
||||
* учитывать отрицательный баланс
|
||||
@@ -1,3 +1,7 @@
|
||||
ознакомитья с другой статьёй про AI
|
||||
https://kean.blog/post/experiencing-claude-code
|
||||
возможно, толковая
|
||||
|
||||
плюсы:
|
||||
хорошо описывает стуртуру кода и шаблоны используемые
|
||||
хоть сам Cursor и не умеет им следовать
|
||||
@@ -7,7 +11,9 @@
|
||||
а в самом начале их и использовать не будешь, т.к. вроде и не нужны
|
||||
но Cursor их проставил, т.к. они могут понадобиться
|
||||
можно тренироваться делать review и оценивать эффективность своих советов по правкам
|
||||
писать действительно можно, но динамика не положительная
|
||||
писать действительно можно, но скорее в момент изучения
|
||||
когда хорошо представляешь себе результат
|
||||
но плохо представляешь себе код
|
||||
|
||||
минусы:
|
||||
часто ошибается и пишет код не туда, т.е. нарушает архитектуру
|
||||
@@ -39,7 +45,20 @@
|
||||
т.к. одна строка и сравнение на самом деле не нужно
|
||||
цикла ведь нет
|
||||
а это можно увидеть и почувствовать лишь при записи руками
|
||||
при поиске, как сделать какую-то штуку ты НЕ наткнёшься на интересное
|
||||
например, вот я искал про Binding
|
||||
https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-custom-bindings
|
||||
а там ссылка была сюда
|
||||
https://www.revenuecat.com/blog/engineering/apple-retention-messaging-api/
|
||||
из этой ссылки я уже узнал, что в Apple есть стандарт на ответ от бэка
|
||||
700мс
|
||||
теперь я могу трясти с команды бэка ответы до 700мс, ибо вот так делает Apple
|
||||
если бы мне ИИ написал решение, я бы всего этого не получил
|
||||
и остался бы менее просвещённым
|
||||
|
||||
ИИ-чат бот в FF
|
||||
Gemini
|
||||
Недоступен in your country, stay tuned!, лол
|
||||
видео:
|
||||
~/cursorai
|
||||
|
||||
@@ -48,7 +67,12 @@
|
||||
реклама
|
||||
фотки с Грокс от 14.01
|
||||
реклама GigaIDE с 25% приростом производительности
|
||||
наливатор коктейлей: https://habr.com/ru/companies/yandex/articles/985556
|
||||
routerai: якобы x10 скорость прототипирования
|
||||
ох, прям аккуратно вставили слово "прототипирования"
|
||||
|
||||
ответы по теме AI
|
||||
1. https://www.linkedin.com/feed/update/urn:li:activity:7426127984128036864?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7426127984128036864%2C7427564907996278786%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287427564907996278786%2Curn%3Ali%3Aactivity%3A7426127984128036864%29
|
||||
|
||||
Философские вопросы
|
||||
Если всё так радужно, то почему преподаватели курсов волшебного ИИ
|
||||
@@ -72,6 +96,14 @@
|
||||
за 5 минут напишет ИИ? Или за 5 минут не напишет? А за 50 минут разве
|
||||
тоже не напишет? А за 50 дней тоже не напишет? Вопросы, вопросы...
|
||||
|
||||
|
||||
|
||||
лиды:
|
||||
из статьи про KMP сделать ссыку на AI
|
||||
из статьи про AI сделать ссылка на KMP
|
||||
статья KMP
|
||||
PS: Если вы в своей компании хотите внедрить KMP для повышения производительности, то пишите в личку ;)
|
||||
|
||||
заметки с телефона
|
||||
[ ] ИИ: Восхваление: https://habr.com/ru/companies/redmadrobot/articles/978112/
|
||||
[ ] Вопрос по ИИ: иногда пишет не тот код, а ктоттогда этот ИИ попрпвит, если разработчик сам не знает, насколько сгенеренный код соответствует архитектуре?
|
||||
@@ -1,21 +1,82 @@
|
||||
|
||||
НАДО:
|
||||
* исправить weekday, чтобы reportedWeekday был 7, а не 1
|
||||
в iOS monday == 2
|
||||
* добавить registerCallback для отладки
|
||||
* заполнить setupShoulds
|
||||
* заполнить setupEffects
|
||||
* подключить функциональность из gb в iOS
|
||||
* исправить -0%
|
||||
* сделать Swift extension для возможности вызвать budgetCtrl().set(x, y) без label
|
||||
* создать generator
|
||||
тут будет лишь ver-nodejs
|
||||
тогда, возможно, даже и смысла в ver-nodejs нет
|
||||
да, смысла нет, это слишком важный инструмент, чтобы иметь несколько вариаций
|
||||
* создать helloworld/
|
||||
тут уже будут ver-nodejs, ver-android, ver-ios, ver-macos-x64/arm64, ver-linux-x64, ver-windows-x64
|
||||
|
||||
далее сначала нужно перевести на nodejs
|
||||
затем уже наварганить генерацию обёрток для C++
|
||||
и функций в KT для получения готовых экземпляров всего
|
||||
сделать геренацию полей F по аналогии со спецструктурой YML
|
||||
т.е. генерить спецструктуру со статическими полями?
|
||||
это после C++ генерации станет ясно, как лучше оформить
|
||||
* отдельно сделать версию CLDController для cinterop
|
||||
ибо по умолчанию не компилится не для C++
|
||||
либо это отдельный файл должен быть в CLD
|
||||
формат надо обдумать
|
||||
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/8
|
||||
https://github.com/OGStudio/kotlin-dialect/pull/13
|
||||
* влить ЗС
|
||||
* обновить ссылку на git clone в проекте KOM для подтягивания новой версии CLDController
|
||||
теперь это KDController
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* проверить ответ на YouTrack
|
||||
в итоге я могу туда дать ссылку на свой пример
|
||||
|
||||
* переключиться на CLD
|
||||
можно сделать пока перевод на NodeJS
|
||||
заодно подумать недельку о NodeGui
|
||||
|
||||
|
||||
* перейти на NodeGui?
|
||||
или найти движок внутри C++/JS?
|
||||
* изучить QML + JS
|
||||
можно ли загрузить код на Kotlin?
|
||||
|
||||
* передать в QML budgetCtrl
|
||||
чтобы в QML вызывать что-то вроде budgetCtrl.set("key", value)
|
||||
хотя не факт, что можно Any передать из QML
|
||||
* оформить ЗС
|
||||
https://github.com/kornerr/git-budget/pull/16
|
||||
* влить ЗС
|
||||
|
||||
* CLD:
|
||||
обновить до 1.3.0
|
||||
влить подвисший ЗС
|
||||
* после исправления CLD:
|
||||
удалить iso установочный
|
||||
|
||||
* поделитья статьёй по KMP-1 с Гришей
|
||||
* исправить -0%
|
||||
* Android
|
||||
* iOS
|
||||
* ответить на вопросы Олега и Ильи к статье
|
||||
|
||||
|
||||
ПСКОВ
|
||||
добавить recent files
|
||||
где-нибудь вместо File: /path
|
||||
или сделать это выпадашкой
|
||||
прям надо переключаться между файлами последними
|
||||
|
||||
|
||||
преимущество off-line
|
||||
никакой рекламы и отвлечения от записи мысли
|
||||
просто запиши и не будь отвлечён
|
||||
в отличие от записи мысли в готовящейся статье на хабре
|
||||
там реклама отвлечёт
|
||||
потеряешь время
|
||||
|
||||
* iOS:
|
||||
проверить настройку отключения вопроса вставки из буфера
|
||||
Настройки
|
||||
Приложение
|
||||
Вставка из других приложений
|
||||
|
||||
* оформить ЗСы с ИИ
|
||||
https://github.com/kornerr/git-budget/pull/2
|
||||
@@ -23,7 +84,9 @@
|
||||
добавить ссылки на статью
|
||||
добавить ссылки на видеозаписи
|
||||
|
||||
|
||||
* записать видео процесса переноса с Android на iOS
|
||||
копируем код как есть
|
||||
подправяем синтаксис и вызовы API
|
||||
|
||||
* восстановить страницу kornerr.ru/git-budget
|
||||
её же на своём сайте добавить в примеры
|
||||
@@ -66,7 +129,8 @@
|
||||
тогда всё лучше сходится
|
||||
* тысячи форматировать доппробелами
|
||||
|
||||
|
||||
* изучить планировщики задач 2025 (топ для iPhone)
|
||||
https://dzen.ru/a/ZshWUWbMiXuc-VFd
|
||||
* сделать вставку из буфера
|
||||
* сделать кнопку копирования результата
|
||||
показывать уведомление о факте копирования
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
11.01: 30
|
||||
|
||||
* пройти тест по Инглишу на HH
|
||||
попробовал C1
|
||||
не удалось
|
||||
повторить 11 февраля
|
||||
* прочитать MKCV-Brief_2019-11
|
||||
чтобы сопоставить с полной версией
|
||||
там лишь примеры и технологии
|
||||
без лишних описаний, самое то
|
||||
* прочитать МКР_2019-11
|
||||
* прочитать МКР_2021-03
|
||||
* создать заготовку нового МКР 2026-03
|
||||
https://docs.google.com/document/d/1DKlY6ObDF278sRKj138eget5NwQek-O7irH0_mlFeXI/edit?tab=t.0
|
||||
|
||||
11.01: 35
|
||||
|
||||
* написать первичный список нужных полномочий
|
||||
* прочитать MKCV_2019-10
|
||||
|
||||
10.01: 60
|
||||
|
||||
* изучить потенциал Cursor AI
|
||||
может ли оно заменить слабого программиста
|
||||
т.е. того, кому надо максимально описать задачу, чтобы получить нужный результат
|
||||
да, слабого может, но надо дотошно описывать желаемые изменения
|
||||
* расписать первичный план КМП грубо
|
||||
дублирование на Android
|
||||
дублирование на iOS
|
||||
сделать ГТО по разработке для Android: Compose (Input, Text, Button, Row, Column)
|
||||
сделать ГТО по CSE
|
||||
сделать ГТО по КМП
|
||||
заготовление списка контактов на Web
|
||||
заготовление информации о контакте на Web
|
||||
дублирование на Android
|
||||
дублирование на iOS
|
||||
комбинация для iOS Ucim
|
||||
комбинация для Android Ucim
|
||||
* составить план по КОТу для первого квартала
|
||||
|
||||
07.01: 10
|
||||
|
||||
* расписать R, T цели по SMART-2
|
||||
|
||||
06.01: 110
|
||||
|
||||
* расписать цель по SMART-1
|
||||
Научиться команде за два квартала выдавать фичи сразу и для iOS, и для Android
|
||||
Specific: не указано
|
||||
Measurable: не указано
|
||||
Achievable: не указано
|
||||
Relevant: не указано
|
||||
Time-bound: два квартала
|
||||
* расписать S и M цель по SMART-2
|
||||
Изменить процесс разработки в команде на КМП так, чтобы в 2026-м году выдавать фичи сразу и для iOS, и для Android
|
||||
* расписать A цели по SMART-2
|
||||
|
||||
05.01: 25
|
||||
|
||||
* подготовить и отправить КП-3: Мария Сарафанова
|
||||
38
business/2026-02-12_Собес-ИсходныйКод.md
Normal file
38
business/2026-02-12_Собес-ИсходныйКод.md
Normal file
@@ -0,0 +1,38 @@
|
||||
Title: Первичное собеседование
|
||||
Company: Исходный код (mos.ru, Моя Москва)
|
||||
Date: 2026-02-12
|
||||
URL: https://zoom.us/j/92528151011?pwd=CEmahrxZya91kYz6F0bIcQOECrntPc.1
|
||||
|
||||
√ В какую команду ищете руководителя?
|
||||
Надо командами разработки
|
||||
√ Какие команды есть?
|
||||
25 человек - это все-все
|
||||
11 всего на android, ios, web команды
|
||||
SRUM
|
||||
спринты 3 недели
|
||||
daily 11:30 ежедневно
|
||||
техрадар: обмен знаниями
|
||||
performance review: раз в полгода
|
||||
матрица компетенций
|
||||
360
|
||||
раз в год
|
||||
√ Сколько в командах человек?
|
||||
√ Есть ли отдел аналитики?
|
||||
√ Есть ли отдел тестирования?
|
||||
√ ДМС со стоматологией
|
||||
√ Офис: ст. м. Пролетарская
|
||||
√ Время работы: 10:00-19:00
|
||||
|
||||
* Как выглядит процесс от постановки задачи до приёмки?
|
||||
* Какая ситуация по срокам?
|
||||
* Какие сейчас есть проблемы?
|
||||
* Какие цели надо достичь мне как руководителю?
|
||||
* По ГПХ работаете?
|
||||
|
||||
Потенциальные вопросы ко мне
|
||||
как предотвратить выгорание команд?
|
||||
|
||||
Прочитать про
|
||||
матрицу компетенции
|
||||
360
|
||||
сигнальная таблица
|
||||
195
business/2026-Q1.md
Normal file
195
business/2026-Q1.md
Normal file
@@ -0,0 +1,195 @@
|
||||
14.02: 40
|
||||
|
||||
* ответить Еремееву и Lycett на LinkedIn
|
||||
* спросить у Анастасии (Исходный код), что именно привело к отказу
|
||||
чтобы, как она выразилась на созвоне, этот созвон был не зря
|
||||
и чтобы я тоже понял, что надо поменять на своей стороне
|
||||
|
||||
13.02: 25
|
||||
|
||||
* освежить часть вопросов по iOS
|
||||
остановился: 18. 🟢 В чем разница между if let и guard let?
|
||||
|
||||
12.02: 15
|
||||
|
||||
* проверить отклики на почте и в HH
|
||||
|
||||
11.02: 35
|
||||
|
||||
* обновить резюме на LinkedIn
|
||||
|
||||
10.02: 45
|
||||
|
||||
* частично обновить резюме на LinkedIn
|
||||
|
||||
09.02: 20
|
||||
|
||||
* проверить почту и отклик
|
||||
* пн: откликнуться
|
||||
исходный код
|
||||
https://hh.ru/vacancy/129040090
|
||||
отметить в таблице
|
||||
|
||||
07.02: 30
|
||||
|
||||
* завершить Английскую версию резюме
|
||||
|
||||
06.02: 40
|
||||
|
||||
* составить таблицу по собесам
|
||||
уже двоим отправил
|
||||
надо упростить отслеживание
|
||||
https://docs.google.com/spreadsheets/d/17nzM6tuQFQ-t1nAEQGn4UBcj5yLa9F5vzcmmF-UdjAM/edit?gid=311411124#gid=311411124
|
||||
* перевести половину резюме на Ангийский
|
||||
|
||||
05.02: 20
|
||||
|
||||
* добавить Redux-like arch в CV
|
||||
* почта
|
||||
* откликнуться на ООО Корпу
|
||||
https://hh.ru/vacancy/129305916?hhtmFrom=vacancy_search_list
|
||||
откликнулся
|
||||
|
||||
04.02: 30
|
||||
|
||||
* перепроверить резюме на HH
|
||||
* проверить почту GMail
|
||||
чтобы там не было лишнего
|
||||
отписаться
|
||||
|
||||
03.02: 40
|
||||
|
||||
* перенести в HH опыт разработчика-2
|
||||
* перенести в HH опыт руководителя-1
|
||||
* перенести в HH опыт разработчика-1
|
||||
|
||||
02.02: 30
|
||||
|
||||
* перенести в HH опыт руководителя-2
|
||||
|
||||
01.02: 15
|
||||
|
||||
* написать пункт про ускорение на основе данных таблицы?
|
||||
с двузначных на однозначное по превышению сроков выпуска перешли
|
||||
лучше про создание команды
|
||||
* записать усиление команды в момент шторма
|
||||
|
||||
31.01: 35
|
||||
|
||||
* изучить правила ПЭ
|
||||
* бегло ознакомиться с ПЭ: Заработок
|
||||
* бегло посмотреть ПЭ: Нетворкинг: 10%
|
||||
остановился на https://t.me/c/2431091628/48/1985
|
||||
это около 30/300, 10%
|
||||
|
||||
30.01: 30
|
||||
|
||||
* досчитать цифры по Android, iOS за 2020
|
||||
|
||||
29.01: 30
|
||||
|
||||
* сократить техники
|
||||
* описать технологии
|
||||
* заполнить заготовками интересное
|
||||
* досчитать цифры по Android, iOS за 2021
|
||||
|
||||
27.01: 25
|
||||
|
||||
* описать возврат к управлению
|
||||
сделать самой большой секцией
|
||||
это текущее
|
||||
* описать техники
|
||||
|
||||
26.01: 35
|
||||
|
||||
* описать возврат к разработке
|
||||
|
||||
25.01: 40
|
||||
|
||||
* дописать до первого руководства включительно
|
||||
|
||||
24.01: 30
|
||||
|
||||
* vps: влить ветку 25K4
|
||||
* vps: создать ветку 26k1
|
||||
* vps: продублировать файлы cv из github на сайт
|
||||
в www/cv
|
||||
а потом в publish.prod сделать symlink
|
||||
* сделал новую заготовку дя резюме
|
||||
|
||||
23.01: 40
|
||||
|
||||
* заполнить ios за 2024, 2023
|
||||
* заполнить android за 2024, 2023
|
||||
|
||||
22.01: 30
|
||||
|
||||
* заполнить desktop 25
|
||||
https://wiki.iva.ru/spaces/IVCS/pages/165708340/IVCS+Desktop.+Version+25.0
|
||||
* заполнить desktop за 2024, 2023
|
||||
|
||||
21.01: 30
|
||||
|
||||
* составить таблицу дат выпусков по фронтам за 2025-й
|
||||
сделал android, ios, web
|
||||
|
||||
11.01: 30
|
||||
|
||||
* пройти тест по Инглишу на HH
|
||||
попробовал C1
|
||||
не удалось
|
||||
повторить 11 февраля
|
||||
* прочитать MKCV-Brief_2019-11
|
||||
чтобы сопоставить с полной версией
|
||||
там лишь примеры и технологии
|
||||
без лишних описаний, самое то
|
||||
* прочитать МКР_2019-11
|
||||
* прочитать МКР_2021-03
|
||||
* создать заготовку нового МКР 2026-03
|
||||
https://docs.google.com/document/d/1DKlY6ObDF278sRKj138eget5NwQek-O7irH0_mlFeXI/edit?tab=t.0
|
||||
|
||||
11.01: 35
|
||||
|
||||
* написать первичный список нужных полномочий
|
||||
* прочитать MKCV_2019-10
|
||||
|
||||
10.01: 60
|
||||
|
||||
* изучить потенциал Cursor AI
|
||||
может ли оно заменить слабого программиста
|
||||
т.е. того, кому надо максимально описать задачу, чтобы получить нужный результат
|
||||
да, слабого может, но надо дотошно описывать желаемые изменения
|
||||
* расписать первичный план КМП грубо
|
||||
дублирование на Android
|
||||
дублирование на iOS
|
||||
сделать ГТО по разработке для Android: Compose (Input, Text, Button, Row, Column)
|
||||
сделать ГТО по CSE
|
||||
сделать ГТО по КМП
|
||||
заготовление списка контактов на Web
|
||||
заготовление информации о контакте на Web
|
||||
дублирование на Android
|
||||
дублирование на iOS
|
||||
комбинация для iOS Ucim
|
||||
комбинация для Android Ucim
|
||||
* составить план по КОТу для первого квартала
|
||||
|
||||
07.01: 10
|
||||
|
||||
* расписать R, T цели по SMART-2
|
||||
|
||||
06.01: 110
|
||||
|
||||
* расписать цель по SMART-1
|
||||
Научиться команде за два квартала выдавать фичи сразу и для iOS, и для Android
|
||||
Specific: не указано
|
||||
Measurable: не указано
|
||||
Achievable: не указано
|
||||
Relevant: не указано
|
||||
Time-bound: два квартала
|
||||
* расписать S и M цель по SMART-2
|
||||
Изменить процесс разработки в команде на КМП так, чтобы в 2026-м году выдавать фичи сразу и для iOS, и для Android
|
||||
* расписать A цели по SMART-2
|
||||
|
||||
05.01: 25
|
||||
|
||||
* подготовить и отправить КП-3: Мария Сарафанова
|
||||
@@ -1,3 +1,12 @@
|
||||
|
||||
Простая экономика
|
||||
20-е марта
|
||||
about:config
|
||||
dom.event.clipboardevents.enabled
|
||||
|
||||
|
||||
|
||||
|
||||
* Могу придумывать систему
|
||||
Пример: задание оценить способность Cursor AI ускорить разработку
|
||||
|
||||
|
||||
@@ -1,24 +1,76 @@
|
||||
|
||||
|
||||
НАДО:
|
||||
* продублировать файлы cv из github на сайт
|
||||
* переиначить текущую заготовку про прошлое
|
||||
схлопнуть в секции
|
||||
управление (ещё нет, надо написать)
|
||||
разработка
|
||||
управление
|
||||
разработка
|
||||
|
||||
* освежить SCRUM
|
||||
https://habr.com/ru/articles/825354/
|
||||
* на LinkedIn ответить, что мне интереснее управление командой
|
||||
√ Сергею Еремееву
|
||||
√ Robert Lycett
|
||||
Anastasiya Sundeeva
|
||||
|
||||
* составить таблицу дат выпусков по фронтам за 2025-й
|
||||
чтобы понять, на каком мы месте были
|
||||
* составить таблицу дат выпусков за 2024-й
|
||||
* составить таблицу дат выпусков за 2023-й?
|
||||
* написать копию статьи про КМП на English в LinkedIn
|
||||
сделать на неё ссылку с хабра для тех, кому нужен English
|
||||
сделать из статьи LinkedIn ссылку на статью на Хабре
|
||||
из неё сделать ссылку на ТГ канал @kotlindialect
|
||||
* написать Леониду Слепхину (LinkedIn)
|
||||
после публикации статьи KMP на Английском в LinkedIn
|
||||
|
||||
* освежить крупными мазками с вопросами-ответами по iOS
|
||||
https://github.com/vyachesIavskiy/iOS-Interview-Questions
|
||||
продолжить: 18. 🟢 В чем разница между if let и guard let?
|
||||
|
||||
после 11 февраля:
|
||||
повторить тест по Инглишу на C1
|
||||
|
||||
* ознакомиться отдельно со structured concurrency
|
||||
actor
|
||||
Sendable
|
||||
найти статью исчерпывающую
|
||||
* ознакомиться с
|
||||
Big-O notation
|
||||
как оптимизировать время компиляции программы
|
||||
как оптимизировать время запуска программы
|
||||
|
||||
* проверить отклики на почте и в HH
|
||||
|
||||
|
||||
|
||||
* перепроверить задание от Сани Некрасова от 2020-го?
|
||||
уже нет смысла
|
||||
я ж не прогером хочу быть
|
||||
* ответить Сане на его публикацию об ИИ своей
|
||||
https://www.linkedin.com/posts/aleksandr-nekrasov_2025-key-takeaways-ai-still-cant-reliably-activity-7425753210319036416-u2sn?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAdqeucBN55Ve2Lq5eMSZiIkc_pDn270344
|
||||
* спросить у Сани о вакансиях development team lead
|
||||
|
||||
* отклинуться
|
||||
sber user
|
||||
https://hh.ru/vacancy/130219025?hhtmFromLabel=suitable_vacancies&hhtmFrom=negotiation_list
|
||||
|
||||
* записаться на семинар Liquid Glass
|
||||
https://developer.apple.com/events/view/QGV7T9L3L8/dashboard
|
||||
|
||||
|
||||
|
||||
* посмотреть ПЭ: Нетворкинг
|
||||
продолжить c https://t.me/c/2431091628/48/1985
|
||||
|
||||
* подготовить текст о себе в ПЭ: Нетворкинг
|
||||
|
||||
|
||||
|
||||
* написать текст для потенцильного техсобеса, почему нет особого смысла, почему вопросы технические имеют мало смысла
|
||||
предложить определиться здесь, подходим ли мы друг другу
|
||||
для этого надо немного скорректировать формат собеса
|
||||
что скажешь?
|
||||
прежде всего факты
|
||||
убрал созвоны daily - ничего не ухудшилось
|
||||
убрал обязательное review - тоже
|
||||
но это сильно радикально, только в крайнем случае рассказывать
|
||||
цель не в том, чтобы никого не пущать
|
||||
цель в том, чтобы сделать работу эффективнее
|
||||
а для надо и пущать, и быть гибче
|
||||
не отвергать по своему мнению,
|
||||
а делать пилотные проекте и принимать решение лишь с цифрами в руках
|
||||
привести пример с представителями гибдд
|
||||
|
||||
* составить CV
|
||||
выкладки по пользе от KMP в цифрах не писать
|
||||
@@ -26,9 +78,21 @@
|
||||
сначала не публичить своё резюме
|
||||
попробовать пару собесов по своему таймингу
|
||||
перешёл на Android для понимания среды
|
||||
добавить ссылки на 2 статьи хабра (будущие)
|
||||
пример работы с ИИ с аналитикой
|
||||
пример KMP с аналитикой
|
||||
|
||||
11 февраля:
|
||||
повторить тест по Инглишу на C1
|
||||
|
||||
* освежить SCRUM
|
||||
https://habr.com/ru/articles/825354/
|
||||
|
||||
* освежить знания про архитектуру
|
||||
см личку в ТГ
|
||||
has_a, is_a
|
||||
|
||||
* дополнить таблицу дат выпусков по фронтам за 2025-й
|
||||
* заполнить web за 2024, 2023
|
||||
* заполнить ios, desktop за 2022
|
||||
|
||||
* составить план по Бюджету и ПСКОВу для первого квартала
|
||||
* составить план по Делу для первого квартала
|
||||
|
||||
@@ -19,4 +19,23 @@
|
||||
После конкретного вопроса про CLD исправися
|
||||
Не смог найти ответ на вопрос "How to run the project"
|
||||
Но смог на "How to launch PSKOV"
|
||||
Психологически не ты сам пишешь код, а машина
|
||||
хотя по факту времени тратишь столько же
|
||||
т.е. выигрыша по времени нет
|
||||
а проигрышь по ownership есть
|
||||
ownership очень важно для собственнго развития
|
||||
чтобы не быть арендатором лишь
|
||||
Скептицизм
|
||||
> Configure project :app
|
||||
w: file:///Volumes/MOE/p/kom/ver-android/app/build.gradle.kts:24:9: 'jvmTarget: String' is deprecated. Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln
|
||||
Если все умеют в суперумный ИИ, то чего же он не может такую простую ошибку исправить?
|
||||
|
||||
|
||||
|
||||
Философия
|
||||
ИИ - это проекция собственных знаний и ошибок
|
||||
ИИ - это просто классный автомобиль, не более, он не знает, не хочет и ему не нужно
|
||||
никуда ехать без водителя
|
||||
это не замена человека
|
||||
|
||||
|
||||
406
kmp/2026-Q1.md
Normal file
406
kmp/2026-Q1.md
Normal file
@@ -0,0 +1,406 @@
|
||||
https://jira.iva.ru/browse/VCSMOB-13473
|
||||
[KMP] Отображать аватарки
|
||||
|
||||
12.02: 155
|
||||
|
||||
* изучить про AsyncImage
|
||||
https://swiftwithmajid.com/2021/07/07/mastering-asyncimage-in-swiftui/
|
||||
нет возможности задать заголовки HTTP
|
||||
хотя я ведь могу для всех сессию задать!!
|
||||
нет, в shared URLSession нет возможности настройки
|
||||
возможно, это намеренно
|
||||
* изучить Kingfisher вместо AsyncImage
|
||||
https://stackoverflow.com/a/79837058/3404710
|
||||
kingfisher может конфликтовать
|
||||
попробую сначала Nuke
|
||||
он очеть похож на то, что можно делать на Android
|
||||
* изучить библиотеку для отображения картинок в One
|
||||
Nuke
|
||||
вроде есть возможность задать заголовки
|
||||
* проверить текущее состояние приложений
|
||||
заметил лишь добавление вёрстки экрана информации о контакте на Android
|
||||
* проверить изменения в ava* с моего влития
|
||||
onPainterLoaded
|
||||
спросил у Дениса, зачем нам это надо
|
||||
видимо, опять какая-то неясная экономия и оптимизация
|
||||
* добавить зависимость Nuke
|
||||
* отображать квадратные изображения в iOS
|
||||
* привести изображение к круглому виду
|
||||
* завязать на состояние загрузки
|
||||
* починить расширение изображения
|
||||
|
||||
11.02: 105
|
||||
|
||||
* отобразить заготовки аватарок в iOS
|
||||
* отобразить заглушки в iOS
|
||||
* вынести contUI.swift
|
||||
после подлития main
|
||||
ибо сильно крупный шаг
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/37
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении заглушек аватарок на iOS: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/37
|
||||
√ 583, main, >=2
|
||||
* влить ЗС
|
||||
* записать в таблицу
|
||||
|
||||
10.02: 190
|
||||
|
||||
* переиспользовать ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
|
||||
* ввести mutableState для ав
|
||||
чтобы из VM получать флаг для отображения заглушки в нужный момент
|
||||
avaShouldResetPlaceholderVisibility
|
||||
* отображать заглушку
|
||||
лишь до успешной загрузки
|
||||
лишь на неудачную загрузку изображения
|
||||
* сделать цветовую заглушку по известным функциям
|
||||
* сделать инициалы
|
||||
* починить отображение авы в списке чатов
|
||||
нужна Session? ибо 403 возвращает сервер
|
||||
поправил
|
||||
* проверить iOS
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении заглушек аватарок на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
|
||||
√ 262, main, >=2
|
||||
* влить ЗС
|
||||
* добавить в таблицу
|
||||
|
||||
09.02: 150
|
||||
|
||||
* починить загрузку аватарок после изменений Ильи
|
||||
что-то поменялось сильно
|
||||
теперь нихера нет контактов именно в моей сборке
|
||||
у Ильи есть
|
||||
надо сделать заново на основе последних изменений
|
||||
это как-будто дешевле всего
|
||||
т.е. нужен новый ЗС
|
||||
этот позже переиспользую
|
||||
* повторить частичный накат
|
||||
√ util/other
|
||||
√ README
|
||||
√ ava.kt
|
||||
√ avaUI.kt
|
||||
√ const.kt
|
||||
√ other.kt
|
||||
√ gradle
|
||||
~ entities.yml
|
||||
* восстановить иконку в списке контактов
|
||||
* проверить работопособность в iOS
|
||||
* оформить ЗС
|
||||
√ описать изменения gen-entities
|
||||
√ упомянуть о рассмотрении Glide
|
||||
√ упомнять об avaUI
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/16
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении аватарок в списке контактов на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/16
|
||||
√ 219, main, >=2
|
||||
* влить ЗС
|
||||
* отметить ЗС в таблице
|
||||
* сообщить Денису о починке cld translator и необходимости ручных изменений для этого
|
||||
* восстановить иконку в инфе о выбранном контакте
|
||||
* вынести contUI.kt
|
||||
* подлить main
|
||||
* оформить ЗС
|
||||
~ сообщить Олегу убрать шуды на каждое поле контакта
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/28
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении аватарки в инфе о контакте на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/28
|
||||
√ 278, main, >=2
|
||||
* влить ЗС
|
||||
* отметить ЗС в таблице
|
||||
|
||||
07.02: 90
|
||||
|
||||
* ввести в VM contInfoItem
|
||||
* добавить аву в инфу о контакте
|
||||
* добавить аву в список чатов
|
||||
|
||||
06.02: 190
|
||||
|
||||
* проверить запуск KOM на Xcode 13 на 10.12.2.184
|
||||
kotlin 2.1.21
|
||||
json 1.8.0
|
||||
xcodegen 2.35.0
|
||||
не удалось в Package.swift сослаться на zip xcframework
|
||||
хотя вроде как должно было бы работать в Xcode 13
|
||||
не выгорело: 1.5 часа потратил
|
||||
* починить CLD tr на Linux
|
||||
1. надо поменять руками для CLD tr версию java version с 8 на 21
|
||||
сделать патч по версии java?
|
||||
да не, пусть руками, это один раз же
|
||||
в будущем надо переделать translator на nodejs
|
||||
но это потом
|
||||
написать в README KOM заметку для CLD в Linux
|
||||
2. далее sed -i.backup + rm $file.backup
|
||||
* ознакомиться с примером AvatarLoader + Compose от Дениса
|
||||
не очень понятно
|
||||
смущает @OptIn и странная ситуация с API в Glide
|
||||
итог: попробую Coil
|
||||
* изучить загрузку картинок в Compose по URL
|
||||
тут вся суть Session на сервер отправить
|
||||
без него не будет картинки
|
||||
Coil выглядит приятнее, чем Glide
|
||||
хотя по факту работает и так
|
||||
* добавить зависимость Coil
|
||||
* отобразить картинку в Compose
|
||||
https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100
|
||||
* закруглить изображение
|
||||
* сделать заглушки-изображения?
|
||||
это уже можно не мне
|
||||
хотя у нас же заглушка-текст по ivac!
|
||||
тогда мне
|
||||
* заменить ContItem.avaId -> avaURL
|
||||
* отследить неудачную загрузку авы
|
||||
onError
|
||||
* улавливать состояние загрузки
|
||||
onState
|
||||
* создать компонент аватарок
|
||||
|
||||
05.02: 140
|
||||
|
||||
* создать ветку по авам
|
||||
* изучить Glide и Coil
|
||||
https://bumptech.github.io/glide/int/compose.html
|
||||
https://coil-kt.github.io/coil/compose/
|
||||
* узнать URL запроса в Ucim/Ava
|
||||
ИГР Shortcuts.loadRI url: 'https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100'
|
||||
ИГР ImageCS.retrieve url/token: 'Optional(https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100)'/'8ccabf0b-73ed-43c3-add7-969b9c727f05'
|
||||
* определиться с заголовками
|
||||
Серёга сказал, что Session нужно отправлять
|
||||
* скачать Ubuntu 25.10
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13464
|
||||
[KMP] Создать заготовку информации о контакте для Android
|
||||
|
||||
04.02: 130
|
||||
|
||||
* создать ветку
|
||||
andinf
|
||||
сделал
|
||||
* добавить /* 1 */ в if своих шудах в контактах
|
||||
забыл первоначально
|
||||
* восстановить упущенные Ильёй поля в
|
||||
стоп, подлить от Ильи сначала ветку
|
||||
да, Илья исправил
|
||||
мне не надо восстанавливать
|
||||
* улавливать выбор контакта
|
||||
* отображать экран-заглушку
|
||||
* возвращаться назад
|
||||
* переименовать ContactInfo -> Info
|
||||
* локализовать confInfoTitle
|
||||
как раз в эффекте contLocalize
|
||||
* отображать имя выбранного контакта
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/10
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении заготовки информации о контакте: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/10
|
||||
√ 163, main, >=2
|
||||
* влить ЗС
|
||||
* отметить ЗС в таблице
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13334
|
||||
[KMP] Создать заготовку списка контактов
|
||||
|
||||
03.02: 270
|
||||
|
||||
* создать ветку
|
||||
paste
|
||||
* сделать значения по умолчанию для хоста для Android
|
||||
чтобы достаточно было нажать на кнопки Далее без ввода
|
||||
делать по аналогии с вводом в GitBudget через Paste
|
||||
* переименовать DBGFillHostInput -> DBGHost
|
||||
* продублировать для iOS
|
||||
надо замутить свой Binding как-будто, чтобы разделить getter и setter
|
||||
https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-custom-bindings
|
||||
* оформить ЗС
|
||||
√ фотки переделать
|
||||
√ записать видео
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/6
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отладочной кнопке заполнения поля ввода хоста: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/6
|
||||
√ 127, main, >=2
|
||||
* влить ЗС
|
||||
* отметить в таблице КЗС
|
||||
* Илья:
|
||||
выдать кнопку заполнения username/password
|
||||
* создать ветку
|
||||
* разобраться с двойной передачей login из AC в CC
|
||||
два раза был вызов MainComponent.setupEffects
|
||||
закомментировал
|
||||
* сделать запрос контактов
|
||||
* разобраться с ошибкой запроса контактов
|
||||
loadURL без установки заголовков ещё
|
||||
добавить
|
||||
* разбирать контакты
|
||||
* отображать заглушки контактов
|
||||
* отображать список контактов с настоящими именем и почтой
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/8
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС об отображении заготовки списка контактов на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/8
|
||||
√ 193, main, >=2
|
||||
* влить ЗС
|
||||
* отметить в таблице КЗС
|
||||
|
||||
02.02: 130
|
||||
|
||||
* отображать заглушку списка контактов на Android
|
||||
* продублировать заглушку списка контактов на iOS
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/5
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС о создании заглушки списка контактов: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/5
|
||||
√ 473, main, >=2
|
||||
* влить ЗС
|
||||
* отметить в таблице КЗС
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13302
|
||||
[KMP] Создать заготовку авторизации для iOS
|
||||
|
||||
27.01: 170
|
||||
|
||||
* создать заготовку экрана логина
|
||||
* сообщать об ошибке логина/пароля
|
||||
* добавить Starscream
|
||||
* добавить websocket на основе Starscream
|
||||
https://dev.to/fassko/websockets-in-ios-using-swift-276l
|
||||
* подключиться к WS
|
||||
* ознакомитья с Task
|
||||
https://habr.com/ru/articles/762148
|
||||
* восстановить пинги
|
||||
тут как раз нужен Task sleep
|
||||
* A: вынести resetWebSocket в эффекты
|
||||
* продублировать авторизацию для iOS
|
||||
* README: отметить авторизацию iOS
|
||||
* обдумать внутреннюю статью про KOM
|
||||
хотя внутреннюю статью как-будто публиковать-то и нельзя
|
||||
ведь на KOM добро не все давали
|
||||
можно ли рассмотреть этой статьёй основные моменты с тем,
|
||||
чтоб потом быстрее написать про git-budget?
|
||||
итог: нет смысла, лучше время на код потратить
|
||||
* сделать видеозапись
|
||||
ввести неверный хост
|
||||
увидим алёрт
|
||||
ввести верный хост
|
||||
передём на логин пароль
|
||||
ввести неверные логин и пароль
|
||||
увидим алёрт
|
||||
ввести верные логин и пароль
|
||||
увидим пустое окно
|
||||
* подготовить видеодемонстрацию
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/4
|
||||
* влить ЗС
|
||||
|
||||
26.01: 185
|
||||
|
||||
* создать заготовку sdk-ios
|
||||
* сделать заготовку скрипта gen-ios
|
||||
* создать заготовку ver-ios
|
||||
* сделать видеодемонстрацию
|
||||
показать util/gen-ios
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/3
|
||||
* влить ЗС
|
||||
* создать заготовку экрана хостов
|
||||
* придать вид карточки
|
||||
* добавить тень
|
||||
* делать запрос
|
||||
* сообщать об ошибке хоста
|
||||
* скрывать экранр хоста после успешного ввода
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13212
|
||||
[KMP] Создать заготовку авторизации для Android
|
||||
|
||||
24.01: 100
|
||||
|
||||
* перенести UI авторизации
|
||||
* перенести VM авторизации
|
||||
* перенести auth/Fun.kt
|
||||
* исправить невозможность сделать запрос
|
||||
вернуть serialization plugin
|
||||
* перенести авторизацию для Android
|
||||
* записать видео авторизации
|
||||
ввести неверный хост
|
||||
увидим алёрт
|
||||
ввести верный хост
|
||||
передём на логин пароль
|
||||
ввести неверные логин и пароль
|
||||
увидим алёрт
|
||||
ввести верные логин и пароль
|
||||
увидим пустое окно
|
||||
* подготовить видео с титрами
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/2
|
||||
добавить видео
|
||||
* влить ЗС
|
||||
|
||||
23.01: 45
|
||||
|
||||
* исправить генерацию entities.kt
|
||||
обновить и пересобрать cld
|
||||
* копировать CLDController/Context из CLD в Android
|
||||
* перенести CLD
|
||||
entities.yml
|
||||
√ отметить /*@JsExport*/
|
||||
√ добавить клонирвание translator куда-нибудь в ~/iva-smth
|
||||
√ сделать запуск translator из ~/iva-smth
|
||||
√ заменить generate-entities на какой-либо один скрипт в util/
|
||||
причём его надо будет вызывать всегда для всех платформ
|
||||
* кратко описать CLD translator в README
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/1
|
||||
* влить ЗС
|
||||
|
||||
22.01: 75
|
||||
|
||||
* создать репозиторий KOM
|
||||
* описать в таблице README готовую функциональность
|
||||
* генерить entities.kt в корень проекта временно
|
||||
* создать заготовку Android HW
|
||||
на основе git-budget
|
||||
* генерить entities.kt в ver-android
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13190
|
||||
[KMP] Описать движение данных в архитектуре CSE
|
||||
|
||||
21.01: 180
|
||||
|
||||
* создать динамический пример движения данных архитектуры CSE
|
||||
~/m/p/svg
|
||||
выдал Ване KaiSD проверить 21.01.26
|
||||
* от Вани получил следующий отзыв
|
||||
Выглядит как пошаговый визуализатор исполнения кода,
|
||||
но при этом разделение на блоки не очень понятно.
|
||||
И логика движения кружка тоже.
|
||||
Можно увидеть куда он двигался, но нельзя понять куда он должен двигаться.
|
||||
Возможно, нужны точки соединения и линии между ними.
|
||||
|
||||
|
||||
20.01: 90
|
||||
|
||||
* ознакомитья с SVG
|
||||
https://www.w3schools.com/graphics/svg_animation.asp
|
||||
* от руки нарисовать схему с авториацией текущей
|
||||
слева - контроллер / контекст
|
||||
справа-вверху - шуды
|
||||
справа-внизу - эффекты
|
||||
полоски должны путешествовать ctx -> should -> ctx, effect -> ctx, ctx -> effect
|
||||
полоски и будут отображать движение данных
|
||||
* найти редактор SVG
|
||||
https://freesvgeditor.com/en/svg-editor-online
|
||||
* набросать пример
|
||||
~/c/svg(4).svg
|
||||
76
kmp/now.md
Normal file
76
kmp/now.md
Normal file
@@ -0,0 +1,76 @@
|
||||
13.02: 17:15-18:45 90
|
||||
|
||||
* проверить тормоза без использования VM
|
||||
для начала просто проверить тормоза без Ava.View полностью в ячейках
|
||||
да, без lazy image то же самое еле заметно подёргивание
|
||||
* изучить изменения в ava после !34
|
||||
* подлить main
|
||||
* сделать видеозапись
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/39
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС по отображению изображений аватарок на iOS: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/39
|
||||
√ 57, main, >=2
|
||||
* влить ЗС
|
||||
* записать в таблицу
|
||||
* сделать отчёт в чат КМП
|
||||
√ подготовить видео
|
||||
√ посчитать количество сэкономленных строк кода
|
||||
√ ввести скрипт
|
||||
|
||||
НАДО:
|
||||
* подготовить документ с графом связей между сущностями
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/43
|
||||
тут дока больше
|
||||
* сообщить о ЗС
|
||||
* влить ЗС
|
||||
* таблица
|
||||
|
||||
* добавить ссылки на API endpoints рядом с сущностями в YML
|
||||
* попутно удалить shouldResetInfo и соответствующие поля из ContContext
|
||||
* ввести <PRE>_ACTIVE_SHOULDS и регистрацию отладки сразу внутри <PRE>Fun.kt
|
||||
* проверить гипотезу кэширования второй Ava одного запроса
|
||||
чтобы не было двух запросов одной картинки
|
||||
|
||||
* сделать комбинацию на Android
|
||||
|
||||
|
||||
* подготовить шпаргалку по Redux / CSE
|
||||
|
||||
* ввести линтер с запретом @State и @Binding вне VM.swift
|
||||
ввести аналогию для Android
|
||||
* проверить замену на Glide
|
||||
именно после полной реализации на Coil
|
||||
чтобы функционально всё удовлетворяло
|
||||
в Android Connect ведь Glide
|
||||
чтобы меньше трения было при добавлении
|
||||
и без увеличения размера
|
||||
https://bumptech.github.io/glide/int/compose.html
|
||||
|
||||
|
||||
* улавливать изменения в имени контакта по WS
|
||||
это важно сделать для задания пути работы с WS
|
||||
|
||||
* доработать локализацию до генерации нативных файлов Android
|
||||
* доработать локализацию до генерации нативных файлов iOS
|
||||
|
||||
* добавить ширину авы в параметры Ava()
|
||||
сейчас в инфе о контакте фотка размытая выходит
|
||||
но тогда будет загрузка вторая
|
||||
т.е. при переходе на контакт будет сначала видна заглушка
|
||||
тут прям не так просто
|
||||
надо подумать
|
||||
|
||||
* продулировать авторизацию на Desktop
|
||||
|
||||
для Пети:
|
||||
* описать архитектуру
|
||||
* кто за что отвечает
|
||||
|
||||
* iOS input 2026-01-27:
|
||||
переключаться на Return с поля username на password
|
||||
сейчас не надо, ибо SwiftUI поднимает вьюху в свободное пространство при показе клавы
|
||||
* iOS input 2026-01-27:
|
||||
скрывать клавиатуру на Return в поле password
|
||||
сейчас не надо, ибо SwiftUI поднимает вьюху в свободное пространство при показе клавы
|
||||
Reference in New Issue
Block a user