V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aristolochic  ›  全部回复第 1 页 / 共 4 页
回复总数  67
1  2  3  4  
如果不关心 TypeScript 的话,或许可以用 Babel ?
比如说可以在希望支持+的 class 里面写一个[Symbol.for("+")]方法,然后编译时用 Babel 转一下。
当然 TypeScript 也能用,就是编辑时 IDE 支持不太好(大概
68 天前
回复了 darklinden 创建的主题 程序员 PHP 原来是这么神奇的语言吗?
所以……就是 https://en.wikipedia.org/wiki/Autovivification
应该是 Perl 带起来的概念吧。
174 天前
回复了 iqoo 创建的主题 程序员 nodejs 有哪些好用的增删改查框架?
硬要说的话 Nodejs 或者说 JavaScript 生态感觉就都不怎么擅长干这种元编程的事情,它的宏能力基本全靠社区实现的 acorn / Babel 之类的了。我找了好久都没找到和 Ruby on Rails 生态的 inherited_resources / responders 类似的东西。要说参数自动校验的话,JOI 肯定算一个,还有 Fastify 也鼓励开发者写参数校验(用的是 JSON Schema ),中间件也还算轻量。

至于说数据库执行,我认为都用 JavaScript 了用一个比较正常的 Secure by Default 的 ORM 还是很必要的,没有特殊需要还是别手动生成 SQL 比较好。很久以前我用过 Sequelize ,不过现在的大一统选择或许是 Prisma 吧,尤其 Prisma 基于 Data Mapper 同时还靠 Schema 文件生成 Client 减少样板代码的设计,让受够 Sequelize 用 Active Record 模式的我十分喜欢(我觉得 Active Record 只有 Rails 这样提倡 Fat Model 的才合适,Sequelize 也是但是太丑了)。
@xpyusrs 那我不觉得你这个提问方式是真心想得到答案的,或许只是想吐槽。

第一轮你只是说浏览器打印有问题,那我只能假定你要用浏览器默认行为 Ctrl+P ;

第二轮你说用插件,还没有提插件的名字和地址,给出了猜测的原因和图片。有些许进步,但是潜在知道答案的人还是无从入手;

RTT 太多了,会让人失去耐心的。

作为参考,我觉得如果在网上提问时一次性给出的信息量,比问你身边的人说的第一句话还要少的话,就该想想是不是提问的姿势不对劲( x

本来想说最理想的话还得加上最小可复现 demo ,不过目前来说或许要求还是有点高了。
我是一向认为如果你需要浏览器内置的打印的话,那就一定要用 @media screen 和 @media print 隔离显示和打印的。

如果指望能直接开箱即用的话,还不如指望有会敲代码的田螺姑娘。
或许干脆支持 S3 是不是会更好一些呢?毕竟有很多都兼容,七牛也是。这样的话支持一些别的免费对象存储也毫无压力了。
@lakehylia 我记得有一个电子论坛就是这么干的,出模电数电题那种
社死型生物检测:

1. 在网上收集查寝合影段子,如模仿名画、JOJO 立等

2. 训练人工智能模型

3. 要求用户登录时拍摄指定姿势

4. 希望用户没有健身且与你没有物理接触可能 /用户没有 GAN 相关知识
武力威慑型客户端 Rate Limit:

1. 做一个 Yubi Key 和 USB Killer 融合怪

2. 加一个持久化计数器

3. 平常是 Yubi Key ,要求用户登录时插上,每登陆一次计数器加一

4. 当计数器超过阈值时切换成 USB Killer
199 天前
回复了 nanxiaobei 创建的主题 React 20 年前的 React Server Components
与其认为是回到了 PHP 或者认为和 Rails 生态的 Hotwire 很像的,不如去看看 Phoenix LiveView ,这个才是完全一致。

不管是 Phoenix LiveView 还是 React Server Component 还是微软在搞的一些,都要求通过 WebSocket 实现双向的状态共享,也即客户端的状态要么需要在服务端保存完整的镜像并通过 hash 校验检测一致性(状态和 UI 部件),要么通过 ID 作为更新的凭据。这既不是传统 HTTP 那样是服务端到客户端被动单向传输,也不是 Hotwire 用 WebSocket 实现主动单向传输,PHP 的 Laravel 和 Rails 的 Hotwire 因为不愿意实现高效大规模 WebSocket 连接,才要么轮询( Laravel )要么只推数据不维护状态( Hotwire )。尤其是 Hotwire ,意境上就是以前的 Stimulus+Turbolink 改名+现代版 iframe ,这套在以前就没火起来(当然 Turbolink/pjax 用的还是不少的),加上 WebSocket 能推数据了也不比以前的玩法更有革命性。

明确声明了自己受到 Phoenix LiveView 启发的有一些,比如可以把 Hotwire 中的 Stimulus 改造成 StimulusReflux (早在把 Stimulus 并入 Hotwire 之前就有了),甚至连 Haskell 都有类似的。

重点还是只靠后端就能在前端实现(稍微)富客户端的应用,如果 All in Live 的话会有问题,比如在 Phoenix LiveView 0.6 之前想要实现回车提交表单(比如做一个即时通信应用的输入框),那么要想自动清空,就需要把输入框中的值也引入前后端共有的状态中,这样用户每敲一个字都会产生一条 WebSocket 消息(当然也做了开箱即用的节流),然后写提交成功后清空这个状态字段的逻辑,要么就得写 JavaScript 钩子。现在倒是能够用后端写 JavaScript 逻辑了,不过还没发布。
@0superx0

KDE 不是自带的吗? Cutefish 似乎是 allin Qt Quick 了,不清楚 DBus menu bar 有没有照顾到没有实现 MenuBar QML Type 的应用(不过既然作为卖点应该有吧)。

(如果要原汁原味建议还是优先用 Ubuntu Budgie 吧。
204 天前
回复了 sunnysab 创建的主题 问与答 收到学校要求下架学生服务相关的小程序
我就想这种你但凡去做个客户端然后里面的 WebView 想干啥就干啥,还用得着后端嘛?实在不行每次让用户输入账号密码就当一个 API 网关也行,干嘛非要在企鹅家的私有 Web 里整花活,还得想办法教会用户导出 cookies ,还想了半天小程序有没有自定义 cookies 的限制。

然后翻回去一看,居然存的是账号密码?

???

你怎么敢的啊?

现在不是说心疼自己开发了半天的东西没用了的时候,应该是不用吃大碗牢饭而高兴的时候。
Ruby on Rails 生态里有一个东西叫做 PaperTrail ,是一个可以为任意资源提供更改审计的库,每当对配置好的某资源进行增删改的时候都会留下记录,供以后审计和回滚。思路很简单就是挂上钩子然后把原版序列化成 JSON (也可以选增量更新的插件),存到一个多态表里面。尤其是这个多态表,什么资源都有可能,就只能用 JSON 了。如果你用的是 PostgreSQL 的话它会鼓励你使用 JSON 的字段,但是其实只是用到了 PostgreSQL 对 JSON 的校验而已。

所以,简单来说,就是快照。
如果你会产生这样的疑问,说明选什么都不会产生什么影响

那就掷硬币吧:

- 落在桌面内,正面 Postgres ,反面 MariaDB

- 掉出桌面外,正面 SQLite ,反面文件系统

- 掉出房间外,正面 MongoDB ,反面 CouchDB

- 掉到楼道里,正面 Neo4J ,反面 Redis

- 竖起来,在内存里存成 Trie

(前提是 Typecho 支持

(逃
217 天前
回复了 nbweb 创建的主题 Linux 如何在 debian 终端上显示中文?
另外再提一句,如果你的系统有奇怪的 pam 的话,pam_environment 是有可能覆盖 locale.conf 设置的本地化相关环境变量的。如果有 X 相关的东西的话,那更加有可能被 DE/DM 覆盖,这个就得自己找了,先看看 xinitrc,再看看 DM,再看看 DE 。
217 天前
回复了 nbweb 创建的主题 Linux 如何在 debian 终端上显示中文?
不考虑 ssh 的话(因为你没说你用的是什么),服务端设置 locale 的正确做法是在 locale.conf 写入

```
LANG=zh_CN.UTF-8
```

locale.conf 可以是 /etc/locale.conf 、~/.config/locale.conf 、$XDG_CONFIG_HOME/locale.conf 或 $HOME/.config/locale.conf,依据你希望应用的范围和是否修改了默认 HOME 和 XDG_CONFIG_HOME 而定。

locale.conf 的变更会在下次登录时生效,要立刻应用新的设置的话,可以运行:

``` sh
$ unset LANG
$ source /etc/profile.d/locale.sh
```

注意到只设置了 LANG 这一个环境变量,这是因为这个变量的值会覆盖掉所有未设置的 LC_* 变量的值。

如果你希望做更加细粒度的控制,去看 manpage 。

你也可以额外设置一个 LANGUAGE,如果上述的 LANG 没有将其设置的话,因为使用 gettext 翻译的软件会按照 LANGUAGE 选择使用的语言。当然现在也不一定,在我常用的 Arch 和 Ubuntu 20.04 中,只设置 LANG 是可以给 LANGUAGE 提供默认值的。

不建议使用 LC_ALL,这个是为了测试和排错使用的临时值,尤其是它不能出现在 locale.conf 文件中。这个变量的值会覆盖掉 LANG 和所有 LC_* 变量的值,无论它们是否设置。

---

或者运行

``` sh
# localectl set-locale LANG=zh_CN.UTF-8
```

如果有 locale.alias 文件的话,理论上你也可以用别名,但考虑到不是所有系统都有,在此不作展开。
poppler-utils 倒是能把 pdf 转成 svg,改完以后再转回来。就是不太清楚文本能不能保留。

我还以为你要生成那种自带表单的 pdf 然后让用户自己编辑下载呢
不要试图理解[[Prototype]]属性,这个不是学习 JavaScript 本身需要知道的,你看它写着是个原型,但很容易断章取义贻笑大方:

下面摘抄 [MDN 原文]( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/proto) :

> __proto__的读取器(getter)暴露了一个对象的内部 [[Prototype]] 。对于使用对象字面量创建的对象,这个值是 Object.prototype (en-US)。对于使用数组字面量创建的对象,这个值是 Array.prototype 。对于 functions,这个值是 Function.prototype (en-US)。对于使用 new fun 创建的对象,其中 fun 是由 js 提供的内建构造器函数之一(Array, Boolean, Date, Number, Object, String 等等),这个值总是 fun.prototype 。对于用 js 定义的其他 js 构造器函数创建的对象,这个值就是该构造器函数的 prototype 属性。

> __proto__ 的设置器(setter)允许对象的 [[Prototype]] 被变更。前提是这个对象必须通过 Object.isExtensible() 判断为是可扩展的,如果不可扩展,则会抛出一个 TypeError 错误。要变更的值必须是一个 object 或 null,提供其它值将不起任何作用。

那么很明显,无论你的 Student 类还是 PrimaryStudent 类,很显然都不是 JavaScript 的内建构造器函数,new 出来的 [[Prototype]]只会是其对应的函数的 prototype 。PrimaryStudent 的 prototype 是 Student,Student 的 prototype 是 Object,显示十分正确。
grpc 主要是 protobuf 它就不是一个透明的序列化协议,为了性能和紧凑必须要定义 proto 文件,这不是顺便就解决了约束吗?另外也就有底气支持更加复杂的类型。而且这个约束还必须要遵守,如果不知道 proto 文件就是一坨二进制数据根本没法解析。而透明的序列化协议就压根不需要事先协商,不管谁传过来的都能直接用。这类序列化协议不一定非得是文本格式,msgpack 就是二进制版的 JSON 也可以直接用。也不是没有约束的方法,这个约束我们一般称为 Schema

要是说 Schema 的话,最先想到的估计就是 SGML/HTML/XML 那家子,从一开始就设计了 DocType 还有 Schema 。这些都是官方实现,用了好多年了相当成熟

但是也不是说 JSON 就没有了。JSON Schema 咋说也够用,还能提供更多的约束,要求更高还能自定义原语。比如上面提到的 Swagger 设计的 OpenAPI 3 spec 就是 JSON Schema 改的,不过定义了自己的原语实现更多约束,还重新诠释了 JSON Schema 规范中的一些字段(我是不太喜欢这么搞的,一下子就不兼容了

要是嫌 JSON Schema 不是官方 RFC 出的,那就次一点用 JSON Type Definition 。这个就没有更多的约束了,不过对于类型本身应该是比 JSON Schema 更细化,你想要指定 int 位数、有没有符号都行,而且还有一个 JSON Schema 里实现起来比较别扭的,就算不别扭也不一致,就是它能用 Discriminator 实现 Tagged Union / Sum Type

要说类型生成器,JSON Schema 和 JSON Type Definition 都有不少。如果是 JavaScript 这种动态类型的也可以用流式 API 定义 JSON Schema 。XML 的 Schema 就更别说了,理应是更加成熟

(话说 ML/类 ML 语言社区搞的类型系统应用都挺魔怔的,印象里 Haskell 的 Yesod 有 CSS 、HTML 和 URL 等等等等的强类型。现在看来也不是只有 Haskell 这么狠
@zhangdeplives 哪怕是给未上市保密机器调试 BIOS 都没这个悬丝号脉,至少人家给个小笔记本连着呢( x
(再说未上市 PC 上市了能挣钱,Python 打包的 App 就不一定了
1  2  3  4  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2562 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.