無標題文檔

所谓的「前端娱乐圈」

注意:这是篇带有非常浓厚个人情绪的文章。

最近 React 的 Github 项目主页因为意识形态的原因被冲,已经成为了开年为数不多的技术新闻。祖国的前端圈子又一次以这样子的形态被国际环境所认知和理解,这不得不说是一次误解和灾难。

但其实我不奇怪和意外这个事情,因为本身这个事情从导向性上来说是非常可以理解的。

但同样作为技术人员,以我对于国内前端的圈层的认知来说,其实还是超出了我的预想和预期, 而且我非常相信,这已经不是第一次可能也不是最后一次。

我是非常反感意识形态和技术本身挂钩的,虽然「技术无国界」这句话在目前各个国家间的相互制裁和「卡脖子」看来非常的理想化,但我们自己还是需要部分的信仰去支撑自己的信念的。

Github 目前看起来其实还是是个相对比较纯净的社区,但偏偏国内前端这个圈子,就有很多上述类似无关技术的事情发生,让人再次叹息。

我们举例:今天有 React 被冲、往前看还有 Vue 是否是国产框架之争、再往前甚至还有流行框架作者删库跑路…所以,甚至有人戏言国内前端的环境是「前端娱乐圈」。

从技术角度上说,前端开发其实是相对门槛不高的研发岗位。从项目的侧重点上来说,如果说后端关注的是业务逻辑和数据流转,那么前端其实更加关注的是用户体验已经产品的展现形式。

同时前端的技术栈相对比较的多和杂,掌握这些都是需要时间和项目的经验沉淀,但刚开始的初学者因为环境的原因,加上方向上的体系认知还没完全成型,所以都不会非常的深入。

前端的沉淀速度同时往往还会赶不上迭代速度,随着业务和产品的迭代后端已经可能还忙于维护「屎山」,同期时候前端的项目代码因为产品本身已经开始考虑重构,这让很多前端项目往往不会也不关注本身的沉淀。

正是往往缺乏很多业务逻辑的沉淀,所以国内的技术负责人的岗位往往都不会是前端出身,这让前端的话语权更加的弱势,造成相对后端和其他岗位而言,前端的延展性明显没有其他岗位高。

所以,上述各方面的因素这往往会很容易让前端浮于表面的展现形式、以及技术本身迭代带来的快感之中。

其实以上的情况,从这几年的趋势看来也是越发的严重。国内互联网环境的发展,让分工更加明确和细致。

曾经开玩笑的说,以前的前端是把后端写了「顺便」就把页面给套了,而现在的前端是往往实现了以后还要等后端的接口才能跑起来。而后端如果正儿八经想上手前端项目,先不说各种前端类库的选型,光是 webpack 本身的配置就足够让他忙活一阵子了。

我个人从前端转后端那么多年,这种情况其实也完全没有大的转变。虽然目前的国内技术环境普遍的浮躁不堪,但现在看来国内的前端环境尤甚。

那么我们能做些什么呢?其实以下不觉得是个非常好的建议,我也没理由讲些大道理。作为技术人员本身,其实在我看来这些都是基本的素质。

第一条建议,就是关注技术前沿的本身,其实更应该结合实际的项目已经产品的情况,避免空谈技术很无法落地成为空中楼阁。

这在前端这个圈子里是非常普遍的现象:「哎,这个玩意很厉害我应该套用到目前的项目中,先不管适用不适用,但我至少用起来了。」

第二条:其实每个人每个职位都会有自己的瓶颈期,当发现自己对于某项 case 已经长期无法突破的时候,那么应该跳出自己的思维路径,去考虑其他的角度看到更多的维度。

我看很多前端会说自己什么什么框架,然后列举了一大堆。但是在我看来掌握框架本身其实是「外功」,真正的「内功」修行应该提升到和设计思路这个层次。

例如,举个例子很多 Angular 初学者不知道依赖注入的思想,但是如果你是后端 Spring 使用者,那么会非常容易熟悉和理解。设计思想这块前后端很多时候是相通的。

如果你不理解就不会包容,就容易陷入框架和工具本身的争执中,因为你只是熟悉自己熟悉的。

那么第三条,我们就可以引申出来:避免多余的争论。我在 V2EX 上往往会 看到很多针对同类型的类库、重复的轮子的技术争论。

这些其实这是很容易挑起争端、引起话题,但同时也是很容易没有结果 - 毕竟都在一定程度上解决了相通的问题。

最后一条:更不要将技术和意识形态挂钩。这条其实是最基本的,同时也是最最重要的。

在我看来技术本身就是技术,是为了解决和实现具体的问题以及需求存在的,所以事物的本身不应该有任何的倾向性。

