ntzyz's space

∠( ᐛ 」∠)_

Category

  • Algorithm
  • Figures
  • Gameplay
  • Linux
  • Network
  • Other
  • Photos
  • Web

Tags

  • Linux
  • JavaScript
  • PS4
  • A6300
  • A7M3
  • HTML5
  • OpenWrt
  • FE55
  • 手办
  • systemd
  • Web
  • Tunnel
  • Arcaea
  • iptables
  • Network
  • node
  • 雪
  • VPN
  • 狗
  • 猫
  • PowerShell
  • AudioContext
  • MediaSource
  • IPv6
  • SQLite
  • NVMe
  • Gaming
  • CSharp
  • Routing
  • LeetCode
  • PPTP
  • HDOJ
  • MHW
  • USB
  • FromSoftware
  • Highlight.js
  • FE24105G
  • CI
  • Algorithm
  • VR
  • HTML
  • Arch Linux
  • WireGuard
  • SVP
  • Minecraft
  • Highcharts.js
  • SDL
  • CAPCOM
  • Sekiro
  • iSCSI
  • WebAssembly
  • GitHub
  • UEFI
  • MPV
  • UglifyJS
  • MySQL
  • PHP
  • NAT
  • Surface
  • Node

Recent replies

  • 张建新 发表于「在浏览器中使用 WebAssembly 解码 MP3 并播放」
  • 张建新 发表于「在浏览器中使用 WebAssembly 解码 MP3 并播放」
  • Dingles 发表于「个人网络配置方案」
  • 竹林里有冰 发表于「用 Elastic Stack 拯救 Telegram 的中文搜索」
  • spinmry 发表于「CoreMark WebAssembly」
  • spinmry 发表于「CoreMark WebAssembly」
  • ntzyz 发表于「CoreMark WebAssembly」
  • Hatsuroku 发表于「CoreMark WebAssembly」
  • Kyle 发表于「用 Elastic Stack 拯救 Telegram 的中文搜索」
  • ShellBin 发表于「Cinebench」

Links

About me
WordPress 存档
Cinebench 跑分记录
Coremark WebAssembly 跑分记录
Hpoi 手办维基 个人页
ZephRay
>Lithia's Core
业余无线电台 BD4SUR
Ferrets 家的 Wordpress
spinmry实验室
notonokodds
春上冰月的博客
kasora's blog
蒋炜成 | 个人博客
Test2g
447f.Misaka
Project RC
Shell Bin
标签:Linux

Linux 下双屏多 DPI 的一种思路

2019 年 4 月 15 日分类:Linux#Linux

很简单(粗暴),只要全部按照最高 DPI 去渲染,然后在低分辨率上压缩后呈现就行了。这种方案下低 DPI 的屏幕会被“超采样”,会有一点点模糊,但是比起让高分屏呈现低分辨率画面的方案,损失不算大。

具体怎么做的话,比如我这里是两个 27 寸的显示器,分别接驳在 DP1 和 HDMI2 上(可以使用 xrandr 查看)。其中,DP1 是一块 Dell 的 2K 显示器(2560x1440),HDMI 2 是联想的一个 FHD 显示器(1920x1080)。屏幕的位置关系的话,FHD 在左侧,2K 在右侧。

首先你需要禁用窗口管理器自带的多屏幕管理器(比如 KDE 有 Kscreen2),如果没有那就不用管了。之后,在 ~/.xinitrc ,或其他等效的 X11 启动脚本中,中添加以下命令:

xrandr \
  --output HDMI2 \
    --panning 2400x1350 \ # 左侧屏幕的渲染分辨率
    --pos 0x0 \           # 左侧屏幕左上角的位置
    --scale 1.25x1.25 \   # 左侧屏幕的缩放倍数
  --output DP1 \
    --panning 2560x1440 \ # 右侧屏幕的渲染分辨率
    --pos 2560x0 \        # 右侧屏幕左上角的位置
  --fb 4960x1440          # 整个 framebuffer 的大小

