倾城之链 | 优质网站周刊

优质网站同好者周刊(第 107 期)

倾城之链作为一个开放平台,旨在云集全球优秀网站,探索互联网中更广阔的世界。此周刊,将汇聚过去一周倾城所收录的内容,以飨同好;欢迎推荐或自荐(仅限有独立域名的网站,可以是二级域名)。您如果要了解收录要求,请参见关于倾城

备注:本周刊每周五生成,首发于个人微信公众号晚晴幽草轩、博客晚晴幽草轩,以及悠然宜想亭社区;此一键生成脚本基于 Deno 编写,并在 Github 开源:nicejade/nicelinks-weekly

Fastify, Fast and low overhead web framework, for Node.js

标签Web开发 · 框架 · JavaScript

Fast and low overhead web framework, for Node.js.

倾城之链 - Fastify, Fast and low overhead web framework, for Node.js

推荐语Fastify ,是一款快速、高效的 Web 框架,它是用 JavaScript 编写的,专为 Node.js 设计。Fastify 的目标是提供高性能,同时保持低内存消耗和代码简洁。以下是关于 Fastify 的一些特点:

  • 快速:Fastify 是一个高性能的框架,它采用了许多优化技术,如异步编程、缓存和路由优化等。
  • 插件系统:Fastify 拥有强大的插件系统,使得开发者可以快速构建应用程序,而无需从头开始编写所有的功能。
  • 支持 ES 模块:Fastify 支持 ES 模块,这意味着开发者可以使用最新的 JavaScript 特性来编写代码。
  • 严格的模式:Fastify 默认采用严格模式,这有助于开发者避免一些常见的 JavaScript 错误。
  • 集成了许多工具:Fastify 集成了许多工具,如 AJV 验证器、Mongoose ORM 和 Helmet 安全头等,这使得开发者可以快速构建应用程序,并降低了开发的复杂性。
  • 可扩展性:Fastify 是可扩展的,它可以轻松地与其他框架和库集成,如 Express、Hapi 和 Koa 等。

总之,Fastify 是一款快速、高效、灵活和易于使用的 Node.js 框架,它是一个很好的选择,特别是对于那些需要构建高性能应用程序的开发者。有一些与 Fastify 类似的 Node.js 框架,以下是其中几个:

  1. Express: Express 是一个广泛使用的 Node.js 框架,它的 API 简单易用,易于上手,可以快速构建 Web 应用程序。
  2. Koa: Koa 是一个轻量级的 Node.js 框架,它的核心是基于 ES6 的异步函数,可以简化错误处理和流程控制。
  3. Hapi: Hapi 是一个企业级 Node.js 框架,它提供了一组强大的工具和插件,可以快速构建安全可靠的 Web 应用程序。
  4. NestJS: NestJS 是一个基于 Express 和 Angular 的框架,它提供了一组强大的工具和插件,可以快速构建可伸缩的 Web 应用程序。

这些框架都有其各自的特点和优势,开发者可以根据项目需求和个人喜好来选择合适的框架。

── 出自倾城之链 - Fastify, Fast and low overhead web framework, for Node.js

Welcome to Method of Action

标签学习 · 设计 · 免费

Method of Action is education made fun. Method of Action creates tools, toys and games to help you learn design, for free.

倾城之链 - Welcome to Method of Action

推荐语Method of Action ,免费创建工具、玩具和游戏来帮助您学习设计;非常适合没有做过 UI 设计的新手来玩;如果你想学 UI 设计,可以体验下;从最基础的贝塞尔曲线的用法、布尔运算、颜色字体、形状开始。这些都是最通用的设计基础能力,所有的界面设计软件都是这样做的。它提供非常教学方式 ──寓教于乐,通过好玩儿的小游戏,基本上可以达到设计入门。

Method Draw 是一个简单易用的网络矢量编辑器。在线 使用 Method Draw ,无需注册。 它是开源的,您可以在 GitHub 上找到源代码。

── 出自倾城之链 - Welcome to Method of Action

