【译】用纸板和弹珠制作的4位计算器
本文翻译自:https://lapinozz.github.io/learning/2016/11/19/calculator-with-caordboard-and-marblesLOGIC这是什么?LOGIC是一个全部由纸板、弹珠和胶水制作而成的全功能4位计算器,它可以对从0到15的数字进行加法计算,最大的可计算数字为30,我和我的妹妹为了一向科学活动而一起从零开始制作了这个设备。在这之前,我们还没见过任何用乐高或木头之类东西制作的这类计算器,所以这次我们制作的是一个以前从未有过的全新的模型。为什么要制作?主要是因为好玩!我一直想要制作一个加法器,但是我一直都没想好要如何制作它,我之前有想过用水或者只用纸板来制作。正好我的妹妹有一个科学活动,活动需要提交一个科学项目,我就帮助她选择了一个科学项目。我无..
更多如何成为 CA,并签发自己的证书
要读懂此文章,你需要了解对称加密、非对称加密的基本概念,并了解证书签发的基本流程。工具准备一台 Linux 主机openssl创建 CA 的私钥很容易理解,CA 也有自己的公钥和私钥。openssl genrsa -des3 -out CAPrivate.key 4096这个命令会生成一个私钥 CAPrivate.key,并且必须要填写私钥的密码。不要奇怪这里只有一个私钥,其实公钥也保存在这个文件里了。创建根证书openssl req -x509 -new -nodes -key CAPrivate.key -sha256 -days 3650 -out CAPrivate.pem根证书,顾名思义,肯定是自签发的。这个证书待会需要安装到你的终端设备里面,不然靠这个根证书签发的其他证书不会被信任。这个命令里..
更多前端架构发展史
前端改革 30 年,从一片荒芜到微前端兴起。前言本文主要简述前端系统级架构的演讲历史,不涉及应用级架构: MVC,MVMM…正文前置术语应用:指的是一个整体的应用,可由多个模块组成。模块:指的是整体应用下 被划分的子应用。无架构在 1990 年,Tim Berners-Lee 在他的 NeXT 电脑上部署了第一套“主机-网站-浏览器”构成的 Web 系统,这标志着前端的开始。在最初,前端是一片荒芜的,经过浏览器大战,W3C 标准化的过程 前端才慢慢成长了起来。在此时期,诞生了 CSS、JavaScript、DHTML 等重要技术。前端也从最开始的纯静态页面,逐步存在于 PHP、ASP、JSP 这些模板技术中。由于前端涉及到的功能简单,只需操作 DOM,并不需要代码管理与模块支持。所以 最初的前端只是 MV..
更多批量重命名工具
闲话 批量重命名小工具(renamable)是我早就想写的,之前有时下载一大堆番剧,基本都是【xx字幕组】[虫师 续章_Mushishi ZokuShou_蟲師 続章][01][720P].mp4这种,挨着一个个去重命名也显得麻烦。 一开始我是直接写python脚本去批量重命名,但是发现这样做的效率可能还没有手动去重命名的效率高。 当初技艺不精,搞这搞那的也没想着去专门写一个重命名工具,其实renamable也是上班抽空(摸鱼)写的。 写代码 如果你对写代码不感兴趣,请直接跳到使用 renamable是用PyQt5写的,至于为何用python,因为它写着爽啊。 具体就三个版块: Menubar,菜单,主要操作都在这 Head ,头部,输入正则表达式 Body,主体,显示内容 代码挺简单的,直接..
更多从 Svelte 3 的编译器中得到的启示
前端的编译器,除了可以做转换,是否还有其它用途?由于现在国内“前端主流框架”的称号基本被 React、Vue、Angular 占领,前二者在渲染层的技术,本质上都是极为相似的:在内存中维护 Virtual DOM,通过某些方式获取到变量被修改,然后利用 DOM Diff 算法(以及一些优化)计算出需要对 DOM 做的操作,再 Patch 到真实的 DOM 上。相信大家(尤其是准备过面试的小伙伴)一定对这些内容比较了解。Angular 的最新版使用了一个叫 Ivy 的引擎。对于 Angular 来说,脏值检测跟之前的方法类似(监听用户输入、劫持 setTimeout 等),渲染方面则是用了 incremental-dom 的思想做增量渲染。我第一次听说 Svelte(读作 [svɛlt]),也只是在两个月前..
更多Cocos Creator 拖动去指定区域
我们要实现的效果是,按住并拖动一个小物体,物体跟随手指(鼠标)移动。拖到指定位置放下。如果没有到指定位置,则回到上一个位置。新建脚本DragToTarget.ts,挂到预制体上。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657const { ccclass, property } = cc._decorator;@ccclassexport default class DragToTarget extends cc.Component { @property(cc.Label) nameLabel: cc.Label = null; ..
更多Cocos Creator 坐标与转换
ccc的坐标系ccc提供了api,在世界坐标和本地坐标之间可以相互转换。12345let postion = node.position; // postion是在父节点中的坐标cc.log(name, 'position (', postion.x.toFixed(2), ',', postion.y.toFixed(2), ')');let worldPos = node.parent.convertToWorldSpaceAR(node.position); // 世界坐标cc.log(name, '世界坐标(', worldPos.x.toFixed(2), ',', worldPos.y.toFixed(2), ')');node.position是本地坐标,也就是在父节点中的坐标。让父节点调用..
更多Cocos Creator 拖动效果
我们要实现的效果是,按住并拖动一个小物体,物体跟随手指(鼠标)移动。代码DragToAnywhere.ts12345678910111213141516171819202122232425262728293031@ccclassexport default class DragToAnywhere extends cc.Component { @property(cc.Label) label: cc.Label = null; start () { } onEnable() { this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this); this.nod..
更多protobuf 升级后带来的一些坑
前段时间把公司某项目依赖的 github.com/golang/protobuf 的版本从 v1.3.3 升级到了 v1.4.2,本文记录了升级过程中遇到的一些问题。 Google 对 Go 的 protobuf 库的底层进行了大的改进,新版本的包路径转移到了 google.golang.org/protobuf. 同时,这些改进也被带进了 github.com/golang/protobuf:从 v1.4 版本起,github.com/golang/protobuf 会在 google.golang.org/protobuf 的基础上实现,但会保证接口兼容,这也表明当前依赖 github.com/golang/protobuf 的项目可以直接升级版本,而无需对上层代码进行改动。 然而,新版的 prot..
更多画一颗圣诞树🎄
JUST FOR FUN初始化新建页面,添加一个 canvas 元素,引入 css, js 文件12345678910111213html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Christmas Treetitle> <link rel="stylesheet" href="style.css" /> head> <body> <canvas i..
更多