duangsuse::Echo
583 subscribers
4.12K photos
118 videos
579 files
6.13K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
#math #web 看来想完成EqvJS的设计,还要简化自己之前的许多作品里的技术 (图: easing 曲线, Svelte ease-out 代表先快后慢 #apple #tool Epic Easing - easings.net - animejs.com #dalao https://lisyarus.github.io/blog/programming/2023/02/21/exponential-smoothing.html#:~:text=speeds%20up%20naturall…
This media is not supported in your browser
VIEW IN TELEGRAM
看到个有意思的, #android 夜间切换特效
>GLSL https://www.shadertoy.com/view/4sBfRd
#define circ distance(P,iMouse.xy)
#define swing(x) cos(.5*(1.-x)*radians(180.))
//混成AB两版的main, 对B版用圆选区, transition: --len_vw 4s ease-out
void mainImage(out vec4 bg, vec2 P) {
_mainImage(bg,P);
bg=(circ< swing(iTime/4.)*iResolution.x? bg:1.-bg);
}
背景也可以是波浪。忘记 sine scroller 的关键词了 🥰

用HTML-SVG 做的话,在clone出的 #app.dark 上剪裁 clip-path:circle(var) 很方便,但如果想用更灵活的mask:radial-gradient(var) 就只能靠自定义filter了
但无论如何 都比canvas或paint的方法好移植且快

Android上,深色主题如果是靠bg/fgcolor 切换,除了 transition: 不是一等公民,需要自己填Animator

还有复杂的自定义“复用”Recycler.View失效问题 🥰clusterize.js.org 呢?往table调一个函数就能优化,安卓那种复杂度,对它够支持瀑布流了

可能,还需要手动setAttrValue 什么的

H5里做排版的XML,安卓做style
H5里做交互的JS,安卓做排版.. Compose 等于是简化下HTML的语法,却硬是让View框架被“重新定义”了
H5里自带的Web平台API,安卓靠Gradle.. 依赖地狱什么的这不就来了?
#dev #android 面试题 🤔
- 技术上提升最大的一个项目,展开介绍
对比业界同种算法流行和不流行实现、重写自己的任何项目,都比从事GPT都能完成的原型要好
- 为什么选择 Flutter,在业务方面学到了什么
Compose界原神的名气真的太大了,居然能用Navbar,Tab等自带组件,居然能调style!

- Java 里重载和重写的区别
在编译期vs运行期确定函数,改方法签名vs改子类值
- 什么是线程安全
避免共享变量(不相交),或使用Atomic/独占锁 避免读写异步
- Service 是什么
是Android版的主要线程,与daemon线程相反,适合后台Worker
- Fragment 和 Activity 有哪些区别
不刷新重载vs带参单页(Intent)

- Retrofit 用到了哪些设计模式
都是nodejs事件队列,ES6默认参数,函数名Proxy,组合函数(适配 装饰 策略) 之类的东西
- UDP 和 TCP 有什么区别
TCP和stdio文件没区别,UDP允许丢包和无连接发送
- 算法题,输入两个包含数字的 String,求它们的和,要求可进行任意长操作(不能直接变成基本类型算)
BigInt,即从右遍历相加,记录>10到carry=1 进位。遍历int[]也一样

- 为什么选择 Flutter,引导你选型的逻辑或者核心原因是什么
流行是唯一的原因
- Looper 为什么不会卡死?我们往深层次一点说,天马行空一点,你能想到什么办法让一个死循环不会卡死?
for绘制进度条,两层for+SIGINT,for调度函数队列-这样死递归还不会栈爆呢
- 如果网络碰到延迟会如何解决
做一个加速条,利用安慰剂效应;也可以Cache-Control或Protobuf压缩
duangsuse::Echo
#dev #android 面试题 🤔 - 技术上提升最大的一个项目,展开介绍 对比业界同种算法流行和不流行实现、重写自己的任何项目,都比从事GPT都能完成的原型要好 - 为什么选择 Flutter,在业务方面学到了什么 Compose界原神的名气真的太大了,居然能用Navbar,Tab等自带组件,居然能调style! - Java 里重载和重写的区别 在编译期vs运行期确定函数,改方法签名vs改子类值 - 什么是线程安全 避免共享变量(不相交),或使用Atomic/独占锁 避免读写异步 - Service…
#dev #android #backend 面试题 🤔
- OSI 七层是哪七层
物理,数据链路: WiFi,BLE,eth,rndis驱动
网络传输: IP4,6 , iptables, socket(TCP) UDP
会话表示 Header cookie,json
App 众多Web3.0论坛,.

- HTTP 在哪一层?有些什么内容?
在L5~L6,负责请求响应和MIME类型,暴露为 调用+回调 +Header环境变量
除了会话,HTTP也能做文件传输和填表

