Category: Opensource

  • Project Enclave

    最近朋友中似乎坏硬盘丢照片的事情比较多,有的因为中毒,有的因为硬件损坏,总之,比较恐怖。我现在的照片都保存在Diva内,但是这样的缺点有很多: Diva是为了玩游戏(WOW 😀 )配置的,功耗大。仅仅为了存取照片就开动Diva有点浪费了 为了玩游戏,Diva自然是运行Windows的,启动慢,关机慢,而且有中毒中马的可能 如果一个游戏机上开了网络相册什么的,对游戏性能是不是也影响了 也是因为功耗和噪声,Diva在室外,因此如果更换个硬盘什么的也麻烦啊 于是我准备再搭建一台电脑,作为家里的文件服务器使用,名字暂定为“Enclave”,计划如下: 在淘宝上订购了一个HP的迷你机箱,如图,个头类似个加厚的Thinkpad 采用Intel Atom330套板,双核1.6GHz TDP才8W,加上硬盘整机功耗应该在50W之内,跟点几盏节能灯的电费差不多了,而且基本不需要什么散热措施。 OS打算用Ubuntu Server Lifebox是个好看的开源网络相册程序,感谢PT Ubuntu 的分享 Ajaxplorer,看名字就是个Ajax的文件管理程序 存储方面,考虑到毕竟是轻量级的家庭内部应用,不用RAID了,单个硬盘定期备份到Diva就可以了 Update: 可以考虑安装DLNA server,例如GeeXboX,这样就能用PS3播放Enclave上的多媒体文件了。 这样,再过几年笑笑就可以拿着她的小netbook,访问Enclave看她小时候的照片了 🙂

  • Linux, CLI & WLAN

    一次去老板家,老板跟我说,家里的无线网络经常中断,可能是什么问题呢?他家的无线路由器是新买的,应该不会有故障。于是我启动我的Ubuntu,用Linux来诊断一下。 Ubuntu的桌面网络管理工具只是列出所有的无线接入点(AP),但是没有这些点的详细信息。我还得依靠CLI了: raymond@raymond-laptop:~$ iwlist Usage: iwlist [interface] scanning [essid NNN] [last] [interface] frequency [interface] channel [interface] bitrate [interface] rate [interface] encryption [interface] keys [interface] power [interface] txpower [interface] retry [interface] ap [interface] accesspoints [interface] peers [interface] event [interface] auth [interface] wpakeys [interface] genie [interface] modulation 我所关心的只是频率上的设置,因为多个接入点使用相同的频率,有可能会互相干扰。下面对周围存在的接入点进行扫描: raymond@raymond-laptop:~$ iwlist wlan0 scan wlan0     Scan completed : Cell…

  • Linux CLI一行搞定批量文件改名

    参考链接:How to batch rename files 如果一个文件夹下面有成百上千的文件要统一改名该怎么办?很简单: for i in *; do j=`echo $i |cut -d . -f 1`; j=$j”.ext”;  mv $i $j; done 上例中会把’abc.def.xyz’ 改名为 ‘abc.ext’,应用到当前文件夹所有文件。 这回发现cut这个命令很好用,其中’-d .’指明了使用’.’作为分割符号,而’-f 1’只保留被’.’分割后的第一行。如果一个文件名是’abc.defg.hij’,那么cut -d . -f 1将返回’abc’。

  • 本机上的DNS缓冲,只要两步

    你还在用电信服务商提供给你的DNS服务么?其实只要两步,就可以在自己的电脑上跑起DNS服务来,前提是,你用的是Linux系统(当然Windows下也许也有办法的)。 参考链接:Dnsmasq 第一步:安装dnsmasq。dnsmasq是零配置的一个本地DNS cache程序。 sudo apt-get install dnsmasq 安装完成后,你可以选择修改配置文件; sudo gedit /etc/dnsmasq.conf 如果你是懒人或者生手,那么缺省的或者空白的配置文件已经能够满足你的需求了。 第二步:修改resolv.conf。样本可以是这样的: nameserver 127.0.0.1 nameserver 208.67.222.222 nameserver 208.67.220.220 这样写的原因是,把127.0.0.1放在第一行,这样才保证dnsmasq得到DNS请求并处理;第二、三行的是OpenDNS的两个IP地址,dnsmasq会从这里读取并在没有本地数据的情况下(例如第一次访问某个网站)将DNS请求转发到真正的dns服务。 这样安装就完成了。首先重新启动dnsmasq: sudo /etc/init.d/dnsmasq restart 然后确认dnsmasq在监听DNS端口: sudo netstat -ltp | grep domain 如果结果中有类似这样 tcp        0      0 *:domain                *:*                     LISTEN      28289/dnsmasq 就说明dnsmasq在工作了。下面用浏览器访问一下你收藏的网址吧,是否感到速度快了许多呢?另外一个好处就是你现在更加的independent了,不必看DNS服务商的脸色。

  • LAMP服务器的简单备份方法

    我用CentOS作为网站服务器的OS,我是这样备份我的网站的。 以下简称网站服务器为C,我的电脑是A。首先,在C上用一段shell script备份网站: backup.sh #! /bin/bash # This script is to backup the website files and db mysqldump mydb -pmypass >/var/www/mysite/mydump.sql datestamp=`date +%Y%m%d` filewww=”/home/myuser/backup/mysite_””$datestamp””.zip” zip -r $filewww /var/www/mysite 然后可以先运行一下这个script,看看结果是否符合预期。如果没问题,就可以将其加入到crontab了,每天自动运行。 59 3 * * * /bin/bash /home/myuser/backup.sh 这样C这边每天凌晨会备份一次并生成一个zip压缩包。但是把C的备份留在C就没意义了,我还要定期的把zip从C传到A。由于A不像C那样不间断运行的,所以如果从C向A传输就需要测试A是否在线,麻烦。不如让A取C上的zip。这就涉及到另一个问题,身份验证。 为一段自动运行的script提供password,我觉得不如使用public key验证来得专业,而且简单,两步就搞定: ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub myuser@C 这期间问到private key password时直接回车就行了;myuser@C的password还是需要输入的(否则……)。 下一步就是在A上写script,获取C上的备份,成功获取后删除C上的备份,并将A本机上超过一个月的备份删除。 backup-mysite.sh #!/bin/bash #by Raymond, Jun,…

  • Unicode编码中的简繁中文互转

    现在简繁中文的转换已经不像从前那样,是gbk/ big5两种文字编码之间的转换,而是在同一个编码,Unicode,当中不同编码的映射。当然,简繁中文绝对不是简单的一一对应关系,有一对多的个别情况,例如简体的“后” 对应繁体的 “后”和“後”。行业词汇也有差别,例如大陆说“宽带”,而港台说“寬頻”;大陆说“操作系统”,而港台说“作業系統” 等等。 因此当我决定用Python程序将森海塞尔简体中文网站转换为繁体中文网站时,我的计划分三个步骤: 提取行业高频关键字,找到简体和繁体的对应,编成词典 利用现有的Python中文本地化工具包,将关键字之外的文字转换 请港台Freelancer人工校对,确保本土化 第一步,我的词典替换程序在此: 第二步,我利用的是pyzh中文工具包中的fanjian.py完成。特别感谢pyzh项目组的全部成员和fanjian.py程序作者ne.manman和zsp007! 下面就交给香港的朋友了,希望不会累坏他:) 顺便说,Songbird很不错,有点山寨iTunes,那又怎样呢?毕竟Linux下面还没iTunes。 Songbird

  • 从6.7到0.01

    编程果然不能偷懒!我这一偷懒,CPU就不知道要受多少累、冒多少热气了。一开始,我采用了很无脑的穷举方法,复杂度是O(n**2),结果肯定正确的,但是长度一万的数组就可以耗去6.7秒的CPU时间。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time:  0:00:06.708924 return:  1 0 0 0 之后,在高手提示下将复杂度降低到n (log n + 1) ,结果不错了。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time:  0:00:00.010430 return:  1 0 0 0 对应改进后的代码: def leader3(array): t = len(array) //2 array.sort() p = -1 c = 1 for i in array: if p == i : c+=1 if c > t:…

  • CLI(命令行界面)的网络监控

    图形界面的网络流量控制并不稀罕了,我总算找到一个CLI的,给我那没有GUI的Ubuntu Server装上了。很简单,但是并不简陋哦!即时、平均、最大数值都可以看到。 我是从这里发现bwm-ng的。