Yoichi:怀石料理

不愧是镇上最好吃的日料店,也是镇上最贵的日料店。 怀石料理讲究使用当季美食,尽可能多的利用食材以及味道的平衡。Yoichi 的怀石料理在酱料上非常传统,主要使用清酒,味淋,酱油和昆布柴鱼高汤。香料的运用并不多。Yoichi 在辅料的选择上会考虑当地特产,例如 Sundried Tomato。令我感到奇怪的是整道套餐吃下来并没有遇到常见的白萝卜丝或是萝卜泥配料。 Yoichi 的店铺很小,方方正正的大堂里摆着卡座和简单的座位。抬头可以看到三角的屋顶上挂着一台空调。座位间距不大,加上整个空间一览无余让用餐私密感较少。 一共有七道菜,整体上菜速度较快。我恶意地揣测是不是因为上菜速度较慢的话,就吃不到八分饱了。烤盘我们选的是帝王蟹,蒸菜选的是鳗鱼。 前菜 我们这次地前菜和官网上地菜单有些不同。右上角地是腌渍日本山菜。绿色地吃上去比较像很嫩的芹菜。山菜用柴鱼片高汤腌渍(Bonito Broth)。整体口感为咸,鲜。 左上角的是慢煮的鲍鱼和章鱼搭配高汤冻和新鲜豆瓣。章鱼火候把握的很好。鲍鱼入口有干香菇类似的香味。豆瓣则一反常态,没有任何腌渍的味道,非常的清爽。 下面是用米酒和味淋腌渍的和牛。与其他两个冷菜不同,这道菜是温的。这道菜味道和口感都类似香肠,甜甜的,一口咬下去温热的脂肪流了出来。搭配的蔬菜是小白菜芯,清爽的口感很好的平衡了和牛的甜和油。 汤 忘记拍照了,找了个类似的图。 吃完了味道重的前菜,怀石料理会使用汤来清新味蕾。我们的汤有鱼,香菇,蛋皮和 Sundried Tomato,汤底是昆布柴鱼高汤(Dashi)。鱼很嫩,鱼味较重。与碗里那些调味过的菜相比,汤异常的清爽。喝完整整一碗也不会感到咸。 Sundried Tomato 感觉是整道菜最有亮点的地方。Sundried Tomato 属于加州特产,强烈的番茄香味和酸味与其他菜和清淡的汤形成了强烈的对比。我个人大部分时候都是在披萨上吃到 Sundried Tomato,所以吃这口的时候披萨快餐店浮现在我眼前。 刺身 最上面的是两种海胆,具有完全不同的口感。下面的更加软糯,一碰就碎,口感清甜。上面的更加解释,更咸,能体现大海的味道。 右下角是烟熏马鲛鱼,口感 Q 弹,是我最喜欢的刺身。 左下角是日本鲭鱼。相比海胆的入口即化,马鲛鱼的 Q 弹,金枪鱼更加的有嚼劲。一丝丝的纤维,需要顾客反复咀嚼。金枪鱼搭配的包菜和左上角的酸酸的柚子酱油。 烤盘 这绝对是吃起来最花时间的菜。蟹肉黏在蟹壳上,需要顾客满满分离。下面是柚子醋。我个人更加喜欢不沾醋吃,更能够品尝到蟹肉的甜味,和碳烤的香味。越吃越觉得蟹肉很像鸡胸肉,看起来也是跟鸡胸肉一样丝丝分明。 蒸菜 蒸菜是淡水鳗鱼,安康鱼肝,黄瓜丝垫底,黄瓜花和清酒浸泡的杨梅,酱汁是恰到好处的照烧酱。 第一口吃安康鱼肝觉得鱼味很重,吃了几口味道更重的鳗鱼后,再吃安康鱼肝就感受不到那么重的鱼味了。吃到最后安康鱼肝吃上去跟鸡蛋豆腐类似。 这道菜丝毫感觉不出是蒸出来的,总让我觉得而是烤鳗鱼。 被清酒浸泡过的杨梅,有了酒香味,但是没有酒精味。与家乡的杨梅不同,这粒杨梅汁水没有那么饱满,没有那么酸甜,味道更加的清淡,最大化的体现了清酒的香味。 寿司 寿司分别是甜虾,山药鹌鹑蛋和扇贝。 山药鹌鹑蛋寿司没有吃熟鹌鹑蛋的那股味道,反而一场清淡爽口。滑溜溜的山药和鹌鹑蛋,搭配黏黏的米饭,口感奇特。 扇贝是我最喜欢的。奇特的口感给我留下深刻的印象。扇贝绝大部分地方都是软软嫩嫩的,根部却有着截然不同的口感。扇贝根部一咬下去救碎成一丝丝的。 甜品 三角形的大幅和圆形的大福非常配这个正方向和圆形镶嵌的盘子。三角形大福嫩,圆形大福口感略硬。 整顿饭吃完,体验上不会像吃法餐之类的充斥着惊喜。怀石料理给我一种朴素的感觉。虽然每道菜都不外乎酱油,味淋,清酒,昆布柴鱼高汤,但每道菜都可以感受到他们的用心。几乎所有的生食材都预处理过,或是腌渍,或是烟熏。另一个感受就是平衡。味觉和形状上的平衡体现在每一道菜里。

2021/6/25
articleCard.readMore

区块链项目分发代币常见方式

Airdrop, Fair Lunch, Democratic Launch, LBP 每周都有不少区块链项目上线,他们往往都有自己的代币。在项目初期,如何分发代币是一个很讲究的事情。往往越多的人拥有你的代币,代表你的代币受到更多的认可。这一期本周热点,我将为大家介绍一些常见的代币分发方式。 ⛏️ 预挖矿 在项目公开分配代币之前,某些群体可以提前获得项目代币。这些群体可能是项目赞助方,项目开发者等。对于预挖矿的不公平我们不能一棒子打死,作为为项目付出的群体,他们有权利获得属于他们的利益。 🛬 Airdrop 还记得去年的 Uniswap 空投和 1inch 空投吗,对大部分参与到其中的人来说,空投就是天上掉馅饼。 在大多数情况下,空投会将代币平分给满足条件的用户。对于 Uniswap 和 1inch,他们的要求是在某个日期前使用过他们的 APP。对于一些刚刚开始的项目,空投条件可能是 Twitter 转发,点赞,或者只是填个邮箱和钱包地址。 对于用户来说,这样的空投较为容易薅羊毛,几乎没有成本。 对于项目方来说空投并不能起到融资的作用,也不能真正的吸引用户。用户可能拿到空投就套现离场。但是空投是较为简单的分发代币的方式。 👉 这个网站整理了正在进行空投的项目。 🚀 Fair Lunch Fair Lunch 的含义是每个人都有公平的机会去获得项目代币。用户需要质押指定的代币来获得项目代币。 例如在 Mith Cash 的 Fair Lunch 中,160000 个项目代币将平均的作为 16 个质押池子的奖励总和。这 16 个池子分别接受 DAI,USDT,USDC,MITH,YFI,COMP 等。用户质押的代币占池子总代币比例越高,用户将获得更多的项目代币。 对于用户来说,这种方式就类似流动性挖矿,通过质押代币来获取项目方代币。由于不同池子的资金量不同,因此相同的资金量选择不同的质押池子会有不同的收益率。 对于大资金用户来说,他们可以轻易地获得大部分的项目代币。因此大资金用户可以一定程度上操控项目代币的价格。 对于项目方来说,Fair Lunch 有助于发展自己的社区。并且项目方可以开一个 LP 代币的质押池子来提升项目代币的流动性。 👨‍⚖️ 民主发行 Democratic Launch Democratic Launch 在大部分地方和 Fair Launch 相同,只是修改了以下几点: 考虑到大资金用户的影响,Democratic Launch 使用白名单,包含参加过其他项目社区治理的钱包地址 设有最大资金限制,杜绝大资金用户的入场 更长的发行时间。Float Protocol 分为两期,一共 8 周 🥣 LBP: Liquidity Bootstrapping Pool LBP 是一种更加巧妙地拍卖项目代币的方式。LBP 通过控制代币的市场供应来使代币市场价格接近初始拍卖价格。我们以 ChainSwap 的 LBP 为例。 \(A_n=A_t\frac{\Delta T}{T_t}\frac{P_n}{P_O}\) \(A_n\) is the amount of tokens released into the Uniswap pool per contract. \(A_t\) is the total amount of tokens supplied. \(\Delta T\) is the difference in time between now and the previous release (in seconds). \(T_t\) is the total duration of the LBP (24 hrs). \(P_n\) is the market price of the token. \(P_O\) is the starting price of the token (\$3). 可以看到项目代币的市场价格越高,合约就会释放更多的项目代币。这一定程度缓解了大家抢购项目代币对价格的影响。使用 LBP 可以帮助代币拍卖价格一定程度靠近代币初始价格。因此在参加 LBP 的时候,我们需要关注初始价格是否合理。 💬 总结 目前大多数项目都采用 Fair Launch,Democratic Launch。这两种方式对于用户来说成本更小。除了这几种常见方式,还有一些较为简单的方式没有介绍,例如直接进行拍卖,或者以特定价格预售代币等等。希望大家以后开发自己的区块链项目,能够选择最适合自己的代币分发方式。 📔 相关阅读: Balancer LBP 文档 ❤ 如果你喜欢这篇文章,不妨订阅 un.block。

2021/4/24
articleCard.readMore

RAI