最后,我所期待的前端他应该是链接冰冷的数据和业务逻辑、给到真实用户体验的枢纽和桥梁。

所谓的「前端娱乐圈」当然只是笑谈,我们作为前端当然也应该知道前端本身能力所赋予的意义,前端这个圈子也不应该沦为技术无关的争论甚至意识形态的战场。

基于 CIY68 打造性价比超高的客制化键盘

其实很久就像组块客制化的键盘,但是由于时间和精力(当然还有预算)的关系,直到这段十一期间才折腾了一把。

折腾的原因之一,也是因为在假期期间看到只需要 79 的 CIY68 「试轴器」,与其说是试轴器不如说是个入门的 68 键位的套件,该有的它都有所以性价比非常的高。

总体成本

除了 79 大洋的套件以外,剩下的键盘主要的费用就是轴体和键帽了,我研究了下如果使用国产的轴和键帽的话,那么总体基本上可以把预算和成本控制在两张人民币以内。那么,说干就干,以下是个人的搭配方案:

bingling!

种类型号价格
套件CIY6879
轴体凯华 BOX 茶轴x7058
键帽国产牛油果 PBT75

其他的,例如两节七号电池等就不记录进去了,总计 79 + 58 + 75 差不多 212 的样子。刚好预算 200 稍微出头一点(当然,如果总在乎预算方面的坚持,可以看下咸鱼)。

下面,逐个的说下这个配件的些到手以后的使用体验。

79 元的「试轴器」

包装和多余的海绵垫

CIY68 这个「试轴器」无论从价格还是功能上都满足了我个人对于套件的所有的要求:没有花花绿绿的 RGB 灯效、同时只使用干电池的方案,山寨杂牌的锂电池。

唯一不好的可能就是由于近期这款套件太过火爆,在电商平台上普遍都需要加价才能购买得到现货。我找了个相对靠谱的商家,对方没有给加价但是明确说明了包装拆封过,想想这个价位的套件就别要求那么高了…(还是因为预算有限吧)。

网上还有同学说这块试轴器的空腔音以及卫星轴的素质参差不齐,粗看卫星轴的轴体颜色以及模具几乎和小熊猫的卫星轴一摸一样,我到手的这块卫星轴已经润过,总体来钢丝音以及稳定性都在可以接受的范围内(当然细节就没法细究了)。

总体来说,如果和我一样基本上就拿来码字使用的话,这块称作试轴器的套件几乎没有太大无法让人接受的缺陷。

轴体

BOX茶轴体

轴体的选择方面,其实是非常基于个人主观的品味的事情。

我自己在购买主轴体之前,买了各种的试轴器体验,所以基本上有个比较大概的印象。国产轴体的综合素质和性价比总体来说,如果盲按的话其实和樱桃轴几乎分辨不出有什么手感方面的差异。

考虑使用场景就是放在办公室码字比较多,加上喜欢段落感的轴体因此考虑茶轴。因为预算对比国产轴和樱桃茶轴,最终还是选择了凯华的BOX茶轴。

这是个比较难的选择,我在两个国产轴:凯华 BOX 茶轴和 TTC 金茶轴之间反复选择了好多次。这两款轴其实我按了很久,总体来说 TTC 的轴比凯华的要稍微有弹性一点,同时回弹方面来说 TTC 的感觉更加的明显。

然而,最终选择凯华的 BOX 茶轴还是因为价格的因素更多一些,毕竟 TTC 同款的茶轴的价格几乎是凯华轴体的两倍有余。所以,矿渣还是先入手便宜的吧,如果感觉不适合到时候换也可以。

键帽

键帽其实相对轴体更加的主观,主要考虑的是键帽高度的问题。从价格上来说,基本上几十块钱的键帽大多都是量产的所以手感上并不会有太大的区别。

考虑到是 68 键位的套件,所以我选择了 XDA 高度的键帽。电商平台上基于这个要求搜索剩下的可选的就很明显了,于是就挑选了个相对比较顺眼的即可。

纯白色的键帽

其实个人不知道这个价位上能能不能买到实实在在的热升华 PBT 键帽,但是到手的时候还是有些翻车。

使用有颜色的键帽

原装的空格键大键有菊裂,无法稳定的安装上去,所幸好在有增补的空格键,但是不是白色的了,如图上的「原谅绿」。“入门看轴体,深入看键帽”,深入下去的话其实这块比轴体的水还要深,所以就先这样子吧。

至此,如果你只是需要一把好用能用的客制化键盘,那么就已经组装完成了。其总体综合素质来说,并不比几百块钱的品牌量产键盘要差。

后续的优化

使用过几天以后,还是折腾的心里作祟,于是就继续投入了更多的预算到这块键盘上。回过头来想,这块键盘其他的些配件费用已经超出了原先定下的预算,这是后话了。

