跳到主要内容

16 篇博文 含有标签「技术」

技术博客

查看所有标签

Hyprland + Arch 备忘录

· 阅读需 5 分钟
Hanasaki
阿巴阿巴阿巴

本篇记录 Arch Linux 作为日常使用系统的相关内容。

系统CompositorCPUGPU
Arch LinuxHyprlandIntel i5-9300HNvidia GTX1650

Hyprland

对于 Intel + Nvidia 双显卡还要外接显示器的,确实配置要麻烦一些。通常需要结合 Waybar、Wofi 等程序,实现基本的桌面功能。根据自己的喜好完成自定义,这就是完全属于自己独一无二的桌面环境了。

配置:https://github.com/cxOrz/dotfiles-hyprland

近一年用的 Redmi AX6000 路由器

· 阅读需 5 分钟
Hanasaki
阿巴阿巴阿巴

前言

去年搬完家就淘汰了 Xiaomi 4A 千兆版 + R2S 这套配置,斥巨资换成了 Redmi AX6000 供日常使用。到现在用了将近 1 年,在此回顾一下和它相关的折腾记录,以便日后参考。

固件

在纠结了很多版本(Lean \ Openwrt官方 \ 237 \ hanwckf)之后,还是选择了 ImmortalWrt,吸引我原因的就是支持在线自定义构建,而且项目开源。

ax6000-immortalwrt-img

CSS 的 zoom 属性会缩放元素位置吗

· 阅读需 3 分钟
Hanasaki
阿巴阿巴阿巴

在开发过程中遇到一个情况,使用的绝对定位,同时用 zoom 属性缩小元素,然后计算 left 和 top 偏移量,使得改变大小后中心位置不变。发现在增加 left 和 top 时,反而元素位置离左上角更近了。

zoom 怎么会影响定位呢?结论在末尾!

缩放到 0.1 时

此时元素实际宽高均为 50px,而距离容器左边和上边距离容器左边和上边明显不够 1234px,仅仅是他宽高的 2 倍多一点(约123.4px)。 可见 left 和 top 也被等比例缩放了。

position: absolute;
width: 500px;
height: 500px;
zoom: 0.1; // 缩放到0.1
left: 1234px;
top: 1234px;

V8的快属性|Fast properties in V8

· 阅读需 19 分钟
Hanasaki
阿巴阿巴阿巴
信息

本文翻译、修改自 Fast properties in V8,其中会删除、修改、批注部分内容,但不改变原本的意思,使阅读更加通顺。

在本篇内容中,我们将介绍 V8 内部是如何处理 JavaScript 属性的。从 JS 的角度来看,对象(Object)和 字典(Dictionary)差不多:以字符串为键,任意对象为值。不过,在进行迭代时,会对整数索引的属性和其他属性进行不同的处理。其他情况下,不同属性的行为基本相同,与是否整数索引无关。

不过,出于性能和内存方面的考虑,V8 确实依赖于几种不同的属性表示方式。在本篇文章中,我们将解释 V8 是如何在处理动态添加的属性时提供快速的属性访问。同时,了解属性的工作原理对于解释 V8 是如何做优化的,例如内联缓存,也是至关重要的。

本文将先阐述处理整数索引属性和命名属性的区别,然后,我们将展示 V8 在添加命名属性时,如何维护 HiddenClasses 以便提供一种快速识别对象形状的方法。然后,我们将继续深入介绍命名属性是如何根据使用情况进行优化的,以实现快速访问或修改。最后,我们将详细介绍 V8 如何处理整数索引属性或数组索引。

JS 递归过滤 JSON 数据

· 阅读需 5 分钟
Hanasaki
阿巴阿巴阿巴

负责人布置了个任务,写一个过滤 JSON 数据的方法,处理一下模型数据。递归绕的我真晕,脑子内存还是不太够。

样例数据

规则:bosclass 值为 boqs 的是树节点,bosclass 值为 wps 的是纯数据。如果树节点的 children 是空数组,那么把树节点移除掉。树的层级是无法预估的,可能有很多层。以下是过滤后的数据:

[
{
"bosclass": "boqs",
"children": [
{
"bosclass": "boqs",
"children": [
{
"bosclass": "wps",
"guid": "fa01a4a1f1d448a3bfb315dac41e1914"
},
{
"bosclass": "wps",
"guid": "cbf47dc52b2243c1a9d46bb046d8a13d"
}
],
"guid": "f785b4a061714dfe8fea367d12ddd29c"
}
],
"guid": "8bc6c9026bb9472f8a3e23b382f87ac1"
}
]

如何过滤呢?首先想到的方法是递归!