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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
这就是我弄了一个下午写的测试……
#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
修了一个至关重要的 bug,可以意味着现在的 Reader 已经可以用了
虽然明天我又要去上学了

当然其实是不保证可以用无问题的,但看起来很稳定一样,因为我一行一行一次一次 UpArrow Kotlin REPL 测试出来的…… 的确是可以用,很正常,尤其是 Reader.File
除了 KotlinIO 的 InputStream.readBytes() 不正常而已,不过这个定义我觉得就有点奇怪,也就见怪不怪了,和 Java 一比是大雾见小雾

URLBuffer 的都是 Reader.Instance 辅助实现的,当然他们都是那个德行,上不来下不去。
不过 Reader.InstanceReader 的基本继承结构我重构了一下,还没测试过是否工作正常,我想应该是没问题的

关键是 Writer... 现在还可怜的要不得
关键是我…… 明明这么努力,还是熬夜,而且莫名觉得熬得还很有意义,因为完成了想做的事情…… 可是一天到晚在这里视力下降就不好了……
关键是剩下的事情…… 虽然是写了一些,但我自己感觉提升不大,有时候看着屏幕会觉得知道该怎么写,闭上眼睛思考一下全不知道是什么东西了,迷人……

关键是,今天晚上肯定不能完成了吧

他们又去找一个在什么大学来着当教授的博士后亲戚,和他一个 IT 的朋友来电话教导我

可我是要写代码而已,又不是上中科大、交大、西安大学、当高学历高素质人才……
不管多没办法总是要去的啊…… 何况这种强度一直下去肯定不是办法,而只有长假到来而且我成天心情好才可以保证不出现过劳死的问题,唉 #life #China #school
说起来,现在写的代码越来越不像以前了。

给人感觉这么大一个类,我怎么就只写了 160 行? 之前感觉这么有用的类,怎么只有 174 行?以前我写个小应用都能写到这个行数的一半,然而这个结构却复杂的多。

不过我的确很讨厌对特殊的情况依然坚持用『同意』『规范』的缩进方式,为了让程序代码更好看,怎么样的缩进我都能用。

编译后 JAR 现在是 85K
其实我本来以为还可以顺便写个人生第一 Scheme(不是,其实是类似 Scheme 的自己设计的语言,支持基本的 sexp 和中缀表达式、raw string call、pass expression、vararg、default arg、mutable lambda capture)

当然是解释器啊,相信不会有人认为我连 visitor pattern 都不会写吧,不会写还有子类型多态的直接化方式啊

如果能够写出来的话,就可以很开心了,因为我就可以用它来写一些 Android 应用了,也打算试试它和 Dokuss 组合对 Android 程序设计会有什么效果,我的希望是在 doku 提供绑定后,二进制文件的读写对象在 MyScheme 里组合,就可以方便地拿来使用了

比如这里有个简单的例子

[require! io]
[require! doku]
[require! terms]

[term! st-frogs (drepeat frog)]
[term! frog
(dseq dutf dint)]

[end]

[define! frogs '(("江泽民" 1989) ("胡锦涛" 1989 * 91) ("一刀" 999))]
[with (file-open "naive-frogs" 'write) \f ->
(write st-frogs f frogs).]

(print
[with (file-open "naive-frogs" 'read)
\f. (read st-frogs f)])


只是它像 Python 的 pack/unpack,名字就不好起,结构体只能是匿名的,十分不方便(虽然 MyScheme 可以提供 tuple destruct 的方式),我想只能在 Kotlin 端先定义 ID 了