普通视图

发现新文章,点击刷新页面。
昨天以前Shuo's Blog

Vim 首行乱码问题解决方法

2020年12月8日 18:59

在使用 Vim 时遇到了首行乱码形如"+q436f+q6b75+q6b64",错误的乱码“掩盖”了正确的内容,却不会覆盖正确的内容,但能够导致首行的内容无法被查看,解决这项问题的方法是在 ".vimrc" 文件中添加 "set t_RV=" 确保 Vim 能够显示正确的内容。


问题复现

在我的 Linux 虚拟机 (WSL) 上运行 Vim 时总会在第一行出现一行乱码,在多次重装 Vim 无果后,终于在 Github 的 Hyper 项目上找到答案

# 我的配置

系统 Vim Shell
Ubuntu 18.04 LTS Vim 8.0 zsh with oh-my-zsh

目前已知的其他系统可能会存在相同的 Vim 问题:
OS X 10.12 (Sierra)
Arch Linux

WSL 上使用 Vim 后 (无论是否打开文件),第一行会出现一行显示乱码,亦或称为Broken first line rendering in VIM (引用自 Github issues)
vim with render issues
形如+q436f+q6b75+q6b64这种乱码仅能通过Ctrl + L消除。


解决方案

在 Terminal 内编辑 .vimrc 文件,并添加set t_RV=

# wushuo @ DESKTOP-91UDQ1D in ~ [19:29:21] C:1
$ vim ~/.vimrc
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set fencs=utf-8,gbk

### 设置下面这条的配置哦
set t_RV=
### 设置上面这条的配置哦

call plug#begin('~/.vim/plugged')
Plug 'dense-analysis/ale'
call plug#end()         

再次打开 Vim,发现首行的渲染错误已经消失了。


引用资料

Hyper 项目下的 Github issues
Broken first line rendering in VIM (parseUntilStringTerminator_ aborts) #1037


一点点想说的话

一篇博客读起来的时间很短,特定内容的博客受众面少,写起来却异常花费时间。
驱使我写博客的目的是我能够静下心来思考,文字想要精炼,磨难也要经历。临近期末考试和四级考试,博客终于被捡起来写了一篇,维护了一下两个托管在 Github 上的静态站点,如果有时间,还能趁机打开一下 Gittalk 评论 (虽然我知道我的博客无人评论)。

在北林的大二半年,过的很累,也并不充实,前几周看了 linghao 的博客,发现自己消磨在不必要的事物上的时间太多了。来北京高铁上的写了一半的博客一直搁浅了,卸了知乎,闲来刷刷推特。看着手机的使用时间记录后,推特确实比知乎对时间和思维消耗比知乎少太多了。

电子系明显比车辆系卷太多了,课程难且不说,精力的消耗难以避免,老师们似乎都沉浸在:“这门课这么难,我教的不错,很有深度,所以学生们收获许多”的幸福里。而我感到的只有 Push 。抛开一小部分做硬件的同学来说,学这么多门知识杂碎,耗费精力极高的高难度课程,是将试错成本拉低许多。一本 CSAPP 或是 一本 Algorithm 的时间就被浪费在”这门课好难,我要挂科了,得好好学习刷题“的时间里了。

或许是我的时间没有被好好利用,又或许是电子系本身就要天天熬夜刷题才能通过,我对数电,模电和电分真的没什么感觉。相反,RustApple GSX 认证 已经被我加入了提醒事项。我只想做个平凡人,或许平庸人也适合我。

博客还得坚持写,英语也得坚持学,考试也得去考考。

写于
模电考试前两天/四级考试前四天
北京林业大学 学12号楼

集成电路封装方式简介

2020年8月24日 23:02

本文主要介绍现代半导体行业芯片主要的封装方式。

# DIP 封装

  • Dual Inline Package 即双列直插封装
  • 在没有在线编程时代,便于烧录
  • 现在较多用于单片机 MCU

方向和引脚编号

  • 当元件的识别缺口朝上时,左侧最上方的引脚为引脚1,其他引脚则以逆时针的顺序依序编号。有时引脚1也会以圆点作为标示。

# PGA 封装

  • Pin Grid Array 即插针网格阵列
  • PGA封装一般是将集成电路(IC)焊接在一块电路板上,电路板的另一面是排列成方阵的插针
  • 插针可以插入或焊接到其他电路板上对应的插座中,适合于需要频繁插拔的场合

