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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
说了这么多,其实我很想试着设计一点简单的 Android 应用了(GeekApk 的事情,其实也是需要这一层的,所以不冲突,而且我不是还有四个月后的暑假么,绝望hhhh),不过我最后还想写几句喜欢的古文:

#PL #PLT #Learn #statement #life #backend #Android #GeekApk 🤔

+ 见贤思齐焉,见不贤而内自省也。 — 《论语·里仁》

每次看到各种各样的大佬,总是乐意岔开自己可能在做的机械的工作而愿意跟着大佬的博客更新、知乎专栏、GitHub 等知识渠道努力跟随大佬学习新知识,步入新的知识体系、新的学习方向,就是说『见贤思齐』

现在随着软件工程的发展,越来越多的人开始进入工程界,相比曾经的软件工程,软件数量上可谓是不再有啥危机了,大数字会说一天内,能查出的新恶意软件数目达到 20k 多个
当然,随着软件工程的门槛越来越低,各色格式中国式培训班学院和垃圾三本院校技校的原学员也会加入实际的『工业界』,这么多不同能力程度的人混在同一个社群圈子里,鱼龙混杂、良莠不齐,声音难辨。
也能看到越来越多娱乐人士在各大娱乐网站发表的蜜汁言论和各种垃圾『代码』,垃圾提问了(比如冰封哥吐槽的弱类型比静态强类型『灵活』的言论)
有的东西,不看就好,有的有点价值的设计不当,应该实时记录下来,告诫自己不能也做某种设计,这就是说『见不贤而内自省也』

+ 路漫漫其修远兮,吾将上下而求索 — 《离骚》

无论是电子电路、嵌入式、位运算、操作系统、信号处理、SIMD 并行化处理、计算机图形学算法的知识,还是 Android 开发/Qt 开发/.NET Form/Java AWT/OpenGL、Web 开发、用户界面设计、艺术设计多媒体处理、网络安全、软件架构,抑或上到 LLVM 编译器框架的 Pass、移植,上到程序设计语言的理论和类型系统最新的研究方向、人工智能算法,都不吝惜花时间学习而提升自己
此谓『上下而求索』

即使这些都是『慢热』的领域,即使可能都要看到数百篇文章甚至大几十页的论文,即使可能每个子程序都得自己写才能学得足够扎实,也不放过一丝提升的机会
即使一点『基础知识』都要数百个小时来学习,每次学习都得努力在脑子里模拟所有流程,或者用计算机辅助画图、找资料、写算法计算也不辞辛苦地坚持继续做下去
此谓『路漫漫其修远』

+ 教学半 — 《书·商书·兑命》

因为学习的理论或者实践方法不总是会经常用到的知识,而且为了验证自己所学的扎实性、进一步升华自己对模型和流程的理解记忆,好的学习者会经常通过类型写博文『教』的方式来巩固强化自己的学习效果,他们会遵照着 Internet 『自古以来』的秉性 — 开放、互联、共享,把自己的知识无私地分享给类似自己的学习者,让后来者可以花更少的时间,得到更深刻的知识

教人是学习的一半,只写代码实践而不设计问题教着别人一起分析解决,你就只得到了知识的一半!

+ 纸上得来终觉浅 绝知此事要躬行 — 《冬夜读书示子聿》

即便是『教学半』了,也依然可能有注意不到的地方,计算机科学最大的魅力就是,你写的算法都是可以被计算机执行,快速地给出相对严谨的结果的。
计算机科学上,绝大部分理论最终的归属还是实践,不实际的设计算法解决问题,难以理解问题的精髓。
此谓『纸上得来终觉浅』

对于算法的学习者来说,通过实际执行来学习编写算法,『执行』的重要性再怎么强调也不为过,而且最好是直接在计算机上执行,实际计算机计算环境与理想环境会让你发现算法核心内容与实现时要做的事情,还是有些许差别,甚至对于一些比较数学的东西还得再设计另外一种算法来达到『计算机移植』的目的
此谓 『绝知此事要躬行』