AssemblyScript | A TypeScript-like language for WebAssembly

标签WebAssembly · TypeScript · npm

A TypeScript-like language for WebAssembly. AssemblyScript compiles a variant of TypeScript (basically JavaScript with types) to WebAssembly using Binaryen. It generates lean and mean WebAssembly modules while being just an npm install away.

倾城之链 - AssemblyScript | A TypeScript-like language for WebAssembly

推荐语AssemblyScript 用于 WebAssembly 的类似于 TypeScript 的语言(TypeScript-like language),使得无需学习新语言即可轻松编译为 WebAssembly。它使用 BinaryenTypeScript 的变体(基本上是带有类型的 JavaScript)编译为 WebAssembly 。它生成精简且平均的 WebAssembly 模块,同时只需安装一个 npm

功能特征

  • 专为 WebAssembly 设计:AssemblyScript 专门针对 WebAssembly 的功能集,使开发人员能够对其代码进行低级控制。
  • 熟悉的 TypeScript 语法:它与 TypeScript 的相似性使得无需学习新语言即可轻松编译为 WebAssembly。
  • 触手可及:与现有的 Web 生态系统集成——无需设置繁重的工具链。 只需要 npm install 就可以了。

为什么选择 AssemblyScript?

  • “你现在无需学习一门新语言就可以编写 WebAssembly,并利用 WebAssembly 可能为你提供的所有这些好处。我认为这有点强大。AssemblyScript 绝对可用,而且非常有趣!” —— Surma
  • “AssemblyScript 在设计时考虑了 WebAssembly 和代码大小。它不是我们为新目的使用的现有语言,而是为 WebAssembly 设计的语言。它有很好的 wasm-opt 集成,事实上它是用它构建的,而且很容易获得良好的代码大小。” – Alon Zakai
  • “我选择 AssemblyScript 是因为它具有高级可读性和低级控制。它就像一种高级语言,但你会有那种低级的感觉,如果你愿意,你甚至可以直接编写 WebAssembly 内在函数。” – Peter Salomonsen

AssemblyScript 和 TypeScript 之间有什么区别?

TypeScript 向下转换为 JavaScript,一种动态的即时编译语言。另一方面 ,AssemblyScript 编译成静态的 WebAssembly 二进制文件。他们的编译器实现完全不同。然而,这两种语言在表面上非常相似,以至于它们共享许多概念。例如,TypeScript 工具可用于编写和重构 AssemblyScript 代码,并且通过一些努力,可以将相同的代码库转换为 JavaScript tsc 并编译为 WebAssembly asc,或者共享代码。AssemblyScript 编译器本身是可移植的。

AssemblyScript 是 TypeScript 的子集,为了方便编译成 WebAssembly 在 TypeScript 的基础上加了更严格的 类型限制 , 两者间详细区别如下:

  • 比 TypeScript 多了很多更细致的内置类型,以优化性能和内存占用,详情 文档 ;
  • 不能使用 any 和 undefined 类型,以及枚举类型;
  • 可空类型的变量必须是引用类型,而不能是基本数据类型如 string、number、boolean;
  • 函数中的可选参数必须提供默认值,函数必须有返回类型,无返回值的函数返回类型需要是 void;
  • 不能使用 JS 环境中的内置函数,只能使用 AssemblyScript 提供的内置函数

总体来说 AssemblyScript 比 TypeScript 又多了很多限制,编写起来会觉得局限性很大; 用 AssemblyScript 来写 WebAssembly 经常会出现 tsc 编译通过但运行 WebAssembly 时出错的情况,这很可能就是你没有遵守以上限制导致的;但 AssemblyScript 通过修改 TypeScript 编译器默认配置能在编译阶段找出大多错误。

如果您想更清晰了解两者之间差异,可以查看 Waft 团队所整理的 常用 AssemblyScript 语法差异

