Antkillerfarm Hacking V7.0

Matlab, Javascript(二)

2022-11-09

Matlab

在MATLAB软件诞生之前,大约1965年,计算机只能生成和输出二维图像,对于L-型膜结构(L-Shaped Membrane)只能生成下图左侧的二维平面效果。直到1990年,MATLAB 3.5发布,3.5版本利用了隐藏线算法(Hidden Line Algorithm),可以实现黑白网格的三维立体图像的生成。1993年,MATLAB 4进一步实现了彩色化。1995年,MATLAB 4.2利用了网格光滑化算法(Crude Shaping Algorithm)将L型网格进一步光滑处理。1995年,MATLAB 5实现了生成完全光滑和打光效果。

而Mathworks公司也将他们引以为傲的进步作为了MATLAB软件的图标!这个图标反映的正是Mathworks技术的不断迭代升级。

至于为啥是L-Shaped Membrane而不是其他呢?因为这是Mathworks创始人之一Moler的博士课题

https://www.zhihu.com/answer/1294927798

如果中国重新开发像MATLAB、solidworks这样的软件大概需要多久?


https://mp.weixin.qq.com/s/0SNlsZUO-i-wzzfSXqLF_g

Mathemetica35周年!从天才物理学家到“自大狂”,创始人Wolfram的传奇经历

参考

https://zhuanlan.zhihu.com/p/30905298

XML和MATLAB交互的基本操作

https://mp.weixin.qq.com/s/QkICCbTp53lWOyeZx63-sw

后MATLAB时代的七种开源替代,一种堪称完美!

https://mp.weixin.qq.com/s/vV8kFF7e1uxjMR48_uRcSw

MATLAB动画没有密秘

https://mp.weixin.qq.com/s/L6GP0LiCQX0Z2lps3Y0ekQ

Matlab简史

https://www.zhihu.com/answer/1513267624

1994年,Matlab发现著名的Intel CPU浮点运算bug

GNU Octave

GNU Octave是Matlab的一个开源实现。它拥有和后者兼容的语法,类似的IDE,并实现了大部分的基础库。

官网:

https://gnu.org/software/octave/

安装方法:

sudo apt install octave

spyder

spyder是一个Python的IDE,提供了和Matlab类似的数据可视化界面。

安装:

sudo apt install spyder

GeoGebra

GeoGebra是一个结合“几何”、“代数”与“微积分”的动态数学软件,由佛罗里达州亚特兰大学的数学教授Markus Hohenwarter所设计。

官网:

https://www.geogebra.org/

GeoGebra官网包含了很多网友分享的几何绘图,所以常用图形就不要自己画了,找个现成的改改更合适。

安装包下载:

https://download.geogebra.org/installers/6.0

Maxima

微积分的数值解很多软件都能计算,但解析解就不行了。Maxima就是这样一款Computer Algebra System的软件。

官网:

http://maxima.sourceforge.net/

Javascript

Traffic Demo

2019.9

最近心血来潮,翻出了本科时代的作业。其中有一个交通仿真的小demo,最早是用Java Applet写的。岂料,现在别说浏览器了,就连专门看这个的AppletViewer在新版的JDK中,都不见踪影了。。。

于是,只好做现代化移植。本来首选JavaFX的,不料刚开始写,就发现JavaFX对于多线程渲染做的很差,而这个Demo正是个多线程的版本。

反正都要大改,还不如直接移植到js上,连编译都省了。

原始版本:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/java/trafic

新版本:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/nodejs/js/traffic

众所周知,js是单线程的,所以这个版本也是单线程的,逻辑稍微复杂了一些。

JS引擎

目前主要有Chrome使用的V8引擎和Safari使用的JavaScriptCore引擎。

https://www.cnblogs.com/meituantech/p/9528285.html

深入理解JSCore

https://zhuanlan.zhihu.com/p/55479666

JavaScriptCore全面解析

JS特效资料

https://github.com/wagerfield/flat-surface-shader

这个网站提供一种浮动的多边形表面的特效,适合作为登录页的背景。

https://mp.weixin.qq.com/s/p8ll1R9aXc5aELtL3MAEcA

用H5打造用户专属的3D机房(WebGL)

https://github.com/hustcc/canvas-nest.js

动态线条特效

https://mp.weixin.qq.com/s/0dJeYLuXkmJpqvuNHx7L8A

爆红Github!20多个练手前端小型项目的集合,随你造!

WebAssembly

WebAssembly,简称Wasm,是一种能在浏览器上执行的二进制虚拟机字节码。

官网:

https://webassembly.org/

参考:

https://www.ibm.com/developerworks/cn/web/wa-lo-webassembly-status-and-reality/index.html

WebAssembly现状与实战

https://www.jianshu.com/p/bff8aa23fe4d

几张图让你看懂WebAssembly

https://www.zhihu.com/question/31415286

如何评论浏览器最新的WebAssembly字节码技术?

https://mp.weixin.qq.com/s/LRGNOuFwHXALs_lhPyN3Zw

爱奇艺直播WebAssembly优化之路

https://mp.weixin.qq.com/s/I0grz0IfFZo98sfaCNh-Vw

可能是世界上最简单的用Go来写WebAssembly的教程

https://mp.weixin.qq.com/s/yTebereUkcyvwJbLssZjPQ

5分钟看懂WebAssembly

https://mp.weixin.qq.com/s/QDjxfoY7gjcCmOeV0kq1pw

web多媒体技术在视频编辑场景的应用

