小编Ben*_*ler的帖子

如何获取VESA BIOS信息

我正在通过关于在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.谢谢!

x86 assembly inline-assembly rust

13
推荐指数
1
解决办法
484
查看次数

打字稿:'new' 表达式,其目标缺少构造签名,隐式具有 'any' type.ts(7009)

以下是最适合在 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)

javascript ecmascript-5 typescript

6
推荐指数
1
解决办法
6356
查看次数

如何获取除开发依赖项之外安装的 npm 模块的数量

是否有一个 NPM CLI 命令可以用来获取我的包中安装的 NPM 模块的数量,不包括那些只是开发依赖项的模块?npm ls显示所有包,但没有说明有多少或哪些是开发依赖项,哪些不是。谢谢!

javascript node.js npm node-modules npm-install

5
推荐指数
2
解决办法
3229
查看次数

使 rustc、cargo、rustup、rustdoc 命令在 Linux 的 Windows 子系统中无需 sudo 即可工作

我正在运行 WSL Debian 发行版,因为我想跟随 InterMezzOS 教程。我遵循了 Rust 的安装说明并运行了curl https://sh.rustup.rs -sSf | sh,但我只能rustc通过运行source $HOME/.cargo/envAFTER running来使命令可用sudo su,当我退出时sudo我无法调用它,当我重新输入sudo su它不再起作用时,我必须输入它再次。

有什么方法可以使它可用,以便每次打开 shell 时命令都可以工作,而不必sudo每次都运行?

bash debian sudo rust windows-subsystem-for-linux

5
推荐指数
1
解决办法
6050
查看次数

得到第一个没有钥匙的firebase孩子

我试图获得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".

任何帮助将不胜感激.非常感谢!

javascript json node.js firebase firebase-realtime-database

3
推荐指数
1
解决办法
2139
查看次数

Rust无法找到Microsoft C++构建工具

我是一个初学者,刚刚开始在线学习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以使其有效?(解释为初学者可以理解)

c++ visual-studio visual-c++ rust

3
推荐指数
1
解决办法
2200
查看次数

使用 SSH 密钥登录不适用于 Git Bash,但适用于 Windows 命令提示符

我正在按照本教程设置我的第一个 DigitalOcean droplet,并且我刚刚生成了一个用于公钥身份验证的密钥对。使用ssh-copy-id(来自 Git Bash,因为命令在命令提示符中不可用)将密钥添加到我的 Droplet 后,我​​可以从命令提示符很好地通过 SSH 进入我的 Droplet。

但是,当我尝试从 Git Bash SSH 时,它仍然提示我输入密码!我已经检查过,SSH 密钥存在于我的 Droplet 和我的计算机上。有什么问题?

ssh bash openssh git-bash digital-ocean

1
推荐指数
1
解决办法
8540
查看次数

如何防止 JavaScript 中的原型污染

最近我偶然发现了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 security node.js

1
推荐指数
2
解决办法
2426
查看次数