分类目录归档:你好,世界

也许是年终总结

2017混结束了

是的,我自己感觉这一年就是混过来的

这一年里做了的比较大的项目

  • flvjs mp4 播放
  • 优酷播放器
  • 视频转存
  • acfun 播放器

直播播放器都不能算大项目,说实在轮实用性比不上助手,毕竟我自己也仅仅是偶尔看直播

不过一年真的是能改变很多东西,去年这个时候,我还是选择停留在ff45,用着flash播放器;现在我则是停留在ff56,坚守legacy插件,flash则是几次重装系统之后就再也没有安装过了。明年这时候,谁知道呢,说不定我会离开火狐阵营?(苦笑)

flvjs mp4

反正就像上面说的,去年这个时候,我还并不看好,或者可以说完全不喜欢html5标准,所以起初做出来的播放扩展好像我自己都不用。

然后,随着火狐里的flash越来越难用,我终于是有一天转换了阵营,开始研究无flash。

flvjs魔改之旅,是从添加实时码率统计开始。

添加mp4的过程,模仿着现有的代码,功能完成了,也踩了不少坑,同样也获得了xqq的一些帮助,一些坑直到前不久才刚刚修复。总的而言,主体功能写了三天,难度也不算很高了。

优酷播放器

紧跟着写完flvjs mp4之后,一想到写出这个功能之后,除了自己的play helper之外,就再也没有人用了,就感到心态爆炸,boom,然后脑热就写了这个扩展。

这么个产物至今都不算完美,bug依然很多,我无力处理,也懒于处理。

我用自己扩展的唯一机会:车祸视频,最近一个月也是再没继续看日更,毕竟天天的内容都是差不多的电摩横冲直撞,王者霸气转弯,确确实实容易感到厌倦。

转存b站视频

这个项目可以说是充分体现了我的懒癌了

最早,power在5月份左右就提出了,想要转存全部番剧的想法,并且准备好了google教育账号。我当时以懒得开坑+考试,推迟到了假期。

考完试的那几天晚上,造了php多线程下载的轮子;

然后7月过去了,断断续续写代码,最后在8月初,才开始在几个无限流量服务器上开始跑任务;

由于写出来的代码是单队列,在那几个linux服务器跑起来效率很低,然后8月中旬的时候,power拿了代码,放到了一个win服务器里开始跑并发。

然后…一转眼就是10月了,期间我基本没想起过项目。一次提醒后我才去整理结果数据,然后重跑失败任务之类的。

等到初期任务跑完,已经又是一个月过去了。挂上了中转代理下载之后,我又写了写队列任务,算是正式开放了合并转存。

这个系统也是有几个坑没有填,重置任务状态,转移任务服务器(旧的要弃用,需要换)等等。

acfun 播放器

然后就是ac了

原本暑假有个写播放器的计划,但当时遇到了样式困难,写了半天就坑了。