这里的一些数值都是我这里的参数,不同的多显示器配置可能需要稍微自己算一下,没啥难度的。

完成后,重启 Xorg 即可完成调整,不出意外两块屏幕就能比较正常的工作了。效果如下图:

MORE

个人网络配置方案

2019 年 3 月 15 日分类:Network#Linux#PS4#Tunnel#Network

距离上一篇文章发布已经好几个月了,自己的网络搭建也和之前有了比较大的区别,就简单的记录一下吧。

基础网络访问

首先是居住场所对 Internet 的访问。大概是去年十月吧,我从之前住的那个只有无线接入网络的小地方搬出来,开始和同事一起合租。花的钱和之前差不多,但是体验上提升了不止一个档次,最明显的一点是对路由器和无线接入点有了完全的控制能力。这间出租房已经准备好了电信的 100Mbps 宽带,然而却配了一个稀烂的无线路由器,并且是由光猫进行 PPPoE,也就是上网过程中出现了两次 NAT,强迫症表示十分不满。

第一步就是解决掉原配的无线路由器,换上了自己在大二时购买的网件 R6250。同时着手光猫的破解,准备将其由路由模式改为桥接模式。光猫的处理上没有遇到什么困难,掀开弱电箱看一下光猫型号并 Google,就顺利地找到了可用的相关教程。然后掏出同事的 x86 路由器,灌入来自 OpenWrt x86_64 18.06.1,并配置好 PPPoE 接口,就顺利的完成了路由改桥接的工作。至于 R6250 呢,则将它配置成接入点(AP)模式,并将 WAN 口与路由器的 LAN 口连接即可。

除此以外,我还购买了迅雷的快鸟会员,该服务可以将 100Mbps 的宽带提升到 200Mbps 下行,20Mbps 上行的水平,体验进一步飞升。

MORE

ARM v7 交叉编译笔记

2018 年 5 月 16 日分类:Linux#SDL#Linux

