Aug 22

windows下的批量重命名 不指定

felix021 @ 2012-8-22 22:23 [IT » 其他] 评论(2) , 引用(0) , 阅读(7108) | Via 本站原创
可能很多同学不知道Windows是自带这个功能的。至少从WinXP开始就有。操作要领:

0. 批量重命名的文件应该在一个文件夹内。

1. 选择所有需要被重命名的文件。全选(CTRL+A),或拖动/用shift选择选择一个区间,或按住CTRL一个一个点,都可以。

2. 使用鼠标右键选择你希望被重命名的第一个文件,输入新的文件名。注意,新的文件名如果不带编号(如a.txt),那么会按顺序改成 a.txt, a (1).txt ... a (5).txt,如果带编号(如 b (3).txt,注意编号只能用圆括号包起来),则编号会按顺序增加:b (3).txt, b (4).txt ... b (11).txt。

3. 回车,OVER。

功能很贴心,但是半残,有时候不满足要求,在没有安装额外的语言的情况下,可以用类似如下的vbs来应急:
Set a= WScript.createObject("WScript.Shell")
WScript.sleep 1000
For i = 1 to 23
  j = i
  If i < 10 Then
    j = "0" & i
  End If
  a.sendkeys "{DOWN}{F2}"    '向下,F2(重命名)
  a.sendkeys "TBBTs02e" & j  '文件名, win7下就不用再  & ".rmvb" 了,但是xp需要
  a.sendkeys "~"            '回车
  WScript.sleep 200
Next
May 16

说说机器学习 不指定

felix021 @ 2012-5-16 00:29 [IT » 其他] 评论(0) , 引用(0) , 阅读(6317) | Via 本站原创
为了论文搞了把机器学习的东西,虽然了解得非常肤浅,但是窥探了一下这个领域也还是很有收获。

对于遇到的问题,传统的思路是通过建模,然后使用对应的算法予以解决。但是对于很多问题,建模本身是不实际的,例如语音识别、计算机视觉等等。而机器学习算法的思路则不同,通过对现有的数据进行分析和统计,得到一组参数来逼近真实的模型,从而能够处理未知的数据。

我的论文里主要是使用SVM来解决简单的二分类问题。SVM,Support Vector Machine的简写,也就是“支持向量机”,很早以前有“听说过”,但是之前完全没有概念。这次在yihong妹妹的推荐下,看了faruto大牛写的《SVM入门精品系列讲解》,能大致在原理上明白svm分类的机制。之所以称faruto为大牛,主要是因为这个讲解系列非常地浅显易懂,没有卖弄玄虚,即使是我这样没学好数学的人,也能够非常容易地弄懂。

由我来归纳的话,svm的基本思路应该是,将每个样本x当作一个N维向量(也就是N维空间中的一个点),通过某种方式找到该空间中的一个超平面w * x + b = 0,将样本分成两类。例如二维空间中的点,可以用一条直线分成两类,而三维空间的点,可以用一个平面来分。由于并不是所有问题中,样本在N维空间中都可以被超平面分为两类,因此通过使用引入核函数将样本映射到更高维的空间、并引入松弛变量以忽略噪音数据等方式,达到对数据进行分类的目的。

可能看起来有点抽象?没关系,把那个系列(并不是很长)看完就懂了,其实不难理解。在此基础上,svm方法还有许多扩充,例如对不平衡样本集的处理、One-Class SVM、在线SVM训练等等。

想要使用svm算法的话,非常幸运,台湾大学林智仁(Lin Chih-Jen)副教授主持的 libsvm 项目提供了c/java/python/matlab 的接口,直接拿来就能用了,非常方便。

在学习svm的过程中,也顺便看了一些其他的机器学习算法,这里也大致列一下。

HMM,隐马尔可夫模型。李开复的主要学术成就(之一?),就是使用了HMM开发出世界上第一个大词汇量连续语音识别系统 Sphinx。根据Google研究员吴军的数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用,使用HMM来进行语音识别是李开复的师兄提出的。

HMM算法是基于贝叶斯公式的。贝叶斯公式在机器学习中是一个非常基础的理论。关于这个,推荐阅读《数学之美番外篇:平凡而又神奇的贝叶斯方法》

