分类 独立文稿 下的文章

我去年有简单聊过为什么从网易云音乐切换到苹果音乐,并且跟各位简单分享了我的使用思路。但随着资料库内容逐渐复杂,我的思路进行了一些调整。今天就简单的跟你分享一下。

首先,随着版本的更新, 新的苹果音乐已经单独提供我喜爱的音乐播放列表了。因此之前通过智能播放列表实现的喜爱歌单就不再需要了,删除即可。

其次,由于现在有使用古典乐app,而古典乐与音乐的资料库是同步的,所以在古典乐中加入到资料库的作品同样可以在苹果音乐的资料库中看到并收听。但当我在驾驶途中想从资料库随机播放音乐时,古典乐混入其中就有一丝不和谐的感觉。因此增加一个智能播放列表,将所有不想在驾驶途中收听的音乐排除掉的一个大合集歌单。

在电脑端的苹果音乐中新建智能播放列表,条件如下:

  • 类型不包含classical与类型不包含spoken word:这两个条件相结合排除掉了所有的古典乐文件,同时spoken word条件可另外将所有专辑中的讲话片段进行了筛选——目前我发现的仅仅在维也纳新春音乐会专辑中有发现,可能有些现场版专辑也会呈现吧
  • 时长大于1分钟:这个条件将一些音乐片段进行过滤。以我的资料库来看,只有TV放送版专辑涉及此情况。
  • 注释不包含剔除:这是一个十分灵活的条件,可以将所有游离在前三个筛选条件以外的,自己不想在驾驶途中收听的音乐剔除。比如前述的TV放送版专辑中,存在两个正片BGM音轨。这两个音轨超过了1分钟时长但个人感觉不太适合在驾驶途中收听,因此便可以通过这个条件进行剔除。

那么如何将最后的这个条件实际应用起来呢?

在电脑版苹果音乐中,在资料库内找到需要剔除的音乐,右键——显示简介,弹出的窗口最下面有注释一行,在后面填入“剔除”两字,按下好完成编辑即可。

听起来是一个挺蠢的方法吧?但这只是给你分享一下我自己构造这个歌单的思路。通过类型及时长将大多数不希望出现在这个歌单的曲目筛掉,零星的没有共性的音频再通过注释进行补齐,真正实现起来要比手工整理大合集歌单简单、快速的多,可以试试。

最后,通过播放列表文件夹将播放列表进行归类。比如我这里增加了两个文件夹:每年都在听什么与年度精选。其中,每年都在听什么存储了我的按年整理的播放列表——注意啊,按年整理的播放列表也是智能播放列表,我不需要手工将新加入资料库的音乐添加进去,它会自动同步资料库的变更。而年度精选则保存了苹果音乐每年自动生成的音乐回忆。这样一来有两个优势,一来可以通过分类快速找到相应的播放列表进行播放。另一个更大的优势是可以将这些播放列表的音乐直接合并播放。举个例子:我这里有两年的音乐回忆,如果我不放在文件夹中,那么我每次只能在某一个音乐回忆列表中进行播放。想将两个列表合并播放的话,我只能在开始播放某一个列表之后,长按另一个选择最后播放将其加入到队列之中。而放入文件夹,显而易见的,在两个列表的界面便出现播放按钮了。

那么现在我的苹果音乐是一个什么使用效果呢?对于一般的流行乐,我遇到喜欢的歌曲之后只需选择添加到资料库,按年整理的智能播放列表与驾驶使用的智能播放列表会实时进行更新。对于我特别喜欢的乡村音乐,因为我为这种曲风单独建立了播放列表,而这个就像我之前提到的,音轨的分类不统一,只能使用普通的播放列表。那么对于这种涉及到手工编辑播放列表的场景,我只需增加音乐到这个播放列表,苹果音乐的设置项会将这个音乐添加到资料库,然后又回到了前面的智能播放列表筛选环节。如此,更新的自动化、一键式歌单整理就调整完成了。

还是那句话,以上只是给各位提供一个苹果音乐的使用思路,各位可以根据自己的实际使用场景对智能播放列表的条件进行调整,打造属于自己的一键式智能音乐播放器。