静音 Poron 海绵和垫子

首先,得先解决 CIY68 普遍存在的空腔音以及卫星轴问题,我搜索了下对应的解决方案就是更换 CIY68 的 Poron 夹心以及更换更厚的底部海绵。于是又购入了对应的配件,到手了以后和原装的配件对比下:

底部静音棉

以上黑色的是 CIY68 自带的底壳海绵,白色的是新购入的海绵,明显发现厚度第三方的厚了很多。

Poron 棉

夹心棉

同时,CIY68 自带的是白色的硅胶夹心,通常来说是够用了的。黑色的是新购入的 Poron 夹心棉,高度是一致的但是重量比硅胶的轻了非常多,同时其中有很多的细孔据说可以吸收声音和减震。

更换上 Poron 的夹心以后,按键的声音的确是比原先的要低沉了点、而且的重量比硅胶的轻了一些,不过其他的感官上的差别不大。

然后,考虑更换原厂的卫星轴,这块其实也不是必须的,网上说 CIY68 的卫星轴调教了以后其实素质也还可以,的确精润了以后这个微星轴还是可以使用的,但本着已经折腾了就顺手的态度,还是将微星轴做了更换。

卫星轴和 Proon 夹心是在一家店买的,更换的是国产圣熊猫的卫星轴。但是尴尬的是,这新的卫星轴这块到手以后我发现和 CIY68 原配的无论在磨具还是配色方面都差不多(几乎可以说一摸一样),唯一的细微差别可能是钢丝的厚度方面,圣熊猫的比原配的要稍微的粗一点,其他的差别不大。

贴纸

为了保证卫星轴的素质和稳定性,我润滑了卫星轴以及在 PCB 上贴了特氟龙的贴纸,相对来说比原配的手感要稍微好一点点,至少钢丝音不见了。

但折腾了那么多综合总体来说,除非真的是完美主义情结作怪,CIY68 的原厂综合配件在润滑和调教以后是可以满足日常使用的,不用过多的折腾。

大键轴体

凯华 BOX 茶轴的轴体还是非常适合打字的,但吹毛求疵的话就是手感缺乏所谓的「立体感」。所以再折腾是想通过替换功能键和大键的轴体,达到手感方面的「层次感」和「立体感」。

凯华的 BOX 茶轴是个没有任何惊喜的万能轴,我计划给功能键和大键替换段落感更强的 TTC 月白轴,这样子两个通常的段落轴就可以搭配出比较有特点的手感层次。

月白轴

说干就干,电商平台上购买了对应数量的 TTC 月白轴,TTC 的轴体价格对于国产而言其实真的并不便宜:二十颗月白轴需要大概六七十大洋。

替换上去以后,由于月白轴强烈的回弹属性,给功能键和大键搭配能够有非常好的反馈感。总体的手感又上了一个层次,相对于上面的替换 Poron 夹心的费用而言,同样的差不多的价格用于替换轴体而带来的手感提升很明显这是笔更值得的投入。

总结

最后,总结下十一期间折腾客制化键盘的些心得和碰到的些坑吧:

  1. CIY68 的确是综合素质和性价比比较高的套件,如果是办公和码代码的话是非常值得入手的,当然细节方面得根据自己的需要进行调教;
  2. 看见网上说替换 CIY68 套件的卫星轴能够给大键带来不一样的手感,但我至少替换成圣熊猫的卫星轴以后也没有带来很明显的差别;
  3. 更换夹心棉和 Poron 的确能够带来敲击声的观感提升,但是没有更换轴体的效果那么明显。如果在有限的预算范围内,考虑更换轴体(卫星轴)的效果可能会更明显;
  4. 具体个人替换什么轴体其实是非常主观的事情,长期来看这也是决定未来几年键盘使用手感,因此不要人云亦云买几个试轴器自己体验以后才能有更好的判断;
  5. 不同轴体的搭配的确能带来更加立体的手感,但个人建议还是使用一段时间后再搭配其他的轴体,这块并不是提升手感的必要方案;
  6. 键帽这块其实我个人考虑的非常少也不打算继续投入了,相对 CIY68 来说我个人还是比较推荐 XDA 高度的键帽,毕竟不是标准大小的键盘。

参考资源

Clear Linux 下 KVM 硬件直通配置

前言

Clear Linux 是针对 Intel 平台的滚动 Linux 发行版。它有很多优势,我个人目前主要用来针对老机型(四代酷睿平台)的裸机运行平台,并主要用来跑虚拟机。

由于 Clear Linux 是过于强调精简的发行版,因此配置方面需要额外的精力,所在这里针对 KVM 虚拟机的配置做个记录。

BIOS 配置