用途

  • intel早期处理器曾使用PGA封装,如 Intel Pentium 4 with 1.4 Ghz 1 Core 1 Thread
  • AMD 的绝大部分桌面级CPU采用PGA封装,仅有Ryzen Threadripper系列及服务器的EPYC等少量CPU为LGA封装。

# BGA 封装

  • Ball Grid Array 即球栅阵列封装
  • BGA封装常用来永久性固定如微处理器之类的的装置
  • BGA封装能提供比其他如双列直插封装四侧引脚扁平封装所容纳更多的接脚
  • BGA封装技术提供低电感引脚,在封装与PCB之间的距离非常短,有了低电感引脚,相较于针脚装置能有更优异的电子特性

用途

  • 绝大多数笔记本电脑都采用BGA封装

# LGA 封装

  • Land Grid Array 即平面网格阵列封装
  • LGA封装的特点在于其针脚是位于插座上而非集成电路上。LGA封装的芯片能被连接到印刷电路板(PCB)上或直接焊接至电路板上
  • LGA封装与传统针脚在集成电路上的封装方式相比,可减少针脚损坏的问题并可增加脚位

用途

  • Intel 的绝大多数桌面级处理器均采用LGA封装
  • AMD 和 IBM 也曾采用过LGA封装,如 AMD 的 Socket TR4 (Zen2) 和 IBM 的 Power 8

# PLCC 封装 即 塑料芯片载体

  • Plastic Leaded Chip Carrier
  • PLCC封装在正方形的封装四边都有接脚,相比起其内部用来挂载集成电路的空腔来,整个封装所占体积较大
  • PLCC封装为32引脚

# MCM 封装

  • Multi-Chip Module 即多芯片模组
  • 在MCM未发创前,一个封装内多半只有一个裸晶

新年旧札

2023年2月1日 19:18

过年回我爷爷奶奶家所闻

我奶奶告诉我她的一只眼睛是被她妈妈不小心打瞎的,嫁不出去(寻不到好人家)于是嫁给我了我爷爷

我奶奶的妈妈(太奶奶)是红军的弃婴,出生在安徽郎溪。后来亲生父亲来接她回北京,她没认她父亲自然也没有去北京,后来嫁给了安徽郎溪的一个当地大户人家(也就是我奶奶的生理学父亲1^1)作小妾,生下了我奶奶

后来太奶奶被赶出家门(原因不知),带着我奶奶从安徽郎溪一路要饭到浙江长兴泗安,在这里带着我奶奶改嫁,于是我奶奶就有了新的父亲

和我奶奶比起来,我爷爷则更像是土著浙江人,因为他家族的移民要追溯到清末年间的河南信阳下江南移民
我 爷爷的爷爷(高祖父)被放在箩筐里,从河南光山挑在箩筐里移民到浙江长兴,从此在这里定居。因此,我爷爷在浙江长兴出生,讲的却不是吴语片区的方言(长兴话),而是河南官话(准确来说是河南光山方言)

我爷爷奶奶的村里,几乎讲的都是“河南话”,这是由于整个村里都是从河南移民而来的人
近年来,住在主城区周边的村落的河南移民后代也都进入主城区发展,主城区内的吴语方言2^2和河南话也由原来的吴语方言主导转变为两种方言通用

依我浅薄的买菜经验,绝大多数卖菜的老板,超市的员工,都会听说两种方言

这里有一篇来自河南罗山县人民政府政协撰写的《一担箩筐下江南的历史正剧——信阳地区清朝末年移民苏浙皖环太湖历史考察记略》
一言以蔽之,清末太平天国运动导致江浙皖环太湖地区人口锐减(有关这方面的研究甚多),来自河南的人口迁移到环太湖地区,我爷爷就是其中的后代

如果说移民有什么影响,那么大道理想当然一大堆。但清末那次移民,还是给了我的小学生活带来了很多不愉快

我的小学就读在主城区的小区内,又是以 No. 数字命名的公立小学。老师,同学们在非授课时间说的都是吴语方言;老师在上课骂人时也用的是我听不懂的吴语方言,这也导致我对吴语方言的学习非常抵触,到现在为止能听懂大部分当地的吴语方言,杭州话,上海话等等,会说的也只有那几句骂人的话。我真心认为我就读的那所小学的教师素质无法匹配上它 “XX 县第 X 小学” 的名字,所有人对校园霸凌熟视无睹,老师也可以随便打小学生

公立初中(依旧是城区),明显感觉到教师素质提高一节,老师几乎很少骂人,没有动手打人的习惯,身边也几乎很少有说吴语方言的同学了

