mac平台skype内放声音

好吧,先说一下需求。

我希望通过skype共享桌面。共享桌面的时候能同时传输电脑的声音。这样就能用skype做游戏实况了,或者能和朋友一起看电影。

这个需要装soundflower 1.6,soundflower 1.6 的配置参

https://www.ptt.cc/bbs/MAC/M.1320517815.A.8EF.html

简单点说,就是把电脑的声音作为skype的声音输入。

但是我希望同时我还能通过话筒和朋友讲话。所以需要另一个软件,lineIn。

下载地址在这: http://www.macupdate.com/info.php/id/11333/linein

通过这个软件,可以修改声音的输入和输出。这里输入是麦克风,输出改为soundflower,而soundflower又是skype的声音输入,这样麦克风的声音就能传到skpe里面了。


今天有同学问我具体怎么设置。
稍微讲明百点,其实是这样。

  • soundflowerbed
    如果我没记错的话,Mac本身录屏的时候,好像是只能用麦克风输入。也就是说,电脑内置的声音输出(你的耳机或者音箱)的声音是不能作为输入的。因此,你用普通的quicktime录屏的时候,只能录到自己麦克风的声音。用skype的时候也是。
  • soundflowerbed是soundflower 1.6 自带的工具,就是为了解决这个问题。
    这个软件的作用是,虚拟了一个[多重输出接口],可以把电脑输出的声音同时输出给耳机(内置输出)和2ch。然后你的quicktime的音频输入设置为2ch,视频中就能录到电脑内部的声音了。
  • lineln
    soundflowerbed设置完成之后,你还是只能二选一,要么录电脑声音,要么录麦克风的声音。lineln这个软件的作用是接管你麦克风,控制它的输出对象。

默认麦克风的输出是[内置输出],不过你现在的quicktime的输入是2ch了,所以你只要用lineln把麦克风的输出改成2ch,这样quicktime就能收到你麦克风的声音了。

lineln不需要特别的配置,打开之后,可以选择声音的输出端,选定之后开启生效就行了。

soundflowerbed的配置,主要是建立多重输出接口。我很久没用,细节记不清楚了。你可以参考我给出台湾PTT社区的帖子链接配置。


再次更新。

XOS 10.11 之后soundflower 1.6就不兼容了。好在Github上soundflower
更新了2.0版本。需要注意的是,如果你没有装过soundflowerb1.6,你需要先安装这个版本,因为soundflower 2.0 并没有附带soundflowerbed。你需要用soundflowerbed设置多重输出接口。

发现两个漫画网站被黑

今天发现

www.99770.cc99mh.com/两个漫画网站被黑了。其中99770这个网站在百度搜素漫画的时候排名还很靠前。

页面加载完成之后会跳转到 http://www.vs20.com/?40,显示“钓鱼岛是中国的”这种图片。

看起来应该是页面被注入了js脚本,通过windows.location跳转出去,跳转后无法通过后退按钮返回。

但是我没找到具体注入的脚本。也许是使用了其他方法。

js虾米刷点赞成就

今天发现虾米有一个点赞成就,达到成就后可以开通VIP

虽然我几乎用不到VIP,但是这个给好友状态点赞的感觉还挺好拿的,但是三星成就就需要100个赞……嗯,用 js 刷一下好了。

先打开好友状态页面,往下滚动尽可能加载出来更多的状态,然后在chrome控制台执行下面js代码:

i=1;
setInterval("i++;$('.comment_like')[0].children[0].click();$('.item_wrap')[i].click();alert(i)",5000)
print('test')

嗯,由于需要等待ajax,所以每个赞需设置为等待5s。去干点别的等等好了╮(╯▽╰)╭

Chrome 自用扩展推介

下面是我用过的比较好的chrome扩展。

有一些扩展本身也很好,但是我现在没在使用,所以这些就不截图了。先把当前正在用的一些推荐一下:

1.fawave

如图。fawave是一个无缝管理多微博账户的插件。安装完之后会在地址栏右侧出现图标。点击图标可以看到如上界面。此插件是一个杀手级的应用,甚至有人因为这个插件而放弃FF投奔chrome。

