问题标签 [plan-9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 为什么 Go 支持 Plan9?
为什么 Go 开发人员花时间支持 Plan9,而不是让 Go 更适合 Unix?
debian - 设置 lighttpd + werc,CGI 无法运行 rc 脚本?
我第一次在我的新 VPS 上设置了一个网络堆栈。我的目标是 Debian Jessie + lighttpd + werc
werc 是一个在 rc(从 Plan 9 移植到 Linux 的非标准 shell)上运行的简单框架。有一些教程可以让它在 lighttpd 上运行:
http://werc.cat-v.org/docs/quick-setup/debian-lighttpd
不幸的是,跟随他们没有成功,我已经开始从基本的 CGI 开始构建过程。我成功地让 CGI 与 sh 脚本一起工作,但是当我试图让 CGI 与 rc 一起工作时遇到了麻烦。我做了一些工作来隔离问题,看来 lighttpd 根本不会运行 rc 脚本。我很确定这不是权限或 PATH 问题;见下文。
总结一下我的设置:
- 清洁 Debian 8.0 Jessie 安装
- 安装 lighttpd debian 包
- 安装 9base-6 以获取 rc shell ( http://tools.suckless.org/9base )
- lighty-enable-mod cgi
- 在 /var/www/html/cgi-bin/ 中制作 test.sh 和 test.rc 脚本(见下文)
- 创建一个
/newbin
目录并将 sh 和 rc 的副本放入。 - 编辑
/etc/lighttpd/conf-enabled/10-cgi.conf
以处理带有我的新副本的 .sh 和 .rc 文件/newbin
澄清一下,第 6 步是隔离问题,所以我知道这不是 PATH 问题。
这是一个 shell 会话,显示了我的设置的所有组件,并记录了我的问题:
我在运行 Debian 8.0 的 VPS、运行 Debian 8.0 的笔记本电脑和运行 Debian 7.8 的笔记本电脑上都遇到了同样的问题。
我试图通过启动调试来进一步追踪问题,但server.modules += ( "mod_debug" )
导致 lighttpd 失败。如果有人对如何加快调试有建议,那也会有所帮助。此外,如果有人碰巧尝试这个并成功在 Debian 8.0 上运行 werc,我很想听听。
非常感谢!
c - 实现 9p 服务器
我正在寻找在 Linux 机器上开发9p文件服务器的 C 实现。互联网上没有足够的关于 9p 的文档,而且我对实现服务器也不是很有经验。我的总体设计如下:
- 使用 UNIX 套接字侦听传入的 9p 消息。
- 解码 9p 消息并生成一个新线程来执行所需的任务。
- 使用适当的 9p 回复消息回复客户端。
服务器将只存在于用户空间中,它将 9p 消息转换为 UNIX 调用。
您是否发现任何问题或对提议的设计有任何建议?是否有任何文件可以让我参考以帮助我?你认为我应该如何调试我的服务器并确保它正常工作。
algorithm - 这个整数池代码是如何工作的
我一直试图了解这个整数池是如何工作的。这是很多我无法理解的摆弄东西。我假设 m2id 数组缺少一个概念,以及它是如何与我不知道的索引“n”进行或运算的,并且会消除我的很多困惑。是否有任何通用概念/CS 理论来解释这个看似简单的代码。我在代码中添加了注释,试图说明我目前的理解以及我完全困惑的地方。
linux - 是否可以使用 linux 内核运行 BSD 用户空间来替代 GNU coreutils?
我一直在寻找一个不适合嵌入式系统并且不使用许多流行发行版中的许多 GNU 实用程序的 linux 发行版。我想从用户空间开发一个使用 musl-libc、bsd 用户空间和 Plan 9 的(宠物项目)Linux 发行版。在我开始并可能浪费时间做不可能的事情之前,使用 BSD 用户空间作为 GNU coreutils 的替代品是否可行/实用?如果没有,有什么替代方案?
go - plan9 的 Stat_t 定义在哪里?
在plan9
具体的 Go 代码中syscall
,没有Stat_t
与其他类似的GOOS
。在哪里Stat_t
定义,或其等价物?
plan-9 - 如何通过plan9port db(1)统一从其可执行文件中获取源文件名?
转向plan9port
实用程序我无法使用src
可执行文件的实用程序(对于脚本它工作正常)。它是指db(1)
通过以下方式从可执行文件中获取源文件名:
其中$1
是可执行程序名称和调试器使用 function 打印文件名main?z
的特殊指令。db(1)
main
但在我的 linux (Ubuntu) 版本中,它不起作用。db(1) 不产生文件名,它只打印过程的名称:main()
并且没有源信息。
我试图编译9c -n
(我认为-n
可以防止编译器剥离代码)但没有运气。
sed - 如何使用 Plan 9 的 sed 从行首删除空格
似乎这应该从每行的开头最多删除 2 个空格:cat test.txt | 9 sed 's/^ //g
; 相反,它会替换行首的所有空格。为了比较,GNU 的 sed 似乎与我在这里所期望的一样,但我对学习 Plan 9 方式很感兴趣。
注意:9 sed
这里的语法是因为我从 plan9port 运行它。
更详细地说:
我希望输出更像是使用 GNU sed
:
go - SSE2从golang中的打包数据中提取浮点数
我正在用 Golang 编写一个汇编函数。为了简化让我们假设我想做以下功能:
它将计算 d1[0]、d2[0] 的最小值以及 d1[1] 和 d2[1] 的最小值并计算总和
在装配中我做:
我缺少的部分是如何将第二个标量从 X1 提取到 X3
shell - 如何在 mkfile 中定义变量的默认值
生成文件:
我想将该行转换为 Plan9 mkfile 语法。
我试过了
它有效,但很丑陋。有什么选择吗?