V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lisongeee  ›  全部回复第 19 页 / 共 42 页
回复总数  833
1 ... 15  16  17  18  19  20  21  22  23  24 ... 42  
@Jirajine

不联网怎么更新订阅获取新规则组啊,而且这个是开源的,你完全可以自己构建
@2218675712

shizuku 目前只支持 获取 activityId ,通过 shizuku 获取 无障碍服务是可以实现的,但是我手机的 shizuku 老是自动关闭

因此就没怎么实现,后续会支持的,但是我的无障碍很稳啊,从来没有关闭过
@iwlei

什么自定义规则都能行,只要有快照,这个选择器引擎能玩出花来,地铁二维码 这种寸寸小 case

这个规则还能实现自动接受微信转账,自动微信抢红包,但是我以前不小心把写的规则删除了,我后续补一下
这个 APP 是我两年前开始磨磨蹭蹭边玩遍写的,核心部分是 那个 GKD 节点高级选择器,是用 kotlin multiplatform 写的

kotlin 可以编译到 js ,这使得网页审查工具也能执行选择器,这个对规则书写效率提高是很大的

界面 UI 使用体验可能不太好,因为我的审美比较辣鸡,请见谅,但是规则执行部分是没问题
比如百度贴吧评论区中间的广告的规则是,我确信 李跳跳 是做不到这种规则的

```txt
{
key: 4,
name: '帖子评论区内部广告卡片',
activityIds: 'com.baidu.tieba.frs.FrsActivity',
rules:
'ImageView < @FrameLayout < LinearLayout < RelativeLayout <n LinearLayout < RelativeLayout + LinearLayout[id=`com.baidu.tieba:id/obfuscated`] TextView[text=`广告`]',
},
```
比如某些可关闭广告的按钮没有 id/text/desc 或者不唯一并且位置也不固定,这时 李跳跳 是无法关闭的

但是 GKD 的选择器能把这个节点周围的节点也作为判断逻辑,类似 CSS 的 A > B

如果了解过 CSS ,那么对这个选择器会有一点熟悉,比如截图示例里的关闭微信广告的规则是