神经网络算法,通过模拟神经元的工作方式来对数据进行学习,使用多个神经元构成一个网络,并适当加入反馈机制。详情参考神经网络编程入门

遗传算法,通过模拟染色体复制、基因变异等机制,使状态不断”进化“,从而尽量逼近最优值。详情参考遗传算法入门

模拟退火,非常简洁、实用的一个算法,基于“爬山算法”(不断逼近离当前点最近的极值,贪心)改进而来,通过引入随机化以获得跳跃到其他极值区域的机会,从而尽可能获得更高的极值点。详情可参考《大白话解析模拟退火算法》

此外还看到了决策树、K-mean聚类等算法,不过没有细看,只是大致扫了一眼,就不扯了。

以上给出的链接大都是讲解得非常浅显易懂的文章,非常推荐阅读。
Apr 18

纯吐槽 - 奇葩邮箱163 不指定

felix021 @ 2012-4-18 19:18 [IT » 其他] 评论(4) , 引用(0) , 阅读(8946) | Via 本站原创
163邮箱之所以没落,不是因为腾讯太能抄,实在是因为产品经理太不行啊。

系统中只有“收件箱”里有“举报垃圾邮件”按钮,通过点击这个按钮,可以选择将发件人加入黑名单(拒收);

而收到的广告和垃圾邮件会被自动分类到对应的文件夹,没有举报按钮。

也就是说,我想要把发件人加入黑名单,只有两种方式:

1. 拷贝发件人地址,进入设置->黑名单,添加

2. 选择“这不是垃圾邮件”,回到收件箱,选择该邮件,点击“举报垃圾邮件”。

建议选择第二种方式,更快,更蛋疼。

p.s. 对于有强迫症的我来说,还需要再进入垃圾邮箱,全选、彻底删除。
Feb 26

boblog评论系统回归 不指定

felix021 @ 2012-2-26 21:27 [IT » 其他] 评论(1) , 引用(0) , 阅读(7469) | Via 本站原创
数据存在别人那里,总还是不太放心,再加上uyan用起来效果并没有预期那么好,所以决定回归boblog的原始评论系统。

早料到有这么一天的,不过uyan没有提供迁移评论数据的接口,只能自己动手了。

打开chrome的开发人员工具->Network,登录uyan.cc的管理首页,可以看到对 http://uyan.cc/index.php/youyan_admin/getMoreCommentsByDomain/0 的请求,也就是所有通过uyan的评论。把response拷贝出来,大概处理一下,每行一个json object这样,并根据comment_id进行排序(比如 sort -nk4 -t\" replies.php > replies_sorted.txt),然后用一个php脚本转换成对应的sql,最后通过mysql commandline的source命令导入,搞定。

p.s. 刚刚又加了几行代码到 inc/securitycode.php ,把原来的验证码改成表达式格式了,嘿嘿,希望垃圾评论会减少啦~
pps. 又加了几行代码,对评论的回复会有邮件通知啦~

php代码大致如下:
Nov 3

uyan.cc 不指定

felix021 @ 2011-11-3 18:27 [IT » 其他] 评论(0) , 引用(0) , 阅读(4864) | Via 本站原创
把本博客的留言评论系统替换成友言的,看起来挺好玩的。本篇用于测试。

友情链接一下: http://uyan.cc/
Nov 2

宅男追TBBT 不指定

felix021 @ 2011-11-2 18:58 [IT » 其他] 评论(1) , 引用(0) , 阅读(6661) | Via 本站原创
#!/bin/bash

#check twice a day
#0  2,10    *  *  *  cd /home/felix021/code/tbbt && ./check.sh

now=`cat now`
now=`expr $now + 1`

url="http://yyets.com/showresource-juji-1005.html"

wget $url -O output.html &> /dev/null

pattern=S05E$now
if [ $now -lt 10 ]; then
    pattern=S05E0${now}
fi

if grep "output.html" -e $pattern &> /dev/null; then
    echo $now > now
    echo "please check $url" | mail -t "felix021@扣扣.com" -s "TBBT05 update: $now"
fi