上了高中,从乡镇上考来的同学多了,移民后代讲河南方言的同学多了起来,班上甚至有一半以上的同学都会说河南方言(我觉得也可能是和时间推移人口流动有关)

有次在北京打车,碰到个河南的大哥他说的话我听得懂,我就跟他说我家乡河南方言。他问我哪里的,我说浙江,慢慢跟他解释移民的事

注释:

  1. 生理学父亲:使用这个词语的立场没有任何性别倾向
  2. 吴语方言:这里的吴语方言特指浙江省湖州市(太湖沿岸片区)的吴语方言

iTunes 家庭媒体

2021年7月20日 15:54

流式传输定义很广泛,主要指通过网络传送流媒体 ( 如视频,音频 ) 的技术总称。其特定含义为通过网络将影视节目传送到终端。为了通过 Wi-Fi 传输数字音乐,AirPlay 使用 RTSP 协议,即实时流协议。Apple Lossless 音频编解码器以 44100Hz 的速度传输两个音频通道。

请注意,本文会出现数张较高分辨率照片,它们或为 1280x720 webp 格式,为了确保图片可以被正常加载,你需要确认以下事项:

  • 能够正常访问 Github 且能够透过 jsDelivr 以正常速度加载图片
  • 你的设备或浏览器要求兼容 webp 格式的图像,这里特指 Apple 设备及 Safari 浏览器。Safari 浏览器需要更新至支持 webp 的版本,通常来说需要 iOS 14 以上的 iOS 设备或 macOS 11 Big Sur 以上且已经更新至最新 Safari 的 Mac 设备
  • 若满足以上两项仍然出现图片加载缓慢,请耐心等待,全站已开启惰性加载 ( Lazy Loading )

目录

Airplay 介绍

Airplay 是 Apple 的私有协议,可以使得媒体在 iOS 和 macOS 设备之间流转,同时可以传输媒体的元数据,如封面,艺人,类型,分类等

Airplay 在简体中文系统中被翻译为了隔空播放,可以在 iOS 和 macOS 的控制中心打开,同时本文所介绍的基于 iTunes 的家庭媒体系统也是通过 Airplay 流转至播放终端

Airplay 工作原理为在发射端 ( 如 Mac 或 iPhone ) 将流媒体加密,通过 RTSP 协议与接收端握手,将流媒体传输到接收端 ( 通常是 Apple TV 和 HomePod ) 进行硬解码和播放1

显然,Airplay 的传输速度取决于局域网的网速,当然也受限于发射端与接收端的速度,如果局域网内基于 RTSP 协议的速度无法到达视频的码率,观影体验将会糟糕
这里以《普罗米亚》这部影片为例,音频视频总比特率为 13003kbps,这意味着在 RTSP 协议下需要至少 14Mbps 的速度提供较为流畅的播放体验,即我们日常所说的 14M 宽带,但由于 RTSP 协议本身速度并不能达到峰值网速以及 Airplay 协议由多个不同协议构成,建议的网速被要求在 50Mbps 以上

本文中,我们以 Mac 或 PC 作为发射端,iPhone,iPad,Apple TV 作为接收端

iTunes 资料库构建

为了得以构建在局域网络运行良好的 iTunes 资料库以便流式传输

  • 发射端 ( 即存储影片的设备 ) 为一台 Mac 或 PC,并且安装了较新的操作系统和 iTunes
  • 接收端 ( 即用来观看影片的设备 ) 应该为 Apple 设备 ( 如 Apple TV,iPhone,iPad,Mac ),即使 PC 版 iTunes 也能观看,但体验糟糕
  • 局域网络速度至少应该在 50Mbps 以上

如果使用 PC 构建 iTunes 资料库,参考:
通过 PC 上 iTunes 中的“家庭共享”将内容流化到 Apple TV2

如果通过 Mac 上的 iTunes Store 构建 iTunes 资料库 ( 通常为 Mac OS X Lion 至 macOS Mojave ),参考:
配置运行 macOS Mojave 及更早版本的 Mac,或者 Windows PC:在 iTunes 中,前往“文件”>“家庭共享”,然后选取“打开家庭共享”。输入您的 Apple ID 和密码,然后点按“打开家庭共享”3

如果通过 Mac 上的 Apple Music App 以及 Apple TV App 构建 iTunes 资料库 ( macOS Catalina 及之后版本 ),参考:
使用“家庭共享”将媒体从电脑共享到其他设备4