1月14号,我在苹果音乐的古典乐模块发现了古典乐应用即将上架国区苹果商店,便立刻进行了预订,并在23日半夜时候第一时间进行了安装。经过这段时间的使用,我感觉相比于流媒体音乐软件,说它是古典乐百科更为合适。

先来简单看看古典乐应用与音乐应用的差别。

打开古典乐,第一眼便可以发现古典乐应用没有广播这种按喜好推荐功能。

在资料库页面,古典乐的分类筛选是不可编辑的,分类方法同音乐也有着较为明显的差别。且古典乐的资料库没有最近添加列表,如果需要查找,必须点击到某一种分类方式当中来查看。

正在播放页面,古典乐的所有文本展示部分都进行了多行化处理,且左下角的歌词按钮被详细信息按钮所取代,可以通过这个功能查看正在播放曲目的元数据。

待播清单功能,古典乐不提供乱序及无限播放,仅可以针对当前播放列表进行循环顺序播放。

对已经添加到资料库的曲目,古典乐不提供下载。

现在切换到浏览页面,可以发现两者有着天壤之别。

音乐通过各种分类及标题向用户推送各种在线音频,而古典乐直接通过三种维度提供分类参考,用户需要通过选择来进入到固定的浏览页。在这个页面中,可以查看所选类型的基本概述,以及涉及到该分类的专辑、作品、作曲家等,进而限定到具体的作品中进行播放。

到了现在就听界面,乍一看两者呈现的方法类似,但细看便可发现,古典乐的现在就听没有自动建议板块,所有内容均为专辑或人工筛选组合的播放列表。

搜索也有很大不同。古典乐毕竟只有古典乐一个主题,所以没有类别浏览的需要,取而代之的是进行关键词推荐。

所有的变化,都使得古典乐应用很难做到苹果音乐一样的漫无目的的使用体验,而是更着重于有目的的查找并播放。而这可能来源于古典乐同流行音乐的“代沟”。这里先来简单了解一下古典音乐的一些小知识。

众所周知,古典音乐来回来去就那些。因此古典乐同流行音乐的最主要区别便是它被“数据库化”了。这个数据库包含了几个主要维度。

  • 体裁:这部作品都需要哪些乐器参与其中。
  • 体裁中编号:同一体裁作品的排序编号。
  • 调性:作品所使用的音阶。
  • 作品编号:此作品所属作曲家的排序编号。
  • 标题:作曲家自拟或后人所起的俗名。
  • 乐章编号:人为在一部作品中按照某种标准进行分段后的排序编号。
  • 乐章速度:呃……好像这个没啥能解释的,就是指演奏快慢。

下面看一个例子:Piano Sonata No. 14 in C-Sharp Minor, Op. 27 No. 2 "Moonlight": I. Adagio sostenuto

  • 体裁:Piano Sonata,钢琴奏鸣曲
  • 体裁中编号:第14
  • 调性:升C小调
  • 作品编号:27号中的第2首
  • 标题:月光
  • 乐章编号:1
  • 速度:Adagio,柔板

这,便是童年阴影——名侦探柯南《月光奏鸣曲杀人事件》所引用的古典乐学名。

通过这个例子便可以看出,古典乐的命名方式是制式的,相对流行音乐来说更死板,但与此同时,检索会更加方便。就以《月光》为例,即使不使用标题检索,我们也可以简单的通过作曲家+作品编号来快速确定作品——贝多芬 Op 27.

这种检索能力,在古典乐app中被明显加强。相对于苹果音乐的平铺检索结果,古典乐会根据所检索的作品给出一个集合页面,你可以在这里看到关于这部作品的介绍、包含此作品的专辑以及此作品的热门录音。

但是我们也可以发现,单单靠搜索作品查找到的范围还是有些太广了,如果想进行一些筛选的话就还需要增加一些关键词,比如演奏者的名称。这里增加一个皇家爱乐管弦乐队。

现在,通过古典乐应用我们就定位到所有由皇家爱乐演奏的月光奏鸣曲录音了。而通过同样的关键词在音乐应用中检索,我们会发现它查找了所有演奏者为皇家爱乐的曲目,而忽略了月光这个作品名的限定条件。这也是我认为苹果古典乐相对于苹果音乐最关键的区别所在。