如果只满足于在纸上的草稿和脑中的模拟而不实际编程的话,有时候会脱离现实世界编程的初衷,离实践越来越远

比如,编译原理里,一个比较常见的问题 — 局部作用域,有时候一些书上教的不是很好,不会很全或者有些没说清的地方(有的书不是专门讲这些的),或者可能不适合实现时的实际情况(比如,希望编译成一种虚拟机的字节码再解释执行),而实际自己写一个支持局部作用域的解释器,才能把诸如 dynamic scoping 的 binding 理论学扎实,还有可能悟出 static scoping 的实现方法

+ 臣之所好者道也,进乎技矣。始臣之解牛之时,所见无非牛者。
三年之后,未尝见全牛也。方今之时,臣以神遇而不以目视,官知止而神欲行。
依乎天理,批大郤,导大窾,因其固然 — 《庖丁解牛》

计算机科学之所以科学的地方,在于用 nontrivial 的眼光看计算机本身,以及它们可以解决的问题,还有实际实践中出现问题的模式和本质

学 Java,开始的时候,大家可能都菜到只会『写』代码,甚至看不透一个简单变量声明的模式,只是知道这个东西『复制粘贴』,修改一下『它的名字』就好了(其实一些人开始的时候还惨一些,不会『写』代码,只能改代码甚至只会看代码,更有甚者连模式识别都做不到,看不懂空格分开的几个单词...)

只是知道那些东西是那么写的,可能一些会写英文句子的人,都会编程吧。

但是后来,有些人开始能看到这些语法结构后面的类们的继承之树,看到继承和重写的本质、看到 OOP 的多态体现、看到字类型系统
虽然他们开始不知道有这些这么多装逼(虽然也没怎么装逼)的名字,但是他们会用!
他们会开始在实际工程中学着把自己的业务(对象)逻辑抽象成类型和静态方法,甚至做成可重用的组件
然后这群人就成了架构师 🤔

另外一些人可能开始试着总结自己看到的模式, if (Exp) Statementwhile (Exp) Statement...
他们也可能会注意到一些小的语法差异细节,注意到『变量』的作用域区分,注意到变量声明还可以加上各种被总结成『flag』(modifier) 的东西(final, public, volatile...)
后来这群人可能就成了编译器工程师 🤔

我只是举个例子,当然不可能这么简单的,除非是天才。 😵

所以呢,技术的提升很多时候应该伴随着视角的提升。
当 John 开始超离『变量要先定义再使用』的魔障,了解空类型安全和类型系统,开始看到 JVM 的全貌之时,他的世界就开始向2宽广化发展了。
https://doc.rust-lang.org/nomicon/subtyping.html#variance #PLT Rust 里讨论的问题不限于 Generics 的 Variance,问题复杂一些,喜欢了解细节的不容错过(

不过我目前懒得看这一节... 🙊
#Csharp #dotnet #microsoft
https://github.com/dotnet/standard/blob/master/docs/versions.md

.NET Core 会支持,Framework 不支持(补充)
2 .NET Framework will not support .NET Standard 2.1 or any other later version. For more details, see this blog post.
🤔现在提 Fx 一般与 Core 毫无关联
duangsuse::Echo
🤔现在提 Fx 一般与 Core 毫无关联
emmmm
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
duangsuse::Echo
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
以后写 Android 应用或者不管什么应用都得先打草稿才是 🤔

(之前 Qt 应用 RandomSelection 模块化做的不当主要是因为我没经验,居然把一些本来应该放 C++ 对象里的东西弄成了全局变量或者放错位置了,没有好好利用 Qt 的信号插槽机制来解耦合)

