个人品味

本人看过的东西应该算不少,但是一些理论上必看的作品却没看过。有些作品确实很好,我也知道,但是因为没看过,所以就没有列上去。

最喜欢的...

项目 作品/人
最喜欢的动画 永生之酒
最喜欢的国产动画 秦时明月
最喜欢的漫画 现视研
最喜欢的国产漫画 拜见女皇陛下
最喜欢的监督 渡边信一郎
最喜欢的电影导演 细田守
最喜欢的轻小说家 成田良悟
最喜欢的漫画家 木尾士目
最喜欢的OST TARI TARI/江户盗贼团/FLCL
最喜欢的▇▇▇▇ 的良米兰
最喜欢的电影 狼的孩子雨和雪
最喜欢的打斗方式 读或死
最喜欢的歌曲 光と影のロマン


动画排名(个人喜好程度)

排名 作品
1 永生之酒
2 现视研
3 反叛的鲁鲁修
4 命运石之门
5 死亡笔记


动画排名(作品质量)

排名 作品
1 星际牛仔
2 永生之酒
3 FLCL
4 空之境界
5 皇家国教骑士团


其它,想起来什么说什么

STEINS GATE:想从逻辑上理解 SG 的一切努力都是徒劳 我的豆瓣影评
甲贺忍法帖:催泪
皇家国教骑士团:完美动画
EVA_Retake:本子的巅峰
黑轻音三部曲:最喜欢的本子
FLCL:唯一配得上“天才”之名的作品
城平京:剧本总是设定惊艳,情节不错,结尾平淡。动画化的作品在当年都是人气大作,但仅限当年。
死亡笔记:尝试了两次都没有把第二部看完
可能是动画史上最帅的镜头:Spike:Bang!
Fate/Zero:各方面都不错,就是很难脱颖而出
黑之契约者:第一季简直完美,第二季除了最后一集也很完美。最后一集告诉你什么叫坑爹,考虑到之前剧集的质量,说是落差最大的结尾也不为过。~~黑银的本子质量好高!~~
皇帝的新娘:听朋友推荐看的漫画,绝对让人大开眼界。日和里面剑圣大和那个故事的真人版
甲斐谷忍:不看他的作品人生不完整,斗智漫画的巅峰
心理测量者:每个情节你都在至少一本科幻小说里见过
道子与哈金:以前没有,未来也不可能有比它更文艺的动画,意外地很好看
俺妹:第一部特别喜欢,第二部...
冰菓:受FFF团祝福的CP。米泽穗信写的时候绝对打死也想不到冰菓作为动画能有这样的人气(只能说京都太厉害)。他的本格推理作品《算计》也很不错
Another:原作在我看来根本就是不算是推理小说,不明白为何在十一区人气那么高
机战:最讨厌的一类作品,Code Gease是看过的唯一一部
后宫:高中的时候很喜欢,近几年几乎不看,太无聊。猫娘就是那时候开始追的
OST:《Tari Tari》、《江户盗贼团》、《放浪息子》、《Gunslinger Girl》这四部动画的OST在我看来是最好的,可以循环放着听
今敏:《东京教父》还没看,其它的作品没一部看懂的...
此时此刻的我:想弄死男主
冈本伦:最geek的漫画家
魔女猎人罗宾:一部很特殊的动画 我的豆瓣影评
Gunslinger Girl/神枪少女:一部日本再也拍不出的动画 我的豆瓣影评
School Rumble/校园迷糊大王:最佳校园漫画,没有一个路人,动画没拍完很遗憾
星舰驾驶员:大概是我见过的人气和质量反差最大的动画,硬核神作 我的豆瓣影评
穿越时空的少女:我看过最糟糕的时间旅行题材作品 我的豆瓣影评

从未完结追到完结的漫画(更新中)

  • 绝园的暴风雨
  • 守护猫娘绯鞠
  • 亡灵幻境
  • 火影忍者

VideoChat Plugin Development

Since this is a videochat plugin, the core part is of course imeplementing video chatting between users. It's really simple actually.

If you have heard of WebRTC, you should be aware that modern web browsers have great power. I'll make a brief introduction to WebRTC here, but if you want to truely understand it, further searching and reading is necessary.

WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs.WebRTC allows web pages to access local multimedia devices like a webcam and microphone, and transmit these media streams to another WebRTC capable browser via a peer-to-peer network channel. These media streams can also be accompanied by a powerful data channel that lets developer exchange arbitrary data between two peers! Its mission is to enable rich, high quality, RTC applications to be developed in the browser via simple Javascript APIs and HTML5.

