[HTML] AudioContext 折腾笔记 01

前天尝试了一波那个什么 MediaSourceExtension,结果发现那套API目前限制蛮大的,而且对我来说没什么帮助(audio/x-wav 完全不正常支持,audio/mpeg 也只能在 Chrome 上使用)于是只能放弃折腾了 QAQ

昨天突然想起之前写 nanoPlayer 的时候,使用了一个叫 Audio Context 的接口,nanoPlayer 用了这个 API 里的 createAnalyser 方法,来获得音频的频率数据,进而实现了一个频谱可视化功能。之前就注意到了这个接口中有个自定义 AudioBufferSource 的方法,可以指定若干 Float32Array 并交给浏览器播放,应该是蛮有意思的。

这里就实现一个可制定频率的正弦波音频吧,如果这个实现起来没有什么难度的话,就准备试试浏览器端解码 WAV 音频。

继续阅读[HTML] AudioContext 折腾笔记 01

[HTML] MediaSource 折腾笔记 01

MediaSource 是 HTML5 中的一个实验性特性,用于给 `HTMLMediaElement` 对象提供数据源。这里的数据源通常是使用 `XMLHttpRequest` 获得的数据。在 XHR 取得数据后,我们可以使用 JavaScript 对数据进行一些操作,比如提取 ID3、修改封装类型等等。 某 bilibili 开源的 Flv.js 就是使用这个特性实现的在 HTML5 环境下播放 H264 + AAC 格式的 FLV 视频。

最近在写 `Nano Player` 的时候遇到了两个比较尴尬的问题:1、ID3 信息必须手动指定;2、网易云音乐上下载的 MP3 由于某些原因必须缓冲 2MB 才能播放(详见MP3缓冲2MB才开始播放的解决方法)。于是想到是不是可以用这个 MediaSource 来暴改 MP3 呢?我也不知道

不管怎样,要用这个 MSE 来解决问题,首先就是要用它来播放文件(如果获得的数据直接喂给 MSE 都不能播放那还讨论个什么鬼)

继续阅读[HTML] MediaSource 折腾笔记 01

服务器迁移完成!