请注意,无论使用哪一种方法构建 iTunes 资料库,发射端与接收端都必须处在同一网络下,并且登录相同的 Apple ID

iTunes 资料库整理

Apple 官方给出了如何在 Apple TV App 中整理 iTunes 资料库,但并未给出细节

这里本文给出如何对元数据 ( metadata ) 进行管理,包括 iTunes 资料库如何透过元数据自动管理分类
以 Apple TV App / macOS Catalina 为例

请注意,Apple TV App 或 iTunes 会询问是否将流媒体整齐有序的排列,其本质是建立单独的文件夹“媒体”,并将拖入 Apple TV App ( 或 iTunes ) 或 使用 Apple TV App ( 或 iTunes ) 添加的本地媒体复制到“媒体”文件夹中。同时,这意味着 Apple TV App ( 或 iTunes ) 对“媒体”文件夹拥有完全读写权力,这一点非常重要

导入流媒体

要想导入流媒体进入资料库,只需要拖入流媒体文件至 Apple TV App ( 或 iTunes ) ,App 会自动将流媒体文件复制到 App 目录下 ( 一般为“媒体”或 “iTunes”)

分类流媒体

点击媒体的 更多信息-显示简介-选项,即可开始分类,通常分类选项为三种:影片,电视剧,家庭视频

  • 影片一般为单集流媒体,如电影,纪录片
  • 电视剧一般为多集流媒体如,如动画番剧,电视连续剧
  • 家庭视频一般为自己拍摄的生活视频

为流媒体设置详细信息即元数据

电视剧的设置选项最多且复杂,这里以电视剧为例:

  • 标题:本集电视剧的标题,并非电视剧总标题,如第 114514 集标题《你怎么穿着品如的衣服》
  • 节目:电视剧的总标题,如《回家的诱惑》,同一部电视剧每一集的节目应该设置为一样,资料库会将其自动归档到同一电视剧节目下
  • 季:英语 Season 的翻译,国内电视剧很少有“季”的概念,这里也指代第几部,如《爱情公寓 4》就是第 4 季
  • 剧集:本集电视剧在本季中属于第几集,如如《爱情公寓 2》第 1 集的剧集是 1
  • 剧集 ID:本集电视剧在整个系列中的ID,如《爱情公寓 2》第 1 集的剧集 ID 是 53 ( 第一季为 52 集 )
  • 发布日期:本集电视剧的发布日期
  • 归类:自己定义的类
  • 类型:如群像,爱情,动作,爱情动作等等,自己定义即可选择归类,比“归类”更加实用
  • 年份:该季发布的年份

请注意,iTunes 资料库主要通过元数据 ( metadata ) 进行自动归档,在电视剧设置中,切勿将标题与节目设置错误 ( 例如每一集设置重复的标题而非重复的节目 ),由于资料库对其“媒体”文件夹有完全读写权力,“媒体”文件夹内的流媒体文件可能会被自动覆盖 ( overwrite ),导致珍贵的流媒体文件丢失

影片混流剪辑修改字幕

在 Apple 设备上,mp4 / m4v 格式才能够被原生播放,而 mkv 格式则需要被第三方播放器播放
在 iOS / Mac 设备上,我们可以轻松安装第三方播放器,例如 Avplayer / IINA,但对于 Apple TV ( 特别是 Apple TV 2 和 Apple TV 3 ),无法识别 iTunes 资料库的 mkv 格式流媒体,在这里对格式转换做简略介绍

在这里我们只讨论对于关键帧操作的无损 ( Lossless ) 分割和转换,目前主要流行的工具为 ffmpeg

  • 调用 ffmpeg 进行流媒体容器转换,速度快且无损,如将 mkv 快速转换为 mp4,对于电影来说通常只需数秒
  • 使用开源跨平台软件 LosslessCut 进行操作,LosslessCut 完全支持 ffmpeg,并且带有友好的图形界面和剪辑轨道

对于流媒体字幕,我们可能需要对字幕文件进行修改,这里使用 gMKVExtractGUI 进行视频,音频和字幕的分离,使用文本编辑器 ( 如 VScode ) 对字幕进行修改,再使用 MKVTool 进行混流,得到封装完成的 mkv 格式的流媒体文件

个人配置方案