以太坊创始人看好的 RAI 到底独特在哪?RAI 为何能成为加密货币世界的美元? ❓ 什么是 RAI RAI 不像 USDT,DAI 之类的传统稳定币,RAI 标榜自己为稳定资产,不是稳定币。虽然大家的名字中都有稳定二字,但是大家的设计理念完全不同。传统稳定币最重要的是和美元锚定,绝对稳定的价格。RAI 称他们为 Pegged Coin。相比和美元锚定,RAI 并不直接和什么资产挂钩。RAI 的稳定指的是减少抵押资产的波动性。RAI 的稳定由 RAI 的市场价格靠近动态调整的赎回价格所保证。 RAI 在官网把自己比作稳定的资产,就跟美元在传统金融的地位一样。从前美元和黄金挂钩,现在美元不和任何东西挂钩,但它依然是为稳定资产。 ⚙️ RAI的货币机制 RAI 在某些地方和 DAI 很像,官方也声明他们参考了 DAI 的设计。如果对稳定币不熟悉的可以看这篇介绍。铸造 RAI 需要抵押 ETH。RAI 通过这样几个手段影响 RAI 的价格 赎回价格(Redemption Price)可以理解为 RAI 的目标价格 赎回率(Redemption rate):激励或阻止用户销毁 RAI。赎回率控制着赎回价格 1 s 内的变化 铸造价格(Borrowing Power):1 ETH 可以铸造多少 RAI RAI 业界首创的使用 PID 来控制赎回率来缩小赎回价格和市场价格差距。PID 是一种易于实现的算法,使用过去和预测未来的信息来减少现在的值和目标值之间误差。PID 控制器的简介可以看 MATLAB 的视频。 PID 的引入也减少了社区治理的需求。RAI 完全可以独立的运行。 ⚠️ 当然 PID 也不是万能的,在以下情况会需要管理员的介入: 缺少流动性 市场操纵 DAO 推广过度的激励措施 单边市场行情 RAI 背后的团队来自 BlockScience。从他们官网的介绍可以感觉到他们的独特之处。他们创新性的将系统工程,运筹学应用在了区块链金融产品。除 RAI 之外,他们还开发了 cadCAD 用于模拟和验证复杂系统的运行。 💬 感想: 看下来感觉 RAI 受到 V 神的推崇不是没有原因的。RAI 在机制上并没有太多的创新之处。它并不像 2020 年底出现的 Basis,DSD 创新的使用了双币或者三币机制。RAI 的创新在于 PID 算法的使用以及它的理念,想要做 DEFI 世界的美金。习惯了稳定币的老玩家或许很难理解这样一个”不稳定“的稳定资产。 美金作为稳定资产,稳定在于它的购买力,而不是货币之间的汇率。然而今天的 DEFI 只有币币交易即汇率,购买力还很模糊。我更喜欢将目前的 RAI 定义为波动较少的ETH。对货币和经济有独特的见解的读者欢迎留言讨论。 Basis 和 DSD 的机制在半年内被市场发现了漏洞,当币价低于锚定价格时,债券(Bond)并不能有效的提升币价。让我们看看半年后,市场将会怎么评价RAI。 📔 相关阅读: 白皮书 RAI 设计简析 RAI 算法深入 Reflexer:不同于稳定币的另一原生加密稳定资产 RAI | 项目介绍 ❤ 如果你喜欢这篇文章,不妨订阅 un.block。

2021/4/17
articleCard.readMore

ForceDAO

来看看一行价值 38 万美元的代码 Force DAO 是最近的 DEFI 明星项目,但它一上线就发生了严重的安全事故。目前 FORCE DAO 空投已经暂停。本期本周热点将会为你介绍区块链安全,以及回顾 FORCE DAO 的安全漏洞。 🔓 安全 安全是个有人在意,有人不在意的问题。随着互联网的兴盛,各种数据泄露,黑客攻击也层出不穷。相比过去的小打小闹,现在的黑客行动有着更加明确的目标,强大的破坏力。在区块链中,安全是重中之重。因为区块链与钱的连接更加紧密,黑客们更有攻击的动力。一个严重的安全问题可能导致一个区块链项目的失败。有关区块链给安全带来的独特挑战,我们有机会再介绍。 ⚔️ 攻击分析 从项目方的披露中我们可以了解攻击的流程。受到攻击的是 xFORCE Vault。这个合约负责 xFROCE 代币的生成和销毁。正常的逻辑是用户抵押 FORCE 代币,收到 xFORCE 代币。漏洞是没有校验 FORCE 代币的转账结果。这导致攻击者可以让 FORCE 代币转账失败,但仍旧收到 xFORCE 代币。 没有校验函数返回值是智能合约中很常见的问题。在此次事件中,攻击者就是利用了合约并没有处理 FORCE 代币 transferFrom 的返回值,凭空铸造了很多 xFORCE。然后将 xFORCE 销毁,换回 FORCE。合约认为 transferFrom 必定成功,即使用户并没有真的把 FORCE 转给智能合约。漏洞在ForceProfitSharing.sol L43 。 🔧 漏洞修补 在开发过程中我们可以添加代码来处理 transferFrom 的返回值。我们也可以使用 SafeERC20 的 · safeTransferFrom。使用 safeTransferFrom 时,如果转账失败整个交易会进行回滚。 📢 感想 我个人觉得这是一个十分容易发现的漏洞。不需要人工审计,静态分析器也能发现这个问题。很有可能项目方没有进行正规的代码审计。 在报告中他们提到 xFORCE vault 代码来自 xSUSHI,FORCE 来自 Aragon Minime。xSUSHI 代码假设转账操作失败会回滚,然而 FORCE 并没有实现转账失败回滚的功能(缝合失败)。我们可以理解为项目方借用了其他项目的代码,但并没有弄清楚这些代码运行的前提。 DEFI 开发越来越复杂,开发者们会去复用其他项目的一些代码。然而这些项目代码在编写之初并没有考虑到被他人使用,因此文档不够完善。这种稀里糊涂使用别人的代码的行为在未来或许会导致更多的问题。 因此,作为一个智能合约开发者,只掌握开发技术是不够的,我们还需要了解基本的安全漏洞。如果注意这几点,一个智能合约应该可以规避绝大部分漏洞: 使用静态工具进行分析,例如 Slither。理解,评估静态工具生成的漏洞报告,这需要开发者熟悉常见的漏洞及其危害。 再三检查合约代码中跟钱有关的的逻辑。比如转账的数量,转账的前置条件等。 ❤ 如果你喜欢这篇文章,不妨订阅 un.block。

2021/4/10
articleCard.readMore

IBC

跨链是今年的热门话题 ❓ 为什么需要 IBC ( Inter-Blockchain Communication ) 每个区块链都是一个独立,自治的系统。它们不依赖外部信息,独立地生产区块,验证区块。起初开发者们都在以太坊上用智能合约创造自己的 DApp。这些 DApp 可以互相调用。随着需求的扩展,以太坊逐渐不能满足这些复杂的需求。常见的问题有性能瓶颈, EVM 无法满足需求,无法完全自治。因此开发者开始尝试为自己的 DApp 定制一条区块链。当这些 DApp 都建立在各自定制化的链上时,互相交流便困难了起来。区块链自治的特性成了最大的绊脚石。如何安全有效区去中心化的让消息跨链传输困扰了开发者很久。 👀 IBC 是什么 IBC(inter-blockchain communication protocol)是 Cosmos 推出的通用跨链信息传输协议。在保证各个链自治,处理交易速度的同时,IBC 让信息和资产跨链更加的去中心化,安全和便捷。200+ 的服务和应用,超过 800 亿美金的资产采用了 IBC。IBC 就像区块链世界的 TCP/IP 协议,让区块链网络变得可能。 在 IBC 的帮助下,采用不同共识机制,网络的区块链得以互相交流,只要他们的共识机制满足 Fast Finality,即所有交易都会被快速打包,并且无法撤销,更改。 比特币和以太坊并不满足 Fast Finality,因此 Cosmos 为他们定制化了跨链方案:两条支持 Fast Finality 的定制区块链和 IBC。这两条定制链分别跟踪比特币和以太坊的状态。由于这两条定制链兼容 IBC,并且拥有比特币,以太坊的最新状态,跨链问题就此解决。 🌰 IBC:举个栗子 接下来我们用一个例子来解释一下 IBC 是如何运行的。假设我们有两个使用 IBC 的区块链,地球和 火星。我们希望从地球向火星发送一条 ”Hello World“。我们首先需要运行一个 Relayer 来进行消息的传递。Relayer 会持续检查链的状态,并在另一条链上创建包含对应消息的交易。在使用 IBC 的情况下,地球上会跑一个火星的轻量化客户端,这样地球就可以验证火星的状态,确保 Relayer 传递的信息是具有有效性和准确性。同样,火星也会跑一个地球的客户端。 与 TCP/IP 相同,两条链会先进行握手来进行身份认证,为安全的传输消息做准备。接下来我们只要在地球创建对应的 “Hello World” 消息,Relayer 会将其传输到火星上。IBC 确保数据传输的安全性。接下来便是 onAck,onTimedout 等事件的触发。 需要注意的是 IBC 只负责数据安全的传输。对于数据的序列化则需要建立在区块链上的应用进行处理。 🌌 Cosmos IBC IBC 是一种协议,目前 IBC 已经在 Cosmos SDK 中实现,未来将支持 Kepler,Substrate,Tendermint,Codechain。 Cosmos 通过 IBC 进一步壮大了 Cosmos SDK 的影响力。跨链,定制区块链开发的玩家可不止 Cosmos 一家,Polkadot 也有着自己的解决方案。有机会的话我们会向你们介绍 Polkadot 的奇妙之处。 ❤ 如果你喜欢这篇文章,不妨订阅 un.block。

2021/4/3
articleCard.readMore

快速搭建主网分叉链(fork mainnet)

区块链开发的体验还是有点差。 随着 Defi 的发展,智能合约开始相互调用。这给开发和测试带来了一定的难度。我们可以在本地搭建测试链,然后部署需要调用的外部合约。也可以直接使用测试网络,调用部署上面的外部合约。这两种方法都很麻烦。对于第一种方法,如果需要重置环境,那么我们每次都要重新部署外部合约。对于第二种方法,不是所有的合约都部署到了测试网络,而且有些测试网络上的合约和主网会有所区别。 最简单的方法就是我们从主网分叉一条链进行本地开发和维护。需要重置时,就重新进行分叉。这样测试环境基本和主网就是一摸一样了。 Truffle Team 这是 Truffle Teams。他们支持 Sandbox 功能。用户可以一键搭建一条从主网分叉的链。这条链运行在云端,我们只需要通过 RPC 进行调用即可。免费用户至多拥有一个沙盒。 Sandbox 的好处在于即开即用,链运行在云端,适合团队协作。坏处在于没有日志,无法追踪新产生的交易。如果忘记了新部署的合约地址,那么就得重新部署一遍。 Ganache Ganache-cli 也支持从主网进行分叉。可能这就是 Truffle Team 用的产品吧。使用之前我们需要有一个 Provider。可以是 Infura,也可以用不需要注册的 cloudflare-eth。运行起来也很方便,而且支持了更多的自定义选项。ganache-cli --fork https://mainnet.infura.io/v3/{infura_project_id}@{block_number}或ganache-cli -f https://cloudflare-eth.com/ -m "clutch captain shoe salt awake harvest setup primary inmate ugly among become" -i 999 -u 0x9759A6Ac90977b93B58547b4A71c78317f391A28 f provider。 m 助记词。前十个地址有 100ETH。 i 网络 ID。 u 地址拥有写入权限,不需要知道私钥。 启动了测试链之后,我们可以在终端看到最新的交易信息等。此测试链可以用于 Remix,Truffle,Hardhat。 由于我们用 Ganache-cli 启动测试链,我们没法使用 Ganache GUI。 Hardhat 这个跟 Ganache-cli 差不多。相关源代码。 原理 不用担心分叉主网作为测试链会占很多内存。这些方法都不会将主网信息全部下载到本地,最多进行缓存,加快处理速度。所有关于主网的信息,我们都会通过 Provider 进行查询,只有新的区块会保存在本地。 参考 Testing on Mainnet with Jest, Ganache, and Uniswap Testing your smart contract with existing protocols: Ganache fork - EthereumDev Ethereum development environment for professionals by Nomic Labs