插件支持国内所有常见微博,包括新浪腾讯网易搜狐饭否嘀咕豆瓣等等。同时支持twitter。支持api。如果设置了多用户,则在上图界面的下方会显示所有账户的头像图标,点击可切换账户。 常用的微博操作都可以再此界面完成。

支持桌面提醒,声音提醒。

很好用。

2.greader notifier(google 阅读器通知程序)

这个功能一般,但是基本够用。显示greader订阅器的未读条目。点击链接直接跳转至订阅源的原文出处。主要作为“未读提醒”使用。

3.谷歌提供的(网页截图)

这个就不截图了。因为他本身就是截图软件……

比较方便的是,它可以帮你把整个网页(而非你能看到的部分)截图。比如你可以把bbs中一页15层楼同时截下来。

4.google tasks

google tasks是我认为比较好的任务管理服务。这个插件只是提供了一个管理界面,方便的添加,编辑,删除todolist。同时可以和手机端或者其他终端的gtask程序同步。

5.checker plus for google Calendar

谷歌日历的插件,可以直接在上面添加活动,可以用来安排工作,或者和parter约定合作,甚至可以做成带有通知的电子课表。 以前曾经把期末考试时间安排放上去来制定复习计划…… 另外可以讲网页内容添加为一次活动。

6.eye droper

这个插件用来拾取网页上的颜色,做web开发的时候很方便。 可以显示颜色的16进制代码。可以直接编辑颜色。支持两次拾色的对比。

7.谷歌输入工具

打开之后,在可以在任意非本地网页上使用。这在Linux系统下救急的时候尤其方便。 或者在一个没有安装中文支持的外国友人……的电脑上……之类的

8.google dectionary

此插件,在你浏览网页是选中一个词的时候,会自动翻译查找释义。 在阅读国外文档的时候十分方便。

9.谷歌地图+生活通

地图和生活通的杂交。搜索路线和周边比较方便。

10.iReader

此插件用来提取网页内容,让你在一个干净的环境下进行阅读。

模仿乔帮主的设计风格。看起来还是很舒服的。在广告很多的页面使用十分方便。

11.sight

这个插件在chrome右击选择“查看源代码”的时候,会对源代码进行高亮。

12.Evernote

这个也是大杀器。不知道ls,lx有没有人介绍他。 我就只介绍这个插件吧。

安装之后会在地址栏右侧出现Evernote的图标。登陆之后点击此图标,可以讲网页中的内容快捷存储为笔记。可以使用方向键选择要保存的内容范围。在这个界面中可以设置标签,笔记本,评论等内容。

另外,evernote有一个网页版十分好用,基本上可以代替客户端了。 有一个跨平台的第三方客户端做的也很完善,Linux用户可以考虑Nevernote这个软件(好像改名了,需要的自己找找吧)。

13.ActiveX for Chrome

这个插件可以是IE的active控件在chrome下可用。 说道用处,自然就是网银了。

14.autopager

这个是在FF的时候就很有名的插件了。

支持自动翻页。 就是你在浏览当前页的时候,就会自动加载下一页,只需要把滚动条往下拉就可以连续浏览多页了。 这个在浏览bbs的时候会不太方便,因为你想回复的时候……你没办法把滚动条拖动到最下面的回复框………………囧 之前还用过豆瓣电台之类的音乐电台插件,但是觉得很一般吧。

其他的不怎么记得了,先来这么多吧。 关于chrome的插件有啥问题,可以交流一下。 我现在都要直接把chrome当做一个上网本的操作系统用了。

Continue Reading…

PSP3000 过度放电导致锁电

昨天把psp放在我手机的usb充电器上充电,结果貌似没有冲上去,我中间想找原因,强行开了几次机,导致过度放电了。
一夜过去,今天早晨发现,开机不能。怀疑是锁电,表现如下:

  • 电池放进去无法开机
  • 接入外接电源时,关机状态充电状态灯“橙色”不亮
  • 外接电源可以正常开机使用,查看电池状态,显示“电池余量:0%;电池状态:充电完毕;使用电源:外接电源;电池剩余时间:-”

对于锁电,网上大部分的说法是,把电池放电,方法五花八门。但是我这明显是没电了,肯定是没的放了。

