some
This commit is contained in:
121
articles/2026-02_KMP-en.md
Normal file
121
articles/2026-02_KMP-en.md
Normal file
@@ -0,0 +1,121 @@
|
||||
TODO-Title: Does LinkedIn publication have a title?
|
||||
TODO-URL: LinkedIn
|
||||
TODO: Вернуть хостинг своего сайта на GitHub?
|
||||
TODO: Починить открытие видеозаписей
|
||||
TODO: Сделать ссылку на Русскую статью из Английской
|
||||
TODO: Сделать ссылку из Английской статьи на Русскую
|
||||
|
||||
Is Kotlin Multiplatform able to cut development costs for products
|
||||
that support multiple platforms? My calculations say yes, by 21%.
|
||||
|
||||
# Current state of products for multiple platforms
|
||||
|
||||
One of the most popular ways to develop for multiple platforms relies on having
|
||||
a separate team for each platform. For example, here's one particular bug I faced
|
||||
in the russian messenger MAX some time ago:
|
||||
|
||||
<iframe src="https://kornerr.ru/vid/max-msg-disappear_2026-01-28.mp4"></iframe>
|
||||
|
||||
As you can see, while I was chatting with GigaChat AI my messages were
|
||||
disappearing: Android had the bug once (the 4th second), Web had
|
||||
the bug multiple times. Having a different behavior on multiple platforms means
|
||||
there are different teams doing the same product for multiple platforms. Each
|
||||
team has its own programming language, its own architecture, its own code review
|
||||
process, its own set of unique bugs, its own team of testers, its own wage fund,
|
||||
and so on.
|
||||
|
||||
Thus, the more we duplicate the code, the more we have to duplicate the
|
||||
organization structures. Kotlin Multiplatform (KMP) can help reduce code
|
||||
duplication. Of course, KMP won't remove code duplication completely, only
|
||||
to some degree. Let's have a look at my hobby project GitBudget to find out
|
||||
that degree.
|
||||
|
||||
# GitBudget summary
|
||||
|
||||
GitBudget is a tiny hobby project to help me ease calculating my day-to-day
|
||||
spendings. Currently there's no history, no Git support, etc. Nonetheless
|
||||
I've been using it for several months now to speed up tedious calculations of
|
||||
the two important figures:
|
||||
|
||||
1. Overrun: Did I spend more than my daily budget allows? If so, how many rubles?
|
||||
2. Left ₽/day: How many more rubles do I have left to spend a day by taking the overrun into account?
|
||||
|
||||
I don't intend to dive deep into the formulas, it's outside the topic of the article.
|
||||
If you're interested you can have a look at the source code here
|
||||
[at GitHub](https://github.com/kornerr/git-budget).
|
||||
|
||||
Let's see how the application looks like for Android and iOS:
|
||||
|
||||

|
||||
|
||||
No fancy UI/UX here, each UI element is a standard one (sometimes not even
|
||||
aligned correctly). As a user I usually use the application the following way:
|
||||
|
||||
1. Paste from the clipboard the sum I spent yesterday (Spent)
|
||||
2. Paste from the clipboard the remaining budget balance I had for yesterday's morning (Morning balance)
|
||||
3. Copy the result of calculations into the clipboard (Result)
|
||||
|
||||
# Development costs
|
||||
|
||||
Let's divide the source code by three groups;
|
||||
|
||||
| № | Group | Example | Android files | iOS files |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | UI | Jetpack Compose, SwiftUI | MainActivity.kt, VM.kt | AppView.swift, VM.swift |
|
||||
| 2 | Platform | ClipboardManager, UIPasteboard | budget.kt, main.kt, other-android.kt, registerOneliners.kt | budget.swift, cld-ios.swift, other-ios.swift |
|
||||
| 3 | Logic | budgetShouldResetMorningBalance | budgetFun.kt, entities.yml | budgetFun.kt, entities.yml |
|
||||
|
||||
I use KMP only for logic in GitBudget. UI and platform code are native. Why?
|
||||
Because logic is under my full control, it's only updated when I need it.
|
||||
UI and platform, on the other hand, are the properties of Apple and Google.
|
||||
They dictate the rules and update UI with the platform to their liking
|
||||
(for instance, Apple's unavoidable [Liquid Glass](https://www.nngroup.com/articles/liquid-glass/)).
|
||||
|
||||
We'll have a look at two objective indicators: lines of code and time spent to
|
||||
implement a functionality.
|
||||
|
||||
## Indicator #1: Lines of code
|
||||
|
||||
| № | OS | Total | UI | Platform | Logic |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | Android | 692 | 160 (23%) | 221 (32%) | 311 (45%) |
|
||||
| 2 | iOS | 540 | 90 (16%) | 139 (26%) | 311 (58%) |
|
||||
|
||||
**Conclusion-1**: I didn't write 311 lines of code for iOS **again** thanks to KMP, that's **58%** of all iOS code
|
||||
|
||||
**Conclusion-2**: From the perspective of both operating systems (692 + 540 = 1232), these 311 unwritten iOS lines of code result in **25%** of code I didn't write for the whole project
|
||||
|
||||
## Indicator #2: Time spent to implement a functionality
|
||||
|
||||
I've recorded the process of adding a new `Paste` button for `Morning balance` input both for Android:
|
||||
<iframe src="https://kornerr.ru/vid/git-budget-balance-android_800_2026-01-28.mp4"></iframe>
|
||||
|
||||
And iOS:
|
||||
<iframe src="https://kornerr.ru/vid/git-budget-balance-ios_800_2026-01-28.mp4"></iframe>
|
||||
|
||||
The results are:
|
||||
|
||||
| № | OS | Implementation type | Description | Time |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 | Android | Initial | I've created a new functionality that has not existed before | 17:34 |
|
||||
| 2 | iOS | Secondary | I've used already existing logic in KMP, only added a new UI | 07:33 (43%) |
|
||||
|
||||
**Conclusion-3**: It took **57%** less time to repeat the functionality for iOS, i.e., it happened **2 times faster**
|
||||
|
||||
**Conclusion-4**: If we assume that creating the same functionality for both OSes without KMP would take 17:34 * 2 = 35 minutes, then the saved 10 minutes to repeat the functionality for iOS result in **21% of saved time** for the whole project
|
||||
|
||||
# Conclusions
|
||||
|
||||
Thus, these are the figures when using KMP:
|
||||
|
||||
1. iOS lines of code down by **58%**
|
||||
2. Total project's lines of code down by **25%**
|
||||
3. Time spent to repeat the functionality for iOS down by **57%**
|
||||
4. Total time spent to implement the functionality for the project as a whole down by **21%** (this is the figure I've used in the beginning of the article)
|
||||
|
||||
# Questions to a reader
|
||||
|
||||
1. Is 21% of saved time worth it?
|
||||
2. Is 21% good enough to actually step into KMP realm yourself?
|
||||
3. How important is it to synchronously release the same functionality for both OSes?
|
||||
|
||||
@@ -1,3 +1,446 @@
|
||||
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
|
||||
|
||||
@@ -1,8 +1,21 @@
|
||||
Title: ИИ является инструментом копирования, который не даёт ускорения
|
||||
AltTitle: Практический опыт вайб-кодинга от синьора
|
||||
|
||||
ознакомитья с другой статьёй про AI
|
||||
https://kean.blog/post/experiencing-claude-code
|
||||
возможно, толковая
|
||||
|
||||
статья-треш про крутой Cursor
|
||||
https://habr.com/ru/amp/publications/908750/
|
||||
чел 15 лет не прогал, вот она аудитория
|
||||
|
||||
|
||||
|
||||
плюсы:
|
||||
можно не знать проект
|
||||
и вот тут Cursor помогает сократить время
|
||||
но возникает и вопрос, кто именно пишет хвалебные отзывы
|
||||
тот, кто не хочет разбираться с кодом из принципа?
|
||||
хорошо описывает стуртуру кода и шаблоны используемые
|
||||
хоть сам Cursor и не умеет им следовать
|
||||
можно узнать о новых спецификаторах для Compose
|
||||
@@ -16,6 +29,11 @@
|
||||
но плохо представляешь себе код
|
||||
|
||||
минусы:
|
||||
видос, когда не смог добавить таб
|
||||
на вопрос
|
||||
Вопрос к тебе на засыпку. По твоим представлениям, должен ли джун уметь делать такую задачу: Добавить новую вкладку в таббар с какой-нибудь иконкой и названием, а при её выборе отображать заглушку "Hello, world"?
|
||||
коллега ответил
|
||||
Это должно уметь делать задолго до того, как стать джуном
|
||||
часто ошибается и пишет код не туда, т.е. нарушает архитектуру
|
||||
приходится постоянно уточнять мысль вместо того, чтобы написать сразу туда
|
||||
приходится и постоянно делать review/проверку
|
||||
@@ -96,7 +114,22 @@
|
||||
за 5 минут напишет ИИ? Или за 5 минут не напишет? А за 50 минут разве
|
||||
тоже не напишет? А за 50 дней тоже не напишет? Вопросы, вопросы...
|
||||
|
||||
|
||||
Если бы ИИ действительно экономил время, то почему многие инфоцыгане,
|
||||
втюхивающие ИИ, просто бы не купили условно 10 мощных компов
|
||||
или 10 лицензий, подписали бы контракт с условным Сбером или ВТБ
|
||||
и тупо, если ИИ экономит условно 50% времени, то почему бы они
|
||||
просто не предолжили фирмам-гигантам те же услуги со скидкой 50%?
|
||||
Почему если ИИ такой крутой и заменяет или дополняет или ускоряет
|
||||
программиста, то меньше программисты не получают? А они получают
|
||||
всё больше и больше?
|
||||
Не сходится что-то
|
||||
ИИ как элетромобиль! Тоже предрекали десятилетия назад, что будет огого
|
||||
и где в итоге огого? Да, они ездят, но типа огого нет. Появился
|
||||
ещё один вид автомобильно. Принцип совершенно не изменился. Революции
|
||||
тоже что-то не видно. То же и с ИИ - это просто другой инструмент,
|
||||
который, если посчитать, как я посчитал, ничего не экономит. А если
|
||||
посчитать углеродный след или стоимость лицензии, то с ИИ даже
|
||||
и невыгодно работать выходит. Синьору.
|
||||
|
||||
лиды:
|
||||
из статьи про KMP сделать ссыку на AI
|
||||
|
||||
126
budget/now.md
126
budget/now.md
@@ -1,23 +1,125 @@
|
||||
|
||||
НАДО:
|
||||
* создать generator
|
||||
тут будет лишь ver-nodejs
|
||||
тогда, возможно, даже и смысла в ver-nodejs нет
|
||||
да, смысла нет, это слишком важный инструмент, чтобы иметь несколько вариаций
|
||||
* создать helloworld/
|
||||
тут уже будут ver-nodejs, ver-android, ver-ios, ver-macos-x64/arm64, ver-linux-x64, ver-windows-x64
|
||||
* отполировать
|
||||
* влить ЗС
|
||||
создать сразу новый на май
|
||||
* опубликовать
|
||||
сайт
|
||||
VK
|
||||
* сообщить Ване Kai SD
|
||||
|
||||
|
||||
далее сначала нужно перевести на nodejs
|
||||
затем уже наварганить генерацию обёрток для C++
|
||||
|
||||
* генерить hwSet для .cpp
|
||||
* генерить EffectRegistry
|
||||
* генерить Context
|
||||
* генерить API
|
||||
|
||||
KD = Redux in Kotlin for Android, iOS, Desktop, and Browser
|
||||
|
||||
* доработать генератор
|
||||
чтобы KOM заработал без KT.h/cpp
|
||||
дублировать руками KT.h/cpp в KD example не нужно
|
||||
ибо бессмысленно
|
||||
|
||||
генерить по частям/файлам
|
||||
чтобы отщипывать по частям из KOM
|
||||
сделать в KOM ветку новую
|
||||
* генерить для C++
|
||||
и функций в KT для получения готовых экземпляров всего
|
||||
сделать геренацию полей F по аналогии со спецструктурой YML
|
||||
т.е. генерить спецструктуру со статическими полями?
|
||||
это после C++ генерации станет ясно, как лучше оформить
|
||||
* обновить version
|
||||
src files say 2.0.0
|
||||
wrong
|
||||
must be 3.1.0
|
||||
when C++ gen is ready
|
||||
* обновить README
|
||||
* оформить ЗС
|
||||
https://github.com/OGStudio/kotlin-dialect/pull/7
|
||||
* влить ЗС
|
||||
|
||||
* сделать Main статичной компонентой
|
||||
* сделать текст на основе логики руками
|
||||
* выставить VM.cpp:_mainIsVisible = false
|
||||
* подготовить заготовку ver-windows-x64
|
||||
* helloworld readme
|
||||
показать и рассказать про выполнение команд
|
||||
./util/gen-kd
|
||||
и прочие
|
||||
|
||||
* собрать на W10
|
||||
* удалить gradlew.bat
|
||||
если в MSYS2 достаточно gradlew
|
||||
* оформить ЗС
|
||||
https://github.com/OGStudio/kotlin-dialect/pull/5
|
||||
* влить
|
||||
|
||||
* проверить пересоздание лишнее при перевороте устройства Android
|
||||
|
||||
* доработать пример ver-android
|
||||
поле ввода
|
||||
кнопка
|
||||
загрузки
|
||||
вставки URL фиксированного
|
||||
текст
|
||||
картинка
|
||||
загружать картинку по URL из поля ввода
|
||||
* mainViewIsVisible: задать false по умолчанию
|
||||
|
||||
* поправить запуск android HW на W10?
|
||||
спрошу у Всеволода
|
||||
|
||||
|
||||
* переключить версию Android на KD
|
||||
* переключить версию iOS на KD
|
||||
* ввести budgetSet() вместо budgetCtrl().set()
|
||||
* ввести setupDebugging с short str
|
||||
* использовать F
|
||||
* ввести budgetProto для регистрации шудов и неповторения кода компонента
|
||||
* сделать веб-версию
|
||||
* описать в README все три версии GB
|
||||
* описать зависимости mac (brew install node) и linux
|
||||
|
||||
* поднять версию
|
||||
если KD не менялось, то 3.0.1
|
||||
ибо после смены gradle на 9.3.1 поменялось содержимое dist/stdlib
|
||||
хоть оно и несущественно, но это уже изменение третьей цифры
|
||||
хотя если будем генерить для C++
|
||||
то это уже 3.1, ибо новое без breaking change
|
||||
|
||||
* tag next version
|
||||
|
||||
|
||||
|
||||
* KD: переименовать app.js в klin.js
|
||||
иначе в dist вообще не ясно, что запускать
|
||||
либо dist в klin переименовать?
|
||||
dist/klin/app.js?
|
||||
|
||||
* починить --help
|
||||
|
||||
|
||||
|
||||
* KD: линтер сделать проверки упорядоченности по имени названий сущностей
|
||||
* Klin: сообщать о несущестующем пути для output
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* отдельно сделать версию CLDController для cinterop
|
||||
ибо по умолчанию не компилится не для C++
|
||||
либо это отдельный файл должен быть в CLD
|
||||
формат надо обдумать
|
||||
|
||||
* префикс JS делать перед сущностями инструментом?
|
||||
сущности - можно
|
||||
а вот функции-то не выйдет
|
||||
так что надо самому всё равно прописывать JS
|
||||
либо исходные файлы
|
||||
хотя это такое себе
|
||||
* принимать импорты-замены
|
||||
чтобы org.opengamestudio заменять на другое
|
||||
* оформить ЗС
|
||||
https://github.com/OGStudio/kotlin-dialect/pull/13
|
||||
* влить ЗС
|
||||
|
||||
15
business/2026-02-21_Андрей-Пронин.md
Normal file
15
business/2026-02-21_Андрей-Пронин.md
Normal file
@@ -0,0 +1,15 @@
|
||||
Title: Предложение о сотрудничестве в качестве руководителя или разработчика в ответ на просьбу откликнуться продажников
|
||||
Company: Proninteam.ru
|
||||
Date: 2026-02-21
|
||||
|
||||
Привет, Андрей.
|
||||
|
||||
Увидел в комментариях канала Галеры твой призыв откликнуться продажников, поэтому решил откликнуться, хоть и не продажник :)
|
||||
|
||||
Умею следующее:
|
||||
1. Руководить группой разработки
|
||||
2. Создавать мобильные приложения Android + iOS
|
||||
|
||||
На основной работе занимаюсь большую часть времени руководством (10 человек), но не забываю и регулярно писать код.
|
||||
|
||||
Моя цель в том, чтобы создать себе второй доход в дополнение к основной работе. У меня нет завышенных ожиданий по размеру этого дохода, поэтому готов обсудить любой формат взаимодействия.
|
||||
36
business/2026-03-09_Александр-Ноксон.md
Normal file
36
business/2026-03-09_Александр-Ноксон.md
Normal file
@@ -0,0 +1,36 @@
|
||||
Title: Предложение о сотрудничестве автору ТГ-канала Веб разработка на заказ
|
||||
TG Author: @sashanoxon
|
||||
TG Channel: @aideaxondemos
|
||||
Date: 2026-03-09
|
||||
|
||||
Приветствую, Александр,
|
||||
|
||||
меня зовут Михаил, предлагаю совместно поработать.
|
||||
|
||||
Для начала представлюсь. С 2021-го года руковожу командой мобильной разработки
|
||||
(10 человек на текущий момент, Android + iOS) в компании, которая делает видеоконференцсвязь.
|
||||
Некоторое время назад начал поиск вариантов мягкого выхода из найма: в конце прошлого года
|
||||
пытался предлагать свои услуги (сайт и/или мобилки) авторам ТГ-каналов, обучающим Китайскому
|
||||
(сам изучаю, поэтому хотел совместить приятное с полезным). К сожалению, никто не заинтересовался.
|
||||
|
||||
Поэтому решил теперь найти потенциального коллегу/партнёра, с которым смог бы совместно
|
||||
предложить рынку больше, чем могу сделать один. Собственно, предложение у меня
|
||||
простое - я могу делать мобильные приложения либо сам, либо чужими руками (руководить).
|
||||
Для разработки на Android + iOS использую Kotlin Multiplatform в качестве
|
||||
конкурентного преимущества, т.к. это позволяет оставаться полностью нативным
|
||||
и одновременно экономить на трудозатратах (21%). Подробно цифры расписывал
|
||||
в статье на Хабре: https://habr.com/ru/articles/989286/
|
||||
|
||||
Как я себе вижу потенциальное сотрудничество? Предполагаю, что у тебя есть
|
||||
некоторое количество заказов на разработку сайтов. Возможно, кто-то из заказчиков
|
||||
хотел бы получить в дополнение к сайту MVP в виде нативного приложения. Вот тут
|
||||
я мог бы подключиться и сделать этот самый MVP. У меня есть два режима, в которых
|
||||
я могу это сделать сам своими силами:
|
||||
1. Медленный режим "после работы": Готов бесплатно до непосредственной передачи
|
||||
продукта заказчику поработать в течение условно квартала, а потом попросить
|
||||
символическую сумму, которая позволит мне договоритья с женой, что оно того стоит.
|
||||
2. Стандартный режим "половина рабочего дня": Готов за сумму, заметно меньше
|
||||
рыночной, работать половину обычного дня, чтобы скорость выдачи результата была
|
||||
привычной для заказчика.
|
||||
|
||||
Жду ответного гудка 🙂
|
||||
54
business/2026-04-02_Глеб-Архангельский-Про-бизнес.md
Normal file
54
business/2026-04-02_Глеб-Архангельский-Про-бизнес.md
Normal file
@@ -0,0 +1,54 @@
|
||||
Title: Созвон: Из найма в бизнес
|
||||
Date: 2026-04-02
|
||||
|
||||
|
||||
|
||||
Оплата:
|
||||
|
||||
до 23:00 сегодня 02.04 - 14 тыс
|
||||
оплатить в робокассе
|
||||
зарегаться на странице курса
|
||||
|
||||
Страница онлайн-курса «Из наемного в бизнесмены»: https://glebarhangelsky.ru/online
|
||||
Базовый тариф: https://tminvest.ru/pay/15000
|
||||
Усиленный тариф: https://tminvest.ru/pay/25000
|
||||
|
||||
|
||||
89161181977 Юлия телефон/MAX/тг - по всем вопросам
|
||||
|
||||
|
||||
|
||||
* Сохранить фотки по курсу
|
||||
в Desktop
|
||||
* проверить wordstat
|
||||
чего люди-то хотят?
|
||||
им нужен прототип-то?
|
||||
* проверить custdev
|
||||
|
||||
Заметки:
|
||||
|
||||
* демиургическия функция:
|
||||
не было квадратных пирожков, а я - сделал
|
||||
* от работы на дядю переходишь к работе НА КЛИЕНТА
|
||||
* не было квадратных пирожков, а я - сделал
|
||||
|
||||
Вопросы:
|
||||
|
||||
1. Зачем создавать свой бизнес?
|
||||
2. Создавать бизнес навсегда или на продажу?
|
||||
3. Как переходить от найма к бизнесу?
|
||||
4. Нужен именно бизнес или независимый источник дохода?
|
||||
5. Насколько нестандартный бизнес создавать?
|
||||
Импортозамещение?
|
||||
Как раз proto.io заменить?
|
||||
6. Создавать бизнес одному или в партнёрстве?
|
||||
7. Делать честный бизнес или стартап-возгонку?
|
||||
8. Бусттреппинг или внешнее финансирование?
|
||||
9. Как построить белый чистый бизнес?
|
||||
Начинать с "ИП на упрощёнке"
|
||||
10. Станет ли придуманная бизнес-идея "делом", а не просто "бизнесом"?
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,177 @@
|
||||
19.03: 25
|
||||
|
||||
* Канал: рассказать про свои планы по Linux
|
||||
и как они не удались
|
||||
и как надо будет иное замутить
|
||||
Краткая заметка про план и коррекцию
|
||||
В первом пункте плана на эту неделю указан переход на Linux для решения проблемы с симлинками.
|
||||
Всеволод этот пункт успешно сделал: запустил проект в Android Studio в виртуалке на Linux, но эмулятор Android работает слишком медленно, что делает процесс разработки неудобным.
|
||||
Таким образом, у нас появилась развилка:
|
||||
1) ради симлинков терпеть подтормаживания виртуалки
|
||||
2) заморочиться с установкой Linux на физическую машину
|
||||
3) смириться с Windows: отказаться от симлинков и скорректировать дальнейшие шаги
|
||||
Симлинки (на Linux и macOS) позволили бы нам не копировать те файлы исходного код, которые не нужно писать более одного раза под несколько платформ. Без симлинков файлы надо копировать.
|
||||
Мы выбрали 3-й путь: смириться с Windows и отказаться от симлинков. Поэтому придётся добавить в процесс настройки проекта (на одной из следующих недель) копирование файлов для второй платформы.
|
||||
* Андрей: скинуть ссылку на канал Диалект Котлина
|
||||
|
||||
16.03: 25
|
||||
|
||||
* Всеволод: оформить итоги недели с видео по планам
|
||||
и похвалить за собранность
|
||||
* Всеволод: сориентировать по планам на неделю
|
||||
1. Linux: Поставить Android Studio и начать работать с проектом из Linux
|
||||
2. Сохранение: Использовать SharedPreferences для хранения данных на устройстве, например, сохранять все введённые данные в одну специальным образом форматированную строку
|
||||
3. Compose: Переписать имеющийся интерфейс на Compose
|
||||
* Андрей: скинуть ТЗ и тестовое
|
||||
|
||||
13.03: 30
|
||||
|
||||
* оформить предложения Андрею и Александру как отдельные документы датированные
|
||||
по аналогии с остальными запросами на работу
|
||||
* Андрей: придумать формат тестового задания
|
||||
изучить основу donor search
|
||||
* Андрей: придумать формат ТЗ
|
||||
|
||||
12.03: 10
|
||||
|
||||
* оформить предложения Андрею и Александру как отдельные документы датированные
|
||||
по аналогии с остальными запросами на работу
|
||||
|
||||
11.03: 30
|
||||
|
||||
* попросить Всеволода расписать сценарии по формату
|
||||
* подготовить таблицу для заполнения
|
||||
https://docs.google.com/spreadsheets/d/1mKC2LinwfgnBTpoUILj0KA3H16uNCz2eDdTBW0xpjNY/edit?usp=sharing
|
||||
сценарии
|
||||
оценки в часах
|
||||
оценки в датах
|
||||
факт
|
||||
* попросить Всеволода заполнить таблицу
|
||||
* выдать публичное обещание в канале KD
|
||||
|
||||
09.03: 15
|
||||
|
||||
* починить домен
|
||||
* сделать ревизию оффера автору канала "веб разработка на заказ"
|
||||
@aideaxondemos
|
||||
|
||||
Приветствую, Александр,
|
||||
|
||||
меня зовут Михаил, предлагаю совместно поработать.
|
||||
|
||||
Для начала представлюсь. С 2021-го года руковожу командой мобильной разработки
|
||||
(10 человек на текущий момент, Android + iOS) в компании, которая делает видеоконференцсвязь.
|
||||
Некоторое время назад начал поиск вариантов мягкого выхода из найма: в конце прошлого года
|
||||
пытался предлагать свои услуги (сайт и/или мобилки) авторам ТГ-каналов, обучающим Китайскому
|
||||
(сам изучаю, поэтому хотел совместить приятное с полезным). К сожалению, никто не заинтересовался.
|
||||
|
||||
Поэтому решил теперь найти потенциального коллегу/партнёра, с которым смог бы совместно
|
||||
предложить рынку больше, чем могу сделать один. Собственно, предложение у меня
|
||||
простое - я могу делать мобильные приложения либо сам, либо чужими руками (руководить).
|
||||
Для разработки на Android + iOS использую Kotlin Multiplatform в качестве
|
||||
конкурентного преимущества, т.к. это позволяет оставаться полностью нативным
|
||||
и одновременно экономить на трудозатратах (21%). Подробно цифры расписывал
|
||||
в статье на Хабре: https://habr.com/ru/articles/989286/
|
||||
|
||||
Как я себе вижу потенциальное сотрудничество? Предполагаю, что у тебя есть
|
||||
некоторое количество заказов на разработку сайтов. Возможно, кто-то из заказчиков
|
||||
хотел бы получить в дополнение к сайту MVP в виде нативного приложения. Вот тут
|
||||
я мог бы подключиться и сделать этот самый MVP. У меня есть два режима, в которых
|
||||
я могу это сделать сам своими силами:
|
||||
1. Медленный режим "после работы": Готов бесплатно до непосредственной передачи
|
||||
продукта заказчику поработать в течение условно квартала, а потом попросить
|
||||
символическую сумму, которая позволит мне договоритья с женой, что оно того стоит.
|
||||
2. Стандартный режим "половина рабочего дня": Готов за сумму, заметно меньше
|
||||
рыночной, работать половину обычного дня, чтобы скорость выдачи результата была
|
||||
привычной для заказчика.
|
||||
|
||||
Жду ответного гудка :)
|
||||
|
||||
|
||||
* отправить оффер
|
||||
|
||||
08.03: 50
|
||||
|
||||
* написать черновой вариант оффера Александру Ноксону
|
||||
|
||||
03.03: 30
|
||||
|
||||
* сделать запрос-оплеуху Андрею
|
||||
скинуть два бага
|
||||
и намекнуть, что я не дождался ответа
|
||||
Привет, Андрей, пока ждал несостоявшегося звонка, нашёл пару ошибок на сайте proninteam.ru:
|
||||
1. Ошибка в сокращении ИММК РАН: должно быть ИИМК РАН
|
||||
2. На Samsung A54 сообщение о куках расползается до нечитаемых размеров
|
||||
|
||||
02.03: 20
|
||||
|
||||
* изучить вакансии на полставки на HH
|
||||
чрезвычайно мало
|
||||
* изучить вакансию на Хекслет
|
||||
https://hh.ru/vacancy/129703750
|
||||
уже нет
|
||||
|
||||
01.03: 30
|
||||
|
||||
* на LinkedIn сослаться на статью Reddit
|
||||
https://www.linkedin.com/posts/michael-kapelko-74780135_from-the-kotlinmultiplatform-community-on-activity-7433740175991623680-yK0a?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAdqeucBN55Ve2Lq5eMSZiIkc_pDn270344
|
||||
|
||||
28.02: 40
|
||||
|
||||
* добавить изображения руками
|
||||
* опубликовать статью на Reddit
|
||||
https://www.reddit.com/r/KotlinMultiplatform/comments/1rgtn1z/is_kotlin_multiplatform_able_to_cut_development/
|
||||
* перечитать статью
|
||||
|
||||
23.02: 20
|
||||
|
||||
* сохранить черновик на Reddit
|
||||
|
||||
22.02: 10
|
||||
|
||||
* прочитать ответ по Kotlin C/C++
|
||||
https://youtrack.jetbrains.com/issue/KT-84169
|
||||
написал вопрос: 08.02
|
||||
получил ответ: 17.02
|
||||
* восстановить учётку Reddit
|
||||
|
||||
21.02: 30
|
||||
|
||||
* попробовать опубликовать статью в LinkedIn
|
||||
нельзя, ибо огромная
|
||||
тогда стоит на хабр выложить, возможно
|
||||
а затем сослаться на неё в публикации
|
||||
* написать Пронину в ТГ про парт-тайм разработку/руководство/whatever
|
||||
@andpronin
|
||||
|
||||
20.02: 20
|
||||
|
||||
* прочитать про проблемы Liquid Glass
|
||||
https://www.nngroup.com/articles/liquid-glass/
|
||||
|
||||
19.02: 30
|
||||
|
||||
* закончить первичный перевод статьи про КМП
|
||||
|
||||
18.02: 30
|
||||
|
||||
* перевести до непосредственного подсчёта строк
|
||||
|
||||
17.02: 30
|
||||
|
||||
* перевести начало обзора GitBudget
|
||||
|
||||
16.02: 30
|
||||
|
||||
* перевести начало статьи про КМП
|
||||
|
||||
15.02: 15
|
||||
|
||||
* на LinkedIn ответить, что мне интереснее управление командой
|
||||
√ Сергею Еремееву
|
||||
√ Robert Lycett
|
||||
√ Anastasiya Sundeeva
|
||||
|
||||
14.02: 40
|
||||
|
||||
* ответить Еремееву и Lycett на LinkedIn
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
dom.event.clipboardevents.enabled
|
||||
|
||||
|
||||
|
||||
* Сдеать свою приложеньку прототипирования?!
|
||||
как раз KD тут может чрезвычайно решить многие проблемы!
|
||||
|
||||
* Могу придумывать систему
|
||||
Пример: задание оценить способность Cursor AI ускорить разработку
|
||||
|
||||
11
business/idea-proto-app.md
Normal file
11
business/idea-proto-app.md
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
НАДО:
|
||||
|
||||
* создать приложение для прототипирования сайтов, мобилок, приложений десктоп
|
||||
* Kotlin -> JS тут сильно поможет для перезагрузки без переустановки
|
||||
* по факту это может в итоге стать не просто прототипирования, а быстрый показ возможностей
|
||||
* изучить Combine Multiplatform?
|
||||
тогда получится на все платформы разом делать прототип?
|
||||
* не делать обязательную регистрацию
|
||||
structure.app хочет регистрацию
|
||||
а нафиг её
|
||||
102
business/now.md
102
business/now.md
@@ -1,18 +1,94 @@
|
||||
23.03: 13:10-13:25 15
|
||||
23.03: 16:00-16:40 40
|
||||
|
||||
* подготовить кратко про план на неделю
|
||||
* стрясти итоги недели и 5 пунктов доработок приложения
|
||||
* подготовить формат таблицы на 3-ю неделю
|
||||
план/факт
|
||||
дотошная структура hello world
|
||||
* отправить в Канал кратко планы
|
||||
На этой неделе начнём погружаться в подход "Диалект Котлина". Если кратко, то это сумма следующих слагаемых:
|
||||
1. Redux-подобная архитектура в виде явного разделения
|
||||
а) места принятия решений (шуды, reducers)
|
||||
б) места исполнения решений (эффекты, side effects)
|
||||
в) места хранения состояния (контекст, store)
|
||||
2. Однонаправленный поток данных (Unidirectional data flow, UDF): Контекст -> Шуд -> Эффект -> Контекст -> ...
|
||||
3. Единственный источник истины (Single source of truth, SSOT): задание значения поля контекста допустимо лишь в одном единственном месте, задание этого же поля в более чем одном месте считается ошибкой
|
||||
|
||||
НАДО:
|
||||
|
||||
* на LinkedIn ответить, что мне интереснее управление командой
|
||||
√ Сергею Еремееву
|
||||
√ Robert Lycett
|
||||
Anastasiya Sundeeva
|
||||
|
||||
* написать копию статьи про КМП на English в LinkedIn
|
||||
сделать на неё ссылку с хабра для тех, кому нужен English
|
||||
сделать из статьи LinkedIn ссылку на статью на Хабре
|
||||
из неё сделать ссылку на ТГ канал @kotlindialect
|
||||
* написать Леониду Слепхину (LinkedIn)
|
||||
* сварганить видеозапись созвона
|
||||
2026-03-31 17.01.27 Zoom Meeting Michael Kapelko
|
||||
|
||||
25.03: 5
|
||||
* найти node на w10
|
||||
MSYS2 MINGW64
|
||||
надо эту оболочку запускать
|
||||
|
||||
* получить отмашку от Всеволода по готовности заполнения плана на неделю
|
||||
|
||||
* пример shared preferences, если понадобится
|
||||
https://stackoverflow.com/questions/3584267/android-equivalent-of-nsuserdefaults-in-ios
|
||||
|
||||
|
||||
На прошлой неделе Всеволод выполнил свой двухдневный план по созданию задач в планировщике с подзадачами и заметками.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* сформулировать вопрос Ване Kai SD
|
||||
если бы у тебя было X миллионов, необходимых для запуска компании и
|
||||
этих денег хватило бы на 1 год:
|
||||
1. что это была бы за компания?
|
||||
2. что бы она производила?
|
||||
3. зачем бы она это производила?
|
||||
4. почему бы клиенты покупали её продукты?
|
||||
5. какая была бы твоя роль в компании?
|
||||
6. сколько человек было бы в компании?
|
||||
* сделать из обеих статей КМП ссылки друг на друга
|
||||
* опубликовать статью КМП на Medium
|
||||
предложили на Reddit
|
||||
значит, есть смысл
|
||||
|
||||
* скинуть статью про КМП
|
||||
Володе Бородько
|
||||
Денису Жукоборскому
|
||||
Мише Зыкову
|
||||
|
||||
* созвон с Андреем
|
||||
могу заметить то, что пропустили другие
|
||||
сайт proninteam
|
||||
принятие кук
|
||||
ИИМК РАН
|
||||
|
||||
|
||||
|
||||
* сделать тестовое приложение React Native?
|
||||
чтобы лучше понимать, как прорекламировать КМП в SaaSoft
|
||||
ведь возникнет вопрос нафига козе баян
|
||||
а тут и я сам дешевле готов
|
||||
и КМП даёт всё нативное
|
||||
в частности я пойму рендеринг, он как-будто ненативный в RN
|
||||
|
||||
* написать письмо в SaaSoft с предложением сделать WhoIsActive на мобилки
|
||||
изучить текущую функциональность
|
||||
60 т.р. по факту выкладки (за 3 месяца сделаю) + 3 месяца исправления багов в том же режиме
|
||||
|
||||
|
||||
|
||||
|
||||
* откликнуться в Linked In / Messaging / Other
|
||||
там много старых запросов
|
||||
|
||||
* ответить адептам ИИ в LinkedIn статьёй про мои проверки ИИ
|
||||
после публикации статьи KMP на Английском в LinkedIn
|
||||
Leonid Slepukhin
|
||||
https://www.linkedin.com/posts/lslepukhin_i-keep-hearing-that-vibe-coding-isnt-real-activity-7426127984128036864-G3-u?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAdqeucBN55Ve2Lq5eMSZiIkc_pDn270344
|
||||
Pavel Gurov
|
||||
https://www.linkedin.com/posts/pgurov_googleai-aistudio-gemini-ugcPost-7424531753370894336-JNXj?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAdqeucBN55Ve2Lq5eMSZiIkc_pDn270344
|
||||
|
||||
* освежить крупными мазками с вопросами-ответами по iOS
|
||||
https://github.com/vyachesIavskiy/iOS-Interview-Questions
|
||||
@@ -29,7 +105,9 @@
|
||||
Big-O notation
|
||||
как оптимизировать время компиляции программы
|
||||
как оптимизировать время запуска программы
|
||||
|
||||
* освежить SCRUM
|
||||
https://habr.com/ru/articles/825354/
|
||||
|
||||
* проверить отклики на почте и в HH
|
||||
|
||||
|
||||
@@ -83,8 +161,6 @@
|
||||
пример KMP с аналитикой
|
||||
|
||||
|
||||
* освежить SCRUM
|
||||
https://habr.com/ru/articles/825354/
|
||||
|
||||
* освежить знания про архитектуру
|
||||
см личку в ТГ
|
||||
|
||||
4
business/raspberry.md
Normal file
4
business/raspberry.md
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
НАДО:
|
||||
|
||||
* apt install qt6-base-dev cmake g++
|
||||
429
kmp/2026-Q1.md
429
kmp/2026-Q1.md
@@ -1,6 +1,435 @@
|
||||
https://jira.iva.ru/browse/VCSMOB-14236
|
||||
[KMP] Подготовить первый ЗС в Android Connect
|
||||
|
||||
01.04:
|
||||
|
||||
* собрать последнюю версию KOM Android
|
||||
* понизить openjdk до 21
|
||||
иначе Gradle 8.12 жалуется
|
||||
и Anroid Connect не патчится
|
||||
* найти версию Android от Саши Беспалова в чате Всемобильный
|
||||
Android 9
|
||||
это SDK 28
|
||||
а мы понизили до SDK 26
|
||||
* подготовить ЗС в Android Connect
|
||||
описать кратко изменения
|
||||
сделать демку
|
||||
https://git.hi-tech.org/mobile/ucim-android/-/merge_requests/4471
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-14071
|
||||
[КМП] Создать заготовку версии для десктопа
|
||||
|
||||
27.03:
|
||||
|
||||
* ввести F в C++
|
||||
* ввести F в QML
|
||||
* починить SSOT
|
||||
убрать явные задания greetingText и isVisible
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/181
|
||||
* перепроверить сборку android
|
||||
* перепроверить сборку ios
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС о заготовке для десктопа: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/181
|
||||
√ 934, main, >=2, демо
|
||||
* влить ЗС
|
||||
таблица
|
||||
|
||||
26.03:
|
||||
|
||||
* вызывать processOneliners из класса
|
||||
изучить https://stackoverflow.com/questions/12662891/how-can-i-pass-a-member-function-where-a-free-function-is-expected
|
||||
может, надо просто не делать EffectRegistry?
|
||||
т.е. сделать это частью компоненты?
|
||||
если сделать статичным метод, то как-будто всё сходится
|
||||
да, статичная функция работает
|
||||
* придумать схему со статичной функцией компонента
|
||||
сделать компонент статичным?
|
||||
тогда можно будет обращаться к items статичного класса
|
||||
и всё
|
||||
итог: генерить EffectRegistry для каждого компонента свой
|
||||
* ввести HWEffectRegistry
|
||||
* вызывать эффекты с ручной обёрткой
|
||||
* передавать значение isVisible в VM
|
||||
* передавать значение greetingText в VM
|
||||
* добавить кнопки
|
||||
* убрать myapp/App.*
|
||||
* перенести тело hwSet в KT внутри класса API
|
||||
|
||||
25.03:
|
||||
|
||||
* создавать hw ctrl в SDK
|
||||
* ввести hwSet()
|
||||
добиться вывода в консоль отладки
|
||||
* зарегистрировать oneliners
|
||||
* ввести KDCtrl.registerCallbackC
|
||||
* вызывать processOneliners free func
|
||||
|
||||
24.03:
|
||||
|
||||
* подправить скрипты сборки и запуска
|
||||
* ввести VM с полями для QML
|
||||
* сделать заготовку SDK
|
||||
* починить serializable
|
||||
* сделать копирование файлов android -> desktop sdk
|
||||
ignore.*
|
||||
сделал пока лишь для apiConst.kt
|
||||
* линковать SDK к бинарю
|
||||
* заигнорить kd.kt/swift?
|
||||
переименовав в tech.? generated.? copy.? ignored.? ignore.?
|
||||
ignore. хорошо выглядит
|
||||
сейчас нет смысла, ибо работает для мака
|
||||
пусть будет для новых платформ лишь
|
||||
далее - унифицируем
|
||||
|
||||
21.03: 90
|
||||
|
||||
* сделать заготовку HW Qt для w10 x64
|
||||
config не проходит
|
||||
* проверить проект qt-kt
|
||||
тоже не собирается
|
||||
возможно, всё из-за qt6 static
|
||||
надо пересоздать винду
|
||||
* переустановить заново винду
|
||||
* сохранить снимок сразу после msys2
|
||||
после установки msys2 и копирования проекта
|
||||
до установки qt
|
||||
проблема была в неверной версии cmake!
|
||||
надо было ставить не просто cmake
|
||||
а mingw w64 x86_64 cmake!
|
||||
|
||||
20.03:
|
||||
|
||||
* настроить VPN-IKE в Windows?
|
||||
не нужно
|
||||
сеть в VM локальная, всё доступно их хоста
|
||||
* склонировать KOM в Windows
|
||||
посмотреть, будут ли жалобы сразу на симлинки
|
||||
жалоб нет, но в файлах просто пусть относительный
|
||||
под виндой просто не будет работать, выходит
|
||||
* сделать HW Qt для mac x64
|
||||
|
||||
19.03:
|
||||
|
||||
* перекинуть W10 на Mac
|
||||
* скачать W10
|
||||
* установить W10 в VBox
|
||||
* установить msys2
|
||||
https://wiki.qt.io/MSYS2
|
||||
pacman -Sy
|
||||
pacman --needed -S bash pacman pacman-mirrors msys2-runtime
|
||||
pacman -Su
|
||||
* установить qt
|
||||
https://wiki.qt.io/MSYS2
|
||||
√ pacman -S base-devel git
|
||||
√ pacman -S mingw-w64-x86_64-toolchain
|
||||
√ pacman -S mingw-w64-x86_64-qt6-static
|
||||
√ pacman -S cmake
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-14005
|
||||
[КМП] Ввести F для работы с полями в шудах
|
||||
|
||||
16.03: 16:55-
|
||||
|
||||
* подлить main
|
||||
* ввести kd/klin из tag 3.0
|
||||
* перепроверить Android
|
||||
* поправить calc-stats
|
||||
* перепроверить iOS
|
||||
* обновить README
|
||||
CLD: out
|
||||
KD: in
|
||||
* оформить УЗС-1
|
||||
описать кратко преимущества Klin KD
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/49
|
||||
* перевести Ava на F?
|
||||
уже сделано
|
||||
* сообщить об УЗС-1
|
||||
Сливаю УЗС-1 о генерации констант F полей: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/49
|
||||
√ 728 (т: 534), 💀, main, >=2
|
||||
* влить УЗС-1
|
||||
* перевести Auth на F?
|
||||
лишнее
|
||||
таблица изменений уже и так гигантская
|
||||
* оформить КЗС
|
||||
√ демо
|
||||
√ описать особенности нового генератора
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/146
|
||||
* !49
|
||||
* сообщить о КЗС
|
||||
КЗС: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/146
|
||||
√ 0, main, >=2, демо
|
||||
* влить КЗС
|
||||
таблица
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13778
|
||||
[KMP] Создать пару комбинаций для Android
|
||||
|
||||
04.03: 235
|
||||
|
||||
* переименовать KOM.kt
|
||||
иначе путаница сейчас в шагах
|
||||
есть copyKOM
|
||||
есть cloneKOM
|
||||
имя
|
||||
Bridge.kt?
|
||||
KOMBridge.kt!
|
||||
* поправить KOMBridge в v001
|
||||
* отполировать KOMBridge
|
||||
* обновить версию Android Connect
|
||||
be01f725
|
||||
2026-03-04
|
||||
* обновить KOM
|
||||
1f6a5014
|
||||
2026-02-10
|
||||
* сделать демо
|
||||
* оформить ЗС
|
||||
отметить v002 в README
|
||||
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/2
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС о комбинации v002 на основе KOM!27 в Android Connect: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/2
|
||||
√ 415, main, >=2
|
||||
* влить ЗС
|
||||
* таблица КЗС
|
||||
* передать Олегу доведение от !27 до текущего KOM
|
||||
+ починить web socket / comet
|
||||
+ починить ресурсы
|
||||
* изучить текущее состояние KOM на Android и iOS
|
||||
* переименовать cld/entities.yml -> kd.yml
|
||||
* найти причину 5dd60a7e
|
||||
* обновить скрипт
|
||||
* ввести KD/Klin для F.fields
|
||||
* починить Android
|
||||
* добавить в README: brew install node
|
||||
|
||||
03.03: 200
|
||||
|
||||
* выбрать проект из iva-combo
|
||||
* спросить у Cursor обновить Kotlin до 2.2.0
|
||||
а то даже Coil не заводится
|
||||
да и прочее у меня тоже не заводится
|
||||
не удалось за 1.5ч
|
||||
* откатить
|
||||
* проверить запуск после отката
|
||||
* попробовать поднять Kotlin хотя бы до 2.1.20
|
||||
coil 3.2.0 зависит от kotlin 2.1.20
|
||||
кажется, получилось
|
||||
* проверить необходимость изменений classpath в app/build.gradle
|
||||
как-будто не надо
|
||||
* проверить необходимость resolution strategy в android-app/build.gradle
|
||||
вернул
|
||||
ибо не собирается
|
||||
* проверить gradle.properties: k2 = false
|
||||
без них собралось
|
||||
* изменения на 2.1.20 затянуть
|
||||
* добавить coil3
|
||||
добавить сначала в conference-connect/build.gradle
|
||||
после чего просто собрать
|
||||
без раскомментирования авы
|
||||
* отобразить настоящие авы
|
||||
|
||||
02.03: 180
|
||||
|
||||
* ввести do-tmux
|
||||
* сделать пути стандартным
|
||||
$AND_CON_DIR/android-app/conference-connect/src/main/java/su/ivcs
|
||||
$KOM_DIR/ver-android/app/src/main/kotlin/ru/iva
|
||||
* скопировать ava*
|
||||
* скопировать VM
|
||||
* скопировать cont*
|
||||
* import su.ivcs.conference_connect.R
|
||||
* вставить полностью cont* в KOM.kt
|
||||
* запустить компоненты ava, cont
|
||||
* отобразить contUI без данных
|
||||
* передать login и host
|
||||
UserSessionManager.kt
|
||||
* отобразить всамделишные данные
|
||||
|
||||
01.03: 80
|
||||
|
||||
* скопировать other*
|
||||
* проверить вызов ru.iva.other* из C7
|
||||
работает
|
||||
* заменять версию языка
|
||||
conference-connect/build.gradle
|
||||
languageVersion = "2.0"
|
||||
* комментировать uuid
|
||||
return "1-2-3" //return Uuid.random().toHexDashString()
|
||||
|
||||
/* gradle-script/versions.gradle
|
||||
kotlin_version
|
||||
2.1.20
|
||||
*/
|
||||
|
||||
27.02: 60
|
||||
|
||||
* отметить v001 в таблице README
|
||||
* сделать заготовку комбинации v002 как копию v001
|
||||
* обновить версию Android Connect до последней
|
||||
* удостовериться в работе show-diff
|
||||
* найти старую версию KOM с минимумом зависимостей
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/28
|
||||
09.02 выделил contUI.kt
|
||||
хотя тут уже и аватарки есть
|
||||
но можно, думаю, резать тут многое нещадно
|
||||
даже авы, при необходимости
|
||||
как первый шаг, например
|
||||
* вспомнить функциональность версии KOM из !28
|
||||
список контактов с пагинацией
|
||||
ава с изображением и незавершённой заглушкой
|
||||
заготовка инфы о контакте
|
||||
* сделать шаг cloneKOM
|
||||
|
||||
26.02: 120
|
||||
|
||||
* изучить возможность сделать echo в нужную строку файла
|
||||
чтобы вставить код связки с KOM в MainScreenActivity
|
||||
https://unix.stackexchange.com/questions/32908/how-to-insert-the-content-of-a-file-into-another-file-before-a-pattern-marker
|
||||
* сделать шаг insertContactsOverlay
|
||||
* собрать результат v001
|
||||
* оформить ЗС комбинации v001
|
||||
https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/1
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС о комбинации v001 для отображения заглушки контактов в Android Connect: https://git.hi-tech.org/ivasdk/obkom/-/merge_requests/1
|
||||
√ 172, main, >=2
|
||||
* влить ЗС
|
||||
* таблица КЗС
|
||||
|
||||
25.02: 70
|
||||
|
||||
* создать репу obkom для комбинаций Android/iOS Connect + KOM
|
||||
* сделать шаг cloneAndroidConnect
|
||||
* сделать шаг copyKOM
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13657
|
||||
[KMP] Сделать черновой вариант встраивания КМП-контактов в Android Connect
|
||||
|
||||
20.02: 85
|
||||
|
||||
* починить params.bottomToTop = R.id.bottom_navigation
|
||||
* подключить C7Overlay из KOM
|
||||
не работает
|
||||
починил переключение
|
||||
* вернуть переименование
|
||||
* убрать старый размазанный код из MainScreenActivity
|
||||
* отполировать KOM
|
||||
* создать видео для отчёта о недельных итогах
|
||||
|
||||
19.02: 215
|
||||
|
||||
* отладить принтами файлы, которые трогал Cursor
|
||||
ибо сейчас почти работает
|
||||
чтобы понять движение данных
|
||||
файлы:
|
||||
ContactsMainScreenFragment.kt
|
||||
тут вроде как кнопку можно добавить вверху контактов
|
||||
MainScreenHeaderControl.kt
|
||||
кажется, кнопки всех экранов в одной вьюхе
|
||||
MainScreenHeaderAnimator.kt
|
||||
MainScreenActivity.kt
|
||||
main_screen_header.xml
|
||||
* сделать новую репу с копией ucim-android
|
||||
чтобы сливать без страха
|
||||
https://git.hi-tech.org/m.kapelko/android-fork
|
||||
* добавить игнор build
|
||||
* сделать новую ветку и запушить
|
||||
* выводить в консоль факт двойного нажатия на контакты
|
||||
* менять название вкладки на C7 и обратно на Contacts на двойное нажатие
|
||||
* изучить размещение одной View поверх другой
|
||||
https://eclipsesource.com/blogs/2013/09/19/crossing-boundaries-with-the-new-android-viewoverlay/
|
||||
* перекрывать текущие контакты заглушкой контактов
|
||||
* создть заготовку object KOM
|
||||
для размещения кода интеграции
|
||||
проверить скорость пересборки в app target
|
||||
58с
|
||||
* сделать таргет kom?
|
||||
сильно муторно
|
||||
итог: пусть будет KOM.kt в app target
|
||||
* замерить изменения
|
||||
просто перезапуск без изменений: 16с
|
||||
изменение внутри тела функции KOM.doTest: 8м 30с
|
||||
* переместить KOM.kt в таргет conference-connect
|
||||
* замерить изменения
|
||||
80с
|
||||
* продублировать частично код показа C7Overlay в KOM
|
||||
|
||||
18.02: 200
|
||||
|
||||
* найти переключение вкладки контактов с помощью отладчика визуального
|
||||
https://developer.android.com/studio/debug/layout-inspector
|
||||
ничего не показывает дельного
|
||||
* найти MainActivity
|
||||
нет такого файла
|
||||
* добаить таб в таббар
|
||||
спросить Cursor?
|
||||
курсор не справился
|
||||
* добавить кнопку C7
|
||||
с третьего запроса Cursor справился
|
||||
|
||||
17.02: 60
|
||||
|
||||
* открыть проект Android Connect
|
||||
* собрать Android Connect
|
||||
* KOM-Android: сделать slideIn/Out для инфы о контакте
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13650
|
||||
[KMP] Подготовить план разработки с закреплением владельцев
|
||||
|
||||
16.02: 85
|
||||
|
||||
* подготовить документ с графом связей между сущностями?
|
||||
хрен знает
|
||||
пока не ясно, как это лучше объяснить
|
||||
возможно, лучше это сделать частью проекта Kotlin Dialect
|
||||
итог: не вижу, не надо делать
|
||||
* ввести <PRE>_ACTIVE_SHOULDS и регистрацию отладки сразу внутри <PRE>Fun.kt
|
||||
* заменить avaCtrl().set() на avaCtrlSet.... or avaSet()???
|
||||
да, пусть будет avaSet
|
||||
* заменить auth: authSetupShoulds + authSet
|
||||
* заменить cont: contSetupShoulds + contSet
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/43
|
||||
* сообщить о ЗС
|
||||
Сливаю ЗС о переносе регистрации шудов: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/43
|
||||
√ 196, main, >=2
|
||||
* влить ЗС
|
||||
* таблица
|
||||
|
||||
===
|
||||
|
||||
https://jira.iva.ru/browse/VCSMOB-13473
|
||||
[KMP] Отображать аватарки
|
||||
|
||||
13.02: 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
|
||||
* влить ЗС
|
||||
* записать в таблицу
|
||||
* сделать отчёт в чат КМП
|
||||
√ подготовить видео
|
||||
√ посчитать количество сэкономленных строк кода
|
||||
√ ввести скрипт
|
||||
|
||||
12.02: 155
|
||||
|
||||
* изучить про AsyncImage
|
||||
|
||||
122
kmp/now.md
122
kmp/now.md
@@ -1,45 +1,101 @@
|
||||
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
|
||||
тут дока больше
|
||||
* сообщить о ЗС
|
||||
* влить ЗС
|
||||
* таблица
|
||||
* оформить УЗС по publish ivameet (см. rift)
|
||||
|
||||
* подготовить отдельную репу для мостового кода
|
||||
|
||||
|
||||
* использовать генератор для замены KT.h/cpp
|
||||
* оформить ЗС
|
||||
https://git.hi-tech.org/ivasdk/kom/-/merge_requests/203
|
||||
* влить ЗС
|
||||
таблица
|
||||
демо
|
||||
* сделать копирование на Windows
|
||||
* ввести SDK для Windows
|
||||
* проверить на Windows
|
||||
|
||||
* сделать для Linux
|
||||
|
||||
|
||||
* генерить KT.h/cpp в kd.h/cpp
|
||||
* генерить F в kd.h/cpp
|
||||
* сделать заготовку будущего SDK
|
||||
* найти замену okhttp
|
||||
* донастроить W10
|
||||
tmux
|
||||
~/.gitconfig
|
||||
git id_rsa
|
||||
|
||||
|
||||
* KOM упорядочить kd.yml
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* подготовить ЗС в Android Connect с накопленными изменениями
|
||||
|
||||
|
||||
|
||||
* сделать заготовку веб-версии
|
||||
причём с копированием файлов
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* перенести мостовой код в отдельную репу
|
||||
|
||||
|
||||
* obkom: передавать в authCtrl?
|
||||
host
|
||||
login
|
||||
хоть они и не из auth
|
||||
но можно сохранить направление движения данных
|
||||
|
||||
* ориентироваться на ЗС combo work
|
||||
но не вливать
|
||||
ибо ЗС почему-то в прод хочет попасть
|
||||
где-то я ошибся, поэтому не вливать
|
||||
лишь ориентироваться
|
||||
https://git.hi-tech.org/mobile/ucim-android/-/merge_requests/4274
|
||||
|
||||
* KOM-iOS: сделать slideIn/Out для инфы о контакте
|
||||
|
||||
|
||||
* вернуть origin в ucim-android в .git/config
|
||||
[remote "origin"]
|
||||
url = git@git.hi-tech.org:mobile/ucim-android.git
|
||||
fetch = +refs/heads/*:refs/remotes/origin/*
|
||||
* добавить ссылки на API endpoints рядом с сущностями в YML
|
||||
* попутно удалить shouldResetInfo и соответствующие поля из ContContext
|
||||
* ввести <PRE>_ACTIVE_SHOULDS и регистрацию отладки сразу внутри <PRE>Fun.kt
|
||||
* проверить гипотезу кэширования второй Ava одного запроса
|
||||
чтобы не было двух запросов одной картинки
|
||||
* удалить из cld-ios ctrl.set()
|
||||
чтобы заставить перейти на authSet/etc
|
||||
* выделить authUI
|
||||
|
||||
* сделать комбинацию на Android
|
||||
* Android Connect: поднять Kotlin до 2.1.20
|
||||
* сделать тестирование на основе веб-версии
|
||||
|
||||
* подготовить шпаргалку по Redux / Kotlin Dialect
|
||||
|
||||
* подготовить шпаргалку по Redux / CSE
|
||||
* сдеать тесты на вебе
|
||||
|
||||
* ввести линтер с запретом @State и @Binding вне VM.swift
|
||||
ввести аналогию для Android
|
||||
* ввести линтер
|
||||
запретить @State
|
||||
запретить @Binding
|
||||
запретить remember
|
||||
запретить присвоение одного recentField (кроме none) из более чем одного шуда
|
||||
запретить вызов avaSet и т.п. для одного ключа с более чем одного места
|
||||
проверять ГОСТ функций
|
||||
проверять названия переменных в VM
|
||||
запретить комбинировать в UI значения из VM: все комбинации строго в шудах
|
||||
префиксы проверять cont* (Ctx, VM), Cont* (UI)
|
||||
в didClick* должны всегда передавать true
|
||||
* проверить замену на Glide
|
||||
именно после полной реализации на Coil
|
||||
чтобы функционально всё удовлетворяло
|
||||
@@ -52,8 +108,8 @@
|
||||
* улавливать изменения в имени контакта по WS
|
||||
это важно сделать для задания пути работы с WS
|
||||
|
||||
* доработать локализацию до генерации нативных файлов Android
|
||||
* доработать локализацию до генерации нативных файлов iOS
|
||||
* доработать локализацию до генерации нативных файлов Android из доки
|
||||
* доработать локализацию до генерации нативных файлов iOS из доки
|
||||
|
||||
* добавить ширину авы в параметры Ava()
|
||||
сейчас в инфе о контакте фотка размытая выходит
|
||||
|
||||
Reference in New Issue
Block a user