我将 Mac mini 2014 作为发射端,将我的资料库存储在其中并开启资料库家庭共享,使用 Apple TV 3 作为接受端,只需要将 Mac mini 2014 全天运行 ( Mac 可以全天工作 ),就可以随时打开电视观看 Mac mini 硬盘内的影片
同时,我的另一台 Mac,iPhone,iPad 也能在任何时候访问资料库内的影片

结尾

从网络上下载影片,番剧,或是电视连续剧,仅供个人交流学习使用,属于版权问题的灰色地带
如果经济条件允许,选择如 Netflix 的平台在线观看更好

文献参考

转换器

2021年6月23日 23:07

怎样过完普通的一生 / converter

高中的时候听过学物竞拿奖的同学念的一篇小作文,叫“接受自己的平凡”,那个时候我还不知道其中话的含义;后来他没学物理了,去了浙大的城乡规划

现在我在二本学校学着和物理擦边的电子信息,囿于数学的含义里,写着后半生打算怎么过

我小时候就喜欢研究电子产品 ( 准确来说是喜欢拆解 ),大学读了电子信息发现并不太一样。家里希望继续读下去,我自己没什么想法,想读完书就回到小县城过完一生

有许多人在不同年龄喜欢收集不同东西,比如兼容多种协议的充电器,各种存储设备,古董键盘,CRT显示器等等

我从高中开始迷上了接口转换器,那个时候收集了 MicroUSB to Type-C,Type-A to 3.5mm Jack, OTG,DVI to DP 等等转换器;拥有各式各样的转换器一直是我的梦想,比如不会为了打印文件而折腾蓝牙,直接可以用 Type-A to Type-B 线缆高速传输数据,还能支持热插拔

大二的寒假在家度过,我给家中添置了一台十年前旧电脑改装的软路由,我不仅用它连上了喇叭实现了林檎设备的 Airplay,也将它作为存储设备观看视频和电影,让家中父母购置的 4K 装饰品电视发挥了作用。我在寒假中的娱乐主要来自于折腾这些东西本身,而并非折腾完之后的享受。折腾这些东西学到的大学远没有大学一门课 ( 或者说是有一科考试逼迫我学习 ) 获得的知识多,但我不会感到厌倦,相反乐在其中。我不爱争斗,从小的家庭教育也不是让我超过别人,实现别人已经实现的东西也会让我感到充实 ( 事实上我并无任何创新 )。

倘若几年后,我在正常作息之余能收集我喜爱的接口转换器 ( 真期待那时 USB 的形状是否能改变,抑或有更多接口样式出现 ) ,可以在闲暇时间看自己改完字幕混流后的电影,这样的人生对现在的我来说就是圆满的。至于娘子,孩子,房子和车子则都不在必要的考量范围内,票子只要能在亲人生病时能够承担医疗费用就足够了 ( 也即是“钱在救命时才是最重要的” )

于北京林业大学
二〇二壹年陆月贰拾肆日 凌晨

卷积积分介绍

2021年6月15日 17:24

卷积、旋积或摺积 ( Convolution ) 是通过两个函数 f 和 g 生成第三个函数的一种数学算子,表征函数 f 与 g 经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。

卷积积分的定义

f(x),g(x)f(x), g(x)R\mathbb{R} 上的两个可积积分,

f(x)g(x)=+f(τ)g(xτ)dτf(x) * g(x) = \int_{-\infty}^{+\infty}f(\tau)g(x-\tau){\rm d}\tau

也就是

(fg)(x)=define+f(τ)g(xτ)dτ(f * g)(x) \overset{define}{=}\int_{-\infty}^{+\infty}f(\tau)g(x-\tau){\rm d}\tau

它是其中一个函数翻转,并平移后,与另一个函数的乘积的积分,是一个对平移量的函数

含义

物理意义

卷积是求和(积分)。 对于线性时不变的系统,输入可以分解成很多强度不同的冲激的和的形式(对于时域就是积分),那么输出也就是这些冲激分别作用到系统产生的响应的和(或者积分)。 所以卷积的物理意义就是表达了时域中输入,系统冲激响应,以及输出之间的关系。

个人理解

用非数学的语言描写数学的含义是非常糟糕的,以下仅为个人见解

如果 ff 是一个物体的本征规律,gg 是一个外部作用,当 gg 不是一次性瞬时的作用,而是沿时间持续的时候,某个时刻物体的状态,取决于他在此前收到的所有外部作用留下的“痕迹”的叠加。要把这个叠加的值算出来,方法就是卷积运算;而卷积中 gg 函数倒过来运算,是因为越新的时间作用的“痕迹”越是最后作用的

❌
❌