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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
有的时候不是它不想帮你封装啊……
首先,事务管理本身就是业务逻辑的一部分,虽然不明显,就好象你觉得 File 要不要 close() 对程序工作无关(更贴切的就是 Timer 得保存引用的问题),可是它就的确有点关系一样(比如,很多时候一个存在锁的 file 不能被同时『打开』很多次,所以不 close 会爆炸)
操作系统是没办法把这个生命周期细化的,JVM 的内存管理也只能管个大概,所以必要的时候程序员就得负责定义这些看起来没用的东西

如果不喜欢的话,那也没办法啊,你可以想象有这么一个库能够把使用自己某个 Transitional CRUD 接口的所有函数都按函数封成事务,可事实是现在很多人连 Java 的 Annotation Processor 都不会写(甚至包括我)
(当然,我相信连 abstract syntax tree 之类的简单递归数据结构都不会处理的人不止我一个)
做不到啊,要不就不写 transaction 算了 😂

也比 Java 之前没 lambda 的时候写什么 new Transaction(db) { @Override void perform...} 强很多啊…… 至少你还能用 Kotlin 的块 db.transaction {...}, 多态起来也更方便了,Java 里要想 db::transaction 返回一个值 R 你还得用局部变量什么的,而且 Java 里面还不行,因为它要求 effective final... 只能弄得像 Android 现在一样,那个封装…… 返回值都不能自动推导

interface ServiceProducer { fun produce(): Service }
interface XXXProducer<out T> { fun produce(): T }

Kotlin 看起来简单,Java 把 Service, T 什么的写很多遍、起一大堆 trivial(泛泛) 的名字。还是多范式编程好,详略适中。
Forwarded from dnaugsuz
Kotlin 这个真是醉人,.kt:45 ???
Forwarded from dnaugsuz
严正怀疑是 Kotlin 语言定义有 bug,为什么我不加括号你说没有 companion object 加上你说找不到这个类 (欸第一张图好像发错了…… 😂
Forwarded from dnaugsuz
严重同意
有时候我 IDEA 提示 could be [private]... 我就会忍不住想把本来打算 public 的接口加个 private……

当然我很少写不能够静态类型安全的代码,不过偶尔写到时也会负责地检查我到底为什么要 unchecked,然后负责地 supress 掉 warning

最开始我编程的时候很讨厌 IDEA 的 could be weaker visiblity 提示,后来才慢慢发现其实 IDEA 也蛮对的…… 现在我写的 public 是适度情况了,入门的时候我有这些想法:

+ 『private 不让我调用这个方法/静态方法,所以它很坏,我不能随便使用我弄出来的方法了,为了保证可组合性必须全部 public』
+ 『protected 是什么? finally 和 catch 有什么区别?』
+ 『必须添加 @Override,不然就不正确』
+ 『某 IDE 能够自动生成 new Button.OnClickListener() {@Override...} 什么的真是太高效了』
这就是我弄了一个下午写的测试……
#China #Low #Android #security Good 👍 牛批!
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta ⠀)
真的很难防
#Project 好耶!准备正式在开放源代码的情况下继续开发!
鸡你真漂亮!第一次发现错误都这么漂亮!
duangsuse::Echo
鸡你真漂亮!第一次发现错误都这么漂亮!
tries() { local mt=$1 cmd=$2
local omt=$mt
declare -i mt omt
while [ $mt!=0 ]; do
eval $cmd; if [ $?!=0 ]; then
mt=$mt-1
printf "Command \`${cmd}\` failed, retrying of (${omt-mt}/${omt})" >&2
else break;
fi
done
}
看来 Bash 还真不适合用来写代码
我感觉我的编程能力(虽然也不咋地,因为智商摆在那里就那样,比如上面的代码我会考虑两种控制流选择方式可是却不能成功)
现在一般可以看系统情况,用一下 Perl 之类其他的语言来写脚本。
duangsuse::Echo
现在一般可以看系统情况,用一下 Perl 之类其他的语言来写脚本。
Perl 也困难,我看冰封哥写过,很富有技巧性,连简单的 Regex match 都弄了一大堆二元操作,还到处 implicit 变量 (man perlintro)

use strict;
my $str = "Hello World";
if ($str =~ m/^(.*) World$/) { print $1 . "\n"; }

