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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from Pink D
#Android #dev
https://t.me/PureWriter/107

我真的很想知道为什么有这个 bug,具体出错的代码是什么... 会不会是 r - l 🤔
emmm...
打字机模式就是高亮当前行,估计是按行长数组算要高亮的行们的时候 IndexOutOfBounds 了?


没办法,duangsuse 有时候喜欢照抄工程....
同意(迫真)#Android #NFC #Data
Forwarded from Rachel 碎碎念 (IFTTT)
读 Android HCE 读到头疼…全世界这么多接口/数据协议,能做得这么乱的应该也就 NFC 了
— Rachel (ノД`)シクシク (@tangrui003) February 18, 2019
#Ruby #MVC https://railsgirlsjr.com/event/auckland/

其实后来看看有种方法记忆起来不错,不是死记:

View (ERB) -> Controller(ActiveController) -> Model (ActiveRecord) -> MVC(REST/Resource) -> Gem Management -> -> Scaffolds (Rails App Structure) -> Rails Generators
就是从前面(View)一直到后面(服务端程序本身的依赖关系、模板、Rails Generators),MVC 是一个独立的资源

这样就不用死记了,所以就会容易理解一些。
duangsuse::Echo
就是从前面(View)一直到后面(服务端程序本身的依赖关系、模板、Rails Generators),MVC 是一个独立的资源 这样就不用死记了,所以就会容易理解一些。
所以 duangsuse 说自己喜欢实际工程是真的...

如果单单只会考虑算法而不考虑那些架构的话,也不算是好的 CS 爱好者呢 🤔(当然,某些吊炸天的理论爱好者不算,比如形式化证明的大佬 X)
如果对这些 trivial 的东西能快快扎实的学习就好了,不知道有没有那个程度的能力。
duangsuse::Echo
#recommended #life #Backend https://www.v2ex.com/t/536364?p=1 支持一下
可见去过外国的大佬都很年少有为啊! #life
This media is not supported in your browser
VIEW IN TELEGRAM
没本事去外国
上面的 coolapk.py 亲测可用
#recommended #life #PL #PLT #Backend 🤔 可惜就是我现在 IO 有点慢了,正在学 Keyboard Shortcuts 和打字技巧。
Forwarded from duangsuse Throws
#life #tech #school duangsuse 又 *** 回来了!!! 🐱
这次,duangsuse 的̶大̶脑̶进̶一̶步̶升̶级̶,带来了对很多 IT 问题模型的新分析理解能力,并且也学习了一些别的知识!

这个列表目前包括(我发誓下面的东西我都没有查任何一本书,而且我真的有至少一点的了解,绝对不是那种完全只知道名词的了解,不过关于历史的部分我可能看了一点维基,人命不好记...):
(虽然会啥啥语言不能代表有实际工程能力,比如,会 Java 8 (有时可能只能代表你会用 Java 8 写 Helloworld!)不能代表你也了解 JavaEE 的 Servlet、Tomcat、SpringMVC/Structs/Glassfish/Undertow、JDBC/JPA/JTA/JUnit/Android JUnit 自动化测试、SAX XML、Swing、Java Card、Java Parallelism、Ref Objects、JMX、JDWP、ClassLoader、OSGi、JNDI、AWT、集合类、Visitor Pattern 什么的,更别说做实际工程时的表现了,更不能代表你也知道 Smalltalk 和 Java 的前身 Oak 是 20 世纪哪年出的,哪年又变成了 Java、Java 之父是谁,更别说知道 OOP 的创始人是 Alan Kay,C 语言的前身是 BCPL,第一个被标准化的 C 是 ANSI C89,C 的创始人是 Ken Thompson 和 Dennis Ritchie,不会知道还有个 GoF 专门画类图来研究可复用的面向对象编程风格、面向对象还有 Liskov 替换原则/组合优于继承原则,结构化编程的创始人又是谁,几几年得的图灵奖,更不会知道 ACM 还有个叫 SIGPLAN 的组织下面还组织了 VEE 小组经常发布一些有意思的关于程序设计语言实现虚拟运行环境的文档,不会查 IETF 的 RFC 文档,不会找论文,不会写 HTML/CSS,也可能不会不心疼钱地买上个十来本不那么 trivial 不那么窄方向的书看,会 Ruby 不能代表你也会 Rails(包括 ActiveRecord, ERB), RubyGem, Bundler, Rake, Nokogiri, Sinatra, Builder HTML DSL, Faraday HTTPc,但是,但是,其实会这些语言也可以说是了解至少一些相关的东西了吧)

软件工程理论和一些杂七杂八的东西,比如指令系统、软件危机、存储程序型计算机、电子计算机、冯诺伊曼瓶颈、哈佛结构、指令缓存、存储器/运算器/控制器/IO、工作集合 Working Set、问题领域、软件测试,易读性、业务逻辑及算法、软件架构、profile-based optimization、结构化编程(过程式编程)、设计模式、面向对象编程、函数式编程、值/类型/弱软虚引用/深浅拷贝、代码路径、可维护性、时间空间复杂度、性能、可重用性、抽提、抽象、依赖注入、协程、重构、可测试性、软件测试(包括验收/接口/性能/回归/兼容性/单元/集成)等名词

程序设计基础,包括下列语言(或许包括平台)有不错的支持:
+ JVM 平台:Kotlin(包括 Kotlin JVM、KotlinJS、Kotlin Native(只有 Gradle 配置的支持程度)、Kotlin Multiplatform)、Java(支持到 8,9/10/11 什么的特性也高不过 Kotlin 1.1,诸如 label 语法、enum 语法、assert 语法、Annotation 语法结合性什么的也了解)、BeanShell、RhinoJS、JRuby、Eta(Haskell)、Groovy
+ Native:Rust、C、C++(这个有点自吹了因为 C++ 实在是,不过我基本会一点 Qt 勉强能再训练一下可以写 Qt5 Widgets 应用 👍...)、Haskell、Crystal
+ 字符串/流处理:SED、AWK
+ 其他函数式:Lisp(CommonLisp)、Scheme(R5RS,R6RS 的 Promise 其实也应该会,但其实我几乎没用过 Scheme,虽然我看过儿童书 The Little Schemer,Scheme 实现包括 BiwaScheme、Ikarus、Larceny、ChezScheme)、Lime(得了吧,虽然我实现了一个,但连 * 都不算,连个类型自动转换提升都没有,实际上它也就是 Helloworld 级别的能力)
+ 其他 Unix 系:PHP(迫真,虽然我只是看过一两行,但 PHP 简单啊)、Perl、Ruby(这个没得说,杠杠的,我了解 Ruby 元编程和闭包使用和方法查找,连 MRI Ruby 2.4 的 YARV 有几种方法类型(11 种)怎么执行 send 指令我都知道,但是还不了解 Ruby/mRuby CNI,目前使用的 Ruby 实现限于 MRI Ruby 2.x 而没有 Rubinius、GraalVM 的 Ruby 实现)、Python(其实还是有一些了解,因为它简单)、Bash、Make/CMake(其实也可以不算,不过还是算上吧)、DOS/Windows CMD Batch(基本支持,比如 if, goto, @echo, cls, local, piping
+ 其他:Lua(包括最新的 Lua 5.4)、JavaScript(ES6,包括最新的 Regex Flags、String 类静态方法、Generator 就是 Coroutine、Async 函数、Promise、Proxy 等)、SQL(基本支持,PostgreSQL 自己一些权限控制相关的语句比如 ALTER ROLE 支持)
+ 描述化语言(Markup 们):HTML(基础文档结构、布局盒模型、CSS 层叠样式表、H4 的很多标签、H5 的部分标签)、YAML、JSON、AXML(二进制文件格式)、PEG.JS、GeekSpec(因为是我造的啊 hhh)、XML、TOML、INI、Editorconfig、Gitignore、Markdown、TeX(XeTeX,虽然其实 TeX 也不能算严格意义上的 Markup)、ERB、FreeMarker(SpringBoot 用的 Template 引擎)
+ 汇编语言:X86、Ruby YARV、Lua Instructions、PHP ZendVM(基础了解)、CLI 虚拟机们的 IL(MSIL)、JVM Bytecode、Dalvik Bytecode(准确的说是双字节码 hhhh,因为它是按照一个 halfword 为单位进行解码)、BiwaScheme VM 树形指令

- 下列语言有支持:
+ 描述化语言:Ohm.JS、LEX、FLEX、JFLEX、Bison(YaCC)、Java Cup、Java Beaver、ReStructureText
+ Cython 和 Boo (应该有)
+ ActionScript (因为是 ES6 实现所以也应该支持)
+ CoffeeScript (因为是类 Scheme 所以应该支持)
+ C# (肯定会写的,而且我写过 C#)
+ F#(可能支持,非常不确定)
+ LLVM IR 的文本形式
+ VisualC/C++, Turbo C(都是非标准的 C 实现,不过我也了解 stdcall 什么不同的调用约定所以其实是一种语言)
+ Basic、VisualBasic(仅仅有点了解)

- 下列语言体验过或者看过或者了解过一点:
+ 描述化语言:JavaCC、ASCIIMath
+ Smalltalk
+ Fortran 系:Matlab、Octave、Fortran、Forth、Wolfram、Julia
+ Scala, Dart
+ Pascal
+ Fortran, Ada
+ D
+ Elvish, Zsh, Fish(都是 Shell 脚本语言)
+ ArchLinux PKGBUILD
+ Agda(只是有一点点了解,而且我还不知道啥是 Dependent type,而且我觉得我可能蠢到不能用 Agda 做数学归纳法证明)

- 下列语言或者其他什么的只记得名字:
+ JVM 平台:Clojure、Erjang
+ Gentoo ebuild
+ Idris、F*(F Star)、Coq、Prolog、MiniKaren(其实这个是作为库)、Zig
+ CaML、CPL、BCPL、OCaML、ML
+ ObjectiveC、Swift、Eiffel
+ Griffon, Grails(Groovy)
+ Oberon、COBOL、SNBOL
Forwarded from duangsuse Throws
编译原理(基本支持,包括基本的编译器前端,分词器,解析器,Scanner-less parsing 就是 Parser combinator 组合子 style parser,BNF 啥子的、包括基于 SSA 指令引用分析程序分析和优化、代码生成、JIT、虚拟机什么的,代码向量化只是了解,最新的 X86 平台提供的 SSEx、MMX、AVX 并行处理和 GPGPU 不了解)

算法 (基本支持,很多完全没有实践过,包括各种排序算法,排序算法包括基于交换、选择、插入操作的,实践过的包括冒泡排序和选择排序,Dijkstra 算法、广度优先搜索 BFS、深度优先搜索 DFS、基于 bucket 的 Hashtable,Lua 实现上看的、KNN 机器学习和回归、递归算法(比如,Hanoi 可行解)、贪婪算法们、动态规划,线性规划因为数学还在学目前只有最优化理论大纲的了解,十有八九又要涉及曲线斜率的导数问题)

整形数二进制位运算 (基础支持,包括各种语言甚至 X86 汇编的位长度、位移动、AND、OR、NOT、XOR、NOT AND(NAND)、溢出回滚补零,位运算实现 2 倍数乘除法、集合判重、位运算计算 Hash code,但是我不了解树状数组,更不会离散化,待学)

软件架构,当然基本都是 OO(面向对象) 的架构,duangsuse 现在已经能读懂 Object Algebra 解决的 Visitor Pattern 双向扩展问题,而其他一些简单的 OOP 架构,比如基于 OO 多态(子类型多态)的设计模式完全不是问题,要求使用参数化类型的架构基本支持,JavaEE 架构理解,基本都是背下来默写级别的支持,还不错

程序设计语言类型,从 C89 开始(支持子类型的 Abstract datatypes,抽象类型),直到 Java、Kotlin 的 OOP 类型系统 + 泛型(参数化类型,了解包括泛型的型变、一般工程模式)

逆向工程 (目前最低支持到机器代码反汇编程度的 C/C++ 等 >=PP 系逆向工程,依赖的软件主要是反汇编器、Radare2 负责进行自动化分析和增量式修改)

暂时不包括:
计算机图形学 (一些相关数学函数不是很会,而且练习也没做,数学函数分析技术相关的知识,比如单调性、函数曲线斜率一类的,以至于我连 Bezier 曲线的 Bernstein 基函数公式都看不懂,在学)

关系代数 (太菜了,但其实大部分都会做,了解的关系运算符包括 Π,σ,∞,∧,≠,= 这些,笛卡尔积只是待学 )

语音学 (虽然 duangsuse 也会去学英语的音标们,虽然我的确有一些了解,但仅限于了解)

自然语言处理 (虽然目前 duangsuse 按照高中的一些约定俗成的标准他自己有一些支持,比如了解句子类型和句子结构)

密码学 (比如 Diffie-Hellman 算法这种非对称密钥体系,duangsuse 好像还没把如何验证消息的过程背住,其实他没有背,但当涉猎)

信号处理 (虽然其实 DIP 也可以算是一种信号处理,不会的原因是因为数学在学,很多分析的时候依赖数学函数)

人工智能/机器学习 (但是,KNN 我还是会的)

人工神经网络(机器学习) (但是,如果是比较简单的,比如说那种小理论性的基于层的组合前馈神经网络,然后用别人的 lib 进行监督型学习我还是会的,只要建模足够简单就能上,迫真)

Internet 技术和计算机网络 (只是暂时不包括,因为知识量大一些抽象一些难记不是特别好抽象图形化分析,而且那些 Internet 服务又多... 只能记住几个,而且如果实现细节比如 IMAP 还是 SMTP 的 HELO/EHLO 指令都记的话我怕不是要有当今高中生的水平了?迫真,本来我是只有一个现在普通软件工程从业者的水平的hhhh,谁知道呢,那些曾经高中『下到量子物理分子结构式,上到滕王阁序古文观止英文单词类型句子结构』无所不知的学霸们,出来居然有那么多人后来落了个工程素质平平的结果... 还不如现在的一些兴趣驱动的 PLT/FP 爱好者大佬,这真是太讽刺了,难道中国这么教育就是为了『开阔』智力或者让该上脚手架的人上脚手架?)


而且是在之前已经有不少八卦知识的基础上,同时也给理解曾经完全不会的数学带来了可能!

duangsuse 开始有更多的工程行动能力了!

这是件好事,希望能一直进步下去。 🤔
希望吧。

duangsuse 希望自己啊,能真的完全了解信息技术,低到电子电路/嵌入式开发/逆向工程/系统安全,高到 PLT、程序变换、人工神经网络,中间也不能只是所谓的『全栈工程师』,要有能力去做一个架构师,完全熟套 OOP 和 SP 们的本质内涵,包得了 CNI、写得了其他计算机功能的封装、用户界面布局也不求人,彻底熟悉 C/C++/Lua/Java/Kotlin 这类语言们 🤔

会不会被你们讽刺呢? 🤔
为什么不看看心理学 Psychology 的 Dunning-Kruger Curve
讽刺就讽刺吧,反正我怎么样也不关别人的事情。

此外呢,还希望我能会使用 Krita 进行电子绘画,LMMS, Synthesizer V 来进行一点电音制作什么的呢、希望我能在学校好好学点运动。马上也要高三了呢.... 不知道物理和数学是不是真的『实迷途其未远』还是早已无力回天了呢?


可能都是以后的事情了吧,但是依然希望能有一天是这样呢。 🎁
duangsuse Throws
#life #tech #school duangsuse 又 *** 回来了!!! 🐱 这次,duangsuse 的̶大̶脑̶进̶一̶步̶升̶级̶,带来了对很多 IT 问题模型的新分析理解能力,并且也学习了一些别的知识! 这个列表目前包括(我发誓下面的东西我都没有查任何一本书,而且我真的有至少一点的了解,绝对不是那种完全只知道名词的了解,不过关于历史的部分我可能看了一点维基,人命不好记...): (虽然会啥啥语言不能代表有实际工程能力,比如,会 Java 8 (有时可能只能代表你会用 Java 8 写…
比如说,我现在开始能看得懂 C 语言 + 算法工程实践的 Lua 5.1 了 (《Lua 设计与实践》这本书,我居然开始能看懂了) #Lua #PL

比如说,Android 开发的设计模式再也不困扰我了(我花了三四节课的时间看了一下《Kotlin 极简教程》里的 Android Realm 日程软件示例,现在我居然能默写很多代码,RealmAdapter/ViewHolder/TodoItemOnClickListener/TodoEditFragment/TodoListFragment/Anko UI/Coordinator Layout/RealmRecycler Layout/View inflator/Android Menus/MainActivity/AppBar/Supportv7Toolbar/XML/Resources/Layouts/Colors/,甚至包括 Groovy Gradle 项目文件了)

比如说,我花了不到十分钟终于看懂了 ES6 的 Generator Functions 和 Thunk 函数、Async callbacks 之间有何关系,为啥要用 Coroutine + yield Promise 的方式而不是直接阻塞地调用 Sync 函数或者,Async 函数使用 function * 和简单使用 function 有啥区别,为啥就要专门的 co module 来执行 Generator 函数了,为啥 Generator 看起来只是为了状态机随时挂起恢复的却要用来做 Async,Async 和 Await (语法糖)的本质是什么(Fibers,也就是 Coroutine,协程)
而看懂其实是得益于现在能够基于程序执行时控制流模拟的 — 现在我能看到啥是『阻塞』,啥是『挂起等待』了,也知道为啥要做成『分段执行』的函数了

比如说,我现在能理解 Jawa 8 里的泛型型变了(PT 的父类,协变 F<T> : F<P>、逆变 F<P> : F<T>、不变 F<P>, F<T> 没有子类型关系),我知道为啥要说 <? extends T>, 为啥要说 <? super T> (? 是 T 的超类,这是类型下界限定),为啥要有 PECS(producer-extends,consumer-super) 规则,我记住了 Kotlin 泛型里的 <in T>, <out T> 分别是对应 Java 里的啥(PECS,<? super T>, <? extends T>),但最重要的是我知道为什么 Consumer 要 <super T>Number n = ints.get(0); 这是一个缘由,而 capature<? extends T> 限定符实现了泛型类型的协变,也就是说 List<E>, boolean addAll(Collection<? extends E> c), List<Number> 这种 receiver 可以 addAll List<Integer> 的 producer,或者说 List<Intger> : Collection<? extends Number>, List<Integer> is covariant over Collection<? extends Number>),而且我看到了谁是谁的子类型这个关系,并且我看了一遍就记住了 OOP 里的几种多态 — Ad hoc polymorphism(特数多态) 的 参数类型重载多态、类型转换多态,参型多态(参数化类型, Parametric Polymorphism),子类型(继承)多态

比如说,曾经我专门记的东西现在更清楚了,为啥有人要用,为啥有些精简代码的技巧因为可读性和语言明确性的原因不能用,比如 newvector[i++]
比如 Lua 的 table 预填充技术 p = {0, 0, 0} 防止表存储被动扩充,比如 Lua 的 local time = os.time 可以让访问减少几次索引查找
比如位运算『优化』,比如索引从 10 数到 0 而不是从 0 数到 10 for (int i = 9; i >= 0; i--)
比如数组下标(subscript)为啥要叫下标