rm -f output.html
Sep 13
用了一段时间的微信,有一些语音消息,想导出来到电脑上,但是全都是aud扩展名的,没有找到可以用的播放器(QuickTime和Foobar2000都搞不定),格式转换也不行(aud2wav, audacity),估计这个"aud"是另一种"aud",给微信团队发了消息,木有得到回复,只好自己动手。

真的是动手噢……前一阵买的Edifier M178配有一根公对公的音频线,正好可以用来做LineIn。可是LineIn接口在后面,所以干脆插到前置的Mic口上面(其实我很好奇LineIn和Mic口是不是真的有区别),然后打开GoldWave把声音一段一段录下来。好在这种东西没啥音质可言,能录下来就行。

owali.
Aug 14

博客迁移记#2 不指定

felix021 @ 2011-8-14 12:10 [IT » 其他] 评论(5) , 引用(0) , 阅读(7903) | Via 本站原创
Godaddy的虚拟主机用了一年半,不想用了。价格不算很便宜,虽然配置还行,但毕竟是虚拟主机,限制多。

前几天在 czyhd同学 的推荐下,到forum.ubuntu.org.cn去买了那边代购的burstNET的VPS。

是OpenVZ的Linux VPS,很便宜,35/月,1G CPU + 512MB RAM + 20G HDD + 1TB/month 流量。显然是超售的,不过不要紧,够用就行。

说到VPS,现在低价VPS主要就是Xen和OpenVZ型的。

Xen型的VPS虚拟化的层次比较低(内核和硬件之间),所以可用性还较高,可以自己编译安装内核模块,挂载SWAP,而且不容易超售(所以价格偏高一点)。

OpenVZ型的VPS,虚拟化层次比较高(内核和App之间),内核是固定的,没法定制化(比如说没有ppp模块,不能安装PPTP VPN),不能用SWAP,一旦申请的内存超过VPS的内存配额,就会失败。可用性略低一点。不过对于上层用户看来,还是一个完整的机器,而且"重启"速度超快,一般只要两三秒即可。

搞了VPS,有些事情就必须自己考虑了,比如说安全问题,比如说内存资源的管理。

安全上,不想搞太多,禁止ROOT登录,并装了个 denyhosts ,将多次尝试SSH登录失败的IP ban掉。就这样。

按照以前的思路,先搞了个Apache+PHP+MySQL,结果一开机内存就占用250M。原先在Godaddy上面,因为是虚拟主机,所以是不允许程序长时间运行,所以我用Dropbox备份网站的时候,是每隔4个小时跑一次。本以为在VPS上面就没有这个限制了,但是我发现,Dropbox的内存占用非常高……一打开就需要占用150M,并且随着时间增加,占用的内存会不断增加,最终把所有RAM耗尽。

于是需要优化。首先当然是要 Apache 换成nginx。用了论坛上oneleaf提供给VPS的lnmp.sh,很快就换了过来,然后发现内存占用没少……ps aux看了一下,发现php-fpm进程跑了10个,nginx的work也有5个,于是修改/etc/php5/fpm/php5-fpm.conf  把 pm.max_children = 10改成5;修改 /etc/nginx/nginx.conf 把worker_process 5修改成3。重启以后效果显著,内存占用降到了180M。

MySQL也是个内存大户,修改/etc/mysql/my.cnf,将query_cache_size降到8M,key_buffer降到4M,重启后,内存占用减少接近20M。

更进一步,使用dropbear来替换openssh server。openssh server的sshd占用内存比较大(4M+),如果一次多开几个terminal(比如用secureCRT,这个非常正常),内存占用马上就会上升一大截。Dropbear则只需要占用大约1M,相当节约。不过有个坏处就是,Dropbear的socks5 proxy似乎不如sshd,像twitter和facebook就总是打不开。

经过内存优化,开机以后内存占用仅154M,对于我这个以个人Blog为主的小站而言,已经比较充裕,不是很有必要进一步再压榨性能了 :D

不过还有一些棘手的问题,下回再写。

p.s. 这里有一个超省内存的教程 http://www.lowendbox.com/blog/yes-you-can-run-18-static-sites-on-a-64mb-link-1-vps/
分页: 3/8 第一页 上页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]