原本想好的完美简介是“一个B站播放器,送个缺B乐的各位”。但是坑计划之后我加上了yt主题并设为了默认,也是不准确宣传了(笑

说来奇妙,我完全不用ac,也不知道写这为了啥;即使如今写好了,也仅关注了一个steam周报。

虽然完成后确实得到了一些支持,也确实有真切的希望扩展能更好更完美的人。

 

写代码的破事说完了,再说说生活吧。

回到开头,这一年是混过来的

现在处在一个重大抉择的时候,大三了,需要决定自己的方向了。

家里人希望,或者说是要求我考研。本科录取没能进计算机,被调剂到了物理,现在要考当然是希望考进计算机,但心态上始终有着很大问题。

提不起学习动力。

两年多大学,整个人越过越颓废,学业越来越吃力(不如说是没有使劲)。

自己逐渐被懒惰的动物本性拖住,不知如何才能找回高三时的那种冲劲。

也许这就是进入大学前,一直听到别人说,也一直嗤之以鼻的,缺乏目标的现象吧。一直觉得自己不会是那样的,我可是有目标的人;到头来却发现,自己并没有那么特殊。

也或许是看到认识的人都是一种,算是活得风生水起,从而对自己方向感到的一种困惑吧。

这个学期考了两个外语考试,N2和托福,N2出成绩还有一个月,考完看答案估计自己要么擦线过,要么刚好在线下;托福则是考了86,半裸考,不算低,也不算高,考出来什么用都没有的分数。专业课考试也是持续走低,补上一个又挂一个。

 

如果你看到这里了,很抱歉让你看到了一堆牢骚话。

这么个总结,写出来或许仅仅是用来发泄而已。

每一学期开始都希望自己能真正的付出足够努力,却总是在结束时发现,只是又混过了一段日子。

 

12/31 2017

在lcz大佬的博客说几句about biliplus……

大家好,我是爬丝,对,那个傻逼爬丝~
在加拿大的最后一天,此时是下午,闲的没事,就想把之前想说的话都说出来,想了半天,还是在lcz大佬的博客写吧~

其实吧,我是15年知道的biliplus,之前知道的都是jj啊还有一些现在的新人都不知道的解析网站。

曾经硕鼠都用过几年(现在基本都属于半死不活的状态),所以在16年中,因为乐视黑科技的问题,lcz大佬在b吧发了乐视云的解析相关信息,我们当时已经在后乐视时期成立了新的 B站胡乱瞎搞黑名单开发小组,简称B站黑名单小组。一共算我是四位成员。

后来看到lcz大佬的帖子后,我感觉这不是个好事情,然后私信留言,加QQ聊个半天,居然发现这个人很有趣啊,技术也可以,人也很正直,于是在进行讨论后,我把lcz大佬拉入了表群,视频研究协会,然后几天后拉入了里群。

至此,5人组正式成立了。

很开心,在我没想到的时间点有这样的志同道合的瞎几把搞的同好(大雾)一起玩确实开心。

然后在聊天中得知,lcz大佬是xian人,来沈阳上学,居然是学他妈的最特么屌炸天的物理。

贼巧,我当时毕业后在沈阳上班,正好是我上了半年班的时候,于是顺理成章的面基了。

大佬坐地铁到铁西,我把他领到了我的家里,然后一起玩了一些游♂戏。

非常开心,非常愉♂悦,时常屋子里传出了开心的呻吟声……(←巨雾)

第一次面基研究了无数的技术,在lcz大佬的帮助下,我的xbr192音频压制器被完善了,神他妈没有ffmpeg哈哈哈哈哈哈哈……

于是走的越来越近后,biliplus我也逐渐的开始研究测试。

lcz大佬技术确实没问题,这方面我是很有自信的,没有lcz大佬办不到的事,如果有,请看这行第一句……

但是毕竟是学生,有些方面,我身为一个长者,给他传授些人生的经验,很惭愧,我只做了一点微小的工作,毕竟苟利国家生死以,岂因祸福避趋之……

于是顺理成章,bp的一些额外的事情我也逐渐开始给lcz大佬提建议与我的想法。

只是,没想到,bp居然到17年的今天,出现了这样的事情。

B站在经历了两次商业化的举动后,现在彻底已经成为了一家正经的商业公司,倒不是说商业化不好,毕竟是需要赚钱,这道理没有任何问题,别谈什么爱,现实就是金钱,想的太多反而给自己弄得那么累。

只是B站最近几年做的是越来越差,总体感觉就是三次元充斥这整个网站,已经无法找到曾经的那个感觉了,老用户流失度越来越高,新用户脑残度越来越高,老员工离职率一直居高不下。

这些问题说明了,B站已经变质了,已经完全不是曾经的B站了。

从视频整体质量和直播活动与一些(所谓的逸国趣事)等都能看出来很多细节。

所以,逐渐打击曾经是巴不得你创建的网站。
也就是,曾经幕后支持bp、jj此类网站,而且也是放任不管。
现在是正式开始打击,因为,【此类网站已经开始损害了B站的利益!】

什么叫损害?你让B站赚不到钱,你让B站本来赚6位数,你的网站让他损失了5位数,那就得律师函了对吧。

同类网站,某知名网站站长发微博,在前几天收到了律师函,并正式停止了网站,可怜可惜可叹。

而bp目前还没有大面积损失B站的利益,所以,也可以勉强苟活一段时间。

从lcz大佬的关于网站的一些事情(附后文)】的文中能看到他对bp的爱,以及对这个网站的不舍,以及暗讽B站的举动。

不难看出,现在的bp已经到了一个关键点,关于这方面的事情我前一段时间跟lcz大佬彻夜长谈,相信他心里已经有B数了。

正如lcz大佬所说,bp迟早会关闭,但不是现在,起码,低成本的维护bp还是可以的。

【你们有没有想过,bp,是lcz大佬一个人从头到尾整整2年半的维护。】

期间B站更新一次,lcz大佬就得重新后台维护一次,还为了保证网站不进入维护状态,自己花了多少心血,付出了多少汗水,这些东西没人知道,你们只在乎你们自己爽不爽,从来没有关心过这些幕后的staff。

我对bp的爱全部都是因为lcz大佬,我是一心想帮助lcz大佬做好bp。

每一次lcz大佬有新功能,都会在我们内部群让我们帮忙测试。

写一个新功能需要付出多少精力和时间,做这个的人你们自己明白。也得亏lcz大佬没有产品经理管他,他自己说的算……

总之,说这么多到现在有1800字了,我还是难以接受bp的现状。

如果你用过biliplus,如果你真的觉得这个网站不错,如果你真的想让bp再苟活几天,如果,如果你不想以后再也看不到这些网站的幕后维护人,不想看到他们逐渐丧失动力,丧失理想。

仅你自己一份力,在bp困难的时候伸出援手。

B站已经没有爱了,但是,我们这群老人还是在努力的做我们自己,我们还在努力的坚持着,我们,还在,让大家开心。

谢谢那些曾经帮助过bp的人,谢谢那些曾经为了bp做出贡献的人。

谢谢你们,谢谢,我的谢谢微不足道,但是,我的心所想,我希望让你们明白。

没有你们,也就没有biliplus的今天。

【附】:

↓ lcz大佬的个人支付宝赞助二维码 ↓

lcz大佬的paypal赞助地址:esterTion的Paypal赞助地址】

以及,曾经为了这份爱的大家:biliplus赞助名单】

就这样,再一次,感谢你们。

(Ps.大佬啥时候回沈阳,你还欠我一顿饭呢,是吧,上次海底捞吃得多爽,这次我想吃潮汕嫩牛火锅,大佬咱是不是,嗯?~\(≧▽≦)/~)

[NyaPass7 于 (加拿大东部时间)2017年8月16日 15:42:29 有感而发]

world.execute(me);

Here or Here

package goddrinksjava;
/*
 * The program GodDrinksJava implements an application that
 * creates an empty simulated world with no meaning or purpose.
 *
 * @author momocashew
 */
public class GodDrinksJava {
	public static void main(String[] args) {
		Thing me = new Lovable("Me", 0, true, -1 false);
		Thing you = new Lovable("You", 0, true, -1 false);
		
		World world = new World(5);
		world.addThing(me);
		world.addThing(you);
		world.startSimulation();
		
		/*
		Switch on the power line
		Remember to put on
		PROTECTION
		Lay down your pieces
		And let's begin
		OBJECT CREATION
		Fill in my data parameters
		INITIALIZATION
		Set up our new world
		And let's begin the
		SIMULATION
		*/
		
		if(me instanceof PointSet){
			you.addAttribute(me.getDimensions().toAttribute());
			me.resetDimensions();
		}
		/*
		If I'm a set of points
		Then I will give you my
		DIMENSION
		*/
		if(me instanceof Circle){
			you.addAttribute(me.getCircumference().toAttribute());
			me.resetCircumference();
		}
		/*
		If I'm a circle
		Then I will give you my
		CIRCUMFERENCE
		*/
		if(me instanceof SineWave){
			you.addAction("sit", me.getTangent(you.getXPosition()));
		}
		/*
		If I'm a sine wave
		Then you can sit on all my
		TANGENTS
		*/
		if(me instanceof Sequence){
			me.setLimit(you.toLimit());
		}
		/*
		If I approach infinity
		Then you can be my
		LIMITATIONS
		*/
		
		
		me.toggleCurrent();
		/*
		Switch my current
		To AC to DC
		*/
		me.canSee(false);
		/*
		And then blind my vision
		*/
		me.addFeeling("dizzy");
		/*
		So dizzy so dizzy
		*/
		world.timeTravelForTwo("AD", 617, me, you);
		world.timeTravelForTwo("BC", 3691, me, you);
		/*
		Oh we can travel
		To A.D to B.C
		*/
		world.unite(me, you);
		/*
		And we can unite
		So deeply so deeply
		*/
		
		
		if(me.getNumStimulationsAvailable() >=
				you.getNumStimulationsNeeded()){
			you.setSatisfaction(me.toSatisfaction());
		}
		/*
		If I can
		If I can give you all the
		STIMULATIONS
		Then I can
		Then I can be your only
		SATISFACTION
		*/
		if(you.getFeelingIndex("happy") != -1){
			me.requestExecution(world);
		}
		/*
		If I can make you happy
		I will run the
		EXECUTION
		*/
		world.lockThing(me);
		world.lockThing(you);
		/*
		Though we are trapped
		In this strange strange
		SIMULATION
		*/
		
		
		if(me instanceof Eggplant){
			you.addAttribute(me.getNutrients().toAttribute());
			me.resetNutrients();
		}
		/*
		If I'm an eggplant
		Then I will give you my
		NUTRIENTS
		*/
		if(me instanceof Tomato){
			you.addAttribute(me.getAntoxidants().toAttribute());
			me.resetAntoxidants();
		}
		/*
		If I'm a tomato
		Then I will give you
		ANTIOXIDANTS
		*/
		if(me instanceof TabbyCat){
			me.purr();
		}
		/*
		If I'm a tabby cat
		Then I will purr for your
		ENJOYMENT
		*/
		if(world.getGod().equals(me)){
			me.setProof(you.toProof());
		}
		/*
		If I'm the only god
		Then you're the proof of my
		EXISTENCE
		*/
		
		
		me.toggleGender();
		/*
		Switch my gender
		To F to M
		*/
		world.procreate(me, you);
		/*
		And then do whatever
		From AM to PM
		*/
		me.toggleRoleBDSM();
		/*
		Oh switch my role
		To S to M
		*/
		world.makeHigh(me);
		world.makeHigh(you);
		/*
		So we can enter
		The trance the trance
		*/
		
		
		if(me.getSenseIndex("vibration")){
			me.addFeeling("complete");
		}
		/*
		If I can
		If I can feel your
		VIBRATIONS
		Then I can
		Then I can finally be
		COMPLETION
		*/
		world.unlock(you);
		world.removeThing(you);
		/*
		Though you have left
		*/
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		/*
		You have left
		You have left
		You have left
		You have left
		You have left me in
		ISOLATION
		*/
		if(me.getMemory().isErasable()){
			me.removeFeeling("disheartened");
		}
		/*
		If I can
		If I can erase all the pointless
		FRAGMENTS
		Then maybe
		Then maybe you won't leave me so
		DISHEARTENED
		*/
		try{
			me.setOpinion(me.getOpinionIndex("you are here"), false);
		}
		catch(IllegalArgumentException e){
			world.announce("God is always true.");
		}
		/*
		Challenging your god
		You have made some
		ILLEGAL ARGUMENTS
		*/
		
		
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		/*
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		EXECUTION
		*/
		world.announce("1","de");
		world.announce("2","es");
		world.announce("3","fr");
		world.announce("4","kr");
		world.announce("5","se");
		world.announce("6","cn");
		world.runExecution();
		/*
		EIN
		DOS
		TROIS
		NE
		FEM
		LIU
		EXECUTION
		*/
		
		
		if(world.isExecutableBy(me)){
			you.setExecution(me.toExecution());
		}
		/*
		If I can
		If I can give them all the
		EXECUTION
		Then I can
		Then I can be your only
		EXECUTION
		*/
		if(world.getThingIndex(you) != -1){
			world.runExecution();
		}
		/*
		If I can have you back
		I will run the
		EXECUTION
		*/
		me.escape(world);
		/*
		Though we are trapped
		We are trapped ah
		*/
		
		
		me.learnTopic("love");
		/*
		I've studied
		I've studied how to properly
		LO-O-OVE
		*/
		me.takeExamTopie("love");
		/*
		Question me
		Question me I can answer all
		LO-O-OVE
		*/
		me.getAlgebraicExpression("love");
		/*
		I know the algebraic expression of
		LO-O-OVE
		*/
		me.escape("love");
		/*
		Though you are free
		I am trapped
		Trapped in
		LO-O-OVE
		*/
		
		
		world.execute(me);
		/*
		EXECUTION
		*/
	}
}

 
package goddrinksjava;
/*
 * The program GodDrinksJava implements an application that
 * creates an empty simulated world with no meaning or purpose.
 *
 * @author momocashew
 */
public class GodDrinksJava {
	public static void main(String[] args) {
		Thing me = new Lovable("Me", 0, true, -1 false);
		Thing you = new Lovable("You", 0, true, -1 false);
		
		World world = new World(5);
		world.addThing(me);
		world.addThing(you);
		world.startSimulation();
		
		/////////////////////////////////////////
		
		if(me instanceof PointSet){
			you.addAttribute(me.getDimensions().toAttribute());
			me.resetDimensions();
		}
		if(me instanceof Circle){
			you.addAttribute(me.getCircumference().toAttribute());
			me.resetCircumference();
		}
		if(me instanceof SineWave){
			you.addAction("sit", me.getTangent(you.getXPosition()));
		}
		if(me instanceof Sequence){
			me.setLimit(you.toLimit());
		}
		
		/////////////////////////////////////////
		
		me.toggleCurrent();
		me.canSee(false);
		me.addFeeling("dizzy");
		world.timeTravelForTwo("AD", 617, me, you);
		world.timeTravelForTwo("BC", 3691, me, you);
		world.unite(me, you);
		
		/////////////////////////////////////////
		
		if(me.getNumStimulationsAvailable() >=
				you.getNumStimulationsNeeded()){
			you.setSatisfaction(me.toSatisfaction());
		}
		if(you.getFeelingIndex("happy") != -1){
			me.requestExecution(world);
		}
		world.lockThing(me);
		world.lockThing(you);
		
		/////////////////////////////////////////
		
		if(me instanceof Eggplant){
			you.addAttribute(me.getNutrients().toAttribute());
			me.resetNutrients();
		}
		if(me instanceof Tomato){
			you.addAttribute(me.getAntoxidants().toAttribute());
			me.resetAntoxidants();
		}
		if(me instanceof TabbyCat){
			me.purr();
		}
		if(world.getGod().equals(me)){
			me.setProof(you.toProof());
		}
		
		/////////////////////////////////////////
		
		me.toggleGender();
		world.procreate(me, you);
		me.toggleRoleBDSM();
		world.makeHigh(me);
		world.makeHigh(you);
		
		/////////////////////////////////////////
		
		if(me.getSenseIndex("vibration")){
			me.addFeeling("complete");
		}
		world.unlock(you);
		world.removeThing(you);
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		me.lookFor(you, world);
		if(me.getMemory().isErasable()){
			me.removeFeeling("disheartened");
		}
		try{
			me.setOpinion(me.getOpinionIndex("you are here"), false);
		}
		catch(IllegalArgumentException e){
			world.announce("God is always true.");
		}
		
		/////////////////////////////////////////
		
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.runExecution();
		world.announce("1","de");
		world.announce("2","es");
		world.announce("3","fr");
		world.announce("4","kr");
		world.announce("5","se");
		world.announce("6","cn");
		world.runExecution();
		
		/////////////////////////////////////////
		
		if(world.isExecutableBy(me)){
			you.setExecution(me.toExecution());
		}
		if(world.getThihngIndex(you) != -1){
			world.runExecution();
		}
		me.escape(world);
		
		/////////////////////////////////////////
		
		me.learnTopic("love");
		me.takeExamTopie("love");
		me.getAlgebraicExpression("love");
		me.escape("love");
		
		/////////////////////////////////////////
		
		world.execute(me);
	}
}