Continue Reading…

一个基于Jquery的打字效果插件TypingCat

前段时间,要写一个页面,需要用到打字效果。在网上找到几个基于jQery的插件,但是有些太复杂,有些不太可控。于是干脆就自己写了一个。
用法和效果都比较简单,直接把html的代码写出来,看注释应该就知道怎么用了首先需要在 <head></head> 中加载必要的插件

<head>
…
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/TypingCat.js”></script>
</head>

而html的body中有如下标签内容(用来承载打印效果的位置):

<body>
<div><a href=’#’>back</a></div>
<div id=’pra1′>
<div id=’word1′></div>
<div id=’word2′></div>
<div id=’word3′></div>
</div>
<div id=’pra2′>
<div class=’word1′></div>
<div class=’word2′></div>
</div>
</body>

然后需要做的是,在任意位置加入下面的代码(开始使用插件,示例是放在了head标签里面):

<head>
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/type.js”></script>
<script>
$(function(){
l_blink_speed = 300;    //’‘闪烁速度 speed ” blinking
l_blink = 14;           //‘’闪烁次数 times ” blink
l_blink_s = 8;          //‘’闪烁次数(少)times ” blink (fewer)
l_start = 2;            //how long to wait before a new line starts
l_start_q = 1;          //how long to wait before a new line starts (quick)
w_blink = 80;           //汉字打印时间间隔 speed of tying
hide_time = 2000;      //字体层隐藏速度 speed of hiding
wait = 1000;            //weit 3 second before start
typeWriter(“this is Pra1’s 1st words”,”#pra1″,”#word1″,l_start,l_blink_s);
typeWriter(“this is Pra1’s 2nd words”,”#pra1″,”#word2″,l_blink_s,l_blink);
typeWriter(“this is Pra1’s 3nd words”,”#pra1″,”#word3″,l_blink,l_blink_s);
typeWriter(“this is Pra1’s 4nd words”,”#pra1″,”#word3″,l_blink_s,-1);   //retype in the same div. -1 means this pragraph  will disappear after finishing typing
typeWriter(“this is Pra1’s 1st words”,”#pra2″,”.word1″,l_start,l_blink_s);
typeWriter(“this is Pra1’s 2nd words”,”#pra2″,”.word2″,l_blink_s,-2);   //-2 means this pragraph will not disappear and ” will blink without stop
})
</script>
</head>

真正产生效果的是typeWriter(str,pra_id,div_id,wait_before,cur_wait)
参数的意义分别是:
str:需要打印的文字,注意最好不要打印‘’这个符号,因为它作为光标使用了
pra_id:段落的id或者类名,从例子中可以看出,如果是传入id则用”#id”的形式,如果传入样式的类名则用“.class”的形式。文字的消失是以段落为单位的。
div_id:每一行用div层引起来,这里是段落中各个div的id或者样式类名。用法同上。
wait_before:上一行的光标闪烁次数,也就是说上一行打印结束后多久才开始打印本行。
cur_wait:本行结束是,光标的闪烁次数。
上面的一些变量有说明,可以自己修改调整各种效果的时间和速度。
效果可以看这里
下载在这里

日志统计脚本

今天同学说让我写个脚本统计日志。日志是一些ip的捕捉记录,根据协议的类型定义了一些ID和子ID。统计的需求是统计出各个类型的客户IP和服务IP。
这些日志是自动写入的,每天会根据日期生成一个文件夹,文件夹中每个小时生成一个日志文档。脚本要做的就是便利24个文档,读取内容进行分析。
由于需要把24个文档在一起分析,所以同学一开始的思路是:

对每一个类型进行统计,每次统计都遍历所有文件

明显效率不怎么样,但是实际上也够用了因为只要在服务器上让脚本跑起来,过几分钟回去看结果就行了
但是因为脚本要给别人看 = = ,所以不能太难看,因此要重新写一下。
开始的脚本是shell脚本,我不太熟悉,所以用python重写了
思路就是定义一堆 list 变量用来记录 IP,每读入一个 IP 就在 list 里面查找 not in,如果找不到就插进去。
最后统计list的长度
这样只需遍历一边文件就行了,但是……………………………………
不知道为啥,貌似python写完之后比原来还慢
后来同学一句话点破,not in 查找的时候需要对字符串进行匹配,而原来的 shell 脚本是用 sort 排序之后用 unique 进行去重统计,难怪这么慢。
于是考虑将 IP 字符串转换成long型再存储在 list 里面,这样匹配的时候是不是能快点?
但是结果好象还是不理想。在少量数据(两个日志文件)的时候,大概能比shell(8s)脚本慢几秒种(16s,是两倍左右),但是在大数据量的情况下就不容乐观了(多出1/3左右的时间)。
大量数据的情况下会慢几分钟 = =
不过貌似数据量越大差距越小,足够大的话有可能超过shell,但是差距还是太差了啊.
后来在网上查找了一下,发现原来字典的查找速度更快,因为字典在查找的时候使用 hash。于是尝试把所有 list 换成字典。
果然效果神速。在两个文件的时候,2.9秒左右。既然 hash 了,那么将 IP 转化位long型也没有意义了反而做了无用工。去掉之后大概是2.7秒。
然后调整了匹配的顺序,将数量较多的类型先匹配,这样又快了一点点。
如此做一个总结:

Continue Reading…

读取文件奇数行

今天处理“如何读取文件偶/奇数行”这个问题的时候,本来是打算用python来解决
python本身是很简单的,偶数代码如下:

f = open('./test.file','r')
while f.readline():
    print f.readline()

奇数行代码如下:

f = open('./test.file','r')
print f.readline()
while f.readline():
    print f.readline()

在网上想看看别人怎么做的,结果发现大部分是shell中的实现,尤其是用sed命令实现。以前没用过这个工具,居然这么简单:
读取奇数行:

sed -n 'p;n' ./test.file

读取偶数行:

sed -n 'n;p' ./test.file

-n:quite,就是不会将读取的文件行默认显示出来
n;p:这是两个命令,读取一行之后,对这一行进行两个操作
n就是直接读取下一行
p就是打印该行
于是效果就是,读两行打印一行
n;pp;n的区别就是先读还是先打印了,也就达到奇偶切换

海量数据处理总结

备战百度,在海量数据处理的主题上做一个总结。
详情来自http://www.cnblogs.com/pkuoliver/archive/2010/10/02/mass-data-topic-1.html

1.Bloom Filter

将数据通过hash函数映射到位数组,比如hash(str)=3则将位数组第三位置为1
对每一条数据都用k个hash函数进行映射,也就是一条数据会将位数组的最多k位的值置1
在查找数据是否存在的时候,则对其进行k次hash,如果位数组中对应的各位都被置1了,则说明该数据已经存在(明显是有一定错误率的)
Bloom Filter可以用来实现数据字典,进行数据的判重,或者集合求交集.
同时,对其进行改进,即位数组每一位不再是0/1,而是数据出现的次数counter,那么出现数据则+1,删除数据则-1,这样可以实现删除操作。

实例:

Continue Reading…

OpenVPN分析

OpenVPN
从架构上来看,OpenVPN在某种程度上和 tinc 或者和VTun 比较相近,它是一个基于用户模式(user-mode)的程序,通过 TUN/TAP 接口与 TCP/IP 栈进行通信。作为用户程序运行的 OpenVPN,带来了移动性和易维护性的优点,正如我们在 VTuntinc 中看到的那样。和 tinc 一样,OpenVPN 在VPN服务中使用两种通道:一个携带用户的IP数据报文的数据通道,一个处理“密钥交互和配置(key negotiation and configuration)这种协议事务的控制通道。
OpenVPN 把两个通道都封装在UDP数据包中。两个通道使用相同的端口,所以一个给定的数据报既可以包含数据通道数据也可以包含控制通道数据。因为OpenVPN使用TLS协议进行认证和密钥交换,而TLS需要一个可靠的传输层,所以OpenVPN在控制通道中添加了一个可靠的层。这样保证了TLS所需要的可靠性,但是在数据通道中没有高可靠性的层( but that there will not be competing reliability layers on the data channel),所以我们在SSL和SSH VPN 中看到的干扰现象不会发生。

Continue Reading…