<video>是HTML5新增的一个标签,它使得用户可以在浏览器中,不借助任何第三方插件就可以播放服务器上的视频。同时,与<video>类似地,<audio>标签也可以在浏览器中直接播放音频。
2013年12月5日
2013年11月3日
使用i-jetty架设服务器及部署程序中的若干问题
由于索尼悄悄地在我的PS+会员到期后自动帮我续费,因此觉得不把《重力眩晕》白金了真是白白浪费一个月的会员费。1号深夜终于拿到了白金。随后而来的问题是:在我校恶劣的网络条件下,如何快速地向朋友们得瑟。
2013年11月1日
2013年10月20日
WHITE ALBUM -綴られる冬の想い出- Original Soundtrack CUE文件
在网上下载了 WHITE ALBUM -綴られる冬の想い出- Original Soundtrack 这张专辑(flac),但却没有CUE。发现很多人都在求这个CUE,澄空的链接失效了,KFC上有人搞出来个,结果却没有共享。今天花了1个小时写了个生成CUE的小程序,把这张专辑的CUE生成出来了。
2013年10月13日
2013年10月12日
Smack 开发笔记(1)
2013年10月4日
Android差在哪儿?
前几天手机突然变砖,趁着这几天的假期,反反复复刷了3次。因此而带来的数次重装App、同步联系人等着实把我折腾得够呛。我也用过iOS,这里我尝试列举一些Android的缺点。
-
缺少一个官方的管理软件。
苹果有iTunes,可以方便地管理iOS设备、媒体文件、App。但Google却始终不愿意推出一个官方的、类似iTunes的同步软件,哪怕没有媒体文件管理功能。没有原生地支持,搞得每个第三方同步软件争先恐后地往手机上装自家的连接软件。通常这些连接App又申请了相当数量且与个人隐私密切相关的权限(例如读取联系人、读取短信、电话记录等),Google都身陷棱镜门,这些国内公司又有几个敢拍胸脯保证自己绝不窃取用户隐私?
2013年6月15日
其来有自的音乐库(4)
距离该系列上一篇文章已经过去很久了。功夫网的阻隔是个很大的问题。但我还是尽量坚持更新博文。
-
CHEMISTRY - regeneration
CHEMISTRY,中文名称是化学超男子。《战场女武神2》的OP《Our Stroy》收录于这张专辑中。刚下载这张专辑的时候感觉还不错,现在常听的也就只有《Our Story》和《Life goes on ~Side D~》。战场女武神系列游戏都非常棒,一代和三代的难度都比较高。我还专门买了一张一代的游戏光碟用作收藏,这也是我唯一的一张PS3游戏光碟。最近听说一代汉化开坑,甚是高兴。
2013年5月12日
在IIS 7中使用HTTPS连接
Date.parse()在Chrome,FireFox,IE中的差异
我翻了好几篇关于Javascript中Date.parse()方法的博文。它们着重讲的是日期格式的问题,需要以Date.parse("MM/dd/yyyy HH:mm:ss")这样的形式方能在3种浏览器中正确运行。最近在做一个需要实时绘图的项目,其时间精确到毫秒,这时Date.parse()在3个浏览器中就有了不同的表现。请看以下代码:
var now=Date.parse("05/12/2013 15:24:27.53");
这行代码在Chrome里可以正确运行时间的毫秒部分也能正确地被转换。但同样的代码到了FF和IE里就报错了。经过排除,确认是这两种浏览器的Date.parse()方法最多支持到秒级。后来我又尝试了"05/12/2013 15:24:27,53","05/12/2013 15:24:27 53","05/12/2013 15:24:27,530","05/12/2013 15:24:27 530"等形式的字符串,均无法正确地在FF和IE中转换。如果要想解决这个问题,只好采取一种很别扭的方法:把字符串从秒处截断,前面的部分在3个浏览器中都可以正确转换。转换完毕后把后一部分再加上。
2013年4月16日
2013年4月4日
ASP.NET 网站维护实例
我3月21日回到学校,就被告知,某个部门的网站坏了。最初是一个Excel导出功能无法正常工作,导出的文件并不是先前期望的那样。由于这并不是本文重点,我就一笔带过——问题在于Excel的DCOM配置,添加了NETSERVICE账户并赋予相应权限后,得以解决。随之而来的问题是:导出的文件没法从服务器上删除。我们又添加了log4net,输出了一些调试信息,发现是最后导出文件结束、关闭Excel进程时出的问题。网站以NETSERVICE这个账户运行,但Excel是以Administrator运行的,在执行Process.Kill()方法时会抛出异常。虽然作者在里面使用了try-catch块来处理异常,但似乎这个异常仍然没被catch到,抛上来,后面删除文件的代码也就没有执行。
即日起停止更新SuperSocket的研究系列文章
最初写这些文章是为了记录在学习SuperSocket 1.5官方文档时遇到的各种问题,多是官方文档中没有阐述清楚的地方,顺带将英文文档翻译成中文。目前已经有人将全部文档翻译完成,我也就不再更新了。如果还有使用上需要注意的问题,我还会再发文。
这里给出SurperSocket 1.5 中文文档(非项目作者翻译)
SuperSocket的作者也开始提供最新的中文文档,见SuperSocket 1.6 中文文档: SuperSocket
2013年3月18日
SuperSocket的研究(10)—— 扩展服务器配置文件
2013年3月17日
SuperSocket的研究(9)—— 向客户主动端推送数据
使用Session对象向客户端发送数据
session.Send(data, 0, data.Length); //或者 session.Send("Welcome to use SuperSocket!");
2013年3月16日
SuperSocket的研究(8)—— 获取连接的建立和关闭事件
AppSession中的OnSessionStarted()和OnSessionClosed(CloseReason reason)虚方法
public class TelnetSession : AppSession<TelnetSession> { protected override void OnSessionStarted() { this.Send("Welcome to SuperSocket Telnet Server"); //添加你的业务操作 } protected override void OnSessionClosed(CloseReason reason) { //添加你的业务操作 } }
AppServer中的NewSessionConnected和SessionClosed事件
appServer.NewSessionConnected += new SessionHandler<AppSession>(appServer_NewSessionConnected); appServer.SessionClosed += new SessionHandler<AppSession, CloseReason>(appServer_SessionClosed);
static void appServer_SessionClosed(AppSession session, CloseReason reason) { Console.WriteLine("A session is closed for {0}.", reason); } static void appServer_NewSessionConnected(AppSession session) { session.Send("Welcome to SuperSocket Telnet Server"); }
SuperSocket的研究(7)—— 内置的通用格式协议实现工具
WAVE文件结构与《女仆咖啡帕露菲Re-Order》BGM提取
2013年3月14日
SuperSocket的研究(6) —— 用IRequestInfo,IReceiveFilter等实现自己的通信协议
为什么使用自己的通信协议?
- RequestInfo
- ReceiveFilter
- ReceiveFilterFactory
- AppServer
- AppSession
2013年3月13日
SuperSocket的研究(5)—— 内置的命令行协议
什么是协议
2013年3月12日
其来有自的音乐库(3)
- ARMS - I''s Pure Original Sound Track
《I''s》是桂正和的漫画作品,当年与鸟山明齐名。我对这部漫画的评价是:它真实地反映了青春期少年的正常心理活动,就像发生在你的身边,甚至发生在你自己身上。除了主人公的损友有点夸张外,不太符合现实,一贵作为主人公,是典型的“时刻YY女神又不敢贸然行动的闷骚少年”。我敢说只要你是一个正常、健康的人,并且正常地经历过青春期的萌动,你一定能对号入座,会在男女主人公身上找到自己的影子。而张OST是我在看了动漫后搜集来的,年代久远,专辑封面分辨率不高。推荐的曲子嘛,首先是主题曲、也是动漫和游戏的OP——《二人のI''s~i will follow~》;然后是《VIVRE》、《LE BONHEUR》、《LE LOCOMOTION》等BGM及其变奏版。貌似这些都是法语,曲名就意义不明了。
SuperSocket的研究(4)—— SuperSocket的基本配置
一个完整的配置文件示例
<?xml version="1.0"?> <configuration> <configSections> <section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" /> </configSections> <appSettings> <add key="ServiceName" value="SupperSocketService" /> </appSettings> <superSocket> <servers> <server name="TelnetServerA" serverTypeName="TelnetServer" ip="Any" port="2020"> </server> <server name="TelnetServerB" serverTypeName="TelnetServer" ip="Any" port="2021"> </server> </servers> <serverTypes> <add name="TelnetServer" type="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"/> </serverTypes> </superSocket> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> </startup> </configuration>
2013年3月9日
SuperSocket的研究(3)—— 通过配置启动SuperSocket
为什么使用配置来启动
- 拒绝硬编码(写死代码)
- SuperSocket提供多种有用的配置选项
- 充分利用SuperSocket的工具
如何通过带引导程序的配置启动服务器
<configsections> <section name="superSocket" type="SuperSocket.SocketEngine.Configuration.SocketServiceConfig, SuperSocket.SocketEngine" /> </configsections>
<supersocket> <servers> <server ip="Any" name="TelnetServer" port="2020" serverType="SuperSocket.QuickStart.TelnetServer_StartByConfig.TelnetServer, SuperSocket.QuickStart.TelnetServer_StartByConfig"> </server> </servers> </supersocket>
SuperSocket的研究(2)—— 实现自己的AppServer和AppSession
什么是AppSession和AppServer
2013年3月6日
SuperSocket的研究(1)—— Telnet实例
2013年2月28日
2013年2月25日
托托莉的炼金工房 True End达成
2013年2月23日
其来有自的音乐库(1)
这个系列我很早就像写了,一直没有找到合适的地方发。我的iTunes音乐库中一共有220张专辑,其中部分专辑并不是所有歌曲都有收藏。我很少在百度、QQ、虾米这样的在线音乐平台上,随机放、泛泛而听,我仍然坚持把音乐放到自己的硬盘。而我所收藏的所有专辑都有其之所以被收藏的原因。我担心也许有一天我会忘了我为什么会保存这里面某张CD,于是我打算把每张专辑的收藏之由来都记录在此,同时也记录下每张专辑里我所喜爱的歌(乐)曲。
说“担心某天可能会忘记”并不是我夸张或是矫情,我在贴吧看到有人讨论“你买PSP是为了哪款游戏”的时候发现竟然一下子想不起来是为了哪个游戏了,还好回忆了好一阵子才记起来是因为去中关村陪别人买笔记本时那店家正在玩战神,还是输出到电视上玩的。