AssemblyScript 的实现原理其实也借助了 LLVM(是一个开源的编译器基础设施,可以用来构建编译器、调试器、静态分析工具等程序,支持多种编程语言。其命名最早源自于 Low Level Virtual Machine:底层虚拟机器),它通过 TypeScript 编译器把 TS 源码解析成 AST,再把 AST 翻译成 IR(Intermediate Representation 中间语言),再通过 LLVM 编译成 WebAssembly 字节码实现; 上面提到的各种限制都是为了方便把 AST 转换成 LLVM IR。

AssemblyScript 最终会支持所有的 TypeScript 吗?

它可能不会。虽然 TypeScript 为 JavaScript 添加了类型,但它毕竟是一个超集,可以描述 JavaScript 的许多动态特性,但并非所有这些特性都可以在提前编译中支持。然而,足够严格的 TypeScript 代码通常可以毫不费力地与 AssemblyScript 编译器兼容。

AssemblyScript 有哪些好的用例?

图像处理、热门游戏逻辑、专用算法、仿真器、编译器等计算量大的逻辑是 WebAssembly 的重要用例,AssemblyScript 也是如此。在某些情况下,传送字节码而不是缩小的 JS 可能更可取,或者仅仅是利用类似 TypeScript 的语言的能力可能会开辟新的机会,例如嵌入式脚本或插件。

AssemblyScript 能否以非标准方式使用,比如在浏览器之外?

绝对可以!AssemblyScript 模块是独立的,可以在支持 WebAssembly 的任何地方运行。事实上,可以支持任何任意主机接口。这是 使用 WASI 导入而不是 Web API 的示例  (打开新窗口) .

截止目前(2023 年 03 月 01 日),使用 AssemblyScript 构建应用程序,已经在区块链、游戏、加密、数据序列化/反序列化、图形框架等方面积累了大量实践。如果您对其感兴趣,可以移步 AssemblyScript Github 开源仓库 ,从而了解更多。

── 出自倾城之链 - AssemblyScript | A TypeScript-like language for WebAssembly

素问智聊斋

标签在线 · AI · ChatGPT

素问智聊斋,非官方 ChatGPT 在线客户端,旨在提供更便捷的 ChatGPT 访问体验;它基于非官方 ChatGPT API、Svelte、TailwindCSS、Vite 和 NodeJS 所搭建,只要输入 OPENAI API KEY 就可以使用。

倾城之链 - 素问智聊斋

推荐语素问智聊斋 ,非官方 ChatGPT 在线客户端,旨在提供更便捷的 ChatGPT 访问体验;它基于非官方 ChatGPT APISvelteTailwindCSSVite 和 NodeJS 所搭建,只要输入 OPENAI API KEY 就可以使用。

目标与哲学

OpenAI 于 2022 年 11 月推出的超级对话模型  ChatGPT, 受到来自世界各地的认可和赞誉,令人印象深刻。然而,由于一些原因,如果没有正确搭建相应的环境(🪜),ChatGPT 在中国地区就无法正常使用。鉴于此,搭建了这个服务,以便用户能够方便地使用 ChatGPT。需要指出的是,使用者首先需要在 OpenAI 官网上注册、登录、申请  API KEY,才可以使用本服务。此外,为了保障用户的数据安全,本服务的操作过程中不会存储任何使用者的数据,因此可以放心使用(备注:这段介绍有使用本服务加以润色)。

适用场景

  • 因为环境限制,无法正常 使用 ChatGPT 时;
  • 具备账号,想让远方亲人、朋友快速体验 ChatGPT。

补充说明:承诺后台不会保存任何数据;基于 API KEY 发起的对话内容,会同步到对应账号;如果您习惯使用桌面客户端,类似项目有:lencx/ChatGPT

诞生初衷

最原始的动机,是因为:以上两点适用场景所对应的诉求,我觉得都需要。但,这并不足以缘起这个项目,更详细的阐述如下:

