Asutorufaのブログ

こんにちは

Asutorufaのブログ

HP Laptop linux 下intel&amd双显卡

发布于 2020-06-05|更新于: 2020-06-05|分类 Linux

查看双显卡切换情况,正常情况下如果没有在用独显应该显示是DynOff,但是我这里即使是不开桌面也是DynPwr

[ ~ ] cat /sys/kernel/debug/vgaswitcheroo/switch0:DIS-Audio: :DynPwr:0000:01:00.11:IGD:+:Pwr:0000:00:02.02:DIS: :DynPwr:0000:01:00.0

查看dmesg找到

[    3.495606] [drm] amdgpu kernel modesetting enabled.[    3.495628] vga_switcheroo: detected switching method \_SB_.PCI0.GFX0.ATPX handle[    3.495741] ATPX version 1, functions 0x00000033[    3.495873] ATPX Hybrid Graphics

找到了调用的方法,网上搜了一圈都没有使用方法,然后使用acpi_call尝试了几个参数,最后找到

echo "\_SB_.PCI0.GFX0.ATPX 2 0" >  /proc/acpi/call

嗯,确实有用,但是实在是太暴力了,直接把整个显卡移除,可以看一下日志

DNS客户端协议详解

发布于 2020-05-31|更新于: 2020-05-31|分类 Network

这个DNS系列现在有以下几篇文章

完整代码请看DNS

DNS Header

                                1  1  1  1  1  1  0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|                      ID                       |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|                    QDCOUNT                    |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|                    ANCOUNT                    |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|                    NSCOUNT                    |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|                    ARCOUNT                    |+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

header在dns请求和应答中相同的,查询中有Query Section,应答中有answer section.

  • ID: 2字节,应答中也有ID,可以用来判断是否为我们请求的应答
  • QR:1bit,请求时为0,应答时为1
  • Opcode:4bit 通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求),[3,15]保留值
  • AA:1bit authoritative answer,在应答中才有效
  • TC:1bit 表示可截断
  • RD:1bit 期望使用递归查询
  • RA:1bit 在应答中返回,返回服务器是否支持递归查询
  • Z: Reserved for future use.
  • RCODE:4bit,应答码,代表返回的状态
    • 0 No Error
    • 1 Format error 格式错误
    • 2 Server failure 服务器失败
    • 3 Name Error 查询域名错误
    • 4 Not Implemented 未实现的查询方式
    • 5 Refused 拒绝
    • 6-15 Reserved for future use.

翻译-C程序员所应该知道的内存

发布于 2020-05-04|更新于: 2020-05-04|分类 Program

原文章 What a C programmer should know about memory
提示: 本篇文章的图片都是直接使用原文中的图片的地址,如果无法显示,请挂代理


2007年,Ulrich Drepper写了一篇"每个程序员都应该知道的内存".是的,虽然这篇文章又细又长,但做到了它所应做到的.很多年后,虚拟内存的概念对于很多人来说仍然难以琢磨,仿佛是某种魔法.我无法抗拒的引用一下.很多年后甚至原始文章的有效性也被质疑,到底发生了什么事?

北桥,这是什么东西?那不是巷战.

我尝试从"学习锁的基本原理"去传达实用的一面(比如:你能做什么)和更多有趣的东西.可以看待这是一个胶水在原始文章和你每天使用的东西之间.例子将使用linux上的C99,但是更多主题将是普遍的.
编辑: 虽然我对Windows不了解,但我很乐意联系文章去解释.我会尽全力去提起什么函数是平台特有的,但是再一次我只是一个人.如果你发现出入,请让我知道.
事不宜迟,倒一杯咖啡,让我们开始吧。

译者注:

worth one's salt:    good or competent at the job or profession specified.    ig:"any astrologer worth her salt would have predicted this" what gives?    是在英语对话中常用的一句口语    通常用它的时候只有两层意思    一个是What's happening?发生了什么事?    另一个是What is the news?有什么消息? the practical side    实用的一面

理解虚拟内存 - 复杂且神秘

除非你要处理一些嵌入系统或内核空间的代码,否则你应该在保护模式下进行.这太棒了,你的程序一定拥有它自己的[虚拟]地址空间.“虚拟"在这里很重要.这意味着,除了其他事情外,你不会被可使用的内存限制,但是也无权获得任何.为了使用这些空间,你不得向操作系统要一些真东西来作后援,这被叫做映射.后援可能是物理内存,也可能是持久性存储.前者也被叫做"匿名映射”.但是,稍安勿躁.

解决linux下Realtek ALC295的耳机炸裂声

发布于 2020-04-25|更新于: 2020-04-25|分类 Linux

个人使用的笔记本是暗影精灵2 PRO,产品名称是: OMEN by HP Laptop 15-ax210TX.

最初本人装的是ubuntu,左边耳机的声音一直有噼里啪啦的炸裂声,后来换了Arch还是一样的情况,而且本人喜欢听安静的声音,类似读故事或是心跳声这种,每次听到劈裂啪啦的声音真是难受.

