Category: Tech
-
【Syncplay】异地同步播放视频
首先是一些碎碎念。然后会是怎么做。然后会是我们想要什么。 跳过碎碎念可以直接点目录的(应该 如果没有lockdown,或许大家还能手牵手,用学生证或是影院的会员卡,买了半价的电影票,去电影院看大家第一喜欢的院线电影;抑或是相约上海电影节。 但是恐怕谁都做不到了。哪怕只是隔一条河,一道墙,一扇门。两个城市可以互相宣称对方“居家观察”;花几十块做一次核酸,或许只是购买了24或48小时内的一份通行证;吃下去的打进去的安慰剂,到头来啥也安慰不了。 反正总之就是和想和恋人、朋友、家人远程一起看电影的话,可以参考一下我的一个小方案。 客户端下载&配置 具体工具链为: 分发工具:QQ(群文件或者直接发送分享,请注意尽量别用微信问就是张小龙你____了),莆田系李家网盘类(并不推荐,分发效率极低),奶牛快传(有段时间没用了,可能并没有那么方便了),迅雷以外的P2P下载工具(推荐该方案,具体理由一会儿说),FTP或其他文件分享渠道 在线会议工具:Zoom,Facetime,腾讯会议,QQ,微信(张小龙:没想到吧,我的____又回来了),YY语音,Discord,电话等可以语音、视频聊天的工具 Syncplay:必须使用该工具。也请通过官方途径下载。无法点击链接直达请务必使用有效的搜索引擎搜索。 播放器:必须使用如下的播放器 mpv, mpv.net, MPC-BE, MPC-HC, VLC 3, 和IINA 。具体理由一会儿说。 对于分发工具和在线会议工具,读者如果已经有了自己的想法,就请直接阅读Syncplay的章节。 分发工具 该方案需要在一同观看开始之前,下载相同的播放文件(理论上保证资源文件的播放时长相同即可,但并没有测试过)。在这一阶段,各种工具都可以,但是微信作为一款“可以发送文件”的即时聊天工具,很多资源文件因为超过微信能够发送的最大大小无法发送文件。 发送文件限制1、通过微信客户端,传文件大小不可超过100M,可一次选择最多10个文件同时发送;2、视频不超过25M。 引自腾讯客服https://kf.qq.com/faq/161224mEvqaI161224jqUzqI.html 使用P2P下载软件的好处是: 使用同一个种子时可以保证参与者的文件相同。 在局域网内(如lockdown的校内),P2P可以利用局域网资源加快分享速度。 分发时防止中心存储者网络压力过大。 资源多。 Syncplay 该软件为开源软件。开发者只有一位,如果想鼓励他,请通过官方渠道给他打钱,我就不抽成了。 该工具在主要桌面操作系统都有。以下只讲解Windows端的保姆级操作。 下载安装/解压Syncplay之后,点击运行Syncplay.exe,会看到一个这样的窗口。这里我也提供一个我个人搭建的同步服务器,注意该服务器没有部署加密工具,请在确保信息安全的情况下使用。 输入服务器提供的地址:端口和服务器密码之后,请起一个足以识别自己的用户名,能够给人方便很多🙏。Default room最好直接填入最初与一起看电影的人约定好的房间号,该房间在进入之后也可以更换。 下方媒体播放器的相关选项如果没有自动填好,可能需要用户点击右侧的按钮手动寻找。请务必使用一款上文提过的若干播放器。 然后点击下方最大的按钮开始。 此时可以看到播放器被同时打开。如果我想加入KoiBito这一房间,可以在下方输入之后点按钮加入。将播放文件直接拖入Syncplay的窗口,文件就会加入playlist。如果播放器没有自动打开该文件,请在播放器中选择对应的文件播放 可以看到上侧的列表出现了播放器正在播放的文件。点击下方的准备好了,如果房间里有其他人,将在所有人准备好了之后自动开始播放。观看时,任何一个成员暂停、拖动进度条,都会实时反应在每一个成员的本地播放器上。 播放工具 根据Syncplay作者在一个已经Closed的issue里的解释,使用上述的播放器是因为这些播放器开放了控制播放/暂停以及定位的API。而PotPlayer等播放器没有开放相关API,故而无法适配。 理论上,使用这些播放器还可以播放某些流媒体,具体的操作视播放器和播放平台而定。 该方案的优缺点 首先该方案需要分发视频资源。存在一些在线工具,可以异地同步播放一些视频网站上的资源。但是这些方案通常存在一项或若干以下问题: 质量差。相比分发的文件资源可以使用蓝光码率,一些国内主流平台恐怕对于信息论和压缩技术有些独到的理解,期待他们重塑信息学的那一天。 网络质量过于影响体验。使用网页上的异地同步播放,网络质量最差的一位观众可能会因为卡顿而影响全体观众的进度条。而Syncplay方案的网络开销在播放过程中是非常小的。 不存在大家想看的资源。众所周知,互联网的初衷是分享。然而很显然有人不想让大家分享,那么这些人是谁呢? Syncplay虽然也不是完美地解决了上述问题,但是显然,作为专一功能的同步播放软件,他给了用户更多的选择。 当然Syncplay也不是没有问题。光是事前分发就要了老命。软件的UI并不清晰直观。时不时还是会有失去同步的情况。存在需要各个观众手动输入播放源换碟的bug。并且官方提供的服务器那恐怕是多少需要对网络有点理解才能使用了。 服务器端(看心情更不更咕
-
非常非常森破的薇图睿讲解和配置
官方project的代码可以在github上找到。 其project页面为ProjectV。 我还是非常noob的,希望有大佬能指正我错误的观点(交流 薇图睿,就是V二ray,就是v②ray,就是v2ray,其实是一个在结构上类似于薇批恩而不是影袜子的东西。但是与影袜子相同,喂图睿会按需向私有网络内的远端设备发送流量,而不是像喂批恩那样需要定期握手来保持连接。在理论上被网络大环境识别和侦测的可能与影袜子相同,但是肯定比虚拟个人网络要来得好。 运作方式上,通常的薇图睿的运作与影袜子类似,都是在本地建立一个代理服务器后将本地出口流量转为加密的流量再向远程设备发送;远程设备在解包之后转发给对应的网站。那么有人就会问了,为什么薇图睿普遍认为被侦测的可能性要比影袜子低呢? 首先一点,影袜子的流量其实相当容易识别。这个包既不像http也不像https,并且很多时候走的并不是喜闻乐见的80或者443端口。加密形式虽然多但是总是就那么几种,学一学就很容易出来特征了。而且对于这种“非法入侵他人计算机系统”的行为,并不需要真的解包,只需要确认你的流量异常即可查杀。 其次,薇图睿可以更好地伪装为正常的websocket、http或者https流量。这样的话,你向远端服务器发送的这个流量就更难与正常的一般网页访问区分开来。尤其是薇图睿的配置可以支持native的负载均衡(我不知道影袜子能否做到,但是薇图睿可以做到同时两个网页使用了两条不同薇图睿线路)。这样集中在单个水管上的流量就更加离散,难以被识别和追踪。 以上内容是非常noob的我在配置和使用过程中的对薇图睿的理解。肯定会有不足之处。评论区gkd。 接下来是服务端的薇图睿配置。 用这个自动安装脚本就完事儿了,官方自己推荐的 具体这个go.sh的功能可以在官方project主页查看,我只说接下来要做的。 编辑设置文件: 待续……预告是先从http1.1/tls(非openssl自建证书)到负载均衡(迫真)多节点配置。多用户统一管理我暂时没考虑,毕竟用我服务的朋友挺少的(指快交钱 19.08.15更新 终于从旅游回来了 在编写config.json之前我非常建议你好好研究一下原来config.json的写法,里面的各个条目的意义基本猜意思也可以知道。。。好的我现在假定读者你已经读过原来的config.json了,也对里面的条目、块、数组起的作用有了大致的了解。 首先一个,我们需要选择是否开启日志。我的建议是最好开启,开启日志有助于你进行检修。,这就是“log”这一块的内容。具体log文件存的路径可以自己选择。等级可以调更高的(那样就更详细,占用空间也会更大),具体有哪些级别可以查看官网的技术文档。 然后是配置“inbounds”这一块,主要功能是接受来自用户端的数据,再由outbous发出去。监听地址和端口就127.0.0.1:1080,使用的协议为vmess。这个协议的具体作用和内容我也不是很明白,应该是ProjectV的一个部分,或者可以认为是他们专门创建的一个新协议,来为薇图睿的数据流加密的。 这里面需要在settings里添加一个clients数组。这里记录了各个用户的唯一id和流量选择等级alterId(?)。id的话貌似是什么都行,只要不重复就可以。 除此之外还有要给streamSettings,这一子块是最核心的。它声明了服务端与客户端之间沟通的数据包属性,也可以为发送的数据包添加header信息。我这里使用的是websocket格式(ws),并通过127.0.0.1:810/ray这个url进行访问。用户id是114514-1919-810。 outbounds块就很简单了。直接由数据包的类型自由选择连接协议即可。 细心的读者可能发现了,我们这里的in&outbounds是一个数组,那么是不是同一个服务端可以直接有多个inbound和outbound呢?理论上说,是可以的。但我没试过。 上面的各个块的内容讲道理是直接拼在一起就能用的。 肯定有人要问:兄啊,你不是要用http1.1/tls来的吗,你怎么用的websocket了呢?说真的,其实我也不太明白这两种格式有什么太多区别。实际上,我实现的方式是使用一个ssl证书来对inbound的http流量进行加密,然后再转发ws给薇图睿的,整个流水线就跟个黑盒子一样work very well。至于http怎么就变成了ws,我也不知道,大概nginx就是nb吧。 没错,接下来我们配置nginx。 首先是搞个证书,你用openssl我当然不反对,不过我懒得配置三个月一换的自动脚本。所以,我就搞了阿里云一年一换的免费证书(有钱大晒的便宜可以直接买3/5年的企业版)。怎么买还要我教吗? 把阿里云给你的.pem和.key文件传到服务器上去。然后在nginx的conf里添加一个conf文件。 因为本文的目的不是教会读者配nginx,所以建议你自己学一学,直接抄记得该改的东西要改,自己modify的东西也要改。 然后重启你的v2ray和nginx,确认无误服务端就配置完成了。 待续:客户端配置,以及如何上网使用薇图睿客户端。 190928更新:匆匆忙忙填完了坑 我不是鸽子!!! 接下来就是配置你的用户端,你可以使用官方项目主页上推荐的各自gui工具。但是我是用命令行的版本的。 编辑你本地的config.json文件。 懒得说了,打字手疼。各个模块的内容如果不是一目了然说明你需要进行大脑升级。 然后运行v2ray时带上这个文件,你本地就创造出了一个跑在127.0.0.1:1080的socks服务器。然后就是配置各种网络应用的代理。不建议用v2ray跑游戏加速器。
-
关于19/07/18-20几天服务波动的说明
我信用卡到了,注册了linode的账号,把数据从conoha转移到linode上了。就这么简单。 可以通过这个码来获得linode的优惠(应该fd5a7b755c6daa294078ee76f7d525f441b94cd9 最近在忙一些别的事情,有空讲一下v2ray的配置和原理(粗略 过段时间有点想搞一个个人云盘
-
关于我为什么这么久没更新
很忙。 包括wp的版本和各种插件也好久没更新了。 疏于打理吧。 学业繁重。 自己放了一个卫星,用tornado做一个博客框架。所以做好以后应该你们能见到一个巨丑陋的博客(因为前端是准备做好后端之后再做的)。 贵安。
-
Hackinit特别作战!上科大二番进出!
初期作战计划准备与安排 本来提出这个作战要求的是hxl。很不幸,hackinit第二特遣队本来计划出发的四个人,只过了三个。没过的那个是hxl。我也很无奈啊。 后来因为第二特遣队的车震王又有事情,嗯这怪复旦,取消了参赛计划。导致第二特遣队只剩下我和sjj两个人。好在第一特遣队有四个人。重新组合一下还可以打吧。 然后就订了车票。准备去住一天青旅。 初期作战发生的喜悦与意外 中午到上海。下午出去逛街。有点嗨皮。但是走了脚很痛。 看到了981和916舰停在黄埔码头。远远地拍了照。但是没有开放参观。 看到了一客148起步的牛排餐厅。大言不惭地在门口立个牌子说自己人均128。和平饭店就比较和蔼可亲了,菜单和牛排餐厅一样贴在门口,但是没!有!注!价!格!。 很生气的。为什么外滩一圈的饮料都是5元起步?为什么冰激凌(一个小小的甜筒)都要15块?一个温州中学卖3块的东北大板5~10块不等?你要知道,和平饭店甜品站的甜筒都只要5块钱(但是没有买),你一个小小的冰饮摊凭什么卖15块?还有没有王法啦?我知道没有,但是有社会主义的法律呀! 好在有麦当劳叔叔的4块甜筒拯救世界。 回到青旅。两个女生突然发布了她们家长的决定:让她们换家正经宾馆住。也就是没有商量的余地。可能是信不过我和另外3个男生吧。略略有点小脾气起来。用环境差做借口,然后订了一个二星级双人间。觉得略奇葩。毕竟这是上海,两个人连早餐就要309啦(二星级)。毕竟这是一早就决定并通过的事情,给这样随便的一个理由推翻还是有点不甘心。 不过好在过了一会儿我的心情就被俾斯麦给转了过来。 DAY1实录 可能会比较散,因为我是在gap中手机上随便码的。 报到以后把我带到了熟悉的103教室。就是在这里遇上葫芦岛小姐姐的。 报到在学生活动中心。温州中学代表团留照。 先是党委书记副校长致辞。似乎是即兴的,很短。然后是各种赞助商上台安利自己的公司,希望有人能去自己的公司😂。 见到了wph95。 并没有什么照片值得拍😒。 然后是联合创办人上台讲些什么。 看到一个漂亮的外国小姐姐疯狂拍照😂被老谢批评了😂 我们这队人苦战良久,因为没抢到熟练使用的器材,想不出什么东西好做。瞎想了一个东西。有个导师过来开导我们。我们认识到我们想做的东西是没有用的。就放弃了。 还有学习机会。但是实际上比赛很紧张,没时间去听。 有个小哥,已经被USC(南加州大学)录了,因为队友退赛而自己又不想退,看到我们只有三个人,就加入了我们。然而并没有什么卯月的小哥,洋屁放得响,代码却打不起来。帮我翻译翻译文档用。 这小哥好厉害,已经撩到一个志愿者了。好像和她同为USC今年的新生。然而人家已经是个创业者了。 晚上狂吃staff给我们准备的夜宵,撑了。夜宵是慕斯蛋糕,有好多口味。可惜不能一一吃过来,因为撑了。 我出名了。就在比赛的时候,9pm快10pm的时候,比着比着,上科大公布了浙江的录取。我被录了。发在比赛的微信群了。出名了。 去给老谢报喜。他告诉了我一些杂七杂八的东西。 加了我校本届新生群。发现了一个可怕的事实: 夜宵前我们去全家便利店买东西。我买了红牛当大烟使。USC小哥说他要等人,留在那里没和我们回来。过了三个小时才回来。全是是汗。一定发生了什么。他也闪烁其词。我知道。可你还是个未成年人啊小哥。 站起来走动休息的时候看到的。btw我们比赛的地方在我校真是给个鸡毛就当令箭学生活动中心。 不说这些鬼畜玩意儿了。认真写代码。马上就DAY2了。 DAY2实录 小哥那个撩的志愿者过来请小哥去睡觉!猝不及防。真难吃。 这是什么操作?什么APP,我也要! 有生以来起的最早的一天:2:30。就睡了半个小时。 你见过3:30的张江吗?边上一栋楼都在修仙。志愿者说那里是一个什么公司,里头程序员天天修仙通宵。 天亮了。不是一点点的,而是突然亮起来的。要是革命也是这样的就好了。 GG了。嘛奖都没有了。最打击我的还是有一组和我们想东西完全一样,做的一样,硬件一样。就因为他们用java有个库我们用的c#没有做得比我们好拿了前十。 真的好气。 不过他们还是给了我们参赛证明: 我也是闭幕式上才知道这次hackInit是第一届。 三个评委好像有一个是混微信群的。知道我们是60号组之后说:是不是你们组有个人昨天被上科大录取了? 我:是的。就是我。 评委:厉害。服了。我们是浙江的一个公司……(以下安利) 我校真厉害,新生你都要。 上路回家。老谢给了我们这么一个消息。 坐了趟地铁。居然不是到徐泾东的2号线而是到淞虹路。搞得我们还要转。结果就见到了: 紧赶慢赶好歹赶上了车。 高铁盒饭,天下第一难吃?屁,月球上的尘土都比这基尔东西好吃。 沉沉睡去。直到温州。 结束了。就当是带学弟学妹们出去旅游一波吧。高三了,让他们开心也好;高二了,让他们见见世面吧。 讲道理要是那时候我拉的是Massimo而不是智障一般掉车链爆胎的车震王也许就不会这么惨了。事后放屁
-
【C#学习笔记】开始于Hello World!
去华师大的时候被面试老师推荐了一波VS和C#。想想现在也有点闲。所以就开始学习C#。 今天学习的主要内容有: 安装Visual Studiio Community 2015 编写你的第一份C#程序 了解拼写命名规则 了解VS 2015的基本用法 首先你需要下载zài一个Visual Studiio Community 2015的安装包。当然截至本文发稿时,微软巨硬已经发布了2017版的VS。但是我感觉应该是大同小异的。我现在在用的是2015版,界面设计上和2017差不多。可能2017更加看重移动和web方向的开发吧。 安装反正很简单。 好的现在我们开始经典的”Hello World!”程序编写。 打开你的VS。如果你和我一样,应该看到这样的情形。 然后点击左上角的菜单或者起始页里的“新建项目”。选择项目类型。 我们选择控制台应用程序。因为在演示前我已经创建过一个控制台应用程序,所以我这里的项目名是“ConsoleApplication2”,各位可能是“ConsoleApplication1”。右边的解决方案的选项可以不勾选。我是觉得git的版本控制还是需要的,所以勾了起来。 把这个项目名改为“Hello World!”。注意这里的空格和叹号最好别加。因为VS是一个高效的生产工具,绝大多数公司会用VS开发。大家以后出去如果从事这方面的工作要遵守单位的代码规范,一般来说这个空格和叹号是不应该有的。 然后你就会看到一个读条。读完之后打开了一个选项卡,文件名“Program.cs”。代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hello_World_ { class Program { static void Main(string[] args) { } } } 在Main函数中输入: Console.WriteLine(“Hello World!”); Console.ReadKey(); 然后打开“调试”菜单,点击“开始调试”(热键F5)。你将看到: 函数Console.WriteLine()输出了一行字符串“Hello World!”,而Console.ReadKey()的作用是暂停并等待任意键输入。这实在太简单了。…
-
如何把一个验证码的画风改变
我之前提过,我想把Math Captcha加强一下从小学到高中。 然后今天搞出来了。 Math Captcha原版以MIT协议发布,修改后我的版本依旧以MIT协议发布。 反正就是加了一个and、or、xor的运算,比之前的厉害了一点话说高中生真的会这个吗。 以后可能会更新一些比较高级的运算吧(比如三角函数函数求导定积分放卫星先)。 下载M_E Captcha解压到你的WordPress插件目录即可。 原版Math Captcha请到WordPress官方插件中下载。
-
如何阻挡垃圾用户和恶意注册
大概就是说,我之前为了吸引别人来看我的博客,开放了用户注册。然后就是海一样的垃圾用户。尤其是使用了一个叫做Jetpack的插件以后(它把我的博客po在WordPress.com上面,结果一坨不知道什么鬼的人来注册,最多的时候一个下午30个人)。这个问题本来不是很明显,直到有一天我打开MySQL检查数据库的时候发现多了很多没用的数据(和一些没用的表),我突然想起来MySQL是个小型数据库感到很害怕,于是就清退了一波。起视四境,垃圾又至矣。 怎么办呢?问题出在用户多上,导致了数据库有大量的冗余数据。但是用户又为什么多呢?因为注册没有限制,随便写个脚本(讲道理这种专攻WordPress的脚本应该不少)就能注册一个账户。至于为什么发现是脚本?腾讯给我的邮箱(就是那个管理博客发发各种通知信息的邮箱)发了很多“这个邮箱收到了太多邮件,您发的邮件被退回”的通知。 那么怎么限制注册呢?不行,这是反人类的事情。我们要让人注册,让脚本不能注册。那么就是验证码了。 特别注意一下,Geetest(极验验证)的WordPress插件一万年没更了,已经不能用了。 我用了Math Captcha,一个用小学算术题验证的GPL协议的验证码插件。很爽。立刻见效。 设置界面是洋屁,但是可以看懂。
-
没有钱如何建立一个博客
服务器很贵的。比如我现在就是在用廉价服务器一个月从我牙缝里抠出40块,不稳定的那种,分分钟卡扎菲。为了稳定要花更多的钱然而你们知道我的钱都拿去买老婆和供养老婆了。 而且一个好的域名,比如.com或者.cn或者.jp或者.tw或者其他的更常见的顶级域名,要花一大笔钱(参考价:mecyz.com一年¥300+)。因而免费的域名对于建站新手显得非常重要。至于我自己的域名,mecyz.tech和mecyz.site,一年耗费¥5,还是连买3年带来的优惠,本来要¥10一年。 建议各位建站的新手先搞个博客运营一段时间,这种的东西练手比较好,因为博客的管理相对轻松、内容只需要发发牢骚无病呻吟就可以、完整的解决方案通常具有完备的控制面板。然后再是自己写一些网站(前后端综合)比如我就做了一个奇丑无比的、非常简单的温州中学镇守府时间众筹管理处。 好的讲了这么多你们还有兴趣建站的话洋屁水平过关就来吧。 首先先搞个域名(相对简单)。免费的顶级域名有.ga和.tk和.ml等听说过我的黑历史mecyz.ga吗。注册这类域名需要到freenom上“购买”。在freenom上注册一个账号,用你的电邮。请注意最好使用一个outlook的邮箱,因为国外这些免费服务害怕被国内大量用QQ、网易、搜狐等邮箱的水军淹没,占用大量资源而收不到钱,而gmail国内支持比较差由于众所周知的原因所以不推荐。outlook是微软的服务,Yahoo邮箱翻车可能性比较高他们自己不可靠,反正国外一般只认牛逼的东西,而且freenom是国外提供的服务你看这很不友好的洋屁界面和Google翻译风的中文就知道了。瞎填一气什么地址、公司、个人信息比如我就用我的QQvip邮箱注册了一个Chunping Sue的女性用户账号地址什么的填的都是CP的工作单位希望他们别给CP寄账单。好的接下来就可以搜索你喜欢的域名了。 比如我搜一个tudou。然后他会和我说tudou.tk啊tudou.ga啊tudou.ml啊已经有人买了,你要付$4.99购买这个域名。那么我搜tudoux。很好都没占用,加入购物车。结算的时候你就会发现,诶为什么我要付$4.99?其实是因为你选的是一年(1 year),你要是用12个月(12 months)就是free没话讲。如果你想保持这个域名的话,记得每年要去续命费(都选Free:12 months即可) 买下这个域名之后就什么都先别动它先。我们搞定主机的事情先。 提供免费主机(或者说空间?)的服务提供商比较稳定的有hostinger,可以直接“买”一年,而且全简体中文,服务比较舒服。但是他们家的香港机房的免费机位卖完了,只剩下欧洲的,这意味着你的网站需要一万年才能访问到(平均ping可以高达300ms)。而且原来的微博账号也不能用了他们的api好像过期了。注册之后所有的操作就很简单了,建主机、绑域名、控制面板自动建站建议选择WordPress、配置自己的网站,非常简单,而且他都有教程和讲解。 如果你想访问自己的网站快一点,可以考虑一下这个台湾的服务Lionfree虽然有可能会被墙。繁体中文的阅读可能有一点难度,但是还是相对轻松的。Lionfree是一个公益组织办的服务,目的是普及个人网站、普及建站技术。要用电邮注册账户,而且你创建的免费主机需要一月一续费。针对乱申请浪费免费主机,日本和韩国的一些服务商是用筛选出访问数低的主机然后ban的方式,而Lionfree干脆让你每个月手动续费命,保证所有的主机都是full use。 Lionfree使用的cpanel管理页面不如Hostinger的友好(也就是更难看懂),但是功能相对要全一些,限制也比Hostinger少。自建博客的过程和Hostinger差不多,不再赘述。 这套教程是我帮学妹Tudou建站的时候搞出来的。
-
如何创造黑暗:htmlXcss的暗幕
上帝,盘古,或是其他的造物主,都诞生于黑暗 很多时候我们有想说但又咽回去的话。对方可以通过我们的表情、动作来了解这些“隐藏”的内容。可是,这种话写不出来。写出来就失去了潜行的效果。 当心,你的,背后。 所以我们有了暗幕。 这种东西最早的广泛使用应该是萌娘百科。萌娘上的词条要想没有暗幕,那得要足够冷门。暗幕在萌娘上的主要作用包括: 介绍剧情但又防止剧透 少儿不宜的内容 词条编写者的吐槽 对同一事物表示两种不同的态度 这种作用和删除线可能差不多。但是比删除线更好。因为如果不想看就可以不看,但是删除线仍然可以看到内容。这样的话暗幕就和白条(白底白字)差不多。但是白条难以准确地选定(在白色背景上,我们并不知道白条会有多长)。但是暗幕,长度很明确,也很吸引人。的的确确让人有“你知道的太多了”之感。 好的干说了这么久前戏,我们回到正题。怎么做一个暗幕呢? 最早萌娘上的暗幕是用<span>标签直接改颜色和背景色的。 <span style=”color:#000000;background-color:#000000″>暗幕</span> 后来在这个<span>里加上了一个title属性。 <span style=”color:#000000;background-color:#000000″ title=”你知道的太多了”>暗幕</span> 再后来因为使用的词条越来越多大概就是几个维护者特别喜欢用结果带动了不良风气,官方干脆就在编辑器里直接加了暗幕标签,也把暗幕标准化了。 于是我们看到的暗幕标签变成了这样。 <span class=”heimu” title=”你知道的太多了”>暗幕</span> 至于anmu这个类,是定义在style.css里的。颜色也统一了一下,更加合理。 .heimu{ color: #252525; background-color: #252525; } 这样一来,这些标准化暗幕下面的文本,就只能由用户自己用光标选定之后才能看到了。 但是这样毕竟不方便,所以后来萌娘由把暗幕有关的css改成了这样。 .heimu{ background-color: #252525; color: #252525; text-shadow: none; cursor: help; } .heimu:hover{ color: white; } 这样一来,用户只用把自己的鼠标移动到暗幕上就可以看到暗幕下方的内容。 至于本站的暗幕是怎么做的…… 那就简单多了。直接定义一个anmu类。这样唯一的不足就是鼠标移动上去后没有提示:你知道的太多了。 anmu{ color: #505050; background-color: #505050; cursor:…