那接下来,简单来谈谈为什么我认为古典乐不太能被看作是流媒体音乐播放器。广义来说这其实没什么问题,但当前的音乐软件,最简洁的也得像苹果音乐那样,至少包括一些根据用户喜好进行诸如随机推荐之类的,可以被用户习惯所训练的个性化功能。而反观古典乐,将本就不多的苹果音乐的这些功能进一步删减。连现在就听中的内容也是按照专辑,或者人工编辑的播放列表进行整体推荐,直观上看不到用户训练的效果反馈。

这可能又涉及到古典乐同流行音乐在音频文件分割上面的差异了。拿这个专辑来看:

此专辑包含3部作品,但除了第二部为单一乐章以外,另外两部全部由多乐章组合而成,而从存储的角度上面来看,每一个乐章对应着一个音频文件。因此如果只挑选某一个音频文件播放,那么大概率只能听到一段没头没尾的音乐。而这种存储方式可能也是古典乐应用没有算法推荐、没有随机播放功能的原因之一。

在预订页面,官方对这款应用的描述是这样的:在聆听音乐的过程中,《Apple Music古典乐》还会呈现专业介绍,带你了解古典名家名作,通过艺人分享,让你近距离接触喜爱的音乐家,丰富你的古典音乐知识。确实,古典乐应用从界面到操作都专门为古典乐特殊的结构进行了优化。而为人物、乐器所设计的头像,现在就听中的“音乐家亲选曲目单”模块,以及为每一个人物、每一种乐器、每一部作品所编写的生动介绍,都让古典乐应用更像一个古典乐版本的维基百科,而非苹果音乐的“同质化应用”。

目前,苹果音乐古典乐已填补了东亚地区的空缺,在此区域内订阅苹果音乐个人版以上的用户可以直接下载体验。

转眼都到了2024年了。回看一下2023年,我居然发布了整整16个乱七八糟的内容,我实在太勤奋了。

那么,作为一个以类unix系统教程碎片为主的频道,在新年之际跟你分享一下2023年的一些变化。

更新频率降低的最主要原因就是莫名其妙的没有太闲着,而没有太闲着导致的结果就是很少打开家中常用的电脑,而不用家中电脑就意味着我这一年实际上很少使用Linux或者macOS系统。可以说,我在2020年换掉archlinux时候的预言在2023年得到了完美的体现。属实是:不是不报时辰未到。

但即使使用的频率很低,我还是将ubuntuunity更换到了Debian12。这可能是我这一年中最大的一个更改,这其中的具体原因我也有分享过,可以回看一下。

提到了乌班图,这让我想到了2023年乌班图的一个改变人生轨迹的变化:引入了基于flutter的应用商店。这项调整体现在了前几个月发布的乌班图23.10版本中,用以替代老朋友——乌班图软件中心。相对来说,新版本的商店有着更现代、更流畅、更一致的使用体验,可能也会助力乌班图全局snap化的布局。

可能你觉得使用flutter开发应用商店与全局snap化没啥关联,不过乌班图在2023年2月宣布,官方版本不再支持flatpak格式软件包开箱即用你又如何看待呢?很明显,乌班图为了推广并应用自己发布的snap格式软件包在自己的系统上不遗余力,撤销开箱支持flatpak可以说是最明显的一项措施。不过仅仅是无法开箱即用,你还是可以手动部署相关的程序以恢复flatpak支持。

顺带一提,即将推出的ubuntu24.04为长期支持版本也有一个新的变化,那便是它将可以获得长达12年的更新支持——当然,这需要你注册ubuntu pro。不过这项服务对于个人用户来说是免费的,如果你习惯并长期使用乌班图的话,安装这个版本并加入ubuntu pro也不失为一个好的选择。