最初尝试过Arch wiki中的各种方法 包括

PulseAudio/Troubleshooting#Glitches,_skips_or_crackling
PulseAudio/Troubleshooting#Static_noise_when_using_headphones

都没有任何改进.

直到后来才发现这是linux下Realtek ALC295的驱动不完善导致的,这个bug在17年就提出了,至今都没有得到解决.

Bug 195457 - Realtek ALC295 still unsupported
Crackling and popping sound when using headphones

即使有人提交补丁并合并到了linux内核中

ALSA: hda - Fix missing COEF init for ALC225/295/299

但是事实证明并没有用

依照上面有人提供的方法却有效(看起来跟提交补丁差不多,但是补丁却没有起作用):

NAT穿透

发布于 2020-04-22|更新于: 2020-04-22|分类 Network

NAT 网络地址转换

网络地址转换 NAT (Network Address Translation) 方法于1994年提出。
需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫作 NAT路由器,它至少有一个有效的外部全球IP地址。
所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

网络地址转换的过程

内部主机 A 用本地地址 IPA 和互联网上主机 B 通信所发送的数据报必须经过 NAT 路由器。
NAT 路由器将数据报的源地址 IPA 转换成全球地址 IPG,并把转换结果记录到NAT地址转换表中,目的地址 IPB 保持不变,然后发送到互联网。
NAT 路由器收到主机 B 发回的数据报时,知道数据报中的源地址是 IPB 而目的地址是 IPG。
根据 NAT 转换表,NAT 路由器将目的地址 IPG 转换为 IPA,转发给最终的内部主机 A。

网络地址转换表例子:

+-------------+---------------+| private IP  |   public IP   |+-------------+---------------+| 192.168.1.55|219.152.168.222|+-------------+---------------+| 192.168.1.59|219.152.168.223|+-------------+---------------+|192.168.1.155|219.152.168.224|+-------------+---------------+

とある番組の記録

投稿日 2020-02-15|更新日: 2020-03-12|カテゴリ 日本語

最近わたくしはたくさん言葉知りました、記録したい、例えば:どこ見つかった、どうおもう。
今回は「22・7 計算中」、この番組すごくおもしろい、ぜひ見てください。

ツッコミ・漫才・呆け

この番組のMCは三四郎さん、おふたりはお笑い芸人ですね、この前に私は全然しらなかった、いつも「ツッコミ」を言うで、知りたいですからしらべました。

パクリ

用Android/PC为linux拓展屏幕

发布于 2020-02-12|更新于: 2020-02-12|分类 Linux

新建虚拟屏幕

计算出拓展屏幕所需的信息.比如我想拓展1920x1200 60fps的虚拟屏幕:

gtf 1920 1200 60

结果

 # 1920x1200 @ 60.00 Hz (GTF) hsync: 74.52 kHz; pclk: 193.16 MHz  Modeline "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

使用xrandr添加新的mode,参数就是上面结果Modeline后面那些东西:

xrandr --newmode "1920x1200_60.00"  193.16  1920 2048 2256 2592  1200 1201 1204 1242  -HSync +Vsync

使用xrandr查看空闲的接口:

OpenCV瞳孔定位

发布于 2020-02-06|更新于: 2020-02-06|分类 Computer Graphics

利用OpenCV自带的分类器识别面部及眼睛

OpenCV自带里许多分类器,可在haarcascades下载

获取面部

// 获取面部// image 为输入的OpenCV的格式的图像// out 为输出图像 <- 此处输出图像为裁剪下来的矩形面部图像bool get_face(cv::Mat image, cv::Mat &out){    // 将图像转为灰度图像,可提高识别精度    cv::Mat gray;    cv::cvtColor(image, gray, CV_BGR2GRAY, 0);    // 此处的rect为用来存储识别出的面部的定位 <- 这里为vector是因为识别的面部可能不止为一个    std::vector<cv::Rect> rect;    // 初始化OpenCV的分类器    cv::CascadeClassifier cas = cv::CascadeClassifier("haarcascade_frontalface_default.xml");    cas.detectMultiScale(gray, rect, 1.15, 5);    // 判断rect是否为空,为空的话就是没有被识别的面部    if (rect.empty())    {        return false;    }    // 输出图像,这里的rect可能不止为一个(因为可能不止一张脸),所以实际中应该使用for循环    // 我这里用rect[0]为了简化    out = image(rect[0]);    return true;}

http Keep-Alive

发布于 2019-12-23|更新于: 2019-12-23|分类 Network

http keep-alive

http头部Connection: Keep-Alive代表连接请求保持长连接
如果是http代理,必须处理Proxy-Connection: Keep-AliveConnection: Keep-Alive,如果代理没有实现Keep-Alive就不变或者将Connection设为close.

优点:减少握手次数,如下图(图来源文章最下面)
keep-alive

©2026Asutorufa