https://mp.weixin.qq.com/s/G3NGVV9wSHMMtFtq0MB6SA

快速上手WebAssembly应用开发:Emscripten使用入门

https://zhuanlan.zhihu.com/p/25800318

WebAssembly系列(一)生动形象地介绍WebAssembly

https://zhuanlan.zhihu.com/p/25669120

WebAssembly系列(二)JavaScript Just-in-time (JIT)工作原理

https://zhuanlan.zhihu.com/p/25718411

WebAssembly系列(三)编译器如何生成汇编

https://zhuanlan.zhihu.com/p/25754084

WebAssembly系列(四)WebAssembly工作原理


V8开发者Vyacheslav Egorov和Mozilla Hacks之间的source-map之战了。对于同一份source-map库的JS代码,Vyacheslav所魔改出的纯JS版本,其性能一举反超了Mozilla重写的Rust版。

https://www.zhihu.com/answer/1322391162

有没有让JavaScript在JS引擎上稳定、更快运行的Style Guide?

Javascript在客户端的使用

Javascript在服务器前端的成功,促使人们思考其在客户端的使用。

最早的尝试,是MS提供的web broswer控件(例如MFC的CHtmlView类)。然而,当时的目的,并不是美化应用程序外观,而只是给程序提供一个访问互联网的机会。其最常见的用处,就是给About添加一个网站链接。这种方式不光用途简陋,更关键的是从外观来看,网页和应用程序完全是两种风格。

网站的外观在随后的几年中进化的很快,由于CSS和Javascript的出现,网页前端不再是一成不变的静态网页,而是具有了一定的动画和交互能力。强大的功能促进了分工的发展,网站设计逐渐分成了前端和后端两大工种。这种分工又促进了网页交互技术的进步。

反观普通的应用程序,由于受限于编程的复杂度,前端人员一直难于介入,很多年都处于停滞阶段。这期间一些不甘平庸的公司,在UI技术方面也做了一些尝试。

首先是DirectUI。这个是MS对于Win32窗口模型的一个重大改进。

在原始的Win32窗口模型中,每个控件都是一个窗口,拥有一个窗口句柄(相当于窗口资源的描述符)。窗口事件的处理和资源管理都在OS层面进行,开销比较大。(比如包含10000个按钮的窗口怎么处理的问题)窗口之间的交互,比如透明、动画,也由于需要跨窗口句柄,而变得非常复杂。

DirectUI的思路,是将控件降级为贴图,并接管整体窗口事件的处理,以模拟的方式实现控件的行为。开销和扩展性得到了很大的提升。

DirectUI技术最早出现在Windows XP中。比如,“我的电脑”左侧的控制面板。由于它的HWND的名字叫做DirectUI,故名。GTK项目实际上也采用了类似的方案。

各种DirectUI技术,普遍引入了UI配置文件的概念,而且UI配置文件的功能也越来越强。比如,GTK的设计器Glade,早期的时候是根据UI设计,导出代码,但现在已经改为导出UI配置文件了。

然而,由于低层实现的限制,这些UI配置文件语法各异,虽然有设计器来简化设计难度,但注定不能做的太复杂。因此,功能上无论如何都无法与网页相比,更不必说和HTML 5相比了。

2012年以后,以CEF(Chromium Embedded Framework)和XULRunner为代表的浏览器派,开始逐渐崭露头角。从此,开发桌面应用程序,不再是Javascript的禁区。桌面应用UI和网页前端开始呈现融合的局面。

TypeScript

TypeScript是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。

官网:

https://www.typescriptlang.org/

安装:

npm install -g typescript

TypeScript文件的后缀是.ts,它不能直接在浏览器中运行,而需要编译成JS才能运行。也正因为如此,TS并没有什么兼容性问题。

编译:

tsc helloworld.ts

框架

React、Angular、Vue.js似乎是目前最流行的三个框架了。

https://zhuanlan.zhihu.com/p/35551654

基于React的高质量坦克大战复刻版

https://mp.weixin.qq.com/s/zfOZAmgpndcqgxHHaS1j3g

用Vue和React构建相同应用程序,区别在哪?

https://mp.weixin.qq.com/s/zDt92-5NVaAFZJRfEHCUvg

什么是Native、Web App、Hybrid、React Native和Weex?

https://mp.weixin.qq.com/s/RC3eVNfYeVx4mQT3WQHMcw

6个常用的React组件库

https://zhuanlan.zhihu.com/p/28305975

Vue.js&jQuery比较

https://zhuanlan.zhihu.com/p/20197803

VUE(现代库) VS jquery(传统库)

https://zhuanlan.zhihu.com/p/359540593

2021年Angular vs. React vs. Vue前端框架对比

pdf.js

PDF.js由Mozilla提供支持。目标是创建一个通用的、基于Web标准的平台,用于解析和呈现PDF。

官网:

https://mozilla.github.io/pdf.js/

C/C++参考资源+

https://zhuanlan.zhihu.com/p/346465585

极大提高你开发效率的C++ tricks

https://www.zhihu.com/question/280665935

为什么C/C++要分为头文件和源文件?

https://www.zhihu.com/question/485183321

一个接口只有一个实现类,写接口的意义是什么?只写类不写接口不是更简单且清晰吗?

https://www.zhihu.com/question/36642771

C++的string为什么不提供split函数?

https://zhuanlan.zhihu.com/p/458947637

C++编程技巧: Pimpl

https://blog.csdn.net/weixin_42663840/article/details/81188003

深入浅出入侵式容器

Fork me on GitHub