busybox,产生一个最小的可用 coreutils 等工具,并充当新系统的 init,毕竟这种嵌入式场景要是跑 systemd,开机速度什么的就走远了(

$ wget https://busybox.net/downloads/busybox-1.28.3.tar.bz2
$ tar xjvf busybox* && cd busybox*
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- defconfig
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j64
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install CONFIG_PREFIX=/root/basefiles

SDL 1.2,把除了 fbcon 之外的 video 和 audio 都关了。SDL 支持的东西真多啊,居然还有 PS2 PS3的。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr \
            --disable-audio \
            --disable-threads \
            --disable-x11 \
            --disable-dga \
            --disable-video-photon \
            --disable-video-cocoa \
            --disable-video-directfb \
            --disable-video-ps2gs \
            --disable-video-ps3 \
            --disable-video-svga \
            --disable-video-vgl \
            --disable-video-wscons \
            --disable-video-xbios \
            --disable-video-gem \
            --disable-video-opengl
make && make install

zlib,作为 libpng 和 freetype2 的依赖。

CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AS=arm-linux-gnueabihf-as ./configure --prefix=/root/basefiles/usr
make && make install 

libpng 1.6,资源文件保存格式,SDL_image 依赖该库。

必须注意的是头文件目录一定要放在 CPPFLAGS 这个变量里,否则会报错。同时如果 已经报错了记得 make clean 了之后再编译,否则这个错误不会被修正。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr \
            CPPFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib"
make && make install

SDL_image 1.2,去掉了所有其他用不到的格式,只保留 PNG 的支持。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-sdl-prefix=/root/basefiles/usr/ \
            --disable-jpg \
            --disable-tif \
            --disable-webp \
            CFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib"
make && make install

Freetype2 会通过 pkg-config 命令来判断系统内是否安装了 libpng 和 zlib,所以我们需要手动指定这个 PKG_CONFIG_PATH ,或者干脆去掉对 libpng 的支持。

./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-png=yes \
            CFLAGS="-I/root/basefiles/usr/include" \
            LDFLAGS="-L/root/basefiles/usr/lib" \
            PKG_CONFIG_PATH=/root/basefiles/usr/lib/pkgconfig/

SDL_ttf,需要把 include/SDL 内的 SDL_opengl.h 给删掉或者改名,因为 configure 内没有提供任何方法来关闭 OpenGL,只能破坏这个检测机制来避免让 autoconf 认为我需要使用 libGL 进行链接。

[ -e /root/basefiles/usr/include/SDL/SDL_opengl.h ] && mv /root/basefiles/usr/include/SDL/SDL_opengl.h /root/basefiles/usr/include/SDL/SDL_opengl.fucked.h
./configure --host=arm-linux-gnueabihf \
            --prefix=/root/basefiles/usr/ \
            --with-freetype-prefix=/root/basefiles/usr/ \
            CFLAGS="-I/root/basefiles/usr/include -I/root/basefiles/usr/include/freetype2" \
            LDFLAGS="-L/root/basefiles/usr/lib -lfreetype" \
            PKG_CONFIG_PATH=/root/basefiles/usr/lib/pkgconfig/

OpenCV3,测试算法使用,正式代码中使用的部分将被重构

cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../.. -DCMAKE_INSTALL_PREFIX=/opt/rootfs/usr -DENABLE_NEON=ON

使用 systemd-nspawn 快速创建 Linux 容器

2017 年 12 月 21 日分类:Linux#Linux#systemd

使用 systemd-nspawn 这个命令我们可以很方便的创建一个 Linux 容器,需要的只是一个使用 systemd 作为 init 的 Linux 发行版的根文件系统。通过创建容器,我们可以获得一个可以随便折腾而不用担心损坏的 Linux 环境。这里用 Ubuntu 16.04 和 CentOS 7 为例,整个过程可以说是非常简单(虽然比起 Docker 还是麻烦了点)

对于 Ubuntu,可以直接从源里下载到它的根文件系统。下载一份,并解压到 /var/lib/machines/ubuntu1604:

MORE

小实验:扩展 PS4 的存储

2017 年 9 月 20 日分类:Linux#PS4#USB#Linux#iSCSI

PS4 到手之后游戏买买买,500G的磁盘换成了1TB也快用完了,但是买2TB的话就感觉很麻烦,一来是要全部重新迁移数据,二是换下来的1TB WD Black也没其他地方用,就很难受。

查了一圈后发现,PS4 在某次系统更新后提供了将 USB 存储格式化为扩展存储的功能,也就是说可以用 USB3.0 的移动硬盘来装游戏。可能是有偏见吧我一直觉得移动硬盘是非常不靠谱的东西,不过这个特性倒是一个不错的拓展存储的切入点。

要说扩展存储,如果是普通的 PC 上有这个需求,解决方法非常多,比如我可以建立一个 SMB 协议的共享,Windows 和 macOS 原生兼容,Linux 只需要加载 cifs.ko 即可;当然 NFS 来实现也没有任何问题;如果对加密有需求,或是需要一个裸磁盘,还可以用 iSCSI 来做到。可是 PS4 目前没有破解,以上方法都不可行。

于是就想,PS4 支持 USB 存储的扩展,我能不能将上面提到的一些方式通过 USB 暴露给 PS4 来实现呢?比如这样一个设备:它本身是一个 USB 从机,同时有一个 GbE 接口,可以千兆访问到局域网里的 iSCSI Target,然后通过一些魔法,将 iSCSI Target 拿到的磁盘设备直通到 USB,让 PS4 认为这是一个大容量的 USB 存储。

MORE
  • «
  • 1
  • 2
  • »
Copyright © 2016-2019 ntzyz. All rights reserved.
Except where otherwise noted, content on this blog is licensed under CC-BY 2.0.