本站已经完全从 Linode 迁移到了 Azure!真的是快快快快((

至于为什么要迁呢,主要是两个原因:第一是汇率问题,ConoHa 和 Linode 越发的涨价,不是很承受的起了。现在我手里 ConoHa 一台,配有一个额外的 IP 地址,每月基本要花到接近 100 块。Linode 是从淘宝商家上买的子账号,每月 73 CNY,合起每年要花这么多钱:

➜  ~ node -p '(100 + 73) * 12'
2076

相对的,一台基本型 A1 配置的 Azure 东京机房,从淘宝代购只需要 1530 CNY 就能搞定一年。

另一个原因是网络。Linode JP 和 ConoHa 对电信非常非常不友好,同时移动那儿也开始出现劣化的趋势,而 Azure 由于相对较高的门槛,尚未被玩坏,至少跑到 17000 Kbps 是没什么问题的。

[OpenWrt] 简单的策略路由

上学期期末移动宽带质量不断劣化,我们宿舍被迫转向电信宽带。为了解决那个该死的防共享机制,我自费购买了一个坑爹的破解路由器,本质就是一个替换了 PPP 的 OpenWrt 路由器。选择购买而不是自己动手破解的主要原因是不想在这上面消耗太多精力,既然有现成的解决方案,那就掏钱解决了(

那个破解的路由器很渣,是个看起来就不像那种能拖宿舍里所有电子产品的破路由,所以我只将其作为拨号路由,而主要的 NAT 工作和 Access Point 仍然交给 WNDR 4300 来完成。电信的路由器 LAN IP: 192.168.43.1 并开启 DHCP,然后 WNDR 4300 直接将 WAN 接至任意一个 LAN 口,完成后顺手关掉了破解路由器的 WiFi

继续阅读[OpenWrt] 简单的策略路由

[LeetCode] 按类型的刷题总结(长期更新)

最近几天无聊,又去上 LeetCode 探智商下限了(划掉

数组类 Array:

1. 二分查找:

此类题整体较简单,而且在编码过程中不一定需要使用二分查找,用一些 hash based 的数据结构也是不错的选择。在 C++ 下借助 set, map 或是 binary_search + vector 都可以较为轻松的解决。

继续阅读[LeetCode] 按类型的刷题总结(长期更新)

使用 PPTP 和 IPv6 Tunnel Broker 访问 IPv6 资源

这几天一直折腾没啥意义的IPv6,首先是看到了 @蔓舞寻樱 dalao 的文章:利用代理隧道接入HE.net的IPv6网,就顺便在阿里云的学生优惠服务器上尝试部署了一下,拿到了前缀 2001:470:36:a90,前缀长度为 64 的 IPv6 地址池,就是这个速度实在是比较尴尬 _(:3」∠)_,从青岛阿里云到江苏教育网的 MTR 输出大致这样 (╯-_-)╯╧╧

继续阅读使用 PPTP 和 IPv6 Tunnel Broker 访问 IPv6 资源

在 Linux 下使用 SVP 4 播放视频

SVP 作为一个插帧神器,是我们看番的好伙伴。从 SVP 4 开始,Smooth Video Project 开始提供对 Linux/macOS 的支持(vapoursynth is GOOD)。今天尝试了一下效果还不错~

首先是按惯例安装一些必备的软件包,我使用的是 Arch Linux,其他平台自行处理一下就行了

继续阅读在 Linux 下使用 SVP 4 播放视频

没事儿干写了个新的 Blog 框架

JavaScript 自己也看了一段时间了,Node.js 相关的内容也随手糊过一点了,但是总是没有一个像样的作品,这样是不行的。

所以就必须想点办法,搞个大新闻,把脑子里的知识运用一番,顺带学学新的姿势,提高自己的水平。不编了好吧我承认是自己在家无聊了QAQ

在基佬集线器上逛逛的话,会发现很多人都自己撸过一个简单的 Blog 框架,毕竟这种简单的网页应用逻辑简单,同时实现的参考啊也很多,比如 PHP 就有 WordPress, Node.js 就有 Hexo,等等。所以我也就学着做个玩玩咯~

花了大概一天吧,撸出了现在的这个最简单的 Blog Framework,虽然还没想到取什么名字。前段框架使用了 Vue.js,并且才用了 Materialize 提供的部分样式和组件。后端使用了 Express.js,数据存储则按照国际惯例选择了 MySQL(MariaDB)。全站数据使用 Ajax 获得,并完全在浏览器端渲染,同时除了博客名称以外没有任何触发刷新的组件。整体风格自认为是极简风格,实际上是自己没本事搞出什么好看的设计。

现在这个框架准确的说还在开发阶段,需要解决的问题是评论以及管理页面。当然部分代码需要优化优化,写得实在是太随性了。

样例页面可以在这里查看,里面的内容大多是从这里搬运过去的。源代码则可以前往GitHub来查看(顺便请允许我无耻的求个 Star QwQ)。

卧槽我这个 Framework 国内访问速度真他喵快啊

[水] Minecraft 服务器周边功能小记

按照以往运行 Minecraft 服务器的情况,玩家们常常需要一些游戏以外的信息:

  • 服务器负载情况
  • 服务器是否还活着
  • 是死宅要上传皮肤

那么,作为一个不怎么管服务器里发生了什么的管理,我就主动把这些功能实现了一下。其他的游戏内管理就交给 @kasora 了。

继续阅读[水] Minecraft 服务器周边功能小记

[osu!] Chino(CV.Minase Inori) – Shinsaku no Shiawase wa Kochira!

歌很好听

难得打出了 121PP, 99.52% ACC 的成绩,就传个视频纪念一下吧(

可怜了这小霸王服务器只有1Mbps上行,无奈把视频搞成了720P 800Kbps,全屏惨不忍睹

由于播放器会挡住一部分背景,还是加个 read more 吧(

继续阅读[osu!] Chino(CV.Minase Inori) – Shinsaku no Shiawase wa Kochira!