作为颇爱折腾的技术人员,ChatGPT 自然是要体验;有请时在美国的朋友,帮着注册 ®️ 了账号;然而,蛮多时候即便采用科学上网,设备却无法成功登陆 ChatGPT 官网地址 。恰逢一个契机——帮朋友写几行关于 ChatGPT 的示例;当痛点(Motivation:动机)碰上可执行性(Ability:能力),外加适当的触发条件(Trigger),福格行为模型(BJ Foog's Behaviour Model)已全部满足,于是乎, 素问智聊斋 就有了诞生的充足理由。

命名来源

早在 关于“悠然宜想亭”的由来,以及未来 一文提及,对于网站取名多是五个字;或是兴趣的原因,其后缀带有 亭台楼阁、轩榭廊舫,殿庭苑斋 其中一个;其中大部分已被使用;因为「Chat」的应为对应的是「对话、聊天」;于是,「斋」字就这么定下;AI 对应智能,所以「智聊」也就应景而生。

原本命名为「智聊问异斋」,后觉不妥,略阅资料,遂修改为 素问智聊斋;素问:最早或于《黄帝内经》;釋名:“「素者,本也;問者,黃帝問於岐伯也」”。另有解释为:“即问本,探索人与自然的根本性问题”。当想 ChatGPT 说:“解释下「素问」”,它给出以下解释:

「素问」是一种中国古代哲学思想,它强调对本质的探究。它的核心思想是:任何事物都有其本质,而且这个本质不受时间和空间的束缚,所以要理解它,就必须通过探究本质来探索事物的真相。

技术选型

SvelteTailwindCSSVite 、Fastify、TypeScript 等,具为当前所流行,并且喜爱的技术栈 / 工具;其中 Fastify、Svelte 尚未使用过值得一提;

什么是 Svelte?

Svelte另一个前端框架,类似于 React 或 Vue。像这两个一样,你可以使用 Svelte 来制作单页应用程序。然而,Svelte 有一些特性使其与其他框架截然不同。

例如,与其他框架不同,Svelte 主要是一个编译框架;Svelte 库的大部分是运行时依赖项 devDependency,而不是运行时依赖项。这有助于使最终应用程序更小、更快,以便客户端下载。

另一个区别是 Svelte 不使用虚拟 DOM。相反,它使用各种策略来仅更新已更改的页面的特定部分。这减少了开销并使应用程序更快。

Svelte 还通过不需要类或函数来声明组件来提供易用性。每个 Svelte 文件本身都被视为一个组件。

最后,Svelte 的钩子很少。尽管生命周期功能需要挂钩,但 Svelte 不需要复杂的状态管理挂钩。状态可以通过声明一个变量来存储和使用,就像在 vanilla JavaScript 中一样。

思考感悟

关于 ChatGPT,相信接触过它的人们,或多或少都会有自己的感受;目前为止,吾有以下几点看法:

  • 类 ChatGPT 似 AI 产品,必将像如今的手机一般,成为绝大部分人类生活必需品;
  • 毕竟是工具,使用乃至产生依赖,倒无不可;但也不能荒废自身,我辈仍须保持深度学习及提高学习能力;
  • AI 会进而加剧人与人之间的差异;因为不喜欢折腾或探究的人,很难尽早去接触它,而是等时代浪潮拍打过来。

其他作品

以上介绍内容,部分使用 ChatGPT 加以润色。截止目前,它可以协助人类,已经很多,诸如学术论文、内容创作、翻译、数据分析、研究咨询、简历和求职信、广告文案、编写小说、个人陈述、SEO 优化等等,如果想让它更好帮助到您,可以移步 ChatGPT 中文调教指南 ,学习怎么让它在不同场景,更好听懂你的话。如果您有任何建议或意见,欢请移步 素问智聊斋 | 关于 赐教分享。

── 出自倾城之链 - 素问智聊斋

Lose the Very

标签有趣 · 产品 · 灵感

"Very good english" is not very good english. Lose the very. Write concisely by substituting "very" + "adjective" with a more concise adjective that has the spirit of very contained within it.

倾城之链 - Lose the Very

推荐语Lose the Very ,一个有意思的网站,可以用来提高自己的英文表达技巧:从不使用 “Very” 开始;在该网站可以看到很多 “Very + Adjective” 的高级替代词(至少 150+ )。网站创建者 Connor Callahan 认为:

“Very good english" is not very good english. Lose the very.

Connor Callahan 认为 Lose the Very 是帮助从词汇表中删除“非常”(Very)的最佳方法;他主张用一个更简洁的形容词代替 "very" + "adjective"(形容词),并在其中包含 "非常 "的精神,从而使写作更简洁。如果您输入 “beautiful”,它会给出替代词:bewitching([ bih-wich-ing ]),并且给出了该词在前往 dictionary.com 的链接地址,那里提供了对单词的发音、释义、造句以及相关词汇等信息说明。

Connor Callahan 在数据库中只添加了大约 150 个词。如果你想看到添加的形容词(或提出任何建议),可以按 "更新数据库 "按钮,以改善大家的经验。值得一提的是,该项目在 Product Hunt 上获得当天排名第一的产品;有网友评价道:“It’s a very good website”,感兴趣的朋友不妨前往体验下。

── 出自倾城之链 - Lose the Very

懒人导航网 | 全网最实用简洁的懒人导航网

标签导航 · 发现 · 网站

关键字:懒人导航网, 懒人资源库, 懒人技术导航, 懒人教程网, 站长导航网, 懒人导航系统

懒人导航网(https://lanrenao.com)是全网最实用简洁的网址导航。收集全网精品免费资源,包括资源网站、实用工具、实用软件、免费影视网站、免费音乐、免费小说、免费漫画站、免费动漫以及自媒体创作等等上百个分类的优秀站点,提供简单便捷的网上导航服务。

倾城之链 - 懒人导航网 | 全网最实用简洁的懒人导航网

推荐语懒人导航网,实用、简洁的网址导航。旨在收集全网精品免费资源,包括资源网站、实用工具、实用软件、免费影视网站、免费音乐、免费小说、免费漫画站、免费动漫,以及自媒体创作等等上百个分类的优秀站点,提供简单便捷的网上导航服务。

懒人导航网 将所收录网站,划分为:前端合集、前端导航、摸鱼时间、热榜、新闻、游戏、小说、直播、影视频道、软件下载、搜索查询、素材资源、实用工具、网站建设、探索发现、优质公众号等板块儿,每个板块儿下,又分标签 🏷️;如在摸鱼时间板块儿中,有热榜、新闻、游戏、小说、直播等标签,此外该导航还内置各种检索,您可以根据自己的诉求,快速找到自己冲浪 🏄‍♀️ 目标网址。

── 出自倾城之链 - 懒人导航网 | 全网最实用简洁的懒人导航网

Duolingo 多邻国 | 学习外语,寓教于乐

标签学习 · 平台 · 应用

关键字:学习,英语,法语,德语,西班牙语,葡萄牙语,意大利语,免费,单元,课程,语言,学习,背单词

多邻国是世界上最受欢迎的语言学习平台。做游戏,学语言。免费、有趣、超有效。现在就登录 duolingo.com 或手机应用开始学习吧!

倾城之链 - Duolingo 多邻国 | 学习外语,寓教于乐

推荐语多邻国 (Duolingo),一款受欢迎的语言学习平台(提供网站和手机应用),该公司以免费增值模式营运:网站及应用程式皆免费使用,但也有提供付费升级版本。截至 2021 年 6 月,多邻国提供了 40 种语言共 106 种的语言课程,也有许多语言课程正在开发中。

应用特色

  • 成效立竿见影:研究表明,使用多邻国课程能快速、有效地提高阅读、听力和口语技能!想知道更多,就来看看最新研究吧。
  • 始终保持动力:游戏化学习、激励性挑战,还有吉祥物猫头鹰多儿为你加油打气,让你轻轻松松,养成学习好习惯。
  • 个性化学习体验:多邻国利用人工智能和语言科学的精髓,根据个人的不同水平和学习步伐,提供最适合你的个性化学习体验。
  • 畅享学习乐趣:高效学习也可以充满情趣;Duolingo 有个性满满的鼓励师团队,每天花样陪你练习。有乐有趣,学习不成问题。

商业模式

多邻国平台的核心服务都是免费的。对手机用户端来说,使用者只会在完成一个单元的学习后才会看到一次广告,相比整个使用时间来说相当有限。使用多邻国平台的学生无需支付服务费。然而,多邻国也有少数需要收费的应用程式内购买服务。

2014 年 7 月,多邻国开设了语言认证服务。

教学模式

与其他教学平台相比,多邻国提供大量的听写、单字记忆及口说练习,但文法单元则较为松散。在学习一种语言时,玩家需要攀爬一条游戏化的技能树,每一个技能树分为许多等级,约在 50 至 150 级,每一级又分为许多技能,用户可以在上面逐渐向上攀升。使用者在学习语言的过程中会获得“积分”。每一条技能树约包含 2,000 至 4000 单词。

多邻国采取的是数据导向式教学方式。 在学习的每个过程中,系统会分析用户会纠结于哪些问题,以及会犯哪些错误。然后系统会统计这些数据,并且从中获得改进。

发展历史

  • 多邻国起源于 2009 年,美国匹兹堡卡内基梅隆大学的路易斯·冯·安教授和他的研究生 Severin Hacker 发起,并主要是以 Python 写成;
  • 多邻国在 2011 年 11 月 30 日发布了封测版本,其试用者候补名单甚至累积到超过 300,000 用户;
  • 2012 年 6 月 19 日,多邻国向公众开放。2012 年 11 月 23 日,多邻国在苹果 App Store 发布了 iOS 应用;
  • 2013 年 5 月 29 日,多邻国发布了安卓 app,发布前三周就被下载超过一百万次,很快成为 Google Play 商店下载量第一的教育类 app;
  • 2020 年 4 月,Duolingo 多邻国获得 General Atlantic1000 万美元的战略投资;
  • 2021 年 6 月 28 日,多邻国在美国申请公开募股,高盛集团和 Allen & Company 是此次 IPO 的主承销商。该公司计划以“DUOL”的代码交易;
  • 2021 年 7 月 28 日,多邻国在纳斯达克挂牌上市,股票代码为“DUOL”。

使用人数

2020 年 12 月 17 日,在线语言学习 App 多邻国发布了《2020 年语言学习趋势报告》。《报告》数据显示,多邻国全球用户总量达到 5 亿人。新冠疫情期间,其全球用户新增 3000 万人,分别为 2020 年和 2019 年元旦的 2 倍和 1.5 倍,增长速度达 67%。在此期间,多邻国中国用户规模较 2019 年 3 至 4 月同比增长 301%。

每个人的学习方式都不尽相同,该如何达成既照顾大家不同的学习习惯,又保证学习效果一直都是个难题。终于,北京多邻国科技有限公司通过分析亿万用户的学习习惯,成功总结出了一套适用于所有人的、且最有效的学习方法,推出在线语言学习应用—— Duolingo 多邻国

其终极目标是运用现代科技,让人人都能享受到私人教练的指导。如何帮助大家坚持学习一直都是个难题。现在,多邻国有趣的游戏关卡设计,能让更多人在乐趣学习中坚持更久。

── 出自倾城之链 - Duolingo 多邻国 | 学习外语,寓教于乐

对倾城之链感兴趣的朋友,可通过 Web,小程序,快应用等渠道进行访问(后续将支持更多,如 VsCode 插件,Chrome 扩展等)。您有任何问题,欢迎随时向我们反馈(您可以通过官网反馈渠道),🤲 。

本期文末寄语

人的外表,其实什么都不是,皮囊而已,在时间里,皮囊终会老去,最后所有的光鲜都会被褶皱吞噬,而灵魂不会,这灵魂里包括你走过的路,经历过的事,还有你一生的思考。── 当代著名作家 · 王小波

倾城之链作为一个开放平台,旨在云集全球优秀网站,探索互联网中更广阔的世界;在这里,你可以轻松发现、学习、分享更多有用或有趣的事物。

您可能感兴趣的文章