```txt
{
key: 0,
name: '关闭朋友圈广告',
desc: '朋友圈信息流广告,点击关闭按钮,确认关闭',
activityIds: 'com.tencent.mm.plugin.sns.ui.SnsTimeLineUI',
exampleUrls: [
`https://github.com/gkd-kit/subscription/assets/38517192/c9ae4bba-a748-4755-b5e4-c7ad3d489a79`,
],
rules: [
'TextView[text*=`广告`] + TextView[text=`关闭该广告`]',
'ImageView - TextView[text=`广告`][id!=null][index=0]',
],
},
```
@bnoblech

这个和李跳跳不一样,李跳跳是本地规则,GKD 是 订阅规则

最不一样的是 GKD 提供了一个强大的选择器引擎以及对应的快照审查工具能实时连接应用内置的 HTTP Server

https://github.com/gkd-kit/selector

https://github.com/gkd-kit/subscription

https://github.com/gkd-kit/inspect

GKD 的选择器规则能把界面上的无障碍节点串连起来,大大提高了泛用性

网页审查工具能实时测试选择器选中的目标节点,大大提高规则开发效率
2023-09-01 10:12:51 +08:00
回复了 nnegier 创建的主题 Android 请教 Android 任务栈 Intent 指向相关问题?
从 从前台通知中启动了一个 Activity ,如果这个 Activity 不是 MainActivity ,又不想在[系统最近任务界面]显示这个快照

你可以重写 finish() 换成 finishAndRemoveTask() 这样你 finish 这个界面的时候,它不会在 [系统最近任务界面] 上显示
2023-08-29 18:11:05 +08:00
回复了 pnglog 创建的主题 分享创造 [v2ex 定制] 拒绝无效图片,和不会发图片的萌新说 88
也可以用 github 图片,随便找个仓库评论区输入框粘贴图片自动上传并生成 markdown

![image]( https://github.com/lisonge/vite-plugin-monkey/assets/38517192/c2e7fe76-a31c-4fd6-ad51-b7366a3ec804)
2023-08-28 16:06:33 +08:00
回复了 goodidea1 创建的主题 程序员 命令控制台 可选择这种是用什么库实现的?
查看它的 dependencies 可以发现 https://www.npmjs.com/package/inquirer
@FrankHB

null 我觉得还好,不好的点是没有把 null 做到编译期,实际上可 null 就是一个简单的联合类型

如果把 null 像 kotlin/ts/c#/Swift/dart 直接做到编译期,我觉得就没啥问题了

Optional 太长太难用了,还是编译期 null 校验+可选链更好用
@yinzhili 是的,我同意你的说法
kotlin: val jobName = people?.job?.jobName ?: null
js/ts: const jobName = people?.job?.jobName?.[0] ?? null
c#: var jobName = people?.job?.jobName?[0] ?? null
Swift: let value = obj?.nestedObj?.property
dart: var jobName = people?.job?.jobName ?: null

但是肯定有人觉得 Optional 比上面更好用,毕竟祖宗之法不可变
@yinzhili

《别说了》我能说你这是急了吗?我说的是 js 上手成本几乎为 0 导致 npm 是所有编程语言最繁荣的包平台。

你要反驳我最好就拿出我刚刚说的技术的缺点

---

left-pad 属于用户可以直接删除 npm 上的库而无需邮件审核,这属于 npm 的人员审核缺陷

直到现在 npm 上的包仍然可以直接删除,比如哪天尤雨溪就可能脑子就抽了直接把 vue 删除了

我承认这是 npm 的审核缺陷,这确实很垃圾。我认为应该禁止删除一个包或者手动发送邮件审核说明删除原因。

但是这和我上面说 js 上手成本的没关系,你这属于反驳不了就转移话题,那么我同意你接下来的所有回复,你也别和我讨论了
@yinzhili

《你始终把锅甩给开发者,这一点我是不理解的。》难道不是吗? js 本来就快速上手,就 node ./index.js 或 人人都有的浏览器控制台 就能跑起来的事情,特别是有 https://stackblitz.com/ 这种 WebContainer 之后能直接在浏览器运行 nodejs ,那些 ui 库都能在文档里附带运行 demo 了,使得 js 上手难度几乎为 0 ,而且发布代码就是 npm publish 一条命令的事情,试问 java 能做到这些吗?,虽然有的人可能连 esm/cjs/umd 的区别都不知道,更别说 ts/eslint/stylelint/rollup/esbuild/webpack ,但是这不妨碍 npm 是所有编程语言最繁荣的包平台。

《隔三岔五造新轮子替代旧轮子,向下兼容的事情也没人管》 那这种轮子你就不要用,你就当没看见,你就当 js 没有这种轮子,当一个生态的数量越来越多的时候,低质量和高质量的代码库也会越来越多,这种轮子就是典型的低质量轮子,难道 java 就没有这种轮子吗?只是 nodejs 由于上述原因轮子基数大这种轮子比较多
@gtx990

你说的很有道理,而且你举的例子全是人为操作不规范导致的错误,怎么说呢,我不好评价

就比如《 dependency 突然飙了一句 node18 的语法,但是没有语法降级》,这明显属于不规范的破坏性更改

你吐槽的点更多来源于 人为操作的不规范,js 比 java 支持了更多功能的同时也拉低了代码质量的下限

如果想提高整体代码质量,确实要用 java 这类静态语言
@yinzhili

这是库的问题,node-sass 是一个 c++ 项目,它编译的库本来就是和 nodejs 版本的 modules 数量相关的

也就是每个 node-sass 版本都需要面向 node14/16/xx 单独编译才能直接使用

一开始使用它就得了解它的规范,无脑升级借此吐槽兼容性不可取

另外 https://github.com/sass/node-sass/releases node-sass 不是还在支持 node16/18/19/20 吗

另外社区已经转向 dart-sass ,它由 dart 编译到 纯 js ,没有你说的这个问题
@gtx990

《 Java 对于某个库只允许一个版本在我看来是优点。》

npm/pnpm 也可以通过提升铺平全部依赖来 放弃多版本共存,另外 nodejs 的包的依赖是使用范围匹配,只要两个依赖的子依赖范围存在相同,这个子依赖就只存在一份,最理想情况下,每个包都只存在一份,存在多份只是因为它们声明的依赖范围不同而已,难道这时候要违背这个范围规范强迫它们去使用同一个版本吗?

也就是 pnpm 支持多版本/单版本,而 java 只能单版本

ClassNotFoundException 又不是第一次见了
@yinzhili

别,起码我做过的项目升级起来很简单,大多数都是 volta pin node@latest 一下就完了

因为我本身对使用的 npm package 有严格的要求,这东西看人,你觉得就是你对
2023-08-23 10:27:56 +08:00
回复了 gy123 创建的主题 分享创造 为了体验 compose for destop,做了一个 Excel 搜索小工具~
@gy123 好的谢谢
1 ... 15  16  17  18  19  20  21  22  23  24 ... 42  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2420 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 16:03 · PVG 00:03 · LAX 08:03 · JFK 11:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.