2021/3/6
articleCard.readMore

稳定币简析

目前稳定币的总市值大约在 300 亿美金,24 小时交易量为 1000 亿美金。 稳定币 缺乏约束的数字货币价格波动总是很大。这让许多习惯以美金计数的人很难受。为了解决数字货币波动性的问题,大家开始研究稳定币。稳定币一般与美元 1:1 兑换。但在实际应用中其汇率会有波动。最先出现的稳定币是基于保证金的。即每个代币背后都有大于等于 1 美金的等价资产作为抵押。 其中最典型的为 USDT 和 DAI。USDT 发行于 2014 年,是中心化稳定币的代表。每个 USDT 都有 1 美金的等价物作为担保。和银行类似,USDT 的发行公司有能力冻结用户资产。USDT 目前的市值为 \$ 200 亿。24 小时交易量为 \$ 600 亿。 DAI 则为去中心化,基于保证金的稳定币代表。同样发行于 2014 年的 DAI 市值为 \$ 11 亿,24 小时交易量为 \$ 3 亿。用户通过超额抵押区块链资产来铸造 DAI。用户归还 DAI 可以赎回自己的资产。目前其质押资产总额约为 \$ 20 亿。DAI 通过改变抵押率来维持其币价。除此之外社区还充当最后的保险。如果抵押资产价格下跌至目标点位(即保证金不够了),社区将充当最后的买家。 基于保证金的稳定币最大问题在于其资金利用率。保证金并不能得到充分的利用。其好处便是更加稳定的价格。 今年出现了截然不同的算法稳定币。设计者借鉴法币的历史,基本的财政和货币政策设计出不同的算法稳定币。 基于通涨和通缩的算法稳定币是最早出现的。他们应用了最基本的供需理论。需求不变时,当供应减少时价格上升,供应增加时价格下降。运用到代币设计中便是当价格大于 \$ 1 时,用户钱包里的代币数量会变多。低于 \$ 1 时,用户钱包里的代币数量会变少。这是一个非常简单的设计,但其问题在于用户钱包里的代币数量会变换,这很反直觉。并且长期持有此代币,其价值会有巨大的变化。比较直观的理解方式是拥有 1 个代币代表拥有此代币市值的固定一部分。市值上升则我获益,市值下降则我亏损。这种稳定币的设计并不能保证此代币在长期持有的过程中有稳定的价值。这种代币的代表为 AMPL,市值为 \$ 2.7 亿,24 小时交易量为 \$ 900 万。 更为精巧的算法稳定币借鉴了央行的货币政策。当价格低于 \$ 1 时用户可以以低于面值的价格购买债券。这些债券在价格高于 \$ 1 时可以兑换。例如用户花价值 ​\$ 0.6 的代币便可以买到在未来可以兑换 1 个代币的债券。此时购买债券就相当于减少代币流动性。在实际的设计中这些债券往往风险很大,因为债券可能有过期时间,兑换债券有费用,增发的代币无法满足债券的兑换需求等等。当价格高于 \$ 1 时,代币会进行增发。一部分代币会预留给债券的兑换,另一部分代币会奖励给提供代币交易对流动性的用户。ESD 便是这种设计的典型。其市值为 \$ 4.7 亿,24 小时交易量为 \$ 1600 万。 最新的算法稳定币则采用了债券和股票的机制。债券就跟我们之前讲的一样。股票则是用来分红的。当代币价格大于 \$ 1 时,一部分增发的代币将发给股票的持有者。BASIS 采用了这种设计。其稳定币 BAC 市值为 ​\$ 9000 万,24 小时交易量为 ​\$ 3300 万。其股票 BAS 市值为 ​\$ 1.3 亿,24 小时交易量为 \$ 4600 万。BAS 的市值远超 BAC,颇有公司小小但是估值很高的感觉。 目前算法稳定币倍诟病较多的便是其债券的设计。债券风险太大并且因为技术上的原因无法在二级市场进行交易。算法稳定币相较基于保证金的稳定币没有了资金领用率的烦恼,并且不需要任何担保资金便可以启动,使其更加的灵活。或许未来能找到其他的用途。 经济学在稳定币的设计中越发重要。简单的供需理论便是算法稳定币的雏形。希望明年会出现设计更加巧妙的稳定币。 Reference 算法稳定币挖矿策略、心得以及未来的发展趋势 USDT、BaseCoin 和 MakerDAO 的对比:谁会胜出?

2021/1/5
articleCard.readMore

2020 这一年

我们走,2021。 课程 今年一共上了 16 节课。 https://s3-us-west-2.amazonaws.com/secure.notion-static.com/df079def-4f11-4e19-92fc-458451e08c69/download_(1).png Side project 今年一共做了 13 个,大概是一个月一个。这其中有些 Project 计划是一起用的。比如 Gallery 和 Daily Picture 。Daily Picture 负责抓取图片,Gallery 负责前端显示,Image Excerpt 负责为十几张图片生成一个统一的颜色预览图。 👛 FRIEND :这是我目前正在进行的项目。我希望可以探索一下代币化个人价值和社交价值。目前的想法是可以将个人代币的价值与你朋友的代币进行锚定。个人可以更改这个锚定价格。毕竟人都在进步,如果你进步的比你朋友快,你就应该提高代币的锚定价格。 那这些个人代币可以怎么使用,又有什么价值呢?目前我想到的是这些代币可以用于赞助,VIP,付费阅读,付费提问,自定义化的付费服务,等等。代币可以分发给那些支持者,比如在社交媒体上给你点赞,转发你的推文等等。 这是我第一次尝试智能合约开发。踏过了 Solidity,各种开发框架,本地环境搭建,Debug,Test 等等的坑。智能合约开发和 Debug 都比 Web 开发或者 Python 之类的难度高。由于智能合约更新的困难,我也写了很多 Test。Test 代码大概在合约代码的两倍左右。 具体的一些坑可以看我的 Twitter。关于智能合约开发的推荐流程如果大家感兴趣的化可以考虑以后整理一下。 🎰 Variational Inference Solver for CP Decomposition :这个是我第一次使用 Pytorch,第一次尝试机器学习。感觉倒是不错。Pytorch 非常的简单易用,至少写网络结构的时候是这样的。比较麻烦的是训练,测试和调参的代码。这些代码的行数是网络结构的 4 倍。 这个项目是张量计算的期末项目。虽说是张量积算课,这个项目更需要的是机器学习的技巧。在众多的 Variational Inference Solver 中,我们最后选择了 Variational AutoEncoder 去实现 CP Decompostion 的重建。 这个项目主要的困难之一是对问题的定义。这个题目是教授直接扔给我们的。看到题目的那一瞬间就是迷茫,根本不知道题目里的这些术语是什么意思。在未知的领域逐渐摸索,找到思路。这可能是对大多数人来说最害怕的部分。因为在探索的过程中不知道自己的思路是否正确,离终点到底还有多远。随着截止日期的临近,这种压力会越来越大。 接下来的困难就是技术实现上的难题了。之前提到过我以前从来没有用过机器学习,幸亏 Pytorch 上手容易,我并没有在网络结构上吃太多的亏。主要的问题还是调参。应该用多大的网络,训练数据要多大,batch,learning rate 又分别是多少。我最后采用了 Ray 来进行自动调参。自动调参的想法很简单,就是尝试不同的超参数组合。但自动调参的代码写起来还挺多的,上百行的样子。最后的效果其实也差不多,没有想象中翻天覆地的变化。 💰 Ethereum wallet analysis :这是在 DEFI 火热的时候写的。用于分析某个钱包地址 DEFI 投资的表现。如果这个钱包表现好的话,我可以选择跟单,也去赚一点钱。 这个项目的主要难点之一是数据清洗。我从 Zerio.io 上获取钱包的交易数据,用 Pandas 进行清洗。第一次使用 Pandas 清洗数据遇到不少难点。比如怎么处理日期,怎么对行和列进行操作等等的基础问题。 后续的分析也遇到不少问题。分析的思路很简单,首先把交易根据交易对进行分类,然后分析每个交易对的盈利情况。进一步分析就把交易对的交易记录详细分成单子。去寻找开仓和平仓的时候,然后分析这一个仓位的盈利情况。但在实际操作中会遇到各种各样的问题。比如用户不平仓,用户的交易对比较复杂,把不同的代币进行呼唤。又比如用户从其他钱包里收到了钱,然后进行交易。这些情况都使分析更加困难。或许用 Time Weighted Rate Of Return 或者 Dollar Weighted Rate Of Return 会更好。 即使找到了好的钱包,真正跟单的时候也很困难。由于 Defi 的高波动率,即使是 1,2 分钟的数据延迟都会对收益造成巨大影响。 关于区块链的新技术,新思想如果大家感兴趣的化可以考虑以后整理一下。 🖼️ Daily picture :这个项目可以把你在 Pixiv 和 Twitter 上点赞的插画给下载下来。我的出发点是希望把我喜欢的插画下载到本地,方便随时欣赏。毕竟一张图片包含着那么多的信息,绝对不是在手机上一眼扫过去 3 秒内能够欣赏完的(上完艺术史的课才意识到一张画应该如何去体会)。因此我采用了增量更新的方式。如果你是第一次运行脚本,它会下载你最近喜欢的 50 张图片。当你下次运行脚本时,它只会下载你最新喜欢的所有图片。 这个项目的难点只是挑选合适的库。好用的 Pixiv 库还真的不多,大部分都有点缺胳膊少腿的感觉。 ✉️ Webpush notification :这是我今年的第一个项目。它可以帮助基于 Hexo 的博客给读者通过浏览器推送通知。如果你希望你的读者能够第一时间知道你的更新,这个插件非常的实用。 在实际开发的过程中,遇到最大的问题就是 Hexo 文档。Hexo 的文档挺简陋的,关于插件开发在网上也没有太多的资料,大部分时候都得自己动动脑子。 而且制作插件也没有什么配套的开发或者 Debug 工具,得自己用最原始的方式慢慢来。 🚗 Ansible playbook for common VPS setup:在之前折腾新的 VPS 的时候,我采用了 Ansible 来做自动化部署。Ansible 我在以前介绍过,可以很方便的进行自动化运维,强大的 Devop 工具。这个仓库包含了我自己常用的 Ansible 脚本。 ☁️ BlenderCloudRender:用 VPS 或者免费的 Goolge Colab 来渲染自己的 3D 作品。那段时间我特别喜欢做一些 3D 的东西。但是 3D 的东西渲染又很慢。所以动手写了这样一个脚本可以把渲染放在云端。由于专业的渲染服务器太贵,我就选择了把渲染交给便宜的 VPS 或者免费的 Google Colab。 这个项目的难点在于和服务器通信。和服务器搭建了 SSH 连接后怎么跟它进行通信,怎么要求它执行脚本,如何获取脚本执行结果。 ➕ ShuttleBus:这个项目是优化班车排班,是我运筹学的扩展。由于全程调用 Google 的 OR 库,其实并没太要求运筹学。 项目的难点在于将问题建模,变成一个个 constraint。然后将这些 constratint 按照文档一个个变成代码。有一些比较偏门的 constraint 我找了很久。另一个难点便是数据。由于要求每段路程的驾车时间,如何获取这些时间。如果我们从导航上获取这些时间,可信度又是多少?我们需要基于统计学给出一些解释。 🕸️ Hexo cheatsheet :这也是今年上半年的一个项目。现在看来这就是个换皮项目。将别人的 cheatsheets 网站样式扒下来放到 Hexo 里去。当初觉得自己需要一个记录 cheatsheet 的网站,但实际做完以后发现不如 Notion 好用。 我的 CSS 一直挺菜的,做这个最挣扎的就是改 CSS 和模板文件。 ⚙️ Tool Site:这个网站计划是来展示我的工具的。随着使用的工具越来越多,我觉得有必要记录并且展示这些工具。但最后还是发现不如 Notion 好用。 由于我不擅长写 CSS,我前期使用了可视化的网站开发工具。把样式做好了以后直接导出 React 代码,自己再给它接上数据就行了。实际使用体验还不错,基本避过了我最讨厌的 CSS。缺点之一是导出的 React 代码有点奇怪,用了不少那个开发工具定制化的组件。另一个缺点就是接上数据以后的项目就不能重新倒入了。不太方便迭代。 🖼️ Gallery:这是个半成品,是作为 Daily Picture 的前端。原来的构想是可以有一个网页来欣赏自己喜欢的插画。希望这个网页可以尽可能大的展示插画。但是由于我自己养成不了欣赏以前喜欢的插画的原因,不了了之。 🖼️ ImageExcerpt:Gallery 的配套工具。用于给一个帖子几十张图片生成预览图。思路是我们提取每一张图片的调色盘。接着我们按照图片顺序,将这些调色盘一行行的堆叠起来。这样只看预览图就可以感受到这个帖子里图片的色调和情感。 📔 Hetushu :这是一个很简单的项目。只是把小说从网站上扒下来。 这个项目的难点是后续去除广告。网站的反爬措施之一就是添加了很多广告在正文。网页浏览时看不见,但你把文字扒下来的时候就会发现这些千奇百怪很难用正则匹配去除的广告。 明年 明年也就是 2021 年已经来了。2021 年应该是比较重要的一年,因为大学要毕业了。这一年的决定将会直接影响未来的 2-3 年。到底是走哪个方向呢?数据科学?应用数学?区块链? 明年希望能够拓展一下知识面。多看一点书,多学学其他的东西。就目前来看,希望 2021 年可以看一些诗词有关的书。古人对于字词的精确运用令人叹为观止。作为一个讲白话文的现代人也只有羡慕的份了。举个例子,大家可以感受一下古人的用词。“小山重叠金明灭,鬓云欲度香腮雪”来自温庭筠写的菩萨蛮。如果让我来概括这句词,大概就是大中午的,女孩子还在睡觉。这画面感,韵味差的实在是太远了。原词中对颜色运用强烈的刺激着读者的感官。明年希望以次为契机,能够提升对字词的运用。 生活在一个法治社会,不学习一点法律怎么行。希望明年通过罗翔的视频了解一下中国的法律,也是了解一下专精于法律的人他们是怎么思考的。 不少人对明年的区块链都抱有期待。期待看到 DEFI 催化的一系列变动。我也是挺希望明年能够以开发者去加入这个生态。现在以太坊的手续费实在是太高了,我一再怀疑是不是只能做一些跟钱有关的应用。只有更多的利益能够战胜更高的手续费。今年区块链的热门项目都跟经济学有着很大变化。一个好的激励措施可以让用户真正自发的参与到项目当中去。经济学或许会应用到未来更多的区块链项目中。要不是学校里经济专业的预备课程打分太低,我都想修经济专业了。 另一个比较重要的是对知识和信息的整理。今年磕磕绊绊开始使用 Notion 了。用 Notion 来记录一些比较好用的工具,整理一些笔记和知识。实际需要用到这些笔记的次数也在不断增加。随着记录越来越多的东西,今后可能会更加频繁的回过头来找些什么。整理信息是明年最重要的,我需要一个存储空间更大的脑子。 类似于信息整理,下半年上网课的时候我发现了 Figma 非常适合用来做笔记。它强大的排版功能让我随心所欲的整理知识点。把重要的定义或者公式截图下来根据章节放到不同的 Frame 里。目前最大的问题在于索引。没办法搜索图片中的文字,或者知识点。另一个问题是图片的尺寸大小不一,字或大或小,不太工整。看看明年怎么改进一下,应该不会太难。大不了写两个插件。这种无限大小的画布用来整理知识点真的很赞。 祝各位读者新的一年要快乐,自由,有意义。