- GET 和 POST 核心差异是什么?
body是否为form等私密数据

- HTTP 状态码有哪些?
{2,3,4,5}xx 各指代: 正常 重定向 请求出错 服务出错

- Java 的基本类型有哪些?拆包解包了解过吗?
值类型8种:BSCIJFDZ, byte8 short,char16 默认int32 long64 f32 默认double64 bool
值在放入List,. 前被装箱为Integer,.
Str不能修改,但相等比较也需要用java.lang. 函数 ,称为引用类型

jadx 可用于反编译,但如果是aapt+dx 会默认混淆函数名的

- Java 的访问修饰符有哪些?类级的 final 作用是什么?
可见性 private protected public 默认internal=包私有
确定性 final abstract default

final class或成员不含(函数)变量,等价于struct,因此不应该生成可供覆写的get/setter

- Java 的基本类是什么?有哪些方法?equals 和 == 有什么区别?重载重写是什么?
所有类型的Base class 是Object{eq,hash,toStr ,wait,notify同步锁 }
== 只比较GC对象的引用,而 (1.equals) 需要先valueOf装箱

重载=编译期0开销查找fun invoke()的重写,静态类型的专利

- Java 的常用类型有哪些?immutable 和 mutable 的 list 差异是什么?LinkedList 和 ArrayList 的差异是什么?
java.util.可变性 是从Kotlin抄的,弱类型assert
一般,只在嵌入式设备用易于增长的链表

- HashMap 了解哪些?规避哈希碰撞的方式有哪些?
类似RegExp 地狱回溯,long hashCode() 作为分组key的相同,也会给DDoS可乘之机
因此,对于用户输入的field,可以将其忽略,只用str,int作为Key

C系语言一般用 BTree,AVL 二分法实现KV查找。 如果是要问带锁的/fastutil的 Map实现,或者getOrPut 等惯用法……

- 项目里用到了 Xposed,它的原理是什么?
作为Xp插件的apk们会被 app_process 随 XposedBridge.jar framework.jar加载
在活动前loadPkg时,利用变量或函数名(转为native),修改其JNI代码指针,使调用前先查找覆盖表

- 了解过哪些设计模式?他们分别是什么?
Adapter,Delegate,Proxy,Observer/ 类型转换或AOP覆写
Factory,Visitor,Chain/跨平台的new()方法, 判断"type"的方法, 事件冒泡

被新语言淘汰的:😅👎
Singleton,Builder-Prototype,Command/ 模拟字典、复制数据、枚举操作
Strategy,Bridge,Facade / 函数字典和import式模块

- 单例模式的实现有哪些?可以手撕一个吗?
JVM上的static 已经支持了RAII。也可以用DCL懒加载
@JVM_volatile var cache
get()=run{ //保证单次执行
if(null==cache) sync(this){ if(null==cache) cache=init()}
return cache
}
#security #life 为什么说党国,更多是社会风气的结果 😢

回顾之前反转的 #android rm-rf 刷机远控事件, 底层互害的色调在 #china ,从革地主的命、不劳而获开始已奠好基

理想:前人栽树 后人乘凉
中国:前脚过桥 后脚拆桥 一手屯饭 二手砸锅

#tw 77,博恩: 有名有钱的人容易说错话,生气的旁观者容易一竿子打死理智的质疑,但请给大家改正的机会

「就算真的是沽名釣譽,社會仍然可以變好
如果可以有更多人跟隨這種行為
我還是會真心稱讚這種影片很棒
人生在世,有時何嘗不是為了一句:你做得很棒,有你真好!」
👎1
Forwarded from 层叠 - The Cascading
新加坡用户的 Android 设备将阻止用户 sideload 不安全软件,除非用户完全禁用 Google Play Protect。

- Google 正在新加坡进行试点:Android 将在检测到用户下载或 sideload 的应用不安全时拦截并通知用户。
- 此功能由新加坡网络安全局 (Cyber Security Agency, CSA) 开发。
- 与一般情况下用户可以点击跳过不同,除非完全禁用 Google Play Protect 功能,用户将无法临时运行安装可疑 App。

straitstimes.com/~

#Singapore #Security #Google #Android
duangsuse::Echo
#好物 #life 乞丐价USB投影仪📱🎥 可以配合蓝牙键鼠(22包邮)把手机当Chromebook用 首先是我已购的安卓 康佳C1(500, 清仓价99不包邮👍),实际亮度约150流明,支持电动对焦和四点梯形校正,仅有1USB,TF口和遥控器,面包机大小 有风扇音。在白天使用最高需1200流明 特别推荐360度云台 水杯大小的 hy300pro(211包邮) 同样720p亮度160,但配置1G+8G 支持蓝牙WIFI 各种接口齐全, Android TV 11 HY300(186包邮👍, 便宜于PL…
#linux #android TV 均可自行安装 KODI.tv 媒体中心和 MX Player
准备:
usb鼠标
安装包 https://mxtechs.net/
https://mirrors.kodi.tv/releases/android/arm/
https://f-droid.org/packages/org.kde.kdeconnect_tp/
https://wwi.lanzoub.com/iue6D1123o1i

