果子林的猫窝

Just another WordPress.com site

Posts Tagged ‘代码

Nirvana Player

leave a comment »

实在受不了凤凰网的网站布局,自己做了个客户端用来播放凤凰宽频中的节目

方便检索所有视频,自动认证帐户(不会弹出drm窗口)

首次使用会下载播放列表
双击视频进行播放

image

 

可以输入ifeng的视频帐户密码(以后播放视频会自动验证,不用登陆)

image

 

双击视频控件可以切换回播放列表

image

下载地址

Written by alzzl

2010/09/15 at 13:19

发表在 软件和代码

Tagged with ,

修复Chrome下iFeng播放控件

with 2 comments

中国的网站总是不喜欢使用新技术,ifeng也不例外,wmv视频文件不用mms服务器而用ftp,新页面从来都是_blank方式打开,最糟糕的是chrome下居然无法播放视频。

先来看看他的播放页面的逻辑:

http://vip.v.ifeng.com/opinion/zongbianjishijian/201007/28b441a2-87c9-4ca1-be00-5fd29bf74ea8play.shtml

点击视频图片后最终导航到这个页面,ie下的播放效果是,先显示一张loading字样的gif,等待由js绘制的wmp控件缓冲视频完毕以后隐藏该图片。于此同时,在一个隐藏的iframe中对该视频进行验证。

而在chrome中你只能看到一张凤凰的logo,完全无法看到视频。