2021/1/1
articleCard.readMore

从哪儿寻找新的区块链项目?

人间一天,币圈一年。这些新项目我们应该去哪里找呢? Web3 基金会也会定期放出他们资助的项目。 Ethereum 基金会:在它的Blog中可以看到最近受到资助的项目。 风投机构 可以在 Crunchbase 上订阅他们。 Dragonfly Capital 投资了很多区块链项目,团队成员以中国人为主,主管是冯波。在它的投资列表中可以找到很多熟悉的项目。在Dragonfly Capital 的研报中可以看见他们投资的新项目。 https://pic1.zhimg.com/80/v2-a6527926ff86de682628f686bb2d20ec_720w.jpg #HASHED 是一个来自韩国的风投机构,关注亚洲和美国的区块链项目。他们主要投资区块链平台,金融基础设施和应用。在这可以发现他们的最新动态。 dekrypt capital Lemniscap。他们的 Blog。 FBG Capital Astronaut Capital Placeholder Picolo Research 聚合了各种区块链项目并且提供调研报告。 Cryptofund提供各种加密货币基金。 Dekrypt Capital 专注于投资区块链基础设施 Coinbase 风投 Ideocolab 风投 Blockchain Capital Pantera Capital 共识实验室提供基金月报。

2021/1/1
articleCard.readMore

Create Smart Contract