首先用蓝牙发kdeconnect,同局域网用鼠标操作配对,可作为输入法使用
发送SSR安装包,从剪贴板导入梯子。若连不上要把主机名换成 nslookup.io 的IP再导入

打开Settings/ Interface / Skin / Fonts 设置为 Arial based,然后kodi主页搜索chi语言包启用

在kodi的搜索页安装yt插件,在TV页安装IPTV并配置链接为 https://iptv-org.github.io/iptv/index.m3u 即可收听CGTN
收听敌台时,先在插件页打开SSR

另外,DLNA、AirPlay、Miracast 里前两种有支持,需在设置-服务页打开,不过B站支持同步播放列表和投屏
https://blog.csdn.net/qq_20466211/article/details/121301053
duangsuse::Echo
duangsuse: 草,虽然技术不怎么但例子还是值得一看 正好在外地就买来读 很久没读过纸质书,视力下降很大 https://www.bennyhuo.com/book/kotlin-coroutines/ 协程那本我就懒得买了,再说一个把yield 外提为语句,变成 let then=回调=()=>switch{} 里的编号这样简单的堆栈互换特性 也不值得学习 问题都是应用层们乱搞api,唉 在一些比较负责的sdk里,例如Lua和Duktape js,Thread是完全不需要await asyn…
🤓🖕 咳特灵元神书到货了
自古以来不会拒绝元!编程

Jun: #android
还是compose写的舒服,看到rv的繁琐adapter会感到生理不适了

Perol:
rv算是命令式的场景下封装的比较好的了

以至于listview都没人用了,面试也不考了

见过那种在recycleview上封一层,让开发者用dsl的方式再写业务逻辑的,但是终究是拿实例去set的方式, compose好几个版本的lazycolumn性能都比不上rv,现在不知道啥情况了

duangsuse:
幽默安卓,还是跟随js的进步
listview也不会有性能问题,React每次渲染重新new整个树也不见得比微信卡啊
Rachel: #android #css #web
写过复杂 UI 的人肯定知道要在复杂业务场景里把动画优化到 60 帧有多难

duangsuse:
为什么 shadertoy.comgl-transitions.com 用几行代码就能做到呢? 为什么@3b1b 一个人用py就能实现呢

还不是框架做得烂 https://tttttt.me/dsuse/19124

同意,类型系统不就是对字面和编译期键值的Matcher嘛, 占篇幅纯属过度设计

要是我,直接把 def(a:str) 写成 def(a~"")

现在ui还不是有用gl加速,结果到头来连满挣都做不到,一大堆空洞的class写得还不如numpy的那些公式

如果专业是指「我们必须保留所有历史错误」,我宁可保持饥饿、保持愚蠢

至少,对用字面量取代类型标注上是这样。 泛型也一样啊,写成 a=set() assert{a.add("")} 而非Set[Str]

我有一整个系统来替代现在的OOP和静态类型/编译期计算理论。

你不觉得typescript的类型标注是过度工程吗?作为把sql row 填到forif模板里的一些业务。
他们有这样依赖补齐、检查,完全是因为API的风格太含糊

动态类型只是在运行时能进行修改和(同名符号的)链接,方便元编程。 例如 for: class: 这种结构就是无效的

致胜优点是免编译(交互式编程/所见即所得)、隐式类型!
还有,在生态上,没有被缺乏语意的设计模式(例如序列化和依赖注入 aka with强类型KV:)所绑架

在子类型多态上,未必比得过静态OOP
难以拆箱(栈上分配)本该是一种可以被类型推导消除的副作用

我看到的是有初学者用 Cursor 写出类似字幕搜索的高层应用

编程的工程化,作为限制生产力的繁文缛节,如果只是 make computer happy,理应从人应该学习的部分去掉

例如,javac 用那一套class{}语法定义一个编译期字典,我们应该是做IDE插件去生成样板代码吗??
多少技巧模式是从语言缺陷来的?
狸::
说着要开发效率,用着到处加字段,SQL两百行,不合理拆分接口全部Object返

duangsuse:
还有全部POST :)

这样,其实你完全可以用WebSocket收发json吧

不是动不动脑子,这种业务组件根本不该让人写

白用了个http,就是当做饼干罐和 /git/push?url= 那样的子命令微服务吧🥰

