#Go #Qt #Cplusplus 🤔 让我想到了
int main(int argc, char **argv) { QApplication app(argc, argv); return app.exec(); }有时候想到一些莫名崇拜水果 #apple 的人,再想到 Steve Jobs 创造 #GUI 这个被人津津乐道的故事,我觉得虽然乔布斯很伟大,但不应该说发明了 GUI 的灵感很不得了,因为早些时候还没有麦金塔就有了各种有『GUI』的 Video game,或者至少,有 M$ 的 edit 程序(TUI 程序,除了没有窗口概念,其他都很类似了,这很容易理解,因为文本编辑器看起来就该这样交互(不过 vi 却不是这样的,大概是风格不同吧... 但是,文本编辑器这种东西对字符终端的空间利用方式已经可以启发类似 Markdown、GUI、HTML 这些东西了),再稍微改造一点 GUI 就出现了,当时监视器、键盘都有了,这不是多么不容易的灵感),我觉得 GUI 的创立即使没有乔布斯的打算也只是迟早的事情,不如设计出魔方更有难度
Forwarded from Genteure's Window
https://t.me/haneko_daily/1368
我一阵子之前做过测试,设计挺美好,实际效果挺一般。
在 Ubuntu Bash XShell 下效果如图
印象中我本地 Windows 10 PowerShell 也有问题,但是记不清具体是什么问题了。
我一阵子之前做过测试,设计挺美好,实际效果挺一般。
在 Ubuntu Bash XShell 下效果如图
印象中我本地 Windows 10 PowerShell 也有问题,但是记不清具体是什么问题了。
.... #Docker 本身就不是多么不得了的,比起之前那些 Linux LiveCD 打包工具,只是补了个缺口而已... 也有人用几百行 Bash "Bocker" 实现了它的主要功能... 它的 DSL 几乎也可以说就是个象征性的 DSL 而已,没啥实际功能,也很久没有引入能被广泛使用的新概念... 算是『容器化』理念的,,,, 呃,,,
Forwarded from 小娜晚报 (XnzKKi RGB)
bilibili后台工程源码被开源,各种吃瓜🤔
Forwarded from Android Repository (『 ⴼITⵠLØ 』)
bootanimation_androidQ.zip
2.3 MB
另外你也可以使用 Java 8 的 Lambda 语法糖,看起来这是个 SAM(Single Abstract Method) 开放类,可以这么写
private static final Migration MIGRATION = new Migration(12, 13);
.... 好吧是我看错了,好像不能.... (刚才准备发 Yuuta 的,可是发现是自己错的)
private static final Migration MIGRATION = new Migration(12, 13);
.... 好吧是我看错了,好像不能.... (刚才准备发 Yuuta 的,可是发现是自己错的)
#Java 我好绝望啊,Java 又得重新学了,我容易吗我... 😭
https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4#L1042
Jawa 8 啥时候又多了这种语法,我怎么就不知道呢?
block : '{' blockStatements? '}';
blockStatements : blockStatement+;
blockStatement : ... | statement;
statement : ... | returnStatement;
returnStatement : 'return' expression? ';';
statementExpression : ... | classInstanceCreationExpression;
classInstanceCreationExpression : ... | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody?
matches
'.' 'new'
typeArguments=null annotation=[]
Identifier="Package"
typeArgumentsOrDiamond=null
'('
argumentList?=Some([])
')'
classBody?=Some(...)
Qualified class instance creation expressions begin with a Primary expression or an ExpressionName.
A qualified class instance creation expression enables the creation of instances of inner member classes and their anonymous subclasses.
看来我不够了解 Java,垃圾 duangsuse... 🌶🐔
为什么...
1.3: Plain Old Java (2000)
1.4:
5: Autoboxing,
6:
7: ARM, Diamond, multi-catch (2011)
8: Lambda and Type annotations (2013)
9: Modules,
10: Local variable inference (2018)
11: Local variable syntax for lambda parameters (2018)
啥时候 Java 8 我认不得了
https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4#L1042
Jawa 8 啥时候又多了这种语法,我怎么就不知道呢?
public ResourceTable.Package parsePackage(final ResourceTable table) throws IOException {
return table.new Package() {...};
methodBody : block| ';'block : '{' blockStatements? '}';
blockStatements : blockStatement+;
blockStatement : ... | statement;
statement : ... | returnStatement;
returnStatement : 'return' expression? ';';
statementExpression : ... | classInstanceCreationExpression;
classInstanceCreationExpression : ... | expressionName '.' 'new' typeArguments? annotation* Identifier typeArgumentsOrDiamond? '(' argumentList? ')' classBody?
matches
table.new Package() {...}
expressionName="table"'.' 'new'
typeArguments=null annotation=[]
Identifier="Package"
typeArgumentsOrDiamond=null
'('
argumentList?=Some([])
')'
classBody?=Some(...)
Qualified class instance creation expressions begin with a Primary expression or an ExpressionName.
A qualified class instance creation expression enables the creation of instances of inner member classes and their anonymous subclasses.
看来我不够了解 Java,垃圾 duangsuse... 🌶🐔
为什么...
1.3: Plain Old Java (2000)
1.4:
assert keyword (2002)5: Autoboxing,
enum, generics (2004)6:
@Override in interfaces (2006)7: ARM, Diamond, multi-catch (2011)
8: Lambda and Type annotations (2013)
9: Modules,
private fields in interfaces (2017)10: Local variable inference (2018)
11: Local variable syntax for lambda parameters (2018)
啥时候 Java 8 我认不得了
duangsuse::Echo
#Java 我好绝望啊,Java 又得重新学了,我容易吗我... 😭 https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4#L1042 Jawa 8 啥时候又多了这种语法,我怎么就不知道呢? public ResourceTable.Package parsePackage(final ResourceTable table) throws IOException { return table.new Package() {...};…
This media is not supported in your browser
VIEW IN TELEGRAM
原来世界上最合格的 #Java 程序员是 James 老爹,我都不知道 Java 8 啥时候支持
new List(oldid = id) 这种了... 我只知 Lambda
duangsuse::Echo
原来世界上最合格的 #Java 程序员是 James 老爹,我都不知道 Java 8 啥时候支持 new List(oldid = id) 这种了... 我只知 Lambda
This media is not supported in your browser
VIEW IN TELEGRAM
刚才发现其实没有 oldid 这个参数啊... 弄了半天是 James 老爹他们瞎搞...
而且 Java 的爹爹们带头没有使用 camelCase...
new List(oldid = id); 其实是new List(id); oldid = id;...而且 Java 的爹爹们带头没有使用 camelCase...
duangsuse::Echo
#Java 我好绝望啊,Java 又得重新学了,我容易吗我... 😭 https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4#L1042 Jawa 8 啥时候又多了这种语法,我怎么就不知道呢? public ResourceTable.Package parsePackage(final ResourceTable table) throws IOException { return table.new Package() {...};…
https://github.com/sdklite/aapt/blob/9e6d1ad98469dffbc9940821551bd7a2e07dd1e0/src/main/java/com/sdklite/aapt/ResourceTable.java #Java
哇这才是真的大佬,写成那个 B 样的算什么面向对象设计,越复杂越容易堆砌、越简单才越难于设计。
不应该只以算法有多秀为标准,更应该考虑对设计模式的适当使用
开发库真正的难点,不单单是你对你这知识领域的理解,而是你怎么看你实现一切的材料 — 语言和平台
设计的好了,程序就健壮、易读、易维护、易测试、易移植、易扩展,还高性能高效能,安全,简明扼要却又容易理解。
设计的不好,算法到处乱传乱用,毫无章法,数据到处复制,造成一大堆无谓的开销,设计不当、编程困难,难以正常维护和更新。
这么优雅的设计,真的我觉得这个开发者的能力比某些 JavaSE API 实现的开发者还要强,怎么说也是个优秀的程序员,真正优秀避开半吊子误区的程序员。
看隔壁的 axmlparser 呢?一大堆秀死的位运算、偏移量计算,不良的 OO 设计(不是说不必要的 Event 系做的不对,但是『追求性能』到有点太过了)
那么多位运算、那么多加减乘除判断偏移手算,秀死人了,可是最后有个暖用呢?代码健壮性可读性可扩展性爆炸、接口辅助方法定义不足,充其量是个玩具,而且还是失败的玩具,这也能叫面向对象?这也能叫库?丝毫不友好,你造出来给空气用?
尤其还是某些计算,不知道是嫌计算机快了还是怎么的,我真的搞不懂一会为了节省内存减小处理延迟用 Event 抽象一会又延迟,哦不对是每次使用都重新计算,本该早就解析好的东西,还包含一大堆循环,我真的弄不懂,为啥要这么干,是因为这些堆里的二进制序列会受到外星人的干扰?所以为了给全球外星人探索事业贡献,必须得每次使用都重新算一遍??? 🤔
还好最后连个毛线都没写出来,就勉强写了个大结构和字符串池解析,真是让我大大的松了一口气,要不然就真的是带坏小孩了,搞不好重新算输入相同输出还不一样,三体人要入侵地球了,怕死宝宝了。
AXMLEditor,一看就知道是 cracker 们写的,非常『UNIX』风格啊,尤其是一遇到插入操作,根本丝毫不考虑性能,不考虑 GC 的压力,一大堆
使用 java.io 内定的
对该用的抽象不用,是为什么?因为手动偏移量,大批位运算很牛逼,很秀操作?看得别人越蒙蔽自己优越感越强?
真的是和之前的 LayoutFormatter 一样啊,这个也得被顺带着批判一下,代码健壮性都成那样了,什么 retrofit 啊, fix 啊,在代码里嵌入一大堆残缺不齐的『花瓶』模式抽提那些可能根本不是问题本质的字面样版,有必要么?XML 解析器 API 有那么难用么?
它的作者之前不是不知道 XML 是啥子,作者之前还秀过 iOS ObjectiveC 开发呢,可是,偏偏就不知道啥是 XML 了,偏偏就要不断
XML 解析器/生成器就真的有那么难用吗?狸猫换太子,自己写个对数据适应性可怜的『解析器』去处理 XML,有必要么?
在开始编程之前好好想想该怎么做,最适合妥帖,有那么难么?
UNIX 风格也不是随便用的啊,谁说 UNIX 风格就是那种烂文本处理代码,不断复制复制复制,还不能 Copy On Write 写时再复制优化,不但性能、开销丝毫不考虑,我想这可真的未必是『一切皆字符串』的初衷啊
SDKLite 的这个 Aapt 库,才是真的强,不仅真的完全完成了解析工作,而且还贼优雅,方便重构、易于扩展,将必须的位运算尽可能放在一个帮助方法里,并且方法名里写明用途(直接继承 AssetEditor 类就可以了)
很多人都不知道真正是什么的,所谓的『优雅』,这才是面向对象运动的初衷啊
如果每个有能力的人,都把他们的算法做成类似 AXMLEdit、axmlparser、LayoutFormatter 这种样子,要面向对象编程何用?JavaSE 几百个包上千个类何用?都回去写 C, Pascal 这种算了
哇这才是真的大佬,写成那个 B 样的算什么面向对象设计,越复杂越容易堆砌、越简单才越难于设计。
不应该只以算法有多秀为标准,更应该考虑对设计模式的适当使用
开发库真正的难点,不单单是你对你这知识领域的理解,而是你怎么看你实现一切的材料 — 语言和平台
设计的好了,程序就健壮、易读、易维护、易测试、易移植、易扩展,还高性能高效能,安全,简明扼要却又容易理解。
设计的不好,算法到处乱传乱用,毫无章法,数据到处复制,造成一大堆无谓的开销,设计不当、编程困难,难以正常维护和更新。
这么优雅的设计,真的我觉得这个开发者的能力比某些 JavaSE API 实现的开发者还要强,怎么说也是个优秀的程序员,真正优秀避开半吊子误区的程序员。
看隔壁的 axmlparser 呢?一大堆秀死的位运算、偏移量计算,不良的 OO 设计(不是说不必要的 Event 系做的不对,但是『追求性能』到有点太过了)
那么多位运算、那么多加减乘除判断偏移手算,秀死人了,可是最后有个暖用呢?代码健壮性可读性可扩展性爆炸、接口辅助方法定义不足,充其量是个玩具,而且还是失败的玩具,这也能叫面向对象?这也能叫库?丝毫不友好,你造出来给空气用?
尤其还是某些计算,不知道是嫌计算机快了还是怎么的,我真的搞不懂一会为了节省内存减小处理延迟用 Event 抽象一会又延迟,哦不对是每次使用都重新计算,本该早就解析好的东西,还包含一大堆循环,我真的弄不懂,为啥要这么干,是因为这些堆里的二进制序列会受到外星人的干扰?所以为了给全球外星人探索事业贡献,必须得每次使用都重新算一遍??? 🤔
还好最后连个毛线都没写出来,就勉强写了个大结构和字符串池解析,真是让我大大的松了一口气,要不然就真的是带坏小孩了,搞不好重新算输入相同输出还不一样,三体人要入侵地球了,怕死宝宝了。
AXMLEditor,一看就知道是 cracker 们写的,非常『UNIX』风格啊,尤其是一遇到插入操作,根本丝毫不考虑性能,不考虑 GC 的压力,一大堆
ByteUtil 应用上去,什么 readXXX 啊 replace 啊 copy 啊,手算偏移量,手工用类似 subsequence 的方法去强行拆开解析二进制,写一大堆丝毫没有可读性丝毫不告诉人是做什么的位运算操作,而且还不完全解析,还专门造一大堆对象保存其实是 int32 的字节数组!智障复制造了一大堆不必要的字节数组内存副本,还是可能几兆多的大文件,尤其是插入时莫名其妙的循环 byte insert,简直是不知内存分配为何物,疯狂给 GC 填堵。使用 java.io 内定的
DataInputStream,有这么难么?对该用的抽象不用,是为什么?因为手动偏移量,大批位运算很牛逼,很秀操作?看得别人越蒙蔽自己优越感越强?
真的是和之前的 LayoutFormatter 一样啊,这个也得被顺带着批判一下,代码健壮性都成那样了,什么 retrofit 啊, fix 啊,在代码里嵌入一大堆残缺不齐的『花瓶』模式抽提那些可能根本不是问题本质的字面样版,有必要么?XML 解析器 API 有那么难用么?
它的作者之前不是不知道 XML 是啥子,作者之前还秀过 iOS ObjectiveC 开发呢,可是,偏偏就不知道啥是 XML 了,偏偏就要不断
O(n) 判断字符串起始了,偏偏就要制造无端的性能开销了XML 解析器/生成器就真的有那么难用吗?狸猫换太子,自己写个对数据适应性可怜的『解析器』去处理 XML,有必要么?
在开始编程之前好好想想该怎么做,最适合妥帖,有那么难么?
UNIX 风格也不是随便用的啊,谁说 UNIX 风格就是那种烂文本处理代码,不断复制复制复制,还不能 Copy On Write 写时再复制优化,不但性能、开销丝毫不考虑,我想这可真的未必是『一切皆字符串』的初衷啊
SDKLite 的这个 Aapt 库,才是真的强,不仅真的完全完成了解析工作,而且还贼优雅,方便重构、易于扩展,将必须的位运算尽可能放在一个帮助方法里,并且方法名里写明用途(直接继承 AssetEditor 类就可以了)
很多人都不知道真正是什么的,所谓的『优雅』,这才是面向对象运动的初衷啊
我对面向对象编程的目标从来就不是复用,相反,对象提供了一种处理复杂性问题的方式。这个问题可以追溯到亚里士多德;在面向对象兴起之前,编程以过程为中心,例如:结构化设计方法,然而,现在系统已经达到了超越其处理能力的发展极点,有了对象,我们能够通过提升抽象级别来构建更大的,更复杂的系统。所以,我认为这才是面向对象编程运动的真正胜利。 — UML 创始人之一, GradyBooch如果每个有能力的人,都把他们的算法做成类似 AXMLEdit、axmlparser、LayoutFormatter 这种样子,要面向对象编程何用?JavaSE 几百个包上千个类何用?都回去写 C, Pascal 这种算了
GitHub
sdklite/aapt
Android Asset Packaging Tool. Contribute to sdklite/aapt development by creating an account on GitHub.
没什么的,不必说所谓,因为还是有点不错的东西的,另外,少提了个 #Baidu, 百度有一个和大学合作的 echarts 是不错的数据可视化库,都在用
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (YuutaW 鱼塔)
来分享几个企业的 GitHub Orig,虽然商业公司的所谓开源... emm
github.com/Alibaba
github.com/Bilibili
github.com/Google
github.com/Microsoft
github.com/Apple
github.com/GitHub
github.com/Tencent
#干货
github.com/Alibaba
github.com/Bilibili
github.com/Google
github.com/Microsoft
github.com/Apple
github.com/GitHub
github.com/Tencent
#干货
GitHub
Alibaba
Alibaba Open Source. Alibaba has 506 repositories available. Follow their code on GitHub.