一键搭建初始化以太坊开发环境。 开发经历 这个项目有点类似 create-react-app。目的是帮助开发者快速初始化开发环境。做起来还是挺简单的。就是写一个 Node 脚本。里面包含初始化项目文件夹,安装依赖和替换模板文件。具体项目使用和介绍可以 看 Github 主页。 使用指南 首先你得已经全局安装 truffle。这样create-smart-contract myapp,会用 truffle 为你初始化一个项目文件夹。然后为你安装一系列有用的插件和包。最后给你生成一些默认的配置文件。以下是包含的框架,插件,包和配置文件。由于目前 Openzeppelin 不支持 0.8 的 solc,所以我默认使用 0.7 的最新版。 truffle [@truffle/hdwallet-provider](https://www.npmjs.com/package/@truffle/hdwallet-provider) eth-gas-reporter solidity-coverage truffle-assertions hardhat [ @nomiclabs/hardhat-ethers](https://www.npmjs.com/package/@nomiclabs/hardhat-ethers) [@nomiclabs/hardhat-truffle5](https://www.npmjs.com/package/@nomiclabs/hardhat-ethers) [@nomiclabs/hardhat-waffle](https://www.npmjs.com/package/@nomiclabs/hardhat-waffle) [@nomiclabs/hardhat-web3](https://www.npmjs.com/package/@nomiclabs/hardhat-web3) ethers [@openzeppelin/contracts](https://www.npmjs.com/package/@openzeppelin/contracts) chai solidity-docgen mocha prettier prettier-plugin-solidity solc web3 ethereum-waffle .gitignore .prettierrc hardhat.config.js slither.config.json solcover.js truffle-config.js 除此之外我还加入了一些有用的 Node 脚本。 npm run test: 用来跑测试的。我这采用了 Hardhat。因为它跑 test 的速度快,并且支持在智能合约中使用console.log。 npm run doc: 根据 doxygen 自动生成文档。 npm run coverage: 根据配置文件 .solcover.js 生成测试覆盖率报告。 npm run analyze 根据配置文件 slither.config.json 静态分析智能合约。注意:要求已经安装 Slither 自定义 包 你可以自定义想要的包。更改index.js的installPackages。例如 1 2 3 4 5 6 7 8 9 const installPackages = () => { return new Promise((resolve) => { console.log("\nInstalling hardhat\n".cyan); shell.exec(`npm install --save-dev hardhat`, () => { console.log("\nFinished installing packages\n".green); resolve(); }); }); }; 模板 你可以自己更改,添加或删除模板。例如你想要添加模板,你需要将模板文件加入 templates/ 然后修改 templates/templates.js。例如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 let fs = require("fs"); let path = require("path"); const gitIgnore = fs.readFileSync(path.resolve(__dirname, "./gitignore")); const solcover = fs.readFileSync(path.resolve(__dirname, "./solcover.js")); const slither = fs.readFileSync( path.resolve(__dirname, "./slither.config.json") ); const hardhatConfig = fs.readFileSync( path.resolve(__dirname, "./hardhat.config.js") ); const truffleConfig = fs.readFileSync( path.resolve(__dirname, "./truffle-config.js") ); const prettier = fs.readFileSync(path.resolve(__dirname, "./.prettierrc")); const package = fs.readFileSync(path.resolve(__dirname, "package.json")); const env = fs.readFileSync(path.resolve(__dirname, ".env")); module.exports = { ".gitignore": gitIgnore, "solcover.js": solcover, "slither.config.json": slither, "truffle-config.js": truffleConfig, "hardhat.config.js": hardhatConfig, ".prettierrc": prettier, "package.json": package, ".env": env, }; 祝你开发愉快。

2021/1/1
articleCard.readMore

Polkadot:今年最有潜力的公链

我最近才知道有Polkadot这么一条公链。它的市值排名第八。我知道的的确有点晚了。它的创始人是以太坊的联合创始人。它有 Web3 基金会的支持。如果说在以太坊上开发的是智能合约,Polkadot 上开发的就是区块链。可以自定义的区块链给了开发者更多的自由,我们可以改变它的 Runtime,改变它的共识算法等等。官方也发行了开发工具 Substrate 帮助开发者快速构建自己想要的区块链。Polkadot 这条公链便是基于 Substrate 框架。在 Polkadot 创始人的一次演讲中,他为了展示 Substrate 的易用性,现场 Coding Demo 特意拿出刚刚从苹果店买的 Macbook Pro。现场开箱并使用 Substrate 开发了一条区块链。 说了这么多开发者关心的问题,Polkadot 到底解决了什么问题呢? 在我看来 Polkadot 解决了并发的问题。因为其独特的 Relay Network, Polkadot 可以并行的处理所有挂在其上面的公链的交易。跨链在 Polkadot 的设计下也变得简单了。数据,资产都可以在不同的链上进行转化。如果用过 Flamingo 等跨链资产工具的人应该知道这些工具有多难用。每次跨链都得调用很多的合约,交不少的手续费。另一个有意思的特性是区块链的升级。这应该算是 Substrate 的特性。由于其将 Runtime 编译成 WASM 放在区块中,区块链的升级不再会导致硬分叉。传统区块链升级需要矿工们升级节点软件版本。如果有些矿工不愿意升级或者忘记升级,这条区块链就会变成两条,也就是硬分叉。 对于挂在 Polkadot 上的链,官方称其为 Parachain。这些 Parachain 既可以是公开的,也可以是私有的。既然 Polkadot 是基于 Substrate 开发的,Parachain 也需要基于 Substrate 开发,那么我们可不可以挂一条 Polkadot 到 Polkadot 上呢?这的确是可行的,我们可以无限套娃。目前官方给出的正在开发的 Parachain 有兼容 EVM 的智能合约区块链,文件存储区块链,身份验证区块链,隐私区块链,金融区块链,IOT 区块链,预言机(Chainlink)等等。这些项目有的看的云里雾里,有的只是把现有的应用拷贝到 Polkadot 上。

2020/11/24
articleCard.readMore

2020 年第 41 周

确定了这个学期的选课。 这周做了什么 VPS 设置 把 VPS 给设置好了。其中最花时间的是网络的配置,反向代理的配置。这些部分出错了很难找到原因,需要不断的去更改配置找到正确的方法。 我本来以为 VPS 价格翻倍性能也翻倍,其实并不是。$5 的 VPS 是 1G1C。$10 的 VPS 是 2G1C。价格翻倍了,但是 CPU 数量没变。但是从$20 到开始,基本就是价格翻倍,性能翻倍了。 关于具体在 VPS 上安装了那些软件,怎么进行维护可以看 这一篇文章。 这周看了什么 Array programming with NumPy:这篇文章展示了 Numpy Array Computation 的火爆以及先进。大致感觉就是 Numpy 自己吹自己一波。Numpy 觉得未来的挑战将会是面临更多的用户以及为不同的专业计算平台做适配,比如 FPGA,TPU 等等。 Nginx-proxy:方便快捷的为运行在 Docker 中的服务做反向代理。 Huginn: 自动化软件,像 IFTTT。 用谁都能看懂的方法解释分布式系统,大概。.:一个听不错的分布式系统专栏。 一个书魔程序员的读书简评:同上。 rsms: 一个设计师的个人网站。颜色的运用很棒。 一本书:Designing Data-Intensive Applications, 对应程序员 3 能力中的工具箱深度广度两个概念-1:多范式编程和最小表达力原则 (least expressiveness principle), 对应程序员 3 能力中的程序语言理解深度和表达抽象能力两个概念-2:领域驱动设计 (Domain Driven Design),对应程序员 3 能力中的方法论,编程大道 (programming in the big),和构架能力。 歌曲 Oskar Roman Jezior Oskar Roman Jezior 是一位德国的钢琴家。他弹奏了很多华语流行歌曲,比如《时间煮雨》,《不为谁而作的歌》,《十年》,《说好不哭》。他的弹奏富有感情,轻重缓急的对比非常明显。 这周评价 除了网格交易,上周要做的都做了。 Designing Data-Intensive Applications 目前进度:1/12 下周做什么 读一章 Designing Data-Intensive Applications 自动抓取 Twitter 上喜爱的图片保存到本地 网格交易

2020/10/11
articleCard.readMore

我拿 VPS 来干什么

从一开始不知道在 VPS 上跑什么服务,到现在 VPS 上跑满服务。 随着容器技术的成熟,部署软件和维护 VPS 不再像以前那么复杂。以前的软件大多是直接跑在 VPS 上,我们要为其设置反向代理,安装 Nginx。在软件安装的时候也很容易出错。现在很多软件都支持用 Docker 安装。稍微修改一下配置文件,我们就可以一键启动容器了。服务相互之间隔离,管理 Docker 可比之前折腾直接装在本机上的软件方便多了。那么我们具体应该怎么管理 VPS,VPS 上又有什么有用的软件可以安装呢? VPS 管理 首先介绍几个提升 VPS 使用体验的软件。他们分别是 VSCode,Ansible,Htop,Portainer,Nginx-Proxy,Netdata。 Vscode 自从 VSCode 推出了远程 SSH 功能,在 VPS 编辑文件一下子变得方便了起来。编辑文件的同时还有 Terminal,还有文件树。如果安装了 Docker 插件,我们还可以轻松的管理容器。不过需要注意的是在 1G1C 的 VPS 上可能跑不动 VSCode。 Ansible 我曾在第 35 周提到过 Ansible,一个自动运维工具。我们可以将常用的操作写成 Ansible Playbook 以重复使用。比较好的习惯便是执行一个操作遍将其写成 Ansible Playbook,保证它的可重复性。 Ansible playbook 某种意义上与docker-compose.yml 有重叠。例如我们在docker-compose.yml中有两个 service,Nginx 和 Portainer。我们既可以在 Ansible playbook 中直接调用这个docker-compose.yml,也可以将 Nginx 和 Portainer 分别写进 Ansible playbook,不再用到 docker-compose.yml。这么做各有利弊,docker-compose.yml更方便进行分享。写进 Ansible playbook 中则更加灵活,方便后续修改和使用。 目前唯一的缺点是 Ansible 不支持 Windows,我们需要在 WSL 或 Docker 中运行 Ansible。 Htop 一个来查看系统资源的 Linux 命令。可以展示 CPU,RAM,进程占用系统资源的信息。它也支持过滤和搜索,可以展示特定的某些进程的系统资源使用。 Portainer Portainer 是一个容器管理软件。它有一个 WebUI,让我们可以在 Web 界面管理 VPS 上的容器。以前删除一个容器,我们需要先找到容器的 ID,然后停止它,最后删除它。在 Portainer 上我们可以一键移除容器,并且可以方便的删除现有容器不在使用的 Volume。除了管理容器,Portainer 也可以用来部署容器,给容器分组等等。 Nginx-Proxy 为了可以用域名访问到这些在不同端口的服务,我们需要一个反向代理。反向代理会帮助我们将进入的流量转发到对应的服务中去。 Nginx-Proxy 就是这样一个软件可以帮助我们将流量自动转发到运行在 Docker 中的服务去。这算是配置非常简单的网络服务软件。如果需要额外的 SSL,可以使用配套的 docker-letsencrypt-nginx-proxy-companion。照着教程走就可以完美完成设置。需要注意的是如果你用 Cloudflare 做 DNS,记得关闭 Proxy 模式,用 DNS Only 模式。 Netdata 一开始认识到的资源监控软件是 Grafana。Grafana 的灵活度更高但是做不到开箱即用,而且还需要安装额外数据库。因此最后我使用过的是轻巧的 Netdata。Netdata 可以做到开箱即用并且展示了大量的系统资源数据。由于展示的数据过多,会显得有些杂乱。 我在用的软件 TinyTinyRss 大家都在用的 RSS 服务。其缺点还是很明显的,很多 UI 设计比较过时,软件较为臃肿占用较多的资源。 Huginn Huginn 是一个自动化软件。用起来有点类似 IFTTT。 如果要使用 Huginn 的邮箱服务,我们需要为其 Docker 添加跟 SFTP 有关的环境变量。具体例子 在这。 Netease music UnblockNeteaseMusic 用来在海外解锁灰掉的网易云音乐。 暂时就这些,仔细一整理发现 Devop 的软件比真正干活的软件要多。最后附上我的docker-compose.yml。

2020/10/11
articleCard.readMore

在 PC 上玩塞尔达传说

没有 Switch 也可以玩满分游戏塞尔达:荒野之息 Wiiu 是任天堂的一款掌机平台。大部分登录 Switch 的游戏都会登录 Wiiu。因此想要玩上塞尔达传说,除了用 Switch 模拟器,我们还可以用 Wiiu 模拟器。 Cemu 便是一款较为成熟,使用方便,支持丰富插件的 Wiiu 模拟器。 下载安装 Cemu 后,游戏应该去哪下载?需要注意的是 Wiiu 游戏分美版,欧版和日版。这些版本的语言并不通用。大部分的汉化补丁只能运行在日版游戏之上。 游戏下载 游戏下载可以用 FunKiiU。只要输入需要游戏的 Title 和 Key 即可下载。在 这个网站 上可以查询到游戏的 Title 和 Key。注意!不要漏掉可能存在的补丁和 DLC。如果漏掉了补丁,可能会出现Your must perform a system update to play ***。这儿 有解决方法。 除了 Funkiiu 这个工具,我们也可以在 这个网站 进行下载。这个网站上集合了很多 Wiiu 游戏,并且这些游戏都包含汉化补丁。 游戏处理和安装 下载完游戏,我们需要将这些凌乱的文件解密成 Wiiu 模拟器可读的文件。CDecrypt 可以帮助我们进行解密。将title.tik和title.tmd拖入CDecrybt_v2.0b.exe。CDecrybt_v2.0b.exe会将这些文件解密为code/,content/,meta/三个文件夹。具体步骤可以参考 这个视频。 导入 DLC 和补丁都是打开 Cemu->文件->Install game title, update or DLC,选中meta/meta.xml即可。 汉化补丁以图像插件的形式工作。我们需要将下载下来的汉化补丁放到Cemu/graphicPacks下,并且自己为其编写一份rules.txt。具体操作见这个视频。 游戏优化 在图像插件之中有一些提升画质,粒子效果,阴影的插件,还有锁帧,更改分辨率的插件。这些插件根据个人需要打开。 Cemu 有两套 API 可以使用。在选项->工具->常规设定->图像中可以查看。分别为 OpenGl,Vulkan。Vulkan 可以调用显卡,提供更好的性能。 除了更改 API,我们还可以对 CPU 进行设置。右键点击游戏->Edit game profile, 我们可以根据自己的 CPU 性能调整 CPU ModeMode。 Thread quantum 对性能影响不大。 最提升性能的是替换 Shader 缓存。在这个网站上可以找到几乎所有游戏的 shader 缓存,将下载下来的文件放入cemu/shaderCache/transferable/。这个缓存并没有覆盖所有的资源,即在游戏中我们还会需要加载部分资源。但是相较于不替换,有着巨大的提升。具体步骤 参考视频。 就塞尔达荒野之息,还有 个人开发的光追插件,为塞尔达加上了真实的光影。 终于可以玩上塞尔达了。这个模拟器的性能还行,虽然不能让我达到全程 60 帧,加载素材总会有一点卡,但也总算是能在不差的画质下流畅的跑起来。就连 Switch 的陀螺仪也可以通过 PS4 手柄的陀螺仪进行模拟。这篇文章只是概述了整个流程,具体步骤我都尽量附上了视频。最后这个视频 解释了游戏下载,游戏文件处理汉化安装和输入设置。

2020/10/4
articleCard.readMore

2020 年第 40 周

开学了! 这周做了什么 塞尔达传说 塞尔达传说被奉为开放游戏世界的标杆。作为一个游戏爱好者当然不能错过这款游戏,即使我没有Switch也不行。Cemu给了我在PC上玩塞尔达的机会。它并不是Switch模拟器,而是任天堂的Wiiu模拟器。还有人为其开发了光追插件,塞尔达 RTX ON!具体的安装教程可以参考上一篇文章。 图片展示网站 完成了UI设计,采用了深色背景,图片更有辨识度。很多图片网站都采用了一个网页尽量展示多的图片,比如pixiv,dribbble,点击图片可以进行放大。这种方式有利于展示大量图片,但是不利于用户仔细的观察这些图片。因此我尽可能放更大的图片,给予用户有沉浸感,和更多的图片细节。 对于文章,我们一般会在主页提供摘要来帮助用户快速了解文章的主要内容。那怎么给图片提供摘要呢?这个项目给了我启发。我们可以将所有图片按照某种顺序融合成一张题图。只看题图,我们可以对这些图片的色调有大致的了解。 DEFI 最近大火的DEFI我也参与了一脚。DEFI是Decentralized Finance的缩写,意思为去中心化交易所。整个交易所由智能合约构成,运行在区块链上。交易所的流动资金由用户提供,提供流动资金的用户会获得奖励,一般为交易手续费加上代币奖励。不同DEFI项目区别在于他们的做市商算法,即如何撮合用户的交易。基本所有算法做市商都存在无常损失,即你放进去多少钱提供流动性,拿出来的时候钱只会变少,不会变多。 怎么看为这些项目提供流动性几乎是稳赚不赔。为相对稳定的交易对提供流动性可以降低无常损失。剩下的只要选择收益高的项目就行了。往往项目初期的时候收益较高。在初期,参与的人较少,有更多的激励。总之会不会暴富这说不好,但是手续费是真的贵。以太坊一次转账就是10刀。流动性挖矿似乎钱越多越划算。 除了自己寻找项目,不少传统交易所都推出了流动性挖矿的项目,利率高的惊人。传统交易所整合用户资金,选择合适的项目,进行更高效的流动性挖矿。 从总锁仓价值来看,Defi的快速增长已经过去,目前总锁仓价值在13B左右浮动,已经不在快速增长,甚至出现小幅下滑。 极简欧洲史 这本书用的语言比较随意,读起来也比较轻松。书中从宗教,日耳曼人,罗马这几条线讨论了欧洲中世纪到近代的发展。书中有一些点让我记忆深刻。 中国很早就采用了中央集权,很难理解欧洲到了中世纪还是封建制度。作为国王天天得和自己的强力封臣扯皮,而且国王还打不过这些强力封臣。钱,税收,兵力都得依仗这些封臣。封臣对君主的效忠极大成功依靠契约,而不是利益之类的。随着欧洲各国的摩擦日益加剧,君主们找到了扩充军力的借口。至于这些庞大的军队是为了保家卫国,还是对内打压不听话的封臣就看君主的想法了。在这些扩军的国家中,最神奇的便是英国。英国作为岛国,海军是它与其他国家作战的主力。可是这海军可不能用来打自己的封臣,要打自己的封臣得靠陆军。因此英国的君权仍旧极大的受限于封臣。 统治阶级是如何看待中产阶级呢?统治阶级认为中产阶级的生活依赖于城市,而不是这些统治者。即换了个统治者,中产阶级仍旧那样的活着。 > 这些欧洲君王降伏旧日贵族后,随即成为一个活跃的 新兴阶级一一城市里的中产阶级的支持者。当年这些君主势单力簿,曾经允许各个城镇自治,而随着城市的财富日增,这个让步也变得更加举足轻重。相较于自拥大军、躲在城堡里防御自己的贵族,中产阶级似乎平和得多,不具威胁性。然而,无论贵族多难应付,他们毕竟是社会秩序的一部分,而在这个社会秩序里,国王是天经地义的元首;反观中产阶级,他们的生活方式根本无需国王的存在。长远来看,对于王政的威胁远比贵族更棘手。 # 这周看了什么 * Key Combiner:这个网站可以帮助我们学习和记忆快捷键。网站提供了常用软件的快捷键。 * Coin Gecko:查看和追踪加密货币价格。 * Macro Trends: 提供不同宏观经济指标的走势图。可以查看不同的股票指数,按照行业,市值排序查看股票。 * Zapper.fi:提供钱包的Defi资产分析,提供一键式流动性挖矿。界面美观。 * DeBank:同上,但是提供更多的Defi分析,比如锁仓价值,流动挖矿利率。 * Playwright for Python:微软出品的Python端到端自动化框架,有点像Puppeteer 歌曲 Octopath Traveller OST 《八方旅人》原声带,作者为西木康智。很难想象这么优美有古典风格的曲子是仅仅30岁的西木康智制作的。非常期待他以后的作品。8-bit Music Theory对西木康智在曲子中大量运用转调进行了分析。我乐理差,这个分析也听得一知半解的。 山居秋暝 活泼的嗓音唱出王维的《山居秋暝》。用流行音乐重新诠释古诗给我带来了不同的感觉,不同于中学时代背诵古诗的感觉。这种音律让古诗更加动听,我也更愿意去听。除了这首《山居秋暝》,《杨花落尽子规啼》也是我很喜欢的一首,它并不是那种活泼的感觉。 这周评价 其实这些事情来自最近一个月。自从夏校结束,假期开始我就开始躺,自然也就什么计划,写不出周报。不得不说开学了以后,做事的效率突然飙升。就像电脑从关机状态变成开机运行一样。娱乐的时间减少了倒是真真确确的减少了。我们真的需要那么多娱乐时间吗?假期的时候陪女朋友看了沉默的真相。这属于那种看了开头就知道是什么味道的片子。这部片子的主题是司法公正,官商勾结。这些也算是老生长谈了。这电视剧我不怎么喜欢,总感觉节奏拖沓。有点类似玩手游的感觉。手游厂商跟玩家反着干,给玩家设置诸多限制,不让玩家轻易的拿到他们想要的,比如体力限制,升级需要大量的素材。电视剧为了让观众不那么快的了解到真相,谜底,叙事弯弯绕绕,给线索跟挤牙膏一样。电视剧的叙事手法有点东野圭吾的感觉,寻找案件背后的故事。 下周做什么 读一章Designing Data-Intensive Applications 看Array Programming with Numpy 尝试ActionsFlow 尝试网格交易 使用Trafik 使用Portainer 使用Huginn

2020/10/3
articleCard.readMore

2020 年第 36 周

期末结束了。新学期也快要开始了。新增了这周看了什么板块。 这周做了什么 PM2 PM2 是用来管理,监控 Node.js 服务和进程的,当然它也支持监控 bash 程序。 在这之前我们使用node app.js来启动一个 Node.js 服务。如果想要保证这个服务在 SSH 窗口退出后保持运行,我们需要将其放在 Screen 或者 Tmux 中。 有了 PM2 后,执行pm2 app.js就可以启动 Node.js 程序了。退出 ssh 窗口也不会中止app.js。PM2 还提供了查看app.js的日志,重启,中止程序的功能。我们也可执行pm2 plus以登录 PM2 账号,这样就可以在 PM 官网的仪表盘上管理和监控我们的服务。 如果想要传入参数,可以执行以下命令。pm2 start app.js --name my-api -- --port 4000。这样就传入了port参数给 Node,并且将app.js这个进程命名为 my-api。 Steam 挂卡&卖卡 Steam 挂卡通过使用 Steam 机器人 24 小时不间断玩游戏来获取集换卡片。卖卡就是将这些集换卡片在市场卖出。如果用 Steam 令牌添加了新设备,集换卡片七天内不能交易。 ASF 是比较热门的挂卡程序。我们可以选择在本地挂卡或者在 VPS 上进行挂卡。本地不可能 24 小时开机,所以我选择在 VPS 上进行挂卡。教程 1,教程 2。 在教程 1 当中,作者将 ASF 程序放在另一个 Screen 中运行。像上一节描述的那样,我么可以用 PM2 来达到更好的效果。pm2 ./ArchiSteamFarm。 Pixiv 写了一个脚本把点赞的图收集起来,每周都可以回顾一下过去一周点赞的图,好好的欣赏,评价一下。至于怎么评价可以看怎么判断画的是神作,还是被无脑吹捧的狗屎。由于点赞列表数据里不含时间,所以就增量更新。以前下载到哪里,我们就把在那之后的点赞的图下载一遍。图片相关信息就直接写进图片元数据中,这样移动起来比较方便。 图片元数据的格式分为 EXIF,IPTC,XMP 这几种格式。每一种格式有着自己的数据规范。比如 EXIF 是没有 Title 这一栏的,但是 XMP 却有。对比了他们所提供的格式和我自己所获取的图片数据,我选择 XMP。 虽然将所有图片信息写入元数据方便图片的移动,但我比较担心读取和写入数据时的性能开销。如果影响不大,这个方法比把数据单独写入数据库要简洁很多。即便图片改了名字,元数据也不会丢。 这个 工具 可以在线查看元数据。 Star Renegade 像素风,回合制,Roguelike,RPG 游戏。虽然是像素风格,光影却是正常的。打击特效和音效做的不错,但是看上那么多遍还是会疲劳。 作为一个 Roguelike 游戏,随机的成分并不是特别多,地图虽然是随机,但是 Boss 和资源变化并不大。在每次旅途中会有装备,等级,和队友互相之间的好感系统。这个养成系统感觉是很 RPG 的。但这个 RPG 是在 Roguelike 的框架下,也就是每次死亡,装备,等级,好感都会重置,需要重新获取。由于回合制的节奏,以及 RPG 的机制,每一把的时间都特别长,大概在三个小时左右,这还是打到一大半的位置。 地图与其他简洁明了的 Roguelike 不同,这款游戏并没有地图,取而代之的是 2D RPG 游戏的那种设计。玩家可以在区域内走来走去。整个大区域被划分成更加细小的区划,通过限制玩家进入新的区划的次数来限制玩家的行动点。整个大区域的设计更像是图,而不是 Slay the Spire 那样的树。Star Renegade 通过这种方式更好的展示了游戏的美术设定,玩家也可以与区域中的一些物品进行互动,从而触发一些关于背景文化的对话。这样的坏处就是玩家不容易看清图的结构,游戏的节奏也会被拉慢,因为玩家在游戏战斗之间需要探索。 游戏中独特的扎营机制也放缓了游戏节奏。消耗完三个行动点,玩家就需要扎营,等待新的一天。在扎营期间,玩家可以培养人物之间的好感,使用各种 Buff 的卡片。 相比 Slay the Spire,选择节点,打怪,选择节点,打怪,这款游戏的节奏慢了很多。打一把需要更长的时间。那么每一把之后,玩家会变强从而在下一次走的更远吗?我个人觉得不怎么会。每一把之后的结算所能获取的东西并不多,我至今还卡在第三关。每一次花费两三个小时来到第三关,然后死亡,然后重来,最后放弃。我想这是游戏节奏的问题,又或者是去掉 Roguelike 可以解决的问题。 Ansible Ansible 是一个来自 Red Hat 的运维工具。它可以自动化,批量进行许多操作。它适合用来在已有的服务器上安装和管理软件。 我日常会用到 VPS,并在上面安装或者管理软件。常用的软件也就那几个。那么我们可以把这几个软件的安装和管理写成 Ansible Playbook。以后我们就不再需要重复安装和管理软件的步骤,只需要执行 Playbook 就可以了。用自动化解放了我们的双手。 Ansible 的 Playbook 编写采用渐进式,用户需要写下每一步需要做什么。Ansible 有丰富的 Role(库,插件,比如 安装 Node.js),组件支持,大部分操作都可以用现成的 Role 或者组件实现,不需要自己额外进行编写。 Ansible 没有 Master 的概念,任何一个节点都可以推送命令。Ansible 通过 SSH 连接上节点后,执行对应的命令。由于采用 SSH 进行命令推送,接受命令推送的节点不需要安装 Ansible 客户端。 因此对于我来说最好的实践便是在本地安装好 Ansible,注意它不支持 Windows。将常用的软件配置写成 Ansible Playbook。介于丰富的组件和 Role,这并不难。每当有新的 VPS 时,我们执行相应的 Ansible Playbook 就可以完成所有工作。比如我写了 Tiny Tiny Rss,Unblock Netease Music 的 Playbook,如果以后更换 VPS 就可以很方便的安装这些软件。 我们可以把用到的 Role 放到 Requirement.yml 中,这可以保证换个环境,安装完依赖后,我们之前写的 Playbook 还可以正常运行。 最后推荐一个 视频教程,视频教程虽然看起来慢但是比较容易理解使用者的思路,易于模仿。 这周看了什么 回到夏天: 作曲:爱写歌的小田,作词:雷壮、爱写歌的小田,编曲:罗洋(卡其漠)。然而这个旋律从头到尾就没怎么变过。 Trasfer: 这个工具整合了所有主流的文件分享工具,比如 airpotal,奶牛快传等。文件的分享和下载可以通过命令行完成。传输方法不是点对点,因此借助第三方服务器需要消耗更多的时间。如果想要点对点,节省时间的传输方式可以用 WinSCP 等软件采用 SFTP 的传输方式。 Batch Git Pull: 批量更新 Git 仓库。我想很少有人一次性更新所有仓库吧。对于那些不怎么维护的 Git 仓库,更新了之后只会徒增 bug。那些正在维护的仓库,应该会一个个的更新,慢慢解决 Bug。 Tabnine: 非常好用的 AI 自动补全。当别人只能一个词一个词补全的时候,它可以补全整句话。连for语句也可以帮你补全,list 的 index 也可以帮我补全。 Applied ML: 大公司发的人工智能文章。 Hero Pattern: 可以自定义的 SVG 几何背景图。 autoscrapper: 一个智能的爬虫库。用户将目标告诉它,这个库会返回类似的结果。比如要抓取一个博客中所有文章的标题,用户可以将一个文章的标题告诉它,它便输出所有标题。 怎么判断画的是神作,还是被无脑吹捧的狗屎: 这个视频讲述了作者自己如何判断一幅画好看不好看。 艺术元素: 线条 明暗和颜色 主体形状 材质 空间 艺术原理: 平衡 引导线(视线运动) 对比 颜色明暗 颜色冷暖 颜色饱和 风格统一 规则变化(不重复和呆板) 软的线条和硬的线条组合 直和弯的组合 数据指标: 初次观看时长 重复观看次数 观看后的思考 Thoughts on the market: Morgan Stanley 对于市场的分析。 MyFonts: 识别图片中的字体。 《乔布斯传》作者沃尔特,艾萨克森:“一个具有强烈个性的人身上集合了人文和科学的天赋后所产生的创造力,是在 21 世纪建立创新型经济的关键因素。” 下周做什么 GRE 备考 极简欧洲史 Pixiv 完善 图片展示网站 UI 设计 整理手机浏览器标签页

2020/9/13
articleCard.readMore

2020 年第 35 周

期末了! 这周做了什么 整理电子书 这周抽空把电脑里的电子书整理了一下,给他们分分类,搬一个新家。Caliber 是一个很不错的电子书管理软件,除了 UI 丑一点。Caliber 在导入电子书时会将源文件拷贝到自己的文件夹里。导入成功后,我们就可以把源文件给删掉了。我主要用 Caliber 来管理书籍的元数据和转换格式。很多书的元数据残缺不全,连标题都没有。看着封面输入标题,作者,标签,出版社,评分挺花时间的。如果是一些热门的书籍,可以只添加 ISBN,接着让 Caliber 帮助你自动添加信息。 对于我来说,元数据缺的多的书大多是那些过时的很烂的书。整理的时候舍不得把他们删掉(其实以后也未必会扫两眼),那就得给他们填充元数据。 群星 心血来潮,加了一些 mod 开了一局。策略游戏总是需要玩家做很多选择题。这些选择题的目的都是累积更多的资源。多玩两把就会发现局部最优解。再玩下去则可能变成不断重复自己以前做的决策,陷在局部最优解中。在这一段时间里,每一局游戏都不能带来一些新鲜的反馈。如果想要走出这样的重复可以选择一些以前没有玩过的开局。比如以前走种田流,现在选择多打仗进行扩张。这种选择促使我们找到新的局部最优解,毕竟以前的解不可靠了。 群星里面的事件完成后都有语音提示。在事件较多的中后期,语言提示出现的相当频繁。在手游萌化的当下,手游们请着各式各样的优秀 CV 来配音。群星里翻来覆去都是那几个死板的配音,跟手游们背道而驰,严重损害了游戏体验。得益于丰富的 Mod 支持,我发现有玩家特意氪金聘请战舰少女中的 CV 录制了新的语音,制做成了 免费的 Mod。 歌曲 Shelter Shelter 是 Porter Robinson 的一首电音。其实我不怎么听电音,但这首曲子的特点在于它的 MV 由 A1 Picture 制作,讲述了世界末日后少女孤独的在 VR 中生活,直到有一天她想起了自己的童年和父亲。西方电音配上日本动画,这个组合非常有意思。有文化差异的音乐和画面表达着同样的情绪。有了这个 MV,观众们得以更加容易的捕捉到这首歌曲所要传达的情绪。例如开头的画面和音乐共同谱写了喜悦的情绪。 谢谢谢谢谢谢 porter+ madeon 本来日系 ACG 和欧美 EDM 是极少有交集的两个世界,一个在欧美常常背着负面,边缘化,死宅的名声,一个在主流中渐渐变成流行,被认可,只是中间隔了太多文化的刻板印象………直到今天两个世界总算和在了一起 美好的东西本不该被贴上标签 @Lewreko 网易云 越单纯越幸福 王筝的 越单纯越幸福 是杜拉拉升职记的推广曲。这算是很久很久以前,十年前的歌。整首歌也跟标题一样,乐器用的较为简单,很匹配整首歌的情绪。歌词写的很棒。 第一句”你说起那条回家的路“就把听众拉入了回忆之中。我想起小学和初中时每天挤公交车回家。公交车站上都是放学的学生和跟着他们的家长。 ”越害怕越孤单谁的付出多一点,越躲藏越相爱越怕输。” 很多时候你让一步我就快乐,我让一步你就快乐。 “越长大越怀念少年时有多勇敢,骑单车摔多痛也笑着哭。” 怎么看都是在说现在的不勇敢。想到江南对路明非勇敢的赞扬。 “心像开满花的树。” 这个比喻也很不错。一般我们把心和花连在一起,比如心花怒放。但这儿又加了树。树总感觉和叶是一伙的,叶又是用来衬托花的。 如烟 五月天的 如烟 也是 2010 年左右的老歌。这首歌的歌词也是很棒,讲述了一个在床上等待死亡的老人回顾自己的一生。 〔... 有没有那么一个世界 永远不天黑 星星太阳万物都 听我的指挥。..〕 石头的曲,结合阿信的词,一向都有一种壮阔瑰丽的美感,这首歌阿信挑战自己,歌词从头到尾没有任何一句重复,把人生一瞬间,如烟飘散眼前的不舍回忆与千万感慨,通通都浓缩进这首歌里头。 藉由一个在床上等待死亡的老人心中,反射出人的一生:从出生到第一个吻,从成家立业到儿孙满堂,从挥霍浪费的青春到没说的一句抱歉,那些残存的人世眷恋和遗憾后悔,最后就化成一滴眼泪如烟消散在人世间。.. 官方介绍 不知道是不是只有我覺得這首的文學價值非常之高。 這首歌提升到探討生死的程度,就像行將就木之人,在靈魂脫離時,回頭看自己滿是皺紋蒼白的臉進行人生的回憶錄一樣,而當中的人可能是阿信自己對於生死的詰問,一問一答之間,不斷的反問自己,生死是怎麼回事,青春是什麼,既然不能擺脫輪迴(人間 瞬間 天地之間 下次我 又是誰),無法抓住已逝去的青春,那是否有對自己的人生感到後悔(無論生存或生活 我都不浪費 不讓故事這麼的後悔),最後他沒有給出答案,因為每個人在離去之前一定會有遺憾之事(有誰能聽見 我不要告別),而當中這一句(爲何人生最後會像一張紙屑 還不如一片花瓣曾經鮮豔)表達出為什麼人年老了會像紙屑、濕落葉一樣沒有價值被唾棄呢?那還不如玫瑰一樣在最鮮豔的時候落下,最後阿信把魂魄比喻成煙又代表著看的到流逝卻摸不著的時間(我坐在床前 看著指尖 已經如煙) youtube 评论 这周评价 下周做什么 GRE 备考 极简欧洲史 Pixiv Steam 挂卡

2020/9/6
articleCard.readMore

2020 年第 33 周

八月底了,是时候考 GRE 了。 Weekly Report 2020 年第 32 周 (08-17 到 08-23) 这周做了什么 CG 初步尝试了云渲染。效果还可以,但是并不能加速流体。配置渲染节点可以 看这。本来打算用 Digital Ocean,但是它风控比较严苛,注册新账号有点麻烦。 我想做了一个流体的字体动画。流体在字体中流体,逐渐充满整个字体。也想做一个 物体掉入水中的动画。就目前来看,这个动画渲染就得一两个礼拜,或者花个几十刀,使用渲染农场。 龙族 看完了三本龙族。可以感觉到前两本剧情都比较紧凑,讲的都是和主线有关的故事。到了第三部,整个篇幅长了不少,会有些啰啰嗦嗦的地方。全书中有不少伏笔,但有些伏笔直到故事的结束也没有用上。 第二本中董事会要求主角团寻找失去的资料。事发地点火车南站出现了两个人的身影,一个是猎人唐威,另一个人应该是夏弥。在书中并没有指出这个人是谁,只是像写伏笔一样提了以下,但后续这个伏笔没用上就是。 第三本中有很多很多的登场人物,虽然他们大部分都是打酱油的,对主线并没有什么贡献。看江南的随笔《龙与少年游》时,他说到有些故事的产生是由于灵感。“‘校长其实是个后背满是文身的黑道老混子。’这个概念其实是忽然出现在脑海里的,单纯就是觉得这个概念很棒,于是单独衍生出一条校长个人的日本线索来,在这条线上有上杉越,有犬山贺。” 上杉越,犬山贺有着自己的故事,但是他们的故事和主线关系并不大。江南对于这几个人物的构思并不基于主线故事,而是他觉得这个人很酷,所以他想把他写出来。“‘那美好的仗我已经打完了,应行的路我已经行尽了,当守的道我守住了。从此以后,有公义的冠冕为我留存。’我心中的上杉越因为这句话而成形。” 刚认识路明非的时候,他就是个弱小,懦弱的臭小孩。他一点都不给力,他没有勇气去争取更多的东西,比如诺诺,陈雯雯,社团,在叔叔婶婶家中的地位。但江南说,“路明非真的很棒,对于某些年少而热血的读者、恨其不争的读者,我得说你们再长大一点就会明白,生活不是意淫小说,没有白来的升级机会,而路明非真的很棒,他的勇敢是真勇敢,从骨头里榨出来、从灵魂中淬炼出来的勇敢,我很希望自己能有那样的勇敢。”勇敢和怂本来是对立的,但是在路明非身上共存。路明非想要勇敢,只要付出四分之一的生命。他只有那一份的生命,"路明非是个穷孩子,他很怂他很欠他很不霸气,但他从未吝啬过付出。" 在那个魔幻世界发生的事情或许很难映射到我们的生活中。但这个例子或许能让你们理解一点。你的朋友要离开这座城市了,你可以和他最后在一起吃一顿饭,但是现在疫情肆虐,你的家人们也反对你出门。你愿意去见他吗? 这周评价 提升阅读题目正确率到 80%。 每天半个小时到一个小时的钢琴练习。 学习完至少 3 个画画课程。 画不同角度的几何体。 尝试云渲染动画。 完成度 80% 下周做什么 GRE 备考 尝试这个有趣的 剪辑 尝试这个 动画 完成一个画画课程

2020/8/24
articleCard.readMore

自建 Blender Render Farm

暂时没打算买新显卡,那渲染慢怎么办?云渲染! 为什么要自建云渲染 由于本地算力不够,或者单纯想要加快渲染速度,云渲染都是首选。一般的云渲染是使用现成的渲染农场,但是它价格偏高。如果可以使用多个 VPS 进行渲染,成本会比直接使用渲染农场低很多,除了 VPS 比较便宜,很多 VPS 供应商对新账号都会提供代金券。如果我们使用新账号进行云渲染,成本可以进一步被降低。 配置渲染节点 我们使用 CrowdRender 来管理渲染节点。本地的安装和使用直接看官网教程。我着重解释一下如何配置 VPS 。 首先我们需要安装最新版本的 Blender。 1 2 3 4 5 6 7 sudo apt-get update sudo apt-get upgrade -y sudo apt-get install wget -y sudo apt-get install python3-pip -y sudo snap install blender --classic echo 'export PATH=/snap/bin:$PATH'> ~/.bashrc source ~/.bashrc 我们需要将 Crowdrender 插件上传到 VPS 上。我们可以使用 Winscp 进行上传。上传 ZIP 文件即可,不需要解压。 假设我们将 Crowdrender 上传到了/root/cr.zip 接下来便是开启插件。 1 2 3 4 5 6 blender -b --python-console import bpy bpy.ops.preferences.addon_install(filepath='/root/cr.zip') bpy.ops.preferences.addon_enable(module='crowdrender') bpy.ops.wm.save_userpref() 或者将这一块代码放入enableaddon.py,并用 Blender 执行。 1 2 3 4 import bpy bpy.ops.preferences.addon_install(filepath='/root/cr.zip') bpy.ops.preferences.addon_enable(module='crowdrender') bpy.ops.wm.save_userpref() 然后用 blender 执行刚刚创建的脚本。 1 blender -b -P enableaddon.py 接下来便是启动渲染服务。 1 blender -b -P ~/.config/blender/2.83/scripts/addons/crowdrender/src/py_3_7/serv_int_start.py -- -t "server_int_proc" # 局限 在完成渲染节点的设置后,我们只需要将节点的 IP 地址输入本地的插件中进行连接和同步即可。这个插件的连接是有点慢的。点了铁链图表要过了很久才会弹出选框。 目前已知的局限性为流体的渲染有点困难,除非你将所有的缓存和烘焙数据同步上去。

2020/8/24
articleCard.readMore

初入数值分析,如何写好代码

写一些关于数学的代码,和开发程序是两种不同的感觉。接下来是一些我个人常用的 Tips。 Sum 求和符号频繁的出现在各种公式里面。比如 Composite Simpson Rule: \(\int^a_b f(x)dx = \frac{h}{3}(f(a)+f(b)+4\sum^{n/2}_{i=1}f(a+(2i-1)h)+2\sum^{(n-2)/2}_{i=1}f(a+2ih))\) 我之前看到求和符号的第一反应是这儿又得用 for loop 了。例如 \(\sum^{n/2}_{i=1}f(a+(2i-1)h)\) 可能会用以下的代码来计算。 1 2 3 4 sum=0 for i in range(1,n//2+1): sum = sum+f(a+(2*i-1)*h) sum 这是一个有点冗长,不清楚的写法。 Map 我们可以用 np.sum 和 map 函数来实现。 1 2 import numpy as np np.sum(np.array(list(map(lambda i:f(a+(2*i-1)*h),np.arange(1,n//2+1))))) 瞬间把之前的几行代码压缩成了一行。这样写的坏处是括号比较多,在没有括号高亮的情况下容易出现漏括号或者多括号的情况。 Vectorize 这个方法全靠 Numpy。 1 2 3 4 5 import numpy as np i = np.arange(1,n//2+1) sum1 = lambda i: f(a+(2*i-1)*h) vfunc = np.vectorize(sum1) np.sum(vfunc(i)) 这个思路感觉和 map 的思路类似,但是优势是创建了一个可以复用的 Vectorize Function,可以接受数组的输入。 Another For Loop 这个其实和 for loop 没什么区别,知识短了一点。 1 2 import numpy as np np.sum([f(a+(2*i-1)*h) for i in np.arange(1,n//2+1) ]) 这个方法会比较灵活。在面对多个参数的时候会比较好用。比如有一个函数 f(a,b,c,d), 只有 c 这个参数需要变化,a,b,d 都是不要变化的。我们可以写这样写: 1 2 import numpy as np [f(a,b,c,d) for c in np.arange(n)] 矩阵点乘 这里我们用一个简单一点的例子。我们需要计算\(\sum_{i=0}^{n}a_ib_i\)。这个的本质其实是 a 和 b 两个矩阵的点乘。 1 2 3 a=[...] b=[...] np.dot(a,b) 快速生成一个矩阵 这个很简单。例如生成一个 5*5 矩阵。 1 2 import numpy as np np.zeros((5, 5)) Table Tabulate 1 2 3 4 5 print(tabulate([["Name","Age"],["Alice",24],["Bob",19]],headers="firstrow")) # Name Age # ------ ----- # Alice 24 # Bob 19 1 2 3 4 5 6 7 print(tabulate({"Name": ["Alice", "Bob"], "Age": [24, 19]}, headers="keys")) # Age Name # ----- ------ # 24 Alice # 19 Bob Plotly 1 2 3 4 5 6 import plotly.graph_objects as go fig = go.Figure(data=[go.Table(header=dict(values=['A Scores', 'B Scores']), cells=dict(values=[[100, 90, 80, 90], [95, 85, 75, 95]])) ]) fig.show() Plot 我每次都记不住怎么画图。 matplotlib 1 2 3 4 5 6 7 8 9 10 11 import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(9,6)) ax.loglog(hs,composite_trapezoid_rule_error_func1,'bo-',label='CTR ERROR',lw=2) ax.loglog(hs,np.power(hs,2),'ro-',label='err(h) = h^2',lw=2) ax.set_title("Error in CTR approximation",fontsize=22) ax.legend(fontsize=15) ax.set_xlabel('h',fontsize=22) ax.set_ylabel('err(h)',fontsize=22) ax.xaxis.set_tick_params(labelsize=15) ax.yaxis.set_tick_params(labelsize=15) 伪代码翻译 数组的索引从 0 开始,但是很多伪代码是从 1 开始。为了方便翻译,我们可以在所有数组的开头插入一个 0,这样数组的有效数据便从索引 1 开始。这样伪代码和实际代码之间的索引便不会错了。以下为例子。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import numpy as np def sor(a,b,XO,omega,TOL,N): n=len(a) x=np.zeros(n+1) a = np.insert(a,0,0,axis=1) a = np.insert(a,0,0,axis=0) b = np.insert(b,0,0,axis=0) XO = [0.0]+XO # step 1 k=1 # step 2 while k<=N: # step 3 for i in np.arange(1,n+1): sum1=sum([a[i][j]*x[j] for j in np.arange(1,i)]) sum2=sum([a[i][j]*XO[j] for j in np.arange(i+1,n+1)]) x[i]=(1-omega)*XO[i]+1/a[i][i]*(omega*(np.negative(sum1)-sum2+b[i])) # step 4 if max(np.abs(b-np.dot(a,x)))<TOL: print(f'Number of Iterations: {k}') return x[1:] # step 5 k = k+1 # step 6 for i in np.arange(1,n+1): XO[i]=x[i] print('Maximum number of iterations exceed') return XO assert np.allclose(sor([[4,3,0],[3,4,-1],[0,-1,4]],[24,30,-24],[1.0,1.0,1.0],1.25,1e-05,1000),[3,4,-5], rtol=1e-05, atol=1e-08, equal_nan=False)

2020/8/23
articleCard.readMore