我正在通过关于在Rust中编写操作系统的Phil-Opp教程,并且在稍微玩了一下后,我想摆弄在屏幕上显示真实图形.
我已经想到我应该从使用线性帧缓冲器开始,使用VESA.我在这里和这里找到了osdev.org上的一些教程,但他们继续谈论"功能代码"和es:di.第二个链接说:
功能:获取VESA BIOS信息
功能码:0x4F00
说明:返回VESA BIOS信息,包括制造商,支持的模式,可用的视频内存等...输入:AX = 0x4F00
输入:ES:DI =段:偏移指向存储VESA BIOS信息结构的位置的指针.
输出:成功时AX = 0x004F,其他值表示不支持VESA BIOS.
无论如何,上面的函数返回以下结构并将它存储在ES:DI中,因为它们在输入时.在输入时,ES:DI应包含指向以下结构的指针:
vbe_info_structure: .signature db "VBE2" ; indicate support for VBE 2.0+ .table_data: resb 512-4 ; reserve space for the table below
虽然我已经看了一些汇编语言教程,但我不知道"功能代码"是什么.根据我的理解,如果我mov ax, 0x4f00,并创建一个类似上面的结构,它将神奇地覆盖结构,然后我可以作为参数传递给我的Rust代码?我如何,或者我需要设置我的es:di?(从研究开始,我认为它只是在现代处理器上自动设置)
我应该在Inline Assembly中完成所有这些工作吗?我应该只使用UEFI并重写我的内核吗?如果您能举例说明如何在Rust代码中访问vbe_info_structure(我正在运行long mode),我很乐意.
boot.asm到目前为止,这是我的文件,但它还没有工作:https://gist.github.com/nebrelbug/5a0042d4de32f942bb72e71fe282bdd2.谢谢!
以下是最适合在 Chrome Devtools、Node.js 等中显示自定义错误的代码。基于此 StackOverflow 答案。
function CustomErr (message) {
var err = new Error(message)
Object.setPrototypeOf(err, CustomErr.prototype)
return err
}
CustomErr.prototype = Object.create(Error.prototype, {
name: { value: 'Custom Error', enumerable: false }
})
Run Code Online (Sandbox Code Playgroud)
但是,当我将其转换为 Typescript 时:
function CustomErr (message: string) {
var err = new Error(message)
Object.setPrototypeOf(err, CustomErr.prototype)
return err
}
CustomErr.prototype = Object.create(Error.prototype, {
name: { value: 'Custom Error', enumerable: false }
})
Run Code Online (Sandbox Code Playgroud)
调用throw new CustomErr("something went wrong")显示此错误:
'new' expression, whose target lacks a construct …Run Code Online (Sandbox Code Playgroud) 是否有一个 NPM CLI 命令可以用来获取我的包中安装的 NPM 模块的数量,不包括那些只是开发依赖项的模块?npm ls显示所有包,但没有说明有多少或哪些是开发依赖项,哪些不是。谢谢!
我正在运行 WSL Debian 发行版,因为我想跟随 InterMezzOS 教程。我遵循了 Rust 的安装说明并运行了curl https://sh.rustup.rs -sSf | sh,但我只能rustc通过运行source $HOME/.cargo/envAFTER running来使命令可用sudo su,当我退出时sudo我无法调用它,当我重新输入sudo su它不再起作用时,我必须输入它再次。
有什么方法可以使它可用,以便每次打开 shell 时命令都可以工作,而不必sudo每次都运行?
我试图获得firebase对象的第一个孩子.我的参考文件如下:
var sitesToVisitRef = firebase.database().ref('sitesToVisit')
Run Code Online (Sandbox Code Playgroud)
我知道ref是有效的,因为我可以写信给它.我的数据结构可能如下所示:
sitesToVisit:
arstechnica-com:
url: "https://arstechnica.com"
Run Code Online (Sandbox Code Playgroud)
但是,我不知道密钥(arstechnica-com),但我需要获取网址.
我正在尝试使用此代码:
var nextUrl;
sitesToVisitRef.limitToFirst(1).once('value', function(snapshot) {
console.log("snapshot key" + snapshot.key);
console.log("snapshot.val.url = " + snapshot.val().url);
console.log("snapshot.val" + snapshot.val());
nextUrl = snapshot.val().url;
}
});
Run Code Online (Sandbox Code Playgroud)
但是snapshot.key记录为"sitesToVisit",而不是"arstechnica-com".
任何帮助将不胜感激.非常感谢!
我是一个初学者,刚刚开始在线学习Rust,我现在想在我的电脑上使用Rust.我安装了Rust安装程序,运行它,然后输出以下消息:
Rust requires the Microsoft C++ build tools for Visual Studio 2013 or later,
but they don't seem to be installed.
Run Code Online (Sandbox Code Playgroud)
我安装了Microsoft C++ 2017构建工具并重新启动了我的计算机,但它仍然输出此错误.从Github上看,我知道很多人都有这个问题,但是评论充满了我不明白的技术术语.
如何设置Rust以使其有效?(解释为初学者可以理解)
我正在按照本教程设置我的第一个 DigitalOcean droplet,并且我刚刚生成了一个用于公钥身份验证的密钥对。使用ssh-copy-id(来自 Git Bash,因为命令在命令提示符中不可用)将密钥添加到我的 Droplet 后,我可以从命令提示符很好地通过 SSH 进入我的 Droplet。
但是,当我尝试从 Git Bash SSH 时,它仍然提示我输入密码!我已经检查过,SSH 密钥存在于我的 Droplet 和我的计算机上。有什么问题?
最近我偶然发现了doT.js 中的一个漏洞。该漏洞的存在是因为攻击者可以使用原型污染来修改传递给 doT 的选项的值。
例子:
var doT = require("dot");
var tempFn = doT.template("<h1>Here is a sample template " +
"{{=console.log(23)}}</h1>");
tempFn({})
Run Code Online (Sandbox Code Playgroud)
var doT = require("dot"); // prototype pollution attack vector
Object.prototype.templateSettings = {varname:"a,b,c,d,x=console.log(25)"};
// benign looking template compilation + application
var dots = require("dot").process({path: "./resources"});
dots.mytemplate();
Run Code Online (Sandbox Code Playgroud)
然后我开始思考:这是否意味着几乎所有JavaScript 库的 API 选项都可能因原型污染而受到损害?
例如,hereexpress.static与选项一起使用。
var options = {
dotfiles: 'ignore',
etag: false,
extensions: ['htm', 'html'],
index: false,
maxAge: '1d',
redirect: false,
setHeaders: function (res, path, …Run Code Online (Sandbox Code Playgroud) javascript ×4
node.js ×3
rust ×3
bash ×2
assembly ×1
c++ ×1
debian ×1
ecmascript-5 ×1
firebase ×1
git-bash ×1
json ×1
node-modules ×1
npm ×1
npm-install ×1
openssh ×1
security ×1
ssh ×1
sudo ×1
typescript ×1
visual-c++ ×1
windows-subsystem-for-linux ×1
x86 ×1