问题出在了AttachEvent这个方法上,WebKit不支持这个事件(https://bugs.webkit.org/show_bug.cgi?id=6598),有人提到用AttachEventLister可以解决这一问题,试了下没有成功,不过最简单的解决方法还是替换它们的播放器生成脚本,用最直接的方式显示视频。

好在chrome强大的扩展功能使这一目的得以实现,通过content script将自定义的播放器脚本插入目标页面,替换旧的播放器脚本。由于没有用到ie的dhtml特性,所以视频的播放就不再会有问题了。

根据这个原理,我做了个chrome插件

iFengVideoFixer.crx

image

 

接下来还有个问题,chrome不支持activex,而drm的验证控件只有ie的版本,因此chrome无法通过后台验证drm,wmp下验证会弹出确认窗口,好在不太影响使用。

不得不说凭借drm的安全性,如果能通过https或者其他更方便些的方式进行验证,完全可以大大增加他的竞争力。

Written by alzzl

2010/07/08 at 23:55

发表在 软件和代码

Tagged with , ,

单片机学习记录02

leave a comment »

上次遗留问题:

1如何计算芯片每秒执行的指令数?

不要求精度的可以在Keil的调试中预估代码执行时间,精确的还没学到估计和P3.5有关

2这个东西硬件相关,如果自己设计的电路与实验板接线不同,难道要代码重写?

目前看貌似是,悲剧啊

3为什么不把液晶屏的P2.7设置成低电平,所有的LED都会长亮,当程序执行时,应该亮起的LED的亮度会更高?

不明

4另外视频中介绍的计算与LED连接的电阻阻值的计算方法还没有试过

实践完毕,红扎泪目

 


刚刚学到数码管静态显示,我的板子很多地方都跟老郭的不一样,他手头的教材也没有,吃力啊。

根据网友的提示,自己先写了段数码管动态显示的代码,不知道正常情况下是不是也是这么实现的:

image 

这次的诡异现象:

1手头的实验板做数码管试验时经常悲剧,字符显示不正确,断开usb重连后正常,可能跟液晶屏有关,目前液晶模块已卸感觉良好

2我的板子数码管模块没有锁存器,据说静态显示方式无法多位显示,红豆泥?

3蜂鸣器怎么用,P3.2设置低电平微弱响声后就没了

4数码管中间的冒号怎么控制,没看到原理图中没查到定义


livespace 什么时候支持源码格式,怨念啊


Written by alzzl

2009/12/26 at 14:13

发表在 软件和代码

Tagged with ,

单片机学习记录01

leave a comment »

这块学习板在书架顶上躺了好久了,最近整理模型的时候才翻了出来。打算近期除了钢弹外,就集中搞这个了。

DSC09615

找了份教学视频,目前看了第一课,大致操作是熟悉了。

查看原理图
keil写代码,编译
下载到实验板

硬件相关的代码写起来比较麻烦,之前按照视频中的代码操作,板子上的led始终不会亮,后来查了这块板的原理图和相关的代码才发现,与P0不仅与LED相连,还控制着液晶屏,而LED的电源还接着P3。

经过一番修改,我的第一个代码终于完成了:

单片机要做出Hello world对我来说还很困难,这是个流水灯的程序

image

单片机程序与PC程序不同,他的main会循环执行直至断电,因此我将初始化代码从main中分离出来,以避免初始化时造成的延迟。
用for修改了delay函数,这样结构更清晰,等到了解了如何计算芯片运行单条指令的时长后可以继续修改,将需要延迟的时间作为参数输入。
流水灯主代码用的循环,直接设置P0亮的bit用0表示,其余部分用1遮罩,而不是很多例子中的逐句设置显示状态,这个修改是目前最得意的部分,不知道入门以后再回头看看这段代码,会不会觉得特别的渣。

 

这次试验也发现了部分问题,做个记录:

1如何计算芯片每秒执行的指令数?
2这个东西硬件相关,如果自己设计的电路与实验板接线不同,难道要代码重写?
3为什么不把液晶屏的P2.7设置成低电平,所有的LED都会长亮,当程序执行时,应该亮起的LED的亮度会更高?
4另外视频中介绍的计算与LED连接的电阻阻值的计算方法还没有试过

PS:Keil实在用不惯,尤其是他的代码区域光标可以随意设置,一不小心代码的缩进就被破坏了,有没有让VS做IDE的可能性?调试也貌似很麻烦,无法测试变量值,所有的bug都要靠自己看啊~~

 

————无奈的分割线——————–

image

当天就发现了更简便的写法:直接移动比特位,然后取反……悲剧啊


Written by alzzl

2009/12/11 at 02:36

发表在 兴趣

Tagged with ,

免费图床WebFileStore欢迎试用

leave a comment »

主机升级到.NET了,做了个图床站点练习.NET和MSSQL

在页面中选择需要上传的图片(小于400k)并且填写上你的邮箱地址

上传后,图片的地址将会发送至你的邮箱

image

由于数据库只有50M的容量,将会不定期地对不活跃的数据进行清理,以保证其他服务不至于崩坏
欢迎提交bug帮助我改进这个程序

WebFileStore测试地址:http://mewchew.com/WebFileStore/ 域名还没解析过来,暂时用ip凑合着


StylePost 0.4

23 / 12°C

Written by alzzl

2009/04/07 at 04:45

发表在 软件和代码

Tagged with

跨线程调用Windows控件

leave a comment »

最近在做桌面版的iFeng视频播放器,其中用到了.NET的BackgroundWorker控件来创建后台线程,用于更新节目信息。当读取到新的节目后,将其添加到一个ListView控件中,由于窗体界面的与BackgroundWorker不在一个线程中,为了实现这个运行效果,可以有两种方法:

image

一种是使用公共变量,当需要更新数据的时候修改变量的值,然后抛出ProgressChanged事件,让主线程来处理。这种方法有一个缺点,由于线程是异步的,因此,很有可能后台抛出了多次事件后,主线程才进行处理,这样要么将公共变量改造成堆栈的形式,要么就会丢失数据。

另一种则是直接进行跨线程的控件操作,这种方法的好处是简单,不用花费太多的精力放在功能的完善上。

首先声明一个委托:
Public Delegate Sub myDelegate(ByVal strItemId As String, ByVal strItemName As String)

再创建一个委托方法:
这里是以a、b这两个参数来向listview中添加条目。
Private Sub myMethod(ByVal a As String, ByVal b As String)
    Me.lstviewMain.Items.Add(a, b, "")
End Sub

在BackgroundWorker的线程中用invoke方法,调用委托的方法。
第一个参数是需要调用的委托方法名,第二个参数是传递给委托方法的参数,参数的数量需要与委托声明中定义的一致。
这里用的是同步调用,如果要使用异步调用则用BeginInvoke方法。
lstviewMain.Invoke(New myDelegate(AddressOf myMethod), New Object() {myMatch.Groups(1).ToString, myMatch.Groups(2).ToString})


StylePost 0.4

10 / 5°C

Written by alzzl

2009/02/14 at 17:17

发表在 软件和代码

Tagged with