直接跟py那样 import fire ,什么http服务器哎,封装为函数路径和调用算了。

就像以前还写什么argparse,哈,完全是样板代码
#android #linux #security 幽默 utf8_casefold 大小写合并算法冲突 🤣 unicode迫真一致化
所以还是用 bytes 算了吧,大小写整什么花活, 幼稚程度堪比log4j或者在shellUI加广告的win10
FUSE 和 kernel GKI 的实现不一样,导致 /Android /.. 既不在访问黑名单里,syscall也解析到原地址

> 从此,指向存储空间的路径,例如 /storage/emulated/0/Android/data,由于 emulated 是 fuse,其底层是 /data/media,所以从 0 开始 (包括),可以在任意位置插入默认可忽略代码点,内核自动删除它们。

如果用户空间在比较路径时没有执行与内核相同的步骤,会引入安全问题,导致本应拒绝访问的路径被绕过。需要重点检查FileProvider逻辑,如果它对外提供对共享存储空间文件的访问权限,私有存储不受影响。
https://www.fxzhihu.com/question/652185870/answer/3458513818

#android 的失败给了「崇文」崇尚八股文的人一个教训: 没有 User Experience 的代码内卷是很蠢的投入,一旦垄断被打破,我们无处可去
认为 #dev 「领域护城河」和医学生一样的想法,是不切实际的。 医学生对照的是 #cs 拉丁文或IT架构师, 开发者就是纯粹的实干网红,应该对自己的产品负责

只有像PyJS这样有缺陷的直白,才有被开发的潜力, 在App的功能点上到处设卡、贩卖焦虑和私货的 android API 没有资格。
#dontknow #android #sysadmin

在信号不好、网速慢时,如何关闭5G😋

- 开发者模式:频繁点击 设置/我的设备/OS版本
- 搜索 「选择菜单」/menu ,选择sim卡图标项,启用
- 在双卡设置页点击手机号右箭头,网络类型,选择LTE

ps. 5G的好处是网速快、不滞后、容积率高,缺点是覆盖小、成本极高、用的人很挤、缺乏配套应用。
Forwarded from Solidot
Google 推出 Debian Linux Terminal App For Android

2025-03-10 11:57 by 蓝莓村

Google 在 Android 平台推出了 Debian Linux 终端 App,这是它致力于将 Android 变成多用途桌面操作系统的努力的一部分。Debian Linux 终端 App 目前只支持运行 Android 15 的 Pixel 设备,未来会在下一代的 Android 16 版本中提供给所有高性能 Android 设备。对于 Pixel 设备,要使用终端 App 需要首先启用开发者模式(设置 → 关于本机 → 连续点击 Build 号七次),然后进入设置 → 系统→ 开发者选项 → Linux 开发环境。设备的应用抽屉内将会出现终端 App,第一次使用需要下载 500MB 左右的 Debian 系统。终端 App 的设置允许用户调整磁盘空间、设置网络的端口控制以及恢复虚拟机的存储分区等等。

Androidpolice:Android's native Linux Terminal app is live in Google's latest update

#Android
Forwarded from Solidot
Google 开发 Android 桌面模式

2025-05-15 00:05 by 火星棋士

三星 Galaxy 智能手机的一大特色是 DeX,模拟桌面 UI 的软件功能。当用户将三星手机连接外接显示器时,DeX 会呈现类似桌面的界面,支持键盘和鼠标控制。Google 正在开发自己的 DeX。该功能目前还在开发中,预计不会包含在今年晚些时候发布的 Android 16 正式版本,也许明年发布 Android 17 前该功能可能会做好准备。

www.androidauthority.com/android-desktop-mode-leak-3550321/

#Android
Forwarded from Solidot
Android 应用面临越来越多的不兼容问题

2025-06-08 19:31 by 好兆头

Google Play Store 中的应用数减少了 47%,一大原因可能就是不兼容导致大量应用下架。而不兼容的问题与 Google 本身紧密关联。Android 应用开发者抱怨维护 Android 应用所面临越来越大的挑战。举例来说,用 Java 开发的项目如果依赖了用 Kotlin 开发的库会遇到兼容性问题,除非项目用 Kotlin 重写;开源媒体播放器库 ExoPlayer 的 V1 与 V2 不兼容,ExoPlayer 正被不兼容的 media3 所取代;Google Ads library v24 停止支持 Android API 21,而 API 21 仍然有 400 万用户;Material 3 取代了 Material 2,但 Google 没有提供清晰的
迁移指南;Android API 版本号与 Android 版本不一致,开发者文档也经常会将两者混淆在一起;重要的第三方开源库被弃用或不再维护;Google 经常会做出破坏兼容性的决策。

ashishb.net/programming/maintaining-android-app/
news.ycombinator.com/item?id=44214835

#Android