TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

Намерени 26 подобни публикации

Търсене: #updater

当前筛选 #updater清除筛选
YuKongA | Channel

@YuKongA13579 · Post #1534 · 17.09.2025 г., 11:30

## Major Updates * Device lists can now be updated remotely * Supports Verification code and 2FA login * Improve search history support (old data is not supported, you need to clear the history) * Improve Security Patch Level and Build Time parsing speed * Update all build deps ## For macOS User * Maybe you need to run sudo xattr -r -d com.apple.quarantine /Applications/Updater.app ## For iOS User * You need to sign it yourself to install #Updater

Hashtags

YuKongA | Channel

@YuKongA13579 · Post #1523 · 12.09.2025 г., 05:59

说实话我这几天一直在尝试把小米账号的图片验证码和二次认证验证码登陆部分塞进 Updater 里面。 图片验证码部分一下子就跑通了没啥问题; 二次认证登陆部分一开始一直拿不到 location,后来发现是 ktor 的 cookie("identity_session", xxxxx) 默认会执行 URL 编码再传过去,小米验证服务器不认了,改成了直接 header("cookie", "identity_session=xxxxx") 之后也跑通了。 但是通过二次认证返回的 location 再进行登陆请求拿不到 serviceToken。。。目前卡在这里两天了😢 现在完全跑通了,但说实话还是不知道问题出在哪(不过确实是能用了) #Updater#UpdaterKMP

YuKongA | Channel

@YuKongA13579 · Post #1347 · 29.05.2025 г., 14:18

这两天对宽屏下的 Updater 做了一些优化: 1. 使用更加符合桌面应用的界面样式 2. 支持跟随系统主题色 (Windows/macOS) 此外: 1. 添加了近期新设备 2. 增加了指纹信息展示 3. 优化了解析 Metadata 的速度 注意: 1. Android/iOS 默认支持跟随系统 2. Linux 我不用 GUI 所以测试不了 #Updater#UpdaterKMP

YuKongA | Channel

@YuKongA13579 · Post #873 · 27.06.2024 г., 10:33

基于 Kotlin Multiplatform 的 Updater 已经趋于完善,并且代码写的也比老的整洁很多。接下来的所有更新都将以此版本为主,使用安卓原生 XML 的版本后续将不再完全同步更新 (例如后续米米跟改请求方式)。 就目前而言,两版本使用上没有区别,原生 XML 版本多了个小米的灵动额头支持。 #Updater#UpdaterKMP

YuKongA | Channel

@YuKongA13579 · Post #829 · 06.06.2024 г., 06:16

小米的 系统更新 程序现在不会像以前一样直观的表现出当前版本已经撤包的现象。 比如小米 14 的 1.0.38.0 实际现在是撤包状态,使用 Updater/UpdaterKMM 无法获取到任何信息。但你仍然可以在 系统更新 内查看当前版本更新日志。 现在 系统更新 页面中给你显示的当前版本更新日志只是曾经查询成功时返回结果的备份。具体可以看 /data/user/0/com.android.updater/shared_prefs/version_json.xml 这个文件。里面有两个参数,当前版本是指曾经查询成功的结果,而最新版本才是最后一次查询的结果。即使不清空缓存,也可以看到最新版本的返回是空值。 因此,很多时候 Updater 查询不到信息真的只是服务器返回给你没包了,而不是账号权限或者软件有问题,因为系统更新自己也获取不到。 #Updater#Xiaomi#News

YuKongA | Channel

@YuKongA13579 · Post #936 · 17.08.2024 г., 15:22

换用最新写的 miuix ui 的极简版本 相比原本去掉了扩展设置(灵动脑门支持,手动深浅色切换)、关于页面。可以说是非常简洁了。 要说新增的话,就是多了 ui 带的特性,越界回弹和顶栏模糊吧。 #Updater#KMP#MIUIX

YuKongA | Channel

@YuKongA13579 · Post #1232 · 27.01.2025 г., 11:06

Updater-KMP Release 1.5.1 Major Updates: * Change more components to miuix style * Add search history support * Add recently released devices * Fix lots of crash issues * Add portuguese brazilian language * Update all deps Download: GitHub Release 好久没发版了,年末更新一个 #Updater#CMP#KMP

YuKongA | Channel

@YuKongA13579 · Post #1177 · 05.12.2024 г., 04:56

最近几天 CMP 修了我在编译 macOS native 版本时遇到的所有问题, 之后会重新提供 Updater 的 macOS native 构建,会比 JVM 版本流畅的多得多。 相关提交和拉取请求: https://github.com/JetBrains/compose-multiplatform-core/commit/e839617b7b4686abb2ed62cf383582f9d79d1ebf https://github.com/JetBrains/compose-multiplatform-core/commit/ec0731597f6d24c84895873c5e4945436c517138 https://github.com/JetBrains/compose-multiplatform-core/commit/759bd7bb272b962181e2dde86d1f6f365db93fa5 https://github.com/JetBrains/compose-multiplatform/pull/5169 以及接下来马上要来的 1.8.0-alpha01 终于修好了 iOS 横屏边衬区异常问题。 12月14号还有个 KMP 专题的开发者大会,有很多大厂工程师来讲 CMP 通过 K/JS 和 K/N 适配 HarmonyOS NEXT 的可行性和方案。 #CMP#KMP#Updater

YuKongA | Channel

@YuKongA13579 · Post #831 · 06.06.2024 г., 08:03

重新研究了一遍小米系统更新的请求链接。 接下来会完善软件的业务能力: 1. 查询的版本存在,显示查询版本的信息;如果查询的不是最新版本,同时返回距离最新稳定版之间的增量信息; 2.查询的版本不存在,但是比稳定版最新版本低,返回稳定版最新版本; 3.查询的版本不存在,也比稳定版最新版本高,不登录的情况下无返回,如果登录且拥有开发版权限,则返回开发版最新版本。 总结: 完全同步系统更新的业务逻辑。 #Updater#UpdaterKMM#News

ПредишнаСтр. 1 от 3Следваща