你方唱罢我登场,与ubuntu所处的Debian分支相对的,则是RHEL分支中一个改变人生轨迹的变化:RHEL与2023年中旬宣布限制其源码访问。现在看来这个大概是转变CentOS性质的接续步骤:目前的CentOS完全可以说是RHEL的测试版,而曾经的CentOS则可以看作是RHEL的免费版。两者位置的变更似的RHEL可以将全部精力投入到企业客户上,而无需再考虑普通用户。这个消息在刚发布时反响剧烈,不过就目前来看,这更多的改变了RHEL下游发行版的生存轨迹,对于其他分支,甚至RHEL本身的企业用户来说,影响不大——暂时不大。

现在从发行版层面剥离出来,看看内核层面改变人生轨迹的变化:支持周期从六年缩短至两年了——我是说LTS内核。这个变化大概对用户来说影响不大,毕竟现在常见的发行版,要么像SuSE,不更新内核主版本,但自己长期单独维护,以至于跟用新内核没啥区别;要么就像Arch,有新的就直接给更新上来了。但支持周期的缩短对与内核维护人员来说可是重大利好——再也不用管理那么多没啥人用的旧版本内核了。

上面这些2023年Linux世界的变化是好是坏还请各位评判。不过,Linux版Steam使用率超过macOS,从哪种角度来看到可以算是2023年Linux世界一个不错的消息吧——当然了,这俩货加起来都追不上Windows的零头,不过,这至少证明Valve这几年在Linux游戏领域所做的不懈努力不是白费的——要知道,为了能让Linux运行Steam 中大多数的游戏,Valve从大概疫情前便开始基于wine来开发Linux 的游戏兼容层proton,并在这些年中取得了极大的进步。截止目前,Steam上热门游戏通过官方测试可以运行的已经超过了10000款,而根据玩家的测试,这个数量可以上升至大约17000款。我想这对于一名普通玩家来说已经不是一个小数字了。

但诚然,目前这个兼容层还不是十全十美:比如联网游玩的游戏,反作弊插件目前还无法正常运行。但车到山前必有路,由于Valve的proton套件是开源的,因此针对部分特定游戏,有个人开发者定制了proton套件,使得可以通过定制版套件达到正常运行带有反作弊插件游戏的目的。不过这些仍只是个例,Linux联网游戏任重而道远。

以上便是跟各位分享的2023年Linux世界的一些重大的、改变人生轨迹的变化。祝各位能在这曲里拐弯的人生中好好生活。

视频点此

海信自己的系统实在是不稳定,三天两头自己重启;本身只有一个墨水屏,单纯待机的话耗电确实挺不错,但但凡打开点啥程序,电量眼瞅着就往下掉了。所以在得知海信的墨水屏手机可以root了之后便跃跃欲试。但“官方”的教程非常简洁,解bl锁与root分成了两个板块,而且有些地方描述的比较学术性(我的意思打算照抄完成root操作是不现实的),所以我在官方教程的基础上,参照我自己成功root的过程,编写一个将解bl锁与root结合在一起的、尽量可以做到照抄即可的说明,也许能助力一些机主的root工作吧。

注意:所有操作均在Windows下实现,使用Linux实现的我感觉应该也不至于看这个了…
注意:下面均以海信A5pro CC为例,其他型号类似,只是需要注意安卓版本

一、下载并部署环境

  1. 官方解bl锁教程页,下载教程页中的SPD_Driver_R4.20.4201并安装
  2. Release,下载最新的解锁工具

    1. 下载自己手机型号的包,如hisense_a5procc.zip
    2. 下载spd_dump_231002.zip
  3. Magisk教程页Android 10 and up,下载最新的root工具

    1. 根据使用电脑的位数,在[1]python2处选择对应的下载。如果选择x86版本,需额外下载OpenSSL
    2. 点开[2]avbtool的链接,点击Code - Download ZIP
    3. 点开[4]Android Image Kitchen,往下翻到Downloads模块,下载Android.Image.Kitchen.v3.8-Win32.zip
    4. step3位置,下载rsa4096_vbmeta.pem
    5. 前往adb下载页或其他可以访问的站点,下载adb
  4. 解压、安装上述文件

    1. 解压hisense_a5procc.zip,假设文件夹位置在%DESKTOP%\root\
    2. 解压spd_dump_231002.zip,覆盖到上述目录
    3. 安装3.1步骤下载的python2,保持默认设置,并注意勾选添加到路径(Add to Path)若为x86版本,额外下载了OpenSSL,一并以默认配置安装
    4. x64的Python2的压缩包中有OpenSSL安装程序,x86的则已在3.1另行下载。按默认配置进行安装
    5. 打开3.2步骤下载的压缩包,里边有一个文件夹。打开这个文件夹,将其中所有文件解压,假设解压文件夹位置在%DESKTOP\magisk\
    6. 解压Android.Image.Kitchen.v3.8-Win32.zip%DESKTOP\magisk\,并将得到的这个文件夹名称修改为AIK
    7. 打开3.5下载的adb压缩包,展开到可以直接看到adb所有程序文件的文件夹,将这些文件解压到%DESKTOP\magisk\