Visit apprtc.appspot.com (one of WebRTC's official examples to show how it works), you'll find that it's just the application I use for my plugin. All I did is putting the website into an <iframe>, and that's it, incrediblely simple but works flawlessly!

View the code for more information.

Though the appspot site works really well, it has some constraints. If two people have entered the same room (same url), then the room gets full for it only supports a peer-to-peer channel. To avoid such mess, everytime a user comes to the VideoChat page, a random number will be generated and act as the query string of apprtc.appspot.com, which prevents you from entering a full or half-full room.

Frankly speaking, although it's a plugin to implement video chatting, the most difficult part is not on videochat, but on how to invite your friends to talk to you.To do that, I use elgg built-in User pickers view.

Next step is to find out how elgg actually sends a message, it's rather easy once you have the experience using Chrome Devtools or firebug.It turns out that a message is an HTTP POST request.

e.g.

There is one thing left which is implementing your own sending/inviting machanism and making a redirection once your friends clicks the link in your msg. I'll let code do the talking:

li += '<button id="invite" float="left" height=10 width=100>invite</button>';  
$('<li>').html(li).appendTo(users);

These two lines add the invite button.

var redirect_url = base_url + "videochat/vc?r=" + rand_num;
var body = '<a href="' + redirect_url + '">请和我签订契约,加入视频聊天吧!</a>';
var msg_params = {
    __elgg_ts:elgg.security.token.__elgg_ts,
    __elgg_token:elgg.security.token.__elgg_token,
    recipient_guid: info.guid,
    subject:'有朋友邀请您参与视频聊天',
    body: body,
};

$('#invite').click(function(){
    $.ajax({
        url: base_url + 'action/messages/send',
        type: 'POST',
        data: msg_params,
        success: function(msg){
            alert('your msg has been sent');
        }
    })
});

This part send the HTTP POST request we mentioned above.Note that the content of an invite message contains a link, redirecting the invitee to the videochat page. The random number is also passed as a query string parameter, forcing the message invitee enter the same room as inviter. The code below shows how it is done.

if ( window.location.search != "" )  // has query string. 
    rand_num = window.location.search.substr(3);  //?r=num
else
    rand_num = Math.floor(Math.random()*900000+100000);
$('#video').prop('src', "https://apprtc.appspot.com/?r=" + rand_num); 

some other things you should pay attention to

  1. I use ajax to prevent current page from reloading after sending a request. Why? Because two people can chat if and only if their iframe elements have the same src attribute (i.e. same room). If you reload, as mentioned before, a new random number will be generated thus making the inviter enter a different room.
  2. When sending HTTP request, __elgg_ts and __elgg_token are necessary parameters. This is a machanism elgg uses to validate message. Luckily these two variables are stored in global scope:
  3. If you try to search friends in another page rather than the videochat Page, you still get a invite button, however when clicked, you will be alerted:

    This is done by detecting the existense of that random number since it only exists in the videochat page.
if (typeof rand_num != "undefined"){
    //add invite button click EventListener, see above code
}
else
    alert('do this on VideoChat page!');

慎用“傲娇”,这个词表意不明确且misleading

这篇日志写起来很容易,决定是否要写却不容易——总感觉这像是一个咬文嚼字的古怪nerd才会写的东西。但既然想写,那肯定就还是要写。

从二次元产生的词汇很多,在大部分情况下,这些词汇仅仅在相对封闭的小部分人群中被使用。然而最近,“傲娇”这个词似乎总能在各种场合看见或是听见。

目前的状况是,我可能在某些场合听说了这个词,然后查了一下或者没查它的意思,接着按照自己的理解为这个词定义了一个意思,最后开始使用它。问题就在于,这个词的语境其实并不是那么简单,并不是随便就可以用的。就所遇到的情况来看,这个词往往被用在了不合适的语境。

自然,某个词汇的使用是无法被控制且不应该被控制的,但使用这个词带来了问题:

站在我的角度,会不知道说话人/作者究竟想表达什么意思。“傲娇”?哪里傲娇了?没有上下文怎么突然就讲出这个词?我知道TA肯定想表达某种意思,但又非常能肯定这个意思并非我所熟悉的那一个。那么究竟是什么意思?不知道。

另一方面,站在大多数人的角度看,如果没有听过这个词,当然也不知道说话人/作者究竟想表达什么。

所以,“傲娇”一词在日常生活中的使用完全是无效率的,它完全无法承担表意的作用。更重要的是,如果按照这个词的真正意义去理解它所在的句子,那么要么得到一个完全无意义的句子,要么得到一个偏离原意十万八千里的意思。误解比无效率更可怕。

所以建议就是:

不要在三次元使用“傲娇”,除非你真正知道你在说什么。

Never use it in real world unless you really know what you are talking about.

因为很重要所以说两遍

这里并不打算探讨词的用法,而且作为一个很有节操的人我也不想用“才、才不是因为你过来的,只是放学顺便路过而已”这样的句子来举例(喂这不就是举例吗!)。总之,不要用就好了。


PS:我一直认为“现充”是一个比“高富帅/白富美”表意准确性和丰富性强100倍的词,虽然它们的含义其实有些许不同,但替代使用是完全可以的。


top