最重要的是我讨厌类似 Python 的语言,虽然我觉得 Perl 官方实现的错误提示很人性化,一点没学术死板板硬邦邦的做派,而且设计的某些点还比较重视『符合视觉』

my ($a, $b, $c) = ("A", "B", "C");
my $di = ( "A" => "甲", "B" => "乙")
;

不会用了,$, @, %, #, {} 的都是什么鬼玩意

Perl 自己都可以给自己写预处理扩展,只需要编程就可以了,你甚至可以直接在一个 Perl 文件里定义基于 Perl 处理的程序设计语言…… (PerlYuYan)
有的时候,我觉得太过于技巧性的东西应该加上引号
因为这些技巧虽然看起来高大上,却凭空制造复杂性。编写一时爽,阅读重构火葬场
Forwarded from dnaugsuz
唉,不过 Kotlin 的这个 fun/val extension 还真是好,自愧不知,C# 的都没有、Groovy 做得和脚本语言一样意义不太大。不知道没有 extension 的 Kotlin 还能不能算是 Kotlin,现在写个函数都炒鸡方便、标准库也越来越能逼死同人了,其他语言是望尘莫及实锤的…… 😂
完美地打压嘲讽了所有以代码行数论英雄的模板程序员,原来你写了半天自我感觉超好的代码,居然其实是低级重复……
同样是程序员,为什么有的人会把 Java 写成汇编,有的人会把 Kotlin 写成 Haskell? 🤔

有一定编程素质的人写代码是横着写,写十年实质上没有进步的人写一旦时序区间复杂一点代码,一个个子程序像顽石一样竖在那不动,别人想弄明白你干了什么都麻烦的要死
好像别人欠你时间了一样

我以前以为 Oracle JDK 里的东西带黑科技性能加成,看来如今必须要改变一下看法了……

把本来 71 行可以实现的逻辑写成 471 行、为每个子程序哪怕是最细节最实现无关的东西加上堪比千字文的注释、即便代码复用唾手可得我也要 copy/paste,不错,牛逼、大佬。
我终于纠正了之前一个自己都觉得错误的想法…… (如果先 op(count) 而不是 --count,序列就是 9,8,7,...,1) 本来我在块里面 op(); --count; 一般来讲 count=3, while>0 先肯定是第一次循环 op(); count=2, op() count=1 op(),肯定是三次的,区别在于先 --count 第一次 op 会拿到 3-1 = 2 而已…… 我所谓『时序』,其实自己也一点不懂而已,如果要做逻辑器件编程无时序思维是困难的
duangsuse::Echo
我终于纠正了之前一个自己都觉得错误的想法…… (如果先 op(count) 而不是 --count,序列就是 9,8,7,...,1) 本来我在块里面 op(); --count; 一般来讲 count=3, while>0 先肯定是第一次循环 op(); count=2, op() count=1 op(),肯定是三次的,区别在于先 --count 第一次 op 会拿到 3-1 = 2 而已…… 我所谓『时序』,其实自己也一点不懂而已,如果要做逻辑器件编程无时序思维是困难的
不过说起来,这个项目测试有点不好做,我希望以后有机会了,用实际用例来测试

目前还在准备写组合结构的部分,显然组合是可以有 Size 的,没有 Size 的话,可能不允许 reset

但是 File 的话可以随便 Reset,怎么办?怎么兼容这个? 我也不清楚……
#Kotlin 理论没想好,又一个秀破天际,但是没有实际用处的东西,我之前想的 NumEqualize 动态自动 widen 都比这个强的多的多。
它不能解决问题,我没有注意到要『检验一种 InputStream 的 read(byte[]) 是否利用了 read()』是不可能的…… 几乎
实际上,你多建立一个 Filter 就可以检验了,但是有什么意义呢?我觉得这应该直接改掉

Java 程序员写这种本来也不低效的模式怎么都写得这么冗长…… 如果没有优化,这额外开销是我自己无法接受的
卧槽,刚才看到一个 s.read() ; s.read(byte[]) 都是分离开算的才觉得奇怪,明明计算上不存在层次为什么会产生二倍的结果?这才发现是自己逻辑写错了…… 😂
This media is not supported in your browser
VIEW IN TELEGRAM