982 lines
42 KiB
Markdown
982 lines
42 KiB
Markdown
02.04: 35
|
||
|
||
* прочитать предыдующую статью
|
||
* написать короткую статью за раз
|
||
* перевести на английский
|
||
|
||
01.04: 60
|
||
|
||
* проверить замену hwSet с template на std::any
|
||
быстро не удалось
|
||
итог: оставить шаблоны
|
||
* генерить hwSet для .h
|
||
|
||
31.03: 45
|
||
|
||
* fobjContexts -> other.contextIds
|
||
* генерить F
|
||
|
||
30.03: 40
|
||
|
||
* генерить расширения
|
||
registerCallbackC
|
||
* ввести rawCPPSDK
|
||
* оставить в tmp.kt лишь временное ручное (setupComponentDebugging)
|
||
|
||
29.03: 25
|
||
|
||
* генериь конвертацию
|
||
|
||
28.03: 35
|
||
|
||
* скинуть Всеволоду ЗС
|
||
https://github.com/OGStudio/kotlin-dialect/pull/6
|
||
* определиться с форматом конвертации
|
||
нужно ли ввести тип kotlincpp?
|
||
или лучше отдельный файл генерить?
|
||
чем больше файлов, тем как-будто хуже в среднем
|
||
тогда, выходит, тип нужен новый
|
||
sdkc++?
|
||
итого:
|
||
ввести sdkc++ или c++sdk
|
||
* написать kd.yml желаемый
|
||
|
||
27.03: 55
|
||
|
||
* дополнить пример kd example кнопкой
|
||
* создать видеодемонстрацию примера
|
||
|
||
26.03: 30
|
||
|
||
* перенести тело hwSet в KT внутри класса API
|
||
|
||
25.03: 40
|
||
|
||
* сделать заготовку oneliners
|
||
* сделать обёртку над KDController
|
||
* сделать обёртку над KDContext
|
||
* продумать решение вопроса с processOneliners
|
||
статичные функции в статичном компоненте!
|
||
|
||
24.03: 35
|
||
|
||
* линковать sdk-mac в ver-mac
|
||
* сделать заготовку компонента main
|
||
|
||
23.03: 50
|
||
|
||
* подготовить заготовку Qt HW для ver-mac-x64
|
||
* сделать заготовку sdk-mac-x64
|
||
|
||
22.03: 60
|
||
|
||
* установить AS на W10
|
||
* добавить в README инструкции для запуска примера
|
||
* переиначить ссылку на KD
|
||
сделать через клон
|
||
иначе это неподъёмно будет для пользоателей примера
|
||
никто не догадается сделать клон
|
||
когда в примере была ссылка на родителя
|
||
* оформить ЗС
|
||
https://github.com/OGStudio/kotlin-dialect/pull/4
|
||
* влить ЗС
|
||
|
||
21.03: 60
|
||
|
||
* убрать пустые файлы из ver-android
|
||
* переименовать в example/helloworld
|
||
* убрать лишние импорты из MainActivity
|
||
* подготовить компоненту main
|
||
* сгенерить kd.kt
|
||
* заигнорить/удалить ignore.kd.kt
|
||
* сделать отображение окна через шуд
|
||
* сделать отображение "hello world" через шуд
|
||
|
||
20.03: 70
|
||
|
||
* подготовить проект ver-android
|
||
|
||
19.03: 35
|
||
|
||
* создать kotlin-dialect-hello-world на Android, десктоп, iOS, web для винды
|
||
создать в репе kotlin-dialect?
|
||
добавить тег kotlin-dialect
|
||
нет, лучше отдельно, т.к. тогда можно будет форкать!
|
||
хотя форкать - это как-будто не самое критичное
|
||
это ведь скорее examples/helloworld
|
||
сильно ли важно форкать? как-будто это сильно второстепенно
|
||
ведь можно скопировать, и всё
|
||
итог: не надо делать отдельную репу, хватит текущей
|
||
* KD: README
|
||
убрать --out
|
||
уточнить: Klin, a translator to convert YML to Kotlin
|
||
-> to Kotlin and Swift
|
||
* игнорировать kd.kt, emb64.kt
|
||
* установить зависимости новые
|
||
brew install gradle
|
||
* поднять gradle до 9.3.1
|
||
чтобы собиралось с openjdk 25
|
||
* README: добавить building prerequisites
|
||
* собрать
|
||
|
||
18.03: 60
|
||
|
||
* установить Android Studio Panda 2
|
||
|
||
17.03: 30
|
||
|
||
* переместить файлы из bootcamp на второй комп
|
||
* удалить Windows
|
||
* установить Linux Mint
|
||
|
||
16.03: 40
|
||
|
||
* скачать Linux Mint
|
||
|
||
15.03: 30
|
||
|
||
* заполнить CHANGELOG.md за ЗС-2
|
||
забыл про 2.1
|
||
* поднять версию до 3.0
|
||
я же отменяю --out, это breaking change
|
||
* заполнить CHANGELOG.md про 3.0
|
||
* оформить ЗС
|
||
https://github.com/OGStudio/kotlin-dialect/pull/3
|
||
* влить ЗС
|
||
* tag 3.0
|
||
|
||
14.03: 40
|
||
|
||
* встроить src/*.swift
|
||
embSwift64?
|
||
embKotlin64?
|
||
* добавить embSwift64 в outputSwift
|
||
* генерить F в Swift (проверить генерацию F)
|
||
struct F {
|
||
static let didClickReload = F.shared.didClickReload??
|
||
}
|
||
* проверить использование F в KOM
|
||
всё работает, не надо придумывать FF
|
||
* применить обновлённую версию klin для генерации
|
||
kom
|
||
удалить cld-ios.swift
|
||
* проверить работоспособность в KOM
|
||
лишь затем вливать
|
||
всё работает
|
||
|
||
13.03: 55
|
||
|
||
* сделать цикличное сохранение по всем output paths
|
||
типы
|
||
jsexport
|
||
kotlin
|
||
swift
|
||
реагировать на смену currentOutputPathId для задания c.outputFile и c.outputFileContents
|
||
т.е. два шуда надо обновить
|
||
а затем в эффектах завязаться на более поздний
|
||
* сохранять файлы
|
||
* применить обновлённую версию klin для генерации
|
||
самого klin
|
||
тесты kd
|
||
* удалить шаг stripTestKDJS
|
||
* определиться насчёт 'import iv'
|
||
где его указывать?
|
||
swift: ?
|
||
да, это самое простое
|
||
* подготовить исходники KDController ext и registerOneliners
|
||
* проверить сборку kom ios сейчас
|
||
работает
|
||
с тестовым ручным struct FF и экспортированным F.shared из KT
|
||
* YML: поддержать 'swift:'
|
||
чтобы 'import iv' указать
|
||
* добавить rawSwift в outputSwift
|
||
|
||
12.03: 40
|
||
|
||
* ввести appShouldResetInputFileDir
|
||
* сделать запись одного первого output path
|
||
|
||
11.03: 45
|
||
|
||
* ввести outputKotlin
|
||
просто убрать import js and @JsExport
|
||
делать на результат outputJSExport
|
||
* генерить kotlin
|
||
без @JsExport
|
||
* генерить F obj с @JsExport для type: jsexport
|
||
хотя можно jsexport по умолчанию везде делать как-будто
|
||
* генерить js
|
||
оставлять @JsExport
|
||
* удалить appShouldParseOutputFilePath
|
||
* удалить --out
|
||
в т.ч. сообщение-помощь при запуске без аргументов
|
||
* переиначить outputPaths
|
||
* ввести заготовочную генерацию outputSwift
|
||
чтобы просто было что-то в файле по итогу сохранения
|
||
|
||
10.03: 25
|
||
|
||
* ограничить debug output
|
||
* ввести outputJSExport
|
||
|
||
09.03: 50
|
||
|
||
* подготовить yml
|
||
√ для klin
|
||
√ для klin test
|
||
√ для kom
|
||
* разбирать output
|
||
* ввести util/debug-klin
|
||
запуск не dist/app.js, а из BUILD_DIR
|
||
|
||
08.03: 40
|
||
|
||
* оформить fexp
|
||
пусть пока только и для JVM
|
||
но оно же есть
|
||
* влить
|
||
* ОБНОВИТЬ сертификат kornerr.ru
|
||
чтобы починить статью КМП
|
||
а затем скинуть офер Александру Ноксону
|
||
сделать README в vps/cert
|
||
всё-таки надо
|
||
а то за квартал забываю
|
||
|
||
07.03: 50
|
||
|
||
* разделить klin/kd.yml на два
|
||
js: в klin
|
||
jvm: в test
|
||
* разделить скрипт util/run-klin-dbg на build и dist
|
||
чтобы dist не перезатирал ничего автоматом
|
||
ибо dist редко нужно делать
|
||
а build - постоянно
|
||
run - убрал совсем, ибо это на самом деле build лишь
|
||
* сократить вывод максимальный отладочный до 50
|
||
* вынести расчёты FObj в fobj.kt
|
||
* убрать генерацию полей F структур, надо ведь только для контекстов генерить
|
||
|
||
06.03: 45
|
||
|
||
* (неудачно) попытаться генерить
|
||
* продумать уместность fexp как есть
|
||
возможно, стоит просто влить как есть
|
||
даже несмотря на то, что нужно ещё доработать для iOS
|
||
ибо тут сильное усложнение идёт
|
||
может, это усложнение стоит провести отдельными компонентами?
|
||
поэтому разумно закомитить текущие результаты по F
|
||
хотя и неполные
|
||
итог: надо влить
|
||
|
||
05.03: 40
|
||
|
||
* KD: продумать формат YML для генерации нужных обёрток в языке назначения
|
||
swift или ios?
|
||
outputs:
|
||
ver-android:
|
||
ver-ios:
|
||
sdk-ios:
|
||
ver-browser?nodejs?js?
|
||
* разбирать outputPaths
|
||
|
||
04.03: 40
|
||
|
||
* опубликовать статьи
|
||
|
||
03.03: 45
|
||
|
||
* прочитать предыдующую статью
|
||
* обновить в январской статье EN ссылку на Reddit
|
||
* написать заготовку статьи на Русском и Английском
|
||
|
||
02.03: 50
|
||
|
||
* добавить F Obj в output kd.kt
|
||
* добавить F.none
|
||
* объединить все файлы node.js в один файл js?
|
||
просто засунуть не помогло
|
||
* изучить, можно ли npx без загрузки из сети запускать
|
||
ибо npx удобнее всего
|
||
но без сети по умолчанию не работает
|
||
не нашёл такого
|
||
* убрать дублирование полей
|
||
* описать в README использование
|
||
|
||
01.03: 35
|
||
|
||
* собрать все поля всех контекстов
|
||
* сделать геренацию полей F по аналогии со спецструктурой YML
|
||
|
||
28.02: 40
|
||
|
||
* переместить kd.yml от klin внутрь klin
|
||
ведь у тестов будет свой kd.yml
|
||
чтобы не было путаницы
|
||
* подготовить kd.yml для тестов
|
||
* исправить запуск тестов
|
||
он как раз про то, что генерить надо разные варианты тех же файлов
|
||
в частности для тестов надо без @JsExport сделать
|
||
или мне нужны два разных вид файлов в src
|
||
одни c JsExport
|
||
другие - без
|
||
пока решил @JsExport решать на уровне скриптов util
|
||
ибо разруливать сейчас это через YML и Klin выглядит сильно лишним
|
||
|
||
27.02: 45
|
||
|
||
* поддержать isDbg
|
||
критически важно для переключения флага на стороне iOS БЕЗ пересборки KMP
|
||
* ввести outputEntityContents
|
||
* ввести outputKDContents
|
||
удалять package org.opengamestudio и import kotlin.js.JsExport
|
||
хотя если я их удаляю, то зачем мне их там размещать?
|
||
для кого-то, кто будет по одному файлу таскать?
|
||
никому это не надо
|
||
тогда легче сразу убрать ненужное, в т.ч. copyright
|
||
прям сейчас не удалить, ибо я пока ещё прямо ссылаюсь
|
||
так что надо удалять всё-таки
|
||
* генерить файлы KDController/Context/registerOneliners сразу в kd.kt
|
||
убрать симлинки на оригиналы
|
||
|
||
26.02: 30
|
||
|
||
* генерить b64 без package и import для каждого файла KD
|
||
хотя именно b64 можно генерить без предварительных правок
|
||
а вот после распаковки b64 правки как раз уместнее, ибо ближе к телу
|
||
* создать файл c package для хранения переменной с b64
|
||
* размещать b64 в коде
|
||
|
||
25.02: 35
|
||
|
||
* обдумать путаницу в названиях klin.kt/klin.yml
|
||
ведь проект называется Kotlin Dialect
|
||
а всё оказывается в непонятном файлы klin.kt
|
||
как-будто kd.yml и kd.kt гораздо яснее и естественнее
|
||
итог: переименовать всё в kd
|
||
хотя сам бинарь может остаться как раз klin
|
||
вот файлы уже kd
|
||
* переименовать файлы в kd
|
||
транслятор остаётся с названием klin
|
||
* сохранять содержимое KDController/Context/registerOneliners как Base64
|
||
* ввести шаги в run-klin-dbg
|
||
|
||
22.02: 20
|
||
|
||
* добавить кодирование в/из Base64
|
||
|
||
21.02: 55
|
||
|
||
* создать новую репу kotlin-dialect
|
||
* обновить README
|
||
* обновить CHANGELOG.md
|
||
* отполировать перед влитием
|
||
F.field - потом будет
|
||
убрать object F
|
||
* оформить ЗС
|
||
* влить ЗС
|
||
|
||
20.02: 50
|
||
|
||
* восстановить чтение файла
|
||
* передать didLaunch
|
||
* восстановить запись файла
|
||
* восстановить прежнюю генерацию
|
||
с учётом @JsExport
|
||
* восстановить isDbg?
|
||
как-будто нет смысла
|
||
убрал
|
||
* перевести на Node.js
|
||
* выяснить формат F
|
||
проверить доступность как в Kt, так и в JS
|
||
object F { val field = ... } работает
|
||
доступ везде есть как F.field
|
||
|
||
19.02: 35
|
||
|
||
* передавать аргументы
|
||
* задать аргументы временно внутри run-klin-dbg
|
||
передал klin.yml и klin.kt
|
||
|
||
18.02: 45
|
||
|
||
* переименовать инструмент в kd?
|
||
klin как-то не вяжется
|
||
с другой стороны, kd уже присуствует в npx
|
||
тогда фиг туда добавить этот очень важный инструмент
|
||
итог: оставляем klin
|
||
* временно ввести cld/entities для генерации Context?
|
||
или просто файл entities.kt взять как есть?
|
||
тогда и запускать не надо будет ничего
|
||
и даже можно будет довести до состояния CLD
|
||
после чего уже самого себя использовать для генерации!
|
||
итог: пока просто скопировать файлы
|
||
* скопировать большинство файлов
|
||
|
||
17.02: 35
|
||
|
||
* выбрать имя генератора
|
||
klin
|
||
и город в МО
|
||
и сокращение от kotlin
|
||
* переименовать generator в klin
|
||
|
||
16.02: 40
|
||
|
||
* починить сборку
|
||
проблема была в настройке settings
|
||
* выводить hw в консоль
|
||
проблема была в том, что не в src лежали исходники
|
||
* создать helloworld/
|
||
тут уже будут ver-nodejs, ver-android, ver-ios, ver-macos-x64/arm64, ver-linux-x64, ver-windows-x64
|
||
|
||
15.02: 45
|
||
|
||
* обдумать форму generator
|
||
тут будет лишь ver-nodejs
|
||
тогда, возможно, даже и смысла в ver-nodejs нет
|
||
да, смысла нет, это слишком важный инструмент, чтобы иметь несколько вариаций
|
||
хотя в будущем может появиться веб-интерфейс
|
||
да и другие версии
|
||
просто потому что могут
|
||
плюс это будет этаким стандартным подходом иметь ver-платформа везде
|
||
* создать заготовку проекта generator
|
||
|
||
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
|
||
* учитывать отрицательный баланс |