feb15
This commit is contained in:
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
|
||||
* учитывать отрицательный баланс
|
||||
Reference in New Issue
Block a user