部署完成,可以开始进行解锁root工作了。

二、解bl锁

  1. 文件管理器切换到%DESKTOP%\root\文件夹
  2. 按照SupportList的按键方式启动手机,进入下载模式(海信A5pro CC的按键为音量+、音量-、电源全部按下,持续7~10秒)
  3. 将手机与电脑连接,双击onekey_fdl1.bat开始一键解锁过程

注意

  1. 第2、3步需要在30秒内完成。而对于墨水屏手机,进入下载模式与否屏幕上难以分辨,因此先将数据线连接到手机,然后按下按键7秒左右,再打开bat文件,最后将数据线与电脑相连。此时观察电脑上打开的命令提示符,若开始有跑数据则说明成功进入了下载模式,否则断开连接重新操作。
  2. 就我个人操作来看,如果三个按键真的同时按下,手机不会响应任何操作。因此建议先按下电源键,然后再立刻按下音量+与音量-,这样成功的概率会高一些。

三、root

再次提示:这里是假设使用的设备是海信A5pro CC
  1. 获取boot.img

    1. 在命令提示符中打开%DESKTOP%\root\目录
    2. 同二.2,进入下载模式
    3. 将手机与电脑连接,命令提示符输入spd_dump exec_addr 0x3f48 fdl fdl1-dl.bin 0x5500 fdl uboot-mod.bin 0x9efffe00 exec read_part boot 0 35M boot.img reset
    4. 待命令执行完成,便得到了手机原本的boot.img
  2. 修补boot.img

    1. 正常启动手机,将前面得到的boot.img拷贝到手机的内部存储中
    2. 手机中安装Magisk应用(建议酷安下载,至少还算正规)
    3. 打开Magisk,点击安装 - 选择并修补一个文件,选择拷贝到手机的boot.img,等待完成
    4. 现在便得到了修补后的boot.img,假如文件名为magisk_patched_cR5kd.img
  3. 重打包boot.img

    1. magisk_patched_cR5kd.img拷贝至电脑%DESKTOP\magisk\AIK中
    2. 在这个文件夹中,双击unpackimg.bat
    3. 双击repackimg.bat
    4. 现在得到了重新打包的boot.img文件
  4. 签名boot.img

    1. 将路径C:\Python27C:\Python27\ScriptsC:\Program Files\OpenSSL-Win64\bin添加到环境变量(若安装python时勾选了添加路径的选项,则此时只需增加第三个)
    2. 打开命令提示符,输入命令mklink /H C:\Python27\python2.exe C:\Python27\python.exe
    3. 输入命令python2 -m pip install pycryptodome
    4. 命令提示符切换到%DESKTOP\magisk\路径
    5. 输入命令python2 avbtool add_hash_footer --image AIK/image-new.img --partition_name boot --partition_size 36700160 --key rsa4096_vbmeta.pem --algorithm SHA256_RSA4096 --salt 5F55215FD2302D021F850B55912ED48D176784678692DC012E054B1ECD0BE025
  5. 刷入经过处理的boot.img

    1. 连接手机与电脑,手机端打开USB调试并信任此电脑
    2. 在三.4.5状态的命令提示符中,输入命令adb reboot fastboot,手机会重启并进入fastboot模式
    3. 待手机成功切换模式后,命令提示符中输入命令fastboot flash boot AIK/image-new.img
    4. 待命令执行完成,输入命令fastboot reboot