其实这些前端依赖草稿主要还是功能比较多容易混,Android API 又多、杂,和 XML 混着不好弄
而类似 Spectrum 这种东西也就是写着写着慢慢改就可以了,本身算法上居多,不像 Android 可能是类定义和 API 使用居多,可维护性依赖代码结构
duangsuse::Echo
顺手学习了,不过我觉得好像除了 ArrayAdapter 这种系统 List Adapter 之外好像不需要别的手写 Adapter 手写 ViewHolder.... 🤔 也能发现点套路,还是经验成自然... 目前这个项目 DBase64 有一半的代码(包括所有项目结构 Gradle)是我 VSCode 手写的,基本是尽可能背出来,我想重写了,因为发现没有打草稿不知道都该怎么抽象怎么分工...
🤔 隔壁 CN Android Dev 也就十来个大佬,活跃的也就四五个,不少伸手党 emmm...
有些有点价值的问题也没人回答,回答的也多是入门级别的问题,我甚至看到有个人在 Java class constructor 里写 return...(肯定是不行的啊,假设 Javac 允许了,子类调用父类架构器时 invokespecial 也不需要往栈上放返回值的)

为了给大家明细一下,总结一下我看到的几个话题:

+ musicinfo类(设备媒体文件列表)
+ RecycleView 和 ViewHolder
(你的 musicInfo 肯定不能 setText 啊)(是的,好像没有看 ViewHolder 应该是怎么实践的,不应该 create ViewHolder 的逻辑里放这种 setup 它自己的东西...)
(而且提问者貌似还把 holder.textView.setText(...) 写成了 holder.setText(...)
+ MenuInflater 是增加菜单不是设置菜单(遇到复用就悲剧了)(先 clear 掉)
+ 无限循环的viewpager(好像是设置了set current是true)
+ 有好用的富文本解析器吗,github上几个库,都解析不了字号和对齐(解析富文本还是webview靠谱啊)
+ rxjava里面所说的不完整定义的回调是个什么意思呀(就是必须都要重写) (subscribe 方法有三个重载可用,不需要重写 next, error, complete 所有三种情况,Rx 可以理解为增强版 Promise,用于提供标准化 Streaming API)
+ Android 8.0 上的 Channel 音频如何随时更换呢?(用户的设置会被清除)(其他就没什么影响了,不过用户会看到删除的总量)
+ (android.support.)design 没有 -v7(Gradle implementation 依赖 coordinate 配置错误)(话说旧版本 Gradle 的所谓 compile 依赖真的是扯淡,明明不止是作为 api 使用的却说只是『编译期』依赖)
+ (ADB) shizuku manager 可以做到 getevent sendevent 吗
(直接读 /dev/input/event* 就不会有 buffer)
(但是协议在不同设备上有差异)
(为什么我把/dev/input/event*权限设为666,Java读还是permission denied)
(runtime.exce的stdout默认有4k的buffer)(Output那方才可以flush,我现在拿到是inputstream)(我现在暂时用-c 2每次执行读两条事件)
+ org.gradle.jvmargs 你们设置了多少
+ 最近在后台收到了一些关于 Android 8.1 设备上出现的 did not then call Service.startForeground()
+ 在手机上可以通过NFC写入任意自定义的数据吗(您或会需要日 ISO7816)
+ android 自动化UI测试,大家都在用哪个框架呢 ?
+ 推荐图片选择器(Action_pick)
+ 话说,有什么好的方案能监听自身卸载呢?有 Root。
话说在 Android 上可不可能跑类似 xorg-server 这样的 X11 Server?(Termux上有个魔改的)(XServer XSDL)(旧版本的Android可以stop后使用fbdev)(很久之后)
+ 如何理解开源代码里难以理解的部分,尤其是作者的自定义函数的几个传参?
+ Qucik Setting Tile 调起 App
直接退出 App 或者用多任务切到后台 很快就开起来了,但是如果是 Home 退到后台,就需要4、5秒才能启起来,调完startActivity 和页面onRestart 差很长时间 = =
+ GridLayout , columnWeight是 1:3,怎么占用的空间不是1:3呢?(其实已经占用了,只不过图片没有显示完全。可以给图片加上 android:scaleType="fitXY" 属性试试。)(还是用 GridLayout 设置 row/column(1/3) 吧)
+ android指纹签名问题(微信:如何利用SOTER,1个版本内完成指纹支付开发)
+ GridLayout的orientation是什么意思(好像意思是,动态布局的时候,按行添加或者按列添加)(你可以写下相关代码试试)
+ 请问有没有前辈在 jni 里用过 curl…
想要编译好的 curl…😂
请问 jni 引入第三方静态库的时候 cmake 一般怎么写呢... 比如 abiFilters 里面有两个的话...怎么才能让它自动链接指定 abi 的 lib 呢?
(${ANDROID_ABI})
+ 有没有什么工具方便编辑 vector drawable xml?
我是想修改一个现成的 vector drawable xml
(github.com/neworld/vd2svg)
+ 问一个强迫症问题,如何去除一个方法里由@Nullable导致的警告,方法里有句代码调用返回值注解了@Nullable,但可以100%确定不会是null,写判断毫无意义,只想去掉警告。
@SuppressWarnings("null")无效果
(试试 @SuppressWarnings("ConstantConditions"))
+ bind两个service,只有第一个service的onServiceConnection打印了,但是两个service的onBind都有打印,为什么
+ 需要让另外一个app打开我的app,需要在我的app里面改什么代码吗?
+ EditText中输入的文字为什么和底线的距离这么大呢?
+ ```java 你们代码是怎么打出来的(markdown)
+ 现在有必要学litepal吗?感觉音乐播放器中音乐工具类扫描本地音乐还是需要写很多数据库cursor和getColumnIndex方法啊
一个音乐类就是musicbean,那litepal还有什么用?
(那个扫描不是用的content provider吗)(litepal是把数据存到数据库的)(Room也不错呀)
+ bind两个Service,只有第一个onServiceConnection回调,但是两个onBInd方法都走了
能拿到UploadService的IBinder,但是拿不到DownloadService的IBinder
+ recyclerview adapter里面findviewbyid爆红怎么办(不要在 onCreateViewHolder 里做这些事情。。。)(不良实践)
+ listview嵌套scrollview底部空白遇到过没
+ 按照网络上搜到的文章复制了一份 toolchain, 请问怎么在 build.gradle 文件中指定呢?(ndk.dir)
(我试试 感谢 我刚才闹不清楚流程 在 ndk 的那个 .cmake 里面不停 message 想看看输出想定位到😂
(另外,如果你复制一份 NDK 的话,你可以在这个 NDK 里添加一个选项表示这是个特殊的 NDK 。这样就能在 Android.mk 或者 CMakeLists 里判断是不是 OLLVM NDK ,从而决定要不要在 CFLAGS 里加上 OLLVM 的那些选项。)
+ 群里有大佬用过Bmob来开发吗?上传和读取一个对象的不同类型的数据要怎么做,,
+ 问一下各位,AppProcess 内可以访问 Provider 吧
+ 请问一般怎么在 CMakeLists.txt 里写来配置 strip ...(Link flag -s)
duangsuse::Echo
(其实在 Android 开发里我所谓的『入门级别的问题』主要还是说理解的难度是入门... 本身在这个领域其实也算是实践会处理的问题)
记得我以前用 Androlua+ (那个社群做的文档很多很不错,好查)的时候连 ListAdapter 都不知道是肝什么的,就是抄着别人的 Lua Java access 代码改,看到 ViewHolder、Fragment 瞬间觉得无法理解... Activity 类有几个可覆写的事件方法我都不清楚(

现在看到 Service IBinder 什么的因为没见过代码还是觉得大佬 hhhh 🤔
可真的是大佬呢,还是不明觉厉呢?
其实我虽然没有看过专门 Android 开发的书,但书上也会有提及,我也能总结出一点 Android 开发相关的名词列表了

这种前端的工作... 还是看信息搜索的能力吧?
Forwarded from 羽毛的小白板
羽毛的小白板
https://mp.weixin.qq.com/s/a8LeIvXipokCXddUPm_3FQ #奇文共赏
duangsuse 看完之后的评价: 👎

真 TMD 傻逼。(实锤)

先上这些

title: APP还在用域名连接后端?用IP提速N倍!
author: 58沈剑 架构师之路 (会做这种 overdesign 的果不其然是某些大厂子的『架构师』呵呵)
abstract: 无线时代,网络稳定性差,应用流量敏感,APP与Server之间每次HTTP请求都需要进行DNS解析,有没有可能直接使用IP来提速呢?
keywords: HTTP, Nginx, 负载均衡, DNS, 水平扩展, 反向代理, Tomcat, IP提速, DNS劫持, 网络慢, 移动时代App, 高可用, ip-list, ip-list自动更新

那么他就是想把一大堆『除了 Host 外都一样的请求』分布到『不同的服务器』上
又有什么不对的呢? 🤔

他的观点:
+ 无线时代,网络稳定性差,应用流量敏感
+ APP与Server之间每次HTTP请求都需要进行DNS解析
+ 在上面的情况下,直接使用 IP 地址而不是间接查表访问可以提速
+ 负载均衡用 Nginx 或者客户端自行完成,而 Nginx 的外网地址需要 DNS 解析拿到,Nginx 自己还得再转发一道
+ 一旦DNS被劫持,整个APP就挂了,并且,网络慢,DNS解析的时间都不能忽略
+ APP能够把Web-server的ip-list内置吗?不行(绝望)
+ 画外音,是的,是画外音,有些『架构师』不会写洋文,这位是连中文都 TMD 不会写
+ 不要将ip-list内置在APP里,而是通过HTPP请求来拉取,然后客户端每次随机请求 List 里的 Node Host,使用 iplist 版本号或者客户端版本号更新,又可以水平扩展(在相同客户端版本间添加新节点),一箭双雕(大嘘)

+ Visitor Pattern 双向扩展问题的解决方案叫 『Object Algebra』,这个问题的『动态水平扩展』解决方案的名字叫『IP直通车』

思路比结论更重要。
所以我啥都不想说了,你们有眼睛,自己看吧。

我最讨厌名词一大堆,却没有啥理解难度的东西,因为很多人会在讨论这种 trivial 的问题时,利用各种专门的技术名词,甚至是自己造的,尝试让部分人不明觉厉。
而真正的技术是苦干实干的 — 一个复杂却的确应当的模型才是真正有乐趣的地方

有种写这种教导人们做 overdesign 的文章,为什么不去看看隔壁写算法的怎么做离散化,怎么做真正(还有点点提升)的『优化』呢?

(其实上面的话也有点过激,就他们这个情况多服务器负载均衡来说这么做不为错,错就错在把这当成一种『架构优化』拿来吹,甚至毫无根据地把性能瓶颈怪到 DNS 系统的头上)
(不过我很好奇的是,这么多服务器用一个数据库集群么... 不会把一些数据分开 Data Center 来处理再按照 BASE 原则互相同步之类的)
(Telegram 发布错误老丢失文字... 上面那段我写了三次)
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from Harry Ying
XCH.C
11.9 KB
这个是某 v2ex 帖子提到的化学等式配平算法的一种简单算法实现,由原贴主两年前编写(他自己目前对这个程序的评价极低)
不过,如果有时间的话,我会重写,尽可能吧,现在实践能力太菜了,而且总是觉得理论不能完全用于实践就不舒服(比如 C 语言的变量 modifiers 不检查一遍能填的是否填完了就觉得很不爽)。

此外,还必须提到『原来』的 BCE 算法: https://github.com/bce-toolkit/historical-bce-c-6.x/tree/master/libbce

他用 Rust 也有一个重写版本,在贴主的频道 @lex_channel 上是有的,感兴趣可以查看
作者的个人博客在 https://lexuge.github.io/, 我上面也有提到

#Math (因为我这里几乎不谈化学) #CS #Algorithm #recommended #project #C #Cplusplus