针对硬件直通这块,首先需要 CPU 的支持,四代平台支持 VT-D 功能的不多,主要集中在 i5、i7 的 CPU。个人购买过四代 i3 的 CPU 发现并不支持硬件直通,所以又退款换货非常的折腾。

了解了支持的 CPU 以后,然后在 BIOS 中对应的开启虚拟化以及 VT-D,这里就不表。

内核配置

和其他的发行版不同,Clear Linux 的引导器是 Intel 自己研发的 clr-boot-manager。内核的参数文件具体的文件路径在 /etc/kernel/cmdline.d/ 这个目录中,然后对应的示例文件 iommu.conf:

intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 vfio-pci.ids=<id>,<id>

这个 ID 是 PCI ID,对应的可以使用 lspci -nn 获得,例如列出网卡的 PCI ID:

$ lspci -nn | grep -i Ether
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I217-V [8086:153b] (rev 04)
02:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)

同时,需要注意的是 IOMMU Group 分组是否在一个组中(这个可能需要 PCI 设备的支持),可以使用以下简单的 Shell 脚本查看(来自 Arch 的 Wiki):

#!/bin/bash
shopt -s nullglob
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
    echo "IOMMU Group ${g##*/}:"
    for d in $g/devices/*; do
        echo -e "\t$(lspci -nns ${d##*/})"
    done;
done;

然后,使用 clr-boot-manager update 生成启动配置,然后 reboot 重启后查看 cat /proc/cmdline 内核引导参数是否已经生效。

Qemu 配置

查看 Qemu 下 PCI 的设备列表,例如

$  virsh nodedev-list | grep pci
pci_0000_00_00_0
pci_0000_00_02_0
pci_0000_00_03_0
pci_0000_00_14_0
pci_0000_00_16_0
pci_0000_00_19_0
pci_0000_00_1a_0
pci_0000_00_1c_0
pci_0000_00_1c_3
pci_0000_00_1d_0
pci_0000_00_1f_0
pci_0000_00_1f_2
pci_0000_00_1f_3
pci_0000_02_00_0

那么根据对并上面

$ lspci -nn | grep -i Ether
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I217-V [8086:153b] (rev 04)
02:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1533] (rev 03)

两块网卡的 ID 分别为 pci_0000_00_19_0 和 pci_0000_02_00_0 ,然后我们 dump 出配置来

$ virsh nodedev-dumpxml pci_0000_00_19_0
<device>
  <name>pci_0000_00_19_0</name>
  <path>/sys/devices/pci0000:00/0000:00:19.0</path>
  <parent>computer</parent>
  <driver>
    <name>vfio-pci</name>
  </driver>
  <capability type='pci'>
    <class>0x020000</class>
    <domain>0</domain>
    <bus>0</bus>
    <slot>25</slot>
    <function>0</function>
    <product id='0x153b'>Ethernet Connection I217-V</product>
    <vendor id='0x8086'>Intel Corporation</vendor>
    <iommuGroup number='4'>
      <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
    </iommuGroup>
  </capability>
</device>

例如以上就可以 dump 出具体 PCI 信息的来,可以比较直观的看到 product id 以及生产商 vendor id 等信息。这里需要的几个参数分别是 domainbusslot、以及 function

我们分别记录下来,然后填写到以下的 xml 片段中,例如上面对应的数值就是

<hostdev mode='subsystem' type='pci' managed='yes'>
  <driver name='vfio'/>
  <source>
    <address domain='0' bus='0' slot='25' function='0'/>
  </source>
</hostdev>

可以直接使用十进制数值,因为 virsh edit 在编辑保存的时候会自动计算其原始的十六进制数值。

验证

使用 virsh edit 编辑对应的虚拟机配置,例如 virsh edit <my-machine> 。在编辑器中将上述 的 xml 粘贴入 devices 这个 xml 块中,保存关机然后在启动虚拟机即可生效。

在启动虚拟机以后,例如上述的网卡直通可以使用 ip a 等命令查看虚拟机有无识别到对应的物理网卡。如果一切顺利,那么就可以使用对应的网络配置程序来配置对应网卡的网络信息,这里不在复述。

常见问题

  1. 查看 IOMMU Group 中的设备是否分别在不同的组中,如果多个设备在同个组中,则需要额外的操作(参见 Arch Wiki 的内容);
  2. 如果物理机设备被直通出去,那么就无法使用该设备以及设备树下的子设备。例如,如果直通 USB 控制器给虚拟机,那么这个控制器下的键盘、鼠标都只能在虚拟机下使用;
  3. 直通的内核模块应该优先于其对应的物理设备驱动,否则会造成冲突造成无法直通,因此可以考虑搭配内核 blacklist 使用。

最后,如果服务器是 Intel 平台的,强烈建议尝试下 Clear Linux 你会爱上它的!

参考信息

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章