至此,你的海信A5pro CC就已经root完成了。

以上内容,对于相同型号的用户可以直接照葫芦画瓢,保证每一步都是成功执行的,那么成功root的问题就不会太大;而对于其他型号的用户,需要注意进入下载模式按键不同,三.1.3步骤中exec_addr后面的地址也不同。这部分可以直接复制%DESKTOP%\root\manual_command_fdl1.txt中第一行的相同字段;还是这一步,倒数第三块的参数(我这里是35M)需要根据安卓版本来确定。具体方法可以参考下面的第二条链接。


相关链接

  1. 解bl锁
  2. 刷入magisk

视频点此

Linux系统会为每一个用户建立一个home目录,其中有几个金刚路径,如桌面、文档、音乐、下载等等。通常来讲,在图形界面下使用这几个文件夹可能不会意识到什么问题,但如果使用终端的话,你也许会发现:在不同的发行版里,这几个金刚文件夹的实际名称可能是中文,可能是英文。也就是说虽然在图形界面下,文件夹名字显示为“桌面”,但实际上需要在终端中输入cd ~/Desktop才能进入桌面文件夹。这个是为什么呢?

这个问题——其实也不是问题。因为只是设置存在一些差异。

一、如果你是图形界面用户

以KDE为例,你可以发现在设置个性化-应用程序-位置项中可以随意定义这几个金刚文件夹的路径。因此如果想把中文路径调整为英文,直接输入即可。确定时按照提示,系统会自动完成文件夹的重命名操作。
另外,由于可以随意自定义,所以理论上如果你有长期挂载一个网盘当作本地扩容的分区,那么你也可以通过这个设置,把这个网盘当作某一个金刚文件夹对应的路径。

二、如果你是终端用户

这个文件夹映射关系保存在~/.config/user-dirs.dirs文件中,因此只需要修改对应的路径即可实现调整。但是需要注意,由于终端无法完成自动重命名,所以如果需要保留文件夹中的数据,需要在修改路径之后手工将原先的文件夹修改成对应的名称才能保证继续映射。

视频点此

不管是Windows还是Linux,又或者是macOS,都存在一个字符操作界面——终端,其中有很多直接输入便可使用的命令。那么这些命令都存在哪里了,又为什么可以直接调用呢?

这得益于一个所有操作系统都通用的一个概念:环境变量。终端下可以直接使用的命令都是由名为PATH的环境变量明确的。这个环境变量存储了很多路径信息,只要一个命令的可执行文件被放在了这些路径中,那么在终端中便可以直接通过输入这个可执行文件的文件名来实现直接使用,而无需通过输入绝对路径来调用。

如何知道哪些目录可以实现这一点呢?只需要查看PATH这个变量的值即可。

在Linux中,有很多方法可以实现查看环境变量信息。这里首先推荐一个比较好用的命令export。终端中直接输入即可查看当前用户下所有已经定义了的环境变量;使用export 变量名可以进行单独查看;使用export 变量名="变量值"则可以直接定义一个环境变量的内容。

对于PATH变量,一般来说会包括下面几个路径

  • /usr/bin
  • /usr/local/bin
  • /bin
  • /usr/games #这个是在使用Debian时候发现的。没想到竟然把游戏的可执行文件单独拿出来了…

那有没有办法自定义这个路径呢?

就像前面说的,直接定义即可。比如

export PATH=自定义的路径:$PATH 

这就是自定义PATH环境变量的基本写法。其中:

  • 使用冒号区分不同的路径
  • 路径写入的顺序区分了优先级。越靠前越优先检索使用
  • 一定在最前面或者最后面写上$PATH以保证原本的PATH信息不会被覆盖掉

自定义PATH是比较有用的。比如经常使用单独下载的程序,那么可以定义一个专门存放这些应用的路径,将其添加到PATH中。这样在终端下便可以直接输入程序启动命令来使用,而无需先进入到对应路径再执行,或者想方设法的将程序安装进系统了。而对于Windows,自定义路径可能不太常用,但如果有兴趣,你可以查一查安装python2.7的教程