Posts under ‘技术’

今天犯了一个愚蠢的错误

很久没更新了,今天悄悄更新一下。 最近某熊找到了一份做手机开发的工作,目前主要是做Android平台下的游戏。然后今天老大说要做一下播放BGM的实验。很快的,我写出了这样的代码: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); new AsyncPlayer(“bgm”).play(getApplication(), Uri.fromFile(new File(“/sdcard/bgm.mp3″)), true, AudioManager.STREAM_MUSIC); //balabala… } 本来以为没问题的,但是测试的时候发现音乐播放个几十秒就停止了,找不出任何原因! 几乎调试、搜索了一个下午都是无解,就差认为Android有问题用硬件调试器了。后来用手机自带的硬件播放器听歌的时候看到日志上不断的在刷“mAudioStreamOut->write(40960 byte)” 之类的东西,终于明白了:因为AsyncPlayer对象是创建在栈上的!onCreate函数返回以后这个对象就会被GC了,能出声音才有鬼。于是马上修改代码证实了这个设想: AsyncPlayer bgm = new AsyncPlayer(“bgm”); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bgm.play(getApplication(), Uri.fromFile(new File(“/sdcard/bgm.mp3″)), true, AudioManager.STREAM_MUSIC); //balabala… } 就是这样:-)

[IPv6]如何搭建一个支持IPv6的PPTP VPN

自从上次成功的搞定Linux下的IPv6隧道以后,我一直在想还能怎么玩这个/48的路由。前几天某人需要一个国内的VPN,于是在搭建VPN的时候研究了一下如何在VPN上分配IPv6地址。现在吧过程记录如下: 安装一个普通的PPTP VPN,不会的自己去Google,其实不只是PPTP,L2TP或者其他基于pppd的隧道都可以使用下面的方法支持IPv6 编辑相应的pppd options文件,比如pptpd的是 /etc/ppp/pptp-options,添加下面的选项: ipparam pptpd ipv6 , 注意ipv6后面是空格和逗号 安装radvd,从 http://silmor.de/69 下载tdhcpd 新建文件夹/etc/ppp/ipv6-radvd,新建文件/etc/ppp/ipv6-up.d/radvd: #!/bin/sh if test $PPP_IPPRARM != pptpd ;then exit 0 fi ADDR=$(echo $PPP_REMOTE | cut -d : -f 3,4,5,6) if test x$ADDR == x ; then echo “Unable to generate IPv6 Address” exit 0 fi ADDR=2001:470:8192:BEEF:$ADDR #add route route -6 add [...]

[草泥马语]草泥马语发布新版Erlang based虚拟机

欢迎参观->http://code.google.com/p/grass-mud-horse/ PS:图片来源于互联网,请版权所有者与我联系

[IPv6]熊熊的IPv6部署实战.Part1 6in4隧道&&PPTP隧道

这几天一直在鼓捣IPv6的东西,利用HE.net提供的TunnelBroker服务在学校的网络上部署了一个小型的IPv6网络。这篇文章就是这几天的工作的一些总结。由于涉及到的东西很多很杂,所以会分成几个部分来写。今天先写出第一部分:如何在Linux(Ubuntu)下连接远程PPTP服务器然后再在PPTP隧道的基础上建立6in4连接。 如何去he.net申请Tunnel我就不说了,都会。申请到的Tunnel会有如下参数: Server IPv4 address: 72.52.104.74 Server IPv6 address: 2001:470:1f04:cab::1/64 Client IPv4 address: 184.104.13.193 Client IPv6 address: 2001:470:1f04:cab::2/64 Routed /48: 2001:470:8192::/48 Routed /64: 2001:470:1f05:cab::/64 另外,如果服务器支持PPTP,还会给出相应的参数: Server IPv4 Hostname: tserv3.fmt2.ipv6.he.net Client IPv4 Address: 184.104.13.193 VPN (PPTP) Username: bearice%63106 由于服务器是通过NAT出外网的,所以需要首先配置PPTP拨号: pptpsetup –create IPv6VPN \ –server tserv3.fmt2.ipv6.he.net \ –username bearice%63106 \ –password *** 这样会在/etc/ppp/peers/下建立一个IPv6VPN的文件,以后我们可以使用pon IPv6VPN就可以与服务器建立连接了,不过这还不够,我们需要配置开机自动连接和短线重连,另外还需要在隧道连接后添加一些路由表让6in4使用。 修改IPv6VPN,现在应该是这个样子: persist maxfail [...]

[备忘]关于Broadcom网卡关闭VLAN TAG过滤的方法

某台服务器上要跑一个软用pcap抓包,系统用的是Windows,但是Windows下的驱动过滤了8021q的协议头,导致软件不能正常工作。我Google了一下,Wireshark的Wiki说要改注册表 但是经过我测试,他给出的方法不能用,至少在我现在的驱动上不行。文章中提示的TxCoalescingTicks在注册表里面根本找不到=”= 为了解决这个问题我还特意用IDA吧他的驱动反汇编了一下。虽然说汇编我是菜鸟但是字符串我还是会找的。于是在驱动文件bxvbda.sys里找到了“keep_vlan_tag”的字样,于是顺藤摸瓜发现了这个位置: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E97D-E325-11CE-BFC1-08002BE10318}\0051 最后这个数字可能不太相同,不过可以搜索“*ReceiveBuffers”试试看。 找到这个键值以后就好说了,添加一个REG_SZ 名称为keep_vlan_tag 值为1的项,重启。就可以在Wireshark里抓到VLAN TAG了。 就是这样。我的驱动版本是5.2.14.0 网卡是 Broadcom BCM5708C NetXtreme II GigE

春菜 对话 相声
双击调戏
双击调戏